summaryrefslogtreecommitdiff
path: root/board
diff options
context:
space:
mode:
Diffstat (limited to 'board')
-rw-r--r--board/AtmarkTechno/suzaku/u-boot.lds1
-rw-r--r--board/LEOX/elpt860/README.LEOX6
-rw-r--r--board/LEOX/elpt860/elpt860.c6
-rw-r--r--board/LEOX/elpt860/u-boot.lds3
-rw-r--r--board/LEOX/elpt860/u-boot.lds.debug2
-rw-r--r--board/MAI/AmigaOneG3SE/ps2kbd.c2
-rw-r--r--board/MAI/AmigaOneG3SE/u-boot.lds3
-rw-r--r--board/Marvell/common/flash.c10
-rw-r--r--board/Marvell/common/i2c.c2
-rw-r--r--board/Marvell/db64360/db64360.c4
-rw-r--r--board/Marvell/db64360/mv_eth.c9
-rw-r--r--board/Marvell/db64360/u-boot.lds3
-rw-r--r--board/Marvell/db64460/db64460.c4
-rw-r--r--board/Marvell/db64460/mv_eth.c8
-rw-r--r--board/Marvell/db64460/u-boot.lds3
-rw-r--r--board/RPXClassic/RPXClassic.c8
-rw-r--r--board/RPXClassic/u-boot.lds3
-rw-r--r--board/RPXClassic/u-boot.lds.debug2
-rw-r--r--board/RPXlite/RPXlite.c2
-rw-r--r--board/RPXlite/u-boot.lds3
-rw-r--r--board/RPXlite/u-boot.lds.debug2
-rw-r--r--board/RPXlite_dw/README4
-rw-r--r--board/RPXlite_dw/RPXlite_dw.c2
-rw-r--r--board/RPXlite_dw/u-boot.lds3
-rw-r--r--board/RPXlite_dw/u-boot.lds.debug2
-rw-r--r--board/RRvision/RRvision.c6
-rw-r--r--board/RRvision/u-boot.lds3
-rw-r--r--board/a3000/u-boot.lds4
-rw-r--r--board/adder/u-boot.lds3
-rw-r--r--board/adsvix/u-boot.lds1
-rw-r--r--board/alaska/u-boot.lds3
-rw-r--r--board/altera/dk1c20/u-boot.lds1
-rw-r--r--board/altera/dk1s10/u-boot.lds1
-rw-r--r--board/amcc/bamboo/bamboo.c80
-rw-r--r--board/amcc/bamboo/u-boot.lds4
-rw-r--r--board/amcc/bubinga/bubinga.c2
-rw-r--r--board/amcc/bubinga/u-boot.lds4
-rw-r--r--board/amcc/ebony/ebony.c10
-rw-r--r--board/amcc/ebony/u-boot.lds4
-rw-r--r--board/amcc/luan/Makefile48
-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.c458
-rw-r--r--board/amcc/luan/u-boot.lds157
-rw-r--r--board/amcc/ocotea/config.mk2
-rw-r--r--board/amcc/ocotea/ocotea.c21
-rw-r--r--board/amcc/ocotea/ocotea.h1
-rw-r--r--board/amcc/ocotea/u-boot.lds4
-rw-r--r--board/amcc/walnut/u-boot.lds4
-rw-r--r--board/amcc/walnut/walnut.c2
-rw-r--r--board/amcc/yellowstone/Makefile1
-rw-r--r--board/amcc/yellowstone/flash.c571
-rw-r--r--board/amcc/yellowstone/init.S21
-rw-r--r--board/amcc/yellowstone/u-boot.lds4
-rw-r--r--board/amcc/yellowstone/yellowstone.c273
-rw-r--r--board/amcc/yosemite/u-boot.lds4
-rw-r--r--board/amcc/yosemite/yosemite.c170
-rw-r--r--board/amirix/ap1000/Makefile47
-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.c117
-rw-r--r--board/amirix/ap1000/u-boot.lds145
-rw-r--r--board/armadillo/Makefile48
-rw-r--r--board/armadillo/armadillo.c62
-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/assabet/u-boot.lds1
-rw-r--r--board/at91rm9200dk/Makefile2
-rw-r--r--board/at91rm9200dk/at91rm9200dk.c28
-rw-r--r--board/at91rm9200dk/dm9161.c243
-rw-r--r--board/at91rm9200dk/u-boot.lds1
-rw-r--r--board/atc/flash.c2
-rw-r--r--board/atc/u-boot.lds3
-rw-r--r--board/barco/Makefile40
-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.mk (renamed from board/tqm8540/config.mk)15
-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/u-boot.lds3
-rw-r--r--board/c2mon/c2mon.c6
-rw-r--r--board/c2mon/u-boot.lds3
-rw-r--r--board/c2mon/u-boot.lds.debug2
-rw-r--r--board/canmb/u-boot.lds3
-rw-r--r--board/cds/mpc8541cds/u-boot.lds3
-rw-r--r--board/cds/mpc8548cds/u-boot.lds3
-rw-r--r--board/cds/mpc8555cds/u-boot.lds3
-rw-r--r--board/cerf250/u-boot.lds1
-rw-r--r--board/cm4008/u-boot.lds1
-rw-r--r--board/cm41xx/u-boot.lds1
-rw-r--r--board/cmc_pu2/Makefile2
-rw-r--r--board/cmc_pu2/cmc_pu2.c49
-rw-r--r--board/cmc_pu2/dm9161.c243
-rw-r--r--board/cmc_pu2/load_sernum_ethaddr.c122
-rw-r--r--board/cmc_pu2/u-boot.lds1
-rw-r--r--board/cmi/u-boot.lds3
-rw-r--r--board/cobra5272/u-boot.lds2
-rw-r--r--board/cogent/u-boot.lds4
-rw-r--r--board/cogent/u-boot.lds.debug2
-rw-r--r--board/cpc45/u-boot.lds3
-rw-r--r--board/cpu86/u-boot.lds3
-rw-r--r--board/cpu87/u-boot.lds3
-rw-r--r--board/cradle/u-boot.lds1
-rw-r--r--board/cray/L1/L1.c6
-rw-r--r--board/cray/L1/u-boot.lds5
-rw-r--r--board/cray/L1/u-boot.lds.debug2
-rw-r--r--board/csb226/u-boot.lds1
-rw-r--r--board/csb272/csb272.c15
-rw-r--r--board/csb272/u-boot.lds5
-rw-r--r--board/csb472/csb472.c14
-rw-r--r--board/csb472/u-boot.lds5
-rw-r--r--board/csb637/Makefile46
-rw-r--r--board/csb637/config.mk1
-rw-r--r--board/csb637/csb637.c83
-rw-r--r--board/csb637/u-boot.lds (renamed from board/integratorap/u-boot.lds)10
-rw-r--r--board/cu824/u-boot.lds3
-rw-r--r--board/dave/B2/u-boot.lds1
-rw-r--r--board/dave/PPChameleonEVB/Makefile2
-rw-r--r--board/dave/PPChameleonEVB/PPChameleonEVB.c33
-rw-r--r--board/dave/PPChameleonEVB/config.mk9
-rw-r--r--board/dave/PPChameleonEVB/nand.c147
-rw-r--r--board/dave/PPChameleonEVB/u-boot.lds6
-rw-r--r--board/dbau1x00/u-boot.lds1
-rw-r--r--board/dnp1110/u-boot.lds1
-rw-r--r--board/eXalion/u-boot.lds3
-rw-r--r--board/eltec/bab7xx/misc.c4
-rw-r--r--board/eltec/bab7xx/u-boot.lds3
-rw-r--r--board/eltec/elppc/eepro100_srom.c2
-rw-r--r--board/eltec/elppc/u-boot.lds3
-rw-r--r--board/eltec/mhpc/mhpc.c8
-rw-r--r--board/eltec/mhpc/u-boot.lds3
-rw-r--r--board/eltec/mhpc/u-boot.lds.debug2
-rw-r--r--board/emk/common/flash.c2
-rw-r--r--board/emk/common/vpd.c6
-rw-r--r--board/emk/top5200/u-boot.lds3
-rw-r--r--board/emk/top860/u-boot.lds3
-rw-r--r--board/emk/top860/u-boot.lds.debug2
-rw-r--r--board/ep7312/u-boot.lds1
-rw-r--r--board/ep8248/u-boot.lds3
-rw-r--r--board/ep8260/u-boot.lds3
-rw-r--r--board/eric/eric.c18
-rw-r--r--board/eric/u-boot.lds5
-rw-r--r--board/esd/adciop/adciop.c2
-rw-r--r--board/esd/adciop/u-boot.lds3
-rw-r--r--board/esd/apc405/u-boot.lds4
-rw-r--r--board/esd/ar405/ar405.c2
-rw-r--r--board/esd/ar405/u-boot.lds5
-rw-r--r--board/esd/ash405/ash405.c2
-rw-r--r--board/esd/ash405/u-boot.lds4
-rw-r--r--board/esd/canbt/canbt.c2
-rw-r--r--board/esd/canbt/u-boot.lds4
-rw-r--r--board/esd/cms700/Makefile51
-rw-r--r--board/esd/cms700/cms700.c262
-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.c16
-rw-r--r--board/esd/common/cmd_loadpci.c123
-rw-r--r--board/esd/common/lcd.c270
-rw-r--r--board/esd/common/misc.c4
-rw-r--r--board/esd/cpci2dp/Makefile46
-rw-r--r--board/esd/cpci2dp/config.mk28
-rw-r--r--board/esd/cpci2dp/cpci2dp.c202
-rw-r--r--board/esd/cpci2dp/flash.c84
-rw-r--r--board/esd/cpci2dp/u-boot.lds150
-rw-r--r--board/esd/cpci405/cpci405.c16
-rw-r--r--board/esd/cpci405/u-boot.lds4
-rw-r--r--board/esd/cpci440/u-boot.lds4
-rw-r--r--board/esd/cpci5200/Makefile53
-rw-r--r--board/esd/cpci5200/config.mk44
-rw-r--r--board/esd/cpci5200/cpci5200.c295
-rw-r--r--board/esd/cpci5200/mt46v16m16-75.h37
-rw-r--r--board/esd/cpci5200/strataflash.c (renamed from board/esd/pmc405/strataflash.c)429
-rw-r--r--board/esd/cpci5200/u-boot.lds (renamed from board/tqm8560/u-boot.lds)94
-rw-r--r--board/esd/cpci750/cpci750.c4
-rw-r--r--board/esd/cpci750/mv_eth.c6
-rw-r--r--board/esd/cpci750/pci.c80
-rw-r--r--board/esd/cpci750/u-boot.lds3
-rw-r--r--board/esd/cpciiser4/cpciiser4.c2
-rw-r--r--board/esd/cpciiser4/u-boot.lds4
-rw-r--r--board/esd/dasa_sim/cmd_dasa_sim.c2
-rw-r--r--board/esd/dasa_sim/dasa_sim.c2
-rw-r--r--board/esd/dasa_sim/u-boot.lds3
-rw-r--r--board/esd/dp405/dp405.c2
-rw-r--r--board/esd/dp405/u-boot.lds5
-rw-r--r--board/esd/du405/du405.c2
-rw-r--r--board/esd/du405/u-boot.lds4
-rw-r--r--board/esd/hh405/fpgadata.c5009
-rw-r--r--board/esd/hh405/hh405.c426
-rw-r--r--board/esd/hh405/u-boot.lds4
-rw-r--r--board/esd/hub405/hub405.c2
-rw-r--r--board/esd/hub405/u-boot.lds5
-rw-r--r--board/esd/ocrtc/cmd_ocrtc.c7
-rw-r--r--board/esd/ocrtc/ocrtc.c2
-rw-r--r--board/esd/ocrtc/u-boot.lds4
-rw-r--r--board/esd/pci405/cmd_pci405.c6
-rw-r--r--board/esd/pci405/pci405.c4
-rw-r--r--board/esd/pci405/u-boot.lds4
-rw-r--r--board/esd/pf5200/Makefile53
-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.c370
-rw-r--r--board/esd/pf5200/u-boot.lds125
-rw-r--r--board/esd/plu405/plu405.c4
-rw-r--r--board/esd/plu405/u-boot.lds5
-rw-r--r--board/esd/pmc405/Makefile2
-rw-r--r--board/esd/pmc405/pmc405.c83
-rw-r--r--board/esd/pmc405/u-boot.lds4
-rw-r--r--board/esd/tasreg/u-boot.lds4
-rw-r--r--board/esd/voh405/u-boot.lds5
-rw-r--r--board/esd/voh405/voh405.c2
-rw-r--r--board/esd/vom405/u-boot.lds4
-rw-r--r--board/esd/vom405/vom405.c24
-rw-r--r--board/esd/wuh405/u-boot.lds4
-rw-r--r--board/esd/wuh405/wuh405.c2
-rw-r--r--board/esteem192e/esteem192e.c4
-rw-r--r--board/esteem192e/u-boot.lds3
-rw-r--r--board/etin/debris/u-boot.lds4
-rw-r--r--board/etx094/etx094.c10
-rw-r--r--board/etx094/u-boot.lds3
-rw-r--r--board/etx094/u-boot.lds.debug2
-rw-r--r--board/evb4510/u-boot.lds1
-rw-r--r--board/evb64260/eth.c33
-rw-r--r--board/evb64260/eth.h4
-rw-r--r--board/evb64260/eth_addrtbl.c3
-rw-r--r--board/evb64260/flash.c8
-rw-r--r--board/evb64260/i2c.c2
-rw-r--r--board/evb64260/u-boot.lds3
-rw-r--r--board/evb64260/zuma_pbb_mbox.c2
-rw-r--r--board/exbitgen/u-boot.lds4
-rw-r--r--board/fads/fads.h4
-rw-r--r--board/fads/u-boot.lds3
-rw-r--r--board/fads/u-boot.lds.debug2
-rw-r--r--board/flagadm/u-boot.lds3
-rw-r--r--board/flagadm/u-boot.lds.debug2
-rw-r--r--board/funkwerk/vovpn-gw/m88e6060.c30
-rw-r--r--board/funkwerk/vovpn-gw/u-boot.lds3
-rw-r--r--board/funkwerk/vovpn-gw/vovpn-gw.c2
-rw-r--r--board/g2000/g2000.c2
-rw-r--r--board/g2000/u-boot.lds5
-rw-r--r--board/gcplus/u-boot.lds1
-rw-r--r--board/gen860t/gen860t.c6
-rw-r--r--board/gen860t/u-boot-flashenv.lds6
-rw-r--r--board/gen860t/u-boot.lds3
-rw-r--r--board/genietv/flash.c5
-rw-r--r--board/genietv/genietv.c4
-rw-r--r--board/genietv/u-boot.lds3
-rw-r--r--board/genietv/u-boot.lds.debug2
-rw-r--r--board/gth/flash.c4
-rw-r--r--board/gth/gth.c2
-rw-r--r--board/gth/u-boot.lds3
-rw-r--r--board/gw8260/gw8260.c4
-rw-r--r--board/gw8260/u-boot.lds3
-rw-r--r--board/hermes/hermes.c8
-rw-r--r--board/hermes/u-boot.lds3
-rw-r--r--board/hermes/u-boot.lds.debug2
-rw-r--r--board/hidden_dragon/u-boot.lds3
-rw-r--r--board/hmi1001/hmi1001.c117
-rw-r--r--board/hmi1001/u-boot.lds3
-rw-r--r--board/hymod/eeprom.c18
-rw-r--r--board/hymod/env.c4
-rw-r--r--board/hymod/global_env16
-rw-r--r--board/hymod/u-boot.lds3
-rw-r--r--board/hymod/u-boot.lds.debug2
-rw-r--r--board/icecube/flash.c2
-rw-r--r--board/icecube/icecube.c12
-rw-r--r--board/icecube/u-boot.lds3
-rw-r--r--board/icu862/flash.c2
-rw-r--r--board/icu862/icu862.c4
-rw-r--r--board/icu862/u-boot.lds3
-rw-r--r--board/icu862/u-boot.lds.debug2
-rw-r--r--board/ids8247/u-boot.lds3
-rw-r--r--board/impa7/u-boot.lds1
-rw-r--r--board/incaip/flash.c2
-rw-r--r--board/incaip/incaip.c2
-rw-r--r--board/incaip/lowlevel_init.S9
-rw-r--r--board/incaip/u-boot.lds1
-rw-r--r--board/inka4x0/u-boot.lds3
-rw-r--r--board/innokom/u-boot.lds1
-rw-r--r--board/integratorap/Makefile2
-rw-r--r--board/integratorap/integratorap.c192
-rw-r--r--board/integratorap/lowlevel_init.S213
-rw-r--r--board/integratorap/memsetup.S (renamed from board/integratorap/platform.S)20
-rwxr-xr-xboard/integratorap/split_by_variant.sh116
-rw-r--r--board/integratorap/u-boot.lds.template53
-rw-r--r--board/integratorcp/Makefile2
-rw-r--r--board/integratorcp/integratorcp.c185
-rw-r--r--board/integratorcp/lowlevel_init.S214
-rw-r--r--board/integratorcp/memsetup.S (renamed from board/integratorcp/platform.S)20
-rwxr-xr-xboard/integratorcp/split_by_variant.sh111
-rw-r--r--board/integratorcp/u-boot.lds.template53
-rw-r--r--board/ip860/ip860.c8
-rw-r--r--board/ip860/u-boot.lds3
-rw-r--r--board/ip860/u-boot.lds.debug2
-rw-r--r--board/iphase4539/iphase4539.c4
-rw-r--r--board/iphase4539/u-boot.lds3
-rw-r--r--board/ispan/ispan.c4
-rw-r--r--board/ispan/u-boot.lds3
-rw-r--r--board/ivm/ivm.c2
-rw-r--r--board/ivm/u-boot.lds3
-rw-r--r--board/ivm/u-boot.lds.debug2
-rw-r--r--board/ixdp425/ixdp425.c1
-rw-r--r--board/ixdp425/u-boot.lds1
-rw-r--r--board/jse/u-boot.lds3
-rw-r--r--board/kb9202/Makefile49
-rw-r--r--board/kb9202/config.mk1
-rw-r--r--board/kb9202/kb9202.c97
-rw-r--r--board/kb9202/u-boot.lds (renamed from board/integratorcp/u-boot.lds)10
-rw-r--r--board/kup/common/load_sernum_ethaddr.c12
-rw-r--r--board/kup/kup4k/kup4k.c4
-rw-r--r--board/kup/kup4k/u-boot.lds3
-rw-r--r--board/kup/kup4k/u-boot.lds.debug2
-rw-r--r--board/kup/kup4x/u-boot.lds3
-rw-r--r--board/kup/kup4x/u-boot.lds.debug2
-rw-r--r--board/lantec/lantec.c2
-rw-r--r--board/lantec/u-boot.lds3
-rw-r--r--board/lantec/u-boot.lds.debug2
-rw-r--r--board/lart/u-boot.lds1
-rw-r--r--board/logodl/u-boot.lds1
-rw-r--r--board/lpd7a40x/u-boot.lds1
-rw-r--r--board/lubbock/u-boot.lds1
-rw-r--r--board/lwmon/README.keybd8
-rw-r--r--board/lwmon/lwmon.c32
-rw-r--r--board/lwmon/u-boot.lds3
-rw-r--r--board/lwmon/u-boot.lds.debug2
-rw-r--r--board/m5272c3/u-boot.lds2
-rw-r--r--board/m5282evb/u-boot.lds2
-rw-r--r--board/mbx8xx/u-boot.lds3
-rw-r--r--board/mbx8xx/u-boot.lds.debug2
-rw-r--r--board/ml2/flash.c2
-rw-r--r--board/ml2/ml2.c4
-rw-r--r--board/ml2/u-boot.lds5
-rw-r--r--board/ml2/u-boot.lds.debug2
-rw-r--r--board/modnet50/u-boot.lds1
-rw-r--r--board/mousse/README6
-rw-r--r--board/mousse/u-boot.lds3
-rw-r--r--board/mousse/u-boot.lds.rom2
-rw-r--r--board/mp2usb/Makefile46
-rw-r--r--board/mp2usb/config.mk3
-rw-r--r--board/mp2usb/flash.c (renamed from board/omap5912osk/flash.c)353
-rw-r--r--board/mp2usb/mp2usb.c88
-rw-r--r--board/mp2usb/u-boot.lds56
-rw-r--r--board/mpc8260ads/mpc8260ads.c48
-rw-r--r--board/mpc8260ads/u-boot.lds3
-rw-r--r--board/mpc8266ads/u-boot.lds3
-rw-r--r--board/mpc8349ads/u-boot.lds3
-rw-r--r--board/mpc8540ads/u-boot.lds3
-rw-r--r--board/mpc8540eval/u-boot.lds3
-rw-r--r--board/mpc8560ads/mpc8560ads.c11
-rw-r--r--board/mpc8560ads/u-boot.lds3
-rw-r--r--board/mpl/common/common_util.c14
-rw-r--r--board/mpl/common/isa.c2
-rw-r--r--board/mpl/common/kbd.c2
-rw-r--r--board/mpl/common/pci_parts.h4
-rw-r--r--board/mpl/mip405/mip405.c12
-rw-r--r--board/mpl/mip405/u-boot.lds5
-rw-r--r--board/mpl/pati/u-boot.lds3
-rw-r--r--board/mpl/pip405/pip405.c8
-rw-r--r--board/mpl/pip405/u-boot.lds4
-rw-r--r--board/mpl/pip405/u-boot.lds.debug2
-rw-r--r--board/mpl/vcma9/u-boot.lds1
-rw-r--r--board/musenki/u-boot.lds3
-rw-r--r--board/mvblue/u-boot.lds3
-rw-r--r--board/mvs1/mvs1.c4
-rw-r--r--board/mvs1/u-boot.lds3
-rw-r--r--board/mvs1/u-boot.lds.debug2
-rw-r--r--board/mx1ads/u-boot.lds1
-rw-r--r--board/mx1fs2/u-boot.lds1
-rw-r--r--board/nc650/u-boot.lds3
-rw-r--r--board/nc650/u-boot.lds.debug2
-rw-r--r--board/netphone/netphone.c12
-rw-r--r--board/netphone/u-boot.lds3
-rw-r--r--board/netphone/u-boot.lds.debug2
-rw-r--r--board/netstar/config.mk4
-rwxr-xr-xboard/netstar/crcekbin0 -> 36168 bytes
-rwxr-xr-xboard/netstar/crcitbin0 -> 11370 bytes
-rwxr-xr-xboard/netstar/eeprombin0 -> 72374 bytes
-rw-r--r--board/netta/netta.c12
-rw-r--r--board/netta/u-boot.lds3
-rw-r--r--board/netta/u-boot.lds.debug2
-rw-r--r--board/netta2/netta2.c12
-rw-r--r--board/netta2/u-boot.lds3
-rw-r--r--board/netta2/u-boot.lds.debug2
-rw-r--r--board/netvia/u-boot.lds3
-rw-r--r--board/netvia/u-boot.lds.debug2
-rw-r--r--board/ns9750dev/Makefile2
-rw-r--r--board/ns9750dev/lowlevel_init.S (renamed from board/ns9750dev/platform.S)4
-rw-r--r--board/ns9750dev/u-boot.lds1
-rw-r--r--board/nx823/nx823.c6
-rw-r--r--board/nx823/u-boot.lds3
-rw-r--r--board/nx823/u-boot.lds.debug2
-rw-r--r--board/o2dnt/Makefile (renamed from board/tqm8560/Makefile)13
-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/omap1510inn/Makefile2
-rw-r--r--board/omap1510inn/lowlevel_init.S (renamed from board/omap1510inn/platform.S)4
-rw-r--r--board/omap1510inn/u-boot.lds1
-rw-r--r--board/omap1610inn/Makefile2
-rw-r--r--board/omap1610inn/lowlevel_init.S (renamed from board/omap1610inn/platform.S)4
-rw-r--r--board/omap1610inn/u-boot.lds1
-rw-r--r--board/omap2420h4/Makefile4
-rw-r--r--board/omap2420h4/config.mk8
-rw-r--r--board/omap2420h4/lowlevel_init.S (renamed from board/omap2420h4/platform.S)4
-rw-r--r--board/omap2420h4/mem.c102
-rw-r--r--board/omap2420h4/omap2420h4.c53
-rw-r--r--board/omap2420h4/sys_info.c115
-rw-r--r--board/omap2420h4/u-boot.lds1
-rw-r--r--board/omap5912osk/Makefile4
-rw-r--r--board/omap5912osk/lowlevel_init.S (renamed from board/omap5912osk/platform.S)4
-rw-r--r--board/omap5912osk/u-boot.lds1
-rw-r--r--board/omap730p2/Makefile2
-rw-r--r--board/omap730p2/lowlevel_init.S (renamed from board/omap730p2/platform.S)4
-rw-r--r--board/omap730p2/u-boot.lds1
-rw-r--r--board/oxc/u-boot.lds3
-rw-r--r--board/pb1x00/Makefile41
-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/flash.c2
-rw-r--r--board/pcippc2/u-boot.lds3
-rw-r--r--board/pleb2/u-boot.lds1
-rw-r--r--board/pm520/flash.c19
-rw-r--r--board/pm520/pm520.c8
-rw-r--r--board/pm520/u-boot.lds3
-rw-r--r--board/pm826/u-boot.lds3
-rw-r--r--board/pm828/u-boot.lds3
-rw-r--r--board/pm854/u-boot.lds3
-rw-r--r--board/pm856/u-boot.lds3
-rw-r--r--board/pn62/pn62.c2
-rw-r--r--board/pn62/u-boot.lds3
-rw-r--r--board/ppmc8260/ppmc8260.c4
-rw-r--r--board/ppmc8260/u-boot.lds3
-rw-r--r--board/prodrive/p3p440/Makefile47
-rw-r--r--board/prodrive/p3p440/config.mk44
-rw-r--r--board/prodrive/p3p440/init.S99
-rw-r--r--board/prodrive/p3p440/p3p440.c264
-rw-r--r--board/prodrive/p3p440/p3p440.h40
-rw-r--r--board/prodrive/p3p440/u-boot.lds157
-rw-r--r--board/psyent/pci5441/u-boot.lds1
-rw-r--r--board/psyent/pk1c20/u-boot.lds1
-rw-r--r--board/purple/u-boot.lds1
-rw-r--r--board/pxa255_idp/Makefile48
-rw-r--r--board/pxa255_idp/README11
-rw-r--r--board/pxa255_idp/config.mk3
-rw-r--r--board/pxa255_idp/idp_notes.txt46
-rw-r--r--board/pxa255_idp/memsetup.S496
-rw-r--r--board/pxa255_idp/pxa_idp.c140
-rw-r--r--board/pxa255_idp/pxa_reg_calcs.out119
-rw-r--r--board/pxa255_idp/pxa_reg_calcs.py311
-rw-r--r--board/pxa255_idp/u-boot.lds55
-rw-r--r--board/quantum/quantum.c6
-rw-r--r--board/quantum/u-boot.lds3
-rw-r--r--board/quantum/u-boot.lds.debug2
-rw-r--r--board/r360mpi/r360mpi.c32
-rw-r--r--board/r360mpi/u-boot.lds3
-rw-r--r--board/rattler/u-boot.lds3
-rw-r--r--board/rbc823/flash.c5
-rw-r--r--board/rbc823/rbc823.c6
-rw-r--r--board/rbc823/u-boot.lds3
-rw-r--r--board/rmu/rmu.c2
-rw-r--r--board/rmu/u-boot.lds3
-rw-r--r--board/rmu/u-boot.lds.debug2
-rw-r--r--board/rpxsuper/u-boot.lds3
-rw-r--r--board/rsdproto/u-boot.lds3
-rw-r--r--board/sacsng/u-boot.lds3
-rw-r--r--board/sandburst/common/ppc440gx_i2c.c4
-rw-r--r--board/sandburst/karef/karef.c9
-rw-r--r--board/sandburst/karef/karef.h4
-rw-r--r--board/sandburst/karef/u-boot.lds5
-rw-r--r--board/sandburst/karef/u-boot.lds.debug3
-rw-r--r--board/sandburst/metrobox/metrobox.c7
-rw-r--r--board/sandburst/metrobox/metrobox.h2
-rw-r--r--board/sandburst/metrobox/u-boot.lds5
-rw-r--r--board/sandburst/metrobox/u-boot.lds.debug3
-rw-r--r--board/sandpoint/u-boot.lds3
-rw-r--r--board/sbc405/sbc405.c2
-rw-r--r--board/sbc405/u-boot.lds5
-rw-r--r--board/sbc8240/u-boot.lds3
-rw-r--r--board/sbc8260/u-boot.lds3
-rw-r--r--board/sbc8560/sbc8560.c11
-rw-r--r--board/sbc8560/u-boot.lds3
-rw-r--r--board/sc520_cdp/u-boot.lds1
-rw-r--r--board/sc520_spunk/u-boot.lds1
-rw-r--r--board/scb9328/u-boot.lds1
-rw-r--r--board/shannon/u-boot.lds1
-rw-r--r--board/siemens/CCM/ccm.c6
-rw-r--r--board/siemens/CCM/u-boot.lds3
-rw-r--r--board/siemens/CCM/u-boot.lds.debug2
-rw-r--r--board/siemens/IAD210/IAD210.c2
-rw-r--r--board/siemens/IAD210/u-boot.lds3
-rw-r--r--board/siemens/SCM/scm.c2
-rw-r--r--board/siemens/SCM/u-boot.lds3
-rw-r--r--board/siemens/common/README2
-rw-r--r--board/siemens/common/fpga.c4
-rw-r--r--board/siemens/pcu_e/pcu_e.c4
-rw-r--r--board/siemens/pcu_e/u-boot.lds3
-rw-r--r--board/siemens/pcu_e/u-boot.lds.debug2
-rw-r--r--board/sixnet/flash.c2
-rw-r--r--board/sixnet/sixnet.c2
-rw-r--r--board/sixnet/u-boot.lds3
-rw-r--r--board/sl8245/u-boot.lds4
-rw-r--r--board/smdk2400/u-boot.lds1
-rw-r--r--board/smdk2410/u-boot.lds1
-rw-r--r--board/snmc/qs850/qs850.c8
-rw-r--r--board/snmc/qs850/u-boot.lds3
-rw-r--r--board/snmc/qs860t/qs860t.c6
-rw-r--r--board/snmc/qs860t/u-boot.lds3
-rw-r--r--board/sorcery/u-boot.lds3
-rw-r--r--board/spd8xx/spd8xx.c2
-rw-r--r--board/spd8xx/u-boot.lds3
-rw-r--r--board/spd8xx/u-boot.lds.debug2
-rw-r--r--board/ssv/adnpesc1/u-boot.lds1
-rw-r--r--board/stxgp3/stxgp3.c11
-rw-r--r--board/stxgp3/u-boot.lds3
-rw-r--r--board/stxxtc/Makefile10
-rw-r--r--board/stxxtc/oftree.dts52
-rw-r--r--board/stxxtc/stxxtc.c6
-rw-r--r--board/stxxtc/u-boot.lds3
-rw-r--r--board/stxxtc/u-boot.lds.debug2
-rw-r--r--board/svm_sc8xx/svm_sc8xx.c2
-rw-r--r--board/svm_sc8xx/u-boot.lds3
-rw-r--r--board/svm_sc8xx/u-boot.lds.debug2
-rw-r--r--board/sx1/Makefile2
-rw-r--r--board/sx1/lowlevel_init.S (renamed from board/sx1/platform.S)4
-rw-r--r--board/sx1/u-boot.lds1
-rw-r--r--board/tb0229/u-boot.lds1
-rw-r--r--board/total5200/sdram.c12
-rw-r--r--board/total5200/u-boot.lds3
-rw-r--r--board/tqm5200/Makefile2
-rwxr-xr-xboard/tqm5200/cmd_stk52xx.c1221
-rw-r--r--board/tqm5200/tqm5200.c58
-rw-r--r--board/tqm5200/u-boot.lds3
-rw-r--r--board/tqm8260/tqm8260.c2
-rw-r--r--board/tqm8260/u-boot.lds3
-rw-r--r--board/tqm834x/Makefile45
-rw-r--r--board/tqm834x/config.mk23
-rw-r--r--board/tqm834x/pci.c220
-rw-r--r--board/tqm834x/tqm834x.c408
-rw-r--r--board/tqm834x/u-boot.lds122
-rw-r--r--board/tqm8540/init.S241
-rw-r--r--board/tqm8540/tqm8540.c273
-rw-r--r--board/tqm85xx/Makefile (renamed from board/tqm8540/Makefile)2
-rw-r--r--board/tqm85xx/config.mk (renamed from board/tqm8560/config.mk)2
-rw-r--r--board/tqm85xx/init.S (renamed from board/tqm8560/init.S)31
-rw-r--r--board/tqm85xx/sdram.c226
-rw-r--r--board/tqm85xx/tqm85xx.c (renamed from board/tqm8560/tqm8560.c)265
-rw-r--r--board/tqm85xx/u-boot.lds (renamed from board/tqm8540/u-boot.lds)7
-rw-r--r--board/tqm8xx/load_sernum_ethaddr.c4
-rw-r--r--board/tqm8xx/tqm8xx.c8
-rw-r--r--board/tqm8xx/u-boot.lds3
-rw-r--r--board/tqm8xx/u-boot.lds.debug2
-rw-r--r--board/trab/auto_update.c4
-rw-r--r--board/trab/u-boot.lds1
-rw-r--r--board/uc100/u-boot.lds3
-rw-r--r--board/uc100/u-boot.lds.debug2
-rw-r--r--board/uc100/uc100.c11
-rw-r--r--board/utx8245/u-boot.lds3
-rw-r--r--board/v37/u-boot.lds3
-rw-r--r--board/versatile/Makefile2
-rw-r--r--board/versatile/lowlevel_init.S (renamed from board/versatile/platform.S)5
-rwxr-xr-xboard/versatile/split_by_variant.sh40
-rw-r--r--board/versatile/u-boot.lds1
-rw-r--r--board/voiceblue/setup.S4
-rw-r--r--board/voiceblue/u-boot.lds1
-rw-r--r--board/w7o/flash.c4
-rw-r--r--board/w7o/fpga.c34
-rw-r--r--board/w7o/u-boot.lds3
-rw-r--r--board/w7o/u-boot.lds.debug2
-rw-r--r--board/w7o/vpd.c4
-rw-r--r--board/w7o/w7o.c22
-rw-r--r--board/w7o/w7o.h12
-rw-r--r--board/wepep250/u-boot.lds1
-rw-r--r--board/westel/amx860/u-boot.lds3
-rw-r--r--board/westel/amx860/u-boot.lds.debug2
-rw-r--r--board/xaeniax/u-boot.lds1
-rw-r--r--board/xilinx/common/xdma_channel.c2
-rw-r--r--board/xilinx/ml300/ml300.c4
-rw-r--r--board/xilinx/ml300/u-boot.lds5
-rw-r--r--board/xilinx/ml300/u-boot.lds.debug2
-rw-r--r--board/xilinx/xilinx_enet/emac_adapter.c2
-rw-r--r--board/xilinx/xilinx_iic/iic_adapter.c38
-rw-r--r--board/xm250/u-boot.lds1
-rw-r--r--board/xpedite1k/u-boot.lds4
-rw-r--r--board/xpedite1k/u-boot.lds.debug2
-rw-r--r--board/xpedite1k/xpedite1k.c8
-rw-r--r--board/xsengine/flash.c33
-rw-r--r--board/xsengine/u-boot.lds1
-rw-r--r--board/zpc1900/u-boot.lds3
608 files changed, 24843 insertions, 5753 deletions
diff --git a/board/AtmarkTechno/suzaku/u-boot.lds b/board/AtmarkTechno/suzaku/u-boot.lds
index da66a563efc..00a8ef7ad9e 100644
--- a/board/AtmarkTechno/suzaku/u-boot.lds
+++ b/board/AtmarkTechno/suzaku/u-boot.lds
@@ -51,6 +51,7 @@ SECTIONS
.u_boot_cmd ALIGN(0x4):
{
+ . = .;
__u_boot_cmd_start = .;
*(.u_boot_cmd)
__u_boot_cmd_end = .;
diff --git a/board/LEOX/elpt860/README.LEOX b/board/LEOX/elpt860/README.LEOX
index 23bc3028789..9052b097b42 100644
--- a/board/LEOX/elpt860/README.LEOX
+++ b/board/LEOX/elpt860/README.LEOX
@@ -124,9 +124,9 @@ 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:
+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
diff --git a/board/LEOX/elpt860/elpt860.c b/board/LEOX/elpt860/elpt860.c
index 82a831f5245..775db738e6c 100644
--- a/board/LEOX/elpt860/elpt860.c
+++ b/board/LEOX/elpt860/elpt860.c
@@ -169,7 +169,7 @@ int board_early_init_f (void)
int checkboard (void)
{
- unsigned char *s = getenv ("serial#");
+ char *s = getenv ("serial#");
if (!s || strncmp (s, "ELPT860", 7))
printf ("### No HW ID - assuming ELPT860\n");
@@ -253,7 +253,7 @@ long int initdram (int board_type)
* try 8 column mode
*/
size8 = dram_size (CFG_MAMR_8COL,
- (ulong *) SDRAM_BASE1_PRELIM, SDRAM_MAX_SIZE);
+ SDRAM_BASE1_PRELIM, SDRAM_MAX_SIZE);
udelay (1000);
@@ -261,7 +261,7 @@ long int initdram (int board_type)
* try 9 column mode
*/
size9 = dram_size (CFG_MAMR_9COL,
- (ulong *) SDRAM_BASE1_PRELIM, SDRAM_MAX_SIZE);
+ SDRAM_BASE1_PRELIM, SDRAM_MAX_SIZE);
if (size8 < size9) { /* leave configuration at 9 columns */
size_b0 = size9;
diff --git a/board/LEOX/elpt860/u-boot.lds b/board/LEOX/elpt860/u-boot.lds
index d23af9656a1..b09fc3390a2 100644
--- a/board/LEOX/elpt860/u-boot.lds
+++ b/board/LEOX/elpt860/u-boot.lds
@@ -91,6 +91,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -123,10 +124,12 @@ SECTIONS
_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 = .;
diff --git a/board/LEOX/elpt860/u-boot.lds.debug b/board/LEOX/elpt860/u-boot.lds.debug
index 269e8d90ce3..6f5af91fd18 100644
--- a/board/LEOX/elpt860/u-boot.lds.debug
+++ b/board/LEOX/elpt860/u-boot.lds.debug
@@ -83,6 +83,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/MAI/AmigaOneG3SE/ps2kbd.c b/board/MAI/AmigaOneG3SE/ps2kbd.c
index bfe5eb3ed75..cf4f4d0e3d1 100644
--- a/board/MAI/AmigaOneG3SE/ps2kbd.c
+++ b/board/MAI/AmigaOneG3SE/ps2kbd.c
@@ -656,7 +656,7 @@ char * kbd_initialize(void)
| KBD_MODE_DISABLE_MOUSE
| KBD_MODE_KCC);
- /* ibm powerpc portables need this to use scan-code set 1 -- Cort */
+ /* 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)) {
/*
diff --git a/board/MAI/AmigaOneG3SE/u-boot.lds b/board/MAI/AmigaOneG3SE/u-boot.lds
index 2281d35867d..b36b3cb450e 100644
--- a/board/MAI/AmigaOneG3SE/u-boot.lds
+++ b/board/MAI/AmigaOneG3SE/u-boot.lds
@@ -76,6 +76,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -108,11 +109,13 @@ SECTIONS
_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 = .;
diff --git a/board/Marvell/common/flash.c b/board/Marvell/common/flash.c
index c2c5b765946..a8add85672c 100644
--- a/board/Marvell/common/flash.c
+++ b/board/Marvell/common/flash.c
@@ -526,7 +526,7 @@ flash_get_size (int portwidth, vu_long * addr, flash_info_t * info)
int flash_erase (flash_info_t * info, int s_first, int s_last)
{
- volatile unsigned char *addr = (char *) (info->start[0]);
+ volatile unsigned char *addr = (uchar *) (info->start[0]);
int flag, prot, sect, l_sect;
ulong start, now, last;
@@ -696,7 +696,7 @@ int flash_erase (flash_info_t * info, int s_first, int s_last)
for (sect = s_first; sect <= s_last; sect++) {
int sector_size = info->size / info->sector_count;
- addr = (char *) (info->start[sect]);
+ addr = (uchar *) (info->start[sect]);
memset ((void *) addr, 0, sector_size);
}
return 0;
@@ -752,7 +752,7 @@ int flash_erase (flash_info_t * info, int s_first, int s_last)
/* Start erase on unprotected sectors */
for (sect = s_first; sect <= s_last; sect++) {
if (info->protect[sect] == 0) { /* not protected */
- addr = (char *) (info->start[sect]);
+ addr = (uchar *) (info->start[sect]);
flash_cmd (info->portwidth, addr, 0, 0x30);
l_sect = sect;
}
@@ -893,7 +893,7 @@ int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
/* broken for 2x16: TODO */
static int write_word (flash_info_t * info, ulong dest, ulong data)
{
- volatile unsigned char *addr = (char *) (info->start[0]);
+ volatile unsigned char *addr = (uchar *) (info->start[0]);
ulong start;
int flag, i;
ulong mask;
@@ -926,7 +926,7 @@ static int write_word (flash_info_t * info, ulong dest, ulong data)
CHIP_CMD_RST);
/* 1st cycle of word/byte program */
/* write 0x40 to the location to program */
- flash_cmd (info->portwidth, (char *) dest, 0,
+ flash_cmd (info->portwidth, (uchar *) dest, 0,
CHIP_CMD_PROG);
/* 2nd cycle of word/byte program */
/* write the data to the destination address */
diff --git a/board/Marvell/common/i2c.c b/board/Marvell/common/i2c.c
index 624ee5cfbc7..32b2b30a4a2 100644
--- a/board/Marvell/common/i2c.c
+++ b/board/Marvell/common/i2c.c
@@ -168,7 +168,7 @@ static uchar i2c_select_device (uchar dev_addr, uchar read, int ten_bit)
static uchar i2c_get_data (uchar * return_data, int len)
{
- unsigned int data, status;
+ unsigned int data, status = 0;
int count = 0;
DP (puts ("i2c_get_data\n"));
diff --git a/board/Marvell/db64360/db64360.c b/board/Marvell/db64360/db64360.c
index 8e181d4e68c..a2ab2d78185 100644
--- a/board/Marvell/db64360/db64360.c
+++ b/board/Marvell/db64360/db64360.c
@@ -610,7 +610,7 @@ unsigned long long pattern[] = {
int mem_test_data (void)
{
unsigned long long *pmem = (unsigned long long *) CFG_MEMTEST_START;
- unsigned long long temp64;
+ unsigned long long temp64 = 0;
int num_patterns = sizeof (pattern) / sizeof (pattern[0]);
int i;
unsigned int hi, lo;
@@ -717,7 +717,7 @@ int mem_march (volatile unsigned long long *base,
unsigned long long wmask, short read, short write)
{
unsigned int i;
- unsigned long long temp;
+ unsigned long long temp = 0;
unsigned int hitemp, lotemp, himask, lomask;
for (i = 0; i < size; i++) {
diff --git a/board/Marvell/db64360/mv_eth.c b/board/Marvell/db64360/mv_eth.c
index e2719b99d1a..3c5dee73b7f 100644
--- a/board/Marvell/db64360/mv_eth.c
+++ b/board/Marvell/db64360/mv_eth.c
@@ -267,8 +267,9 @@ void mv6436x_eth_initialize (bd_t * bis)
dev->send = (void *) db64360_eth_transmit;
dev->recv = (void *) db64360_eth_poll;
- dev->priv = (void *) ethernet_private =
- calloc (sizeof (*ethernet_private), 1);
+ ethernet_private = calloc (sizeof (*ethernet_private), 1);
+ dev->priv = (void *) ethernet_private;
+
if (!ethernet_private) {
printf ("%s: %s allocation failure, %s\n",
__FUNCTION__, dev->name,
@@ -281,8 +282,8 @@ void mv6436x_eth_initialize (bd_t * bis)
memcpy (ethernet_private->port_mac_addr, dev->enetaddr, 6);
/* set pointer to memory for stats data structure etc... */
- ethernet_private->port_private = (void *) port_private =
- calloc (sizeof (*ethernet_private), 1);
+ port_private = calloc (sizeof (*ethernet_private), 1);
+ ethernet_private->port_private = (void *)port_private;
if (!port_private) {
printf ("%s: %s allocation failure, %s\n",
__FUNCTION__, dev->name,
diff --git a/board/Marvell/db64360/u-boot.lds b/board/Marvell/db64360/u-boot.lds
index 0dfa8c00054..d89eb6cff20 100644
--- a/board/Marvell/db64360/u-boot.lds
+++ b/board/Marvell/db64360/u-boot.lds
@@ -74,6 +74,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -106,11 +107,13 @@ SECTIONS
_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 = .;
diff --git a/board/Marvell/db64460/db64460.c b/board/Marvell/db64460/db64460.c
index 75eb5e89be6..a4abf8d1fa9 100644
--- a/board/Marvell/db64460/db64460.c
+++ b/board/Marvell/db64460/db64460.c
@@ -610,7 +610,7 @@ unsigned long long pattern[] = {
int mem_test_data (void)
{
unsigned long long *pmem = (unsigned long long *) CFG_MEMTEST_START;
- unsigned long long temp64;
+ unsigned long long temp64 = 0;
int num_patterns = sizeof (pattern) / sizeof (pattern[0]);
int i;
unsigned int hi, lo;
@@ -717,7 +717,7 @@ int mem_march (volatile unsigned long long *base,
unsigned long long wmask, short read, short write)
{
unsigned int i;
- unsigned long long temp;
+ unsigned long long temp = 0;
unsigned int hitemp, lotemp, himask, lomask;
for (i = 0; i < size; i++) {
diff --git a/board/Marvell/db64460/mv_eth.c b/board/Marvell/db64460/mv_eth.c
index b78fda35c02..ec5d581065c 100644
--- a/board/Marvell/db64460/mv_eth.c
+++ b/board/Marvell/db64460/mv_eth.c
@@ -267,8 +267,8 @@ void mv6446x_eth_initialize (bd_t * bis)
dev->send = (void *) db64460_eth_transmit;
dev->recv = (void *) db64460_eth_poll;
- dev->priv = (void *) ethernet_private =
- calloc (sizeof (*ethernet_private), 1);
+ ethernet_private = calloc (sizeof (*ethernet_private), 1);
+ dev->priv = (void *)ethernet_private;
if (!ethernet_private) {
printf ("%s: %s allocation failure, %s\n",
__FUNCTION__, dev->name,
@@ -281,8 +281,8 @@ void mv6446x_eth_initialize (bd_t * bis)
memcpy (ethernet_private->port_mac_addr, dev->enetaddr, 6);
/* set pointer to memory for stats data structure etc... */
- ethernet_private->port_private = (void *) port_private =
- calloc (sizeof (*ethernet_private), 1);
+ port_private = calloc (sizeof (*ethernet_private), 1);
+ ethernet_private->port_private = (void *)port_private;
if (!port_private) {
printf ("%s: %s allocation failure, %s\n",
__FUNCTION__, dev->name,
diff --git a/board/Marvell/db64460/u-boot.lds b/board/Marvell/db64460/u-boot.lds
index 0dfa8c00054..d89eb6cff20 100644
--- a/board/Marvell/db64460/u-boot.lds
+++ b/board/Marvell/db64460/u-boot.lds
@@ -74,6 +74,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -106,11 +107,13 @@ SECTIONS
_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 = .;
diff --git a/board/RPXClassic/RPXClassic.c b/board/RPXClassic/RPXClassic.c
index 5b12a0c04c2..49cb8ad24f6 100644
--- a/board/RPXClassic/RPXClassic.c
+++ b/board/RPXClassic/RPXClassic.c
@@ -114,8 +114,8 @@ void board_get_enetaddr (uchar * enet)
i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE);
/* Read 256 bytes in EEPROM */
- i2c_read (0x54, 0, 1, buff, 128);
- i2c_read (0x54, 128, 1, buff + 128, 128);
+ 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;;) {
@@ -123,7 +123,7 @@ void board_get_enetaddr (uchar * enet)
cp += 3;
/* Read MAC address */
for (i = 0; i < 6; i++, cp += 2) {
- enet[i] = aschex_to_byte (cp);
+ enet[i] = aschex_to_byte ((unsigned char *)cp);
}
}
/* Scan to the end of the record */
@@ -200,7 +200,7 @@ long int initdram (int board_type)
* try 10 column mode
*/
- size10 = dram_size (CFG_MAMR_10COL, (ulong *) SDRAM_BASE_PRELIM,
+ size10 = dram_size (CFG_MAMR_10COL, SDRAM_BASE_PRELIM,
SDRAM_MAX_SIZE);
return (size10);
diff --git a/board/RPXClassic/u-boot.lds b/board/RPXClassic/u-boot.lds
index 082d8b07cfb..049f9901f71 100644
--- a/board/RPXClassic/u-boot.lds
+++ b/board/RPXClassic/u-boot.lds
@@ -78,6 +78,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -110,11 +111,13 @@ SECTIONS
_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 = .;
diff --git a/board/RPXClassic/u-boot.lds.debug b/board/RPXClassic/u-boot.lds.debug
index c0ee8499cd6..ddd4678ee8c 100644
--- a/board/RPXClassic/u-boot.lds.debug
+++ b/board/RPXClassic/u-boot.lds.debug
@@ -74,6 +74,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/RPXlite/RPXlite.c b/board/RPXlite/RPXlite.c
index d2c2116c128..f37e07b9234 100644
--- a/board/RPXlite/RPXlite.c
+++ b/board/RPXlite/RPXlite.c
@@ -137,7 +137,7 @@ long int initdram (int board_type)
* try 10 column mode
*/
- size10 = dram_size (CFG_MAMR_10COL, (ulong *) SDRAM_BASE_PRELIM,
+ size10 = dram_size (CFG_MAMR_10COL, SDRAM_BASE_PRELIM,
SDRAM_MAX_SIZE);
return (size10);
diff --git a/board/RPXlite/u-boot.lds b/board/RPXlite/u-boot.lds
index 082d8b07cfb..049f9901f71 100644
--- a/board/RPXlite/u-boot.lds
+++ b/board/RPXlite/u-boot.lds
@@ -78,6 +78,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -110,11 +111,13 @@ SECTIONS
_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 = .;
diff --git a/board/RPXlite/u-boot.lds.debug b/board/RPXlite/u-boot.lds.debug
index c0ee8499cd6..ddd4678ee8c 100644
--- a/board/RPXlite/u-boot.lds.debug
+++ b/board/RPXlite/u-boot.lds.debug
@@ -74,6 +74,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/RPXlite_dw/README b/board/RPXlite_dw/README
index e88f9aa55dd..28bcb318e8b 100644
--- a/board/RPXlite_dw/README
+++ b/board/RPXlite_dw/README
@@ -94,8 +94,8 @@ 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; " \
+ "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
diff --git a/board/RPXlite_dw/RPXlite_dw.c b/board/RPXlite_dw/RPXlite_dw.c
index 86cf6c1d4d1..237c58af360 100644
--- a/board/RPXlite_dw/RPXlite_dw.c
+++ b/board/RPXlite_dw/RPXlite_dw.c
@@ -142,7 +142,7 @@ long int initdram (int board_type)
* try 9 column mode
*/
- size9 = dram_size (CFG_MAMR_9COL, (ulong *)SDRAM_BASE_PRELIM, SDRAM_MAX_SIZE);
+ size9 = dram_size (CFG_MAMR_9COL, SDRAM_BASE_PRELIM, SDRAM_MAX_SIZE);
/*
* Final mapping:
diff --git a/board/RPXlite_dw/u-boot.lds b/board/RPXlite_dw/u-boot.lds
index 9f7da0b6513..a9c88f6487c 100644
--- a/board/RPXlite_dw/u-boot.lds
+++ b/board/RPXlite_dw/u-boot.lds
@@ -78,6 +78,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -110,11 +111,13 @@ SECTIONS
_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 = .;
diff --git a/board/RPXlite_dw/u-boot.lds.debug b/board/RPXlite_dw/u-boot.lds.debug
index 4e369d50ef0..c0cf1cb7476 100644
--- a/board/RPXlite_dw/u-boot.lds.debug
+++ b/board/RPXlite_dw/u-boot.lds.debug
@@ -74,6 +74,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/RRvision/RRvision.c b/board/RRvision/RRvision.c
index d12ea826860..f46bb9e8e48 100644
--- a/board/RRvision/RRvision.c
+++ b/board/RRvision/RRvision.c
@@ -93,7 +93,7 @@ const uint sdram_table[] =
int checkboard (void)
{
- unsigned char *s = getenv ("serial#");
+ char *s = getenv ("serial#");
puts ("Board: RRvision ");
@@ -157,7 +157,7 @@ long int initdram (int board_type)
* try 8 column mode
*/
size8 = dram_size (CFG_MAMR_8COL,
- (ulong *)SDRAM_BASE2_PRELIM,
+ SDRAM_BASE2_PRELIM,
SDRAM_MAX_SIZE);
udelay (1000);
@@ -166,7 +166,7 @@ long int initdram (int board_type)
* try 9 column mode
*/
size9 = dram_size (CFG_MAMR_9COL,
- (ulong *) SDRAM_BASE2_PRELIM,
+ SDRAM_BASE2_PRELIM,
SDRAM_MAX_SIZE);
if (size8 < size9) { /* leave configuration at 9 columns */
diff --git a/board/RRvision/u-boot.lds b/board/RRvision/u-boot.lds
index f81a10e033d..1d6288fea61 100644
--- a/board/RRvision/u-boot.lds
+++ b/board/RRvision/u-boot.lds
@@ -80,6 +80,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -112,11 +113,13 @@ SECTIONS
_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 = .;
diff --git a/board/a3000/u-boot.lds b/board/a3000/u-boot.lds
index 6bd865e8cce..acb9ffda3b0 100644
--- a/board/a3000/u-boot.lds
+++ b/board/a3000/u-boot.lds
@@ -70,6 +70,8 @@ SECTIONS
. = ALIGN(16);
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -102,10 +104,12 @@ SECTIONS
_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 = .;
diff --git a/board/adder/u-boot.lds b/board/adder/u-boot.lds
index 1d2a7d764b2..66c324625a7 100644
--- a/board/adder/u-boot.lds
+++ b/board/adder/u-boot.lds
@@ -60,6 +60,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -92,11 +93,13 @@ SECTIONS
_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 = .;
diff --git a/board/adsvix/u-boot.lds b/board/adsvix/u-boot.lds
index 58c371df06b..f0102391b34 100644
--- a/board/adsvix/u-boot.lds
+++ b/board/adsvix/u-boot.lds
@@ -44,6 +44,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/alaska/u-boot.lds b/board/alaska/u-boot.lds
index 6e4a060bb6a..889bc77d2f8 100644
--- a/board/alaska/u-boot.lds
+++ b/board/alaska/u-boot.lds
@@ -61,6 +61,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -93,11 +94,13 @@ SECTIONS
_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 = .;
diff --git a/board/altera/dk1c20/u-boot.lds b/board/altera/dk1c20/u-boot.lds
index a7d35af3f73..8b01f45e551 100644
--- a/board/altera/dk1c20/u-boot.lds
+++ b/board/altera/dk1c20/u-boot.lds
@@ -50,6 +50,7 @@ SECTIONS
. = ALIGN(4);
__data_end = .;
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd :
{
diff --git a/board/altera/dk1s10/u-boot.lds b/board/altera/dk1s10/u-boot.lds
index a7d35af3f73..8b01f45e551 100644
--- a/board/altera/dk1s10/u-boot.lds
+++ b/board/altera/dk1s10/u-boot.lds
@@ -50,6 +50,7 @@ SECTIONS
. = ALIGN(4);
__data_end = .;
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd :
{
diff --git a/board/amcc/bamboo/bamboo.c b/board/amcc/bamboo/bamboo.c
index d02add5723e..803995ae5d0 100644
--- a/board/amcc/bamboo/bamboo.c
+++ b/board/amcc/bamboo/bamboo.c
@@ -31,6 +31,8 @@ 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 */
@@ -357,10 +359,7 @@ void nand_init(void)
int checkboard(void)
{
- sys_info_t sysinfo;
- unsigned char *s = getenv("serial#");
-
- get_sys_info(&sysinfo);
+ char *s = getenv("serial#");
printf("Board: Bamboo - AMCC PPC440EP Evaluation Board");
if (s != NULL) {
@@ -369,18 +368,12 @@ int checkboard(void)
}
putc('\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);
-
return (0);
}
/*************************************************************************
*
- * fixed_sdram_init -- Bamboo has one bank onboard sdram (plus DIMM)
+ * 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,
@@ -397,24 +390,40 @@ int checkboard(void)
* PLB @ 133 MHz
*
************************************************************************/
-void fixed_sdram_init(void)
+static void init_spd_array(void)
{
- /*
- * clear this first, if the DDR is enabled by a debugger
- * then you can not make changes.
- */
- mtsdram(mem_cfg0, 0x00000000); /* Disable EEC */
+ cfg_simulate_spd_eeprom[8] = 0x04; /* 2.5 Volt */
+ cfg_simulate_spd_eeprom[2] = 0x07; /* DDR ram */
- /*--------------------------------------------------------------------
- * Setup for board-specific specific mem
- *------------------------------------------------------------------*/
- /*
- * Following for CAS Latency = 2.5 @ 133 MHz PLB
- */
- mtsdram(mem_b0cr, 0x00082001);
- mtsdram(mem_b1cr, 0x00000000);
- mtsdram(mem_b2cr, 0x00000000);
- mtsdram(mem_b3cr, 0x00000000);
+#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)
@@ -422,9 +431,10 @@ long int initdram (int board_type)
long dram_size = 0;
/*
- * First init bank0 (onboard sdram) and then configure the DIMM-slots
+ * First write simulated values in eeprom array for onboard bank 0
*/
- fixed_sdram_init();
+ init_spd_array();
+
dram_size = spd_sdram (0);
return dram_size;
@@ -483,20 +493,8 @@ int testdram(void)
#if defined(CONFIG_PCI) && defined(CFG_PCI_PRE_INIT)
int pci_pre_init(struct pci_controller *hose)
{
- unsigned long strap;
unsigned long addr;
- /*--------------------------------------------------------------------------+
- * Bamboo 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[PAE] not set.\n");
- printf("PCI: Configuration aborted.\n");
- return 0;
- }
-
/*-------------------------------------------------------------------------+
| Set priority for all PLB3 devices to 0.
| Set PLB3 arbiter to fair mode.
diff --git a/board/amcc/bamboo/u-boot.lds b/board/amcc/bamboo/u-boot.lds
index c978dbafe0e..176900ec2f8 100644
--- a/board/amcc/bamboo/u-boot.lds
+++ b/board/amcc/bamboo/u-boot.lds
@@ -74,7 +74,6 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/440gx_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -94,6 +93,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -126,11 +126,13 @@ SECTIONS
_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 = .;
diff --git a/board/amcc/bubinga/bubinga.c b/board/amcc/bubinga/bubinga.c
index b4e9349ad70..fe6ce8a6d13 100644
--- a/board/amcc/bubinga/bubinga.c
+++ b/board/amcc/bubinga/bubinga.c
@@ -42,7 +42,7 @@ int board_early_init_f(void)
*/
int checkboard(void)
{
- unsigned char *s = getenv("serial#");
+ char *s = getenv("serial#");
puts("Board: Bubinga - AMCC PPC405EP Evaluation Board");
diff --git a/board/amcc/bubinga/u-boot.lds b/board/amcc/bubinga/u-boot.lds
index b8f08eaf7ed..be030923b8e 100644
--- a/board/amcc/bubinga/u-boot.lds
+++ b/board/amcc/bubinga/u-boot.lds
@@ -68,7 +68,6 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -88,6 +87,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -120,10 +120,12 @@ SECTIONS
_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 = .;
diff --git a/board/amcc/ebony/ebony.c b/board/amcc/ebony/ebony.c
index f6bb83713fd..a2595eec520 100644
--- a/board/amcc/ebony/ebony.c
+++ b/board/amcc/ebony/ebony.c
@@ -90,10 +90,7 @@ int board_early_init_f(void)
int checkboard(void)
{
- sys_info_t sysinfo;
- unsigned char *s = getenv("serial#");
-
- get_sys_info(&sysinfo);
+ char *s = getenv("serial#");
printf("Board: Ebony - AMCC PPC440GP Evaluation Board");
if (s != NULL) {
@@ -102,11 +99,6 @@ int checkboard(void)
}
putc('\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);
return (0);
}
diff --git a/board/amcc/ebony/u-boot.lds b/board/amcc/ebony/u-boot.lds
index 0ec3fad8c30..5a1c5b1af46 100644
--- a/board/amcc/ebony/u-boot.lds
+++ b/board/amcc/ebony/u-boot.lds
@@ -74,7 +74,6 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -94,6 +93,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -126,11 +126,13 @@ SECTIONS
_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 = .;
diff --git a/board/amcc/luan/Makefile b/board/amcc/luan/Makefile
new file mode 100644
index 00000000000..5654f91a835
--- /dev/null
+++ b/board/amcc/luan/Makefile
@@ -0,0 +1,48 @@
+#
+# (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 $(TOPDIR)/config.mk
+
+LIB = lib$(BOARD).a
+
+OBJS = $(BOARD).o
+OBJS += flash.o
+SOBJS = init.o
+
+$(LIB): $(OBJS) $(SOBJS)
+ $(AR) crv $@ $(OBJS)
+
+clean:
+ rm -f $(SOBJS) $(OBJS)
+
+distclean: clean
+ rm -f $(LIB) core *.bak .depend
+
+#########################################################################
+
+.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
+ $(CC) -M $(CFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
+
+sinclude .depend
+
+#########################################################################
diff --git a/board/amcc/luan/config.mk b/board/amcc/luan/config.mk
new file mode 100644
index 00000000000..f52c206177c
--- /dev/null
+++ b/board/amcc/luan/config.mk
@@ -0,0 +1,44 @@
+#
+# (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
new file mode 100644
index 00000000000..05362e06d78
--- /dev/null
+++ b/board/amcc/luan/epld.h
@@ -0,0 +1,85 @@
+#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
new file mode 100644
index 00000000000..d3c3c0d0581
--- /dev/null
+++ b/board/amcc/luan/flash.c
@@ -0,0 +1,111 @@
+/*
+ * (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
new file mode 100644
index 00000000000..7830ebdfa6d
--- /dev/null
+++ b/board/amcc/luan/init.S
@@ -0,0 +1,132 @@
+/*
+*
+* See file CREDITS for list of people who contributed to this
+* project.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License as
+* published by the Free Software Foundation; either version 2 of
+* the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* 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
new file mode 100644
index 00000000000..c6b79a9f5ff
--- /dev/null
+++ b/board/amcc/luan/luan.c
@@ -0,0 +1,458 @@
+/*
+ * (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"
+
+
+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)
+{
+ 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) */
+
+
+/*************************************************************************
+ * 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
new file mode 100644
index 00000000000..d122f499f1b
--- /dev/null
+++ b/board/amcc/luan/u-boot.lds
@@ -0,0 +1,157 @@
+/*
+ * (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/config.mk b/board/amcc/ocotea/config.mk
index 5543a4eabd2..9e1833591a2 100644
--- a/board/amcc/ocotea/config.mk
+++ b/board/amcc/ocotea/config.mk
@@ -22,7 +22,7 @@
#
#
-# IBM 440GX Reference Platform (Ocotea) board
+# AMCC 440GX Reference Platform (Ocotea) board
#
#TEXT_BASE = 0xFFFE0000
diff --git a/board/amcc/ocotea/ocotea.c b/board/amcc/ocotea/ocotea.c
index 5f436eaeee9..d1a29c52a51 100644
--- a/board/amcc/ocotea/ocotea.c
+++ b/board/amcc/ocotea/ocotea.c
@@ -28,7 +28,7 @@
#include "ocotea.h"
#include <asm/processor.h>
#include <spd_sdram.h>
-#include <440gx_enet.h>
+#include <ppc4xx_enet.h>
#define BOOT_SMALL_FLASH 32 /* 00100000 */
#define FLASH_ONBD_N 2 /* 00000010 */
@@ -186,10 +186,7 @@ int board_early_init_f (void)
int checkboard (void)
{
- sys_info_t sysinfo;
- unsigned char *s = getenv ("serial#");
-
- get_sys_info (&sysinfo);
+ char *s = getenv ("serial#");
printf ("Board: Ocotea - AMCC PPC440GX Evaluation Board");
if (s != NULL) {
@@ -198,11 +195,6 @@ int checkboard (void)
}
putc ('\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);
return (0);
}
@@ -506,6 +498,15 @@ void fpga_init(void)
}
}
+ /*
+ * 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 |
diff --git a/board/amcc/ocotea/ocotea.h b/board/amcc/ocotea/ocotea.h
index 41bd4500d67..95ce1fd3512 100644
--- a/board/amcc/ocotea/ocotea.h
+++ b/board/amcc/ocotea/ocotea.h
@@ -80,6 +80,7 @@
#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*/
diff --git a/board/amcc/ocotea/u-boot.lds b/board/amcc/ocotea/u-boot.lds
index a9852461e10..316fee88c03 100644
--- a/board/amcc/ocotea/u-boot.lds
+++ b/board/amcc/ocotea/u-boot.lds
@@ -74,7 +74,6 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/440gx_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -94,6 +93,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -126,11 +126,13 @@ SECTIONS
_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 = .;
diff --git a/board/amcc/walnut/u-boot.lds b/board/amcc/walnut/u-boot.lds
index 71078808874..1dcbab5a244 100644
--- a/board/amcc/walnut/u-boot.lds
+++ b/board/amcc/walnut/u-boot.lds
@@ -68,7 +68,6 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -88,6 +87,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -120,11 +120,13 @@ SECTIONS
_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 = .;
diff --git a/board/amcc/walnut/walnut.c b/board/amcc/walnut/walnut.c
index 9fca0a60d0e..f1a96a6e7d2 100644
--- a/board/amcc/walnut/walnut.c
+++ b/board/amcc/walnut/walnut.c
@@ -67,7 +67,7 @@ int board_early_init_f(void)
*/
int checkboard(void)
{
- unsigned char *s = getenv("serial#");
+ char *s = getenv("serial#");
uint pvr = get_pvr();
if (pvr == PVR_405GPR_RB) {
diff --git a/board/amcc/yellowstone/Makefile b/board/amcc/yellowstone/Makefile
index 5654f91a835..47116d36746 100644
--- a/board/amcc/yellowstone/Makefile
+++ b/board/amcc/yellowstone/Makefile
@@ -26,7 +26,6 @@ include $(TOPDIR)/config.mk
LIB = lib$(BOARD).a
OBJS = $(BOARD).o
-OBJS += flash.o
SOBJS = init.o
$(LIB): $(OBJS) $(SOBJS)
diff --git a/board/amcc/yellowstone/flash.c b/board/amcc/yellowstone/flash.c
deleted file mode 100644
index cd6a2e61e66..00000000000
--- a/board/amcc/yellowstone/flash.c
+++ /dev/null
@@ -1,571 +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 */
-
-unsigned long flash_addr_table[512][CFG_MAX_FLASH_BANKS] = {
- {0xfe000000}
-
-};
-
-/*-----------------------------------------------------------------------
- * 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 0xaaaa
-#define ADDR1 0x5554
-#define FLASH_WORD_SIZE unsigned short
-
-/*-----------------------------------------------------------------------
- */
-
-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;
- }
-
- /* FLASH protect Monitor */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE, 0xFFFFFFFF, &flash_info[0]);
-
- 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);
- *(FLASH_WORD_SIZE *) ((int)addr + ADDR0) = (FLASH_WORD_SIZE) 0x00AA;
- udelay(1000);
- *(FLASH_WORD_SIZE *) ((int)addr + ADDR1) = (FLASH_WORD_SIZE) 0x0055;
- udelay(1000);
- *(FLASH_WORD_SIZE *) ((int)addr + ADDR0) = (FLASH_WORD_SIZE) 0x0090;
- 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;
- 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);
-
- info->flash_id = 0;
- info->sector_count = CFG_MAX_FLASH_SECT;
- info->size = 0x02000000;
-
- /* set up sector start address table */
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = (int)base + (i * 0x00020000);
- info->protect[i] = 0;
- }
-
- *(FLASH_WORD_SIZE *) ((int)addr) = (FLASH_WORD_SIZE) 0x00F0; /* 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);
- *(FLASH_WORD_SIZE *) ((int)addr + ADDR0) =
- (FLASH_WORD_SIZE) 0x00AA;
- asm("sync");
- asm("isync");
- *(FLASH_WORD_SIZE *) ((int)addr + ADDR1) =
- (FLASH_WORD_SIZE) 0x0055;
- asm("sync");
- asm("isync");
- *(FLASH_WORD_SIZE *) ((int)addr + ADDR0) =
- (FLASH_WORD_SIZE) 0x0080;
- asm("sync");
- asm("isync");
- *(FLASH_WORD_SIZE *) ((int)addr + ADDR0) =
- (FLASH_WORD_SIZE) 0x00AA;
- asm("sync");
- asm("isync");
- *(FLASH_WORD_SIZE *) ((int)addr + ADDR1) =
- (FLASH_WORD_SIZE) 0x0055;
- asm("sync");
- asm("isync");
- addr2[0] = (FLASH_WORD_SIZE) 0x00300030; /* sector erase */
- asm("sync");
- asm("isync");
-
- 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;
- ulong status_value = 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) {
-
- /*print status if needed */
- if ((wp >= (status_value + 0x20000))
- && (status_value < 0xFFFE0000)) {
- status_value = wp;
- printf("writing to sector 0x%X\n", status_value);
- }
-
- 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 *addr2 = (vu_long *) (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();
-
- *(FLASH_WORD_SIZE *) ((int)addr2 + ADDR0) =
- (FLASH_WORD_SIZE) 0x00AA;
- asm("sync");
- asm("isync");
- *(FLASH_WORD_SIZE *) ((int)addr2 + ADDR1) =
- (FLASH_WORD_SIZE) 0x0055;
- asm("sync");
- asm("isync");
- *(FLASH_WORD_SIZE *) ((int)addr2 + ADDR0) =
- (FLASH_WORD_SIZE) 0x00A0;
- asm("sync");
- asm("isync");
-
- 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/amcc/yellowstone/init.S b/board/amcc/yellowstone/init.S
index 7ba43c7b061..425ad0868f8 100644
--- a/board/amcc/yellowstone/init.S
+++ b/board/amcc/yellowstone/init.S
@@ -86,14 +86,19 @@
tlbtab:
tlbtab_start
- /*
- 0xf0000000 must be first, before relocation SA_I must be off to use the
- dcache as stack. It is patched after relocation to enable SA_I
- */
- tlbentry( 0xf0000000, SZ_256M, 0xf0000000, 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_PCI_BASE, SZ_256M, 0xE0000000, 0, AC_R|AC_W|SA_G|SA_I )
- tlbentry( CFG_NVRAM_BASE_ADDR, SZ_16K, 0x80000000, 0, AC_R|AC_W|AC_X|SA_W|SA_I )
+
+ /*
+ * 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 )
/* PCI */
tlbentry( CFG_PCI_MEMBASE, SZ_256M, CFG_PCI_MEMBASE, 0, AC_R|AC_W|SA_G|SA_I )
diff --git a/board/amcc/yellowstone/u-boot.lds b/board/amcc/yellowstone/u-boot.lds
index 769eed3ef7d..a0ba44de889 100644
--- a/board/amcc/yellowstone/u-boot.lds
+++ b/board/amcc/yellowstone/u-boot.lds
@@ -74,7 +74,6 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -94,6 +93,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -126,11 +126,13 @@ SECTIONS
_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 = .;
diff --git a/board/amcc/yellowstone/yellowstone.c b/board/amcc/yellowstone/yellowstone.c
index a6b81e6008a..8ddf910c8e4 100644
--- a/board/amcc/yellowstone/yellowstone.c
+++ b/board/amcc/yellowstone/yellowstone.c
@@ -20,9 +20,12 @@
*/
#include <common.h>
+#include <ppc4xx.h>
#include <asm/processor.h>
#include <spd_sdram.h>
+extern flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
+
int board_early_init_f(void)
{
register uint reg;
@@ -35,7 +38,7 @@ int board_early_init_f(void)
mtdcr(ebccfgd, reg | 0x04000000); /* Set ATC */
mtebc(pb0ap, 0x03017300); /* FLASH/SRAM */
- mtebc(pb0cr, 0xfe0ba000); /* BAS=0xfe0 32MB r/w 16-bit */
+ mtebc(pb0cr, 0xfc0da000); /* BAS=0xfc0 64MB r/w 16-bit */
mtebc(pb1ap, 0x00000000);
mtebc(pb1cr, 0x00000000);
@@ -53,32 +56,13 @@ int board_early_init_f(void)
mtebc(pb5cr, 0x00000000);
/*--------------------------------------------------------------------
- * 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
*-------------------------------------------------------------------*/
/*CPLD cs */
- /*setup Address lines for flash sizes larger than 16Meg. */
- out32(GPIO0_OSRL, in32(GPIO0_OSRL) | 0x40010000);
- out32(GPIO0_TSRL, in32(GPIO0_TSRL) | 0x40010000);
- out32(GPIO0_ISR1L, in32(GPIO0_ISR1L) | 0x40000000);
+ /*setup Address lines for flash size 64Meg. */
+ out32(GPIO0_OSRL, in32(GPIO0_OSRL) | 0x50010000);
+ out32(GPIO0_TSRL, in32(GPIO0_TSRL) | 0x50010000);
+ out32(GPIO0_ISR1L, in32(GPIO0_ISR1L) | 0x50000000);
/*setup emac */
out32(GPIO0_TCR, in32(GPIO0_TCR) | 0xC080);
@@ -92,12 +76,38 @@ int board_early_init_f(void)
out32(GPIO1_OSRL, in32(GPIO1_OSRL) | 0x00080000);
out32(GPIO1_ISR2L, in32(GPIO1_ISR2L) | 0x00010000);
+ /* external interrupts IRQ0...3 */
+ out32(GPIO1_TCR, in32(GPIO1_TCR) & ~0x0f000000);
+ out32(GPIO1_TSRL, in32(GPIO1_TSRL) & ~0x00005500);
+ out32(GPIO1_ISR1L, in32(GPIO1_ISR1L) | 0x00005500);
+
+#if 0 /* test-only */
/*setup USB 2.0 */
out32(GPIO1_TCR, in32(GPIO1_TCR) | 0xc0000000);
out32(GPIO1_OSRL, in32(GPIO1_OSRL) | 0x50000000);
out32(GPIO0_TCR, in32(GPIO0_TCR) | 0xf);
out32(GPIO0_OSRH, in32(GPIO0_OSRH) | 0xaa);
out32(GPIO0_ISR2H, in32(GPIO0_ISR2H) | 0x00000500);
+#endif
+
+ /*--------------------------------------------------------------------
+ * 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 other serial configuration
@@ -113,28 +123,80 @@ int board_early_init_f(void)
/*enable ethernet */
*(unsigned char *)(CFG_BCSR_BASE | 0x08) = 0xf0;
+#if 0 /* test-only */
/*enable usb 1.1 fs device and remove usb 2.0 reset */
*(unsigned char *)(CFG_BCSR_BASE | 0x09) = 0x00;
+#endif
/*get rid of flash write protect */
- *(unsigned char *)(CFG_BCSR_BASE | 0x07) = 0x40;
+ *(unsigned char *)(CFG_BCSR_BASE | 0x07) = 0x00;
+
+ return 0;
+}
+
+int misc_init_r (void)
+{
+ DECLARE_GLOBAL_DATA_PTR;
+ 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[0]);
return 0;
}
int checkboard(void)
{
- sys_info_t sysinfo;
+ char *s = getenv("serial#");
- get_sys_info(&sysinfo);
+ printf("Board: Yellowstone - AMCC PPC440GR Evaluation Board");
+ if (s != NULL) {
+ puts(", serial# ");
+ puts(s);
+ }
+ putc('\n');
- printf("Board: AMCC YELLOWSTONE\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("\tPER: %lu MHz\n", sysinfo.freqEPB / 1000000);
- printf("\tPCI: %lu MHz\n", sysinfo.freqPCI / 1000000);
return (0);
}
@@ -145,9 +207,85 @@ int checkboard(void)
* PLB @ 133 MHz
*
************************************************************************/
+#define NUM_TRIES 64
+#define NUM_READS 10
+
+void sdram_tr1_set(int ram_address, int* tr1_value)
+{
+ int i;
+ int j, k;
+ volatile unsigned int* ram_pointer = (unsigned int*)ram_address;
+ int first_good = -1, last_bad = 0x1ff;
+
+ unsigned long test[NUM_TRIES] = {
+ 0x00000000, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x00000000,
+ 0xAAAAAAAA, 0xAAAAAAAA, 0x55555555, 0x55555555,
+ 0xAAAAAAAA, 0xAAAAAAAA, 0x55555555, 0x55555555,
+ 0x55555555, 0x55555555, 0xAAAAAAAA, 0xAAAAAAAA,
+ 0x55555555, 0x55555555, 0xAAAAAAAA, 0xAAAAAAAA,
+ 0xA5A5A5A5, 0xA5A5A5A5, 0x5A5A5A5A, 0x5A5A5A5A,
+ 0xA5A5A5A5, 0xA5A5A5A5, 0x5A5A5A5A, 0x5A5A5A5A,
+ 0x5A5A5A5A, 0x5A5A5A5A, 0xA5A5A5A5, 0xA5A5A5A5,
+ 0x5A5A5A5A, 0x5A5A5A5A, 0xA5A5A5A5, 0xA5A5A5A5,
+ 0xAA55AA55, 0xAA55AA55, 0x55AA55AA, 0x55AA55AA,
+ 0xAA55AA55, 0xAA55AA55, 0x55AA55AA, 0x55AA55AA,
+ 0x55AA55AA, 0x55AA55AA, 0xAA55AA55, 0xAA55AA55,
+ 0x55AA55AA, 0x55AA55AA, 0xAA55AA55, 0xAA55AA55 };
+
+ /* go through all possible SDRAM0_TR1[RDCT] values */
+ for (i=0; i<=0x1ff; i++) {
+ /* set the current value for TR1 */
+ mtsdram(mem_tr1, (0x80800800 | i));
+
+ /* write values */
+ for (j=0; j<NUM_TRIES; j++) {
+ ram_pointer[j] = test[j];
+
+ /* clear any cache at ram location */
+ __asm__("dcbf 0,%0": :"r" (&ram_pointer[j]));
+ }
+
+ /* read values back */
+ for (j=0; j<NUM_TRIES; j++) {
+ for (k=0; k<NUM_READS; k++) {
+ /* clear any cache at ram location */
+ __asm__("dcbf 0,%0": :"r" (&ram_pointer[j]));
+
+ if (ram_pointer[j] != test[j])
+ break;
+ }
+
+ /* read error */
+ if (k != NUM_READS) {
+ break;
+ }
+ }
+
+ /* we have a SDRAM0_TR1[RDCT] that is part of the window */
+ if (j == NUM_TRIES) {
+ if (first_good == -1)
+ first_good = i; /* found beginning of window */
+ } else { /* bad read */
+ /* if we have not had a good read then don't care */
+ if(first_good != -1) {
+ /* first failure after a good read */
+ last_bad = i-1;
+ break;
+ }
+ }
+ }
+
+ /* return the current value for TR1 */
+ *tr1_value = (first_good + last_bad) / 2;
+}
+
void sdram_init(void)
{
register uint reg;
+ int tr1_bank1, tr1_bank2;
/*--------------------------------------------------------------------
* Setup some default
@@ -159,7 +297,7 @@ void sdram_init(void)
mtsdram(mem_wddctr, 0x40000000); /* ?? */
/*clear this first, if the DDR is enabled by a debugger
- then you can not make changes. */
+ then you can not make changes. */
mtsdram(mem_cfg0, 0x00000000); /* Disable EEC */
/*--------------------------------------------------------------------
@@ -170,8 +308,8 @@ void sdram_init(void)
*/
mtsdram(mem_b0cr, 0x000a4001); /* SDBA=0x000 128MB, Mode 3, enabled */
mtsdram(mem_b1cr, 0x080a4001); /* SDBA=0x080 128MB, Mode 3, enabled */
+
mtsdram(mem_tr0, 0x410a4012); /* ?? */
- mtsdram(mem_tr1, 0x8080080b); /* ?? */
mtsdram(mem_rtr, 0x04080000); /* ?? */
mtsdram(mem_cfg1, 0x00000000); /* Self-refresh exit, disable PM */
mtsdram(mem_cfg0, 0x34000000); /* Disable EEC */
@@ -187,6 +325,10 @@ void sdram_init(void)
if (reg & 0x80000000)
break;
}
+
+ sdram_tr1_set(0x00000000, &tr1_bank1);
+ sdram_tr1_set(0x08000000, &tr1_bank2);
+ mtsdram(mem_tr1, (((tr1_bank1+tr1_bank2)/2) | 0x80800800) );
}
/*************************************************************************
@@ -252,41 +394,29 @@ int testdram(void)
#if defined(CONFIG_PCI) && defined(CFG_PCI_PRE_INIT)
int pci_pre_init(struct pci_controller *hose)
{
- unsigned long strap;
unsigned long addr;
- /*--------------------------------------------------------------------------+
- * Bamboo 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[PAE] not set.\n");
- printf("PCI: Configuration aborted.\n");
- return 0;
- }
-
- /*-------------------------------------------------------------------------+
- | Set priority for all PLB3 devices to 0.
- | Set PLB3 arbiter to fair mode.
- +-------------------------------------------------------------------------*/
+ /*-------------------------------------------------------------------------+
+ | 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.
- +-------------------------------------------------------------------------*/
+ /*-------------------------------------------------------------------------+
+ | 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 */
+ /*-------------------------------------------------------------------------+
+ | 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;
@@ -318,13 +448,13 @@ 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.
- +--------------------------------------------------------------------------*/
+ /*--------------------------------------------------------------------------+
+ | 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 */
@@ -374,11 +504,11 @@ 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).
- +--------------------------------------------------------------------------*/
+ /*--------------------------------------------------------------------------+
+ | 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 |
@@ -418,5 +548,6 @@ int is_pci_host(struct pci_controller *hose)
#if defined(CONFIG_HW_WATCHDOG)
void hw_watchdog_reset(void)
{
+
}
#endif
diff --git a/board/amcc/yosemite/u-boot.lds b/board/amcc/yosemite/u-boot.lds
index 62dc988d934..a9a7b0af6ab 100644
--- a/board/amcc/yosemite/u-boot.lds
+++ b/board/amcc/yosemite/u-boot.lds
@@ -74,7 +74,6 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -94,6 +93,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -126,11 +126,13 @@ SECTIONS
_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 = .;
diff --git a/board/amcc/yosemite/yosemite.c b/board/amcc/yosemite/yosemite.c
index b50e99ab8da..509d8e4cce4 100644
--- a/board/amcc/yosemite/yosemite.c
+++ b/board/amcc/yosemite/yosemite.c
@@ -56,32 +56,13 @@ int board_early_init_f(void)
mtebc(pb5cr, 0x00000000);
/*--------------------------------------------------------------------
- * 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
*-------------------------------------------------------------------*/
/*CPLD cs */
- /*setup Address lines for flash sizes larger than 16Meg. */
- out32(GPIO0_OSRL, in32(GPIO0_OSRL) | 0x40010000);
- out32(GPIO0_TSRL, in32(GPIO0_TSRL) | 0x40010000);
- out32(GPIO0_ISR1L, in32(GPIO0_ISR1L) | 0x40000000);
+ /*setup Address lines for flash size 64Meg. */
+ out32(GPIO0_OSRL, in32(GPIO0_OSRL) | 0x50010000);
+ out32(GPIO0_TSRL, in32(GPIO0_TSRL) | 0x50010000);
+ out32(GPIO0_ISR1L, in32(GPIO0_ISR1L) | 0x50000000);
/*setup emac */
out32(GPIO0_TCR, in32(GPIO0_TCR) | 0xC080);
@@ -95,6 +76,11 @@ int board_early_init_f(void)
out32(GPIO1_OSRL, in32(GPIO1_OSRL) | 0x00080000);
out32(GPIO1_ISR2L, in32(GPIO1_ISR2L) | 0x00010000);
+ /* external interrupts IRQ0...3 */
+ out32(GPIO1_TCR, in32(GPIO1_TCR) & ~0x0f000000);
+ out32(GPIO1_TSRL, in32(GPIO1_TSRL) & ~0x00005500);
+ out32(GPIO1_ISR1L, in32(GPIO1_ISR1L) | 0x00005500);
+
/*setup USB 2.0 */
out32(GPIO1_TCR, in32(GPIO1_TCR) | 0xc0000000);
out32(GPIO1_OSRL, in32(GPIO1_OSRL) | 0x50000000);
@@ -103,6 +89,25 @@ int board_early_init_f(void)
out32(GPIO0_ISR2H, in32(GPIO0_ISR2H) | 0x00000500);
/*--------------------------------------------------------------------
+ * 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 other serial configuration
*-------------------------------------------------------------------*/
mfsdr(sdr_pci0, reg);
@@ -120,7 +125,7 @@ int board_early_init_f(void)
*(unsigned char *)(CFG_BCSR_BASE | 0x09) = 0x00;
/*get rid of flash write protect */
- *(unsigned char *)(CFG_BCSR_BASE | 0x07) = 0x40;
+ *(unsigned char *)(CFG_BCSR_BASE | 0x07) = 0x00;
return 0;
}
@@ -164,6 +169,10 @@ int misc_init_r (void)
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,
@@ -175,18 +184,14 @@ int misc_init_r (void)
int checkboard(void)
{
- sys_info_t sysinfo;
-
- get_sys_info(&sysinfo);
-
- printf("Board: AMCC YOSEMITE\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("\tPER: %lu MHz\n", sysinfo.freqEPB / 1000000);
- printf("\tPCI: %lu MHz\n", sysinfo.freqPCI / 1000000);
+ char *s = getenv("serial#");
+ printf("Board: Yosemite - AMCC PPC440EP Evaluation Board");
+ if (s != NULL) {
+ puts(", serial# ");
+ puts(s);
+ }
+ putc('\n');
return (0);
}
@@ -198,9 +203,85 @@ int checkboard(void)
* PLB @ 133 MHz
*
************************************************************************/
+#define NUM_TRIES 64
+#define NUM_READS 10
+
+void sdram_tr1_set(int ram_address, int* tr1_value)
+{
+ int i;
+ int j, k;
+ volatile unsigned int* ram_pointer = (unsigned int*)ram_address;
+ int first_good = -1, last_bad = 0x1ff;
+
+ unsigned long test[NUM_TRIES] = {
+ 0x00000000, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0x00000000, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x00000000,
+ 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x00000000,
+ 0xAAAAAAAA, 0xAAAAAAAA, 0x55555555, 0x55555555,
+ 0xAAAAAAAA, 0xAAAAAAAA, 0x55555555, 0x55555555,
+ 0x55555555, 0x55555555, 0xAAAAAAAA, 0xAAAAAAAA,
+ 0x55555555, 0x55555555, 0xAAAAAAAA, 0xAAAAAAAA,
+ 0xA5A5A5A5, 0xA5A5A5A5, 0x5A5A5A5A, 0x5A5A5A5A,
+ 0xA5A5A5A5, 0xA5A5A5A5, 0x5A5A5A5A, 0x5A5A5A5A,
+ 0x5A5A5A5A, 0x5A5A5A5A, 0xA5A5A5A5, 0xA5A5A5A5,
+ 0x5A5A5A5A, 0x5A5A5A5A, 0xA5A5A5A5, 0xA5A5A5A5,
+ 0xAA55AA55, 0xAA55AA55, 0x55AA55AA, 0x55AA55AA,
+ 0xAA55AA55, 0xAA55AA55, 0x55AA55AA, 0x55AA55AA,
+ 0x55AA55AA, 0x55AA55AA, 0xAA55AA55, 0xAA55AA55,
+ 0x55AA55AA, 0x55AA55AA, 0xAA55AA55, 0xAA55AA55 };
+
+ /* go through all possible SDRAM0_TR1[RDCT] values */
+ for (i=0; i<=0x1ff; i++) {
+ /* set the current value for TR1 */
+ mtsdram(mem_tr1, (0x80800800 | i));
+
+ /* write values */
+ for (j=0; j<NUM_TRIES; j++) {
+ ram_pointer[j] = test[j];
+
+ /* clear any cache at ram location */
+ __asm__("dcbf 0,%0": :"r" (&ram_pointer[j]));
+ }
+
+ /* read values back */
+ for (j=0; j<NUM_TRIES; j++) {
+ for (k=0; k<NUM_READS; k++) {
+ /* clear any cache at ram location */
+ __asm__("dcbf 0,%0": :"r" (&ram_pointer[j]));
+
+ if (ram_pointer[j] != test[j])
+ break;
+ }
+
+ /* read error */
+ if (k != NUM_READS) {
+ break;
+ }
+ }
+
+ /* we have a SDRAM0_TR1[RDCT] that is part of the window */
+ if (j == NUM_TRIES) {
+ if (first_good == -1)
+ first_good = i; /* found beginning of window */
+ } else { /* bad read */
+ /* if we have not had a good read then don't care */
+ if(first_good != -1) {
+ /* first failure after a good read */
+ last_bad = i-1;
+ break;
+ }
+ }
+ }
+
+ /* return the current value for TR1 */
+ *tr1_value = (first_good + last_bad) / 2;
+}
+
void sdram_init(void)
{
register uint reg;
+ int tr1_bank1, tr1_bank2;
/*--------------------------------------------------------------------
* Setup some default
@@ -212,7 +293,7 @@ void sdram_init(void)
mtsdram(mem_wddctr, 0x40000000); /* ?? */
/*clear this first, if the DDR is enabled by a debugger
- then you can not make changes. */
+ then you can not make changes. */
mtsdram(mem_cfg0, 0x00000000); /* Disable EEC */
/*--------------------------------------------------------------------
@@ -225,7 +306,6 @@ void sdram_init(void)
mtsdram(mem_b1cr, 0x080a4001); /* SDBA=0x080 128MB, Mode 3, enabled */
mtsdram(mem_tr0, 0x410a4012); /* ?? */
- mtsdram(mem_tr1, 0x8080080b); /* ?? */
mtsdram(mem_rtr, 0x04080000); /* ?? */
mtsdram(mem_cfg1, 0x00000000); /* Self-refresh exit, disable PM */
mtsdram(mem_cfg0, 0x34000000); /* Disable EEC */
@@ -241,6 +321,10 @@ void sdram_init(void)
if (reg & 0x80000000)
break;
}
+
+ sdram_tr1_set(0x00000000, &tr1_bank1);
+ sdram_tr1_set(0x08000000, &tr1_bank2);
+ mtsdram(mem_tr1, (((tr1_bank1+tr1_bank2)/2) | 0x80800800) );
}
/*************************************************************************
@@ -306,20 +390,8 @@ int testdram(void)
#if defined(CONFIG_PCI) && defined(CFG_PCI_PRE_INIT)
int pci_pre_init(struct pci_controller *hose)
{
- unsigned long strap;
unsigned long addr;
- /*--------------------------------------------------------------------------+
- * Bamboo 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[PAE] not set.\n");
- printf("PCI: Configuration aborted.\n");
- return 0;
- }
-
/*-------------------------------------------------------------------------+
| Set priority for all PLB3 devices to 0.
| Set PLB3 arbiter to fair mode.
diff --git a/board/amirix/ap1000/Makefile b/board/amirix/ap1000/Makefile
new file mode 100644
index 00000000000..4e1ef217cad
--- /dev/null
+++ b/board/amirix/ap1000/Makefile
@@ -0,0 +1,47 @@
+#
+# (C) Copyright 2000
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+
+include $(TOPDIR)/config.mk
+
+LIB = lib$(BOARD).a
+
+OBJS = $(BOARD).o flash.o serial.o pci.o powerspan.o
+SOBJS = init.o
+
+$(LIB): $(OBJS) $(SOBJS)
+ $(AR) crv $@ $^
+
+clean:
+ rm -f $(SOBJS) $(OBJS)
+
+distclean: clean
+ rm -f $(LIB) core *.bak .depend
+
+#########################################################################
+
+.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
+ $(CC) -M $(CFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
+
+sinclude .depend
+
+#########################################################################
diff --git a/board/amirix/ap1000/ap1000.c b/board/amirix/ap1000/ap1000.c
new file mode 100644
index 00000000000..7d11b29b59a
--- /dev/null
+++ b/board/amirix/ap1000/ap1000.c
@@ -0,0 +1,699 @@
+/*
+ * 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
new file mode 100644
index 00000000000..118c4d1b9a6
--- /dev/null
+++ b/board/amirix/ap1000/ap1000.h
@@ -0,0 +1,173 @@
+/*
+ * 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
new file mode 100644
index 00000000000..c09783a6aea
--- /dev/null
+++ b/board/amirix/ap1000/config.mk
@@ -0,0 +1,27 @@
+#
+# (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
new file mode 100644
index 00000000000..1a3b25218c5
--- /dev/null
+++ b/board/amirix/ap1000/flash.c
@@ -0,0 +1,903 @@
+/**
+ * @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
new file mode 100644
index 00000000000..3aaa5c2f1a5
--- /dev/null
+++ b/board/amirix/ap1000/init.S
@@ -0,0 +1,34 @@
+/*
+ * 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
new file mode 100644
index 00000000000..a6436ac5bb3
--- /dev/null
+++ b/board/amirix/ap1000/pci.c
@@ -0,0 +1,318 @@
+/*
+ * (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
new file mode 100644
index 00000000000..f0481553f07
--- /dev/null
+++ b/board/amirix/ap1000/powerspan.c
@@ -0,0 +1,750 @@
+/**
+ * @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
new file mode 100644
index 00000000000..4e9a8c1bd86
--- /dev/null
+++ b/board/amirix/ap1000/powerspan.h
@@ -0,0 +1,170 @@
+/**
+ * @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
new file mode 100644
index 00000000000..39c41579259
--- /dev/null
+++ b/board/amirix/ap1000/serial.c
@@ -0,0 +1,117 @@
+/*
+ * (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>
+
+#if 0
+#include "serial.h"
+#endif
+
+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)
+{
+ DECLARE_GLOBAL_DATA_PTR;
+
+ 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)
+{
+ DECLARE_GLOBAL_DATA_PTR;
+
+ 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
new file mode 100644
index 00000000000..109e7fe3e1f
--- /dev/null
+++ b/board/amirix/ap1000/u-boot.lds
@@ -0,0 +1,145 @@
+/*
+ * (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
new file mode 100644
index 00000000000..52ea7f28d44
--- /dev/null
+++ b/board/armadillo/Makefile
@@ -0,0 +1,48 @@
+#
+# (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 = lib$(BOARD).a
+
+OBJS := armadillo.o flash.o
+SOBJS := lowlevel_init.o
+
+$(LIB): $(OBJS) $(SOBJS)
+ $(AR) crv $@ $(OBJS) $(SOBJS)
+
+clean:
+ rm -f $(SOBJS) $(OBJS)
+
+distclean: clean
+ rm -f $(LIB) core *.bak .depend
+
+#########################################################################
+
+.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
+ $(CC) -M $(CPPFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
+
+-include .depend
+
+#########################################################################
diff --git a/board/armadillo/armadillo.c b/board/armadillo/armadillo.c
new file mode 100644
index 00000000000..de04c663854
--- /dev/null
+++ b/board/armadillo/armadillo.c
@@ -0,0 +1,62 @@
+/*
+ * (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>
+
+/* ------------------------------------------------------------------------- */
+
+
+/*
+ * Miscelaneous platform dependent initialisations
+ */
+
+int board_init (void)
+{
+ DECLARE_GLOBAL_DATA_PTR;
+
+ /* 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)
+{
+ 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);
+}
diff --git a/board/armadillo/config.mk b/board/armadillo/config.mk
new file mode 100644
index 00000000000..23c432f165e
--- /dev/null
+++ b/board/armadillo/config.mk
@@ -0,0 +1,29 @@
+#
+# (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
new file mode 100644
index 00000000000..037a6430dab
--- /dev/null
+++ b/board/armadillo/flash.c
@@ -0,0 +1,338 @@
+/*
+ * (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
new file mode 100644
index 00000000000..6cf642611cd
--- /dev/null
+++ b/board/armadillo/lowlevel_init.S
@@ -0,0 +1,66 @@
+/*
+ * 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
new file mode 100644
index 00000000000..64d946c4392
--- /dev/null
+++ b/board/armadillo/u-boot.lds
@@ -0,0 +1,55 @@
+/*
+ * (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/assabet/u-boot.lds b/board/assabet/u-boot.lds
index 92ad9f8e569..7a3a9b8fc86 100644
--- a/board/assabet/u-boot.lds
+++ b/board/assabet/u-boot.lds
@@ -46,6 +46,7 @@ SECTIONS
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/at91rm9200dk/Makefile b/board/at91rm9200dk/Makefile
index 2f70ec6f368..ec77da9de37 100644
--- a/board/at91rm9200dk/Makefile
+++ b/board/at91rm9200dk/Makefile
@@ -25,7 +25,7 @@ include $(TOPDIR)/config.mk
LIB = lib$(BOARD).a
-OBJS := at91rm9200dk.o at45.o dm9161.o flash.o
+OBJS := at91rm9200dk.o at45.o flash.o
$(LIB): $(OBJS) $(SOBJS)
$(AR) crv $@ $(OBJS) $(SOBJS)
diff --git a/board/at91rm9200dk/at91rm9200dk.c b/board/at91rm9200dk/at91rm9200dk.c
index 2cb60b0fa38..90167768539 100644
--- a/board/at91rm9200dk/at91rm9200dk.c
+++ b/board/at91rm9200dk/at91rm9200dk.c
@@ -24,6 +24,8 @@
#include <common.h>
#include <asm/arch/AT91RM9200.h>
+#include <at91rm9200_net.h>
+#include <dm9161.h>
/* ------------------------------------------------------------------------- */
/*
@@ -39,7 +41,7 @@ int board_init (void)
/* Correct IRDA resistor problem */
/* Set PA23_TXD in Output */
- (AT91PS_PIO) AT91C_BASE_PIOA->PIO_OER = AT91C_PA23_TXD2;
+ ((AT91PS_PIO) AT91C_BASE_PIOA)->PIO_OER = AT91C_PA23_TXD2;
/* memory and cpu-speed are setup before relocation */
/* so we do _nothing_ here */
@@ -61,6 +63,30 @@ int dram_init (void)
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
diff --git a/board/at91rm9200dk/dm9161.c b/board/at91rm9200dk/dm9161.c
deleted file mode 100644
index 73537c037d1..00000000000
--- a/board/at91rm9200dk/dm9161.c
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * (C) Copyright 2003
- * Author : Hamid Ikdoumi (Atmel)
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#include <at91rm9200_net.h>
-#include <net.h>
-#include <dm9161.h>
-
-#ifdef CONFIG_DRIVER_ETHER
-
-#if (CONFIG_COMMANDS & CFG_CMD_NET)
-
-/*
- * Name:
- * dm9161_IsPhyConnected
- * Description:
- * Reads the 2 PHY ID registers
- * Arguments:
- * p_mac - pointer to AT91S_EMAC struct
- * Return value:
- * TRUE - if id read successfully
- * FALSE- if error
- */
-static unsigned int dm9161_IsPhyConnected (AT91PS_EMAC p_mac)
-{
- unsigned short Id1, Id2;
-
- at91rm9200_EmacEnableMDIO (p_mac);
- at91rm9200_EmacReadPhy (p_mac, DM9161_PHYID1, &Id1);
- at91rm9200_EmacReadPhy (p_mac, DM9161_PHYID2, &Id2);
- at91rm9200_EmacDisableMDIO (p_mac);
-
- if ((Id1 == (DM9161_PHYID1_OUI >> 6)) &&
- ((Id2 >> 10) == (DM9161_PHYID1_OUI & DM9161_LSB_MASK)))
- return TRUE;
-
- return FALSE;
-}
-
-/*
- * Name:
- * dm9161_GetLinkSpeed
- * Description:
- * Link parallel detection status of MAC is checked and set in the
- * MAC configuration registers
- * Arguments:
- * p_mac - pointer to MAC
- * Return value:
- * TRUE - if link status set succesfully
- * FALSE - if link status not set
- */
-static UCHAR dm9161_GetLinkSpeed (AT91PS_EMAC p_mac)
-{
- unsigned short stat1, stat2;
-
- if (!at91rm9200_EmacReadPhy (p_mac, DM9161_BMSR, &stat1))
- return FALSE;
-
- if (!(stat1 & DM9161_LINK_STATUS)) /* link status up? */
- return FALSE;
-
- if (!at91rm9200_EmacReadPhy (p_mac, DM9161_DSCSR, &stat2))
- return FALSE;
-
- if ((stat1 & DM9161_100BASE_TX_FD) && (stat2 & DM9161_100FDX)) {
- /*set Emac for 100BaseTX and Full Duplex */
- p_mac->EMAC_CFG |= AT91C_EMAC_SPD | AT91C_EMAC_FD;
- return TRUE;
- }
-
- if ((stat1 & DM9161_10BASE_T_FD) && (stat2 & DM9161_10FDX)) {
- /*set MII for 10BaseT and Full Duplex */
- p_mac->EMAC_CFG = (p_mac->EMAC_CFG &
- ~(AT91C_EMAC_SPD | AT91C_EMAC_FD))
- | AT91C_EMAC_FD;
- return TRUE;
- }
-
- if ((stat1 & DM9161_100BASE_T4_HD) && (stat2 & DM9161_100HDX)) {
- /*set MII for 100BaseTX and Half Duplex */
- p_mac->EMAC_CFG = (p_mac->EMAC_CFG &
- ~(AT91C_EMAC_SPD | AT91C_EMAC_FD))
- | AT91C_EMAC_SPD;
- return TRUE;
- }
-
- if ((stat1 & DM9161_10BASE_T_HD) && (stat2 & DM9161_10HDX)) {
- /*set MII for 10BaseT and Half Duplex */
- p_mac->EMAC_CFG &= ~(AT91C_EMAC_SPD | AT91C_EMAC_FD);
- return TRUE;
- }
- return FALSE;
-}
-
-
-/*
- * Name:
- * dm9161_InitPhy
- * Description:
- * MAC starts checking its link by using parallel detection and
- * Autonegotiation and the same is set in the MAC configuration registers
- * Arguments:
- * p_mac - pointer to struct AT91S_EMAC
- * Return value:
- * TRUE - if link status set succesfully
- * FALSE - if link status not set
- */
-static UCHAR dm9161_InitPhy (AT91PS_EMAC p_mac)
-{
- UCHAR ret = TRUE;
- unsigned short IntValue;
-
- at91rm9200_EmacEnableMDIO (p_mac);
-
- if (!dm9161_GetLinkSpeed (p_mac)) {
- /* Try another time */
- ret = dm9161_GetLinkSpeed (p_mac);
- }
-
- /* Disable PHY Interrupts */
- at91rm9200_EmacReadPhy (p_mac, DM9161_MDINTR, &IntValue);
- /* clear FDX, SPD, Link, INTR masks */
- IntValue &= ~(DM9161_FDX_MASK | DM9161_SPD_MASK |
- DM9161_LINK_MASK | DM9161_INTR_MASK);
- at91rm9200_EmacWritePhy (p_mac, DM9161_MDINTR, &IntValue);
- at91rm9200_EmacDisableMDIO (p_mac);
-
- return (ret);
-}
-
-
-/*
- * Name:
- * dm9161_AutoNegotiate
- * Description:
- * MAC Autonegotiates with the partner status of same is set in the
- * MAC configuration registers
- * Arguments:
- * dev - pointer to struct net_device
- * Return value:
- * TRUE - if link status set successfully
- * FALSE - if link status not set
- */
-static UCHAR dm9161_AutoNegotiate (AT91PS_EMAC p_mac, int *status)
-{
- unsigned short value;
- unsigned short PhyAnar;
- unsigned short PhyAnalpar;
-
- /* Set dm9161 control register */
- if (!at91rm9200_EmacReadPhy (p_mac, DM9161_BMCR, &value))
- return FALSE;
- value &= ~DM9161_AUTONEG; /* remove autonegotiation enable */
- value |= DM9161_ISOLATE; /* Electrically isolate PHY */
- if (!at91rm9200_EmacWritePhy (p_mac, DM9161_BMCR, &value))
- return FALSE;
-
- /* Set the Auto_negotiation Advertisement Register */
- /* MII advertising for Next page, 100BaseTxFD and HD, 10BaseTFD and HD, IEEE 802.3 */
- PhyAnar = DM9161_NP | DM9161_TX_FDX | DM9161_TX_HDX |
- DM9161_10_FDX | DM9161_10_HDX | DM9161_AN_IEEE_802_3;
- if (!at91rm9200_EmacWritePhy (p_mac, DM9161_ANAR, &PhyAnar))
- return FALSE;
-
- /* Read the Control Register */
- if (!at91rm9200_EmacReadPhy (p_mac, DM9161_BMCR, &value))
- return FALSE;
-
- value |= DM9161_SPEED_SELECT | DM9161_AUTONEG | DM9161_DUPLEX_MODE;
- if (!at91rm9200_EmacWritePhy (p_mac, DM9161_BMCR, &value))
- return FALSE;
- /* Restart Auto_negotiation */
- value |= DM9161_RESTART_AUTONEG;
- if (!at91rm9200_EmacWritePhy (p_mac, DM9161_BMCR, &value))
- return FALSE;
-
- /*check AutoNegotiate complete */
- udelay (10000);
- at91rm9200_EmacReadPhy (p_mac, DM9161_BMSR, &value);
- if (!(value & DM9161_AUTONEG_COMP))
- return FALSE;
-
- /* Get the AutoNeg Link partner base page */
- if (!at91rm9200_EmacReadPhy (p_mac, DM9161_ANLPAR, &PhyAnalpar))
- return FALSE;
-
- if ((PhyAnar & DM9161_TX_FDX) && (PhyAnalpar & DM9161_TX_FDX)) {
- /*set MII for 100BaseTX and Full Duplex */
- p_mac->EMAC_CFG |= AT91C_EMAC_SPD | AT91C_EMAC_FD;
- return TRUE;
- }
-
- if ((PhyAnar & DM9161_10_FDX) && (PhyAnalpar & DM9161_10_FDX)) {
- /*set MII for 10BaseT and Full Duplex */
- p_mac->EMAC_CFG = (p_mac->EMAC_CFG &
- ~(AT91C_EMAC_SPD | AT91C_EMAC_FD))
- | AT91C_EMAC_FD;
- return TRUE;
- }
- return FALSE;
-}
-
-
-/*
- * Name:
- * at91rm92000_GetPhyInterface
- * Description:
- * Initialise the interface functions to the PHY
- * Arguments:
- * None
- * Return value:
- * None
- */
-void at91rm92000_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/at91rm9200dk/u-boot.lds b/board/at91rm9200dk/u-boot.lds
index 76df6b2af1d..f4fbf969c3c 100644
--- a/board/at91rm9200dk/u-boot.lds
+++ b/board/at91rm9200dk/u-boot.lds
@@ -45,6 +45,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/atc/flash.c b/board/atc/flash.c
index 26b7c80d352..2ab60e866b2 100644
--- a/board/atc/flash.c
+++ b/board/atc/flash.c
@@ -181,7 +181,7 @@ void flash_print_info (flash_info_t *info)
int i;
uchar *boottype;
uchar *bootletter;
- uchar *fmt;
+ char *fmt;
uchar botbootletter[] = "B";
uchar topbootletter[] = "T";
uchar botboottype[] = "bottom boot sector";
diff --git a/board/atc/u-boot.lds b/board/atc/u-boot.lds
index 7ac29a0fb24..eee83d09937 100644
--- a/board/atc/u-boot.lds
+++ b/board/atc/u-boot.lds
@@ -62,6 +62,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -94,10 +95,12 @@ SECTIONS
_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 = .;
diff --git a/board/barco/Makefile b/board/barco/Makefile
new file mode 100644
index 00000000000..d6bbf2f297e
--- /dev/null
+++ b/board/barco/Makefile
@@ -0,0 +1,40 @@
+#
+# (C) Copyright 2000
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+
+include $(TOPDIR)/config.mk
+
+LIB = lib$(BOARD).a
+
+OBJS = $(BOARD).o flash.o
+
+$(LIB): .depend $(OBJS)
+ $(AR) crv $@ $(OBJS)
+
+#########################################################################
+
+.depend: Makefile $(OBJS:.o=.c)
+ $(CC) -M $(CFLAGS) $(OBJS:.o=.c) > $@
+
+sinclude .depend
+
+#########################################################################
diff --git a/board/barco/README b/board/barco/README
new file mode 100644
index 00000000000..d255a3d11a5
--- /dev/null
+++ b/board/barco/README
@@ -0,0 +1,11 @@
+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
new file mode 100644
index 00000000000..becbd0abda6
--- /dev/null
+++ b/board/barco/barco.c
@@ -0,0 +1,363 @@
+/********************************************************************
+ *
+ * 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
new file mode 100644
index 00000000000..088f61e74e6
--- /dev/null
+++ b/board/barco/barco_svc.h
@@ -0,0 +1,68 @@
+/********************************************************************
+ *
+ * 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/tqm8540/config.mk b/board/barco/config.mk
index b0ba25fae6f..f950c07b015 100644
--- a/board/tqm8540/config.mk
+++ b/board/barco/config.mk
@@ -1,6 +1,6 @@
-# Copyright 2004 Freescale Semiconductor.
-# Modified by Xianghua Xiao, X.Xiao@motorola.com
-# (C) Copyright 2002,Motorola Inc.
+#
+# (C) Copyright 2000, 2001
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
#
# See file CREDITS for list of people who contributed to this
# project.
@@ -22,8 +22,9 @@
#
#
-# tqm8540 board
-# default CCARBAR is at 0xff700000
-# assume U-Boot is less than 256k
+# Barco Hydra/SCN boards
#
-TEXT_BASE = 0xfffc0000
+
+TEXT_BASE = 0xFFF00000
+
+PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
diff --git a/board/barco/early_init.S b/board/barco/early_init.S
new file mode 100644
index 00000000000..07dafb716f9
--- /dev/null
+++ b/board/barco/early_init.S
@@ -0,0 +1,152 @@
+/*
+ * (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
new file mode 100644
index 00000000000..6cb19b7b076
--- /dev/null
+++ b/board/barco/flash.c
@@ -0,0 +1,611 @@
+/********************************************************************
+ *
+ * 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
new file mode 100644
index 00000000000..46860e840e4
--- /dev/null
+++ b/board/barco/speed.h
@@ -0,0 +1,78 @@
+/********************************************************************
+ *
+ * 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
new file mode 100644
index 00000000000..7bf8531ab31
--- /dev/null
+++ b/board/barco/u-boot.lds
@@ -0,0 +1,131 @@
+/*
+ * (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/u-boot.lds b/board/bmw/u-boot.lds
index 98584dcf0a5..eaee3fdefc6 100644
--- a/board/bmw/u-boot.lds
+++ b/board/bmw/u-boot.lds
@@ -71,6 +71,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -103,11 +104,13 @@ SECTIONS
_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 = .;
diff --git a/board/c2mon/c2mon.c b/board/c2mon/c2mon.c
index 873ff8ccee2..ca8eb0cb02b 100644
--- a/board/c2mon/c2mon.c
+++ b/board/c2mon/c2mon.c
@@ -91,7 +91,7 @@ const uint sdram_table[] =
int checkboard (void)
{
- unsigned char *s = getenv ("serial#");
+ unsigned char *s = (unsigned char *)getenv ("serial#");
puts ("Board: TTTech C2MON ");
@@ -155,7 +155,7 @@ long int initdram (int board_type)
* try 8 column mode
*/
size8 = dram_size (CFG_MAMR_8COL,
- (ulong *)SDRAM_BASE2_PRELIM,
+ SDRAM_BASE2_PRELIM,
SDRAM_MAX_SIZE);
udelay (1000);
@@ -164,7 +164,7 @@ long int initdram (int board_type)
* try 9 column mode
*/
size9 = dram_size (CFG_MAMR_9COL,
- (ulong *) SDRAM_BASE2_PRELIM,
+ SDRAM_BASE2_PRELIM,
SDRAM_MAX_SIZE);
if (size8 < size9) { /* leave configuration at 9 columns */
diff --git a/board/c2mon/u-boot.lds b/board/c2mon/u-boot.lds
index 86e587ff2fe..cdf550f67b5 100644
--- a/board/c2mon/u-boot.lds
+++ b/board/c2mon/u-boot.lds
@@ -77,6 +77,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -109,11 +110,13 @@ SECTIONS
_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 = .;
diff --git a/board/c2mon/u-boot.lds.debug b/board/c2mon/u-boot.lds.debug
index f6f7cf4fa53..3165d563451 100644
--- a/board/c2mon/u-boot.lds.debug
+++ b/board/c2mon/u-boot.lds.debug
@@ -74,6 +74,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/canmb/u-boot.lds b/board/canmb/u-boot.lds
index 7c52b0499fd..88dc118e8fd 100644
--- a/board/canmb/u-boot.lds
+++ b/board/canmb/u-boot.lds
@@ -61,6 +61,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -93,11 +94,13 @@ SECTIONS
_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 = .;
diff --git a/board/cds/mpc8541cds/u-boot.lds b/board/cds/mpc8541cds/u-boot.lds
index bd697d8d0c5..1bea0074fa1 100644
--- a/board/cds/mpc8541cds/u-boot.lds
+++ b/board/cds/mpc8541cds/u-boot.lds
@@ -86,6 +86,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -118,10 +119,12 @@ SECTIONS
_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 = .;
diff --git a/board/cds/mpc8548cds/u-boot.lds b/board/cds/mpc8548cds/u-boot.lds
index 36d24073d20..2c8fe9603d9 100644
--- a/board/cds/mpc8548cds/u-boot.lds
+++ b/board/cds/mpc8548cds/u-boot.lds
@@ -86,6 +86,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -118,10 +119,12 @@ SECTIONS
_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 = .;
diff --git a/board/cds/mpc8555cds/u-boot.lds b/board/cds/mpc8555cds/u-boot.lds
index 5d45d380363..2aa2ad78fcd 100644
--- a/board/cds/mpc8555cds/u-boot.lds
+++ b/board/cds/mpc8555cds/u-boot.lds
@@ -86,6 +86,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -118,10 +119,12 @@ SECTIONS
_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 = .;
diff --git a/board/cerf250/u-boot.lds b/board/cerf250/u-boot.lds
index 58c371df06b..f0102391b34 100644
--- a/board/cerf250/u-boot.lds
+++ b/board/cerf250/u-boot.lds
@@ -44,6 +44,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/cm4008/u-boot.lds b/board/cm4008/u-boot.lds
index 0d8a47f8c48..ec09fa23c33 100644
--- a/board/cm4008/u-boot.lds
+++ b/board/cm4008/u-boot.lds
@@ -44,6 +44,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/cm41xx/u-boot.lds b/board/cm41xx/u-boot.lds
index 0d8a47f8c48..ec09fa23c33 100644
--- a/board/cm41xx/u-boot.lds
+++ b/board/cm41xx/u-boot.lds
@@ -44,6 +44,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/cmc_pu2/Makefile b/board/cmc_pu2/Makefile
index ba433d5bf2f..d0def055200 100644
--- a/board/cmc_pu2/Makefile
+++ b/board/cmc_pu2/Makefile
@@ -25,7 +25,7 @@ include $(TOPDIR)/config.mk
LIB = lib$(BOARD).a
-OBJS := cmc_pu2.o at45.o dm9161.o flash.o
+OBJS := cmc_pu2.o at45.o flash.o load_sernum_ethaddr.o
$(LIB): $(OBJS) $(SOBJS)
$(AR) crv $@ $(OBJS) $(SOBJS)
diff --git a/board/cmc_pu2/cmc_pu2.c b/board/cmc_pu2/cmc_pu2.c
index 8e0f6d3b739..14168e636bb 100644
--- a/board/cmc_pu2/cmc_pu2.c
+++ b/board/cmc_pu2/cmc_pu2.c
@@ -30,13 +30,16 @@
#include <common.h>
#include <asm/mach-types.h>
#include <asm/arch/AT91RM9200.h>
+#include <at91rm9200_net.h>
+#include <dm9161.h>
/* ------------------------------------------------------------------------- */
/*
* Miscelaneous platform dependent initialisations
*/
-#define CMC_BASIC 1
+#define CMC_HP_BASIC 1
#define CMC_PU2 2
+#define CMC_BASIC 4
int hw_detect (void);
@@ -74,14 +77,14 @@ int board_init (void)
/*
* 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 set PB3-PB6 to output and drive it
- * high, to configure current meassurement on AINx.
+ * 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) {
+ 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 |
@@ -119,6 +122,8 @@ int checkboard (void)
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;
@@ -136,6 +141,40 @@ int hw_detect (void)
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 */
- return ((pio->PIO_PDSR & AT91C_PIO_PB12) ? CMC_PU2 : CMC_BASIC);
+ 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/dm9161.c b/board/cmc_pu2/dm9161.c
deleted file mode 100644
index 73537c037d1..00000000000
--- a/board/cmc_pu2/dm9161.c
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * (C) Copyright 2003
- * Author : Hamid Ikdoumi (Atmel)
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#include <at91rm9200_net.h>
-#include <net.h>
-#include <dm9161.h>
-
-#ifdef CONFIG_DRIVER_ETHER
-
-#if (CONFIG_COMMANDS & CFG_CMD_NET)
-
-/*
- * Name:
- * dm9161_IsPhyConnected
- * Description:
- * Reads the 2 PHY ID registers
- * Arguments:
- * p_mac - pointer to AT91S_EMAC struct
- * Return value:
- * TRUE - if id read successfully
- * FALSE- if error
- */
-static unsigned int dm9161_IsPhyConnected (AT91PS_EMAC p_mac)
-{
- unsigned short Id1, Id2;
-
- at91rm9200_EmacEnableMDIO (p_mac);
- at91rm9200_EmacReadPhy (p_mac, DM9161_PHYID1, &Id1);
- at91rm9200_EmacReadPhy (p_mac, DM9161_PHYID2, &Id2);
- at91rm9200_EmacDisableMDIO (p_mac);
-
- if ((Id1 == (DM9161_PHYID1_OUI >> 6)) &&
- ((Id2 >> 10) == (DM9161_PHYID1_OUI & DM9161_LSB_MASK)))
- return TRUE;
-
- return FALSE;
-}
-
-/*
- * Name:
- * dm9161_GetLinkSpeed
- * Description:
- * Link parallel detection status of MAC is checked and set in the
- * MAC configuration registers
- * Arguments:
- * p_mac - pointer to MAC
- * Return value:
- * TRUE - if link status set succesfully
- * FALSE - if link status not set
- */
-static UCHAR dm9161_GetLinkSpeed (AT91PS_EMAC p_mac)
-{
- unsigned short stat1, stat2;
-
- if (!at91rm9200_EmacReadPhy (p_mac, DM9161_BMSR, &stat1))
- return FALSE;
-
- if (!(stat1 & DM9161_LINK_STATUS)) /* link status up? */
- return FALSE;
-
- if (!at91rm9200_EmacReadPhy (p_mac, DM9161_DSCSR, &stat2))
- return FALSE;
-
- if ((stat1 & DM9161_100BASE_TX_FD) && (stat2 & DM9161_100FDX)) {
- /*set Emac for 100BaseTX and Full Duplex */
- p_mac->EMAC_CFG |= AT91C_EMAC_SPD | AT91C_EMAC_FD;
- return TRUE;
- }
-
- if ((stat1 & DM9161_10BASE_T_FD) && (stat2 & DM9161_10FDX)) {
- /*set MII for 10BaseT and Full Duplex */
- p_mac->EMAC_CFG = (p_mac->EMAC_CFG &
- ~(AT91C_EMAC_SPD | AT91C_EMAC_FD))
- | AT91C_EMAC_FD;
- return TRUE;
- }
-
- if ((stat1 & DM9161_100BASE_T4_HD) && (stat2 & DM9161_100HDX)) {
- /*set MII for 100BaseTX and Half Duplex */
- p_mac->EMAC_CFG = (p_mac->EMAC_CFG &
- ~(AT91C_EMAC_SPD | AT91C_EMAC_FD))
- | AT91C_EMAC_SPD;
- return TRUE;
- }
-
- if ((stat1 & DM9161_10BASE_T_HD) && (stat2 & DM9161_10HDX)) {
- /*set MII for 10BaseT and Half Duplex */
- p_mac->EMAC_CFG &= ~(AT91C_EMAC_SPD | AT91C_EMAC_FD);
- return TRUE;
- }
- return FALSE;
-}
-
-
-/*
- * Name:
- * dm9161_InitPhy
- * Description:
- * MAC starts checking its link by using parallel detection and
- * Autonegotiation and the same is set in the MAC configuration registers
- * Arguments:
- * p_mac - pointer to struct AT91S_EMAC
- * Return value:
- * TRUE - if link status set succesfully
- * FALSE - if link status not set
- */
-static UCHAR dm9161_InitPhy (AT91PS_EMAC p_mac)
-{
- UCHAR ret = TRUE;
- unsigned short IntValue;
-
- at91rm9200_EmacEnableMDIO (p_mac);
-
- if (!dm9161_GetLinkSpeed (p_mac)) {
- /* Try another time */
- ret = dm9161_GetLinkSpeed (p_mac);
- }
-
- /* Disable PHY Interrupts */
- at91rm9200_EmacReadPhy (p_mac, DM9161_MDINTR, &IntValue);
- /* clear FDX, SPD, Link, INTR masks */
- IntValue &= ~(DM9161_FDX_MASK | DM9161_SPD_MASK |
- DM9161_LINK_MASK | DM9161_INTR_MASK);
- at91rm9200_EmacWritePhy (p_mac, DM9161_MDINTR, &IntValue);
- at91rm9200_EmacDisableMDIO (p_mac);
-
- return (ret);
-}
-
-
-/*
- * Name:
- * dm9161_AutoNegotiate
- * Description:
- * MAC Autonegotiates with the partner status of same is set in the
- * MAC configuration registers
- * Arguments:
- * dev - pointer to struct net_device
- * Return value:
- * TRUE - if link status set successfully
- * FALSE - if link status not set
- */
-static UCHAR dm9161_AutoNegotiate (AT91PS_EMAC p_mac, int *status)
-{
- unsigned short value;
- unsigned short PhyAnar;
- unsigned short PhyAnalpar;
-
- /* Set dm9161 control register */
- if (!at91rm9200_EmacReadPhy (p_mac, DM9161_BMCR, &value))
- return FALSE;
- value &= ~DM9161_AUTONEG; /* remove autonegotiation enable */
- value |= DM9161_ISOLATE; /* Electrically isolate PHY */
- if (!at91rm9200_EmacWritePhy (p_mac, DM9161_BMCR, &value))
- return FALSE;
-
- /* Set the Auto_negotiation Advertisement Register */
- /* MII advertising for Next page, 100BaseTxFD and HD, 10BaseTFD and HD, IEEE 802.3 */
- PhyAnar = DM9161_NP | DM9161_TX_FDX | DM9161_TX_HDX |
- DM9161_10_FDX | DM9161_10_HDX | DM9161_AN_IEEE_802_3;
- if (!at91rm9200_EmacWritePhy (p_mac, DM9161_ANAR, &PhyAnar))
- return FALSE;
-
- /* Read the Control Register */
- if (!at91rm9200_EmacReadPhy (p_mac, DM9161_BMCR, &value))
- return FALSE;
-
- value |= DM9161_SPEED_SELECT | DM9161_AUTONEG | DM9161_DUPLEX_MODE;
- if (!at91rm9200_EmacWritePhy (p_mac, DM9161_BMCR, &value))
- return FALSE;
- /* Restart Auto_negotiation */
- value |= DM9161_RESTART_AUTONEG;
- if (!at91rm9200_EmacWritePhy (p_mac, DM9161_BMCR, &value))
- return FALSE;
-
- /*check AutoNegotiate complete */
- udelay (10000);
- at91rm9200_EmacReadPhy (p_mac, DM9161_BMSR, &value);
- if (!(value & DM9161_AUTONEG_COMP))
- return FALSE;
-
- /* Get the AutoNeg Link partner base page */
- if (!at91rm9200_EmacReadPhy (p_mac, DM9161_ANLPAR, &PhyAnalpar))
- return FALSE;
-
- if ((PhyAnar & DM9161_TX_FDX) && (PhyAnalpar & DM9161_TX_FDX)) {
- /*set MII for 100BaseTX and Full Duplex */
- p_mac->EMAC_CFG |= AT91C_EMAC_SPD | AT91C_EMAC_FD;
- return TRUE;
- }
-
- if ((PhyAnar & DM9161_10_FDX) && (PhyAnalpar & DM9161_10_FDX)) {
- /*set MII for 10BaseT and Full Duplex */
- p_mac->EMAC_CFG = (p_mac->EMAC_CFG &
- ~(AT91C_EMAC_SPD | AT91C_EMAC_FD))
- | AT91C_EMAC_FD;
- return TRUE;
- }
- return FALSE;
-}
-
-
-/*
- * Name:
- * at91rm92000_GetPhyInterface
- * Description:
- * Initialise the interface functions to the PHY
- * Arguments:
- * None
- * Return value:
- * None
- */
-void at91rm92000_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/load_sernum_ethaddr.c b/board/cmc_pu2/load_sernum_ethaddr.c
new file mode 100644
index 00000000000..94aa30df962
--- /dev/null
+++ b/board/cmc_pu2/load_sernum_ethaddr.c
@@ -0,0 +1,122 @@
+/*
+ * (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;
+ unsigned char serial [9];
+ unsigned char ethaddr[18];
+ 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
index 76df6b2af1d..f4fbf969c3c 100644
--- a/board/cmc_pu2/u-boot.lds
+++ b/board/cmc_pu2/u-boot.lds
@@ -45,6 +45,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/cmi/u-boot.lds b/board/cmi/u-boot.lds
index 3188801081f..5b03fef66c7 100644
--- a/board/cmi/u-boot.lds
+++ b/board/cmi/u-boot.lds
@@ -69,6 +69,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -101,11 +102,13 @@ SECTIONS
_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 = .;
diff --git a/board/cobra5272/u-boot.lds b/board/cobra5272/u-boot.lds
index ed20c5967e0..872f09439c2 100644
--- a/board/cobra5272/u-boot.lds
+++ b/board/cobra5272/u-boot.lds
@@ -110,11 +110,13 @@ SECTIONS
_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 = .;
diff --git a/board/cogent/u-boot.lds b/board/cogent/u-boot.lds
index d9a1b68a9cc..5ce2694cbf7 100644
--- a/board/cogent/u-boot.lds
+++ b/board/cogent/u-boot.lds
@@ -64,6 +64,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -96,11 +98,13 @@ SECTIONS
_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 = .;
diff --git a/board/cogent/u-boot.lds.debug b/board/cogent/u-boot.lds.debug
index c0ee8499cd6..ddd4678ee8c 100644
--- a/board/cogent/u-boot.lds.debug
+++ b/board/cogent/u-boot.lds.debug
@@ -74,6 +74,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/cpc45/u-boot.lds b/board/cpc45/u-boot.lds
index b1807dd086a..9ea26aa2659 100644
--- a/board/cpc45/u-boot.lds
+++ b/board/cpc45/u-boot.lds
@@ -71,6 +71,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -104,10 +105,12 @@ SECTIONS
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 = .;
diff --git a/board/cpu86/u-boot.lds b/board/cpu86/u-boot.lds
index ce6c4540d07..05f29c6ed08 100644
--- a/board/cpu86/u-boot.lds
+++ b/board/cpu86/u-boot.lds
@@ -62,6 +62,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -94,11 +95,13 @@ SECTIONS
_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 = .;
diff --git a/board/cpu87/u-boot.lds b/board/cpu87/u-boot.lds
index ed7c8394b41..fb7e665b67f 100644
--- a/board/cpu87/u-boot.lds
+++ b/board/cpu87/u-boot.lds
@@ -62,6 +62,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -94,11 +95,13 @@ SECTIONS
_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 = .;
diff --git a/board/cradle/u-boot.lds b/board/cradle/u-boot.lds
index 58c371df06b..f0102391b34 100644
--- a/board/cradle/u-boot.lds
+++ b/board/cradle/u-boot.lds
@@ -44,6 +44,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/cray/L1/L1.c b/board/cray/L1/L1.c
index fb28c42a552..a7114eb074e 100644
--- a/board/cray/L1/L1.c
+++ b/board/cray/L1/L1.c
@@ -133,7 +133,7 @@ int checkboard (void)
/* ------------------------------------------------------------------------- */
int misc_init_r (void)
{
- unsigned char *s, *e;
+ char *s, *e;
image_header_t *hdr;
time_t timestamp;
struct rtc_time tm;
@@ -146,7 +146,7 @@ int misc_init_r (void)
#define FACTORY_SETTINGS 0xFFFC0000
if ((s = getenv ("ethaddr")) == NULL) {
- e = (unsigned char *) (FACTORY_SETTINGS);
+ e = (char *) (FACTORY_SETTINGS);
if (*(e + 0) != '0'
|| *(e + 1) != '0'
|| *(e + 2) != ':'
@@ -314,7 +314,7 @@ static u8 *dhcp_env_update (u8 thing, u8 * pop)
{
setenv (Things[thing].envname, Things[thing].dhcpvalue);
}
- return (Things[thing].dhcpvalue);
+ return ((u8 *)(Things[thing].dhcpvalue));
}
/* ------------------------------------------------------------------------- */
diff --git a/board/cray/L1/u-boot.lds b/board/cray/L1/u-boot.lds
index 88c880e2000..cf4bbb921d3 100644
--- a/board/cray/L1/u-boot.lds
+++ b/board/cray/L1/u-boot.lds
@@ -69,7 +69,7 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
+ cpu/ppc4xx/4xx_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -89,6 +89,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -121,11 +122,13 @@ SECTIONS
_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 = .;
diff --git a/board/cray/L1/u-boot.lds.debug b/board/cray/L1/u-boot.lds.debug
index d483424ad6d..1608f8cdaa3 100644
--- a/board/cray/L1/u-boot.lds.debug
+++ b/board/cray/L1/u-boot.lds.debug
@@ -74,6 +74,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/csb226/u-boot.lds b/board/csb226/u-boot.lds
index 58c371df06b..f0102391b34 100644
--- a/board/csb226/u-boot.lds
+++ b/board/csb226/u-boot.lds
@@ -44,6 +44,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/csb272/csb272.c b/board/csb272/csb272.c
index fecd7e8ef38..24c6f0d9869 100644
--- a/board/csb272/csb272.c
+++ b/board/csb272/csb272.c
@@ -25,7 +25,7 @@
#include <asm/processor.h>
#include <i2c.h>
#include <miiphy.h>
-#include <405gp_enet.h>
+#include <ppc4xx_enet.h>
/*
* Configuration data for AMIS FS6377-01 Programmable 3-PLL Clock Generator
@@ -164,10 +164,15 @@ long initdram (int board_type)
int last_stage_init(void)
{
/* initialize the PHY */
- miiphy_reset(CONFIG_PHY_ADDR);
- miiphy_write(CONFIG_PHY_ADDR, PHY_BMCR,
- PHY_BMCR_AUTON | PHY_BMCR_RST_NEG); /* AUTO neg */
- miiphy_write(CONFIG_PHY_ADDR, PHY_FCSCR, 0x0d08); /* LEDs */
+ miiphy_reset("ppc_4xx_eth0", CONFIG_PHY_ADDR);
+
+ /* AUTO neg */
+ miiphy_write("ppc_4xx_eth0", CONFIG_PHY_ADDR, PHY_BMCR,
+ PHY_BMCR_AUTON | PHY_BMCR_RST_NEG);
+
+ /* LEDs */
+ miiphy_write("ppc_4xx_eth0", CONFIG_PHY_ADDR, PHY_FCSCR, 0x0d08);
+
return 0; /* success */
}
diff --git a/board/csb272/u-boot.lds b/board/csb272/u-boot.lds
index 8dbc5927a03..d75d6d1ce9a 100644
--- a/board/csb272/u-boot.lds
+++ b/board/csb272/u-boot.lds
@@ -69,7 +69,7 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
+ cpu/ppc4xx/4xx_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
@@ -90,6 +90,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -122,11 +123,13 @@ SECTIONS
_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 = .;
diff --git a/board/csb472/csb472.c b/board/csb472/csb472.c
index 97de0fd9af9..833bbce923d 100644
--- a/board/csb472/csb472.c
+++ b/board/csb472/csb472.c
@@ -25,7 +25,7 @@
#include <asm/processor.h>
#include <i2c.h>
#include <miiphy.h>
-#include <405gp_enet.h>
+#include <ppc4xx_enet.h>
/*
* board_early_init_f: do early board initialization
@@ -132,10 +132,14 @@ long initdram (int board_type)
int last_stage_init(void)
{
/* initialize the PHY */
- miiphy_reset(CONFIG_PHY_ADDR);
- miiphy_write(CONFIG_PHY_ADDR, PHY_BMCR,
- PHY_BMCR_AUTON | PHY_BMCR_RST_NEG); /* AUTO neg */
- miiphy_write(CONFIG_PHY_ADDR, PHY_FCSCR, 0x0d08); /* LEDs */
+ miiphy_reset("ppc_4xx_eth0", CONFIG_PHY_ADDR);
+
+ /* AUTO neg */
+ miiphy_write("ppc_4xx_eth0", CONFIG_PHY_ADDR, PHY_BMCR,
+ PHY_BMCR_AUTON | PHY_BMCR_RST_NEG);
+
+ /* LEDs */
+ miiphy_write("ppc_4xx_eth0", CONFIG_PHY_ADDR, PHY_FCSCR, 0x0d08);
return 0; /* success */
}
diff --git a/board/csb472/u-boot.lds b/board/csb472/u-boot.lds
index f3e28ae8d89..14ac3fb4fcd 100644
--- a/board/csb472/u-boot.lds
+++ b/board/csb472/u-boot.lds
@@ -69,7 +69,7 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
+ cpu/ppc4xx/4xx_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
@@ -90,6 +90,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -122,11 +123,13 @@ SECTIONS
_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 = .;
diff --git a/board/csb637/Makefile b/board/csb637/Makefile
new file mode 100644
index 00000000000..61d5a35dd5f
--- /dev/null
+++ b/board/csb637/Makefile
@@ -0,0 +1,46 @@
+#
+# (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 $(TOPDIR)/config.mk
+
+LIB = lib$(BOARD).a
+
+OBJS := csb637.o
+
+$(LIB): $(OBJS) $(SOBJS)
+ $(AR) crv $@ $(OBJS) $(SOBJS)
+
+clean:
+ rm -f $(SOBJS) $(OBJS)
+
+distclean: clean
+ rm -f $(LIB) core *.bak .depend
+
+#########################################################################
+
+.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
+ $(CC) -M $(CPPFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
+
+-include .depend
+
+#########################################################################
diff --git a/board/csb637/config.mk b/board/csb637/config.mk
new file mode 100644
index 00000000000..4c6f6311349
--- /dev/null
+++ b/board/csb637/config.mk
@@ -0,0 +1 @@
+TEXT_BASE = 0x23fc0000
diff --git a/board/csb637/csb637.c b/board/csb637/csb637.c
new file mode 100644
index 00000000000..6100a53fb77
--- /dev/null
+++ b/board/csb637/csb637.c
@@ -0,0 +1,83 @@
+/*
+ * (C) Copyright 2005 REA Elektronik GmbH <www.rea.de>
+ * Anders Larsen <alarsen@rea.de>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this 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 <bcm5221.h>
+
+/* ------------------------------------------------------------------------- */
+/*
+ * Miscelaneous platform dependent initialisations
+ */
+
+int board_init (void)
+{
+ DECLARE_GLOBAL_DATA_PTR;
+
+ /* Enable Ctrlc */
+ console_init_f ();
+
+ /* memory and cpu-speed are setup before relocation */
+ /* so we do _nothing_ here */
+
+ /* arch number of CSB637-Board */
+ gd->bd->bi_arch_number = MACH_TYPE_CSB637;
+ /* adress of boot parameters */
+ gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
+
+ return 0;
+}
+
+int dram_init (void)
+{
+ DECLARE_GLOBAL_DATA_PTR;
+
+ 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 = bcm5221_InitPhy;
+ p_phyops->IsPhyConnected = bcm5221_IsPhyConnected;
+ p_phyops->GetLinkSpeed = bcm5221_GetLinkSpeed;
+ p_phyops->AutoNegotiate = bcm5221_AutoNegotiate;
+}
+
+#endif /* CONFIG_COMMANDS & CFG_CMD_NET */
+#endif /* CONFIG_DRIVER_ETHER */
diff --git a/board/integratorap/u-boot.lds b/board/csb637/u-boot.lds
index 33931be1277..76df6b2af1d 100644
--- a/board/integratorap/u-boot.lds
+++ b/board/csb637/u-boot.lds
@@ -22,20 +22,26 @@
*/
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 :
+ .text :
{
- cpu/arm926ejs/start.o (.text)
+ cpu/arm920t/start.o (.text)
*(.text)
}
+
+ . = ALIGN(4);
.rodata : { *(.rodata) }
+
. = ALIGN(4);
.data : { *(.data) }
+
. = ALIGN(4);
.got : { *(.got) }
diff --git a/board/cu824/u-boot.lds b/board/cu824/u-boot.lds
index 7e6053aaecc..7be85e4410a 100644
--- a/board/cu824/u-boot.lds
+++ b/board/cu824/u-boot.lds
@@ -71,6 +71,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -103,11 +104,13 @@ SECTIONS
_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 = .;
diff --git a/board/dave/B2/u-boot.lds b/board/dave/B2/u-boot.lds
index f1bbd5dc1c0..e10ac437ec5 100644
--- a/board/dave/B2/u-boot.lds
+++ b/board/dave/B2/u-boot.lds
@@ -44,6 +44,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/dave/PPChameleonEVB/Makefile b/board/dave/PPChameleonEVB/Makefile
index 39d2feceb42..581a5802b4c 100644
--- a/board/dave/PPChameleonEVB/Makefile
+++ b/board/dave/PPChameleonEVB/Makefile
@@ -25,7 +25,7 @@ include $(TOPDIR)/config.mk
LIB = lib$(BOARD).a
-OBJS = $(BOARD).o flash.o
+OBJS = $(BOARD).o flash.o nand.o
$(LIB): $(OBJS) $(SOBJS)
$(AR) crv $@ $^
diff --git a/board/dave/PPChameleonEVB/PPChameleonEVB.c b/board/dave/PPChameleonEVB/PPChameleonEVB.c
index 1f6512d0ead..52055b85b38 100644
--- a/board/dave/PPChameleonEVB/PPChameleonEVB.c
+++ b/board/dave/PPChameleonEVB/PPChameleonEVB.c
@@ -185,7 +185,7 @@ int misc_init_r (void)
int checkboard (void)
{
- unsigned char str[64];
+ char str[64];
int i = getenv_r ("serial#", str, sizeof(str));
puts ("Board: ");
@@ -238,33 +238,6 @@ int testdram (void)
/* ------------------------------------------------------------------------- */
-#if (CONFIG_COMMANDS & CFG_CMD_NAND)
-extern ulong
-nand_probe(ulong physadr);
-
-void
-nand_init(void)
-{
- ulong totlen = 0;
-
-/*
- The HI model is equipped with a large block NAND chip not supported yet
- by U-Boot
- (CONFIG_PPCHAMELEON_MODULE_MODEL == CONFIG_PPCHAMELEON_MODULE_HI)
-*/
-
-#if (CONFIG_PPCHAMELEON_MODULE_MODEL == CONFIG_PPCHAMELEON_MODULE_ME)
- debug ("Probing at 0x%.8x\n", CFG_NAND0_BASE);
- totlen += nand_probe (CFG_NAND0_BASE);
-#endif /* CONFIG_PPCHAMELEON_MODULE_ME, CONFIG_PPCHAMELEON_MODULE_HI */
-
- debug ("Probing at 0x%.8x\n", CFG_NAND1_BASE);
- totlen += nand_probe (CFG_NAND1_BASE);
-
- printf ("%3lu MB\n", totlen >>20);
-}
-#endif
-
#ifdef CONFIG_CFB_CONSOLE
# ifdef CONFIG_CONSOLE_EXTRA_INFO
# include <video_fb.h>
@@ -279,10 +252,10 @@ void video_get_info_str (int line_number, char *info)
case 1:
switch (pvr) {
case PVR_405EP_RB:
- sprintf (info, " IBM PowerPC 405EP Rev. B");
+ sprintf (info, " AMCC PowerPC 405EP Rev. B");
break;
default:
- sprintf (info, " IBM PowerPC 405EP Rev. <unknown>");
+ sprintf (info, " AMCC PowerPC 405EP Rev. <unknown>");
break;
}
return;
diff --git a/board/dave/PPChameleonEVB/config.mk b/board/dave/PPChameleonEVB/config.mk
index 5856aec0ce5..6e03b72b66f 100644
--- a/board/dave/PPChameleonEVB/config.mk
+++ b/board/dave/PPChameleonEVB/config.mk
@@ -1,5 +1,5 @@
#
-# (C) Copyright 2000
+# (C) Copyright 2000, 2006
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
#
# See file CREDITS for list of people who contributed to this
@@ -22,7 +22,10 @@
#
# Reserve 256 kB for Monitor
-TEXT_BASE = 0xFFFC0000
+#TEXT_BASE = 0xFFFC0000
# Reserve 320 kB for Monitor
-#TEXT_BASE = 0xFFFB0000
+TEXT_BASE = 0xFFFB0000
+
+# Compile the new NAND code (needed iff #ifdef CONFIG_NEW_NAND_CODE)
+BOARDLIBS = drivers/nand/libnand.a
diff --git a/board/dave/PPChameleonEVB/nand.c b/board/dave/PPChameleonEVB/nand.c
new file mode 100644
index 00000000000..16c67cd9727
--- /dev/null
+++ b/board/dave/PPChameleonEVB/nand.c
@@ -0,0 +1,147 @@
+/*
+ * (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
+/* new NAND handling */
+
+#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_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.
+ */
+void 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;
+}
+
+#else
+
+/* old NAND handling */
+extern ulong
+nand_probe(ulong physadr);
+
+void
+nand_init(void)
+{
+ ulong totlen = 0;
+
+/*
+ The HI model is equipped with a large block NAND chip not supported yet
+ by U-Boot
+ (CONFIG_PPCHAMELEON_MODULE_MODEL == CONFIG_PPCHAMELEON_MODULE_HI)
+*/
+
+#if (CONFIG_PPCHAMELEON_MODULE_MODEL == CONFIG_PPCHAMELEON_MODULE_ME)
+ debug ("Probing at 0x%.8x\n", CFG_NAND0_BASE);
+ totlen += nand_probe (CFG_NAND0_BASE);
+#endif /* CONFIG_PPCHAMELEON_MODULE_ME, CONFIG_PPCHAMELEON_MODULE_HI */
+
+ debug ("Probing at 0x%.8x\n", CFG_NAND1_BASE);
+ totlen += nand_probe (CFG_NAND1_BASE);
+
+ printf ("%3lu MB\n", totlen >>20);
+}
+#endif
+#endif
diff --git a/board/dave/PPChameleonEVB/u-boot.lds b/board/dave/PPChameleonEVB/u-boot.lds
index d6117674b18..481d291874c 100644
--- a/board/dave/PPChameleonEVB/u-boot.lds
+++ b/board/dave/PPChameleonEVB/u-boot.lds
@@ -67,7 +67,7 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
+ cpu/ppc4xx/4xx_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -83,6 +83,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -115,11 +117,13 @@ SECTIONS
_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 = .;
diff --git a/board/dbau1x00/u-boot.lds b/board/dbau1x00/u-boot.lds
index a2d19a84c9e..10c99179864 100644
--- a/board/dbau1x00/u-boot.lds
+++ b/board/dbau1x00/u-boot.lds
@@ -54,6 +54,7 @@ SECTIONS
.sdata : { *(.sdata) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/dnp1110/u-boot.lds b/board/dnp1110/u-boot.lds
index bfb7c38cc89..258bece23cf 100644
--- a/board/dnp1110/u-boot.lds
+++ b/board/dnp1110/u-boot.lds
@@ -44,6 +44,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/eXalion/u-boot.lds b/board/eXalion/u-boot.lds
index 98584dcf0a5..eaee3fdefc6 100644
--- a/board/eXalion/u-boot.lds
+++ b/board/eXalion/u-boot.lds
@@ -71,6 +71,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -103,11 +104,13 @@ SECTIONS
_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 = .;
diff --git a/board/eltec/bab7xx/misc.c b/board/eltec/bab7xx/misc.c
index b50d11b7518..6a248074111 100644
--- a/board/eltec/bab7xx/misc.c
+++ b/board/eltec/bab7xx/misc.c
@@ -58,7 +58,7 @@ unsigned char scsi_sym53c8xx_ccf = 0x13;
int misc_init_r (void)
{
revinfo eerev;
- u_char *ptr;
+ 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,
@@ -139,7 +139,7 @@ int misc_init_r (void)
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++)
+ for (i = 0, ptr = (char *)&eerev; i < sizeof(revinfo); i++)
*ptr++ = 0x00;
strcpy(eerev.magic, "ELTEC");
eerev.revrev[0] = 1;
diff --git a/board/eltec/bab7xx/u-boot.lds b/board/eltec/bab7xx/u-boot.lds
index 0dfa8c00054..d89eb6cff20 100644
--- a/board/eltec/bab7xx/u-boot.lds
+++ b/board/eltec/bab7xx/u-boot.lds
@@ -74,6 +74,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -106,11 +107,13 @@ SECTIONS
_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 = .;
diff --git a/board/eltec/elppc/eepro100_srom.c b/board/eltec/elppc/eepro100_srom.c
index 9754c1d248e..f021c50cd64 100644
--- a/board/eltec/elppc/eepro100_srom.c
+++ b/board/eltec/elppc/eepro100_srom.c
@@ -57,7 +57,7 @@ int eepro100_srom_store (unsigned short *source)
/* get onboard network iobase */
pci_read_config_dword(PCI_BDF(0,0x10,0), PCI_BASE_ADDRESS_0,
- &onboard_dev.iobase);
+ (unsigned int *)&onboard_dev.iobase);
onboard_dev.iobase &= ~0xf;
source[63] = eepro100_srom_checksum (source);
diff --git a/board/eltec/elppc/u-boot.lds b/board/eltec/elppc/u-boot.lds
index 0dfa8c00054..d89eb6cff20 100644
--- a/board/eltec/elppc/u-boot.lds
+++ b/board/eltec/elppc/u-boot.lds
@@ -74,6 +74,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -106,11 +107,13 @@ SECTIONS
_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 = .;
diff --git a/board/eltec/mhpc/mhpc.c b/board/eltec/mhpc/mhpc.c
index bc3d9f4c628..0ffbdf0e575 100644
--- a/board/eltec/mhpc/mhpc.c
+++ b/board/eltec/mhpc/mhpc.c
@@ -160,7 +160,7 @@ int misc_init_r (void)
int i;
/* check revision data */
- eeprom_read (CFG_I2C_EEPROM_ADDR, 480, (char *) &mhpcRevInfo, 32);
+ 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 ",
@@ -228,7 +228,7 @@ int misc_init_r (void)
}
/* setup new revision data */
- eeprom_write (CFG_I2C_EEPROM_ADDR, 480, (char *) &mhpcRevInfo,
+ eeprom_write (CFG_I2C_EEPROM_ADDR, 480, (uchar *) &mhpcRevInfo,
32);
}
@@ -422,8 +422,8 @@ void *video_hw_init (void)
immap_t *immr = (immap_t *) CFG_IMMR;
/* enable video only on CLUT value */
- if ((penv = getenv ("clut")) != NULL)
- clut = (u_int) simple_strtoul (penv, NULL, 10);
+ if ((penv = (uchar *)getenv ("clut")) != NULL)
+ clut = (u_int) simple_strtoul ((char *)penv, NULL, 10);
else
return NULL;
diff --git a/board/eltec/mhpc/u-boot.lds b/board/eltec/mhpc/u-boot.lds
index 526198cc51e..7099fc40de6 100644
--- a/board/eltec/mhpc/u-boot.lds
+++ b/board/eltec/mhpc/u-boot.lds
@@ -67,6 +67,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -99,11 +100,13 @@ SECTIONS
_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 = .;
diff --git a/board/eltec/mhpc/u-boot.lds.debug b/board/eltec/mhpc/u-boot.lds.debug
index f6f7cf4fa53..3165d563451 100644
--- a/board/eltec/mhpc/u-boot.lds.debug
+++ b/board/eltec/mhpc/u-boot.lds.debug
@@ -74,6 +74,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/emk/common/flash.c b/board/emk/common/flash.c
index 28fe29d6445..d6161bf3586 100644
--- a/board/emk/common/flash.c
+++ b/board/emk/common/flash.c
@@ -165,7 +165,7 @@ void flash_print_info (flash_info_t *info)
int i;
uchar *boottype;
uchar *bootletter;
- uchar *fmt;
+ char *fmt;
uchar botbootletter[] = "B";
uchar topbootletter[] = "T";
uchar botboottype[] = "bottom boot sector";
diff --git a/board/emk/common/vpd.c b/board/emk/common/vpd.c
index cbb7f8f376f..8a3a12b047f 100644
--- a/board/emk/common/vpd.c
+++ b/board/emk/common/vpd.c
@@ -69,11 +69,11 @@ void read_factory_r (void)
/*printf ("%s\n", buf); */
/* search for our specific entry */
if (!strncmp ((char *) buf, "[RLA/lan/Ethernet] ", 19)) {
- setenv ("ethaddr", buf + 19);
+ setenv ("ethaddr", (char *)(buf + 19));
} else if (!strncmp ((char *) buf, "[BOARD/SERIAL] ", 15)) {
- setenv ("serial#", buf + 15);
+ setenv ("serial#", (char *)(buf + 15));
} else if (!strncmp ((char *) buf, "[BOARD/TYPE] ", 13)) {
- setenv ("board_id", buf + 13);
+ setenv ("board_id", (char *)(buf + 13));
}
}
}
diff --git a/board/emk/top5200/u-boot.lds b/board/emk/top5200/u-boot.lds
index d999dd16ad9..f23432ecfa8 100644
--- a/board/emk/top5200/u-boot.lds
+++ b/board/emk/top5200/u-boot.lds
@@ -61,6 +61,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -93,11 +94,13 @@ SECTIONS
_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 = .;
diff --git a/board/emk/top860/u-boot.lds b/board/emk/top860/u-boot.lds
index f6f54857a4a..b3747e42426 100644
--- a/board/emk/top860/u-boot.lds
+++ b/board/emk/top860/u-boot.lds
@@ -66,6 +66,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -99,11 +100,13 @@ SECTIONS
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 = .;
diff --git a/board/emk/top860/u-boot.lds.debug b/board/emk/top860/u-boot.lds.debug
index 8d91be585fb..580575a5a22 100644
--- a/board/emk/top860/u-boot.lds.debug
+++ b/board/emk/top860/u-boot.lds.debug
@@ -75,6 +75,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/ep7312/u-boot.lds b/board/ep7312/u-boot.lds
index 64d946c4392..1122d7521c4 100644
--- a/board/ep7312/u-boot.lds
+++ b/board/ep7312/u-boot.lds
@@ -44,6 +44,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/ep8248/u-boot.lds b/board/ep8248/u-boot.lds
index d6f35f31e09..18c4b46f47b 100644
--- a/board/ep8248/u-boot.lds
+++ b/board/ep8248/u-boot.lds
@@ -60,6 +60,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -92,11 +93,13 @@ SECTIONS
_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 = .;
diff --git a/board/ep8260/u-boot.lds b/board/ep8260/u-boot.lds
index 4ea3c86153d..4250e83f76a 100644
--- a/board/ep8260/u-boot.lds
+++ b/board/ep8260/u-boot.lds
@@ -63,6 +63,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -95,11 +96,13 @@ SECTIONS
_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 = .;
diff --git a/board/eric/eric.c b/board/eric/eric.c
index 860e5064b84..5413ae15c75 100644
--- a/board/eric/eric.c
+++ b/board/eric/eric.c
@@ -26,10 +26,10 @@
#include "eric.h"
#include <asm/processor.h>
-#define IBM405GP_GPIO0_OR 0xef600700 /* GPIO Output */
-#define IBM405GP_GPIO0_TCR 0xef600704 /* GPIO Three-State Control */
-#define IBM405GP_GPIO0_ODR 0xef600718 /* GPIO Open Drain */
-#define IBM405GP_GPIO0_IR 0xef60071c /* GPIO Input */
+#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)
{
@@ -50,7 +50,7 @@ int board_early_init_f (void)
| 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
- | IBM405GP_GPIO0_TCR Bit 0 = 1 (driving the output as defined in IBM405GP_GPIO0_OR,
+ | 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
@@ -70,8 +70,8 @@ int board_early_init_f (void)
mtdcr (cntrl0, 0x00002000); /* set IRQ6 as GPIO23 to generate an interrupt request to the PCP2PCI bridge */
- out32 (IBM405GP_GPIO0_OR, 0x60000000); /*fixme is SMB_INT high or low active??; IRQ6 is GPIO23 output */
- out32 (IBM405GP_GPIO0_TCR, 0x7E400000);
+ out32 (PPC405GP_GPIO0_OR, 0x60000000); /*fixme is SMB_INT high or low active??; IRQ6 is GPIO23 output */
+ out32 (PPC405GP_GPIO0_TCR, 0x7E400000);
return 0;
}
@@ -85,8 +85,8 @@ int board_early_init_f (void)
int checkboard (void)
{
- unsigned char *s = getenv ("serial#");
- unsigned char *e;
+ char *s = getenv ("serial#");
+ char *e;
puts ("Board: ");
diff --git a/board/eric/u-boot.lds b/board/eric/u-boot.lds
index 10f57d8499f..4a0e5b4aedf 100644
--- a/board/eric/u-boot.lds
+++ b/board/eric/u-boot.lds
@@ -69,7 +69,7 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
+ cpu/ppc4xx/4xx_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -89,6 +89,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -121,11 +122,13 @@ SECTIONS
_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 = .;
diff --git a/board/esd/adciop/adciop.c b/board/esd/adciop/adciop.c
index 93bc8431bf9..7a11a12cefb 100644
--- a/board/esd/adciop/adciop.c
+++ b/board/esd/adciop/adciop.c
@@ -60,7 +60,7 @@ int board_early_init_f (void)
int checkboard (void)
{
- unsigned char str[64];
+ char str[64];
int i = getenv_r ("serial#", str, sizeof (str));
puts ("Board: ");
diff --git a/board/esd/adciop/u-boot.lds b/board/esd/adciop/u-boot.lds
index b07d11786f2..ef937dd0151 100644
--- a/board/esd/adciop/u-boot.lds
+++ b/board/esd/adciop/u-boot.lds
@@ -75,6 +75,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -107,11 +108,13 @@ SECTIONS
_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 = .;
diff --git a/board/esd/apc405/u-boot.lds b/board/esd/apc405/u-boot.lds
index 311a5fe7f2f..f7a20d1da23 100644
--- a/board/esd/apc405/u-boot.lds
+++ b/board/esd/apc405/u-boot.lds
@@ -67,7 +67,6 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -87,6 +86,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -119,11 +119,13 @@ SECTIONS
_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 = .;
diff --git a/board/esd/ar405/ar405.c b/board/esd/ar405/ar405.c
index 14b0e42890f..3aac3c67329 100644
--- a/board/esd/ar405/ar405.c
+++ b/board/esd/ar405/ar405.c
@@ -155,7 +155,7 @@ int checkboard (void)
int index;
int len;
- unsigned char str[64];
+ char str[64];
int i = getenv_r ("serial#", str, sizeof (str));
const unsigned char *fpga;
diff --git a/board/esd/ar405/u-boot.lds b/board/esd/ar405/u-boot.lds
index fcba23b6846..3b9aa7c5d1c 100644
--- a/board/esd/ar405/u-boot.lds
+++ b/board/esd/ar405/u-boot.lds
@@ -67,7 +67,7 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
+ cpu/ppc4xx/4xx_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -100,6 +100,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -132,11 +133,13 @@ SECTIONS
_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 = .;
diff --git a/board/esd/ash405/ash405.c b/board/esd/ash405/ash405.c
index 012505e4e6c..03ae7fda4bf 100644
--- a/board/esd/ash405/ash405.c
+++ b/board/esd/ash405/ash405.c
@@ -193,7 +193,7 @@ int misc_init_r (void)
int checkboard (void)
{
- unsigned char str[64];
+ char str[64];
int i = getenv_r ("serial#", str, sizeof(str));
puts ("Board: ");
diff --git a/board/esd/ash405/u-boot.lds b/board/esd/ash405/u-boot.lds
index ba555501ed4..95854f29327 100644
--- a/board/esd/ash405/u-boot.lds
+++ b/board/esd/ash405/u-boot.lds
@@ -67,7 +67,6 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -87,6 +86,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -119,10 +119,12 @@ SECTIONS
_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 = .;
diff --git a/board/esd/canbt/canbt.c b/board/esd/canbt/canbt.c
index ab492497025..2ced6cb17f2 100644
--- a/board/esd/canbt/canbt.c
+++ b/board/esd/canbt/canbt.c
@@ -156,7 +156,7 @@ int checkboard (void)
{
int index;
int len;
- unsigned char str[64];
+ char str[64];
int i = getenv_r ("serial#", str, sizeof (str));
puts ("Board: ");
diff --git a/board/esd/canbt/u-boot.lds b/board/esd/canbt/u-boot.lds
index d739cea7765..ff15b3fef9f 100644
--- a/board/esd/canbt/u-boot.lds
+++ b/board/esd/canbt/u-boot.lds
@@ -67,7 +67,6 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
common/dlmalloc.o (.text)
lib_ppc/extable.o (.text)
lib_ppc/board.o (.text)
@@ -99,6 +98,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -131,11 +131,13 @@ SECTIONS
_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 = .;
diff --git a/board/esd/cms700/Makefile b/board/esd/cms700/Makefile
new file mode 100644
index 00000000000..a11ee82aa23
--- /dev/null
+++ b/board/esd/cms700/Makefile
@@ -0,0 +1,51 @@
+#
+# (C) Copyright 2000
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+
+include $(TOPDIR)/config.mk
+
+LIB = lib$(BOARD).a
+
+# Objects for Xilinx JTAG programming (CPLD)
+CPLD = ../common/xilinx_jtag/lenval.o \
+ ../common/xilinx_jtag/micro.o \
+ ../common/xilinx_jtag/ports.o
+
+OBJS = $(BOARD).o flash.o ../common/misc.o $(CPLD)
+
+$(LIB): $(OBJS) $(SOBJS)
+ $(AR) crv $@ $(OBJS)
+
+clean:
+ rm -f $(SOBJS) $(OBJS)
+
+distclean: clean
+ rm -f $(LIB) core *.bak .depend
+
+#########################################################################
+
+.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
+ $(CC) -M $(CFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
+
+sinclude .depend
+
+#########################################################################
diff --git a/board/esd/cms700/cms700.c b/board/esd/cms700/cms700.c
new file mode 100644
index 00000000000..e4cfe1466b3
--- /dev/null
+++ b/board/esd/cms700/cms700.c
@@ -0,0 +1,262 @@
+/*
+ * (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>
+
+
+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)
+{
+ DECLARE_GLOBAL_DATA_PTR;
+
+ /* 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.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
new file mode 100644
index 00000000000..5c3c01cf874
--- /dev/null
+++ b/board/esd/cms700/config.mk
@@ -0,0 +1,28 @@
+#
+# (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
new file mode 100644
index 00000000000..89af1190a8a
--- /dev/null
+++ b/board/esd/cms700/flash.c
@@ -0,0 +1,101 @@
+/*
+ * (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
new file mode 100644
index 00000000000..08be5e79496
--- /dev/null
+++ b/board/esd/cms700/fpgadata.c
@@ -0,0 +1,1812 @@
+ 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
new file mode 100644
index 00000000000..f7a20d1da23
--- /dev/null
+++ b/board/esd/cms700/u-boot.lds
@@ -0,0 +1,150 @@
+/*
+ * (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
index 0604a4e6fed..1decc0ec0cd 100644
--- a/board/esd/common/auto_update.c
+++ b/board/esd/common/auto_update.c
@@ -65,7 +65,7 @@ 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 (uchar *, 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);
@@ -103,7 +103,7 @@ int au_check_cksum_valid(int i, long nbytes)
/* check the data CRC */
checksum = ntohl(hdr->ih_dcrc);
- if (crc32 (0, (char *)(LOAD_ADDR + sizeof(*hdr)), ntohl(hdr->ih_size))
+ 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;
@@ -140,7 +140,7 @@ int au_check_header_valid(int i, long nbytes)
checksum = ntohl(hdr->ih_hcrc);
hdr->ih_hcrc = 0;
- if (crc32 (0, (char *)hdr, sizeof(*hdr)) != checksum) {
+ if (crc32 (0, (uchar *)hdr, sizeof(*hdr)) != checksum) {
printf ("Image %s bad header checksum\n", au_image[i].name);
return -1;
}
@@ -283,12 +283,12 @@ int au_do_update(int i, long sz)
*/
if (au_image[i].type != AU_NAND) {
debug ("flash_write(%p, %lx %x)\n", addr, start, nbytes);
- rc = flash_write(addr, start, nbytes);
+ rc = flash_write((char *)addr, start, nbytes);
} else {
#if (CONFIG_COMMANDS & CFG_CMD_NAND)
debug ("nand_rw(%p, %lx %x)\n", addr, start, nbytes);
rc = nand_rw(nand_dev_desc, NANDRW_WRITE | NANDRW_JFFS2,
- start, nbytes, &total, addr);
+ start, nbytes, (size_t *)&total, (uchar *)addr);
debug ("nand_rw: ret=%x total=%d nbytes=%d\n", rc, total, nbytes);
#endif
}
@@ -301,12 +301,12 @@ int au_do_update(int i, long sz)
* check the dcrc of the copy
*/
if (au_image[i].type != AU_NAND) {
- rc = crc32 (0, (char *)(start + off), ntohl(hdr->ih_size));
+ rc = crc32 (0, (uchar *)(start + off), ntohl(hdr->ih_size));
} else {
#if (CONFIG_COMMANDS & CFG_CMD_NAND)
rc = nand_rw(nand_dev_desc, NANDRW_READ | NANDRW_JFFS2 | NANDRW_JFFS2_SKIP,
- start, nbytes, &total, addr);
- rc = crc32 (0, (char *)(addr + off), ntohl(hdr->ih_size));
+ start, nbytes, (size_t *)&total, (uchar *)addr);
+ rc = crc32 (0, (uchar *)(addr + off), ntohl(hdr->ih_size));
#endif
}
if (rc != ntohl(hdr->ih_dcrc)) {
diff --git a/board/esd/common/cmd_loadpci.c b/board/esd/common/cmd_loadpci.c
new file mode 100644
index 00000000000..3478f825c50
--- /dev/null
+++ b/board/esd/common/cmd_loadpci.c
@@ -0,0 +1,123 @@
+/*
+ * (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/lcd.c b/board/esd/common/lcd.c
index d2d642a1a72..0edc08308a1 100644
--- a/board/esd/common/lcd.c
+++ b/board/esd/common/lcd.c
@@ -2,6 +2,9 @@
* (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.
*
@@ -24,9 +27,14 @@
#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)
@@ -67,92 +75,55 @@ void lcd_setup(int lcd, int config)
#endif /* #ifdef CFG_LCD_ENDIAN */
-void lcd_init(uchar *lcd_reg, uchar *lcd_mem, S1D_REGS *regs, int reg_count,
- uchar *logo_bmp, ulong len)
+void lcd_bmp(uchar *logo_bmp)
{
int i;
- ushort s1dReg;
- uchar s1dValue;
uchar *ptr;
ushort *ptr2;
ushort val;
- unsigned char *dst;
+ 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;
- int reg_byte_swap;
+ ulong len;
/*
- * Detect epson
+ * Check for bmp mark 'BM'
*/
- if (lcd_reg[0] == 0x1c) {
+ if (*(ushort *)logo_bmp != 0x424d) {
+
/*
- * Big epson detected
+ * Decompress bmp image
*/
- reg_byte_swap = FALSE;
- palette_index = 0x1e2;
- palette_value = 0x1e4;
- 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;
- puts("LCD: S1D13806S");
- } else if (lcd_reg[0] == 0x18) {
+ 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");
+ }
+
/*
- * Small epson detected (704)
+ * Check for bmp mark 'BM'
*/
- reg_byte_swap = FALSE;
- palette_index = 0x15;
- palette_value = 0x17;
- puts("LCD: S1D13704");
- } else if (lcd_reg[0x10000] == 0x24) {
+ if (*(ushort *)dst != 0x424d) {
+ printf("LCD: Unknown image format!\n");
+ free(dst);
+ return;
+ }
+ } else {
/*
- * Small epson detected (705)
+ * Uncompressed BMP image, just use this pointer
*/
- reg_byte_swap = FALSE;
- palette_index = 0x15;
- palette_value = 0x17;
- lcd_reg += 0x10000; /* add offset for 705 regs */
- puts("LCD: S1D13705");
- } else {
- puts("LCD: No controller detected!\n");
- return;
- }
-
- 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;
- }
-
- /*
- * Decompress bmp image
- */
- dst = malloc(CFG_LCD_LOGO_MAX_SIZE);
- if (gunzip(dst, CFG_LCD_LOGO_MAX_SIZE, (uchar *)logo_bmp, &len) != 0) {
- return;
- }
-
- /*
- * Check for bmp mark 'BM'
- */
- if (*(ushort *)dst != 0x424d) {
- printf("LCD: Unknown image format!\n");
- free(dst);
- return;
+ dst = (uchar *)logo_bmp;
}
/*
@@ -181,7 +152,9 @@ void lcd_init(uchar *lcd_reg, uchar *lcd_mem, S1D_REGS *regs, int reg_count,
break;
default:
printf("LCD: Unknown bpp (%d) im image!\n", bpp);
- free(dst);
+ if ((dst != NULL) && (dst != (uchar *)logo_bmp)) {
+ free(dst);
+ }
return;
}
printf(" (%d*%d, %dbpp)\n", width, height, bpp);
@@ -189,35 +162,48 @@ void lcd_init(uchar *lcd_reg, uchar *lcd_mem, S1D_REGS *regs, int reg_count,
/*
* Write color palette
*/
- if (colors <= 256) {
+ 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(lcd_reg, i, r, g, b);
+ S1D_WRITE_PALETTE(glob_lcd_reg, i, r, g, b);
}
}
/*
* Write bitmap data into framebuffer
*/
- ptr = lcd_mem;
- ptr2 = (ushort *)lcd_mem;
+ 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 (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;
+ 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++) {
@@ -226,5 +212,123 @@ void lcd_init(uchar *lcd_reg, uchar *lcd_mem, S1D_REGS *regs, int reg_count,
}
}
- free(dst);
+ 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
+ */
+ 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/misc.c b/board/esd/common/misc.c
index cba8c92f2e5..48b4b7c7b96 100644
--- a/board/esd/common/misc.c
+++ b/board/esd/common/misc.c
@@ -33,8 +33,8 @@ void lxt971_no_sleep(void)
{
unsigned short reg;
- miiphy_read(CONFIG_PHY_ADDR, 0x10, &reg);
+ miiphy_read("ppc_4xx_eth0", CONFIG_PHY_ADDR, 0x10, &reg);
reg &= ~0x0040; /* disable sleep mode */
- miiphy_write(CONFIG_PHY_ADDR, 0x10, reg);
+ miiphy_write("ppc_4xx_eth0", CONFIG_PHY_ADDR, 0x10, reg);
}
#endif /* CONFIG_LXT971_NO_SLEEP */
diff --git a/board/esd/cpci2dp/Makefile b/board/esd/cpci2dp/Makefile
new file mode 100644
index 00000000000..88b0ae3435e
--- /dev/null
+++ b/board/esd/cpci2dp/Makefile
@@ -0,0 +1,46 @@
+#
+# (C) Copyright 2000
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+
+include $(TOPDIR)/config.mk
+
+LIB = lib$(BOARD).a
+
+OBJS = $(BOARD).o flash.o ../common/misc.o ../common/cmd_loadpci.o
+
+$(LIB): $(OBJS) $(SOBJS)
+ $(AR) crv $@ $(OBJS)
+
+clean:
+ rm -f $(SOBJS) $(OBJS)
+
+distclean: clean
+ rm -f $(LIB) core *.bak .depend
+
+#########################################################################
+
+.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
+ $(CC) -M $(CFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
+
+sinclude .depend
+
+#########################################################################
diff --git a/board/esd/cpci2dp/config.mk b/board/esd/cpci2dp/config.mk
new file mode 100644
index 00000000000..2da4c9f7658
--- /dev/null
+++ b/board/esd/cpci2dp/config.mk
@@ -0,0 +1,28 @@
+#
+# (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
new file mode 100644
index 00000000000..2800420e2af
--- /dev/null
+++ b/board/esd/cpci2dp/cpci2dp.c
@@ -0,0 +1,202 @@
+/*
+ * (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>
+
+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)
+{
+ DECLARE_GLOBAL_DATA_PTR;
+ 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
new file mode 100644
index 00000000000..de847f9beac
--- /dev/null
+++ b/board/esd/cpci2dp/flash.c
@@ -0,0 +1,84 @@
+/*
+ * (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
new file mode 100644
index 00000000000..f7a20d1da23
--- /dev/null
+++ b/board/esd/cpci2dp/u-boot.lds
@@ -0,0 +1,150 @@
+/*
+ * (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/cpci405.c b/board/esd/cpci405/cpci405.c
index f27668d1427..2ab96731e04 100644
--- a/board/esd/cpci405/cpci405.c
+++ b/board/esd/cpci405/cpci405.c
@@ -440,7 +440,7 @@ int checkboard (void)
int index;
int len;
#endif
- unsigned char str[64];
+ char str[64];
int i = getenv_r ("serial#", str, sizeof(str));
unsigned short ver;
@@ -468,7 +468,7 @@ int checkboard (void)
#endif
if (ctermm2()) {
- unsigned char str[4];
+ char str[4];
/*
* Read board-id and save in env-variable
@@ -664,7 +664,7 @@ int do_onewire(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
int result;
int i;
unsigned char ow_id[6];
- unsigned char str[32];
+ char str[32];
unsigned char ow_crc;
/*
@@ -717,10 +717,10 @@ int do_get_bpip(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
IPaddr_t ipaddr;
buf = malloc(CFG_ENV_SIZE_2);
- if (eeprom_read(CFG_I2C_EEPROM_ADDR_2, 0, buf, 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, buf+4, CFG_ENV_SIZE_2-4);
+ 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;
@@ -766,7 +766,7 @@ U_BOOT_CMD(
int do_set_bpip(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
{
char *buf;
- unsigned char str[32];
+ char str[32];
ulong crc;
if (argc < 2) {
@@ -779,10 +779,10 @@ int do_set_bpip(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
memset(buf, 0, CFG_ENV_SIZE_2);
sprintf(str, "bp_ip=%s", argv[1]);
strcpy(buf+4, str);
- crc = crc32(0, buf+4, CFG_ENV_SIZE_2-4);
+ crc = crc32(0, (uchar *)(buf+4), CFG_ENV_SIZE_2-4);
*(ulong *)buf = crc;
- if (eeprom_write(CFG_I2C_EEPROM_ADDR_2, 0, buf, CFG_ENV_SIZE_2)) {
+ if (eeprom_write(CFG_I2C_EEPROM_ADDR_2, 0, (uchar *)buf, CFG_ENV_SIZE_2)) {
puts("\nError writing backplane EEPROM!\n");
}
diff --git a/board/esd/cpci405/u-boot.lds b/board/esd/cpci405/u-boot.lds
index 311a5fe7f2f..f7a20d1da23 100644
--- a/board/esd/cpci405/u-boot.lds
+++ b/board/esd/cpci405/u-boot.lds
@@ -67,7 +67,6 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -87,6 +86,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -119,11 +119,13 @@ SECTIONS
_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 = .;
diff --git a/board/esd/cpci440/u-boot.lds b/board/esd/cpci440/u-boot.lds
index 3925ad9eb67..57220d385a3 100644
--- a/board/esd/cpci440/u-boot.lds
+++ b/board/esd/cpci440/u-boot.lds
@@ -76,7 +76,6 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -96,6 +95,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -128,11 +128,13 @@ SECTIONS
_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 = .;
diff --git a/board/esd/cpci5200/Makefile b/board/esd/cpci5200/Makefile
new file mode 100644
index 00000000000..2ca73a99e20
--- /dev/null
+++ b/board/esd/cpci5200/Makefile
@@ -0,0 +1,53 @@
+
+#
+# (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 $(TOPDIR)/config.mk
+
+LIB = 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
+
+# OBJS = $(BOARD).o flash.o $(CPLD)
+OBJS = $(BOARD).o strataflash.o
+
+$(LIB): $(OBJS) $(SOBJS)
+ $(AR) crv $@ $(OBJS)
+
+clean:
+ rm -f $(SOBJS) $(OBJS)
+
+distclean: clean
+ rm -f $(LIB) core *.bak .depend
+
+#########################################################################
+
+.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
+ $(CC) -M $(CPPFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
+
+-include .depend
+
+#########################################################################
diff --git a/board/esd/cpci5200/config.mk b/board/esd/cpci5200/config.mk
new file mode 100644
index 00000000000..07b5de1881c
--- /dev/null
+++ b/board/esd/cpci5200/config.mk
@@ -0,0 +1,44 @@
+#
+# (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 $(TOPDIR)/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
new file mode 100644
index 00000000000..6c98f13fb6a
--- /dev/null
+++ b/board/esd/cpci5200/cpci5200.c
@@ -0,0 +1,295 @@
+/*
+ * (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)
+
+#define GPIO_PSC1_4 0x01000000UL
+
+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 &= ~GPIO_PSC1_4;
+ } else {
+ *(vu_long *) MPC5XXX_WU_GPIO_DATA |= 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 |= 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
new file mode 100644
index 00000000000..22d0a554442
--- /dev/null
+++ b/board/esd/cpci5200/mt46v16m16-75.h
@@ -0,0 +1,37 @@
+/*
+ * (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/pmc405/strataflash.c b/board/esd/cpci5200/strataflash.c
index ad7a71dc4db..d76af02dbef 100644
--- a/board/esd/pmc405/strataflash.c
+++ b/board/esd/cpci5200/strataflash.c
@@ -23,10 +23,11 @@
#include <common.h>
#include <asm/processor.h>
+#include <asm/cache.h>
#undef DEBUG_FLASH
/*
- * This file implements a Common Flash Interface (CFI) driver for ppcboot.
+ * 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.
@@ -94,38 +95,44 @@ typedef union {
} cfiword_t;
typedef union {
- unsigned char * cp;
+ 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 */
+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 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);
+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);
+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)
+inline uchar *flash_make_addr(flash_info_t * info, int sect, int offset)
{
- return ((uchar *)(info->start[sect] + (offset * info->portwidth)));
+ return ((uchar *) (info->start[sect] + (offset * info->portwidth)));
}
+
/*-----------------------------------------------------------------------
* read a character at a port width address
*/
@@ -139,12 +146,13 @@ inline uchar flash_read_uchar(flash_info_t * info, uchar offset)
/*-----------------------------------------------------------------------
* read a short word by swapping for ppc format.
*/
-ushort flash_read_ushort(flash_info_t * info, int sect, uchar offset)
+ushort flash_read_ushort(flash_info_t * info, int sect, uchar offset)
{
- uchar * addr;
+ uchar *addr;
- addr = flash_make_addr(info, sect, offset);
- return ((addr[(2*info->portwidth) - 1] << 8) | addr[info->portwidth - 1]);
+ addr = flash_make_addr(info, sect, offset);
+ return ((addr[(2 * info->portwidth) - 1] << 8) |
+ addr[info->portwidth - 1]);
}
@@ -152,24 +160,25 @@ ushort flash_read_ushort(flash_info_t * info, int sect, uchar offset)
* 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)
+ulong flash_read_long(flash_info_t * info, int sect, uchar offset)
{
- uchar * addr;
+ 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]);
+ 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 flash_init(void)
{
unsigned long size;
int i;
- unsigned long address;
-
+ unsigned long address;
/* The flash is positioned back to back, with the demultiplexing of the chip
* based on the A24 address line.
@@ -180,27 +189,25 @@ unsigned long flash_init (void)
size = 0;
/* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
+ 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 (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 */
+#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++)
+ 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
-#else
- /* monitor protection ON by default */
- flash_protect (FLAG_PROTECT_SET,
- - CFG_MONITOR_LEN,
- - 1, &flash_info[1]);
#endif
return (size);
@@ -208,112 +215,79 @@ unsigned long flash_init (void)
/*-----------------------------------------------------------------------
*/
-int flash_erase (flash_info_t *info, int s_first, int s_last)
+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");
+ 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");
+ printf("- no sectors to erase\n");
return 1;
}
prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
+ 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);
+ printf("- Warning: %d protected sectors will not be erased!\n",
+ prot);
} else {
- printf ("\n");
+ printf("\n");
}
-
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
+ 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")) {
+ if (flash_full_status_check
+ (info, sect, info->erase_blk_tout, "erase")) {
rcode = 1;
} else
printf(".");
}
}
- printf (" done\n");
+ printf(" done\n");
return rcode;
}
/*-----------------------------------------------------------------------
*/
-void flash_print_info (flash_info_t *info)
+void flash_print_info(flash_info_t * info)
{
int i;
if (info->flash_id != FLASH_MAN_CFI) {
- printf ("missing or unknown FLASH type\n");
+ 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
+ (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%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " ");
-#endif
+ printf("\n");
+ printf(" %08lX%5s",
+ info->start[i], info->protect[i] ? " (RO)" : " ");
}
- printf ("\n");
+ printf("\n");
return;
}
@@ -323,7 +297,7 @@ void flash_print_info (flash_info_t *info)
* 1 - write timeout
* 2 - Flash not erased
*/
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
+int write_buff(flash_info_t * info, uchar * src, ulong addr, ulong cnt)
{
ulong wp;
ulong cp;
@@ -335,46 +309,45 @@ int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
wp = (addr & ~(info->portwidth - 1));
/* handle unaligned start */
- if((aln = addr - wp) != 0) {
+ 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 = 0; i < aln; ++i, ++cp)
+ flash_add_byte(info, &cword, (*(uchar *) cp));
- for(; (i< info->portwidth) && (cnt > 0) ; i++) {
+ 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)
+ 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)
+ 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;
+ cnt -= i;
}
#else
/* handle the aligned part */
- while(cnt >= info->portwidth) {
+ while (cnt >= info->portwidth) {
cword.l = 0;
- for(i = 0; i < info->portwidth; i++) {
+ for (i = 0; i < info->portwidth; i++) {
flash_add_byte(info, &cword, *src++);
}
- if((rc = flash_write_cfiword(info, wp, cword)) != 0)
+ if ((rc = flash_write_cfiword(info, wp, cword)) != 0)
return rc;
wp += info->portwidth;
cnt -= info->portwidth;
}
-#endif /* CFG_FLASH_USE_BUFFER_WRITE */
+#endif /* CFG_FLASH_USE_BUFFER_WRITE */
if (cnt == 0) {
return (0);
}
@@ -383,12 +356,12 @@ int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
* handle unaligned tail bytes
*/
cword.l = 0;
- for (i=0, cp=wp; (i<info->portwidth) && (cnt>0); ++i, ++cp) {
+ 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));
+ for (; i < info->portwidth; ++i, ++cp) {
+ flash_add_byte(info, &cword, (*(uchar *) cp));
}
return flash_write_cfiword(info, wp, cword);
@@ -396,26 +369,27 @@ int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
/*-----------------------------------------------------------------------
*/
-int flash_real_protect(flash_info_t *info, long sector, int prot)
+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)
+ 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) {
+ 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) {
+ if (prot == 0) {
int i;
- for(i = 0 ; i<info->sector_count; i++) {
- if(info->protect[i])
+ for (i = 0; i < info->sector_count; i++) {
+ if (info->protect[i])
flash_real_protect(info, i, 1);
}
}
@@ -423,59 +397,69 @@ int flash_real_protect(flash_info_t *info, long sector, int prot)
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)
+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)) {
+ 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]);
+ 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)
+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)) {
+ 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("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)){
+ } 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)){
+ 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))
+ 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)
+static void flash_add_byte(flash_info_t * info, cfiword_t * cword, uchar c)
{
- switch(info->portwidth) {
+ switch (info->portwidth) {
case FLASH_CFI_8BIT:
cword->c = c;
break;
@@ -487,29 +471,29 @@ static void flash_add_byte(flash_info_t *info, cfiword_t * cword, uchar 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)
+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;
+ 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)
+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) {
+ switch (info->portwidth) {
case FLASH_CFI_8BIT:
*addr.cp = cword.c;
break;
@@ -531,7 +515,7 @@ static int flash_isequal(flash_info_t * info, int sect, uchar offset, uchar cmd)
int retval;
cptr.cp = flash_make_addr(info, sect, offset);
flash_make_cmd(info, cmd, &cword);
- switch(info->portwidth) {
+ switch (info->portwidth) {
case FLASH_CFI_8BIT:
retval = (cptr.cp[0] == cword.c);
break;
@@ -547,6 +531,7 @@ static int flash_isequal(flash_info_t * info, int sect, uchar offset, uchar cmd)
}
return retval;
}
+
/*-----------------------------------------------------------------------
*/
static int flash_isset(flash_info_t * info, int sect, uchar offset, uchar cmd)
@@ -556,7 +541,7 @@ static int flash_isset(flash_info_t * info, int sect, uchar offset, uchar cmd)
int retval;
cptr.cp = flash_make_addr(info, sect, offset);
flash_make_cmd(info, cmd, &cword);
- switch(info->portwidth) {
+ switch (info->portwidth) {
case FLASH_CFI_8BIT:
retval = ((cptr.cp[0] & cword.c) == cword.c);
break;
@@ -577,93 +562,120 @@ static int flash_isset(flash_info_t * info, int sect, uchar offset, uchar cmd)
* 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) {
+ 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'))
+ 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)
+static ulong flash_get_size(ulong base, int banknum)
{
- flash_info_t * info = &flash_info[banknum];
+ flash_info_t *info = &flash_info[banknum];
int i, j;
int sect_cnt;
unsigned long sector;
unsigned long tmp;
- int size_ratio;
+ int size_ratio = 0;
uchar num_erase_regions;
- int erase_region_size;
- int erase_region_count;
+ 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 */
+#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);
-#ifdef DEBUG_FLASH
- printf("found %d erase regions\n", num_erase_regions);
-#endif
+ 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) {
+ 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 =
+ 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++) {
+ 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);
+ 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));
+ 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)));
+ 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)));
+ 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->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);
+#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)
+static int flash_write_cfiword(flash_info_t * info, ulong dest, cfiword_t cword)
{
cfiptr_t ctladdr;
@@ -671,11 +683,10 @@ static int flash_write_cfiword (flash_info_t *info, ulong dest, cfiword_t cword)
int flag;
ctladdr.cp = flash_make_addr(info, 0, 0);
- cptr.cp = (uchar *)dest;
-
+ cptr.cp = (uchar *) dest;
/* Check if Flash is (sufficiently) erased */
- switch(info->portwidth) {
+ switch (info->portwidth) {
case FLASH_CFI_8BIT:
flag = ((cptr.cp[0] & cword.c) == cword.c);
break;
@@ -683,12 +694,12 @@ static int flash_write_cfiword (flash_info_t *info, ulong dest, cfiword_t cword)
flag = ((cptr.wp[0] & cword.w) == cword.w);
break;
case FLASH_CFI_32BIT:
- flag = ((cptr.lp[0] & cword.l) == cword.l);
+ flag = ((cptr.lp[0] & cword.l) == cword.l);
break;
default:
return 2;
}
- if(!flag)
+ if (!flag)
return 2;
/* Disable interrupts which might cause a timeout here */
@@ -697,7 +708,7 @@ static int flash_write_cfiword (flash_info_t *info, ulong dest, cfiword_t cword)
flash_write_cmd(info, 0, 0, FLASH_CMD_CLEAR_STATUS);
flash_write_cmd(info, 0, 0, FLASH_CMD_WRITE);
- switch(info->portwidth) {
+ switch (info->portwidth) {
case FLASH_CFI_8BIT:
cptr.cp[0] = cword.c;
break;
@@ -710,7 +721,7 @@ static int flash_write_cfiword (flash_info_t *info, ulong dest, cfiword_t cword)
}
/* re-enable interrupts if necessary */
- if(flag)
+ if (flag)
enable_interrupts();
return flash_full_status_check(info, 0, info->write_tout, "write");
@@ -722,17 +733,18 @@ static int flash_write_cfiword (flash_info_t *info, ulong dest, cfiword_t cword)
* 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)
+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])
+ 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)
+static int flash_write_cfibuffer(flash_info_t * info, ulong dest, uchar * cp,
+ int len)
{
int sector;
@@ -742,13 +754,13 @@ static int flash_write_cfibuffer(flash_info_t * info, ulong dest, uchar * cp, in
volatile cfiptr_t dst;
src.cp = cp;
- dst.cp = (uchar *)dest;
+ 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) {
+ 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;
@@ -762,9 +774,9 @@ static int flash_write_cfibuffer(flash_info_t * info, ulong dest, uchar * cp, in
return ERR_INVAL;
break;
}
- flash_write_cmd(info, sector, 0, (uchar)cnt-1);
- while(cnt-- > 0) {
- switch(info->portwidth) {
+ flash_write_cmd(info, sector, 0, (uchar) cnt - 1);
+ while (cnt-- > 0) {
+ switch (info->portwidth) {
case FLASH_CFI_8BIT:
*dst.cp++ = *src.cp++;
break;
@@ -779,11 +791,14 @@ static int flash_write_cfibuffer(flash_info_t * info, ulong dest, uchar * cp, in
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_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 */
+#endif /* CFG_USE_FLASH_BUFFER_WRITE */
diff --git a/board/tqm8560/u-boot.lds b/board/esd/cpci5200/u-boot.lds
index ebe22401a4f..f23432ecfa8 100644
--- a/board/tqm8560/u-boot.lds
+++ b/board/esd/cpci5200/u-boot.lds
@@ -1,6 +1,6 @@
/*
- * (C) Copyright 2002,2003, Motorola,Inc.
- * Xianghua Xiao, X.Xiao@motorola.com.
+ * (C) Copyright 2003
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
*
* See file CREDITS for list of people who contributed to this
* project.
@@ -12,7 +12,7 @@
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
@@ -27,73 +27,48 @@ SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/
__DYNAMIC = 0; */
SECTIONS
{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- .bootpg 0xFFFFF000 :
- {
- cpu/mpc85xx/start.o (.bootpg)
- board/tqm8560/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) }
+ .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 :
{
- cpu/mpc85xx/start.o (.text)
- board/tqm8560/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)
+ cpu/mpc5xxx/start.o (.text)
*(.text)
*(.fixup)
*(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
+ . = ALIGN(16);
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
- .fini : { *(.fini) } =0
+ .fini : { *(.fini) } =0
.ctors : { *(.ctors) }
.dtors : { *(.dtors) }
/* Read-write section, merged into data segment: */
- . = (. + 0x00FF) & 0xFFFFFF00;
+ . = (. + 0x0FFF) & 0xFFFFF000;
_erotext = .;
PROVIDE (erotext = .);
.reloc :
@@ -107,7 +82,7 @@ SECTIONS
__got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >> 2;
__fixup_entries = (. - _FIXUP_TABLE_) >> 2;
- .data :
+ .data :
{
*(.data)
*(.data1)
@@ -119,23 +94,26 @@ SECTIONS
_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);
+ . = ALIGN(4096);
__init_begin = .;
.text.init : { *(.text.init) }
.data.init : { *(.data.init) }
- . = ALIGN(256);
+ . = ALIGN(4096);
__init_end = .;
__bss_start = .;
- .bss :
+ .bss :
{
*(.sbss) *(.scommon)
*(.dynbss)
diff --git a/board/esd/cpci750/cpci750.c b/board/esd/cpci750/cpci750.c
index 68f121d6bfc..e4b062bdd04 100644
--- a/board/esd/cpci750/cpci750.c
+++ b/board/esd/cpci750/cpci750.c
@@ -555,7 +555,7 @@ unsigned long long pattern[] = {
int mem_test_data (void)
{
unsigned long long *pmem = (unsigned long long *) CFG_MEMTEST_START;
- unsigned long long temp64;
+ unsigned long long temp64 = 0;
int num_patterns = sizeof (pattern) / sizeof (pattern[0]);
int i;
unsigned int hi, lo;
@@ -662,7 +662,7 @@ int mem_march (volatile unsigned long long *base,
unsigned long long wmask, short read, short write)
{
unsigned int i;
- unsigned long long temp;
+ unsigned long long temp = 0;
unsigned int hitemp, lotemp, himask, lomask;
for (i = 0; i < size; i++) {
diff --git a/board/esd/cpci750/mv_eth.c b/board/esd/cpci750/mv_eth.c
index e2719b99d1a..be176dcc845 100644
--- a/board/esd/cpci750/mv_eth.c
+++ b/board/esd/cpci750/mv_eth.c
@@ -267,8 +267,9 @@ void mv6436x_eth_initialize (bd_t * bis)
dev->send = (void *) db64360_eth_transmit;
dev->recv = (void *) db64360_eth_poll;
- dev->priv = (void *) ethernet_private =
+ ethernet_private =
calloc (sizeof (*ethernet_private), 1);
+ dev->priv = (void *) ethernet_private;
if (!ethernet_private) {
printf ("%s: %s allocation failure, %s\n",
__FUNCTION__, dev->name,
@@ -281,8 +282,9 @@ void mv6436x_eth_initialize (bd_t * bis)
memcpy (ethernet_private->port_mac_addr, dev->enetaddr, 6);
/* set pointer to memory for stats data structure etc... */
- ethernet_private->port_private = (void *) port_private =
+ port_private =
calloc (sizeof (*ethernet_private), 1);
+ ethernet_private->port_private = (void *)port_private;
if (!port_private) {
printf ("%s: %s allocation failure, %s\n",
__FUNCTION__, dev->name,
diff --git a/board/esd/cpci750/pci.c b/board/esd/cpci750/pci.c
index 3e44fb97376..37c7150423c 100644
--- a/board/esd/cpci750/pci.c
+++ b/board/esd/cpci750/pci.c
@@ -44,6 +44,14 @@ static const unsigned char pci_irq_swizzle[2][PCI_MAX_DEVICES] = {
{0, 0, 0, 0, 0, 0, 0, 29, 29, [9 ... PCI_MAX_DEVICES - 1] = 0 },
};
+#ifdef CONFIG_USE_CPCIDVI
+typedef struct {
+ unsigned int base;
+ unsigned int init;
+} GT_CPCIDVI_ROM_T;
+
+static GT_CPCIDVI_ROM_T gt_cpcidvi_rom = {0, 0};
+#endif
#ifdef DEBUG
static const unsigned int pci_bus_list[] = { PCI_0_MODE, PCI_1_MODE };
@@ -800,21 +808,63 @@ static void gt_setup_ide (struct pci_controller *hose,
unsigned int offset =
(bar < 2) ? bar * 8 : 0x100 + (bar - 2) * 8;
- pci_write_config_dword (dev, PCI_BASE_ADDRESS_0 + offset,
- 0x0);
- pci_read_config_dword (dev, PCI_BASE_ADDRESS_0 + offset,
- &bar_response);
+ pci_hose_write_config_dword (hose, dev, PCI_BASE_ADDRESS_0 + offset,
+ 0x0);
+ pci_hose_read_config_dword (hose, dev, PCI_BASE_ADDRESS_0 + offset,
+ &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);
+ pci_hose_write_config_dword (hose, dev, PCI_BASE_ADDRESS_0 + bar * 4,
+ bar_value);
}
}
+#ifdef CONFIG_USE_CPCIDVI
+static void gt_setup_cpcidvi (struct pci_controller *hose,
+ pci_dev_t dev, struct pci_config_table *entry)
+{
+ u32 bar_value, pci_response;
+
+ pci_hose_read_config_dword (hose, dev, PCI_COMMAND, &pci_response);
+ pci_hose_write_config_dword (hose, dev, PCI_BASE_ADDRESS_0, 0xffffffff);
+ pci_hose_read_config_dword (hose, dev, PCI_BASE_ADDRESS_0, &pci_response);
+ pciauto_region_allocate (hose->pci_mem, 0x01000000, &bar_value);
+ pci_hose_write_config_dword (hose, dev, PCI_BASE_ADDRESS_0, (bar_value & 0xffffff00));
+ pci_hose_write_config_dword (hose, dev, PCI_ROM_ADDRESS, 0x0);
+ pciauto_region_allocate (hose->pci_mem, 0x40000, &bar_value);
+ pci_hose_write_config_dword (hose, dev, PCI_ROM_ADDRESS, (bar_value & 0xffffff00) | 0x01);
+ gt_cpcidvi_rom.base = bar_value & 0xffffff00;
+ gt_cpcidvi_rom.init = 1;
+}
+
+unsigned char gt_cpcidvi_in8(unsigned int offset)
+{
+ unsigned char data;
+
+ if (gt_cpcidvi_rom.init == 0) {
+ return(0);
+ }
+ data = in8((offset & 0x04) + 0x3f000 + gt_cpcidvi_rom.base);
+ return(data);
+}
+
+void gt_cpcidvi_out8(unsigned int offset, unsigned char data)
+{
+ unsigned int off;
+
+ if (gt_cpcidvi_rom.init == 0) {
+ return;
+ }
+ off = data;
+ off = ((off << 3) & 0x7f8) + (offset & 0x4) + 0x3e000 + gt_cpcidvi_rom.base;
+ in8(off);
+ return;
+}
+#endif
/* TODO BJW: Change this for DB64360. This was pulled from the EV64260 */
/* and is curently not called *. */
@@ -835,9 +885,12 @@ static void gt_fixup_irq (struct pci_controller *hose, pci_dev_t dev)
#endif
struct pci_config_table gt_config_table[] = {
+#ifdef CONFIG_USE_CPCIDVI
+ {PCI_VENDOR_ID_CT, PCI_DEVICE_ID_CT_69030, PCI_CLASS_DISPLAY_VGA,
+ PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, gt_setup_cpcidvi},
+#endif
{PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_STORAGE_IDE,
PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, gt_setup_ide},
-
{}
};
@@ -857,10 +910,21 @@ void pci_init_board (void)
#ifdef CONFIG_PCI_PNP
unsigned int bar;
#endif
-
#ifdef DEBUG
gt_pci_bus_mode_display (PCI_HOST0);
#endif
+#ifdef CONFIG_USE_CPCIDVI
+ gt_cpcidvi_rom.init = 0;
+ gt_cpcidvi_rom.base = 0;
+#endif
+
+ pci0_hose.config_table = gt_config_table;
+ pci1_hose.config_table = gt_config_table;
+
+#ifdef CONFIG_USE_CPCIDVI
+ gt_config_table[0].config_device = gt_setup_cpcidvi;
+#endif
+ gt_config_table[1].config_device = gt_setup_ide;
pci0_hose.first_busno = 0;
pci0_hose.last_busno = 0xff;
diff --git a/board/esd/cpci750/u-boot.lds b/board/esd/cpci750/u-boot.lds
index 0dfa8c00054..d89eb6cff20 100644
--- a/board/esd/cpci750/u-boot.lds
+++ b/board/esd/cpci750/u-boot.lds
@@ -74,6 +74,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -106,11 +107,13 @@ SECTIONS
_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 = .;
diff --git a/board/esd/cpciiser4/cpciiser4.c b/board/esd/cpciiser4/cpciiser4.c
index 3d1f1fa0972..7bf7bb5a5e5 100644
--- a/board/esd/cpciiser4/cpciiser4.c
+++ b/board/esd/cpciiser4/cpciiser4.c
@@ -153,7 +153,7 @@ int checkboard (void)
{
int index;
int len;
- unsigned char str[64];
+ char str[64];
int i = getenv_r ("serial#", str, sizeof (str));
puts ("Board: ");
diff --git a/board/esd/cpciiser4/u-boot.lds b/board/esd/cpciiser4/u-boot.lds
index 311a5fe7f2f..f7a20d1da23 100644
--- a/board/esd/cpciiser4/u-boot.lds
+++ b/board/esd/cpciiser4/u-boot.lds
@@ -67,7 +67,6 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -87,6 +86,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -119,11 +119,13 @@ SECTIONS
_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 = .;
diff --git a/board/esd/dasa_sim/cmd_dasa_sim.c b/board/esd/dasa_sim/cmd_dasa_sim.c
index 9edb3afaa5f..89a4aaf80a5 100644
--- a/board/esd/dasa_sim/cmd_dasa_sim.c
+++ b/board/esd/dasa_sim/cmd_dasa_sim.c
@@ -111,7 +111,7 @@ static void showPci9054 (void)
for (i = 0; i < 4; i++) {
pci_read_config_dword (CFG_PCI9054_DEV_FN,
l * 16 + i * 4,
- &val);
+ (unsigned int *)&val);
printf ("%08x ", val);
}
printf ("\n");
diff --git a/board/esd/dasa_sim/dasa_sim.c b/board/esd/dasa_sim/dasa_sim.c
index 57a971f433c..2f8ab1a4787 100644
--- a/board/esd/dasa_sim/dasa_sim.c
+++ b/board/esd/dasa_sim/dasa_sim.c
@@ -162,7 +162,7 @@ int checkboard (void)
{
int index;
int len;
- unsigned char str[64];
+ char str[64];
int i = getenv_r ("serial#", str, sizeof (str));
int fpga;
unsigned short val;
diff --git a/board/esd/dasa_sim/u-boot.lds b/board/esd/dasa_sim/u-boot.lds
index 5e7b2250143..fef5b524331 100644
--- a/board/esd/dasa_sim/u-boot.lds
+++ b/board/esd/dasa_sim/u-boot.lds
@@ -101,6 +101,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -133,11 +134,13 @@ SECTIONS
_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 = .;
diff --git a/board/esd/dp405/dp405.c b/board/esd/dp405/dp405.c
index 056063e6dac..fd51f7f343e 100644
--- a/board/esd/dp405/dp405.c
+++ b/board/esd/dp405/dp405.c
@@ -100,7 +100,7 @@ int misc_init_r (void)
int checkboard (void)
{
- unsigned char str[64];
+ 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};
diff --git a/board/esd/dp405/u-boot.lds b/board/esd/dp405/u-boot.lds
index 311a5fe7f2f..43f776579ef 100644
--- a/board/esd/dp405/u-boot.lds
+++ b/board/esd/dp405/u-boot.lds
@@ -67,7 +67,7 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
+ cpu/ppc4xx/4xx_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -87,6 +87,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -119,11 +120,13 @@ SECTIONS
_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 = .;
diff --git a/board/esd/du405/du405.c b/board/esd/du405/du405.c
index 7db2a609789..26e834196bd 100644
--- a/board/esd/du405/du405.c
+++ b/board/esd/du405/du405.c
@@ -162,7 +162,7 @@ int checkboard (void)
{
int index;
int len;
- unsigned char str[64];
+ char str[64];
int i = getenv_r ("serial#", str, sizeof (str));
puts ("Board: ");
diff --git a/board/esd/du405/u-boot.lds b/board/esd/du405/u-boot.lds
index b1793a2782f..1cf375fef56 100644
--- a/board/esd/du405/u-boot.lds
+++ b/board/esd/du405/u-boot.lds
@@ -67,7 +67,6 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -87,6 +86,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -119,11 +119,13 @@ SECTIONS
_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 = .;
diff --git a/board/esd/hh405/fpgadata.c b/board/esd/hh405/fpgadata.c
index 2b1448e8337..58ee3a846fc 100644
--- a/board/esd/hh405/fpgadata.c
+++ b/board/esd/hh405/fpgadata.c
@@ -1,2489 +1,2520 @@
- 0x1f,0x8b,0x08,0x08,0x00,0x37,0x39,0x42,0x00,0x03,0x68,0x68,0x34,0x30,0x35,0x5f,
- 0x31,0x5f,0x30,0x34,0x2e,0x62,0x69,0x74,0x00,0xec,0xfd,0x7f,0x7c,0x54,0xe5,0x99,
- 0x37,0x8e,0x5f,0xe7,0x3e,0x27,0xe1,0x64,0xce,0x24,0x73,0x98,0x04,0x1b,0x01,0xf1,
- 0x64,0x12,0x70,0xa0,0x93,0x30,0x4c,0x10,0x31,0xc6,0xc9,0x61,0x12,0xe9,0x08,0x54,
- 0xa6,0xd6,0xed,0xb2,0x5d,0x3f,0xdd,0x81,0xd2,0x6e,0xda,0x8f,0x75,0xa3,0xed,0xb3,
- 0x4b,0x5d,0xd7,0xde,0x99,0x04,0x98,0x10,0x84,0x01,0xa9,0x46,0xcb,0xe3,0x0e,0x31,
- 0x6a,0x54,0xda,0x0e,0x01,0x25,0x28,0xc5,0x13,0x8c,0x1a,0x20,0x62,0x6a,0x69,0x17,
- 0xad,0xd5,0x41,0x83,0x06,0x1b,0x35,0x58,0xb4,0x09,0x3f,0xbf,0xd7,0x75,0x26,0xc9,
- 0x9c,0x09,0xdd,0x7d,0x76,0x3f,0xcf,0xeb,0xf3,0x7d,0xed,0xf7,0xf5,0x7d,0xb2,0x7f,
- 0xec,0xdd,0x33,0x37,0xc7,0x73,0xee,0x73,0xdf,0xd7,0xf5,0xbe,0xde,0xd7,0x2f,0xc8,
- 0x71,0x0c,0xa5,0xfe,0x0f,0x40,0x58,0x09,0x8e,0xda,0xda,0xf9,0xde,0x6b,0xff,0x6e,
- 0xde,0xdf,0x79,0xe7,0x97,0xdd,0xf9,0xed,0xd5,0xb0,0x0a,0x14,0xdf,0x0f,0xaf,0xf5,
- 0x7e,0xe7,0x47,0x77,0xcd,0x9b,0x3f,0x1f,0xbe,0x8d,0xff,0xcb,0xeb,0xbd,0x76,0xae,
- 0xb7,0x7c,0xee,0xbc,0xeb,0x60,0x35,0xe4,0x78,0x17,0x56,0x5c,0x3b,0xaf,0xc2,0x77,
- 0x3d,0x7c,0x07,0x84,0xf2,0xb6,0x4b,0xf8,0xf7,0xf4,0xc3,0x7f,0xf5,0x5d,0x2f,0x70,
- 0x01,0x00,0x26,0x79,0x85,0x30,0xfd,0x7f,0xc5,0x2b,0x68,0x02,0xf0,0xaa,0x52,0x2f,
- 0x18,0xf4,0xbf,0x61,0xf4,0xf7,0x1c,0x2f,0x68,0xd6,0xff,0x2d,0x78,0x41,0x87,0x10,
- 0xe8,0x1b,0x55,0x27,0xfc,0x27,0xfe,0x64,0x89,0x8f,0x0d,0xff,0x53,0xf3,0x61,0x7c,
- 0xfe,0xa5,0xc3,0xfc,0xdf,0x9d,0x94,0xfe,0xab,0xfa,0x2c,0x3e,0x3a,0x52,0x99,0xf7,
- 0x7f,0x3d,0x5d,0x08,0xc2,0xd8,0x5d,0x3f,0x7d,0xeb,0x3f,0x73,0xff,0xeb,0xbe,0x18,
- 0xbb,0xff,0x7f,0x75,0x3e,0xa8,0xff,0x89,0xe9,0xf8,0xbe,0x63,0x83,0x4f,0x55,0x41,
- 0xc7,0x7f,0x93,0x0d,0x02,0x87,0x30,0x14,0xfe,0x3b,0x83,0xeb,0xba,0xc7,0xe6,0x1b,
- 0x6b,0x87,0x4b,0xde,0xee,0xba,0xee,0xe5,0xdc,0x3d,0xa2,0xbf,0xe6,0xc3,0x98,0xaf,
- 0xdb,0xde,0x2b,0xde,0x57,0x73,0x2e,0x56,0xd5,0xbf,0x6c,0xa4,0xf8,0x22,0x0c,0x86,
- 0x77,0x73,0xfb,0x29,0x71,0x48,0xaa,0x1b,0x9b,0x5f,0x78,0x4a,0x8b,0x82,0x2b,0x2a,
- 0x77,0x30,0x0f,0x6f,0xd6,0x5a,0x7b,0x96,0x44,0xf2,0x77,0xf2,0x17,0xb4,0xb2,0x1e,
- 0x9b,0xcf,0x35,0xa8,0x75,0xd6,0xb9,0x22,0xb6,0x56,0x36,0x24,0x8d,0xad,0x62,0x4f,
- 0x56,0x3b,0x9f,0xaa,0x95,0x18,0x39,0x09,0x66,0x6f,0xfc,0xb2,0x6b,0x4e,0x4f,0x90,
- 0x3b,0xed,0xd1,0xdd,0x9a,0xa7,0x47,0xf6,0xb1,0xde,0xc6,0x56,0xd0,0x82,0xb2,0x8b,
- 0x7d,0x26,0x8c,0xdf,0x5f,0x6a,0xaf,0x69,0x06,0x57,0xa3,0xdc,0xce,0x3c,0xd0,0xdc,
- 0x38,0xa7,0x6f,0x2a,0x67,0x3b,0x85,0x17,0xa4,0x32,0xc3,0x96,0x60,0x83,0xf0,0x3c,
- 0xb8,0x16,0xd9,0xe2,0x6c,0x08,0xdf,0x24,0xf5,0xb7,0x68,0x4a,0x2d,0xef,0x93,0x17,
- 0xe8,0xa5,0xfb,0x9b,0x3d,0xf2,0x09,0xa3,0x22,0xbc,0xd1,0x55,0xec,0x91,0xcf,0x49,
- 0x7e,0xc3,0x9e,0x10,0x07,0xd5,0x53,0x89,0x8e,0xf8,0xc6,0x78,0xe0,0x18,0x8c,0xdd,
- 0x3f,0x2e,0x74,0xc0,0x05,0xed,0x46,0xc3,0x91,0x98,0x7c,0x5e,0xbe,0xc0,0xfe,0x29,
- 0xe8,0x30,0xc4,0xf3,0xf2,0x25,0xa8,0x32,0x1c,0x43,0xdf,0x3e,0x0f,0x23,0xf0,0x62,
- 0x70,0x73,0x92,0x0d,0x8c,0xdf,0xdf,0x50,0x77,0xc2,0x59,0x56,0x61,0xe4,0x6e,0x13,
- 0x77,0xe2,0xaf,0xbe,0xbe,0xbc,0x88,0xe2,0xe1,0x7f,0x94,0x7d,0x3d,0x8e,0x84,0xe8,
- 0x81,0x3f,0xc9,0xde,0xad,0x8e,0x56,0x31,0x01,0xda,0xe8,0xfc,0xe3,0x59,0x12,0xec,
- 0x03,0xd7,0x79,0x79,0x26,0x3e,0x7f,0x8b,0xa4,0xdd,0x9e,0xbb,0x91,0x95,0xaa,0xcd,
- 0x30,0x67,0x48,0x49,0x38,0x3d,0xf0,0x02,0xb8,0x74,0xa5,0x7d,0xc3,0x02,0xdc,0xfd,
- 0x63,0xef,0x1b,0x54,0x13,0x93,0xb5,0x64,0x8e,0x37,0x7b,0x27,0xec,0x82,0xb0,0xa1,
- 0x48,0xec,0xfe,0x9a,0x72,0x58,0x35,0xa4,0x78,0x99,0x1d,0x12,0xaa,0xd6,0xa8,0x68,
- 0x6c,0xa1,0x14,0x1a,0x9d,0x3f,0x1c,0xfa,0xa6,0xfe,0x2c,0x2f,0x6a,0x0b,0xae,0xc9,
- 0x9e,0x01,0x57,0xc5,0x1e,0xeb,0x6f,0x5a,0x12,0x39,0x50,0xb3,0x97,0xcf,0x1e,0x58,
- 0xba,0x86,0xcd,0x80,0x3d,0xbc,0x28,0xac,0x9c,0x62,0x95,0xe3,0xf7,0x0f,0xca,0x41,
- 0x78,0x9e,0xf9,0x8c,0xd2,0x85,0xe2,0x46,0x7e,0x3a,0xe9,0x1d,0xc8,0xe3,0xe2,0x2f,
- 0xf8,0x39,0xee,0x7d,0x6f,0x92,0x57,0xb4,0xc3,0x67,0x82,0x37,0xea,0xd0,0xc4,0xad,
- 0x6c,0x6c,0x3f,0xe8,0x53,0x3a,0xd5,0x0b,0xea,0x73,0xdc,0x31,0x24,0x9e,0x87,0x37,
- 0x85,0x1b,0x79,0xde,0xc1,0xa5,0x77,0xf0,0x23,0x2a,0xad,0x8f,0x72,0x5e,0xbf,0xa0,
- 0x56,0xe9,0x9b,0xc3,0x4a,0x5f,0xf6,0xd8,0xfa,0xc8,0x6a,0x1b,0x1c,0x07,0xbf,0xb1,
- 0x2c,0x91,0xef,0x51,0x47,0x20,0xa1,0x4f,0xf7,0x8a,0x3b,0xa5,0x23,0xf5,0xbe,0x2e,
- 0x47,0xa2,0x7a,0x50,0xde,0x07,0x3e,0xee,0x89,0xe7,0xcc,0x19,0x5f,0xff,0x1e,0x75,
- 0x1b,0x64,0xb1,0x52,0xc3,0x5d,0xe7,0x9c,0x0e,0xcf,0x42,0x91,0xfe,0x4d,0x5d,0x38,
- 0xaf,0xae,0x87,0x22,0x43,0xa9,0x63,0x6f,0xc3,0x01,0x98,0xad,0xcb,0x61,0xe6,0x93,
- 0xc6,0xee,0xaf,0xc1,0x3a,0x35,0x9b,0x7b,0x4e,0x04,0x17,0xba,0xbe,0x05,0xbf,0x8a,
- 0xfe,0x7d,0xb2,0xa5,0xc7,0xf5,0x28,0x3c,0xc4,0x67,0x26,0x95,0x35,0xec,0x1d,0x58,
- 0x5f,0x5f,0x14,0x97,0x07,0x9c,0xe1,0xf1,0xf5,0xaf,0x95,0xd6,0xb9,0xea,0xfb,0x3c,
- 0xdd,0xb2,0xd7,0xb6,0x0c,0x76,0x49,0x25,0x49,0x9b,0x68,0xeb,0x85,0x07,0xa0,0xc4,
- 0xc0,0xf5,0xec,0x15,0x76,0xc3,0x9c,0x3b,0x64,0x8d,0xdd,0x3a,0xbe,0x3f,0x07,0x84,
- 0x73,0xfc,0x28,0xab,0x8a,0xdb,0x07,0x26,0xd5,0xc2,0x17,0xea,0x75,0x9d,0xf6,0x81,
- 0x69,0xed,0xec,0x2d,0xf8,0x8c,0x3b,0xe2,0xe2,0xc0,0xe4,0xa3,0x7a,0x39,0xb7,0x27,
- 0xc5,0x8a,0xf1,0xe7,0x09,0x0a,0x78,0x59,0xf3,0x6b,0x57,0xaf,0x9d,0x14,0x87,0x61,
- 0x5c,0x5a,0x5c,0xcf,0xa4,0x3c,0x10,0xa8,0x00,0x07,0x0e,0xb2,0x86,0x6d,0x7e,0xd8,
- 0xcc,0xc5,0xad,0x30,0x76,0x7f,0x19,0xd6,0xc1,0x21,0xb8,0xaf,0xc6,0xde,0x32,0x69,
- 0x96,0x3c,0x02,0xf3,0xf5,0xdc,0x98,0x58,0x42,0x57,0xf4,0x49,0x31,0xb1,0x5f,0x1a,
- 0x11,0x7c,0xb5,0xf6,0x47,0x6c,0x6c,0xfc,0x79,0xb8,0xfa,0xf7,0xc2,0x9b,0x7a,0x59,
- 0xa8,0xf4,0x11,0xe5,0xef,0x71,0xf5,0x5a,0xf5,0xb9,0xdb,0xc4,0xd5,0xf0,0xa6,0xeb,
- 0xbe,0x90,0xb2,0x8d,0x7d,0x08,0xfb,0x74,0x57,0x58,0x56,0x1d,0xe1,0x71,0xb1,0xb0,
- 0x30,0x6b,0xe6,0x4d,0x4f,0xe9,0x1e,0x5d,0x9e,0x3c,0x6b,0xa6,0xbe,0x8f,0xcd,0xd2,
- 0x7f,0x5c,0xe0,0x92,0xa0,0x49,0xb8,0x13,0xe7,0x3b,0x4f,0xde,0xb4,0x43,0x77,0x19,
- 0x72,0x2c,0xfb,0x95,0xf1,0xfd,0xa0,0x15,0x64,0xe5,0xec,0x58,0xe4,0xe9,0x93,0x0b,
- 0xb2,0xb3,0xa4,0x7d,0xba,0x16,0x9a,0x56,0xc0,0x6e,0x12,0xb6,0x04,0x6a,0x43,0x4a,
- 0x01,0x7b,0x59,0xd8,0xa5,0xc7,0x43,0xf2,0xb6,0xec,0x83,0xc2,0xd8,0x7e,0x58,0x93,
- 0x1b,0x66,0xed,0xac,0x0c,0x64,0xce,0x34,0x7c,0xdf,0x05,0x90,0xcb,0x45,0x0d,0x0c,
- 0x28,0x13,0xe8,0x7d,0xf1,0x8a,0x17,0x3c,0x5c,0xdc,0x24,0x8e,0xed,0xcf,0x96,0xac,
- 0xcf,0xe1,0x0f,0x50,0x15,0x72,0x1c,0x13,0xcf,0xe0,0xf7,0x7d,0x31,0xb4,0xbc,0x4f,
- 0xec,0xc7,0x83,0xe3,0xd7,0x1d,0xf8,0xbe,0x70,0xa9,0x06,0x7f,0x0a,0x89,0xb3,0xb2,
- 0xc7,0xf6,0x43,0x61,0x56,0xbf,0x7e,0x08,0x7c,0xcb,0x37,0xe2,0xaf,0xea,0x21,0xdd,
- 0x77,0x93,0x5d,0xc5,0xf5,0x19,0x81,0x7b,0x74,0xfb,0x16,0xb1,0x44,0x3f,0xe2,0xf6,
- 0x2d,0xb6,0xc7,0x26,0xbd,0x32,0xbe,0x7f,0x16,0x16,0x9e,0x60,0x51,0xad,0xb5,0x50,
- 0x6e,0x5c,0x97,0x8c,0x44,0xf1,0x75,0x64,0x6e,0xd3,0x0a,0x3a,0xa1,0x02,0xdc,0x7c,
- 0x69,0x98,0x7e,0x52,0xf3,0x0c,0x76,0x74,0x7c,0x3d,0x83,0x59,0xdb,0x8c,0xb5,0xb3,
- 0x8b,0x83,0xd1,0xaf,0x07,0x8e,0xcd,0xbc,0x1f,0x8a,0x82,0x3d,0xdf,0x6c,0x2d,0x68,
- 0xbf,0xd6,0x5d,0xba,0x44,0x0e,0xb1,0x82,0xc6,0xb5,0xee,0x22,0x3d,0xe7,0xd6,0xc8,
- 0xd6,0x71,0xf9,0xd3,0x22,0x6d,0x73,0xae,0xe5,0xc5,0xba,0x7c,0x9c,0x1d,0x53,0xef,
- 0xd7,0x1f,0x0b,0x15,0xde,0xea,0x9c,0x2f,0xfd,0x0a,0x4a,0xf5,0x60,0x88,0xdd,0x26,
- 0xaf,0xd5,0x8a,0x42,0x4b,0xfa,0x9c,0xaf,0x8c,0xef,0x87,0xf8,0xe4,0xef,0x34,0x1e,
- 0x5a,0xe5,0xd4,0xed,0x0f,0xb2,0x7e,0x38,0x24,0xf8,0xea,0x3c,0xf4,0x7d,0x47,0x84,
- 0xfb,0x74,0x7c,0xa3,0x12,0xa9,0x09,0x7c,0x61,0xfc,0xe2,0x03,0xe3,0xf2,0xb3,0x67,
- 0x51,0x9b,0x36,0x22,0xfb,0x6b,0xe7,0xc6,0xf2,0x71,0x59,0xe4,0xfd,0x4b,0xe6,0xc6,
- 0xcc,0xf5,0xa9,0xa0,0xf5,0x69,0x83,0x11,0xee,0x0f,0x3a,0x62,0x0d,0x67,0xc7,0xe5,
- 0x8f,0xac,0xee,0x10,0x7a,0x74,0x1f,0xd8,0x71,0xd9,0x0b,0x7b,0x60,0x81,0xea,0xe1,
- 0xc5,0x9a,0xd4,0x23,0xf8,0x61,0x19,0xad,0x7f,0x4f,0x8d,0x0f,0x82,0x46,0xfe,0x12,
- 0x69,0x6c,0xff,0xbb,0xb3,0xdc,0xec,0x30,0x68,0xdc,0x16,0x9f,0xe6,0xce,0x8e,0xe8,
- 0xae,0x58,0x5e,0x9c,0xb5,0xc3,0x5b,0x50,0xc6,0xed,0xed,0xce,0x01,0xd8,0x00,0x73,
- 0xf0,0x27,0xd1,0x36,0xbe,0x1f,0xdc,0xd2,0x72,0x78,0xc0,0x70,0x1b,0xb2,0x37,0x7b,
- 0x19,0x0e,0x34,0xa3,0xd0,0x9b,0x6d,0x17,0x1a,0xe0,0x8e,0x64,0x8e,0x9f,0xbd,0xce,
- 0x1b,0xb8,0x66,0xc8,0x0b,0x99,0x0d,0xc6,0xbe,0x2f,0x57,0x6f,0xd7,0xd6,0xd7,0x14,
- 0x73,0xb9,0x36,0x32,0x1d,0x1e,0x5a,0x54,0xd4,0x65,0xeb,0x63,0x0f,0x66,0x3d,0x28,
- 0xff,0xa0,0x4f,0xfe,0x51,0xe0,0x0f,0xb0,0x5e,0x2f,0x32,0x6c,0xf7,0x32,0xf7,0xf8,
- 0xfd,0xa3,0xd1,0xbb,0xe1,0x51,0xbe,0x2f,0xec,0x3e,0x2e,0xfa,0xe0,0x5f,0xf9,0xb3,
- 0x49,0x7b,0x6d,0xb1,0x1f,0x5e,0xe5,0x73,0xe3,0xa5,0xb5,0xe2,0x59,0x76,0x94,0xef,
- 0x0e,0xdb,0x87,0x95,0x39,0xe3,0xf2,0x47,0x16,0xe2,0x70,0x16,0x2a,0xbb,0x70,0x59,
- 0x92,0xf2,0x1f,0x45,0xbf,0x71,0x35,0xad,0xcf,0x39,0xf8,0x47,0x83,0xce,0x23,0xfc,
- 0x11,0x45,0x8d,0x23,0x31,0xe9,0xe0,0xb8,0xfc,0x61,0xd2,0x01,0xf8,0x38,0x72,0x43,
- 0xbf,0xd4,0x59,0xfd,0x89,0xfe,0x36,0x9f,0xbf,0x33,0x6f,0x78,0xda,0x01,0xfd,0x52,
- 0x6c,0x41,0xd8,0x3e,0xc2,0x66,0x49,0x1f,0xf3,0xf2,0xa4,0xbd,0x47,0x80,0xf1,0xf5,
- 0x6f,0x97,0xf7,0x7b,0x51,0xda,0xb4,0xd9,0x07,0x50,0x7e,0xf6,0x6d,0xb9,0x76,0x20,
- 0xf7,0x6b,0xe2,0x62,0xf8,0x82,0x2f,0x4c,0xda,0xce,0xb2,0xe7,0x60,0x3d,0xec,0x30,
- 0x6c,0x06,0x7b,0x7a,0xfc,0xfb,0x02,0xdf,0x0e,0x8f,0xab,0xee,0xa0,0xad,0xce,0x95,
- 0xe0,0x8d,0x50,0xbc,0xf6,0x91,0x24,0xdb,0x6e,0xec,0x2d,0x12,0x20,0xe7,0x2e,0x36,
- 0x1d,0x1a,0x51,0x82,0xc9,0xb5,0x0c,0xc6,0xe5,0x8f,0x26,0x6d,0x84,0x86,0x90,0xd6,
- 0x93,0x33,0x2f,0x82,0x9b,0x09,0x66,0x19,0x7f,0x53,0xc0,0x6a,0x50,0xec,0xbb,0x0d,
- 0x25,0x11,0x30,0x7f,0x1a,0xb2,0x69,0x2c,0x3a,0x2e,0x1f,0xda,0xa7,0xdc,0x01,0xef,
- 0x43,0x45,0x5f,0xde,0x7e,0xb6,0x13,0x8e,0x40,0xc7,0xe2,0xbc,0xfd,0x62,0x3b,0x29,
- 0x1a,0x03,0xb7,0x8d,0x87,0x35,0x1b,0xad,0x6d,0x72,0x42,0x9c,0x33,0xbe,0x1f,0xb8,
- 0xb0,0x13,0x57,0xc3,0xdf,0x98,0x17,0x47,0x7d,0x74,0xce,0xe6,0x37,0x36,0xed,0x12,
- 0x07,0x85,0x01,0x5c,0x96,0xbc,0x98,0x38,0x28,0xe3,0x4f,0xdd,0xa8,0x98,0x92,0xe3,
- 0xf7,0x2f,0x52,0x13,0xd2,0x3b,0xf2,0x97,0x17,0xdd,0xdf,0xc7,0xf6,0xf3,0x7f,0xd0,
- 0xa6,0xe9,0xf6,0x81,0xc7,0x2a,0xe0,0xb5,0x82,0x2f,0x73,0xb1,0x4b,0x5c,0x08,0x07,
- 0xe5,0x0e,0x70,0x0c,0x31,0x43,0x1f,0x9b,0xbf,0x43,0x0a,0x4b,0x1b,0xd8,0xf7,0x0d,
- 0x5b,0x8c,0xfd,0x32,0xf6,0x4c,0x72,0x4e,0xbf,0x6d,0xa1,0x78,0x27,0x34,0x81,0xcb,
- 0x58,0xca,0xf1,0xb3,0xfe,0x1e,0x35,0xa0,0x92,0x60,0xc9,0x71,0xf9,0xc3,0xb3,0xec,
- 0xf0,0xb0,0xe0,0x36,0xa2,0xa4,0xad,0x9a,0x81,0xc1,0x92,0x0e,0x9b,0x1c,0x6f,0x26,
- 0x35,0x97,0x60,0x28,0x88,0x98,0x2b,0xa6,0x70,0x96,0x94,0xc6,0xf6,0x83,0x2c,0xa1,
- 0x5a,0xc7,0xb3,0x6a,0x2b,0x89,0x6c,0x84,0xe2,0x25,0x6e,0x54,0xeb,0xb6,0x65,0x77,
- 0xb6,0x16,0xc6,0x7b,0xa6,0x79,0x6d,0x12,0x0a,0x6a,0x30,0x14,0x60,0x69,0xf9,0x03,
- 0xff,0xf3,0x0e,0xf8,0x35,0x3c,0x1d,0xb4,0x93,0xb6,0x7d,0x1f,0x7c,0x33,0xe6,0xc4,
- 0x99,0x9b,0xbf,0xa4,0x79,0xed,0x8e,0x0e,0xd1,0x13,0xed,0x01,0x1f,0xe0,0xc6,0x30,
- 0xc6,0xe5,0x4f,0xfc,0xaa,0xf3,0xd2,0x25,0x5a,0x84,0xa1,0x49,0x6f,0xeb,0xff,0xac,
- 0x55,0x19,0x93,0xea,0x84,0x41,0xfe,0xb7,0xda,0x75,0xbd,0x8e,0x5d,0xe2,0x79,0xfd,
- 0x12,0xdc,0x60,0x38,0x92,0xe2,0xc0,0xb8,0xfc,0x31,0xb2,0x2e,0xc2,0xbf,0xf1,0xf2,
- 0x6e,0x14,0xf2,0xff,0x02,0xbf,0xa5,0xdd,0x32,0x54,0x7c,0x2b,0xbc,0xce,0x6f,0x30,
- 0xec,0x9d,0xb8,0x63,0x7b,0x63,0xe5,0x25,0xf6,0xe3,0xe2,0xd0,0xb8,0xfc,0xe1,0xea,
- 0x27,0xea,0x61,0xee,0xea,0x91,0x13,0xec,0x46,0x68,0xe2,0x0b,0x92,0x79,0x9f,0xa3,
- 0x60,0x7c,0xcc,0x5d,0x74,0x50,0x4e,0x1c,0x04,0xad,0xa9,0xc8,0x25,0x07,0x63,0xf8,
- 0xbe,0xe3,0xf2,0x3f,0xab,0x47,0x6e,0x90,0x4a,0x0c,0x54,0x3a,0x5f,0x6d,0xdc,0x85,
- 0xdb,0x20,0xc7,0xeb,0xd2,0xa1,0x41,0x73,0x77,0x23,0xfe,0x01,0x88,0xe0,0xc6,0x91,
- 0x55,0x7c,0xdf,0xf1,0xe7,0xf9,0xda,0xd3,0xb0,0x21,0x34,0xcb,0x70,0x27,0x10,0x3f,
- 0x3c,0xa5,0x9a,0xb0,0xa7,0x18,0x1e,0xc3,0xf5,0x77,0x7b,0xf1,0x3f,0xa4,0x80,0x0b,
- 0xe4,0x58,0x64,0x28,0xbd,0x3f,0x0b,0x7e,0x2e,0x1f,0x81,0x05,0x5d,0xf6,0xc7,0x1b,
- 0xee,0x80,0xd3,0x7c,0xa1,0x91,0x9b,0x10,0x57,0xb1,0x23,0x50,0x61,0xd8,0xf7,0x89,
- 0xb3,0x24,0x03,0x37,0x12,0x4a,0xa4,0xbe,0xf1,0xfd,0x7f,0x82,0xef,0x67,0x17,0xe1,
- 0x79,0xc3,0xd1,0x29,0x0e,0xc2,0x1f,0x1a,0xaf,0xc3,0xd3,0x84,0x82,0xfa,0x12,0xdc,
- 0x68,0xcc,0x1d,0x52,0xce,0x04,0x2e,0x40,0x55,0x17,0x8a,0xee,0x61,0x0b,0xfe,0x79,
- 0x0a,0x7e,0xaf,0x57,0x18,0x79,0xad,0xb8,0xdf,0x0e,0x49,0xbe,0x83,0x79,0x5e,0x31,
- 0xa9,0xff,0x11,0x6f,0x8b,0x5f,0x64,0x16,0x3f,0x0c,0xbe,0x13,0x8e,0xed,0x88,0x0f,
- 0xc7,0xf6,0x7f,0x8f,0xc4,0x60,0xab,0x56,0x6c,0xc8,0xcf,0xb9,0x2a,0xd5,0x37,0xb9,
- 0xeb,0xb8,0x72,0x9e,0x3d,0x01,0xcd,0xec,0xcb,0x86,0x9c,0x08,0x3c,0x09,0xcd,0xdc,
- 0xd5,0x9f,0x17,0x63,0x9f,0x8d,0xcb,0x87,0x64,0x56,0x10,0x3a,0xcc,0xfd,0x36,0x75,
- 0x27,0xdb,0xb1,0x04,0xfa,0x96,0xf8,0x59,0x1c,0xdf,0x57,0xa3,0xf7,0x7d,0x8a,0xc5,
- 0xe3,0x2e,0x50,0x5c,0x6c,0x78,0x5c,0xfe,0x84,0x85,0xa9,0xfc,0x40,0x7d,0x51,0x52,
- 0x26,0xb4,0xf3,0xd3,0x96,0x1d,0x49,0xe5,0xc7,0x91,0xbd,0xb0,0x9e,0x7f,0xaf,0x1f,
- 0xaf,0x3c,0x02,0x8f,0xf3,0x22,0xcd,0x56,0xcb,0x8e,0x5b,0xf0,0x8f,0xac,0x7d,0x06,
- 0x0b,0x0d,0x7c,0xec,0x4d,0xb1,0x2e,0xf0,0xd2,0x80,0xab,0x8f,0x81,0x77,0xc0,0xfe,
- 0x82,0x28,0xc3,0x47,0xb2,0x57,0x76,0xb8,0xc4,0x37,0xd2,0xf8,0xe7,0xaa,0x4e,0xfe,
- 0xb6,0x89,0x06,0xc5,0x0b,0x7c,0x04,0xe6,0xd2,0x60,0x27,0xae,0x8f,0xff,0x8d,0xcd,
- 0x43,0xe2,0xb0,0xfe,0x2e,0x54,0x81,0x63,0x40,0x4c,0xe3,0x9f,0xf6,0xac,0x1e,0x78,
- 0x8b,0x2f,0x30,0x72,0xbd,0xb4,0x3e,0xb8,0xec,0x8e,0xe7,0x50,0x3f,0xfe,0x1e,0x07,
- 0x65,0x88,0x3f,0x01,0xf7,0xa7,0x21,0xb7,0x8b,0x16,0xfc,0x33,0xb9,0x45,0x5d,0x07,
- 0xf3,0x7a,0x7a,0xea,0x58,0x25,0x7f,0x1c,0xae,0x35,0x1c,0x9f,0xb3,0x02,0xb6,0x1e,
- 0xb4,0x1e,0x19,0xf1,0x0f,0x5b,0x8b,0x40,0x28,0x03,0xff,0x18,0xf0,0x08,0xca,0xcf,
- 0x92,0xc1,0xd9,0xc3,0x91,0x47,0x7b,0xee,0x8f,0xce,0x46,0xd8,0x63,0xbb,0x15,0xdf,
- 0x77,0xf6,0x80,0x6d,0x8d,0xf3,0x1d,0xd8,0x84,0x40,0xa8,0x73,0x20,0xe0,0x1d,0x97,
- 0x3f,0xc1,0x82,0xa0,0x1e,0x51,0x35,0xdc,0x66,0xd9,0x1e,0xf9,0x31,0x84,0x3d,0x36,
- 0x6f,0xf6,0x1d,0xb8,0x6d,0x50,0x8c,0x17,0xb2,0x8f,0x79,0x33,0xb4,0x19,0x99,0xf8,
- 0x67,0x4a,0x0b,0xbc,0xc3,0x17,0xf0,0xdc,0x01,0xb1,0x9d,0x1d,0xe6,0x0b,0xb9,0x12,
- 0x17,0x7f,0x0c,0x87,0xa1,0x82,0xe7,0x3d,0x2d,0x9e,0x92,0x0e,0xc3,0x82,0xd8,0xb2,
- 0xb8,0x62,0xc1,0x3f,0x70,0x02,0x95,0x7e,0x05,0xe4,0x71,0x05,0xb5,0xbf,0x8e,0xb0,
- 0x07,0xc4,0x1d,0xda,0x00,0x02,0x37,0x07,0x77,0x26,0x25,0xfc,0x29,0xdb,0xd1,0x6d,
- 0xc5,0x3f,0xa1,0x7e,0xf9,0x4d,0x5e,0xa9,0xdb,0xaf,0x24,0xd8,0xa3,0x2f,0x08,0x67,
- 0xc7,0xc4,0x6b,0x18,0x6a,0x7c,0xdd,0x1e,0x13,0x3f,0x84,0x9b,0xb9,0x33,0xbc,0x6c,
- 0xab,0x78,0x30,0x8d,0x7f,0xa4,0xef,0x40,0x53,0x5f,0x99,0x8e,0x9b,0xbc,0x04,0x7e,
- 0xad,0x31,0x5d,0xde,0x86,0xfb,0x07,0xe5,0x0f,0xea,0x47,0xc4,0x3f,0x4d,0xdc,0xf5,
- 0x35,0x39,0x66,0x91,0x3f,0x85,0x50,0xa6,0x35,0xe9,0xdf,0xd5,0x6d,0xb1,0x40,0x09,
- 0x4e,0x9b,0x15,0xb4,0x6d,0x63,0x25,0x45,0x4f,0x81,0xa6,0xe3,0x31,0xec,0x87,0x9f,
- 0x87,0x9f,0xaa,0x91,0xfb,0x58,0x1a,0xff,0xc8,0x52,0x1b,0xab,0x07,0x4f,0xc8,0x56,
- 0xc0,0xb2,0xa4,0xc9,0xf8,0xbd,0x71,0xb0,0x96,0xd5,0x23,0x10,0xb2,0x15,0x04,0xfe,
- 0x0d,0x9e,0xd5,0xbf,0x57,0xe7,0xbe,0xcd,0x22,0x7f,0x3a,0x73,0xc2,0xf8,0x11,0x17,
- 0xd0,0xfb,0x6a,0x6a,0x54,0xa2,0x81,0x08,0x72,0x92,0xa1,0xda,0xe5,0xa2,0x81,0x86,
- 0xc2,0x42,0x40,0xd1,0xf1,0x89,0x38,0x36,0xbf,0xe5,0xaa,0x33,0x70,0x12,0xfc,0xa1,
- 0xd2,0x63,0xf9,0x27,0xe1,0x73,0x84,0x3d,0x68,0x38,0x9c,0x41,0x79,0x7e,0x20,0xe4,
- 0xe8,0x43,0x8d,0xdf,0x05,0x0b,0x74,0x87,0x2a,0x7e,0x20,0x8e,0xe3,0x8d,0xac,0x33,
- 0x88,0x97,0x7c,0x21,0xc7,0xaf,0x9b,0x57,0x27,0x5f,0x83,0x72,0xdd,0xde,0xd7,0x30,
- 0x9f,0xbd,0xa9,0xfa,0x96,0xcc,0xd8,0xa6,0xcc,0xd7,0x2f,0x98,0x57,0xc4,0x59,0x69,
- 0xfc,0xa3,0xc6,0x01,0xed,0x2f,0xb5,0x39,0x22,0x16,0xf1,0x1e,0xe6,0x82,0x5c,0x54,
- 0xce,0xd1,0xa8,0xc6,0x54,0x39,0x92,0x1f,0x86,0x4e,0xc9,0x27,0xcb,0x11,0xb6,0x69,
- 0x7c,0x3d,0x41,0xea,0x87,0x2d,0xa0,0xad,0x50,0x54,0x54,0x43,0xf5,0xb8,0x2c,0x4b,
- 0xd5,0x88,0xa4,0xd5,0x33,0x6d,0x89,0x2d,0xe6,0x94,0xea,0x77,0xc9,0x5a,0x40,0x56,
- 0x5b,0xd9,0xb8,0xfc,0x29,0x9c,0xdc,0xc6,0x9b,0x54,0x97,0xbe,0x34,0xc6,0x4a,0xd4,
- 0x87,0x11,0x7f,0xe2,0x3f,0x94,0xf4,0xa6,0x6c,0x97,0x1e,0xdd,0xca,0x56,0xc3,0xbe,
- 0x7a,0xad,0xab,0xd0,0xeb,0x5b,0x97,0xc6,0x3f,0xdb,0xd6,0x6a,0xbf,0xe6,0x1d,0xba,
- 0xa3,0x05,0x61,0x6a,0x3d,0x7e,0x56,0x47,0x0a,0xdf,0x76,0xe8,0xb6,0x14,0x90,0xdb,
- 0xaa,0xa3,0xfc,0x71,0x8f,0x3f,0x4f,0x3b,0xb4,0xa5,0xd0,0xe0,0x23,0x62,0x3f,0x3b,
- 0x65,0xf8,0x09,0x0f,0xf7,0x6b,0x23,0x50,0x69,0xe2,0x1f,0x1c,0x3c,0x1f,0x40,0xfc,
- 0xf3,0xd1,0xf8,0x7e,0x76,0xab,0x04,0xb3,0x7d,0x82,0xa3,0xfe,0x81,0x38,0x8a,0x81,
- 0x05,0x8c,0x80,0x90,0xf9,0x45,0xec,0xbc,0x18,0xf1,0x0f,0xf8,0x09,0x7f,0x1e,0x4e,
- 0xe3,0x1f,0xa9,0x02,0x0e,0x44,0x5d,0x5c,0x19,0x08,0xb8,0xd5,0xa3,0x6a,0x51,0xbb,
- 0x2d,0x89,0xd6,0xd3,0x5b,0xe0,0xe2,0xc1,0x78,0x60,0x04,0x36,0x79,0xe7,0x46,0x82,
- 0xc9,0xc8,0xe1,0xb1,0xd5,0x41,0xbc,0xb4,0x44,0xde,0x0d,0x71,0x63,0xda,0x4e,0xd4,
- 0xbf,0x3b,0xf4,0xd5,0x61,0x44,0x3b,0xb9,0x68,0xaf,0xa1,0xc5,0xea,0x65,0xaf,0xc3,
- 0x23,0xdc,0x73,0x3a,0x47,0x46,0x44,0x35,0x26,0x7f,0x8a,0x84,0xc2,0x92,0x17,0xa1,
- 0xa8,0xdb,0xb4,0xce,0x1a,0xe5,0x22,0xb0,0xfd,0x28,0xa0,0xba,0x1f,0xd2,0x8a,0xba,
- 0xe5,0xba,0xc0,0xbf,0x4d,0x7e,0x48,0x28,0xd5,0x73,0xc2,0xac,0x27,0x8d,0xaf,0xe4,
- 0x2b,0xe0,0xcf,0x7c,0xde,0x80,0xb2,0x26,0xff,0xd1,0x48,0x3f,0xbf,0x36,0x6c,0x5f,
- 0xa3,0x5c,0x01,0xaf,0x0f,0xcd,0x3f,0xf5,0xd5,0x7b,0x10,0xff,0xfc,0x1b,0xaf,0x8a,
- 0xe7,0x06,0xc5,0xc3,0x69,0xfc,0x93,0xbb,0x13,0xfe,0x04,0xfe,0x13,0xcb,0x51,0x7a,
- 0xe8,0x43,0xac,0x52,0x40,0xf9,0x7c,0x92,0x9f,0xab,0xf1,0xf7,0xcd,0x7d,0x0e,0x25,
- 0x3c,0xe1,0x1f,0x54,0xfd,0x69,0xfc,0xa3,0x4f,0x39,0x8b,0x68,0xea,0xba,0x24,0xca,
- 0x73,0x3f,0x1c,0xe5,0xbf,0x92,0x51,0x5b,0x55,0xa1,0xfe,0xaa,0x1a,0xb2,0x0f,0x37,
- 0x5c,0x84,0xfb,0xb7,0x56,0x21,0xfe,0xb1,0xc8,0xff,0xf6,0xc9,0x0f,0xc3,0x7a,0xb9,
- 0xc8,0xc8,0x1b,0x5e,0x62,0xc7,0x4f,0x71,0xed,0xf4,0xdc,0xd3,0xac,0x00,0x9e,0x84,
- 0xb2,0xee,0x39,0x75,0xac,0x8f,0xad,0x0f,0x95,0x72,0x79,0x25,0xfb,0x68,0xfc,0xfe,
- 0x31,0xd8,0x8e,0xa0,0x68,0x26,0x5a,0x67,0xb6,0x65,0xfa,0x4e,0x98,0x2d,0x21,0x6c,
- 0xbe,0x0a,0x1e,0x82,0x52,0x43,0xbe,0x8b,0xf5,0xe9,0x0f,0xdd,0x56,0xca,0x6d,0x35,
- 0xac,0x9b,0x8f,0xad,0x7f,0x58,0xea,0x85,0x86,0xe4,0x2c,0x63,0x89,0x8f,0x2d,0x83,
- 0x38,0x94,0x00,0x1a,0xfe,0x25,0xb0,0x1b,0x3c,0x86,0x6d,0x1e,0x1e,0xdb,0x07,0x10,
- 0x88,0xa2,0x46,0x7b,0x6b,0x5c,0x3e,0x68,0x59,0x4f,0xbb,0x8e,0x18,0xa8,0x86,0x3c,
- 0xec,0x5e,0x48,0xf2,0x39,0x60,0x4f,0x28,0x73,0xe1,0x5d,0xb8,0xda,0xb0,0x0f,0x8b,
- 0x83,0xec,0x37,0xf8,0xbe,0x65,0x2d,0xe2,0xd1,0xf1,0xfd,0xd6,0x08,0xa7,0x10,0xff,
- 0xa0,0x98,0x6d,0x51,0x36,0x42,0x27,0xaf,0x50,0x1d,0xfd,0x62,0x3f,0xea,0xa3,0x4a,
- 0x63,0x6e,0x42,0xfc,0x18,0x4e,0xe9,0x7e,0xfd,0xa6,0x67,0xcb,0xd3,0xf8,0xa7,0x1e,
- 0x86,0x85,0x8b,0xac,0xca,0x98,0x3e,0x24,0x56,0x42,0xaf,0x74,0x1d,0x2c,0x4b,0x2a,
- 0xf3,0xe1,0x75,0xa1,0xca,0xb0,0x0f,0x89,0x17,0xe1,0xb5,0x83,0xe5,0x35,0xb8,0x62,
- 0x5a,0xcd,0xd8,0xfc,0xae,0xc6,0xef,0x85,0x9e,0xd7,0xcb,0x0c,0xb9,0x13,0xf5,0xef,
- 0x71,0xc3,0x1d,0xcf,0x8d,0xe3,0xf3,0xff,0x1e,0xee,0x44,0xfd,0xc5,0x3e,0x85,0x26,
- 0xc3,0xa5,0xcb,0xbf,0x2a,0x0e,0xeb,0xe3,0xf8,0x47,0x75,0xab,0x2f,0x14,0x7e,0xd7,
- 0x9c,0x5f,0x10,0xdd,0x38,0x4b,0x6e,0xda,0xc6,0x3c,0xda,0x33,0x52,0x19,0xe9,0xbb,
- 0x13,0xb1,0x26,0x89,0xf4,0x35,0x2a,0xee,0xb1,0xfd,0x23,0x4b,0x32,0xae,0xc6,0x1d,
- 0x74,0x37,0xbb,0x9e,0x00,0x37,0xe4,0x68,0xac,0x44,0x20,0xfb,0x54,0xf6,0x32,0x03,
- 0x9a,0x70,0x23,0xbb,0x55,0x16,0x18,0xdf,0x9f,0x3c,0xa7,0x16,0x9e,0x87,0x05,0x38,
- 0x5f,0x2c,0x55,0x7b,0x24,0xd3,0xfe,0x9a,0x0e,0x9f,0xc2,0xdc,0x6e,0xfb,0xe9,0x6a,
- 0x03,0x0f,0x9a,0x17,0xec,0x71,0x11,0x8f,0xff,0xd8,0x79,0xcc,0x3d,0x0e,0xe7,0xc1,
- 0x61,0x38,0x4e,0x2b,0xe7,0xe1,0x18,0xfb,0x57,0x70,0x24,0x95,0x33,0x26,0xbf,0x31,
- 0x77,0x48,0x1c,0xca,0xbe,0x40,0xfa,0x6b,0x28,0x03,0xff,0x74,0xc0,0x6b,0xc6,0x3c,
- 0xcd,0xbe,0x0b,0xf1,0xd5,0x05,0xee,0x13,0xf2,0x7a,0x44,0x1f,0x9a,0xf9,0x15,0xfd,
- 0xf6,0x37,0x71,0x61,0x5f,0x8f,0x95,0x87,0xed,0x67,0xaa,0xd3,0xf8,0xc7,0x50,0xdf,
- 0x43,0xfc,0x86,0x2f,0xb5,0x07,0xf5,0xd7,0xf3,0x91,0x39,0xf1,0xab,0xa3,0xe2,0xea,
- 0xc6,0x23,0x1a,0x22,0xa2,0xad,0x2c,0xc9,0x9b,0x71,0x00,0x09,0x2b,0xff,0x23,0x25,
- 0xa1,0x49,0x43,0x23,0x14,0x4f,0x6e,0x78,0x17,0x19,0x26,0xc0,0x34,0xe9,0x31,0x09,
- 0x2d,0x0e,0x92,0x48,0x0d,0xa0,0x1d,0x44,0x20,0x64,0xe1,0x7f,0xa6,0xc4,0x39,0x2e,
- 0x5a,0xdc,0x9d,0x08,0x10,0x5b,0x32,0x27,0xa2,0x44,0xd9,0x77,0xa0,0xc1,0x05,0x86,
- 0xbc,0x85,0x7d,0x40,0xf8,0x87,0x96,0x2e,0x8d,0x7f,0xf4,0x29,0x47,0xd8,0x91,0x70,
- 0xc2,0x65,0x27,0xbc,0x34,0x22,0x7b,0x1f,0xb7,0xc9,0x0d,0x1a,0xfc,0xdf,0x06,0xe2,
- 0x9f,0xd8,0xa4,0x4f,0x49,0xd1,0x24,0x4b,0x12,0x96,0xfd,0x1f,0x17,0x9e,0x87,0x4b,
- 0x71,0x73,0x11,0xce,0xc3,0x25,0xf5,0x27,0x7c,0xb9,0x31,0xf7,0x40,0xcd,0xa7,0x50,
- 0xd5,0x37,0xb7,0x2f,0xff,0xbc,0x7a,0x29,0xf6,0x62,0xff,0xf2,0x11,0x54,0xdc,0x63,
- 0xf7,0xef,0x53,0x7f,0x2e,0x9d,0x83,0x8e,0x38,0xe1,0x4f,0x15,0x05,0xd7,0x36,0x7b,
- 0x63,0xf9,0x4a,0xe9,0xf7,0xba,0xaf,0x2b,0x37,0x96,0x5f,0x86,0x40,0x0b,0xed,0x91,
- 0x5d,0x0d,0x16,0xfc,0x93,0x55,0x06,0xbb,0x50,0xda,0xc8,0x78,0x76,0x61,0x77,0xbc,
- 0x2c,0x91,0xcb,0x6d,0xf7,0xeb,0xcd,0xb0,0xe0,0x18,0x6e,0x83,0xb9,0xf6,0x73,0xbc,
- 0x2c,0xa9,0xec,0x67,0x5f,0x8c,0xcb,0x87,0x81,0xac,0x1a,0x7d,0x37,0x68,0x4e,0x39,
- 0x61,0xb3,0xc3,0x2e,0x41,0x3e,0x58,0x58,0x88,0xb2,0x60,0x37,0x0b,0x1b,0x57,0xaa,
- 0x28,0x91,0x9e,0xa9,0xbf,0x33,0x89,0x12,0x38,0x8d,0x7f,0x86,0x84,0x19,0xf0,0x1c,
- 0x9f,0xa9,0xb9,0xef,0x41,0xfc,0xb3,0xf7,0xf1,0xd2,0x53,0x57,0xde,0xec,0xdc,0xba,
- 0xf6,0x17,0xb1,0x1f,0xf4,0x07,0xbf,0xb9,0xf8,0xc5,0xc8,0xde,0x68,0xe9,0x7b,0xca,
- 0x0a,0x76,0xde,0x82,0x7f,0x88,0x8f,0xf2,0xc6,0xed,0x9d,0xb6,0x3c,0xe3,0x74,0xeb,
- 0xbd,0xed,0x32,0x3c,0xb0,0x2a,0xf6,0xa7,0xa4,0x6f,0x30,0xf7,0xf9,0x9c,0x4d,0xfc,
- 0x7d,0x3c,0x38,0x93,0xd4,0x0c,0xfc,0xb3,0x1f,0x2e,0xc0,0x0d,0x7c,0x52,0x82,0xd1,
- 0xfa,0x54,0x36,0x2e,0xd7,0xab,0x87,0xf4,0xdf,0x00,0x9e,0xd0,0xd3,0xe2,0xed,0xf0,
- 0xae,0x7a,0x1d,0x42,0x6b,0xb1,0x8f,0x8d,0xad,0x4f,0x7b,0x56,0x92,0x9f,0x83,0x05,
- 0x82,0x7d,0x44,0xf4,0x20,0x5e,0x5a,0xc8,0xf3,0x62,0xc5,0x71,0x78,0x89,0xf0,0x21,
- 0xda,0x23,0x70,0x84,0xfb,0x92,0xf6,0x44,0xfe,0x47,0x16,0xfc,0x53,0xd8,0xfb,0x22,
- 0x14,0x83,0x7b,0xc8,0x76,0x55,0xdf,0x4f,0xa5,0x22,0x2e,0xeb,0x01,0x15,0x25,0x0c,
- 0x9a,0x51,0x21,0xf6,0x36,0x0d,0x8c,0x68,0x1d,0xfb,0x6c,0xfc,0xfb,0x72,0x78,0xd0,
- 0x78,0x96,0xcf,0x4c,0xd8,0xe8,0x7d,0x7f,0xc5,0x67,0xc7,0x6d,0x03,0xce,0x07,0xa4,
- 0xcd,0xf5,0x28,0xfb,0x57,0xb0,0x6f,0xc1,0x66,0x6e,0x42,0xc1,0xa4,0x05,0xff,0xbc,
- 0x06,0xbb,0x54,0x97,0xb6,0xc4,0x8b,0xfb,0xe1,0x01,0xd0,0x12,0x32,0xe0,0x61,0x6a,
- 0x86,0x78,0x52,0x2e,0x74,0xbd,0x6e,0x34,0x70,0xe8,0x46,0x09,0xff,0x86,0x05,0xff,
- 0x3c,0xa3,0x5d,0x5c,0x7b,0x1d,0x47,0xa1,0xea,0x86,0x2f,0xd4,0xeb,0x77,0xae,0x4b,
- 0x8a,0xcf,0xc3,0x51,0xc3,0xd7,0x6e,0x8f,0x37,0xbc,0x09,0x87,0xe3,0x1d,0x71,0x4f,
- 0x5c,0x3c,0x6b,0xc5,0x3f,0xda,0x30,0xf8,0xe5,0x2c,0x93,0xfd,0x98,0xec,0x9f,0xec,
- 0xa8,0x17,0x4f,0xd8,0x86,0xbd,0x7e,0x98,0x8b,0x57,0xd8,0x30,0x1a,0xe6,0x78,0xe5,
- 0x8d,0x71,0x7c,0x22,0xab,0x64,0xe6,0x33,0x52,0x82,0xfd,0xf2,0x21,0xee,0xd3,0xf3,
- 0x5a,0xc4,0x59,0x3a,0x0d,0x36,0x91,0xa2,0x7c,0x13,0x55,0xe1,0xa4,0x47,0x32,0xf0,
- 0xcf,0x9d,0xc4,0x1f,0x86,0x64,0x42,0x2f,0x4f,0x6d,0x99,0xb3,0xe2,0xe9,0x29,0xec,
- 0x1a,0xd6,0xd4,0xe7,0xd2,0xdd,0x31,0x36,0x13,0x9a,0xf4,0xb2,0x90,0x92,0x81,0x7f,
- 0xb2,0x3c,0xf1,0x5d,0x30,0x27,0x50,0x1b,0x73,0xf6,0x13,0x4c,0xaa,0x51,0xb6,0x31,
- 0x49,0x7b,0x4a,0x6f,0x0f,0xc9,0x05,0xac,0x14,0x1e,0x36,0xe7,0x67,0x5b,0xf1,0x8f,
- 0x04,0xbb,0x6a,0xdc,0xf4,0xeb,0xcb,0xd2,0x53,0x59,0x73,0x50,0xbf,0x4f,0xcd,0x42,
- 0xc5,0x47,0x57,0x6c,0x33,0xa1,0x5e,0xf7,0x84,0x94,0x02,0x0b,0xff,0xb3,0x30,0x37,
- 0x4c,0x34,0xd7,0x98,0xb6,0xf5,0xe1,0x8a,0x57,0x13,0x6b,0x56,0x81,0x57,0xf2,0x01,
- 0x8e,0x43,0x25,0x11,0x5f,0x47,0xd3,0xfc,0xcf,0x55,0xfd,0x70,0x41,0x78,0x68,0x91,
- 0x63,0x5b,0xf9,0x49,0xf8,0x33,0x54,0x85,0xf2,0x42,0xd5,0x88,0x70,0x16,0x5d,0xab,
- 0xe7,0xf6,0x89,0x17,0xe0,0x73,0xa9,0x4a,0x47,0xfb,0xe2,0x03,0x2b,0xff,0x03,0x23,
- 0x6a,0x15,0xa1,0xc1,0xfe,0x38,0x4a,0xa7,0xea,0xbc,0xbe,0xea,0x12,0xfd,0x90,0xea,
- 0x23,0x98,0x44,0x40,0xc2,0x5b,0x63,0xdf,0xda,0x60,0xe1,0x7f,0x20,0x09,0x9d,0x50,
- 0x26,0xcb,0xdc,0xd9,0xc5,0x71,0xa0,0xca,0xf4,0x21,0xa2,0xa1,0x56,0x19,0xcd,0xcc,
- 0xa2,0x00,0x87,0x56,0x70,0xbf,0x62,0xe5,0x7f,0xa6,0xbc,0x02,0xbb,0x8a,0xec,0x81,
- 0x60,0x41,0xa4,0x5b,0xdb,0x05,0x1e,0x7d,0x6a,0x2c,0x30,0xbf,0x71,0x6d,0x51,0x51,
- 0x60,0xe9,0xad,0x1b,0x0a,0xe2,0x6b,0xdd,0x45,0x41,0x39,0x14,0x79,0x23,0x8d,0x7f,
- 0xa6,0xb4,0xc1,0xbe,0x50,0xd9,0x6d,0x72,0xec,0xd6,0x7e,0xfc,0x10,0x65,0x7a,0x34,
- 0x66,0xeb,0x87,0xb5,0x35,0xc5,0xba,0x72,0x2b,0x2a,0xca,0xb5,0xb4,0x51,0x11,0x4f,
- 0xa6,0xf1,0xcf,0x14,0x7c,0x7e,0xbd,0xf2,0xae,0x65,0xb1,0x62,0x1c,0xc4,0xfc,0xdf,
- 0xcd,0x53,0x1f,0x90,0x48,0xec,0x84,0x11,0xcf,0xcc,0x14,0xe8,0x43,0xdb,0x5b,0x2c,
- 0xfc,0xcf,0x80,0x60,0x92,0x3c,0xe1,0x14,0xed,0x83,0x03,0xc7,0x56,0xb1,0x5f,0x1d,
- 0xd1,0x88,0xf6,0xa1,0x2b,0x9a,0x7f,0xb5,0xe3,0x61,0x0b,0xff,0x93,0xc2,0x3f,0x1d,
- 0x2a,0x82,0x1c,0x8d,0xf5,0xe8,0x65,0x62,0x2e,0x02,0x51,0x66,0x9a,0xbd,0x3c,0x5f,
- 0x2b,0xa0,0x81,0xdd,0x10,0x6d,0x16,0xfe,0x67,0x36,0x7e,0xad,0xe2,0x98,0x8c,0x66,
- 0x32,0x6c,0xa8,0x2f,0x4d,0x6c,0x4c,0xb2,0x39,0xb0,0x41,0x42,0x41,0x1a,0x8f,0xe0,
- 0x15,0x12,0x4d,0x71,0x66,0xe1,0x7f,0xb2,0xbe,0xca,0x51,0xfe,0x0c,0xcb,0x5e,0xc4,
- 0x03,0x08,0x8c,0xe3,0x39,0xf3,0x22,0x76,0xf5,0x01,0xa8,0x25,0xbe,0x34,0x8f,0xe4,
- 0x73,0x26,0xff,0x13,0x17,0xa6,0xc3,0xde,0xf8,0x6c,0x55,0xbe,0x27,0x7b,0x86,0xb1,
- 0x56,0x2f,0x8d,0x04,0xeb,0x58,0x61,0xc9,0x03,0x30,0x9b,0x2b,0x78,0xa2,0xe5,0xf5,
- 0x80,0xa6,0x9f,0x95,0xff,0x69,0x87,0x19,0xda,0x8b,0xd1,0xf2,0xb8,0xe7,0xa2,0x38,
- 0x23,0xfe,0x32,0xbf,0x31,0x9e,0xbb,0xe6,0x1a,0xbf,0xf4,0x3b,0xfe,0xe3,0xa4,0x63,
- 0x8d,0x58,0xc1,0x16,0xd7,0xcf,0x8b,0x7b,0x32,0xf8,0x9f,0x29,0x8f,0xc3,0x39,0xef,
- 0x02,0x98,0x8b,0xf6,0x29,0x7f,0x33,0xbb,0x92,0x2f,0xf7,0x8a,0x83,0xd2,0x47,0x26,
- 0xed,0x23,0x0e,0xaa,0x67,0xe1,0x00,0x47,0x68,0x94,0xc6,0x3f,0x20,0x9c,0xd5,0x2f,
- 0xf1,0xf2,0x01,0x94,0x3f,0x17,0xa1,0x2b,0x76,0x43,0x9b,0xfd,0xc7,0xe2,0x13,0xf0,
- 0x13,0xee,0x4f,0x3a,0x86,0xc5,0x33,0x1c,0x81,0x50,0xd2,0xd1,0x83,0xe8,0xdc,0x82,
- 0x7f,0xf4,0x3f,0x17,0xb6,0x46,0xe5,0x7b,0x5c,0x6f,0xeb,0xbf,0x8e,0x17,0xb5,0xe7,
- 0xfe,0x93,0x2b,0xc2,0x1f,0xe0,0xa5,0x6d,0x79,0xf3,0x48,0xfe,0xa8,0xa5,0x86,0x12,
- 0x60,0x4f,0x8f,0xaf,0x3f,0xe8,0xdb,0xd5,0x17,0xf5,0xa2,0x5e,0xb8,0x0b,0x7f,0xbd,
- 0x5f,0x9b,0xcd,0x51,0x3a,0x6d,0x0f,0x3f,0x07,0xa5,0x2f,0x29,0x88,0x97,0x60,0x1d,
- 0x94,0x72,0xa5,0x96,0xc1,0xf8,0xfa,0x6b,0x05,0xdd,0xb0,0x9b,0xbb,0x78,0xa7,0x97,
- 0xf5,0x12,0xf0,0x36,0x72,0xe6,0x3b,0x37,0xc2,0x23,0x06,0x19,0xf2,0x81,0xd7,0x70,
- 0xfd,0xcb,0x1a,0x95,0xa7,0x58,0x34,0x8d,0x87,0xa7,0xa0,0x75,0xc9,0x7d,0x7d,0x76,
- 0xd2,0x47,0xcd,0x75,0x6e,0x52,0x34,0xbf,0x94,0x46,0x10,0x18,0xe3,0xb1,0xea,0x85,
- 0x43,0xf5,0xb8,0x43,0x12,0xe2,0x1c,0x8b,0x3c,0xfc,0x94,0x40,0xa0,0x86,0x17,0x7b,
- 0x09,0x48,0xaf,0x5d,0xde,0xd9,0x30,0xa0,0xbd,0x89,0xf2,0xc7,0xd1,0x88,0xf2,0xf6,
- 0x5c,0xc8,0xdf,0x97,0xc1,0xff,0x08,0xea,0x30,0x5a,0xaf,0xd7,0x1d,0xb4,0xd7,0x55,
- 0x7b,0x9c,0xaf,0xa9,0xfe,0x7a,0xfb,0x50,0xf5,0x7e,0xb8,0x54,0x50,0x5e,0x13,0xed,
- 0x13,0xdd,0xda,0x6b,0x2a,0xe2,0x9f,0x84,0x08,0x35,0x69,0xf9,0x13,0x86,0x3f,0xb2,
- 0x32,0x30,0xf9,0x87,0x26,0x28,0x6b,0xb1,0xed,0x67,0x83,0xf0,0x33,0x1d,0x61,0xcf,
- 0xff,0x24,0x8f,0x8c,0x66,0x52,0x1f,0x9a,0x85,0xff,0x41,0xfc,0x03,0x84,0x76,0x98,
- 0x47,0xc2,0xf9,0x5a,0x4e,0xa7,0x0b,0x0f,0x8e,0x8c,0x6a,0x3a,0xbe,0xb5,0x84,0xa1,
- 0x28,0xd3,0x65,0xee,0xd2,0xd2,0xf2,0xa7,0x46,0x46,0xeb,0xde,0x13,0x47,0xa5,0x6f,
- 0xaf,0xa9,0x5f,0xed,0x89,0xd8,0xbc,0x01,0x43,0xdf,0x72,0x65,0x7b,0xcb,0x9c,0x12,
- 0x28,0x65,0x0f,0x20,0x14,0x77,0x03,0x63,0x69,0xfe,0x27,0xb7,0x96,0xac,0xef,0x63,
- 0xcb,0x9e,0x45,0xfc,0x76,0xa8,0xd6,0xbf,0xd1,0x6e,0x12,0x5f,0x9a,0xef,0x2d,0xfb,
- 0x1e,0xa5,0x08,0xe5,0x27,0x9e,0xaf,0xb8,0x02,0x42,0x9a,0xff,0x19,0x22,0xb1,0xc3,
- 0x1d,0xcf,0x29,0xe7,0xf9,0xff,0xa5,0xdd,0x19,0x75,0x18,0x68,0xc8,0x9f,0x2b,0xba,
- 0xce,0xc8,0xc5,0x15,0xe6,0x9f,0x92,0x69,0x9f,0xb4,0x9c,0x47,0x23,0xeb,0x1d,0xf8,
- 0x80,0xcf,0x8b,0x3b,0xea,0x94,0x1b,0xe3,0xef,0x42,0x79,0xd2,0x31,0x82,0x40,0xfa,
- 0x53,0x5e,0x75,0xc2,0x7e,0x73,0x7e,0x07,0x9c,0xe7,0xa2,0x6c,0x3f,0xd8,0x90,0xc1,
- 0xff,0xc8,0xcd,0xf5,0xbe,0x1d,0xca,0x79,0x76,0x95,0xfc,0xcb,0xf0,0x82,0xa4,0xd2,
- 0x81,0xab,0xd5,0xcc,0xcb,0x0e,0xf7,0x74,0x90,0x7f,0x87,0xbb,0xa6,0x06,0x9f,0x88,
- 0x58,0xf9,0x9f,0x5e,0x82,0xc1,0x5c,0x99,0x1f,0x58,0xd6,0xf8,0xc0,0x32,0x0d,0x8f,
- 0x95,0x2b,0x8f,0x56,0xc0,0x88,0xaa,0xb6,0x8d,0x71,0x3c,0x7a,0x8d,0xb2,0x1a,0xb0,
- 0xf0,0x3f,0x53,0x7e,0x01,0xcd,0x51,0x57,0x83,0x92,0x90,0x97,0xa1,0x61,0xe2,0x32,
- 0x94,0x04,0xdd,0x9f,0x56,0xb8,0x33,0x52,0xa2,0xbd,0x00,0xae,0x56,0x84,0x9a,0x56,
- 0xfc,0xf3,0x31,0xff,0xa8,0x71,0x01,0x38,0x12,0xf9,0x77,0xc8,0xbf,0x37,0xe7,0x8b,
- 0x65,0xb4,0x43,0xfa,0x3d,0x85,0xf9,0xb8,0x50,0xd1,0x8e,0xba,0x92,0x8d,0x16,0xfc,
- 0x93,0x14,0x3a,0x55,0x44,0x83,0x92,0x63,0xa8,0x61,0x3f,0x6e,0xa5,0x17,0x4d,0xb7,
- 0x0e,0xae,0xf0,0x4f,0x92,0x9b,0x87,0xc4,0x0b,0xea,0x85,0xd8,0x8d,0xc6,0xd5,0xf1,
- 0x0c,0xfe,0xe7,0x17,0xf0,0x51,0xa8,0x82,0xa1,0x12,0xf7,0x20,0xda,0x79,0xde,0x3c,
- 0x86,0x1a,0x99,0x21,0xf6,0xed,0xe2,0x6c,0x1d,0x0f,0x66,0xdf,0xf2,0xc4,0xb7,0xbd,
- 0x16,0xfc,0x83,0x42,0x83,0xbb,0x20,0xba,0x26,0x52,0x09,0x9b,0x89,0x36,0x4c,0xb0,
- 0x6e,0x04,0x72,0x79,0x84,0x90,0xe7,0xea,0x0d,0xbc,0x2c,0xae,0x74,0xa2,0xf5,0x3c,
- 0xb6,0x1f,0x92,0x59,0xcb,0xe0,0xb1,0x55,0xee,0x3d,0xf2,0x7c,0xb6,0x11,0xa5,0x0d,
- 0xd1,0xa4,0x78,0x70,0x1e,0xa3,0xf7,0xf5,0xb2,0x4d,0xf2,0x63,0x3d,0x9e,0xa8,0xe2,
- 0x62,0x0b,0x2d,0xfc,0x8f,0x1f,0xd6,0xf3,0xe2,0x38,0x2a,0xfd,0x77,0xf0,0x6e,0x45,
- 0xc9,0x69,0x3f,0x66,0xef,0xc0,0x5e,0x5e,0xda,0x2f,0xaf,0xb1,0x3d,0x02,0xeb,0x78,
- 0xa9,0x4b,0xa9,0x8d,0x14,0x5a,0xf0,0x8f,0x1d,0xde,0x47,0x58,0x62,0x5f,0x98,0xbf,
- 0x91,0xbd,0x04,0x0b,0x0d,0xc7,0x3c,0x3c,0x38,0xef,0xd3,0xf3,0x7b,0xc5,0x9d,0xfc,
- 0x84,0x5c,0xc9,0x1d,0x05,0x8a,0x33,0x03,0xff,0x5c,0x42,0xfc,0xbc,0xfc,0x74,0xb3,
- 0x07,0x2e,0xe9,0x7e,0x63,0xf3,0x69,0x93,0x36,0xf4,0x13,0x7e,0xbe,0x03,0x11,0x51,
- 0x95,0x89,0x7f,0x2c,0xfc,0x4f,0x37,0xfc,0x51,0xf2,0x69,0xf6,0xe7,0x10,0x1f,0x1e,
- 0xb9,0xad,0xc3,0x30,0xdd,0x82,0xe7,0x70,0xbe,0x9c,0x50,0xda,0xe0,0x08,0xbe,0x08,
- 0xee,0x4f,0x2b,0xff,0xb3,0x5d,0x5d,0x0f,0x3b,0x20,0xea,0x3b,0xfc,0x3f,0x0f,0xbd,
- 0x6a,0xba,0xbd,0x6c,0x28,0x51,0xc9,0x9e,0xaa,0x63,0xd3,0x11,0xff,0x98,0x03,0x2b,
- 0xff,0xf3,0x28,0x3c,0x19,0x9d,0xd9,0x2a,0xaf,0x71,0xe5,0xb1,0x86,0x78,0x51,0x52,
- 0x59,0xe3,0x42,0xe0,0xc7,0xe7,0x22,0xec,0x09,0x3c,0x8a,0x4b,0xe1,0x49,0xca,0x6e,
- 0x66,0xe5,0x7f,0x5e,0xe7,0x0d,0x50,0x12,0x96,0xbd,0xce,0x9d,0xa6,0xf4,0x56,0x12,
- 0xb7,0xda,0x10,0x61,0x96,0xd5,0xc8,0xf3,0x37,0x68,0x9c,0xeb,0x65,0xc7,0xe4,0x7d,
- 0x11,0xa7,0x05,0xff,0x3c,0xaf,0x7d,0x12,0xb9,0x8e,0xdb,0x35,0xc5,0x0d,0x87,0xc1,
- 0x47,0x6e,0xaf,0x85,0x70,0x16,0xfc,0x71,0xfb,0xea,0xfc,0x67,0x5c,0x87,0x79,0x55,
- 0x9b,0x27,0xc3,0xff,0x45,0xfc,0x0f,0x7b,0x5e,0x9d,0xdb,0x88,0x42,0x66,0x00,0xad,
- 0x6f,0x14,0x53,0xef,0xa1,0x86,0x42,0xfc,0xd3,0xa8,0x9c,0x90,0x08,0x08,0xa1,0x62,
- 0x7a,0x23,0xcd,0xff,0x20,0xfe,0x39,0x15,0xef,0x08,0x3b,0xb6,0x0b,0x25,0xac,0xcb,
- 0x74,0x73,0x7c,0xb9,0xc4,0x64,0x00,0x50,0x2d,0xce,0xe2,0x87,0xb8,0xbf,0x56,0x6e,
- 0x11,0x2d,0xfe,0x2f,0x69,0x31,0xaa,0x21,0xd7,0xbd,0xca,0x83,0x68,0x76,0xbd,0x29,
- 0xba,0x74,0x44,0x3b,0x33,0x75,0x52,0xc4,0xf2,0xa3,0xec,0x1a,0xa9,0xa9,0xb0,0xac,
- 0xd6,0xbd,0x2d,0x90,0x96,0x3f,0x85,0x42,0x89,0xfe,0x14,0xac,0xa2,0x69,0x6d,0x6a,
- 0x13,0xcc,0xa1,0x41,0x89,0xa9,0xb8,0xdd,0x5b,0xd8,0xb5,0xec,0x7e,0x1c,0xd8,0xb6,
- 0xb0,0x6c,0x0b,0xfe,0xf1,0xe0,0xb4,0xb0,0xbe,0x54,0x65,0x6b,0xd5,0x2d,0xba,0xa6,
- 0x2b,0x05,0xf8,0x2b,0x02,0x83,0x90,0xbc,0x8d,0x4d,0x41,0xfd,0x4e,0xd4,0x90,0x8d,
- 0x65,0xe0,0x9f,0x01,0x53,0xdb,0x8a,0x71,0x54,0xbb,0x26,0xdf,0xa5,0x99,0xef,0x6b,
- 0x12,0x11,0xbd,0xb8,0x1d,0x11,0x3a,0xe6,0x59,0xf0,0xcf,0x19,0xf8,0x1f,0x70,0xa3,
- 0xbe,0x7c,0x9b,0xf2,0x1d,0x04,0x06,0x7e,0x7d,0x79,0x2c,0x9f,0xdc,0xca,0x37,0xea,
- 0x8e,0x90,0xd2,0x2d,0x8f,0x20,0x22,0xca,0x3d,0x56,0x6d,0xc5,0x3f,0x67,0x20,0x45,
- 0xfb,0x10,0x3e,0xd4,0x4c,0xfe,0xe4,0x8c,0xb9,0x3e,0x1b,0x8f,0x89,0x7b,0xf4,0xd7,
- 0xa0,0x6a,0x89,0xbd,0xaf,0x21,0x5b,0x18,0x5b,0xff,0x85,0x6a,0x92,0xf8,0x1f,0x90,
- 0xd7,0xb2,0x13,0x46,0x54,0x73,0x81,0x12,0x71,0x12,0x22,0xf2,0x80,0x1c,0xb1,0x69,
- 0xa4,0x5f,0x26,0xcb,0xad,0xb6,0x3c,0x8b,0xfc,0xe9,0x87,0x7a,0xc9,0xad,0xa3,0xb5,
- 0xd5,0x5d,0x52,0xbf,0x0c,0xdf,0x57,0x8d,0x74,0xd3,0xfb,0x2e,0x91,0x63,0x53,0x1b,
- 0x79,0x83,0xe0,0x09,0xc8,0x6a,0x84,0x09,0x63,0xf3,0x0b,0x51,0xff,0x36,0x31,0x57,
- 0x8f,0x3b,0x86,0x62,0x1c,0x3f,0x84,0xde,0x1c,0x43,0xb3,0x6b,0x1f,0xf3,0x20,0xfe,
- 0x6c,0x9d,0xa9,0x37,0x69,0x65,0x06,0xc4,0x58,0xb6,0x05,0xff,0xbc,0x4c,0xb4,0x67,
- 0xc0,0x8e,0xf8,0x93,0x11,0xed,0x93,0x82,0x31,0xf4,0x7d,0x55,0x71,0x2d,0x3b,0x64,
- 0xf8,0x97,0xb9,0x1f,0x16,0xdd,0x69,0xfe,0x41,0x78,0x22,0x32,0x62,0x1c,0x58,0xe4,
- 0x88,0x7d,0xad,0x3b,0xed,0x16,0xc4,0x41,0x4d,0x6a,0xc0,0x50,0xdf,0xb5,0xbc,0xf4,
- 0x91,0x15,0xff,0xe8,0x3d,0x5a,0x05,0xc1,0x6c,0x82,0x3d,0xe6,0xee,0x7a,0x7f,0x6c,
- 0xfd,0x8b,0x4a,0x86,0x83,0xe6,0xc0,0x8a,0x7f,0xae,0x97,0xd6,0x19,0x45,0x9d,0x4a,
- 0xd2,0xe5,0x66,0xb8,0x1a,0x5c,0x21,0xda,0xe8,0x79,0x1c,0xe4,0x7e,0x60,0x5b,0x28,
- 0x1d,0xd0,0xe7,0x36,0xca,0xc9,0x0c,0xfc,0x73,0xb3,0xd6,0x10,0x73,0x07,0x15,0x1f,
- 0x5b,0xa6,0x92,0x58,0x9e,0xe6,0x45,0x79,0x45,0x7c,0x85,0x3c,0x95,0xe5,0xc9,0x1d,
- 0x50,0x36,0x64,0xdb,0xef,0xb4,0xe2,0x9f,0x85,0x12,0x39,0x7d,0x50,0xe9,0xe3,0x69,
- 0xf5,0x96,0x1a,0xcd,0x77,0xbb,0x7e,0x9b,0x3a,0xbf,0x21,0x56,0xa0,0x3d,0x0b,0xa5,
- 0x31,0xdb,0x8f,0xac,0xf8,0x07,0x6f,0xf3,0x2a,0xbf,0x5e,0x5b,0xbe,0x50,0xb9,0x85,
- 0x3f,0x19,0xbb,0x31,0x79,0xf5,0x7d,0x0d,0x6f,0xc1,0x9f,0xf9,0x8d,0x49,0x79,0x58,
- 0x9c,0xa1,0xfe,0x19,0xf1,0x49,0x59,0x06,0xfe,0xb9,0x2a,0x2a,0x7d,0x46,0x68,0x27,
- 0x9e,0x3f,0x18,0x3a,0x17,0xc6,0xc1,0x1e,0x71,0x00,0xce,0x31,0xff,0xc1,0x5f,0x26,
- 0x8a,0x07,0x49,0xb0,0xf0,0x5c,0x2b,0xff,0x03,0x53,0xde,0x81,0x57,0x13,0xe5,0x61,
- 0x44,0x3b,0x3f,0xd1,0x5f,0xe7,0xbb,0x09,0xf6,0x5c,0xa1,0x22,0xec,0x79,0x0f,0xcf,
- 0xd7,0x01,0xfd,0x52,0xa4,0x2a,0x69,0x1f,0xc8,0xc0,0x3f,0xdb,0x02,0xeb,0x43,0x45,
- 0x7a,0x9e,0x77,0xce,0x01,0xc9,0x74,0xbb,0xdf,0xc5,0xc8,0xfe,0x2a,0x4d,0x96,0xae,
- 0x69,0x2d,0x08,0x3e,0x2b,0x97,0xd6,0xa0,0x45,0x96,0xc6,0x1b,0x80,0x7b,0x6b,0xbd,
- 0xeb,0x29,0x9a,0x76,0x7b,0xfd,0x03,0x29,0x37,0xbd,0xd7,0x14,0x53,0xb6,0x24,0xdb,
- 0xae,0xed,0x45,0x04,0x98,0x53,0x97,0xe1,0xff,0xba,0x39,0xd2,0x20,0xbb,0xbf,0x6e,
- 0x53,0x51,0x9e,0x37,0x33,0xd2,0x77,0x78,0x98,0x1a,0x50,0x0c,0x2a,0xdc,0xe6,0x40,
- 0x68,0xe4,0x89,0xcf,0x76,0x31,0x39,0x8d,0x7f,0xb2,0x36,0x68,0x2f,0x45,0x16,0xea,
- 0x8e,0x84,0x72,0x2f,0x7b,0x17,0xcd,0x46,0xd4,0x47,0x93,0x8c,0x23,0x30,0xd7,0xc8,
- 0xdb,0x33,0xf9,0x97,0xf4,0xbe,0x43,0xb9,0x7b,0x32,0xf0,0xcf,0x00,0x3b,0xf7,0xf5,
- 0x05,0x75,0x8e,0x02,0x44,0x83,0xe7,0x52,0xb0,0x90,0xfc,0x83,0xfe,0xe4,0xcd,0x89,
- 0x86,0x93,0xda,0x8f,0xc1,0xdf,0x93,0xb7,0x23,0xdf,0x82,0x7f,0x70,0xaf,0xbc,0x1e,
- 0xbf,0xe1,0xe5,0x65,0x09,0xa5,0x12,0x5e,0x87,0x72,0xe2,0xf3,0x87,0x70,0x50,0xd5,
- 0x65,0xef,0x2b,0xbe,0x1d,0x07,0x7e,0x9e,0x93,0x10,0x8d,0x71,0xfc,0x53,0x5f,0xf0,
- 0x7d,0x68,0x26,0x92,0x27,0x4a,0x68,0xc7,0xd4,0xa7,0xce,0xf7,0xe0,0x19,0x7c,0x7e,
- 0x77,0x0b,0x9b,0xab,0xa2,0xa2,0xd7,0x94,0x0d,0x81,0x64,0x9a,0xff,0xc9,0x22,0xed,
- 0x3c,0x47,0xc7,0x4d,0x62,0x1f,0x9d,0x8f,0xe7,0x25,0xa5,0xaf,0xd9,0x77,0xbd,0x4d,
- 0xdd,0x68,0xef,0x77,0xa2,0xbd,0x36,0xb6,0x1f,0x50,0xfe,0x48,0x0d,0x78,0xac,0x6c,
- 0x93,0x9d,0xf6,0x48,0x03,0x70,0x5a,0x9f,0x24,0xe1,0x81,0x1e,0xd9,0x1b,0x29,0x91,
- 0x11,0x81,0xeb,0xd3,0x32,0xfc,0x5f,0xf6,0x5a,0x38,0x92,0x6d,0x7a,0x13,0x2a,0xe3,
- 0xaf,0x03,0xea,0x97,0x3a,0x14,0xbc,0x47,0xe0,0xc6,0xc3,0xf6,0x88,0xb8,0x1a,0x8f,
- 0x1e,0xee,0x87,0x84,0xd5,0xff,0x95,0xdb,0x09,0x55,0x50,0xa5,0x7f,0xf5,0x8d,0xfc,
- 0x41,0x81,0x68,0x9f,0xe5,0xf4,0xbe,0x97,0x18,0x2e,0x94,0x2e,0x0e,0x31,0x93,0xff,
- 0x31,0xaa,0xad,0xfc,0xcf,0x79,0x5a,0x16,0xee,0x31,0xc4,0xf9,0xd0,0x83,0xbb,0x31,
- 0x77,0x58,0xb8,0x05,0xaf,0x54,0x24,0xed,0xc3,0x08,0x84,0xde,0xe5,0xf3,0xc8,0x35,
- 0x60,0xc5,0x3f,0x67,0xa4,0x0d,0x9c,0xc5,0x64,0x10,0x4b,0x5c,0x51,0x5e,0x96,0x94,
- 0x5b,0xd8,0x13,0xf2,0xef,0xdd,0xad,0x07,0x1d,0x3e,0x66,0xc6,0xb7,0x90,0x7d,0x61,
- 0xc5,0x3f,0xdd,0xb8,0x1a,0x5a,0x63,0x14,0xd8,0x32,0xce,0xe1,0x4e,0xfd,0x4a,0x2f,
- 0x5b,0x26,0x37,0xc0,0x1c,0x7a,0x5f,0x3b,0x1e,0x34,0x8d,0xe7,0x68,0x56,0xff,0x17,
- 0xe2,0xe1,0x66,0x1e,0x89,0xc9,0xd1,0x00,0xe2,0xcf,0xee,0xb2,0x9e,0xc2,0x4e,0xb6,
- 0x33,0xe7,0x81,0xd4,0xc2,0xd2,0xfd,0x5b,0xe3,0x72,0x1c,0x2c,0xfe,0xaf,0x29,0x77,
- 0xc0,0x91,0x23,0x5e,0x6e,0x6f,0xff,0xd2,0xdf,0x97,0xf4,0xd4,0x57,0x26,0xbf,0xda,
- 0x29,0xde,0xa9,0x1f,0x41,0x45,0x6f,0x7a,0x0c,0xff,0x19,0x7c,0x1d,0x78,0x5e,0x8c,
- 0xb4,0xff,0x0b,0xda,0x84,0xb3,0xcc,0xdf,0xe6,0x08,0x3b,0x5e,0xd1,0xcf,0xcb,0xa6,
- 0xa3,0xe7,0x3c,0xee,0x9f,0x2a,0xc4,0x87,0x26,0x10,0xba,0x91,0x23,0x3e,0xb4,0xe2,
- 0x9f,0x46,0x38,0xe2,0xad,0x20,0xd8,0x59,0x22,0x0d,0x04,0x16,0xf4,0xe4,0x76,0x8a,
- 0x1e,0xf9,0x08,0x6d,0xd4,0x51,0x45,0xcf,0xed,0xad,0xa2,0x05,0xff,0x48,0x1e,0xd4,
- 0xbf,0xae,0x44,0xf4,0x57,0x6c,0xa7,0xdc,0x74,0x10,0xb7,0x8d,0x9b,0xe5,0x85,0x7f,
- 0x09,0xad,0xf8,0xfc,0x36,0x7a,0xfe,0xb2,0x6d,0x72,0xfb,0xc1,0x0c,0xfc,0xa3,0x36,
- 0x18,0x5a,0x22,0x68,0x47,0x23,0x82,0x1b,0xf6,0x3e,0xb7,0x77,0x43,0x2e,0x11,0x17,
- 0xc6,0x91,0x84,0xcb,0x8e,0x1b,0xcf,0xc3,0x65,0x8d,0x75,0xa6,0xf1,0x8f,0xfe,0x0d,
- 0x78,0x88,0xef,0x68,0x8b,0x06,0x0f,0x6e,0x85,0x46,0x3e,0xb7,0x5f,0x1e,0x61,0x33,
- 0x8c,0xbd,0x5b,0x11,0x18,0xfc,0x98,0x99,0xc0,0x20,0x2e,0x0f,0x64,0xb7,0x64,0xf0,
- 0x3f,0x2f,0x69,0x5e,0xee,0xb1,0x8b,0x76,0x7e,0x30,0x3a,0x3f,0x99,0x3b,0x4f,0xcc,
- 0x83,0xdf,0x70,0xef,0x20,0x02,0x21,0x3b,0xfc,0x09,0x2a,0xb9,0x27,0x23,0xfe,0xe7,
- 0xaa,0x03,0x08,0x0b,0xaf,0x83,0xb9,0xf5,0xe2,0x60,0xf6,0x45,0x56,0xd9,0x9d,0x77,
- 0x17,0x43,0xd8,0xac,0xe2,0x46,0x3a,0xad,0x0c,0xea,0x88,0x7f,0x1a,0x1d,0x61,0x25,
- 0x64,0xc1,0x3f,0x1f,0xf3,0x97,0xc0,0x4b,0x42,0xa9,0x5b,0xee,0x81,0x4a,0x5c,0xf6,
- 0xc9,0x65,0xf2,0x33,0xb8,0x51,0x27,0xe1,0xfa,0xc8,0xe7,0xb8,0xcf,0xc0,0x9f,0xac,
- 0xfc,0x4f,0xa3,0x8e,0x62,0x87,0xcb,0x61,0x76,0x0c,0x1a,0x51,0x8c,0xe4,0x12,0xfe,
- 0x59,0x0f,0xb3,0x0d,0x65,0x88,0x11,0x10,0x2a,0xe2,0x73,0xc2,0x16,0xfe,0xc7,0x80,
- 0x07,0xe1,0x7e,0x5e,0x9c,0x54,0x82,0xec,0x00,0x3c,0xc8,0x7f,0x30,0xd4,0x33,0xcc,
- 0xee,0x93,0x8b,0xeb,0x67,0x8e,0x01,0x21,0x6d,0x28,0xa7,0x96,0x0d,0x59,0xf0,0x4f,
- 0xaf,0x80,0xf8,0x33,0xae,0xc4,0x9d,0xbd,0x2c,0xc6,0x3d,0xed,0x39,0x2e,0x96,0xa7,
- 0xd3,0x79,0x54,0xbc,0x36,0x73,0xbf,0x15,0xda,0xb4,0x0c,0xfe,0xa7,0x1d,0x5e,0x81,
- 0xf2,0x4e,0xc7,0x47,0xe2,0xf3,0xf2,0x3b,0x68,0x9f,0x6e,0x1c,0x78,0x75,0x0e,0x7c,
- 0x04,0x0b,0x08,0x08,0xb9,0x73,0xce,0x42,0x79,0xa2,0x34,0x99,0xc1,0xff,0x18,0x6c,
- 0x38,0x74,0x80,0xc9,0x8d,0x0d,0xc9,0xf0,0x80,0xea,0x87,0x5f,0x36,0x4e,0x4a,0x9a,
- 0x0c,0xc9,0x68,0x3c,0x0c,0x39,0xc2,0x44,0x2b,0xfe,0xf9,0x90,0x1d,0x72,0x2e,0xd0,
- 0xa5,0x58,0xb5,0x04,0x87,0x1a,0xc9,0xdf,0x31,0x6d,0x56,0x6c,0x04,0xcd,0x96,0x65,
- 0xb1,0xfc,0x36,0x18,0x11,0xfc,0x44,0x0d,0x59,0xf1,0xcf,0x77,0xa1,0x49,0x46,0xf9,
- 0xf0,0x53,0x5b,0x49,0x76,0x13,0x2f,0xfb,0x9a,0x2d,0x9f,0x5d,0x03,0xa7,0x48,0x62,
- 0xc4,0x5c,0x33,0x61,0x9f,0x8e,0xc0,0x46,0xb5,0x59,0xf0,0x8f,0x44,0x6e,0xaf,0xd6,
- 0x25,0xe4,0xff,0x62,0x4d,0xea,0x2d,0x07,0x73,0x10,0xff,0x68,0xa6,0xd9,0xa5,0xda,
- 0x66,0xca,0xfb,0x28,0x34,0x28,0x96,0x81,0x7f,0x24,0xbd,0x09,0xb4,0xd0,0x37,0xe7,
- 0xbb,0xb2,0xa0,0x5e,0xb0,0xeb,0x1b,0x62,0x4c,0x82,0x1d,0x7a,0xdc,0xf4,0x88,0xc1,
- 0x2e,0xdd,0x04,0x42,0x16,0xfc,0x23,0x9f,0x68,0x27,0x92,0xc1,0xc6,0x8b,0x35,0xe8,
- 0x61,0x7e,0xc8,0xc5,0x81,0x3c,0x8c,0x57,0x7a,0x69,0x30,0x94,0x52,0xc4,0x65,0x16,
- 0xfc,0xb3,0x27,0x7a,0x41,0xaf,0xfa,0xda,0xdc,0x63,0x5f,0xfe,0x1c,0x50,0xda,0xe8,
- 0xeb,0x43,0xe2,0x31,0xf5,0xd4,0xa2,0x2a,0x04,0x42,0x53,0x29,0xde,0xa9,0x2a,0xe4,
- 0xe8,0xcb,0xe0,0x7f,0x3e,0x87,0xd7,0xdc,0xe5,0x01,0x04,0x39,0x25,0xda,0x6f,0x71,
- 0x3e,0xf4,0x89,0x05,0x70,0x88,0x11,0x10,0x62,0x27,0x51,0xbe,0xf9,0x10,0x5a,0x88,
- 0x1f,0x58,0xf1,0x8f,0x14,0xd5,0x5d,0xaa,0x0c,0xac,0x08,0x81,0x10,0xaa,0x75,0xce,
- 0x34,0xb9,0x4f,0x5b,0x20,0x2b,0x11,0x66,0xb0,0x28,0xb4,0x16,0xca,0x07,0x2d,0xfc,
- 0x0f,0x64,0xbd,0x8c,0x66,0xa9,0xeb,0x88,0x5b,0x8d,0xac,0xd6,0xb6,0x90,0x58,0xc6,
- 0xf7,0x55,0xeb,0x65,0x2d,0xb0,0x54,0x7d,0xb0,0x1b,0x7e,0xea,0x2e,0x0e,0xc8,0xa1,
- 0xc8,0xc1,0x34,0xfe,0xf9,0xab,0x36,0xb9,0x49,0x6d,0xd5,0xe5,0xc9,0xb6,0xd5,0xfc,
- 0x61,0xbd,0xcc,0xc8,0xd9,0x66,0x2b,0x91,0x1e,0x86,0x59,0x04,0x2c,0xbb,0xe5,0xb5,
- 0x50,0xac,0xbb,0xfb,0x02,0x16,0xfe,0x67,0xdb,0x13,0x0c,0x61,0xdb,0x3f,0x2d,0xdb,
- 0x5a,0xbc,0x5a,0x7b,0x13,0x2a,0x43,0xa8,0x76,0x25,0x18,0x07,0x42,0x87,0xc0,0x8b,
- 0xeb,0x3f,0x29,0x6d,0x6f,0xb6,0xc3,0x7a,0x79,0x44,0xf6,0x87,0x5f,0xc7,0xaf,0x2f,
- 0x9f,0x72,0xf9,0xeb,0x1c,0xdb,0x94,0x0f,0x16,0x9d,0x4e,0xc5,0xff,0x98,0x40,0x68,
- 0x35,0x0e,0x32,0xf0,0x0f,0x9e,0x19,0x9f,0x37,0x17,0xd1,0x8e,0x74,0x3c,0x60,0xd2,
- 0x3e,0x61,0xb9,0x87,0x2d,0x48,0xed,0xb7,0x1e,0x61,0x22,0xff,0x23,0xb9,0xd5,0x75,
- 0x3a,0x9e,0xaf,0x53,0x1b,0xdc,0xb6,0x4d,0xa1,0x62,0x2e,0xaf,0x12,0xcf,0xd6,0x50,
- 0xd8,0xcf,0xb4,0x38,0x1b,0xf8,0x4b,0xfc,0xcf,0x2d,0xce,0x06,0x5d,0x33,0x72,0xdc,
- 0xcc,0x93,0x55,0x6f,0x68,0x5b,0x15,0x99,0xdd,0xa2,0x37,0xb0,0x54,0xbc,0x1c,0x34,
- 0xd4,0x97,0x24,0xdd,0x56,0xfe,0xa7,0x48,0xb8,0x0a,0xcd,0xba,0xc7,0x78,0x50,0x77,
- 0xdd,0xbe,0x68,0x9d,0xb1,0x92,0xe7,0x90,0xdb,0x7a,0x3d,0x7c,0xaf,0x7b,0xda,0xdd,
- 0xec,0xed,0xec,0xf5,0xfa,0xcc,0x58,0x06,0xff,0xe3,0x96,0xfd,0x88,0x7f,0x8a,0x92,
- 0xb9,0x37,0xe7,0xfb,0xe1,0x65,0xbe,0x2b,0xbe,0x3c,0x58,0xfe,0x2d,0xf9,0xd5,0xf6,
- 0x6b,0x07,0x95,0x9f,0x88,0x6f,0xc1,0x51,0xbe,0x37,0x99,0xc9,0xff,0x5c,0xd5,0x46,
- 0x42,0xc9,0xc0,0xb7,0xfb,0x79,0x7c,0x80,0x55,0xd6,0xe7,0x81,0x82,0xb0,0x47,0xba,
- 0xef,0xb8,0xa3,0xa3,0x78,0x00,0x0d,0x93,0x0a,0xee,0xb0,0xf2,0x3f,0x7a,0xd6,0x17,
- 0xf0,0x2a,0x9f,0xdf,0xe6,0x18,0x98,0xe4,0x97,0x8c,0xd8,0x0d,0x61,0x7b,0x50,0x2c,
- 0x0b,0x1e,0x69,0x9a,0x96,0x5c,0x86,0xfa,0xcb,0xb8,0xc0,0xab,0xc2,0xf6,0xe3,0x62,
- 0x9f,0x15,0xff,0x10,0xc9,0xdc,0x29,0x7f,0xb9,0xe3,0x5b,0xd0,0x68,0x68,0x5a,0xee,
- 0x6d,0xca,0x37,0xf8,0xef,0x5b,0x8b,0x92,0xf2,0x90,0xf8,0x77,0xfc,0x59,0xbd,0x34,
- 0x3b,0x37,0xc4,0x3e,0xb2,0xe0,0x8d,0x6d,0x28,0xaf,0x8a,0xb9,0xa2,0xb3,0xdb,0xdb,
- 0x1b,0xdd,0x73,0x41,0x5e,0xc4,0x2a,0x73,0x1e,0xf2,0xce,0x36,0x0a,0xeb,0xd8,0xf1,
- 0xd8,0x1e,0x75,0xae,0x2e,0xaf,0x40,0xc4,0x38,0xb6,0xfe,0xe1,0x82,0xa3,0xb7,0xd6,
- 0xeb,0xad,0xb1,0x42,0xd9,0x76,0x0b,0xf0,0xe8,0x6a,0xc8,0xc9,0x65,0xcb,0x74,0x94,
- 0xe7,0x5d,0x72,0x62,0x49,0x0f,0x24,0xc0,0xe3,0xc5,0x13,0xfa,0xd6,0xf8,0xfe,0x74,
- 0x4f,0xf1,0xc0,0x21,0xdd,0x17,0x5e,0x1e,0x17,0x67,0xc0,0xe1,0x7a,0xbf,0x60,0x87,
- 0x62,0x99,0xbd,0xcb,0x6e,0x30,0x76,0x0e,0xa5,0xe2,0x79,0x92,0x9e,0xb8,0x78,0xd8,
- 0xf2,0x3c,0xbd,0x30,0xb2,0xa2,0xa2,0x7b,0x6e,0x5b,0xc3,0x4e,0xe1,0xac,0x5e,0x31,
- 0xc9,0xb1,0x4e,0xfc,0x78,0x14,0x08,0x09,0xa5,0x70,0x4e,0xf7,0xf3,0xbc,0x36,0xdc,
- 0x48,0x69,0xfe,0x67,0x10,0x5e,0x66,0xe2,0x62,0x3c,0xb6,0x95,0xd0,0x5b,0x3f,0x89,
- 0x76,0x8b,0x3f,0xfa,0x6f,0x02,0x01,0x21,0xbc,0xf2,0x62,0xd7,0x8d,0x07,0xf3,0x92,
- 0xa2,0x36,0xfe,0x3c,0x5d,0xd2,0x6a,0x68,0xe2,0xad,0xba,0x6d,0x23,0xf3,0xa0,0x3e,
- 0xd2,0xbc,0xf6,0xa8,0xf3,0x97,0x7c,0x14,0xd8,0x94,0xc2,0x0b,0x7a,0x59,0xbd,0x3b,
- 0xce,0x34,0x0b,0xfe,0xc1,0xf9,0xc6,0xd3,0x46,0xce,0xc2,0xad,0x1e,0x68,0xd7,0xee,
- 0xd4,0xe4,0x28,0xa9,0x39,0x96,0xd6,0x77,0xba,0xad,0x91,0x69,0x56,0xf9,0xc3,0x38,
- 0xd4,0xf6,0xd8,0x8a,0x98,0x27,0x12,0xd5,0xe6,0x38,0x11,0x18,0x6c,0xf4,0xa2,0xa1,
- 0xda,0xd3,0xec,0x75,0xda,0xf9,0x6e,0x32,0x64,0x00,0x2c,0xfc,0x8f,0x4c,0xf2,0xad,
- 0xe2,0x70,0xee,0x2b,0xe2,0x74,0xde,0xb3,0xd2,0x5f,0xe8,0xe1,0x62,0xa9,0x71,0xe9,
- 0xd6,0x79,0xa4,0xb8,0x4d,0xfd,0xab,0x93,0x6b,0xde,0x1a,0xff,0x83,0x62,0x67,0xaf,
- 0x81,0xf6,0xc2,0xc7,0x70,0x7e,0xe1,0x7c,0x39,0xcf,0x10,0xdf,0xe6,0x97,0x54,0xff,
- 0x1b,0x08,0x84,0x3e,0x26,0xfd,0x8e,0xf8,0xa7,0xd8,0x82,0x7f,0xa6,0x7c,0x01,0x1f,
- 0xf3,0xf2,0x95,0x8e,0x1e,0x34,0x63,0x5f,0x75,0x55,0x25,0x1d,0xe4,0x28,0x7c,0x9d,
- 0xf8,0xc3,0x83,0xe2,0x37,0xc8,0x34,0x4b,0x4e,0x32,0xbe,0xee,0xb5,0xf8,0xbf,0x3e,
- 0xa1,0x20,0x04,0x5d,0xe1,0xac,0x84,0xff,0x12,0xca,0x92,0x79,0x43,0x4e,0xbf,0x74,
- 0x84,0x97,0x9d,0xc0,0x2b,0xfd,0x24,0xba,0x93,0x4b,0x7f,0xca,0xbc,0xd9,0xe9,0xf8,
- 0xe7,0x41,0x61,0x07,0xa0,0xd9,0x05,0xac,0x46,0x6b,0x50,0x3d,0x86,0xe9,0x38,0x26,
- 0x43,0x43,0x29,0x61,0xfd,0x42,0x33,0x59,0xe8,0x5a,0x76,0x47,0x06,0xff,0x83,0xf7,
- 0x37,0xa6,0x45,0x61,0x96,0x09,0x3b,0x6d,0x29,0xd8,0x83,0xfa,0xab,0x9d,0xf5,0xf3,
- 0x26,0x37,0x7e,0x88,0x4e,0x96,0x48,0xe3,0x93,0xac,0x0f,0xe5,0x01,0xee,0xab,0x55,
- 0xb6,0x97,0xaf,0xd2,0x4c,0x6f,0x54,0x42,0xf1,0x30,0x33,0x4c,0x6e,0xa7,0x58,0xc3,
- 0x7a,0x74,0x04,0x2a,0x1b,0x95,0x6d,0x16,0xff,0xd7,0x7e,0x17,0x8a,0xe5,0x5a,0x14,
- 0xc2,0x3f,0x72,0x5e,0x82,0xab,0x69,0x19,0x07,0x61,0x39,0xd1,0x62,0x9c,0x5d,0x84,
- 0x8b,0x34,0xf0,0x8a,0xb5,0xe9,0xfb,0xc3,0xcf,0x65,0xb4,0xef,0xbc,0x79,0x31,0x5c,
- 0xbd,0x3f,0xaa,0x88,0x3f,0xbd,0xf9,0xbd,0x81,0x23,0x70,0x9f,0xe1,0x78,0x5c,0x29,
- 0x81,0xc3,0xaa,0x1f,0xf5,0x7b,0x71,0x1a,0xff,0x1c,0xbf,0x29,0x97,0xc2,0x00,0xc2,
- 0x39,0xff,0xca,0x4e,0xea,0xc4,0xff,0xa0,0x5a,0xbf,0x68,0xe2,0x61,0xe5,0xe7,0xce,
- 0x52,0x3d,0x02,0x65,0x5d,0x4a,0x87,0x90,0x8e,0x7f,0x1e,0x10,0x96,0xb1,0x2d,0x59,
- 0x25,0x7f,0x63,0x6b,0x67,0xef,0xc9,0x8f,0x85,0x35,0x63,0xa9,0xd7,0x85,0x62,0x87,
- 0xd6,0x47,0x66,0xb9,0x10,0xd3,0x3c,0x46,0x8e,0x16,0xa9,0x1b,0xd7,0x77,0x43,0xf5,
- 0x7e,0xf6,0x3f,0x1f,0x29,0x0a,0xe7,0xac,0x61,0xbf,0x4b,0xae,0x8f,0x15,0x8d,0x86,
- 0x01,0xf3,0xd2,0x01,0xe5,0xfb,0x28,0x14,0xb7,0xf1,0xd2,0xa4,0xb2,0x82,0x55,0x4a,
- 0x63,0xf3,0x83,0x72,0x2e,0xfc,0x5a,0x7d,0xae,0x26,0x4f,0x13,0x3f,0xe8,0x7e,0xbf,
- 0xc0,0x4b,0x6f,0xd7,0x0b,0x2f,0x81,0x67,0xc0,0xe1,0x17,0xed,0xac,0x0f,0x45,0x4d,
- 0x6e,0x89,0x72,0xeb,0xb8,0xff,0x54,0xbf,0x6a,0x3b,0x9c,0x54,0xab,0xf4,0xbc,0x2d,
- 0xc5,0x67,0xe0,0xd2,0x97,0xd2,0xf8,0xb0,0xdb,0x71,0x3a,0xff,0x8c,0x3e,0x98,0xe2,
- 0x0f,0xfb,0xc6,0xcf,0xe3,0xd3,0x59,0x83,0x88,0x29,0x51,0x5b,0xc5,0x45,0x8d,0x88,
- 0x20,0xe3,0x5b,0x1d,0xc5,0x73,0xb9,0xf9,0x21,0xe2,0xb8,0x3f,0x3f,0x02,0x27,0x0d,
- 0x58,0x1a,0xff,0x6c,0xd9,0x4e,0x41,0x3e,0xba,0x12,0x72,0x2e,0x44,0x55,0x30,0xdb,
- 0xc8,0xfb,0x1f,0x2c,0xd7,0xb5,0x5e,0xc8,0x45,0xc3,0x2a,0x30,0x1d,0x7e,0x97,0xb2,
- 0xb0,0x76,0x8f,0xcb,0x37,0x8e,0xc8,0xe2,0x71,0x5e,0x54,0xd7,0x7c,0x07,0xfb,0x96,
- 0xda,0xf0,0x6c,0xd1,0x89,0xa9,0x15,0xae,0x19,0xdb,0xd6,0xf3,0x1f,0x24,0x71,0x05,
- 0x66,0x08,0x4f,0x70,0x5a,0x01,0xb5,0xd0,0x8a,0x7f,0xa4,0xc7,0x74,0x57,0x48,0x69,
- 0x09,0xfc,0x20,0x44,0x7c,0xda,0x23,0xb4,0xdf,0xcc,0xf5,0x24,0xfc,0xf3,0x48,0x4f,
- 0xdc,0x50,0xae,0xb5,0xfd,0x6c,0x5c,0x3e,0x0c,0x4c,0xbe,0x12,0x3e,0xe9,0xd9,0x1d,
- 0x53,0x92,0xec,0x9f,0xf1,0x69,0x3b,0x4c,0x47,0x98,0x7c,0x18,0x61,0xad,0x63,0x40,
- 0x9c,0xc3,0x3f,0x49,0xfa,0x68,0x50,0x31,0xbe,0x7f,0x82,0x90,0xd4,0x8e,0x83,0x5f,
- 0xbe,0xba,0xf1,0x67,0x3b,0xd6,0x91,0xf6,0xcf,0x83,0xa5,0x49,0x95,0xec,0x71,0x3c,
- 0x71,0x14,0x11,0xe4,0x87,0xe5,0xbc,0xe1,0x0d,0x4b,0xfc,0xea,0x07,0x70,0x28,0x58,
- 0xa1,0xe7,0xb6,0x14,0x7f,0xb7,0xf1,0x50,0x2a,0x3e,0x64,0x16,0x37,0x0d,0xff,0x82,
- 0x86,0x12,0xd9,0x74,0xf4,0xb4,0x40,0x64,0x7c,0xff,0x10,0xfe,0xa9,0x07,0x57,0xc8,
- 0xfe,0x53,0x76,0x8d,0xd6,0xa4,0x2f,0xd0,0xf3,0x62,0xce,0x59,0xb0,0x0f,0x0d,0x07,
- 0xa5,0xc5,0x96,0xc5,0x4e,0xd1,0xd1,0x9b,0xac,0x58,0xfd,0x5f,0x25,0x01,0xb4,0xbf,
- 0x6a,0xe4,0xc4,0x15,0x28,0x88,0xa2,0x2e,0x7d,0x5a,0xcc,0xd6,0x56,0x60,0xce,0xdf,
- 0xc6,0xae,0x11,0x46,0x19,0xa1,0x4d,0xe3,0xfb,0x0d,0x24,0x09,0xe5,0x89,0xbb,0x6e,
- 0x61,0x2a,0xec,0xa7,0x84,0xe2,0x7f,0x1a,0x89,0x0f,0x21,0x22,0x28,0x0b,0x1e,0xd3,
- 0xdd,0x38,0x70,0x1e,0xce,0x1a,0x9b,0x4e,0xfc,0x4f,0x14,0x2a,0xc8,0xc9,0x1e,0x36,
- 0xfd,0x5f,0x0a,0x17,0xc9,0x23,0x53,0x46,0xfa,0x97,0x02,0x51,0x9e,0xc7,0xf7,0x55,
- 0xd2,0xf1,0xcf,0xc7,0xaf,0x3c,0x26,0x5d,0x80,0xeb,0xf0,0xfb,0x8a,0x3f,0x32,0xf9,
- 0x9f,0xbc,0x6d,0xe2,0x77,0x52,0x44,0xc7,0x6d,0xe2,0x31,0x98,0x89,0x6f,0x84,0x83,
- 0x0f,0xc6,0xd7,0xb3,0x70,0xca,0x31,0xf6,0x72,0x76,0x79,0x4d,0x1e,0xcd,0x7f,0xcd,
- 0x8b,0xab,0xb1,0xb5,0x61,0x3e,0x37,0xe3,0x81,0x7f,0x2d,0x16,0x48,0x7f,0x70,0xfb,
- 0xf4,0x86,0xaf,0x89,0xd9,0xe3,0xfb,0x67,0x8d,0x3a,0x20,0x45,0xc1,0x25,0xcb,0x7c,
- 0xab,0x5b,0x8b,0xc2,0x1c,0x50,0x22,0x36,0x4d,0xef,0xc4,0xe7,0x51,0xea,0x99,0x16,
- 0x8f,0x96,0xb8,0x40,0x69,0x63,0x79,0xd9,0x63,0xeb,0x69,0xf2,0x3f,0xa0,0x05,0x6d,
- 0x5b,0x59,0x8d,0x5a,0xaf,0x6b,0xba,0xcd,0x19,0xa9,0x49,0xbd,0xaf,0x3a,0x55,0x6a,
- 0xa8,0x77,0xa3,0x68,0xca,0x5f,0xec,0x14,0xc6,0xe6,0x17,0x66,0xb5,0xd1,0x32,0x92,
- 0xff,0x11,0xf1,0xa4,0x95,0x4f,0x53,0xb6,0x98,0x57,0x5c,0x34,0xc8,0x1e,0xdf,0x6f,
- 0x71,0x81,0xf8,0x1f,0x5f,0x5d,0x5e,0x8b,0xf8,0x1d,0xfd,0x10,0x38,0xf1,0x7b,0x89,
- 0x29,0x7e,0xcf,0xb1,0xad,0x01,0x81,0x10,0xef,0xd0,0x37,0x6f,0x77,0xb8,0x2d,0xfe,
- 0xaf,0x27,0x29,0x1a,0xea,0x6e,0xc7,0xb6,0x2f,0x7d,0x90,0xc1,0xff,0x90,0xbf,0xaf,
- 0x5f,0x1d,0x89,0xf9,0x17,0xe1,0xe0,0xb3,0x34,0xfe,0x81,0xb8,0x4e,0x61,0xcf,0x9b,
- 0x1a,0xbe,0xb4,0x92,0x19,0x9a,0x2f,0xb5,0xec,0xc3,0x29,0xe2,0x11,0xb7,0xa2,0x8c,
- 0x57,0xd6,0x21,0x7e,0x1e,0x7b,0x1e,0x77,0xd6,0xf5,0x10,0xe1,0x08,0x7b,0xfa,0xc5,
- 0x7b,0x60,0x53,0xd0,0x45,0xfc,0x8f,0x1b,0x3f,0x52,0x05,0x5f,0xfa,0x21,0x1b,0x86,
- 0xa3,0x88,0x7f,0x96,0xbe,0x67,0x8d,0x7f,0x9e,0xb2,0xbc,0xa8,0x01,0x66,0xf5,0xd9,
- 0xb8,0x6b,0x16,0x34,0x70,0x93,0x7f,0xb6,0x9b,0xfc,0x8f,0x32,0x9d,0xbd,0xa6,0x37,
- 0x37,0xa2,0x7c,0x9e,0x6f,0x5b,0x62,0xe5,0x7f,0xc0,0xa1,0x17,0x1d,0x94,0xfb,0x98,
- 0x5a,0x62,0x9a,0x2d,0x75,0xac,0x00,0xcd,0x96,0xef,0x19,0x88,0x10,0x8e,0x0b,0x08,
- 0xbd,0x8c,0x66,0xdd,0xa5,0x8d,0xc7,0xbb,0xb6,0x47,0x67,0x20,0xec,0xb9,0x2e,0x99,
- 0x57,0x6b,0x5b,0x20,0xbd,0xc4,0xf7,0x9d,0x50,0x46,0x44,0x8a,0x08,0x2a,0x4d,0x3a,
- 0x56,0x88,0x6f,0xe5,0xbc,0xce,0x77,0x91,0x23,0x6c,0xd5,0x38,0xfe,0xb1,0x5d,0xd5,
- 0xce,0x50,0xda,0xe8,0x08,0x72,0x06,0xd4,0x73,0xc2,0x02,0xc3,0xb1,0x4b,0x31,0xf9,
- 0x0d,0x03,0x17,0x6a,0x90,0x99,0x03,0x5e,0x7c,0x30,0x6d,0xff,0x0a,0x67,0xe1,0xf5,
- 0xc6,0xeb,0x92,0xcb,0x7b,0xbe,0xfd,0x05,0xaa,0xad,0xf2,0x7e,0xc7,0x30,0x02,0x89,
- 0xd7,0xf9,0x0d,0x49,0xc7,0x71,0xb8,0xa8,0x7f,0x4a,0x57,0x06,0xd4,0x34,0x3f,0xf3,
- 0xf4,0xe4,0x96,0x9a,0xf5,0x6a,0x11,0x28,0xf7,0xb0,0x21,0x1b,0x3e,0x7f,0x37,0x3d,
- 0xbf,0x4e,0x7c,0x8e,0x22,0xb0,0xe3,0x03,0x8d,0xda,0xb5,0xdd,0x8a,0xc1,0x9e,0x1e,
- 0xdf,0x3f,0x14,0x01,0xb4,0x99,0x9c,0x5c,0x2b,0xd1,0x5e,0xa3,0xe8,0xc4,0x66,0x7a,
- 0x5f,0x73,0x7e,0x5d,0xe4,0x6d,0x78,0x42,0x5e,0x69,0xfc,0x2c,0x6c,0xe5,0x7f,0x0a,
- 0x0c,0x68,0xe8,0x77,0x57,0x2a,0x4f,0x45,0x5e,0x82,0x66,0xc9,0x4d,0x62,0x47,0x4a,
- 0xc9,0x9f,0xc6,0xad,0x03,0xc0,0x79,0x89,0x31,0xcd,0x9e,0x11,0xff,0xfc,0x0b,0x7e,
- 0x24,0xec,0xaf,0x53,0x5a,0xf2,0x4f,0x1a,0xa6,0x59,0x3d,0x84,0xfb,0xc7,0x94,0x9f,
- 0x7b,0xc4,0x4f,0xe0,0x8f,0x9c,0x0c,0xed,0x86,0x0c,0xfe,0x47,0x3b,0x47,0x41,0x74,
- 0x09,0xf1,0x04,0xa1,0x9d,0x71,0xfe,0xc7,0x58,0x6e,0x12,0x65,0xf4,0x0f,0x23,0x19,
- 0xfe,0xaf,0xf3,0x0c,0x57,0x43,0xc7,0xdb,0x26,0xd0,0x6c,0x37,0xf9,0x9f,0x2b,0x88,
- 0xff,0x31,0x1c,0x23,0xa2,0x17,0x8e,0x70,0x92,0xf0,0x20,0xa7,0xf9,0x1f,0x29,0x08,
- 0xbf,0x99,0xec,0x0a,0xe7,0x24,0x5c,0x0a,0x43,0xd8,0x4c,0x30,0x66,0x96,0xa9,0xbf,
- 0x96,0xee,0x67,0x4f,0x96,0x3c,0xd5,0x83,0x8a,0xcc,0xcd,0xda,0x2d,0xf8,0xc7,0x4d,
- 0xfc,0x8f,0xa6,0x44,0xd9,0x13,0xda,0x86,0xb0,0x8b,0xf4,0x7b,0x09,0x37,0xf5,0xdd,
- 0x1e,0xe6,0x52,0x37,0x68,0xa6,0xe2,0x8e,0x8f,0xef,0x37,0x9b,0xe4,0x86,0x69,0xa0,
- 0x15,0xe5,0xcc,0xc1,0x6d,0x19,0x21,0x7f,0x87,0x97,0x51,0xd8,0xb3,0x87,0xc2,0x9e,
- 0x1b,0xa5,0x56,0xf0,0x74,0xe1,0x20,0x32,0x2e,0x7f,0x00,0xe5,0xcf,0x11,0x94,0x3f,
- 0x9b,0xe3,0x0d,0x3b,0x88,0x9f,0x27,0xfe,0x07,0xd7,0x47,0xba,0xaf,0xdb,0x91,0xc8,
- 0xd7,0xf0,0x0a,0xed,0x07,0x91,0x17,0x8f,0xed,0xcf,0x1d,0x57,0xf5,0xa9,0x1f,0x42,
- 0x15,0x08,0xf1,0xfc,0xe1,0xf8,0xc5,0x54,0x20,0xeb,0x19,0xb4,0xe8,0xab,0x7a,0x1c,
- 0xc9,0x86,0x63,0xb0,0x9f,0xae,0x18,0xf9,0x56,0xff,0xd7,0x7e,0x78,0x97,0xa3,0x11,
- 0x17,0x12,0x2b,0x50,0xd0,0x95,0x6b,0xd3,0x7b,0x10,0x0f,0x0c,0xeb,0xe5,0x86,0x87,
- 0xe2,0xa3,0x5e,0xe5,0xe5,0xc4,0x28,0x5a,0xf9,0x9f,0x0b,0xd0,0xdc,0x58,0xa6,0xc9,
- 0x09,0xa7,0x5b,0x40,0x41,0x54,0x24,0xb7,0xb0,0x0b,0xf2,0x3e,0x98,0x53,0x2d,0x7f,
- 0x11,0xe8,0xed,0x40,0xa0,0x68,0xf2,0x5d,0x69,0xfe,0x47,0x7a,0x8d,0xbe,0x3e,0xc8,
- 0x9a,0x4d,0x86,0xad,0xee,0x39,0xf8,0xdf,0xc8,0xee,0xd5,0x3b,0x34,0xad,0x37,0x38,
- 0x6f,0x2b,0x29,0xfa,0x38,0xad,0xc0,0x04,0xfe,0x47,0x28,0xf3,0xca,0x94,0xb6,0xd0,
- 0x0c,0xad,0xa0,0xc7,0x22,0x83,0xf0,0xbc,0xf0,0xb4,0x2e,0x53,0xfe,0x17,0x01,0xd1,
- 0xe6,0x8c,0xf8,0x9f,0xc9,0xdf,0xc5,0xf5,0xa9,0xd4,0xec,0x7b,0x44,0x8d,0x1d,0x87,
- 0x8a,0x02,0xe0,0xf8,0xfc,0x9d,0x92,0x57,0xa7,0xfc,0xaf,0xe0,0x4b,0xe6,0xfe,0xc9,
- 0xf0,0x7f,0x3d,0x11,0xb8,0x04,0x7e,0xe6,0xa8,0xab,0xfe,0x17,0x38,0x0f,0x55,0xda,
- 0xe6,0x33,0x38,0x3f,0x95,0xff,0x85,0xef,0x7b,0x29,0x66,0x0e,0xac,0xfc,0x0f,0x39,
- 0x71,0xee,0x03,0xcf,0x2e,0x51,0xd3,0x51,0xec,0x44,0x73,0x1b,0x1b,0x06,0xa1,0x4b,
- 0xf3,0x05,0x97,0x23,0xd0,0x82,0x23,0x2a,0xdd,0xbf,0xda,0x1a,0xff,0x53,0x42,0xbb,
- 0x25,0x21,0x77,0x8a,0x77,0x42,0x27,0x1a,0xda,0xc1,0xfd,0xe2,0x7e,0x15,0x5f,0xa4,
- 0x4f,0x19,0x8e,0x78,0xa0,0x99,0x13,0x30,0xce,0x88,0x7f,0x5e,0x2d,0xe3,0xfa,0x14,
- 0x44,0x0b,0x99,0x96,0xd3,0x09,0xee,0xc9,0x4a,0x29,0xeb,0x15,0xe2,0x8b,0xb4,0x3e,
- 0x65,0x21,0x1b,0xf5,0xe0,0x78,0x33,0xe2,0x9f,0xaf,0x20,0xb4,0xa3,0xc9,0x3f,0x66,
- 0xb7,0x42,0xe5,0xd6,0xa2,0x12,0x5b,0x90,0x3d,0x5a,0xff,0xf8,0x36,0xa1,0x16,0xe7,
- 0xcf,0xe0,0xa3,0x88,0xc8,0x1a,0xff,0x2c,0x31,0x44,0x3b,0x9a,0xc7,0x2f,0xda,0xd4,
- 0xcf,0x76,0x54,0x2e,0xbc,0xba,0xe8,0xdb,0x47,0x5b,0x0f,0xc7,0xbc,0x03,0x8e,0x79,
- 0x62,0x5e,0xe4,0x25,0x35,0xd1,0x8d,0x88,0xc8,0x12,0xff,0x93,0xfb,0x9c,0x7e,0x29,
- 0x15,0x24,0x36,0x8c,0x86,0xd8,0x8d,0xd0,0xd4,0x9d,0x3f,0xb8,0xec,0x1d,0xcd,0x5f,
- 0xf3,0xd5,0xa1,0x6a,0x8a,0x08,0x32,0xd7,0xc7,0xe2,0xff,0x9a,0x32,0x88,0xb0,0xb3,
- 0x8a,0xdc,0xd6,0x1a,0xf4,0x83,0x5f,0xcb,0xa6,0xc0,0xc5,0x1e,0x09,0xc5,0xfe,0x5e,
- 0x94,0x57,0xa3,0x44,0x99,0x85,0xff,0x11,0x36,0xc2,0x7a,0xa9,0x94,0xcb,0x5e,0x33,
- 0x7b,0xe2,0x5a,0x90,0x7f,0x24,0x6e,0xef,0x5e,0xcf,0x08,0xf6,0x44,0xce,0xc3,0x7a,
- 0xe1,0x5a,0x92,0xa8,0x9f,0x59,0xd6,0x7f,0x06,0xbd,0x6f,0xdc,0xbd,0x86,0x6d,0x85,
- 0xfd,0x7c,0x66,0xd1,0xd4,0x7b,0xb2,0xdf,0x91,0xd6,0x46,0x57,0x86,0x95,0x35,0x40,
- 0xc0,0xcf,0x4c,0x04,0x1b,0x1a,0xcf,0x7f,0x0c,0x4a,0x47,0xf5,0x06,0xc1,0x73,0xcc,
- 0x96,0x98,0xb3,0x49,0x8b,0x39,0x4b,0x3c,0x2b,0xe6,0xb3,0x9d,0x6a,0x33,0xd3,0x92,
- 0xb8,0xec,0xaf,0x04,0x9b,0x54,0xd3,0xb0,0xb5,0xf0,0x3f,0x59,0xed,0xec,0x30,0x3d,
- 0x7f,0x52,0x6c,0xd1,0xf0,0xbc,0x70,0xdb,0xd3,0xd5,0x03,0x68,0x96,0xfa,0xda,0x29,
- 0xdf,0x84,0x6d,0xe0,0x26,0x11,0x94,0xc1,0xff,0x90,0xf6,0x61,0xb9,0x51,0x16,0x86,
- 0x01,0xd9,0x54,0x43,0x27,0xb2,0x87,0x39,0xf9,0xdf,0xab,0x29,0xfe,0xf9,0xf9,0x09,
- 0xfc,0x0f,0x90,0x5b,0xc4,0x1f,0x74,0x3c,0x8c,0xc7,0xf6,0xd7,0xe0,0x5c,0x8d,0x6a,
- 0x11,0x11,0x91,0xe4,0x1a,0x0d,0x94,0xe5,0x26,0x22,0xb2,0xc6,0xff,0xac,0x26,0xb7,
- 0x7b,0x18,0xf1,0xdb,0x4c,0x15,0xb5,0x6d,0x48,0x49,0x54,0x3f,0xa9,0x3e,0x45,0xb0,
- 0x67,0x9b,0xad,0x0d,0x9e,0x32,0x5a,0xf5,0xcc,0xf8,0x9f,0x29,0x64,0x1f,0xa1,0x76,
- 0x8e,0xd9,0x66,0xc9,0x0f,0x8b,0x4f,0x2f,0x22,0x47,0x98,0xfe,0x94,0x36,0x27,0xb0,
- 0x74,0x1b,0x25,0x82,0x39,0x4d,0x0f,0x5a,0x46,0xfc,0x8f,0x5e,0x9f,0x42,0x3b,0x14,
- 0xed,0xe3,0x0e,0x2b,0x6a,0xf6,0x5a,0xd8,0x51,0xe3,0xa6,0x44,0x30,0x1c,0x18,0xe4,
- 0x21,0xb2,0xf0,0xcf,0x0b,0xb3,0x56,0xc6,0x7b,0x4c,0xb4,0xa3,0xb8,0xb3,0x8f,0x33,
- 0x33,0xcd,0x2d,0x6a,0xc6,0xff,0x28,0x5c,0xd0,0x46,0x23,0x82,0xc4,0xa3,0xe3,0xf3,
- 0x5b,0xa6,0x9c,0xe1,0x23,0xec,0xc6,0xaf,0x39,0x8e,0x29,0xc7,0xe0,0x92,0x7e,0x2d,
- 0xbd,0xdd,0xe3,0xf0,0xb9,0xbe,0x37,0xe4,0xd8,0x96,0x7f,0xc6,0xf6,0x79,0x4a,0xe3,
- 0x7f,0x90,0x65,0x89,0xff,0xe1,0x6f,0x4a,0x57,0x05,0xa5,0xa1,0x07,0xe6,0xcb,0x6f,
- 0xea,0xe5,0xfa,0x8c,0x98,0x78,0x86,0xbf,0x06,0xc5,0xba,0xfd,0xd7,0xa2,0x04,0x7f,
- 0x40,0x44,0x81,0xf3,0xd7,0x59,0xe2,0x9f,0x93,0x71,0xc4,0x63,0xb8,0x83,0x98,0xe6,
- 0xe3,0x5e,0xd4,0xef,0x9c,0x25,0x75,0x19,0x5a,0x59,0x69,0xfd,0x12,0xad,0x35,0xaa,
- 0xb5,0x42,0x0e,0xb7,0xf0,0x3f,0x72,0x56,0xb7,0x41,0xef,0x9b,0xa3,0x6e,0x58,0xcd,
- 0x1e,0x86,0x12,0xbd,0x50,0xcd,0xae,0x81,0xfa,0x1c,0xad,0x26,0x47,0x75,0x49,0x8d,
- 0x26,0xfe,0xb1,0xe6,0x5f,0x50,0xfc,0x0f,0xae,0x67,0x68,0xf6,0x14,0xc4,0x03,0x4d,
- 0x30,0xab,0x06,0x57,0x6f,0xd0,0xd9,0x14,0x0d,0xe8,0x68,0xb6,0x4b,0x05,0x84,0x7f,
- 0x72,0x62,0xd9,0xd6,0xfc,0x2f,0x22,0x79,0xfc,0x75,0xb9,0xdb,0xc4,0x12,0xe9,0x4d,
- 0x63,0x41,0xc8,0x1e,0x23,0x5a,0xfe,0x26,0xdf,0xa2,0x5c,0x04,0xba,0xc1,0x2e,0xf0,
- 0x2d,0x5a,0x1e,0xfb,0x7a,0xbb,0xc5,0xff,0xd5,0x98,0x87,0xe8,0xae,0xce,0xd1,0xf2,
- 0x33,0x44,0x3b,0x46,0x85,0xbe,0x99,0x02,0xc3,0x4e,0xcb,0x95,0x66,0x58,0x38,0x05,
- 0x02,0x51,0x44,0xf4,0x47,0x13,0xe2,0x7f,0xfc,0x85,0xf6,0xc6,0x49,0x9a,0xda,0xb3,
- 0xc8,0xc7,0x96,0xf3,0xea,0xa4,0xd0,0xa3,0x7f,0x26,0x99,0x78,0x9b,0xf8,0x1f,0x47,
- 0x46,0xfc,0x73,0x16,0xa1,0x9d,0xd2,0x84,0xdc,0x9f,0xbf,0x02,0x36,0x08,0xc5,0x89,
- 0x4d,0x4f,0x3b,0x87,0x43,0x9b,0xf4,0xeb,0x78,0xd3,0x49,0xd7,0x00,0x6c,0x42,0xfc,
- 0x83,0x08,0x7f,0x83,0x85,0xff,0x59,0x26,0x10,0xda,0x71,0x5f,0x3f,0x4b,0x46,0x20,
- 0x8d,0xc7,0xa4,0x82,0x7d,0x4c,0x12,0x3b,0xa9,0x54,0x12,0xff,0xc3,0x4d,0xf9,0x73,
- 0xd8,0x1a,0xff,0xb3,0x68,0x2f,0x94,0x46,0xe4,0xd0,0x2c,0x15,0xd6,0xc7,0x8b,0x0e,
- 0xe2,0x69,0xfd,0x2d,0x44,0x84,0xd9,0x3c,0x27,0xe4,0x3a,0x5f,0xbf,0x96,0xf2,0xbf,
- 0xea,0x50,0x74,0x8f,0xdd,0xbf,0x5d,0x9e,0xc1,0xf7,0xf2,0x1b,0xc3,0xf6,0x85,0xb6,
- 0x0a,0x78,0x35,0x38,0x2f,0xfc,0xaf,0x3f,0x46,0x31,0xbb,0x76,0x5d,0x69,0xdc,0x51,
- 0x2b,0xbe,0x63,0x8c,0xe2,0x9f,0x8f,0xac,0xf1,0xcf,0x93,0xcf,0x11,0xba,0x7b,0xf0,
- 0x81,0xa4,0xd3,0xb4,0xee,0x51,0x9e,0x5c,0x31,0x4c,0x7c,0x2c,0x0a,0xf6,0x97,0x48,
- 0xbf,0x6f,0xce,0x88,0xff,0xc9,0xba,0x48,0xd1,0xce,0x71,0xc7,0x3e,0x04,0x8d,0xaf,
- 0x6f,0x73,0xad,0x74,0x1c,0x17,0x2f,0xca,0xdf,0xdc,0x52,0x15,0x46,0x8b,0xfe,0xa2,
- 0xfa,0x3a,0x37,0x23,0x3a,0x0c,0x0b,0xff,0xb3,0x9d,0xd0,0x8e,0xac,0x5c,0xf9,0x2a,
- 0xe7,0xff,0xc6,0xe7,0xd7,0xe5,0x84,0xd9,0xef,0xfa,0x3e,0xd8,0xe3,0xd1,0x94,0xd5,
- 0xa8,0x5f,0xee,0x57,0x4d,0xfb,0xeb,0x23,0x8b,0xff,0x6b,0x23,0xc3,0xf9,0xd0,0x72,
- 0x37,0x5b,0xa3,0x3d,0x94,0x3d,0x9b,0xde,0xae,0x8f,0x37,0xd6,0xce,0x84,0xe6,0x10,
- 0x7b,0x5b,0x5f,0x2b,0x53,0x68,0x74,0xc0,0xb0,0xe0,0x1f,0xd3,0x7a,0x55,0x71,0xdb,
- 0x9c,0xe0,0x0f,0xac,0xf4,0x24,0x1f,0x76,0x33,0x43,0x88,0xf3,0xb2,0x22,0xc5,0xeb,
- 0xec,0x45,0xd3,0xde,0x94,0x3f,0x3d,0x96,0xf8,0x9f,0xfd,0x84,0x76,0xce,0xe0,0xb6,
- 0xf9,0x81,0xfa,0x6f,0x7a,0xc5,0x8f,0xf2,0x3a,0xab,0x07,0x9c,0x3d,0x70,0x5f,0x12,
- 0xc5,0xce,0x45,0x7e,0x84,0xcf,0x32,0xe5,0xa7,0x05,0xff,0x98,0x4e,0xc0,0x46,0x47,
- 0x2c,0xff,0x71,0x15,0x81,0x50,0x81,0x63,0x97,0xd8,0x45,0x3b,0xe4,0x18,0xc5,0xff,
- 0x08,0xe7,0xf4,0x0a,0x63,0x42,0xfc,0x0f,0x39,0x35,0xaa,0x74,0xcf,0x69,0xe5,0x1e,
- 0xfc,0x0f,0x7d,0x49,0xff,0x6a,0xdf,0x03,0xfb,0x89,0xf1,0x8e,0x4f,0x4f,0x8a,0x95,
- 0xd2,0xc5,0x14,0x22,0xb2,0xf8,0xbf,0xa4,0x3b,0xe0,0x05,0xc1,0xa3,0x45,0xb7,0x6d,
- 0x28,0x42,0x45,0x36,0x7f,0x65,0x54,0xad,0x2e,0x55,0x37,0x00,0x8b,0x39,0x24,0xdb,
- 0x4e,0x78,0xc4,0x30,0x89,0x20,0xab,0xff,0xcb,0x64,0x27,0x34,0x39,0x6e,0x2b,0xe5,
- 0xcd,0xac,0x6c,0xe5,0xb4,0x16,0xd6,0x2e,0x35,0x85,0x5d,0xc7,0x65,0xce,0x3c,0xb0,
- 0x6f,0x74,0xbe,0x45,0xfe,0x98,0xe8,0x1a,0x0a,0xd9,0x54,0x09,0x9a,0xbd,0x9e,0x9a,
- 0x47,0xe2,0x0c,0x62,0x5c,0x8e,0xf7,0xda,0x34,0xe7,0x46,0x69,0x4b,0x4a,0xdf,0x1d,
- 0x1c,0x5f,0x7d,0xc8,0xbd,0x03,0xdf,0xb7,0x8c,0x92,0x2c,0xdc,0xb0,0x59,0x23,0xe9,
- 0x91,0x5f,0xcf,0x8e,0xdc,0xed,0xe3,0x32,0x17,0x6f,0x44,0x8d,0x6c,0xea,0x17,0x43,
- 0x1c,0x8f,0x7f,0xbe,0xd2,0x7c,0x5f,0xe6,0xe8,0xae,0xef,0x6b,0x3b,0xe7,0xfd,0xd2,
- 0xb2,0x5c,0x43,0xdc,0x11,0xbf,0xa8,0xf9,0x37,0xa2,0xd9,0x7e,0x2f,0x2e,0x86,0xa9,
- 0xbf,0x06,0x26,0xa5,0xf1,0xcf,0x67,0xf0,0xf9,0xda,0x72,0xcd,0xe1,0x5e,0x5a,0xd9,
- 0xfd,0x7a,0xb8,0x5c,0xfb,0xea,0x70,0xf1,0xe9,0x48,0xaf,0x56,0x25,0x2f,0x7f,0x49,
- 0xf4,0x43,0xaf,0xaf,0xbc,0x2f,0x37,0x13,0xff,0x7c,0x64,0xdf,0x67,0xfa,0x17,0x0e,
- 0x56,0xf6,0x6c,0x56,0xe7,0x04,0xe5,0xce,0xc0,0x09,0x1e,0x35,0xca,0xbe,0xa3,0xac,
- 0x63,0xf6,0xc4,0x06,0x3d,0xbc,0x6d,0x4e,0x67,0x66,0xfe,0x17,0x5a,0x4f,0x6e,0xae,
- 0x74,0x38,0x7b,0xeb,0x77,0xbb,0x5c,0x2c,0xc7,0xcb,0xba,0x24,0x50,0x3d,0xa0,0x88,
- 0x6c,0x23,0x34,0x19,0x5a,0xce,0xec,0x0c,0xfc,0x33,0xb9,0x1d,0xf6,0xf1,0x39,0x04,
- 0x1a,0x7b,0x29,0xfe,0x39,0x89,0xb0,0xe7,0x43,0x78,0x2a,0x5a,0x96,0x40,0x84,0xb9,
- 0x91,0xf2,0xa7,0x6a,0x6c,0x99,0xf1,0xcf,0x27,0xf9,0xe9,0xfe,0x0a,0xd9,0xe1,0xa6,
- 0xe8,0x2f,0xc1,0x27,0xe7,0x26,0xc4,0xf7,0xe0,0x50,0xc4,0xaf,0x39,0x5a,0x1e,0xdb,
- 0x89,0xf8,0xb6,0x75,0x5e,0x6e,0x26,0xfe,0xf9,0x95,0x8c,0xf6,0xe9,0xe3,0xb8,0x1a,
- 0x14,0x9f,0x53,0x45,0xc0,0x78,0x00,0xde,0x62,0x7e,0x62,0x30,0xee,0x75,0x5e,0x82,
- 0x17,0x61,0x6e,0x26,0xfe,0x79,0x86,0x1f,0x41,0xb4,0x33,0xbd,0x4d,0xf4,0xc8,0x2f,
- 0x51,0xb4,0x21,0xe2,0x6d,0xca,0xd8,0x0d,0xd9,0x23,0xe2,0x4e,0xfd,0x88,0xea,0xed,
- 0xc6,0x13,0x6a,0xc5,0x3f,0x1e,0xe2,0xaf,0xfa,0xe4,0x38,0x90,0xbf,0x55,0xd3,0x73,
- 0x13,0xec,0x64,0x0d,0x89,0x4d,0xb9,0x91,0xe2,0x7f,0x42,0x66,0xfc,0xb6,0x15,0xff,
- 0xdc,0x0c,0xdc,0xe0,0x71,0x41,0x63,0xcb,0xa4,0x07,0x28,0x1b,0xce,0x8b,0xc7,0x30,
- 0x02,0x1a,0x97,0x77,0x10,0x71,0x21,0x69,0x5d,0xb6,0x4c,0xfc,0x53,0x01,0x8d,0xd1,
- 0x95,0x49,0x79,0x20,0xef,0x5b,0xb0,0x3e,0x56,0x1c,0xce,0x59,0xe3,0x7c,0x43,0x6a,
- 0xe4,0x45,0x71,0xf9,0x6f,0xd8,0xa3,0x6c,0x34,0x1e,0x38,0x23,0xff,0x8b,0x35,0x68,
- 0xde,0x88,0xdd,0x5d,0x7d,0x87,0xf4,0x7b,0x48,0x80,0xdd,0x2b,0x76,0x43,0x17,0x11,
- 0xb1,0x93,0x45,0x3b,0x25,0x12,0xf6,0xcd,0xca,0xc0,0x3f,0x57,0xb5,0xe0,0xfe,0xa9,
- 0xec,0x56,0x92,0xe2,0x7e,0x33,0x2d,0xce,0x31,0x94,0x7f,0x86,0x1c,0x19,0xdc,0xb1,
- 0x85,0xdd,0x4b,0xa1,0x65,0xc6,0xd5,0x99,0xf1,0x3f,0x83,0x70,0x1a,0x37,0xe1,0xf2,
- 0x78,0xf1,0xc7,0xfc,0x85,0xf0,0x7c,0x5a,0x1f,0x32,0x33,0xab,0xc2,0x76,0xe2,0x27,
- 0x29,0x10,0x3a,0x37,0x51,0x6d,0xf5,0x7f,0x6d,0xa7,0xb4,0x77,0xb2,0x16,0xdf,0x6e,
- 0xdb,0x5d,0x5b,0xa4,0xa3,0x3c,0x19,0x86,0x75,0x62,0xa9,0xee,0x1e,0x62,0xd3,0xd9,
- 0x7a,0xa1,0xc8,0x98,0x5a,0x97,0xe1,0xff,0x7a,0x14,0xf6,0xf2,0xd9,0x43,0x4a,0x6d,
- 0xe4,0x1d,0x7d,0xef,0x8e,0x6b,0x34,0x79,0x4d,0xe0,0x77,0x90,0xc5,0x3d,0x61,0x79,
- 0x05,0x9b,0x21,0x6f,0x36,0x34,0x22,0x82,0xac,0xfe,0xaf,0xd7,0x26,0xef,0x56,0xdd,
- 0xc7,0xa7,0x95,0xa0,0xb4,0xd9,0x8d,0xd2,0x1e,0x57,0xaf,0x9b,0xd5,0xb7,0x78,0xea,
- 0xe4,0x82,0x25,0x77,0xe0,0xfe,0x71,0x1b,0x73,0x32,0xf0,0xcf,0x94,0xce,0x9a,0x2f,
- 0xf4,0x17,0x12,0x8e,0x01,0x36,0xa0,0x9e,0x85,0xeb,0x5a,0xec,0x71,0x76,0x8e,0x1f,
- 0x0d,0x54,0x71,0xfb,0x27,0xa2,0x5b,0x3e,0x1a,0x78,0xac,0x33,0x37,0x13,0xff,0x24,
- 0xe5,0x61,0x2d,0x5b,0x5d,0xce,0x1f,0x48,0x9a,0x40,0x68,0x39,0x99,0xe1,0x38,0xc8,
- 0x76,0x44,0xaa,0xe3,0x05,0xc3,0xfa,0x02,0x79,0x82,0xff,0xab,0x5f,0x1f,0x51,0x7d,
- 0x37,0xa3,0x12,0x97,0xd8,0x09,0xa8,0x20,0x6f,0xd7,0x2b,0xbc,0x8b,0x88,0xa0,0x42,
- 0xb1,0x4d,0x1a,0x91,0x3b,0x6a,0xca,0x32,0xf1,0xcf,0x77,0xd0,0x9a,0x70,0xd5,0xa2,
- 0x52,0x26,0x60,0xb3,0x40,0x97,0x63,0xae,0x0f,0xcd,0xfc,0x2f,0x65,0xbb,0x6d,0x16,
- 0x6b,0x8a,0xb4,0x92,0x63,0xc8,0xca,0xff,0x90,0x53,0x8c,0xb2,0x4d,0x6d,0x25,0xf0,
- 0x14,0xcc,0x21,0x6f,0x57,0xbf,0x66,0x12,0x17,0x5b,0xd6,0x95,0x2c,0xde,0xc7,0x35,
- 0xfd,0xe9,0x09,0xf8,0x07,0xcf,0x63,0x5c,0x9f,0xb6,0x8d,0x65,0x21,0xfe,0x29,0x09,
- 0xc9,0x2a,0x7b,0x99,0xd5,0x43,0x7b,0x8a,0xff,0x11,0x16,0xc5,0x43,0x88,0x88,0x26,
- 0xc4,0x3f,0x9b,0x4a,0xf6,0x2b,0x1a,0x0c,0x10,0x11,0x64,0xc6,0x1b,0x23,0x10,0x5a,
- 0xce,0xf3,0xc1,0x7e,0x16,0x4f,0xc4,0xa6,0x8c,0xf8,0xe7,0x2b,0xcf,0x9b,0x6e,0xaf,
- 0xe5,0x7d,0xec,0x24,0x8c,0xe8,0x78,0xbe,0x62,0x93,0x3e,0x87,0x0b,0xfa,0x75,0xa1,
- 0xaf,0x9c,0x11,0xfb,0xd5,0x0b,0xfa,0x8b,0x21,0xc2,0x3f,0x16,0xff,0xd7,0x36,0x30,
- 0x93,0xbc,0xb6,0x88,0xab,0x5f,0x79,0xb3,0xa6,0x23,0x84,0xeb,0xf3,0x39,0x1c,0xca,
- 0xf1,0xeb,0xcb,0x8e,0x35,0xfc,0x0f,0x78,0xad,0xf6,0x87,0x84,0x28,0x5e,0xb1,0xe2,
- 0x1f,0xe8,0x64,0x2e,0xca,0xc7,0x2f,0x32,0xa2,0xba,0x0b,0xe6,0x70,0x76,0x82,0xc9,
- 0x28,0x21,0xe5,0x46,0x1b,0xc8,0x78,0x45,0x98,0x9b,0x81,0x7f,0xa4,0xee,0xc9,0xa6,
- 0x37,0xd0,0xc9,0xba,0xd5,0x5d,0x61,0x2d,0x48,0xef,0xcb,0xb7,0x50,0xbc,0x93,0x8a,
- 0x86,0x67,0xbd,0x14,0x0f,0x65,0xe4,0x9f,0x16,0x4e,0x6e,0x13,0xf6,0x45,0x5a,0x43,
- 0xf2,0x16,0xd6,0x2d,0x3c,0x05,0xae,0xa0,0x8d,0xdc,0x70,0x4d,0x7a,0x59,0x90,0x1c,
- 0x67,0xd9,0x4d,0x42,0x0a,0x4f,0x66,0xc6,0x3f,0x97,0x78,0xc3,0xf6,0xed,0xef,0xe3,
- 0x40,0x70,0xd5,0x52,0x20,0x37,0x85,0xb5,0xdf,0x6d,0xdf,0x46,0xf8,0x56,0x6e,0x5d,
- 0x61,0x8f,0x15,0x5b,0xfc,0x5f,0x42,0x9b,0x4e,0xd1,0x3e,0x73,0x63,0xf9,0x84,0x87,
- 0xef,0x0b,0x4f,0x8a,0x89,0xaf,0x22,0xec,0xa9,0xd4,0xe7,0x3a,0x4d,0x22,0x68,0x7f,
- 0x68,0x6e,0x26,0xfe,0x69,0x85,0x9e,0xa0,0x7f,0xb2,0x19,0x7f,0x35,0x0c,0x15,0xaa,
- 0x9d,0x2f,0x4a,0xd6,0x1f,0x07,0x9f,0xea,0x88,0x90,0x47,0xb2,0xd1,0x47,0x19,0x79,
- 0x56,0xfc,0xb3,0x90,0xaf,0xd3,0xe7,0xee,0x51,0xe2,0x40,0x62,0xcd,0xf4,0x76,0x8d,
- 0x98,0x6e,0x2f,0x65,0xd0,0xb6,0x90,0x6f,0x92,0x5b,0x79,0x6e,0x1c,0xf1,0x8c,0x3e,
- 0x3e,0xff,0x16,0x78,0x60,0xf2,0x1d,0xc7,0x9a,0x13,0x4e,0x3b,0x2b,0x86,0xa7,0x8d,
- 0x42,0x2f,0x7b,0xd5,0xcc,0x3f,0x55,0xae,0x62,0x79,0x5a,0x33,0xe2,0x1f,0x5b,0x26,
- 0xfe,0x59,0x60,0xfb,0x29,0xb1,0x1f,0x77,0xb3,0xb7,0x8d,0x07,0xa0,0xa8,0xa7,0xb0,
- 0x8e,0xfd,0x01,0x61,0x12,0xc1,0x86,0xc5,0xd3,0xcd,0x44,0x86,0x9c,0x3a,0x36,0x60,
- 0xc1,0x3f,0x4e,0xf8,0x2d,0xbf,0x91,0x40,0x8e,0xdf,0xfb,0x21,0xbf,0x61,0xc0,0xb3,
- 0x46,0xfc,0x8c,0x3d,0x89,0xb0,0x67,0x79,0x8f,0x38,0x43,0xe8,0x45,0x7c,0x72,0xcb,
- 0x9a,0x6a,0x0b,0xfe,0xb9,0x8a,0x1e,0x9c,0x68,0x8d,0xe2,0x41,0x7e,0x4e,0xf5,0x27,
- 0x1d,0x24,0x4f,0x4c,0x3e,0xdf,0x10,0x06,0xf1,0x55,0x0e,0xf4,0x39,0x32,0xf1,0xcf,
- 0xef,0xe0,0xe4,0x36,0x8a,0xff,0x69,0x28,0x8b,0xbe,0xcb,0xcb,0xdf,0xb3,0x0f,0x8b,
- 0x5f,0xc0,0x25,0x0a,0x7b,0x7e,0x4b,0xbc,0xd8,0x87,0xf6,0xfb,0xe9,0xfb,0x87,0x33,
- 0xf0,0x4f,0x0c,0xd6,0x16,0x16,0x19,0x7f,0x3b,0xc4,0x66,0x1c,0x5c,0xaf,0x15,0x77,
- 0xcb,0x75,0xec,0x18,0xec,0x75,0x96,0xbe,0xa2,0xdc,0x1b,0x39,0x1e,0x58,0x0b,0x4f,
- 0xd5,0xc8,0x77,0x65,0xe0,0x9f,0x2d,0xf0,0x73,0xf5,0x7b,0x44,0x13,0xd9,0x51,0x3e,
- 0x9f,0xa0,0xe8,0xc4,0x3e,0x33,0xde,0x49,0xd1,0x9d,0x6f,0x47,0xef,0xc7,0x5b,0xe1,
- 0xfb,0x5a,0xf1,0x8f,0x11,0xe4,0xdc,0xfd,0x9e,0xd2,0x91,0x6d,0xa7,0xf8,0x9f,0x3e,
- 0x94,0xe7,0x87,0x4b,0x76,0x77,0x78,0x0c,0x45,0x73,0x11,0xff,0x43,0xa5,0x06,0x32,
- 0xf0,0x4f,0x1c,0x4e,0xc0,0xc2,0x55,0x8e,0x33,0x4b,0x2a,0xd9,0xbb,0x50,0xfe,0x8a,
- 0x27,0x91,0x7f,0x52,0x3b,0x67,0x94,0x25,0xc5,0x87,0x51,0xa3,0x1d,0xe6,0xf1,0x5f,
- 0xe7,0x66,0xe2,0x9f,0x24,0x1e,0xab,0x07,0x43,0x08,0x7b,0x06,0xd9,0x39,0xc1,0xe4,
- 0x7f,0x3e,0x26,0x44,0x74,0xd0,0xb1,0x87,0x22,0xf0,0x75,0x34,0xb5,0x32,0xf1,0xcf,
- 0x10,0x5c,0xe0,0x78,0xbe,0x86,0xd8,0x7e,0xf6,0xa9,0x50,0x4e,0x69,0x5f,0x89,0x94,
- 0xbd,0x6f,0x88,0x5f,0x34,0x76,0x83,0xaf,0xcb,0x93,0x89,0x7f,0xbe,0x0d,0x9d,0x7a,
- 0x6b,0xd8,0x8c,0x67,0x26,0xef,0x8c,0x3b,0xc1,0x3e,0xe0,0x2f,0x08,0x65,0x5d,0xca,
- 0x46,0xf6,0x01,0x7b,0xca,0x30,0xf5,0x97,0x15,0xff,0x14,0x43,0x67,0xc8,0x55,0x57,
- 0x9b,0x20,0xed,0x9c,0xca,0x4e,0xfa,0x20,0xe5,0xaf,0x69,0x21,0xbe,0xc2,0x68,0xed,
- 0x92,0x33,0xf1,0x0f,0x45,0x54,0xe1,0x79,0x9c,0x3f,0x75,0x23,0x05,0x8a,0x74,0x99,
- 0x69,0x5f,0x84,0xc0,0xff,0x96,0xb1,0x1e,0x16,0x47,0x8d,0x29,0x7b,0xad,0xf1,0x3f,
- 0x66,0xfe,0x85,0x4f,0xb7,0xef,0xf9,0xca,0x7e,0x18,0x4d,0xbb,0x8e,0x9b,0x34,0xd7,
- 0xd5,0x5b,0xc5,0x6e,0xe9,0x10,0xfc,0x90,0xae,0x58,0xf3,0xdf,0x87,0xe0,0x3c,0xab,
- 0x82,0xe5,0x9f,0xe5,0xff,0xcb,0x68,0x59,0x1b,0x8a,0xff,0xc1,0x81,0x52,0x8f,0x6a,
- 0xfa,0xbc,0x19,0xf1,0x6b,0xcd,0xff,0x12,0xce,0x83,0x19,0x24,0x6f,0x20,0xda,0x79,
- 0x19,0x7c,0x45,0x8e,0x21,0xe7,0x79,0xe9,0x9c,0x86,0xb0,0xf9,0x4f,0xf9,0x3e,0xd8,
- 0xc9,0xe7,0x6a,0x76,0x44,0x64,0xd6,0xf8,0x67,0x8a,0x76,0x36,0x94,0x9e,0x00,0xda,
- 0x47,0x7d,0x15,0x5a,0xde,0x05,0x86,0xa0,0x61,0xe1,0x82,0xa4,0xf2,0x1c,0x45,0x4c,
- 0x51,0x44,0x50,0x94,0x69,0x19,0xf8,0x07,0xf1,0xf0,0x61,0x05,0x28,0x9e,0x9c,0x69,
- 0x5c,0xf1,0x06,0x7a,0xf5,0xdd,0xcc,0x6d,0x28,0xe5,0x4c,0x92,0xcc,0x40,0x68,0x8a,
- 0xf7,0x4e,0xf3,0x3f,0x44,0xfb,0xe0,0x6a,0xf3,0x08,0xde,0xbf,0xa4,0x2c,0xa2,0x24,
- 0xb2,0x07,0xd5,0xdd,0x30,0x8b,0x88,0xb8,0x32,0xd8,0xa0,0x95,0xf5,0xe0,0x89,0xf6,
- 0x5a,0xf0,0xcf,0x27,0x66,0x90,0xad,0xe3,0x71,0xb1,0x2c,0x7a,0x18,0x5c,0x12,0xc5,
- 0x27,0x4b,0xe7,0xe0,0x1e,0xda,0x18,0xd9,0xf0,0xc7,0xa0,0x7f,0xc8,0xb3,0x35,0x47,
- 0xb5,0xe0,0x9f,0x5f,0x04,0xcc,0x65,0xe9,0x54,0xce,0xc0,0x45,0x7e,0x83,0x76,0x8b,
- 0x99,0x08,0x46,0x57,0x12,0xe2,0x79,0xf5,0x12,0x99,0x12,0xf3,0x32,0xf0,0xcf,0xc6,
- 0x14,0x1b,0x59,0x22,0x96,0xd1,0xb2,0x77,0xe5,0x51,0xd8,0xcf,0x1f,0x53,0xb0,0x73,
- 0x16,0xbc,0xa9,0x76,0xd4,0x38,0xb6,0x59,0xe3,0x7f,0xb2,0x3c,0x29,0x6f,0x17,0xbf,
- 0x75,0x92,0xfe,0x02,0x7c,0xd6,0xaf,0x5c,0x60,0x95,0xf2,0x8b,0xe0,0x1a,0x50,0x86,
- 0xc4,0x3b,0xa1,0xb9,0xde,0x24,0x22,0x32,0xe3,0x9f,0x89,0x1d,0x9d,0x06,0xb6,0xaf,
- 0x22,0xf0,0x73,0x87,0x6d,0x0b,0x5d,0xb7,0xa0,0xfc,0x29,0xc1,0x69,0xd9,0x76,0xe1,
- 0x01,0x8e,0xf3,0x33,0xe2,0x7f,0x04,0x93,0x0f,0x49,0x36,0x07,0xd9,0x0c,0xf5,0x57,
- 0x9f,0xcd,0x5c,0xa5,0xac,0x89,0x7c,0x2b,0xbe,0x37,0xb6,0xf2,0x94,0xb2,0x86,0xfd,
- 0xe4,0xb6,0xb5,0x7d,0x45,0x61,0xa5,0x36,0x23,0xfe,0x07,0xd8,0x4b,0xe4,0x4f,0x07,
- 0xd1,0x0e,0xa7,0xdb,0xdd,0x5a,0x9e,0x57,0xbc,0xc5,0xf8,0x63,0xc2,0x3b,0xe0,0xa0,
- 0xfa,0x3f,0xbf,0x01,0x6f,0xa3,0x43,0x53,0xac,0xf1,0x3f,0x09,0x33,0xda,0xd9,0xd1,
- 0x25,0x9e,0xd7,0x47,0x42,0x37,0x48,0x4a,0x1d,0x85,0x91,0x2f,0xa2,0x6d,0x93,0xff,
- 0x36,0xfc,0x59,0xc2,0x85,0xea,0x13,0x43,0x19,0xf8,0xc7,0x5c,0x1f,0x6d,0xa9,0x5d,
- 0x0e,0xae,0xf6,0xbd,0x21,0x3e,0x9b,0xef,0x59,0x7d,0xee,0x56,0x9f,0xb1,0x79,0x57,
- 0xb1,0x07,0xce,0xd6,0xe3,0x42,0x79,0x33,0xe3,0x9f,0x53,0xec,0xf1,0x4a,0x36,0x1d,
- 0xd6,0xb1,0xd9,0x87,0x94,0xbb,0x1b,0x6e,0xe7,0x2f,0x6a,0xd7,0x92,0x44,0x9d,0xae,
- 0x12,0xfe,0x41,0x68,0x64,0x8d,0x7f,0x5e,0x67,0xbe,0xaf,0x52,0xcb,0x66,0xc0,0xfd,
- 0x46,0xd1,0x07,0x44,0x73,0xc9,0x7b,0xc9,0xed,0x75,0x8f,0xee,0x97,0x9e,0x31,0xfd,
- 0x5f,0x96,0x9a,0x5d,0xc1,0x82,0x97,0x53,0x6c,0xb3,0x9b,0x21,0xf0,0x03,0x14,0x44,
- 0x5e,0xb6,0x0c,0xf7,0x4f,0x89,0xe9,0xbf,0xe6,0x1c,0xe2,0x4e,0x65,0x06,0xb3,0xc6,
- 0x3f,0x77,0x32,0xd3,0xdb,0xd5,0x2f,0x16,0xc2,0x06,0xc3,0xc7,0x37,0x53,0x22,0xd8,
- 0x59,0xe8,0x20,0xda,0xe7,0x7a,0xf8,0x48,0xf3,0x6d,0x75,0xf4,0x37,0x58,0xe3,0x9f,
- 0x0d,0xcd,0xf4,0x3e,0x08,0xe2,0xfb,0xea,0xf0,0x2a,0x3f,0x2c,0x07,0x72,0x7b,0x09,
- 0x44,0x8c,0x28,0x27,0x60,0xc0,0xc0,0x9f,0x60,0x52,0x06,0xfe,0x21,0xfe,0x07,0x61,
- 0xc0,0x03,0xab,0xd5,0x53,0xf1,0x05,0x14,0xdd,0x21,0xa9,0x87,0x60,0x01,0xe5,0xfb,
- 0xcc,0x82,0x43,0x2a,0xfd,0xc4,0xd8,0x44,0xfe,0x07,0x95,0xac,0x73,0x26,0xaf,0x07,
- 0x57,0x72,0x69,0xcc,0x56,0xa2,0x9b,0xf8,0x27,0xc6,0x4a,0x78,0x53,0x23,0xfd,0x64,
- 0xc9,0xbf,0x28,0xcc,0x4a,0xf1,0x3f,0x14,0xf6,0x83,0xf8,0xc7,0x0c,0x53,0x29,0x11,
- 0xea,0x05,0x9a,0xbf,0xc4,0xa3,0xdf,0x0f,0x73,0x7b,0xf0,0xca,0xba,0x0c,0xfc,0x43,
- 0xf9,0xef,0x94,0xd6,0x2d,0x51,0x3e,0xb8,0xa2,0x3a,0xf1,0x8a,0xae,0x85,0x97,0x16,
- 0x38,0xb3,0xe8,0xd3,0x10,0x1f,0x12,0xb1,0xe2,0x9f,0x38,0x85,0xdd,0x9a,0x65,0x7f,
- 0x3e,0x81,0x05,0x66,0xda,0x91,0xdc,0x03,0xcf,0xa5,0x02,0xa1,0x7b,0x88,0x2a,0xb4,
- 0xfa,0xbf,0x28,0xfe,0x99,0xbc,0x39,0xca,0x31,0x3c,0x5f,0x7f,0xd6,0xc9,0x0d,0x94,
- 0x7f,0x92,0x8d,0x98,0x03,0xf1,0x6d,0x66,0x3a,0x7a,0x8e,0x15,0x7f,0xd7,0x9a,0xff,
- 0x95,0xf2,0x06,0xf6,0x35,0xcc,0x97,0x9e,0xd5,0x7c,0xfa,0xc6,0x5b,0xc5,0x33,0xfc,
- 0xcd,0xc0,0x5c,0x42,0x44,0x05,0xf0,0x1a,0x59,0x28,0x6f,0x64,0xc4,0x3f,0x9f,0xa2,
- 0xfc,0x2f,0x58,0xca,0xab,0xdd,0x30,0xa0,0xb7,0xd6,0xdb,0x38,0x4a,0xd7,0xe3,0x3f,
- 0x2a,0x43,0x1b,0x4b,0x0c,0xc7,0xa3,0x42,0x19,0x28,0x8d,0x19,0xf1,0xcf,0x2f,0x9b,
- 0xd1,0xce,0x8a,0x6a,0xab,0x81,0x5d,0x7a,0xab,0x4e,0x89,0x6f,0xb0,0xc5,0xe5,0xd1,
- 0x65,0xd5,0x55,0xb2,0xae,0x9e,0xb6,0x4a,0x21,0xb3,0xc6,0x3f,0xb7,0xa5,0xbc,0x5d,
- 0x54,0x7f,0x80,0xf0,0xcf,0xd2,0x18,0x1b,0x54,0x9b,0x28,0xff,0x57,0xb5,0xdd,0xa1,
- 0x36,0x19,0x65,0x61,0xf2,0x7f,0x59,0xf0,0xcf,0x87,0x29,0xef,0x55,0x0b,0xa2,0x9d,
- 0xd3,0xba,0x57,0x1f,0xc3,0x3f,0x34,0x90,0xe0,0x90,0x6e,0x26,0x76,0x59,0xe3,0x9f,
- 0xdb,0x46,0xbd,0x9f,0x94,0xf6,0x2e,0xfb,0xf5,0x5b,0x62,0x62,0xb7,0x48,0x61,0x60,
- 0xe4,0x08,0x93,0x47,0x24,0xd3,0x11,0x66,0xc5,0x3f,0x3b,0x44,0x5a,0xff,0x8d,0x88,
- 0x7f,0x16,0x75,0x2e,0x5e,0xa0,0x39,0xa2,0xf9,0x5a,0xc9,0x30,0x74,0x10,0xed,0x53,
- 0x04,0x3d,0x86,0xc9,0x40,0xda,0x32,0xf8,0x9f,0x0d,0x52,0x19,0xc2,0x1e,0xe7,0xb0,
- 0x7a,0x80,0xbb,0xea,0xf3,0x06,0xd8,0xf5,0xfc,0x23,0x98,0xcd,0xff,0x2e,0xce,0x16,
- 0xae,0xda,0x04,0x65,0xf5,0x4b,0x33,0xe3,0x9f,0x53,0xf2,0x07,0x95,0xce,0xcd,0xd0,
- 0x61,0x94,0x24,0xa7,0x2d,0x74,0xde,0x22,0xed,0x16,0xb4,0x38,0x1e,0x9c,0x5c,0x35,
- 0xc2,0x3d,0x3a,0xca,0x1f,0x6b,0xfc,0xf3,0x0c,0x33,0x5a,0x98,0xaa,0x55,0xc0,0x73,
- 0x7a,0x51,0x9f,0xb2,0xe6,0xe0,0xed,0xc2,0xde,0x78,0x69,0xc4,0x76,0xf7,0x92,0x4a,
- 0x58,0x6f,0xc7,0xa3,0x1d,0xce,0x88,0x7f,0xce,0x83,0xf5,0xf5,0x55,0xc9,0xe8,0x1a,
- 0x91,0xaa,0x93,0x5d,0x9b,0x5c,0xbe,0x46,0xf9,0x16,0xfc,0xa9,0x67,0x5e,0x52,0x39,
- 0x87,0x57,0x5e,0x25,0x68,0xe4,0xce,0x88,0xff,0xd9,0xa9,0xa6,0x8a,0xd8,0x4c,0x1a,
- 0x94,0xce,0x52,0xb6,0x7b,0x42,0xdc,0x29,0xfc,0xb1,0x04,0xc5,0xc8,0xee,0x31,0xff,
- 0x57,0x7c,0x02,0xff,0x83,0x42,0xbb,0xdf,0x71,0x7d,0xfe,0x2f,0xe0,0x16,0xbe,0x60,
- 0xc8,0x71,0x4a,0x9c,0xa1,0x7e,0xba,0xf5,0x4b,0x71,0xc7,0xb0,0x38,0x4b,0x7e,0xad,
- 0xb1,0xaa,0x7f,0xf9,0x80,0x62,0x8d,0x7f,0xde,0x4e,0xe8,0x05,0x85,0x46,0xf5,0x8c,
- 0xd0,0x1b,0xc6,0xb5,0xee,0xe6,0x6a,0x96,0xa7,0xaf,0xe7,0x1a,0x77,0xdc,0xc5,0xae,
- 0x30,0xd6,0xaa,0xe6,0xf3,0x5b,0xe3,0x9f,0xcd,0xf9,0xdd,0xca,0x67,0xda,0x7e,0xa1,
- 0x55,0x2e,0xea,0xa9,0x0e,0x07,0x6e,0x0f,0xed,0xf5,0x16,0x21,0x22,0xb2,0x55,0xf2,
- 0x27,0x51,0x94,0x35,0x67,0xfa,0xbf,0x7a,0x4d,0x3e,0x4d,0xa9,0x64,0x0e,0x78,0x80,
- 0xb7,0x01,0x2a,0xbe,0x65,0x2a,0xc5,0x73,0x4e,0x45,0xf9,0xc3,0x1a,0x74,0xfc,0x69,
- 0xa6,0x35,0xfe,0x79,0xca,0x4e,0x33,0xfa,0x74,0xe9,0xaf,0x1e,0xfb,0xa5,0xf6,0x9e,
- 0xe9,0x1f,0x57,0xc2,0x85,0x97,0x70,0x30,0x6d,0x48,0x9c,0x0b,0x7f,0xd4,0xcd,0x40,
- 0x0e,0xab,0xff,0xcb,0x0c,0x7b,0xee,0x42,0xed,0xf3,0x38,0x9c,0xd5,0xef,0x43,0xc1,
- 0x9b,0xdf,0x04,0x7f,0x64,0x1d,0x7d,0x57,0x27,0xc4,0x0f,0xf9,0x08,0x05,0xae,0x68,
- 0x97,0xf3,0x3f,0x46,0x5e,0x5d,0x71,0xa5,0x76,0x14,0xca,0xbb,0x50,0xda,0xac,0x81,
- 0x23,0x02,0x05,0x06,0xbb,0xd0,0x42,0x97,0xab,0x0e,0x3a,0x92,0x0d,0x90,0xc9,0xff,
- 0xa0,0xfe,0x6a,0x4e,0x4c,0x9d,0xa4,0x3d,0x6d,0xcc,0x49,0x36,0xb7,0xb1,0x67,0x48,
- 0xa3,0x0d,0x29,0x09,0xf1,0xef,0xe1,0x4d,0x52,0xfd,0x99,0xf1,0x3f,0xa9,0xe8,0x94,
- 0x69,0x94,0xa6,0xf4,0x08,0x5f,0x75,0x93,0xd2,0xb2,0xf5,0x17,0x34,0x3f,0xb9,0x21,
- 0x41,0x85,0x3b,0x28,0xdf,0x39,0x9e,0x11,0xff,0x63,0xf2,0x3f,0x07,0x97,0xfa,0x6c,
- 0x76,0xad,0x55,0xae,0x95,0x70,0x7d,0x36,0x46,0x1a,0xbc,0x1e,0x43,0xf4,0x3a,0xbb,
- 0xb5,0x2d,0xfc,0x0e,0x04,0x8a,0x96,0xfc,0x0b,0xb0,0x13,0xff,0xe3,0xef,0x71,0x24,
- 0xaa,0x3d,0x70,0x38,0xe4,0x32,0x94,0x58,0xfe,0xcf,0x93,0xaf,0xbb,0xfd,0xc6,0xf2,
- 0xba,0xe2,0x9d,0x30,0x1a,0x68,0x01,0x96,0xf8,0xe7,0xfd,0xf0,0x2e,0x5e,0xfc,0xbb,
- 0xd3,0xe2,0xdb,0x28,0xc6,0xab,0xec,0x08,0x6c,0x10,0x48,0x6b,0x55,0x87,0x37,0x0f,
- 0xe1,0xa4,0x0b,0xa4,0xe8,0xc3,0x19,0xf8,0xe7,0x22,0x9c,0xaf,0x2f,0xd7,0x1c,0x2f,
- 0x55,0x9f,0x25,0xef,0xc6,0x90,0xdd,0x68,0xf8,0x4c,0x38,0xaf,0x95,0x7b,0xed,0x51,
- 0xd1,0xdb,0xd8,0xcb,0xca,0x01,0x11,0x75,0xba,0xfe,0x21,0xe5,0x7f,0xed,0xe3,0xae,
- 0x22,0x65,0x7d,0xf1,0x2f,0xe0,0x85,0x50,0x99,0x91,0xbb,0x2e,0xf2,0x11,0x74,0xde,
- 0x81,0x16,0x59,0x94,0x15,0xb5,0xa1,0xfd,0x35,0x24,0x67,0xf2,0x3f,0xbd,0x28,0xaf,
- 0xdc,0xb4,0x0d,0xcc,0x8d,0xd1,0x83,0xd6,0x96,0x41,0x65,0xfd,0xa2,0x72,0xd4,0x05,
- 0x7a,0xbc,0xd2,0x25,0xb9,0xbd,0xab,0xac,0xfc,0xcf,0x4e,0xb4,0x67,0xe7,0x30,0x25,
- 0xca,0xda,0x71,0x61,0x3d,0xc6,0x95,0xed,0xae,0x7e,0x69,0x5f,0xa3,0xc6,0xdd,0x11,
- 0x36,0x0b,0x5a,0xf9,0x1c,0x21,0x9a,0xb0,0xd4,0x3f,0xd4,0xa7,0x10,0xff,0x80,0xda,
- 0x67,0x83,0xf8,0x51,0x90,0x4e,0x87,0x7d,0x23,0xca,0x9f,0x4e,0xa3,0x03,0xec,0xa0,
- 0xcc,0x8a,0x9c,0x32,0x4c,0xc6,0x26,0x1d,0xff,0x96,0x14,0xf6,0xc3,0x85,0x2d,0xd7,
- 0xa9,0x9b,0x93,0xa3,0x61,0xcf,0x28,0xcf,0xcd,0x1d,0x52,0xe3,0x18,0xae,0x1e,0x86,
- 0xe3,0xf0,0xdc,0x44,0xff,0xd7,0x4e,0x18,0x09,0xfb,0x9c,0xf6,0x06,0xd1,0xf4,0x76,
- 0xe9,0x8e,0x46,0xc5,0xad,0x0f,0x17,0xa2,0xc6,0xac,0x2f,0x3e,0x29,0x1d,0xd7,0x3b,
- 0x54,0x7b,0xa2,0x3a,0xcd,0x3f,0x10,0xfe,0xb9,0x5e,0x77,0x69,0xf2,0x4e,0xe6,0x96,
- 0x5f,0xe7,0x0b,0x16,0x2b,0x9b,0x71,0x63,0xec,0x23,0x44,0xd4,0xc9,0x3e,0xe8,0xe9,
- 0x4c,0xba,0x61,0x02,0xff,0xb3,0x0c,0x76,0xa9,0xba,0x16,0x2c,0x09,0x08,0xae,0x07,
- 0x24,0xa9,0x0b,0x15,0x77,0x44,0x7e,0xc1,0x40,0xb1,0xb3,0x90,0xfd,0x11,0x3a,0xde,
- 0x73,0xeb,0x6e,0x2f,0x1b,0x96,0xac,0xf8,0xe7,0x59,0xfe,0x6d,0xad,0xb0,0x96,0xf9,
- 0xa5,0xf5,0x8d,0x33,0x29,0xec,0x79,0x1a,0x5e,0x29,0x0d,0x2b,0x44,0x04,0xed,0xe5,
- 0xb3,0xcf,0x4c,0xe0,0x7f,0x10,0xf6,0x80,0x97,0xd9,0xe3,0x26,0xda,0x99,0x6f,0xa0,
- 0xe0,0x05,0x79,0x08,0x2a,0xd7,0x38,0x6e,0x10,0xbb,0xf9,0xaf,0xc3,0xde,0xc9,0xf6,
- 0x79,0x13,0xf2,0xdf,0x3f,0x57,0x7f,0xd5,0xed,0x38,0xa1,0x1c,0xd7,0x2f,0xc9,0x55,
- 0x06,0x6e,0x9b,0x33,0xfa,0x05,0xd5,0x7f,0xdb,0xa4,0x21,0xb3,0x50,0xd2,0x75,0xe0,
- 0xb8,0x9c,0xff,0xb9,0x07,0x96,0xa3,0x3e,0x92,0xce,0xf1,0x0a,0x23,0xb7,0x4f,0x6c,
- 0xe3,0x17,0xc1,0xdf,0x6e,0x5f,0x87,0xcb,0xf8,0x1a,0x74,0x90,0x23,0x32,0x93,0xff,
- 0xd9,0x2b,0x99,0x24,0xf3,0x74,0x69,0xaf,0xb6,0xc3,0x50,0x42,0x6c,0xba,0xbe,0x57,
- 0x9a,0x6b,0x44,0xef,0x8e,0x0c,0x17,0xac,0x85,0xa2,0x01,0xf7,0xe5,0xfc,0x4f,0x91,
- 0xd6,0xbc,0x82,0x5d,0x0d,0xbb,0x79,0xd1,0x4a,0x65,0x7a,0x60,0xaa,0xbe,0x87,0x97,
- 0xc6,0x73,0x6e,0x66,0xbf,0x63,0x6b,0x0d,0xcd,0x23,0x67,0xf2,0x3f,0x44,0xfb,0x68,
- 0x9f,0x29,0xd7,0x31,0x2a,0x34,0xe1,0x0a,0xa3,0xf6,0xcf,0xc3,0xf5,0xf7,0x74,0xdf,
- 0xec,0x8d,0x74,0x43,0xfd,0x61,0x93,0x61,0xcb,0x8c,0x7f,0xbe,0x98,0x2c,0x8f,0x38,
- 0x06,0xc5,0x0a,0x38,0x2b,0xf9,0xe2,0x5f,0x1d,0x10,0x9e,0xe6,0x17,0xe3,0xfe,0x44,
- 0xd6,0x4e,0xf1,0xac,0x71,0x14,0xff,0x9b,0x1b,0x27,0xf0,0x3f,0xd0,0x19,0x3c,0xa0,
- 0x6e,0x6e,0x54,0x4e,0xc8,0xc3,0xfa,0x15,0x52,0x6e,0xe3,0x91,0xf7,0x70,0xe0,0x97,
- 0xf3,0xcc,0xf8,0x1f,0xf0,0xab,0x97,0xf3,0x3f,0x02,0x65,0x73,0xe7,0xf7,0xcb,0x08,
- 0x84,0x6a,0xed,0x8f,0x88,0x25,0xf6,0x91,0x76,0x9f,0x51,0x1f,0x23,0xfb,0x25,0xe6,
- 0x0d,0xdb,0x33,0xf9,0x9f,0xef,0xc2,0xae,0xa0,0x2b,0x88,0xfa,0x37,0x0b,0x9a,0xc2,
- 0x65,0x21,0xdb,0x36,0x9b,0x49,0x23,0xeb,0x39,0x09,0xe7,0x87,0x52,0x93,0x5e,0xb5,
- 0x26,0xb3,0xfe,0x4f,0x16,0x45,0xa7,0xb4,0x2e,0x42,0xbc,0xb4,0x1a,0x9e,0x72,0x96,
- 0x05,0x60,0x1b,0x2b,0x99,0xfe,0x02,0xcc,0xd1,0x73,0xb6,0xb1,0xfe,0x70,0xbd,0xcd,
- 0x75,0x53,0x4f,0x2c,0x30,0x21,0xff,0x1d,0xb4,0x45,0x4a,0x01,0xf3,0xb0,0x1d,0x01,
- 0x4f,0x68,0x6a,0x01,0x93,0x60,0xb7,0xee,0x0e,0x5d,0x69,0x12,0x41,0x8b,0xec,0xba,
- 0x9c,0xe1,0xff,0x4a,0xd9,0x5f,0x04,0xf3,0xc2,0xd2,0x80,0x19,0xed,0x0c,0x9a,0x19,
- 0xef,0x8d,0x88,0x28,0x29,0x19,0xb0,0x15,0x3c,0xbc,0x7a,0x42,0xfe,0x3b,0xbc,0xa8,
- 0x2f,0x3f,0x56,0x7d,0x06,0xde,0xac,0x31,0xb3,0xdd,0xf1,0xca,0xa2,0x05,0x44,0x5c,
- 0x7f,0x2e,0x5d,0xd2,0xab,0x26,0xf2,0x3f,0xc4,0x2e,0xce,0xd3,0x97,0xbf,0xd1,0x70,
- 0x46,0xba,0x20,0x54,0xd5,0x6c,0xee,0x6b,0x28,0x81,0xd7,0xe4,0x54,0x22,0x58,0xcd,
- 0x21,0x67,0xb9,0x7e,0x39,0xff,0x83,0x62,0xa0,0x79,0x1d,0x2e,0x42,0x67,0x88,0xd0,
- 0x0e,0x4a,0xd7,0xa8,0x6e,0xe6,0xbf,0x9f,0x08,0xf0,0xaf,0x11,0x35,0xe4,0xcc,0xf0,
- 0x7f,0xe1,0xfa,0x68,0x7a,0xb3,0x99,0xf6,0xe5,0xf6,0x04,0x15,0x27,0x02,0x9b,0xfa,
- 0xd9,0x5a,0x00,0x61,0x5e,0x37,0xaf,0xd7,0xe2,0xba,0x3c,0xd1,0xff,0xb5,0x2f,0xf2,
- 0x74,0xb0,0x39,0x86,0xab,0xb7,0x4f,0x2a,0xc3,0x0f,0xb1,0xa1,0x84,0x35,0x69,0x54,
- 0x11,0xc8,0xf5,0x71,0x14,0x07,0xc7,0x0b,0x2f,0xe3,0x7f,0xa8,0x7e,0xd1,0x56,0x7c,
- 0xcd,0x1f,0x53,0xf6,0xd6,0x36,0x71,0x12,0x3f,0x24,0x9b,0xf9,0xef,0x1f,0xc0,0x21,
- 0xee,0xd5,0x3d,0xb1,0xea,0x0c,0xfe,0x07,0xe7,0x2f,0xc0,0x5f,0x1f,0xe8,0x97,0x10,
- 0x08,0x05,0x1c,0x0f,0x8b,0x1f,0xf0,0xd3,0xe4,0x21,0x8d,0x55,0x77,0xab,0x7f,0xa2,
- 0x2b,0x97,0xf9,0xbf,0x64,0x9f,0x6a,0xe7,0xe2,0x7b,0xfa,0xb0,0xe0,0x13,0x96,0xaf,
- 0x43,0xd8,0x33,0x5c,0xe2,0x03,0x47,0xb4,0x28,0x69,0xf4,0x70,0x27,0x31,0x72,0x99,
- 0xfe,0xaf,0xe7,0xe2,0x62,0x54,0xee,0x67,0x14,0x8b,0xff,0xe5,0x98,0xd2,0xcf,0xbe,
- 0xcc,0x0f,0x10,0xff,0x13,0x6f,0x25,0x22,0xc8,0x4c,0x8d,0x3f,0x9c,0x81,0x7f,0xf0,
- 0xbc,0x1c,0x0c,0x5e,0x1f,0x38,0x4c,0x83,0x3e,0x34,0xdb,0x1d,0x7c,0x97,0x61,0xba,
- 0x21,0xba,0x59,0x83,0xa4,0xf5,0xe5,0x4c,0xf0,0x7f,0xc1,0xb3,0xf0,0x98,0x46,0xf8,
- 0x87,0xa4,0x8d,0xa1,0xac,0x66,0x85,0xf0,0x6c,0x4e,0x51,0x8f,0x52,0xe7,0x7c,0x5b,
- 0x5a,0x07,0x45,0x7c,0x02,0xff,0x63,0xd6,0xff,0x49,0xda,0x6b,0xc5,0x77,0xe0,0x3c,
- 0x9f,0xb7,0xd2,0x71,0x5c,0x99,0xa1,0x5e,0x20,0xb7,0x57,0x6d,0x03,0x85,0x2e,0xef,
- 0xd2,0x4a,0x33,0xfc,0x5f,0x57,0xb5,0xa1,0x3c,0xf1,0xc3,0x5c,0xaa,0x1e,0x86,0xa7,
- 0x89,0x2f,0x4f,0x8a,0x03,0xfc,0x02,0xf9,0x77,0xda,0x50,0xfe,0x0c,0xd7,0x54,0x42,
- 0x5e,0x26,0xff,0xf3,0x0e,0xbc,0xcc,0xe7,0x85,0xed,0x2d,0x78,0xff,0xd7,0x79,0x79,
- 0xdc,0x7e,0x5c,0xbc,0x24,0x5f,0xe4,0xf3,0xce,0xe0,0xe0,0x0b,0xb8,0x64,0xcc,0xdb,
- 0x61,0xcf,0xe4,0x7f,0xb6,0xc3,0x5a,0xad,0x48,0x76,0xff,0x03,0x7b,0x5b,0xfb,0x37,
- 0xb8,0xb6,0x3b,0x18,0x60,0xbf,0xad,0x79,0x8e,0xd2,0xfc,0x43,0xec,0x6d,0xf9,0x39,
- 0xa1,0x88,0x4f,0xe0,0x7f,0xb6,0xc1,0xfd,0xc2,0x6c,0x08,0xea,0xd9,0x6f,0x43,0x23,
- 0x14,0x03,0x4e,0xfb,0x03,0xec,0x81,0x62,0x23,0x5a,0xc3,0x8e,0x69,0x7b,0x43,0xc5,
- 0x60,0xcb,0xe4,0x7f,0x50,0xc8,0x44,0xdd,0x93,0x65,0x2d,0x72,0x54,0x8b,0x49,0x25,
- 0x5c,0x2e,0x65,0xaf,0x20,0xb0,0x0c,0xf7,0xcd,0x96,0xd9,0x11,0x29,0xe1,0xd4,0xdc,
- 0x73,0x32,0xf9,0x9f,0x36,0x38,0x14,0x7e,0x5e,0xb7,0x3f,0x2f,0x7e,0x0c,0x47,0xcc,
- 0xb2,0x21,0x45,0xfd,0x7c,0x5f,0x74,0x5e,0x9f,0xbd,0x33,0xf2,0x3e,0x6a,0xa8,0x8e,
- 0x58,0x5e,0x26,0xff,0x43,0x24,0xcf,0x2c,0x97,0x99,0xed,0x3e,0xb2,0x08,0xd1,0x72,
- 0xab,0x78,0x02,0x46,0xe4,0x03,0x46,0xde,0x36,0x71,0x40,0xc3,0x1d,0xd5,0x98,0x9b,
- 0xc9,0xff,0x9c,0x81,0xf3,0x70,0x83,0xee,0x18,0x20,0x33,0x9f,0xa3,0x9a,0x0b,0x89,
- 0x0b,0x70,0x85,0xcb,0x0f,0xda,0x47,0x50,0x2d,0x52,0xea,0xd3,0x04,0xff,0x17,0xca,
- 0x1f,0xee,0xd2,0x96,0x46,0xd9,0x27,0xb0,0xaf,0xb0,0x4c,0x53,0x36,0xe2,0xf9,0xea,
- 0x34,0x5c,0x86,0x7b,0x3b,0x7b,0x0f,0x25,0xd2,0x82,0x1d,0x13,0xfc,0x5f,0x25,0xfa,
- 0xbe,0x28,0x8a,0xd9,0xad,0x29,0xda,0x87,0x2b,0x2d,0x11,0x37,0x7f,0x9e,0x68,0xa2,
- 0x78,0xe4,0x3d,0x68,0xd0,0x5c,0xf1,0x09,0xfe,0x2f,0x53,0xfe,0x20,0x1e,0x68,0x7d,
- 0x85,0x0c,0x93,0x45,0x68,0x98,0x00,0x0e,0x5a,0x8d,0x1e,0x60,0x06,0xab,0xa7,0x54,
- 0xf1,0x4c,0xfe,0x67,0x35,0x55,0x07,0x45,0x90,0x5f,0xdc,0x4f,0x85,0xa1,0x70,0xc0,
- 0xdc,0x59,0xc3,0x50,0x7e,0x6c,0x19,0x85,0x79,0xbf,0x44,0x19,0xbb,0x99,0xfc,0xcf,
- 0x19,0x19,0xe5,0x8f,0x80,0xb0,0x07,0x05,0x8b,0x40,0xd1,0xce,0xe2,0x10,0x9c,0x47,
- 0xbc,0xe7,0xa0,0x34,0xf6,0xf3,0xac,0x8a,0x67,0xf2,0x3f,0x93,0x2f,0xa6,0xd8,0xc2,
- 0x16,0xf8,0x48,0x7a,0x27,0xb2,0x80,0xf8,0xb1,0x4a,0xe3,0x6a,0xad,0xdc,0xb0,0xf7,
- 0x20,0x70,0xea,0x85,0x72,0x58,0xd6,0x97,0x6f,0xe1,0x7f,0xd0,0x08,0x7c,0x81,0x40,
- 0x5d,0xcc,0xf5,0x09,0x3c,0xcf,0xff,0xe1,0x95,0xe8,0xe9,0xc8,0xf4,0x45,0x9b,0xbd,
- 0xd7,0xf5,0x6f,0x68,0x59,0x75,0x29,0x14,0xc5,0xa5,0x93,0x5b,0xd0,0x1e,0x1f,0x8f,
- 0x6f,0xcf,0xea,0x4d,0x45,0xd3,0xa9,0xac,0xc7,0x0c,0x73,0xca,0xf1,0x31,0x7b,0xfd,
- 0x03,0xb2,0x66,0xd8,0x80,0xfc,0xcb,0x29,0x8f,0x8f,0x2f,0x8d,0x7f,0xb2,0x76,0xa6,
- 0xd8,0xb3,0x58,0xe4,0x63,0xfd,0x05,0xd9,0xd3,0x85,0xa7,0xcf,0x23,0x35,0x0b,0xb3,
- 0x0c,0x1b,0x77,0x0e,0xb2,0x66,0xcd,0xa5,0x22,0x7e,0x48,0xf3,0x3f,0x20,0xd1,0x7c,
- 0x04,0x81,0x0f,0xe3,0x26,0x39,0x8e,0xff,0x30,0x27,0xb1,0xc8,0x03,0x7f,0x2b,0xde,
- 0x6d,0xe4,0xb5,0x51,0xfd,0xbd,0x1e,0x5f,0x9d,0xbd,0x65,0x92,0x3a,0xfe,0xfc,0x3b,
- 0x60,0x7f,0x8a,0xed,0xe9,0x13,0xcf,0x52,0xfc,0x8f,0x91,0x37,0x24,0xbe,0xed,0xbc,
- 0x94,0x7d,0xa3,0xf1,0x0f,0xc7,0xe8,0xc4,0x35,0xfa,0x57,0x3b,0xde,0x16,0x07,0x2c,
- 0xfa,0x77,0x67,0x2a,0xa8,0x6c,0x8f,0xd8,0x1e,0x3a,0x0b,0x0b,0x0c,0x0f,0xf1,0x3f,
- 0xbf,0xc7,0xc1,0xf2,0xb8,0x30,0x88,0xeb,0xef,0x0d,0xd9,0x77,0x65,0xd4,0x3f,0x4c,
- 0xe1,0xe1,0xa5,0x09,0x14,0x02,0xcf,0x53,0x19,0x49,0x2a,0x04,0xf4,0x7a,0xe1,0x33,
- 0x5d,0x28,0x9f,0xdf,0x56,0x37,0x10,0x43,0x78,0xa5,0xa5,0xfe,0x8f,0x51,0x60,0x1f,
- 0x5b,0x9f,0x28,0x74,0x70,0xd3,0x10,0xdb,0x08,0xcf,0x1c,0xd4,0xba,0x14,0x08,0xf4,
- 0x0a,0x9c,0x1c,0x61,0x05,0xa8,0xdf,0xc7,0xfe,0xc2,0x30,0x03,0x1e,0xe2,0xa5,0x03,
- 0xd3,0xbe,0xc9,0xde,0xe2,0xcf,0xb5,0x7b,0x06,0x72,0xd6,0xb0,0x47,0x59,0x43,0x22,
- 0x15,0x08,0x2d,0x98,0x8e,0xb0,0x15,0xec,0xe2,0xf8,0xfc,0x60,0x21,0xdd,0xbf,0x32,
- 0xa9,0xd8,0xc4,0x0d,0x8d,0x7f,0x6a,0x9c,0x3f,0x80,0x68,0x64,0x13,0xbc,0x9f,0x98,
- 0x6f,0x6c,0x2e,0x10,0x8f,0x32,0x4a,0xdd,0xb2,0x7b,0xc5,0x37,0xb2,0xc7,0xe6,0xeb,
- 0xf6,0xfd,0x63,0xec,0x28,0xa2,0x1d,0xb9,0x02,0xd7,0x87,0xdd,0x2b,0x9d,0x0b,0x55,
- 0xf5,0x39,0xce,0x34,0x9c,0x5f,0x84,0x1a,0x2a,0x95,0xff,0x3e,0xf6,0xbe,0x72,0xee,
- 0xa0,0xc9,0x4e,0x2b,0xaa,0xe8,0x86,0x91,0xa0,0xff,0x95,0xc6,0xdd,0x4a,0x69,0xe3,
- 0x91,0xc0,0xdd,0x7d,0xf6,0x36,0x34,0x9c,0x7b,0x52,0x85,0x80,0x0e,0x8e,0xaf,0xff,
- 0x80,0xb0,0x3d,0xc5,0x1e,0x87,0xc4,0x15,0xf2,0xb3,0xda,0x3f,0xf7,0xc8,0x77,0x47,
- 0x6e,0xd4,0xff,0x4d,0x08,0x1b,0x1b,0xee,0x56,0xdf,0x36,0xd6,0xc3,0x0e,0x2e,0x5b,
- 0xe3,0x7f,0xc0,0xc4,0x3f,0x68,0xaf,0x1d,0x67,0x53,0x61,0x6f,0xc3,0x5c,0xa3,0x70,
- 0x21,0x9b,0x01,0x0f,0xec,0x29,0x3a,0xe9,0xc6,0xf7,0x0d,0x3e,0xc9,0xb5,0xb0,0x89,
- 0xf7,0xc6,0x9e,0x27,0x85,0x7f,0x70,0x3d,0xb7,0x65,0xdf,0x0c,0xbb,0x55,0xb7,0x59,
- 0x68,0xcb,0xf6,0x40,0x96,0x49,0xe3,0xf7,0xc2,0x63,0x5c,0x3b,0x2e,0x2f,0xb4,0xe4,
- 0x5f,0x0c,0x48,0xed,0x68,0x26,0x94,0x71,0xc7,0x07,0xe2,0xf5,0x70,0xb6,0xab,0x8c,
- 0x47,0x89,0xff,0x39,0x4c,0xcb,0xf2,0xb4,0x38,0x00,0x9f,0x24,0xcb,0x5b,0xa8,0xfe,
- 0x4f,0xfa,0xfe,0xa9,0x78,0x8c,0xd1,0x6c,0xaf,0xe0,0x7d,0x40,0xfe,0x2f,0x61,0x34,
- 0xed,0xcb,0x60,0x2b,0xe4,0x4a,0xb3,0xfe,0xcf,0xf8,0x7e,0xa0,0xfa,0xd8,0x64,0xef,
- 0x5f,0x15,0x6b,0x28,0x29,0x19,0x69,0xf3,0x2e,0xb2,0x53,0xd8,0x4f,0x17,0xf8,0x4c,
- 0x47,0x89,0x4c,0x8e,0x30,0xbb,0x6a,0x89,0x5f,0xe5,0x12,0xea,0x5f,0x56,0x96,0x0a,
- 0xbb,0xdd,0xad,0x31,0xdd,0x1d,0x73,0xd1,0x1d,0x5c,0x75,0x08,0xfb,0xcd,0x0a,0x3f,
- 0x21,0xb3,0x9e,0xd8,0xd8,0x1f,0xe5,0x7f,0xed,0x33,0xf9,0x1f,0x67,0x89,0xb4,0x0f,
- 0x61,0x4f,0x34,0x96,0x2a,0xbb,0xaa,0x47,0x1f,0xa4,0x7c,0x01,0x9a,0xdf,0x62,0xcd,
- 0xff,0x02,0xc9,0x8c,0xfe,0x9d,0x46,0xb0,0x67,0x9f,0x90,0xa4,0x42,0x40,0x6b,0x61,
- 0x8b,0xae,0x2d,0x92,0x55,0x17,0x8a,0x6e,0x20,0x3c,0x60,0xcd,0x7f,0x87,0xb0,0xf9,
- 0xbe,0x37,0x73,0x05,0x61,0x0f,0x1e,0xd4,0xe9,0x66,0xd8,0x33,0xf3,0x71,0x3b,0xcf,
- 0x4f,0x9a,0x85,0x68,0x3c,0x5c,0x2c,0x1b,0xf7,0xa7,0x77,0x4e,0x19,0x8d,0xe6,0xed,
- 0x2b,0x36,0x89,0xa0,0x90,0x63,0xdb,0xaa,0x93,0xd9,0x23,0xfa,0x01,0x72,0xeb,0xbc,
- 0x0c,0x9f,0xeb,0x66,0x69,0xe8,0x4f,0xd8,0x38,0x9e,0x99,0xd2,0x36,0x16,0x06,0xbc,
- 0x1f,0x0e,0x49,0xfe,0x25,0xf6,0xad,0x91,0x93,0x8d,0x1f,0xeb,0x37,0xe8,0xcb,0x55,
- 0xb1,0x9f,0x8f,0xb8,0x7d,0x78,0xa5,0xa1,0x2c,0x8d,0x4f,0x4c,0xfc,0x53,0x06,0x4b,
- 0x23,0x04,0x7b,0xa0,0xac,0xf0,0xff,0xca,0x46,0xed,0x13,0xad,0x6b,0x55,0x97,0x12,
- 0x11,0xd4,0xa9,0xbb,0x54,0x77,0x37,0xbe,0xef,0xd8,0xf7,0xd5,0xa5,0xd1,0xe8,0xee,
- 0x58,0xa4,0x8d,0x88,0xaf,0x40,0x8e,0x1a,0x79,0x59,0xdc,0xa1,0x69,0xa1,0xa5,0x2a,
- 0xfb,0x2d,0x3c,0x2b,0x14,0x85,0x51,0xa3,0x39,0xc7,0xf9,0xa5,0x42,0x18,0xe3,0x7f,
- 0x5a,0x67,0x42,0x93,0xe6,0x21,0x62,0xad,0xbb,0x90,0xea,0xd9,0xe6,0x6c,0x43,0xd5,
- 0xf3,0x2b,0xad,0x58,0x97,0x3f,0xf3,0x65,0x8f,0x7f,0xaf,0xb8,0x34,0xfa,0xfc,0x3f,
- 0x65,0x4f,0xd8,0x9b,0xa2,0x7e,0xfd,0x10,0xf1,0x3f,0xa7,0x44,0x9f,0xbe,0x1c,0x11,
- 0x94,0xf0,0x63,0xad,0xb5,0x6e,0x59,0x4c,0x71,0x8f,0x7f,0xaf,0x81,0xb1,0xfa,0x87,
- 0x2d,0xe2,0x07,0x4b,0x52,0x2f,0x5e,0x4d,0x15,0xa2,0xfc,0x8b,0x88,0xff,0x91,0x4e,
- 0x43,0xe5,0x6a,0x87,0x8a,0x78,0x7b,0xec,0xfe,0x6e,0x88,0xcb,0xe6,0x7e,0x6b,0x14,
- 0x4f,0x48,0xc3,0x8b,0x46,0xcb,0x0e,0xf4,0x08,0x3e,0xb6,0x7c,0xa3,0x4d,0x93,0x86,
- 0x03,0x66,0xfe,0x57,0x1a,0xff,0xc8,0xdd,0x6e,0x33,0xdb,0x5d,0xd1,0x9c,0x3d,0xea,
- 0x61,0x5e,0xc6,0xa7,0xc7,0x57,0xb5,0xc3,0xa6,0x40,0x71,0xcc,0x11,0x67,0x6e,0xe9,
- 0xf9,0x54,0x21,0xc4,0x74,0x7c,0x85,0x3c,0x65,0x59,0xea,0xbc,0x78,0xb3,0xf1,0xe0,
- 0x48,0x9e,0xae,0x2f,0x53,0xbe,0xc0,0x23,0x81,0x12,0x8a,0x3f,0xdc,0x88,0x3f,0x95,
- 0x24,0x65,0x8d,0x1d,0x4c,0xe7,0x7f,0x4d,0xa6,0x24,0xcd,0x1f,0x98,0xfe,0x2f,0xca,
- 0xfe,0x36,0xe4,0x35,0xd9,0xdb,0x0f,0x3e,0x08,0x27,0xfb,0x6c,0xc3,0x11,0x3a,0xda,
- 0x45,0x7d,0x72,0x66,0xfd,0x43,0x3a,0xbf,0xe4,0xff,0x9a,0xf4,0x0e,0xec,0xdd,0x54,
- 0x35,0xe0,0xb8,0x27,0x7f,0x46,0xcd,0x1b,0xfc,0x5a,0xb4,0xd7,0xc4,0x07,0xe1,0x4f,
- 0x7c,0x4f,0xdc,0x13,0x14,0x0f,0x67,0xa7,0x9f,0x67,0x54,0xde,0x8e,0x54,0x0f,0x4a,
- 0x87,0x74,0x7f,0x9f,0xe3,0xd9,0xe2,0x8f,0xf9,0x47,0x14,0x0f,0xdf,0xf1,0xf5,0xd5,
- 0x12,0xe5,0xdb,0xe2,0x41,0x4b,0xe3,0x9f,0xb0,0x74,0x80,0x48,0xfb,0x24,0x85,0x55,
- 0xeb,0x7f,0xe4,0x55,0x67,0x73,0xcf,0x8b,0xbf,0x80,0xd7,0xe3,0xfe,0x64,0xde,0xa0,
- 0x78,0x51,0xff,0x73,0xac,0x3c,0x8c,0xaa,0x3f,0x9d,0x1f,0xd1,0x6e,0xf2,0x39,0x9e,
- 0x6e,0x47,0x5d,0xfe,0xed,0xb5,0xbf,0x49,0xa0,0x60,0xa9,0x43,0xfb,0x28,0x42,0xf9,
- 0x23,0x61,0xf6,0x36,0xec,0xf5,0x16,0x05,0x95,0x95,0x6c,0xce,0xf8,0x7c,0x0e,0xa3,
- 0xf2,0x6a,0xc8,0x79,0x1b,0xac,0x9f,0x57,0x4a,0xb0,0x70,0x3b,0x3c,0x24,0x95,0xda,
- 0xd1,0x70,0x3b,0x26,0xef,0xcd,0x29,0x02,0x25,0x18,0x91,0xc6,0xeb,0x1f,0xea,0x05,
- 0x1b,0xcd,0xf5,0x5c,0xe2,0x65,0x5f,0x85,0xc9,0x66,0xda,0x29,0xb3,0x0b,0x4e,0xf0,
- 0x08,0x4b,0xaf,0xa4,0xc2,0x02,0x5c,0x53,0x15,0x99,0x39,0x2d,0x78,0x35,0xf5,0xbe,
- 0x4a,0x9d,0xf8,0x0f,0x70,0x0a,0xcd,0x40,0x65,0x08,0x0f,0x82,0xc9,0x48,0xc7,0x50,
- 0xfe,0x0c,0x1b,0xbe,0x21,0x47,0xa7,0x22,0x8f,0xcb,0xc3,0xb8,0x7a,0x07,0x8c,0xa6,
- 0xbd,0x0f,0xd2,0x46,0xea,0x72,0x0c,0xe5,0xf7,0xb2,0x01,0x1d,0xe7,0x23,0xfe,0x81,
- 0xa1,0xd5,0x07,0x92,0x54,0x31,0x60,0x3c,0xff,0x65,0x8c,0xff,0xa1,0xb4,0x26,0xed,
- 0x68,0xac,0xca,0x58,0x36,0xc4,0xce,0x67,0xbf,0x03,0xf9,0x7c,0xc9,0x40,0x43,0x1d,
- 0x9c,0xd7,0xd0,0xf4,0x53,0xad,0xf5,0x0f,0x53,0xfc,0x4f,0x97,0x92,0x70,0x6e,0x0a,
- 0xb6,0x2f,0x29,0x33,0xf2,0x28,0xec,0xb6,0x4f,0x8f,0xb7,0xc9,0x4f,0xb0,0x13,0xbc,
- 0xb3,0x07,0x81,0xf4,0x36,0x97,0x85,0xff,0x91,0xc6,0xf8,0x9f,0x6c,0x0f,0x34,0x0b,
- 0x73,0xba,0xe4,0x44,0x60,0x50,0xd8,0x30,0x65,0x4e,0x28,0x1a,0xb9,0x62,0x40,0x26,
- 0x57,0xd7,0xd2,0x44,0x46,0xfd,0xc3,0x51,0x7d,0xb7,0x2b,0x7b,0x27,0x3c,0x96,0xe3,
- 0x39,0x48,0x69,0x86,0x8d,0x31,0xd9,0x1d,0xb0,0x81,0x93,0xf2,0xe3,0xe2,0xba,0xe2,
- 0xb5,0x8d,0xc3,0x61,0x3c,0x90,0xf4,0x3c,0xfe,0x63,0x0a,0xaa,0x5d,0x7d,0x49,0x98,
- 0x9e,0x3f,0xff,0x6d,0xed,0x2d,0xa1,0x82,0xea,0x9f,0x87,0x75,0xd3,0x34,0x8b,0x15,
- 0x6b,0xd9,0xe3,0xf1,0x3f,0xb9,0xa3,0xfa,0xeb,0xee,0xe2,0xf3,0xfc,0xfc,0x9c,0xfb,
- 0x0e,0xce,0x18,0xca,0x3f,0xaf,0x0d,0xdb,0xae,0x83,0x5c,0xa3,0x7a,0x88,0xa3,0xc6,
- 0x87,0xe5,0x7d,0xe2,0x40,0x24,0x8d,0x37,0x0e,0x20,0xfe,0xb9,0x41,0x71,0xfc,0x29,
- 0x7f,0x0d,0xbc,0x5e,0x5c,0x4e,0x69,0xef,0xa7,0xa1,0x57,0x2f,0xb7,0xd9,0xf5,0x06,
- 0x3f,0xbc,0x13,0x41,0xfb,0xeb,0xd6,0xfc,0xba,0x09,0xf8,0xc7,0xb5,0x42,0xe9,0x60,
- 0xa7,0xc2,0x9b,0xfb,0x5c,0x49,0x5b,0x27,0x2e,0x4b,0xbb,0xce,0xe4,0xe0,0x46,0x36,
- 0x47,0x6e,0x96,0xe7,0xac,0x76,0x3f,0x28,0x0e,0x8d,0xe7,0x7f,0xc9,0x12,0xe9,0x23,
- 0x37,0x53,0x04,0x36,0xa0,0x92,0x5b,0x19,0xd1,0x6f,0x17,0x70,0xaf,0x66,0x8b,0x02,
- 0xab,0x81,0x9f,0x91,0xa3,0x79,0x72,0xe4,0xee,0x8c,0xf8,0x67,0xb4,0x5e,0x57,0x4d,
- 0x8b,0xb1,0x41,0x8d,0xfc,0x89,0x36,0x2a,0x3b,0xf9,0x34,0x77,0x25,0xa3,0xed,0x54,
- 0xd1,0x8b,0x22,0xd2,0x5b,0x02,0x69,0xfe,0x07,0xb2,0x06,0x11,0x16,0x56,0x68,0x8e,
- 0xce,0xea,0xef,0xb1,0xf7,0x51,0xdb,0x4a,0x89,0x49,0xef,0xc3,0xa1,0x36,0x67,0x9d,
- 0x7d,0xa3,0x98,0xa7,0xbd,0x51,0xef,0xab,0x71,0x2c,0xac,0xd6,0xd3,0xf9,0x5f,0x93,
- 0x69,0x7d,0xae,0xd3,0x1d,0x23,0xc2,0xc5,0x9a,0x54,0xda,0xbb,0xd8,0x87,0xfa,0x13,
- 0x25,0x0c,0xd5,0x67,0xbb,0x14,0xab,0xd4,0x97,0x0d,0x41,0x66,0xff,0x8b,0x73,0xb0,
- 0x20,0xe4,0x68,0x10,0x4f,0x99,0x65,0x28,0x10,0x3f,0x7c,0x47,0x1b,0x96,0xef,0xd1,
- 0xf3,0x62,0xc5,0x6d,0xfc,0x10,0x74,0x34,0xe2,0x95,0x44,0x86,0xff,0xeb,0x85,0x18,
- 0xbb,0x4d,0xdc,0xce,0x8e,0xf2,0xaa,0xba,0x78,0x5f,0x6e,0x82,0x7d,0xa8,0x75,0x26,
- 0x57,0xad,0x92,0xa7,0x98,0x15,0x35,0x17,0x70,0xf6,0xac,0xf8,0x8f,0x96,0xfe,0x17,
- 0xb8,0x1f,0xb8,0x64,0xa0,0xb4,0xd1,0x11,0x6b,0x6a,0x7d,0x36,0x6f,0xa0,0x17,0xc5,
- 0xd4,0xaa,0xe8,0xc2,0x85,0xec,0x7e,0x3c,0x98,0xf1,0xa4,0x0c,0x88,0x27,0xc7,0xbe,
- 0x2f,0xe1,0x9f,0xbd,0x51,0xf2,0xfe,0x04,0xde,0x82,0xbd,0x26,0xec,0x51,0xdf,0x80,
- 0xbd,0x91,0x95,0x25,0x72,0x90,0xcd,0x10,0x1e,0xea,0x99,0x99,0xb4,0xad,0x60,0xf7,
- 0xa5,0xf3,0xbf,0x4c,0xfc,0x33,0xbf,0xc7,0x31,0x5b,0xac,0x81,0x3f,0x69,0xf3,0x4d,
- 0x18,0x20,0x9f,0xc6,0x65,0xb7,0x6b,0x0d,0x1b,0x23,0x47,0x20,0x61,0xd8,0x7d,0xe2,
- 0xd6,0x74,0xfe,0xd7,0xf4,0xfd,0xf0,0x67,0xf8,0x57,0xc3,0xf1,0x19,0x95,0xfd,0x29,
- 0xaa,0x34,0xcb,0x46,0xc9,0x97,0x10,0xef,0x39,0x92,0xf9,0xbd,0x70,0xa7,0x4a,0x8c,
- 0x50,0x7e,0x3a,0xff,0x4b,0x9e,0x42,0xf1,0x78,0x3e,0xfd,0xf5,0xce,0xe2,0x4a,0xf6,
- 0x52,0xca,0x2d,0x38,0x44,0x19,0x85,0x14,0x51,0xef,0x11,0x10,0x48,0x20,0x02,0x9c,
- 0x14,0x48,0xf3,0x3f,0x39,0xa6,0x90,0xd4,0x95,0xba,0x40,0x25,0xac,0xf7,0x9a,0x44,
- 0x50,0x1f,0xfc,0x0a,0xbe,0x8d,0x86,0x95,0x6d,0xba,0x6d,0x33,0x14,0x19,0xc1,0xf3,
- 0x57,0xf8,0xc6,0xe5,0x9b,0x96,0x8a,0xff,0x49,0x4e,0xab,0xcd,0x7e,0x14,0x28,0xba,
- 0x7b,0xda,0x1a,0xf6,0x3b,0x78,0xbc,0x7e,0x66,0xb8,0x76,0x05,0xf3,0x0b,0xeb,0x23,
- 0x54,0x0a,0xc9,0xd6,0x62,0xe9,0x7f,0x61,0xee,0xb7,0x61,0x3c,0x56,0xf7,0x8f,0x45,
- 0x8f,0x7f,0x68,0xec,0xd2,0xe3,0xb7,0xca,0x05,0xce,0x5c,0x78,0x84,0xf0,0xe4,0x02,
- 0x84,0x52,0xe3,0xf8,0xa7,0xa0,0xbd,0xe0,0x33,0xb8,0x21,0xe1,0x48,0x2a,0x9d,0x28,
- 0x76,0x4c,0xb7,0xd7,0x30,0x7c,0xe2,0xbd,0x2e,0x6a,0x7f,0x4f,0x5c,0x08,0x47,0xe3,
- 0xbb,0x63,0xcb,0x3e,0x50,0xce,0x5a,0xf2,0xbf,0x08,0xff,0x3c,0x51,0xe0,0xe0,0x10,
- 0xe6,0x43,0xcc,0xaf,0x2e,0x4f,0xa5,0xbd,0xa7,0x34,0x54,0xe3,0x00,0xf3,0xb3,0xb9,
- 0x3c,0xc7,0x9a,0xff,0x45,0xfa,0xce,0x77,0x33,0x4a,0xa7,0xfe,0xb1,0x68,0x67,0x1c,
- 0x68,0xf7,0xea,0xf6,0x58,0xc3,0x2c,0xe9,0x54,0xdc,0x1b,0xb6,0x6f,0x15,0xad,0xf9,
- 0x5f,0x84,0x67,0x5c,0x3a,0xda,0x53,0xfd,0x94,0x88,0x4a,0xd5,0x0e,0x3f,0x54,0x9b,
- 0x16,0xdd,0x17,0x96,0x9d,0x62,0x0d,0x6f,0x62,0x73,0x74,0x39,0xf4,0xa5,0x70,0x06,
- 0xff,0x73,0x3d,0x98,0xf5,0x8a,0xbb,0xf5,0x26,0xd5,0x15,0xf8,0x59,0x8c,0x60,0x4f,
- 0x5e,0x59,0x37,0x02,0xbf,0x92,0xfa,0xa7,0x74,0x57,0x4d,0x30,0xc1,0x8e,0x4e,0xb4,
- 0xbf,0xcc,0x6e,0x17,0x0c,0xd7,0x47,0xff,0x5b,0x95,0xbd,0xc6,0xa8,0xec,0xa1,0x5b,
- 0x65,0xab,0xa1,0xfe,0x26,0x37,0x79,0x88,0x96,0xa4,0xf3,0xbf,0xae,0x32,0xf9,0x1f,
- 0xee,0x00,0xc4,0xf3,0x3d,0xe0,0x1a,0x4d,0xbb,0x96,0xca,0x08,0xff,0x68,0xc2,0x40,
- 0x0a,0xff,0xfc,0x62,0xdc,0xfe,0xea,0xbc,0xaa,0x1f,0xad,0xcb,0x17,0x09,0xe4,0x7c,
- 0x2e,0x9b,0x6e,0x2f,0x8a,0xe7,0xb9,0xa0,0xdf,0x40,0x57,0x8e,0x09,0xbf,0x82,0xaa,
- 0xd0,0xf2,0x63,0xe2,0x13,0x52,0x1a,0xff,0x10,0x5f,0xd4,0x51,0x63,0x7f,0xe3,0xaf,
- 0x2b,0xe3,0x7f,0x00,0x93,0xed,0x39,0x63,0x5c,0xd0,0x7f,0x78,0x2b,0x9e,0xc7,0xf9,
- 0xa9,0xd2,0x40,0x21,0xf6,0xdd,0xf1,0xfd,0x53,0x88,0xeb,0x8f,0x42,0x55,0x92,0x23,
- 0x0f,0x84,0x79,0x54,0x9d,0x03,0x6e,0x84,0x3d,0x06,0xaa,0x75,0xd5,0xa4,0xd9,0x7b,
- 0x64,0xfa,0x69,0xc3,0xa6,0x71,0xf9,0x13,0x34,0xf1,0x8f,0xa6,0xcb,0xf9,0xac,0x26,
- 0xbe,0x85,0xca,0x62,0xab,0xd9,0xdd,0x8d,0xbb,0xaa,0x57,0x53,0xbc,0x53,0x09,0x6c,
- 0x69,0xd4,0x28,0x34,0xe8,0xd6,0xf1,0xfd,0x53,0x58,0xd0,0x66,0xae,0xff,0x1c,0xe2,
- 0xd3,0x9a,0x84,0x54,0x3c,0x15,0xdf,0x07,0xab,0x56,0x10,0x22,0xbd,0x95,0x52,0x5f,
- 0xdb,0xb7,0xb1,0x75,0xe9,0xfc,0xaf,0x02,0xe2,0x2b,0x7c,0xdf,0x5b,0xf6,0x68,0xf1,
- 0x6a,0xfe,0x26,0x6c,0xa5,0xe7,0x3f,0xc9,0x47,0x62,0xcf,0xe9,0x8e,0xed,0x8a,0x44,
- 0xf5,0xd9,0x02,0xf6,0xe9,0x62,0x6d,0x3a,0xff,0xcb,0xc4,0x3f,0xfb,0x7b,0x72,0x9d,
- 0x0d,0xdd,0x78,0x0c,0x53,0xd1,0xe0,0x1a,0x0e,0xc2,0x8e,0xed,0xd5,0xfd,0x14,0xdf,
- 0x52,0xb7,0x79,0x8b,0x35,0xff,0x4b,0x8d,0x0b,0xc3,0xdc,0x57,0x88,0xcb,0x6e,0x7e,
- 0x88,0xac,0xab,0xcd,0xf5,0xd7,0x17,0xc8,0x76,0xde,0xa0,0x69,0x3d,0x1a,0xb5,0xc6,
- 0x50,0xd2,0xf8,0x59,0x96,0xdc,0x88,0xc5,0x5d,0x31,0x61,0x20,0xb2,0x10,0x0e,0xc4,
- 0x77,0xc4,0xf3,0xe2,0xce,0x61,0x69,0x13,0xfc,0xb0,0x5d,0xfe,0x2e,0xbb,0x5e,0x7b,
- 0x07,0xe2,0x71,0xdb,0x80,0xb8,0x24,0xbd,0x1f,0x88,0xff,0x51,0xb5,0x63,0xca,0x7c,
- 0x84,0x3d,0xbb,0xb4,0xf6,0xf7,0x14,0xaf,0xef,0x55,0xa9,0xfe,0xb0,0x3b,0x24,0x7b,
- 0x58,0xae,0xb0,0x21,0x16,0x0f,0xcb,0xee,0x48,0xda,0xff,0xa5,0x09,0xd3,0xe1,0xb9,
- 0x14,0xc9,0x33,0x5d,0x7e,0x0e,0x66,0x53,0xb4,0xde,0xbb,0xb0,0x56,0xff,0x4e,0x52,
- 0xae,0x73,0x15,0x0a,0x0f,0x82,0x76,0xd0,0x56,0x17,0x09,0x8f,0xcb,0x07,0x77,0x21,
- 0x9d,0xdf,0x79,0x45,0x8e,0x01,0x34,0x5b,0x3e,0xe3,0xd7,0xa3,0xbc,0x12,0xbf,0x40,
- 0xd1,0xf8,0x4c,0xd8,0xb3,0x46,0x99,0x91,0x73,0x94,0xef,0x4a,0xda,0x6b,0x15,0x97,
- 0xd5,0xff,0x05,0x9f,0xc1,0x81,0x42,0x25,0xfe,0xe5,0x36,0x12,0xbc,0xf5,0x14,0x96,
- 0x00,0x17,0xe1,0x9f,0x75,0x33,0x71,0xf5,0x9f,0x49,0x10,0x25,0x26,0xa5,0xf3,0xbf,
- 0x10,0xff,0xc0,0xc5,0x44,0xf9,0x99,0xbc,0xe3,0xcc,0xaf,0x5f,0xe4,0xd7,0x69,0x8e,
- 0x61,0x5c,0xbd,0xd7,0x78,0x95,0x66,0xdf,0x27,0xce,0x50,0xdf,0xa5,0x8e,0x06,0x03,
- 0xa2,0x9a,0x81,0x7f,0xf6,0xa8,0x3b,0x1a,0x83,0x50,0x7d,0x3b,0x09,0x22,0x10,0xeb,
- 0xd8,0xaf,0xe5,0xb5,0x50,0x1a,0x95,0xef,0x61,0xd3,0x6f,0xfa,0x94,0x22,0x1e,0xc3,
- 0x6c,0x8e,0x25,0xff,0x6b,0x3b,0x3c,0xa7,0x7d,0x4f,0x9d,0x36,0x99,0xaa,0xfd,0xc0,
- 0x4c,0x30,0xe5,0xd5,0x36,0x28,0x15,0xa2,0x75,0x68,0xd8,0xae,0x53,0x8b,0x0c,0x59,
- 0x47,0x53,0x62,0x6c,0x3e,0xe1,0x9f,0x04,0xd4,0x42,0x8e,0xc4,0x5e,0xd1,0x3a,0x70,
- 0xb3,0xa2,0xfc,0xf9,0x08,0xb6,0xc6,0x3c,0x31,0xd9,0x3b,0x35,0x0f,0x9e,0x22,0xd5,
- 0x2f,0xa1,0xfc,0x19,0x9b,0x4f,0xf8,0xe7,0x33,0xa8,0x30,0x5e,0xdf,0x23,0xee,0x40,
- 0x43,0xcc,0x4c,0xec,0x3a,0x19,0x79,0x13,0x0d,0x07,0x4f,0x11,0x1a,0x4a,0x87,0x75,
- 0xb4,0x1f,0xdb,0x94,0xbc,0x34,0xdf,0xa8,0x12,0x2d,0x36,0x8b,0xe7,0x6d,0x63,0x61,
- 0xf8,0x93,0xee,0x57,0xcd,0xf8,0x9f,0x53,0x2b,0xfd,0xdd,0x8e,0x5d,0xc5,0x49,0xfd,
- 0x8f,0xab,0xcc,0xd0,0xa9,0x4c,0xff,0xd7,0x45,0xb8,0xe1,0x71,0xc7,0xe1,0x86,0x8b,
- 0xd2,0xb9,0xc6,0x62,0xdd,0x3e,0x24,0xf6,0x6b,0xaf,0x30,0x5f,0xc0,0xb1,0x4b,0xa9,
- 0x5c,0x35,0x08,0xde,0x9e,0x65,0xf1,0xe6,0x74,0x7d,0xf2,0x7a,0xe9,0x0e,0xa9,0xb3,
- 0x87,0xf1,0xa5,0x8d,0xa8,0xb6,0x9e,0xd7,0xe7,0x4b,0x28,0x46,0xde,0x87,0x28,0x77,
- 0x2d,0x54,0x3a,0xc5,0x5b,0xa0,0xe9,0x25,0x97,0xd1,0xe3,0x9d,0x63,0xcd,0xff,0xba,
- 0x03,0xcd,0xfc,0x56,0xd6,0x1c,0x8f,0x24,0xf9,0x0b,0xa1,0x39,0x93,0x71,0xfe,0x7b,
- 0x42,0x93,0xe1,0xd2,0xf0,0xbc,0x78,0xe0,0xe9,0x28,0x11,0x41,0x56,0xff,0x17,0xd8,
- 0x81,0xba,0x45,0x4d,0x03,0x34,0x5b,0x3a,0xc0,0x03,0xb5,0x14,0xff,0xc3,0x4d,0xd8,
- 0x13,0xb9,0xc3,0x94,0xd8,0x6e,0xcd,0x9a,0xff,0x85,0xf8,0xe7,0x2c,0x5a,0x61,0x8e,
- 0xfa,0xfc,0x41,0x1c,0xcc,0x31,0xe3,0x6f,0x29,0xe3,0x12,0xf0,0xe0,0x78,0xa4,0x01,
- 0xe8,0x30,0x96,0x65,0xe4,0xbf,0x5f,0x79,0x1e,0xce,0x90,0x53,0xfe,0x60,0xda,0x5b,
- 0x31,0x04,0xe7,0xa5,0xab,0x61,0xd2,0x50,0xfe,0xbd,0x29,0xff,0x97,0x21,0x0e,0x34,
- 0xd6,0x8d,0xff,0x07,0x58,0x23,0xec,0x00,0xb7,0x6e,0x53,0xff,0x83,0x01,0x58,0xff,
- 0x24,0x40,0xeb,0x90,0x9a,0x8c,0xfd,0x07,0x03,0xeb,0x5f,0x23,0xee,0x32,0xdc,0x23,
- 0xea,0x7f,0x34,0xf8,0xdf,0xb9,0x3f,0x11,0xf2,0x88,0x11,0xfe,0xc3,0x81,0xe5,0xef,
- 0x3f,0x9e,0x98,0x1a,0xfc,0xef,0xdc,0xff,0xbf,0xfa,0xf7,0xdf,0x6c,0xfd,0x55,0xea,
- 0xe5,0xd7,0x0b,0x3f,0x84,0xe9,0xc6,0x7f,0x30,0x90,0xfe,0x1f,0xdf,0xff,0xff,0xe5,
- 0xf5,0x97,0x54,0xfe,0x9f,0x58,0x73,0x61,0x5c,0x5f,0xfc,0x57,0xff,0x2a,0x2b,0xff,
- 0x33,0xb3,0x1c,0x8e,0xff,0x87,0xb7,0xff,0xff,0xc2,0x5f,0xd5,0xa5,0x4b,0x97,0x8c,
- 0xff,0xc5,0xe0,0xff,0x9f,0xe7,0xff,0x37,0x3b,0x8f,0xff,0x47,0x1e,0xfe,0x1f,0x79,
- 0xf8,0xbf,0xb1,0xfe,0xff,0x47,0x1e,0xfe,0xaf,0xfe,0xfe,0xbb,0xc9,0x9f,0xff,0x5e,
- 0xf3,0xcd,0xfa,0x90,0xbc,0x9c,0xba,0x3f,0xfc,0x23,0xbc,0x15,0xbb,0x41,0x5b,0x3e,
- 0x54,0xfc,0x1e,0x9c,0xe1,0x7e,0xcd,0x51,0x2b,0x56,0x4a,0x97,0x62,0x55,0x13,0xeb,
- 0x03,0xf4,0x6b,0xbf,0xe7,0xad,0xb2,0x92,0x60,0x83,0xea,0xf3,0x25,0xae,0xf0,0xd2,
- 0xd3,0xd9,0xef,0xc9,0x9d,0x91,0x32,0x4d,0x69,0x77,0x56,0xc1,0x0b,0x1a,0xd5,0xc3,
- 0x84,0x21,0x4b,0x7e,0xf4,0x4e,0x1d,0x41,0x2f,0x53,0x7c,0x81,0x6e,0x78,0x1e,0xdc,
- 0x30,0x0d,0xf1,0xb0,0x9c,0x80,0x12,0x68,0x8a,0xb3,0x5c,0xd8,0xad,0x99,0x15,0x93,
- 0x3e,0x1b,0xe7,0xe7,0x8d,0x29,0xab,0xe1,0x67,0xe4,0xcd,0x27,0x5a,0xf2,0x85,0x7a,
- 0x17,0x6f,0x26,0x47,0xdb,0x42,0xad,0xac,0x47,0xa1,0x8e,0x2d,0x37,0x10,0xe3,0x9a,
- 0x08,0x0c,0x8d,0xe7,0x17,0x0b,0x05,0xad,0x3c,0x95,0x84,0x5e,0xfe,0x1d,0xef,0x67,
- 0x91,0x8a,0xe9,0xeb,0x69,0xfe,0x8f,0xd1,0x30,0xff,0xea,0xf6,0x62,0xaa,0x0f,0x69,
- 0x52,0xa9,0x7d,0x16,0xff,0xe0,0x13,0x7a,0x8a,0x2f,0x45,0x18,0x7d,0x31,0x55,0x88,
- 0x83,0x32,0x08,0xaa,0xc2,0x8e,0xbe,0xaf,0x8f,0x53,0xa9,0x16,0xff,0xa0,0x59,0x1f,
- 0xc0,0xec,0x36,0xfb,0x73,0xaa,0x86,0x24,0x38,0x12,0xf9,0x78,0x5b,0xc1,0x27,0x2f,
- 0xdf,0xe6,0xf0,0xc8,0xa3,0x54,0xed,0xff,0x48,0xf3,0x63,0x90,0xa5,0x37,0x68,0x65,
- 0x46,0xee,0x10,0x3e,0xed,0x33,0x50,0x16,0xcf,0xa3,0xc1,0x0b,0x71,0x97,0x81,0xf6,
- 0x78,0x65,0xca,0xf5,0x99,0x60,0x77,0x5b,0xe2,0xa3,0x6a,0xcc,0xf8,0x4c,0x9b,0x37,
- 0x5b,0x82,0x08,0x78,0x28,0x2c,0x73,0x6d,0x49,0x07,0x68,0x31,0xb1,0x8c,0xd9,0xa5,
- 0xdd,0x40,0xd1,0xf9,0x56,0xff,0xa0,0x19,0x1f,0x3e,0x57,0x53,0xd6,0x2c,0x9e,0xaa,
- 0x3f,0xd1,0x9a,0x9b,0xb4,0xad,0x61,0x0f,0xc2,0x8b,0x6d,0x42,0xbb,0xf2,0xbd,0xc8,
- 0x8c,0x94,0x2b,0x6d,0x0d,0x3b,0x3f,0x3e,0x9f,0xea,0x03,0x34,0x40,0x25,0xe4,0x75,
- 0x28,0x6d,0x70,0x90,0x4f,0xbf,0xd3,0xe1,0x53,0xd6,0xe9,0x9f,0x0d,0x25,0x4a,0xbf,
- 0x52,0xe4,0xb2,0xa7,0x4a,0xb1,0x65,0xf8,0x07,0xaf,0xda,0xaf,0x53,0x91,0xcc,0x5c,
- 0x32,0x4b,0x2f,0x31,0x7f,0x1f,0xae,0xc6,0xbd,0xe1,0x4b,0x05,0x55,0x07,0x1d,0x27,
- 0xa8,0x90,0x02,0x33,0xd7,0x27,0x34,0xee,0xa1,0x72,0x4b,0x3b,0x81,0x8a,0x30,0x78,
- 0x3a,0xc9,0x9a,0x03,0xff,0xc6,0xbc,0x03,0x0f,0xcc,0xe6,0x6b,0xa0,0xe2,0x8d,0xe5,
- 0x0b,0x99,0x87,0xa7,0xfa,0x39,0x5a,0xfc,0x83,0x3d,0x2a,0xc5,0x87,0x17,0x1b,0xf2,
- 0x3f,0x32,0x2a,0xcc,0x53,0xda,0xa3,0x0c,0x15,0x87,0x8c,0x67,0x61,0x66,0x0f,0x45,
- 0x4c,0xc5,0x1f,0x32,0x0b,0x8f,0x04,0xac,0xfe,0xc1,0xcd,0xf8,0xbe,0x45,0xc9,0x1c,
- 0x72,0x0b,0x3e,0xc8,0x4b,0xc3,0x53,0x7f,0x9c,0x7d,0x75,0xc1,0x73,0x5d,0xa5,0xb8,
- 0x02,0x5b,0x67,0xe8,0x4f,0xf2,0x1f,0x24,0x97,0xae,0x09,0x58,0xfd,0x83,0x3f,0x2f,
- 0x68,0x80,0xf8,0x50,0x8e,0x97,0xd9,0xf5,0x9f,0xc1,0x1d,0xb4,0x7a,0x5f,0x85,0xdd,
- 0x36,0x4f,0x9f,0x42,0xf5,0x48,0xcd,0x42,0x1c,0x5e,0xab,0x7f,0x70,0xca,0xf3,0x6c,
- 0x09,0x94,0x3f,0x97,0x1b,0x57,0x6e,0x80,0x77,0x72,0xfc,0x3c,0x2f,0xce,0x66,0xeb,
- 0x17,0x5f,0xbe,0x27,0xe6,0xe8,0x57,0xdc,0xf0,0x11,0x11,0xf5,0x19,0xfe,0x41,0x30,
- 0xb3,0xe1,0x28,0x29,0x29,0xa9,0x0d,0xe8,0xf7,0x81,0xc3,0xac,0x0f,0x59,0xb3,0x80,
- 0x11,0x71,0x54,0x70,0x3c,0xe5,0x3a,0xb4,0xfa,0x07,0x3f,0x88,0x1c,0x8a,0x99,0xdd,
- 0xaf,0x4a,0x38,0xb5,0x8d,0x58,0x1e,0x2b,0xee,0x97,0xa8,0x3f,0xac,0x3d,0x26,0x76,
- 0xa3,0xa1,0xf7,0x8f,0xa9,0xfa,0x00,0x63,0xf3,0xb9,0xf4,0x5d,0xf6,0x94,0x4e,0xfd,
- 0xd1,0xd8,0x2b,0xd0,0xc4,0xe7,0x0c,0x29,0x2d,0xe2,0xe6,0xd5,0x4d,0xba,0xc7,0x70,
- 0xc7,0x52,0xfe,0xc1,0x54,0x7d,0x80,0xb1,0xbf,0x42,0x69,0x26,0x34,0x2d,0x32,0xe3,
- 0xc3,0xfb,0x59,0x53,0xd8,0x15,0xfc,0xdb,0x2d,0xce,0x41,0x68,0xd2,0xe7,0x84,0x83,
- 0xe4,0x4f,0xac,0x97,0x66,0x65,0xd6,0x07,0x00,0x29,0xcb,0xec,0x8f,0x16,0x2c,0x60,
- 0x27,0xa1,0x5e,0xaf,0x35,0xa6,0x15,0x04,0xfa,0xf1,0x4a,0x99,0x1e,0x54,0x9d,0xdd,
- 0xd4,0x28,0x2d,0xb3,0x3e,0xc0,0x1a,0xb3,0xdb,0x95,0x59,0x0d,0xa9,0x9d,0xaa,0x01,
- 0x08,0x9b,0xe3,0xc4,0xcf,0xc0,0x7d,0x66,0xa2,0x9c,0x64,0x06,0x8a,0x73,0xf1,0x93,
- 0x49,0xe3,0xf1,0x51,0xb9,0x9f,0x33,0x2a,0x82,0xed,0xd8,0x26,0x1e,0x43,0x6b,0xd4,
- 0x0c,0x0b,0x6f,0x93,0x2e,0xc0,0x0c,0xdd,0xd1,0x27,0x9e,0x14,0x46,0x5d,0x81,0x9f,
- 0x58,0xe2,0xa3,0x7e,0xe7,0x7e,0x0d,0xfc,0x37,0x2d,0x8f,0x95,0xef,0x81,0x0b,0x05,
- 0x7e,0x3d,0xef,0x37,0xb8,0x91,0x2e,0x80,0x4f,0x57,0xfa,0xc6,0x0a,0x0d,0xe1,0x7c,
- 0x4b,0x7c,0xd4,0xfb,0x2c,0x2a,0x94,0x5d,0x65,0x86,0x45,0x75,0x4a,0x65,0x5c,0x59,
- 0x2f,0x86,0xa1,0x53,0x58,0x00,0x0a,0xcf,0x3f,0xa1,0x0f,0xcb,0x65,0xf8,0x69,0xf0,
- 0x7d,0xc7,0xfd,0x83,0x59,0xdd,0xc5,0x0d,0xc2,0x1d,0x41,0x65,0x72,0x64,0x63,0x7c,
- 0x97,0xcb,0x6e,0xc6,0xc3,0xab,0xfb,0x10,0x65,0x2c,0x8d,0xb9,0xa4,0xd1,0x42,0x49,
- 0x6c,0xeb,0xf8,0xf7,0x6d,0x99,0x92,0x95,0x43,0xf5,0x01,0x94,0x98,0xb3,0x04,0xf6,
- 0x09,0x65,0x35,0xd3,0x54,0xf6,0x1d,0xd8,0xc7,0x7f,0x11,0x9a,0x16,0x63,0xab,0x27,
- 0x93,0xeb,0x70,0x49,0xcc,0xf7,0x4a,0xda,0x3f,0x38,0xb9,0x5f,0x3c,0x44,0xec,0x56,
- 0xec,0xdb,0x4f,0xf0,0x91,0xb8,0x7f,0xd1,0x37,0x62,0xd5,0xd7,0x48,0x23,0xe2,0xf7,
- 0xc3,0x8e,0x82,0xd6,0x12,0x33,0xde,0x5b,0x21,0x47,0xcf,0xd8,0xfc,0x8f,0x84,0x36,
- 0x66,0xba,0x4d,0x63,0xf9,0x1f,0xf0,0x91,0x36,0xaa,0x1f,0x4e,0x6e,0x50,0xc1,0x57,
- 0xe7,0x88,0x35,0xf4,0xc3,0x29,0xca,0x88,0x8f,0x59,0xfd,0x83,0x6a,0x9c,0xf5,0x70,
- 0x8a,0x06,0x57,0x5c,0x70,0x3c,0xd8,0x01,0xcb,0xb9,0xad,0x08,0x86,0x65,0xbf,0x77,
- 0x79,0x63,0x7e,0x5c,0x1a,0x30,0xd7,0x3f,0xdf,0x1a,0x1f,0x75,0x3d,0x7c,0x62,0x46,
- 0x43,0x89,0x0b,0xd5,0x4d,0x51,0x57,0x8b,0xf8,0x1e,0x9b,0x5d,0xf2,0x5c,0x4f,0x59,
- 0x54,0xf9,0x88,0x22,0x16,0x60,0x15,0xfe,0xe4,0x4c,0xfb,0x07,0xdd,0x8d,0x76,0xed,
- 0x81,0x54,0xf6,0xc4,0x32,0x88,0xd5,0x6b,0x6f,0x30,0x5f,0xb6,0x9d,0xef,0x36,0xa8,
- 0x8d,0x96,0x59,0xa8,0xbf,0x24,0x95,0xaf,0x3d,0xee,0x1f,0x84,0xe9,0xec,0x49,0x3e,
- 0xf3,0x90,0xe2,0x73,0xfa,0xa5,0x8d,0x5c,0x30,0x03,0x1d,0xe5,0xbd,0xf0,0x83,0xae,
- 0x94,0x7f,0x2d,0x61,0x32,0xde,0x16,0xff,0x60,0xf4,0x0a,0xed,0x55,0x7e,0x6d,0xd2,
- 0x71,0xef,0x97,0x66,0x48,0xc7,0xea,0xe7,0x25,0x1d,0x0b,0xc5,0x19,0xfa,0x9f,0xeb,
- 0xff,0xa5,0x7f,0xf9,0x9a,0xe2,0x77,0xe0,0xd3,0xd8,0xb5,0x94,0x3a,0x77,0x38,0x1d,
- 0x6f,0x50,0x18,0x27,0x7f,0x47,0xd2,0x91,0x98,0xd4,0x0b,0x67,0xb2,0xfc,0x6f,0x39,
- 0x12,0x5f,0x1f,0x2d,0xfb,0x13,0x37,0x0b,0xb9,0x4c,0xe8,0x0f,0x1b,0x98,0x72,0x11,
- 0x5e,0x8f,0xf8,0xde,0x73,0x0c,0x5f,0x73,0x5f,0xa0,0x27,0x76,0x43,0x32,0x77,0x58,
- 0x71,0xe9,0x43,0x5b,0x6e,0xd0,0x26,0x1d,0x67,0x17,0x43,0x3f,0xe1,0xa6,0xfe,0x4a,
- 0xcb,0x87,0x76,0x61,0x7b,0x78,0xbd,0x5a,0x34,0x80,0xf2,0xb3,0x0a,0x36,0x72,0x6d,
- 0xb5,0xed,0x47,0x2c,0x3f,0xde,0xc1,0x8b,0x40,0xf9,0x1a,0x7b,0x27,0x6a,0x86,0x82,
- 0xd7,0xb1,0x74,0x7f,0x3a,0x1e,0x7b,0x90,0x92,0xfe,0x8e,0x2a,0x75,0x2e,0xb5,0x65,
- 0xbd,0xf6,0x0f,0xeb,0x10,0xde,0xdd,0x1e,0xdd,0x53,0xb7,0x43,0x52,0x42,0xec,0x6d,
- 0x6e,0xba,0x0e,0xeb,0xac,0xfd,0xd1,0x0a,0xba,0x38,0xca,0x9f,0x3e,0x2a,0x8b,0xcd,
- 0xeb,0xf5,0x12,0x95,0x71,0xe7,0x12,0x40,0x79,0xae,0xe1,0x36,0x33,0x3d,0xb0,0xb4,
- 0x9e,0x7d,0x96,0x7a,0x9e,0x4f,0xa0,0xd8,0x2c,0x3f,0xa6,0x0c,0x7d,0x79,0x91,0x14,
- 0xd5,0xca,0x6a,0x64,0xce,0x6a,0xa5,0x17,0x04,0x57,0xef,0xbf,0xee,0xf9,0xca,0xd8,
- 0xfb,0x8a,0x87,0xd3,0xfd,0x61,0xd5,0xc7,0xd9,0x59,0xb3,0x2c,0xd2,0xb4,0xf7,0xe4,
- 0x61,0xad,0x42,0xdf,0xd4,0x28,0xb6,0xdb,0x47,0xf4,0xec,0x98,0xa3,0xb1,0xa1,0x77,
- 0x6c,0xfe,0xe0,0xb8,0x7c,0x13,0xd4,0x4d,0xfa,0x51,0xa3,0x9c,0x2e,0xee,0xcf,0x7e,
- 0x1b,0x6e,0x48,0x3a,0x8c,0xe2,0xeb,0xd4,0x8b,0xf1,0xf2,0xda,0xab,0xcf,0x14,0x9f,
- 0x4f,0x15,0x4a,0x1a,0x12,0xfb,0x2d,0xfe,0xc1,0x39,0x10,0x31,0x9e,0xee,0x52,0xc8,
- 0x2d,0xc5,0xa3,0xae,0xa4,0x12,0xc5,0xfd,0x96,0x24,0x8d,0xdf,0x68,0xd6,0xe7,0x21,
- 0xfd,0xe5,0xb2,0xc6,0x47,0xcd,0x84,0xa8,0x9e,0x2a,0x02,0xc0,0x5b,0x78,0xd9,0xcb,
- 0x4d,0xbb,0x16,0x6b,0xb0,0x2f,0x80,0x57,0xe2,0x91,0xb1,0xf9,0x28,0xaf,0xd2,0xfe,
- 0x41,0x89,0x50,0x6c,0x8f,0xe2,0xbd,0x35,0xa9,0x71,0x6f,0xbc,0x06,0xf1,0x00,0xc4,
- 0x77,0xc8,0x5a,0xbd,0x02,0x30,0x5a,0x18,0x30,0x23,0x3e,0x2a,0xeb,0x5e,0x6a,0xbb,
- 0x6c,0x28,0x1d,0xc5,0x49,0xe9,0xf8,0x32,0x94,0xc6,0x20,0x96,0xe8,0xc3,0xaa,0xef,
- 0xb6,0xa5,0xf1,0xfc,0x41,0xf6,0x7a,0xea,0x7d,0x93,0xd9,0xe3,0xfc,0xd8,0x94,0xf3,
- 0xec,0xcf,0x50,0xd5,0xe7,0xd8,0x55,0x94,0xcc,0x3a,0x2f,0x55,0xda,0x1d,0x46,0xf9,
- 0x10,0x1f,0x84,0x9f,0xc0,0x72,0x43,0x1c,0xd4,0xc7,0xf4,0x7b,0xc3,0x98,0x3c,0xe9,
- 0xca,0xba,0x08,0xef,0xf2,0x2a,0xaf,0xa3,0x87,0xba,0xc1,0xf2,0xf2,0x64,0xde,0x2b,
- 0xe2,0x69,0xde,0x8b,0xf8,0x67,0xd9,0x4b,0xa2,0x17,0xce,0xc3,0xd5,0x61,0xfb,0xf0,
- 0xd7,0x2d,0xfd,0xd1,0x64,0x33,0x3f,0x4e,0x5e,0x4a,0xf5,0x61,0xa2,0x9a,0xab,0x47,
- 0x59,0xc7,0x4e,0xf0,0x26,0x5e,0x16,0x77,0xd7,0x07,0x8a,0xf5,0x7d,0xbe,0xb2,0xb0,
- 0xdc,0xb9,0x2a,0x8d,0x7f,0x7a,0x60,0x23,0x29,0x1d,0x59,0x89,0x33,0x1d,0xb8,0xac,
- 0x1d,0xb4,0x15,0x90,0x7f,0x90,0xf2,0x79,0x99,0x93,0xcb,0x09,0xb9,0x4c,0x9f,0xba,
- 0xd0,0xd2,0x1f,0x2d,0x89,0xfa,0xb4,0x99,0x95,0xd5,0x28,0x51,0xb6,0x0a,0xa2,0x54,
- 0x5d,0x21,0xca,0x3e,0x60,0x4d,0x52,0x59,0x12,0x41,0xd6,0x13,0xf0,0x82,0x51,0x16,
- 0x9a,0xda,0x61,0xa9,0x0f,0x50,0x94,0x35,0x08,0xbf,0x67,0x7e,0xd5,0xe1,0x2a,0x9e,
- 0x15,0xe9,0x31,0x7c,0x46,0xde,0x46,0xf1,0x83,0xc6,0xc3,0x1d,0x95,0x4e,0x7b,0x34,
- 0xff,0x09,0x3e,0xcc,0x2b,0x43,0x65,0x89,0xea,0x34,0xfe,0x49,0x98,0xfe,0xc1,0xb9,
- 0x54,0x04,0x7b,0xbf,0x6c,0x56,0x4b,0xe0,0xc2,0x30,0x5c,0x10,0xab,0xc0,0xa1,0xdb,
- 0xee,0x85,0x61,0x56,0xb5,0x3a,0x77,0xd8,0x82,0x7f,0xfa,0xd4,0x9d,0x04,0x72,0xbc,
- 0x8e,0x36,0xb1,0x84,0x7d,0xd4,0x83,0x40,0xab,0x8d,0xca,0x42,0x4a,0x7e,0xe2,0x27,
- 0x8b,0x60,0x44,0xf7,0xf5,0x4d,0xa8,0x0f,0x60,0x37,0xeb,0x45,0xe0,0xfb,0x96,0x99,
- 0xcf,0x9f,0xc7,0x23,0xb3,0xc2,0x4d,0x42,0xaa,0xbe,0x9c,0xb4,0xef,0x6f,0xcc,0x0c,
- 0x4a,0x4b,0x7c,0x94,0x64,0x2a,0xe5,0x1e,0x3c,0x1d,0x2e,0x1e,0xd5,0x35,0x43,0x29,
- 0x89,0xb8,0x19,0x07,0xcf,0x8a,0xa5,0xf3,0x64,0x19,0x3a,0xf4,0x12,0xca,0x4f,0x49,
- 0xe3,0x9f,0x21,0x75,0x14,0xe4,0x0c,0xdb,0x9c,0xda,0xfd,0x08,0x0c,0x6c,0x2b,0xd8,
- 0x54,0x7d,0x1d,0x2f,0x8d,0x2b,0x4b,0xd9,0x15,0xf0,0x5c,0xe3,0x35,0xe1,0x9c,0x5a,
- 0x4b,0x7c,0x54,0x2d,0xf9,0x07,0xd5,0xca,0x10,0x82,0x9c,0x12,0x9e,0xf4,0x7a,0x0d,
- 0xc7,0x7c,0x8a,0xcf,0x51,0x2b,0xc3,0xcb,0xf7,0x89,0xa0,0x9f,0x86,0xf9,0xba,0x63,
- 0x5e,0xb5,0x05,0xff,0x14,0x98,0xfe,0x65,0x62,0xe3,0xcf,0x48,0x9f,0x53,0x37,0x90,
- 0x5f,0x4f,0x3a,0xa3,0x9e,0xcb,0xc2,0x85,0xfa,0xac,0xfa,0x0c,0x5c,0x52,0xaf,0xd7,
- 0xf3,0x4e,0x5b,0xe2,0xc3,0x09,0xff,0x9c,0x83,0xfb,0xb8,0x43,0x13,0x53,0xd5,0xba,
- 0x72,0xfb,0xc4,0x84,0x74,0x38,0xe0,0x7f,0xc3,0x61,0x88,0x0b,0x71,0xff,0x38,0x61,
- 0xf9,0x9e,0xc7,0x0e,0x8e,0xfb,0x47,0x7a,0x65,0x33,0xde,0x80,0x9b,0x65,0xf6,0xd7,
- 0xa2,0xf4,0x70,0x84,0x58,0x21,0xac,0x93,0xf1,0x8a,0xe1,0x9c,0x6e,0xdf,0x8f,0x00,
- 0xb5,0x39,0xc4,0x3e,0x63,0xe1,0xf1,0x37,0x30,0xe3,0xa3,0xb4,0xe6,0x61,0xf6,0x0d,
- 0x78,0xc2,0xf8,0x01,0x95,0x6d,0x59,0x07,0xeb,0x13,0xa5,0x83,0xcd,0x2b,0xb2,0xdf,
- 0x90,0x9e,0x35,0x56,0x6a,0x4a,0x2d,0x4b,0xfb,0x07,0x97,0x49,0x66,0x7c,0x82,0x57,
- 0x99,0x3f,0x67,0x71,0x60,0x07,0x2f,0x33,0x6c,0xdb,0xb2,0x67,0xe9,0x0d,0xf5,0x9e,
- 0xa4,0x72,0x15,0x7b,0x55,0xde,0x65,0x68,0xf3,0xa7,0x49,0x81,0x74,0x7f,0xc6,0x54,
- 0x7c,0x54,0x55,0x27,0xa2,0xfd,0x1f,0xc3,0x07,0x88,0x76,0x9a,0x3e,0x16,0x3b,0x61,
- 0x43,0xdc,0x1f,0x5d,0x3e,0xa8,0x9c,0x35,0x2e,0x42,0x79,0x9b,0xe3,0x29,0x8b,0x3e,
- 0x1a,0x8d,0x8f,0x62,0x8e,0x06,0x31,0xae,0xb5,0xe0,0x36,0xfe,0x2a,0xa7,0xb6,0x68,
- 0x88,0x07,0x1c,0x11,0x41,0x93,0x86,0xed,0x7e,0x58,0x5a,0x9f,0xd1,0x1f,0x64,0x3c,
- 0xfe,0x67,0xb5,0x7e,0x48,0xef,0xd0,0xed,0x2d,0xc5,0xdf,0x8d,0x1f,0x82,0x19,0xa1,
- 0x49,0x57,0x8a,0x12,0x98,0x85,0x02,0x12,0xdf,0xb6,0xe2,0x9f,0xd5,0x14,0x1f,0x55,
- 0xa7,0xc4,0x5c,0xd9,0xd2,0x53,0x9a,0x4b,0xcf,0xdd,0x1e,0xb9,0x86,0x3f,0xa3,0x97,
- 0x0d,0x91,0x7f,0x2a,0xa7,0x49,0xa7,0x0a,0x90,0x81,0xa4,0x30,0x26,0x7f,0x16,0x66,
- 0xe1,0xa6,0x12,0xca,0xee,0xc2,0x5f,0x57,0x6b,0x66,0x19,0x8a,0x2d,0x6c,0x35,0x3c,
- 0xcc,0xcb,0x70,0x1a,0x55,0x18,0x28,0xa4,0xc2,0xda,0x16,0xfc,0xa3,0x15,0x98,0x4a,
- 0x9f,0x8a,0x00,0x64,0xc1,0x53,0x35,0x5a,0x28,0xc7,0x2c,0x0b,0x49,0x62,0x67,0x7e,
- 0x1e,0x25,0xca,0xc5,0x17,0x65,0xe2,0x9f,0xab,0x10,0x5d,0xa4,0x40,0x1d,0xd5,0x87,
- 0xec,0x40,0x19,0x21,0x86,0x47,0x1b,0x55,0x88,0xd4,0xe8,0xdb,0xcc,0x4f,0x4f,0xe3,
- 0x9f,0x54,0x7c,0x14,0xee,0x9f,0x3e,0x1f,0xc5,0x7b,0xfb,0xf5,0xcd,0xc7,0xc4,0xcf,
- 0xe1,0xf7,0x66,0x5a,0x9c,0xf8,0xb9,0xfd,0x82,0x5e,0xb5,0x28,0x03,0xff,0x2c,0x9c,
- 0x7c,0x06,0xde,0xc4,0xf9,0xb9,0x7d,0xc2,0xb5,0xf0,0x1a,0xf8,0x6a,0x1c,0x7d,0xec,
- 0x8c,0x31,0x92,0x65,0x66,0xcc,0x95,0x64,0xbf,0x66,0x16,0xca,0x16,0xef,0xb4,0xf8,
- 0x07,0xa9,0x3a,0x41,0x99,0xac,0x70,0x9b,0x06,0xc7,0xa9,0x3f,0x48,0x2b,0x4a,0xd7,
- 0x85,0x14,0xe1,0xd6,0x18,0x28,0xaa,0x89,0xba,0x5d,0x54,0x1f,0x29,0xdb,0x82,0x57,
- 0x1b,0x61,0x0b,0x78,0x02,0xf8,0xbe,0x8d,0xf0,0x94,0x5c,0x1b,0x54,0x0a,0x22,0x2f,
- 0x37,0xce,0x43,0xd8,0xb3,0xd4,0xb9,0xce,0x4c,0x0c,0x44,0x7c,0xe2,0xba,0x55,0x18,
- 0x9b,0xdf,0x52,0x90,0xaa,0x8f,0xa4,0xc4,0xbe,0xdb,0x96,0xb5,0x4f,0x9b,0xa3,0x37,
- 0x6f,0x65,0x27,0xb3,0xf6,0x89,0x78,0x7e,0xb7,0x39,0x67,0xea,0xb8,0xfe,0x35,0x39,
- 0xdb,0x58,0x66,0x7c,0x14,0x79,0x73,0x1c,0x0f,0x88,0x92,0xf6,0x54,0xe3,0x1c,0xfd,
- 0xd5,0x6d,0xf9,0x54,0xf8,0xb1,0x4c,0xff,0xbb,0x16,0xe5,0x1a,0xe9,0x90,0xd3,0x47,
- 0x08,0xb0,0x36,0x9d,0x3f,0xa2,0xb6,0x49,0x08,0x72,0xea,0x1c,0x2d,0xf9,0xab,0xd5,
- 0x37,0xeb,0x9f,0xd3,0x1d,0x2d,0x0d,0xa9,0x0c,0xc1,0x3c,0x67,0xf5,0x2b,0x70,0x9a,
- 0x1f,0xa0,0xf7,0x3d,0x6b,0xc1,0xcf,0xe6,0x7e,0xbb,0x82,0x60,0x36,0xef,0x89,0x3d,
- 0x27,0x28,0x8d,0x14,0x1f,0x6e,0xf8,0xb5,0xe5,0x51,0xca,0x8f,0x4b,0x55,0x8c,0xb4,
- 0x59,0xfc,0x83,0x32,0x82,0x9c,0xb9,0xd4,0x44,0xed,0x2c,0x64,0x83,0x8f,0x2b,0x1f,
- 0xd8,0x16,0xd6,0x55,0x34,0x56,0x70,0x25,0xc9,0xdc,0xb0,0x89,0xbb,0xf8,0x52,0x8d,
- 0xa5,0x19,0x14,0x59,0x32,0xe3,0xa3,0x42,0x8a,0x17,0x8e,0xc8,0x0f,0x70,0x99,0x02,
- 0x35,0xb3,0x53,0x6a,0x7a,0xb2,0x6b,0x19,0xab,0x37,0x4a,0x0c,0x91,0xe2,0x55,0xc6,
- 0xbe,0x2f,0xa8,0xe4,0x56,0x2b,0xd5,0xa7,0xd5,0x05,0x8e,0x6b,0x9b,0x48,0xfb,0xd7,
- 0xe2,0xf9,0xdd,0x6b,0x2b,0x3d,0xa8,0xe8,0x88,0xa0,0xd6,0x53,0xbd,0xa0,0x21,0x26,
- 0xa7,0xfd,0x41,0x2d,0xdf,0xca,0xf9,0xb3,0x19,0x1f,0x95,0x7d,0x96,0xfd,0x8e,0x5f,
- 0x3f,0xe0,0x38,0x2e,0x5e,0x01,0xff,0x14,0xbd,0x11,0x11,0x8b,0xf2,0x2d,0x78,0x8d,
- 0x3f,0x9b,0xdc,0xbc,0x46,0xb4,0x5d,0x1e,0x1f,0x95,0x40,0xd0,0xf8,0x3e,0xf8,0x92,
- 0x66,0x7c,0xef,0x39,0xa9,0x82,0xe3,0x60,0x27,0x5c,0x12,0x2a,0xba,0x50,0x34,0x59,
- 0xe2,0xa3,0x0a,0x0e,0xe8,0xef,0x92,0xf5,0x3a,0x82,0x46,0x0a,0xea,0xaf,0xf7,0xf0,
- 0xfe,0x0b,0xe0,0xf5,0xad,0xe5,0x9a,0x78,0x5c,0xbc,0x08,0xe7,0xa9,0x3e,0xe4,0x1a,
- 0x71,0xc5,0xf8,0xfa,0x3f,0x4d,0xf1,0x4e,0x0c,0x1f,0x7b,0x4d,0xf5,0x76,0xbe,0x56,
- 0xbd,0x96,0xb2,0xe1,0x0a,0x61,0xfd,0xe4,0xa2,0x2c,0x25,0x3b,0xf0,0xb6,0xbc,0x7f,
- 0xba,0x89,0xdf,0xd2,0xf1,0x51,0x00,0xdb,0x55,0x7a,0x5f,0xe5,0x87,0x91,0xe1,0x79,
- 0xf7,0x43,0x91,0x91,0x13,0x62,0x05,0xb0,0x31,0xb8,0x92,0xca,0x02,0xbc,0x1d,0xde,
- 0x86,0x57,0xa6,0x0d,0xb1,0x9a,0x09,0xf1,0x51,0x65,0x7d,0x28,0xa6,0x0e,0xb3,0x08,
- 0xae,0x1e,0x2a,0x02,0x9b,0xce,0x79,0x1c,0x0d,0xdb,0xc8,0xeb,0x28,0xcf,0x29,0x62,
- 0x21,0x60,0x89,0x8f,0x9a,0x32,0x28,0x9d,0xa3,0xb4,0x82,0x4e,0xb1,0x17,0x0e,0x26,
- 0xcb,0xa9,0xf1,0x6b,0x89,0xad,0x87,0xfb,0x5e,0x41,0x3c,0xfc,0x31,0x02,0x6f,0xb3,
- 0xe3,0xd2,0x2d,0xe9,0xf8,0x28,0xc1,0x5c,0x9f,0xdb,0x1c,0x09,0x78,0x4a,0xfd,0x3d,
- 0x2d,0xd4,0xe3,0x0d,0xa7,0x4a,0x86,0x69,0xd0,0x48,0x89,0x60,0x66,0xbf,0x4e,0xd4,
- 0x5f,0x63,0xf2,0xa7,0x48,0x35,0xe5,0x79,0xc0,0x3e,0xd4,0xf0,0x3c,0x7f,0x5d,0x2e,
- 0xa7,0x32,0x9b,0x12,0xbc,0xa6,0xcd,0xad,0x33,0x0b,0xff,0x5e,0x90,0xa9,0x42,0x32,
- 0x8b,0x8f,0xe3,0x9f,0x1d,0xa9,0xf8,0xa8,0xb0,0x3b,0xc1,0x4e,0xc1,0xc6,0x46,0xd4,
- 0xbf,0xdb,0x6d,0xd7,0x48,0x4d,0x3d,0xb3,0x34,0x25,0x8a,0x86,0x55,0xa7,0x41,0xa1,
- 0x53,0xb3,0x92,0x19,0xfe,0x41,0x9c,0xbf,0x0a,0x95,0xda,0x49,0xea,0x1e,0x6b,0x28,
- 0x2d,0x91,0x27,0xb4,0x0d,0x54,0xaf,0x95,0xea,0x03,0xe0,0x7c,0xea,0x30,0x12,0x4f,
- 0xe3,0x1f,0xd5,0x8c,0x8f,0x12,0xa2,0xbe,0x40,0x3f,0x44,0xa9,0x31,0x31,0x30,0xce,
- 0x22,0x50,0x22,0x29,0x12,0xe2,0xc3,0xc4,0x28,0xfe,0x19,0x5f,0x7d,0xf2,0x0f,0x52,
- 0xbd,0x2c,0x7b,0x47,0x43,0xdc,0xec,0x36,0x4e,0x85,0x32,0xa8,0x2d,0x72,0x88,0xde,
- 0x57,0x1e,0x49,0x6d,0x95,0xf8,0x78,0x7c,0xd4,0x8e,0x29,0x26,0x89,0x01,0x78,0xf1,
- 0x38,0x7c,0x9e,0xf2,0x06,0xd6,0x8d,0x7a,0x0c,0xab,0xcf,0x43,0xaa,0x3e,0x52,0xf5,
- 0xc0,0x3a,0x2b,0xfe,0xb9,0x44,0xdb,0xec,0xb8,0x78,0xaf,0x71,0x84,0x5f,0x67,0x6c,
- 0xff,0x2c,0x7f,0x67,0xf0,0x10,0x75,0x8c,0xed,0x11,0x2b,0x93,0xaf,0x4f,0xac,0x0f,
- 0x69,0x14,0x7e,0x02,0x7f,0xac,0x43,0x58,0xb8,0x35,0xf2,0x2f,0xd1,0x66,0x10,0x8f,
- 0x5f,0xf5,0xa7,0x0d,0xbf,0xa2,0x8a,0xbe,0x71,0x39,0xea,0xfa,0x15,0x7f,0x5f,0x9b,
- 0x50,0x1f,0x12,0xf1,0x8f,0x9c,0xb0,0xe3,0x47,0x57,0x6d,0xf6,0x50,0x33,0x94,0xbc,
- 0x22,0x7b,0x9d,0xf7,0x4b,0xf5,0x2e,0xb3,0xc2,0x89,0x1d,0x1a,0xe4,0x38,0x55,0x84,
- 0x3e,0x38,0xbe,0xdf,0x0c,0x69,0xa7,0xfa,0x14,0x75,0xd3,0xa0,0xfe,0x20,0xcd,0x86,
- 0xab,0xeb,0xe9,0x84,0x73,0x23,0x4a,0xa4,0x55,0x71,0x79,0x47,0x64,0x23,0x0a,0x6a,
- 0x13,0x6a,0xa6,0xf3,0xf5,0x16,0x4d,0x1e,0x84,0x91,0x28,0x2e,0xcb,0x76,0xf1,0x0e,
- 0x38,0x52,0x4f,0x8d,0x74,0xa9,0x31,0x07,0x78,0xef,0x92,0x64,0xca,0x68,0x4b,0x45,
- 0xec,0xf4,0xd5,0x8c,0xc7,0x47,0x09,0xfb,0xe1,0x64,0xcc,0x8c,0x0f,0x47,0x74,0x2d,
- 0x55,0x19,0x39,0x09,0x84,0x91,0x17,0x85,0x2a,0x63,0x73,0x1f,0xee,0x87,0x4f,0x47,
- 0xf1,0xa1,0x35,0x3e,0x0a,0x17,0xd9,0x47,0xdb,0xc6,0x0e,0x47,0x74,0xb3,0x11,0xbc,
- 0x87,0x1d,0x82,0x8a,0xb0,0x9d,0xbf,0x64,0x86,0x06,0x99,0x11,0x41,0xe9,0xfa,0xd8,
- 0x59,0x1e,0xd8,0x17,0xc7,0xe7,0x8f,0x89,0xf7,0xe2,0xb2,0x14,0x53,0x7c,0xf8,0x7e,
- 0xd8,0xc0,0x5c,0x67,0xe4,0xfd,0xec,0x3c,0xf5,0x4f,0xc9,0xac,0x0f,0xd9,0x83,0xf2,
- 0x67,0x17,0x85,0xf1,0xc4,0xb2,0xa9,0xfe,0x86,0xcb,0x68,0xa2,0xf8,0x4c,0xea,0xe0,
- 0xb0,0xe4,0xda,0x00,0xd9,0x0b,0x13,0xea,0x43,0x0e,0xa9,0xdf,0x82,0x5f,0xc5,0xd0,
- 0x7e,0x79,0x2b,0xfb,0x5b,0xc6,0x43,0x3b,0x8a,0x06,0x29,0x3e,0x1c,0xd6,0xc6,0x4e,
- 0x52,0xbd,0xa0,0x77,0xf8,0xde,0x88,0x30,0xb1,0x3e,0xe4,0x32,0x7d,0xb7,0xea,0x1d,
- 0x70,0x54,0x88,0x79,0xfc,0xf7,0xf5,0xbe,0x13,0xb9,0xde,0xfc,0x3c,0xe8,0xda,0xe1,
- 0xbd,0xad,0xcc,0x27,0x1e,0x95,0xfe,0x04,0x31,0xea,0x98,0x66,0xc9,0x8f,0x9b,0xb2,
- 0x1f,0xfe,0x4c,0x45,0x20,0xef,0x62,0x1f,0x87,0xe6,0x20,0xde,0xa4,0xfa,0x6c,0xd2,
- 0x85,0xa2,0x8a,0x97,0x1d,0x89,0xfc,0x8f,0xb5,0x51,0xfc,0x9c,0xc6,0x3f,0xb2,0x89,
- 0x7f,0xcc,0xf5,0x19,0xa4,0xb2,0xd8,0x3d,0x5f,0x7d,0xa1,0xd8,0x43,0x11,0x41,0xba,
- 0x63,0x47,0xc3,0xa7,0x63,0xeb,0x7f,0x38,0x2d,0xff,0x0b,0xcd,0xf8,0x28,0x43,0x09,
- 0x05,0xde,0x96,0xd6,0x4b,0x73,0xdf,0x92,0x87,0x0e,0x5f,0x15,0x7a,0x8e,0xae,0xdc,
- 0xca,0xde,0x8e,0x8e,0x56,0xdc,0xfd,0x2c,0xdd,0x6f,0x11,0xf1,0xcf,0xee,0xa8,0x19,
- 0xfd,0xfe,0x68,0x80,0x0a,0x05,0xf4,0xdc,0x93,0xfd,0x2d,0xfe,0xab,0x75,0x54,0x06,
- 0xc1,0x79,0xd4,0xf9,0x50,0xaa,0x3e,0x40,0x3a,0x3f,0xa5,0x56,0xda,0xa8,0xee,0x4e,
- 0x65,0xf7,0xf4,0xca,0x11,0x33,0xf1,0x79,0xd5,0x1d,0xd2,0xf3,0x49,0xbc,0xe2,0x73,
- 0xf5,0x22,0xd4,0x74,0xa7,0xea,0x43,0x8e,0xcd,0x1f,0x98,0x32,0x00,0x17,0x43,0x1d,
- 0x54,0x1f,0xa0,0x1d,0x8e,0xc2,0x0c,0x2e,0xc5,0x51,0x5b,0x5d,0x0c,0xee,0x6e,0xa2,
- 0xfa,0x90,0xf0,0x56,0xaa,0x63,0x9a,0x25,0x3f,0x4e,0x18,0x8d,0x0f,0x8f,0x98,0x61,
- 0x51,0x95,0x6a,0x59,0xaa,0x5e,0xb4,0x9f,0xca,0x22,0x25,0xb3,0x07,0x2e,0xef,0x0f,
- 0xd2,0x96,0x5a,0x0d,0x2a,0x1b,0x68,0x76,0x33,0xa4,0x30,0xe0,0x43,0x70,0x77,0x70,
- 0xb9,0x19,0x18,0x0c,0x7f,0xa1,0x3e,0xe4,0x3e,0x68,0xa5,0xb6,0x5c,0x25,0x72,0x13,
- 0x73,0x2d,0x92,0x11,0xd8,0x50,0x59,0xe6,0x50,0x0e,0xf1,0x39,0xf4,0x13,0x6e,0xad,
- 0x74,0x7e,0x1c,0xe2,0x1f,0xea,0x47,0xac,0x9b,0x65,0x66,0xb7,0x10,0xfe,0x89,0x39,
- 0xfb,0xa5,0x26,0x81,0x32,0xe6,0x58,0xbf,0xb0,0x8b,0x4d,0xa8,0x0f,0x69,0xe2,0x1f,
- 0x3d,0x4e,0x45,0xb0,0xa9,0x3e,0x92,0x16,0xea,0x2c,0xc8,0x7e,0xd9,0x84,0x01,0x39,
- 0x2a,0x7b,0x19,0x7f,0x32,0xf9,0x1f,0x23,0x8d,0x7f,0x46,0xf3,0xe3,0x1c,0x5c,0xa1,
- 0x6e,0xb0,0x1d,0x7c,0x23,0xcf,0x27,0xda,0xc7,0xc5,0xcd,0x40,0xa9,0x21,0x66,0xd6,
- 0x87,0x7c,0x27,0x9d,0x1f,0x47,0xf1,0x4e,0x14,0x16,0xd5,0x27,0x9e,0x24,0xfe,0x87,
- 0x88,0xa0,0xef,0xc0,0xe7,0x42,0x95,0x9e,0x13,0xc3,0x2b,0x6f,0xa6,0xa0,0xe0,0x13,
- 0x19,0xfd,0x61,0x2f,0xa4,0xc2,0xc6,0x4a,0xa4,0x73,0x05,0x37,0xdc,0x9c,0xbb,0xb5,
- 0xa1,0xc4,0x18,0x59,0x74,0x83,0xb9,0x50,0xfa,0xa1,0x02,0xf3,0x27,0x4b,0x7e,0x5c,
- 0x61,0x12,0x12,0xc3,0x2e,0xb3,0x2c,0xb6,0xd6,0x09,0x2e,0x5b,0x4e,0x64,0x52,0xb2,
- 0x9b,0x22,0xc6,0x65,0xee,0x3c,0xa1,0x73,0xed,0x39,0x50,0xac,0xf5,0x91,0x10,0xff,
- 0x48,0xf3,0x04,0x02,0x39,0x5b,0xa5,0xe0,0x3e,0xd0,0x96,0x29,0xce,0x88,0xd4,0xb8,
- 0xab,0x84,0xea,0x03,0x04,0xba,0x79,0xaa,0x42,0x02,0x4b,0xf7,0x87,0x6d,0xa1,0xf8,
- 0x7c,0x84,0x9d,0xcd,0x5b,0xa8,0x2c,0x76,0x08,0x57,0x4f,0x5d,0xd2,0x26,0x5d,0x2f,
- 0x95,0xe9,0xee,0x58,0x80,0xf8,0x37,0x93,0x4f,0xfb,0x20,0x33,0x3f,0x2e,0x48,0x20,
- 0xa7,0x81,0xd8,0xaa,0x0a,0xfd,0x75,0x82,0x9d,0x23,0x30,0xa3,0xc6,0xde,0x22,0x52,
- 0x69,0x08,0xf3,0xf9,0xd3,0xf9,0x71,0x3d,0x66,0x7e,0x1c,0xf5,0x47,0xa3,0x6a,0x36,
- 0xd2,0x01,0xfd,0xab,0x66,0x7d,0x6c,0x89,0x1a,0xc5,0x16,0xf7,0xcb,0xa3,0x50,0xf9,
- 0xac,0x25,0xbe,0x8e,0x76,0x17,0x85,0xa5,0x39,0x34,0x59,0xd6,0x7d,0xa2,0x19,0x1f,
- 0x7e,0x5c,0xf0,0xa3,0x0d,0x21,0x1a,0x90,0x6a,0x14,0x9b,0x91,0x1f,0xd7,0x0e,0x14,
- 0x04,0x8e,0xf8,0xc7,0x2d,0x45,0xa0,0x38,0xea,0x8e,0xdb,0x28,0xac,0xf4,0xfa,0xad,
- 0x72,0x7b,0x64,0x40,0xdd,0x00,0xad,0x54,0x31,0xdb,0x92,0x1f,0x87,0xf2,0xe7,0x85,
- 0x54,0x11,0xc8,0x65,0x14,0x2f,0x17,0x93,0xbd,0xdf,0xa0,0xc6,0x94,0x9e,0x15,0xb2,
- 0xd7,0xd5,0xcb,0x9a,0x21,0x9c,0xaa,0x0f,0x39,0xae,0xef,0x10,0xff,0x3c,0xab,0xe3,
- 0x69,0xfd,0x8c,0x7d,0x0b,0xfe,0x15,0xb4,0x78,0xb4,0x8e,0xda,0x12,0x69,0x73,0x0d,
- 0xb9,0x2e,0xfb,0x6d,0x3e,0xa9,0x68,0x25,0x9d,0xdf,0x81,0xf1,0xf9,0xd1,0xe8,0xb7,
- 0xe0,0xcf,0x94,0x0d,0x77,0x6f,0xe4,0xbe,0xee,0x57,0x63,0x5b,0xe2,0xf6,0xe1,0x86,
- 0xfb,0x74,0x44,0x44,0xe1,0xdc,0x1f,0x8b,0xaf,0x6b,0xaf,0xee,0xba,0x8b,0xf0,0xcf,
- 0x47,0xae,0xb1,0xf9,0x88,0x7f,0xd4,0x11,0xe2,0x37,0xbc,0x5f,0xaa,0x34,0x5e,0xf2,
- 0xa1,0xbd,0xbf,0x57,0xfc,0x58,0x3f,0x12,0x5a,0x48,0x69,0x50,0x83,0xa3,0x7c,0xfb,
- 0x97,0x2c,0xf9,0x71,0xb8,0x84,0x17,0x0c,0x53,0x49,0xdd,0x07,0xaf,0xf3,0x8a,0xfe,
- 0xcd,0xc3,0xc2,0x01,0x38,0x62,0x54,0x51,0xc7,0x34,0x54,0x6d,0x51,0xf3,0xa7,0x74,
- 0x7e,0xdc,0xd3,0x85,0xdb,0xf5,0xbd,0x54,0x04,0x12,0xc5,0x6c,0xe3,0xfa,0x84,0x76,
- 0x4a,0xa9,0x73,0xbe,0xc3,0x9f,0x6c,0x29,0x1d,0x56,0x42,0xac,0x57,0xfa,0x54,0x4b,
- 0xd5,0x87,0xe4,0xe3,0xf7,0x87,0xed,0xa1,0x67,0xa9,0xfa,0xd3,0x69,0x36,0x5d,0xda,
- 0x5c,0x32,0xbb,0x1e,0x7f,0xed,0xd5,0xd7,0x4f,0x2e,0x8d,0x36,0x53,0xc7,0xd8,0xbd,
- 0x70,0x82,0xe6,0x5b,0xf2,0xe3,0xd0,0xfe,0x7a,0xc1,0x04,0x39,0x36,0x0f,0x6b,0x48,
- 0x6a,0x5c,0xf4,0x06,0x88,0x46,0xf3,0x70,0xa5,0x80,0x0d,0x9a,0x11,0xc2,0x13,0xea,
- 0x43,0x0e,0xc2,0x0b,0x21,0x04,0x39,0x3f,0xa2,0x7a,0x7d,0x41,0x84,0xa9,0x43,0xc5,
- 0xe7,0xe1,0x2b,0x07,0xfd,0x49,0x65,0xdb,0x03,0xe7,0x85,0x4b,0xa3,0xf5,0x75,0xd3,
- 0xf9,0xe9,0x88,0x7f,0x4c,0xa5,0xdf,0x21,0x9a,0x40,0x88,0x96,0xe5,0xbc,0x7c,0x4e,
- 0xbb,0x2f,0xe9,0x78,0x22,0xd5,0x3f,0x2e,0x55,0x1f,0x72,0xec,0xf9,0x09,0xff,0x7c,
- 0x0a,0xbb,0x49,0x68,0xdf,0x01,0xef,0x52,0x21,0xdc,0x3a,0xea,0x7f,0x21,0x5d,0xc7,
- 0xf1,0x84,0x9e,0x97,0x3f,0x1d,0xab,0x0f,0x39,0xf6,0xfc,0x88,0x7f,0xe4,0x7d,0x92,
- 0x59,0x84,0x99,0xfc,0x17,0x0b,0x3b,0xdc,0x89,0x00,0x55,0x6c,0xfe,0x7e,0x42,0x79,
- 0xca,0xe4,0x73,0xe6,0x5c,0x56,0x1f,0x52,0xde,0x67,0x76,0xbf,0xca,0xf6,0xc0,0xcf,
- 0xa0,0x4c,0x46,0x31,0x65,0x77,0x3e,0x43,0x65,0xa2,0x63,0x6c,0x50,0x1a,0xd5,0xd7,
- 0x13,0xeb,0x43,0x6a,0xbf,0xfe,0xd9,0x9e,0x5b,0x51,0xfb,0x6b,0x6e,0x7b,0x8b,0x37,
- 0x7b,0x23,0x7f,0x46,0x73,0xf7,0x34,0xa7,0xf8,0x9f,0xf6,0x09,0xfc,0x4f,0xee,0x1d,
- 0xf0,0xb9,0xe4,0xeb,0x73,0x9c,0x51,0x6e,0x84,0x77,0x6f,0xf5,0xb3,0xe9,0x43,0x62,
- 0x25,0xff,0x14,0x16,0x44,0x97,0xc7,0xc4,0x0b,0xf8,0x6a,0xa9,0xfa,0x90,0xe3,0xf6,
- 0x57,0xfc,0x61,0x5a,0xb4,0x17,0x8d,0xcd,0x75,0xe5,0xe7,0xdb,0xfe,0xa4,0x7f,0x59,
- 0xde,0x3c,0xa4,0x0c,0x86,0xdf,0xbd,0xd2,0xbf,0x05,0x81,0xd0,0xf9,0xf8,0x25,0x6a,
- 0x74,0x9e,0x91,0x1f,0x67,0xe2,0x9f,0xab,0x57,0xdb,0x11,0x9f,0x6a,0xa8,0x1f,0x4e,
- 0xe0,0x6e,0xb9,0x6b,0xe3,0x79,0xa9,0x4a,0xce,0x3d,0xd8,0x30,0xd4,0x7d,0x9e,0x57,
- 0x2d,0x5d,0x16,0xac,0xce,0xe8,0x0f,0x4b,0x24,0x8c,0x8e,0xf8,0xb0,0x48,0x8d,0x86,
- 0x7d,0xc9,0xbc,0x4e,0xe7,0x09,0xde,0x59,0x5b,0x56,0x22,0x6f,0x64,0x27,0x62,0x8f,
- 0xf0,0xb2,0x3a,0xb9,0x65,0x42,0x7d,0x80,0xdd,0x6a,0x99,0x2e,0xb3,0x88,0x1c,0x8f,
- 0x16,0x9a,0x5f,0x7f,0x91,0xb0,0x4b,0xf5,0x00,0xca,0x5b,0x43,0x4f,0x34,0x7a,0xb8,
- 0x0c,0x2c,0xb3,0x3e,0xc0,0x0b,0xd4,0xcd,0x73,0x72,0x44,0xe2,0x1b,0x5c,0x54,0x16,
- 0x89,0x7d,0x64,0xef,0x5c,0x57,0xa6,0x01,0x65,0x2c,0xa2,0xc5,0x1d,0x91,0xb7,0x33,
- 0x6b,0x7f,0x34,0x22,0x09,0x2b,0x75,0x7b,0x8f,0xb2,0x40,0xeb,0x95,0xcd,0xd5,0xf8,
- 0x7b,0x18,0xde,0xe0,0xf7,0xe6,0x6e,0xcc,0x7f,0xdf,0xdc,0x2a,0xf6,0x68,0x46,0x7d,
- 0x48,0x13,0x0f,0x77,0x51,0xf7,0x64,0xc2,0x23,0x46,0xde,0x50,0x71,0x12,0xce,0xda,
- 0xa8,0x3e,0x24,0xbe,0xe6,0x8b,0xd9,0x95,0xfd,0x13,0xfa,0xa3,0x99,0xdb,0x4c,0x5f,
- 0xd6,0x58,0x1c,0xe7,0x87,0xc3,0xe6,0xfd,0x4f,0xb8,0x7a,0x6a,0xd8,0x31,0x7b,0xa3,
- 0x32,0x93,0xfc,0x23,0x43,0xf6,0xc6,0x09,0xf5,0x91,0x5e,0xa4,0x6e,0x9e,0x09,0x56,
- 0xc2,0xdf,0x30,0xbf,0x3e,0xbc,0xa7,0x45,0x0d,0x2d,0x8c,0x78,0x6f,0x26,0xd8,0x20,
- 0xaf,0x4b,0xde,0x91,0xd9,0x1f,0x8d,0xf0,0x30,0x15,0xc5,0xaa,0x87,0xc8,0xad,0xe6,
- 0xfa,0x1c,0x81,0xad,0x6a,0x3c,0x69,0xd3,0x98,0x5d,0xe3,0x60,0x37,0x64,0xbb,0xcb,
- 0xda,0x1f,0x96,0xf8,0x9f,0x1f,0x50,0x52,0xd8,0x0c,0x7d,0x9b,0x59,0x0d,0xdb,0xf9,
- 0x8e,0xfe,0xd3,0xad,0x45,0x9a,0x6d,0x0d,0x9b,0xaa,0xad,0x6b,0x2c,0xed,0x97,0x07,
- 0x58,0x66,0x7f,0xd8,0x3f,0xe1,0x22,0x78,0x5a,0xc4,0x76,0xfd,0xb0,0xea,0x25,0xb4,
- 0xf3,0x32,0xfc,0x1a,0xbc,0x6a,0xd9,0x14,0xb1,0x04,0x4e,0xc0,0x74,0xc3,0x0e,0xe2,
- 0xc4,0xfe,0xb0,0x7e,0xc2,0x87,0xe7,0xf5,0x54,0x35,0x6c,0x84,0xcd,0x1f,0xb3,0xb9,
- 0x90,0xbb,0x45,0x3c,0x4f,0xfd,0xf5,0xba,0xa8,0x3f,0x48,0x46,0x7d,0x00,0x5a,0x1f,
- 0x34,0xca,0xdc,0x94,0x36,0x45,0xeb,0xf3,0x05,0xa3,0x46,0x84,0x93,0xfa,0x10,0x36,
- 0x8f,0x84,0xfd,0xc6,0xb2,0x68,0x75,0x66,0x7d,0xa4,0x14,0x69,0x6c,0x9b,0xce,0x1a,
- 0x53,0x68,0xe7,0x8c,0x59,0x56,0x8e,0x02,0x2f,0xd5,0xbd,0xb2,0xc7,0x08,0x4e,0xec,
- 0x0f,0x9b,0xe2,0xbb,0xd8,0x06,0x58,0x9f,0x02,0x42,0xbf,0xd3,0xea,0x11,0xf6,0x2c,
- 0x5d,0xc1,0x7e,0x07,0x7b,0x63,0xa5,0x49,0xb9,0xd7,0x66,0xed,0x0f,0x4b,0xf1,0xe1,
- 0x65,0xfd,0xb8,0x8c,0x3f,0x0f,0x98,0xfd,0x0e,0xa8,0xde,0x5d,0x13,0xc4,0xeb,0x94,
- 0xe9,0xec,0xa4,0xbe,0xbb,0xc7,0x63,0xb8,0xbd,0x19,0xf5,0x91,0x88,0xff,0x41,0x31,
- 0xf2,0x7d,0xb1,0x13,0x8e,0x1a,0x26,0xda,0x39,0x07,0x47,0x63,0xe5,0xed,0x88,0x88,
- 0x46,0xe0,0x6c,0xb2,0x8a,0xdb,0x07,0x32,0xfa,0xc3,0xa6,0xa2,0xc1,0x97,0x73,0x16,
- 0xe6,0xd4,0x9d,0x93,0x60,0x40,0xe3,0x70,0xc8,0xcf,0xc4,0xf5,0x62,0xb2,0x64,0x58,
- 0xaf,0xa4,0x0a,0x36,0x99,0xfd,0x61,0xcd,0x6e,0xa1,0x31,0xdc,0x2d,0x87,0xe2,0xe3,
- 0xfd,0x43,0xbd,0xba,0x7d,0xcb,0xb7,0x3f,0xd0,0x0f,0xa5,0xfc,0x1d,0x13,0xf1,0x4f,
- 0x99,0x5e,0x1b,0xc3,0xdd,0xd2,0x74,0xd0,0x44,0x2f,0x27,0x8d,0x7d,0x86,0x2b,0x2c,
- 0x3f,0xc2,0x3e,0x94,0x9b,0x4d,0xd7,0xd8,0xc1,0x89,0xf5,0x01,0x4c,0x7f,0x59,0x89,
- 0x56,0xaf,0x9b,0xf3,0xfb,0x49,0x83,0xd7,0xe0,0x95,0x8f,0x81,0xea,0xf9,0xd8,0x5a,
- 0xd8,0xc4,0xfa,0x00,0xb3,0xa8,0x09,0x5a,0x16,0x8c,0x7a,0xbb,0x5e,0x86,0xdd,0xba,
- 0x99,0x26,0x4f,0x85,0x22,0x3d,0x7f,0xa9,0x3e,0x00,0xa5,0x65,0xe5,0x6b,0x66,0x44,
- 0xe7,0x68,0x1b,0x38,0x33,0x2c,0x9c,0x1c,0x61,0x7e,0xaa,0x0f,0xf9,0x49,0x46,0x7d,
- 0x00,0x2a,0x0b,0xd9,0x7c,0xac,0xf8,0x42,0xf6,0xa5,0x54,0x7c,0xf8,0x05,0x44,0x44,
- 0x66,0x5a,0xdc,0xe7,0x44,0x0d,0x7d,0xcd,0x11,0xb2,0xd6,0x07,0x10,0xcc,0x36,0xf1,
- 0x54,0x16,0x66,0xbe,0xf6,0xda,0x77,0x53,0x65,0x01,0xf4,0x8f,0xdd,0xe5,0x01,0x47,
- 0x8c,0xcf,0xc7,0xf5,0x29,0x37,0xec,0x7d,0xe2,0xac,0xcc,0xfa,0x00,0x54,0x16,0x60,
- 0xbd,0xa2,0xa9,0x51,0x6d,0x0e,0xa1,0x9d,0x13,0xfa,0x86,0x70,0xab,0xda,0xdc,0xc8,
- 0x8a,0x74,0x6a,0x1d,0x9b,0xcb,0x99,0xb5,0x3e,0x92,0xd9,0x0d,0x36,0xa0,0xa8,0x91,
- 0x1a,0xf7,0x96,0xb0,0xf9,0xbe,0x08,0x7b,0x64,0x73,0x20,0x71,0x32,0x34,0x70,0xa1,
- 0xd2,0xf5,0xd9,0x46,0xeb,0x23,0x2d,0x52,0x5a,0x6c,0x12,0x3c,0xcc,0xa9,0x3f,0x88,
- 0x13,0x61,0x8f,0x48,0x11,0xfb,0x7c,0x26,0x01,0xd1,0x6a,0x94,0xf0,0x96,0xfa,0x48,
- 0x05,0xe3,0xfc,0xde,0xdf,0xb3,0x37,0x53,0x6d,0xd1,0x3e,0xa4,0x8e,0x57,0x2b,0xd0,
- 0x90,0x9f,0x55,0xd3,0x95,0xec,0xa0,0xfc,0x47,0xf7,0xb8,0x7c,0x68,0x4f,0xe5,0xc7,
- 0xd5,0x50,0x35,0x6c,0x7e,0x4a,0x36,0xff,0xe1,0x2b,0x81,0x91,0xa0,0xff,0x7b,0x78,
- 0x82,0xba,0xb5,0x91,0x38,0xf5,0x47,0x9b,0x96,0xf6,0xbf,0xa4,0xea,0x63,0x9b,0x20,
- 0xa7,0xc8,0xd9,0xa3,0x9b,0xeb,0x7f,0x02,0xf1,0xe7,0x0c,0x75,0x79,0x63,0x43,0x91,
- 0xda,0xa3,0xfb,0x55,0x3b,0xff,0x72,0x46,0x7f,0xb4,0x14,0xfe,0x89,0xb3,0x1b,0x60,
- 0x53,0xdb,0x02,0xb3,0x3f,0xac,0xbe,0xa9,0xb1,0x8c,0x2b,0xed,0x6c,0x21,0x6c,0x48,
- 0x7a,0xe2,0xee,0x81,0x88,0x6d,0xec,0xf3,0x8e,0xd5,0x07,0xc0,0x63,0xe2,0xb4,0x1b,
- 0xcd,0x29,0xc3,0x01,0xcf,0x4b,0x37,0x9a,0xe1,0x0b,0x6d,0xeb,0xa1,0x21,0xe9,0x09,
- 0xcb,0xf3,0x27,0xc4,0x87,0xef,0xe6,0x45,0x3d,0xd3,0x86,0x58,0x01,0x6a,0x2b,0xaa,
- 0x0e,0xcd,0x7e,0x0b,0x6b,0x75,0x4a,0x1c,0x8b,0xfc,0x94,0x4a,0x27,0x1d,0x94,0xc3,
- 0x16,0xfe,0xc7,0x2d,0xcf,0xa0,0xfa,0x00,0xc3,0x8e,0x7f,0x56,0x2a,0xa4,0x97,0x53,
- 0xd5,0xb0,0x2f,0xb2,0x97,0xeb,0x6f,0x0c,0xe3,0xe0,0x00,0x7b,0x25,0x56,0x49,0xa5,
- 0x03,0xd2,0x09,0x51,0x14,0x1f,0x7e,0x0e,0x0e,0x18,0x93,0xae,0x53,0x92,0x30,0x6a,
- 0xdd,0x9f,0x4f,0x39,0x52,0x9f,0x6b,0xb8,0x17,0xce,0xba,0xa8,0x14,0x9b,0xb5,0x3f,
- 0xda,0x94,0xd1,0xfc,0xee,0x61,0xc5,0x0f,0xaf,0x44,0xa8,0x3f,0x2c,0xfb,0x42,0x3f,
- 0xca,0xfd,0x49,0xfb,0x61,0xaa,0x98,0xcd,0xaf,0xee,0xb7,0x9f,0x12,0xd3,0xf9,0xd1,
- 0xed,0x57,0x9a,0xf2,0xe7,0x15,0xa5,0xee,0xe0,0x14,0x75,0x5d,0xaa,0x1b,0xd1,0xb1,
- 0xe4,0x3a,0xe7,0xf5,0x03,0xf2,0x92,0x48,0x1f,0x3d,0x7f,0xaf,0xfc,0xed,0xcb,0xeb,
- 0x23,0x51,0x7f,0xd8,0x42,0xd8,0xa8,0xa7,0xe6,0xab,0xdb,0xa0,0xb4,0x06,0xf1,0x5e,
- 0x9f,0xc9,0x60,0xdf,0xfc,0x23,0x67,0x3a,0x3e,0x3c,0x2c,0x8d,0xe6,0xe7,0x2e,0xdc,
- 0x2a,0x72,0x9e,0x42,0x3b,0x03,0x39,0x8f,0x80,0x3b,0x54,0x58,0xc1,0x8e,0x52,0xa9,
- 0x76,0x23,0x47,0x63,0x85,0x96,0xfe,0x68,0x66,0x7d,0xa4,0xe4,0xf2,0x3a,0x71,0xee,
- 0x58,0x7e,0xcd,0x7b,0xf0,0x26,0xf7,0x7f,0x61,0xdf,0x2f,0x9e,0xc4,0xfd,0xe6,0x37,
- 0x4a,0x25,0xd1,0x36,0xa1,0x3e,0xf6,0x0c,0xaa,0x8f,0xd4,0xbd,0xf8,0x1c,0x4f,0xa1,
- 0x1d,0xd7,0xa9,0x15,0x7e,0xdd,0x6c,0x14,0x32,0x62,0xf8,0x8d,0xbc,0x2d,0xc5,0x27,
- 0x2f,0xab,0x8f,0x84,0xbf,0xba,0xd9,0x6b,0x29,0xb4,0x33,0x40,0x44,0xab,0xe1,0x30,
- 0x26,0xd9,0x11,0x71,0xf8,0x87,0x10,0x18,0xa4,0xf3,0xe3,0x52,0xf5,0x91,0xe6,0x1a,
- 0x4b,0x87,0x98,0x57,0x7a,0xc7,0x04,0x36,0xec,0x7d,0x16,0xed,0x72,0xe9,0x4b,0x1d,
- 0xc5,0xef,0x6b,0x3d,0x94,0x1a,0xbf,0x91,0x69,0xe1,0x71,0xfc,0x23,0xd0,0xfc,0x3b,
- 0x89,0xe4,0xf1,0xe8,0x1b,0x1a,0x4d,0xb4,0xf3,0x3e,0x6c,0x88,0xae,0xea,0xc1,0x83,
- 0xe9,0x82,0x0d,0xe1,0x32,0x23,0xa7,0x9e,0x69,0xc2,0xd8,0x7e,0x90,0xc1,0x6e,0x37,
- 0xd9,0xc5,0x5d,0x4c,0x66,0x2d,0xdc,0xec,0x8e,0x41,0xf1,0xe1,0x61,0x5d,0x61,0x8c,
- 0xb3,0xad,0xb4,0x74,0xdc,0xc2,0x4f,0x82,0x3c,0x9a,0x0f,0x38,0xa4,0x94,0xa0,0x35,
- 0x61,0xf6,0x7f,0xef,0xa7,0xfe,0x89,0xd4,0xcf,0x4b,0xbb,0xb2,0xc7,0xec,0x0f,0xa2,
- 0x68,0xe9,0xfa,0xd8,0x57,0x8d,0xbe,0xef,0x67,0xf9,0x43,0xa3,0x6c,0x8f,0x68,0x0e,
- 0x6a,0x96,0xd7,0xe3,0xc0,0xec,0x6f,0x55,0x37,0x01,0xff,0x98,0x4e,0xd2,0x13,0xe2,
- 0xed,0x70,0x89,0xd8,0x54,0x43,0x9c,0xae,0x76,0x42,0x7e,0xd0,0xbe,0x42,0xf4,0xea,
- 0x97,0x7c,0xe5,0xfd,0xf6,0xcc,0xf8,0x9f,0x5f,0x50,0x7d,0x80,0x83,0xca,0x93,0xec,
- 0x00,0x6a,0x47,0x57,0xd1,0xd2,0x76,0x5b,0x55,0xd6,0x3e,0x3e,0xa7,0x6e,0x6a,0x8b,
- 0xaf,0x84,0xbf,0xe8,0x9d,0xd3,0x63,0xcb,0xec,0x0f,0x62,0xee,0x87,0x1e,0x45,0x0b,
- 0x20,0xf0,0xd3,0xa9,0x30,0x02,0xdb,0x58,0xb3,0x10,0x71,0x32,0x8a,0x59,0xa0,0x54,
- 0xa6,0x1e,0x39,0xb3,0x3f,0xc8,0x68,0x37,0xb4,0x1d,0x01,0x8f,0xfa,0x02,0xb4,0x4e,
- 0x36,0xdb,0xc2,0xee,0x9b,0x32,0x67,0x15,0xc4,0xcc,0x7e,0x73,0x6e,0x23,0xa3,0x3e,
- 0x36,0xf5,0x87,0x35,0xd7,0xe7,0x51,0x9c,0xf6,0x27,0xe6,0xdb,0xb3,0xbc,0x31,0x7f,
- 0xa7,0xfa,0x3c,0xf7,0x85,0xdd,0x2d,0x62,0x71,0xdd,0x39,0xa8,0x30,0xeb,0x67,0x8e,
- 0xd7,0x17,0x1a,0xc5,0x3f,0x44,0x33,0xee,0xa7,0x8d,0x17,0xd8,0x7c,0x2a,0xff,0x3c,
- 0x5c,0x94,0xaa,0xf4,0xe5,0x6f,0xe1,0x79,0xf9,0x33,0xbb,0xac,0x3f,0xc8,0xce,0x02,
- 0xb3,0xec,0x52,0x4c,0xf1,0xf0,0x23,0x82,0xaf,0xde,0x01,0xa2,0x47,0x3c,0xec,0xf5,
- 0x85,0xf2,0xb6,0x8a,0x9a,0x71,0x0e,0x3a,0xe8,0xfe,0x99,0xf5,0xb1,0xe9,0xf9,0xdd,
- 0x31,0x56,0xa9,0x6d,0x8e,0x53,0xe1,0xe2,0x48,0x95,0xb4,0x41,0xf7,0x86,0x6d,0x57,
- 0xb0,0x2f,0xc3,0x8b,0x92,0xab,0x27,0x77,0x62,0x7d,0x24,0x3a,0x2f,0xb6,0x38,0x73,
- 0xc0,0x63,0xef,0x69,0x61,0x65,0x7a,0xc4,0xc1,0xa3,0xbc,0x64,0x00,0xf1,0x41,0x0e,
- 0xfe,0x04,0xb4,0x3e,0xc3,0x13,0xf0,0x4f,0x69,0x72,0x6a,0x2d,0x9b,0x11,0x98,0x14,
- 0x17,0xda,0xa6,0x4d,0x5d,0x32,0x43,0x6b,0xe0,0xf1,0x8f,0x96,0x1c,0x67,0x33,0xf8,
- 0xde,0xfa,0x22,0xaa,0x17,0x7d,0x7c,0x22,0xfe,0xe9,0xce,0x73,0x65,0xe7,0xe9,0xd5,
- 0x11,0xef,0xdf,0x2f,0x2f,0x13,0xf3,0x0c,0x6e,0xcc,0xaf,0xcd,0x9b,0xa6,0x30,0x4e,
- 0xd4,0x8d,0xdd,0x3b,0xa1,0x3e,0xd2,0x4f,0xc8,0x8d,0x95,0x14,0x3f,0x1e,0x3a,0xa7,
- 0x56,0xd5,0x9b,0x89,0xa8,0x08,0x84,0x6a,0xb2,0xd2,0x88,0x68,0x52,0x06,0xfe,0x91,
- 0xce,0x49,0x38,0xff,0xb8,0x78,0x34,0xfa,0x52,0xbb,0xcf,0xf0,0xc4,0x58,0xe9,0x1d,
- 0xfb,0x98,0x2f,0x49,0xfd,0x59,0xe0,0x88,0x86,0x9f,0x66,0xa1,0x68,0xc5,0x3f,0xd3,
- 0x47,0xf1,0x0f,0xbb,0x9d,0xbd,0x8a,0xd6,0x96,0x1c,0x62,0xd3,0xf9,0x5e,0xaa,0x4f,
- 0x82,0x86,0x15,0x3c,0xe9,0x36,0x7f,0xea,0x18,0xff,0xbe,0x5d,0xa3,0xf8,0xe7,0x6f,
- 0xdc,0x81,0x47,0x85,0xf5,0xdb,0x6a,0x93,0x39,0xb5,0xb6,0x19,0xf2,0xae,0xc8,0x4c,
- 0x44,0x80,0xce,0xdf,0x09,0x4f,0xc6,0x4a,0x53,0xf5,0x21,0xc7,0xd6,0x3f,0xb8,0x2d,
- 0x25,0x7f,0x9a,0xbd,0xbe,0x65,0x05,0x0d,0xe0,0x1e,0x16,0x88,0x4f,0xdb,0xdd,0xdd,
- 0x76,0x6b,0x70,0x21,0x1b,0xe4,0x8f,0xa5,0x32,0x76,0xb7,0x5e,0x86,0x7f,0xf0,0x7d,
- 0xdb,0xe1,0x30,0xdc,0x10,0xcb,0x49,0xe6,0xbb,0xe1,0x62,0xfc,0x3a,0xaa,0x0f,0x30,
- 0x32,0x16,0xff,0x73,0x39,0xfe,0x71,0x44,0xc5,0xb8,0x3a,0x00,0x7b,0xa4,0x3c,0x93,
- 0x06,0xd1,0xee,0x81,0xb9,0x5c,0x38,0x01,0x6b,0xfe,0x42,0x7d,0xa4,0x51,0xfd,0x58,
- 0xdd,0x26,0x8d,0xb0,0x05,0x8b,0xb2,0x55,0xb1,0x44,0x1a,0x01,0x9f,0x99,0x0f,0xae,
- 0x9f,0x62,0xfe,0x5a,0xfb,0x5f,0xc2,0x3f,0x29,0x18,0x83,0x03,0x7b,0x8c,0xdc,0xa6,
- 0x26,0xed,0xc3,0x3e,0x84,0x26,0xa1,0x6c,0x55,0xee,0xe5,0xf5,0x91,0xc6,0xe7,0xcf,
- 0x32,0x0b,0x45,0xe2,0xfc,0x55,0xe6,0x15,0xed,0x29,0x18,0x0d,0x25,0x1a,0xdb,0x0f,
- 0x29,0xfc,0xe3,0x09,0x29,0x05,0xd9,0xdd,0x12,0xb9,0x81,0xf6,0x51,0x99,0xe8,0x5d,
- 0xc4,0x90,0xa8,0xd9,0x2f,0x9b,0x89,0x72,0x39,0x56,0xfc,0xd3,0x99,0x3b,0xee,0xff,
- 0x8a,0xe3,0xdb,0x2d,0x48,0x15,0x8a,0xec,0x4c,0xb5,0x05,0x49,0x42,0xaa,0x62,0xd2,
- 0x44,0xfc,0x03,0xe4,0xf6,0x2a,0x36,0xeb,0x63,0x87,0xa6,0xdf,0x36,0xed,0xa4,0x7c,
- 0x41,0xbf,0x3a,0xe4,0xe8,0xab,0xfe,0x5c,0xfa,0x71,0x0a,0x11,0xa5,0xf1,0x4f,0x4b,
- 0x56,0x0a,0x0f,0xe4,0x91,0x58,0xdb,0x07,0xfe,0xa0,0xb4,0xb5,0x9e,0xca,0x4a,0x7b,
- 0xa9,0xbf,0xc6,0xfc,0xe0,0xa1,0x70,0x79,0x08,0xf1,0xcf,0x07,0x13,0xea,0x23,0x95,
- 0xc9,0xee,0xb5,0x0f,0xc4,0xa1,0x53,0xa5,0xb2,0x90,0xb6,0xa2,0x50,0x34,0xd0,0x0a,
- 0x8a,0xe1,0x44,0xfc,0x13,0xa6,0xd6,0x69,0xd6,0xfe,0xb0,0x92,0x89,0x7f,0x82,0xf2,
- 0xd4,0xc5,0xc7,0xf4,0x67,0x49,0x6d,0x91,0xff,0x62,0x6d,0xd6,0xec,0x10,0xda,0xfb,
- 0x12,0xaf,0xd7,0xdd,0x7f,0xa1,0x3e,0x12,0x78,0x16,0xc9,0x5b,0x59,0x1b,0xfc,0x4a,
- 0x9a,0xab,0x4f,0xed,0x0b,0xcc,0x97,0xef,0x87,0x2f,0x87,0x95,0xbe,0xa9,0x25,0x50,
- 0x8f,0x82,0x5a,0xce,0xa8,0x8f,0x34,0x79,0x14,0xdf,0xb6,0x7c,0x9b,0x06,0x95,0xba,
- 0xfc,0x40,0x71,0x09,0x6b,0x62,0x73,0x02,0x88,0x70,0x48,0x62,0x3f,0x42,0x44,0xd6,
- 0xc4,0xfa,0x48,0xd4,0x04,0xa4,0x3a,0xf5,0x0f,0xef,0x2f,0x14,0x29,0xa3,0x70,0x81,
- 0xbe,0x3c,0x96,0xdf,0x6d,0x3a,0xc2,0xe6,0xfe,0x85,0xfe,0x20,0xb4,0xfe,0x5e,0xa0,
- 0x6a,0x2d,0xb9,0x46,0xf1,0x90,0xdc,0x0b,0x55,0xb8,0xc7,0xcd,0xf8,0xab,0x0e,0x96,
- 0xc9,0xff,0xac,0x4d,0xd5,0x07,0x10,0xa9,0xcd,0xdf,0x68,0x37,0xd8,0x1e,0xd8,0x00,
- 0x53,0x69,0x70,0x56,0x3d,0x0c,0xc5,0x4f,0x29,0x97,0xd7,0x47,0xf2,0x18,0xd3,0xbc,
- 0x36,0x7d,0x34,0xbc,0xd8,0x45,0xfa,0xe8,0x0e,0xdc,0xb9,0x38,0x6d,0x34,0x5e,0x2e,
- 0xb3,0x3e,0x12,0x9e,0xdf,0xde,0xe6,0x61,0x46,0x81,0x88,0x74,0x6c,0x03,0xbd,0xea,
- 0x7a,0x98,0x9d,0x94,0xeb,0x9c,0x6f,0x6b,0xeb,0x67,0x95,0xa6,0xf8,0x9f,0xb1,0xfb,
- 0xb7,0x9b,0xf8,0xe7,0xc6,0x01,0xc7,0x1a,0x16,0x00,0x83,0xcf,0xd3,0xdc,0xc1,0xea,
- 0x37,0xa0,0x9b,0xdf,0xa8,0xa1,0x7e,0x39,0xc8,0x7e,0xd3,0x73,0xe3,0x84,0xfe,0x20,
- 0x84,0x7f,0x04,0xff,0x4b,0x8e,0x05,0x8c,0xca,0xfc,0x52,0x3d,0xde,0xea,0x14,0xad,
- 0x31,0x89,0x68,0x8d,0x73,0x2b,0xc9,0x5f,0x6c,0xc1,0x3f,0xa8,0xbf,0x54,0xb3,0x3e,
- 0xe4,0xaf,0x22,0x77,0xeb,0x83,0x31,0x7f,0xc9,0xda,0x60,0xb1,0xaf,0xa7,0xbb,0xfe,
- 0x87,0xda,0xa4,0x37,0x11,0x48,0x5c,0x4a,0x75,0x4c,0xb3,0xf6,0x87,0x35,0xf1,0xcc,
- 0x80,0xf2,0x63,0x96,0x07,0x0d,0xbc,0x74,0x20,0x7a,0x3d,0xcb,0xab,0x59,0xcf,0xe7,
- 0xf7,0x28,0xf3,0xd8,0x51,0xbe,0x57,0x2d,0xea,0x9e,0xd0,0x1f,0x24,0x85,0x7f,0x9a,
- 0xef,0x66,0xaa,0xdc,0xc6,0x3c,0xaa,0xbc,0x68,0x0e,0xdc,0x46,0x71,0xde,0x4b,0xbf,
- 0xe6,0xea,0x8b,0xef,0x4d,0x21,0xa8,0x57,0xd2,0xfc,0xcf,0x68,0x7d,0x92,0xbf,0x45,
- 0xb1,0xa3,0x52,0x34,0x4b,0x94,0xe4,0x8f,0xd8,0x6b,0x86,0x51,0xbd,0x64,0xf6,0x43,
- 0xc7,0xc1,0xf1,0xf1,0xfd,0x59,0x3b,0x5a,0x1f,0xd2,0x71,0x5a,0xa1,0xfa,0xf3,0x95,
- 0x20,0x47,0x23,0x1a,0x8b,0xbe,0xf7,0x99,0x84,0xfa,0xfd,0x8f,0xea,0x25,0xd4,0x2f,
- 0x4a,0x22,0xff,0xf0,0x04,0xfc,0x83,0x42,0xb5,0x53,0x34,0x07,0xc9,0xbc,0x0e,0x73,
- 0x7d,0x2a,0x0c,0x47,0x3c,0xff,0x14,0x1f,0xe5,0x7f,0xd2,0xfd,0x61,0x8d,0x74,0x7d,
- 0x80,0x24,0xc1,0x00,0xb4,0xa7,0x9d,0x09,0x1c,0x5c,0x47,0xfb,0xa7,0x93,0x7e,0x1a,
- 0xc2,0x9f,0xe2,0x52,0x26,0xfe,0x31,0x83,0x76,0x06,0x65,0x53,0x91,0x25,0x02,0x83,
- 0xf2,0x6e,0x86,0x1f,0xfa,0x09,0xf6,0x11,0xbc,0x20,0x94,0x85,0x95,0x44,0xf6,0x65,
- 0xfd,0x41,0x48,0x29,0x53,0xe2,0xea,0x9d,0xe4,0xd6,0x49,0x22,0x7e,0x30,0xfd,0x3b,
- 0x1f,0x69,0xa3,0xa5,0x72,0x2e,0xeb,0x0f,0xd2,0xa3,0xf8,0x9c,0xbd,0xfa,0x6e,0xcd,
- 0xd3,0x2b,0x2f,0x60,0xcb,0x42,0xbb,0x05,0x57,0x9f,0x5c,0xe2,0xec,0xd1,0x68,0xe9,
- 0x7e,0x66,0xe5,0x7f,0xb8,0xd9,0x1f,0xa4,0xaa,0x27,0xef,0xee,0x86,0xb8,0x36,0x5c,
- 0xe0,0x2f,0xb4,0x47,0xc4,0x64,0x6c,0x58,0x7f,0x6e,0x32,0x8a,0x9d,0x01,0xfe,0x67,
- 0x3c,0x2f,0x57,0x27,0x70,0xb3,0x8f,0xef,0x4f,0x13,0xff,0xf8,0xbb,0xcd,0xb6,0xa7,
- 0xe7,0xc2,0x55,0xdd,0x57,0x3f,0x27,0x0e,0xf6,0x9c,0xab,0xa5,0xb6,0x9e,0xc5,0xc3,
- 0xf1,0xd1,0xd6,0x57,0x69,0xfc,0x43,0xfe,0xaf,0x0b,0xbc,0xea,0x70,0xee,0x90,0x58,
- 0x29,0xbf,0xe6,0x2a,0x37,0x64,0x43,0xac,0x8b,0xf5,0x7a,0xcb,0x6d,0xf6,0x83,0xd5,
- 0x17,0x71,0xa1,0xca,0xb5,0xdc,0x6e,0x6b,0x7f,0xd8,0xc2,0x4f,0x60,0x1f,0x9f,0x3b,
- 0x64,0xa7,0x22,0xdc,0x4d,0x5e,0x9b,0x21,0xb7,0xb0,0x6b,0xf4,0xa6,0x3a,0x14,0x3b,
- 0x51,0x76,0x47,0xbc,0x53,0xc6,0x13,0xf4,0x64,0x46,0x7f,0xd8,0x8d,0x24,0x7f,0x8c,
- 0x9c,0xf9,0xec,0x7e,0xa8,0x97,0xdd,0x94,0x2d,0x48,0xe7,0x4b,0xb3,0xd9,0xa4,0xec,
- 0xde,0x2d,0x09,0xd5,0xc5,0x72,0xb4,0xbc,0x8e,0x8c,0xf8,0x1f,0xaa,0xa6,0x28,0x13,
- 0xed,0x56,0xaf,0xce,0x31,0xdc,0x1d,0xbe,0x27,0x21,0xda,0xec,0x0a,0xdb,0xb6,0xb3,
- 0x3b,0xa8,0x34,0x41,0x38,0xda,0x9e,0xdd,0x39,0x2e,0x1f,0x16,0x4d,0x19,0x44,0xfb,
- 0xd1,0x4c,0xf3,0xdf,0xcf,0x5e,0xe3,0xcf,0x1b,0xf6,0x63,0x0d,0xef,0xb3,0x1e,0xc3,
- 0x77,0x77,0x5e,0x0b,0x55,0x90,0xe0,0x5e,0x2d,0xb7,0xb3,0x21,0xa3,0x3f,0x2c,0x5c,
- 0x30,0xaa,0x8c,0x3c,0xaf,0x78,0x2f,0x5c,0x60,0xb8,0x5b,0x5a,0x44,0x9d,0x24,0x4c,
- 0x04,0xe5,0xed,0x79,0xf8,0x1c,0x5e,0x04,0x47,0xe2,0x6f,0x6b,0xad,0xf8,0x47,0x1d,
- 0x81,0x7b,0xc9,0xa9,0xba,0x51,0x47,0xeb,0xcc,0x98,0x9e,0xa8,0x2e,0xa5,0xb4,0xcd,
- 0x9b,0xec,0xd4,0xff,0x74,0xb8,0x10,0xe5,0x7f,0xa2,0x79,0xfe,0xb8,0xfc,0x31,0xc8,
- 0xff,0xb5,0x62,0xee,0x31,0x65,0x98,0xf9,0xf1,0x45,0xe6,0x22,0x7a,0x11,0x56,0x43,
- 0xf4,0x6b,0xae,0x3a,0x1e,0x73,0xcd,0xd5,0x46,0x78,0xd9,0x6d,0xf2,0xf3,0x42,0x9a,
- 0xff,0x31,0xc8,0xff,0xc5,0x3d,0x49,0x65,0xa1,0x6b,0xb3,0xb6,0x2b,0x80,0x2f,0xae,
- 0xa1,0xf5,0xb4,0x61,0xdb,0xaa,0x18,0xd7,0xd8,0x32,0x8d,0x32,0x28,0xe5,0x84,0x2b,
- 0xdd,0x1f,0x76,0x58,0xfd,0xd6,0x58,0x90,0xf3,0x0c,0xe1,0x59,0x1c,0xb8,0xbf,0xe7,
- 0xbc,0x15,0xd6,0xb6,0xae,0xd4,0xe4,0x15,0xec,0x5b,0x74,0xa5,0xc4,0xfd,0xe3,0x8c,
- 0xfe,0xb0,0xcb,0x50,0xba,0x7a,0x0e,0x3a,0x7c,0x5f,0xda,0xd8,0xf8,0x27,0xa8,0xec,
- 0x09,0x16,0x29,0x92,0xd4,0x25,0x69,0xba,0x1d,0x94,0x65,0xea,0x67,0x78,0xe2,0xec,
- 0xf3,0x44,0x4b,0x7f,0xd8,0x29,0x29,0x7c,0x38,0x69,0xe8,0x4b,0x17,0x68,0x70,0xd0,
- 0x71,0x22,0xff,0x0c,0xfb,0x17,0xcd,0xf4,0x68,0xec,0x87,0x4f,0x55,0x04,0x8a,0xa7,
- 0xab,0xd3,0xf5,0x01,0x28,0xfe,0x07,0xa5,0xf7,0x30,0xa2,0x1d,0x7b,0xf4,0x10,0x1d,
- 0xb4,0x61,0x71,0x0d,0x5c,0x92,0xca,0x89,0x36,0xf1,0x08,0xe7,0xb9,0x4f,0xf0,0x24,
- 0x44,0x5b,0x1a,0xff,0x14,0x52,0x7f,0x10,0xed,0x8d,0xdc,0x7f,0x7c,0xec,0x76,0xb2,
- 0xb6,0x7a,0x94,0xb0,0x4d,0xc5,0x2b,0xc5,0xdc,0x1d,0xb2,0x4d,0xcf,0xfa,0x15,0xec,
- 0x00,0x04,0x42,0x1d,0x69,0x7e,0x1b,0xf1,0xcf,0xb3,0xbc,0x28,0x19,0xbd,0x87,0xcd,
- 0xe8,0x35,0x0b,0x65,0x2f,0x64,0xdf,0x9a,0xbe,0x7b,0xdd,0xca,0xb0,0xec,0x46,0x09,
- 0xdc,0xc6,0x8b,0xb4,0xe8,0xc2,0xc5,0x7d,0x56,0xff,0x17,0xae,0x67,0xdc,0xc8,0xf1,
- 0xb2,0x65,0xd4,0x68,0xcf,0x50,0x34,0xa7,0xb4,0x68,0x9f,0xae,0xd5,0xc9,0x57,0xae,
- 0xf2,0x90,0xab,0xc8,0x90,0xe7,0x2f,0xb1,0xc4,0xff,0x4c,0x19,0x80,0xb3,0x71,0x1f,
- 0x69,0x07,0x77,0xaa,0x50,0xf6,0x49,0xe5,0x1e,0xb8,0x98,0xd8,0xfd,0x94,0xfd,0x84,
- 0x88,0x40,0xa8,0xa5,0x3c,0x6a,0xef,0xb7,0xd6,0x07,0x20,0xff,0x97,0x5e,0xa1,0x6e,
- 0x86,0x7c,0x2a,0x8b,0x9d,0xe2,0x7f,0xdc,0xb8,0x7f,0x04,0x32,0xcc,0x53,0x50,0x21,
- 0xc2,0x9c,0x13,0xeb,0x03,0x84,0x1d,0x8f,0xe4,0x97,0xe8,0x87,0xb4,0x0e,0x7d,0x99,
- 0x19,0xf6,0xcc,0xbd,0xdf,0xa7,0xb6,0xef,0xdc,0x2c,0xa4,0x5c,0x60,0xad,0x8f,0x04,
- 0xab,0x61,0x97,0x86,0x68,0x67,0xbb,0xb8,0x18,0xde,0x34,0xfd,0x59,0x66,0xa1,0x80,
- 0xf7,0xc8,0xb1,0x85,0xf6,0xa0,0x56,0xa6,0xb7,0xc7,0xc4,0x74,0x7d,0xec,0x85,0x82,
- 0x59,0x4f,0xa0,0x46,0xd9,0x46,0x7c,0x91,0x3c,0x36,0xbf,0x30,0x35,0x10,0x9a,0x39,
- 0xe1,0x9f,0xec,0xbc,0x0c,0xff,0xd7,0x3e,0x72,0x6a,0x50,0xbd,0xe8,0x2d,0xba,0x46,
- 0xdd,0x31,0xcc,0xb0,0x67,0xb3,0x51,0x88,0x4a,0xf8,0x47,0x2e,0x60,0xb6,0xf1,0xfc,
- 0xdc,0x35,0xa3,0xfd,0x41,0x36,0xf3,0x49,0xa9,0x6e,0x68,0xf6,0x14,0xed,0xe3,0xe2,
- 0x1e,0x94,0x3f,0x42,0x0f,0xed,0x1f,0xae,0xe4,0x65,0xfa,0xbf,0xc0,0x1f,0xba,0xba,
- 0x40,0x7c,0x1c,0x2e,0x2c,0xf2,0x87,0xe6,0x1e,0x33,0xeb,0x03,0x98,0xfc,0x4f,0x3f,
- 0xfc,0x0b,0x75,0x0c,0x39,0x96,0xff,0x84,0x6a,0xf1,0x7f,0x09,0x17,0xa0,0x2a,0x88,
- 0xbb,0x8b,0xa2,0xcb,0xca,0x83,0x8e,0x47,0x1a,0x4a,0xb4,0x0b,0x50,0xbe,0x68,0x59,
- 0xdf,0x4b,0xf3,0x17,0x5d,0x90,0xcb,0x43,0x8e,0x33,0x96,0xfe,0xb0,0xe4,0xff,0x42,
- 0xfc,0x23,0x4d,0x6b,0xcc,0xc6,0x81,0xea,0xb2,0x29,0x8d,0x6c,0x07,0x74,0xd6,0xb5,
- 0x4e,0x5f,0xd2,0x68,0xd3,0xa8,0x3e,0x52,0xb4,0x79,0xad,0x33,0x2f,0x5d,0x1f,0x00,
- 0x1a,0x61,0x87,0xe0,0xd1,0x9b,0x27,0x2f,0xee,0xd5,0x77,0x41,0x7c,0x99,0x62,0xe2,
- 0xbd,0xdc,0xef,0x57,0x53,0x7f,0x10,0xbe,0xc3,0xad,0x05,0x15,0x27,0x7e,0xaf,0xb1,
- 0xf5,0x37,0xfd,0x5f,0x26,0x9e,0x5c,0xdc,0x2f,0xec,0x13,0x66,0xe9,0x4b,0xb7,0xb2,
- 0xc7,0xf1,0xca,0xf7,0xff,0x6a,0xc9,0x56,0x56,0x02,0x2f,0x10,0xc3,0xa6,0x5a,0xfb,
- 0xc3,0x4e,0x4e,0x05,0x2d,0x2b,0xb1,0xec,0xfe,0x42,0xb3,0x10,0x28,0x95,0x3d,0x1f,
- 0xf9,0x4e,0xc5,0x4a,0xbb,0xe9,0x11,0xe3,0xbe,0x10,0x9a,0x5a,0xee,0x09,0xfe,0xaf,
- 0xd1,0xb6,0xb0,0xa7,0xe3,0x15,0x66,0x5b,0xb4,0xd8,0x69,0x6a,0x9b,0x6b,0x5e,0xd1,
- 0x0e,0xd4,0x39,0xb6,0x5a,0xea,0x03,0x98,0xfe,0x2f,0xcd,0xcf,0x10,0x66,0xb7,0xa2,
- 0x29,0xe4,0xa3,0x6e,0xbc,0x9a,0x3c,0x0c,0xbe,0xe9,0xe4,0x08,0x0b,0xf7,0xd4,0xf9,
- 0xbc,0xf8,0x21,0xac,0xfd,0x61,0xdd,0x70,0xc0,0x98,0xdb,0x22,0x9f,0x14,0x17,0x52,
- 0xb4,0x4f,0x84,0xfa,0xc3,0xca,0x07,0xd0,0x42,0x42,0xc1,0x52,0xc1,0x36,0x41,0x71,
- 0x5c,0xfe,0xa8,0x7a,0x43,0x86,0xff,0x2b,0x01,0x9e,0xb8,0xcd,0xcb,0xa2,0xb0,0x3b,
- 0x65,0x8f,0xdb,0x61,0x97,0x2d,0x3b,0x24,0x7b,0x6d,0x93,0x84,0x7a,0x3d,0x9e,0x94,
- 0x17,0xb2,0x74,0x7f,0x58,0xae,0xde,0x2e,0xec,0x91,0x3d,0x54,0x84,0xcd,0x06,0x0f,
- 0xc9,0x45,0xe4,0x78,0x9d,0x0e,0x7b,0x60,0x26,0x31,0xd8,0x57,0x50,0x07,0xd5,0xf7,
- 0x70,0x10,0x1f,0xef,0x0f,0x4b,0xfe,0xaf,0x33,0xfc,0xc6,0x78,0xde,0x42,0xf1,0x11,
- 0x76,0x89,0xcf,0x23,0xb4,0x33,0x03,0x2e,0x44,0xfe,0x3e,0xec,0x59,0x23,0xfa,0x84,
- 0xd7,0x28,0x7f,0x3f,0xa3,0x3f,0x2c,0xe2,0x81,0xe1,0xb1,0xea,0x40,0xff,0x77,0x4a,
- 0xbb,0x0d,0xc2,0x79,0xe1,0x86,0xd1,0x44,0x15,0x53,0xbf,0x57,0x5b,0xfa,0xc3,0x4a,
- 0x54,0xdf,0x66,0x77,0xdc,0x3e,0x22,0xde,0x03,0x7f,0xa0,0x6a,0x48,0xe4,0x08,0x43,
- 0x44,0xd4,0x66,0x27,0xff,0x17,0xc5,0x6f,0xe0,0xc0,0xd2,0x1f,0x16,0xe5,0x0f,0xd5,
- 0x37,0xc8,0xfd,0x3a,0x7b,0x13,0xd6,0x7a,0xf1,0xf9,0xef,0x62,0xd3,0xb5,0xe7,0xe0,
- 0x07,0x76,0x14,0x3b,0x9f,0xe3,0xf3,0x17,0x1f,0x44,0x20,0x37,0xa1,0x3e,0x00,0xcc,
- 0x06,0x39,0xec,0xea,0x81,0x9f,0xc2,0x4a,0xa2,0xa9,0x6f,0x47,0x79,0x55,0xca,0xa3,
- 0x75,0x68,0x66,0x3e,0xa9,0x16,0xf5,0xc9,0x77,0x31,0xc8,0xf0,0x7f,0x75,0x20,0x28,
- 0x97,0xc1,0xd9,0x23,0x45,0x38,0x9a,0x15,0xf3,0x99,0x23,0xda,0x11,0xf3,0x1c,0x94,
- 0xe7,0x3b,0x7b,0xc4,0xa7,0x09,0x31,0xb6,0xa0,0x84,0x1f,0x9b,0x4f,0xfe,0xaf,0x61,
- 0x79,0x21,0x7e,0x1d,0xb1,0x76,0xfa,0x5b,0xf6,0x0e,0x2a,0xc4,0x77,0x27,0x8c,0xf4,
- 0xf9,0xef,0xf6,0xec,0xc7,0xfd,0x30,0x10,0xa4,0x8e,0x18,0xcd,0x96,0xfa,0xd8,0x02,
- 0xae,0x8f,0x3e,0x2b,0x36,0x97,0xbc,0xf3,0x67,0x69,0x23,0x75,0x50,0x59,0x3f,0xea,
- 0x6f,0xb5,0x5b,0x3c,0x09,0x2d,0x45,0xfe,0x98,0xa3,0xcd,0x52,0x1f,0xb2,0x48,0xdd,
- 0x2f,0x9d,0x17,0x7c,0xdc,0x6e,0x88,0x85,0xf0,0x09,0x94,0x1b,0xa2,0x57,0xac,0x4c,
- 0xf1,0x69,0x44,0x8c,0x0c,0x43,0x79,0xff,0xb2,0x3e,0x25,0xdd,0x1f,0x96,0xe2,0x7f,
- 0x12,0x11,0x57,0x02,0xd1,0x4b,0x3b,0x6c,0x16,0xc8,0x7e,0x37,0xdb,0x9c,0x95,0x15,
- 0x29,0xd4,0xa8,0x6b,0x1f,0x37,0x11,0xb5,0x3b,0x03,0xff,0x3c,0x6f,0xb8,0x5a,0xa3,
- 0x54,0x84,0x23,0xae,0x8e,0xce,0x7f,0x21,0x5a,0xd6,0xaa,0x24,0x02,0x54,0x41,0x11,
- 0xd5,0x59,0x67,0xc4,0x52,0x1f,0xa0,0xc0,0x2e,0x25,0xa8,0x48,0x0b,0x55,0xdf,0xe2,
- 0x9c,0xca,0x02,0x30,0xaa,0x18,0xe0,0x01,0x93,0x08,0xa2,0xd2,0x01,0xb8,0x51,0x59,
- 0xba,0x3e,0xc0,0xfd,0x54,0x1f,0x00,0xcd,0x6a,0xaa,0x87,0x4f,0xf5,0xc3,0xcd,0xb6,
- 0xa4,0xa6,0x45,0x90,0x18,0x25,0xa2,0xed,0xaa,0x08,0xe3,0xfd,0x61,0xe3,0x53,0xa8,
- 0x3e,0xc0,0x8b,0x14,0x2d,0x36,0x9c,0xca,0x6f,0xa2,0x30,0xa7,0xf3,0x29,0xd8,0x63,
- 0x12,0x41,0xb0,0x39,0xb3,0x3f,0x2c,0x82,0x1c,0x0d,0xd5,0x56,0x21,0xda,0x17,0xff,
- 0xa2,0xcd,0x4f,0xe6,0xbd,0x27,0x26,0xf4,0xd7,0xc0,0x2f,0x6f,0x6c,0x2b,0x76,0xc1,
- 0x87,0x7c,0x5e,0xdc,0x3e,0x10,0xc8,0xec,0x0f,0xf2,0xbc,0x3e,0xf7,0x15,0xa5,0x85,
- 0x15,0x07,0x5f,0xe8,0x73,0x19,0xf6,0x5d,0x4e,0x4d,0x6d,0x8e,0x95,0xb5,0x11,0x48,
- 0xa4,0xfe,0x65,0x71,0x5b,0xbb,0xcd,0xda,0x1f,0xa4,0x37,0xa7,0xa3,0xd6,0x8c,0xef,
- 0x05,0xb9,0x93,0xea,0x23,0x25,0x58,0x23,0x37,0x2b,0xd2,0x6b,0xb8,0x6d,0x9a,0x69,
- 0x29,0xb4,0x8c,0xfe,0x20,0x3b,0xe1,0xf9,0x08,0xaa,0xad,0x2d,0x28,0xd6,0x5e,0xe0,
- 0x5a,0x32,0xb8,0x96,0x95,0xb0,0x66,0xc8,0x33,0xe4,0x76,0x06,0x2a,0xde,0x3f,0x61,
- 0xcb,0xec,0x0f,0x32,0x48,0xd1,0x80,0x5d,0x9b,0xb7,0x89,0x45,0xf2,0xb9,0x9e,0x0e,
- 0x2a,0x0b,0xd9,0x0e,0x47,0x22,0x95,0xad,0xd2,0xd3,0x62,0x89,0xfa,0x7e,0x97,0x2f,
- 0xee,0x89,0x0b,0xd6,0xfe,0x20,0xfb,0xd1,0xfa,0x36,0xe3,0x7f,0xee,0x42,0xfd,0x7e,
- 0x83,0xb1,0x39,0x2a,0x26,0xf5,0x4b,0xaa,0x7f,0x8b,0x23,0xb9,0xf4,0xb3,0xc0,0x25,
- 0xe1,0x45,0xe3,0x32,0xff,0xd7,0x88,0xde,0x41,0x45,0x0e,0x67,0xb2,0xc3,0x93,0x7d,
- 0xc6,0xc6,0x8e,0x6b,0xec,0x94,0x11,0xd6,0x99,0xd7,0x56,0x9c,0x94,0x8f,0x40,0x45,
- 0x6c,0x59,0x5c,0xc9,0xf4,0x7f,0xed,0x83,0xe2,0x33,0x28,0x5d,0x4b,0xe4,0x86,0x90,
- 0x2b,0x29,0x57,0xba,0x4a,0xa0,0xb9,0x6e,0x56,0x02,0xb7,0x4d,0x12,0x9a,0x4f,0xcf,
- 0xdf,0x96,0xeb,0x9e,0xd0,0x1f,0x24,0x41,0xec,0x87,0xea,0x42,0xf0,0xcd,0xb5,0xcf,
- 0xe6,0x4c,0xc7,0x65,0x89,0xd4,0x78,0xfa,0x6c,0xf5,0xaf,0x18,0xce,0x06,0x70,0x7b,
- 0x83,0xee,0x09,0xfd,0x41,0xf6,0x6e,0x2d,0x7a,0xcf,0x7d,0x9c,0xd9,0x7a,0xee,0x8f,
- 0x17,0x7d,0x34,0x67,0x4d,0x64,0x6a,0x60,0x1d,0x9f,0x99,0x5c,0x12,0xcc,0x7e,0x4b,
- 0x76,0xf0,0x6b,0xb4,0x9c,0xef,0x45,0xac,0xfd,0x41,0xec,0xfa,0x9f,0x74,0x5f,0xbf,
- 0x7d,0x9a,0x98,0xc7,0x5e,0x8a,0x27,0x4e,0xe4,0xc9,0x36,0xc6,0x23,0x7c,0x7a,0x7f,
- 0x9e,0x22,0xbe,0x0f,0x5d,0xb0,0xf0,0xb0,0x5d,0x13,0xb7,0x4e,0xf0,0x7f,0x55,0xbd,
- 0x6a,0x2e,0xc2,0x17,0x6a,0x95,0xf1,0xd5,0x2e,0x71,0xf8,0x56,0x6a,0x34,0x7c,0xbf,
- 0xe1,0x1c,0xa6,0xf8,0x79,0xee,0x08,0x4f,0xe8,0x0f,0xd2,0xc9,0x7d,0x7d,0x8e,0x44,
- 0xfe,0xa9,0xe8,0x11,0x3c,0x0a,0x08,0x23,0x3d,0xd4,0xc8,0x98,0x9b,0xf9,0x1a,0x68,
- 0x8f,0xc4,0x3d,0x9a,0x32,0x91,0xff,0x29,0x3a,0x88,0xd6,0x77,0x4f,0x60,0xbd,0xf4,
- 0x65,0x23,0xa8,0x53,0x99,0x11,0x10,0xb8,0x12,0x76,0xbd,0x4d,0xa1,0x89,0xdc,0x16,
- 0xb6,0xf0,0x3f,0x06,0x3c,0x5a,0xb0,0xdb,0x98,0x99,0x54,0x56,0xb0,0x77,0xd0,0x5e,
- 0x43,0x33,0x33,0xc8,0x66,0x48,0x8c,0xef,0x88,0x2b,0x41,0xf6,0x8e,0xba,0x97,0xcf,
- 0xd5,0xe4,0x01,0x36,0xc1,0xff,0x45,0x4d,0x18,0xe7,0xbb,0x7a,0xf1,0x35,0xdd,0xe1,
- 0x9c,0xca,0x59,0x0e,0xb9,0x41,0xd7,0x1a,0x15,0x37,0x7b,0x9d,0x2a,0x70,0x82,0x4d,
- 0x9b,0xc0,0xff,0x5c,0xec,0x5b,0xc0,0x1d,0xb5,0x8f,0x9d,0x82,0x57,0xf8,0x9c,0xa8,
- 0xe7,0xa3,0xa9,0x0b,0xf5,0x57,0xb4,0x72,0xee,0x78,0x4f,0x7c,0x8b,0x7f,0xc1,0xe7,
- 0xc6,0x77,0x86,0x2f,0xe3,0x7f,0x3a,0x29,0xfe,0xc7,0xd0,0xd1,0x1e,0x81,0x5b,0x1a,
- 0x9b,0x93,0xfa,0xb0,0xec,0x67,0x8e,0xc6,0x86,0x64,0x74,0x38,0xe4,0x9f,0xfe,0x97,
- 0xf8,0x1f,0x2a,0x8b,0xed,0xa1,0x44,0x06,0xf2,0x86,0x94,0xc0,0x53,0x71,0x5f,0xed,
- 0x66,0xaa,0xa8,0x7c,0xa8,0xc7,0x8c,0x8f,0x65,0x13,0xf9,0x9f,0x70,0x7b,0x0b,0x6a,
- 0xdb,0x37,0x09,0x96,0x90,0xda,0x6d,0xe2,0x0b,0x4c,0x3e,0x47,0x6e,0xea,0x71,0x85,
- 0x94,0x98,0x68,0xa9,0x8f,0x24,0x8c,0xfa,0xbf,0xa8,0x3f,0x1a,0xe1,0x1f,0x77,0xcc,
- 0x69,0xa7,0x46,0x45,0xe6,0x7c,0x61,0x74,0x90,0x9d,0xc9,0xff,0xe8,0x77,0x90,0xd3,
- 0x87,0xe2,0x85,0xb4,0xba,0xc2,0x02,0x96,0xe5,0x6c,0x62,0x25,0x54,0x2f,0xe8,0xa4,
- 0xd0,0x44,0x85,0x4a,0x54,0x16,0x98,0xe8,0xff,0xe2,0x76,0x8e,0xa7,0x3b,0x08,0x66,
- 0xd9,0x79,0x4d,0x3a,0x4c,0xf1,0x3f,0x71,0x91,0xea,0x43,0x76,0x50,0x20,0x90,0x05,
- 0xff,0xe4,0x9a,0xf1,0x3f,0xa1,0x49,0x43,0xca,0x49,0xe9,0x82,0xfe,0x13,0x7d,0x39,
- 0x15,0x4a,0xfa,0x03,0xe2,0x9f,0xcd,0xc7,0xa8,0x62,0x2d,0xbb,0x91,0x80,0xb4,0xb5,
- 0x3e,0x76,0x3f,0xfc,0xd8,0x5d,0xb5,0xf8,0xea,0x90,0xd8,0x06,0x87,0x60,0x9e,0xee,
- 0x78,0xe3,0x81,0x92,0xf0,0x05,0x7b,0x95,0xd9,0x1f,0xb6,0xf0,0x42,0xf6,0x2e,0xdd,
- 0xde,0x67,0xc5,0x3f,0xa3,0xfc,0x8f,0x59,0x0d,0x72,0x13,0xe2,0x1f,0x39,0xee,0xd4,
- 0xf8,0x30,0x94,0x71,0x59,0x10,0x6b,0xe3,0x9d,0xc4,0x78,0x4c,0xf4,0x7f,0xed,0xb0,
- 0x79,0x82,0xf8,0x52,0xc7,0xf4,0xfb,0x99,0x76,0xb3,0x4d,0x5d,0x27,0xa1,0xb0,0xf6,
- 0xd4,0xe0,0x89,0x93,0x62,0x4f,0x71,0xea,0xc7,0x64,0xb3,0xf8,0xbf,0x26,0xb7,0xc9,
- 0x28,0xed,0x8d,0x66,0x44,0x9b,0x91,0xfb,0x25,0x57,0x30,0x18,0xb3,0x95,0xb8,0xf7,
- 0xb9,0xcb,0x6a,0xdc,0x5b,0xd8,0x6a,0xe1,0x05,0xe6,0xba,0xb9,0x30,0x66,0xf5,0x7f,
- 0x11,0xfe,0xd1,0x11,0x2f,0xfd,0x54,0x7c,0x02,0x9f,0x3f,0xa1,0x6f,0x6a,0x11,0x67,
- 0x0a,0x23,0x8d,0xd3,0xc3,0x2d,0x2d,0x0d,0x33,0xe1,0x84,0xea,0x0b,0x7b,0x62,0xc5,
- 0xee,0xcb,0xf8,0x1f,0x47,0x0b,0xf1,0x3f,0x31,0xff,0x4a,0xc7,0x23,0x54,0x4f,0x32,
- 0xea,0x0f,0x3b,0x54,0x65,0xcc,0x15,0x78,0x19,0xff,0xe3,0x93,0x37,0x36,0xae,0xd7,
- 0xa5,0xb7,0x71,0xfd,0xf3,0x78,0x7e,0x52,0x1e,0xd6,0xef,0xc1,0x2b,0x8a,0x06,0xc7,
- 0xeb,0x7d,0x85,0x9e,0xcb,0xfb,0xc3,0x16,0xef,0x90,0x3f,0x71,0xd4,0xb2,0x37,0x58,
- 0x31,0x97,0x07,0xd6,0x0d,0xc0,0x81,0xc8,0x3f,0x6d,0x95,0x07,0x99,0x5b,0xdd,0xc4,
- 0xaf,0x45,0x13,0xf5,0xb2,0xfe,0xb0,0xc9,0xa1,0x9b,0x81,0xd9,0xe5,0xad,0x10,0x7e,
- 0x0f,0xe5,0x73,0xaf,0xd4,0x21,0x78,0x04,0xf7,0xfc,0x0d,0xcb,0x50,0x43,0x69,0x90,
- 0xe3,0x75,0x4d,0xe0,0x7f,0xe2,0x45,0x43,0x78,0x0c,0xa7,0xc3,0xa3,0x52,0x51,0x03,
- 0x15,0xca,0xe6,0xbb,0xa3,0x6e,0x34,0x5b,0x22,0xf7,0xf5,0x6d,0xd2,0xaf,0xa1,0xd2,
- 0x49,0x19,0xfd,0x61,0x89,0x84,0x49,0x96,0x06,0x03,0x79,0xec,0xdf,0x10,0xff,0xe4,
- 0xad,0x61,0xef,0x6a,0x7f,0xe6,0xa5,0xda,0xc6,0x15,0x93,0xbe,0x15,0x59,0xcc,0xe7,
- 0x69,0xf7,0x5f,0xc6,0xff,0xd4,0xfa,0xf9,0x66,0x6a,0xf3,0xfd,0xa7,0x14,0xfb,0x4a,
- 0x44,0xd0,0x02,0xc0,0xc1,0x4e,0xd4,0x80,0x07,0x8c,0xbc,0x89,0xfd,0x61,0x2f,0x45,
- 0xcb,0x4f,0xe4,0xbe,0x25,0xbe,0x03,0x87,0xf9,0xee,0xef,0x20,0xda,0xb9,0x53,0xbf,
- 0xc4,0xfd,0x1a,0x0e,0x2e,0xc1,0x17,0x08,0x8d,0x36,0x12,0xfe,0x49,0xaf,0x3f,0xf1,
- 0x39,0x5a,0xb7,0x7c,0x5b,0xa0,0x17,0x22,0xf1,0xe2,0xf9,0x72,0xcc,0x96,0xc7,0x77,
- 0x77,0x96,0xba,0xa9,0x3e,0x36,0xec,0x91,0x8b,0x64,0x1c,0x58,0xfc,0x5f,0x2a,0xce,
- 0x47,0x98,0x27,0xdf,0x7a,0xf0,0x6d,0x6d,0x7d,0xac,0x28,0xa8,0xdc,0x15,0xc1,0x15,
- 0x28,0x29,0x0d,0xca,0x5f,0x63,0x6f,0xeb,0x2f,0x42,0x71,0xac,0x69,0xc8,0x8a,0x7f,
- 0xa8,0x3f,0x88,0xa1,0x11,0x7b,0x66,0x76,0xd7,0x05,0xc5,0xce,0xf2,0xf4,0xdd,0x8d,
- 0x1e,0xca,0xdb,0x7f,0x2d,0xd6,0xa1,0xd3,0x7a,0x4e,0xe8,0x0f,0x72,0xc9,0x40,0xb1,
- 0xb0,0x3f,0x90,0x04,0x2e,0xb7,0x1a,0x73,0xa5,0xea,0x4a,0x69,0x17,0x54,0xc6,0xed,
- 0xfb,0xc5,0x4b,0xfc,0xb3,0x40,0x07,0xcf,0xf5,0x66,0xf6,0x07,0x81,0x73,0x9a,0xdf,
- 0x28,0xdb,0x23,0x26,0x37,0x20,0x30,0x2e,0xb0,0x77,0x88,0x1b,0xe1,0x5c,0xd8,0x9f,
- 0xf8,0xd7,0x67,0x49,0xde,0xca,0x7e,0x5e,0x76,0x79,0x7f,0x58,0xdc,0x54,0x6f,0x36,
- 0x7c,0x26,0x1d,0xe2,0x66,0xd9,0x67,0x8a,0xff,0xf9,0x21,0xb7,0xd7,0x3d,0x73,0x2f,
- 0xf5,0x87,0xe5,0xf6,0x21,0xf1,0xb2,0xfe,0x20,0x09,0x14,0x1a,0x07,0x29,0x0c,0x55,
- 0x0b,0xee,0x6c,0xf5,0x40,0x73,0xcf,0x82,0x76,0x77,0x5b,0x36,0x41,0x9d,0x78,0x5c,
- 0xee,0x14,0xc3,0x97,0xf5,0x87,0x9d,0x16,0x63,0x49,0xbd,0x45,0x9b,0x95,0xcc,0x89,
- 0x4c,0xc5,0xf9,0x8d,0x73,0xe2,0x72,0x7d,0x04,0xe7,0x73,0xd4,0x80,0xbb,0x2e,0xef,
- 0x0f,0xd2,0xd8,0xac,0x3a,0x0f,0x42,0xd4,0x1b,0x97,0xf1,0x34,0xd9,0xb5,0x86,0x55,
- 0xab,0x5b,0x70,0x7d,0xec,0xa1,0x0e,0x0a,0x24,0xf6,0x5a,0xe4,0x0f,0xe0,0xf3,0xfc,
- 0x99,0xd0,0x4e,0xcc,0x95,0xd4,0xdf,0xcc,0x59,0xb0,0xc9,0xde,0x28,0xde,0xa8,0x1f,
- 0xa9,0x75,0xc5,0x36,0x6e,0x11,0xef,0x25,0x68,0xc4,0xed,0x89,0x62,0x4b,0x7f,0x90,
- 0x94,0xfd,0x2e,0x3b,0xfa,0x1a,0x86,0x5a,0x2e,0x68,0x7e,0x98,0x7b,0xf0,0xb1,0xf3,
- 0x91,0x73,0xda,0x8d,0x92,0xe3,0xe0,0xb7,0xcf,0x6f,0x7c,0x07,0x6e,0xe4,0x8e,0xba,
- 0xea,0x4c,0xff,0xd7,0xbb,0xb1,0xaa,0x24,0x22,0x94,0x19,0xf0,0x2e,0x94,0x27,0x1d,
- 0xdd,0xe2,0xe9,0xc6,0x5e,0x54,0x2b,0x9b,0x5f,0x12,0xbd,0xea,0xab,0x14,0xff,0xfc,
- 0x1b,0x31,0x03,0xff,0xa8,0x37,0x40,0x59,0x12,0x41,0x2c,0x29,0x7a,0x57,0x52,0x59,
- 0xcf,0x4e,0x70,0xb9,0xb1,0x2c,0xde,0xbc,0x9e,0x15,0xcb,0xcf,0x34,0x2e,0x48,0x2a,
- 0x0f,0x41,0x06,0xfe,0x81,0x07,0x34,0x44,0x3b,0x31,0xb4,0xc7,0xa9,0x4d,0x8c,0x02,
- 0x2e,0xca,0xff,0xf2,0xe8,0x39,0xc0,0xa8,0x03,0x2f,0x5d,0x99,0x80,0x7f,0x5e,0x30,
- 0xf9,0x1f,0xed,0x0e,0x33,0x5a,0x38,0xa7,0xe5,0xe0,0x47,0x52,0x54,0x35,0xfb,0xcd,
- 0xb9,0xe0,0x99,0xd0,0x2c,0x8a,0x30,0xcf,0xc4,0x3f,0xbf,0x67,0x7e,0xc3,0x1e,0x17,
- 0xef,0x80,0x7f,0xd3,0x7d,0xc4,0xe7,0x7c,0x28,0x1f,0x39,0xe8,0xf7,0x3a,0x5a,0x1a,
- 0x8a,0xe1,0x25,0xe8,0xa0,0xfe,0x32,0x19,0xf8,0x47,0x1d,0xad,0x8f,0xbd,0x1f,0x46,
- 0xe2,0x55,0xc6,0xe6,0xa4,0x68,0xa0,0x61,0x52,0x15,0x73,0x68,0xb8,0xb5,0x2e,0xc8,
- 0x55,0x46,0x8e,0x77,0xda,0x65,0xf1,0x3f,0xa9,0xa4,0xc2,0x23,0x74,0xff,0x6d,0xcd,
- 0x45,0xd5,0x47,0x74,0x34,0xdb,0xb7,0xa2,0x22,0x3b,0xa2,0xfa,0x08,0xb1,0x67,0xe0,
- 0x1f,0xe9,0x86,0x14,0x69,0xfc,0x49,0xac,0x59,0xa3,0xf8,0xf9,0xec,0x62,0xbd,0xb9,
- 0xa4,0xac,0x27,0xf7,0x11,0x56,0xa2,0x36,0x91,0xc7,0xb6,0x83,0x5d,0x16,0xff,0x43,
- 0x8b,0x70,0x94,0x99,0xdd,0xa8,0x4b,0x7c,0x51,0x95,0x27,0x3d,0x0b,0x0b,0xb5,0xc5,
- 0x1e,0xb5,0xc1,0x70,0xd3,0x4f,0x13,0xe3,0x7f,0x4a,0xfb,0x95,0xbf,0x41,0x3c,0xb0,
- 0x6e,0x6d,0x51,0x52,0xb9,0xf9,0xe0,0x83,0xb0,0x16,0xbf,0x57,0x4e,0xf0,0x0a,0x27,
- 0xac,0x6f,0x2c,0xa5,0x8e,0x21,0x13,0xe3,0x7f,0x2a,0x0d,0x34,0x33,0xf1,0x3c,0xea,
- 0x5e,0xc3,0x11,0x63,0xf7,0xeb,0x91,0x90,0x1f,0x61,0x33,0xde,0xf8,0x25,0x61,0x61,
- 0xf7,0xd5,0x45,0xca,0x84,0xf8,0x1f,0xc1,0xe4,0x4b,0xa9,0xb0,0x98,0x19,0x08,0x74,
- 0x2f,0xbb,0x44,0x3b,0xf0,0xd7,0x42,0xd2,0xf4,0x7f,0x65,0xe4,0x7f,0x8d,0xc6,0xff,
- 0x24,0xed,0xee,0xd1,0x68,0xf3,0xe5,0xc9,0xe2,0xf9,0x30,0x5c,0xe4,0x3f,0x86,0x08,
- 0xea,0xbc,0xfc,0x27,0xbc,0xf2,0x77,0x09,0xf1,0xf2,0xf8,0x1f,0x77,0x48,0xbc,0x1d,
- 0x1e,0x23,0xf6,0x38,0x2c,0x16,0xc0,0xb3,0xb5,0xa5,0xbd,0x4a,0xd8,0xf9,0xb6,0xf4,
- 0x1c,0x5c,0x4b,0xf9,0x14,0x97,0xc7,0xff,0x44,0xd7,0x30,0x2a,0x0c,0x8e,0x40,0xa8,
- 0x90,0xd2,0xdc,0xe2,0xa5,0x03,0x0a,0xc5,0xff,0xbc,0x48,0x81,0x40,0xf7,0x4e,0xc4,
- 0x3f,0x84,0xae,0x17,0xe2,0x7e,0x7b,0x06,0x9e,0x30,0x94,0x6d,0xec,0xef,0x61,0xb7,
- 0xe1,0x39,0xa1,0x3c,0xcc,0x5e,0x85,0x8e,0xd3,0x25,0xd4,0xba,0xe8,0xf2,0xf8,0x1f,
- 0xf9,0x23,0xd1,0x0d,0xef,0x50,0x1b,0xee,0x4f,0xc4,0x1b,0xe0,0x6c,0xd2,0x9f,0xc0,
- 0xe7,0x3f,0xcb,0xbf,0x10,0x3a,0xf8,0xe6,0x01,0xe5,0x2f,0xf8,0xbf,0x88,0xed,0x19,
- 0xe0,0x15,0xe0,0x68,0x54,0x76,0xe8,0x28,0x88,0xb2,0x1d,0x8d,0x14,0xff,0x63,0xfe,
- 0xd4,0x30,0x11,0xff,0x98,0xd6,0xfd,0x07,0x66,0x34,0xac,0xfd,0xe1,0x86,0x59,0xda,
- 0x21,0x8e,0xfa,0xae,0xe5,0x25,0x49,0x32,0xe3,0x63,0xd5,0xcb,0xf0,0x0f,0x82,0x96,
- 0xff,0xc9,0xba,0xa3,0x4d,0x8d,0x2e,0x3d,0xf7,0x41,0x36,0x2b,0x70,0x44,0x2d,0xeb,
- 0x6e,0x36,0xf3,0xb9,0x1a,0xe7,0xe8,0xe2,0x36,0x5b,0x66,0x7f,0xb4,0x5d,0x14,0x94,
- 0xbb,0x8d,0xf5,0xeb,0x4d,0xda,0x2a,0xa2,0x7d,0x66,0x4a,0x4d,0xc4,0x60,0x6f,0xc5,
- 0x13,0x9a,0x53,0x88,0xb7,0xfa,0xe9,0x65,0xf8,0x27,0x15,0xf6,0x23,0xd4,0x1b,0xef,
- 0xe9,0x94,0xff,0x25,0xd5,0x53,0x1b,0xac,0xf9,0x36,0x09,0x25,0x9e,0x9b,0x80,0x10,
- 0xb3,0xe2,0x1f,0x7b,0x27,0x6a,0x9f,0xbf,0x4d,0xd1,0x3e,0x66,0x35,0x42,0x4d,0x1a,
- 0xcf,0xff,0xa2,0x8c,0xf8,0x4c,0xfc,0x63,0xfa,0xbf,0xec,0x04,0x72,0xba,0x53,0x81,
- 0xd0,0xc7,0x94,0xcf,0x89,0x21,0x59,0xe4,0x38,0x96,0x7f,0x21,0x65,0x78,0x1e,0x9b,
- 0x80,0x7f,0x46,0xf4,0x72,0xdd,0x11,0x42,0x74,0xf4,0xb1,0xee,0xd3,0x97,0xf6,0x35,
- 0xcc,0xd7,0x4e,0x0b,0x7e,0x7d,0x39,0xe5,0xbf,0x7f,0x4e,0xeb,0x73,0x2c,0x13,0xff,
- 0x98,0xec,0xba,0xc2,0xb3,0x93,0x3c,0x8a,0xa6,0xb9,0x62,0xd2,0x3e,0x88,0x7f,0x10,
- 0x11,0x15,0xe9,0xc4,0xbf,0x29,0x8d,0x97,0xc5,0xff,0xa4,0xc2,0x7e,0xb4,0x2d,0xf8,
- 0xe2,0xcd,0xce,0x88,0x44,0x34,0xbb,0xae,0x5c,0x11,0x21,0x2a,0x4c,0x5b,0xa4,0xcc,
- 0xc8,0xcb,0xc0,0x3f,0xb0,0x4b,0xa2,0x6e,0xbc,0xac,0x5f,0x7a,0xb8,0x68,0xd6,0xa2,
- 0xe6,0x18,0x94,0x68,0xfb,0x4a,0x28,0xff,0x8b,0x8d,0xbb,0x1a,0xad,0xfd,0xd1,0xcc,
- 0xfa,0x96,0x08,0x62,0x59,0x37,0xfc,0x81,0x06,0x8f,0x08,0xb3,0xa4,0x14,0xc3,0xa3,
- 0x5c,0x93,0x8a,0x6f,0xb7,0xf2,0x3f,0xed,0x16,0xfe,0xc7,0x75,0x8a,0xda,0xa2,0x39,
- 0xc5,0xfe,0x96,0xeb,0x29,0x10,0x68,0xeb,0x68,0x22,0x98,0x63,0xeb,0x5f,0xf2,0x7f,
- 0x45,0x44,0xcd,0xcc,0xbf,0x5b,0xde,0x28,0xee,0xd0,0x70,0xd9,0xbd,0x8e,0xc6,0x62,
- 0x0a,0x04,0xea,0x20,0x57,0xac,0x6d,0x02,0xfe,0x99,0x4b,0xd9,0x5e,0x9d,0xf2,0x3b,
- 0x3b,0x5c,0x34,0xb8,0x1e,0xcc,0xb0,0xe7,0xf7,0xd8,0x00,0x1a,0x1a,0x74,0xc5,0x66,
- 0x9b,0xe8,0xff,0xe2,0xca,0x8d,0x4c,0x86,0x9f,0x51,0xb6,0xbb,0x93,0x4d,0x82,0x06,
- 0xa1,0x84,0x0e,0x4e,0x6f,0xaa,0xc2,0xea,0x2e,0x0b,0xff,0x63,0xe2,0x1f,0xed,0x07,
- 0x5c,0x19,0x66,0x2d,0xf0,0x90,0x36,0xd3,0x50,0xd4,0xc8,0xcf,0xd4,0xcd,0x7c,0x66,
- 0x17,0x5a,0x34,0x47,0x61,0x73,0xca,0x1f,0x54,0x9b,0xe9,0xff,0x8a,0xdf,0x18,0x77,
- 0xac,0x99,0xe4,0x87,0xbe,0xf8,0xb3,0xc9,0xcd,0x41,0x65,0x01,0x7b,0x99,0x5f,0x1b,
- 0xfe,0xca,0x8a,0x49,0xef,0xb0,0x57,0x23,0xf3,0x28,0x3e,0xf9,0xfb,0x13,0xe2,0x7f,
- 0x28,0xac,0xf7,0x2b,0x83,0xea,0x59,0xb5,0xa2,0x0b,0x0d,0xf9,0x35,0x70,0x36,0x5c,
- 0xd1,0x33,0xa9,0xef,0x9a,0xf1,0xf8,0xde,0xc8,0x04,0xfc,0x73,0x43,0xdc,0x71,0x5c,
- 0xf4,0xc3,0x68,0xb6,0xce,0x17,0x70,0xd1,0xa8,0x4a,0x38,0x06,0x44,0x3f,0xff,0x33,
- 0x5d,0x19,0x99,0xd8,0x1f,0x6d,0x72,0x11,0x57,0x6e,0x13,0x6f,0xd7,0x37,0x53,0x3c,
- 0x4f,0x88,0xf5,0xe9,0xcf,0x8a,0xd7,0x1b,0x79,0x3a,0x9b,0xae,0xed,0xd5,0x6f,0x34,
- 0x94,0x1f,0x4e,0x8c,0xff,0xe1,0xb3,0xd1,0x3a,0x63,0xd3,0xd9,0x3a,0x99,0xe4,0x15,
- 0x3b,0x06,0x7b,0xf4,0x52,0x09,0x07,0xb7,0xd7,0x9b,0xfe,0xaf,0xf0,0x3a,0x98,0xe0,
- 0xff,0xd2,0xb8,0xe2,0x89,0x2c,0x83,0x0d,0x51,0x5c,0x3d,0x2d,0xf2,0x47,0xb4,0x70,
- 0xdd,0xfd,0xb6,0xf6,0xad,0xcb,0xea,0x77,0xc3,0x4e,0x43,0x89,0x46,0x26,0xf6,0x47,
- 0xab,0xe0,0x8e,0x9d,0xcc,0x23,0x1f,0xe1,0xa6,0xfe,0x3a,0xa9,0x99,0xaf,0xf9,0x88,
- 0xf2,0x0f,0x88,0x67,0x3a,0xc8,0xd5,0x35,0x67,0xa2,0xff,0x8b,0x3b,0x1e,0xcf,0xef,
- 0x87,0x73,0x8b,0x70,0xda,0x16,0xf1,0x14,0xcd,0x07,0x34,0xa3,0x46,0x43,0xa3,0xf7,
- 0x5c,0xde,0x1f,0x8d,0x3b,0x8c,0xe2,0x2f,0xa8,0x11,0x73,0xaa,0xf1,0xc1,0x6b,0x50,
- 0xb5,0xc8,0x1e,0x53,0x2a,0xe1,0x62,0xb4,0x9c,0x32,0xaa,0x32,0xf1,0xcf,0x8b,0x54,
- 0x5f,0xbd,0x49,0xfd,0x9c,0xbf,0x98,0x4d,0xfa,0x2b,0xf2,0x9e,0xb0,0x01,0x3c,0x85,
- 0xee,0x28,0xca,0x93,0xf7,0xd5,0x05,0x86,0x63,0xe3,0xe5,0xfd,0xd1,0xb8,0x12,0x83,
- 0x41,0xdd,0xcc,0xee,0xe9,0x64,0x1f,0x78,0x37,0x08,0x65,0x71,0xb9,0x3d,0xe2,0x49,
- 0xe5,0xfb,0x64,0xf0,0x3f,0x29,0xfc,0xc3,0xe9,0x3c,0xa6,0x02,0xcf,0x00,0xa8,0x2c,
- 0xff,0x9d,0x50,0xa8,0x5e,0x61,0x87,0xa7,0xcc,0x7a,0x0b,0x4e,0x4b,0x7f,0xb4,0x5c,
- 0x13,0xff,0xa0,0x91,0x35,0xa9,0x5f,0xa6,0x68,0x0d,0xd3,0xf0,0x89,0x32,0xd3,0xed,
- 0xee,0x31,0xa9,0x21,0x3c,0x4a,0x30,0xc1,0xff,0x55,0xc5,0x97,0xeb,0xe2,0xb1,0xb1,
- 0x46,0x0f,0x43,0x8c,0x9c,0x55,0x39,0x86,0x78,0x5e,0xa2,0xfc,0xa6,0xbc,0xbe,0x8c,
- 0xf8,0x9f,0xf3,0xe1,0xde,0x79,0xe5,0xf6,0x65,0x2f,0x7d,0x7d,0x98,0x9f,0xf2,0xfe,
- 0x73,0x32,0x77,0x8d,0x30,0x04,0x1f,0x22,0x50,0x94,0x86,0xc5,0x05,0xf0,0xb9,0x51,
- 0xbe,0xc1,0x7e,0xd0,0x82,0x7f,0x0c,0xf5,0x63,0x88,0x96,0xbb,0x36,0xca,0x0d,0x81,
- 0x8f,0xf4,0xa7,0xee,0x72,0x25,0xa7,0x76,0xb2,0xf7,0x03,0xcd,0xfc,0xb1,0x64,0x6e,
- 0x27,0xfb,0x05,0xbd,0xef,0x2e,0x79,0x1f,0xf3,0xa6,0xf3,0xbf,0xb2,0x7a,0xeb,0x23,
- 0x50,0x12,0x95,0x5d,0xcc,0x60,0x3b,0xb8,0xdb,0xb0,0x79,0x7d,0xdd,0xf0,0x0c,0xf9,
- 0x13,0xbd,0xb8,0xe9,0x77,0x69,0x1a,0xc5,0x3f,0xfb,0xac,0xf8,0x87,0x35,0x45,0x66,
- 0x0d,0x21,0xbe,0x7a,0x9f,0xd8,0x36,0xe3,0x9b,0x09,0xd6,0x1f,0xa1,0x42,0xd9,0x39,
- 0x89,0xc0,0xce,0xac,0x17,0x84,0xd6,0x78,0x46,0x7f,0x10,0x03,0xf1,0xcf,0xe1,0x9e,
- 0x05,0xf3,0xec,0x3b,0xf3,0x3f,0x62,0xa7,0xf8,0x1c,0xc3,0x96,0xa8,0xee,0x82,0x6f,
- 0xe3,0x3f,0xb4,0x27,0x84,0x52,0x92,0x3f,0x3e,0xcf,0x16,0x45,0xb5,0xf8,0xbf,0x76,
- 0x4a,0x94,0xa6,0xf1,0x29,0x47,0x3c,0x30,0x88,0x8a,0x3e,0xef,0x4c,0xfe,0x67,0x70,
- 0xa9,0xa8,0xca,0x28,0x1b,0x12,0x4d,0xf9,0x4c,0x15,0xd7,0x33,0xeb,0x63,0x1f,0x06,
- 0x5f,0x81,0x67,0x8f,0xf2,0x65,0xb4,0xef,0x16,0x90,0x36,0x9f,0x49,0x8a,0x3e,0x69,
- 0x4f,0x7c,0x7d,0xb0,0xee,0x90,0xda,0x01,0xcb,0x0a,0x33,0xf8,0x9f,0x4a,0xb4,0xd6,
- 0x5d,0x3f,0x42,0xb3,0x7d,0x0e,0xe1,0xe7,0xae,0xa5,0x09,0xe2,0xaf,0xc2,0x45,0xf8,
- 0xbe,0x81,0x41,0x78,0x93,0x6b,0xdb,0xe4,0x3d,0xa8,0xaf,0xc7,0xf6,0x43,0x32,0xeb,
- 0x0e,0x68,0x51,0x5d,0x9a,0x6c,0x8f,0xc8,0xce,0x87,0x53,0xd5,0x36,0x36,0xc2,0x63,
- 0x1b,0xb4,0x37,0x64,0xea,0x67,0xf1,0x30,0x8f,0xe3,0xfa,0x44,0x2a,0xc6,0xe5,0x4f,
- 0xb2,0x7e,0x06,0x6c,0xfb,0x75,0x51,0x5c,0xfe,0x66,0x60,0x2a,0xac,0x6f,0x45,0xfc,
- 0xf3,0xe3,0xbc,0x47,0xab,0x7f,0x19,0xd3,0x92,0xb0,0x26,0x70,0x51,0x7a,0xc8,0xc0,
- 0x9f,0x16,0xb2,0xca,0x0c,0xfc,0xf3,0x1b,0x48,0x18,0xcb,0x4a,0xf2,0xe5,0xc8,0x9b,
- 0xf1,0xf9,0x78,0x7f,0x71,0xad,0xfe,0x3e,0x95,0xc5,0xf6,0x8a,0xbd,0xfc,0xd7,0xe0,
- 0xe5,0x1e,0x35,0x33,0xfe,0xd9,0xf5,0x29,0x38,0x0c,0xc7,0x67,0xc2,0xb0,0x94,0x8a,
- 0xf6,0x11,0x6f,0xd3,0xff,0x0e,0xb7,0xcd,0x8b,0x43,0xe2,0xdb,0xe6,0xd6,0x9a,0x3b,
- 0x01,0xff,0xa8,0xe7,0xb8,0xe9,0x94,0x0f,0xca,0x54,0x28,0x69,0x79,0x02,0x25,0x7c,
- 0x17,0xf8,0xde,0xcb,0xee,0xac,0xfe,0x25,0xbf,0x99,0x88,0x20,0x6e,0x8d,0x7f,0xde,
- 0xb2,0x9d,0x9b,0x42,0x63,0x88,0x15,0x0a,0xaf,0x0a,0x66,0xb4,0x40,0x01,0xd1,0xce,
- 0x7d,0xf2,0x10,0x9b,0xbe,0xe4,0x7e,0xd8,0xc1,0x95,0x3a,0xf0,0x59,0xce,0xfb,0xa3,
- 0x14,0x6f,0x99,0x54,0xee,0xc5,0x2d,0xbf,0x3e,0x62,0x3a,0xfe,0xd6,0xc1,0x5a,0xa3,
- 0x38,0x69,0x1b,0x0e,0x3c,0x8a,0xc0,0xaf,0x28,0xae,0x14,0xa2,0x06,0x1c,0x5b,0x7f,
- 0x13,0xff,0x18,0xae,0x7e,0x65,0x0f,0xcb,0x55,0x1b,0xc2,0x66,0xf7,0xcf,0x6c,0xb9,
- 0x1e,0xe2,0xb4,0xdf,0xf2,0xea,0xea,0x55,0xad,0x0f,0xaf,0x64,0xe2,0x9f,0x8b,0xbc,
- 0x3c,0xe6,0x38,0x25,0x16,0xb2,0xa3,0x54,0x66,0x3f,0xce,0x5a,0x5c,0x87,0x05,0x17,
- 0xdf,0x14,0xaf,0x7e,0x1a,0x2d,0xca,0x72,0xee,0x48,0x36,0x4f,0xc0,0x3f,0x85,0x07,
- 0x9c,0x0e,0x54,0x23,0xda,0x00,0xf9,0xbf,0xea,0xc7,0xea,0x63,0xf3,0xea,0x13,0x92,
- 0x99,0x1a,0x7f,0x19,0xff,0xa3,0x53,0x90,0x4f,0xfe,0xac,0xc8,0xa1,0x54,0xdb,0xd0,
- 0x12,0xaa,0xef,0x4a,0x69,0x5c,0x83,0xf2,0x88,0x31,0x5f,0x97,0xd5,0x86,0x09,0xf8,
- 0x47,0x2f,0xab,0x73,0xc7,0xd8,0x2c,0xb9,0x49,0x30,0xa3,0x91,0x67,0x52,0x7e,0x25,
- 0xe5,0x73,0x9d,0x74,0xef,0x5a,0xe9,0xd2,0xdd,0x13,0xf1,0xcf,0x3e,0x0a,0x8a,0x36,
- 0x69,0xa2,0xd1,0x40,0xe8,0x32,0xea,0x0f,0x82,0x78,0x69,0x90,0x93,0xbe,0xb6,0xed,
- 0xb1,0xe0,0x1f,0x90,0xb2,0x60,0xd7,0x22,0x4f,0x48,0x9e,0x6f,0x2b,0x81,0x7a,0xdd,
- 0xb3,0x88,0x88,0x4a,0xda,0xa8,0x88,0x10,0x02,0xdd,0x78,0x2b,0xf7,0x22,0x9b,0x9a,
- 0x89,0x7f,0x46,0xf9,0x9f,0x62,0xcd,0x8c,0x76,0xf6,0x98,0xfd,0x29,0x52,0x11,0xb9,
- 0xa9,0x17,0x2f,0xb3,0xe2,0x9f,0xe3,0x57,0x9d,0x4c,0x79,0xbb,0xce,0x54,0x7f,0x0e,
- 0x17,0x6a,0x50,0x9b,0x87,0x10,0xff,0x5c,0x80,0x03,0x54,0xf1,0x06,0x11,0x11,0x5c,
- 0x17,0xfa,0x6a,0x26,0xfe,0x39,0xc9,0x5f,0xd3,0xcb,0x03,0x08,0x72,0xf6,0x6f,0xf8,
- 0xa3,0x5a,0xa5,0x6f,0x56,0x45,0x49,0x23,0x22,0xe8,0x0e,0xea,0x30,0xf2,0x1a,0xf8,
- 0x7a,0x50,0xbe,0xa5,0xf1,0xcf,0x1a,0xf5,0x04,0x8f,0xfe,0xa8,0x15,0xf1,0xcf,0x92,
- 0x22,0x68,0x57,0xcb,0x28,0xfe,0xd9,0x2d,0x6c,0x84,0x56,0x33,0xf0,0x80,0x2a,0x72,
- 0x64,0x29,0x2f,0x4f,0xe8,0x0f,0x5b,0xcf,0xb5,0x00,0x82,0x3a,0x5a,0x46,0xea,0xc7,
- 0x94,0x37,0x1f,0xd6,0xb2,0xf6,0x1a,0x72,0xfc,0x49,0xf5,0xee,0x95,0xba,0xb2,0x62,
- 0xb1,0xd3,0x12,0xff,0xd3,0x08,0x4d,0x92,0xab,0xcb,0xac,0xff,0xf3,0x54,0x0a,0xed,
- 0x90,0xeb,0xde,0x2c,0x94,0x7d,0x92,0x12,0x51,0x03,0x4a,0x5f,0x26,0xfe,0x61,0x87,
- 0x54,0x5f,0xed,0xe6,0xed,0xce,0x59,0xae,0x26,0x82,0x31,0x85,0xc2,0x2c,0x9c,0x56,
- 0x81,0x1f,0xda,0xd9,0xaf,0x76,0x51,0xa0,0xd7,0x76,0x0b,0xfe,0x19,0x48,0xe1,0x9f,
- 0xa0,0xa3,0xe0,0xa5,0xfe,0x48,0x0a,0xed,0xe4,0x7f,0x50,0x33,0x02,0xf3,0xa9,0x2d,
- 0x9a,0x59,0x1f,0x1b,0x11,0x51,0xfe,0xd9,0x4c,0xfc,0xc3,0xfd,0x85,0x68,0xf6,0x9a,
- 0x65,0x07,0x08,0x6d,0x6a,0xd0,0x2b,0x39,0x05,0xf3,0x43,0x0c,0xab,0x3e,0xd5,0x63,
- 0x4c,0xc0,0x3f,0x07,0xa2,0x73,0x5b,0xe4,0x64,0xb6,0x0c,0x1b,0x84,0xb9,0x7c,0x69,
- 0x3c,0xdb,0xc6,0x22,0xfc,0xaf,0x13,0x72,0x3c,0xbf,0x10,0x3f,0x03,0xb9,0x7a,0xc5,
- 0x4c,0xfc,0xf3,0x02,0x78,0x92,0x32,0xd5,0xc7,0x6e,0x60,0x78,0xd3,0x05,0x28,0x76,
- 0xb6,0x82,0x76,0x97,0xec,0xc5,0xb7,0x24,0x2a,0x35,0xe8,0x0e,0x64,0xe0,0x1f,0xbe,
- 0x57,0xc0,0xf9,0x9a,0xd3,0xce,0xd6,0x6b,0xa5,0x1c,0x0f,0xf2,0x1f,0x84,0x75,0xba,
- 0x10,0x2b,0x5c,0xe3,0xba,0x0d,0x4d,0x9b,0xe2,0xb8,0xbc,0x3a,0xa3,0x3f,0xec,0x8c,
- 0x1e,0xca,0x7f,0xf7,0xac,0xc8,0x9e,0xc1,0x5e,0x3d,0x58,0x1a,0xdf,0xbc,0xc6,0xf6,
- 0x16,0xfc,0x8e,0x17,0x85,0x97,0xad,0x51,0xae,0x80,0x4b,0xf5,0xd7,0xa2,0xa9,0xa7,
- 0x64,0xe0,0x1f,0xe3,0x1c,0xcc,0x40,0xa5,0xb6,0xb4,0xad,0x60,0x34,0xbf,0xc9,0xcd,
- 0x3e,0x83,0x03,0xdc,0xe1,0xcd,0xa7,0x8a,0xd9,0xfb,0x79,0x46,0xfc,0x0f,0xac,0xbd,
- 0xa8,0x5e,0x8a,0xf8,0x4f,0x6e,0x1e,0x16,0x67,0xc0,0x11,0x3e,0x2f,0xee,0x19,0x60,
- 0xeb,0x02,0xbd,0x91,0x6b,0xc2,0x1b,0xd7,0x88,0xfe,0x9a,0x4b,0xfc,0x9a,0x13,0xf6,
- 0x1e,0xf1,0xb2,0xfe,0xb0,0x4f,0x28,0x1f,0xb1,0xe9,0x24,0x3f,0x9f,0x92,0x57,0x46,
- 0xae,0x80,0x46,0xbd,0xa8,0x47,0xbe,0x9b,0x5d,0xa5,0xef,0x5d,0x54,0x14,0x95,0x03,
- 0x91,0x4c,0xfc,0x83,0x68,0x27,0xa8,0xdc,0xca,0x6e,0xd4,0xd7,0xbb,0xf0,0xd7,0x30,
- 0x4b,0xf0,0x8d,0xbc,0x48,0xaf,0xad,0x9b,0x83,0x50,0x50,0x9d,0x69,0x04,0x57,0x38,
- 0xf5,0x0c,0xfc,0xe3,0x05,0x0f,0x5b,0xda,0xb2,0x55,0x82,0x06,0x43,0xe3,0x41,0x2d,
- 0x55,0xb7,0x91,0xe4,0x4f,0xae,0xb6,0x5b,0x2d,0xe1,0xf2,0x74,0x16,0xb4,0xe0,0x9f,
- 0xfd,0x29,0x3c,0xfc,0x08,0xae,0xbf,0xa3,0x8d,0x73,0x7b,0xa7,0xb8,0x51,0x7d,0x09,
- 0xe5,0x43,0x30,0x51,0x5d,0x22,0x9c,0xe5,0xf3,0xeb,0x3c,0x71,0xe5,0xfb,0x19,0xfd,
- 0x61,0xcf,0xaa,0xfe,0xbe,0xcd,0x71,0xb1,0xbf,0xe0,0xf7,0xd9,0x7e,0xbe,0x39,0x41,
- 0x6d,0x73,0x6b,0x2a,0xcc,0xb0,0x1f,0x7d,0x44,0xaf,0xd0,0x1c,0x5a,0x43,0x3c,0x03,
- 0xff,0x5c,0x20,0xef,0x4f,0x1f,0xe2,0xc3,0x23,0x72,0x15,0xb1,0x3d,0xc3,0xd4,0x16,
- 0x4d,0x97,0xcd,0x7e,0x97,0x71,0xff,0x2a,0x7b,0x42,0x49,0xe3,0x1f,0x8a,0xfc,0x7a,
- 0x9e,0x97,0x25,0x94,0x16,0xea,0x66,0x2e,0x94,0xd5,0xa3,0xb6,0x1d,0x60,0xcd,0x59,
- 0xda,0xb0,0x4c,0xfe,0xaf,0x53,0xbc,0x4c,0x0b,0x26,0x2c,0xfd,0xa9,0x09,0xff,0xec,
- 0xe3,0x65,0x2b,0x11,0xd4,0x79,0x78,0x33,0xd1,0xb0,0x71,0x33,0x4d,0xd2,0x15,0x56,
- 0x12,0xec,0x13,0x78,0x46,0xba,0x33,0x28,0xf3,0x4c,0xfe,0x07,0x4d,0x4a,0x4f,0x54,
- 0x69,0x65,0x35,0xac,0x21,0xcf,0x13,0x95,0x35,0x34,0x4c,0xea,0x25,0x6d,0xd1,0x1c,
- 0xf2,0x7f,0x3d,0x06,0x65,0x42,0x10,0xb2,0xad,0xf8,0xe7,0xde,0x31,0x7b,0x13,0xed,
- 0x6b,0x94,0xcf,0xee,0xb8,0x98,0xe4,0x87,0x98,0x4f,0xdf,0x4c,0x61,0x4e,0xa7,0x52,
- 0xa9,0x25,0x99,0xf8,0xe7,0x3c,0x5c,0x2d,0xa1,0x58,0x3e,0x2f,0x5c,0x72,0xfb,0x63,
- 0x8e,0xb0,0x38,0x04,0x9f,0x0b,0x37,0xea,0xb9,0xf4,0xbe,0x27,0x85,0x2a,0xf8,0x87,
- 0xbe,0x09,0xfc,0x4f,0xb7,0x56,0x4e,0x24,0xf3,0x15,0x14,0x5f,0xc7,0xed,0xc7,0x15,
- 0x3f,0xf4,0xce,0x2f,0xb7,0xdb,0x7b,0x8a,0x87,0xc0,0xe4,0x7f,0x86,0x32,0xf8,0x9f,
- 0x0f,0xa8,0x5a,0x38,0x65,0x33,0xcd,0x82,0x76,0x62,0x9b,0x3b,0x9d,0x65,0x70,0xdc,
- 0xdb,0x3a,0x5d,0x6e,0x67,0x27,0xdc,0xcd,0xf5,0x73,0xa8,0xff,0xbb,0x95,0xff,0xe9,
- 0x66,0xa8,0x74,0xba,0x65,0xaf,0xab,0x91,0xca,0x80,0x13,0x11,0xe4,0x49,0x05,0xda,
- 0xa9,0xcc,0x30,0x46,0xf3,0x01,0x2d,0xfc,0xcf,0xe4,0x36,0x15,0x57,0xcf,0x70,0xb7,
- 0x04,0xda,0xa0,0x9d,0xbb,0xde,0x93,0x3b,0x98,0x5b,0xff,0x19,0xfe,0x17,0x17,0xd2,
- 0x7a,0x8e,0xe6,0xdf,0xa5,0xf1,0x8f,0x36,0xa5,0x1b,0x8e,0x22,0x90,0xb4,0x9f,0x55,
- 0xda,0xa0,0xd7,0xf0,0x79,0xed,0xd4,0xf6,0xfd,0x90,0xe1,0x5b,0x65,0x6f,0xaa,0x7e,
- 0x5f,0x32,0x1b,0xd9,0x57,0x36,0x14,0x5a,0xf8,0x9f,0x3d,0x70,0x11,0x6e,0x84,0xb9,
- 0x7d,0xe2,0x8f,0xa8,0xff,0x32,0x38,0x86,0x85,0x8b,0x70,0x41,0xf2,0x53,0xfe,0x7b,
- 0x1f,0xbb,0x44,0xaa,0x7f,0x9f,0x62,0xe5,0x7f,0xda,0xf4,0x23,0xcc,0x17,0xb7,0xef,
- 0x16,0x3f,0x81,0x43,0x75,0xbe,0xa0,0x9d,0xea,0xb1,0x0f,0xeb,0x3e,0xe7,0xc6,0xfa,
- 0xea,0xfe,0xf0,0x39,0xad,0x63,0x22,0xff,0x33,0x0b,0x1a,0xe2,0x4f,0x73,0x99,0xac,
- 0xa7,0xdf,0xeb,0x73,0x28,0x1f,0x7f,0x00,0xf6,0xc9,0xae,0xbb,0xdd,0x2d,0xb8,0x7f,
- 0x76,0xa7,0xf2,0x01,0x2d,0xf1,0x3f,0x59,0xb7,0x00,0x4f,0x6a,0xba,0xbc,0x1d,0xba,
- 0xe5,0xa8,0xe1,0xda,0x63,0x12,0xa7,0xcf,0xcb,0xad,0xb1,0x1c,0x60,0x47,0x47,0x53,
- 0x33,0x10,0x2f,0xa5,0xf9,0x9f,0x2f,0x41,0x63,0x62,0x76,0x58,0xfe,0x1b,0xf6,0x05,
- 0x3c,0x18,0x99,0x9d,0x74,0xaf,0x09,0xfc,0x0e,0xf6,0x36,0x14,0x85,0x73,0xee,0x60,
- 0x6f,0xc0,0xde,0x54,0x3e,0x78,0x9a,0xff,0xa9,0x95,0x25,0xe8,0x2a,0xf2,0xf6,0x78,
- 0xbc,0x68,0x8f,0x1b,0x04,0x7b,0x54,0xf1,0x35,0xdc,0x51,0xde,0xac,0xdc,0xc9,0x88,
- 0x00,0xff,0x24,0x7b,0x0d,0x07,0x28,0x53,0x2d,0xf8,0x67,0x1b,0xbb,0xa0,0x95,0xd2,
- 0x47,0x3f,0x93,0x6a,0x9b,0x7b,0xda,0x6c,0xa4,0x7b,0xb5,0x6e,0x1b,0xa2,0xf8,0x67,
- 0x42,0xd4,0x5d,0x19,0xf8,0xa7,0x1b,0xf1,0xe1,0x42,0x2a,0xdb,0xde,0x86,0x1b,0xaf,
- 0x43,0x43,0xfd,0xde,0x6b,0xef,0x25,0xd8,0x10,0xc7,0x8d,0x47,0x19,0x0d,0x78,0x54,
- 0x2d,0xf8,0x47,0xd8,0x06,0x11,0x28,0x12,0xe4,0xba,0x50,0x01,0x5a,0xef,0x66,0xbf,
- 0xc5,0x63,0x70,0x3f,0x25,0x82,0xfd,0x90,0x0d,0x81,0x99,0xff,0x1e,0xce,0xe0,0x7f,
- 0x1e,0x2c,0x58,0x1f,0x99,0x19,0xcf,0x59,0xc3,0xde,0xa5,0x40,0xa0,0xb0,0x7c,0x3b,
- 0xbb,0x08,0x28,0x7f,0xbc,0xca,0x0f,0xd8,0xef,0xcc,0xd2,0x88,0x88,0x67,0xac,0xfc,
- 0x4f,0x37,0x1a,0xad,0x6d,0x3c,0x67,0x21,0x5b,0x26,0xef,0x96,0x35,0xaf,0xbb,0x10,
- 0xd7,0xb3,0x3e,0x3a,0x27,0xac,0x54,0xb2,0x93,0xe1,0x06,0xca,0x7f,0x2f,0x98,0x80,
- 0x7f,0x0e,0xef,0xb8,0x6e,0x4b,0xe9,0x07,0x62,0x8f,0x74,0xb1,0xa7,0xbc,0xcd,0x1e,
- 0x17,0x8f,0xc3,0x51,0x5e,0x1e,0x77,0xec,0xac,0x3e,0xcb,0x0e,0x12,0x7e,0x4b,0x66,
- 0xf2,0x3f,0xd9,0x43,0x70,0xbd,0x9c,0xc7,0x1b,0xcc,0xc6,0x55,0xd2,0xd5,0xbc,0x38,
- 0xc9,0x86,0x27,0xfb,0x55,0xc7,0x3a,0xf1,0x84,0x79,0x54,0xd1,0x7c,0xb6,0xe2,0x9f,
- 0x0f,0x22,0x6f,0x0a,0x3e,0xdd,0xa3,0x9a,0x65,0x97,0x7c,0xfa,0x52,0xb3,0x3f,0x88,
- 0xee,0xff,0xbe,0xbd,0x85,0xfa,0x87,0x9a,0xfc,0x40,0x06,0xff,0xb3,0x18,0xa8,0xc8,
- 0x0f,0xc1,0x18,0x78,0xd3,0x78,0x2e,0xa4,0xc4,0x5c,0xab,0x59,0x53,0xb4,0x2c,0xac,
- 0xed,0x67,0x1f,0xf2,0x26,0x0a,0x84,0xde,0x6e,0x91,0x3f,0x85,0x42,0x09,0x7b,0x58,
- 0xfe,0x76,0xb8,0x36,0x66,0x9b,0x05,0xcf,0xc8,0xae,0x55,0xa6,0x9b,0x0c,0x05,0x91,
- 0x0e,0x5b,0xd8,0xa0,0x6e,0xd6,0x4b,0xcc,0xe4,0x7f,0x4a,0x10,0x6d,0xee,0xd0,0x65,
- 0x62,0x7b,0x76,0xe9,0x6d,0x21,0x34,0xc4,0xfa,0x09,0x08,0xf5,0x51,0xfc,0x0f,0x9a,
- 0x7f,0x08,0x84,0x9c,0x1b,0x2c,0xf8,0x27,0x2b,0x0c,0xc7,0x85,0xf2,0x54,0x5b,0xae,
- 0x24,0x23,0xd8,0x23,0x24,0x59,0x0f,0x02,0x3f,0x7b,0xca,0xff,0x85,0x57,0x22,0xd5,
- 0x65,0x69,0xfe,0xe7,0x6f,0xce,0x48,0x88,0xf7,0x42,0x8e,0xdb,0x70,0xff,0xfc,0x61,
- 0x11,0x02,0x21,0x3c,0x68,0x08,0x84,0xaa,0x42,0xb9,0x89,0xea,0xcf,0x53,0xa2,0xfe,
- 0x8d,0x06,0x2b,0xfe,0x39,0x0f,0x1f,0xc7,0xcb,0xc3,0xf6,0x5f,0x8b,0x67,0xd4,0x0b,
- 0xb5,0xe5,0xcb,0xcc,0x30,0x98,0x8f,0xe5,0xf2,0x20,0x35,0x0a,0x09,0xbf,0x96,0xe2,
- 0x7f,0x32,0xf3,0xbf,0xa2,0xd0,0x2a,0xc8,0x6b,0x59,0x52,0xa6,0x6e,0x68,0x88,0x7f,
- 0x06,0x08,0xf6,0x10,0xfe,0x39,0x21,0x47,0x4d,0x6a,0x28,0x03,0xff,0xf4,0xe3,0xdb,
- 0x6a,0x5f,0x93,0x9d,0xac,0x5b,0xde,0xc5,0xb5,0x15,0xe6,0xfb,0xee,0x90,0xb5,0xaf,
- 0xbb,0xbd,0x6c,0x34,0xff,0xfd,0x8a,0x09,0xf9,0x5f,0xcd,0x35,0xad,0x7a,0x70,0x2b,
- 0xeb,0xe7,0xbb,0x47,0xdd,0x88,0x3a,0xda,0x5f,0xa1,0x9e,0x14,0xfe,0xc1,0x2b,0x0f,
- 0x66,0xe4,0x7f,0x35,0xea,0xa7,0x04,0x5f,0xd8,0xf3,0x86,0xf0,0x01,0x8c,0x48,0xbe,
- 0x5a,0x07,0xc5,0x77,0x9d,0xaa,0xf3,0xe9,0xf6,0x6d,0x02,0x31,0x7e,0x66,0x46,0x98,
- 0x35,0xff,0xeb,0x09,0x38,0x0d,0x07,0x82,0xa9,0xb6,0x68,0x36,0x1a,0x50,0xd8,0x0f,
- 0xdf,0x4f,0x6d,0x73,0x53,0xf1,0xcf,0xb8,0x1f,0x26,0xe4,0x7f,0xc9,0x3e,0xb0,0x37,
- 0x3e,0x60,0x86,0xfd,0x8c,0xc5,0x5f,0xf9,0x9c,0x38,0x38,0xe1,0x35,0xeb,0xff,0x88,
- 0x56,0xfc,0x23,0x55,0xe8,0x07,0x82,0x68,0x54,0x0e,0x20,0x08,0x39,0xa0,0x17,0xb7,
- 0xcb,0x71,0x5c,0x9f,0x5f,0xa4,0xda,0xc2,0xae,0x71,0xad,0x33,0xe6,0x70,0x65,0xd0,
- 0x96,0x99,0xff,0x45,0xdd,0x60,0x65,0x0f,0xdb,0xa8,0xef,0xee,0xd6,0x98,0x9b,0xcc,
- 0xae,0xfa,0xc2,0xb8,0x5e,0x8b,0xeb,0x33,0xd6,0x61,0xc7,0x9a,0xff,0x35,0x85,0xe2,
- 0xf7,0x0c,0xf9,0xcb,0xd4,0x0d,0x4d,0x2f,0xa2,0x46,0xb1,0xe7,0x61,0x07,0x68,0x01,
- 0x2a,0x0c,0x08,0xeb,0xf5,0xd9,0x34,0x3f,0x33,0xff,0xeb,0x34,0x9f,0x97,0xf4,0x7c,
- 0x5f,0x7c,0x94,0x02,0x75,0xc2,0xf6,0x35,0xe2,0x3b,0xf0,0x0a,0x75,0x74,0xfd,0xb1,
- 0xf8,0x19,0xea,0x97,0x79,0x49,0x47,0x66,0xfe,0x97,0x59,0x1f,0x40,0x77,0xc4,0xa7,
- 0x51,0xe0,0x87,0x7f,0x11,0xaa,0xf5,0x5e,0x0a,0xdb,0x58,0xe4,0xe8,0x40,0x79,0xf2,
- 0xa7,0x54,0x21,0x44,0x4b,0xfe,0x17,0xf1,0x3f,0x7c,0x77,0x72,0xd9,0x40,0xb1,0xbf,
- 0xe6,0x02,0x1d,0xdb,0x61,0xbc,0xff,0x6b,0x09,0xa2,0x7d,0xa8,0x10,0x50,0x8a,0x11,
- 0xb2,0xe4,0x7f,0x4d,0xde,0xa6,0x3f,0x4b,0x4d,0x3d,0x4e,0xb0,0xe9,0xe6,0x00,0xed,
- 0xaf,0xb7,0xe1,0xb7,0x53,0x8b,0x82,0x8a,0x2e,0xde,0xce,0xcd,0xe7,0x1f,0xb2,0x65,
- 0xe0,0x1f,0x0d,0xed,0xb5,0x6e,0x77,0x98,0xe6,0xa7,0xd8,0xad,0xf3,0xb0,0xae,0x68,
- 0xa6,0xd1,0xdc,0xe7,0x54,0x85,0xf5,0xe6,0x15,0x5b,0xb6,0x3e,0xb6,0xfe,0xe1,0x02,
- 0x93,0x6f,0xac,0x0d,0x3e,0x45,0x69,0x17,0x5a,0x7c,0x48,0x59,0xc8,0x5e,0xe7,0x8f,
- 0xf0,0x27,0x12,0x4a,0x41,0x64,0xe9,0x22,0x53,0xfe,0x78,0x6d,0x99,0xf9,0x5f,0x68,
- 0xa4,0x1f,0x5f,0xd6,0x46,0x61,0x2d,0xba,0x2f,0x41,0xf1,0x3c,0xfc,0x90,0xb1,0xa0,
- 0xd0,0xf1,0xbc,0x38,0x2b,0x80,0x86,0x76,0x97,0x23,0x61,0xe9,0x0f,0x92,0xea,0x0f,
- 0x5b,0x69,0x38,0xda,0x1a,0x06,0xe1,0xac,0xe1,0xbf,0x3f,0xd5,0x28,0x2d,0x5c,0x41,
- 0xf5,0x37,0xcc,0x8e,0x69,0xc6,0x24,0xef,0x04,0xfe,0xe7,0x65,0x4a,0x72,0x19,0x12,
- 0x7f,0x02,0x9f,0x71,0x33,0xff,0xeb,0x3c,0x3b,0x0c,0x78,0xa2,0x93,0x38,0xed,0x12,
- 0x31,0x42,0x5d,0x19,0xf9,0x5f,0x5f,0xe1,0x4d,0x06,0x33,0xe4,0x8f,0x50,0xbf,0x1f,
- 0x30,0x8a,0xc3,0x66,0x61,0xcc,0xa6,0x46,0x57,0x91,0xfc,0x04,0xea,0xaf,0x13,0x06,
- 0xea,0x5f,0x6e,0xed,0x8f,0x96,0x75,0x27,0x34,0xad,0x6d,0x7d,0x19,0xb5,0xff,0x1d,
- 0xd0,0xa9,0xb9,0xe2,0xd3,0xa8,0x70,0x71,0x13,0x77,0xb5,0x9a,0x78,0xe9,0x05,0xd5,
- 0xd4,0x77,0x96,0xfe,0x68,0xa0,0x49,0x26,0x1a,0x04,0xa7,0xd9,0x28,0xc4,0x98,0xe6,
- 0xc5,0xf9,0x94,0xff,0xe5,0x06,0xa7,0x81,0x66,0x0c,0xad,0xcf,0x1c,0x6b,0xfe,0xd7,
- 0x6a,0x12,0x92,0x86,0x87,0xfc,0x3b,0x54,0x88,0x46,0xa1,0xf7,0x1d,0x0f,0x44,0x1c,
- 0xad,0x3f,0xa3,0x8d,0xc7,0xaf,0xc6,0xaf,0x1a,0x62,0x9f,0x43,0x55,0xd7,0x5c,0xc3,
- 0x6c,0x6b,0x65,0xda,0xef,0xf7,0x52,0x5b,0x58,0x98,0xa4,0xe3,0xfe,0xf9,0x60,0xb4,
- 0xbe,0x4d,0x1a,0xff,0xe4,0x5e,0x84,0x3f,0x73,0x5f,0xd2,0x73,0x5c,0xbc,0x04,0x2f,
- 0xd5,0x97,0x27,0x37,0x77,0x89,0x25,0xac,0x57,0x2f,0xef,0xbd,0x65,0x38,0x7f,0x1b,
- 0x7f,0xd7,0x5b,0xde,0x62,0x3f,0x65,0xad,0xff,0xc3,0x29,0xff,0xcb,0x95,0x44,0x7b,
- 0x73,0x90,0x37,0x47,0x5c,0xc9,0x1c,0x1e,0x98,0xa5,0x46,0x6b,0x16,0xf4,0xca,0x9d,
- 0x68,0x74,0x36,0x79,0x5d,0x74,0xd0,0x2c,0xf5,0x0f,0xa5,0x8d,0xf0,0x3c,0x94,0x74,
- 0x05,0x7d,0x07,0x7b,0xf9,0x33,0x74,0x9a,0x9c,0x8c,0x91,0xc6,0x8f,0xca,0x5e,0x67,
- 0xbb,0xda,0x20,0x68,0x2d,0xb2,0xa6,0xa7,0xeb,0x1f,0x12,0xdf,0xf2,0x42,0xe8,0x09,
- 0x82,0x0d,0x83,0x12,0xd1,0x3e,0xca,0x7e,0xd7,0x2c,0x44,0x5c,0x65,0x61,0x39,0x11,
- 0x70,0x33,0x04,0x05,0x08,0xa2,0x2c,0xf9,0x5f,0x82,0xb4,0x53,0x3a,0xd7,0xbd,0x80,
- 0x92,0xb0,0x7a,0xcd,0xfe,0x68,0x9b,0x37,0x8a,0x73,0xe4,0xc3,0xbc,0xb5,0xa3,0xcc,
- 0x2b,0xae,0x83,0x23,0xc1,0x8e,0x2b,0x3c,0xf1,0xe2,0x74,0xfc,0x7f,0x3d,0xec,0x97,
- 0x2e,0xc1,0x0b,0xe6,0x36,0x90,0xa9,0x50,0x40,0x2e,0xca,0x03,0xb8,0x24,0xf8,0xe8,
- 0xca,0xe7,0x5e,0xb4,0x38,0x34,0x47,0xf2,0x37,0xe9,0xfa,0x87,0x43,0xb0,0x53,0x25,
- 0x92,0xed,0xea,0x5d,0xe2,0x2f,0xe0,0x88,0x80,0xbb,0x71,0x9b,0xe8,0x91,0x0e,0x3b,
- 0xfd,0xba,0x27,0xd1,0xe0,0x81,0x97,0x54,0xfc,0x10,0xd6,0xf8,0x9f,0x01,0xc9,0x43,
- 0x69,0x6e,0x44,0x03,0x0e,0x4a,0xbf,0x1f,0x72,0x19,0x4b,0x3b,0xf0,0x20,0xbc,0x25,
- 0xe4,0x05,0x83,0x7b,0x1a,0xee,0xe0,0xcd,0x06,0x0a,0xea,0xb6,0xe2,0x05,0x19,0xf5,
- 0x0f,0x77,0x6b,0x1a,0xd1,0x14,0xe4,0x9f,0x8a,0x1b,0x4a,0xd4,0x16,0x85,0x0d,0x90,
- 0x77,0x10,0x2d,0xb2,0x5c,0x68,0x4d,0xce,0x31,0xe6,0x68,0xe3,0xdd,0x34,0xa9,0x04,
- 0xcb,0x0c,0xf8,0x15,0x5f,0x39,0xa0,0xdc,0x8e,0x78,0xe0,0xa1,0x78,0xd1,0x29,0xb4,
- 0x9d,0x1e,0xd9,0xf2,0xd3,0xee,0xd2,0x24,0xac,0x61,0xf7,0xa0,0xe2,0x9f,0x9d,0xb4,
- 0x0d,0x44,0xfc,0xe3,0xf3,0x83,0x60,0x27,0x90,0x93,0x54,0x6e,0x10,0x77,0xc2,0x4b,
- 0x71,0x6d,0xc0,0xa1,0x89,0x9b,0xb8,0x01,0x9e,0xb0,0x67,0x61,0xb1,0xcc,0xdf,0x43,
- 0x44,0x94,0xa7,0x29,0xb7,0xa6,0xeb,0x1f,0x4a,0x3b,0x75,0xb3,0x9a,0x56,0x82,0x88,
- 0x56,0x15,0x07,0xad,0xe2,0x1d,0xd2,0xb0,0x60,0x66,0xb8,0x0f,0xd8,0x8e,0xc3,0x82,
- 0xfe,0x5c,0xcd,0xda,0x1f,0x76,0xb4,0xfe,0xcf,0x26,0xda,0x96,0x66,0x3d,0xae,0xbe,
- 0xe2,0xa7,0x11,0x11,0x99,0x69,0x77,0x25,0xf0,0x7b,0xc1,0x97,0x44,0x45,0x99,0x59,
- 0xff,0x99,0xf8,0x1f,0xb1,0x0e,0x8f,0xe1,0xfa,0x14,0xff,0x53,0x88,0x3a,0xa1,0x94,
- 0xf2,0xbf,0xd0,0x22,0x93,0x50,0x34,0x85,0x9d,0x9f,0x59,0xe4,0xcf,0xa3,0x63,0xa0,
- 0xee,0x1d,0xf6,0x50,0x2a,0xfe,0x79,0x13,0xac,0xe3,0x9e,0xf0,0xec,0x35,0x6c,0x06,
- 0x7b,0x68,0x5d,0x51,0x52,0xae,0xcd,0xe8,0x0f,0xbb,0x11,0x3a,0xc8,0x8d,0xb8,0x90,
- 0xed,0x4c,0x55,0x13,0xdd,0xc3,0x1c,0x5a,0x2b,0xf7,0xdc,0xdd,0xe4,0x65,0x0e,0x68,
- 0x88,0xc5,0xa9,0xdf,0x65,0xba,0xfe,0x73,0x8f,0xd4,0x0e,0x17,0x65,0x5f,0xfd,0xf2,
- 0x78,0x80,0xaa,0xfd,0x94,0x71,0x47,0x7f,0x7e,0xa7,0x7b,0xd3,0xc1,0xaa,0x58,0x6e,
- 0x5c,0xcc,0x89,0xbc,0x55,0x73,0x77,0xdc,0x93,0x14,0xcf,0x8e,0xef,0xe7,0x54,0x7f,
- 0xb4,0x03,0xa3,0xb4,0x8f,0x6e,0x7a,0xbb,0x70,0x30,0xdf,0x2f,0xe5,0x35,0x7e,0x39,
- 0x89,0x56,0x52,0x95,0x94,0x59,0xff,0x19,0xda,0xd4,0x11,0x54,0x82,0xf7,0x53,0x98,
- 0xc7,0xa1,0x38,0x69,0xb7,0xfc,0xd5,0xf2,0x88,0x56,0x19,0x94,0x62,0x62,0x1b,0x3b,
- 0xc1,0x7d,0x13,0xea,0x3f,0xd7,0x94,0x50,0x7f,0x6a,0x04,0x39,0x2e,0x34,0xa3,0x28,
- 0xb0,0x64,0x0b,0x15,0x22,0xce,0xaa,0x08,0xc9,0x57,0x45,0x66,0xb1,0xa6,0x54,0x86,
- 0x7b,0xba,0xfe,0xa1,0xd9,0x1f,0x56,0x6d,0xd5,0x73,0x62,0x2e,0xea,0x06,0x9b,0x4d,
- 0xbf,0xa6,0x32,0xc8,0x6c,0x31,0xf6,0x78,0xcd,0xcf,0xa7,0x16,0x53,0xeb,0x34,0x4b,
- 0xfd,0x67,0x30,0x9d,0x3e,0xba,0x32,0x9d,0xfa,0xa3,0x31,0xcf,0x22,0x65,0x1b,0x93,
- 0xd4,0x5d,0x86,0x27,0x84,0xf3,0x25,0x79,0xad,0x5e,0x44,0xad,0xd3,0xd2,0xf9,0x17,
- 0x2b,0xe4,0x54,0x90,0xe1,0x57,0x39,0xe2,0x8d,0x51,0xb7,0x57,0x58,0x20,0x46,0x68,
- 0x13,0x17,0xe3,0xa8,0x9c,0xb7,0x98,0xf5,0x9f,0x33,0xfc,0x5f,0x9f,0xe3,0x6e,0xb9,
- 0xba,0x6f,0x12,0x39,0x86,0xca,0x52,0xf5,0x0f,0x2f,0x04,0x6e,0x08,0xfd,0x3c,0x24,
- 0xfe,0x96,0x3a,0x7a,0x7f,0x0d,0x11,0x91,0xa5,0xfe,0x73,0x6e,0x1b,0x7c,0x8e,0x27,
- 0x06,0x2f,0xee,0x61,0xaf,0x99,0xe8,0xa8,0x79,0xbe,0x76,0x41,0x2e,0xa7,0x2b,0xc7,
- 0x22,0xaf,0xb9,0xfd,0xcb,0xec,0x93,0xc5,0xb2,0x8c,0xfa,0x87,0x29,0xff,0x57,0x04,
- 0x65,0x08,0x95,0x59,0x8b,0x30,0x4d,0xed,0x94,0x5c,0x4c,0x21,0xfe,0xa7,0x5d,0xf3,
- 0xdb,0xe5,0x83,0x96,0xfe,0xb0,0x61,0xa9,0x31,0xf5,0xbe,0x4e,0x67,0x37,0x0a,0x77,
- 0x8f,0xae,0x4c,0x8d,0x20,0xf0,0x93,0x4b,0x6a,0x88,0x81,0xd7,0xb7,0xb8,0x67,0x07,
- 0xa9,0x3f,0xec,0xf8,0xfe,0xe9,0x54,0xdb,0x60,0x1f,0x2e,0xf2,0xd2,0x2d,0x54,0x4f,
- 0x9b,0xf8,0x1f,0x95,0x95,0x68,0xfb,0xc0,0x45,0xfd,0xd1,0xfa,0x5d,0x4f,0xd1,0x46,
- 0xed,0xb3,0xd4,0x3f,0x6c,0x85,0x36,0x38,0xad,0xfb,0x16,0x21,0x68,0xa1,0xb6,0x4d,
- 0x7e,0x0a,0x5c,0x2f,0x81,0x11,0x39,0x55,0xe8,0x80,0xbd,0xc9,0xee,0xd3,0xcd,0xfe,
- 0xb0,0x63,0xf3,0x7b,0xc6,0xfb,0xc3,0x4e,0x22,0xb6,0xc7,0xf4,0x76,0xf5,0xab,0xa7,
- 0x35,0xff,0x2a,0x33,0x71,0x7e,0x04,0x2a,0x02,0x73,0x63,0x0d,0xe9,0xfa,0x87,0x36,
- 0xda,0x6f,0x21,0x1f,0xe4,0xd2,0x36,0xeb,0x91,0xfd,0x88,0xf8,0xc5,0x95,0xa3,0x15,
- 0x09,0xc4,0x2e,0xbc,0x5d,0x05,0x5a,0x6c,0x8a,0xb5,0xfe,0xa1,0xd9,0x1f,0x8d,0x37,
- 0x0f,0x3e,0x39,0x0c,0xef,0xc8,0x65,0x7c,0x53,0xdc,0x89,0x57,0x26,0xff,0x24,0x22,
- 0x53,0x99,0xce,0x0d,0xdc,0x2c,0x0d,0x1d,0x18,0xdf,0x0d,0x29,0x7b,0x3c,0x6c,0xe4,
- 0x78,0x17,0x7f,0x00,0x11,0x6e,0xa6,0xbd,0x2f,0x83,0x8e,0xc9,0x25,0x71,0xd9,0x4f,
- 0x40,0x28,0xe6,0x1e,0x52,0xf6,0xb3,0x74,0xfd,0x43,0x01,0xa6,0xcb,0x2f,0xc2,0x4a,
- 0xaa,0xdf,0xb5,0xcd,0xbd,0x0d,0x4a,0xbb,0x94,0xf9,0x01,0xea,0x98,0xe6,0x46,0x20,
- 0x14,0x39,0xef,0x5c,0xcb,0x8b,0x0e,0x2a,0x43,0x91,0x60,0x1a,0x6f,0xf3,0x47,0xe1,
- 0x39,0x04,0x39,0xb9,0x6b,0xd0,0x6c,0xe9,0xae,0xbf,0x31,0xb9,0x79,0x85,0xf8,0x2d,
- 0xf5,0x0c,0x9f,0x19,0xf7,0x10,0x10,0xea,0xe6,0x3f,0xa6,0x88,0xe8,0x74,0xfd,0xc3,
- 0x39,0x52,0x2a,0xff,0xdd,0x61,0x88,0xfd,0xc4,0xa6,0x1a,0x79,0x67,0xc4,0x41,0x69,
- 0x34,0xde,0x75,0x10,0xa1,0x23,0x89,0x26,0x25,0xed,0xff,0xd2,0xa5,0x03,0xf0,0x45,
- 0xa4,0x9c,0xca,0xb6,0x1c,0xd0,0x07,0x23,0x55,0x49,0xc7,0x79,0xe1,0xbe,0xe0,0xc5,
- 0x58,0x55,0xdc,0x3e,0x8c,0x88,0xeb,0xe3,0x88,0xd9,0x1f,0x2d,0x2d,0x1f,0xcc,0xfa,
- 0x87,0x85,0x3b,0xba,0x94,0x9f,0x4e,0xba,0x8f,0xaf,0x8d,0xe3,0xfb,0xfe,0x1e,0x81,
- 0xcd,0x73,0x85,0x9e,0x80,0x5c,0xc1,0xae,0xe6,0x88,0x67,0xba,0xe5,0x70,0x20,0x8d,
- 0x3f,0xe3,0x2a,0xc5,0x3f,0xcf,0x34,0x14,0x9d,0xed,0xd7,0xdb,0xb4,0xd2,0x6e,0x25,
- 0xc4,0xa6,0x17,0xee,0x51,0x4b,0xb9,0x7c,0x17,0xdb,0xae,0xef,0x91,0x51,0x5e,0x7d,
- 0x0f,0x81,0xe2,0xd8,0xfc,0x54,0xfd,0xc3,0x12,0x0a,0x5a,0xb8,0x83,0xc2,0x3c,0x8c,
- 0x86,0x2b,0x51,0x8c,0x77,0x08,0x9e,0x04,0x8a,0x1d,0x3b,0x1d,0xed,0xa4,0x1c,0x77,
- 0xf5,0x59,0xbe,0x17,0xea,0x2f,0x61,0x01,0x81,0x84,0x36,0xbc,0x89,0xf9,0x76,0xa5,
- 0x70,0x96,0xfb,0x63,0x9e,0x84,0xb8,0x49,0x45,0x44,0xed,0xde,0x19,0x13,0x8f,0xa6,
- 0xeb,0x3f,0xc3,0xa0,0x74,0x4e,0xab,0x30,0x10,0x3f,0xef,0xa0,0x63,0x68,0x2c,0x1f,
- 0x42,0xc1,0x7e,0x56,0x37,0xd7,0xe7,0xd3,0xc6,0x45,0x70,0x40,0x75,0xc4,0xf2,0xd3,
- 0xf5,0x0f,0x05,0xb3,0x1f,0x7a,0x0a,0xf6,0x50,0xb7,0x41,0x43,0x59,0x21,0x56,0xe2,
- 0xf9,0xaa,0x88,0x38,0xce,0xe2,0x95,0xde,0x22,0x5f,0xb6,0xf4,0x6b,0xa6,0xad,0x1e,
- 0x9b,0x4f,0xfd,0x61,0x77,0x27,0x51,0xed,0x6e,0x64,0xa7,0x20,0xfa,0x0d,0x1c,0xec,
- 0x0b,0x78,0xa4,0xce,0xb6,0x32,0xdf,0xd2,0x07,0xd9,0x09,0x1d,0x81,0x8d,0x4a,0xa6,
- 0x59,0x1a,0xff,0xdc,0x74,0x87,0xfa,0x02,0x67,0xc6,0xd2,0x96,0xc0,0xc7,0x7a,0x8b,
- 0x59,0x08,0x3a,0x7b,0x27,0x31,0x48,0x49,0x25,0xe1,0x1c,0xb4,0x11,0x95,0x61,0x8b,
- 0x33,0x4b,0xfd,0x43,0xb0,0xcb,0x78,0x1e,0xbb,0xa8,0x5f,0x7c,0x84,0xa3,0xbe,0x5b,
- 0xea,0xb3,0x6d,0x54,0x3b,0x24,0x4f,0x96,0x82,0xb0,0x23,0x5e,0x2f,0xc6,0x51,0xdf,
- 0xd9,0x22,0x90,0xfe,0xa3,0xfc,0x2f,0xdf,0x6f,0x51,0xed,0x0e,0xc6,0x8f,0x87,0x7d,
- 0xc7,0x50,0x2c,0xa0,0x86,0x12,0x2a,0xf8,0xa4,0x44,0xfe,0x60,0xc4,0x90,0x7c,0x46,
- 0x5e,0x5c,0x8c,0xcf,0x1a,0x7b,0x9e,0x7a,0xb3,0xfe,0xe1,0x8b,0x3d,0x68,0x64,0x0d,
- 0xc0,0x70,0xb8,0xaa,0xc7,0xb1,0x47,0xbc,0xd7,0x6c,0x0b,0xeb,0x98,0x5f,0x9e,0x34,
- 0xfb,0xa3,0xe5,0x26,0xf3,0x6b,0xd3,0xf8,0x07,0x17,0xf1,0x7c,0x6d,0xb9,0x2d,0xcf,
- 0x10,0x87,0x62,0xaf,0x69,0x55,0x44,0x04,0xf9,0xe1,0xbc,0x5a,0xd5,0x66,0x7f,0x05,
- 0x07,0xa9,0xd2,0x0a,0x16,0xfc,0x13,0x57,0xff,0x08,0x9d,0xab,0xd9,0x54,0x79,0x6d,
- 0xe4,0x44,0xa8,0xa9,0xaf,0x4c,0x77,0xb7,0xb0,0x5f,0x40,0xa7,0xab,0xac,0x69,0x43,
- 0x84,0x99,0xa9,0xf1,0x49,0xa5,0xd3,0x69,0xe9,0x7f,0x91,0xf5,0x1a,0x24,0x34,0x4d,
- 0x9e,0x0a,0xcc,0xd0,0x04,0x66,0xf6,0x7f,0x5f,0x06,0x09,0xbd,0xac,0x5e,0x7e,0x90,
- 0x10,0xb2,0x40,0xa9,0x97,0xd6,0xfa,0xcf,0x53,0x76,0xca,0x9d,0xb2,0x8b,0xc9,0xfc,
- 0xa0,0xe1,0x6a,0x92,0x67,0xd5,0xc9,0xb1,0xc5,0x83,0xc4,0xb0,0x71,0x5b,0x34,0xb0,
- 0x93,0xf2,0xef,0xa8,0xff,0xc5,0x70,0x5a,0x3f,0x16,0x74,0xc2,0x45,0x7d,0x77,0xec,
- 0x96,0xfe,0xfc,0x11,0xf5,0x75,0xfd,0xea,0x30,0x02,0xb9,0x3b,0xd4,0x11,0xee,0xe7,
- 0x1b,0x37,0x88,0x9e,0x51,0x7f,0x71,0xf5,0xf1,0xf1,0xe7,0xa7,0x14,0x9d,0x2f,0xc8,
- 0x3f,0x98,0x5c,0xb4,0x06,0x17,0xaa,0xd4,0x70,0xbc,0x29,0x9a,0x89,0xf0,0x5c,0x31,
- 0xd8,0x58,0xaa,0x20,0xb3,0xf6,0xbf,0xd8,0x29,0x3f,0x7f,0x93,0x7f,0x8b,0xbd,0x4d,
- 0x9c,0x0d,0x47,0xf4,0x8a,0x21,0x54,0xeb,0x9e,0x54,0xc7,0xcc,0x56,0x71,0x3c,0x31,
- 0xf3,0x74,0x9a,0xff,0x91,0x4a,0xed,0xcf,0x0b,0x65,0xbc,0x3d,0x6e,0xfb,0x72,0xa0,
- 0x99,0x2f,0x48,0xda,0x54,0x33,0x50,0x6a,0xfe,0x76,0x94,0xcf,0x14,0xc8,0x67,0xa6,
- 0x16,0x5a,0xea,0x3f,0x67,0x2d,0x75,0xef,0xa2,0xfe,0xe6,0xaa,0x96,0xa5,0xf3,0x26,
- 0x6d,0x85,0xb9,0x3e,0x1d,0xf2,0x6a,0xaa,0xd7,0x31,0x5a,0x4a,0xc2,0xda,0xff,0x62,
- 0xa5,0x30,0x35,0xf4,0x2c,0x2f,0x5d,0x2d,0xfc,0x8d,0xf3,0x8a,0x40,0x63,0xcb,0xcc,
- 0xb0,0x6d,0x0d,0xfb,0x16,0x3c,0xdb,0x32,0x33,0x4e,0x11,0xc2,0xea,0x65,0xfd,0x2f,
- 0x6a,0x65,0xbb,0x76,0x17,0xf8,0x6b,0x72,0xb7,0xdc,0x5a,0x12,0x32,0x54,0x9f,0x1e,
- 0xf4,0x2a,0xcb,0x10,0xd5,0x25,0xb8,0xc3,0xdb,0xd0,0x7b,0xf3,0x68,0xff,0x8b,0xb7,
- 0xac,0xfd,0x2f,0xa4,0x1b,0xd5,0xaa,0x9a,0xbc,0x5f,0x2b,0x67,0xf4,0x1f,0xc5,0xae,
- 0x93,0x1c,0x77,0xe1,0xfa,0x5c,0x90,0x6e,0xa0,0x8c,0x8c,0xf3,0x93,0x3f,0x1d,0xab,
- 0x7f,0x38,0xf6,0xbe,0xd1,0xac,0xc3,0x40,0x24,0x1b,0x2d,0x8b,0x74,0x18,0xad,0xf5,
- 0xd2,0x7d,0xb8,0x3e,0x17,0xf9,0x67,0xdc,0x71,0x5c,0xf1,0xa8,0xe7,0xd8,0x68,0xfd,
- 0xf6,0x74,0xfc,0x4f,0x8b,0x69,0x54,0x22,0xfa,0xb5,0x43,0x84,0x1a,0x61,0x20,0xec,
- 0x11,0x10,0x11,0x71,0xa5,0x8f,0x8d,0xa5,0xc6,0x5f,0x91,0xce,0x7f,0xa1,0xf8,0x9f,
- 0x27,0x1b,0x11,0xe4,0x50,0xfc,0xcf,0x3a,0x04,0x42,0x72,0x45,0xf6,0x0c,0x48,0x34,
- 0xcc,0x8c,0x37,0xdf,0xeb,0x9c,0x91,0x33,0xfa,0xbe,0x96,0xfc,0xaf,0x02,0x33,0xec,
- 0x90,0x92,0x56,0xa8,0xed,0x35,0x11,0x8f,0x24,0x76,0xb6,0xb7,0x72,0x65,0x2a,0xb3,
- 0x8f,0xad,0xe7,0x1b,0x19,0xfc,0xcf,0x47,0xad,0x1d,0xed,0x9e,0xa7,0x95,0x39,0x91,
- 0xa3,0xf1,0xdd,0x71,0x4f,0x1c,0xb5,0x15,0x85,0x05,0x6e,0x4e,0x8a,0xee,0x54,0x69,
- 0xa0,0x09,0xfd,0x2f,0x20,0x95,0xed,0x55,0x4c,0xf9,0xa4,0xfe,0xc2,0x5b,0x4c,0x37,
- 0x10,0x65,0x84,0x51,0x3f,0x88,0xe1,0xcb,0xfb,0x5f,0xf4,0xeb,0xa7,0xc1,0x1b,0xb2,
- 0x17,0x88,0x59,0xd0,0xa5,0x7b,0xeb,0xec,0x66,0xfd,0x1f,0x5e,0x61,0xd6,0xc7,0x1b,
- 0x0b,0x05,0xb1,0xd6,0x7f,0xfe,0x7b,0x8a,0xff,0x09,0xc9,0xdb,0xb2,0xc9,0x2d,0xe5,
- 0x5a,0x81,0xda,0xb6,0x1f,0xf6,0xc5,0xcb,0xea,0xf0,0xa0,0x11,0xdf,0x5b,0x76,0x79,
- 0xff,0x8b,0x5f,0x41,0x71,0x48,0x3e,0xe6,0x3c,0x03,0xf7,0x83,0x4b,0x2f,0xa4,0xfc,
- 0xaf,0x17,0xd4,0x3b,0x43,0xf2,0x4f,0x59,0xbf,0x30,0x1a,0xaf,0x62,0xc9,0x7f,0x47,
- 0xfc,0xf3,0x2c,0x82,0x1c,0xf9,0x36,0xf6,0x53,0x58,0x0b,0x5a,0x88,0x23,0x0c,0x50,
- 0xcd,0x88,0xe8,0x02,0xd6,0x2d,0xec,0x48,0xf5,0x83,0xb0,0xe4,0xbf,0xcb,0xe4,0xff,
- 0xea,0x20,0x8f,0x7d,0x9c,0x1d,0x35,0x53,0x5b,0x4c,0xb7,0xd7,0x3d,0x29,0xfb,0x6b,
- 0xf4,0x7d,0x2d,0xfd,0x2f,0xae,0xa2,0xb4,0xf7,0xd1,0xb2,0x87,0x23,0x81,0xd1,0xb4,
- 0xaf,0x4b,0xfa,0x7d,0xba,0xe3,0xcc,0x28,0x5f,0x8d,0xf2,0x39,0x8d,0x7f,0x5a,0xb2,
- 0xbe,0x80,0x43,0xed,0x15,0x77,0xe6,0xb5,0x88,0xb3,0xe0,0xe5,0xf6,0x79,0x35,0xf6,
- 0xbe,0x06,0xea,0x7f,0xf1,0x4f,0xba,0x39,0xf8,0x0b,0xfd,0x2f,0x4e,0xb1,0x68,0x8f,
- 0xcb,0xeb,0xde,0xb4,0x21,0x3f,0x1a,0xd5,0x5d,0xdb,0x6c,0x66,0x23,0x0c,0xe2,0x7f,
- 0xcc,0x01,0x98,0x1e,0xb1,0x74,0xff,0x0b,0xc8,0x7a,0x39,0xa7,0x1e,0x66,0xeb,0xb6,
- 0x6f,0xb0,0x9f,0x3e,0xb1,0x03,0xc2,0x41,0xd9,0xcc,0xff,0x0a,0xc6,0x97,0x04,0x9d,
- 0x07,0xc7,0xfa,0x5f,0x04,0xde,0x18,0xff,0xbe,0xc4,0xff,0xd4,0x43,0x91,0x6e,0x0b,
- 0xb1,0x6d,0x30,0x9b,0xb9,0xc2,0x1b,0x62,0x2c,0xd5,0xb1,0xd7,0xf4,0x30,0x8e,0xad,
- 0x67,0xba,0xfe,0x73,0xc1,0xe3,0x08,0x7b,0x2a,0xa8,0x88,0x53,0x1b,0xbe,0xdd,0xd6,
- 0xd0,0xb2,0x42,0xa5,0xc4,0x8c,0xf8,0xf2,0x6c,0x53,0xc6,0x9f,0x7f,0xc0,0xa2,0x7f,
- 0xc7,0xf3,0xdf,0x57,0xcb,0xbf,0xa6,0x5f,0x1f,0xa6,0x6d,0x40,0x8e,0xc2,0xc2,0xf4,
- 0x7e,0xb0,0xf6,0xbf,0xa8,0x1f,0xab,0xb6,0xed,0x25,0xb3,0x57,0x35,0x89,0xb8,0x61,
- 0xdd,0x07,0xcb,0xd7,0x89,0x9a,0x59,0x7f,0x20,0x33,0xff,0x5d,0xaa,0x40,0xeb,0xa3,
- 0x0c,0xbf,0xd6,0xf4,0x85,0xb0,0x29,0xfc,0x58,0x3c,0x97,0xca,0x3e,0x1f,0xf8,0xf5,
- 0xee,0x76,0x25,0x69,0x4b,0xa5,0xc6,0x37,0xc7,0x2d,0xf5,0x75,0xdd,0x6b,0x97,0x73,
- 0x4a,0x72,0x17,0xbd,0xae,0x20,0x68,0xc1,0xb2,0x78,0x21,0x15,0x2a,0xd9,0x67,0xb8,
- 0x82,0x88,0x90,0xed,0xa9,0xc2,0xe0,0xde,0x6c,0x4b,0xff,0x0b,0xe1,0x2a,0x4a,0xdb,
- 0xec,0x52,0xea,0x7c,0x2b,0xf0,0x55,0x4a,0x0f,0xde,0xac,0x21,0x22,0x7a,0x56,0x9f,
- 0x09,0x4a,0x28,0x32,0x76,0x7e,0x9d,0x96,0xfe,0x17,0x72,0x1e,0x3c,0xc4,0x6f,0xd4,
- 0x96,0xcb,0xd9,0xb7,0x42,0x3f,0xbf,0x91,0xba,0xc1,0xce,0x80,0x0b,0x44,0xfb,0x1c,
- 0xc7,0xc1,0x87,0x66,0x69,0x68,0xf1,0x70,0xba,0xfe,0xf3,0x95,0x3b,0xd5,0x73,0x66,
- 0x5a,0xa5,0x33,0x8e,0x66,0x8d,0x2f,0xd5,0xf6,0xe2,0x02,0xdc,0x20,0x98,0x15,0x6b,
- 0x47,0xe3,0x7f,0x32,0xf9,0x9f,0xd7,0xf9,0x75,0xfd,0xf6,0xe1,0xe2,0x0a,0xf5,0x68,
- 0x3d,0xc2,0x9e,0x81,0x94,0xda,0x5a,0x49,0xf1,0x3f,0xf0,0xe9,0x5f,0xe8,0x7f,0x81,
- 0x46,0x56,0xe9,0xcb,0x3d,0x75,0xae,0x42,0xde,0x48,0x68,0x76,0x55,0x4a,0xec,0x00,
- 0x45,0xf8,0x8c,0x95,0xe6,0x48,0xe3,0x9f,0x18,0x50,0xbf,0x9e,0x52,0x21,0x47,0x67,
- 0x4e,0xa1,0x4d,0xc6,0xf9,0xe1,0xec,0xe9,0x94,0xff,0x45,0x88,0x68,0x3a,0x3c,0x39,
- 0xb1,0xff,0x85,0x29,0x7f,0x28,0xf0,0x8e,0xba,0x94,0xc5,0xa9,0x9a,0xd6,0x6c,0x5c,
- 0xc6,0xe7,0xbd,0x65,0x54,0x91,0xd2,0x22,0x7f,0xc6,0xbf,0xd7,0x14,0x8a,0xaf,0x58,
- 0x60,0x7c,0x35,0x51,0xec,0xa1,0xfc,0xf7,0xad,0x28,0x7f,0x3c,0x94,0xd1,0x43,0xf1,
- 0x63,0x1e,0xf8,0xe3,0xc4,0xfe,0x17,0x31,0x34,0x4b,0xcf,0x0a,0x95,0x68,0x6f,0x4e,
- 0x7b,0x0d,0x62,0x9a,0xff,0xa0,0xb9,0x3e,0xc3,0xd4,0x28,0xf6,0xa7,0xe9,0xfa,0x87,
- 0xe9,0xfe,0x17,0xf5,0xea,0x79,0xf9,0xa8,0x84,0x46,0xba,0x2e,0x96,0x48,0xcb,0x48,
- 0x50,0x6b,0x62,0x25,0x0a,0xae,0x1f,0x1a,0xf6,0x58,0xc3,0x98,0xbe,0xcb,0x4f,0xa6,
- 0xfb,0x5f,0x34,0x2e,0xd7,0x36,0x11,0x2d,0x6f,0xb0,0x6b,0x21,0xda,0x73,0x9d,0x11,
- 0x8d,0xe3,0xdb,0x74,0x1a,0xad,0xab,0xdc,0xd1,0x08,0xdd,0x9f,0xf4,0x57,0xb1,0x25,
- 0xff,0x5d,0x2a,0x93,0x23,0x32,0xb5,0xb4,0x62,0x1e,0xad,0x3d,0x95,0x1d,0xe6,0x81,
- 0xe7,0xa3,0xae,0xb0,0xdc,0xce,0x06,0xd5,0x17,0x2e,0xeb,0x7f,0x01,0x76,0x29,0x62,
- 0x46,0x23,0x4c,0xb5,0xe3,0xfa,0xcc,0x32,0x4c,0x58,0x98,0xc0,0xf7,0x33,0x1d,0x1f,
- 0xbb,0x27,0xd6,0x7f,0x26,0x7f,0xdc,0x61,0x62,0x7b,0x00,0x9f,0x7f,0x00,0x9f,0x5f,
- 0xa6,0xf5,0x19,0x41,0x0b,0xc8,0xce,0xd3,0xfb,0x21,0x39,0x5e,0xff,0x39,0xfe,0x37,
- 0x7d,0xd2,0x45,0xa8,0x12,0x1c,0x46,0xfe,0x19,0xf8,0x03,0x54,0xe9,0xbf,0x4c,0x8e,
- 0xe5,0x7f,0x19,0xe2,0x79,0x81,0xf4,0x17,0x22,0xc6,0xf6,0xf1,0xfa,0xcf,0x7f,0xa1,
- 0x1f,0x9f,0xfd,0xe0,0xff,0x4f,0xf5,0x43,0x94,0x1b,0x7c,0x1a,0x44,0x53,0x05,0x07,
- 0xfe,0xbd,0x81,0xf5,0xef,0xff,0xdd,0x7e,0x7c,0xff,0xf5,0xbf,0xb1,0x45,0x9e,0x7e,
- 0xf9,0xb2,0x8f,0xff,0x64,0xfc,0x85,0xf5,0x29,0xd4,0xff,0x6b,0xeb,0x5f,0xa8,0xff,
- 0xbb,0xeb,0x6f,0x9d,0x3d,0xb1,0x1f,0xa2,0x6e,0x76,0x3f,0xcc,0xec,0x87,0x48,0xff,
- 0xa1,0xcb,0xee,0x3f,0xdd,0xb0,0x0e,0x7a,0xcd,0xc1,0x7a,0x2f,0x5e,0xf9,0x21,0xcb,
- 0x78,0xfe,0xb1,0x65,0x53,0xad,0x83,0xfa,0xd4,0xc0,0xec,0x0d,0xa3,0xcb,0x99,0xcf,
- 0x3f,0xba,0xc8,0xaa,0x75,0x50,0x94,0x1a,0x34,0xd2,0x95,0x8c,0xfd,0x93,0xee,0x87,
- 0x68,0x37,0xac,0x83,0xde,0xf4,0x95,0x72,0xb0,0x77,0xfd,0x9f,0x7e,0x88,0xff,0x4d,
- 0xfa,0x0f,0xfe,0xf7,0x9b,0x4f,0x87,0xce,0xa0,0xd3,0x97,0x71,0x1e,0x7b,0xff,0x43,
- 0x79,0x68,0xd0,0xa1,0xe3,0xff,0xd9,0xf3,0x28,0x9b,0x3d,0xd5,0x55,0xe3,0xdf,0x3b,
- 0x8f,0xae,0x09,0xf7,0xb7,0xd3,0x4d,0x84,0xcc,0xfb,0xf7,0xfe,0xfb,0xf2,0xb0,0x1e,
- 0x85,0x5e,0xa3,0x80,0x82,0xef,0xbf,0x22,0x0f,0x59,0x0e,0x04,0xfe,0x93,0xf2,0xb0,
- 0x1e,0x0f,0x8f,0x2c,0x08,0xc0,0xff,0x73,0xf2,0x30,0xf5,0x70,0x02,0xfd,0xf8,0x9f,
- 0xfa,0x63,0x8d,0xf6,0x1d,0x52,0x09,0x95,0x23,0xbf,0x5c,0x1e,0xf2,0xbf,0x28,0x0f,
- 0x25,0x41,0xbe,0x6c,0x7d,0x52,0x83,0x6c,0xf5,0x2f,0xcb,0x43,0x49,0x0a,0xfc,0x45,
- 0x35,0xb4,0x4e,0xbd,0xbc,0x3f,0xac,0x2a,0xc9,0x42,0x0f,0x2e,0x8e,0xaa,0x4f,0x14,
- 0x83,0x19,0x12,0x72,0xfc,0x4f,0x5b,0xa7,0x15,0x01,0xfc,0xe5,0xfb,0xff,0xc5,0xfe,
- 0xb0,0xb8,0x92,0x72,0x09,0xbe,0x82,0x75,0xfd,0xeb,0x1b,0xff,0xdd,0xf5,0xf7,0xf2,
- 0x12,0x4d,0x92,0x59,0xe6,0xfa,0x17,0x35,0xfe,0x07,0xfd,0x61,0xa5,0x94,0xce,0xb0,
- 0xae,0xbf,0xd0,0x9b,0x71,0x4f,0x6b,0x7f,0x58,0x44,0x42,0x21,0xfd,0x7f,0xf1,0x8d,
- 0xd2,0x7f,0x95,0x95,0xf8,0x1f,0xe0,0x30,0x61,0x89,0x27,0xfe,0x59,0xe5,0xa1,0xd0,
- 0x70,0x70,0x05,0xfd,0xff,0x2b,0xf9,0xbf,0x33,0x79,0xe2,0x9f,0xec,0xfa,0xcf,0xce,
- 0x34,0xff,0x0a,0x64,0xc9,0xed,0xfd,0x5f,0x4f,0x1b,0xff,0xfb,0xef,0x26,0x7f,0xfe,
- 0x9b,0xcd,0x7f,0x79,0x11,0xab,0xd3,0xdf,0x56,0xaf,0x83,0xdc,0x7a,0xd1,0x1c,0x14,
- 0xe4,0xbe,0x3c,0xe9,0xae,0x45,0xb7,0x87,0x52,0x03,0xfd,0xf6,0xd0,0x97,0xa4,0x2c,
- 0x63,0xde,0xf8,0xfc,0x9b,0x6a,0xb2,0xee,0x12,0x6e,0xd7,0xff,0x5a,0x85,0xee,0xac,
- 0xbb,0xb2,0x68,0x30,0xa5,0x7b,0x52,0xea,0xca,0x14,0x43,0x48,0x0d,0xae,0x32,0xe6,
- 0x8d,0xe1,0x61,0xe0,0x4c,0xa0,0x20,0x39,0xa7,0x2c,0x45,0xcc,0x81,0x2a,0x4b,0xeb,
- 0x68,0x10,0x36,0xaf,0x14,0xa5,0x06,0xe3,0xe6,0x85,0x29,0x45,0xc2,0xb0,0x02,0xae,
- 0x80,0x6d,0x5c,0xc0,0x81,0x90,0xad,0x66,0x45,0x84,0x95,0x74,0xa5,0x30,0x8b,0x43,
- 0x58,0x58,0x01,0xdf,0x80,0x2c,0xcb,0xfc,0x97,0x57,0x64,0x2d,0x10,0xbe,0xca,0xbf,
- 0xbe,0x48,0x8a,0x66,0xdd,0x2d,0xdc,0xce,0xff,0x5a,0x9b,0xd2,0x23,0x8c,0x0d,0x46,
- 0xaf,0x14,0x58,0x9e,0xe7,0x65,0x3d,0xac,0x85,0x64,0x89,0xce,0x97,0x1a,0x86,0x42,
- 0xc8,0x96,0x05,0xbc,0x2d,0x0d,0x40,0x68,0x84,0x30,0x2f,0x24,0xa1,0xc2,0xd3,0xef,
- 0xfb,0x72,0x50,0x5a,0x25,0x14,0xf2,0xc5,0x00,0x51,0xc9,0x25,0xc8,0x3c,0xa0,0xa9,
- 0x51,0x28,0xaa,0x97,0xe3,0x01,0xaf,0xba,0x4e,0xd2,0x04,0x59,0x43,0xd1,0x61,0x9d,
- 0xbf,0x24,0xeb,0xd6,0xae,0xdb,0xe2,0x7f,0x25,0x4b,0x72,0x56,0xa0,0x3e,0x34,0x54,
- 0xe3,0x9e,0x62,0x13,0xf4,0xfa,0x50,0xfc,0x36,0xf7,0x14,0x96,0xa5,0xf3,0x90,0x56,
- 0x30,0x3d,0x4b,0xb7,0xac,0xcf,0x74,0xe1,0xaf,0xe1,0xaf,0x8c,0x29,0x21,0x54,0x03,
- 0x34,0x98,0x5c,0x97,0x75,0xbb,0xf0,0x75,0x7e,0x9b,0x91,0xe5,0xc5,0x81,0x08,0xb7,
- 0x19,0x53,0xbc,0xd2,0xb8,0xfb,0x1d,0xe7,0x53,0x9a,0xb6,0x13,0x24,0x0e,0xeb,0x48,
- 0xf2,0x85,0x05,0x92,0x85,0xd5,0x24,0x14,0x0b,0x05,0x09,0x45,0x03,0x8a,0x49,0x55,
- 0x5d,0x64,0x59,0x1f,0xaa,0x56,0x1b,0x01,0x8d,0x74,0x00,0x0d,0x8a,0xb8,0xac,0x8d,
- 0x5e,0x91,0xb5,0xec,0xd1,0xc1,0x22,0xcb,0xfa,0x84,0xb2,0x56,0x0b,0x7f,0x03,0x57,
- 0xe8,0x33,0xf9,0xe8,0xe0,0xaf,0x62,0x59,0x61,0xa1,0x05,0x97,0x7d,0x4a,0x2c,0x4b,
- 0x13,0x8e,0xc3,0x3f,0xc2,0x14,0xeb,0xfb,0xea,0x62,0x18,0x8e,0xc3,0x02,0x10,0xb8,
- 0x39,0xf8,0x47,0xaa,0x20,0xb8,0x0a,0xbf,0xd7,0x02,0xb8,0xca,0x1c,0xf0,0x6f,0x64,
- 0xcc,0xbf,0x29,0x20,0x79,0xeb,0xed,0x5a,0xb5,0x2c,0x47,0x46,0x07,0xea,0xc1,0xf1,
- 0x01,0x8c,0x0e,0x8c,0xc9,0xe3,0xcf,0x03,0x24,0xb1,0xd0,0x3a,0xd2,0x70,0x67,0x98,
- 0x03,0xe2,0xcc,0x46,0x07,0x3d,0xa3,0x3f,0xe9,0x96,0x4d,0xdd,0x18,0x10,0xbc,0x7c,
- 0x99,0x96,0x4f,0xdd,0x11,0x68,0xf0,0x75,0x59,0x3a,0x38,0xd9,0xfb,0x32,0x5e,0x91,
- 0x0b,0x8e,0x08,0xde,0xae,0x65,0xde,0x7c,0x4f,0x81,0xa1,0x59,0x9e,0x27,0x2b,0x5c,
- 0xbf,0x42,0xfb,0x06,0xee,0xc6,0xd1,0xc1,0x14,0x1c,0x74,0xd1,0x20,0xab,0x41,0xd0,
- 0xba,0x56,0x78,0xbf,0x61,0x9f,0x62,0x79,0x9e,0x97,0x03,0xa9,0x92,0x16,0x63,0x4b,
- 0x38,0x3a,0xb0,0xe3,0x40,0x8f,0x48,0x34,0x10,0x65,0x21,0xf3,0x7d,0xc3,0xf5,0x85,
- 0xda,0xe2,0x20,0x6c,0xc5,0xc1,0x95,0xda,0x62,0xaa,0xfc,0xbe,0x1a,0x5f,0x73,0x71,
- 0x50,0xd8,0x2a,0x69,0xf4,0xbe,0xc1,0x8c,0xfd,0x13,0xce,0x5a,0x21,0x7c,0x03,0xfe,
- 0x8a,0x4b,0x61,0x89,0x06,0x53,0xf8,0x14,0xbc,0x22,0x2d,0xc6,0x2b,0x37,0x85,0xb3,
- 0x64,0x58,0x0c,0x5f,0xe3,0x92,0x65,0xff,0x18,0xd9,0xc2,0xd7,0xf8,0x6d,0xe1,0x29,
- 0x2d,0x52,0xb6,0xb0,0x88,0x87,0xc2,0x05,0x85,0x59,0x97,0x0f,0xc6,0xcd,0x7d,0xd4,
- 0x3c,0xa3,0x78,0x40,0xd7,0x9d,0x78,0x04,0x16,0xd1,0x79,0x64,0x82,0xc4,0x75,0x4d,
- 0x0d,0x4a,0x74,0x85,0x06,0x05,0x96,0xf9,0x2f,0x2f,0x66,0x93,0x79,0x63,0xb8,0x48,
- 0x2d,0x5c,0x2c,0x7e,0x8d,0x1f,0x0b,0x5f,0x5b,0x98,0x9b,0x1e,0x4c,0x1a,0x1d,0x58,
- 0x9e,0x27,0x6b,0xb1,0x70,0x57,0xfd,0xed,0xe1,0xbf,0x2e,0xbc,0xea,0x95,0xac,0xbb,
- 0x38,0x0d,0x26,0xbf,0x22,0xdc,0xc5,0xdf,0xc6,0xc1,0x14,0xbc,0x52,0xff,0x76,0xf8,
- 0x9f,0x0a,0x71,0x3d,0xd3,0xeb,0xb3,0x58,0xa4,0x5f,0xaf,0x2b,0xcc,0x7d,0x65,0x74,
- 0x70,0x25,0x0d,0xa6,0xe3,0x20,0xe7,0x95,0x6c,0xba,0xd5,0xa4,0xc2,0xac,0x8c,0xf9,
- 0xa9,0xfb,0xaf,0xb0,0xd3,0xdd,0x6e,0x1f,0xbb,0xad,0xdd,0x1c,0xc0,0x3c,0x1c,0x54,
- 0x17,0x5e,0x95,0xb1,0x7f,0x84,0xd4,0x89,0xc9,0x1a,0x97,0x3f,0x34,0xb8,0xcd,0x94,
- 0x48,0xf8,0xe1,0x6e,0xd7,0xbe,0x84,0xf2,0xc7,0xb2,0xdb,0xb2,0x85,0x95,0x7c,0x45,
- 0x18,0xa5,0xcd,0xba,0xd1,0x81,0x80,0x83,0xfa,0xd4,0x95,0xac,0x22,0x5e,0x18,0xfe,
- 0x06,0x09,0xa2,0xf4,0xf3,0xe8,0x33,0xbd,0xc2,0x32,0xf9,0xeb,0x0c,0x8c,0xac,0x3a,
- 0xe1,0x76,0xf8,0x6b,0x90,0xc6,0x06,0x53,0xf0,0x0c,0x8f,0x0e,0xd2,0xcf,0x73,0x93,
- 0x65,0xff,0xa0,0xb4,0x49,0x1d,0xc1,0xd4,0x40,0xa0,0xe7,0x31,0x07,0xdc,0xf2,0xbe,
- 0xa3,0xfb,0x07,0xa7,0xe1,0x6e,0x41,0x69,0x83,0xd3,0x46,0x07,0x6a,0x04,0x7f,0x32,
- 0x07,0xd6,0xf9,0xd5,0x59,0xa1,0x43,0xb7,0x79,0x51,0xfe,0xa0,0xb4,0xa9,0x0f,0x15,
- 0xdd,0x66,0x9f,0x12,0x90,0xf4,0xc6,0x90,0x76,0x9b,0x3c,0x59,0x14,0x42,0xf5,0x28,
- 0x7f,0xe4,0x2c,0xb0,0xac,0x0f,0x5e,0x34,0x6e,0xf3,0x4e,0x91,0x25,0x73,0xa0,0x4d,
- 0xb1,0x67,0x55,0xa7,0xae,0xd8,0xb3,0x02,0xa3,0x3f,0x65,0xe9,0x96,0xf5,0x01,0x5d,
- 0x47,0xcc,0x24,0x09,0x68,0xcf,0x05,0x52,0xa0,0x98,0xa0,0x0d,0x0e,0x34,0x14,0x44,
- 0xa9,0xc1,0x64,0xcb,0xec,0x9b,0x96,0x00,0xe3,0x3c,0xae,0x2d,0x69,0xa1,0xb8,0x10,
- 0xae,0x69,0x6e,0x79,0x74,0x20,0xcb,0x2c,0x7b,0x74,0x60,0x79,0x9e,0x9b,0xf4,0x2c,
- 0x92,0xff,0xdf,0x80,0x02,0x9e,0x45,0xd2,0xfe,0x0a,0x94,0xf6,0x38,0x38,0x4e,0xf2,
- 0x87,0x9b,0x82,0x88,0xe4,0x4f,0xfa,0xbf,0xb0,0x56,0x17,0x52,0xfa,0x02,0xb8,0x98,
- 0x12,0x44,0xb9,0x3c,0x3f,0x0c,0xb7,0x9b,0x83,0x49,0x9a,0x74,0x3b,0x7c,0x09,0xac,
- 0xdf,0x0b,0x46,0xe5,0x09,0x3e,0x94,0xe4,0x15,0xec,0xb0,0x88,0x62,0x34,0xbc,0x42,
- 0x21,0xc9,0x50,0x83,0x69,0x38,0x58,0x0c,0x85,0x19,0xfb,0x21,0x35,0x9f,0xaa,0x67,
- 0xce,0x23,0x9a,0x49,0x87,0x63,0x30,0x1f,0x72,0xe8,0xca,0x31,0xbd,0x84,0x88,0x30,
- 0x1d,0x25,0x52,0xfa,0x2f,0x4b,0x98,0xa7,0x2f,0x0b,0xe5,0xc7,0x0a,0x5e,0x16,0xe6,
- 0x19,0xcb,0xc2,0xf9,0x05,0x12,0x0e,0x16,0xe1,0x95,0x02,0xe9,0x15,0xa1,0x08,0x07,
- 0x5f,0x57,0x33,0xf6,0x5b,0x71,0x56,0x6d,0xd7,0x37,0xbd,0xdf,0x88,0x4a,0x8f,0xd1,
- 0xa0,0xee,0x1b,0x1b,0xa7,0x3c,0x96,0xba,0xb2,0x71,0xca,0x93,0x63,0x03,0xeb,0x7c,
- 0x7b,0x0a,0xe8,0xeb,0x63,0x56,0x72,0x18,0xb6,0xc1,0xe8,0x63,0xc4,0xc6,0x06,0x19,
- 0xef,0x5b,0x13,0x9e,0x5c,0x28,0x2d,0x16,0x20,0x5a,0x63,0x2a,0x32,0xe1,0x6b,0x1b,
- 0xa5,0x55,0x93,0x0b,0x1b,0x17,0x17,0x4d,0xe6,0x35,0x63,0x03,0xeb,0xfc,0xef,0x84,
- 0x26,0xdf,0x26,0xfd,0x95,0x20,0xe9,0x59,0xa9,0xc1,0x14,0xfd,0xa6,0x10,0x14,0x48,
- 0x7f,0x05,0x53,0xf4,0x45,0x21,0xef,0x6d,0xd2,0x14,0x21,0x63,0x3f,0xc8,0x45,0x24,
- 0xf9,0x54,0x6d,0xad,0x5c,0x14,0x90,0x43,0x91,0x02,0x2d,0x2b,0x28,0xe0,0x80,0xe3,
- 0x40,0x0e,0xdf,0x2a,0x87,0xd6,0x15,0x68,0x6b,0xad,0xb7,0xb7,0x51,0x83,0xea,0xb8,
- 0xee,0x2e,0xb0,0x09,0x8c,0xeb,0x71,0xd5,0x0d,0x38,0x88,0xd2,0x40,0xb2,0x41,0xea,
- 0x4a,0x81,0x75,0xbe,0x3d,0xfb,0xeb,0x42,0xa3,0xb1,0xd2,0x7b,0xe5,0x32,0xf1,0xeb,
- 0x70,0xec,0xe0,0xb5,0x5e,0x30,0x07,0xc6,0xb5,0xde,0xdc,0x65,0xd9,0xf9,0xa9,0x81,
- 0xf5,0x79,0x72,0xb2,0xee,0x5e,0x74,0x7b,0x6c,0x5c,0xfb,0x7f,0x29,0x35,0x78,0xdb,
- 0xc4,0x03,0x37,0xd1,0xe0,0x9f,0x8a,0xa6,0x58,0xbf,0x97,0xf2,0xcd,0xc0,0xef,0x62,
- 0xcf,0xb6,0x95,0xe6,0x7c,0x79,0x09,0x0e,0xf6,0xb4,0x95,0xde,0xac,0xdc,0xba,0xa4,
- 0x6f,0xeb,0xb3,0x25,0x3f,0xcf,0x51,0x02,0x4b,0x8e,0x99,0x03,0xeb,0xf3,0xdc,0x70,
- 0xe9,0x96,0x4b,0xbf,0x79,0xf1,0xcc,0xc7,0x23,0x55,0x3f,0xc1,0xc1,0xde,0x33,0x9f,
- 0x8e,0xdc,0x70,0x71,0xf9,0xbb,0x0f,0x5c,0xea,0xbf,0x30,0x72,0xc3,0x7d,0xcb,0x2f,
- 0x99,0x03,0xf8,0xdf,0xf8,0xf3,0x3f,0x9c,0x33,0x2b,0x70,0x73,0x6c,0xeb,0xea,0x99,
- 0x23,0x8e,0x27,0xaa,0x2f,0xc5,0xb6,0xfe,0x8b,0xff,0x5f,0x6f,0xfe,0xc9,0x1b,0x37,
- 0x9f,0x79,0xe8,0x42,0xd5,0xa5,0x9b,0xaf,0xa1,0x41,0xbf,0x75,0x7e,0xd5,0x7d,0xb7,
- 0xbc,0xfb,0xc0,0xde,0xfe,0x8f,0xc7,0x1e,0xe3,0xe3,0x0b,0x63,0x0f,0x86,0xf3,0x6f,
- 0x79,0xd7,0x7c,0x42,0xeb,0xfc,0xe2,0xfb,0x82,0xef,0x6e,0xbd,0xae,0x7f,0xe3,0xca,
- 0x1b,0xe8,0x1f,0xee,0xea,0xbf,0x1f,0x1f,0xfb,0x96,0x77,0xf2,0xe9,0x0e,0xc5,0x85,
- 0x34,0x68,0x1c,0x5c,0x69,0x9d,0x2f,0x04,0xea,0xf4,0xed,0xea,0x35,0xce,0x1c,0xc3,
- 0x65,0x0e,0x0a,0x72,0x5e,0x66,0x75,0x06,0x0e,0xec,0x38,0xb8,0x8b,0xae,0x4c,0xcf,
- 0xb1,0xae,0xa7,0x64,0xc1,0x87,0x29,0x58,0x38,0x61,0x50,0xad,0x66,0xac,0xbf,0x38,
- 0x8a,0x0f,0xc1,0x94,0xcf,0xde,0x31,0x58,0x48,0xf2,0xd9,0x04,0x8a,0x13,0xe5,0x33,
- 0xa4,0xd0,0x9a,0xb3,0x7e,0x14,0xb6,0xa1,0x7c,0x86,0x70,0xca,0x16,0xe4,0xb0,0x92,
- 0x17,0x32,0x73,0x90,0xfe,0x93,0x6b,0xee,0x16,0xec,0xbc,0x9a,0xf6,0xbf,0x4f,0x98,
- 0xde,0xf8,0x15,0x6d,0x72,0x8f,0xe4,0x13,0x0a,0x38,0x0e,0x0e,0x4b,0x77,0x0b,0xd3,
- 0x69,0x60,0x64,0xdc,0x7f,0xd5,0x0a,0xb9,0x91,0xe5,0x52,0xf7,0x08,0x28,0x54,0x11,
- 0x16,0x72,0x1a,0x10,0x3e,0x1c,0x07,0x8a,0x19,0xf7,0x97,0x4c,0xa1,0x11,0x46,0x7c,
- 0xb8,0x8a,0xf0,0x61,0x58,0x6d,0x91,0xbe,0x3b,0x36,0x98,0x25,0xe4,0xd0,0xc0,0x3a,
- 0x7f,0xae,0xb4,0xa4,0xeb,0x8a,0xf8,0x4d,0x6d,0x93,0x67,0x4b,0xdf,0xac,0x77,0xc6,
- 0x6b,0xda,0x27,0xcf,0x91,0xbe,0xd9,0x85,0x83,0xce,0xc9,0x65,0xd2,0x92,0x7a,0x73,
- 0x60,0xb9,0xbb,0x91,0x0b,0xf9,0x50,0xd0,0x97,0xd5,0x02,0xb7,0x20,0xe4,0x29,0xe8,
- 0x03,0xd4,0x36,0xf0,0x75,0x52,0x32,0x0b,0xcd,0xc1,0x15,0xa4,0x64,0xf4,0xf4,0x3f,
- 0x30,0xb2,0x71,0x2d,0x50,0x3e,0xdf,0x0a,0xb4,0x6a,0xaa,0xc9,0x2c,0x40,0x0d,0x1a,
- 0x88,0x52,0x48,0x70,0xe2,0x60,0x32,0x20,0xac,0x48,0xbb,0x8f,0x64,0x43,0x67,0x4e,
- 0xe0,0x31,0x0d,0x52,0x4c,0x81,0x3a,0x6a,0x60,0x36,0x66,0x9a,0xfc,0xd6,0xf9,0x52,
- 0xd8,0x14,0x92,0xa6,0xc4,0x2f,0x44,0x89,0x3f,0x99,0x8f,0x5e,0xb1,0x0c,0xc6,0xe7,
- 0xab,0x82,0x8e,0x12,0xaa,0x05,0x66,0x91,0xcc,0x4a,0x0d,0x72,0xd2,0x83,0x6c,0x5a,
- 0xcf,0x6b,0x40,0x48,0xc7,0x03,0xe8,0x63,0xf8,0x70,0x19,0x34,0x58,0xf0,0xe1,0xda,
- 0xd4,0x20,0xdb,0x8b,0xf8,0x6a,0xb1,0xcc,0xd3,0xfa,0x94,0xde,0x7c,0x14,0x0d,0x5e,
- 0x8e,0x0f,0x71,0x80,0x12,0x9e,0x81,0x45,0x3e,0xeb,0xf8,0x3f,0xe9,0x26,0xa2,0x1d,
- 0x5e,0x4a,0x0d,0x64,0x38,0x78,0xd9,0xc0,0x50,0xad,0xcf,0x93,0xd2,0xbf,0x42,0x64,
- 0x74,0x30,0x79,0xe2,0x00,0xdf,0x37,0xfd,0x3c,0xc2,0x5f,0xc6,0x87,0x99,0x83,0xf4,
- 0x7e,0x08,0x09,0xa3,0xf7,0xb7,0xc3,0xbf,0x7b,0x7f,0xd9,0x22,0x9f,0xf5,0x9b,0x74,
- 0xfc,0x90,0xd3,0xe1,0x26,0x42,0xfc,0x21,0xa1,0x00,0x07,0x93,0xf5,0xf1,0x01,0x8c,
- 0x0e,0x02,0xe3,0xcf,0x13,0xc4,0xed,0xba,0x88,0x17,0x20,0x88,0x12,0xb2,0x11,0x39,
- 0xaa,0x61,0x29,0x63,0xb0,0x28,0x35,0x48,0x6f,0x9f,0x20,0xbe,0x81,0xf9,0xcd,0xcd,
- 0x3f,0x8e,0x16,0x86,0x69,0x2b,0x35,0xea,0x29,0xa0,0x88,0x57,0xbc,0x38,0x00,0xcb,
- 0xf3,0x7c,0x03,0xd1,0x20,0xe2,0xc3,0x10,0x7c,0x03,0x81,0xe2,0x6f,0xc3,0xf3,0x10,
- 0x16,0x32,0x0b,0x50,0xbc,0x4d,0xbf,0xb6,0x30,0x4b,0x4f,0xeb,0x77,0x61,0xb1,0x74,
- 0x57,0xfd,0xf4,0xf0,0x57,0x10,0x16,0x9a,0x83,0x2b,0x70,0x90,0x95,0x71,0xe5,0x2b,
- 0x2b,0xae,0xb7,0x7c,0x2f,0x61,0x31,0xbb,0x8b,0x6f,0x0f,0x5f,0x53,0x28,0x10,0x2c,
- 0x3c,0x8e,0x83,0x9c,0x57,0x18,0x01,0xc5,0xd1,0x01,0xfd,0x64,0x91,0x3f,0xa1,0x9b,
- 0x16,0x8f,0xc2,0x42,0x78,0x25,0x6b,0x5e,0xfd,0xb2,0x31,0x7c,0x38,0x3e,0x20,0xe8,
- 0x38,0xe5,0xa0,0x65,0xff,0x38,0x05,0x13,0x1f,0xd6,0x40,0x4c,0x08,0xf3,0x9b,0x49,
- 0xec,0x70,0xa1,0x84,0xaf,0xd0,0x9c,0x41,0x69,0x6b,0x4a,0x34,0x05,0x25,0xcb,0xfa,
- 0xe3,0xbe,0x45,0x21,0x13,0xce,0x6e,0x51,0x9f,0xc0,0xc1,0xd4,0xb0,0x29,0x7f,0xcc,
- 0x2b,0x96,0x01,0x4f,0xc7,0xe3,0xdd,0x14,0x96,0xd6,0x08,0x79,0x50,0x8d,0x18,0x48,
- 0x5a,0x28,0xcc,0xa0,0x15,0x4f,0x9a,0x83,0xaf,0xf0,0xc9,0xe3,0x03,0xcb,0x7e,0x16,
- 0x6e,0x45,0x34,0x88,0x9b,0x24,0x48,0x49,0x7a,0xfc,0x4a,0xf2,0x1e,0x45,0xa0,0x84,
- 0x60,0x61,0x50,0x78,0x20,0x85,0x0f,0x83,0x02,0x4f,0xef,0x4f,0xdc,0x3f,0x5a,0x0a,
- 0x1f,0x6e,0x20,0x34,0x18,0x1f,0xdd,0x36,0x13,0xf0,0xa1,0xe5,0x7b,0x21,0x1a,0xec,
- 0x2a,0xf0,0xdd,0x24,0x0b,0x4c,0x0a,0xd5,0xab,0xda,0x4d,0xf2,0xe4,0x6a,0x29,0xb4,
- 0x56,0xd5,0x6a,0xe4,0xc9,0xa9,0x2b,0x38,0x00,0xcb,0xfa,0xa0,0x49,0xd9,0x53,0xe0,
- 0x45,0xcb,0xc3,0xa6,0x69,0x46,0x41,0x5c,0xb0,0x0b,0xd5,0x80,0xda,0xdd,0x9b,0x65,
- 0x0e,0x0c,0x73,0xa0,0xa7,0xef,0x4f,0xc2,0x22,0x85,0x0f,0x41,0xc7,0x7f,0x0a,0xa6,
- 0x7d,0x3a,0x01,0x1f,0x5a,0xf6,0x1b,0x3e,0x8f,0xcb,0x49,0xf8,0x30,0x87,0xca,0xdf,
- 0x70,0xee,0x2a,0x72,0xcb,0x36,0xc4,0x87,0x51,0x82,0x85,0xb6,0x51,0xa0,0x18,0xb5,
- 0x3c,0x8f,0x30,0x26,0x7f,0x0a,0x53,0xf2,0x67,0xf1,0x5f,0x94,0x3f,0x96,0xfd,0xa3,
- 0x53,0xbf,0x68,0x98,0x45,0x19,0x27,0x61,0x1c,0x7c,0x57,0xcf,0x89,0x65,0x8f,0xca,
- 0x9f,0xd8,0xb8,0x20,0xb2,0x3c,0x4f,0x18,0x3f,0x0a,0x7e,0xaf,0xb5,0xe6,0xf7,0xca,
- 0x93,0xaa,0xf1,0x7b,0x65,0x9b,0x57,0x52,0x1f,0x0e,0x07,0xf5,0x16,0xfb,0x34,0x04,
- 0x82,0x76,0xbd,0x9e,0x17,0x12,0x7f,0x0a,0x4f,0x6a,0x5e,0xaa,0xfe,0x26,0xc1,0x09,
- 0x18,0x1d,0x74,0x8d,0x0d,0x2c,0xfb,0x19,0x25,0xf1,0xb5,0x7a,0x6e,0x48,0xbc,0x0d,
- 0x61,0xdb,0x3c,0x3d,0x57,0xaf,0xbe,0x0d,0x7e,0x4b,0xc0,0x32,0x24,0x16,0xd0,0x40,
- 0x37,0x07,0x07,0x55,0x7d,0xfc,0x79,0xaa,0xa5,0x95,0x5d,0x85,0xde,0xc5,0x85,0x42,
- 0x83,0x14,0xc6,0x41,0xb6,0x7d,0x72,0x6a,0xb0,0x78,0x74,0x80,0xa2,0x23,0x43,0xfe,
- 0xe8,0x84,0x0f,0x8d,0xb4,0x08,0x27,0x46,0x78,0x54,0x96,0xa7,0x06,0xa6,0xa8,0x1c,
- 0xbf,0xbf,0x10,0x1c,0xc3,0x87,0x7c,0x35,0xa2,0x41,0xb4,0x22,0x2d,0xb0,0xf0,0x36,
- 0x1a,0x54,0x17,0x65,0xca,0x9f,0x9a,0xbf,0xba,0x72,0xca,0xe2,0xff,0x4f,0x7b,0x67,
- 0x13,0xda,0x44,0x10,0xc5,0xf1,0x59,0xbb,0x5b,0x53,0xd3,0xd8,0x04,0x1b,0x02,0x35,
- 0x84,0x84,0x35,0xb1,0x82,0xc8,0xa8,0x6d,0x15,0x22,0xc9,0x14,0xa3,0xc6,0x40,0x1b,
- 0x41,0x8a,0xd4,0x83,0x17,0x2f,0xe2,0xc9,0x8f,0xa3,0xd4,0x2c,0x21,0xa2,0x07,0x85,
- 0x50,0x22,0x22,0xf8,0x51,0xc1,0x93,0xb4,0x78,0x10,0x45,0x10,0x61,0x6e,0xa5,0x78,
- 0x88,0x87,0x9e,0xf4,0x20,0x62,0x2f,0x82,0x92,0x1c,0x0a,0xe2,0x21,0xae,0x33,0xb3,
- 0x6b,0xdd,0x28,0xb6,0x18,0xfb,0x2e,0xf2,0x7e,0xa7,0x17,0x32,0xf9,0xef,0xe3,0xf1,
- 0x78,0xf9,0xcf,0x26,0x99,0x1c,0x3a,0x12,0x0c,0xe6,0x8e,0x85,0xfa,0x75,0x43,0x0b,
- 0x31,0x26,0x03,0x67,0x10,0x89,0x60,0x54,0x04,0x9e,0xfe,0x91,0x0d,0xb8,0x32,0xf9,
- 0x82,0x65,0x23,0xae,0xe5,0x65,0x4f,0x95,0xe5,0xbd,0x13,0x31,0x2c,0x55,0x40,0x3c,
- 0x14,0x34,0xf9,0x15,0x70,0x22,0x6c,0xa1,0x72,0x83,0x2b,0x81,0xf4,0x87,0xae,0x63,
- 0x6c,0x9b,0x3f,0x63,0x5d,0xc7,0x59,0xe5,0x75,0x62,0x88,0x8c,0x6d,0xd8,0xc2,0x16,
- 0x45,0xe0,0x73,0x82,0xe1,0xa1,0x80,0x7c,0x4a,0x05,0x9e,0x7c,0xb4,0xfc,0xe0,0x85,
- 0xd1,0x68,0x75,0x63,0x22,0xb4,0x50,0x71,0xdf,0xfd,0x17,0x7e,0xd8,0x00,0x69,0x14,
- 0xa3,0xd6,0xd5,0x76,0x3f,0xa0,0x6c,0xa1,0xf4,0x87,0xfe,0x42,0xc1,0xeb,0x0f,0x1f,
- 0xfe,0xc1,0x1f,0x2a,0xf7,0x25,0xfd,0x61,0xba,0x54,0xf4,0xfa,0xc3,0xe5,0x75,0xf2,
- 0x87,0xca,0x16,0x7e,0xac,0xda,0xad,0xec,0x57,0xc7,0x28,0x4e,0x6d,0xbb,0x2f,0x6d,
- 0x61,0xf5,0x56,0x2b,0x69,0xbb,0x81,0x77,0xbd,0xba,0xfa,0x97,0x25,0xb1,0xfe,0x9b,
- 0x63,0x14,0x5b,0xe9,0x92,0xb4,0x85,0x4b,0x8d,0x56,0xda,0x76,0x83,0xb6,0xf5,0x31,
- 0xd7,0x1f,0x9a,0xb1,0xf1,0x77,0xd3,0xbb,0x85,0x3f,0x34,0x2f,0x8f,0xcf,0x2b,0x87,
- 0x69,0x2a,0xab,0x59,0x69,0xfc,0x43,0xfe,0x94,0xc4,0x35,0xf9,0xf7,0x37,0x94,0x1c,
- 0xec,0xed,0x5c,0x05,0x41,0x10,0x04,0x41,0x10,0x04,0x41,0x90,0xff,0x1d,0xb5,0x77,
- 0xd0,0x71,0xef,0x80,0x20,0x08,0x82,0x20,0x08,0x82,0x20,0xc8,0xea,0xa8,0xbd,0x43,
- 0x37,0xee,0x1d,0x10,0x04,0x41,0x10,0x04,0x41,0x10,0x04,0x59,0x1d,0xb5,0x77,0xf0,
- 0xa9,0xbd,0x83,0x78,0x64,0xec,0x3f,0x35,0xc9,0xb2,0x99,0x4b,0x93,0x40,0x57,0x1b,
- 0x9c,0x27,0x3b,0x99,0x99,0x23,0xfd,0x1c,0x46,0x5f,0xdf,0x74,0xe6,0xb6,0xe5,0x0f,
- 0xbf,0xc8,0xc3,0xc8,0x93,0x6c,0x5d,0xe6,0xcf,0x48,0x96,0xc3,0xe8,0xeb,0xf1,0xda,
- 0x03,0x3e,0xb0,0x78,0xe3,0x1a,0x8c,0x3c,0xa1,0x75,0xfa,0x89,0x99,0xe7,0x38,0xe5,
- 0x30,0xfa,0x81,0x7d,0x53,0x57,0x78,0xf4,0xf1,0xe9,0x22,0x8c,0xbc,0xa8,0xbf,0x93,
- 0x3f,0x54,0xfd,0x7b,0xb7,0xdf,0xb1,0xc8,0x81,0xc8,0x0c,0x5c,0xfd,0xfb,0x44,0xff,
- 0x14,0x09,0x54,0xfd,0x37,0xa7,0x9e,0x37,0xc9,0xd6,0x89,0xa7,0x47,0x61,0xe4,0x45,
- 0xfd,0x9d,0xfc,0xc1,0xfa,0x7f,0x57,0xf8,0x11,0xf3,0x5f,0xac,0xf9,0xd6,0x5e,0xda,
- 0x11,0xb4,0x9e,0x15,0xfd,0x53,0x82,0xeb,0xff,0xa0,0x36,0x42,0x92,0x3d,0x3b,0xe0,
- 0xfa,0xdf,0xc9,0x1f,0xaa,0xfe,0x81,0x44,0xee,0x30,0xd9,0xb3,0x9c,0x82,0xea,0x1f,
- 0x6a,0x73,0x39,0x3f,0x69,0x93,0xc3,0xe8,0xeb,0xbe,0xf3,0x37,0xf9,0xc8,0x93,0x1a,
- 0xd8,0xfc,0x77,0xf3,0xff,0xfd,0x64,0x82,0xf5,0x41,0x37,0x6b,0x73,0xdc,0x8c,0x4c,
- 0x83,0xcd,0x1f,0xbb,0x29,0xe7,0x67,0x13,0xaa,0xfe,0x7d,0x99,0x0f,0x0d,0x3e,0xfc,
- 0xe6,0x44,0x1d,0x46,0x5e,0xd4,0xdf,0xc9,0x1f,0xac,0xfe,0x99,0xeb,0xf7,0xac,0xbd,
- 0x91,0xd9,0x9e,0xb5,0x97,0x76,0x04,0xb5,0xeb,0x72,0x7e,0x82,0xf5,0x7f,0x77,0x6c,
- 0xee,0xac,0x95,0x7a,0xf9,0x36,0x07,0x23,0x2f,0xea,0xef,0xe4,0x0f,0x56,0xff,0xe4,
- 0xc4,0x33,0x12,0x0f,0xdf,0x85,0x9b,0x3f,0xb6,0x9c,0x9f,0x70,0xfd,0x3f,0x60,0x24,
- 0x58,0x66,0x36,0xf0,0x0a,0x46,0x5e,0x1e,0x72,0xa2,0xf2,0x87,0xa9,0x3f,0x55,0x47,
- 0x1d,0x95,0x3f,0x53,0x62,0xc9,0x5f,0xad,0x74,0x51,0xc2,0xfe,0xfa,0xf3,0x04,0xf7,
- 0xb5,0x06,0x25,0x33,0xda,0x4f,0xcd,0xf7,0x27,0x7f,0x5d,0xf7,0x1d,0x0e,0xf7,0x99,
- 0xa7,0xf0,0x33,0x01,0x00,
+ 0x1f,0x8b,0x08,0x08,0x9c,0xc4,0xe8,0x42,0x00,0x03,0x68,0x68,0x34,0x30,0x35,0x5f,
+ 0x31,0x5f,0x30,0x35,0x2e,0x62,0x69,0x74,0x00,0xec,0xfd,0x0f,0x78,0x14,0xd7,0x91,
+ 0x2f,0x0c,0x57,0x9f,0x6e,0x89,0xa3,0xe9,0x91,0xa6,0x91,0x84,0x57,0xb6,0x31,0x6e,
+ 0x8d,0x04,0x1e,0x94,0x91,0x18,0x46,0x58,0xc8,0x42,0x8c,0x5a,0x23,0xd9,0x19,0x1b,
+ 0x6c,0x26,0x8e,0x93,0x65,0x77,0xfd,0xe5,0x0e,0x84,0x64,0x95,0xbc,0xc4,0x2b,0x3b,
+ 0xb9,0x7b,0x49,0xd6,0xeb,0x1c,0x8d,0x04,0x8c,0x90,0x0c,0x03,0x28,0x31,0x4e,0x58,
+ 0x6f,0x23,0x64,0x5b,0x38,0x24,0x3b,0x08,0x0c,0x02,0x1c,0xdc,0xc2,0xb2,0x2d,0xfe,
+ 0x18,0x2b,0x0e,0xeb,0xe0,0x3f,0x71,0x06,0x47,0x26,0xb2,0x23,0xdb,0x32,0xc6,0x8e,
+ 0x04,0x02,0xde,0x3a,0x3d,0x92,0xa6,0x47,0x64,0xf7,0xe6,0xbe,0xf7,0xf9,0xde,0x6f,
+ 0x9f,0xe7,0xbb,0xf2,0xf3,0xec,0x9e,0xb4,0x8e,0x9a,0xee,0xd3,0xe7,0x54,0xfd,0xaa,
+ 0xea,0x57,0x55,0x90,0xe1,0x18,0x4e,0xfc,0x07,0x20,0xac,0x00,0x47,0x5d,0xdd,0x02,
+ 0xcf,0xad,0xff,0x6d,0xfe,0x7f,0xf3,0xdc,0x5a,0xf2,0xc0,0xd7,0x57,0xc1,0x4a,0x90,
+ 0xbd,0xdf,0xbd,0xd5,0xf3,0x8d,0xef,0x3d,0x38,0x7f,0xc1,0x02,0xf8,0x3a,0xfe,0x2f,
+ 0x8f,0xe7,0xd6,0x79,0x9e,0x85,0xf3,0xbc,0xe5,0xb0,0x0a,0x32,0xe6,0x97,0x56,0x2c,
+ 0xf0,0x56,0x78,0x3d,0xf0,0x0d,0x10,0x4a,0x3b,0xae,0xe2,0xcf,0x33,0x8f,0x7f,0xe5,
+ 0x9b,0x1e,0x60,0x02,0x00,0x4c,0xf3,0x08,0x21,0xfe,0xff,0x65,0x8f,0xa0,0x0a,0xc0,
+ 0xaa,0x8a,0x3d,0x60,0xf0,0xff,0x0d,0xe3,0xbf,0xcf,0xf0,0x80,0x6a,0xfd,0xdf,0x82,
+ 0x07,0x34,0x08,0x82,0xd6,0xca,0xb2,0xe1,0x2f,0xf8,0xa1,0x12,0x9b,0x18,0xfe,0x45,
+ 0xf3,0x61,0x72,0xfe,0xd5,0xe3,0xec,0x3f,0x9c,0x94,0xfc,0xa9,0x3a,0xaf,0x8f,0x8f,
+ 0x18,0xf1,0xfc,0xcf,0xa7,0x0b,0x01,0x98,0xb8,0xeb,0x0f,0xdf,0xfc,0x4b,0xee,0xbf,
+ 0xf0,0xf3,0x89,0xfb,0xff,0xaf,0xce,0x07,0xe5,0x2f,0x98,0x8e,0xef,0x3b,0x31,0xf8,
+ 0xa1,0x22,0x68,0xb0,0x1c,0xd2,0x41,0x60,0x10,0x82,0xbc,0xff,0x60,0xb0,0xb0,0x77,
+ 0x62,0xfe,0xd1,0xb4,0x31,0xef,0x29,0x71,0x61,0x7e,0xd6,0xe7,0x62,0x25,0xbc,0x0a,
+ 0x0b,0x8c,0xcc,0x11,0xf1,0x0a,0x8c,0x42,0x45,0x9f,0x3d,0x2e,0x8e,0xc1,0xc7,0x50,
+ 0x05,0x77,0xb3,0x1c,0x0f,0xd4,0x8f,0xcf,0x37,0xf2,0x9e,0x57,0x8e,0xab,0x5e,0x95,
+ 0x7e,0x4e,0x7e,0x01,0x2d,0xe0,0x8c,0xdb,0xbb,0xc9,0x47,0xd0,0xad,0x16,0xbc,0x69,
+ 0xef,0xc4,0xc1,0x06,0x56,0xa2,0xd2,0x08,0x89,0x49,0x13,0xab,0xd8,0x27,0xed,0x86,
+ 0x2d,0xb6,0x39,0xb0,0x61,0x01,0x91,0x60,0xab,0x50,0x62,0xe4,0x79,0xc8,0x49,0x38,
+ 0x2c,0xbb,0x5e,0xa4,0x1e,0x32,0x04,0x3b,0xc1,0x0d,0x54,0x99,0xe3,0x15,0x26,0xef,
+ 0x8f,0xf3,0x7f,0x02,0x4e,0x0f,0x8d,0x39,0x77,0x6b,0x3f,0x65,0x45,0xf1,0xbc,0x18,
+ 0x4e,0x3b,0xbc,0x41,0x35,0x32,0x3a,0xc8,0x50,0xd8,0x46,0x4b,0x08,0xdd,0x8c,0xf7,
+ 0x0f,0x8d,0xcf,0xaf,0x9e,0x3e,0x04,0xbf,0x82,0x32,0x4f,0x56,0x4c,0x74,0x85,0xdf,
+ 0x3a,0xeb,0x1b,0x76,0xc7,0x6a,0x86,0x60,0x94,0x55,0xf4,0xb4,0xea,0xe2,0x71,0xe9,
+ 0x8f,0xbf,0xf2,0x45,0xdd,0x11,0x41,0x91,0x26,0xee,0xaf,0x0b,0xcf,0xc1,0xc7,0xb4,
+ 0x0a,0x1c,0x9e,0x1b,0xfb,0xc8,0x7b,0xb0,0xd0,0x98,0x36,0x2c,0x8e,0x09,0x97,0x33,
+ 0x9e,0x37,0xb2,0x7a,0xc4,0x0f,0xe0,0xa2,0xe4,0x63,0x0e,0x2a,0x0e,0xc2,0xc4,0xfd,
+ 0xfb,0x95,0xdd,0xf4,0x7d,0xcd,0x0b,0xfc,0xfe,0xd2,0x1f,0x7b,0x7c,0x41,0x7b,0xac,
+ 0x60,0x08,0x2e,0x41,0x99,0x61,0x67,0xe2,0xfb,0xf0,0x47,0xcd,0x13,0xb5,0x47,0x65,
+ 0x8f,0xa4,0x4e,0xbc,0x6f,0x9a,0x8f,0xb6,0xc4,0x43,0x0b,0xe4,0x61,0xb1,0x4e,0x6a,
+ 0x31,0xd4,0xb7,0x6d,0x31,0x71,0x37,0xec,0x85,0x02,0x83,0x32,0x32,0xc8,0x36,0x80,
+ 0x93,0xd1,0x28,0x29,0xc3,0xdd,0x3f,0xf1,0xbe,0xab,0xb5,0xf6,0x3b,0x74,0xdd,0xe6,
+ 0x21,0x76,0xd8,0xa9,0xba,0xe2,0x19,0x7c,0x7d,0x76,0x42,0xa1,0xe1,0x82,0xf4,0x8d,
+ 0x64,0x07,0xa8,0x1a,0x55,0xc9,0x08,0x9e,0x95,0xc4,0xcf,0x88,0xf2,0xb5,0x8c,0x8d,
+ 0xb1,0xfc,0x8e,0x1b,0xbf,0x4f,0xbe,0x46,0xd7,0xeb,0x73,0x87,0xe4,0x35,0xe4,0x09,
+ 0xa8,0xea,0x56,0xe3,0x74,0x0d,0x79,0x27,0xf3,0x49,0x96,0x1f,0xa2,0xdf,0x82,0x2b,
+ 0x93,0xf7,0x0f,0xd0,0xa5,0xf0,0x6e,0xbb,0x1a,0xce,0xf2,0x88,0x76,0xf8,0xa3,0x5e,
+ 0x39,0x96,0xe9,0x11,0x4f,0xc2,0xa7,0xd1,0x05,0x71,0x3b,0x1f,0x9c,0x85,0x98,0xe6,
+ 0xae,0xa8,0x79,0x8d,0x4c,0xec,0x07,0x2d,0xad,0x55,0xfd,0x47,0xa5,0x8a,0x39,0x86,
+ 0xc5,0x21,0xed,0x8a,0xb2,0xb0,0x37,0x0b,0xd7,0x07,0x3e,0x85,0xaa,0x97,0x1c,0x31,
+ 0x1c,0xfc,0x7f,0x94,0xaa,0x5a,0xc7,0x48,0x8e,0x92,0x3e,0xb1,0x3e,0x54,0xfa,0x79,
+ 0xb8,0x07,0x4f,0x75,0xd6,0x01,0x71,0x35,0x9c,0x80,0x32,0x96,0x19,0x13,0x87,0x70,
+ 0x7e,0x59,0x9f,0x3d,0x8a,0x83,0x13,0xcc,0x1b,0xb7,0xbb,0xe4,0xa2,0xc9,0xfd,0xd3,
+ 0x97,0xb7,0x5d,0x5d,0x0f,0x3b,0x80,0x7e,0x57,0x9c,0x49,0x70,0xc0,0xdc,0xf5,0xe4,
+ 0x6d,0x38,0x00,0xfa,0xc9,0x40,0x30,0xfb,0x6d,0xfc,0x43,0xd5,0xa0,0x21,0x9b,0x77,
+ 0xf2,0xfb,0xaa,0xb0,0x91,0xb5,0x1a,0x05,0xaa,0xad,0xdc,0xb6,0x0c,0x1e,0x63,0xea,
+ 0xd9,0xeb,0xf1,0x35,0xe1,0x79,0x96,0x1f,0x2f,0x5f,0xee,0x3f,0x05,0xeb,0x71,0x80,
+ 0x2f,0xae,0xc2,0xc4,0xfa,0xd7,0x49,0xad,0xb0,0x35,0xa4,0xd6,0xe3,0xee,0xca,0xc4,
+ 0x8d,0xa4,0x0e,0x2f,0xe7,0xeb,0xb9,0x97,0xdf,0x36,0x37,0xdc,0xab,0xed,0x8d,0xaa,
+ 0x03,0xb8,0x03,0xb3,0x27,0xf7,0xe7,0xe0,0x8c,0x41,0x38,0x65,0x94,0x36,0x67,0xe9,
+ 0x05,0x7f,0x0b,0xef,0xb4,0xef,0xed,0xcc,0xd4,0xf1,0xeb,0x7f,0x0e,0x5e,0x66,0xff,
+ 0x40,0xfc,0x23,0x1c,0x87,0x2e,0xe6,0xd6,0xc5,0x8a,0xc9,0xe7,0x09,0x08,0x02,0x0c,
+ 0xfa,0x7d,0xd4,0x01,0x62,0x9c,0x0d,0x42,0x05,0xcd,0x62,0x62,0x1c,0x46,0x58,0x05,
+ 0x38,0x98,0xf8,0x2e,0x0c,0x82,0x0f,0x1c,0x86,0xf8,0x1a,0x4c,0xdc,0x9f,0x2a,0x4f,
+ 0x91,0x1e,0xf6,0x94,0x96,0x19,0x15,0x3b,0xd2,0x8f,0x41,0xf8,0x76,0x1c,0x0c,0xc0,
+ 0x28,0xe9,0xd2,0xec,0x8a,0x28,0xc1,0xfb,0xe0,0xd3,0x1c,0x51,0xf1,0xe8,0xe4,0xf3,
+ 0x30,0x58,0xd5,0xd3,0xdc,0xaf,0x06,0x6d,0xd1,0x9c,0x55,0xb0,0x0b,0xd4,0x3a,0x7b,
+ 0x94,0x0c,0xc0,0x41,0xcd,0xa9,0x45,0xa2,0xa4,0x10,0x9a,0xa1,0x44,0x93,0xa3,0x24,
+ 0x3e,0x29,0x16,0xca,0xd3,0x0a,0xd3,0x5a,0xb4,0x5f,0x04,0x68,0x34,0x7d,0x00,0x32,
+ 0x94,0x6f,0x6b,0xcd,0xe6,0x7c,0x8a,0xdb,0x26,0xea,0x77,0xc3,0xcf,0x61,0x9e,0x26,
+ 0xf7,0x93,0x97,0x26,0xf7,0x83,0x9a,0x2b,0x09,0x0d,0x9a,0xd3,0xd8,0x90,0x9b,0xbe,
+ 0x4a,0xd8,0xa1,0xa9,0x5a,0x9e,0x42,0x7a,0xf1,0xfe,0x6a,0xd0,0xa5,0xe0,0x09,0x5d,
+ 0x0b,0xc5,0x9a,0x1c,0x24,0x47,0x85,0x89,0xfd,0xb0,0x26,0x33,0x04,0x11,0x38,0x02,
+ 0xb8,0xdb,0x75,0xe8,0x23,0x15,0x42,0xa6,0xf9,0xbe,0xe0,0xc5,0x2b,0xb2,0xaa,0xf0,
+ 0xf7,0xdd,0x64,0x88,0xa7,0xc4,0x89,0xfd,0xb9,0x2d,0xed,0x3d,0xb8,0xac,0x3d,0xaf,
+ 0x39,0xda,0x72,0x3e,0x23,0xff,0xee,0xaf,0x0a,0x66,0xe1,0xfb,0x4a,0x97,0xb5,0xac,
+ 0xe0,0xbc,0xd3,0xe2,0x67,0x30,0xaa,0xf9,0x82,0x8e,0x36,0xf1,0x5c,0xfa,0xc4,0x7e,
+ 0xc8,0x4b,0xbb,0xc0,0x5e,0xf1,0x2c,0xd2,0xb2,0xda,0xc4,0x42,0xd7,0x2b,0x77,0x2e,
+ 0x0e,0xdc,0x83,0xf3,0x85,0xcb,0x01,0xaf,0x3f,0x2b,0xda,0xb8,0x4f,0x3d,0xa6,0x96,
+ 0x6a,0xf6,0xfe,0xc6,0x97,0x26,0xf7,0x4f,0x79,0xde,0x59,0x88,0xa8,0x4e,0x81,0x36,
+ 0x91,0x1d,0x42,0x04,0xda,0xa3,0x36,0x86,0xab,0xd1,0x0d,0x45,0x0a,0x6d,0x12,0xf1,
+ 0x57,0xe0,0x04,0xbb,0x4e,0x4e,0x4d,0xae,0x67,0xe0,0xf6,0xb5,0xb6,0x06,0xe3,0x19,
+ 0xcd,0x76,0x9d,0xbf,0x10,0x1a,0x84,0xc2,0xa0,0x4d,0x21,0xb5,0xb0,0x47,0x55,0xef,
+ 0xb2,0x29,0xfe,0x01,0x68,0xc0,0x17,0xcf,0x50,0xc8,0x6b,0x93,0xf2,0x67,0x9b,0xd4,
+ 0x81,0x8b,0x4c,0xb4,0x40,0x74,0x65,0x07,0xc9,0x70,0x91,0x80,0xcd,0x5c,0x4f,0x67,
+ 0x91,0xa6,0xb6,0x91,0x73,0xa4,0x19,0x9c,0x9a,0x2b,0x4a,0x5e,0x9a,0xdc,0x0f,0xfa,
+ 0x8c,0x55,0xd0,0x03,0x15,0x81,0xac,0x68,0xce,0x1c,0x68,0xd6,0x66,0x6a,0xfc,0x7d,
+ 0xe1,0xa0,0xee,0xd5,0xee,0xda,0x7e,0xcb,0x3a,0x38,0x06,0x8c,0x7f,0xfa,0xc1,0x49,
+ 0xf9,0xd3,0x27,0x74,0xc0,0xa8,0x8d,0x7f,0xf4,0x25,0x03,0x91,0x4f,0xc0,0x17,0xc2,
+ 0xaf,0x3f,0xa0,0x7c,0x22,0xf9,0xb4,0x7f,0xdb,0x22,0x76,0xc0,0x27,0x82,0xb9,0x1f,
+ 0x2e,0x4e,0xca,0x1f,0xaa,0xb0,0xea,0xbe,0xe9,0xde,0x0c,0x5c,0x6d,0x5c,0x7f,0xad,
+ 0x4c,0xb1,0xb3,0x02,0x5c,0xff,0xac,0x32,0xc8,0x62,0x39,0x71,0xa5,0x4f,0xf0,0x82,
+ 0x9b,0xa1,0xa0,0x9b,0xd8,0xff,0xae,0xb4,0x6e,0x3c,0x31,0xf9,0x51,0x9b,0x4e,0x28,
+ 0x6c,0x84,0x82,0xb0,0x43,0x27,0x83,0x70,0xc4,0x98,0xc3,0xec,0x7c,0xb0,0x01,0x0a,
+ 0x18,0x8d,0x93,0xe3,0x93,0xfb,0xc1,0x25,0xdd,0x45,0xdb,0x0d,0x97,0xc7,0x16,0xb3,
+ 0xa1,0xd8,0x61,0xae,0xec,0x88,0x27,0xfd,0x24,0x6e,0xfa,0x39,0x78,0x0d,0xb7,0x4d,
+ 0x23,0xb8,0x18,0xca,0x9f,0xe3,0x93,0xf2,0x87,0x29,0x01,0xe9,0x29,0xf8,0x82,0x62,
+ 0x7b,0x90,0x3c,0x07,0xb7,0x68,0x73,0xe1,0xef,0xcc,0xf3,0x9b,0x51,0xd8,0x27,0xd7,
+ 0xc3,0xbf,0xc3,0x7a,0x3e,0x3f,0x84,0xff,0xd0,0xc4,0xfd,0x23,0x91,0x7b,0xe1,0x17,
+ 0x0d,0x07,0xf5,0xac,0x11,0xf9,0x09,0xf8,0x37,0xf6,0x4b,0xd5,0xbe,0x46,0x7c,0x07,
+ 0x3e,0x67,0xb7,0x9e,0xcf,0x5a,0x23,0xbe,0x44,0x5e,0x60,0x07,0x75,0x7b,0x9d,0xf8,
+ 0xc1,0xa4,0xfc,0xa1,0x33,0x3a,0xe1,0x6f,0xa5,0x7d,0x80,0xd2,0x66,0x29,0x79,0x0b,
+ 0x05,0xa5,0x83,0xcb,0x93,0x8b,0xd2,0x23,0x86,0x3d,0x26,0x0e,0x10,0x14,0xbc,0xcc,
+ 0xa1,0x8b,0x47,0x27,0xe5,0x0f,0x48,0x87,0xb4,0x33,0x4d,0xb7,0xe9,0xf6,0x91,0x69,
+ 0x8f,0xc0,0x89,0xa8,0x47,0xb5,0x73,0xfd,0x75,0x85,0x79,0xcf,0x9a,0x83,0x8f,0xd9,
+ 0x62,0xdd,0xbe,0x4b,0x86,0xc9,0xfd,0xb3,0x8b,0xfe,0x04,0xc8,0x51,0x94,0x3f,0x0f,
+ 0x92,0x59,0x6c,0x67,0x7c,0x97,0xba,0xec,0x41,0x7c,0xfe,0xa1,0xa6,0x5b,0x87,0xe8,
+ 0x0f,0xe0,0x34,0x3e,0x7f,0x31,0xcb,0xac,0xf3,0x17,0x4d,0x7e,0x5f,0xdc,0x11,0xb0,
+ 0x8e,0xcc,0x65,0xd4,0x63,0xb3,0x37,0xad,0x57,0xf3,0xc3,0x94,0xbf,0xef,0x7e,0x61,
+ 0x76,0x5f,0xe7,0x43,0xa6,0xe0,0x2a,0x66,0x74,0xa5,0x4d,0x9b,0x94,0x3f,0xaa,0x14,
+ 0x21,0x1b,0x22,0xaa,0x3f,0x10,0x43,0x79,0xfe,0x33,0x4d,0x55,0x17,0x71,0xf9,0xa3,
+ 0xa3,0x3c,0xa7,0x3e,0x72,0x07,0x34,0x6a,0x6e,0x46,0xdd,0x24,0x20,0x4d,0x9c,0xdf,
+ 0xce,0x19,0x83,0xd2,0x89,0x42,0x17,0xb3,0x0f,0x8b,0x6e,0x38,0xa1,0xe3,0xf3,0x9b,
+ 0xef,0x1b,0xbc,0xc5,0x68,0xed,0x12,0xcf,0x6d,0xfe,0xa3,0x56,0xc2,0xe8,0xee,0xc6,
+ 0x6f,0x4f,0x3e,0x0f,0x13,0x9a,0x95,0x0f,0x34,0x9f,0x30,0x2f,0x26,0xfe,0x42,0xba,
+ 0xb8,0xd2,0x37,0xdd,0x5c,0x9f,0x4b,0xe0,0x33,0x1c,0x1e,0xdc,0x78,0x38,0x60,0xc5,
+ 0x3a,0x1e,0xd5,0x89,0xfd,0x9f,0xaf,0xec,0x46,0x21,0xb6,0x17,0xef,0x2f,0xcf,0xc4,
+ 0xf5,0x5f,0xe4,0xc9,0xe4,0xf2,0xfc,0x8a,0x34,0xdf,0xc0,0x81,0x14,0xbe,0x4a,0xab,
+ 0xd8,0xb2,0xf8,0x0e,0xa3,0x76,0x62,0xfe,0x0e,0xf8,0x87,0x30,0x2a,0x29,0x15,0xd5,
+ 0x96,0x5b,0x89,0x34,0x39,0xf3,0x32,0xb9,0xfe,0xed,0x82,0x76,0x83,0xc6,0x72,0xbe,
+ 0x89,0x1a,0xbf,0x04,0x37,0xa2,0x45,0xfe,0xb0,0xb4,0x22,0xd8,0xa0,0x38,0x63,0x34,
+ 0x46,0xdc,0xf0,0x33,0xb5,0x08,0x32,0xf8,0xfc,0x43,0xe0,0x34,0x70,0x50,0x08,0x3f,
+ 0x13,0x4a,0x1a,0xcc,0xf9,0x13,0xfb,0x81,0x4a,0xb4,0x21,0x1c,0x72,0x82,0xcd,0x93,
+ 0x6e,0x77,0xb5,0x53,0xf5,0x8e,0xb9,0x7c,0x7d,0x62,0x45,0xa1,0xa3,0xd4,0xeb,0xac,
+ 0xc5,0xfd,0xe6,0x66,0x4b,0xf2,0xd3,0x93,0xf2,0x07,0x6e,0x5a,0xad,0x6e,0x70,0xa1,
+ 0x34,0x8e,0x15,0xb8,0xe1,0x8f,0x50,0x04,0xa6,0x7e,0xb9,0xb8,0xe0,0xc1,0x5e,0x1c,
+ 0x14,0x12,0xfe,0xbe,0xb8,0x1f,0x8c,0x49,0xf9,0xb3,0xe3,0xa6,0x21,0xe5,0x8a,0x7a,
+ 0x33,0xa0,0xfe,0xdd,0x0d,0xaf,0xdb,0xaa,0xa8,0x83,0xbf,0xef,0x19,0xa1,0xca,0x70,
+ 0xec,0x11,0x2e,0x90,0xab,0x04,0x55,0xdb,0xd7,0xc5,0x41,0x32,0x89,0x37,0x66,0xbc,
+ 0x0b,0xaf,0xb2,0xaa,0x33,0x8e,0x4f,0x76,0x3e,0x04,0x57,0x03,0xa5,0xea,0x46,0x43,
+ 0xac,0x64,0x57,0x9d,0x8b,0xfa,0xb2,0xce,0x3b,0x71,0xa0,0x96,0x1e,0x77,0xbc,0xdb,
+ 0x38,0x2c,0x4c,0xca,0xe7,0xbc,0x73,0xa8,0xd4,0x4a,0x7a,0xe5,0xcf,0x89,0x53,0xda,
+ 0xa4,0x15,0xe5,0xd3,0x7e,0x32,0x4f,0xeb,0xee,0x77,0x0e,0x67,0x3e,0x47,0xfe,0x0d,
+ 0x0e,0x29,0xde,0x61,0x79,0x37,0xbe,0xef,0xa4,0xfc,0x4f,0x0b,0xc1,0x56,0x70,0xf7,
+ 0xc9,0x1e,0x12,0x52,0x76,0xaa,0xf8,0xe2,0xc0,0x15,0x3d,0xb8,0xfa,0xe9,0x02,0xbf,
+ 0x54,0xbb,0x07,0x61,0xb1,0x4d,0x55,0x8f,0x4e,0xde,0xdf,0x10,0x9e,0xa4,0x2d,0xac,
+ 0xc4,0x90,0x63,0x24,0x84,0xab,0x51,0x04,0x74,0x73,0xd8,0xad,0x76,0x67,0x38,0x8f,
+ 0xd3,0xae,0x70,0x87,0x56,0x4e,0x09,0xc1,0xf5,0x1c,0x4e,0xee,0xcf,0xdc,0x75,0xf0,
+ 0xa6,0x81,0x5f,0x3f,0x26,0xd6,0xe0,0xd7,0x47,0x45,0xbc,0x5b,0xfe,0x02,0xc2,0x92,
+ 0x8a,0xa8,0xad,0xe3,0xaf,0xe6,0xd1,0x4f,0x35,0x67,0x7f,0xd6,0x6e,0xd2,0x3f,0x29,
+ 0x7f,0xce,0xe2,0x96,0xbd,0x42,0xaa,0x7a,0x1c,0xb1,0x9c,0xbd,0x70,0x15,0xaa,0x6c,
+ 0x8e,0x6e,0x71,0x90,0x5d,0x14,0x7c,0xfa,0x3f,0x74,0x8a,0x1f,0xd1,0x2b,0x70,0xc8,
+ 0x70,0xec,0x16,0x47,0x26,0xe5,0x8f,0xa1,0x3c,0xcd,0x2e,0x6a,0x15,0xc6,0x26,0xcf,
+ 0xb4,0x1d,0xca,0x1f,0x51,0xec,0x3b,0x9a,0xe4,0xb9,0xf0,0x82,0xf6,0x50,0xdb,0xa3,
+ 0x6e,0xf1,0x1b,0xe4,0x84,0xe1,0x8d,0xda,0x3b,0xc4,0x24,0xfe,0x39,0x2e,0xcd,0x86,
+ 0x8b,0x30,0xcf,0x90,0x87,0x9d,0x2a,0xe2,0x49,0x27,0xcb,0xda,0x4c,0x70,0x87,0xa8,
+ 0xdf,0xd3,0x23,0x4f,0x92,0xc2,0x26,0xdc,0x5a,0x11,0xaa,0x8b,0x0f,0x4d,0xee,0x87,
+ 0x78,0xda,0xed,0x4a,0x97,0xea,0x32,0x70,0x7d,0x22,0xa8,0xa6,0xf5,0xdc,0x1b,0x99,
+ 0xad,0x57,0x43,0xb1,0xa3,0x05,0x14,0x62,0x13,0x70,0xa1,0x0c,0xaa,0x90,0xf2,0x49,
+ 0xf9,0xb3,0x42,0xb8,0x2e,0x30,0x27,0xf2,0x9d,0x38,0xc2,0x1e,0x4f,0xf5,0xd6,0x86,
+ 0xd9,0xd2,0x4f,0x96,0x93,0xd7,0x61,0x6d,0x78,0x6e,0x88,0x2e,0x27,0x37,0xdc,0xb9,
+ 0x93,0xe3,0x81,0xbf,0x25,0xcb,0x93,0xf8,0x27,0x90,0x5e,0xdb,0xa5,0x95,0xf7,0x39,
+ 0x3c,0xa4,0x99,0xfd,0x1e,0x3c,0x76,0x07,0x59,0xd2,0x1b,0x7e,0x41,0xed,0xd4,0x5c,
+ 0xd9,0x32,0x95,0xce,0x42,0x79,0xc0,0x7d,0xa3,0x9c,0x34,0x2a,0xb4,0xeb,0xf7,0xe5,
+ 0x8d,0x40,0x95,0x31,0xed,0x33,0xf1,0x34,0xfc,0xf1,0xae,0x45,0x14,0xb5,0xf9,0x02,
+ 0xf8,0x67,0x58,0x58,0x9b,0xd5,0x8f,0xcb,0xf2,0x5b,0x05,0x55,0xdb,0x1b,0x62,0x74,
+ 0x52,0xfe,0x74,0xa6,0x9d,0xc2,0x77,0x5e,0x18,0xc7,0x63,0xab,0xc2,0xa5,0x6f,0x7a,
+ 0xd4,0xac,0x0e,0xd1,0x4d,0x4f,0x84,0xbd,0xc6,0xd2,0x98,0x89,0x88,0xbc,0x5c,0x70,
+ 0x3d,0x93,0xc4,0x3f,0xc2,0x76,0xf8,0x31,0x29,0xe8,0x43,0xfc,0xac,0xd0,0x03,0x90,
+ 0x8f,0x07,0x21,0x6c,0xcf,0x6b,0x24,0xaa,0x11,0x40,0x04,0x28,0x35,0x72,0xa0,0x52,
+ 0x9f,0x7e,0x7e,0xf2,0xfb,0x1a,0xa8,0x7b,0x9f,0x60,0xb3,0x07,0x32,0xd6,0x90,0x6c,
+ 0xd8,0xab,0xef,0x52,0x69,0x1d,0x99,0x35,0x0e,0x7b,0xe6,0xcc,0x22,0xe3,0xf8,0x27,
+ 0x36,0x29,0x7f,0x02,0xb9,0xa7,0xe8,0x96,0x90,0x6a,0xe0,0xb1,0x4a,0x17,0xf6,0x82,
+ 0x2b,0x68,0x2b,0x27,0x0e,0xad,0x31,0xaa,0xfe,0x89,0x2e,0x5e,0x97,0xc9,0xb6,0x32,
+ 0x75,0x80,0xde,0x46,0x5e,0xb3,0xe0,0x9f,0x8b,0x91,0x53,0x2a,0xc2,0x36,0xdd,0x56,
+ 0xae,0x5e,0x84,0x45,0xdb,0xec,0x1f,0xc8,0x73,0x51,0xde,0xb7,0x47,0xdd,0x1d,0xf8,
+ 0xa1,0x8f,0xeb,0xb1,0x06,0xc4,0x3f,0x87,0x92,0xf8,0x07,0x76,0x66,0x71,0xa5,0x9f,
+ 0x05,0xb7,0xa0,0x1a,0x22,0x4f,0x11,0x44,0xcb,0x06,0xe2,0x01,0x1f,0xc7,0x3f,0x0c,
+ 0x06,0xb5,0x71,0xfc,0x33,0xf1,0x3c,0x34,0xf8,0x1e,0x8c,0xea,0x15,0xda,0xa6,0x68,
+ 0x4d,0x21,0x9a,0x15,0x5e,0xae,0xdd,0xe6,0x84,0x8e,0x45,0x2b,0x35,0x84,0xcd,0x85,
+ 0xd0,0xa3,0x78,0x71,0x60,0xc5,0x3f,0xd2,0x37,0x3c,0x7b,0x98,0x13,0x41,0x8e,0xad,
+ 0x10,0x0e,0x0a,0xd7,0x69,0x72,0x1b,0xe9,0x10,0x10,0xf6,0x84,0x22,0xb9,0x04,0x35,
+ 0x2c,0xea,0x5f,0xd4,0xa7,0xf1,0x49,0xf9,0x90,0x27,0xe1,0x34,0x28,0xd2,0x6e,0xe4,
+ 0xe8,0x68,0x0f,0x38,0x87,0x71,0x7e,0x21,0x7d,0x14,0xe6,0x05,0x68,0xff,0x96,0x87,
+ 0xab,0x1f,0x85,0x82,0x5a,0x3a,0x6c,0xc1,0x3f,0x54,0x92,0xe0,0x20,0x53,0x83,0x37,
+ 0xe6,0x22,0xda,0xd9,0xe3,0x2f,0xd4,0xe4,0x5c,0x92,0x6b,0xc2,0x1e,0x1a,0x24,0xf7,
+ 0xa5,0xad,0xf5,0xe7,0x6b,0x19,0x56,0xfc,0xd3,0x0d,0x21,0x65,0x04,0x4c,0x74,0xa7,
+ 0x9a,0xb0,0xc7,0x81,0xb0,0x07,0x61,0x46,0x09,0xe2,0x9f,0x82,0x10,0xd9,0x80,0xa2,
+ 0x71,0xa9,0x51,0xf3,0x51,0x12,0xff,0xfc,0xcd,0x05,0xf8,0x0c,0x38,0xc8,0x11,0xbe,
+ 0x87,0x68,0xa7,0x4a,0x73,0x9c,0x16,0xdf,0x23,0x1c,0xf6,0xcc,0x6b,0x13,0x9f,0x9c,
+ 0xc0,0x3f,0x4f,0x4d,0xe2,0x9f,0x6d,0x33,0x2e,0xc0,0x6f,0xc1,0x77,0xb7,0xdc,0x26,
+ 0xd6,0xc2,0x31,0xa5,0x54,0xcb,0x7c,0x4d,0x5c,0x10,0x7e,0x05,0x0e,0xe0,0xa0,0x66,
+ 0x01,0x7b,0x45,0xad,0xc2,0xf5,0x99,0x36,0x67,0xf2,0xfc,0x96,0x2b,0x71,0xe8,0x83,
+ 0x12,0xbb,0xdc,0x94,0xa3,0x42,0x67,0x6e,0x11,0xcb,0x24,0x36,0x7c,0x1e,0xb4,0x50,
+ 0x96,0xad,0x25,0xf9,0xda,0x88,0x5a,0x02,0x94,0x89,0x59,0xe9,0x49,0x2b,0xb6,0x97,
+ 0x6e,0x06,0xf7,0x9d,0xf2,0x75,0x64,0x55,0x5a,0x03,0x71,0x6a,0xf4,0xba,0x70,0x1a,
+ 0x87,0x3d,0xbd,0xb2,0xe2,0x97,0xa0,0xa1,0xce,0x1d,0xa4,0xb9,0x4e,0x22,0x24,0xf1,
+ 0x58,0x07,0xb4,0xe4,0x23,0xc8,0x54,0xd2,0x67,0x23,0xfe,0x2c,0xd2,0x10,0x1d,0x15,
+ 0x9a,0xcb,0x2e,0x47,0xb3,0x0b,0xb5,0xc3,0x6a,0x96,0x3f,0x10,0xcd,0x4e,0x9f,0x94,
+ 0x0f,0xed,0xd0,0x01,0x6f,0x08,0xbe,0x6a,0x39,0x2a,0xae,0x52,0x8e,0x81,0xf7,0x76,
+ 0xfb,0x8f,0xc5,0x42,0x38,0x26,0x78,0xb5,0xbb,0xa3,0xf2,0x1c,0xc4,0x3f,0x3e,0xcd,
+ 0x1d,0x75,0xb8,0x26,0xe5,0x43,0x27,0x74,0xd0,0x04,0xe8,0xcd,0x41,0x18,0x0c,0x3e,
+ 0xbf,0xe3,0x71,0xb1,0x17,0x61,0x4f,0x45,0xf5,0x46,0x05,0x07,0xef,0xb3,0xca,0x55,
+ 0x0e,0x05,0x0d,0xb1,0x89,0xf9,0x45,0xa0,0x6b,0x7c,0x77,0xdd,0xcd,0x61,0xcf,0x19,
+ 0xf0,0x0a,0x69,0xac,0x11,0x3f,0x04,0x79,0x04,0x5c,0x61,0x51,0xc7,0x4f,0xe3,0x45,
+ 0x44,0x04,0x16,0xfc,0x23,0xe5,0x29,0x47,0xd8,0x1c,0x86,0x42,0x86,0xc2,0x06,0x21,
+ 0x9f,0xd1,0x21,0xe2,0x42,0x7d,0xe4,0x63,0x91,0x38,0x0e,0x8e,0x44,0x9c,0x2c,0xa0,
+ 0x8b,0x1b,0x26,0x57,0xc7,0x35,0xe3,0x9e,0xb4,0xbd,0x03,0xee,0x9e,0xeb,0x3d,0xce,
+ 0x56,0xf8,0x29,0xc4,0xe3,0xd7,0x2f,0xb6,0x49,0xa8,0x2f,0xdd,0xd5,0xa8,0xf1,0x37,
+ 0x22,0x10,0x72,0xc5,0xd1,0x94,0x48,0xe2,0x9f,0xfc,0xea,0x99,0xb0,0x90,0xce,0x1e,
+ 0x44,0x18,0x50,0x09,0x8f,0x29,0x05,0x47,0xf3,0xea,0x71,0xff,0x1c,0xb0,0xcd,0x8d,
+ 0x07,0xea,0xc9,0xcc,0xc2,0x18,0x9b,0xdb,0x8f,0xbf,0xea,0x4b,0xe2,0x2b,0x3a,0x0b,
+ 0xfe,0x3b,0xab,0x1a,0xcc,0xbc,0x82,0x66,0xda,0xef,0xc2,0xf3,0xe3,0x99,0x6b,0xc4,
+ 0x59,0xf0,0x27,0xe6,0x8e,0x23,0x10,0x7a,0x02,0x07,0xdd,0x71,0xf7,0x1a,0xf1,0x78,
+ 0x12,0xff,0x64,0x76,0x4a,0x97,0x60,0x4e,0x7c,0xda,0x3e,0x54,0x73,0x7f,0xd4,0x1e,
+ 0xe6,0x82,0x9d,0xab,0xf5,0x12,0xae,0xdf,0xd1,0xb0,0x45,0xc3,0xd3,0x11,0x9b,0x16,
+ 0x9e,0x94,0x3f,0x5a,0xda,0x3b,0xf0,0x1b,0xb6,0xf0,0xf7,0x8e,0x31,0xd1,0x27,0xfd,
+ 0xee,0xeb,0xa5,0xfc,0x6e,0xfb,0xe1,0x2d,0x56,0x15,0xbf,0x7b,0x8d,0x30,0x4b,0x3b,
+ 0x8e,0x03,0xc7,0x88,0xd8,0x3f,0x29,0x7f,0x3a,0xa7,0x6f,0x87,0xf5,0x5b,0xf2,0x7b,
+ 0xe8,0x83,0xb6,0x99,0xf0,0x1b,0x25,0xbf,0x37,0x33,0xc4,0x9f,0xbf,0xa3,0xd8,0x90,
+ 0x1f,0x22,0x33,0xa1,0x23,0x5a,0xcc,0x45,0xf1,0x07,0x93,0xe7,0x3d,0x0a,0x33,0xe1,
+ 0x31,0x98,0x6d,0xd8,0xf0,0x7d,0xd5,0xad,0x0a,0x9a,0xb1,0x71,0xb2,0x1d,0x1e,0x0b,
+ 0x15,0xf7,0xca,0xf5,0xd7,0xdd,0x2f,0x21,0x5e,0x32,0xe4,0x7a,0xb2,0x6e,0xf2,0x7b,
+ 0x7d,0x3b,0xf7,0x18,0x34,0x2a,0x6a,0x0f,0x2e,0x9a,0x5d,0xdc,0x0a,0x6a,0x7f,0xc6,
+ 0x53,0x88,0xb7,0xf7,0x12,0x37,0xbf,0xed,0x52,0x44,0x44,0x38,0x58,0x10,0x3e,0xd3,
+ 0x34,0xb1,0x3f,0x5d,0xd3,0x7f,0x0e,0x6f,0xb0,0x85,0x86,0x6d,0x18,0xf1,0xc3,0xef,
+ 0xa0,0x4b,0x41,0x69,0xd0,0x24,0xfd,0x0a,0x66,0xe1,0xfb,0xca,0xab,0xa7,0xb7,0x70,
+ 0x60,0x73,0x28,0x67,0x43,0x53,0xf2,0x79,0x86,0xa4,0xd1,0x6a,0x9f,0x81,0xf6,0xf8,
+ 0x90,0x7a,0x49,0xf2,0xf5,0x3a,0xfa,0x11,0x36,0xff,0x13,0xf3,0x19,0xcb,0xa2,0xa8,
+ 0xf1,0x47,0x43,0xbe,0xc4,0x8a,0x4d,0xdc,0xbf,0x41,0x19,0x73,0x5d,0xe6,0x37,0xa9,
+ 0x37,0xfd,0x1b,0x39,0x47,0x33,0x4f,0x8b,0x65,0xec,0x77,0x7a,0x69,0xbf,0x63,0x58,
+ 0xae,0x84,0x53,0x90,0xd3,0x87,0x08,0x21,0xbe,0x6a,0x62,0x7e,0x4f,0xd3,0x4a,0xe5,
+ 0xa0,0x51,0x82,0xf7,0xb7,0xd9,0xc9,0xcf,0x84,0xca,0xf3,0x68,0xad,0xcf,0x81,0x16,
+ 0x56,0x14,0x97,0xb7,0xaf,0x74,0x6b,0xdd,0x1a,0x0e,0x62,0x24,0xae,0x25,0xf1,0x4f,
+ 0x09,0xca,0x93,0x12,0xe3,0x46,0x8e,0x7f,0xb6,0x42,0x49,0x3c,0x23,0x96,0x5e,0x08,
+ 0x2d,0xc4,0x69,0xc8,0xcf,0xe1,0x95,0xc3,0x4a,0x91,0x61,0x8b,0xa5,0xc7,0x27,0xf7,
+ 0x0f,0x05,0x3b,0x8a,0x29,0xb7,0x81,0xf6,0xbe,0x1b,0x61,0x40,0x89,0x41,0x55,0xdc,
+ 0x6f,0x8d,0x54,0x35,0x64,0xc5,0xd9,0x44,0xf7,0x00,0x35,0x5a,0xe6,0x93,0xa3,0x93,
+ 0xfb,0x93,0xd1,0xd5,0x30,0xea,0x32,0x9f,0xdf,0x8d,0xcf,0x3f,0xcb,0x40,0xfb,0xb4,
+ 0x90,0x9e,0x50,0xbd,0xfc,0x35,0xdd,0xc2,0x19,0x57,0x05,0x0e,0x0a,0xe2,0x64,0xe2,
+ 0x79,0xf4,0x8c,0x11,0x17,0xd7,0x5f,0x1b,0x87,0xc5,0xb7,0x51,0xbf,0xdf,0x6a,0x38,
+ 0xe2,0x22,0xc2,0x1e,0xb8,0xd9,0x58,0x66,0x88,0x0f,0xd3,0x31,0x40,0x89,0x34,0x2c,
+ 0x0e,0x4e,0xca,0x1f,0x43,0x18,0xa3,0x6f,0x1a,0xa5,0x61,0x7b,0x9f,0xf8,0x9c,0xf6,
+ 0x2b,0xb5,0xa2,0x0f,0x37,0xd2,0x11,0x78,0x95,0xf8,0x8e,0xda,0x47,0xc5,0x47,0xb4,
+ 0xab,0xd1,0xaa,0x01,0xc7,0x2e,0x71,0x38,0xe9,0xff,0x51,0x3e,0x63,0x61,0x55,0xfd,
+ 0x09,0x65,0x5b,0x8b,0x8d,0xf7,0x57,0x38,0xcf,0x2c,0xe9,0x22,0x6e,0xfd,0x67,0x74,
+ 0x5e,0xbf,0xad,0x8b,0x3b,0x6a,0xf0,0x8d,0xe4,0x76,0xc4,0x27,0x93,0xfe,0x9f,0xb4,
+ 0x57,0x76,0x77,0x17,0x3e,0x13,0xe9,0x64,0xa4,0x15,0xb6,0xdc,0xe0,0x3a,0x25,0x7b,
+ 0x49,0x2b,0x6b,0x84,0x39,0x47,0x71,0x87,0x2c,0x6d,0xda,0x9b,0x8f,0xd0,0x48,0x25,
+ 0xe7,0x93,0xfe,0x9f,0x19,0x4d,0xd0,0xc9,0x8a,0x8c,0x3c,0xdd,0xe9,0x06,0xe6,0x72,
+ 0x72,0x20,0x64,0xa7,0x3f,0x83,0x07,0x70,0x19,0xc7,0xef,0x2f,0x5a,0xf1,0x8f,0x36,
+ 0x7d,0x00,0x2e,0xb2,0xf2,0x88,0xbd,0x0d,0xbf,0xfe,0x1b,0x1a,0x5f,0x0d,0x1c,0xc8,
+ 0xf8,0xc5,0x5b,0xb9,0xfe,0xe5,0xc0,0x58,0xd6,0xc5,0x7e,0xab,0xff,0x47,0x7d,0x07,
+ 0x16,0xd6,0x39,0x5e,0x13,0x86,0xc0,0xdc,0x18,0x88,0x0f,0xe9,0xd5,0xf1,0x81,0x8a,
+ 0x88,0x88,0xaf,0xd8,0x90,0x05,0xff,0x74,0x90,0x63,0x50,0x16,0xe5,0xb0,0x53,0x79,
+ 0x53,0x2b,0xe3,0xda,0x1c,0x37,0x1e,0xf5,0x9a,0x3b,0x10,0x11,0xa9,0xef,0xa8,0x63,
+ 0x87,0x05,0xff,0x9c,0x49,0x73,0x43,0x03,0x4a,0x4b,0xea,0xc9,0x19,0x93,0x22,0x74,
+ 0xa1,0x41,0x9f,0xc5,0xc7,0x7e,0x1e,0x16,0xbe,0x6b,0x8b,0x39,0x87,0x38,0x7e,0x36,
+ 0xe4,0x5d,0x16,0xff,0x4f,0x3c,0xed,0xee,0x6a,0x02,0x85,0xac,0x05,0x70,0x5a,0x43,
+ 0xd3,0x2a,0xfe,0x9a,0x27,0xb5,0xbd,0x30,0xc7,0x28,0xf2,0xe0,0xf7,0xde,0x09,0xee,
+ 0x5e,0xb9,0xd0,0x82,0x7f,0x46,0x84,0x74,0x6d,0x1d,0xcb,0x1f,0xc8,0x08,0xf8,0x9f,
+ 0x10,0x1f,0x8d,0xce,0x1e,0xb4,0xad,0x21,0xef,0xd0,0x03,0x3a,0x0e,0x7e,0x40,0xde,
+ 0x51,0x9f,0x66,0x99,0x71,0xf9,0xdb,0xa4,0x52,0x99,0xb8,0x7f,0x80,0x66,0x19,0x47,
+ 0xd9,0x02,0xe6,0x98,0x4d,0x4e,0xc1,0x0b,0xb1,0x7d,0xf1,0x12,0x8f,0x78,0x52,0xbb,
+ 0xa4,0x2f,0x88,0x67,0x95,0xe3,0xf3,0xff,0x1e,0x2a,0x0d,0x47,0xa7,0x90,0x9d,0xf4,
+ 0xff,0x64,0xee,0x87,0x2b,0xca,0xcd,0x3d,0x59,0xf1,0x1a,0xee,0xfd,0xf3,0x19,0x77,
+ 0xe3,0xb2,0x68,0x97,0x94,0xc4,0xfa,0xe0,0x09,0xad,0xea,0xc5,0xf7,0xed,0xb7,0xe0,
+ 0x9f,0x01,0xf6,0x2e,0x57,0x82,0x2c,0x67,0x08,0xde,0xc0,0x6d,0x79,0x33,0x2e,0x0b,
+ 0xbd,0x2a,0x78,0xfb,0x33,0x63,0xb2,0x3b,0x61,0x98,0xe8,0x28,0xcf,0x27,0xf1,0xcf,
+ 0xf4,0xe7,0x6a,0xd7,0x49,0xf9,0x1a,0xd5,0xc8,0x3b,0xd0,0x40,0xf3,0xfb,0x6f,0xe4,
+ 0xf6,0xd4,0xf3,0xba,0xda,0xeb,0x42,0xf9,0xc9,0xed,0x29,0x43,0x0e,0x39,0x93,0xf8,
+ 0x87,0xc1,0x75,0xf0,0x73,0xa6,0x72,0xd8,0x73,0x4a,0xe3,0x68,0x47,0xe6,0xfe,0x9f,
+ 0x03,0xd1,0x7c,0x8e,0x88,0x66,0xc1,0x01,0x56,0x1c,0x97,0xeb,0x10,0x6f,0x4f,0xac,
+ 0x3f,0xe2,0x1f,0x68,0x94,0xd4,0x6a,0xd7,0x2d,0xe4,0x24,0xe5,0x68,0x4a,0xf6,0xf8,
+ 0x87,0x10,0x58,0x72,0xfb,0xc5,0x6f,0xc7,0x01,0xca,0x1f,0xd5,0x8a,0x7f,0xa6,0x3f,
+ 0x13,0x3e,0xa7,0xcd,0xd7,0xed,0x83,0x68,0xb4,0x72,0x6f,0x8f,0x69,0x2f,0x5f,0x04,
+ 0x2f,0x22,0xa2,0x69,0x2e,0x1c,0xa0,0x7d,0x11,0x17,0x2f,0x5a,0xf0,0x4f,0x7c,0xe6,
+ 0x88,0xea,0xb3,0xcf,0x63,0x62,0x9c,0x8c,0x08,0x3e,0x58,0x66,0xfa,0x43,0x10,0xf6,
+ 0xf0,0x2b,0xd2,0x38,0x10,0xb2,0xfa,0x7f,0x7a,0x05,0x54,0x8b,0x1a,0x8a,0x91,0x26,
+ 0x72,0x8c,0x95,0x85,0x36,0x21,0xfe,0x69,0x3a,0xc6,0x61,0xcf,0xe6,0x2f,0xae,0x32,
+ 0xf5,0xe3,0x54,0xfc,0x23,0x35,0x57,0xb7,0x7f,0x29,0x33,0x97,0xcc,0x86,0x06,0xc3,
+ 0xf9,0x60,0x56,0xd4,0x76,0x0b,0x34,0xbf,0xeb,0x0c,0x16,0x6f,0xc7,0x2b,0xcd,0x5a,
+ 0x89,0x46,0xdb,0x2c,0xf6,0x57,0x5e,0x1a,0xbf,0xe8,0x0c,0xda,0xda,0xd2,0x9f,0x84,
+ 0xe6,0xe0,0x9c,0xfb,0x50,0x8c,0xcc,0xe6,0x3b,0x30,0x88,0xd3,0xd2,0xf0,0x57,0x6e,
+ 0xfc,0xa7,0xc3,0x56,0xfc,0x93,0x66,0xce,0x97,0xdb,0xd2,0xd7,0xe2,0x40,0x0d,0xda,
+ 0x72,0xd3,0xd3,0x12,0x6e,0x90,0x5c,0x5b,0x1a,0x69,0xd0,0xdc,0xc1,0xf2,0x5c,0x0b,
+ 0xfe,0x29,0xcf,0x0c,0xb5,0x47,0x88,0x17,0x36,0xb2,0x02,0x1d,0x5a,0xa5,0x32,0x81,
+ 0x03,0x21,0xd4,0x6f,0x5d,0x28,0xc7,0x6a,0x42,0xd0,0x47,0x7c,0xd0,0xca,0xac,0xfe,
+ 0x9f,0x9b,0x2e,0xe0,0xb1,0xaa,0x0a,0x66,0xf6,0x7f,0xf9,0x1b,0x70,0xb9,0xda,0x17,
+ 0xcc,0x8a,0x16,0x0c,0x98,0xb0,0x67,0x53,0xc2,0xf1,0x85,0xaa,0xbf,0xdf,0xea,0xff,
+ 0x11,0x06,0xb4,0x13,0x33,0xbc,0xcb,0xf1,0xfc,0x16,0xb2,0x37,0xa8,0x37,0x88,0x83,
+ 0xd9,0x70,0x2c,0xe4,0x5b,0x8e,0xcb,0x52,0xa8,0xe1,0xd2,0xf1,0x2b,0x2f,0x25,0xf1,
+ 0x0f,0xf4,0xf8,0x23,0x6a,0x18,0x5c,0x08,0xc3,0x48,0x24,0xd4,0x4e,0x5d,0x8c,0xe8,
+ 0x61,0x86,0x08,0xcd,0x15,0xb6,0xe1,0x15,0xb5,0x1d,0x32,0x0d,0xab,0xff,0x67,0xc6,
+ 0x69,0xb6,0x16,0xf2,0x97,0xd3,0x7b,0xb3,0xbf,0xb2,0x63,0x2d,0xc5,0x8d,0x77,0x2f,
+ 0xc9,0x65,0x6b,0x57,0x15,0x07,0x69,0x30,0x8c,0x83,0xc4,0x95,0xa4,0xff,0x27,0x6f,
+ 0x46,0x1b,0x4d,0x5c,0x74,0xe6,0xc2,0x93,0x88,0xa8,0x10,0x16,0xb6,0xc1,0xa3,0x30,
+ 0xb7,0x9a,0x06,0xb3,0x39,0x50,0x44,0x7c,0xc8,0xfd,0x69,0x13,0xfb,0x41,0x9f,0x31,
+ 0x00,0xc7,0x34,0x6f,0xc0,0x1e,0xad,0xc1,0xaf,0x99,0xef,0xd5,0xb6,0x47,0x39,0xfe,
+ 0xc1,0xcf,0xda,0x9a,0x18,0x98,0xf8,0x76,0x70,0x72,0xff,0x0f,0x72,0xff,0x4f,0x0f,
+ 0x2e,0xc2,0x36,0x71,0x80,0x1e,0xcb,0x47,0xfc,0x63,0x2e,0x0b,0x70,0x84,0x2c,0x8e,
+ 0x23,0xa2,0x68,0x4e,0xd2,0xff,0xe3,0x52,0x74,0x38,0xa3,0xe1,0x6a,0xb3,0x1a,0x55,
+ 0xea,0x43,0xfc,0x99,0xc9,0x81,0x68,0x9f,0xe9,0x7f,0xc3,0x41,0x80,0x0f,0x0c,0xd1,
+ 0x36,0xb9,0xff,0x5d,0x69,0x2e,0xc5,0x74,0x32,0x77,0x38,0x5d,0xb0,0x01,0x05,0x17,
+ 0xd5,0x89,0x8b,0xbe,0x09,0x65,0xdd,0x36,0x1c,0xe0,0x15,0x67,0x03,0x5e,0xb1,0x25,
+ 0xf1,0x49,0xda,0x52,0x40,0xa3,0x20,0xbe,0xbc,0x82,0x64,0xa1,0xfe,0x0a,0xf5,0x5c,
+ 0x5f,0x8e,0x82,0x1a,0x0f,0xce,0x08,0xe5,0x57,0x1a,0x99,0x3a,0x1c,0x28,0xf7,0xdb,
+ 0xa4,0x89,0xef,0xab,0x0b,0x0b,0xe0,0x31,0x2d,0xbf,0x9f,0x7e,0x8f,0xdc,0x04,0x3f,
+ 0x42,0x60,0x40,0x57,0x71,0x3c,0xc0,0x66,0x6b,0xb6,0xef,0xf9,0x6f,0x82,0xf5,0xfc,
+ 0x57,0x0f,0xe3,0x3f,0x34,0x71,0xff,0x4e,0xb8,0x01,0xde,0x61,0x7b,0x75,0xd7,0xa0,
+ 0xad,0x82,0xbc,0xc6,0x4a,0xf5,0xcc,0x11,0xb9,0x0b,0x7a,0x99,0x47,0x97,0x06,0xe5,
+ 0x0a,0x72,0x8a,0xed,0x8d,0xbb,0x07,0xe5,0x22,0x8b,0xff,0xa7,0x03,0x3e,0xe0,0x4e,
+ 0x78,0xbd,0x66,0x10,0x3e,0x48,0x58,0xf7,0xab,0xf9,0xb2,0x00,0x0e,0x86,0xf8,0x79,
+ 0x34,0x52,0xfd,0x3f,0x69,0x57,0xa0,0x87,0x95,0x86,0xb2,0xce,0x14,0xec,0x67,0x27,
+ 0x58,0xe9,0x80,0xe3,0x8c,0x78,0x05,0xae,0x46,0x4b,0x07,0xec,0x67,0xc4,0xcf,0xe1,
+ 0x9f,0x59,0xa9,0x6a,0x5f,0x2e,0x26,0xfd,0x3f,0x9d,0x42,0x13,0x5b,0xdb,0xb1,0x33,
+ 0x88,0x66,0xbb,0xc4,0x7e,0xbb,0xe5,0xd9,0x38,0x0a,0xa2,0xb7,0xd1,0xb0,0x9a,0x3b,
+ 0x78,0xd7,0x74,0x1c,0x3c,0x2b,0x7d,0xc1,0xb0,0x2d,0x27,0x16,0xff,0x8f,0xb6,0x4d,
+ 0x6a,0x55,0x67,0x13,0x5b,0x30,0x1c,0xed,0x4d,0xa7,0xf9,0x7d,0xb6,0x20,0xe9,0x87,
+ 0x7d,0x90,0x6f,0x64,0xd4,0xe3,0xa0,0x0d,0x66,0x03,0xed,0xf3,0x43,0xd2,0xff,0x93,
+ 0xfb,0x92,0xc6,0xa4,0xc2,0x72,0x9a,0x87,0xaf,0xd4,0x85,0x62,0x9c,0x82,0xff,0x24,
+ 0xec,0x91,0x4c,0x0b,0xf7,0x24,0x9a,0x13,0xa8,0xfa,0x81,0xd0,0xc9,0xfd,0xd9,0x39,
+ 0x63,0x37,0x1a,0x89,0x0b,0xfa,0xb3,0xba,0x51,0x6d,0xb5,0x48,0x5e,0x2d,0x2b,0xe1,
+ 0xcf,0xf1,0x1a,0x99,0x89,0x81,0xa9,0x71,0x8a,0x2c,0xf2,0xf0,0xa4,0x74,0x29,0x58,
+ 0xd1,0x6f,0xba,0x7d,0xde,0xa8,0xf6,0x55,0x67,0x71,0xa0,0x78,0x89,0x3c,0x32,0xfe,
+ 0x87,0x09,0x0d,0x98,0xf4,0x3f,0x08,0xca,0x07,0xf0,0xea,0x96,0xd2,0x7e,0x7b,0x5c,
+ 0xbc,0x9f,0xeb,0x93,0x26,0xfb,0xe8,0x17,0x87,0xe1,0xa2,0xba,0x98,0x65,0xc5,0x0b,
+ 0x46,0xf8,0x42,0x19,0x8e,0x41,0x02,0xb5,0x49,0xf9,0xf3,0x40,0xb0,0xd1,0x70,0xc6,
+ 0x6d,0x9d,0xc4,0x2d,0xfd,0x5a,0x6b,0x67,0xf4,0x39,0xae,0x76,0x59,0x09,0x64,0xea,
+ 0x7c,0x60,0x94,0xa1,0xfc,0x44,0x8b,0x63,0x12,0xff,0x08,0x6e,0x68,0xb1,0xaf,0x34,
+ 0xe8,0x7c,0xf2,0x00,0x69,0xa1,0x45,0x9a,0x2d,0x16,0x4e,0xa8,0x69,0xd3,0x71,0x7a,
+ 0x98,0x3a,0x41,0xde,0x43,0xf4,0xa4,0xfc,0xc9,0xb5,0x67,0xb7,0xa8,0xed,0x88,0x7f,
+ 0xb2,0x37,0xa1,0x59,0xe1,0x0a,0x16,0x71,0x7f,0xe3,0xde,0x52,0x37,0x37,0xf3,0xb9,
+ 0xa3,0xbe,0xd0,0x68,0x89,0x85,0xc3,0x49,0xff,0x4f,0xda,0xb7,0xb4,0x13,0x21,0xd3,
+ 0x88,0xbe,0x7b,0x7a,0x4b,0x7d,0xf9,0x1b,0x59,0x88,0xbe,0xe0,0xa2,0x6b,0xe6,0x19,
+ 0xdb,0xb3,0xf8,0x9a,0x9f,0x72,0x8b,0xec,0x69,0x91,0x89,0x13,0xd3,0xf5,0x19,0x63,
+ 0xd2,0xd5,0xf2,0x79,0xc6,0xa6,0x61,0xf1,0xe1,0xd6,0xab,0xa1,0xb2,0x93,0x8f,0x72,
+ 0xb5,0x75,0x49,0xf5,0xbd,0x29,0x0f,0x0b,0x63,0x60,0xea,0x77,0x5d,0xac,0x9b,0x36,
+ 0x89,0x37,0xd2,0x2e,0xe2,0xfe,0x59,0xa8,0xdb,0x8f,0xe5,0x94,0xd1,0xab,0x4a,0x29,
+ 0xd8,0x07,0x39,0x50,0x64,0x55,0x47,0xed,0x7d,0x05,0x5e,0x18,0xa3,0x0b,0xa3,0xf6,
+ 0x11,0x71,0x78,0x52,0xfe,0x30,0xe5,0x23,0x44,0x83,0x4e,0x9d,0x12,0x34,0x8b,0x9e,
+ 0xd7,0x9c,0x40,0x55,0x34,0x04,0x5a,0xd8,0xbc,0xe1,0x00,0x02,0x21,0xb5,0xbb,0xda,
+ 0x19,0x40,0x20,0x14,0x9f,0xfc,0xbe,0x34,0xcd,0x80,0x06,0xa9,0xd0,0xd8,0x60,0x9b,
+ 0x53,0x0b,0x3b,0x57,0xaa,0x52,0x86,0x8a,0x66,0xbe,0x88,0x78,0xd8,0x16,0xdb,0x92,
+ 0x05,0xb1,0xce,0x42,0x83,0x7a,0xc3,0x47,0x2d,0xf8,0xe7,0xdf,0x64,0xbc,0x7f,0xbb,
+ 0x8d,0xda,0x56,0xe3,0x6a,0x38,0xdf,0xcd,0xc0,0x0f,0x61,0xc2,0x06,0x1b,0x47,0x98,
+ 0x5d,0x61,0x67,0xfc,0x86,0x58,0x0a,0xfe,0x39,0x01,0x2f,0xf4,0x2e,0xd0,0x4b,0xb6,
+ 0x89,0xdf,0xd4,0x2e,0x11,0x6f,0x7d,0x66,0xa7,0xec,0x26,0x27,0xf0,0x98,0x64,0xed,
+ 0x6b,0x2c,0xd1,0x2e,0xb2,0x32,0xc0,0xa5,0x4b,0xe2,0xff,0xb8,0xf0,0x1c,0x2e,0xc2,
+ 0xcd,0x2c,0xb3,0x3f,0x67,0x1f,0xa2,0x9d,0x5f,0x6a,0x25,0x3c,0xcc,0xc7,0x97,0x25,
+ 0xd3,0xcf,0x1d,0x83,0xb0,0x98,0xe3,0x43,0xab,0xff,0xa7,0x13,0xfe,0x18,0xf4,0x32,
+ 0x94,0x36,0x73,0xe0,0x8f,0xa4,0x82,0x1f,0x43,0x37,0xf0,0xfb,0x3b,0x8e,0xa0,0xfc,
+ 0xb9,0xa8,0x54,0xc4,0x37,0x76,0x21,0x3e,0x9c,0xd8,0xff,0x7d,0x69,0xc5,0xd0,0x12,
+ 0x46,0xf9,0xc3,0xc4,0xbf,0x87,0x4d,0xe0,0xac,0x96,0x75,0x5c,0x9f,0x13,0x50,0x7c,
+ 0xb4,0x31,0x46,0x8a,0x43,0x87,0xc1,0x19,0xca,0x3a,0x42,0xce,0x5b,0xf0,0xcf,0xd2,
+ 0x17,0xf6,0xc6,0x75,0x9d,0xaa,0xd9,0xb7,0xc3,0x4e,0xe2,0xe2,0xde,0x42,0x0e,0xa4,
+ 0xdd,0x71,0xdb,0x02,0x94,0x3f,0x7b,0xfb,0x5c,0x11,0xdb,0x82,0xec,0x64,0xfc,0x2b,
+ 0x24,0xcc,0x62,0xff,0x1a,0xcd,0xd7,0x5d,0xdf,0x22,0x5f,0x85,0xc6,0x68,0x7e,0x08,
+ 0xb5,0xff,0x2c,0x04,0x06,0x08,0x03,0xd6,0x64,0x67,0xc3,0xb3,0xd1,0x15,0x67,0x11,
+ 0x11,0x9d,0xb1,0xc4,0xbf,0xec,0xf0,0x69,0xdc,0xb3,0x2e,0xe0,0x91,0x43,0x88,0x76,
+ 0xca,0x99,0x63,0x8e,0xec,0xf6,0x6f,0x8d,0x55,0xf6,0xa1,0x22,0xb3,0xc3,0x25,0xbd,
+ 0xdb,0xc8,0xf2,0x88,0x96,0xf8,0xd7,0x4d,0xdb,0xa3,0x1f,0xc3,0xe2,0x06,0x5c,0x84,
+ 0x0b,0xf0,0xb1,0xe6,0xe3,0x68,0x70,0x4c,0x33,0xb7,0xcd,0xf0,0xf8,0x42,0xe1,0xf9,
+ 0xb2,0xe2,0x9f,0x21,0x78,0x81,0x3b,0xa5,0x63,0xd3,0xe6,0xc0,0x5b,0xda,0x42,0xd5,
+ 0xae,0x8b,0x1f,0x86,0x70,0x7d,0x5e,0xb2,0x77,0x8b,0x6e,0xd2,0x22,0xa0,0x61,0x1e,
+ 0x2b,0xb0,0xe2,0x9f,0xed,0xb0,0x0e,0x76,0x80,0x1c,0x14,0x17,0xc0,0xfa,0xc2,0xb9,
+ 0x9a,0xbd,0x1e,0xb7,0xfd,0x7a,0x14,0x0b,0xa6,0x45,0xb9,0x11,0x0d,0x4c,0xb9,0xde,
+ 0x69,0xf5,0xff,0xfc,0x2b,0x97,0xae,0xba,0x7c,0x86,0xfc,0x58,0xda,0xba,0x65,0xb6,
+ 0x27,0xa3,0x2e,0xfd,0x1d,0xc0,0xf7,0x7d,0x9f,0xae,0xb1,0xcd,0x82,0xf5,0x47,0x9f,
+ 0x54,0x11,0x11,0x0d,0xa7,0xe0,0x9f,0xad,0x2b,0xd4,0x98,0x1c,0x25,0x12,0x6e,0x1b,
+ 0x57,0xd0,0xf5,0xb8,0xf3,0x24,0x77,0xab,0x1a,0x79,0x92,0xd3,0xa9,0xb5,0x18,0x73,
+ 0x1e,0x42,0x44,0x6d,0xf5,0xff,0x1c,0x22,0xaf,0xc3,0xc2,0xe8,0xa6,0xb8,0xd8,0x0d,
+ 0x6f,0xc2,0x42,0x3d,0x73,0x40,0x1c,0x44,0x7b,0xd7,0xd7,0x30,0xb3,0x53,0x74,0xa1,
+ 0x7d,0xb4,0x70,0xd7,0x32,0x3d,0x05,0xff,0x9c,0xe5,0x41,0xae,0xeb,0x36,0x45,0x96,
+ 0xb4,0x73,0xb7,0x0f,0xcd,0x62,0x8d,0xdc,0xff,0xf3,0x30,0xcc,0x5b,0xdb,0xf8,0x7b,
+ 0x09,0xb5,0x86,0xe2,0x68,0x4a,0xc1,0x3f,0x03,0xa8,0xc4,0x2b,0x42,0x59,0x51,0xf1,
+ 0x9b,0xe3,0xfe,0x9f,0x82,0x42,0x44,0xd4,0xbe,0x6f,0x65,0x6e,0x17,0xcf,0x71,0xfd,
+ 0x18,0xb2,0xff,0x44,0x24,0x96,0xf8,0xd7,0x1d,0xe1,0x66,0x41,0x7d,0x88,0x46,0x71,
+ 0xff,0x1c,0x24,0xdc,0xed,0x30,0x1e,0xf6,0xa2,0x4f,0x90,0x3f,0xf0,0xf8,0x4b,0x2d,
+ 0xdd,0x46,0x54,0x0b,0xfe,0x29,0x14,0x9a,0xd5,0xa2,0x5a,0x5b,0xd4,0xe6,0xae,0xdd,
+ 0x05,0xe3,0x8e,0x23,0x3e,0x3f,0xa3,0x3f,0xfb,0x82,0xd6,0xcc,0x10,0xf8,0x45,0x49,
+ 0xba,0xd5,0xff,0x23,0x70,0x6f,0x06,0xcd,0x25,0x5f,0x84,0x3d,0x9a,0x1e,0x94,0x73,
+ 0x11,0x26,0x35,0x00,0xc2,0xa4,0xfb,0xc8,0x6f,0xa1,0xa1,0x5a,0x0d,0xe2,0xaf,0x88,
+ 0x15,0xff,0xa0,0xb6,0xad,0x80,0x7b,0x10,0x6f,0xd0,0x41,0xc1,0x03,0x9b,0x12,0xfa,
+ 0xd7,0x07,0x8f,0x32,0xdc,0xf6,0x7d,0xe9,0x5e,0xe6,0xd6,0xe5,0x2c,0x0b,0xfe,0x39,
+ 0x0d,0xbf,0x44,0xc1,0x30,0x2d,0x88,0xfb,0x67,0x54,0xab,0x0a,0x6e,0xea,0x17,0xdf,
+ 0xe3,0xfa,0x2b,0x38,0x4f,0x41,0xfd,0x7e,0x19,0xaf,0xa0,0xc6,0xb7,0xc6,0xbf,0x4e,
+ 0xc3,0xcb,0x68,0x94,0x2d,0xdb,0x57,0x50,0x09,0x6f,0x40,0x59,0x70,0xbb,0x82,0xf3,
+ 0x8f,0xe1,0x15,0x7b,0xbf,0x78,0x41,0xfb,0x65,0x60,0x6f,0x00,0x07,0xe9,0xc9,0xf8,
+ 0x97,0x12,0x87,0x88,0x50,0x02,0x32,0x23,0x21,0x36,0xa8,0x3a,0x21,0x2f,0x4c,0xce,
+ 0x9a,0xfe,0xa8,0x48,0x18,0x05,0x63,0x2c,0xdf,0x69,0xa3,0x61,0x92,0x65,0x91,0x3f,
+ 0x27,0xcd,0xb7,0x6b,0xc9,0x26,0xb5,0xae,0x3d,0x81,0xc2,0x60,0x44,0x09,0xbf,0xc8,
+ 0xf0,0x4a,0x90,0x2a,0x5b,0x7a,0xd9,0x1e,0x15,0xdf,0x57,0x69,0xb7,0xf8,0x7f,0x66,
+ 0xf0,0xf8,0x57,0x49,0x00,0x97,0x65,0x95,0xb2,0x8b,0x38,0xfd,0x94,0x8b,0x71,0xbe,
+ 0x9e,0x45,0x6d,0xe4,0x43,0x5c,0x31,0x04,0x96,0x31,0x92,0x6e,0x89,0x7f,0xbd,0x04,
+ 0xc7,0x54,0xdf,0xf2,0x65,0xdb,0xe4,0x39,0x4d,0x6f,0x90,0xb2,0x7a,0x8a,0xc0,0x86,
+ 0x1c,0x9b,0xe6,0xab,0xb6,0x6f,0xc3,0xef,0x3b,0xca,0xbc,0x41,0x77,0x54,0x74,0x49,
+ 0x49,0xfd,0xdb,0xe1,0x1f,0xe5,0xfe,0x9f,0x9f,0x14,0x3c,0x0d,0x67,0xa5,0xca,0xc0,
+ 0xbc,0x36,0xb1,0x17,0xd7,0xa7,0x52,0xcb,0x7c,0x3c,0x67,0x80,0x8d,0x2a,0xbe,0x7a,
+ 0x47,0x54,0xfe,0xc0,0x82,0x7f,0x54,0xc4,0x3f,0xb8,0xa9,0x98,0xac,0x33,0xbe,0xec,
+ 0x1c,0x08,0xf1,0xf5,0x97,0x32,0xd7,0xf3,0x88,0xa4,0x56,0x01,0xf6,0x70,0x4a,0xfc,
+ 0xeb,0x36,0x65,0x63,0x4f,0x41,0x58,0xd6,0xb3,0x2b,0x60,0x43,0x5a,0x09,0x77,0x04,
+ 0xd5,0x21,0xec,0x29,0xd1,0xe9,0x00,0xa9,0x70,0x6e,0x84,0x82,0x68,0x60,0xc0,0x1a,
+ 0xff,0x4a,0x5b,0xaa,0x6e,0xd5,0x5d,0x2b,0x51,0x3b,0x6f,0x32,0x8f,0x09,0x9a,0xa5,
+ 0x1c,0xff,0xb8,0x43,0x19,0xe5,0xdc,0x50,0x65,0x45,0xaf,0xb8,0xf6,0x58,0xfc,0x3f,
+ 0xba,0x50,0x09,0x9b,0x8c,0x7c,0x43,0x7e,0x30,0x6b,0x96,0xfa,0xb4,0x9a,0xd9,0x47,
+ 0x2f,0x92,0x93,0x8c,0x9f,0xdf,0xc8,0xf2,0xec,0x1b,0x10,0xff,0xac,0x60,0x78,0x90,
+ 0x93,0xf1,0xaf,0x4e,0x3a,0x0b,0x7e,0xc3,0xe6,0xaa,0xcb,0x2e,0xca,0x47,0xc8,0xcb,
+ 0xd1,0xaa,0x61,0xfb,0xc3,0xe2,0xbf,0x92,0x97,0xd9,0xe2,0x78,0xda,0x08,0x1a,0xda,
+ 0x2f,0xb3,0xc3,0xdc,0x11,0x64,0x89,0x7f,0xdd,0xb4,0x7b,0x3a,0x1a,0x4d,0x82,0x63,
+ 0x3f,0xee,0x9f,0xb7,0x34,0xdf,0xd1,0x79,0xfb,0xc5,0xef,0xe8,0xdc,0x8c,0x5a,0x16,
+ 0x35,0x15,0x3d,0x22,0xa2,0x98,0x15,0xff,0xcc,0xf8,0x48,0x7b,0x99,0xc3,0xaa,0xb1,
+ 0x02,0x1f,0x5c,0x8d,0x94,0xc6,0xed,0x63,0xa2,0x0f,0x4e,0x44,0xab,0xe2,0x68,0xbf,
+ 0xe3,0x15,0x56,0x1a,0x9f,0x36,0x6a,0xc5,0x3f,0xd3,0x9f,0xd0,0xd6,0x43,0x3e,0x3e,
+ 0x64,0x58,0x41,0xb3,0x34,0x9f,0x8b,0x9d,0x99,0x08,0xf3,0x8a,0x0d,0xd7,0x77,0x49,
+ 0x1e,0xec,0xc9,0xcb,0x8f,0xc8,0x67,0xc9,0x33,0x96,0xf8,0xd7,0x76,0xb6,0x5e,0xd9,
+ 0xc9,0x10,0xed,0xe4,0xa9,0x07,0x60,0x47,0x2f,0x7d,0x30,0x3c,0x13,0xd6,0xab,0xc5,
+ 0xbd,0xb6,0x7a,0xa2,0xa0,0xbd,0xb6,0x83,0x2d,0xd1,0x88,0x05,0xff,0x48,0x27,0xa5,
+ 0x46,0xaa,0xea,0xb8,0x8c,0x22,0xd7,0x5f,0x7c,0x3d,0xed,0xe6,0xc2,0xda,0x2a,0x89,
+ 0x8c,0xf8,0x41,0xcd,0xe5,0xc0,0x3d,0x89,0x7f,0xd2,0x4a,0x5a,0x99,0xd3,0x5b,0x9e,
+ 0x39,0x2c,0x17,0xa2,0x74,0x2d,0x7d,0xcd,0x35,0x22,0x57,0x9a,0xfa,0xcb,0x76,0xb0,
+ 0xb1,0x58,0xbd,0xa4,0x74,0xf5,0x2f,0xd3,0x6b,0x2c,0xf8,0x47,0x8b,0xab,0xb8,0x1a,
+ 0xca,0xb2,0x58,0xcd,0x7b,0x0c,0x07,0x7d,0x8e,0x2e,0x93,0x8f,0x51,0x69,0xdc,0xd9,
+ 0x26,0x7e,0x88,0xe6,0xb1,0x2f,0xb2,0x6c,0x9f,0x15,0xff,0xc0,0x15,0xed,0x14,0x1c,
+ 0x76,0x2e,0x1b,0x46,0x79,0x8b,0xf7,0x37,0xec,0xc3,0xa8,0xdf,0xd1,0xde,0xef,0xc5,
+ 0x63,0x35,0xa6,0x5e,0x62,0xa5,0x5c,0xb0,0x27,0xe3,0x5f,0x0d,0xb9,0xcb,0x48,0x4b,
+ 0x1c,0x41,0x4b,0x8c,0xdc,0x82,0x30,0xc6,0x7c,0x7e,0xb7,0x89,0x67,0x02,0xdb,0xc8,
+ 0x47,0xb0,0xed,0x8c,0x53,0x97,0x9f,0x4b,0xf1,0xff,0xb8,0xd5,0x16,0x56,0xd4,0xb6,
+ 0xc4,0x73,0x97,0xb3,0xd0,0x7c,0x5f,0x54,0xd3,0x94,0xcf,0x47,0xe0,0xf4,0x01,0xfe,
+ 0x61,0xbb,0x53,0xee,0x4c,0x89,0x7f,0xd9,0xa1,0x45,0x41,0xeb,0xc5,0x83,0x8b,0x56,
+ 0x0a,0x3a,0x9f,0x6f,0xa7,0xdc,0x2c,0x75,0x79,0x88,0xa1,0x44,0xa7,0xab,0x20,0x83,
+ 0xc5,0xfe,0x82,0xcc,0xd5,0x4d,0x27,0x48,0x05,0x73,0xd4,0xa3,0xd8,0xb9,0x0a,0xf3,
+ 0x7b,0x66,0xd6,0x8b,0x33,0x11,0xe6,0xf9,0x0c,0x34,0x2b,0xe2,0xf8,0xe2,0x68,0xb1,
+ 0x32,0x4b,0xfc,0x4b,0xcf,0x7c,0xbb,0xfa,0x6a,0xfe,0xad,0xcc,0x31,0x9c,0x33,0x0c,
+ 0x49,0xb5,0x55,0x5e,0xd5,0xe3,0xd0,0x50,0x5e,0xbd,0xad,0x3e,0xcf,0xfd,0xf3,0x16,
+ 0xff,0x4f,0xda,0x79,0x38,0xc1,0x6e,0x0d,0xe1,0xc5,0x4a,0xe8,0x5f,0x7b,0xeb,0x8a,
+ 0xcc,0x11,0xf1,0x7b,0x26,0xfe,0xc9,0x1c,0x15,0x3d,0x70,0x12,0x72,0x00,0x17,0x2a,
+ 0xc9,0xff,0xe1,0xf8,0xe7,0x04,0xf7,0xcf,0x47,0xc8,0x1c,0xf2,0x06,0x6b,0x0f,0xd1,
+ 0x6e,0x7f,0x09,0x69,0x69,0x9a,0x37,0x8c,0x2f,0xe2,0x24,0x11,0xe6,0x54,0xb9,0x7c,
+ 0x4e,0xca,0x9f,0xdb,0xe3,0xb4,0x05,0x0a,0xf9,0x4b,0xb9,0x21,0x06,0x85,0x5a,0x86,
+ 0x87,0xac,0x36,0xf7,0x43,0x86,0x17,0xc1,0x13,0xc3,0x8d,0x83,0xc0,0x2f,0x29,0x7f,
+ 0x8c,0xe9,0xee,0xd0,0x4f,0x5b,0x9d,0xa1,0x25,0x08,0x03,0xa4,0x6d,0xac,0x48,0x0b,
+ 0xc4,0x48,0x91,0x8a,0xf8,0xa7,0x87,0x7a,0x6c,0x3a,0x44,0x5c,0x4e,0xe2,0x8a,0x12,
+ 0x8f,0x25,0xfe,0xd5,0x00,0xc7,0x8e,0x96,0x3d,0x34,0x6d,0x83,0xec,0x66,0x67,0xf4,
+ 0x32,0x2d,0xd3,0x23,0xfe,0x03,0x2c,0x01,0x5f,0x4f,0x66,0x6c,0x5a,0xa1,0x76,0x02,
+ 0xba,0xfa,0xdd,0xcf,0xb6,0x80,0x25,0xfe,0xb5,0x0f,0xc5,0xd8,0x0f,0x35,0xc7,0x9d,
+ 0xe2,0x80,0x76,0x19,0x16,0x6a,0x49,0xb5,0x3e,0x2c,0x7e,0x93,0x5e,0x0a,0xfb,0x06,
+ 0x70,0xa9,0xad,0xf8,0xa7,0x1d,0xde,0xf7,0x57,0x2c,0xb5,0xb3,0x9c,0x0f,0xc9,0x19,
+ 0xa1,0x4c,0x2b,0x8e,0xd5,0x7c,0x68,0xee,0x37,0x3c,0x86,0x2f,0xc2,0xaf,0x35,0x4f,
+ 0x7f,0xeb,0x9e,0x69,0xb1,0x24,0xff,0x47,0x9a,0x8d,0x68,0xdf,0x19,0x72,0x3d,0x49,
+ 0x5e,0x86,0xfe,0x7e,0xd5,0xa0,0xdd,0xe1,0x93,0xf0,0x53,0xf8,0x87,0x1e,0x04,0xae,
+ 0x1f,0xa9,0x2d,0x41,0xbe,0x43,0x6a,0xba,0x92,0xf8,0x47,0xd2,0xd4,0x1d,0x50,0x57,
+ 0x6f,0x13,0xc8,0x29,0x95,0xb1,0xc2,0x6a,0xdc,0x6f,0x27,0x25,0xd3,0x4d,0xe1,0x21,
+ 0x7d,0x84,0xe1,0xd2,0xa1,0x29,0xd1,0x6d,0xc1,0x3f,0x37,0x48,0xbf,0xd4,0xf3,0x07,
+ 0x6c,0x01,0xff,0xeb,0x6a,0x2b,0xcb,0xff,0xbf,0x38,0xed,0x07,0x1e,0xd3,0x8b,0xe3,
+ 0x08,0x7b,0xde,0xd4,0x9a,0xd8,0x6c,0x95,0x7e,0x2d,0x7d,0x9b,0xc5,0xff,0x53,0xab,
+ 0xbd,0xaf,0x97,0x1b,0x25,0xa2,0x78,0x92,0xb0,0xd6,0x05,0x2a,0xe7,0xff,0x68,0x9f,
+ 0x32,0x77,0xdc,0x31,0x5f,0x3c,0x06,0xdc,0x94,0x71,0xdf,0xf0,0xe5,0x2d,0x16,0xfc,
+ 0xf3,0x1c,0x8c,0x28,0x55,0xc6,0xdd,0x67,0xff,0x6a,0x8c,0xeb,0x77,0xcd,0xf1,0x09,
+ 0xe2,0x9f,0x1f,0x22,0x9e,0x19,0x5f,0xa8,0x45,0xbd,0x38,0xb0,0xe0,0x9f,0x19,0x83,
+ 0x3a,0x5a,0xaf,0x3d,0x25,0x86,0x70,0x92,0xfb,0xe7,0xb5,0xcc,0x98,0x60,0xc6,0xa3,
+ 0x2f,0xba,0xb9,0x3d,0xf2,0x16,0x74,0x71,0xe8,0x6e,0xc5,0x3f,0xdb,0xe0,0x59,0xa1,
+ 0xc0,0xa0,0x21,0xe7,0x69,0xe9,0x25,0x72,0xab,0x46,0xeb,0xfd,0x6f,0xdb,0x0f,0x40,
+ 0x71,0x1f,0x0a,0xa2,0x33,0x74,0x1d,0x17,0x4d,0x41,0x2b,0xfe,0xd1,0x9e,0xa8,0xfd,
+ 0x25,0x9b,0xfb,0xc9,0x92,0xa5,0x2b,0xdf,0x44,0x51,0x34,0x57,0xc5,0xf7,0xfd,0x1d,
+ 0x1c,0x58,0xe7,0xe6,0x61,0xaf,0x97,0xa1,0x81,0xa9,0x21,0x3a,0x05,0xff,0xd0,0x3d,
+ 0x7b,0xd4,0xe1,0xb9,0xbe,0xec,0x93,0x8c,0x35,0xb9,0x07,0xf0,0x58,0x9d,0x32,0xdd,
+ 0x3e,0x7c,0x61,0x49,0x63,0x54,0x1d,0x70,0xe5,0xaf,0xb3,0xe0,0x9f,0xb4,0x67,0xd8,
+ 0xe7,0x64,0x11,0xbb,0x79,0xb5,0x78,0x89,0x7d,0x4d,0xff,0x27,0xdd,0xae,0x4f,0xbb,
+ 0x64,0xba,0x7d,0xec,0x3a,0x19,0x85,0x53,0x5a,0x69,0xd4,0x3e,0x64,0xc5,0x3f,0x42,
+ 0xc2,0xc9,0x53,0x92,0xa0,0xc1,0xfc,0xa3,0xf2,0x00,0x0e,0xca,0xc7,0xdd,0x3e,0x06,
+ 0x0c,0x52,0x1f,0x49,0xf5,0xff,0x00,0xda,0xfb,0x30,0x67,0xa5,0x1a,0x9d,0x56,0x08,
+ 0x19,0x1d,0x5e,0x04,0x42,0x66,0xe0,0xe3,0x11,0x1e,0x08,0x2b,0x54,0x7b,0xc0,0x33,
+ 0xc5,0xff,0x03,0xab,0xe1,0x60,0x9a,0xaa,0xd1,0xcd,0xe2,0x1d,0x91,0x06,0xc3,0xb5,
+ 0x26,0xd0,0xc6,0xf9,0x27,0x68,0xdf,0x21,0x10,0x9a,0x8d,0xf8,0xa7,0x3d,0xe8,0x6a,
+ 0x43,0xc5,0x37,0x89,0x7f,0xa4,0x0e,0xe1,0x20,0x94,0x20,0xfe,0x21,0x85,0xe1,0x5d,
+ 0x9a,0xb3,0xd7,0xd6,0xe6,0xc4,0xf9,0xa8,0xaf,0x97,0x28,0xa4,0x30,0x1f,0xa1,0x8e,
+ 0x7f,0x8a,0xff,0x27,0x3d,0xe3,0x20,0xc2,0xc2,0x1b,0xa2,0x36,0x09,0x76,0x91,0x22,
+ 0x6d,0x39,0xe7,0xff,0xec,0x01,0x97,0x26,0xe7,0xda,0x24,0xa1,0x81,0xf3,0xcd,0x14,
+ 0x92,0xb4,0xbf,0xca,0x33,0xe2,0x0a,0x7f,0xbb,0x8d,0x3a,0x82,0xae,0x41,0xe0,0x8e,
+ 0x20,0x31,0x4e,0x47,0x10,0x6f,0x2c,0x4b,0x28,0x62,0xd3,0x11,0x61,0x89,0x7f,0xdd,
+ 0x34,0x20,0x7d,0x86,0xc7,0xea,0xee,0xd3,0xe2,0x67,0xe4,0xdf,0xc9,0x62,0xee,0xd6,
+ 0xf8,0xcc,0xc4,0x3f,0x0e,0x3e,0xb8,0xec,0x47,0xfc,0x73,0xda,0x12,0xff,0xca,0x9b,
+ 0xce,0x57,0xe3,0xb6,0xa0,0xfd,0x35,0x71,0x01,0xfb,0x90,0x7b,0xa7,0xfb,0x4d,0x37,
+ 0xc8,0x0f,0xee,0xb2,0x73,0x7f,0xc8,0xb1,0x0c,0xaf,0xdf,0xb1,0xa5,0xe6,0x5c,0x12,
+ 0xff,0x00,0x67,0xfb,0x38,0x23,0xae,0x26,0x51,0xa5,0x9d,0x60,0x02,0x21,0x7e,0xa5,
+ 0x44,0xb1,0x11,0x72,0xf6,0xde,0x08,0x38,0x15,0x79,0xc0,0x7f,0x6a,0x72,0xfd,0x21,
+ 0xad,0x17,0x57,0xc3,0x15,0xa0,0xd7,0x93,0x6f,0xd0,0x7c,0x04,0x42,0x37,0x2a,0xe4,
+ 0x45,0xee,0x81,0xd7,0x6e,0x50,0x8e,0xbe,0x2e,0xac,0x65,0xf9,0xa1,0x96,0x2f,0xa5,
+ 0x27,0xed,0xaf,0xbc,0xe9,0x1d,0x26,0xdb,0x8a,0x6e,0xc9,0xfe,0x7b,0xd8,0x95,0x5f,
+ 0x72,0x47,0x0b,0xe2,0x9f,0xd0,0x41,0xa1,0x44,0xb3,0x45,0xfd,0xe7,0x10,0xf4,0xed,
+ 0xd4,0x10,0x8a,0x5b,0xf8,0x3f,0x52,0x87,0x7a,0x10,0x2a,0x78,0x34,0xf3,0xef,0x61,
+ 0xae,0x6a,0xb2,0x77,0xfe,0xc0,0xdf,0x57,0xdb,0x18,0xe5,0x40,0xae,0xd6,0x1b,0x74,
+ 0x6c,0x9f,0x96,0xe4,0xff,0x3c,0x63,0xee,0x07,0x1f,0x0f,0x72,0x75,0x28,0xa3,0x09,
+ 0xf6,0xd7,0x39,0x73,0xfe,0xcd,0x51,0xb1,0x97,0xe2,0xe0,0x4e,0x47,0x34,0xe7,0x03,
+ 0x65,0xe2,0xfe,0x2e,0xd8,0x69,0x7a,0x17,0xed,0x0d,0x35,0x3a,0x19,0x01,0xef,0xf4,
+ 0x4c,0x96,0x73,0x16,0x46,0xd0,0x54,0xb8,0x99,0x89,0x21,0x34,0x0f,0xbc,0xd0,0xda,
+ 0x2b,0xdb,0x2c,0xf1,0x2f,0x17,0xbc,0x0b,0xf3,0xba,0xe9,0x80,0xff,0x4d,0xf6,0x0e,
+ 0x2c,0x8c,0x51,0xee,0xd8,0x3c,0x24,0x94,0x34,0x88,0xfa,0xdf,0xba,0xc8,0x06,0x70,
+ 0xea,0x7d,0x29,0xfe,0x9f,0xb5,0x4b,0xf1,0x74,0x94,0xbc,0x46,0xf3,0xc2,0x11,0x12,
+ 0x95,0x0a,0x5f,0xcb,0x80,0x30,0x37,0xc3,0xeb,0x78,0x84,0x62,0x29,0x6c,0x0d,0xab,
+ 0x67,0xf3,0x5c,0xe4,0xae,0x64,0xfc,0x4b,0x98,0x09,0x4f,0xc3,0x77,0xb4,0xbc,0x20,
+ 0x9e,0xa6,0x1f,0x47,0x66,0x0f,0x67,0x68,0xeb,0xde,0x4e,0xb8,0x6d,0x7f,0x40,0x72,
+ 0xe1,0xc7,0xfe,0xd0,0xbb,0x2e,0x37,0xa9,0x4b,0xde,0x1f,0x66,0xa9,0x7f,0x42,0xb4,
+ 0xe3,0x5e,0x9e,0xf3,0x04,0x39,0xcd,0x6e,0x8d,0x67,0x06,0x84,0x77,0x80,0x5f,0xf9,
+ 0xe2,0xc3,0xe2,0x5d,0xf0,0x6b,0xb6,0x47,0xb7,0xaf,0x91,0xbf,0x3d,0xf1,0xb5,0x80,
+ 0x5e,0xbf,0x0b,0xd5,0xfa,0x2c,0x1e,0xe4,0x1a,0x22,0xfd,0x28,0x66,0xb3,0xd8,0x04,
+ 0xbf,0x65,0x7f,0x63,0x3c,0xe1,0x11,0x8a,0x89,0xe1,0xeb,0x26,0xd6,0x47,0x4b,0xfb,
+ 0x40,0xbb,0x1a,0x5d,0xc4,0x41,0xd4,0x5d,0x5a,0xdb,0x8f,0x0e,0x7e,0x68,0x5f,0x9e,
+ 0xe3,0xd3,0x5e,0x65,0xf3,0x06,0x1c,0xdd,0xe2,0x15,0x78,0x85,0x55,0x85,0x96,0x06,
+ 0x44,0xc5,0x8a,0x7f,0xd8,0x81,0x1d,0xf9,0xbd,0x9d,0x0f,0x6e,0x98,0xc5,0x3a,0x3a,
+ 0xf4,0xa1,0xcc,0x20,0x99,0xa9,0x35,0x42,0xf9,0x80,0x7c,0x49,0xb8,0x4f,0x6b,0xe2,
+ 0x81,0x60,0x4a,0xac,0xfe,0x96,0x6d,0xc6,0xf3,0xca,0x3c,0xd3,0x3a,0xd3,0x3a,0xc4,
+ 0x2f,0x18,0x11,0x8d,0xdc,0x6f,0x5b,0x0f,0xc5,0x27,0x5b,0x1e,0x42,0x33,0x66,0x6d,
+ 0xd0,0x0d,0xf4,0x4c,0x76,0xad,0x32,0xb1,0xfe,0xa1,0xdc,0x63,0xb0,0xb7,0x7a,0xce,
+ 0x99,0x3b,0xdd,0x68,0xbd,0xea,0x01,0xbd,0x3f,0x03,0xfc,0xcb,0xd8,0x56,0xc1,0xc5,
+ 0x03,0x19,0x1a,0xde,0x0e,0xe7,0xcf,0xc8,0xfe,0xdb,0x49,0xfe,0x8f,0x6b,0xc6,0x6e,
+ 0xf8,0xd4,0xef,0x1b,0xc1,0xdd,0xee,0x56,0x77,0xb1,0xf2,0x38,0xca,0x9f,0xbb,0xd9,
+ 0x09,0x62,0xfa,0xdb,0x51,0xd5,0x36,0xf8,0xe2,0xbb,0x3b,0xe5,0xbb,0x2c,0xcf,0x73,
+ 0x4e,0xbd,0xa4,0x56,0x44,0xd1,0x9e,0xda,0xed,0x1c,0x0c,0x96,0xf5,0x3a,0xd8,0xb4,
+ 0xdd,0x3c,0x0c,0x61,0x6c,0x8a,0xc9,0x4f,0x91,0xf3,0xac,0xf2,0x5d,0xb4,0xd0,0x3b,
+ 0x92,0xf8,0x27,0x38,0x26,0x5d,0x85,0x85,0x3d,0xf6,0x60,0x63,0x25,0x6c,0x97,0x16,
+ 0xbe,0x90,0x19,0x17,0x87,0xe8,0xab,0x09,0x7d,0x97,0x07,0xbf,0x83,0x52,0x84,0x82,
+ 0x8d,0x49,0x7d,0xdd,0x83,0xff,0x12,0xc2,0x9e,0x6e,0x54,0xe2,0xd3,0xc0,0x68,0x2f,
+ 0x8b,0x67,0x36,0x91,0xf1,0xb0,0x45,0x0c,0x25,0xc0,0x06,0x68,0x67,0x9d,0x31,0xbf,
+ 0x9a,0xc4,0x3f,0x28,0x39,0x0e,0xc3,0x9c,0x38,0xed,0x26,0x25,0xea,0xc1,0x86,0x39,
+ 0xef,0xd2,0x86,0x75,0x13,0xf3,0x9d,0xee,0xf4,0x66,0xc1,0xa9,0x6d,0x60,0xf8,0x87,
+ 0x13,0xfb,0x81,0xd6,0x4a,0x70,0xd8,0xc5,0xe3,0x83,0x15,0xf6,0xb9,0x9d,0x50,0x78,
+ 0x26,0x03,0xc8,0x50,0xc6,0x4e,0x6d,0xf5,0xb1,0x46,0x2f,0x48,0x78,0x3b,0x55,0xbb,
+ 0x8b,0x84,0x93,0xf6,0x17,0xd0,0x3a,0x38,0x1c,0xe2,0x4e,0xb0,0x02,0x37,0x1b,0xf1,
+ 0x96,0x6d,0x73,0x33,0xc4,0x7b,0xa6,0xff,0xe1,0x7c,0x83,0x8b,0xbe,0x41,0xbc,0x90,
+ 0xf5,0x98,0xa8,0x26,0xf1,0xcf,0xf5,0x7b,0xe0,0x53,0xf7,0x4d,0x46,0xa6,0x21,0x8e,
+ 0x91,0xbe,0x90,0x4f,0x5a,0x66,0xd4,0x8c,0xc1,0xef,0x54,0xdf,0xaf,0xef,0x1e,0x46,
+ 0xfc,0x33,0x06,0x55,0xf0,0xe8,0x96,0xaf,0xa7,0xe0,0x1f,0xf2,0x62,0xf8,0x56,0xdd,
+ 0x7e,0x52,0x2c,0xaf,0x3d,0xe9,0x2c,0xa5,0x76,0x43,0xac,0x8f,0xbe,0x0a,0x0b,0x25,
+ 0x77,0xbf,0x58,0x0f,0xbf,0x25,0x0b,0xb9,0xff,0xc4,0xc2,0x7f,0x46,0xfc,0x13,0x69,
+ 0x72,0xee,0xb0,0x83,0xdf,0x05,0xcd,0x01,0xe7,0xbd,0xf6,0xa6,0xc6,0xc2,0xd0,0xa6,
+ 0x7e,0x67,0x1e,0xdd,0x4e,0x0a,0xa4,0x66,0xad,0x88,0x04,0xba,0x1a,0xeb,0x27,0xe3,
+ 0xef,0x7d,0x69,0x71,0xd8,0x05,0x85,0x46,0xc6,0x16,0xe2,0x62,0x7a,0xa8,0xee,0xfa,
+ 0x8c,0x1c,0xc2,0x58,0xa3,0x34,0x67,0x39,0x9a,0x99,0x19,0xb0,0xa3,0xb2,0x30,0xc3,
+ 0xe5,0x22,0x16,0xfe,0xf3,0x8c,0xdd,0x0d,0xbb,0x98,0x53,0x77,0x75,0xa3,0x19,0xbb,
+ 0x8b,0xb5,0xeb,0x78,0xdb,0x12,0x4e,0xb4,0x0e,0xd1,0x6d,0xd9,0x2e,0x75,0x57,0xa4,
+ 0x48,0xdf,0xd6,0x45,0xea,0x93,0xf8,0x04,0xe5,0xe7,0xd9,0x9e,0x32,0x3d,0xd3,0xde,
+ 0xe8,0x0a,0x0f,0xc6,0x2b,0xe6,0x66,0xb6,0xd6,0x38,0xd5,0x17,0xa0,0x2c,0x2e,0xc5,
+ 0xc4,0x02,0xff,0x1f,0x59,0x59,0x97,0x3d,0x96,0x93,0xc2,0x7f,0xce,0x7d,0x47,0xa8,
+ 0x62,0x0e,0x5c,0x16,0xed,0x1d,0x5c,0x0d,0x47,0x50,0xee,0x57,0x2f,0x49,0x55,0x3c,
+ 0xbe,0x3c,0x02,0xbf,0xe1,0x57,0xce,0x58,0xf8,0xcf,0xbd,0xca,0x6e,0xb4,0xdf,0x39,
+ 0xda,0x24,0x2e,0x78,0x5f,0xf3,0x49,0x8e,0x1d,0xe2,0x7b,0xc2,0x25,0xa5,0xcc,0xc8,
+ 0xda,0x23,0x7e,0x41,0xba,0x74,0xaf,0x97,0x65,0x4d,0xaf,0xb9,0x60,0x89,0x7f,0x49,
+ 0xd0,0x3c,0xac,0x6e,0x41,0xfb,0xfd,0x1e,0xd6,0x3c,0x5c,0xb2,0x40,0xde,0x4e,0xde,
+ 0x6b,0x78,0x9e,0xd3,0x5a,0xb6,0x39,0x25,0x7a,0x88,0x38,0xf5,0xcc,0xc7,0x53,0xfc,
+ 0x3f,0xda,0xf4,0xe9,0xcc,0x15,0xa6,0x4a,0xb6,0x1d,0x8f,0x5d,0x3a,0x5b,0xe2,0xcc,
+ 0x3e,0xc6,0xdd,0x80,0x70,0xd7,0x0d,0xd9,0x12,0x6e,0x63,0x27,0x95,0x15,0x9c,0x3f,
+ 0xb1,0xdf,0x86,0x85,0xeb,0xa4,0xc7,0x58,0xc1,0x6e,0xfa,0x37,0xe4,0x6b,0xb0,0x8e,
+ 0x15,0x87,0x96,0x2c,0x27,0x6f,0xc2,0x01,0x3d,0x5f,0xb5,0x2d,0x9f,0x73,0x1d,0xdd,
+ 0xcf,0x0a,0x5c,0x19,0x75,0x64,0x6c,0xf2,0x7c,0xdd,0x49,0x89,0xf6,0x2b,0x28,0x5f,
+ 0x6a,0x9f,0x8e,0xf8,0xf0,0x2c,0x87,0x6d,0x2a,0xda,0x9b,0x7b,0x59,0x99,0x96,0xa5,
+ 0xc8,0x76,0x38,0xaf,0x2a,0x61,0x87,0x4b,0x7c,0x6d,0x32,0x7e,0xaa,0xdd,0xd4,0xa6,
+ 0x7d,0x0c,0x8b,0x5a,0x6f,0xf9,0xa4,0xe6,0x39,0xe9,0xb2,0x80,0xdb,0xac,0x9f,0xfb,
+ 0x0f,0xf1,0xbc,0xa4,0xf1,0x40,0xd8,0x79,0xb2,0xb8,0x79,0x1e,0x8f,0x27,0x4e,0xac,
+ 0x4f,0x67,0xda,0x00,0x7c,0x02,0x1e,0x66,0xe7,0xd1,0xe7,0xb7,0x61,0xaf,0x66,0x47,
+ 0xe0,0x06,0x27,0x3c,0x0b,0xcc,0x40,0x21,0x3d,0x0e,0xa4,0x1a,0xf5,0x23,0x49,0xe2,
+ 0x9f,0xcd,0x6d,0x70,0x80,0xd3,0x12,0x34,0x14,0xe1,0xeb,0xa0,0xa0,0x7a,0x77,0xbf,
+ 0xdf,0x03,0xeb,0x5d,0xf9,0x08,0x84,0xc8,0x49,0x58,0x27,0x7c,0xab,0x9a,0x6a,0x36,
+ 0xef,0x24,0xbe,0x62,0xf0,0x18,0x7d,0xb6,0x21,0xff,0xdd,0xc0,0x9a,0xf4,0xaf,0xc1,
+ 0xe6,0x9e,0xfc,0xfa,0xeb,0xeb,0xc8,0x75,0xf0,0x18,0xbb,0x85,0xe3,0x9f,0xd7,0x60,
+ 0xa7,0xa1,0xc7,0x07,0x03,0xce,0x3c,0x0b,0xfe,0x79,0x59,0xd8,0xcb,0x54,0xd6,0x77,
+ 0x6b,0xf8,0x1f,0x58,0x33,0x02,0x75,0xd4,0xe6,0xb7,0x10,0x93,0x56,0x74,0x1b,0x9a,
+ 0x9d,0xcf,0xf4,0x15,0x0d,0xd2,0xd6,0xf0,0x0d,0x93,0xf2,0x61,0x70,0xc6,0x61,0xf8,
+ 0x3c,0x52,0xaa,0x2f,0x1d,0x32,0x03,0x6b,0x68,0x48,0xc6,0x1b,0xcb,0xb5,0xd7,0x60,
+ 0xe1,0x2f,0xed,0xba,0x78,0x29,0xfc,0x91,0x56,0xda,0x69,0xff,0x88,0x54,0x4c,0xee,
+ 0x9f,0x00,0xc4,0x23,0x23,0x70,0x04,0xe6,0x31,0x61,0x87,0x36,0x12,0xf0,0x65,0x67,
+ 0x35,0x35,0xc6,0xb5,0x89,0xf8,0x17,0x6c,0xe3,0xa6,0x19,0xc7,0x3f,0x13,0xcf,0x4f,
+ 0x95,0x73,0xd1,0x63,0xaa,0x57,0x5b,0x1d,0x15,0xe7,0x90,0x63,0xcc,0x5b,0x6f,0xbf,
+ 0x81,0x0f,0x78,0x58,0x24,0x4f,0x94,0xe0,0x18,0x74,0xad,0x5a,0xfa,0xb8,0x48,0x26,
+ 0xf7,0x0f,0x93,0xee,0x80,0x66,0x40,0x50,0x17,0x25,0xb7,0x34,0x35,0x1b,0xed,0xf5,
+ 0xee,0x36,0xe7,0x6c,0x68,0x7e,0xad,0x4c,0xa3,0xdb,0x6d,0x85,0x0a,0xca,0x93,0x20,
+ 0xdd,0x92,0xea,0xff,0x81,0x16,0xea,0x0c,0x05,0x94,0xf4,0x42,0xad,0xf9,0x7a,0xa7,
+ 0x7f,0x5b,0x34,0x5c,0x58,0xdf,0xcc,0x61,0xcc,0x8f,0xc6,0xf9,0x42,0x78,0xab,0xac,
+ 0xc9,0xfd,0x06,0x68,0x7f,0x35,0x73,0x33,0x2d,0xd7,0x96,0x08,0x7b,0xe5,0x71,0xff,
+ 0x4f,0x23,0x14,0x9a,0xfc,0x67,0xd2,0xd0,0xa3,0x06,0x5d,0xb9,0x04,0x7f,0x37,0xfe,
+ 0x53,0x9e,0x19,0x22,0x11,0xe8,0x12,0xec,0x90,0x3d,0x81,0x76,0x72,0x54,0x25,0x31,
+ 0xf8,0xae,0x39,0x60,0x76,0x66,0xf1,0xff,0x9c,0xb9,0xe9,0x02,0x2c,0xc6,0xdd,0xb2,
+ 0xac,0x3f,0xe7,0x33,0xee,0xed,0xe9,0xcf,0x3a,0x2d,0x5f,0x86,0x4f,0xb4,0xaa,0xa0,
+ 0x8c,0x88,0x48,0x32,0xf1,0xcf,0x7d,0xe2,0xb9,0xc9,0xf5,0xcc,0x9b,0x71,0x01,0x5e,
+ 0x81,0xf9,0xda,0xd2,0xb6,0x9c,0x05,0xfa,0x2b,0x5a,0xd5,0xf2,0x99,0xfd,0xe2,0xad,
+ 0xf0,0x8a,0x0b,0xd7,0x27,0xd8,0xb8,0x80,0x7d,0x16,0x2a,0xd5,0xdc,0xaf,0x59,0xe2,
+ 0x5f,0x6b,0x94,0xb8,0x14,0x81,0x76,0x81,0x02,0xd9,0xc5,0x22,0x5a,0x49,0x5e,0x20,
+ 0xfc,0x55,0xce,0xff,0x29,0xa2,0x9d,0xcc,0x96,0x0f,0xdd,0xab,0x9e,0xb9,0x81,0xae,
+ 0x0b,0x9f,0x9a,0x5c,0x4f,0x9a,0x36,0x04,0x3f,0x13,0x70,0x35,0xb2,0xb3,0x9b,0xd4,
+ 0x06,0x6d,0x75,0x90,0xe6,0x6e,0xe0,0xfe,0x2e,0xd7,0x43,0x36,0x4f,0x7a,0x1a,0xec,
+ 0x35,0x42,0x41,0x3a,0x9d,0xbc,0x26,0x4c,0xcc,0xcf,0x4b,0xdb,0xcd,0x61,0x64,0xb5,
+ 0x6b,0x73,0x78,0xb7,0xd4,0xc2,0xa3,0x8d,0xd1,0xb0,0xbb,0xba,0x19,0x8a,0x34,0xdb,
+ 0x16,0x52,0x18,0x39,0xd8,0x54,0x14,0xa0,0x9c,0xff,0x3c,0x31,0x5f,0x17,0x5e,0x82,
+ 0xf7,0xb9,0x13,0x6f,0x9b,0xfc,0x94,0xff,0x18,0xf3,0x69,0xae,0xed,0x68,0x38,0x9b,
+ 0x1e,0xbf,0x6d,0x62,0x21,0x1b,0xc5,0x0f,0x61,0xff,0xb1,0x85,0xff,0xcc,0xe3,0x5f,
+ 0x6f,0xd4,0x1e,0x79,0x28,0x11,0xf6,0xca,0xab,0xac,0x73,0x64,0x8b,0x2f,0x21,0xd0,
+ 0xae,0x0c,0x64,0xe6,0x15,0xe0,0x51,0xb2,0xfb,0xaa,0x1d,0x5b,0xb6,0x9e,0x4f,0xfa,
+ 0x7f,0x40,0xe7,0xb4,0x2b,0xc9,0xde,0x24,0xe6,0x43,0xdf,0xbd,0x9c,0xed,0x93,0x93,
+ 0xcf,0x06,0x55,0x84,0x3d,0x9c,0x08,0xd4,0x27,0xf9,0xa8,0xbd,0x49,0x26,0x16,0xff,
+ 0x4f,0x39,0xec,0x87,0x7c,0x9d,0xea,0xc2,0xf7,0xfd,0x1b,0xd9,0xce,0x36,0x3a,0x40,
+ 0xca,0x61,0x9d,0x46,0x58,0x20,0x6e,0x73,0xc1,0x46,0xad,0x20,0xe2,0x1a,0xb0,0xe2,
+ 0x9f,0x19,0x01,0x61,0x6f,0xc8,0x34,0xc3,0x67,0x6b,0x9b,0xb5,0xc2,0x55,0x08,0x84,
+ 0xd2,0x61,0xab,0xa6,0x1a,0x19,0x2a,0xb9,0x83,0x36,0x6a,0xae,0x7e,0x5a,0xee,0xb4,
+ 0x59,0xfc,0x3f,0x79,0xf0,0xbc,0x90,0x6f,0xb8,0x1e,0x24,0xf7,0x41,0x1b,0x43,0xeb,
+ 0xec,0x7b,0x64,0x06,0x3c,0x06,0x6a,0x5f,0x46,0x3d,0x59,0x26,0xad,0xe7,0x1e,0x95,
+ 0x87,0xd1,0xfe,0x9d,0xb8,0x7f,0x67,0x84,0xb3,0x7d,0xe6,0xc7,0x97,0xfe,0x93,0xec,
+ 0x85,0xdf,0x22,0xfe,0x71,0x9f,0x91,0x2b,0xc8,0xa7,0x4d,0xf3,0x07,0x33,0xd7,0x88,
+ 0x5f,0xc3,0x13,0xb9,0x48,0xb7,0x8f,0xc8,0x4e,0xab,0xff,0x07,0xa5,0x9f,0xcf,0x58,
+ 0xb6,0x2f,0x27,0x0e,0x43,0xb0,0x88,0x13,0x59,0x47,0x78,0x9a,0xc0,0x0b,0xdf,0x46,
+ 0x09,0x43,0x2e,0x41,0x85,0xc9,0x7f,0x4e,0xda,0xbf,0x69,0xaf,0x69,0x7d,0xd1,0x2a,
+ 0x1d,0xcd,0xf6,0x32,0xe3,0x55,0x56,0xba,0xc2,0x0c,0x7b,0xbd,0x1c,0x9d,0xff,0xae,
+ 0x7d,0xcd,0xd7,0x7d,0xf0,0x6a,0xdb,0xfc,0xb3,0xf6,0x41,0x31,0xe9,0x9f,0x79,0x66,
+ 0x7a,0x44,0x5b,0x1f,0x2d,0x66,0xae,0x87,0x48,0xae,0xf6,0xba,0x92,0x9f,0xeb,0x0a,
+ 0x92,0xd3,0x6a,0x63,0x14,0x1f,0xfb,0x21,0x32,0x53,0x5a,0xaf,0xcf,0xcd,0xa1,0xab,
+ 0x6c,0x45,0xe9,0x13,0xf3,0x01,0xb6,0x2b,0xeb,0x55,0x8e,0x7f,0x9c,0x79,0xec,0x49,
+ 0x98,0x6b,0xd0,0x2f,0x91,0x7e,0x6d,0x3d,0x14,0xf0,0xf8,0xd7,0xfd,0xda,0xd3,0x3c,
+ 0xb1,0x25,0x68,0xf5,0xff,0x28,0x27,0xb5,0x46,0xbb,0x7b,0x55,0xe4,0x39,0x92,0x8f,
+ 0xd2,0xd0,0xa5,0x23,0x48,0x7f,0xc5,0xd6,0x00,0xce,0x81,0x8c,0x3c,0xb2,0x74,0xf6,
+ 0x4e,0x6d,0x50,0x75,0xd9,0x09,0x9d,0x9c,0xdf,0x39,0xa3,0x13,0x5e,0x60,0xbe,0x17,
+ 0x33,0x47,0xe4,0xd9,0xf0,0x7e,0xfc,0xd0,0x1a,0xca,0x1a,0xff,0xa0,0xbc,0x00,0x7b,
+ 0xcf,0x66,0x6e,0x6b,0x7c,0x80,0xfd,0xb1,0x57,0x8f,0xdb,0xbb,0xc3,0x56,0x3c,0xf6,
+ 0xbe,0xf3,0xd2,0x51,0x5f,0xbf,0x63,0x0f,0xc2,0xec,0xe5,0xa1,0xeb,0x72,0x1c,0xfa,
+ 0xde,0x81,0x28,0xf7,0x87,0x94,0xb4,0x89,0xad,0xca,0xdf,0x31,0x5f,0xc3,0xbc,0x8e,
+ 0x94,0xf8,0xd7,0x45,0x8d,0x07,0xb9,0xdc,0xc3,0x8d,0x2a,0x5a,0x5b,0x5e,0xc3,0x61,
+ 0x88,0xae,0xb4,0x2b,0x7a,0xa9,0x61,0xef,0xe7,0xf9,0x29,0x74,0x6f,0xbf,0x7d,0x4f,
+ 0x63,0x5f,0xd2,0xff,0x23,0x7d,0x1b,0x0e,0x37,0x78,0xe2,0x91,0x98,0xed,0x0b,0x10,
+ 0xe9,0x71,0x86,0x50,0x7f,0x39,0xe1,0x50,0xdc,0xd9,0x83,0xfb,0xff,0xa3,0xda,0xc6,
+ 0xbe,0xb2,0xcd,0x0e,0x46,0x06,0x2d,0xfe,0x1f,0x17,0x3d,0x4c,0x9d,0xf5,0x34,0xe6,
+ 0x77,0xf2,0xc0,0xd0,0x0a,0xb9,0xd5,0x36,0x47,0xe1,0x8e,0xa3,0xbc,0x6e,0x32,0x44,
+ 0x5a,0x1a,0x4c,0x8f,0x50,0x0a,0xff,0xb9,0xf6,0xb0,0xaa,0x02,0xf5,0x38,0x41,0xe1,
+ 0xde,0x0f,0x19,0x70,0xf5,0xf6,0x52,0xbd,0xc7,0xe6,0xf1,0x9f,0x84,0x86,0xfc,0x39,
+ 0x3c,0xb0,0x7d,0x74,0xed,0xe4,0xf2,0x67,0x7e,0x0b,0x2e,0x49,0x5e,0x6d,0x66,0x7d,
+ 0x8e,0x8b,0x70,0xb1,0x73,0x33,0x47,0x53,0x87,0xb9,0x23,0x0b,0xf5,0x0b,0x39,0xce,
+ 0x05,0xe9,0xb3,0xa2,0xd1,0x38,0xb9,0x3f,0x1f,0x1d,0x61,0x57,0x95,0xdb,0xb4,0x7f,
+ 0xe3,0xdb,0x66,0x0c,0xb8,0xb7,0x27,0x67,0x18,0x2e,0xd1,0x2a,0x43,0x46,0x45,0x26,
+ 0x8d,0x64,0x57,0x99,0xfe,0x9f,0xc2,0x24,0xde,0x18,0x82,0x57,0x61,0x11,0x5b,0x6a,
+ 0x14,0x94,0xc0,0x18,0x5b,0xbc,0x6a,0xda,0x88,0xe8,0x51,0x4e,0xa8,0xa5,0x27,0x37,
+ 0xc6,0xc4,0x59,0xd0,0xcb,0x4a,0x43,0x3c,0xfe,0x65,0xf1,0xff,0x0c,0xc1,0x26,0xa9,
+ 0x8b,0x45,0x80,0x94,0x48,0xdd,0x0d,0x25,0xd5,0x72,0x37,0x71,0x29,0xbf,0x33,0x76,
+ 0x9c,0x79,0xf4,0xb2,0x19,0xa8,0x42,0xa0,0xd2,0x9d,0x12,0xff,0x3a,0x39,0xbd,0x11,
+ 0x8a,0x18,0x55,0x6d,0x76,0x29,0x06,0xee,0x80,0xec,0xb1,0xb5,0xe6,0x35,0x2a,0xea,
+ 0x19,0x9b,0xc7,0x69,0x4f,0xc8,0x67,0x0f,0xb1,0xc4,0xbf,0xd2,0x76,0x43,0xa3,0x32,
+ 0x27,0x8a,0xeb,0xef,0x86,0x83,0x4d,0x25,0x5a,0x4b,0x8c,0xb4,0xaa,0x3f,0x35,0xf9,
+ 0xe4,0x78,0xa5,0x85,0xa9,0x2b,0x68,0x4a,0xfc,0x2b,0x6d,0x88,0x1e,0x63,0x15,0x51,
+ 0x57,0xb3,0xec,0x86,0x91,0x88,0x2f,0x24,0x7b,0x48,0xa7,0x49,0xbb,0xcd,0x8a,0x89,
+ 0x59,0x5a,0x4f,0x5f,0xf6,0x79,0x7b,0xcc,0xc2,0x7f,0x8e,0x0b,0xbb,0x61,0x74,0xc3,
+ 0xa2,0xfe,0x4d,0x88,0x0f,0x39,0x1a,0x0c,0x38,0x86,0xbf,0xb8,0x26,0x35,0xbe,0x33,
+ 0x2f,0x25,0xfe,0x05,0xbb,0xb9,0x92,0x6a,0xb3,0xb7,0xf3,0xfb,0xa3,0xa1,0x97,0xd9,
+ 0x8d,0xe8,0xe8,0x04,0x02,0x09,0xfb,0x7c,0xdc,0x3f,0xa8,0xd1,0x02,0x8e,0x2e,0x71,
+ 0xd8,0x92,0xff,0x55,0x39,0xbd,0x79,0x85,0x7a,0x7a,0x03,0x8f,0xd6,0x1d,0x7c,0xc3,
+ 0xa9,0x65,0xc5,0x50,0x86,0x3d,0xad,0xce,0xeb,0xa1,0x23,0xe4,0xa3,0x26,0xdc,0x0f,
+ 0x23,0xf2,0x7e,0x2b,0xfe,0x99,0xf1,0x80,0x7d,0xb3,0xa1,0x2b,0x94,0xdd,0x61,0x87,
+ 0x58,0xa3,0x4b,0x63,0x5e,0x88,0xd8,0x1b,0x99,0xdb,0x68,0xf6,0x38,0x4f,0x91,0x46,
+ 0xda,0xd9,0x2f,0x2f,0x20,0x29,0xf1,0x2f,0xf5,0x47,0xd1,0x5b,0x3a,0x6d,0x81,0xd7,
+ 0x67,0x49,0x47,0xf4,0x82,0xd5,0xb6,0x35,0x70,0x03,0x3c,0xad,0x17,0x0f,0xf2,0xc4,
+ 0x28,0x65,0x13,0x9b,0x1b,0x47,0x43,0xcc,0x1a,0xff,0xca,0xd2,0x36,0xb7,0x21,0x3e,
+ 0x71,0x8a,0x59,0x30,0xa2,0x97,0x0f,0xd8,0x3d,0xc2,0xa0,0xf6,0x02,0xab,0x1c,0xcc,
+ 0xbc,0x4d,0x3c,0x09,0x2f,0x40,0xb9,0xe6,0xa8,0xc8,0xb1,0xc6,0xbf,0x9e,0x53,0x3e,
+ 0x64,0xb7,0xf5,0x39,0x86,0x73,0xc6,0xe8,0x45,0xbe,0x2c,0x0f,0x8a,0x23,0x0a,0x5f,
+ 0x96,0x92,0xf3,0x35,0x68,0x4a,0x28,0x0b,0xa7,0xfa,0x7f,0xd0,0x3a,0x0b,0x39,0x39,
+ 0x2d,0x61,0x35,0x2c,0x17,0x66,0x69,0x88,0x36,0x07,0xe1,0x92,0xe1,0xed,0xcf,0xda,
+ 0xb7,0xd5,0x0d,0x7f,0x14,0xbc,0xf1,0x54,0xff,0x8f,0xf0,0x2f,0xb0,0x57,0x31,0xf9,
+ 0x3f,0x33,0xe1,0xc7,0x50,0x5c,0x9d,0x59,0x4f,0xce,0x28,0x07,0x82,0xae,0x5e,0xee,
+ 0x88,0x26,0xeb,0x13,0x1e,0xe9,0xf3,0x16,0xff,0x1b,0xda,0x6b,0x4c,0xd7,0x33,0x02,
+ 0xe9,0x5f,0x13,0xda,0xd8,0xbc,0x50,0xde,0x1a,0xc4,0x7b,0x7b,0xb9,0x07,0xec,0x36,
+ 0xff,0x2c,0xe1,0x69,0x76,0x8b,0xe9,0xff,0x99,0x5c,0xff,0x80,0x34,0xc4,0xf1,0xcf,
+ 0x49,0x1a,0x4b,0x5f,0x0a,0x51,0x28,0x09,0x65,0x70,0xf6,0xe6,0x5e,0x70,0x19,0x38,
+ 0x98,0x03,0x8d,0xce,0xc2,0xee,0x3b,0x3d,0xd6,0xf8,0x57,0x5a,0x27,0x5c,0xd4,0xe7,
+ 0xb3,0xe2,0x77,0xc5,0x3a,0x78,0x47,0xf5,0xe9,0x54,0x15,0x2f,0x32,0xce,0xff,0xc9,
+ 0xd2,0x0b,0x8a,0xe0,0x1c,0xec,0xdd,0xe2,0x4e,0x8d,0x7f,0xc5,0x61,0x18,0xf1,0x8f,
+ 0x83,0xe7,0x43,0xe5,0x41,0x96,0x64,0xa6,0x7d,0x25,0x3c,0x42,0x32,0x07,0x42,0x15,
+ 0x90,0x95,0xea,0xff,0x39,0xb7,0xf9,0x58,0x13,0x1e,0xd2,0xc7,0x6b,0x0a,0xe9,0x68,
+ 0xa1,0xaf,0x7a,0xe9,0xb6,0xea,0x5a,0x93,0x1f,0x72,0xb7,0x22,0xae,0x82,0x37,0x70,
+ 0xff,0x3b,0x7e,0x22,0x58,0xf9,0x3f,0xdf,0xe4,0xf1,0xa9,0xa0,0x2d,0xea,0x2f,0x84,
+ 0x83,0xd5,0x25,0x5a,0xe6,0xf6,0xf0,0x78,0xfc,0x0b,0x11,0x11,0x34,0xe7,0x3b,0xb5,
+ 0x25,0xdb,0xac,0xfc,0x9f,0x19,0x85,0x52,0xb3,0x82,0x87,0x2e,0x9a,0x5e,0x28,0x71,
+ 0xb7,0x0f,0xa2,0xa3,0x01,0x68,0x26,0x6e,0x2d,0x63,0x1b,0x59,0xc5,0x1e,0x57,0xbf,
+ 0x7d,0x87,0x1c,0x4d,0x4f,0xe1,0x3f,0x6b,0x8d,0xb5,0xce,0x7e,0x5b,0xee,0x1d,0x52,
+ 0xde,0x1e,0x70,0xf3,0xec,0xa7,0xb5,0x3c,0x42,0xc4,0xf1,0xcf,0x34,0x68,0xae,0x1d,
+ 0xd4,0x7e,0x9a,0x67,0xe5,0xff,0xa4,0xad,0x68,0x8f,0xb8,0xba,0x12,0x6c,0x93,0x8b,
+ 0xf8,0x9a,0xf7,0xb3,0x9c,0xb8,0x19,0xff,0xca,0x64,0x35,0x21,0xe9,0x0c,0x31,0xa9,
+ 0xd1,0xa7,0x84,0x49,0xff,0xcf,0x8c,0x81,0xe8,0x65,0xe9,0x66,0x04,0x39,0xf2,0x00,
+ 0x5c,0x86,0xc5,0xda,0x9c,0xa8,0xf8,0xdf,0xc9,0xa8,0x9f,0xd3,0x9e,0xe5,0xd3,0xf0,
+ 0x19,0xdc,0x6a,0x7a,0x3c,0x92,0xf8,0x27,0xed,0x02,0xfc,0xb3,0x56,0x1a,0x4c,0x3f,
+ 0x5d,0x54,0xc8,0x89,0xd3,0x08,0x7b,0xc4,0xc2,0xd0,0x2b,0x70,0x83,0x96,0xd5,0x2f,
+ 0xe6,0xc2,0x8b,0x28,0xdf,0x96,0x45,0x45,0x4b,0xfe,0x97,0x72,0x56,0x8b,0x05,0x9d,
+ 0xd1,0x48,0x07,0x8a,0xc1,0x43,0x84,0xd3,0xb0,0xc5,0x15,0x24,0x12,0x2c,0x23,0x8e,
+ 0x06,0xa2,0xb6,0x6f,0x28,0x74,0x82,0x6c,0xe5,0xff,0xd0,0xb4,0x5e,0x7d,0xaf,0xaa,
+ 0x2f,0x97,0xaf,0xf3,0x4b,0x12,0xbe,0xef,0x5d,0xf8,0xbe,0xab,0xc2,0x0d,0x52,0xbc,
+ 0xf6,0x2e,0xc4,0x7b,0xac,0x01,0x81,0xb7,0x99,0xef,0x66,0x89,0x7f,0xd1,0x83,0xf0,
+ 0xae,0x96,0x11,0xcd,0xc2,0xf5,0x57,0xdd,0x5a,0x5e,0x94,0xac,0x82,0x66,0xe9,0x9b,
+ 0x78,0x65,0x56,0x21,0x6b,0x86,0x9d,0x66,0x3e,0x9d,0x25,0xfe,0xc5,0xbd,0x55,0xde,
+ 0x6a,0x7c,0xbb,0xc2,0xbc,0x51,0x98,0xa5,0x15,0x23,0xd0,0x65,0x88,0x6f,0xab,0x67,
+ 0x45,0x73,0x38,0xff,0x27,0x7b,0xe5,0x32,0x9e,0xff,0x35,0xb1,0x3e,0x9d,0x9c,0xff,
+ 0x43,0x2b,0xeb,0xb3,0x6e,0xe0,0xf8,0x47,0xf2,0x05,0x38,0x10,0x62,0x9c,0xff,0xf3,
+ 0x35,0x13,0x11,0xd9,0xf9,0x95,0x46,0x6b,0xfc,0x6b,0x9c,0xe4,0xdc,0x84,0xeb,0x3f,
+ 0xa8,0x75,0x09,0x8e,0x86,0xaf,0xe7,0xd3,0x38,0xad,0xe0,0xb4,0x2b,0x13,0x7f,0x52,
+ 0x47,0x6a,0xfe,0x97,0x4b,0x3d,0x42,0x76,0x86,0x5d,0x71,0x14,0xcb,0x47,0x98,0xb3,
+ 0x61,0xc9,0x6a,0x12,0xc9,0xbc,0x42,0x4a,0x18,0x75,0x85,0xbb,0xd9,0xc6,0x90,0x33,
+ 0x9c,0xd5,0xee,0x4d,0x89,0x7f,0xc1,0x21,0xad,0x70,0x1b,0xbd,0x35,0x6c,0x87,0x1d,
+ 0x50,0x67,0xdc,0x78,0x5d,0xba,0x9d,0xb6,0x43,0x91,0x81,0x16,0xd9,0x37,0xc9,0xcf,
+ 0x7a,0x5d,0xf3,0x51,0x43,0x59,0xe3,0x5f,0x33,0x61,0x1f,0x14,0x32,0x54,0xfa,0xf7,
+ 0xc3,0xfe,0xc8,0x5c,0xe3,0xa7,0x9a,0xff,0x39,0x6d,0x9f,0x50,0x6c,0xb8,0xea,0xc9,
+ 0xe9,0xec,0x7f,0x83,0x5d,0x86,0xad,0x1e,0xac,0xf1,0xaf,0xeb,0x78,0xb6,0x57,0x3e,
+ 0x7d,0x43,0x9c,0x35,0xf3,0x5c,0xd3,0x6d,0x03,0xff,0x6d,0x79,0xce,0x2c,0xfd,0x29,
+ 0xb6,0xe8,0xbc,0xbd,0x5c,0xfc,0x1a,0xfc,0x81,0xdd,0x16,0x77,0xa4,0xc4,0xbf,0x32,
+ 0x3b,0xe0,0xa2,0x7a,0x88,0x6d,0x6a,0x93,0x77,0x4b,0x17,0xa1,0xec,0xe4,0xcd,0x51,
+ 0x72,0x92,0xe1,0xf9,0x3a,0x63,0x12,0x3b,0xdf,0x82,0x32,0x8d,0xc7,0xbf,0xc8,0xc4,
+ 0xfa,0x70,0xfe,0xcf,0x58,0x7f,0x69,0x68,0x69,0x9d,0xf8,0x08,0x7c,0xc6,0x2a,0x06,
+ 0xb2,0xce,0xa0,0xda,0xfa,0xbb,0xa8,0x6f,0x20,0x0b,0x11,0x11,0x5c,0x6e,0x28,0x1d,
+ 0x70,0x1c,0x14,0x0d,0x8b,0xff,0xa7,0x0d,0xf6,0x34,0x14,0x28,0x81,0x95,0xe2,0xfd,
+ 0xda,0x70,0x54,0x1d,0x94,0x83,0x05,0xf7,0xc3,0xbf,0xc7,0x2b,0xe3,0x99,0xf5,0xe2,
+ 0xfd,0xf0,0x4b,0x98,0xcb,0xe4,0x22,0x0b,0xff,0x19,0xa0,0x0d,0xf6,0xa9,0xf9,0xd2,
+ 0x5c,0x03,0xdf,0x77,0x1f,0x9d,0x6b,0xfc,0xe4,0x4b,0x68,0xb8,0xad,0x87,0xef,0x70,
+ 0xff,0xfc,0xcc,0xd0,0x01,0xc8,0x3f,0xfa,0x77,0x41,0xa7,0x61,0xe1,0xff,0x9c,0x84,
+ 0x18,0x38,0x21,0x20,0xa0,0xfc,0xd1,0x1b,0x38,0xad,0xd7,0xb6,0x14,0x36,0xc3,0x6a,
+ 0x43,0xf0,0x90,0x3b,0x60,0xaf,0xdf,0x75,0x9e,0x3b,0xf6,0x53,0xf8,0x3f,0x28,0x6d,
+ 0x9a,0x32,0xbb,0xe5,0xd5,0x52,0x77,0x74,0x91,0x91,0xa5,0x88,0x95,0xd2,0x31,0xf8,
+ 0xa1,0xc9,0xef,0xe5,0x82,0x74,0x18,0x07,0x1f,0x58,0xf0,0xcf,0x10,0x5c,0xd4,0x8e,
+ 0xb4,0x6d,0xd2,0xe5,0x21,0x18,0xa9,0x46,0xfb,0xb4,0x4d,0xdc,0xad,0x8d,0xc2,0x0d,
+ 0x9c,0x2f,0xfd,0x73,0x18,0xed,0x7b,0x84,0x5f,0xb1,0xe2,0x9f,0x0b,0xf4,0x0a,0x7c,
+ 0x97,0x2d,0x5d,0xde,0xf8,0x30,0x8c,0xe9,0x0b,0x8d,0xcc,0x33,0x39,0x0f,0xe3,0xc1,
+ 0xf4,0x18,0xad,0x9f,0x88,0xf5,0xf0,0x3b,0xd8,0xa9,0x6f,0x8a,0x5b,0xe3,0x5f,0xb5,
+ 0xab,0xe0,0x50,0x9f,0x53,0xa7,0x0d,0x3c,0x5e,0x43,0x55,0xc3,0xd6,0x86,0x82,0x7d,
+ 0xb3,0x51,0xc4,0x61,0x0c,0x91,0x1a,0x7a,0x9c,0xe7,0x97,0x1c,0x4e,0x8d,0x7f,0x41,
+ 0x8c,0x07,0x7d,0xf4,0x0d,0x6e,0xe8,0x86,0x39,0x46,0xde,0x8f,0xc9,0x6a,0x3c,0x38,
+ 0x26,0xec,0xf9,0x07,0x68,0x6e,0x2e,0x0a,0xc8,0xa9,0xf8,0x27,0x0d,0x62,0xf9,0x2a,
+ 0xa7,0xcd,0xd8,0xa1,0x5b,0x72,0xf6,0xd9,0x38,0xed,0x67,0x73,0xa8,0xae,0x9f,0x7a,
+ 0xb2,0x39,0x1e,0x70,0x19,0x3f,0x2d,0xb5,0xe6,0x7f,0x65,0x7e,0x03,0x2e,0xdc,0xeb,
+ 0x84,0x56,0x43,0x2c,0xae,0x1d,0xa9,0x5f,0x78,0x06,0xb5,0xc9,0xc3,0x30,0xaa,0x95,
+ 0x22,0x6c,0x13,0x43,0xf4,0x2d,0x9e,0xaf,0x14,0x6b,0xb4,0xc4,0xbf,0x6e,0x1a,0x63,
+ 0x23,0x65,0x26,0xc8,0x19,0x8b,0x8e,0x84,0xaa,0x4e,0x39,0x82,0xfc,0x7d,0x3d,0x55,
+ 0x27,0x51,0xad,0x0f,0xdb,0xc6,0x60,0x21,0x38,0x8e,0xe6,0x58,0xfd,0x3f,0x9f,0x23,
+ 0xc8,0xa9,0xea,0xc8,0x8c,0xdb,0xbe,0x07,0x57,0x6b,0x4b,0xf3,0xc5,0x9e,0xcd,0x0f,
+ 0x29,0x7d,0xec,0x0b,0x24,0x73,0x58,0xf4,0xb0,0x33,0x50,0x1a,0x72,0xbc,0x9f,0x82,
+ 0x7f,0xce,0x41,0x04,0x61,0x0f,0xd5,0xc9,0x93,0x06,0xc2,0x3c,0x95,0xae,0x23,0x73,
+ 0x68,0xc4,0xe5,0xf4,0x44,0x3a,0x49,0xc1,0xbd,0xcd,0xd1,0x22,0x4d,0xd6,0x9d,0x56,
+ 0xfc,0xd3,0x8b,0xdf,0xac,0x24,0xd2,0xec,0x7c,0xc9,0xf0,0xec,0x74,0x3a,0xc1,0x46,
+ 0x08,0xcf,0x1f,0x71,0x41,0x27,0x07,0x7e,0xdc,0xdf,0x85,0xe8,0xdf,0xca,0xff,0xe9,
+ 0x20,0x91,0x48,0xc9,0x51,0xbc,0xbf,0x8e,0x30,0xb2,0x5d,0xa3,0xdb,0x88,0x9b,0x20,
+ 0xac,0x92,0xe8,0x76,0xa2,0xb2,0x96,0x9e,0x6f,0x57,0xcb,0x7a,0xba,0x05,0xff,0xcc,
+ 0x78,0x09,0xfa,0xc2,0xbe,0x68,0x66,0x2c,0x67,0x95,0x72,0x09,0x3c,0xab,0x1c,0xad,
+ 0xe2,0x9d,0xf4,0x58,0x9b,0xcd,0x93,0x59,0x2e,0xbb,0xd8,0x31,0xc3,0x6b,0xbc,0xaa,
+ 0x17,0x58,0xf1,0xcf,0x01,0x4e,0x02,0xef,0xdd,0x74,0xa8,0xe6,0x7f,0xb8,0x50,0xad,
+ 0xb3,0x65,0xc1,0x1b,0xc7,0xa4,0x31,0xf0,0xa9,0x8e,0xb8,0x78,0x1c,0x86,0xa5,0xaa,
+ 0x55,0x38,0xb0,0xc6,0xbf,0x3a,0x58,0x5f,0xa0,0x22,0x9a,0xb5,0x0f,0xf5,0xe3,0x25,
+ 0xc5,0xa7,0x2d,0xd3,0x6b,0x7e,0x8f,0x12,0xaf,0x5e,0x29,0x66,0xa2,0x0b,0x8e,0x85,
+ 0xb2,0x8d,0x4d,0xba,0x68,0xcd,0x7f,0x2f,0x84,0x48,0x44,0x35,0x68,0x14,0x4f,0xd2,
+ 0xf3,0xdc,0x0d,0xd8,0x46,0x3e,0x0c,0xee,0x0d,0xae,0x7c,0x1b,0x11,0xf2,0x6e,0xd8,
+ 0xc0,0x9c,0x75,0x4b,0x7e,0x2e,0x7a,0xad,0xf9,0x5f,0xc0,0x7a,0x71,0x9b,0xe9,0x24,
+ 0x13,0x0e,0x6f,0x70,0x77,0xc9,0xb7,0x86,0x0d,0xe8,0x52,0x5c,0x3c,0x5e,0x23,0x81,
+ 0xae,0x15,0x6a,0xb2,0xcb,0xbf,0xc6,0x8a,0x7f,0x48,0x93,0x9e,0xdf,0x19,0xf9,0x96,
+ 0x6d,0x96,0x74,0x60,0x73,0x71,0x41,0xcb,0x72,0xf2,0x1a,0xec,0xdf,0x31,0x37,0x8e,
+ 0xf8,0xea,0xc7,0xca,0x93,0xbb,0x66,0xbf,0x27,0x0f,0xa2,0x62,0x9e,0xb8,0x7f,0x80,
+ 0x4a,0xaa,0xa1,0x57,0x18,0x25,0xb9,0xa2,0xbd,0xef,0x53,0xa9,0x92,0x39,0x0a,0xc5,
+ 0x17,0x11,0x08,0x75,0xf6,0xda,0x55,0x51,0x22,0x67,0xf5,0x7d,0xda,0x32,0xb5,0xe5,
+ 0x5e,0x0b,0xfe,0x69,0x85,0xb1,0xe9,0xcf,0x47,0x1c,0x46,0xcd,0x73,0x1c,0x16,0x6a,
+ 0x8e,0x5f,0x15,0x5c,0x56,0x2f,0x09,0x0b,0x0d,0x12,0x32,0xf9,0xcf,0x8b,0x0c,0x47,
+ 0x28,0x95,0xff,0xcc,0x49,0xb0,0x3d,0x3c,0x1b,0x91,0xd3,0xf6,0xfa,0x32,0x8d,0xfa,
+ 0x5d,0xd1,0x4b,0x19,0x5e,0x63,0x99,0x9a,0xe3,0x86,0x6f,0x41,0xb6,0x61,0x4f,0xe5,
+ 0x3f,0x6f,0xe7,0xd9,0x46,0x3c,0x49,0x36,0x17,0x0e,0xc0,0xdc,0xed,0xa8,0x4d,0xf2,
+ 0xe8,0x11,0xc8,0x67,0x72,0xa8,0x60,0x39,0xac,0xe3,0xf8,0x27,0x44,0xac,0xfc,0x9f,
+ 0x1f,0xc3,0x5a,0xf6,0x9d,0xf8,0xae,0xe5,0xf7,0xdc,0x0c,0x7b,0xa3,0xf9,0x9c,0xed,
+ 0x7c,0x9d,0xfd,0x59,0x36,0xbb,0xbe,0x65,0xec,0xde,0x3b,0xa6,0x37,0xb0,0x82,0x78,
+ 0x46,0x5d,0x4a,0xfc,0xeb,0x24,0x69,0x84,0x92,0x0e,0x6a,0x4f,0xcf,0xa2,0x87,0xc1,
+ 0xd5,0x2f,0x2b,0x78,0xd0,0x0e,0x6b,0x9c,0x08,0x4d,0xee,0x79,0xa9,0x31,0xbd,0xbd,
+ 0x77,0xae,0x9e,0xc2,0xff,0x89,0xc0,0x29,0xad,0x8a,0x15,0x0f,0x8a,0x15,0x5c,0x10,
+ 0x75,0x3e,0xfa,0x81,0xec,0x82,0x8b,0xca,0x01,0xe6,0xf8,0x96,0xf8,0x7d,0xf8,0x48,
+ 0xf3,0xb2,0xcc,0x29,0xfc,0x67,0x18,0x09,0xf8,0xc0,0xd1,0x50,0x9a,0xa0,0x3d,0x3b,
+ 0xd6,0xe5,0xc4,0x4d,0x22,0x90,0xa3,0x89,0x27,0x82,0xe1,0xaf,0x52,0xf1,0x8f,0x32,
+ 0xa0,0xbd,0xaf,0xfa,0xb4,0xac,0x68,0xe3,0x53,0x81,0x63,0xba,0xd7,0xef,0x50,0xf8,
+ 0x42,0xa9,0x1e,0x4d,0x8a,0x8a,0x3c,0x75,0xda,0x5b,0x67,0x7f,0xdc,0xca,0xff,0x91,
+ 0xfe,0x7e,0x02,0xed,0x14,0xa2,0x2e,0x71,0xf2,0xfd,0xe3,0xa6,0x07,0xb5,0x2e,0xad,
+ 0xae,0x8d,0xc7,0xbf,0xb4,0x76,0x2d,0x33,0x6a,0xb3,0xfa,0x7f,0x66,0xd3,0x5d,0x38,
+ 0x1f,0xc5,0x48,0xab,0x62,0xa6,0x29,0x6d,0xc6,0x3f,0x3c,0xa8,0x15,0x19,0xb6,0x68,
+ 0xfa,0x2a,0x75,0xdc,0xff,0x93,0x9e,0xe2,0x7f,0x6e,0x14,0x78,0xd2,0x93,0x3f,0x13,
+ 0x78,0xfe,0x7b,0x22,0x11,0xac,0xda,0xa5,0xd9,0x38,0x63,0xaa,0x01,0x20,0xf8,0x78,
+ 0xae,0x35,0xfe,0x95,0x19,0x42,0x6d,0x56,0x09,0x59,0x40,0x74,0xce,0x0f,0x07,0x87,
+ 0x2e,0xab,0x28,0xe8,0x7e,0x00,0x59,0x3a,0xe2,0x1f,0x7e,0x05,0xbf,0x6f,0x2a,0xff,
+ 0xe7,0x32,0x54,0x55,0x4f,0x1b,0xcf,0x76,0xe7,0xf9,0x5f,0x1c,0x21,0x94,0x7e,0x29,
+ 0x93,0x5f,0xb9,0xac,0x2d,0xe6,0xf8,0xe7,0x9b,0xd6,0xfc,0x77,0xf8,0x13,0x54,0xd6,
+ 0xde,0xbd,0xe5,0xaf,0xbe,0xa7,0xde,0x9d,0xe3,0xad,0x16,0x5f,0x63,0x6e,0xbc,0x03,
+ 0xd1,0xd2,0xa3,0x62,0x47,0xe4,0x8f,0xae,0xd2,0x5a,0xc7,0xaf,0x52,0xf0,0x0f,0xae,
+ 0xb6,0x50,0x02,0x34,0x1c,0xce,0x97,0xce,0x78,0x8a,0x40,0x6e,0xe7,0x40,0x08,0x35,
+ 0x0e,0x4a,0x6c,0x15,0x5a,0xa1,0x88,0xca,0x0c,0x52,0xf0,0x8f,0x19,0xed,0xca,0xc8,
+ 0x49,0x6f,0x42,0x75,0x84,0xdb,0x20,0x7b,0x43,0x3a,0x1c,0xa4,0x2b,0x56,0x05,0x86,
+ 0xc9,0x8f,0xb5,0xb5,0xa0,0x06,0xe4,0xec,0x3b,0xac,0xf8,0x67,0xf7,0xf4,0x5d,0x86,
+ 0x3b,0x90,0xa7,0x84,0x9f,0x84,0xc7,0xa1,0xc8,0xdf,0x82,0x1f,0x22,0x78,0x10,0xda,
+ 0x43,0xb4,0x3f,0xbc,0x0f,0x1e,0xd5,0x6c,0x9a,0x18,0xd5,0x52,0xf1,0xcf,0x41,0xc3,
+ 0x17,0xca,0xdc,0x9e,0xc3,0x89,0x5e,0x5e,0x4d,0xde,0x26,0xce,0x81,0xd1,0xa8,0x37,
+ 0xe8,0x6e,0x13,0x9f,0x24,0x28,0x7f,0xf8,0xfb,0x0e,0x5a,0xf9,0x3f,0x85,0xa3,0x3c,
+ 0xc9,0x7d,0x8b,0xbc,0x0a,0x3e,0x11,0x71,0x90,0xdd,0x78,0xae,0xdc,0x0c,0x84,0x6d,
+ 0x17,0x57,0xb1,0x5f,0xe9,0x66,0x44,0x2c,0x05,0xff,0x08,0x23,0x81,0x32,0xc8,0x6c,
+ 0xaa,0xd6,0xd4,0x3e,0x27,0x47,0x3b,0x5f,0x57,0x61,0xc4,0x56,0x29,0xd8,0x59,0x8d,
+ 0x06,0x27,0xcd,0x8c,0x3c,0x71,0x43,0x8a,0xff,0xe7,0x08,0x38,0x59,0x9d,0x4e,0x2b,
+ 0x3c,0xbf,0x30,0xda,0xa3,0x59,0x43,0x68,0xc8,0xef,0xd7,0x1e,0x61,0x2e,0x15,0x5c,
+ 0x74,0x03,0x94,0xe9,0x4b,0x06,0x44,0x2b,0xff,0xf9,0x6e,0x6d,0x6f,0xb4,0x90,0x4b,
+ 0x9b,0x2c,0xa1,0x01,0x8f,0xc9,0x8d,0x78,0x5e,0xe8,0x9e,0x2f,0xf1,0x78,0x31,0xdc,
+ 0x93,0x16,0x26,0x9d,0xc6,0x8d,0x3e,0x4b,0xfc,0x4b,0x17,0x72,0xe1,0x39,0x56,0x60,
+ 0x44,0x86,0xd3,0x73,0xe1,0x49,0x5b,0xbe,0x76,0xc3,0x7d,0xd9,0x8a,0xba,0x0f,0xe5,
+ 0x79,0xde,0x30,0xb9,0x09,0xc2,0x50,0xdc,0x2f,0xaf,0xce,0x76,0xa5,0xe0,0x9f,0x67,
+ 0xc3,0xb7,0xbe,0x6b,0x7f,0x24,0xec,0x83,0x93,0x6c,0x7e,0xdc,0x31,0x48,0x78,0x44,
+ 0xac,0x38,0x6e,0xaf,0x13,0xef,0x22,0x2f,0xb3,0xdb,0xce,0x3a,0x46,0xe4,0x6f,0x5b,
+ 0xfc,0x3f,0x1d,0x02,0x47,0x3b,0xd4,0x3b,0x4d,0x47,0xfb,0xd4,0x77,0x2f,0x2a,0xb2,
+ 0xb3,0x74,0x0c,0x81,0xae,0xa8,0xa2,0x60,0xbb,0x04,0xfb,0xab,0x11,0x0f,0xf8,0x2d,
+ 0xfc,0xe7,0xd7,0xb5,0xa1,0x68,0xd5,0xbb,0x99,0xa3,0xe4,0x07,0x81,0x57,0xd9,0xcd,
+ 0x3b,0x38,0xff,0x99,0x5e,0x66,0xf3,0xe2,0xee,0xe5,0x05,0x65,0xf4,0x25,0x56,0x1a,
+ 0x77,0x74,0xa7,0xf0,0x7f,0x7e,0xac,0xb3,0xfa,0x79,0x7d,0x91,0xef,0x92,0xbc,0xde,
+ 0xdf,0x40,0x31,0x20,0xfa,0xfd,0x6d,0xee,0xbe,0xee,0x62,0x4a,0x83,0xfe,0x5c,0x05,
+ 0xe5,0x4f,0xaf,0xfc,0x81,0x95,0xff,0x0c,0x6d,0x0d,0x1d,0xda,0x77,0x8c,0xeb,0xeb,
+ 0xb3,0xee,0x83,0x26,0x14,0x5c,0x72,0xc8,0x4c,0x7b,0x77,0x1b,0x19,0x1a,0x89,0xc2,
+ 0x01,0x86,0xf8,0xd9,0x6f,0xf5,0xff,0xe4,0xf6,0x52,0x16,0x2d,0xe9,0xa7,0xcf,0xe2,
+ 0xc5,0xad,0xe0,0xa6,0xb2,0xce,0x69,0xbd,0xcc,0x9d,0x97,0x61,0x27,0x8c,0x6d,0xd5,
+ 0xf4,0x5a,0x59,0x4d,0xe1,0x3f,0x77,0xc0,0xfb,0xa4,0xca,0x78,0x74,0x04,0x61,0xc6,
+ 0x31,0xce,0xe7,0x89,0x36,0x7e,0x84,0xfb,0xc7,0x17,0xcf,0xdc,0x2f,0xfe,0x1b,0x4a,
+ 0x18,0x6f,0xdc,0x91,0xca,0x7f,0x1e,0xe0,0x49,0xa6,0x2f,0x99,0x49,0x5e,0xa3,0x3c,
+ 0x1a,0xd8,0xd6,0x78,0x56,0x1b,0xa9,0xae,0x54,0xef,0x89,0x89,0xf7,0xc0,0xa0,0xfe,
+ 0x48,0xcf,0x14,0xfe,0xf3,0x05,0xdc,0x24,0xdc,0x5b,0xd2,0xe0,0xc6,0x3f,0x2d,0xed,
+ 0xcb,0x8a,0x8b,0x8f,0xe8,0x57,0xa5,0x2a,0xc3,0x1e,0x6a,0x74,0xc1,0x8b,0x6c,0x21,
+ 0x67,0x04,0x59,0xf0,0x0f,0xa0,0x3e,0x62,0x4e,0x23,0x10,0x13,0x43,0xca,0x60,0xbb,
+ 0x33,0xd2,0xb2,0x6d,0xa5,0x4a,0xbb,0xe3,0x25,0x50,0xa7,0x93,0x4e,0xa5,0x99,0xa8,
+ 0x9a,0x6b,0x9b,0xa8,0x27,0xf1,0x8f,0x30,0x07,0x22,0x2a,0xcf,0x2e,0x21,0x9d,0xd2,
+ 0x61,0x4e,0x8c,0xd9,0xb6,0x4e,0x85,0xc7,0xd9,0x03,0x86,0x29,0xc1,0x22,0x0a,0x02,
+ 0xa1,0xce,0xb0,0x15,0xff,0x14,0xb2,0x08,0x84,0x38,0xdb,0xa7,0x0f,0x74,0xfc,0x4f,
+ 0x86,0xbb,0x00,0x62,0xda,0x6a,0x4e,0x83,0x69,0x4a,0x63,0x1a,0xce,0x57,0x2d,0xf2,
+ 0x07,0x32,0x57,0xb1,0x3e,0x8d,0xd3,0x96,0xe4,0x0e,0x1e,0x7f,0xd7,0xee,0x61,0x39,
+ 0x6a,0xee,0x88,0x56,0xd2,0x63,0x67,0x05,0x2a,0x1c,0xd3,0xca,0x78,0x7c,0xc1,0x8a,
+ 0x7f,0xe2,0xfe,0x31,0x97,0xe9,0xcd,0xa8,0x47,0xa8,0x68,0x02,0xa1,0x61,0x9c,0x3f,
+ 0x4f,0xe0,0x03,0xe5,0xb2,0x80,0x1a,0xad,0x57,0xec,0xb4,0xe0,0x9f,0x31,0x36,0x06,
+ 0xf3,0xe3,0x77,0x9f,0x2f,0xf8,0x5b,0x9e,0x06,0xc5,0xdc,0xc3,0x5f,0xa8,0x84,0x13,
+ 0x0d,0x15,0x71,0xc7,0xeb,0x39,0x0b,0x22,0x97,0xd5,0x2a,0xdc,0x3f,0x5f,0xb7,0xe2,
+ 0x9f,0xb7,0x11,0x24,0x3b,0xe3,0x81,0x67,0x49,0x11,0x6c,0x3a,0x5a,0x12,0x8d,0x7c,
+ 0xd6,0x7e,0x93,0xd6,0x52,0x54,0x12,0x97,0xb7,0x12,0xb7,0x71,0xd0,0xc0,0x41,0xaa,
+ 0xff,0xe7,0x15,0x8e,0x87,0xb9,0xf5,0xdd,0x89,0x86,0x7f,0x49,0x13,0xf5,0xfa,0x4d,
+ 0x3e,0x58,0x4f,0x8b,0x27,0x5b,0x52,0xf7,0x2a,0x26,0xd1,0xc5,0x82,0x7f,0xa6,0xef,
+ 0x86,0x83,0x52,0x7b,0x9c,0xf2,0x68,0x63,0x0b,0x94,0x34,0x45,0x62,0x4e,0x3b,0x1f,
+ 0xf4,0xdc,0xd8,0x89,0xff,0xe2,0xa1,0x44,0x6a,0xbc,0x95,0xff,0x3c,0xc4,0x61,0xcf,
+ 0x43,0x77,0xc7,0xe4,0x08,0x27,0x86,0x65,0xdb,0x3d,0x39,0x9c,0xff,0xfc,0x03,0x63,
+ 0xd9,0x21,0x71,0x1e,0xbd,0xa4,0xf3,0x7c,0xc0,0x69,0x56,0xfc,0xf3,0x1c,0x5c,0xed,
+ 0xe0,0x24,0xde,0xf9,0xdd,0x0c,0xf5,0xbb,0x2a,0x9a,0x6e,0x1f,0xdc,0x81,0x37,0xc7,
+ 0x65,0x9e,0x5f,0x60,0x2e,0x9d,0x15,0xff,0xec,0x86,0xdf,0x43,0x85,0xdf,0xbe,0x57,
+ 0x74,0x69,0x27,0x38,0xcd,0x23,0x26,0x0e,0x85,0xcd,0xf8,0x23,0x47,0x44,0x27,0x88,
+ 0x99,0x88,0x67,0xf5,0xff,0x2c,0x0e,0xb4,0x04,0x9d,0xfd,0xae,0x0b,0xc2,0x77,0xb4,
+ 0xdf,0x21,0x86,0x96,0x3f,0x79,0xed,0x2a,0x6b,0x81,0x07,0x0c,0x59,0xcf,0xe6,0xf5,
+ 0x37,0xcc,0x8c,0xb6,0x14,0xfe,0xb3,0x5f,0x57,0xea,0x0c,0xba,0xcf,0x6f,0xe3,0xcb,
+ 0xa2,0xc9,0x95,0x78,0x5e,0x1a,0x89,0x8b,0xf3,0xe7,0x7b,0x71,0x3b,0x9a,0x8a,0x3b,
+ 0xc5,0xff,0x93,0xf1,0x68,0x53,0xc1,0x00,0x5d,0xe3,0xff,0x01,0xa7,0xfd,0x7c,0x43,
+ 0xfe,0x3e,0x79,0x07,0xd6,0x37,0x15,0x9f,0x95,0x79,0x20,0x6c,0x2d,0xcf,0x90,0xfa,
+ 0xc1,0x14,0xfe,0x73,0x5c,0x2d,0x37,0xec,0x1e,0x91,0x46,0x5f,0x68,0xaa,0x54,0x1d,
+ 0x1e,0xf1,0xa4,0xf0,0x02,0xab,0x1c,0x9a,0xa6,0x8a,0xb5,0xe4,0x28,0xc4,0x0c,0x47,
+ 0x45,0x0a,0xff,0xf9,0xe7,0xda,0xb3,0x7c,0x11,0x3e,0x69,0x1c,0xe4,0xde,0x30,0x69,
+ 0xd9,0xb0,0x78,0x19,0xae,0x2a,0x78,0x85,0xf3,0x5d,0xc7,0xf8,0xe0,0x13,0xb1,0x7f,
+ 0xd2,0xfe,0xea,0x4c,0xfb,0x10,0x4e,0xac,0x2a,0xe7,0xd9,0xee,0x7d,0xd2,0x89,0xe8,
+ 0x21,0xe6,0xde,0x9b,0x53,0x6c,0xf0,0xf5,0xd9,0xa4,0xd7,0x7c,0x80,0x1a,0xd3,0xcc,
+ 0xc7,0xb4,0xe2,0x9f,0x5f,0xc2,0xa3,0x4a,0xbe,0xf1,0xe8,0x43,0xf8,0x90,0xeb,0x95,
+ 0x02,0x46,0x1f,0x24,0x33,0xd9,0x6f,0xd0,0x7e,0x94,0x35,0xbc,0xd2,0x94,0xc8,0x27,
+ 0xb5,0xe2,0x1f,0x9e,0xed,0x3e,0x97,0x47,0xbb,0x2e,0x42,0x23,0xcb,0x7f,0x37,0x83,
+ 0xa7,0xa5,0x98,0x7c,0xef,0xba,0xf0,0x51,0x75,0x9d,0x49,0xfc,0x4e,0xc1,0x3f,0x43,
+ 0xd0,0xa8,0xe9,0x7a,0x46,0xcc,0xd9,0xc7,0xc3,0x5e,0xf1,0x0c,0x4f,0x91,0x3b,0x6b,
+ 0xab,0x84,0xdb,0x2c,0x9d,0xf4,0x00,0x33,0xcc,0xfd,0x66,0xc5,0x3f,0x9d,0xe4,0x94,
+ 0xb1,0x68,0xeb,0x52,0x3d,0xfb,0x4c,0xe8,0x38,0x2c,0xda,0x77,0xa7,0x8e,0xb0,0xf6,
+ 0x38,0x17,0x2c,0x83,0xe2,0x45,0x38,0xa5,0x9b,0x19,0x28,0x29,0xf8,0x47,0x19,0x59,
+ 0xce,0x49,0x3e,0x05,0x67,0x4d,0xb7,0x4f,0x96,0x64,0x12,0x81,0x7c,0x82,0x83,0xd5,
+ 0xc4,0xe7,0x8c,0xd0,0x6b,0xf2,0xbf,0x06,0xc6,0x93,0x80,0x72,0x0a,0x95,0x3b,0x81,
+ 0xa7,0xbd,0x8b,0xdc,0x9f,0x63,0xaa,0xc5,0xf1,0x7c,0xa8,0xd4,0xfc,0xaf,0x55,0xc4,
+ 0x24,0xe1,0x44,0xc9,0x1c,0xb6,0x4b,0x2a,0xd1,0x36,0xfc,0x98,0xe7,0x7f,0xa1,0xd9,
+ 0x2b,0x47,0xc7,0x89,0x3d,0x29,0xf5,0x7f,0x78,0xfc,0xab,0x99,0xb5,0x6b,0xb6,0xcd,
+ 0xfe,0x42,0xc6,0x81,0x50,0x24,0xea,0x2c,0xd4,0x77,0x24,0xf2,0xb5,0x87,0x26,0xe6,
+ 0xa7,0xfa,0x7f,0x1a,0x34,0x67,0xc8,0x86,0xb0,0x47,0xda,0x41,0xdc,0xc1,0x1b,0x78,
+ 0xfc,0x6b,0x47,0xb5,0x99,0x08,0x9f,0x20,0xc6,0x20,0x62,0xb4,0xe6,0x7f,0xad,0xc0,
+ 0xd5,0xf0,0xc2,0x3d,0xcc,0xa6,0x9a,0xd5,0x8d,0x78,0xfc,0x8b,0x0c,0x9a,0x6a,0x77,
+ 0x3a,0x27,0x02,0x99,0xef,0x6b,0xcd,0xff,0x7a,0xaf,0xe9,0xb2,0x56,0xa5,0xfd,0xbc,
+ 0x6d,0x9c,0xff,0x3c,0xaf,0x4d,0x7c,0x8f,0x67,0xb8,0x73,0x20,0xf4,0x19,0xbd,0xac,
+ 0x25,0x18,0x2f,0x56,0xfc,0x63,0xfc,0x56,0x2b,0xe5,0xbf,0xbd,0xc0,0x89,0xc4,0x01,
+ 0xfb,0xeb,0xe2,0x02,0xf6,0x7e,0x62,0x7d,0x0a,0xb5,0x63,0x2e,0x73,0x7e,0x8a,0xff,
+ 0xc7,0x88,0x68,0x4e,0x68,0x69,0xca,0x8e,0x93,0x08,0x94,0xdc,0x70,0x57,0x18,0x35,
+ 0x52,0xa7,0xda,0x0e,0x72,0x18,0x37,0x71,0x44,0x33,0x19,0x41,0xa9,0xf8,0x67,0x73,
+ 0x08,0x8d,0xac,0xeb,0xf8,0x69,0xd2,0xdc,0xb5,0x19,0xd7,0xe1,0xfb,0xee,0xa2,0xaa,
+ 0xb6,0x64,0xe6,0xd1,0xb4,0x86,0x86,0x89,0xf7,0xb5,0xf2,0x7f,0x9a,0x51,0x9e,0xe3,
+ 0xa2,0x7d,0x98,0xde,0x9c,0x56,0x12,0x94,0xb9,0xff,0x67,0x17,0xac,0x34,0x89,0xe8,
+ 0x22,0xcf,0xbf,0xbb,0x31,0x3a,0xc5,0xff,0xf3,0x06,0x78,0xb9,0x1b,0xe7,0x65,0x7f,
+ 0x33,0xf8,0x82,0x99,0xfc,0xfb,0x9e,0xc5,0xe7,0xdf,0xb4,0x4d,0x2c,0x34,0x8e,0x19,
+ 0xfc,0xf9,0x0b,0x52,0xf0,0x8f,0x3a,0x1a,0x49,0x2c,0x82,0xca,0x61,0x8f,0xc9,0x07,
+ 0x7b,0x83,0xf3,0xc1,0xb2,0xe5,0x73,0x30,0x6a,0xe2,0x9f,0x69,0x56,0xfc,0xc3,0xa0,
+ 0x4f,0xf1,0x65,0x3b,0x58,0xa3,0x2a,0xd5,0x25,0xa2,0xab,0x80,0xaa,0xa3,0x8c,0x2f,
+ 0x7b,0x3e,0xf4,0x69,0xe6,0xfa,0xa7,0xf0,0x9f,0x61,0x23,0xcc,0x8b,0xca,0x83,0xa4,
+ 0xbc,0xf0,0x22,0x94,0x34,0xc8,0x71,0x5b,0xb9,0x99,0x11,0x26,0x27,0xf2,0xbf,0x78,
+ 0xfd,0x96,0x95,0x56,0xff,0xcf,0xed,0xd0,0x62,0xac,0x8e,0xca,0xe5,0x44,0x36,0xf3,
+ 0x91,0x79,0xbe,0x2d,0x24,0x12,0x27,0xc9,0x6e,0xae,0xc1,0xf9,0xc0,0xea,0xff,0xa1,
+ 0xbc,0x48,0x4e,0x3f,0x8a,0xa9,0xfb,0x39,0xed,0xa7,0x4f,0x06,0xa2,0x28,0xeb,0x3d,
+ 0xb3,0x0d,0xb9,0x94,0xf0,0x54,0x71,0x7e,0x7e,0x9d,0xa9,0xfe,0x1f,0xce,0x76,0x76,
+ 0xf0,0xb4,0xf7,0x3f,0xb0,0xc5,0x67,0x1d,0x75,0xa2,0x0f,0x5e,0x8d,0xdd,0xca,0xaf,
+ 0x3c,0x11,0xfe,0x4d,0xe2,0x57,0x56,0xfe,0x73,0xa7,0x34,0x9a,0xe6,0x43,0x25,0x3e,
+ 0xcb,0x9e,0x48,0x7b,0x8f,0x8a,0x71,0x7a,0x49,0xe5,0x66,0xbe,0xfc,0xa1,0x49,0x74,
+ 0x49,0xe5,0x3f,0xa7,0x7d,0xae,0x1d,0x8b,0xce,0x1f,0xb0,0x8f,0x22,0xec,0x39,0xc1,
+ 0xbc,0xef,0x3a,0x78,0xd9,0x9f,0x57,0xc3,0xbe,0xf8,0xa6,0x51,0xf1,0xaa,0x7a,0x35,
+ 0x91,0xff,0x6e,0xe4,0x5a,0xf8,0x3f,0xd0,0xb4,0x23,0xbf,0x37,0xf3,0xeb,0xe2,0x13,
+ 0xfa,0xce,0xd8,0xdc,0x01,0x14,0x3b,0xfd,0xda,0x7a,0xb5,0x78,0x10,0xc5,0x08,0x07,
+ 0x36,0x8b,0xb9,0xfc,0xb1,0xfa,0x7f,0x72,0x61,0x2d,0x29,0x30,0xee,0xac,0x27,0xcf,
+ 0x35,0x35,0x0a,0xf9,0x06,0xee,0x36,0x9e,0xaf,0xf1,0x9d,0x3e,0xf9,0xbb,0xe4,0x6d,
+ 0xed,0x40,0x42,0x5e,0xa5,0xfa,0x7f,0x1a,0x7a,0xf4,0x5f,0x65,0x00,0xd9,0xc4,0x76,
+ 0x42,0x9d,0x81,0xbb,0xcb,0x80,0x46,0xc9,0x5c,0xc6,0x93,0x2b,0xf6,0x6a,0x09,0x62,
+ 0xa7,0xd5,0xff,0x93,0x7e,0x22,0xd2,0x55,0x8f,0xf6,0xe3,0x46,0x38,0x81,0x40,0xc5,
+ 0xc1,0xf9,0x4e,0xaf,0x02,0xae,0xc0,0x15,0xf1,0xaa,0x49,0xf4,0x75,0xc4,0x6a,0x92,
+ 0xfb,0x81,0x69,0x08,0x02,0xd5,0x23,0xf5,0xa8,0x7d,0x76,0xc3,0x25,0x09,0xa7,0x75,
+ 0x98,0x7c,0x54,0x9f,0x71,0x73,0x17,0x27,0x4a,0x29,0xd7,0xe4,0x7f,0x8d,0xa1,0xda,
+ 0xaa,0xf2,0x37,0x0d,0xcb,0x8b,0x79,0xf6,0xae,0xe1,0xb8,0x4b,0xbc,0x97,0x25,0xf8,
+ 0x3f,0x05,0x63,0xf0,0x27,0x7b,0x82,0xff,0xac,0x25,0xe3,0x5f,0x75,0xd0,0xc2,0x0a,
+ 0xeb,0xe9,0x3e,0xe7,0x6c,0xc5,0xa4,0xf1,0xec,0x26,0x3a,0x1b,0xe7,0xff,0x0c,0x99,
+ 0x8c,0xe8,0x29,0xf9,0xef,0x76,0x94,0x3f,0x25,0xf1,0x1b,0x3c,0xe1,0xd5,0x26,0xed,
+ 0xe7,0xa7,0xec,0x99,0xd5,0xca,0x35,0xf3,0xad,0xfc,0xe7,0x30,0x53,0x0b,0x8d,0x1b,
+ 0x3c,0xc4,0xce,0x1a,0x15,0x3b,0xcf,0xc6,0x6d,0x95,0x50,0xf1,0x1d,0xbd,0xd1,0x9b,
+ 0x9d,0x28,0xd4,0x26,0x7b,0xb2,0x2d,0xfe,0x1f,0xfb,0xd2,0x0e,0x14,0x0b,0x3d,0x1b,
+ 0x63,0xf2,0x6a,0xe7,0x09,0xd5,0xd7,0x8b,0xeb,0x13,0x82,0x57,0x83,0xbe,0x33,0x8e,
+ 0x2e,0x93,0x98,0xe1,0xe5,0x8a,0xd8,0x82,0x7f,0xee,0xde,0x0d,0x97,0x95,0x85,0x46,
+ 0x5a,0xbf,0x78,0x12,0xae,0x86,0xaa,0x7a,0x1d,0x71,0xd1,0x24,0x42,0x1f,0xcf,0xdc,
+ 0x53,0xc0,0x13,0xbd,0xf1,0xc5,0xcf,0x37,0x5a,0xfc,0x3f,0x33,0xae,0xc0,0xdb,0x6b,
+ 0xab,0x56,0xed,0x3e,0x2a,0x66,0x73,0x36,0x14,0xc7,0x4b,0x9f,0xc0,0x25,0xb6,0x87,
+ 0xda,0x5f,0x10,0xab,0xa0,0x55,0x9d,0x1f,0x7f,0x34,0x35,0xfe,0xf5,0x11,0x1c,0x0c,
+ 0xa3,0x7d,0xda,0x94,0xad,0xb2,0x16,0xa3,0x7d,0xba,0xd8,0x4a,0xf2,0xed,0x97,0xb8,
+ 0x07,0x2c,0x4c,0x28,0xfb,0x99,0xe1,0xec,0xcb,0x9c,0x12,0xff,0x82,0x28,0xac,0xd6,
+ 0x68,0x7a,0x58,0x55,0xf7,0x6a,0xae,0x1b,0x64,0x89,0xf4,0xb0,0xc3,0x82,0xaa,0x50,
+ 0xc1,0xef,0xc2,0xcf,0x59,0x77,0x74,0xee,0xd4,0xf8,0xd7,0x41,0x5e,0xed,0x44,0xd0,
+ 0x56,0xb0,0x9f,0x81,0x53,0x97,0x3b,0xc9,0x1c,0xbe,0x8c,0x71,0x75,0x1b,0x9e,0xdf,
+ 0x5d,0x68,0xd8,0x66,0x4c,0x89,0x7f,0xc1,0x1b,0x01,0x5f,0x9d,0xbd,0xb5,0x71,0x0e,
+ 0x8f,0x0e,0xbb,0x1c,0x33,0xe5,0x3f,0xc0,0xa7,0xa2,0x37,0xd4,0xba,0x5d,0xb4,0xc3,
+ 0xb1,0xea,0x72,0xa3,0x38,0x26,0xa6,0xe2,0x9f,0xcb,0xd1,0x2a,0x90,0xcf,0x88,0xfb,
+ 0xe1,0x65,0x2e,0x96,0xf9,0x7e,0xfb,0x98,0xfe,0xb3,0x36,0x2f,0x8a,0xaf,0xf9,0x5d,
+ 0x58,0x38,0x05,0xff,0xc0,0x6e,0xee,0xdf,0x0e,0xa2,0x91,0xdb,0xc1,0xde,0x02,0xdf,
+ 0x72,0x7b,0xd3,0xcf,0xd4,0x6a,0xd4,0xef,0x4a,0xd6,0x93,0xdc,0xff,0x43,0x2a,0x78,
+ 0xa0,0xcd,0x8a,0x7f,0xdc,0x70,0x5b,0xaf,0x93,0xd3,0xb6,0x5f,0x56,0x37,0x71,0x43,
+ 0x7e,0x23,0xb9,0xe5,0xf6,0xb7,0x50,0x91,0xd1,0x1f,0x21,0x7e,0x7b,0x03,0xc8,0x4b,
+ 0x99,0x29,0xf8,0x67,0xc6,0x52,0xd8,0xc3,0xe6,0x68,0x54,0xf5,0xf7,0xa0,0xd8,0x59,
+ 0x3d,0x7c,0x97,0x9a,0x4d,0x51,0x83,0xaf,0xd2,0xb9,0x47,0xc8,0x60,0xe0,0x1e,0xb6,
+ 0x4d,0xc1,0x3f,0xf0,0x4b,0xe3,0x96,0x55,0xae,0x6f,0x91,0xf3,0x64,0x7d,0x43,0x71,
+ 0x3b,0xfd,0x3e,0xb9,0x4e,0x5b,0x1f,0x2b,0x5e,0x65,0x5b,0x3e,0xe7,0x06,0xe5,0xc7,
+ 0x3d,0xb3,0xe3,0x19,0x53,0xf3,0xbf,0x3e,0xc9,0xdb,0x77,0x3b,0x55,0x44,0x83,0xbd,
+ 0x50,0x58,0x09,0x45,0xb9,0x22,0xf8,0x1b,0xa3,0x0b,0xb6,0x6c,0x54,0x45,0x4a,0x0c,
+ 0xa5,0xb2,0x6f,0x4a,0xfe,0xd7,0x73,0xf0,0x09,0xdc,0x56,0x3b,0x8d,0x87,0x4d,0x3f,
+ 0x06,0xb3,0x10,0xe2,0x05,0x33,0x3e,0xf8,0xca,0xaf,0x78,0x44,0x55,0x5a,0x64,0xa4,
+ 0xc6,0xbf,0xd2,0x78,0x51,0x0e,0x5f,0xc8,0xae,0xcb,0x59,0xfc,0xfc,0x72,0xfe,0x6a,
+ 0x39,0x1f,0x40,0xa6,0x21,0x0e,0x29,0x23,0xc4,0xc7,0x13,0x39,0x53,0xfd,0x3f,0x5c,
+ 0x68,0xb8,0x3c,0x62,0x2e,0xac,0x37,0x78,0xf4,0x41,0x7c,0x98,0xac,0x17,0xe6,0xf2,
+ 0x44,0xe3,0x7e,0xd8,0xaf,0x17,0xf3,0x52,0x1b,0x56,0xfc,0xf3,0x04,0x1c,0x68,0xfa,
+ 0x87,0x90,0xed,0x61,0xbf,0x8f,0xe3,0x9f,0x90,0x7c,0xbf,0x2d,0x9b,0x67,0x84,0xa9,
+ 0xcd,0x75,0xe1,0x37,0x61,0x5f,0xac,0x98,0xbf,0x6f,0x8a,0xff,0x07,0xf6,0xf6,0xaf,
+ 0xee,0xb1,0x3d,0xe7,0xb7,0x35,0xa0,0x18,0x0f,0xca,0x33,0x6d,0x7f,0xaf,0xe1,0xf9,
+ 0xfa,0x1e,0x7d,0x82,0x1c,0xd7,0x62,0x3c,0x91,0x70,0x0a,0xfe,0x81,0xcf,0xb5,0xaa,
+ 0xf6,0xac,0x01,0xb1,0x9c,0x07,0xca,0xda,0x51,0x3e,0x97,0xc3,0x6b,0x68,0xd8,0x65,
+ 0x0e,0x8a,0x23,0xca,0x15,0xcd,0xac,0x27,0x36,0xc5,0xff,0x13,0xca,0xa2,0x99,0xe1,
+ 0x02,0xb3,0x30,0x4b,0xb6,0x23,0x2c,0x9e,0x65,0x23,0x62,0x45,0x9e,0xc3,0x64,0x44,
+ 0x87,0xfe,0x0c,0xfe,0x19,0x2f,0xfb,0x53,0x88,0x0b,0x6b,0x0e,0x66,0x4b,0xc7,0xb4,
+ 0x8a,0x60,0xd6,0xb6,0x82,0x42,0xee,0xff,0xd1,0x4a,0xa6,0xe0,0x1f,0x38,0xa8,0x3b,
+ 0xb5,0x96,0xe8,0x5d,0x85,0xf4,0x20,0x71,0xd6,0x72,0xb5,0x1b,0x6e,0x66,0x6a,0x90,
+ 0xf3,0x7f,0x42,0x97,0x13,0xfe,0x9c,0x54,0xfc,0x73,0x50,0x75,0x6a,0x4b,0xb8,0xb5,
+ 0x75,0x10,0x7f,0x9b,0x11,0x45,0xd0,0x6d,0xf2,0x55,0xf6,0x10,0x89,0x0f,0x42,0xb6,
+ 0xe8,0xd4,0xfa,0x3f,0x7c,0x59,0x72,0xfd,0x69,0xb0,0x47,0xc0,0x81,0x92,0xcd,0xf9,
+ 0x3f,0x21,0x8d,0xe6,0x7a,0xd3,0x78,0x05,0xaa,0x20,0x4d,0xc5,0x3f,0xa1,0xf1,0xb2,
+ 0x3f,0x05,0xbc,0xfe,0x4f,0x17,0x6b,0xe6,0xf5,0x7f,0xfa,0xa0,0x82,0x6d,0xd4,0xc7,
+ 0x13,0xb1,0x37,0xa6,0xe2,0x9f,0x01,0xb8,0x2c,0xfc,0x12,0xf1,0x4c,0xce,0x18,0xe5,
+ 0xf8,0x47,0xbc,0x2f,0xe7,0x33,0xf8,0x0c,0x16,0xf7,0x2f,0x3b,0xad,0x5d,0x80,0xcb,
+ 0xd5,0x95,0x53,0xf1,0x0f,0x0f,0x93,0x79,0xaa,0x1d,0x6d,0xe2,0x02,0xf2,0x8a,0xab,
+ 0x34,0x68,0xef,0x17,0xf7,0xe9,0x2f,0xe2,0x46,0xb2,0x9f,0x16,0x67,0xc3,0xbf,0xc3,
+ 0x7c,0x9e,0x3f,0x95,0xea,0xff,0xe9,0xe6,0xa4,0xb8,0xb5,0xd9,0x40,0x39,0x10,0xa2,
+ 0x4f,0xfa,0xe7,0xea,0x11,0x68,0x57,0xe8,0x3a,0x42,0xcd,0xfa,0x87,0xae,0xa9,0xf8,
+ 0xe7,0x20,0xb8,0xfc,0x72,0xf6,0xca,0x81,0xce,0xcd,0xc0,0xb3,0xbd,0x48,0x13,0x67,
+ 0x58,0x05,0x23,0xb9,0xa4,0x29,0xfa,0x53,0x70,0x69,0x54,0x49,0x8d,0x7f,0x29,0x07,
+ 0xa1,0x28,0x28,0xb7,0x55,0x0c,0xc0,0xe3,0x92,0x33,0x18,0x89,0x66,0x27,0xea,0xff,
+ 0xd0,0x2d,0xfc,0x0f,0x95,0x22,0x8d,0x4e,0xc5,0x3f,0x9f,0xb0,0x0a,0xcd,0xb1,0x8d,
+ 0x70,0x18,0xd3,0x55,0x8f,0xf8,0xb6,0x23,0x80,0x9f,0xb5,0x5e,0xfa,0xb1,0xf8,0xa4,
+ 0xf6,0x06,0x94,0x9b,0xf9,0xef,0x56,0xfc,0x03,0xa3,0x85,0xfb,0x35,0xc7,0xf5,0xe2,
+ 0x9c,0xd0,0x59,0xa1,0x72,0xd5,0xbc,0x9f,0x88,0xbd,0x64,0x54,0xa8,0x0c,0xcc,0xcb,
+ 0x93,0x1f,0x80,0xd1,0xd6,0xfd,0xfe,0xa9,0xfe,0x1f,0xbe,0xfe,0xca,0x52,0x26,0xef,
+ 0x00,0xb3,0xec,0x00,0xe2,0x97,0xda,0x11,0xa5,0x2b,0xdb,0xde,0x94,0x93,0x4f,0xc6,
+ 0xf9,0xe7,0x29,0xf1,0x2f,0x38,0xc2,0xd9,0x3e,0x3a,0xb9,0x01,0x9e,0x61,0x05,0x51,
+ 0x1a,0x0a,0x2f,0x82,0x23,0xb0,0x30,0x9a,0x39,0xb0,0xe1,0x0b,0xea,0xe7,0x20,0x32,
+ 0x97,0x9e,0x9a,0xff,0x05,0x7b,0x07,0x18,0x9e,0x47,0xba,0x09,0xad,0xad,0xc2,0x87,
+ 0x32,0xca,0xd7,0xad,0x55,0xf7,0x30,0xb5,0xdf,0x96,0x17,0x76,0x34,0x35,0x6a,0xc0,
+ 0xa8,0xc7,0x99,0x1a,0xff,0xda,0xaf,0x15,0xf0,0xfa,0x3f,0x79,0xea,0x0e,0x3a,0x3b,
+ 0x78,0x3d,0x4f,0x83,0xda,0x07,0xdf,0xe0,0xc0,0x60,0xa6,0xb2,0x1f,0xf2,0x8d,0xba,
+ 0xa9,0xf9,0x5f,0x9c,0xff,0xd3,0x7a,0x91,0x3c,0x81,0xd6,0xd9,0xc2,0xf8,0x5c,0xb3,
+ 0xec,0x4f,0xc3,0xfc,0x78,0xc9,0x99,0x82,0x1b,0xc8,0x4b,0x6c,0xb3,0x3e,0x35,0xff,
+ 0x0b,0x86,0x39,0xff,0x27,0xf6,0xfb,0x41,0x3c,0x38,0x8b,0x78,0x76,0xea,0x30,0xcf,
+ 0x37,0xd1,0x50,0x9e,0xbc,0xa7,0x5f,0xe4,0x12,0x3b,0x05,0xff,0x64,0x5e,0x81,0xe7,
+ 0xf5,0xaa,0x77,0xed,0x17,0x1b,0x3f,0xa7,0xbf,0x63,0xa5,0xab,0xec,0x23,0x37,0x96,
+ 0xd1,0x57,0xd9,0x7c,0xdd,0xcd,0x03,0x61,0xc6,0xe6,0x52,0xdd,0x3d,0x62,0x8d,0x7f,
+ 0x09,0xdb,0x61,0xbf,0x31,0x8f,0x47,0xdb,0xc7,0xd8,0x6f,0x60,0xe7,0x3d,0x68,0x7f,
+ 0x4d,0x57,0xd3,0x61,0x2e,0xb3,0xad,0x20,0x33,0xb5,0x26,0xb6,0x23,0x62,0x4b,0xc5,
+ 0x3f,0x28,0xaf,0x68,0x31,0x67,0x07,0x9d,0x56,0xd6,0xc3,0x6c,0xad,0x9c,0xd3,0x7e,
+ 0x70,0xd0,0x8b,0xf2,0xaa,0x1e,0x5a,0x3d,0xb3,0x1b,0xe8,0x14,0xfc,0x23,0x75,0x55,
+ 0xbb,0x8d,0xf2,0x05,0x47,0x4f,0xa9,0x5b,0x61,0x4e,0x34,0xaf,0x8c,0x7c,0xdb,0x34,
+ 0x6c,0x6f,0x50,0xfd,0xb7,0xe3,0x77,0x29,0x04,0xdb,0xd4,0xf8,0xd7,0x25,0xb6,0xf8,
+ 0x35,0x7a,0x81,0xbc,0xe2,0x79,0x01,0xca,0x0a,0x29,0x88,0x7f,0x0f,0x2f,0x40,0xe1,
+ 0x79,0xf7,0x13,0xf2,0x77,0xe0,0xa8,0x51,0xc6,0xdc,0xd7,0xc4,0xbf,0x42,0x59,0x7d,
+ 0xb8,0x08,0x83,0xd2,0x25,0x5e,0x98,0xeb,0xd9,0x82,0x1d,0x0c,0x07,0x67,0x36,0xb5,
+ 0x8b,0xbb,0x43,0x17,0xff,0x0c,0xfe,0x81,0xab,0x7a,0xa9,0xd1,0x3a,0x2c,0x3f,0x07,
+ 0x27,0xa2,0xa5,0x2c,0xb3,0x41,0x74,0x0b,0xaf,0x36,0x2c,0x1a,0x44,0xa0,0x3e,0x02,
+ 0xa7,0xa0,0x94,0xb5,0xa6,0xf8,0x7f,0xa4,0xd5,0x10,0x3b,0xca,0xfd,0x3f,0x7e,0x97,
+ 0xd2,0x22,0xa0,0x5a,0xef,0xb2,0x15,0xc0,0x5b,0xf7,0x3a,0xe3,0x14,0x77,0x78,0xfa,
+ 0x86,0x06,0x55,0x9b,0x17,0x9b,0x12,0xff,0x3a,0x64,0xa6,0x89,0xd9,0x3a,0xe0,0xa7,
+ 0xb0,0xd2,0x49,0x63,0x73,0xe6,0x48,0x2d,0xf6,0x6f,0x1f,0xa5,0xdb,0xc2,0xaf,0xd0,
+ 0x0d,0x86,0xb3,0x61,0x0a,0xff,0xc7,0x0e,0x5d,0xea,0x78,0x5a,0x19,0xca,0x67,0xc1,
+ 0xc5,0xc3,0x1c,0x26,0x3f,0x13,0x10,0x58,0x86,0xd5,0x10,0xfb,0x82,0xc7,0x9a,0xff,
+ 0x95,0xb6,0xda,0x04,0x39,0xae,0xe1,0x9c,0x0e,0xf2,0x16,0x74,0x69,0x33,0x79,0xa1,
+ 0xb9,0x16,0x7c,0x4d,0x37,0xcb,0x89,0x93,0xe3,0xf9,0x5e,0xbe,0x3e,0x16,0xfc,0x33,
+ 0x63,0xcc,0xcc,0xdf,0xe1,0xfc,0x0d,0x0e,0x7b,0x40,0x1e,0x16,0x86,0xf3,0xfe,0xa4,
+ 0x56,0x71,0xe2,0xd3,0x30,0x5c,0x51,0x16,0x43,0x6a,0xfd,0x9f,0xaf,0x5c,0x51,0x2e,
+ 0x85,0x4a,0xcf,0x6e,0x32,0xc4,0x7b,0xe1,0x52,0x83,0x57,0xcd,0xec,0x13,0x2b,0x95,
+ 0x56,0xe8,0x8a,0xcf,0x1c,0x2d,0xb8,0x4e,0xbb,0x9c,0x5d,0x1a,0xb7,0x8f,0x88,0xb1,
+ 0x24,0xfe,0x81,0x8f,0xe0,0xf9,0x5a,0x12,0x42,0x23,0xcb,0x29,0xb5,0xa8,0x65,0x21,
+ 0x79,0x1b,0x79,0x5e,0x3b,0x1e,0x72,0xc6,0xcd,0x0a,0x90,0x87,0x83,0x2b,0xe3,0xb4,
+ 0x5b,0x4c,0xd6,0x7f,0x36,0xcf,0x97,0x47,0x35,0x96,0x84,0xb7,0xa8,0xf4,0xa7,0x2e,
+ 0x17,0xb7,0xce,0xec,0x10,0xc9,0xc3,0xf7,0xf5,0x66,0x4b,0x6c,0xb3,0xaa,0xf2,0xa5,
+ 0xe8,0x4a,0xc1,0x3f,0x87,0x21,0xdc,0x2f,0xb3,0x97,0x9c,0x6a,0x0b,0xcc,0x01,0x79,
+ 0x1d,0x31,0x2b,0x42,0x1b,0x75,0x31,0x52,0x02,0x87,0x99,0x19,0x58,0x4c,0xd6,0x7f,
+ 0x06,0xc9,0x2d,0x1d,0x06,0xef,0x30,0x2a,0x1d,0x51,0xf9,0x35,0x54,0xa8,0x99,0x92,
+ 0xe8,0x46,0xb3,0xc8,0x73,0x9e,0xc6,0xa6,0x95,0xb0,0x4b,0xac,0xdd,0x70,0xc7,0x84,
+ 0xe8,0xe4,0xf3,0xef,0xd0,0x78,0xfe,0x7b,0xd5,0x17,0x1d,0xc7,0xe4,0x98,0xeb,0x77,
+ 0x46,0xd5,0xf0,0xa6,0x91,0xc6,0xb7,0x6d,0x1f,0x6d,0xfe,0xe1,0x7b,0x9c,0xff,0xa3,
+ 0x8c,0xfb,0x7f,0x86,0x2c,0xfa,0x77,0x37,0x47,0xd7,0x31,0x07,0xe7,0x1f,0xbe,0x25,
+ 0x95,0x69,0x8e,0xa6,0x9a,0x8f,0x38,0xff,0xe1,0xa8,0x3d,0x26,0x7e,0xc8,0x4d,0x63,
+ 0xbe,0xdf,0x92,0xfc,0xe7,0x3e,0xc9,0x0d,0xcf,0x73,0x23,0x0b,0x88,0xca,0x7e,0x16,
+ 0x71,0xc6,0xe5,0xce,0xec,0x31,0xa5,0x1d,0xd5,0x6e,0x66,0xcc,0x3f,0x94,0xbb,0x81,
+ 0xa9,0xf1,0x14,0xff,0x8f,0x91,0x6b,0x87,0xc3,0x68,0x86,0xb7,0xa8,0x44,0xe0,0x34,
+ 0x8c,0x8e,0xbf,0x2b,0xc6,0x6d,0xd0,0x0e,0x6e,0x5c,0xcf,0xec,0x93,0xd9,0xcd,0x3b,
+ 0x70,0xbe,0x07,0xf5,0xfb,0xc4,0x4f,0x08,0x66,0xc1,0x81,0x1d,0xc5,0x5a,0xcb,0x08,
+ 0x79,0x48,0x7b,0x3a,0xd6,0x50,0x67,0xd2,0x76,0x9f,0x8e,0x16,0x7f,0xd0,0xbc,0xc6,
+ 0x79,0x45,0x49,0x67,0xf9,0xef,0xe2,0x95,0xb1,0xc9,0x7a,0xe0,0x81,0xbc,0x2c,0xed,
+ 0xd3,0x86,0xca,0xda,0x65,0x20,0xdb,0x58,0x4b,0x7b,0xee,0xee,0xff,0xe6,0x11,0x4f,
+ 0xda,0xdf,0xf5,0x57,0x0e,0xda,0x17,0xe5,0x9f,0x04,0xc4,0x69,0x9c,0xf8,0x6d,0xc1,
+ 0x3f,0xf6,0xe7,0xb4,0xab,0x1a,0x2e,0x82,0x26,0x3e,0xc7,0x3e,0x06,0x9f,0xe8,0xf8,
+ 0xa4,0xf1,0x6d,0xb8,0xc2,0x89,0xd3,0xc3,0xe2,0xc3,0x9a,0x19,0x3a,0xe4,0x78,0x72,
+ 0xe2,0x7d,0x39,0xbf,0xf4,0x92,0x5a,0x19,0xb7,0xc7,0x45,0x40,0xd8,0x53,0xb2,0x65,
+ 0x53,0x58,0xfc,0x30,0x74,0x11,0x3c,0xb8,0xec,0x39,0x89,0xc4,0x4c,0x5c,0xa8,0xa3,
+ 0xc9,0xfa,0x27,0x1c,0xff,0xd4,0x16,0x73,0xb6,0xb3,0x82,0x78,0x7b,0xbe,0xc1,0xcd,
+ 0x28,0x76,0x00,0x76,0x70,0xd8,0xf3,0x36,0x3d,0x07,0x1c,0xff,0xac,0x4c,0xf2,0x7f,
+ 0x80,0xe3,0x1f,0xbd,0x38,0x4e,0x29,0xb9,0x41,0x58,0xcf,0xbe,0x35,0x28,0xff,0x2d,
+ 0xbe,0x6f,0xd7,0xba,0x9d,0x3c,0x11,0x0c,0xf1,0x0f,0xc3,0x5f,0xad,0xf1,0x6f,0x4b,
+ 0xc5,0x3f,0xe0,0xee,0x8f,0x30,0x42,0x23,0x5b,0x25,0xb5,0x5f,0xbe,0x0d,0xd7,0xb3,
+ 0x0b,0xd4,0xce,0x1b,0xb8,0x19,0xab,0x07,0x57,0x73,0xfc,0xf3,0x66,0x12,0xff,0x48,
+ 0x9d,0xdc,0xe9,0xd7,0x84,0xcf,0x5f,0x4e,0x8f,0xef,0xa8,0xe8,0x76,0xe8,0x39,0x83,
+ 0xf8,0xbe,0xf3,0xb7,0x21,0xe2,0x7d,0x63,0xd5,0x95,0xa6,0x4a,0x86,0x83,0x43,0xc9,
+ 0xfb,0x9b,0xfa,0xc8,0xa7,0x38,0xd8,0x17,0x78,0x1a,0x0e,0x77,0x04,0xe5,0x18,0xe3,
+ 0x57,0xa6,0xc5,0x73,0x47,0x68,0x16,0xcc,0x63,0x05,0xaf,0x25,0xd7,0x27,0x58,0xa8,
+ 0x8c,0x42,0x36,0x2f,0xf3,0x3b,0x47,0x38,0xa6,0x7b,0x6b,0x97,0x6d,0x2b,0x18,0x80,
+ 0xf7,0xa1,0x6c,0x95,0x99,0xdf,0xd4,0x03,0xe3,0xf5,0x0f,0x27,0xe6,0xb3,0x44,0x3d,
+ 0xc3,0xfa,0x96,0x28,0x99,0x16,0xdd,0xc1,0x8a,0xb8,0xf5,0xc4,0x15,0xab,0x73,0x4d,
+ 0xa6,0x99,0x88,0xad,0xb5,0x27,0xf0,0xcf,0xc4,0x4f,0x9e,0xd4,0x01,0x7b,0xa0,0xe8,
+ 0x3e,0x8e,0x7f,0xb4,0x66,0x84,0xd9,0x4b,0x36,0x93,0x73,0xb8,0x91,0xe6,0x68,0x89,
+ 0xc4,0xed,0x66,0x13,0x11,0x59,0xf0,0x4f,0xae,0x04,0x7b,0x34,0x33,0xdb,0xab,0x90,
+ 0xee,0xac,0xa6,0x5a,0x8b,0x92,0xdd,0x2b,0x6c,0xd6,0x70,0x5a,0xae,0xff,0x3d,0x1e,
+ 0x01,0xd1,0xe6,0xa6,0xe0,0x1f,0xca,0xf1,0x4f,0x05,0x1e,0x5b,0xc4,0x3f,0x94,0x98,
+ 0xd1,0x96,0xb8,0xd4,0x07,0xfb,0xc1,0x94,0x3f,0x89,0x8a,0x34,0x05,0x1f,0x4d,0x9b,
+ 0x90,0x3f,0xdd,0xb9,0x88,0xf7,0x6a,0xab,0x34,0xc7,0x85,0x02,0x5e,0x08,0x88,0x7b,
+ 0x33,0x84,0xf7,0xe0,0xb7,0x7e,0xbc,0x12,0x25,0x63,0xc0,0xfd,0x3f,0x59,0x51,0xf1,
+ 0xa3,0xc9,0xfa,0xab,0xe5,0x88,0x7f,0x46,0x5d,0xa5,0x46,0x56,0x9b,0xbc,0x00,0xde,
+ 0x13,0x7c,0xd5,0xf6,0x68,0xce,0xf7,0xd4,0x63,0xb4,0x4a,0xb3,0x6f,0x16,0x07,0xb4,
+ 0x57,0x5c,0xbc,0xfe,0xa1,0xf8,0xd1,0xe4,0xfe,0xc9,0x83,0x38,0x2d,0xcf,0x47,0xd8,
+ 0xb3,0x0e,0x9f,0x27,0xe2,0xca,0x62,0x36,0x96,0x1d,0x82,0x33,0x2a,0xe7,0x23,0x89,
+ 0x71,0x5b,0xc4,0xc9,0xeb,0x1f,0xe2,0xfb,0x4e,0x7c,0x5f,0x0d,0x9a,0x60,0x8f,0x4b,
+ 0xe5,0xf5,0x9f,0x6b,0xa5,0x1d,0xa4,0x48,0x8b,0xf0,0xfa,0xcf,0x0d,0xb4,0x44,0x63,
+ 0xf8,0xe2,0xac,0xc1,0xe5,0xe6,0xf8,0x27,0x59,0xaf,0x32,0x2f,0xb7,0x83,0xc3,0xc8,
+ 0x00,0x8d,0xde,0x30,0xdb,0x0c,0x44,0xda,0xa2,0x6c,0x35,0x02,0xa1,0xa2,0xa0,0x10,
+ 0xc5,0x3f,0x34,0xeb,0x2f,0x71,0xfc,0x33,0xb1,0x3e,0xbc,0xfe,0xe1,0x41,0xe8,0x5a,
+ 0x93,0x85,0xbf,0x55,0xde,0x0f,0x3f,0x8c,0xbf,0x15,0x57,0xc1,0xb1,0x90,0xbb,0x9e,
+ 0x46,0x6f,0xc1,0xf5,0x37,0x78,0xfd,0x43,0xc4,0x03,0x13,0xf7,0x1f,0x54,0x3a,0x10,
+ 0x06,0xe3,0xb2,0xe4,0x8a,0x7f,0xa0,0xa3,0x01,0xb3,0x10,0x22,0xcf,0x7f,0xf7,0xd5,
+ 0x39,0xa2,0xd3,0x3a,0x12,0x11,0xc3,0x28,0xe2,0xed,0x89,0xf9,0x45,0xe6,0x7e,0x2b,
+ 0xe1,0xcb,0x1e,0x4a,0x54,0x97,0x6a,0x12,0xe3,0xea,0x78,0x21,0xa0,0x38,0xf4,0xa9,
+ 0x53,0xf0,0x0f,0x4d,0xe3,0xd5,0x0e,0x8b,0x9b,0x96,0xe8,0x35,0x87,0x8c,0x23,0xd5,
+ 0xdc,0xed,0xa3,0x8d,0x48,0x1b,0xe0,0xf7,0xd1,0x16,0x9d,0x0c,0x2a,0x1b,0xf1,0x20,
+ 0xb8,0x74,0x31,0x3c,0xb9,0x7f,0x68,0xda,0x52,0x05,0xcf,0x4b,0x1b,0x0a,0x19,0x1b,
+ 0xc4,0x58,0xe1,0xbb,0x72,0x39,0x4f,0x93,0x14,0xd4,0x31,0xb3,0x5e,0x4d,0x34,0xa8,
+ 0x26,0xf8,0x99,0x13,0xf3,0x79,0xfd,0xc3,0x03,0x85,0xc5,0x70,0xe3,0xa7,0x78,0xe8,
+ 0xf6,0x19,0xf9,0xfd,0x72,0x7d,0xf8,0xb7,0xb4,0xb1,0x3d,0x9f,0xbb,0x41,0xde,0x16,
+ 0xd7,0x31,0xce,0xdf,0x4b,0xef,0x4b,0xe2,0xb7,0x3c,0x44,0x3b,0x3b,0xfe,0x79,0x87,
+ 0xe3,0x07,0x68,0x5f,0x5f,0x60,0xb7,0xbe,0xeb,0xf8,0x1b,0xf1,0x54,0xc6,0xcb,0x46,
+ 0x7e,0x3c,0xf3,0x91,0xc6,0x2b,0xda,0xdb,0x6c,0x4f,0x88,0xae,0x11,0x8f,0xa7,0x4f,
+ 0x3e,0x4f,0x26,0xca,0xdb,0x2f,0xf9,0x1a,0x1c,0xe5,0x7f,0x35,0xa8,0xf8,0xe0,0x08,
+ 0x9a,0xf9,0x5c,0x8c,0xb8,0x7c,0x2c,0xb3,0x2b,0x67,0x75,0xef,0x78,0xe2,0x6d,0x78,
+ 0xd2,0xff,0x1c,0x92,0x8e,0xc0,0x55,0x63,0x7e,0x87,0xb4,0x46,0xac,0xf0,0x0f,0xb2,
+ 0x45,0x21,0xc7,0x88,0x78,0x91,0x71,0xb7,0x4f,0xfa,0x88,0xf8,0x0e,0xbc,0xcd,0x16,
+ 0x73,0xfd,0x75,0x26,0xc9,0x37,0x86,0x56,0x38,0xa0,0xec,0x68,0xcb,0x7c,0x50,0x0c,
+ 0x68,0xad,0x2c,0x7f,0x75,0xcb,0x83,0x68,0x2d,0x1e,0x40,0x33,0x0a,0x5f,0xf3,0x6d,
+ 0xf6,0x52,0xa8,0xd8,0xb0,0xaf,0xc9,0xfe,0x20,0x79,0x1e,0x11,0xff,0xec,0xe5,0x45,
+ 0xb3,0x87,0x49,0xb9,0xf4,0x24,0xcc,0xed,0x97,0x83,0xe4,0x0c,0xca,0xab,0xe2,0x1e,
+ 0x94,0x57,0x63,0x52,0x87,0xfd,0x3b,0xf8,0xbe,0xfe,0x5e,0x6d,0x62,0xbe,0x96,0xdb,
+ 0xca,0x9d,0x18,0x2c,0xc3,0x43,0x02,0xb9,0x0d,0xd3,0x55,0x43,0xae,0xc4,0x43,0x72,
+ 0xf8,0x3e,0x37,0x5f,0xc6,0x93,0xa8,0x7e,0xec,0x46,0x86,0xc7,0xff,0x9a,0x45,0x3f,
+ 0xee,0x46,0x7d,0xe4,0x35,0x66,0x0e,0x8b,0x9c,0x12,0x52,0x81,0xda,0xa1,0x71,0x00,
+ 0xae,0x86,0x7d,0x75,0x59,0xc3,0xe2,0x3b,0xec,0x03,0x7c,0x5f,0xd4,0xef,0xa7,0x92,
+ 0xf5,0xa6,0xa6,0x9b,0xd9,0x70,0x6d,0x8e,0x58,0xe3,0x60,0x04,0xe5,0x4f,0xad,0xa3,
+ 0x83,0xbb,0x7d,0x54,0x9f,0xc6,0x0b,0xaf,0xc1,0x4f,0x6a,0x79,0x69,0xc4,0x9a,0x41,
+ 0x29,0x89,0x7f,0x4c,0x7d,0xc7,0xeb,0x4b,0x8f,0xf0,0x40,0xd8,0x31,0xc7,0xf9,0x46,
+ 0x5e,0xd8,0x6d,0xa1,0x96,0x39,0x7c,0x63,0x25,0x9c,0xb2,0x55,0xf1,0xf8,0x57,0x7c,
+ 0x12,0xff,0xf4,0x20,0xfe,0x39,0x0c,0x6e,0xdd,0x16,0x23,0xaf,0x12,0x7d,0x03,0x1a,
+ 0x02,0x3a,0xf9,0x08,0xaf,0x2c,0x58,0xc3,0xf5,0x3b,0x69,0x31,0xe6,0x70,0x45,0x6f,
+ 0xc1,0x3f,0x92,0x99,0x1d,0xcf,0x2f,0xfe,0x11,0xb6,0x31,0x67,0xa3,0x1c,0x0d,0x7f,
+ 0x04,0x3f,0x83,0x39,0xa1,0x0c,0x4f,0xb6,0x5b,0x69,0x61,0x25,0x01,0x13,0xff,0x4c,
+ 0xc8,0x07,0x0a,0x76,0x6d,0xef,0x74,0xd3,0x08,0xed,0x43,0x30,0xda,0x09,0x37,0x02,
+ 0xcf,0x77,0x2e,0x2c,0xbc,0x2b,0x80,0x88,0x48,0x68,0x84,0x55,0x86,0xcb,0xeb,0x4f,
+ 0xd6,0x3f,0x84,0xbc,0xef,0xf0,0x6c,0x7d,0x66,0x8f,0x91,0x41,0xed,0xcc,0x97,0xbc,
+ 0x6d,0x78,0x3a,0x86,0xa4,0x8f,0x49,0x59,0xf0,0xee,0xcf,0x0a,0x2a,0x13,0xf5,0xd3,
+ 0x10,0xef,0x25,0xeb,0x1f,0x66,0x8e,0x49,0x57,0x55,0xd3,0x6c,0x3f,0x03,0x63,0x5e,
+ 0x14,0xcb,0x86,0x38,0x26,0x5d,0xd2,0x2a,0xef,0x9a,0xc7,0x11,0xd1,0x65,0xae,0xdf,
+ 0xf7,0x88,0x83,0x77,0x24,0xfd,0x3f,0x47,0xe0,0x0d,0x75,0xb1,0x6a,0x3f,0xca,0x03,
+ 0x2f,0x46,0xa9,0xea,0x38,0x9a,0x53,0x59,0x3b,0x96,0x7f,0xa3,0xdd,0xde,0x87,0x78,
+ 0xe9,0xf2,0x96,0x85,0x67,0x1d,0x29,0xfe,0x1f,0x6a,0xfa,0x7f,0x54,0xfa,0x2f,0xce,
+ 0x79,0xdc,0xda,0xd2,0xe5,0x46,0xff,0x62,0x56,0xee,0x71,0x2e,0xa5,0x11,0x12,0x37,
+ 0xd0,0x14,0xed,0xcb,0xe8,0x26,0xc3,0x93,0xf9,0x5f,0x54,0x3a,0x09,0x7b,0x14,0xde,
+ 0xe4,0xc2,0x6b,0x0f,0x74,0xe6,0xbb,0x42,0x4b,0x94,0x70,0x26,0xdb,0x43,0xeb,0xf0,
+ 0x64,0xa7,0xf7,0xaa,0x07,0x61,0xd5,0x51,0x3c,0x68,0xe7,0x85,0x89,0xef,0x6b,0x08,
+ 0xbb,0xe1,0xa0,0xf6,0xc0,0x8a,0xce,0x6d,0x88,0xa6,0x3a,0x59,0x51,0xb5,0x1c,0xf1,
+ 0xba,0xe1,0x20,0x5b,0xa9,0xda,0xa2,0xe9,0xef,0x66,0x1c,0x4e,0x14,0xd6,0x1e,0x9e,
+ 0xc4,0x4b,0x30,0x63,0x08,0xde,0x8a,0x96,0xb8,0xec,0x54,0xb0,0x4b,0x71,0x76,0x08,
+ 0x1c,0x1b,0x38,0x51,0xb9,0xaf,0x62,0x7e,0x96,0x3e,0xed,0xf7,0xf0,0xfd,0xb6,0x32,
+ 0x1e,0x3f,0x35,0xac,0xf9,0x5f,0xc2,0x0f,0x79,0x58,0x90,0xa7,0x35,0xbd,0x03,0x7f,
+ 0xc5,0x70,0xdb,0x8c,0xd9,0x47,0x85,0xc5,0x70,0xf7,0x27,0x39,0x71,0x3a,0x46,0xaa,
+ 0x8e,0x73,0x7c,0x98,0x12,0xff,0xba,0xa4,0xf9,0x94,0xa5,0x6d,0xe2,0x10,0xeb,0x0b,
+ 0x96,0xb5,0xa2,0xa1,0xea,0x86,0x0f,0xc0,0x1b,0x75,0xe8,0xe2,0xfb,0xe4,0x18,0x1a,
+ 0x13,0x78,0xff,0x4f,0xac,0xfe,0x1f,0xe1,0x12,0x7e,0x63,0xfa,0x2f,0xfe,0xcb,0x70,
+ 0xa6,0xdf,0x19,0x73,0xfc,0x2b,0xa9,0xaa,0x45,0xfb,0x51,0x5d,0x12,0x4b,0xff,0xbd,
+ 0x11,0x56,0xdb,0x5f,0xe3,0xf1,0x3b,0x4b,0xff,0x0b,0xbb,0x14,0x63,0x6e,0x4a,0xd5,
+ 0xec,0x57,0x01,0x88,0xee,0xc1,0xfd,0x96,0x05,0xcf,0x40,0x61,0x64,0x49,0x3a,0xe9,
+ 0x53,0xf6,0x34,0xa8,0xc3,0x22,0xc7,0x3f,0x13,0xdf,0x17,0xf1,0x8f,0xd2,0x61,0x14,
+ 0x17,0xd2,0xbf,0x21,0xef,0x68,0xdb,0xa3,0xf9,0xfa,0x92,0x3b,0x71,0xfe,0x5a,0x36,
+ 0xfb,0x9b,0x72,0x80,0xbc,0x0e,0xcf,0xb6,0x9b,0x15,0x02,0x93,0xf9,0x5f,0x81,0x3c,
+ 0xc4,0xdb,0x9d,0x95,0x9a,0xfd,0xd6,0xc6,0x93,0xa1,0x1e,0xed,0x7b,0x9a,0x43,0x90,
+ 0xed,0x6a,0x1c,0x16,0xbc,0xe8,0xf0,0x90,0x57,0xb4,0xd1,0x98,0x27,0x81,0x7f,0x26,
+ 0xe6,0x6b,0x79,0xcf,0x21,0x48,0xae,0xd2,0xe6,0xfd,0x4a,0x7c,0x3b,0xf4,0x99,0xf4,
+ 0x88,0xff,0x54,0x4f,0xce,0x98,0x74,0x19,0x16,0xd5,0x3a,0x86,0xd9,0x05,0x78,0x45,
+ 0x59,0xd4,0xcb,0xeb,0xff,0x4c,0xe2,0x43,0x8a,0xeb,0x3f,0x2a,0xa0,0x10,0xee,0x96,
+ 0x4b,0xe0,0xa8,0x54,0xe6,0x77,0x0c,0x0b,0x6e,0x5c,0xd8,0xaa,0x6a,0x7b,0x13,0x8f,
+ 0x80,0x98,0xfe,0x6a,0xe1,0xa8,0x85,0xff,0xbc,0x1d,0xf5,0x75,0x3e,0x0b,0xd4,0x93,
+ 0x59,0x84,0xb3,0x7d,0xe4,0x7a,0xff,0x4d,0xda,0x5a,0x82,0x88,0xe8,0xcb,0x68,0x61,
+ 0xed,0x1b,0x8f,0x7f,0x4d,0xda,0x77,0x2a,0xc7,0x3f,0xac,0x20,0xe4,0x2a,0x27,0x59,
+ 0xc2,0xa3,0xec,0xc9,0xc1,0x96,0xbc,0xec,0xac,0x86,0x1f,0xb3,0xd5,0xc3,0xb4,0x0e,
+ 0x81,0xd0,0xb3,0x88,0x7f,0x96,0xac,0x49,0x4f,0xca,0xb7,0x3a,0x8e,0x7f,0x0c,0xd5,
+ 0x88,0x54,0x1e,0xb5,0x53,0x34,0xf3,0x8f,0xca,0x6d,0x7e,0x77,0x5a,0x83,0xf1,0x40,
+ 0x28,0xb0,0x00,0x81,0x41,0xb7,0x56,0xc2,0x19,0xf2,0x6f,0x26,0xf3,0xbf,0x72,0x3b,
+ 0xe1,0xca,0xb6,0xd2,0x76,0xfb,0x47,0x39,0x2e,0x38,0x15,0x29,0x63,0x0e,0xce,0xff,
+ 0x79,0x47,0xaf,0x8a,0xba,0x75,0x71,0x94,0x5d,0x99,0xee,0xd3,0x37,0x71,0xff,0xcf,
+ 0xc4,0xf3,0x07,0x78,0x3e,0x4e,0x22,0xe8,0x10,0x97,0x38,0xdb,0x19,0x6d,0xe4,0x38,
+ 0x8c,0xd8,0x7c,0x39,0x0e,0xd6,0x78,0xb6,0x70,0x84,0x67,0x08,0xa6,0xe6,0x7f,0xa1,
+ 0xbe,0x63,0xde,0x55,0xee,0xcd,0x39,0x03,0x74,0x34,0x5a,0x66,0xd6,0x7f,0xe6,0xb0,
+ 0x27,0x98,0xc8,0xef,0x16,0xbc,0xf5,0xad,0x53,0xf0,0x0f,0x3d,0xe8,0x54,0x43,0xb4,
+ 0x8d,0x0c,0x44,0x0f,0xf2,0x40,0xcc,0x16,0xdb,0x9c,0xf0,0x31,0x70,0x2e,0xcf,0x8b,
+ 0xf1,0xfa,0x3f,0x6a,0x51,0xf0,0xcf,0xfa,0x7f,0x5c,0x66,0x9a,0x3c,0xbc,0x6b,0xf2,
+ 0x7f,0x34,0x33,0xc3,0x6b,0x0b,0x19,0xd0,0x33,0x12,0xfe,0xa2,0x53,0x93,0xfa,0x8b,
+ 0xfb,0x7f,0xf6,0x24,0x92,0xdc,0x7b,0x11,0x08,0x85,0x34,0xd3,0x11,0xc4,0x13,0xc1,
+ 0x28,0x4f,0x0c,0x6f,0xd0,0x5c,0xf5,0x2e,0x85,0x1c,0x4f,0xe6,0x7f,0xdd,0x14,0x32,
+ 0xdd,0x3e,0x11,0x56,0x13,0x1f,0x77,0x04,0x99,0xf9,0x5f,0x5d,0xdc,0xcd,0x12,0x9f,
+ 0xcc,0x7f,0x9f,0xc4,0xcf,0xdd,0xdc,0xff,0xa3,0x2d,0xd6,0x96,0x9d,0xce,0x79,0x0f,
+ 0xa5,0x0d,0x5a,0xa3,0xa7,0xc5,0xf7,0xe0,0xc3,0x6a,0x5e,0xf6,0xa7,0xe6,0x32,0x6e,
+ 0xa4,0x2a,0xd3,0xff,0x23,0x58,0xf1,0xcf,0x65,0x17,0x4f,0xf2,0x6a,0xbc,0xe0,0xb9,
+ 0x0c,0x65,0x46,0xfa,0x69,0xf1,0x56,0x78,0xbf,0xba,0x74,0x39,0x8a,0xb5,0x0b,0xec,
+ 0xf2,0x1d,0xa5,0xda,0xb2,0x28,0x39,0x67,0xc1,0x3f,0x3a,0x74,0xfb,0x9d,0x10,0x69,
+ 0x22,0x67,0x81,0xd7,0xff,0xa1,0x3c,0x30,0xd7,0x57,0xeb,0x84,0x2c,0x46,0xce,0xea,
+ 0xdd,0x50,0x86,0x50,0xcd,0x7f,0x6a,0x52,0xfe,0x2c,0x95,0x10,0xff,0x40,0xa1,0x46,
+ 0xf3,0x48,0xaf,0x74,0x90,0xce,0xe1,0x61,0xbe,0x34,0xfb,0x8e,0x90,0x6b,0x39,0xbf,
+ 0x12,0x3c,0xa8,0xd6,0xf1,0xf8,0xd7,0x54,0xfc,0x83,0xe8,0x91,0x57,0x2b,0xdd,0x45,
+ 0x39,0x7a,0x5c,0x57,0x88,0x03,0xa2,0x7d,0x01,0xf1,0x24,0x3b,0xc8,0xe6,0x04,0xcc,
+ 0x78,0xe2,0xc4,0x7c,0x5d,0xea,0x50,0x3e,0x81,0x05,0x01,0x7b,0x1b,0x8f,0x66,0x1a,
+ 0x0b,0xea,0x1d,0xdb,0xc5,0x42,0xfa,0xbe,0xe1,0x7d,0xc8,0xbe,0xad,0x66,0x00,0x1e,
+ 0x84,0x45,0xa9,0xfc,0x1f,0x8e,0x7f,0x0e,0xf6,0x1c,0xaa,0xd9,0x14,0x75,0xae,0x82,
+ 0x51,0xd5,0x57,0x9b,0x95,0x2d,0xf6,0x42,0x8f,0x71,0xa4,0xde,0xbe,0xbd,0x31,0x11,
+ 0x11,0xdb,0x14,0x15,0xcf,0x4f,0xf1,0xff,0xf8,0x14,0x7b,0xb3,0x68,0xd6,0x7f,0x96,
+ 0xf8,0xfa,0x53,0xce,0x3f,0x77,0x33,0xf1,0x2c,0xf4,0xe5,0x99,0x88,0x34,0xb9,0x7f,
+ 0xa8,0xe4,0x82,0x23,0x81,0x79,0xba,0x2b,0xee,0xbc,0xa4,0xee,0xd7,0x9c,0x7b,0xe4,
+ 0x81,0xec,0xdb,0xc0,0x46,0xe6,0xed,0xa3,0x7a,0x41,0x37,0x6c,0x94,0x0a,0x10,0x11,
+ 0xf9,0x93,0xfe,0x1f,0xca,0xed,0xd3,0x80,0x9b,0x6b,0xff,0x57,0xd9,0x9e,0x38,0x9e,
+ 0x97,0x1b,0x9c,0x77,0xe4,0x37,0x42,0x49,0x90,0x56,0x92,0x97,0x72,0xdb,0x99,0xf4,
+ 0x5a,0x8b,0x35,0xfe,0xa5,0x0a,0x66,0x91,0xd2,0x30,0xd5,0xb2,0x4f,0x2b,0xfb,0xb5,
+ 0x7c,0x4d,0x5e,0x45,0xbe,0x44,0xd7,0xab,0xc5,0x7e,0xba,0x8a,0xfc,0x14,0x9e,0x12,
+ 0x9e,0xe4,0x8d,0x30,0xe2,0x93,0xf9,0x5f,0xae,0x3c,0xee,0xff,0x59,0xac,0xdb,0xeb,
+ 0x6a,0xde,0x81,0xcb,0x6c,0xc7,0x80,0xe3,0x8c,0xfc,0x08,0x79,0x99,0x55,0xe9,0xf6,
+ 0xe5,0xe2,0xe7,0xe4,0xe3,0xf0,0xad,0xf1,0x69,0x6b,0xc4,0x77,0x53,0xfc,0x3f,0x07,
+ 0x85,0x4a,0xf6,0x0f,0xbc,0xba,0xcb,0x15,0xf0,0x05,0x1c,0x71,0x7c,0xec,0x4b,0xf5,
+ 0x55,0x4c,0x6e,0x6a,0xec,0x86,0xb7,0x60,0xd1,0x2a,0xee,0xff,0x99,0x5c,0x1f,0x8e,
+ 0x7f,0xfe,0xc4,0x4a,0x75,0xfb,0xb1,0x9a,0xd7,0xe1,0xc5,0xf0,0xc2,0xb8,0xe3,0x8c,
+ 0xf0,0x39,0x9c,0xe8,0x2f,0x0d,0xd1,0x51,0xb1,0x0c,0x5e,0xe5,0xfc,0x9f,0x91,0x82,
+ 0xa4,0xbd,0x16,0x41,0x3c,0xb3,0x5f,0xbb,0x35,0xe2,0xfa,0x12,0x39,0x8d,0xd0,0x78,
+ 0x47,0xf4,0x84,0x46,0x86,0xc3,0xeb,0xd9,0xad,0x41,0xfa,0xa0,0x5f,0x51,0x9a,0xf3,
+ 0x6f,0x35,0x96,0xfd,0x80,0x24,0xeb,0x6f,0x9b,0xfe,0x1f,0x25,0x1f,0xf2,0xbe,0xe4,
+ 0xec,0xd7,0x1e,0xa5,0xb3,0x0d,0xc4,0x3f,0xa7,0xe9,0xfa,0xf2,0x7c,0xa0,0x9f,0x38,
+ 0xef,0x83,0xf5,0xb0,0xc2,0x90,0x1f,0x4a,0xef,0x9d,0xbc,0xbf,0xa6,0xb4,0x42,0x8c,
+ 0x14,0x92,0x80,0x40,0x8c,0xec,0x30,0x53,0x75,0x99,0x3b,0xe9,0x1a,0x9b,0x0a,0x63,
+ 0x75,0x0b,0xc8,0x9d,0x68,0x98,0x7c,0x53,0x43,0xf9,0x93,0x94,0x57,0x1c,0xff,0x5c,
+ 0x02,0x4f,0x8f,0x7d,0x57,0x41,0x1f,0x1c,0x63,0xfb,0xc3,0x8e,0xc7,0x71,0x23,0xbd,
+ 0x6a,0x78,0xef,0xb5,0xef,0x93,0xbf,0x41,0x8e,0x7b,0x4d,0xfe,0x8f,0x05,0xff,0x28,
+ 0xbc,0xc8,0xe1,0x21,0x1d,0x37,0xd5,0x59,0xb8,0xe8,0xf7,0x29,0xcb,0x3a,0xd0,0xfe,
+ 0x42,0xfc,0x13,0x44,0x7d,0xd4,0x69,0x5c,0x04,0xdc,0x51,0x31,0xfc,0x95,0xd5,0xff,
+ 0x73,0x25,0x5a,0xc5,0x8b,0xd8,0x8c,0x48,0xaf,0x70,0x7f,0x7e,0xbf,0x49,0xe3,0xf4,
+ 0x85,0x97,0xbd,0xdd,0xd8,0x0b,0xaf,0x26,0x2a,0x02,0x0d,0x26,0xeb,0x45,0x23,0xfe,
+ 0xe9,0x66,0xbe,0x7c,0xda,0x4a,0xe2,0xa4,0x39,0x52,0x02,0x2d,0x91,0xf0,0x1f,0x78,
+ 0xfd,0x19,0x75,0x49,0x84,0x9c,0x93,0x1a,0x79,0x7e,0x13,0x42,0x91,0x60,0xd2,0xff,
+ 0xb3,0x5a,0x39,0x08,0x25,0xba,0x6b,0x33,0x4a,0x83,0x66,0x56,0xb2,0x42,0xde,0x86,
+ 0xa7,0xf5,0xa7,0x50,0xc2,0x3d,0x24,0x7f,0x00,0x19,0x9c,0xef,0x72,0xfc,0x33,0xb9,
+ 0x1f,0xa8,0x66,0x87,0x98,0xe0,0x66,0x14,0x88,0x61,0x56,0x03,0x48,0xc4,0x07,0xa9,
+ 0x1b,0x96,0x50,0x62,0x10,0x6e,0x7f,0x51,0xaf,0xd5,0xff,0x93,0xb7,0xda,0x94,0xb7,
+ 0xad,0x26,0xda,0x37,0xe3,0x35,0x5f,0x8e,0xc3,0x6f,0xcc,0x41,0x41,0x1c,0x4e,0xd4,
+ 0x7a,0x99,0xbd,0xab,0x31,0x9e,0x6f,0xe1,0x3f,0xc3,0x98,0xed,0x36,0xd4,0xef,0x39,
+ 0x66,0xb6,0xbb,0xe0,0x30,0x6a,0x86,0x39,0xbf,0x05,0xcc,0xfa,0x3f,0x97,0xd5,0xe7,
+ 0x35,0xd3,0x75,0x36,0x89,0x1f,0x80,0xe0,0x2e,0x00,0x17,0x27,0x50,0xfe,0xc7,0x03,
+ 0xb0,0xfe,0x48,0x20,0x70,0xbb,0x4a,0xf9,0xcf,0x06,0xd6,0x9f,0x26,0xc0,0xcd,0xa2,
+ 0xa1,0x86,0xfd,0x4f,0x06,0xff,0x3b,0xf7,0x37,0x6b,0x08,0x8d,0x93,0xa9,0xff,0xa3,
+ 0x81,0xe5,0xe7,0x3f,0x9f,0x98,0x18,0xfc,0xef,0xdc,0xff,0x7f,0xf5,0xe7,0xbf,0xd8,
+ 0xfa,0x2b,0xbc,0x97,0xdf,0x49,0xf8,0x2e,0xcc,0x34,0xfe,0x93,0x81,0xf4,0xff,0xf8,
+ 0xfe,0xff,0x5f,0x5e,0x7f,0x49,0x61,0x7f,0xc1,0x9a,0x0b,0x93,0xf2,0xea,0x7f,0xf5,
+ 0xa7,0xb2,0xf2,0x2f,0x99,0xe5,0x70,0xfc,0x3f,0xbc,0xfd,0xff,0x0b,0x3f,0x55,0x57,
+ 0xaf,0x5e,0x35,0xfe,0x27,0x83,0xff,0x7f,0x9e,0xff,0x5f,0xec,0x3c,0xfe,0x1f,0x79,
+ 0xf8,0x7f,0xe4,0xe1,0xff,0xc6,0xfa,0xff,0x1f,0x79,0xf8,0x3f,0xfb,0xf9,0xaf,0x26,
+ 0x7f,0xfe,0x6b,0xcd,0xe7,0xfc,0x28,0x5e,0x44,0x54,0x1e,0x11,0x1f,0x86,0x63,0x0d,
+ 0x8b,0x4e,0x3a,0x46,0x6a,0xc6,0x82,0xaf,0xc2,0x7c,0xf5,0xe6,0xf3,0x8d,0xa5,0xf4,
+ 0x24,0x2c,0xee,0x70,0xfc,0x7a,0x0a,0x3f,0xea,0x10,0xe3,0xa4,0xaf,0xf0,0x55,0xed,
+ 0x8d,0xc2,0x82,0xde,0x96,0x6e,0xf2,0x36,0xfb,0xdd,0xb7,0x9c,0xaa,0x5c,0x4b,0x54,
+ 0x68,0x0e,0x94,0xdc,0x79,0xe2,0x31,0xf2,0x89,0x25,0x3f,0xba,0x35,0xf7,0x10,0xc4,
+ 0x0d,0xd9,0x4b,0x4e,0x2a,0xcd,0x54,0xed,0x93,0x3d,0xbc,0x5e,0x31,0x5a,0x7d,0x68,
+ 0x26,0x48,0x91,0xf0,0x02,0x77,0x86,0xe9,0x1f,0x4b,0xfa,0xeb,0x56,0x9b,0xf1,0x56,
+ 0x99,0xdb,0xa7,0x8f,0x37,0xb4,0xf3,0x36,0x2b,0x27,0xe1,0x46,0xc1,0xa9,0xb6,0xb8,
+ 0x6c,0x73,0x00,0x11,0x7b,0x9f,0xdc,0x69,0xe1,0x47,0x09,0x12,0xda,0x53,0xf8,0x3c,
+ 0x0e,0xde,0x0d,0xa4,0x47,0xaf,0x30,0xc4,0x6e,0xb3,0x7e,0x94,0xd7,0x25,0x77,0x8b,
+ 0x25,0xe4,0x18,0xf3,0x45,0x1d,0xcf,0x15,0xfc,0x2a,0x19,0x1f,0xe4,0xfe,0xd2,0x76,
+ 0x1e,0x04,0x9c,0xfe,0x36,0xe5,0xfd,0x41,0x5e,0x1d,0x2e,0x18,0x4b,0xbb,0xc4,0x3d,
+ 0x66,0xc3,0xa5,0x63,0xca,0xa8,0x54,0x15,0x72,0xe8,0x30,0x98,0x8c,0x0f,0x2a,0x66,
+ 0x7c,0x90,0x93,0x7c,0xc6,0xe0,0x18,0xda,0xef,0xd2,0xbe,0x44,0xdb,0x2f,0x78,0x34,
+ 0xde,0x38,0x07,0x2e,0xf9,0xbd,0x8a,0x3b,0x66,0xcd,0x8f,0x93,0xdc,0xbc,0xde,0x1a,
+ 0x0f,0x62,0x5e,0x81,0x66,0xad,0xc0,0x08,0x44,0xc9,0x58,0xfa,0x26,0x68,0x07,0xfa,
+ 0x0c,0xf9,0x79,0xe0,0xa0,0xee,0x34,0xe8,0xcf,0x53,0xfa,0x83,0x2c,0x35,0xfb,0xc5,
+ 0xc8,0x66,0xf5,0x42,0x58,0x65,0xdc,0x85,0x03,0xe1,0xb0,0xa4,0x86,0x02,0x1e,0xa7,
+ 0x4b,0x89,0x31,0xd5,0x08,0xe4,0x59,0x7a,0x16,0x73,0x7e,0xd4,0x7e,0xc6,0xab,0x41,
+ 0xfa,0xdf,0x51,0x9b,0x8c,0xb3,0x43,0xbc,0x3f,0x88,0x76,0x60,0x8b,0xb8,0x92,0xde,
+ 0x09,0x3f,0x09,0xee,0x43,0xa3,0x81,0x2e,0x0f,0x2f,0x98,0x9c,0x1f,0xa0,0x76,0xed,
+ 0x3c,0xf8,0x7a,0x96,0xcd,0x17,0x4f,0xa2,0xfd,0x95,0x3b,0x68,0x2f,0x15,0x97,0xc2,
+ 0xa7,0xa0,0xb8,0xdd,0xf3,0x6b,0x78,0x7d,0xa4,0x98,0x61,0x77,0xcb,0x37,0x4c,0xfa,
+ 0xe7,0xb5,0x9b,0x9e,0xbb,0x8f,0x07,0x49,0x33,0x87,0xc5,0xdf,0xaa,0x97,0xa6,0xfb,
+ 0x4e,0x67,0x7e,0x52,0x30,0x06,0xaf,0x0a,0x3e,0x96,0x75,0xb6,0x66,0xbc,0x90,0xe6,
+ 0x0b,0x62,0xff,0x64,0xfd,0x10,0x17,0xae,0xff,0x1b,0x2c,0x51,0xcd,0x9e,0xbd,0xc0,
+ 0xbc,0xef,0x65,0xe9,0xe2,0x87,0xea,0x89,0xba,0x0a,0xcd,0xf1,0x26,0x0f,0xd4,0x0a,
+ 0x9c,0x28,0x2e,0x92,0x64,0x7f,0x4c,0x85,0xdb,0xd7,0x89,0x68,0x02,0x5b,0x0b,0x05,
+ 0x46,0x66,0x88,0x5c,0x8e,0xfc,0xba,0x96,0x13,0xa5,0x1a,0xef,0x97,0x9a,0x48,0xb1,
+ 0xb1,0xc4,0x20,0xde,0x64,0xfe,0x2f,0xf0,0xb6,0x92,0x73,0xe3,0xf2,0x9a,0x95,0xa7,
+ 0xd8,0xa3,0x0d,0x3b,0x06,0xef,0x5c,0x9d,0xfe,0x0e,0x5d,0xcf,0xe6,0xaa,0x6f,0x05,
+ 0x9c,0xb3,0xd4,0xc7,0x4c,0xa2,0xf8,0x4a,0x6b,0x7d,0xa4,0x56,0xd8,0xab,0xe9,0xc6,
+ 0x12,0xbe,0x9e,0x5b,0x55,0xd5,0xc8,0x28,0xc1,0xfd,0xb3,0x95,0xa8,0xaa,0x9c,0x61,
+ 0x5b,0x0d,0x5b,0x39,0x3f,0xb3,0x95,0x64,0x5b,0xea,0x23,0x75,0xc2,0x3b,0xa1,0x6c,
+ 0x96,0xa9,0x3b,0x07,0xe1,0x14,0x78,0x99,0x3c,0x90,0xc3,0x1b,0x85,0x2c,0xd2,0x1d,
+ 0x03,0xf2,0x22,0xfc,0xc7,0x17,0x73,0x8f,0x59,0x45,0xb2,0xfe,0x00,0xe7,0x47,0x51,
+ 0x9f,0xb0,0x89,0x87,0x05,0x39,0x5f,0x7a,0x1e,0x2f,0x0b,0x39,0x0c,0x3e,0x69,0x5a,
+ 0xb8,0x26,0x5e,0x31,0x48,0x7d,0xb0,0xa9,0xa9,0xd1,0xd2,0x1f,0x4d,0x19,0xa0,0x89,
+ 0x6a,0x90,0x69,0x03,0xda,0x9d,0xac,0x2c,0xe4,0xe0,0x8d,0xd2,0x8e,0x41,0x76,0x3d,
+ 0x8f,0x7f,0x41,0x73,0xbb,0x4f,0xb3,0xb7,0x59,0xeb,0x23,0xd5,0xae,0x1a,0x27,0x75,
+ 0xa7,0x9f,0x83,0xe6,0x7e,0x34,0x33,0x95,0x82,0x42,0xda,0x2c,0x54,0x86,0x6c,0xdb,
+ 0x79,0xbc,0xaf,0x87,0x57,0x00,0x90,0x93,0xab,0x93,0xe8,0x8f,0x56,0xa2,0xd5,0x44,
+ 0x9d,0x03,0x42,0x33,0x9d,0x13,0xe0,0x8d,0xd2,0xa4,0x66,0xa1,0x48,0x0b,0xb4,0xe1,
+ 0x95,0x5d,0xb4,0x24,0xb5,0x3e,0x36,0x98,0xfe,0x31,0x37,0x2f,0x8b,0xdd,0x4b,0xf2,
+ 0x6b,0xdc,0x5f,0xaa,0x89,0x66,0xa7,0x49,0x0d,0xfe,0x22,0xcd,0x96,0x4b,0x5e,0x94,
+ 0x1a,0xb4,0x92,0xa0,0x2b,0xf7,0x5e,0xff,0xa4,0x7d,0xba,0x86,0xaa,0xe3,0xf1,0x29,
+ 0x32,0x38,0x7d,0x9c,0x96,0xac,0x92,0x3e,0x52,0x04,0xad,0x90,0x13,0x27,0x75,0xb8,
+ 0x02,0x4b,0x99,0x58,0x32,0x19,0x1f,0xe4,0xfc,0xa8,0xcf,0x24,0x5f,0xb5,0x23,0x9a,
+ 0xa0,0x85,0x07,0x37,0xf5,0xcb,0x4f,0x4e,0x34,0x4a,0x3b,0x2d,0x5d,0x4e,0x0c,0x7e,
+ 0x91,0xc2,0x8f,0xe2,0xfc,0xb1,0xcc,0xb6,0x69,0x17,0xd8,0x2b,0x5a,0x55,0xad,0x23,
+ 0x9a,0xf3,0x1e,0xdb,0x55,0xf8,0x5d,0xcd,0xb1,0xb9,0x71,0x9f,0x76,0xd9,0xe3,0xd5,
+ 0xec,0xaf,0x8b,0x25,0x93,0xe7,0xb1,0x5c,0x89,0xd3,0x6e,0x70,0xa2,0xe1,0x9d,0x7d,
+ 0x96,0x46,0x20,0x2b,0x77,0x09,0x23,0x3d,0x91,0x48,0x9d,0x17,0x64,0xb6,0x24,0x4e,
+ 0x07,0x1f,0x72,0xda,0x32,0x3b,0xfc,0xe9,0xc9,0xf8,0xa0,0xc9,0x8f,0x2a,0xd4,0xc4,
+ 0x6c,0xd2,0xa4,0x35,0x14,0xba,0xfb,0x6e,0x50,0xd2,0x5f,0x84,0x06,0xa5,0x50,0x93,
+ 0xb3,0x89,0x9d,0xed,0x95,0xd0,0x1e,0xcf,0x21,0xd9,0xc2,0xc4,0xfa,0x6f,0x9b,0xd1,
+ 0x01,0x07,0x05,0xce,0x4f,0x23,0x03,0xb6,0xc7,0x55,0x93,0x5d,0x8f,0xcb,0x2e,0x98,
+ 0xfc,0x70,0xde,0x31,0x4d,0xd7,0xf2,0xb7,0x64,0xa7,0x27,0xeb,0x23,0x71,0x7e,0x54,
+ 0xfc,0xc7,0xdc,0x09,0xd6,0x0b,0xc7,0x22,0x66,0xf4,0x73,0xc0,0xf6,0x3e,0x7c,0xfe,
+ 0x2d,0x47,0x74,0x43,0xa1,0x36,0xba,0xc0,0xbb,0x82,0x46,0xe5,0x64,0x7f,0xb4,0x0f,
+ 0x84,0x42,0xb3,0x5f,0x1e,0xcf,0x0e,0x50,0xdf,0x4f,0xa4,0xc5,0xf5,0xc2,0x1b,0x50,
+ 0x51,0xeb,0xb8,0x6d,0xeb,0x39,0xba,0x83,0xf1,0x8e,0x2a,0xe2,0xc5,0xc9,0x7a,0x83,
+ 0x66,0x7c,0x50,0xe3,0x6d,0x68,0x40,0x55,0x46,0x24,0x2f,0xd8,0x78,0x61,0x8a,0x7e,
+ 0x52,0xa6,0x64,0x31,0x99,0x57,0x68,0xef,0xe2,0x1e,0x5a,0x4b,0x7d,0xc8,0xb5,0x2e,
+ 0x5e,0x0d,0x92,0xb3,0xc1,0x2b,0xa2,0x47,0x84,0x22,0xb6,0x31,0xd1,0x16,0xd6,0xd9,
+ 0x49,0x3b,0x48,0x39,0x3d,0xa2,0x39,0x99,0x1c,0x27,0x49,0x84,0xe2,0x92,0xc6,0x9b,
+ 0xe6,0x78,0xd2,0x97,0x99,0x65,0x34,0xfe,0x96,0x97,0xa9,0xd9,0x0a,0xab,0x42,0x37,
+ 0x94,0xa7,0xd3,0xe9,0x5d,0x6a,0xc8,0x90,0x23,0x84,0x24,0xeb,0x43,0xc2,0x4c,0x6a,
+ 0x92,0xa2,0xd7,0xa4,0xcf,0x04,0x1f,0xdb,0x65,0x6c,0xe0,0x07,0xb9,0xd1,0xfb,0xf5,
+ 0x50,0xf3,0xf7,0xc8,0x4c,0xd8,0x47,0xf2,0xfb,0x64,0x89,0xd0,0x24,0xff,0x2a,0xc2,
+ 0x9b,0xf8,0x2c,0x8e,0x3b,0xbe,0x2f,0x5e,0x07,0x9f,0x35,0xcd,0x0f,0x65,0xad,0x29,
+ 0x78,0x42,0xfb,0xcd,0x33,0x0b,0x57,0x64,0x95,0xcb,0x37,0xa0,0xea,0x99,0x3f,0x36,
+ 0xad,0x4e,0x4e,0xf6,0x37,0xb1,0xcd,0x4c,0xc8,0x5b,0xc7,0x1e,0x79,0x08,0x8f,0xd5,
+ 0x9c,0xea,0x44,0xff,0x53,0xa1,0xc2,0xc8,0x6a,0x42,0xc1,0xcb,0x25,0xf6,0x32,0xfd,
+ 0x8b,0x49,0x7e,0x94,0xff,0x47,0x1f,0xc1,0xd5,0xa6,0xaa,0x78,0xd6,0xc8,0xb4,0x0f,
+ 0xa4,0xab,0xe1,0xaa,0x90,0x7d,0xa4,0xe6,0x8a,0xfa,0x31,0xdb,0x33,0x64,0x7f,0xae,
+ 0xc6,0x97,0xf0,0x8f,0xf5,0x95,0x9e,0x49,0xf6,0xa7,0xbb,0xfe,0x09,0xe3,0x40,0x6c,
+ 0x9e,0x41,0x3f,0x21,0xd9,0xec,0x5c,0xcc,0xbd,0x6a,0x6e,0x7d,0xf8,0x6d,0x58,0x0f,
+ 0xea,0x60,0x66,0x80,0xe4,0x6a,0xff,0xae,0xe4,0x1b,0x8e,0xec,0xec,0xa4,0x7f,0x8c,
+ 0xc7,0x07,0x0f,0x68,0x26,0x69,0xb3,0x6d,0xdb,0xb3,0xaa,0xdb,0x68,0xe6,0xfd,0x64,
+ 0x9f,0x86,0xfc,0xa5,0x77,0x1a,0xe4,0x61,0xf8,0x11,0xe4,0x1f,0x95,0x43,0x24,0x19,
+ 0x1f,0x0c,0x49,0x27,0x4d,0xf9,0x1f,0x40,0xed,0x26,0xe9,0xcc,0x6d,0xdc,0xe8,0x21,
+ 0x43,0x42,0x23,0x84,0x7a,0x33,0xb2,0xc8,0x37,0xe1,0x71,0x70,0xc6,0xe5,0xdc,0xec,
+ 0xfe,0xa4,0x7f,0x0c,0xe5,0xe7,0xa7,0x28,0x54,0xd3,0x87,0x79,0xf7,0x93,0x5f,0xf9,
+ 0x8c,0x48,0x37,0x2a,0x9a,0x7f,0x03,0x67,0xc8,0x1e,0xfb,0xd9,0x4a,0xf6,0xa6,0x81,
+ 0xaa,0x79,0xb7,0xc5,0x3f,0xc6,0xb8,0x3e,0x62,0x26,0x49,0xfe,0x24,0x7c,0xa0,0xf8,
+ 0x12,0x65,0xe8,0x2e,0xf1,0x8c,0xcb,0x01,0x71,0xb7,0x34,0xe2,0xf1,0xf5,0x65,0xed,
+ 0xb0,0xf8,0xbb,0x12,0xf1,0xc1,0x52,0x2e,0xcf,0x87,0xe1,0x77,0x50,0xa0,0xc9,0x9c,
+ 0x06,0xf3,0x1b,0xb2,0x50,0x73,0x7c,0x4b,0xf6,0x68,0xc7,0x4c,0xff,0x58,0xe3,0xc0,
+ 0x24,0x3f,0xbc,0xc7,0x8c,0xf7,0x99,0xf9,0x6e,0x75,0x4a,0xbb,0xd1,0xae,0xc9,0x31,
+ 0x71,0xb7,0xd2,0x22,0x14,0xf5,0xca,0x8c,0xb8,0x95,0x66,0xce,0xcf,0xe9,0x9e,0xc2,
+ 0x8f,0x1a,0x0f,0x5a,0x75,0xc2,0x86,0xbc,0x6f,0xe3,0x7c,0xb2,0x1b,0x5a,0xa0,0x08,
+ 0x07,0xe1,0x0e,0x5e,0x31,0xc9,0xcc,0x8f,0x9b,0xac,0x8f,0xc1,0xf9,0x51,0x87,0x13,
+ 0xa4,0x20,0xbf,0xd2,0x1e,0x72,0x71,0x6f,0x21,0xaf,0xc7,0xee,0xaa,0x96,0x9d,0x5b,
+ 0x9a,0x78,0x6a,0x8c,0x01,0xd3,0xad,0xf1,0xc1,0xcc,0xd5,0xec,0x12,0xde,0x1f,0x9f,
+ 0x5f,0x8f,0x9e,0x50,0x2b,0x8e,0xe3,0x8b,0x6f,0x87,0x97,0xa1,0xcc,0xbf,0xa9,0x5d,
+ 0xec,0x90,0x8e,0xc1,0x5e,0xbe,0x02,0xf1,0xf4,0xc9,0xf8,0xe0,0x4d,0x97,0xe1,0x92,
+ 0x92,0xc8,0x8f,0xd3,0x2e,0x6a,0x65,0x47,0x1d,0xc3,0x05,0xcf,0xa5,0x5d,0x85,0x47,
+ 0x8e,0xdf,0xac,0x89,0xf7,0x99,0xf1,0xc1,0x79,0xaf,0x59,0xe2,0x83,0x3d,0x69,0x1c,
+ 0xff,0x2c,0xcc,0x72,0x1c,0xcd,0x79,0x4d,0x79,0x35,0x5a,0x65,0xb3,0xbf,0xe4,0xf4,
+ 0xc0,0x49,0x86,0x83,0x37,0xc4,0x7a,0xf6,0xbb,0x68,0x69,0xfc,0xe6,0xee,0x2f,0xc7,
+ 0x26,0xf9,0x0c,0x47,0xe9,0x47,0xbc,0xe9,0x49,0x9e,0xfc,0x28,0x89,0x43,0x8b,0x5a,
+ 0x92,0xc7,0x53,0xba,0xd5,0x16,0x56,0x92,0x67,0xef,0xc2,0xbd,0xff,0x33,0xd5,0x17,
+ 0x47,0xe0,0x11,0x9b,0x5c,0xff,0x3e,0x94,0x93,0x7b,0x55,0x17,0xc8,0xea,0x75,0x11,
+ 0x68,0x24,0x6e,0x42,0xd1,0x94,0x30,0x98,0xe0,0xf6,0xf7,0x45,0x89,0x56,0xb0,0x15,
+ 0xdf,0xd7,0x66,0xe5,0x47,0xc5,0x81,0xf3,0xa3,0x8a,0x76,0xe2,0xf9,0xfd,0x80,0xbb,
+ 0x25,0xe3,0x79,0xdb,0xfc,0x73,0xf0,0x1f,0x7a,0x60,0x47,0xc6,0x1e,0x52,0x24,0x8c,
+ 0x67,0x70,0x24,0xf9,0x51,0xf9,0x66,0x35,0xe6,0x0a,0xd5,0xd1,0x34,0x6d,0x27,0x9c,
+ 0x60,0x3e,0x97,0x7d,0x43,0x81,0x93,0xfb,0xcf,0x3d,0xad,0x79,0xe2,0x37,0xd9,0x5b,
+ 0x09,0xfe,0x52,0x92,0x1f,0xa5,0x4f,0xe7,0xfb,0xe1,0x00,0x98,0x45,0x00,0xae,0x4e,
+ 0x5f,0x2c,0xcc,0x1b,0x96,0xfb,0xc9,0x65,0xe1,0x61,0xed,0x81,0x61,0x71,0xb2,0xa2,
+ 0x78,0x12,0xff,0x9c,0x36,0xf1,0x8f,0x57,0xca,0x6a,0x9a,0xb6,0x92,0x67,0x67,0x68,
+ 0x76,0xb6,0xfe,0x43,0x36,0x12,0x7a,0x64,0x79,0xd6,0x16,0x31,0x0e,0x89,0xfb,0xd7,
+ 0xa4,0xf2,0xc3,0x0f,0x4b,0xce,0xb8,0xf8,0x64,0xce,0x07,0xda,0x09,0x28,0xa9,0x7d,
+ 0x3b,0x4a,0xfe,0x1e,0x25,0xf0,0x3f,0xd6,0xd3,0x7d,0xe1,0x38,0x67,0x58,0xe1,0xf3,
+ 0x8b,0xfb,0x53,0xe2,0x83,0x87,0x01,0x9a,0x37,0x48,0x89,0xb6,0x20,0xc6,0xcf,0x78,
+ 0x7f,0xb4,0x98,0xb6,0xba,0xe9,0xf1,0x5c,0xf2,0x7e,0xc3,0x78,0xa2,0x4a,0x92,0x1f,
+ 0x35,0xac,0xcc,0x12,0x0e,0xb0,0x7c,0x5d,0x0e,0x90,0x43,0xb0,0x5e,0xff,0xce,0x53,
+ 0xb6,0x1f,0x84,0x5f,0xd3,0xf6,0xb3,0x15,0x85,0x19,0xcb,0xc9,0x3b,0xe5,0x8f,0xb1,
+ 0xd9,0x3c,0x3f,0xee,0xca,0xe4,0xfc,0xba,0x3c,0xdc,0x6f,0xe0,0xa1,0x59,0x2a,0xb1,
+ 0x87,0x3f,0x55,0x7c,0x9a,0xcc,0x69,0x78,0xc3,0xcc,0xcd,0x8a,0xe7,0xa3,0xfe,0x3d,
+ 0xa1,0x7a,0xcc,0xfc,0xb8,0xc9,0xf9,0x5a,0x2e,0xae,0x8f,0xf2,0x3c,0x2f,0x02,0x80,
+ 0x68,0xc7,0xe3,0x33,0xee,0x7e,0xad,0xe6,0x7b,0x70,0x51,0xfb,0x2b,0xb6,0x61,0x78,
+ 0xbc,0x50,0x24,0x5f,0xcf,0xc9,0xf5,0xe1,0xe7,0xf7,0x12,0x3c,0xd4,0x90,0xb9,0x4e,
+ 0x1c,0x92,0x96,0x84,0x4b,0x55,0x77,0x5f,0x8e,0x87,0x9e,0x80,0x45,0xd5,0x10,0x15,
+ 0x2f,0x48,0x66,0xfe,0x42,0xb9,0xe8,0x9f,0x5c,0xff,0x93,0x74,0x3b,0x2f,0xcb,0xcf,
+ 0x96,0xd4,0x6f,0xdd,0x8e,0x62,0x07,0xcd,0xc5,0xe1,0x6c,0x85,0xae,0x0f,0x2d,0xe2,
+ 0xfc,0xf0,0xd3,0xe3,0xd0,0xc8,0xe6,0x4d,0xe5,0x47,0xb1,0x7c,0xf5,0xce,0xe5,0xe4,
+ 0x77,0xf0,0xaf,0x4c,0x5d,0x49,0x03,0x24,0x4b,0x45,0xfc,0x13,0xa2,0x6b,0xfc,0xbf,
+ 0xe1,0xbf,0xe2,0xf1,0xd0,0x24,0x3f,0x6a,0xa9,0xd4,0xca,0xcf,0xe3,0xaf,0x6f,0xac,
+ 0xc8,0x3e,0xb5,0x61,0x73,0x9b,0x5a,0x4f,0x73,0xfd,0xb3,0x11,0x6f,0x17,0xd5,0xbb,
+ 0x3c,0xa4,0x57,0x2d,0x4d,0xac,0xe7,0x54,0x7e,0x54,0x01,0x7b,0xf4,0x19,0x71,0x14,
+ 0xde,0x84,0xbd,0x31,0xfb,0x39,0xf9,0x36,0x13,0xff,0xd8,0xf5,0x9c,0x51,0x7a,0xd1,
+ 0xec,0x98,0x56,0x70,0x31,0x85,0x1f,0xd5,0x4d,0x8e,0x28,0x08,0x03,0x76,0xc0,0x20,
+ 0xf1,0xe5,0x39,0xc2,0x62,0x3c,0x3c,0xd2,0xe3,0x4b,0x77,0xf0,0x78,0x4d,0x22,0x5f,
+ 0x4c,0xc8,0x4e,0xc6,0x6b,0x94,0x0e,0x18,0x4d,0x2b,0x5b,0x81,0x87,0xf4,0x5c,0xd3,
+ 0x31,0x98,0x15,0xba,0x39,0x2a,0x9e,0x63,0xc7,0xa2,0xde,0x5a,0x3b,0x6f,0x24,0xf1,
+ 0x06,0x1c,0x4a,0xe4,0xc7,0x4d,0xcc,0x67,0xd2,0x2a,0x7a,0x10,0x9c,0x4b,0x69,0x34,
+ 0xfb,0xe5,0x70,0x33,0x31,0xfd,0xed,0x7f,0x80,0xc6,0xb8,0x73,0x25,0xdd,0xec,0x7c,
+ 0x8f,0x8d,0x22,0xb0,0x91,0xad,0xfc,0xa8,0x72,0x1e,0x1f,0x84,0x74,0x8d,0xc6,0xc2,
+ 0x66,0x1b,0x8b,0x3b,0xe4,0xcd,0x66,0x3d,0xdb,0x39,0x3d,0x08,0x7b,0x7a,0x85,0xcd,
+ 0x50,0x94,0x9a,0x1f,0xa7,0x9a,0xfc,0x28,0x95,0x57,0x43,0x7a,0x51,0xe0,0xdd,0xd0,
+ 0xe4,0x05,0xe4,0x15,0xfc,0xc3,0x50,0x90,0x2e,0x40,0xfc,0x63,0x52,0xa7,0x94,0xeb,
+ 0x92,0xfe,0xf9,0x35,0x3c,0x3e,0x88,0x78,0x7d,0xe9,0xb8,0x7f,0x5e,0x90,0x71,0x60,
+ 0xd2,0xa2,0xdc,0x7c,0xd0,0x0f,0x15,0xbc,0x63,0x88,0x85,0x1f,0x65,0xd6,0x0b,0xaa,
+ 0xe2,0x4d,0x60,0x4f,0x23,0x10,0x32,0xab,0x61,0xff,0x77,0x44,0x80,0x87,0x83,0x8e,
+ 0x7e,0xb3,0x50,0xb6,0x19,0x21,0xfd,0x68,0x12,0xff,0x94,0x9b,0xf3,0x17,0x2e,0xb5,
+ 0xf7,0x4f,0xbb,0x00,0xc7,0x94,0xaa,0x40,0xd6,0xeb,0x8d,0xcf,0x32,0xbc,0xc3,0x72,
+ 0xc7,0xaf,0x44,0x44,0x44,0xd5,0x38,0xbf,0x7f,0xda,0x47,0xa9,0xf1,0x41,0xa7,0x6a,
+ 0xcf,0x6c,0x4a,0x8f,0xab,0x11,0x28,0xb1,0x89,0x61,0xdc,0x32,0xdd,0x50,0x92,0x2b,
+ 0x87,0x9d,0x83,0x3a,0x53,0x8b,0x38,0x03,0x33,0xc9,0x8f,0x0a,0xf0,0xf8,0xa0,0xcb,
+ 0xdd,0x67,0xcb,0x4d,0xe7,0xd9,0xa6,0xee,0xa5,0x37,0x66,0x83,0xc4,0x36,0x4b,0xee,
+ 0x80,0xcc,0xe3,0xa1,0x3b,0xd4,0xc2,0xd4,0xf8,0xe0,0xb6,0x04,0x3f,0xea,0xec,0xf5,
+ 0x6d,0xe9,0x43,0x8c,0xf3,0xa3,0x96,0x6c,0x0e,0x17,0x73,0x84,0xe9,0x97,0xf7,0x20,
+ 0x10,0xda,0x65,0xae,0x67,0xb6,0xa5,0x3e,0x64,0xa2,0xde,0x75,0x20,0x6b,0xbb,0xff,
+ 0xbd,0x05,0xc7,0x9a,0x7c,0x7f,0xb3,0x2c,0x2a,0x3e,0xc5,0xaf,0xd4,0x3b,0xa2,0xc2,
+ 0x39,0xf2,0xbe,0xf9,0xbe,0x16,0x7e,0x54,0x1f,0xdf,0x0f,0xa4,0x52,0x73,0x6c,0x11,
+ 0xcf,0x91,0x51,0xd5,0xf7,0x90,0x23,0xaf,0x85,0xd7,0x47,0x32,0x0b,0x25,0xf5,0xde,
+ 0xfb,0x06,0x4c,0xe1,0x47,0x51,0x33,0x3e,0x58,0xa6,0xda,0xd7,0x89,0x7a,0xfd,0x88,
+ 0x59,0x96,0xaa,0x20,0x9f,0x37,0x0a,0x99,0xb9,0x11,0x81,0xa8,0x7a,0x46,0xf1,0xa6,
+ 0xe6,0xc7,0xf1,0xf8,0xe0,0x21,0xdc,0xcf,0x75,0xef,0xe6,0x1c,0xa4,0x3f,0x21,0xf3,
+ 0xf4,0xce,0x21,0x7f,0x45,0xf9,0x86,0xf0,0x2d,0xbc,0x51,0xec,0x6d,0xec,0x19,0xc9,
+ 0x4c,0x94,0xf3,0x4f,0xee,0x1f,0x2a,0x2d,0xc5,0xf3,0x52,0x68,0x64,0xb8,0xc9,0x33,
+ 0xc2,0x5e,0xde,0x36,0x25,0xcf,0x96,0x06,0x8d,0x51,0x1c,0xcc,0xb2,0x6d,0x24,0x3f,
+ 0x6d,0x32,0xcf,0xcb,0xd1,0x49,0xfc,0x03,0xca,0xfd,0x70,0x40,0xe5,0xdd,0xc1,0xfc,
+ 0xdb,0x84,0xc7,0xd4,0xe2,0x98,0x4d,0x8d,0xfd,0x18,0xd2,0x61,0x76,0x9c,0xae,0x09,
+ 0x6f,0xa7,0x4f,0x13,0x01,0xcf,0x6f,0x7a,0x20,0x19,0x1f,0xdf,0xf6,0x35,0xb8,0xaa,
+ 0xdf,0x1a,0xca,0x5c,0x23,0x3e,0x21,0xfd,0xa9,0xa3,0x2a,0x34,0x73,0xb9,0x50,0x46,
+ 0x5e,0x8e,0xfe,0x30,0xe4,0x3e,0x23,0x1e,0x21,0xbf,0x61,0x9b,0xe3,0xcb,0xd6,0x4c,
+ 0x4b,0xf2,0xa3,0x6c,0x33,0x76,0xd3,0x4b,0xb9,0x3e,0xde,0xed,0x8b,0x57,0x03,0xa8,
+ 0x02,0x7b,0x5c,0x44,0xf9,0x93,0x3f,0x4d,0x13,0x87,0x79,0xbf,0x4b,0x6d,0x56,0x6a,
+ 0x7e,0x5c,0x28,0xf7,0x08,0xbc,0xc5,0x16,0x22,0xbe,0x12,0x2a,0xa4,0x57,0x37,0x54,
+ 0x85,0xb2,0xce,0x7c,0xb9,0x42,0x79,0xa5,0xad,0x2a,0xdf,0x71,0x46,0xf4,0xc1,0x7b,
+ 0xbf,0x2a,0x3d,0xbb,0xc9,0xca,0x8f,0x7a,0x06,0xf1,0xcc,0xf3,0x2c,0x3f,0xed,0x9e,
+ 0xff,0x2e,0xae,0xd1,0xd6,0x4f,0x2f,0x8e,0x80,0x41,0xf2,0x24,0x96,0x57,0xbc,0x41,
+ 0xfe,0x55,0x38,0x57,0xfd,0x8c,0xf1,0xd6,0x27,0x53,0xe3,0x83,0xb0,0x83,0xc9,0x0f,
+ 0xde,0xa1,0xa8,0x4f,0xd3,0xe2,0x6a,0xe1,0x4b,0x08,0x1e,0xd7,0x4b,0xc5,0x90,0x11,
+ 0x24,0xcb,0xb5,0xb5,0xea,0x6c,0x6e,0xca,0xf5,0x4e,0xce,0xd7,0x72,0x5b,0x85,0xc3,
+ 0xa0,0xd2,0x1b,0x6e,0xbd,0x6e,0x25,0x6b,0x69,0x28,0x61,0x19,0xc5,0xc4,0xb5,0xaa,
+ 0x5d,0x73,0x8f,0xc8,0xba,0x33,0x04,0x7b,0x84,0x42,0xe3,0x84,0x87,0xbc,0xd6,0x34,
+ 0x31,0xdf,0x35,0x7d,0x88,0xf3,0xa3,0xba,0x6e,0xee,0x16,0xbf,0x40,0x3e,0x66,0xbe,
+ 0x3a,0x47,0x9b,0x3c,0x87,0xb4,0x30,0x5f,0xc8,0x11,0x91,0x1f,0x90,0xfe,0x48,0x38,
+ 0xff,0x84,0x9c,0x62,0x13,0xef,0xab,0x0b,0x5c,0xde,0x56,0x44,0x1d,0x1e,0xf1,0x7d,
+ 0x0e,0x14,0xb7,0x64,0xb5,0xa3,0x18,0x7f,0x2b,0xe0,0xeb,0xe7,0x65,0xb1,0xd5,0x4b,
+ 0x60,0xf2,0xc3,0x93,0xfc,0xa8,0x7c,0x13,0xff,0x2c,0x42,0xeb,0xbe,0xf1,0x61,0xed,
+ 0x55,0xce,0xc6,0x0c,0x4e,0x2b,0x84,0x93,0x50,0xac,0xd9,0x0d,0x71,0x31,0x7c,0xac,
+ 0x6c,0x45,0x7d,0x47,0xf4,0xc9,0xfe,0xb0,0x3b,0x4c,0x7e,0x94,0x53,0x71,0x3c,0xe7,
+ 0xdc,0x85,0xda,0xcd,0xa7,0x46,0xb6,0x87,0x0b,0xa0,0x2f,0x34,0x47,0xa5,0x11,0x27,
+ 0x6f,0x73,0xc1,0xf5,0x57,0xba,0x05,0xff,0x08,0x7c,0x7e,0x51,0x2d,0x8a,0x29,0x0e,
+ 0x7b,0x9c,0x2b,0xf3,0xb6,0x91,0x67,0xe0,0x71,0x56,0xe2,0x41,0xeb,0x64,0xb7,0xba,
+ 0x13,0x38,0xc3,0x33,0x5b,0x4f,0xf2,0xa3,0x14,0xc4,0xdb,0x6a,0x08,0x6c,0x0a,0x1a,
+ 0x51,0x5b,0x79,0x5b,0x22,0xb0,0x35,0xc1,0x66,0xa5,0x90,0xfb,0xf5,0x22,0xa4,0x91,
+ 0xee,0xee,0xa9,0xc1,0xfd,0xd6,0x30,0xb1,0xfa,0x24,0x0f,0x3f,0xba,0xab,0x02,0xe4,
+ 0xa8,0xd8,0xa1,0x9c,0x30,0xd9,0x08,0x44,0x37,0xeb,0xb3,0xb9,0xa2,0x62,0x44,0xfa,
+ 0x98,0xd7,0x47,0xda,0x27,0xea,0x4f,0x4d,0xc6,0x07,0x37,0x27,0x68,0xe1,0x8e,0xfe,
+ 0x9a,0x6e,0x9e,0xdf,0xc4,0xf3,0xdd,0xea,0x51,0x22,0xce,0xe3,0x83,0x87,0x71,0xc5,
+ 0x16,0x1a,0x8e,0xf3,0x2f,0x0c,0x5a,0xfa,0xa3,0x7d,0x64,0xe2,0x43,0xf7,0x88,0x78,
+ 0x8e,0x5e,0xf5,0x54,0x49,0xf6,0x41,0xf1,0x3c,0x8c,0xa9,0xa5,0x9c,0xff,0xfc,0x27,
+ 0x78,0x05,0x4a,0x29,0x5e,0xb1,0xf4,0x87,0xdd,0xf6,0x11,0x7d,0x3e,0xe4,0x24,0xb4,
+ 0x0b,0x24,0xb6,0xc9,0x53,0xc2,0x68,0xa7,0xf3,0x5d,0xe5,0x70,0x7f,0xd5,0x19,0x3a,
+ 0xac,0x0d,0x40,0xcb,0x51,0xa7,0x87,0x76,0x5a,0xf2,0xe3,0xfa,0xe0,0xa4,0xb4,0xf7,
+ 0x4e,0x67,0x5f,0xa7,0xe7,0xa5,0x42,0x7d,0x27,0xb8,0xa9,0x8d,0x77,0x97,0x3c,0x24,
+ 0xa9,0x47,0xe7,0x7a,0x9c,0xbd,0xac,0x51,0x53,0xa5,0x80,0xea,0x3c,0x3a,0xb9,0x7f,
+ 0x12,0xfc,0x70,0xe7,0x69,0x1a,0x5b,0xd9,0xc1,0xf3,0x0d,0xd9,0x86,0xa7,0xc8,0xa0,
+ 0x72,0x38,0xe1,0x51,0x19,0xe0,0x78,0xf2,0x38,0xe5,0xfd,0x61,0x27,0xde,0xb7,0x7a,
+ 0xfa,0x10,0xfd,0x84,0x75,0xf5,0xdb,0x63,0x59,0xb3,0xe1,0x67,0x60,0x1e,0x9c,0x77,
+ 0xd3,0x2e,0x1a,0xde,0x9e,0xd6,0x98,0xf8,0x9e,0xff,0x18,0xf3,0x80,0x5b,0x17,0xfb,
+ 0x6b,0x2d,0xfc,0x28,0x18,0xdd,0xe6,0xe3,0x24,0xf9,0xca,0xd6,0x8f,0xc1,0x37,0x9c,
+ 0x39,0xd2,0x38,0xfc,0x8d,0xab,0xca,0x34,0xe3,0xe6,0xf1,0x42,0x01,0x3a,0x42,0xa3,
+ 0x54,0x7e,0xd4,0x28,0x2f,0xfb,0x13,0x13,0x57,0xe0,0x7e,0xa8,0x0c,0xda,0xf7,0xe5,
+ 0x0c,0xd5,0x5e,0x14,0xbc,0xc6,0xb4,0xd8,0xd7,0x0b,0xb5,0x13,0xcc,0x3b,0xdd,0xbe,
+ 0x73,0x4a,0x7f,0xd8,0x83,0x14,0xf1,0x6d,0x4c,0xe8,0x85,0x4d,0x69,0x0f,0xf0,0x36,
+ 0x31,0x1f,0xc3,0xde,0x8e,0x85,0x06,0x02,0xef,0xbf,0x57,0x1a,0x79,0x7f,0xc6,0x4e,
+ 0x92,0xac,0x8f,0xd4,0x87,0xf2,0x67,0x4f,0x93,0xaa,0x64,0xc4,0xa0,0x97,0xa7,0x51,
+ 0x00,0xd8,0xb3,0x5f,0x34,0x1b,0xeb,0xc8,0x1e,0x28,0x6c,0x33,0x1d,0xbe,0xaa,0xa5,
+ 0x3f,0xec,0xb0,0xf2,0x35,0x78,0x96,0xe5,0x77,0xd0,0xef,0x93,0x1f,0xf3,0xb2,0x00,
+ 0xae,0xc8,0x9a,0x75,0xaf,0xc3,0x81,0xb6,0xd9,0x71,0xf1,0x9f,0xc8,0x57,0xb5,0x4d,
+ 0x8d,0x3b,0x74,0xfa,0x3e,0xb1,0xd6,0x47,0xba,0x07,0x3e,0x61,0x31,0x23,0xd3,0x43,
+ 0x5e,0x86,0x5f,0x47,0xdd,0x03,0x6e,0x51,0x34,0xe0,0xfc,0xbd,0x9e,0x41,0xc7,0x21,
+ 0xd1,0x05,0x46,0xbe,0x47,0x73,0xe7,0x8b,0x96,0xfe,0xb0,0x33,0x9e,0xd3,0xfe,0x39,
+ 0xca,0x41,0xe0,0x97,0x07,0x4c,0xb4,0x33,0x6d,0x4f,0x4d,0x5c,0xfd,0x34,0xb7,0xea,
+ 0x25,0x47,0xec,0x85,0xe1,0xec,0x3f,0x91,0xc5,0xbd,0x8e,0x15,0x72,0x32,0x3f,0x8e,
+ 0x72,0xfc,0xa3,0xa3,0x36,0xec,0x16,0x25,0xf8,0xe3,0x83,0x3e,0xc1,0xd6,0xb0,0x75,
+ 0x28,0x7a,0x9e,0x75,0x5d,0x5c,0x1a,0x6b,0x29,0x84,0x17,0xc0,0x9b,0xb7,0x54,0xaf,
+ 0x49,0xda,0x77,0x7d,0x79,0xdb,0x61,0x2f,0xcd,0x67,0x74,0x58,0xcc,0xa5,0x2f,0xdb,
+ 0x8b,0x05,0xf9,0x21,0xf2,0xb6,0x7e,0x00,0x6e,0x35,0x22,0xf5,0x64,0x01,0x59,0x27,
+ 0xa8,0x4d,0xae,0x90,0xcd,0x3b,0xb9,0x9e,0x26,0x3f,0xaa,0x29,0x9f,0xd7,0x07,0x28,
+ 0xe3,0x65,0x30,0xe3,0xb6,0x40,0xf6,0x3b,0x91,0xe7,0x1b,0x42,0xef,0xd3,0x1f,0x90,
+ 0xeb,0x50,0xf7,0xe6,0x87,0xe8,0xa0,0xa5,0x3e,0x49,0x1d,0xe2,0x9f,0xbd,0x51,0xd3,
+ 0xbe,0xa8,0x85,0x46,0xa1,0xc4,0x58,0xb2,0x80,0x9c,0x14,0xf6,0x32,0xb3,0x02,0x4c,
+ 0x3a,0x84,0xdf,0x56,0xcf,0xe0,0x7a,0x26,0xf1,0xc9,0xe0,0x0c,0xde,0x0d,0x76,0x2f,
+ 0x27,0x81,0xe7,0x19,0x1f,0x90,0xaa,0x1f,0x65,0xe9,0x39,0xef,0xab,0x57,0x88,0x97,
+ 0x6d,0xd7,0xc5,0xdb,0x94,0x97,0x34,0xef,0x36,0x77,0x48,0x5c,0x64,0xe9,0x0f,0x92,
+ 0xe0,0xab,0x2c,0x43,0x35,0x82,0x60,0x9d,0xa3,0x9d,0xc6,0x38,0x1b,0x89,0xe2,0x00,
+ 0xc4,0x78,0x68,0x84,0x3c,0x37,0x35,0x3f,0xce,0xd4,0x8f,0x9c,0xe4,0xdc,0xc1,0x13,
+ 0xc9,0xb5,0xd6,0x2d,0x78,0x4c,0x8e,0xf5,0xfa,0x12,0x44,0xa9,0x63,0xb8,0x91,0xec,
+ 0xd1,0x1a,0x31,0x35,0x3f,0x0e,0x61,0xc9,0x78,0x5b,0x2e,0xa7,0x86,0xd6,0xd6,0x49,
+ 0x68,0xf6,0x9b,0x8e,0x88,0xb4,0xe5,0x68,0x7f,0xf1,0x5f,0x25,0xeb,0x23,0x99,0xf8,
+ 0x47,0x2b,0xe1,0x6d,0xbc,0x3a,0xd0,0xba,0x6c,0x37,0x5c,0xbc,0x2c,0x40,0x73,0xa2,
+ 0x2c,0x80,0x9b,0xb4,0xa8,0x66,0x87,0xaf,0x3b,0xa6,0xe0,0x1f,0x5e,0x1f,0x89,0xbc,
+ 0x37,0x41,0x8b,0x3a,0x47,0x1a,0x25,0xee,0x11,0xba,0x97,0x17,0x22,0x50,0x35,0x84,
+ 0x46,0x5a,0x12,0xff,0x98,0xf9,0x71,0x95,0x1c,0xed,0xe8,0xf4,0x4c,0x82,0x0d,0x95,
+ 0xa8,0x0f,0xb9,0x0c,0x6d,0x1a,0x3a,0x9e,0xb1,0xf5,0xb5,0x64,0x7e,0xdc,0x8c,0xf1,
+ 0x26,0x68,0xfd,0x05,0x17,0xcc,0xfc,0xb8,0x4d,0xbc,0xad,0xd5,0x65,0x8d,0xd7,0x87,
+ 0x14,0x2f,0x98,0x83,0x4d,0x41,0x6b,0x7f,0x10,0xce,0x8f,0x8a,0x96,0x7e,0xc9,0x1d,
+ 0x25,0xab,0xe8,0xe3,0xaa,0x37,0xb8,0x94,0x27,0x12,0x5e,0x56,0xbd,0xcb,0xed,0x3f,
+ 0x26,0xb7,0xe2,0xa0,0x2b,0x60,0x4f,0xc9,0x8f,0xcb,0x8b,0x4b,0xdd,0xfd,0x6c,0x41,
+ 0x26,0x2f,0x93,0x1b,0x29,0x71,0x52,0x8a,0xf2,0x50,0x3a,0xa4,0x39,0xa9,0x2d,0x4c,
+ 0x50,0x46,0xdf,0xe7,0x54,0x68,0x4a,0x7f,0x58,0xce,0x0f,0x57,0x55,0x8d,0x6e,0xd9,
+ 0xd0,0xa1,0xe3,0xfb,0x06,0x02,0xbc,0x0c,0xd4,0x9e,0xe9,0x9d,0xcb,0xe9,0x75,0xa4,
+ 0x50,0xd9,0x03,0x3b,0x6e,0x47,0xe0,0x9d,0xec,0x0f,0xbb,0x4d,0xea,0xe0,0xf2,0xa7,
+ 0x3a,0x83,0xe7,0x1b,0x36,0x08,0xed,0xcb,0x23,0x51,0x3f,0xbf,0x52,0xc4,0xeb,0x47,
+ 0x15,0xba,0xf0,0x8b,0xdc,0x47,0xfb,0xc9,0xb9,0x29,0xf5,0x21,0x63,0x77,0xd8,0x95,
+ 0xec,0x69,0x21,0x5e,0x08,0xc2,0xad,0x88,0xb3,0x95,0xd1,0x9a,0x22,0x6d,0x69,0x54,
+ 0x9e,0x03,0xa3,0xd3,0xbd,0xf5,0xae,0xa8,0x90,0xe4,0x63,0xf4,0x09,0x89,0xfd,0xe0,
+ 0x88,0xc2,0x53,0x88,0x8e,0x2a,0x57,0x70,0x7f,0x97,0xf4,0x89,0x5e,0xa6,0xbd,0xaa,
+ 0x88,0xdf,0xc8,0xfe,0x84,0x1d,0x31,0xf1,0x8f,0x85,0x5f,0xa7,0xc3,0xb0,0xea,0x55,
+ 0xdd,0xec,0xcb,0x67,0x79,0x35,0x6c,0xc5,0xcd,0x1b,0xf5,0x8e,0xe0,0xfe,0xa2,0x26,
+ 0x3f,0x8a,0xc6,0x78,0x7f,0xd8,0xa9,0xf9,0x71,0x05,0x3a,0x35,0xdd,0x3e,0x52,0x49,
+ 0x03,0xed,0x20,0x7f,0x94,0x8e,0xf4,0x74,0xb1,0x4c,0x3d,0xfb,0x0c,0x6c,0x5c,0xe9,
+ 0x64,0x54,0xb7,0xd6,0x87,0x44,0xf9,0xb3,0x97,0xe9,0xe3,0xdd,0x73,0xd0,0xfe,0xfa,
+ 0xc9,0xc2,0xf4,0xd6,0xa6,0xae,0xe5,0x60,0xe4,0x79,0x88,0x41,0x50,0x3e,0x1b,0x54,
+ 0x0d,0x1f,0x4f,0xf6,0x03,0xe5,0xf8,0x47,0xcb,0x3f,0xca,0xdb,0xfa,0xb0,0xf5,0xc4,
+ 0xa4,0x49,0xff,0x16,0xf6,0x83,0xd0,0x97,0xf1,0x50,0xf6,0x28,0x4a,0x30,0xb3,0xbe,
+ 0xd9,0xe0,0xe4,0xfc,0x48,0x04,0xf1,0x0f,0xdb,0x13,0x77,0xaf,0x21,0x57,0xd4,0xf5,
+ 0x83,0x95,0x1f,0x64,0x2d,0x17,0x9f,0x50,0x3f,0x67,0xa5,0xe7,0xed,0x0f,0x37,0xbe,
+ 0x06,0x2f,0xb3,0x98,0x6e,0xaf,0x13,0x3f,0x70,0x4e,0xcc,0xa7,0x33,0x4c,0xff,0xcf,
+ 0x5b,0x8e,0x58,0xe9,0x87,0xec,0x52,0xc8,0x67,0x3c,0x1a,0x23,0xef,0x6f,0xef,0x82,
+ 0x8a,0x33,0x8e,0xfd,0x62,0x1f,0xda,0x53,0x47,0xd8,0x3c,0x3d,0x27,0x59,0x1f,0x92,
+ 0x34,0x1d,0x81,0xcb,0xbc,0x2c,0xf6,0x48,0xa3,0x2f,0xf4,0x2a,0xf3,0x9e,0xb3,0x5f,
+ 0x16,0xce,0x9b,0x11,0x8d,0xda,0x51,0x3c,0x86,0xbf,0x8b,0xed,0x8d,0xb7,0x76,0x5b,
+ 0xf3,0xe3,0xf2,0xb6,0x6b,0xf8,0xd1,0x35,0xfa,0xa0,0x38,0xd3,0xd8,0xd9,0xae,0x0e,
+ 0xe2,0xd3,0xfe,0x16,0x9e,0x55,0xd5,0x3e,0xca,0x89,0xe2,0xeb,0x3d,0xf9,0x7d,0x28,
+ 0x6a,0x3e,0x98,0xec,0x47,0xcf,0xf1,0xcf,0xb3,0x30,0xbb,0x9e,0x0e,0x13,0xde,0x16,
+ 0x2d,0xbf,0x37,0x23,0x18,0xee,0xd7,0xf6,0x4b,0xb3,0x8d,0xc0,0x83,0xfe,0x61,0xff,
+ 0x63,0x9e,0x50,0x43,0x60,0x8d,0x35,0x3f,0x0e,0xe5,0x4f,0x0c,0x9e,0xe2,0x6c,0xf0,
+ 0x12,0xed,0x67,0xa0,0xbe,0x88,0xc0,0xb2,0x8f,0x76,0xf5,0x9b,0x12,0xe9,0x03,0x5e,
+ 0x78,0x9c,0xd1,0xd4,0xfc,0x38,0xb3,0x09,0x6c,0xc0,0x3e,0x2c,0x2e,0x96,0x36,0x49,
+ 0x05,0xf1,0x47,0x79,0xfd,0xe1,0x8b,0x3d,0x9f,0x72,0xda,0xd2,0x07,0xec,0xd7,0xc4,
+ 0x7b,0xdf,0x49,0x26,0x7e,0x90,0xec,0x4f,0x8a,0xf8,0xe7,0x13,0xa8,0xd0,0x1c,0xb1,
+ 0x25,0xbb,0x55,0xce,0x96,0xcf,0xe2,0x7c,0xf2,0x8b,0xf4,0x11,0x63,0x5e,0xcc,0xff,
+ 0xa1,0xf2,0x7e,0x5f,0x65,0xc8,0x4c,0xd4,0x9d,0x78,0x7e,0xc4,0x3f,0xca,0x25,0xa5,
+ 0x54,0x73,0x73,0xed,0xc6,0xeb,0x0f,0xd8,0x2f,0xe4,0x8c,0xa0,0x59,0xb7,0xc8,0x58,
+ 0xca,0x3b,0x60,0xbe,0x25,0x94,0xe6,0xdb,0xfb,0x44,0xa3,0x76,0xe2,0xf9,0x39,0xfe,
+ 0x39,0x28,0x39,0x57,0x99,0xdd,0xd8,0xdf,0x32,0xfb,0x9d,0x39,0x7f,0xaf,0xf1,0xb2,
+ 0x3c,0x99,0x31,0xff,0x47,0xd0,0x6c,0xb4,0xab,0xae,0x88,0xd5,0xff,0x23,0xb8,0xb9,
+ 0xbd,0x10,0xa6,0x09,0xb7,0x8f,0xd3,0x30,0xd9,0x9b,0x87,0xd6,0xba,0x8d,0x48,0x8c,
+ 0x7c,0xf0,0x85,0x6d,0x11,0x67,0x80,0x6e,0x99,0x92,0x1f,0xb7,0x17,0xe2,0xcc,0xc5,
+ 0xd9,0xf2,0x5b,0x51,0x51,0xe6,0x41,0x7a,0x2f,0xed,0x92,0xdc,0x46,0xc6,0x7c,0xbc,
+ 0x12,0x41,0xf9,0x13,0x50,0xd6,0x59,0xf8,0x51,0x8f,0xae,0xd6,0x46,0x61,0x3e,0x4f,
+ 0x82,0xfb,0x17,0x65,0x53,0x68,0xfe,0x19,0xb3,0x2d,0xda,0x45,0x58,0xdc,0x6b,0x1f,
+ 0x2e,0x18,0x82,0x37,0x05,0x54,0x3d,0x5b,0x52,0xea,0x23,0xa1,0x12,0xa7,0x37,0x1b,
+ 0x8e,0x7a,0x71,0x4c,0xbf,0x34,0xb7,0xea,0xcd,0x79,0x86,0x38,0x4c,0xaf,0x40,0x55,
+ 0x9f,0xe3,0x7c,0xce,0x18,0x1f,0x70,0x6a,0xb4,0xb5,0x3e,0x24,0xf7,0xff,0xe0,0xc5,
+ 0x38,0x2a,0xe5,0xcb,0x9e,0xd2,0x01,0x47,0x8f,0xe8,0x85,0x31,0xa9,0x94,0x3a,0x46,
+ 0x6a,0xae,0xe0,0x41,0x2b,0x1d,0x6e,0xfd,0xf5,0x94,0xfe,0x68,0x87,0xc3,0x9c,0xfd,
+ 0xb5,0x45,0x65,0x91,0x6a,0x44,0x77,0x6b,0x9d,0x25,0x50,0x5e,0xef,0x54,0xe5,0x6e,
+ 0x4e,0xa4,0x37,0xd4,0x9e,0xc0,0x56,0x6b,0x7f,0xb4,0x34,0x33,0x5f,0xa9,0x56,0xae,
+ 0x20,0xb5,0x1e,0xdd,0xa3,0x06,0x96,0x64,0xa3,0x01,0x36,0xdf,0xe5,0x0a,0x9a,0xf9,
+ 0x17,0x5d,0x9a,0xab,0xcf,0xe6,0x4c,0xe9,0x8f,0xc6,0xf1,0x4f,0x49,0xa8,0x25,0x6a,
+ 0x5b,0x09,0x8d,0xac,0xa8,0x41,0xee,0x36,0xdc,0xca,0x41,0xa3,0x48,0x1f,0xaf,0xb7,
+ 0x50,0x64,0x20,0x7e,0xb0,0xf4,0x47,0x33,0xf7,0x8f,0xcf,0xe3,0x38,0x2b,0xae,0xa4,
+ 0x63,0xbc,0x9a,0x68,0x44,0x54,0xd9,0x88,0x71,0xc8,0x63,0x3a,0x4e,0x47,0xb4,0x0a,
+ 0x23,0x6b,0x9b,0xa8,0xa4,0xd6,0x47,0x82,0xaa,0x6a,0x44,0x83,0x31,0xb8,0x0d,0x61,
+ 0x90,0x23,0xf8,0x85,0x8b,0xda,0x9f,0x68,0x19,0x38,0x12,0xfe,0x8d,0xbf,0xe2,0x15,
+ 0x39,0x52,0xeb,0x23,0x5d,0xe2,0xdd,0x9d,0xba,0x6a,0x4a,0xe0,0x2d,0xcd,0xbb,0xc6,
+ 0xde,0xd4,0xe8,0x64,0x23,0x9a,0x4f,0x31,0xfb,0x7f,0x9d,0x0f,0x76,0xbd,0x9b,0x1a,
+ 0xff,0x32,0xfd,0x81,0x25,0xb5,0x72,0x5b,0xb8,0x48,0x3a,0xbe,0xdc,0xb9,0x19,0xda,
+ 0xc2,0x73,0xb9,0x86,0x5a,0x00,0xe6,0xf3,0x33,0x62,0xd4,0x3e,0x4b,0xbc,0x29,0xf1,
+ 0x2f,0x5c,0x9f,0x0e,0x79,0x9b,0x2d,0xa4,0x6e,0x61,0x6a,0x3f,0x2d,0xb4,0xf5,0xf0,
+ 0xa6,0x62,0xba,0x99,0x4f,0x11,0x13,0x9c,0x86,0xb0,0xd6,0x82,0x7f,0x78,0xfc,0xeb,
+ 0x40,0xb8,0x38,0x24,0x9f,0x21,0x5f,0x85,0xb5,0xac,0x60,0x80,0x2e,0x4f,0x7f,0x1d,
+ 0x9e,0x8d,0x16,0x0f,0xd0,0x35,0xe9,0xef,0x48,0x07,0x1a,0x10,0x2a,0xd4,0xa5,0xe0,
+ 0x1f,0x3b,0x7c,0xca,0x2a,0x4f,0x3a,0xbc,0xe2,0x2a,0xf8,0x35,0x8f,0x76,0xed,0x10,
+ 0x0d,0x2d,0x46,0x2b,0xef,0xb5,0x7b,0xc4,0x93,0x70,0xde,0xf0,0xf4,0x65,0x7a,0x6a,
+ 0x2c,0xf8,0xe7,0x26,0xee,0xff,0xa9,0xaa,0x9d,0x56,0x2f,0xee,0xe3,0xdd,0x72,0x7b,
+ 0xe6,0x0d,0x8b,0x0b,0x94,0x51,0xb3,0x62,0x92,0x30,0x06,0xbf,0x13,0x12,0xf5,0x91,
+ 0x52,0xea,0x03,0x5c,0x82,0x47,0x10,0x5f,0x89,0x2a,0x07,0x8a,0x46,0x89,0x51,0x30,
+ 0xa4,0x5f,0x81,0xbd,0x21,0x73,0x7d,0xf8,0x15,0xde,0xdf,0xf9,0x9a,0xfa,0x00,0x72,
+ 0x7d,0x76,0x6e,0xda,0x3e,0x61,0x05,0xaf,0xae,0xff,0xdb,0xe8,0x01,0x30,0xfb,0x83,
+ 0xbc,0x8d,0x4b,0xb1,0x93,0x17,0xda,0xf5,0xa6,0xd6,0x07,0x60,0xc5,0xa1,0x13,0x23,
+ 0xd9,0xd7,0xc1,0x7e,0x56,0x80,0xf8,0x27,0xfc,0x0e,0x8b,0x31,0x57,0x3d,0x0f,0xfc,
+ 0xe1,0xaf,0xe6,0xc6,0x6f,0x28,0x27,0x9e,0xa9,0xf9,0x71,0x5f,0xe5,0xd1,0xd5,0x5a,
+ 0xee,0x98,0xb5,0xb5,0x91,0x57,0x5e,0x3c,0xb8,0x9c,0x3e,0x64,0xf3,0x98,0xfd,0x97,
+ 0x8b,0x8c,0x1b,0xca,0x6c,0xd9,0x29,0xf5,0x01,0x2e,0x42,0x55,0x2c,0x33,0x2e,0x57,
+ 0xc0,0x95,0xf8,0x5e,0x96,0x35,0x24,0xfe,0x11,0xae,0x34,0xdc,0xa8,0x67,0xe9,0x28,
+ 0x88,0x3e,0x4f,0xab,0x68,0xc0,0x2b,0x15,0xa9,0xf5,0x01,0x78,0x36,0x5c,0x13,0xaf,
+ 0x06,0x60,0xf7,0x29,0xb7,0xaf,0xe3,0x6e,0x9f,0x9a,0x32,0x25,0x83,0xf1,0xc6,0x61,
+ 0xac,0x4c,0x49,0x6b,0xb8,0xa6,0x3e,0x80,0x4f,0x5b,0xa6,0x88,0x4f,0xb1,0x51,0xe6,
+ 0x0c,0xd9,0xb7,0xc8,0x73,0xd8,0x31,0xd5,0x89,0x6a,0xae,0x86,0xd7,0x47,0xf2,0x86,
+ 0x56,0xe7,0xa5,0xd4,0x87,0x1c,0x8f,0x7f,0x6d,0xb3,0x15,0xb2,0x83,0x7d,0x65,0x2b,
+ 0x5c,0xdb,0x9d,0x0e,0xde,0xe8,0xe4,0xde,0x8c,0xa8,0xc9,0x00,0x6f,0x0f,0x05,0xb6,
+ 0x4f,0xe9,0x0f,0x82,0xf3,0x5f,0xba,0x71,0xcb,0x86,0xdd,0xf4,0xb0,0x5a,0xf4,0x12,
+ 0x8d,0xda,0x0a,0x49,0x73,0xc2,0xed,0x83,0xf3,0x9b,0x9c,0xb5,0xae,0xfd,0xa9,0xfd,
+ 0x61,0x13,0x45,0x90,0x78,0x59,0x24,0x13,0x08,0x2d,0xe0,0x8a,0x5e,0xeb,0xe4,0x6e,
+ 0x10,0x5e,0x4a,0x91,0xf7,0x87,0xbd,0x81,0x08,0x13,0xeb,0x99,0xa8,0x0f,0xe0,0xe3,
+ 0x4e,0x1e,0x54,0xc4,0xe9,0x15,0x89,0xfe,0xa4,0xc7,0xc1,0x2c,0x8b,0x6d,0x32,0xc6,
+ 0x79,0xeb,0xe4,0x92,0x24,0xfe,0xb9,0x1e,0x5f,0x4a,0xa8,0x0a,0x2e,0x3b,0x2d,0x5e,
+ 0x90,0x2e,0x6b,0xb7,0x26,0xea,0x43,0x5e,0xd5,0x16,0xf2,0xc2,0x41,0x08,0x75,0xfc,
+ 0xb3,0xf8,0x95,0x94,0xfa,0x48,0xdc,0xff,0xa3,0x39,0x2e,0xd4,0xe4,0x4a,0x97,0xed,
+ 0xa5,0x5a,0xd6,0xe9,0x1a,0xc4,0x3f,0x9a,0x99,0x36,0x88,0xf3,0xa9,0x49,0x1d,0x9f,
+ 0x33,0xa5,0x3e,0x40,0x09,0xb4,0x34,0x11,0x95,0x75,0x6b,0x4e,0x5b,0xa6,0xee,0x54,
+ 0x39,0x63,0x5c,0xa1,0x2c,0x1b,0x7f,0xc5,0x2b,0x06,0xac,0xb3,0x59,0xfb,0xc3,0xe2,
+ 0x4b,0x11,0x77,0x70,0xc9,0x75,0x77,0xbd,0xa4,0xee,0x71,0x39,0xf9,0x8b,0x23,0x22,
+ 0x0a,0x71,0xe0,0x97,0xdd,0x2b,0xe0,0xfb,0xde,0x45,0x95,0x70,0x6a,0x7f,0xd8,0x83,
+ 0x02,0xca,0xb7,0x68,0xfa,0x00,0xdb,0x23,0x39,0xab,0xef,0x8c,0xda,0x3a,0xe8,0x61,
+ 0x85,0x24,0x10,0xe9,0x41,0x94,0xcf,0x91,0x1f,0x59,0xfb,0xc3,0xe6,0x22,0x9e,0x11,
+ 0xca,0xd6,0x6c,0xda,0x92,0x33,0x00,0xdf,0x8f,0x78,0xd6,0x38,0xb6,0x23,0xd0,0x1d,
+ 0x65,0x5d,0x9a,0xdb,0xac,0x7f,0xa5,0x20,0x22,0xda,0x26,0x26,0xe3,0x5f,0x9d,0xa6,
+ 0xbf,0xa8,0x44,0x73,0xdc,0x80,0x30,0x6f,0xd4,0x38,0xf2,0xed,0x57,0xb3,0x1b,0x57,
+ 0xc1,0x68,0x6b,0x65,0xdf,0xb2,0xa8,0x80,0xf3,0x39,0xfe,0xd9,0x26,0x27,0xfd,0x0f,
+ 0xe3,0xfc,0x70,0xd8,0xd4,0xb4,0x44,0x65,0x7d,0x37,0x78,0x73,0xed,0xe6,0xc6,0xd3,
+ 0x12,0x89,0x8a,0x30,0x8c,0xa2,0x64,0x53,0x58,0x4c,0xed,0x8f,0x76,0x88,0xcc,0x8b,
+ 0xca,0x1f,0xe1,0x52,0x6d,0x64,0x05,0xcc,0x35,0x48,0x06,0xe9,0x11,0xe6,0x64,0x4b,
+ 0x38,0x22,0x3a,0x24,0x15,0xb0,0x25,0x03,0x7e,0xdb,0xc4,0x71,0x07,0x77,0x42,0xfe,
+ 0xb8,0xe5,0x32,0xdb,0x52,0xde,0x6d,0x27,0x48,0xa7,0x2b,0xa7,0xb4,0x83,0x9a,0x99,
+ 0x96,0x7b,0x12,0xf6,0x30,0xd5,0x40,0xc1,0x9e,0xec,0x0f,0x32,0xce,0x0f,0x67,0x72,
+ 0x90,0xfc,0x90,0x87,0x81,0x12,0x65,0x3d,0x9e,0xa5,0xbb,0xfa,0x79,0x44,0x1b,0x4a,
+ 0xfd,0xf9,0x47,0xe5,0xef,0x59,0xe3,0x5f,0x66,0x7d,0x80,0xc5,0x21,0xc7,0xa0,0xf8,
+ 0x35,0xdb,0xc7,0x6c,0x6f,0xc8,0x1e,0x10,0x39,0x51,0x7c,0x7e,0xbb,0x63,0x8d,0xc8,
+ 0x1b,0xa5,0xed,0x89,0x3b,0x46,0x64,0x5b,0x0a,0x3f,0x9c,0xc7,0xbf,0x36,0x31,0x79,
+ 0x1f,0xea,0xdf,0x1f,0x6a,0x28,0xa8,0x87,0x62,0x97,0xa1,0x6c,0x9b,0x23,0xc6,0x1b,
+ 0xa1,0xa6,0x9b,0xf5,0xca,0x92,0xfe,0x1f,0x6d,0xc6,0x3b,0xbc,0x9b,0xa7,0x6a,0x1f,
+ 0x11,0x7d,0xd2,0x55,0x36,0x9f,0x67,0xc3,0x5d,0xe1,0x8c,0x68,0xde,0xd6,0xe1,0x8a,
+ 0x86,0xaa,0xed,0x3d,0x7b,0xb7,0xb5,0x3f,0xda,0xf5,0xdb,0xe1,0xd7,0xf8,0xfc,0x79,
+ 0xf7,0xda,0x66,0xd2,0x03,0x4a,0xbe,0x91,0x69,0xe2,0x99,0x48,0xb1,0x96,0xf9,0xa0,
+ 0x59,0x1f,0xa9,0xb8,0x27,0xf2,0xfd,0x94,0xfa,0x90,0xdc,0x4d,0x5d,0xac,0x65,0x84,
+ 0xb2,0xb6,0x69,0x07,0xa0,0x40,0x43,0xbc,0x74,0x5a,0xdd,0xa7,0x16,0x03,0x97,0x57,
+ 0xca,0x01,0xa5,0x58,0x0b,0xd4,0x87,0xd3,0x27,0xbf,0x17,0x8f,0x7f,0x6d,0x05,0x77,
+ 0xf8,0x7a,0x20,0x11,0xa9,0x5b,0x53,0xbb,0x11,0xff,0xbc,0x04,0x7b,0xf5,0xd5,0x79,
+ 0x19,0xb8,0x9e,0xca,0x5e,0xa5,0x04,0x28,0xb5,0xe5,0x35,0x4d,0xe6,0xc7,0xcd,0x68,
+ 0xe5,0xdd,0xbe,0xd4,0x62,0x8f,0xbc,0x1b,0x3f,0x74,0x8c,0xb6,0x46,0xc5,0x8f,0xe1,
+ 0x60,0xaf,0x6f,0x90,0x07,0xb6,0x32,0xf9,0x52,0xa0,0x69,0x69,0x4b,0xa9,0x0f,0x80,
+ 0x17,0xf5,0x8d,0x3f,0x22,0xdf,0x52,0x47,0xee,0x45,0x41,0xd4,0x86,0xf6,0xd7,0xa8,
+ 0x36,0xcb,0x2c,0xdc,0x27,0x7c,0x4a,0x7d,0x86,0x59,0x78,0xcd,0xca,0x0f,0x7f,0x95,
+ 0x7b,0x17,0x07,0xe5,0x4a,0xe5,0x64,0x5f,0x29,0x64,0x6a,0x62,0x39,0x7c,0x06,0xa5,
+ 0xe3,0xfd,0x20,0xd4,0x52,0x5e,0x3a,0x4f,0x4d,0xa9,0x0f,0xf0,0x33,0x52,0xa2,0x2c,
+ 0x89,0xe3,0x27,0x69,0x35,0xca,0xbc,0x74,0xfb,0x96,0xb9,0x4d,0xdd,0x61,0x67,0x7a,
+ 0x42,0xff,0x32,0x67,0x21,0x8d,0xdc,0xa5,0x86,0x2c,0xfc,0x70,0xee,0xa6,0x20,0x37,
+ 0xee,0xd9,0xe2,0x56,0x23,0x9a,0x73,0x47,0x46,0x37,0x71,0xc3,0x21,0xb6,0x72,0xb2,
+ 0x3e,0x52,0x0f,0xed,0x0e,0xab,0xd6,0xfc,0x38,0xd8,0xa9,0xb9,0x61,0x09,0x23,0x94,
+ 0x84,0xa5,0x39,0xd5,0x14,0x70,0x33,0xc6,0x54,0x15,0xe4,0x84,0x7c,0x56,0x8d,0x08,
+ 0xb4,0x5b,0x18,0x5e,0x74,0x75,0xde,0x09,0xcd,0x57,0xed,0x50,0x64,0x17,0x4f,0xab,
+ 0xe1,0x69,0xa1,0xaa,0x30,0x42,0xbc,0x3d,0x89,0xc0,0xa8,0xe6,0x31,0xdc,0x5d,0xa2,
+ 0x9a,0xcc,0x8f,0xbb,0xde,0x74,0x62,0xc0,0x32,0x43,0x1c,0x91,0xc6,0xc6,0xeb,0x43,
+ 0xc2,0x48,0xad,0x59,0x16,0x60,0x4c,0xba,0x5a,0xf4,0x3c,0xcc,0x4b,0xc1,0x3f,0x26,
+ 0xff,0xa7,0xaa,0xdf,0xde,0x23,0xde,0x0f,0x0f,0x33,0xaf,0x9a,0x79,0x4c,0x46,0xfc,
+ 0xc3,0x7c,0xba,0xfd,0x0c,0x59,0xa0,0x5d,0x51,0x70,0xc7,0x76,0x5b,0xf9,0x3f,0x79,
+ 0x1f,0xc1,0x25,0x36,0xaf,0x97,0x86,0x49,0x55,0xa0,0x9b,0x15,0xa9,0x32,0x21,0x73,
+ 0xa0,0x9b,0x95,0xe8,0xae,0x6d,0xe4,0x49,0xe3,0xd0,0xf7,0x9c,0x01,0xdb,0xd4,0xfa,
+ 0x48,0x78,0xbe,0xfa,0x78,0x3d,0x70,0xa9,0x9b,0x85,0xd4,0xeb,0x19,0x01,0x29,0x0a,
+ 0xab,0x59,0x5f,0xd4,0x29,0x09,0x5d,0x4c,0x5f,0x19,0xf0,0x58,0xfa,0x33,0xf2,0xfc,
+ 0xb8,0x9f,0x49,0x25,0xbc,0x5a,0x82,0x1b,0xba,0x55,0x27,0xdc,0x88,0x66,0x1d,0xfc,
+ 0x14,0x1e,0xd0,0x51,0xfe,0x3c,0x65,0xd6,0x07,0xb0,0x59,0xeb,0x23,0x41,0x1a,0x5f,
+ 0x64,0x9f,0x61,0xdf,0xf8,0xf5,0xd5,0x10,0x63,0x5d,0x1d,0x99,0xae,0x9c,0x22,0xed,
+ 0x8d,0xf0,0xc3,0x23,0xf6,0x6d,0xc2,0x2d,0x6c,0x84,0x79,0x57,0xd9,0xad,0xf9,0x71,
+ 0xe3,0xf8,0xc7,0x70,0xb4,0xca,0x63,0xea,0x65,0x36,0xde,0x16,0xe4,0xf2,0xed,0x38,
+ 0x78,0x5b,0xbc,0xa0,0xe2,0x8a,0x85,0xae,0xa9,0x8f,0x84,0xfb,0x2d,0x6e,0xdf,0xc7,
+ 0xd3,0xe2,0x72,0xf1,0xf4,0x35,0x89,0x6e,0x5e,0x18,0xa7,0xdf,0x8e,0x86,0x1b,0x39,
+ 0x4e,0x51,0x50,0x5f,0x13,0xff,0xc2,0x25,0xc6,0xa7,0xad,0xe2,0xf9,0xf2,0xbc,0xd0,
+ 0x5c,0x09,0x1c,0xee,0xcb,0x32,0xe8,0x36,0x72,0xae,0x70,0x03,0x73,0xae,0xa4,0x53,
+ 0xea,0x43,0xc2,0x5e,0xa9,0xe4,0x05,0x34,0xc3,0x97,0x91,0x9d,0x4d,0x66,0xff,0x4a,
+ 0x22,0x75,0x1d,0x77,0x33,0xba,0x2d,0xfc,0x22,0xfc,0x44,0x6b,0xe7,0x1d,0x63,0x53,
+ 0xeb,0x23,0x1d,0x60,0xdf,0xe1,0xfe,0x90,0x59,0xe1,0xc7,0xf4,0xe2,0xd0,0x8d,0x7f,
+ 0x63,0xe3,0xc0,0x60,0xde,0x6e,0xfa,0x77,0xe1,0x77,0x60,0x16,0xdb,0x19,0xa2,0xdf,
+ 0x4f,0xad,0x8f,0xa4,0x7c,0xca,0xd7,0x47,0x95,0xef,0xd1,0xcf,0x86,0x2b,0x3f,0x76,
+ 0x54,0x8a,0x36,0x63,0x78,0x73,0xe5,0x2f,0xdc,0x37,0xe2,0x31,0xb9,0x97,0x7a,0x34,
+ 0x7b,0xc5,0x94,0xfa,0x48,0xb8,0x3e,0xaf,0x4d,0x8b,0xff,0xd5,0x87,0xea,0x87,0xf4,
+ 0xe6,0x1e,0xc7,0xde,0x9a,0x11,0xb8,0x9a,0xbb,0xd8,0x6c,0x94,0x26,0x9d,0x33,0xeb,
+ 0x4b,0x4c,0x9b,0x82,0x7f,0xc8,0xac,0x41,0x94,0xf6,0x3e,0xf6,0x41,0xe8,0x91,0x3c,
+ 0x87,0x5a,0xa0,0x1a,0x97,0xd4,0x4a,0x3c,0x56,0x05,0x2e,0x38,0x2f,0x94,0x69,0x8e,
+ 0x6e,0xd9,0x8a,0x7f,0x66,0x2a,0x07,0x60,0x5e,0x1f,0x1d,0x9e,0x53,0xc9,0x7e,0xe3,
+ 0x59,0x5c,0x8b,0x62,0x33,0x57,0x3f,0x90,0x51,0x5c,0x4d,0x79,0x7d,0xfe,0xfd,0xb0,
+ 0x83,0xfb,0x93,0x93,0xf8,0xa7,0x27,0x81,0x7f,0xf0,0x7d,0x57,0xfa,0xa4,0x75,0x6c,
+ 0x76,0xc7,0x92,0x41,0x32,0x0b,0xf6,0x45,0x8b,0x79,0x5b,0x90,0x59,0xf0,0x3c,0x9b,
+ 0x1d,0x92,0xd7,0x5c,0x8b,0x7f,0x8c,0xc8,0x02,0x62,0x87,0xad,0x6a,0xa0,0x1f,0x8f,
+ 0xa1,0xa3,0x70,0x2f,0x2a,0x7a,0x94,0x3f,0x0f,0x54,0xef,0xd5,0xb8,0x63,0x8d,0x58,
+ 0xf0,0xcf,0x8f,0x3a,0x13,0xdd,0x60,0xe3,0xa2,0x0b,0x9e,0x81,0x39,0x1d,0xcb,0x86,
+ 0x6e,0x74,0xa9,0x17,0x95,0xc5,0x4f,0xb9,0x3b,0x6b,0x10,0x11,0xc1,0xff,0xe0,0x89,
+ 0x90,0xd7,0xe0,0x1f,0xd4,0x3e,0xb2,0x39,0xc8,0x75,0x34,0x8c,0x87,0xbd,0xee,0x59,
+ 0x6b,0x36,0x0a,0x39,0x42,0xfe,0x4c,0x7d,0x24,0x6e,0xef,0x37,0xce,0x61,0xa3,0xaa,
+ 0x2f,0xb4,0x29,0x8a,0xfa,0xae,0x59,0xf0,0x85,0xec,0x51,0x5e,0x1f,0xa9,0xe8,0xd0,
+ 0x94,0xfe,0xb0,0x13,0xf8,0x87,0xd7,0x87,0x44,0x20,0x7d,0x01,0x07,0x99,0x5c,0xc2,
+ 0x68,0x34,0x37,0x3c,0x5b,0x7a,0x43,0x70,0x86,0x5c,0xd7,0xe4,0xc7,0xf1,0x6c,0x14,
+ 0x85,0x24,0x88,0x40,0x4b,0xa2,0x37,0xbc,0x07,0xbb,0xe0,0x01,0xde,0xc6,0xab,0x90,
+ 0x35,0xd3,0x22,0xde,0x6a,0xed,0xa5,0xa9,0xf8,0xa7,0x7e,0x49,0xae,0x5f,0x82,0xf9,
+ 0x9c,0xf8,0x91,0x4b,0x3a,0xc8,0x4e,0xa1,0x44,0xd3,0xa3,0xb6,0x4c,0xd8,0xac,0x4d,
+ 0xa9,0x8f,0xd4,0x3d,0x8e,0x7f,0x38,0xed,0xc7,0x1c,0x9c,0xe0,0x6a,0x37,0x51,0x28,
+ 0x52,0xe4,0xfe,0x9f,0x43,0x2c,0xb5,0x3f,0x6c,0xe6,0x40,0xa2,0x1b,0xec,0x69,0xf9,
+ 0x3d,0x04,0x06,0x8f,0x68,0x8e,0xfe,0x9a,0x55,0xf0,0x86,0x64,0x36,0x7e,0xe5,0xf5,
+ 0x21,0x9f,0xd7,0x1c,0x8a,0x05,0xff,0x6c,0x33,0xf9,0x3f,0x8b,0xab,0xed,0x51,0xe1,
+ 0x02,0xef,0xf7,0x9d,0x28,0x24,0x85,0x57,0x34,0xa9,0x9f,0x7c,0xc6,0xe5,0x73,0xbf,
+ 0x9b,0x3b,0xca,0xa6,0xe0,0x9f,0x4a,0xfa,0x14,0x39,0x4b,0xbb,0x79,0xfd,0x10,0xb2,
+ 0x81,0xd7,0xc7,0x36,0xcb,0x02,0xe0,0xaf,0xea,0x79,0xc6,0x9c,0x78,0xcf,0xe4,0x7a,
+ 0x42,0xa2,0x3e,0xb6,0x1f,0x57,0xaf,0x57,0xdb,0x23,0xad,0xe6,0x30,0x4f,0xe2,0x0c,
+ 0x0d,0x9e,0x21,0xf8,0x0a,0xec,0xb1,0x3b,0xef,0x44,0x20,0x34,0x05,0xff,0xc0,0x03,
+ 0xd5,0xd1,0x04,0xda,0x79,0x80,0xcf,0x77,0x4b,0x07,0x95,0x12,0xcd,0x65,0x5e,0xd1,
+ 0xda,0x39,0x10,0xba,0x63,0x8a,0xff,0xc7,0xa7,0x49,0xdb,0xb3,0xcd,0xc1,0x8a,0x4d,
+ 0x51,0xf1,0x96,0xc2,0x51,0xb1,0x72,0x25,0xc7,0x6f,0xea,0x28,0xf3,0xd6,0xda,0x15,
+ 0xc4,0x3f,0x93,0xfa,0x77,0xdc,0xff,0xf3,0x6f,0x5b,0xc4,0x01,0x3a,0xaa,0x97,0x05,
+ 0x36,0xf1,0x32,0x08,0xa3,0x92,0xd9,0x3f,0x77,0x00,0x3e,0xc1,0x1d,0x32,0xa5,0x3e,
+ 0x64,0x62,0xd9,0xed,0x4c,0x0e,0xd1,0xbe,0x7c,0x4e,0x04,0x92,0x11,0x11,0x65,0x54,
+ 0x64,0xbb,0xd1,0x18,0x50,0x47,0x54,0x2f,0x49,0xad,0x0f,0x29,0xf0,0xf8,0x97,0xa3,
+ 0x2d,0x53,0x27,0x8b,0x60,0x83,0x51,0xd2,0xdc,0xa2,0x17,0xb9,0xe8,0x07,0xd5,0xf3,
+ 0xa2,0x74,0xc0,0x3b,0xaa,0x98,0x85,0xe8,0xe3,0xd6,0xfa,0x48,0x89,0xfe,0xb0,0xfc,
+ 0x50,0xd8,0x59,0xa3,0xb6,0x1a,0x61,0x8f,0x6d,0x53,0xef,0x5e,0xbf,0x2b,0x9e,0xb1,
+ 0x20,0xfc,0x0a,0x4f,0x35,0x7d,0x51,0x56,0xa7,0xf4,0x07,0xe1,0xf6,0x4b,0xcb,0x1a,
+ 0x72,0x33,0x59,0x9b,0x91,0xa9,0xc9,0xf5,0x08,0x24,0x9e,0x16,0x8a,0x8f,0x66,0xd4,
+ 0xa3,0xd8,0x89,0x69,0x3b,0x34,0x39,0x94,0x5a,0x1f,0x49,0xe1,0xdd,0x60,0xe5,0xb1,
+ 0xad,0xb3,0x94,0x97,0x23,0x37,0xbd,0xeb,0x48,0xd4,0x47,0xba,0x2d,0x9e,0xb9,0x46,
+ 0x7c,0x13,0x2e,0x34,0xcd,0xd7,0x1d,0x75,0x29,0xfd,0x41,0x4c,0x79,0xab,0x35,0xc7,
+ 0xc4,0x26,0x3e,0xe0,0x6e,0x9f,0x21,0xb8,0x48,0x7c,0xda,0x3d,0x3c,0x22,0x76,0x91,
+ 0x6b,0x34,0x2b,0xfe,0xe1,0xf6,0xfb,0xa5,0x68,0x15,0xef,0x0f,0xbb,0x1f,0x96,0xfc,
+ 0xa8,0x64,0x60,0xe9,0x58,0x4b,0x81,0x76,0xb1,0xd7,0x67,0x16,0x0a,0x40,0x7c,0x75,
+ 0x4b,0x07,0x42,0xaf,0x7e,0x4b,0x7d,0xec,0xed,0xda,0x01,0xbd,0xb8,0x97,0x3e,0x44,
+ 0xb2,0xb4,0x46,0xbd,0xb8,0x2e,0xb3,0x9c,0xd8,0xb4,0x3d,0x0d,0xff,0x1c,0x92,0xcb,
+ 0xf1,0xf9,0xf7,0x29,0xbc,0x50,0xff,0xd4,0xfa,0x48,0x8a,0xdb,0xa0,0xc3,0xd9,0x6d,
+ 0xb0,0x5e,0x99,0x17,0x68,0x46,0xc3,0x2d,0xba,0x5f,0x2a,0xc6,0x17,0x27,0x67,0xb4,
+ 0x5f,0xc2,0x93,0xbc,0x3e,0x69,0x32,0xfe,0xa5,0x26,0xe4,0x0f,0xd0,0xf9,0x04,0x6c,
+ 0x8d,0x7c,0xe3,0xe1,0xc2,0x52,0xb4,0xd7,0xb8,0xbd,0xdf,0x27,0xec,0x0d,0xa8,0x31,
+ 0x5c,0xcf,0x64,0xfc,0xbd,0x2e,0xe1,0xef,0xd2,0xdc,0x23,0xe2,0x6e,0x40,0x45,0xdf,
+ 0x33,0xf7,0xb3,0x9c,0x62,0x6d,0xf4,0xee,0x07,0xce,0x38,0x18,0xf9,0x18,0x81,0xee,
+ 0xfe,0xb8,0x43,0x9f,0x76,0x6a,0x2a,0xfe,0xe1,0x49,0x5e,0xaf,0xc0,0x68,0xc8,0x1c,
+ 0xbc,0x27,0xe1,0x95,0x7e,0x47,0x47,0xcd,0x47,0x08,0x84,0x7c,0x81,0x4d,0xba,0xa5,
+ 0x3e,0x92,0xc1,0xeb,0x23,0xc1,0xe2,0x7a,0x7b,0xbd,0xb8,0x1a,0x81,0x50,0x15,0x9b,
+ 0xc6,0xb5,0xdb,0xe5,0x48,0xe9,0x0b,0x8e,0xfe,0x5b,0x66,0xf2,0xf8,0x0e,0x8f,0x30,
+ 0x26,0xf5,0x75,0x03,0xf0,0x78,0x56,0xc9,0xb0,0x2b,0x26,0x7e,0x83,0x8b,0x9d,0x28,
+ 0xca,0xcf,0xdf,0x43,0x17,0xb4,0x9f,0x95,0x5d,0x7e,0xb7,0xbf,0x21,0x5f,0x2f,0x74,
+ 0xe9,0xd7,0xf0,0x7f,0x4a,0x82,0xbc,0xbf,0x1e,0x44,0x5c,0x25,0x47,0x6f,0xe4,0xd5,
+ 0x03,0xba,0xd5,0x39,0x4e,0xb9,0x95,0xac,0x56,0x9f,0x61,0xce,0x86,0x3c,0x3d,0x3b,
+ 0xc5,0xff,0x23,0xec,0xcd,0x37,0xab,0x25,0x2c,0x3d,0xca,0xaa,0xdd,0x5a,0xcb,0x82,
+ 0x70,0x8f,0x7a,0x10,0xe1,0x41,0x4b,0x7e,0xd8,0x4e,0x1b,0x25,0x9d,0xd1,0x42,0x8b,
+ 0xfc,0x61,0x99,0xab,0xcd,0xea,0x07,0xf6,0x61,0x71,0xb6,0xde,0xc7,0x0d,0xcf,0x7f,
+ 0xe4,0xf5,0xe8,0xa0,0x6c,0xe6,0xb2,0xb0,0xbc,0x1a,0x8e,0x4b,0x68,0x7f,0x75,0x88,
+ 0xf1,0x54,0xff,0x4f,0x82,0xff,0x33,0x00,0x63,0xda,0xe2,0xac,0x9b,0x63,0xe2,0xb0,
+ 0x32,0x66,0x47,0x44,0xd4,0x3e,0xed,0x82,0x74,0x85,0x67,0x08,0xc6,0x2d,0xf8,0xe7,
+ 0x68,0xda,0x15,0xe5,0xaa,0xa7,0x54,0x47,0x58,0x3e,0xcc,0x4e,0x69,0xa5,0xc3,0x59,
+ 0xcb,0x45,0x0f,0xbc,0x8a,0x3b,0xca,0xd1,0x23,0xfa,0x60,0x2c,0xba,0x30,0x6e,0x3f,
+ 0x5a,0x60,0xe9,0x0f,0x8b,0xf8,0xe7,0x70,0xd0,0x19,0x89,0x74,0xa6,0xff,0x1e,0x36,
+ 0x04,0x9d,0x5a,0xa0,0x9b,0xe4,0x9b,0x44,0x1d,0x79,0x2d,0x2a,0xfa,0x6e,0x70,0xc6,
+ 0xe9,0x2e,0xe2,0x49,0xf6,0x87,0x05,0xb3,0x5e,0x44,0x63,0x04,0xfc,0x71,0x3f,0x53,
+ 0x9d,0x7d,0x77,0xc5,0x08,0xf4,0xed,0x54,0x51,0xf0,0x12,0xa7,0x1d,0xba,0x9d,0x85,
+ 0x46,0x9d,0x27,0x3b,0xd9,0x1f,0x36,0x2e,0x99,0xf1,0xaf,0x1d,0xae,0xdd,0x64,0xd0,
+ 0x6f,0x56,0x17,0x8f,0x1d,0x77,0x2a,0x3f,0xe3,0x27,0x74,0x3b,0x47,0x44,0x09,0xfe,
+ 0x55,0xf9,0xa4,0x7c,0xa8,0x9e,0xc1,0xe3,0xa7,0x5d,0xf1,0x93,0x91,0xec,0x4f,0xd9,
+ 0x29,0xbd,0x6b,0x38,0x4b,0x11,0x6f,0x49,0x94,0x51,0xdd,0x8e,0x88,0x65,0x98,0x95,
+ 0x71,0x7e,0x6f,0xd2,0xff,0x13,0x43,0xfc,0x73,0x89,0x2f,0x82,0x91,0x33,0x02,0x8b,
+ 0xd9,0xf3,0xf5,0x8e,0x8b,0xa2,0x41,0x78,0xe1,0xd0,0x69,0x3a,0x07,0x42,0xbc,0x31,
+ 0x8d,0x6e,0x89,0x7f,0xf5,0x27,0xf8,0x3f,0x51,0xb3,0x1a,0xed,0x31,0xed,0x50,0x3f,
+ 0xa2,0xa9,0x6f,0x91,0x13,0x8a,0xd9,0x98,0x86,0x77,0x4c,0xf3,0xf1,0x7c,0xf9,0x54,
+ 0xff,0xcf,0xf3,0xbc,0x1a,0xed,0x16,0x34,0xc2,0x9b,0x41,0x1d,0xac,0x8b,0xf9,0x0b,
+ 0x02,0x6f,0xf5,0xcf,0xe9,0xe1,0xf1,0x08,0xb3,0xe3,0x12,0xda,0x53,0x65,0x16,0xfe,
+ 0x0f,0x8f,0xbf,0xe3,0x7c,0x17,0x91,0xd5,0x96,0x15,0x21,0xee,0x1d,0xb5,0x29,0x22,
+ 0x57,0x4c,0x4f,0xa3,0x06,0x8f,0xc5,0xdd,0xba,0x5c,0x19,0xf6,0x26,0xfb,0xc3,0x2a,
+ 0x5f,0xb3,0x1f,0x40,0x18,0x20,0xd7,0x91,0x43,0x24,0x1c,0x29,0x18,0xa0,0x23,0xbc,
+ 0x5f,0x6a,0x74,0x76,0x5c,0x0e,0x90,0x59,0xd2,0xbe,0x2d,0xc5,0x7a,0xcb,0x9a,0x70,
+ 0x65,0xb2,0x3e,0x00,0xe5,0x6c,0x67,0x0f,0xc8,0xaa,0x08,0x9e,0xa3,0x60,0x16,0xca,
+ 0xbe,0x3b,0xf4,0x02,0x2f,0x33,0x92,0x33,0xcd,0x0e,0xc3,0x50,0xd9,0xef,0x58,0x20,
+ 0x67,0x27,0xeb,0x03,0xcc,0xe0,0xeb,0x73,0x98,0x6f,0x92,0x33,0xda,0x15,0x40,0xd8,
+ 0x13,0xff,0xc2,0x05,0xe9,0x63,0x09,0x97,0xe5,0x57,0xd3,0xc6,0x60,0x8c,0x54,0x99,
+ 0xfd,0xd1,0xa6,0xf0,0x7f,0x7c,0x7a,0x80,0xd5,0x18,0xca,0x09,0xde,0x28,0xd6,0x23,
+ 0x2e,0x10,0x4c,0xda,0x4f,0x9c,0xfb,0xdf,0x60,0x41,0x1f,0xae,0x98,0x2d,0x89,0x7f,
+ 0xf2,0x4c,0x3e,0x21,0xa3,0x5a,0xf6,0xdb,0xd0,0x88,0x68,0x87,0xa2,0x3c,0xc1,0x15,
+ 0xdb,0x61,0x98,0x85,0xf7,0x9f,0x85,0xfc,0xa3,0x91,0x7a,0xf1,0xa1,0x64,0xfd,0xb7,
+ 0x44,0x7d,0x24,0x9d,0x06,0xb2,0x5f,0x87,0xf5,0xec,0xeb,0xbc,0x0d,0xca,0x2c,0xe9,
+ 0xe9,0x75,0xf8,0xbe,0xcb,0xc9,0x3b,0xb0,0x8f,0xcd,0xd6,0x69,0x39,0x3e,0xfd,0xc4,
+ 0xfa,0xd7,0x99,0xfc,0x1f,0x77,0x98,0x66,0x38,0x4f,0xb1,0x46,0xb4,0x5e,0x5d,0x2a,
+ 0x99,0x93,0xc6,0x19,0x0e,0x27,0x1e,0x47,0xfb,0xe2,0x70,0x48,0xcd,0xe9,0x2c,0x27,
+ 0x7f,0x6b,0xe1,0x3f,0x9b,0x42,0x75,0x0b,0x1d,0x12,0x47,0xc2,0xa7,0x02,0xa5,0xcc,
+ 0x1e,0x2a,0x58,0x84,0x57,0xca,0x98,0x63,0x48,0x1c,0x14,0xae,0xf4,0x2d,0xe8,0xb2,
+ 0x0f,0x8a,0x96,0xfe,0xb0,0x89,0xf8,0x97,0x30,0xcf,0x34,0xc3,0x03,0x26,0x10,0x3a,
+ 0x6b,0xf0,0x0a,0x42,0x9c,0x08,0x94,0x70,0x0d,0xad,0x9d,0x52,0x1f,0xc0,0xac,0x0f,
+ 0xb9,0xb9,0xb1,0x17,0x7a,0xd4,0x2e,0xb3,0x7f,0x16,0x1c,0xd3,0xf1,0xca,0x4f,0x4c,
+ 0x45,0xef,0x35,0x5a,0x95,0x94,0xfe,0xb0,0xab,0xcc,0x32,0x8f,0xf2,0x13,0xce,0x01,
+ 0xe9,0x0d,0xcd,0x2c,0x94,0xfd,0x34,0x69,0xd6,0xdb,0x35,0x79,0x5b,0xa2,0x02,0x64,
+ 0xbd,0xeb,0x27,0x44,0x4f,0xc6,0xbf,0x04,0xde,0x16,0x0d,0xad,0xad,0xa8,0xf3,0x3d,
+ 0x84,0x55,0xce,0xb3,0x19,0x51,0x9b,0x59,0x1f,0x00,0x11,0x54,0xd8,0x9c,0x5f,0x4b,
+ 0xb7,0x58,0xfa,0xc3,0xf2,0xf8,0xd7,0x41,0x04,0x39,0xa6,0xb7,0x67,0xb3,0xe6,0xfc,
+ 0x12,0xde,0xff,0x51,0x68,0x30,0x0b,0x05,0xd8,0x4c,0x6a,0x10,0x07,0x06,0x1b,0x26,
+ 0xeb,0x03,0x24,0xe2,0x5f,0x1e,0x81,0x7b,0x1b,0x08,0xef,0x06,0xc2,0xed,0x2f,0xa9,
+ 0x6f,0xbc,0x50,0x00,0x1d,0x86,0x2e,0x8e,0x7f,0xb2,0x52,0xe2,0x5f,0xa3,0x5a,0x55,
+ 0xcf,0xcd,0xfd,0x05,0x66,0x7f,0x58,0x6d,0x9c,0xf6,0xe3,0xd3,0x96,0x71,0x47,0x90,
+ 0x59,0x31,0xe9,0x82,0xb5,0x3f,0x1a,0x77,0x7a,0xa8,0x95,0x41,0x47,0x30,0xe7,0x42,
+ 0xe4,0x95,0xf2,0xf9,0xb5,0x08,0x03,0x9e,0x65,0xaf,0x68,0xb8,0x3e,0xaf,0xc9,0x85,
+ 0x66,0xa9,0x01,0xfb,0x6b,0x62,0xba,0x35,0xfe,0x05,0xdd,0x7a,0x89,0x20,0x23,0xda,
+ 0x21,0x2c,0xe4,0xa4,0xf8,0x3c,0xdf,0x0a,0x47,0xd0,0x50,0x92,0x9b,0xb2,0x55,0x94,
+ 0x27,0x3e,0xa0,0x4d,0x24,0x6b,0x52,0xfe,0x98,0xf1,0xaf,0x3a,0x3c,0x74,0x79,0x9c,
+ 0xed,0x03,0x2b,0x79,0x18,0xeb,0x45,0x5e,0x76,0x1e,0xdf,0x37,0x6c,0x02,0xa1,0x50,
+ 0xdd,0x74,0x92,0x9d,0xe4,0xff,0x48,0x1c,0xff,0x94,0x04,0xcc,0x6a,0xe4,0xbb,0xc0,
+ 0xac,0x2e,0xb5,0x8a,0x36,0x4b,0x44,0x13,0xdb,0xc6,0x11,0x26,0x1a,0x32,0x49,0x7b,
+ 0x5f,0x9f,0x6e,0xc2,0x9e,0x90,0xa3,0xad,0xe0,0xe5,0xd0,0xfb,0x67,0xbc,0xf7,0x67,
+ 0xfd,0x44,0x3c,0xc7,0xf9,0xed,0x26,0x90,0x13,0x46,0x99,0x4f,0x9b,0x89,0xa6,0xeb,
+ 0xd4,0xf8,0x17,0xaf,0x97,0x75,0x0e,0xde,0x60,0x47,0xb4,0x4d,0x5b,0xc4,0x5e,0x36,
+ 0x0a,0x47,0xaa,0x1d,0xd9,0x8d,0x7c,0xe9,0x2a,0x56,0xdd,0x6c,0xad,0x0f,0x90,0xe0,
+ 0xff,0xf8,0xa6,0x2f,0x65,0x05,0xf9,0x85,0x7d,0x5a,0x57,0x2e,0xbe,0x6f,0x08,0xce,
+ 0x24,0x0a,0x25,0x21,0x34,0x62,0x3e,0xd5,0xde,0x2a,0x92,0x94,0xf8,0x17,0xa2,0x41,
+ 0x46,0xe3,0xe2,0x0f,0x60,0x63,0x60,0x81,0x6e,0x53,0xc9,0x6d,0xb0,0xd1,0x28,0x61,
+ 0x68,0xd1,0xbb,0xe0,0x88,0x80,0x47,0x2f,0x4e,0x36,0xa4,0xc6,0xbf,0x50,0xda,0x5c,
+ 0x7f,0x3d,0xae,0x46,0xcb,0xbb,0x85,0xbc,0x91,0xc1,0x17,0xd5,0x66,0x2e,0x9f,0x67,
+ 0xa2,0xe2,0xe6,0xbf,0xe2,0x12,0x69,0x12,0xff,0x98,0xf1,0x2f,0x98,0x37,0x98,0x77,
+ 0x26,0xfb,0xbf,0xdb,0xd6,0xc2,0x2d,0x86,0x6d,0x98,0x4c,0x87,0x26,0x5a,0x6c,0xdc,
+ 0xf8,0x3d,0x32,0x53,0xe2,0xd0,0x88,0xaa,0x61,0x7d,0x32,0x1f,0x9c,0xc7,0xbf,0x10,
+ 0xff,0x0c,0xba,0x03,0xe2,0x75,0xd2,0xcb,0x4d,0xb7,0x22,0xec,0x29,0x78,0x84,0xfc,
+ 0x3b,0x67,0x44,0x9f,0x91,0x4d,0x68,0xa4,0xba,0xeb,0x44,0x4b,0x7f,0xd8,0x04,0x1e,
+ 0x38,0x8a,0xfb,0x8d,0x97,0x8d,0x3a,0xa2,0x99,0x6d,0xbb,0xc7,0xc0,0xec,0x17,0x3f,
+ 0xc4,0x2b,0x42,0x43,0x6a,0x7f,0xd8,0xb6,0x23,0x14,0xed,0xf7,0x77,0x33,0x97,0xe7,
+ 0x94,0xd9,0x4e,0xb1,0xd2,0x10,0x02,0x89,0xcf,0xb9,0x47,0x28,0xee,0xe8,0x43,0xfd,
+ 0x75,0x29,0x3a,0x9f,0xab,0xb6,0x64,0x7c,0xbc,0x53,0x49,0xf8,0x9f,0x69,0x90,0xcc,
+ 0x64,0x4d,0x5a,0x7e,0x6d,0x66,0x3d,0x5a,0x4f,0x4d,0xc1,0x62,0x43,0xac,0x26,0x33,
+ 0x11,0x1a,0xdd,0x8a,0xa2,0x49,0xfc,0xb6,0xb5,0x3f,0xac,0x39,0x3f,0x63,0x98,0xe4,
+ 0xd2,0xb0,0x52,0xa0,0xd1,0x61,0x72,0x9a,0x7b,0x84,0x0c,0x59,0x0b,0x23,0x14,0x0c,
+ 0x15,0x68,0x29,0xfd,0x61,0x0b,0xcd,0xfa,0x48,0x25,0xfd,0x94,0xb7,0x25,0x0a,0x1b,
+ 0x2b,0xd7,0xdc,0x59,0x89,0xab,0x17,0xe6,0xf2,0xdc,0x15,0xe6,0x54,0xcc,0x42,0xcd,
+ 0x05,0x24,0x90,0x7c,0x9e,0x34,0xae,0xbf,0xaa,0xce,0x64,0xe6,0x85,0x25,0xed,0x84,
+ 0xd1,0xd5,0x67,0x3f,0x20,0x0e,0x84,0x8e,0x99,0xfa,0x4b,0x76,0x73,0xd5,0xc3,0x43,
+ 0xf3,0x45,0x93,0xeb,0xc9,0xa6,0x8f,0xaf,0x4f,0xb4,0xf1,0x3d,0xed,0x93,0xa0,0x89,
+ 0x7f,0xce,0xda,0x47,0x6e,0x37,0xfb,0x35,0xe0,0xfa,0x04,0x7d,0x92,0xe3,0x39,0x0b,
+ 0xfe,0x49,0xf0,0x7f,0xaa,0x8c,0xac,0x3e,0x71,0x4e,0xfa,0xab,0x91,0xd2,0x1e,0xfb,
+ 0xb0,0x5c,0x99,0x28,0x13,0x14,0xe5,0xfe,0x9f,0x68,0x29,0x38,0x42,0x22,0x9d,0xf4,
+ 0xff,0xf0,0xf8,0xd7,0xf3,0x30,0xcf,0xa0,0xad,0xed,0xb3,0xa1,0xd5,0x28,0xd0,0x3a,
+ 0x3d,0xa4,0x5d,0x3d,0xc8,0x4a,0x8c,0x3b,0x23,0xdc,0x9f,0x63,0x94,0x95,0xcb,0x1d,
+ 0xc4,0x35,0x15,0xff,0x18,0xb6,0x06,0xa2,0x86,0x36,0xa8,0x28,0x6d,0x62,0xbc,0x9e,
+ 0x33,0x6f,0x63,0x11,0x09,0x0f,0xd1,0x43,0xd4,0xb9,0x03,0x07,0xea,0xe4,0x7e,0xb3,
+ 0xe5,0x26,0xf8,0xf6,0x68,0xad,0x14,0xe2,0x31,0xd4,0x35,0x1a,0xcb,0x6e,0x82,0x18,
+ 0xdf,0x81,0xbc,0x50,0xd2,0x1e,0xe0,0x1c,0x23,0x42,0x26,0xfb,0xc3,0x12,0x8e,0x7f,
+ 0x50,0x0d,0x65,0xb1,0x69,0x85,0x9c,0x76,0xa8,0xd9,0x79,0xe3,0x8c,0x11,0xbe,0x3e,
+ 0xd1,0x82,0x21,0x38,0x6f,0x0a,0x22,0x19,0x26,0xfb,0xc3,0xb6,0xcf,0x18,0x4f,0xd2,
+ 0x31,0xc4,0x0b,0xb8,0x6d,0x16,0x6b,0x8e,0x7a,0xd1,0x2c,0x14,0xc0,0xaf,0x8c,0x29,
+ 0x97,0x95,0x45,0x66,0x7d,0xc8,0x64,0x7f,0x58,0x8e,0x9f,0xd7,0x99,0x45,0xd4,0x87,
+ 0xef,0x3b,0xd1,0xe4,0x7d,0xc5,0xde,0x27,0x3e,0xdc,0x70,0x92,0x79,0x23,0xad,0xe7,
+ 0xf2,0xaf,0xc0,0x29,0xb3,0xbe,0xc4,0xd4,0xf8,0x17,0x3c,0x90,0x68,0x02,0xd2,0x02,
+ 0x3b,0x4f,0xa2,0x34,0xb8,0x29,0xbe,0x81,0x39,0x5b,0x1d,0x7b,0xc9,0x03,0xb0,0x41,
+ 0x7d,0xa6,0xaf,0xa5,0xcb,0x76,0x4d,0xfc,0x8b,0xdb,0x17,0x06,0x6b,0x14,0xd4,0xbe,
+ 0xe6,0x08,0xb1,0x2b,0x11,0x41,0x0d,0x47,0x9c,0xa8,0x8f,0x36,0x50,0xf5,0xa8,0xec,
+ 0x09,0x87,0x2d,0xf9,0x5f,0x66,0xfc,0x8b,0x7b,0xcf,0xce,0x09,0x8d,0xe0,0xec,0x99,
+ 0x1b,0xb5,0xb9,0xa7,0x6d,0x08,0xa9,0x71,0x5b,0x27,0x59,0x0d,0x1b,0x4c,0x3e,0x95,
+ 0x85,0xff,0xac,0x99,0xf1,0xaf,0x12,0x4e,0xfa,0x1a,0x20,0xbc,0x2d,0x6c,0xe6,0x2e,
+ 0x84,0x25,0x4c,0xf0,0xc6,0x68,0xa7,0x78,0x12,0x0c,0xe8,0xe2,0x85,0xe5,0xa3,0xd7,
+ 0xfa,0x7f,0x86,0x6b,0x06,0x12,0x1b,0x63,0x44,0xdc,0xce,0xcf,0x17,0xaf,0x28,0xf5,
+ 0x30,0x5c,0x31,0x5b,0xab,0x14,0xac,0x49,0x8d,0x7f,0xe5,0xf1,0x7c,0x04,0x31,0x02,
+ 0x27,0x60,0x71,0x0f,0xc2,0xa4,0x21,0x68,0xd6,0x38,0xec,0xcc,0x19,0xba,0x6f,0x54,
+ 0x33,0xf9,0xd5,0xd7,0xc4,0xbf,0x0c,0xb9,0x3b,0x34,0x04,0x2d,0x6c,0x9e,0x21,0xdf,
+ 0x4a,0xc6,0xa0,0x39,0xd7,0xd9,0x46,0x75,0xf2,0xb1,0x76,0x48,0x2b,0x33,0xe4,0x23,
+ 0x30,0x25,0xfe,0xc5,0x9b,0x56,0x94,0xe3,0xd7,0x35,0xab,0xf1,0x4b,0xb8,0x2c,0x0d,
+ 0x4a,0x21,0xe4,0xc1,0x1d,0xa7,0x50,0xbb,0xa8,0x46,0x4b,0x8c,0x4d,0x89,0x7f,0xe9,
+ 0x66,0x53,0x8c,0x37,0xd9,0x63,0x7a,0xf1,0xd0,0x8d,0xdf,0x26,0xef,0x90,0x4d,0x90,
+ 0xaf,0xba,0x02,0xce,0x77,0xe0,0x40,0xec,0x49,0xfe,0xab,0x29,0xf1,0x2f,0xbd,0x92,
+ 0x17,0x41,0xda,0x10,0xfe,0x75,0x67,0xe5,0xa0,0x83,0x92,0x93,0x5a,0x8f,0x1a,0xdb,
+ 0x6d,0x9f,0x27,0x9e,0x94,0xce,0xbb,0x62,0xbd,0x8e,0x3d,0xb2,0x25,0xfe,0x95,0x39,
+ 0xb1,0x3e,0x05,0x63,0xda,0xc7,0x50,0x75,0xda,0x11,0x17,0xc6,0x94,0xa7,0x9d,0x55,
+ 0xec,0xc6,0xa3,0x35,0x63,0xda,0xe7,0xea,0xf3,0xbc,0xf4,0x68,0xaa,0xff,0x87,0x93,
+ 0xc0,0x33,0x79,0xbf,0x9e,0x13,0x70,0xe8,0xa4,0x7d,0x9b,0xf8,0x1d,0xe3,0x7c,0x38,
+ 0x1d,0xc2,0x0c,0x3f,0x44,0x17,0xfe,0x6a,0xd3,0xd4,0xfa,0xd8,0xcf,0x9b,0x24,0xe7,
+ 0xf4,0x5e,0x14,0x23,0x1c,0xff,0xd8,0xee,0x57,0xf7,0xc3,0xad,0x20,0x6b,0x36,0xde,
+ 0x7a,0x72,0x6e,0xcf,0x35,0xfd,0x41,0x1e,0x33,0xf3,0xbf,0xc8,0x9b,0xb0,0x89,0xcd,
+ 0x1e,0xcc,0x58,0x4e,0x66,0xb1,0x03,0x46,0xbe,0x2a,0xaf,0xf6,0xce,0xa2,0x4f,0xb0,
+ 0x1d,0x66,0x7f,0x90,0xc9,0x7c,0x19,0xee,0xff,0x39,0x0c,0x2e,0x43,0xe4,0x7c,0x86,
+ 0x16,0x98,0x63,0xfc,0x4d,0x05,0x59,0x2d,0xed,0x85,0xc2,0x75,0xb2,0xce,0xf1,0xa4,
+ 0x5a,0x64,0xb4,0x4c,0xad,0x8f,0xfd,0x66,0xa2,0xe9,0xf6,0x08,0xe3,0x6d,0x41,0x9a,
+ 0x3f,0x12,0x5d,0x70,0xc5,0x28,0x8d,0x65,0x0d,0xf2,0x42,0x49,0x28,0x7f,0x96,0xe9,
+ 0x05,0x53,0xea,0x63,0xc3,0x7e,0x48,0xb4,0x85,0xad,0xae,0xc0,0xbf,0x10,0x51,0x43,
+ 0xa9,0x3c,0x42,0x54,0x73,0x56,0x18,0xb9,0xf7,0x3f,0xa8,0x8f,0x7d,0xf3,0x4f,0x78,
+ 0x9a,0x0f,0x73,0x6a,0xf6,0x2d,0x05,0x03,0x70,0xa7,0x56,0xa9,0xdd,0x13,0x15,0x57,
+ 0x49,0xa3,0x66,0xa0,0x87,0x4c,0xf1,0xff,0x68,0x26,0xda,0x19,0x20,0xcd,0x3b,0xda,
+ 0xb5,0x4c,0xb3,0xf0,0x32,0xab,0xe0,0x6e,0x87,0xd9,0xf6,0x3d,0x5a,0xd9,0x9f,0xa9,
+ 0x8f,0x44,0x9d,0xe3,0x69,0x4a,0x6a,0x91,0x76,0x3d,0x0e,0x94,0x5d,0x50,0x72,0x3a,
+ 0x2f,0x4a,0x0a,0x6b,0x0f,0x83,0xe9,0xaf,0x98,0xe2,0xff,0x41,0x90,0x23,0x8f,0x57,
+ 0x43,0x0a,0x0a,0x4a,0xd9,0x8b,0x30,0x5f,0xa8,0x0b,0x96,0xf3,0x46,0x69,0x07,0xb5,
+ 0x8e,0x60,0xf9,0x82,0x29,0xf5,0xb1,0xbb,0x71,0xbf,0x2e,0x49,0x54,0x43,0x2a,0x87,
+ 0x9b,0xf8,0x60,0x30,0xdd,0x07,0x4b,0x81,0x37,0x92,0x33,0xf9,0x3f,0xd6,0xfa,0xd8,
+ 0x99,0xe3,0x20,0x27,0x2a,0xf2,0xb2,0xd8,0x65,0xc1,0x79,0x41,0xb4,0x4f,0x7f,0x67,
+ 0x12,0xa1,0x0b,0xc6,0x7f,0xd5,0x6f,0x8d,0x7f,0x99,0xf3,0xbd,0xd5,0x78,0xb1,0xd0,
+ 0x78,0x51,0xf1,0xde,0x65,0xef,0xc7,0x8d,0xf4,0x0a,0x54,0x69,0x33,0x37,0xcb,0x0b,
+ 0xf2,0x2e,0xa7,0x7b,0x6b,0xed,0x6d,0x56,0xfc,0x03,0xdc,0xff,0xd3,0x8e,0x47,0x8b,
+ 0xe4,0x1b,0x11,0xb5,0x3d,0x0f,0x05,0xe9,0x59,0x88,0x40,0x09,0x31,0xfb,0xa3,0x75,
+ 0xa9,0x4e,0xea,0x32,0xa6,0xc4,0xbf,0x0e,0xbb,0x54,0x9e,0x66,0xd2,0x04,0x28,0x7f,
+ 0xfc,0x75,0x8a,0xff,0x45,0xb5,0x01,0xdc,0xb5,0x54,0xf1,0xe3,0xfb,0xba,0x76,0x04,
+ 0x5c,0xaf,0x91,0xa9,0xfe,0x1f,0xbe,0x9e,0x77,0x3c,0xe5,0x6c,0x10,0x54,0x5e,0xe8,
+ 0x7e,0xc0,0xd6,0x9c,0xb6,0xba,0xd6,0x95,0x4b,0xdc,0xc2,0x41,0xc8,0xd7,0xf2,0xfa,
+ 0xad,0xf1,0x2f,0x9e,0xff,0x65,0x96,0x3d,0x97,0x9f,0xcc,0xe3,0xfc,0x1f,0x33,0x4c,
+ 0x76,0x4c,0x7b,0x60,0x65,0x64,0xa2,0x22,0xba,0x5d,0x29,0x98,0xe2,0xff,0x49,0x34,
+ 0x85,0xc1,0xaf,0x0f,0x3c,0x51,0x8e,0x87,0x41,0x05,0x44,0x44,0x8f,0x8b,0x13,0xae,
+ 0x42,0x39,0xc5,0xff,0x23,0x8d,0xfb,0xdf,0x76,0xc0,0x08,0xf5,0x0a,0x76,0xd6,0x10,
+ 0xe7,0x85,0x49,0xf3,0x10,0x7f,0xc6,0xd5,0x41,0xe6,0xe5,0xfc,0x1f,0x4b,0xfc,0xeb,
+ 0x76,0x04,0x39,0xbc,0x3e,0x2d,0xef,0xe6,0x72,0x04,0xda,0x99,0x6b,0x40,0xec,0x44,
+ 0x74,0xf5,0x0f,0x51,0x59,0xf7,0x5f,0x84,0x43,0x46,0x3b,0xa3,0x7a,0x4a,0x7f,0xb4,
+ 0x04,0xfe,0xc1,0xfd,0xb0,0xdb,0x8c,0x3e,0x64,0x94,0x93,0x21,0xda,0x55,0xef,0xe6,
+ 0x2b,0x76,0x4a,0xdb,0xa1,0xa8,0xf1,0xe6,0xf2,0xf4,0xbb,0xae,0xf1,0xff,0x2c,0xa9,
+ 0x27,0x6f,0x0b,0xcf,0x83,0xda,0x97,0xc7,0xf3,0xa7,0x0e,0xc0,0x77,0xb4,0x96,0x87,
+ 0xf0,0xca,0x01,0xd8,0xd1,0x9f,0xf1,0x3d,0x62,0xe9,0x8f,0x06,0x3c,0xfe,0x55,0x6c,
+ 0x76,0x03,0x89,0xfd,0xa9,0x61,0xfa,0xa0,0x7d,0x79,0xce,0x3b,0xea,0x05,0xf3,0x4a,
+ 0xc1,0x3b,0x70,0x8e,0x95,0xea,0xc5,0x83,0xd6,0xfe,0x68,0x66,0xbf,0x54,0xde,0x1f,
+ 0xa4,0x80,0x47,0xcf,0xab,0x5e,0x72,0x44,0x73,0x7e,0x0e,0x97,0x08,0x4a,0xe0,0xfd,
+ 0x05,0x43,0xa6,0xab,0x36,0x4b,0x4f,0xe9,0x0f,0x72,0x85,0xf3,0x7f,0x50,0x49,0xe5,
+ 0x5f,0x09,0xed,0x42,0xb3,0x7d,0x69,0x67,0x81,0x2f,0x74,0x2a,0x3a,0x2f,0xe4,0x18,
+ 0x6b,0xf4,0x69,0x2f,0x23,0x22,0x5a,0x7a,0xa6,0x20,0xb5,0x3e,0xf6,0x78,0xfe,0xe9,
+ 0x49,0x6d,0x3d,0x2b,0x1e,0xa4,0x5f,0x20,0x33,0xe1,0x29,0xad,0xb8,0x0e,0xdf,0x77,
+ 0x1b,0x3c,0x0d,0x5f,0xd0,0xe8,0xdf,0x59,0xfd,0x3f,0x0a,0xe7,0xff,0x98,0xf3,0x7f,
+ 0x0b,0xfb,0x54,0x77,0x1f,0x3d,0xaa,0x2e,0x95,0xd6,0xd1,0xe2,0x3e,0xbc,0x32,0x13,
+ 0xd6,0xc1,0x6c,0xc8,0x08,0x4c,0xe9,0x0f,0xd2,0x05,0x3a,0xcf,0xa7,0x1b,0x12,0xb6,
+ 0xe1,0xc2,0x06,0xec,0xca,0x52,0xb4,0x6f,0xed,0x47,0x51,0x6d,0xb5,0xc2,0xce,0xc0,
+ 0x2f,0x20,0x03,0xa6,0xf6,0x87,0x15,0x78,0x34,0x87,0x8c,0x29,0x87,0x50,0xf0,0x4a,
+ 0x5e,0xf2,0xb0,0x12,0x66,0x6e,0x45,0x1e,0x41,0x7b,0xe4,0x04,0x94,0x99,0xfd,0x05,
+ 0x52,0xfc,0x3f,0x23,0x89,0x26,0x29,0x43,0xf0,0x01,0xd7,0x5f,0x4f,0xc9,0x78,0x07,
+ 0xed,0x91,0xaf,0xa0,0x86,0xfa,0xd0,0xec,0x0f,0x92,0x75,0x4d,0x7d,0x6c,0x28,0x35,
+ 0x6e,0x1e,0x13,0x79,0x20,0x6c,0xbe,0x61,0x1f,0x43,0x0d,0x78,0x0a,0x4a,0xb5,0x47,
+ 0x63,0x8d,0x0b,0xe0,0x94,0x52,0x6a,0x64,0xc6,0x65,0x48,0x89,0x7f,0x75,0x2b,0xe3,
+ 0xf9,0xd7,0x68,0x4f,0x19,0x91,0xdd,0x28,0xc6,0xdf,0x34,0x9c,0x21,0x77,0xcc,0x5f,
+ 0xa2,0x6c,0x68,0x70,0x1a,0xd4,0x45,0xd4,0xd4,0xfe,0xb0,0x89,0x26,0x20,0xbb,0x79,
+ 0xbd,0x44,0xc3,0x15,0xb5,0x2d,0xe5,0x6d,0x40,0xbf,0x8e,0x40,0xe8,0x9b,0x68,0xe1,
+ 0x3a,0xe3,0x79,0x5d,0x24,0x64,0xf5,0xff,0x48,0x3c,0xa9,0xd9,0x8c,0x76,0x85,0x3b,
+ 0xd4,0xa3,0x14,0xd2,0x97,0xc2,0x16,0x49,0xf5,0xff,0x8d,0xc7,0xc6,0x1b,0xd3,0x84,
+ 0x78,0xa9,0xc9,0x64,0xfe,0x29,0xaf,0x8f,0xfd,0x09,0x77,0xda,0xc7,0xc4,0x7f,0x91,
+ 0x22,0xdf,0x2b,0xed,0x6f,0x7d,0x4c,0x7c,0x58,0x39,0x0e,0xde,0x80,0xfd,0x13,0x71,
+ 0x15,0x3d,0xce,0xf9,0x93,0x7a,0xa3,0x96,0x52,0x1f,0x3b,0xd1,0x1f,0x6d,0xda,0x98,
+ 0x3e,0xa6,0xcd,0x3a,0xee,0xa8,0x11,0x2b,0xe1,0x08,0xf9,0xc5,0x5d,0xf7,0x9c,0xaf,
+ 0x39,0x9d,0x50,0x6d,0x7a,0x4a,0x7f,0x34,0x1e,0xff,0xda,0x7b,0xd2,0x7d,0x5e,0xbc,
+ 0x22,0x5d,0x26,0x0b,0x8d,0xcc,0xfe,0x82,0x61,0x78,0x7b,0x7e,0x29,0xb4,0xf6,0x89,
+ 0xc3,0xc6,0xab,0x6c,0xef,0x9f,0xc1,0x3f,0xac,0xe0,0x0c,0x1d,0x4b,0xff,0x08,0x1e,
+ 0x57,0x9d,0x06,0x8a,0xd9,0x8f,0x20,0x52,0x7f,0x28,0x8f,0x46,0xc8,0x59,0xa3,0x85,
+ 0x39,0x11,0x1a,0x39,0xf5,0x29,0xf8,0x47,0xed,0xa7,0xf3,0xc9,0xc9,0xbc,0x9f,0xd1,
+ 0x42,0xfd,0x2e,0x05,0xe5,0x67,0x14,0xd4,0x74,0x1b,0x2e,0x56,0x22,0xbf,0x29,0x46,
+ 0xc8,0xf4,0x54,0xfc,0x63,0x16,0xc1,0x1e,0x82,0x9f,0xe2,0xc6,0x41,0x7b,0x6d,0x08,
+ 0xad,0x88,0x39,0x2b,0xef,0xea,0x6c,0x3f,0x67,0x32,0xac,0xe4,0x58,0xba,0x05,0xff,
+ 0x98,0xf5,0x42,0x79,0x12,0x1f,0x7e,0xaf,0xcb,0xb0,0x30,0x9e,0xb5,0x4d,0x1c,0x85,
+ 0x37,0x0c,0x6f,0x7d,0x56,0x54,0xfc,0x83,0x89,0x88,0x70,0xab,0x4c,0xe5,0xff,0x2c,
+ 0xe6,0x4d,0xd3,0xc6,0xe0,0xb2,0x52,0xd5,0x9f,0xf9,0xb6,0xe9,0x56,0xbd,0x8d,0x15,
+ 0xf7,0xd7,0x9c,0x54,0xaf,0xfe,0xb9,0xfe,0x68,0x3c,0x08,0x3b,0x33,0x26,0xae,0xd6,
+ 0x2e,0xf1,0x40,0x49,0x54,0x9c,0x0b,0x7d,0xdc,0x3e,0xfd,0x51,0xcd,0x59,0x18,0xbf,
+ 0x7f,0x6a,0xfc,0x6b,0x2f,0xc7,0xcf,0xe7,0xa7,0x3d,0x80,0x07,0xa1,0xa4,0x41,0x8b,
+ 0x92,0x08,0x9c,0x61,0xff,0x18,0x12,0xbb,0xef,0xfd,0x03,0x7b,0xc1,0xc4,0x6f,0x39,
+ 0x5d,0x56,0xfc,0xc3,0xd3,0x2e,0x8c,0x80,0x17,0xb5,0xf3,0x1e,0x52,0xc2,0xdb,0x52,
+ 0x4b,0xd2,0x06,0x94,0xec,0xa2,0x8b,0x1c,0xa7,0x5b,0x13,0xeb,0x93,0x12,0xff,0x12,
+ 0xcc,0x78,0xd0,0xf7,0xc9,0x2c,0xed,0x00,0x9b,0x37,0xbc,0x6d,0x39,0x79,0x22,0xf0,
+ 0x58,0x74,0x85,0x2a,0xaf,0x71,0xbe,0x6e,0xb6,0x12,0x33,0xf3,0xa1,0x26,0xee,0x6f,
+ 0xe2,0x1f,0x7c,0x7e,0xee,0x86,0xc5,0x41,0x25,0xca,0xe7,0x1c,0x89,0xf4,0xe4,0xa9,
+ 0x7e,0x87,0x50,0xd3,0x43,0x7e,0x2d,0x79,0xa6,0xd4,0xc7,0x36,0xf9,0x3f,0x37,0x1b,
+ 0xf3,0x2e,0x34,0x8e,0x09,0x57,0x95,0xca,0xde,0x69,0xfd,0xf2,0xc3,0x08,0x9b,0xab,
+ 0xb4,0x9b,0x87,0x6b,0x2e,0xc0,0x9f,0x14,0x33,0xff,0x6b,0x2a,0xff,0xc7,0xf7,0x9a,
+ 0xa3,0x6c,0x49,0x96,0x74,0x8c,0x78,0x7b,0xed,0xdd,0x35,0xdb,0xe1,0x15,0x26,0x32,
+ 0x37,0x22,0x0a,0xb2,0xe4,0xda,0xfe,0x68,0x28,0x7f,0xa4,0xe2,0x33,0x2d,0x28,0x3d,
+ 0x94,0xa7,0x21,0xbf,0x07,0xea,0x57,0xe6,0x29,0xeb,0x25,0xb3,0x51,0xda,0xdb,0x09,
+ 0xc3,0xea,0x9a,0xfe,0x20,0x3c,0xa9,0x6d,0x0d,0xf9,0x1a,0xbe,0xdd,0xec,0x10,0x2d,
+ 0x27,0xb3,0x48,0x83,0x91,0x1f,0xa2,0x4b,0xc8,0xd1,0x44,0xa3,0xb4,0x6b,0xfa,0x83,
+ 0x8c,0xfb,0xf3,0xa1,0x3d,0x50,0x68,0x04,0xca,0x89,0xcc,0x1a,0x8e,0x85,0xea,0x22,
+ 0x1e,0xf2,0x87,0x35,0x8d,0x70,0x6d,0x7f,0x34,0xb8,0x28,0x96,0x71,0xfc,0x53,0x27,
+ 0xbd,0x04,0x0b,0x99,0xfb,0x19,0xf1,0x30,0x9c,0xd2,0x76,0x76,0xa2,0xd9,0x35,0x2a,
+ 0x99,0x8d,0xd2,0xae,0xe9,0x0f,0x02,0x09,0xb6,0x33,0x0e,0x0e,0xa1,0x62,0x5a,0x12,
+ 0xd7,0xcc,0x2b,0x11,0xb3,0x82,0xdf,0x2c,0xee,0x18,0x99,0x82,0x7f,0x50,0xdf,0xb9,
+ 0xdb,0xe4,0x42,0x54,0x73,0x26,0x2d,0xe4,0x25,0x72,0x8c,0x55,0x86,0x68,0x1b,0x4f,
+ 0x04,0x93,0xae,0xed,0x8f,0x66,0x3a,0x19,0xfa,0xa2,0xe1,0x42,0xe5,0x71,0x28,0xe0,
+ 0xd1,0xae,0x81,0xbc,0x37,0x22,0x25,0x75,0xf4,0x39,0xf2,0x87,0x09,0x62,0xf3,0x35,
+ 0xf1,0x2f,0xfc,0xac,0xc0,0x07,0x21,0x1e,0xf6,0x1a,0xda,0xde,0x3c,0xbd,0xe4,0xf6,
+ 0x0d,0x51,0xf2,0x9e,0xd4,0x2c,0xf0,0x88,0x98,0xf3,0x9a,0xf8,0x17,0x0f,0x72,0x49,
+ 0xf4,0x71,0xce,0x7f,0xce,0x25,0xbd,0x74,0xb3,0x1f,0xaf,0x78,0x4c,0xc7,0xc8,0x35,
+ 0xfd,0xd1,0x12,0xf1,0xaf,0x00,0x9b,0xa6,0xc2,0x30,0xbe,0xd6,0x52,0x26,0x70,0x20,
+ 0xf4,0x08,0xea,0x58,0x33,0x11,0x6c,0xd6,0xd4,0xfe,0x68,0x03,0xa8,0xd6,0xb3,0x82,
+ 0x8e,0xb6,0x69,0xe3,0x44,0x68,0xb3,0x2d,0x6c,0xed,0xcd,0x3c,0xbe,0x73,0x79,0x5c,
+ 0xbf,0x5f,0xd3,0x1f,0xc4,0xa7,0xcd,0x0c,0xf2,0x6a,0xa2,0x9e,0xd2,0xa5,0xf6,0x68,
+ 0x63,0x99,0xfe,0x4a,0xc8,0x2c,0x8b,0x7d,0x81,0x8d,0x43,0xa9,0xd4,0xfe,0x20,0x83,
+ 0x50,0x42,0x27,0xa2,0x5d,0xdb,0x8b,0x11,0x08,0xc1,0x86,0x15,0x88,0x7f,0x58,0x76,
+ 0x7c,0x07,0xa7,0x06,0x5d,0xd3,0x1f,0x0d,0xdf,0xf7,0x5e,0x6a,0xd2,0x7e,0x40,0xd5,
+ 0xb6,0x29,0x61,0xc9,0x6c,0x94,0x66,0x53,0x48,0x6f,0xef,0x1e,0x58,0x3d,0xa5,0x3f,
+ 0x1a,0xe2,0x9f,0x5d,0xb0,0xba,0xda,0x84,0x31,0x7b,0xa8,0xb3,0x96,0xfb,0xd3,0x10,
+ 0x58,0x96,0x04,0x8a,0x70,0x61,0xd9,0x44,0xbf,0xb9,0x24,0xfe,0x49,0xf8,0x7f,0xb4,
+ 0x40,0xb4,0xa6,0x03,0x15,0x71,0xa2,0x11,0x1e,0x41,0xfb,0x7d,0x39,0x4f,0x84,0xc7,
+ 0x2f,0xe2,0xbb,0xa6,0x3f,0x2c,0xf0,0xb4,0xf7,0x79,0x26,0x3b,0x28,0xfa,0x5c,0x68,
+ 0x9e,0x62,0x3a,0x3a,0x2a,0xb5,0xcc,0xb6,0x49,0xfc,0x73,0x4d,0x7f,0x10,0x1f,0xd8,
+ 0xc3,0xdc,0xdb,0xa3,0x79,0xaf,0x1b,0xe7,0x9f,0x23,0xec,0x89,0x88,0x67,0xb5,0x3e,
+ 0xb8,0xa6,0x3f,0xda,0xb8,0xff,0x67,0x48,0xec,0x64,0x87,0xa0,0x20,0x9a,0xa9,0x93,
+ 0x0f,0x60,0xa3,0xf1,0xfb,0x36,0x97,0x4e,0x2e,0x72,0x46,0x34,0x93,0x75,0x71,0xc3,
+ 0x35,0xf8,0xc7,0xe5,0x21,0xf7,0xf0,0xee,0x30,0xf1,0xeb,0x3d,0xf8,0x76,0x0d,0x77,
+ 0xa9,0xf5,0x80,0xfb,0xa1,0xb1,0xf1,0xda,0xfe,0x68,0x09,0xfc,0x43,0xd7,0x6c,0x69,
+ 0x83,0xe7,0xd5,0x02,0x76,0x7d,0xbd,0xb3,0x57,0x5d,0x6f,0xe4,0xfb,0x69,0x3d,0x79,
+ 0x47,0x18,0x3f,0xbf,0x9d,0xd6,0xf8,0x17,0x9e,0xdf,0xca,0x01,0x3b,0xef,0x8f,0xf6,
+ 0x27,0xa3,0x34,0x9e,0xf9,0x83,0x9c,0xd7,0xc9,0x49,0x56,0x10,0xb2,0xaf,0x69,0xfc,
+ 0x7c,0xa2,0x75,0x5a,0x6a,0x7f,0x10,0x94,0x27,0x27,0xe7,0x31,0x5c,0x8d,0x4f,0x13,
+ 0x66,0xe9,0x00,0xb7,0xdf,0x79,0xc6,0xdc,0x85,0x04,0x35,0x28,0x36,0x05,0xff,0xf0,
+ 0x6a,0xd8,0xf6,0xc1,0x69,0xff,0xa8,0x5d,0x8d,0xf1,0x6e,0x0e,0x8d,0x57,0x94,0x04,
+ 0x22,0x32,0xeb,0x43,0xa2,0x69,0x3f,0x6a,0xe5,0x3f,0x27,0xf8,0x87,0xbc,0xbb,0x47,
+ 0x2e,0x2f,0xfc,0xf8,0x92,0x49,0x3b,0x7c,0x3e,0x17,0x11,0xce,0xf7,0xcc,0xc6,0xf7,
+ 0xc5,0x53,0xfb,0xa3,0x8d,0xfb,0x8b,0x42,0xb6,0x5c,0xfb,0x81,0x67,0x78,0xf5,0x6f,
+ 0xf2,0xb6,0xba,0x0f,0x76,0x68,0xf2,0xd9,0x70,0xee,0x38,0x95,0x31,0xdd,0x98,0x1a,
+ 0xff,0xe2,0xfc,0x0d,0xc9,0xc4,0x93,0x78,0xac,0x4e,0xa9,0x7b,0x99,0x33,0x2c,0xdb,
+ 0x89,0xcd,0x18,0xef,0x37,0x97,0xc4,0x3f,0xbb,0x4d,0x7f,0x57,0x95,0x81,0xbb,0xdd,
+ 0x0d,0x9f,0x1a,0x5d,0x71,0xf7,0xb0,0xf8,0x11,0x8c,0x9e,0xf1,0x3a,0x1d,0x11,0xb9,
+ 0x80,0x70,0x6a,0xa5,0x63,0x2a,0xfe,0xe1,0xf6,0xfe,0x3c,0x8f,0xd8,0x01,0x97,0xf2,
+ 0x7d,0x3d,0xcb,0xcc,0xfc,0x77,0x5e,0xb1,0xb6,0xa9,0x71,0x10,0xfe,0xaf,0x84,0xbc,
+ 0x4d,0xc1,0x3f,0x02,0xea,0xbb,0x1e,0x34,0x4b,0x2b,0xf1,0x0f,0x63,0xf5,0xf6,0x61,
+ 0xb1,0x0d,0x7a,0x79,0xd8,0xcb,0x92,0xef,0x9c,0xda,0x1f,0xe4,0x30,0xcc,0xeb,0x89,
+ 0x44,0x48,0x07,0x3c,0x2f,0x15,0x2c,0xcf,0x8c,0x91,0x73,0xa8,0x7f,0x57,0x7a,0x68,
+ 0x1b,0x79,0x77,0xdc,0x35,0x61,0xed,0x0f,0x3b,0x6e,0xef,0xd3,0xb0,0xbf,0x70,0x5c,
+ 0x71,0x67,0x0f,0x69,0xcd,0x0d,0xce,0x18,0xe2,0x81,0x89,0xf9,0xd7,0xf0,0x9f,0xdd,
+ 0x5c,0xcd,0x35,0xe1,0x6f,0x55,0xee,0x6f,0x3c,0x49,0x78,0x9b,0x78,0x0a,0xce,0x5e,
+ 0x61,0xdc,0x55,0x62,0xed,0x0f,0xcb,0x9f,0x67,0xb1,0x81,0xdb,0xbe,0xd0,0x2c,0x24,
+ 0xee,0x8e,0xe1,0x8b,0xf7,0xa1,0x05,0x64,0xe7,0x61,0xbe,0x4b,0x89,0xf7,0x9d,0xc2,
+ 0x7f,0xe6,0x49,0xee,0xdc,0xff,0xc3,0xdb,0x9e,0x66,0x0d,0xe7,0x70,0x47,0xd0,0x3c,
+ 0xf8,0x37,0x2d,0xf9,0xbe,0x56,0xfc,0xf3,0x8e,0xd9,0xbf,0xc6,0x3e,0x32,0x6d,0x16,
+ 0xbc,0xc0,0xb7,0xcd,0xa0,0xf8,0x1c,0xfc,0x2e,0x7b,0xbe,0x8a,0x3b,0x36,0x1b,0xc6,
+ 0x58,0x95,0xbe,0x74,0x24,0xc7,0x12,0xff,0x52,0xde,0x55,0xba,0x19,0x0f,0xb2,0x23,
+ 0xa8,0x8b,0xe0,0x60,0x09,0xac,0x9c,0xa9,0x6e,0xca,0x75,0xaa,0xb4,0x9b,0x14,0xc1,
+ 0xc1,0x86,0x92,0x38,0x0e,0x62,0xc9,0xf8,0x57,0xda,0x49,0xf3,0x35,0xa9,0x47,0x71,
+ 0x4b,0x2d,0x5c,0x9b,0xab,0xc4,0xae,0x6d,0x55,0xbf,0xdd,0x80,0x1b,0x03,0x50,0x22,
+ 0x95,0xf0,0xd2,0xac,0x5e,0x8b,0xff,0x47,0xe7,0x41,0xb4,0xf1,0xfb,0xf3,0x42,0x1f,
+ 0x2c,0xdb,0xcd,0x61,0x4f,0x3b,0x22,0x22,0xbc,0x3f,0x2b,0xe9,0x8b,0xc4,0x48,0x2c,
+ 0x89,0x4f,0xb8,0xff,0x47,0x30,0x97,0xc5,0x3d,0x8e,0x46,0x64,0x37,0xbc,0x05,0xdd,
+ 0x7a,0x6b,0x4c,0x9c,0xc3,0x2e,0x19,0xbe,0x90,0xfb,0x97,0x16,0xfc,0xa3,0x0b,0x31,
+ 0x18,0xa7,0x45,0xe1,0x80,0x9a,0x6c,0xf0,0x87,0xd1,0xbe,0xc0,0x15,0x1b,0x96,0x71,
+ 0xe9,0xa4,0x2a,0x4e,0x74,0x49,0xcd,0xff,0x7a,0x4b,0xf1,0x1a,0x99,0xdd,0xe2,0x6a,
+ 0x9e,0x7f,0x17,0x5f,0x16,0xc3,0x8d,0x7c,0x42,0xf1,0x36,0xd9,0x63,0x39,0x4f,0xf2,
+ 0x40,0x58,0xaf,0x7d,0x7f,0x8a,0xff,0x47,0xe5,0xfd,0x85,0x73,0xf1,0xeb,0x1f,0xe5,
+ 0x03,0x15,0xa5,0x65,0x25,0x6c,0x0a,0x5f,0xa7,0x67,0xf2,0x8e,0x30,0x2d,0xcc,0x1d,
+ 0x8f,0xf8,0xc4,0x7f,0x4c,0xf1,0xff,0x6c,0x65,0xbc,0x7e,0x42,0xf6,0x29,0x68,0x34,
+ 0x42,0x46,0x06,0x7e,0x59,0x7c,0x5f,0x89,0xe0,0xb2,0x30,0xad,0x91,0xb9,0x35,0x54,
+ 0xdc,0x9e,0x49,0x7d,0x17,0x17,0xbc,0xd0,0xca,0xf2,0x0b,0x5d,0x77,0xa5,0x7f,0xaa,
+ 0xb6,0xb6,0xaf,0xf0,0xdc,0x78,0x67,0x98,0x77,0x50,0x9d,0x5d,0x98,0x81,0x46,0xa1,
+ 0xb0,0xfe,0xc5,0xe2,0x01,0x3a,0x4a,0x1e,0x99,0x8c,0x7f,0xdd,0x85,0xf8,0xe7,0xd7,
+ 0xe0,0xe9,0xcd,0xe4,0xec,0xfa,0xc6,0x4e,0x4f,0x5f,0xa6,0x5a,0x60,0x87,0x17,0x48,
+ 0xe1,0x6e,0xbb,0x47,0x64,0x8c,0x07,0xc2,0x5a,0x0b,0x6b,0x92,0xf1,0x2f,0xff,0x4d,
+ 0xe6,0xfa,0x48,0x8e,0x17,0x12,0x6e,0x43,0x98,0x66,0xf0,0xfe,0xb0,0x66,0x7d,0x24,
+ 0xdc,0x51,0xcf,0x0b,0x8b,0x7b,0xfe,0xa1,0xde,0x12,0xff,0x7a,0x26,0xed,0x14,0xe7,
+ 0xef,0x99,0xeb,0x63,0x0e,0x1c,0xdd,0x72,0xb1,0x71,0x89,0x96,0xeb,0x76,0xee,0x11,
+ 0xba,0x04,0x95,0xf1,0xd6,0xf2,0x1a,0x92,0xc4,0x3f,0x9b,0xa3,0xbc,0x09,0xec,0x44,
+ 0xb9,0xb4,0x62,0x68,0x09,0x22,0x10,0x3a,0xa0,0x99,0x7c,0xc2,0xd3,0x1c,0x1a,0x71,
+ 0x09,0xd3,0x35,0x29,0xdf,0x18,0x1a,0xb1,0xeb,0xd9,0x3c,0x93,0xef,0x34,0x81,0x76,
+ 0x66,0xb5,0x1e,0xd0,0xbf,0xa3,0x67,0xac,0x21,0xaf,0xc3,0x81,0x48,0xf1,0x70,0x64,
+ 0x0d,0xa1,0x16,0xfc,0x63,0x98,0x65,0x57,0x23,0x70,0x1d,0x7e,0x08,0xae,0x0d,0x39,
+ 0x7f,0x83,0x47,0xe4,0xf1,0xa0,0xbd,0x1c,0xda,0xdb,0xe0,0xee,0xa7,0x0b,0xfc,0x3f,
+ 0x49,0xa9,0xff,0x73,0x14,0xc5,0x2c,0xd5,0x65,0x97,0x39,0x70,0x74,0x88,0x2e,0x7a,
+ 0x08,0x16,0xe9,0xbc,0x2d,0x1a,0x7c,0x0e,0x55,0xba,0xfd,0xdc,0x34,0x4b,0xfc,0x0b,
+ 0x86,0x09,0x2e,0x8b,0x52,0x62,0x88,0x9f,0x90,0xc4,0x46,0x6a,0x34,0x11,0xd1,0xcc,
+ 0x8d,0x4d,0xbc,0x82,0x34,0xf3,0x09,0xf3,0xc2,0x39,0xd6,0xf8,0x97,0xe9,0xff,0xa9,
+ 0x5b,0xba,0x19,0x8f,0x2d,0x0f,0x7b,0xd9,0x1f,0x9f,0xc6,0xfd,0x39,0xfb,0x27,0xe3,
+ 0x5f,0xdf,0x76,0x6c,0x4b,0xcd,0x7f,0xe7,0x24,0xdb,0x3a,0x94,0x36,0xef,0xb1,0x66,
+ 0x56,0x16,0xa4,0x3f,0x76,0x0e,0x40,0xb3,0xe2,0xfc,0x12,0xef,0xe8,0x21,0x1d,0x34,
+ 0x1b,0xc5,0x4e,0xc1,0x3f,0xbf,0x64,0x05,0x5a,0x46,0xff,0xbd,0x9f,0x93,0x47,0xa1,
+ 0xa0,0x36,0xaf,0x1f,0x15,0xf7,0x66,0xea,0xd4,0x6e,0x8c,0xa6,0x73,0x47,0xb4,0x53,
+ 0x93,0x37,0x3b,0x4f,0x59,0xea,0xff,0xe4,0x72,0x7b,0x36,0x98,0x77,0x3f,0xf9,0x77,
+ 0x58,0xcb,0xbe,0x51,0x4f,0xef,0x43,0x98,0xc4,0x1b,0xa3,0xa3,0x98,0x92,0xf0,0x7c,
+ 0x15,0x86,0x96,0xa0,0xbe,0x4b,0xc5,0x3f,0xb8,0xe7,0x32,0x21,0xc7,0x30,0xd5,0xae,
+ 0x5b,0x23,0x71,0x7a,0x66,0xbc,0x10,0x50,0xa2,0xfe,0x0c,0xab,0x49,0xe2,0x9f,0x33,
+ 0x9c,0xff,0x0c,0xcf,0x55,0x27,0xf4,0xfb,0x34,0x53,0x9b,0xbf,0x07,0xa3,0xd5,0xfc,
+ 0x58,0xa1,0x20,0xfa,0x61,0x82,0x08,0x94,0xca,0x7f,0xfe,0x10,0xaa,0x6a,0xb3,0xfa,
+ 0xc5,0x05,0x1a,0x77,0xfb,0xe0,0xa0,0x50,0xb9,0x5c,0x37,0x9f,0x4f,0xbb,0x00,0x3d,
+ 0x64,0x7e,0xb5,0x3d,0x68,0xf1,0xff,0xac,0x41,0xfc,0x13,0x91,0x10,0xff,0x84,0x89,
+ 0xca,0x22,0x1c,0x08,0x85,0xb3,0x39,0x11,0x9a,0xc0,0x12,0xe6,0x8f,0x73,0x89,0xc1,
+ 0x10,0x08,0x6d,0x4c,0xb7,0xe2,0x9f,0x1d,0xc4,0x5d,0x6d,0x53,0xc2,0x4d,0xca,0x0e,
+ 0xc9,0xed,0xa7,0xd1,0x70,0x9a,0xba,0x27,0x1f,0x12,0x7c,0xef,0x46,0x9e,0x61,0xb7,
+ 0xcd,0x12,0xff,0xe2,0xf8,0xa7,0x99,0xcb,0x73,0xc5,0xcf,0xdb,0xa8,0xd9,0xab,0x4d,
+ 0x60,0xb9,0x07,0x12,0x1e,0x36,0xd6,0x8c,0x42,0x1a,0xe7,0xaf,0x4b,0xc6,0xbf,0x66,
+ 0xf0,0x6e,0x2f,0x95,0x5a,0x49,0x34,0xa7,0x83,0xbc,0x0f,0xb3,0x34,0xbb,0x62,0x33,
+ 0x3f,0xeb,0x7d,0x9c,0xcf,0x43,0x7b,0xc0,0x1b,0x42,0xc4,0x9b,0xf4,0xff,0x0c,0x26,
+ 0xe2,0x5f,0x7e,0x47,0xb4,0xa5,0x50,0xe5,0xc0,0xb8,0x38,0x5a,0xc0,0x57,0xec,0xc8,
+ 0x0a,0x3e,0x1f,0xf5,0x1d,0xcf,0xff,0xca,0xb9,0xa6,0x3e,0x76,0xa2,0x2d,0x6f,0x9f,
+ 0x9a,0xa0,0x5d,0xc1,0xa0,0x5a,0x91,0x6d,0x37,0xf9,0xf6,0x9a,0x37,0x0f,0x81,0x90,
+ 0x25,0xfe,0x25,0x50,0x38,0xe4,0x9c,0xd7,0x6e,0x1f,0x20,0xe5,0xb0,0x91,0xce,0x6b,
+ 0x0f,0xf0,0xb0,0x57,0x56,0xa8,0x20,0x4a,0xe3,0xe4,0x38,0x22,0xa2,0x5b,0x19,0x0d,
+ 0x91,0x54,0xff,0xcf,0x1e,0xe6,0xee,0xcf,0x58,0x60,0x7b,0x94,0x87,0x69,0xfa,0xd4,
+ 0x72,0xd2,0xaa,0xec,0x4c,0x77,0x69,0x79,0x15,0xb8,0x3e,0xa8,0xc1,0x7b,0x69,0xb9,
+ 0xd3,0x36,0x05,0xff,0xcc,0x63,0x88,0x1f,0x12,0xc4,0x60,0x3a,0x90,0xbd,0xd1,0x98,
+ 0x06,0xf9,0x71,0xca,0x1d,0x41,0xcf,0x0b,0xb7,0x18,0xae,0x0b,0x44,0x9d,0x8c,0xd7,
+ 0x74,0x8e,0xf3,0x9f,0x33,0x07,0xc5,0x43,0xc0,0xcb,0x62,0x4b,0x6b,0x6c,0x4f,0x68,
+ 0x5f,0x67,0xb7,0x85,0xdc,0xcb,0xc5,0xd7,0xe1,0x4f,0x91,0xf9,0x67,0xed,0x01,0x39,
+ 0x19,0xff,0xb2,0xdd,0xb4,0x9b,0x5e,0x42,0x89,0x89,0xf8,0x27,0x84,0x82,0x1d,0xcf,
+ 0xa3,0x22,0x7e,0x87,0x5d,0x4a,0x1b,0xa7,0xf5,0x2e,0x5a,0x31,0x6e,0x2f,0x4c,0xac,
+ 0x0f,0xac,0x35,0xf1,0xcf,0x90,0x6d,0x34,0xe7,0x23,0x8d,0xa7,0x7d,0xd9,0xcf,0xa0,
+ 0x21,0x7f,0x95,0x2d,0x5a,0x6d,0x1f,0x44,0xfc,0xf3,0x27,0x56,0x3a,0x60,0xe7,0xfd,
+ 0xd1,0x26,0xd6,0xc7,0xc4,0x3f,0xb1,0xe2,0x75,0xf4,0xcb,0xe1,0x37,0xe1,0xf9,0x0f,
+ 0xe6,0xce,0xa1,0x2b,0x10,0xff,0xfc,0x52,0x52,0x7f,0x7e,0x57,0x88,0xc7,0xbf,0x94,
+ 0xb9,0x27,0xe9,0x83,0xd9,0x1f,0xa4,0xc6,0xbf,0x84,0xe2,0x00,0xfe,0xf6,0x6d,0xfd,
+ 0x79,0xcf,0x6c,0x2d,0x23,0x88,0xf3,0xff,0x55,0x99,0xab,0x35,0xf7,0x13,0x1e,0xb8,
+ 0x2f,0x30,0xf0,0x04,0x59,0xf1,0xcf,0x2b,0xea,0x5e,0xc3,0x9e,0xe7,0x92,0xc8,0x0b,
+ 0xb0,0x57,0x73,0x2b,0x19,0x0a,0x19,0x52,0x50,0x03,0x0e,0xe3,0x7e,0xcb,0x52,0xf7,
+ 0x14,0xba,0x34,0xb3,0x35,0xfc,0xe4,0xf3,0xcc,0xf8,0x37,0xf5,0x52,0xd4,0xd7,0x6f,
+ 0x7b,0x8e,0x9c,0xd3,0x46,0xa3,0x65,0xc3,0xc5,0x47,0x72,0x78,0x1a,0xce,0x0f,0xb4,
+ 0x4c,0x1d,0x2d,0xa6,0x4b,0xe0,0x8c,0xa3,0xa0,0x9e,0x82,0x7f,0x14,0x5f,0xd4,0x61,
+ 0x76,0x83,0xd5,0x2a,0x02,0x59,0x1d,0x3b,0x87,0xa4,0x4b,0xda,0x23,0xf7,0x65,0x75,
+ 0x88,0x43,0xdc,0x10,0xab,0x77,0x74,0x4f,0xf5,0xff,0x68,0x55,0x86,0xfb,0x4d,0xf1,
+ 0x3c,0x8a,0xf1,0x79,0x9c,0xd8,0x30,0x46,0x5e,0x35,0x4a,0x6b,0x1c,0x86,0xf0,0x3d,
+ 0x76,0x15,0x4a,0x8f,0x22,0x10,0x4a,0xc6,0xbf,0x18,0xc7,0x3f,0x82,0x3b,0x86,0xf8,
+ 0x1f,0xd1,0x8b,0x81,0x68,0x99,0x91,0x21,0x68,0xee,0x73,0x86,0xe4,0x8d,0xce,0x21,
+ 0x65,0xef,0xca,0x05,0xf5,0xb8,0xff,0xaf,0x89,0x7f,0x85,0xe6,0xea,0x47,0x3b,0x18,
+ 0x0f,0x7b,0xdd,0xd8,0x46,0x86,0x28,0xea,0xeb,0x7a,0x39,0x42,0x56,0xc1,0xe1,0x19,
+ 0xce,0xb3,0x81,0x6e,0xbf,0x9a,0x82,0x7f,0x4a,0x55,0x37,0x50,0xd5,0xdf,0xe7,0xda,
+ 0xab,0xae,0xce,0x90,0x55,0xef,0x49,0x10,0x40,0x0d,0xf0,0x46,0x21,0xa8,0xfa,0xe7,
+ 0x18,0xf8,0x7f,0xc8,0x64,0xfc,0x1d,0xcc,0xf8,0x57,0x25,0x14,0x33,0xb1,0x83,0x5d,
+ 0xd2,0x2a,0xfd,0x0e,0x86,0x62,0xf7,0x38,0x78,0xef,0x41,0xf9,0xb3,0x4a,0xba,0x04,
+ 0x5d,0xac,0x30,0x26,0x26,0xe3,0x5f,0x1c,0xff,0x5c,0xd2,0xaa,0xe0,0x1f,0x38,0xed,
+ 0xf9,0x52,0x1d,0xc2,0x42,0xa3,0x7a,0x0c,0x15,0x59,0x65,0x40,0xd6,0x4c,0x7e,0x4b,
+ 0xa2,0x3f,0x1a,0x4b,0xe2,0x9f,0x61,0xf6,0x8a,0x5a,0x0a,0x59,0x01,0xb9,0x12,0xd1,
+ 0x0e,0xc2,0x42,0xa3,0x71,0x3e,0x3b,0xc9,0x81,0x50,0xaf,0x98,0x80,0xd6,0xa9,0xfd,
+ 0x41,0x94,0xdf,0x07,0x33,0x82,0xed,0x2a,0xea,0x77,0xde,0xb6,0xc3,0x09,0xb6,0x08,
+ 0xc9,0xd7,0x36,0xb0,0xa2,0xb8,0xbc,0xde,0x6f,0xa6,0x86,0x25,0x42,0x63,0x49,0xf9,
+ 0xd3,0xc7,0xdd,0xce,0xec,0xae,0x18,0xd4,0x0a,0x28,0x46,0x04,0x34,0x3c,0x01,0x25,
+ 0x18,0xca,0x5b,0xf0,0x4f,0x86,0xc6,0x2c,0xfc,0xe7,0x19,0x9d,0x6a,0x8b,0xcd,0xb9,
+ 0x07,0xd7,0xff,0x01,0x2e,0xbd,0x75,0x5b,0x24,0x7b,0x0e,0x34,0xf3,0x46,0x51,0xdd,
+ 0x26,0x9f,0xdc,0xc4,0x93,0x49,0xfe,0xb3,0x3a,0xe3,0x13,0x78,0xa5,0xba,0x54,0xdf,
+ 0xc8,0xc4,0x1f,0xc2,0x28,0xcb,0x29,0xb7,0xb7,0x8a,0x05,0xac,0x8f,0x03,0xa1,0x8d,
+ 0xe2,0xd0,0x04,0x3e,0x3c,0x63,0xf1,0xff,0x30,0xf2,0x19,0x1c,0x61,0xcb,0xe2,0xe2,
+ 0x6e,0x5c,0x8d,0x23,0x68,0xc8,0xdf,0x78,0x9a,0x5c,0x81,0xaa,0x1e,0xb3,0x70,0x3a,
+ 0xc7,0x87,0x72,0xaa,0xff,0x67,0x57,0xee,0x89,0x2f,0x79,0xcf,0xd8,0xf7,0x88,0xc5,
+ 0xe4,0x04,0xf7,0x36,0x77,0xc8,0x2e,0xde,0x98,0xc6,0xc8,0x0a,0x73,0xe0,0x9d,0xb8,
+ 0xbf,0xd5,0xff,0xe3,0x92,0x5a,0x98,0xba,0x97,0x7a,0xb2,0x7f,0xa1,0x36,0x72,0x3c,
+ 0xcc,0xc8,0x1c,0x75,0x34,0xc1,0x5f,0x9a,0x7c,0x7e,0x4b,0x7f,0xb4,0xb4,0x5a,0x60,
+ 0x67,0xd5,0x28,0xcd,0x23,0x76,0x88,0x92,0x67,0x78,0xa3,0x10,0x3b,0x3d,0xc8,0x97,
+ 0x65,0xb1,0xc9,0x87,0x5f,0x9d,0xa8,0xff,0x93,0xf4,0xff,0x5c,0x47,0x9a,0xa2,0xf9,
+ 0x3b,0x02,0xcb,0xb3,0x7f,0xaa,0xfd,0xa8,0x61,0xee,0x2a,0xba,0x9c,0x5c,0xa7,0x71,
+ 0x8f,0x90,0xfc,0x7d,0x1e,0xff,0x4a,0x20,0x84,0x24,0xff,0xb9,0x0e,0xf1,0xcf,0x71,
+ 0xc5,0xc3,0x5c,0xf3,0x73,0xd2,0x10,0x08,0x95,0x87,0xdd,0xb7,0x8a,0x14,0xce,0x43,
+ 0x65,0x6f,0x16,0x88,0x27,0xb9,0x47,0x88,0xfb,0x7f,0xde,0xb4,0xfa,0x7f,0xb4,0x2b,
+ 0x6d,0xcf,0xf3,0x32,0xf2,0xc3,0xca,0x1f,0xa0,0x0c,0x97,0x65,0xda,0x05,0xf8,0x23,
+ 0xae,0xcf,0x26,0x4b,0xfd,0x1f,0xab,0xff,0x67,0x00,0xd5,0xa2,0x87,0xa1,0xd9,0xfb,
+ 0x01,0x4a,0x7b,0xdc,0x3f,0xfd,0x39,0xc3,0xc2,0x9d,0x30,0xcb,0x70,0x18,0x08,0x44,
+ 0xff,0xe9,0x5a,0xff,0x4f,0x13,0x9e,0xe1,0x7c,0x86,0x20,0xe7,0x8c,0xb2,0x96,0x27,
+ 0xa2,0x06,0xc9,0x69,0x61,0xbd,0xa7,0xd8,0xf8,0x3b,0x04,0x42,0xe3,0xf6,0xd4,0x14,
+ 0xff,0xcf,0x3a,0x56,0xd0,0xe1,0x7a,0xd8,0xf4,0xf6,0xe4,0xeb,0xf4,0x61,0x72,0xc2,
+ 0xbe,0xee,0xc7,0xf8,0x9a,0x94,0xcc,0x9a,0x78,0xdf,0x54,0xff,0x4f,0x18,0xd4,0xe7,
+ 0x02,0xe5,0xa4,0x87,0x34,0x12,0xe7,0x51,0xd7,0x4c,0xf2,0x9e,0x6a,0x9a,0xb1,0x6d,
+ 0x64,0xa2,0xd4,0x5b,0xaa,0xff,0x87,0x9c,0x82,0xbd,0x51,0x94,0x96,0x23,0xf0,0x52,
+ 0xb8,0x74,0xb3,0xfd,0x43,0x1c,0x98,0x6e,0x9f,0x73,0x39,0x2e,0x7a,0xd1,0xf4,0xff,
+ 0xa4,0xc4,0xbf,0x0c,0x3c,0x4d,0x47,0x14,0x47,0x93,0x10,0x57,0x47,0xa2,0xbc,0x2d,
+ 0x9a,0x18,0x27,0x66,0xc7,0x90,0x71,0xfe,0xcf,0xb5,0xf1,0xaf,0x1e,0xe6,0xe1,0xde,
+ 0x8c,0x73,0xb8,0x3f,0xbd,0xab,0xcc,0xc1,0xb1,0x24,0xd1,0xf7,0xcf,0xf8,0x7f,0x9a,
+ 0x23,0x05,0xcb,0x71,0xff,0xbf,0xa7,0x1d,0xe4,0xd5,0xf8,0xa3,0xe4,0x9c,0xd2,0x12,
+ 0x2f,0xe1,0x30,0x86,0x7b,0x78,0xb2,0xae,0xc5,0x3f,0x8f,0x4e,0x6f,0xaf,0x45,0xb3,
+ 0x6b,0x40,0x3d,0xa8,0x98,0xdd,0xd3,0x06,0xfc,0x2d,0x6a,0x96,0x26,0x46,0xc7,0xf9,
+ 0x2a,0x62,0x6a,0xfc,0x2b,0x17,0xd6,0x26,0x48,0x3e,0x2f,0x2a,0x7b,0x40,0xed,0x77,
+ 0x71,0x1a,0x70,0x03,0xe1,0x44,0x44,0xdb,0x78,0x6a,0xd8,0x54,0xff,0xcf,0x49,0xee,
+ 0x6d,0xd0,0xcd,0xb7,0xf3,0x24,0xf3,0xdf,0x4d,0xfe,0xcf,0xf8,0xfb,0x5a,0xf8,0xcf,
+ 0x37,0xbd,0x47,0x78,0xda,0xfb,0x3c,0x4e,0xfb,0xb9,0x0c,0xe3,0xfe,0x9f,0xd1,0x04,
+ 0xed,0x67,0xe0,0xcf,0xf8,0x7f,0x84,0x73,0xf0,0x8a,0x51,0x7a,0x57,0x6b,0xbf,0xb8,
+ 0xb8,0xe9,0x33,0x58,0xc4,0xdb,0xa6,0xdc,0x0a,0xa6,0x5b,0xac,0x3f,0xb9,0x3e,0xe7,
+ 0x52,0xfc,0x3f,0x11,0x85,0x67,0x7b,0x89,0x2b,0x58,0xb7,0x80,0x83,0x26,0xee,0xff,
+ 0xe1,0x40,0x37,0xcc,0xf9,0x3f,0x7f,0xc6,0xff,0xa3,0x35,0xf0,0xfc,0x77,0x25,0xfb,
+ 0x76,0x7c,0x3b,0xd7,0x72,0x9a,0x4b,0xd2,0xd6,0x99,0x6e,0xae,0xdc,0x0d,0xf8,0xbe,
+ 0x92,0xfb,0x1a,0xff,0x0f,0x69,0x86,0xf6,0xaf,0xb8,0xda,0x50,0x7a,0x1f,0x54,0xd4,
+ 0x7a,0xda,0xc6,0xfd,0x3f,0x8a,0xe9,0xf6,0x29,0x84,0x6b,0xfd,0x3f,0xb9,0x4f,0xc1,
+ 0x31,0xee,0xf6,0x69,0x13,0x57,0xc1,0xe8,0x3d,0x15,0x9a,0x7b,0xdb,0x2d,0xb7,0xa8,
+ 0x77,0xf2,0xc7,0xde,0x9c,0x7c,0xfe,0x41,0x4b,0xfe,0x57,0x13,0xfb,0xc4,0x5d,0x59,
+ 0xb3,0x6c,0x4b,0xcd,0x7b,0x89,0xdf,0x66,0x0b,0xbd,0x51,0x73,0x90,0xd7,0x68,0xf1,
+ 0xff,0x4c,0xcc,0x4f,0xe0,0x9f,0xb2,0xc4,0xb2,0x8f,0x80,0x97,0x98,0xf9,0x5f,0x7d,
+ 0x56,0x46,0x7a,0xaa,0xff,0x47,0x2a,0x47,0xe9,0xb6,0x93,0xd1,0x07,0xc8,0x28,0x62,
+ 0xd3,0x85,0x51,0xaa,0xe3,0xf7,0xd8,0x10,0x2f,0xe1,0xb4,0x67,0x0e,0xec,0xcd,0xd2,
+ 0x88,0xc7,0x27,0x3e,0x2f,0xe2,0x9f,0x00,0xec,0x35,0x0a,0x83,0xd4,0x4b,0x5e,0x50,
+ 0x71,0x3f,0x70,0x6b,0xf4,0x65,0xd8,0x19,0xb7,0x9b,0xfc,0x9f,0x89,0xf3,0x62,0xed,
+ 0x0f,0x92,0x07,0x07,0xa8,0x6a,0x44,0xf0,0xd8,0xaa,0xbf,0x24,0xb3,0xa3,0x94,0x07,
+ 0x86,0x9e,0xe6,0xc7,0xf6,0xbe,0xe4,0xf9,0xed,0xb3,0xe4,0x7f,0xf1,0x22,0x87,0xb7,
+ 0x86,0xdc,0x6b,0x10,0xed,0x7c,0x86,0x6a,0x05,0x07,0x9f,0x23,0xb4,0x5f,0xcc,0xd3,
+ 0xbe,0x4c,0x68,0xc4,0xfd,0x3f,0xc7,0x2d,0xfe,0x9f,0xce,0x89,0x45,0x30,0x1b,0x4f,
+ 0x33,0x07,0x2f,0x3c,0xfb,0x46,0x60,0x82,0xff,0x93,0x90,0x27,0x96,0xfc,0xaf,0xcc,
+ 0x8b,0xf0,0x2a,0x5b,0xc8,0xb3,0xbd,0xbc,0xf0,0x1e,0x5b,0xb4,0xc2,0x3e,0x2a,0x7e,
+ 0x6e,0x02,0x21,0x93,0xff,0x73,0x35,0x6a,0xea,0x2f,0x0b,0xff,0x59,0xd8,0xc6,0xcb,
+ 0x8e,0xf5,0x66,0xd6,0x8b,0x0f,0x6b,0x6b,0x95,0x7c,0xc8,0x7c,0x90,0x9c,0x36,0x78,
+ 0xfd,0x0d,0xb9,0x9a,0x3f,0x3f,0xbb,0xc6,0xff,0xb3,0x8d,0x27,0xf5,0x6b,0x94,0xb7,
+ 0xe0,0x7a,0x92,0xce,0xbd,0x8f,0xd6,0x67,0x9f,0x16,0x8e,0x04,0xf2,0x0d,0x59,0x23,
+ 0xbc,0x14,0x92,0x39,0xbf,0x97,0x4d,0xac,0x7f,0x28,0xb7,0x0f,0x1a,0x0c,0x35,0x98,
+ 0x91,0xef,0xe7,0xdd,0x40,0x54,0x63,0xee,0x02,0xf2,0x01,0x57,0xd2,0x5c,0xec,0xf3,
+ 0x54,0x17,0x73,0x3d,0xdf,0xb4,0xe4,0x7f,0x75,0xc2,0xb1,0x07,0xbb,0x82,0xf6,0xce,
+ 0x9c,0x62,0x76,0x36,0x58,0xa1,0xd9,0x0f,0x8a,0xf1,0xc2,0x8b,0x0d,0xa8,0xbf,0x7e,
+ 0xc2,0xeb,0x1d,0x25,0xde,0xf7,0xb8,0x05,0xff,0x0c,0xe2,0xf7,0xac,0x08,0xa2,0xd1,
+ 0xf1,0x21,0x1a,0xba,0xbe,0x26,0xde,0xed,0x4b,0xbd,0x68,0xf2,0x61,0x1a,0x77,0x4f,
+ 0xcc,0xb7,0xe6,0x7f,0x9d,0xe1,0xd1,0x64,0xbf,0x3d,0x2e,0x9e,0x56,0x5f,0x01,0x4f,
+ 0xc4,0x3e,0x4c,0x62,0xb0,0x94,0x99,0x62,0xbc,0x72,0xc2,0x1f,0x12,0xb7,0xf8,0x7f,
+ 0xea,0xd0,0xbe,0x76,0xbb,0x5c,0x8c,0x7c,0xc4,0xde,0xca,0xde,0xd9,0x8d,0x82,0xe5,
+ 0x5d,0x88,0x04,0xb2,0x78,0xd9,0xd8,0x84,0xab,0xc7,0x91,0xd2,0x1f,0x4d,0xa8,0x23,
+ 0x2d,0xc6,0x03,0x21,0xba,0xd9,0xf9,0xae,0x62,0xd6,0xeb,0x88,0x91,0x77,0xd5,0x5d,
+ 0x0a,0xce,0x8f,0xac,0x73,0x27,0xfd,0x3f,0x13,0xfb,0x87,0xe2,0x7f,0x28,0x8d,0xab,
+ 0x51,0xdf,0xf5,0xc1,0xe3,0xb8,0xcd,0x5d,0xbc,0xcc,0x02,0x5a,0x28,0xc6,0x8d,0x90,
+ 0xce,0x4b,0x03,0x25,0xf0,0x00,0x24,0x7f,0xea,0xf2,0x4e,0x98,0x65,0xf7,0x70,0xdb,
+ 0x9b,0xf5,0x25,0x62,0x62,0x87,0xd4,0xc9,0x5f,0x93,0xf3,0x2b,0x2e,0xb9,0x12,0xfe,
+ 0xae,0x64,0xfe,0xd7,0x8c,0x33,0x1c,0xe4,0x68,0xf3,0x34,0x5e,0xdf,0x0f,0xdf,0x6e,
+ 0x19,0x77,0x73,0x9d,0x96,0x12,0xfc,0x1f,0x53,0x7f,0x65,0x0d,0x17,0x58,0xf2,0xbf,
+ 0x1e,0x35,0x41,0x8e,0x81,0xf8,0xfc,0xdd,0xda,0x57,0x7e,0x54,0x5a,0x9b,0x89,0x6a,
+ 0xae,0xe7,0x63,0x28,0xed,0x43,0xa0,0x58,0x09,0x1f,0x41,0x69,0x21,0x22,0x6a,0x8b,
+ 0xff,0x87,0xfe,0x82,0xb3,0x9b,0x9e,0x95,0xf5,0x70,0x9c,0x35,0x3b,0x6d,0x11,0xdb,
+ 0x58,0xf6,0xe5,0xfe,0x0d,0x75,0xce,0x61,0x79,0x37,0xf9,0x05,0x1c,0x32,0x9c,0x40,
+ 0xb3,0xc3,0x96,0xfa,0x87,0xd2,0x49,0x01,0x3f,0x7a,0x83,0xec,0xcc,0xee,0x6b,0x8a,
+ 0xa8,0x10,0xe0,0x81,0x30,0x68,0xc8,0x2d,0x7c,0x51,0x16,0x48,0x26,0x0f,0x35,0x66,
+ 0x50,0x48,0xf7,0x0a,0x13,0xdf,0x37,0x51,0xff,0xa7,0x64,0x58,0xee,0x20,0x83,0x10,
+ 0x11,0x8a,0x74,0xb3,0x10,0x01,0x13,0x9c,0xbc,0xfe,0xe4,0x6e,0x30,0x5d,0x4f,0x0d,
+ 0x24,0x96,0x36,0xf1,0x3c,0x42,0x82,0x7f,0x3b,0xec,0xe8,0xa8,0x89,0x5f,0xdf,0xa3,
+ 0x38,0x3d,0xad,0x31,0x71,0x88,0xec,0x22,0xb8,0x7f,0xf6,0x08,0x6e,0xf8,0xe0,0x2c,
+ 0xda,0x5f,0xdb,0xc8,0xf4,0xc9,0xe7,0x6f,0x00,0x1e,0xff,0xc2,0xf3,0x15,0x17,0x87,
+ 0xc9,0x65,0x66,0x1e,0xab,0x31,0xe5,0x72,0xf4,0x8a,0xe1,0xe8,0x46,0xc5,0x76,0x11,
+ 0xaa,0x56,0x39,0xce,0x7c,0x3d,0x59,0xff,0x70,0x20,0x91,0xff,0x15,0xb4,0xff,0x42,
+ 0x2e,0x52,0x02,0x50,0x71,0x9f,0x59,0x78,0xf3,0x98,0xe4,0xed,0x31,0x3d,0x96,0x17,
+ 0x35,0x6f,0xad,0xbb,0x51,0xfe,0xde,0xa4,0xfc,0x89,0x4b,0xee,0xdc,0xc3,0x3c,0x1e,
+ 0xb1,0x9b,0x14,0x41,0xa4,0x1f,0xf1,0xcf,0x08,0xe7,0xff,0x2c,0xc7,0x81,0x82,0x66,
+ 0x4d,0x17,0x53,0x43,0xb4,0xc9,0x99,0xe4,0xff,0x18,0x13,0xfe,0xc0,0x05,0x64,0x76,
+ 0x53,0xa3,0xd1,0xce,0x78,0x7f,0xc6,0xf4,0x06,0xc3,0x85,0x08,0xb9,0x88,0xb7,0xe9,
+ 0x55,0x59,0x60,0x9f,0x7f,0x62,0x35,0x01,0xfa,0x21,0xa1,0xf4,0xe9,0x88,0xed,0x1f,
+ 0x61,0xfd,0x33,0xf9,0x9d,0x74,0x0d,0x79,0xc7,0xc6,0xf4,0x7c,0x95,0xd6,0x91,0x27,
+ 0xe8,0x7e,0xb6,0x43,0xc7,0x2b,0xc9,0xa2,0xed,0x01,0x30,0xf3,0xdf,0x0d,0xb7,0x27,
+ 0x27,0x8b,0x1c,0xd7,0x3d,0xa3,0x8e,0xd2,0xc6,0x8f,0xa0,0x47,0xef,0xae,0x77,0xab,
+ 0xa4,0x95,0x9e,0xa7,0x5d,0xcc,0xae,0x8a,0xd9,0xc9,0xfa,0xcf,0x89,0xf5,0x34,0x6e,
+ 0xf1,0x08,0xad,0x70,0x31,0x5a,0xc6,0x1c,0x7b,0xbe,0x3c,0x04,0x23,0xd9,0x3e,0x6d,
+ 0x53,0x27,0x9e,0xc7,0x8b,0xca,0x91,0xa6,0x79,0xbb,0xc4,0xe8,0xa4,0x7d,0x64,0xd6,
+ 0xff,0x41,0xfb,0x37,0x2b,0x96,0x33,0x90,0xf0,0xff,0xec,0x17,0x3f,0xd4,0xdf,0x07,
+ 0x6f,0xc3,0xa6,0x98,0xb8,0x5b,0xfb,0x14,0x70,0xa1,0x62,0x56,0xff,0x4f,0x9e,0xe9,
+ 0x4f,0xd6,0x4c,0x6f,0x8f,0xe9,0x6d,0x7e,0x90,0x5c,0x86,0xb5,0x90,0xdf,0x20,0xf2,
+ 0x42,0xb2,0xfb,0xb9,0x3d,0x55,0x4f,0xa6,0xd6,0x3f,0x2c,0xe6,0x49,0x5e,0x57,0xe0,
+ 0x29,0x8e,0x76,0xfe,0x89,0x5c,0x69,0xfa,0x65,0x03,0xa7,0xfd,0xa4,0xbf,0x03,0xfb,
+ 0x59,0x7e,0xdc,0xc5,0xf3,0xfd,0x27,0x9e,0x27,0xc0,0xeb,0xff,0x80,0xfb,0xe1,0x8c,
+ 0x18,0x8f,0x2f,0x13,0xf7,0x19,0x33,0xd0,0xbc,0xd9,0x50,0x07,0x96,0xf0,0xc2,0xe3,
+ 0x7b,0x83,0xce,0xd7,0xa8,0x9e,0x7d,0x43,0xb2,0x3e,0x55,0xa2,0x3f,0x2c,0x0f,0x72,
+ 0xf5,0xc1,0x33,0x30,0x2f,0xba,0x8c,0xb3,0xdf,0x2f,0xea,0xde,0x06,0x47,0x07,0x0e,
+ 0xf6,0xb3,0xae,0xe8,0x6a,0x5d,0xae,0x48,0xde,0x1f,0x12,0xf6,0x78,0x16,0xaa,0x21,
+ 0x32,0xa6,0x3d,0x62,0xf6,0xeb,0x84,0x38,0xe5,0x86,0xc6,0x4e,0x33,0x23,0x9e,0xbb,
+ 0x16,0x2d,0xfd,0x61,0xcd,0x7c,0xe7,0x4a,0x2d,0x93,0x6b,0xc3,0x63,0x70,0x6f,0x60,
+ 0x69,0x74,0xfa,0x2a,0xf3,0x20,0x3b,0xa6,0x13,0x5e,0x0a,0xd8,0xcb,0x23,0x62,0x56,
+ 0xfe,0x73,0x42,0xc9,0x06,0xb6,0x90,0x39,0xd0,0x13,0x57,0x43,0x8f,0xf2,0xc4,0xae,
+ 0x66,0x20,0xda,0x12,0x8e,0x97,0xd0,0xe2,0x08,0x05,0xda,0xc8,0xc4,0x6c,0x5e,0x0f,
+ 0x30,0x31,0x7f,0x6e,0x34,0xcb,0x07,0x8f,0xb2,0x0f,0x78,0x1b,0xf7,0x5e,0xd4,0xd7,
+ 0xa2,0x76,0x63,0x3f,0xe9,0xa0,0xb7,0xf1,0x7c,0xf9,0x33,0xd6,0xfa,0xcf,0xb9,0x09,
+ 0x90,0x43,0x73,0xd3,0x6f,0x85,0x47,0x35,0x57,0x10,0xed,0xd3,0xb5,0x28,0xb1,0x79,
+ 0xfd,0x6d,0xc2,0x4b,0x25,0xe7,0x07,0xe9,0xfd,0xb6,0x64,0xfe,0xfb,0xf2,0x0c,0xce,
+ 0xff,0xe1,0x65,0xf7,0x72,0x5c,0xc2,0x49,0xa1,0x88,0xb3,0x31,0x79,0xd8,0xab,0x0b,
+ 0x5f,0x93,0x27,0x22,0x09,0x5e,0x58,0xaa,0xc9,0x96,0xfa,0xcf,0x33,0x06,0x72,0xcd,
+ 0xfa,0x87,0xd1,0x2f,0xf7,0x92,0x3f,0xc2,0x42,0x5e,0xf6,0xe7,0x1b,0xca,0x67,0xb7,
+ 0x9b,0xf5,0x7f,0x66,0x4b,0x97,0xab,0x7d,0xda,0x32,0x6b,0xfd,0xc3,0x3c,0x33,0x5f,
+ 0x6c,0x31,0x47,0x3b,0xfb,0xe0,0x95,0xb4,0xf9,0x9c,0xff,0x33,0x9b,0x5d,0xce,0xf0,
+ 0xfa,0xef,0xef,0x6f,0x1c,0x50,0xd1,0x34,0xab,0x75,0xfc,0x4a,0x2c,0x49,0xe2,0x13,
+ 0xe0,0xcf,0x53,0x32,0x83,0xfb,0x7f,0xb8,0xb7,0x27,0x2f,0xc2,0x88,0x10,0xed,0x86,
+ 0x32,0xc5,0xac,0x87,0x83,0x57,0xa8,0x4c,0x48,0xb2,0xfe,0x73,0xc8,0x8c,0x7f,0xb9,
+ 0x34,0x5b,0xf4,0xe8,0x80,0xbe,0x8b,0x16,0xfa,0xa9,0x99,0xf8,0x5f,0x34,0xde,0x21,
+ 0xae,0xc1,0xa4,0x42,0xa5,0xdf,0x3b,0x29,0x7f,0xba,0xd3,0x3a,0xc6,0xe3,0x89,0xf7,
+ 0xae,0x82,0x5d,0x40,0x7a,0x80,0xd7,0xd3,0x3e,0x28,0x9a,0x6d,0xe6,0x3a,0xcc,0x8a,
+ 0x4c,0xf2,0x02,0x72,0xc7,0xe4,0xf7,0x6a,0x97,0xf8,0xf7,0xad,0xf8,0x6a,0x56,0x74,
+ 0xe5,0x4b,0xe4,0x2c,0xc4,0x96,0x17,0x46,0x73,0x0a,0xd1,0x7e,0x69,0x0f,0xa0,0x99,
+ 0xdc,0x4b,0x8e,0x45,0xbc,0xf8,0xbe,0x72,0xdd,0xe4,0xfe,0x39,0x9e,0xd8,0x0f,0x9c,
+ 0xff,0xdc,0xc1,0xcc,0x6a,0x87,0x8a,0x3c,0xa0,0x8c,0x3e,0xee,0xd3,0xe6,0x6d,0x11,
+ 0x07,0xa4,0x51,0x17,0xf7,0xff,0x34,0x1e,0x9a,0xbc,0xbf,0x0d,0x26,0xf1,0x8f,0x0a,
+ 0x67,0x6e,0x2f,0x51,0xb6,0x37,0xc8,0x2a,0xf4,0x09,0x95,0x8a,0x9d,0xd5,0xc4,0x69,
+ 0x9f,0x86,0xeb,0xcf,0xe4,0x24,0xff,0x87,0xe6,0xf2,0xf8,0xd7,0x3c,0x46,0xbf,0x43,
+ 0x6e,0xd3,0x36,0xde,0x8e,0x83,0xb3,0xc4,0x25,0x6d,0x64,0x25,0x0c,0x81,0xd0,0x08,
+ 0xbc,0xae,0x39,0x3b,0x51,0x95,0x27,0xf3,0x8b,0x13,0xf1,0x88,0x42,0x46,0xdd,0x44,
+ 0x86,0x2d,0x71,0xb7,0xb6,0xa1,0x92,0xb4,0x72,0x37,0x35,0x97,0x57,0x7d,0x14,0x55,
+ 0x79,0x1c,0x07,0xfe,0x49,0xfd,0x25,0x40,0x22,0xff,0x9d,0xc6,0xc3,0xb7,0xc1,0xba,
+ 0xac,0x62,0xcd,0x56,0x9f,0xfe,0x04,0x5b,0xaf,0x15,0x1b,0x10,0xc4,0x6d,0xf1,0xaf,
+ 0x5a,0x7e,0x3c,0x12,0x0c,0x07,0x92,0x78,0x9b,0x71,0x90,0x73,0xab,0x6e,0x0f,0xdc,
+ 0x98,0x0d,0xa7,0x1b,0x16,0x87,0x8a,0xd6,0x88,0x4f,0x84,0x5f,0x64,0x95,0x71,0xd7,
+ 0x9a,0x69,0x6f,0xc2,0x8b,0x09,0x44,0x74,0xd7,0xa4,0xfc,0x29,0xca,0xe5,0xf2,0x64,
+ 0x16,0x9b,0x07,0x5f,0x36,0x60,0x24,0xcd,0xa7,0x65,0x7a,0x0a,0x78,0x05,0x18,0x33,
+ 0x0c,0x34,0x88,0xf6,0xda,0x11,0xae,0xf8,0xc2,0xc9,0xfa,0xcf,0xbc,0x3f,0x2c,0xab,
+ 0xd2,0xb3,0x06,0x73,0x2e,0x4a,0x1f,0xb1,0x52,0x9e,0xf6,0x55,0xc5,0xcb,0x3e,0x0f,
+ 0x38,0xce,0x88,0x17,0x4d,0x6a,0xd0,0xcd,0x97,0x72,0x92,0xf2,0xe1,0x19,0xb3,0xdf,
+ 0x6b,0x31,0x77,0x82,0x5d,0x84,0x70,0x4c,0xbd,0x53,0xfe,0x8c,0x64,0xb1,0x86,0x0e,
+ 0xfd,0xe4,0xac,0xe5,0xbc,0x51,0x2c,0xaf,0xff,0xfc,0xa5,0x0d,0x45,0x49,0xff,0x5e,
+ 0x82,0x2f,0x1d,0xb6,0x05,0xd1,0xc8,0xda,0x0d,0xb3,0x83,0x2d,0xc3,0xc4,0xbe,0x6e,
+ 0x5d,0x7e,0xb1,0x71,0x27,0xcf,0x77,0x7b,0x96,0x27,0x6e,0x3c,0xe4,0x94,0xac,0xf5,
+ 0x0f,0xb9,0xfc,0x89,0x52,0x5e,0xe6,0x2e,0xcc,0x0a,0x43,0x66,0x20,0x3e,0xa2,0x15,
+ 0x1a,0x4b,0xca,0x71,0x3d,0xf7,0x86,0x54,0x5e,0x91,0x43,0x99,0xac,0x7f,0x68,0xca,
+ 0x4f,0xc9,0xc7,0x6c,0xbc,0x3a,0xc1,0x07,0x81,0xfd,0x6b,0x1c,0x31,0xb9,0x12,0x4e,
+ 0x28,0x65,0xc6,0xb2,0x58,0xe3,0x20,0x1c,0xd6,0xba,0x0c,0xf9,0x39,0xd1,0x36,0x59,
+ 0xff,0x90,0x25,0xf4,0x51,0xd8,0xc1,0x69,0xa8,0x97,0x68,0x05,0xe7,0x87,0x0f,0x09,
+ 0x23,0xa4,0xc2,0xc8,0xea,0x12,0x07,0xa9,0x49,0x94,0x8a,0x4e,0x1b,0x4a,0xf6,0x87,
+ 0x4d,0xe8,0x3b,0x96,0x85,0x66,0x69,0xa2,0x3f,0x5a,0x1c,0x81,0xed,0xab,0x88,0xf7,
+ 0xec,0x17,0x11,0x21,0xec,0x81,0xad,0xa1,0x59,0x9f,0x6c,0x55,0x27,0xeb,0x1f,0xf6,
+ 0x48,0x6e,0x5e,0x6d,0x8f,0xc9,0x1b,0xc9,0x0b,0x2c,0xf2,0x6e,0x49,0x61,0x96,0x4e,
+ 0xdc,0x34,0x12,0x20,0x9c,0x91,0x82,0xcf,0xf3,0x7b,0x67,0xfc,0x46,0x46,0xf2,0xad,
+ 0xfd,0x61,0xa5,0xc3,0x52,0x09,0x5b,0xd2,0x99,0xfd,0x01,0x6c,0x60,0x25,0x9a,0x6d,
+ 0x0f,0xd9,0x4d,0x5b,0xa6,0xa7,0x27,0xe6,0x77,0x37,0x14,0xf5,0xc9,0x9c,0xb1,0x3c,
+ 0x89,0x7f,0x24,0x3b,0xf7,0xc6,0x33,0x59,0x25,0x83,0xe1,0x70,0xbe,0x3b,0x68,0x53,
+ 0xc8,0xa3,0x90,0x31,0xd7,0x0c,0x14,0xf6,0xf1,0x0a,0xe4,0x9a,0x0c,0x36,0xc2,0x26,
+ 0x37,0x28,0x20,0x88,0xd2,0x10,0x06,0x23,0xfe,0x61,0x7d,0x2e,0x5f,0x34,0x2b,0x26,
+ 0x3e,0x07,0x47,0xd5,0x32,0xc3,0xdd,0xd5,0xc8,0x89,0x2b,0xe6,0x0a,0xa8,0x4f,0x4d,
+ 0x3e,0xcf,0x8f,0xc6,0xe0,0xaa,0x8b,0xe7,0x37,0x89,0x67,0xd5,0x61,0x5a,0x05,0x1b,
+ 0x87,0xc5,0xef,0xd0,0x11,0x57,0xd5,0x51,0xdc,0x3f,0x1c,0x11,0x2d,0xd4,0x36,0x19,
+ 0x29,0xf5,0x7f,0x46,0xa2,0x63,0xae,0xf9,0xbc,0x7f,0x5c,0x39,0x1b,0x73,0x56,0x09,
+ 0x4b,0x7b,0xc5,0x61,0xfd,0x72,0xc8,0x8c,0x9f,0x8e,0xfb,0x7f,0x86,0x53,0xf8,0x3f,
+ 0xef,0x43,0xb7,0xe1,0x55,0x5c,0xdb,0xc9,0x5c,0xe8,0x8e,0x96,0x78,0xe8,0x7a,0xf2,
+ 0x7b,0x38,0x18,0x2c,0x8a,0x27,0xea,0xff,0xb0,0x12,0xde,0xff,0xdd,0x93,0xb4,0x7f,
+ 0xd3,0x8e,0xe5,0xc6,0xd2,0x0b,0xa7,0xd7,0xe5,0x42,0x06,0x20,0x22,0x41,0x8c,0x48,
+ 0x0c,0x38,0xa8,0x8e,0x33,0xa0,0xc6,0xfd,0x1b,0xde,0x14,0xff,0x4f,0x37,0x75,0x8a,
+ 0x34,0xea,0x77,0xb9,0x51,0x10,0x91,0x0c,0xf6,0x6e,0x5c,0x3d,0x48,0x8b,0x8c,0x96,
+ 0x58,0xf6,0xa4,0xff,0xc4,0x52,0xff,0x47,0x39,0x08,0x57,0xb4,0x03,0xd1,0xa5,0x71,
+ 0xf9,0x36,0xb8,0x42,0xaa,0xa2,0xc5,0x03,0xe2,0xa8,0x74,0xd5,0xef,0x4d,0x30,0xc4,
+ 0x4c,0x3c,0x5c,0x61,0xa9,0xff,0x70,0x16,0xa5,0xa7,0x99,0x04,0xa7,0xe2,0x6a,0x70,
+ 0xc5,0x97,0xa5,0x8f,0x03,0xc5,0x44,0x3d,0x04,0x3e,0x18,0xcd,0xb1,0xf6,0xbf,0xd8,
+ 0x05,0xc7,0x83,0xde,0xcd,0x4b,0xf5,0x2f,0xcf,0x55,0xfe,0x49,0xf1,0x46,0xed,0x1d,
+ 0x8d,0x73,0xa5,0x4b,0x1a,0x87,0x9d,0x39,0xe3,0xf7,0xd7,0xad,0xfd,0x61,0x25,0x17,
+ 0x0b,0x33,0xa7,0x4e,0xf5,0x9a,0x6f,0x4b,0x87,0xfb,0x55,0x16,0xe9,0x08,0x17,0x25,
+ 0xf8,0xf0,0x08,0xe4,0x24,0xf3,0xf9,0x75,0xf2,0xb9,0xc5,0xff,0x73,0xb7,0xda,0x10,
+ 0x77,0xae,0x09,0x28,0xe4,0x1e,0x29,0xc6,0x40,0xa3,0x33,0x51,0x7a,0x77,0x07,0xdc,
+ 0x13,0xeb,0xe3,0x4e,0xad,0xff,0xbc,0x52,0xc8,0x12,0xd6,0x46,0x77,0x84,0x02,0xcb,
+ 0xb3,0xbf,0xa6,0xed,0x0b,0xe7,0xaf,0xa2,0x7f,0x43,0xae,0x83,0x7d,0x11,0xd3,0x0d,
+ 0x32,0xe9,0xff,0x19,0x9b,0x9c,0xcf,0xfd,0x3f,0x3d,0x8a,0xc7,0x6f,0x57,0xe4,0xa5,
+ 0xa1,0x4f,0x20,0x56,0xeb,0x9e,0x2e,0x4b,0xfa,0x30,0x54,0xf6,0x3a,0x3c,0x13,0xfe,
+ 0x1f,0x10,0x5f,0xb3,0xf6,0xbf,0xf0,0x7f,0xa6,0x54,0xd5,0xce,0x3b,0x23,0x8e,0x69,
+ 0x97,0x95,0xc5,0xa8,0x7d,0x0a,0x2e,0xd0,0x91,0x68,0x62,0x7d,0xa4,0xab,0x3c,0x3f,
+ 0xae,0xc7,0xd2,0xff,0x82,0xf3,0x7f,0x78,0xd8,0x71,0xa9,0x2e,0xbb,0xe1,0x68,0xa2,
+ 0xda,0x8f,0x9b,0xfb,0x27,0x2d,0xeb,0x8f,0xf8,0x27,0x99,0xff,0x32,0x9d,0x57,0x3b,
+ 0xc7,0xdd,0x1e,0xf2,0xdb,0x61,0x1d,0x31,0xb7,0xbd,0x9d,0x86,0xc7,0x3b,0x62,0x4c,
+ 0xd8,0x8f,0x5e,0x4b,0xfd,0x81,0x27,0xe0,0x31,0x66,0x16,0x35,0xe2,0xfc,0x1f,0xb3,
+ 0x10,0xe2,0xac,0x8c,0x75,0x89,0xb2,0xcf,0xef,0x98,0xa5,0x00,0xe4,0x3c,0x0b,0xfe,
+ 0xe1,0xfd,0x61,0xb7,0xb2,0x76,0x83,0xce,0x43,0x6b,0xab,0x71,0x0b,0x4a,0xef,0xdb,
+ 0x48,0x96,0x10,0x66,0xaa,0x65,0x3d,0xaf,0x23,0x37,0xa4,0xf8,0x7f,0xde,0xdc,0xd1,
+ 0xd5,0xe9,0x1e,0x10,0xeb,0x78,0x7e,0x53,0xa7,0x5b,0x97,0x8b,0xc2,0xa7,0x74,0x5e,
+ 0xf6,0xd9,0x24,0x86,0xe1,0xd1,0x1b,0x48,0xe9,0x7f,0x71,0xd6,0xcc,0xfe,0x76,0x68,
+ 0x22,0xe3,0x6d,0x2f,0x12,0x44,0xa0,0xb1,0x84,0x19,0x3e,0x49,0x0d,0x4a,0xe9,0x7f,
+ 0x01,0xbf,0x02,0xb3,0x9a,0x0d,0xc7,0x3f,0xa6,0x23,0x48,0x82,0x1e,0xd5,0x6b,0x76,
+ 0x40,0x48,0x98,0xba,0xdb,0x2c,0xf8,0x47,0x87,0x2f,0x86,0x9a,0x35,0x27,0xea,0x6b,
+ 0xf1,0x9b,0xd0,0x1c,0x6f,0x0f,0xd1,0xed,0xe1,0x39,0x09,0xb5,0x9b,0xc8,0xc8,0xe6,
+ 0xa5,0x81,0x2c,0xf8,0xa7,0x5c,0x2a,0x14,0xff,0x25,0xaf,0x40,0xa3,0xfd,0xa4,0x90,
+ 0x3d,0xaa,0x16,0x04,0xe8,0x6b,0xb6,0x05,0xec,0x51,0x6a,0x9d,0xbf,0xd9,0x5a,0xff,
+ 0x07,0xd2,0x60,0xad,0x90,0x1f,0xbc,0x2b,0x38,0xe7,0x76,0x0e,0x3b,0x35,0x7a,0x1f,
+ 0x49,0x78,0x84,0xc6,0xeb,0xff,0xb8,0x35,0x39,0x3b,0x4c,0x92,0xf9,0xef,0x94,0x67,
+ 0x1b,0x75,0x81,0xdd,0xe0,0x6a,0x37,0x51,0xf6,0x59,0xe5,0x85,0xbb,0x2c,0xef,0x1b,
+ 0xb6,0xe2,0x9f,0x9b,0xde,0xe3,0x4d,0xde,0x83,0x8e,0xdc,0x1a,0xee,0x08,0x32,0x61,
+ 0xcf,0x7b,0x13,0x6d,0xdf,0xc7,0xdf,0xf7,0xb5,0xad,0x49,0xfc,0xb3,0x2d,0xed,0x73,
+ 0xf6,0x4a,0x47,0x69,0x9d,0xfd,0x4d,0xb1,0x0c,0x5e,0xe9,0xc4,0xc1,0xdb,0x9c,0xff,
+ 0xb3,0xad,0x54,0x5b,0x9a,0x08,0x0c,0xe1,0x7c,0xde,0xff,0x22,0xe9,0xff,0x41,0x90,
+ 0xa3,0x39,0x29,0xda,0xa7,0xf9,0x64,0x83,0xe6,0x04,0x57,0x13,0x0e,0x22,0x9a,0x73,
+ 0x3c,0xff,0x3d,0xe1,0xff,0x49,0x4f,0xae,0x50,0xda,0x8b,0x7a,0x43,0xb5,0xca,0xf9,
+ 0x3f,0x69,0x7a,0x03,0xe8,0x41,0x9a,0x4d,0x24,0x48,0x78,0x84,0xc6,0xdf,0x77,0xc9,
+ 0x75,0xfe,0x64,0xff,0x8b,0x84,0xff,0x87,0xa3,0x9d,0xec,0x42,0x73,0xd9,0x23,0x88,
+ 0x7f,0x72,0x13,0x57,0x26,0xd6,0xb3,0xcd,0x9a,0xff,0x95,0xdb,0x81,0x18,0xc9,0xa4,
+ 0x75,0x2d,0x80,0x63,0x26,0x9b,0x5d,0xe6,0x1f,0x7a,0xa2,0xfe,0x8f,0xf9,0x7d,0x2d,
+ 0xfd,0x2f,0x22,0xd0,0xe1,0xe1,0x78,0x18,0x41,0xd1,0x00,0x3c,0x48,0x2b,0x79,0x35,
+ 0x80,0x5e,0xf8,0x44,0xb2,0xae,0xcf,0x4c,0xf1,0xa2,0xd5,0xff,0x43,0xcf,0xa8,0x5e,
+ 0xc9,0xc4,0x3f,0x7d,0xc1,0xae,0x04,0x11,0xa8,0x4f,0xf5,0x5a,0xd6,0x3f,0xa5,0xff,
+ 0x45,0x53,0x05,0x6c,0x64,0x05,0x3a,0xea,0x77,0x17,0x6c,0xe4,0xd1,0xc0,0x41,0x3e,
+ 0x30,0x6e,0xe5,0x6e,0x9f,0x41,0x38,0x44,0x50,0xb5,0x0d,0x26,0xcb,0xed,0x80,0x2b,
+ 0x6d,0x35,0x44,0xfb,0x55,0x9d,0xaa,0x59,0x6e,0x68,0xd4,0xd4,0xf8,0xb6,0x99,0x24,
+ 0x0b,0x1a,0x98,0xca,0x92,0xe7,0x65,0x71,0xb6,0xa5,0xff,0x85,0x30,0x9d,0xfb,0x6f,
+ 0x79,0x91,0xc3,0x99,0xdc,0x91,0xd2,0x4f,0xeb,0xc3,0x37,0x41,0x13,0x9d,0xcd,0x92,
+ 0xe7,0xd7,0x93,0x52,0xff,0xc7,0x07,0xaf,0xb3,0x98,0xee,0xae,0xcb,0x5e,0x18,0x7e,
+ 0x81,0x79,0xe2,0x68,0x91,0x64,0xa1,0x6a,0x9d,0xaf,0x8f,0xd7,0xff,0x31,0xfd,0x3f,
+ 0xb6,0x49,0xf9,0x43,0x6f,0xea,0x20,0x23,0x02,0x0a,0x0d,0x75,0x42,0x7a,0x70,0xb7,
+ 0xcf,0x95,0x84,0x23,0xe8,0xcf,0xf9,0x7f,0xd2,0xae,0xd0,0xb1,0x86,0x2a,0xdd,0x3d,
+ 0x88,0xda,0xea,0x55,0x4e,0xe4,0xe0,0x6e,0x9f,0xcb,0xbc,0x63,0xec,0xa4,0xfe,0x1a,
+ 0x91,0xf3,0x2c,0xf1,0xaf,0x36,0xd8,0xc7,0xeb,0x6f,0xac,0x08,0x8f,0x69,0xeb,0xf9,
+ 0x8b,0x18,0xf8,0x22,0xcf,0x51,0xd3,0x23,0x9d,0xa8,0xff,0x23,0x0f,0x93,0x24,0xfe,
+ 0xd9,0x06,0x7c,0x7e,0x31,0xbb,0x21,0x64,0xda,0x6b,0xb3,0x35,0xaa,0xe1,0xfc,0x67,
+ 0x21,0x9f,0x65,0x58,0xe4,0x95,0x94,0xec,0x7f,0x91,0xdb,0xab,0xf0,0x6c,0x26,0x5b,
+ 0x91,0x7f,0x08,0x05,0x5d,0xa1,0xe6,0xe2,0x69,0x17,0x87,0x41,0x65,0x19,0x49,0x79,
+ 0x6e,0x4b,0xe2,0x9f,0xf2,0x19,0xbb,0x61,0x98,0xf8,0x7a,0xb2,0x76,0x8b,0x43,0x26,
+ 0xdb,0x19,0xf7,0x8f,0x5d,0x1a,0xf5,0x77,0xb1,0xe2,0xc9,0xf7,0xd5,0xe5,0x2c,0x0b,
+ 0xfe,0xe9,0xe5,0x1f,0xbd,0x3f,0x4d,0xcd,0x31,0xe3,0x5f,0x89,0xb4,0xaf,0x11,0x8e,
+ 0x70,0x26,0xe7,0xab,0x72,0xb2,0xfe,0x73,0x83,0x32,0x06,0x27,0xa5,0xd2,0xb8,0x3d,
+ 0x8e,0xfb,0xf3,0x55,0xee,0xd6,0xe8,0x17,0x1f,0x66,0xaf,0xd2,0x52,0x96,0xd4,0x77,
+ 0x86,0xa5,0xfe,0x4f,0x4f,0xd3,0xff,0xd8,0x10,0x89,0xef,0xe8,0x47,0xb4,0x5c,0x06,
+ 0x8d,0x86,0x33,0x2e,0x47,0x36,0x94,0xc0,0x99,0x08,0x1a,0xe6,0xb1,0x89,0xf8,0x45,
+ 0x33,0x29,0xb4,0xe0,0x9f,0x12,0x1a,0x69,0x70,0x9e,0xc1,0xf9,0x6e,0xd6,0x12,0x71,
+ 0xf2,0x6e,0x29,0x6e,0x68,0x66,0x4e,0xcb,0xfc,0xd8,0x94,0xfa,0x3f,0x9c,0xed,0xe3,
+ 0x52,0x89,0xc9,0x76,0x36,0x64,0xe0,0x81,0x0f,0x5c,0x9f,0x1b,0x2d,0xeb,0x93,0xc4,
+ 0x3f,0x8c,0xae,0xa2,0x7d,0x92,0xd7,0x08,0xf0,0x68,0xa0,0xc9,0x6f,0xe1,0x82,0x14,
+ 0x05,0x91,0x75,0x3f,0xc8,0xea,0xba,0x49,0xff,0xcf,0x4d,0x17,0x12,0x4d,0xa8,0xe3,
+ 0xe2,0x05,0xb8,0xc0,0xc3,0x3a,0xdc,0xed,0x33,0xc6,0xdb,0x18,0x4d,0xbe,0xef,0xb0,
+ 0x38,0xe8,0x9f,0x90,0x27,0x00,0xa4,0xd1,0x33,0xde,0x7d,0x6f,0x3d,0x1f,0x7c,0x77,
+ 0x62,0xa0,0xd9,0x66,0x1e,0xfd,0xff,0x6d,0x3f,0xc4,0x69,0x1e,0x1c,0x7c,0x77,0x62,
+ 0xa0,0x99,0x6d,0xf8,0xfe,0xcc,0xfd,0x59,0xc2,0x12,0x04,0xda,0xe8,0x9d,0x3a,0x98,
+ 0xf8,0x95,0xf5,0xe7,0xff,0xbd,0x7e,0x88,0xa2,0x67,0xea,0xe0,0xcf,0xfd,0xfc,0x47,
+ 0x6d,0x10,0xc1,0x32,0xf8,0x4b,0xd6,0x7f,0xc5,0xc4,0x20,0xff,0x2f,0x5b,0xff,0x15,
+ 0x13,0x83,0xfc,0xff,0xb4,0x1f,0xa2,0x96,0xda,0x06,0xd1,0xbc,0xc2,0xff,0xa1,0x6b,
+ 0xee,0x3f,0xd3,0xb8,0xf6,0x1f,0x5a,0xef,0xc1,0xc1,0x77,0xf1,0x57,0x7f,0x66,0xfd,
+ 0x95,0x94,0x85,0x44,0x81,0x40,0xf3,0xfc,0x92,0x79,0x36,0xe8,0x94,0xef,0x9b,0x98,
+ 0xa4,0xa4,0x2c,0x7b,0x13,0x0e,0xf2,0xb4,0x26,0x7e,0x25,0x65,0xff,0x24,0xfb,0x21,
+ 0xda,0xad,0xff,0x28,0x3e,0x36,0xe0,0xf3,0x9b,0x1f,0xa2,0x14,0xec,0x3d,0xff,0xa7,
+ 0x1f,0xe2,0x7f,0x91,0xfe,0x83,0xff,0xf5,0xe6,0x93,0x26,0x65,0x07,0x75,0xf9,0x33,
+ 0x38,0x01,0xe8,0x2f,0xeb,0x4f,0xea,0xc2,0x43,0x57,0x0d,0x0a,0xfb,0x4b,0xe5,0xa1,
+ 0x94,0x4f,0xa9,0x5f,0x50,0xb4,0xff,0x48,0x1e,0x3a,0xa7,0xdc,0x3f,0x57,0xa0,0xff,
+ 0x0b,0xf2,0x36,0x21,0xf4,0x88,0x13,0x22,0x93,0x82,0xf1,0x9a,0x41,0xca,0xfb,0x9a,
+ 0xe7,0x49,0xa0,0x76,0xff,0x5f,0x2a,0x0f,0xf1,0xf0,0x48,0x84,0xd8,0xd9,0x5f,0x2a,
+ 0x0f,0xf1,0xef,0x25,0x22,0x68,0x6c,0xea,0x4a,0xff,0xf9,0x1f,0xd2,0x24,0xed,0x40,
+ 0xdc,0x60,0x5d,0xf6,0xf5,0x9e,0xd4,0xf5,0x4f,0x91,0x27,0x1e,0x73,0x11,0xfc,0xff,
+ 0x0b,0xeb,0xcf,0x17,0xb9,0x3a,0xfd,0x3f,0x5e,0xff,0x29,0xf2,0x50,0x92,0x50,0x7a,
+ 0x3c,0x04,0x33,0xd9,0xb5,0xf2,0xf0,0x3f,0xec,0x0f,0x9b,0xa7,0x09,0x7f,0xa9,0xbe,
+ 0xf3,0x9a,0x2b,0x2a,0x64,0xfc,0xa5,0xeb,0xaf,0x30,0xbb,0x4a,0xe9,0x5f,0xba,0xfe,
+ 0x5c,0x1e,0x4a,0x53,0xbf,0xe0,0x35,0x3f,0xd6,0xfe,0xb0,0x1e,0x48,0x3a,0x8b,0xff,
+ 0xe7,0x3f,0x95,0x95,0xf8,0x0f,0xb0,0xa9,0x4b,0x3c,0xf5,0xc7,0x2a,0x0f,0xc5,0x9e,
+ 0xc6,0x1e,0xf6,0x97,0xff,0x03,0xb8,0x21,0x74,0xab,0x3b,0xe8,0x7f,0xfa,0x93,0xeb,
+ 0x92,0x5c,0xff,0x99,0xbe,0x9d,0xfa,0xf3,0x5f,0x4d,0xfe,0xfc,0x17,0x9b,0xbf,0xb6,
+ 0x5a,0xa8,0xd7,0xde,0x56,0x16,0x42,0x66,0x03,0x31,0x07,0xb9,0x99,0x2f,0xa6,0x3f,
+ 0x58,0x7b,0x7f,0x70,0x61,0xee,0x4d,0x2f,0x4e,0x7b,0x50,0xbb,0x3f,0xf8,0x57,0xd2,
+ 0x0c,0x63,0xfe,0xe4,0xfc,0xdb,0x6b,0xd3,0x1e,0x14,0xee,0xd7,0xfe,0x5a,0x81,0xde,
+ 0xb4,0x07,0xd3,0xf8,0x60,0x46,0xef,0x8c,0x07,0x1b,0xee,0x0f,0xe1,0xe0,0xa4,0x90,
+ 0xf8,0x15,0xce,0x9f,0xc0,0xc3,0xd0,0x43,0x04,0x95,0x05,0xd4,0x6c,0x2a,0x85,0x27,
+ 0x06,0xe9,0x38,0xd0,0xd4,0xec,0x3c,0x69,0x23,0xbf,0x12,0xc2,0x2b,0x93,0xe1,0x65,
+ 0x1e,0xc0,0x13,0x42,0xb0,0x1c,0xae,0x83,0x1f,0x31,0x3e,0x10,0xae,0x53,0xd2,0x58,
+ 0xda,0x0a,0x21,0x4f,0xbb,0x8e,0xce,0x60,0xc2,0x8a,0x86,0xe5,0xf0,0x55,0x48,0x63,
+ 0xaa,0x36,0x31,0xbf,0x77,0xb9,0x54,0x26,0xdc,0xcd,0xbe,0x5c,0x2d,0xf5,0xa5,0x3d,
+ 0x24,0xdc,0xcf,0xfe,0xda,0x35,0xe3,0xb8,0x60,0x0e,0xd4,0x34,0xf3,0x8a,0xfe,0xd7,
+ 0x6a,0xae,0xe5,0x79,0x7a,0x35,0x4d,0x55,0x28,0xca,0x2b,0x3c,0x4c,0x21,0xc8,0x83,
+ 0x74,0x10,0x26,0x07,0xe1,0xc9,0x2b,0xf9,0x93,0xcf,0xf3,0x62,0x40,0x5a,0x29,0xe4,
+ 0xb1,0x3b,0x54,0x68,0x96,0x9c,0x02,0x35,0xfc,0xaa,0x12,0x41,0x2b,0x91,0x32,0xff,
+ 0x02,0x68,0xc0,0x73,0x4d,0xc1,0xaf,0x28,0x2c,0xb9,0x3e,0x2f,0xde,0x95,0x76,0x6f,
+ 0xc3,0x7d,0xfa,0x57,0x5c,0x52,0x20,0xcd,0xdf,0x10,0x8c,0xdd,0xe7,0x9a,0x61,0x43,
+ 0xd9,0x18,0xd4,0x6b,0x5d,0x69,0xe9,0x69,0x38,0x50,0x73,0xed,0x33,0xb4,0xe4,0xf3,
+ 0xb0,0x99,0xc2,0x5f,0xc3,0x57,0x8c,0x19,0x41,0x69,0xa9,0x39,0x98,0x5e,0x9f,0x76,
+ 0xbf,0xf0,0x65,0x76,0x9f,0x31,0xc3,0x83,0x03,0x11,0x70,0x50,0x9e,0x34,0xbf,0x70,
+ 0xbe,0x5a,0x1b,0x00,0xde,0xe3,0x09,0x85,0x8d,0x26,0x29,0x21,0x01,0x45,0xa0,0x52,
+ 0xc3,0xc5,0x98,0x22,0xd8,0x11,0x73,0xa1,0x98,0x54,0x94,0x9e,0xe4,0xfc,0x17,0x43,
+ 0x68,0xad,0x86,0xd1,0xfe,0xc8,0x53,0xcd,0x01,0x1a,0x82,0xea,0xf8,0x15,0xea,0x4a,
+ 0x1f,0x1f,0x54,0x27,0x9f,0xe7,0xc5,0x60,0xda,0x2a,0xe1,0x6f,0xe0,0x3a,0x6d,0x06,
+ 0x4b,0x5b,0x05,0x7c,0xf0,0x95,0x68,0x1a,0xf7,0x91,0x7c,0x15,0x66,0x44,0xd3,0x54,
+ 0xe1,0x0c,0xfc,0x23,0xcc,0xb0,0xbc,0xef,0x5a,0x6d,0x1a,0xff,0x6d,0x19,0x8c,0x17,
+ 0x6e,0xf9,0x47,0x3e,0x58,0x29,0x2c,0x4f,0x5c,0x59,0x09,0xcb,0xd9,0x75,0x29,0xf3,
+ 0x6f,0xf7,0x4b,0x9e,0x06,0xbb,0x5a,0x43,0x69,0x78,0x7c,0xa0,0x1c,0x9d,0x1c,0xc0,
+ 0xf8,0xc0,0x98,0x3e,0xf9,0x3c,0x02,0x97,0x58,0x76,0x10,0xb9,0xf0,0x1b,0x1f,0x18,
+ 0x53,0x06,0xaa,0x66,0xd9,0xd4,0x8c,0x08,0x1e,0xb6,0x54,0xcd,0xa1,0xd2,0x51,0x73,
+ 0xf0,0x65,0x73,0x60,0x98,0x57,0x5e,0x10,0x3c,0x3d,0x4b,0x3d,0x5f,0x76,0xe7,0x1a,
+ 0x96,0xf5,0xf1,0x0b,0xa1,0x86,0xe5,0xea,0x57,0x69,0x5a,0x38,0x2d,0x31,0x98,0x81,
+ 0x83,0x9e,0x3c,0x3e,0x68,0x14,0xd4,0x9e,0xe5,0x9e,0xaf,0xda,0x67,0x58,0x9e,0xe7,
+ 0x45,0x3f,0x5f,0x30,0x5c,0x42,0x21,0x3c,0x3e,0x30,0x97,0xd0,0x8e,0x03,0x2d,0x2c,
+ 0xf1,0x81,0x48,0x05,0xeb,0xfb,0x12,0x08,0x35,0xe4,0xa9,0x77,0x04,0x60,0x8b,0x14,
+ 0x6a,0xb8,0x5e,0xbd,0x83,0x4e,0x0f,0x4b,0xab,0xf0,0x35,0xef,0x08,0x4c,0xdf,0x22,
+ 0xa9,0xfc,0x7d,0x03,0x8a,0x75,0xbf,0x85,0x84,0xe5,0xc2,0x57,0xe1,0x2b,0x2c,0x2d,
+ 0x24,0xe1,0xee,0xc7,0xb5,0x9b,0x11,0x4a,0x5b,0x2e,0xdc,0x81,0x57,0xa6,0x87,0xd2,
+ 0x28,0xdc,0x01,0xd3,0x99,0x64,0xd9,0x3f,0xc6,0x1d,0x69,0x5f,0x62,0xf7,0x85,0x66,
+ 0x6c,0x13,0xd2,0xa1,0x9a,0x05,0x43,0xb9,0x79,0x69,0xe9,0x42,0x35,0x53,0x26,0x06,
+ 0xe6,0x15,0x48,0x9e,0x97,0x06,0x92,0x78,0x6c,0x0d,0xb2,0xf1,0x08,0x54,0x27,0xce,
+ 0x82,0x84,0xe7,0x51,0x09,0x48,0xfc,0x0a,0x1f,0xe4,0x82,0x9a,0x3c,0x2f,0x77,0x90,
+ 0xe9,0xac,0x29,0x94,0xaf,0xc0,0x1d,0xe2,0x74,0x76,0x3a,0x74,0x6b,0x5e,0xe6,0x1d,
+ 0xe2,0x97,0xc6,0x07,0xd3,0xc6,0x07,0xda,0xfc,0xc9,0xfb,0xaf,0xbd,0x23,0xc3,0x94,
+ 0x06,0x79,0xb3,0x5f,0x4a,0x9b,0x8f,0x83,0x2f,0xe6,0xcd,0x78,0x49,0x7a,0x30,0xfc,
+ 0x36,0x5e,0x99,0xfe,0x52,0xda,0x83,0x0d,0x6f,0x87,0xfe,0x47,0xde,0x0c,0x23,0x99,
+ 0xff,0x72,0xfb,0x1d,0xe2,0x83,0xec,0xed,0xd0,0x42,0x9c,0xc6,0x07,0x2b,0x16,0xe6,
+ 0x65,0xbe,0x34,0xed,0xc1,0x86,0x99,0x78,0x45,0x78,0x89,0x3c,0x98,0xb8,0x83,0x31,
+ 0xdd,0x32,0x5f,0x30,0xef,0xbf,0x1c,0xf8,0xdd,0xee,0x5f,0xf1,0xd7,0xf8,0x87,0x38,
+ 0xb0,0xe3,0xfd,0xd3,0x5e,0x82,0xf9,0x38,0x10,0xf3,0xa6,0x1b,0xc2,0xe4,0xf3,0xe3,
+ 0x0e,0x52,0x81,0x9f,0x98,0xb4,0x84,0xfc,0x51,0x12,0x82,0xe8,0x7e,0x53,0x22,0x01,
+ 0x1f,0xfc,0x15,0xca,0x9f,0xe4,0xfd,0x21,0x5d,0x58,0xc1,0x96,0x87,0xd2,0xf3,0x6e,
+ 0x5f,0x67,0x0e,0xae,0xcb,0x4b,0xc3,0x41,0xd3,0xf8,0x20,0x9f,0x2d,0x5f,0x71,0x5d,
+ 0x9e,0xc4,0x92,0xd3,0x6f,0xd7,0xd2,0x3c,0xf9,0x4b,0xe9,0x97,0xa1,0x89,0xa5,0xd5,
+ 0x0b,0xf7,0xc3,0x5f,0x43,0xae,0x21,0xd4,0x03,0x1f,0xe0,0x6b,0x7a,0xcc,0x2b,0xd3,
+ 0x2d,0xfb,0xe7,0x76,0x3f,0x53,0x75,0xea,0x22,0x36,0x54,0xe3,0x21,0x3c,0x94,0xe6,
+ 0x11,0x4c,0x0c,0x84,0x30,0xda,0x47,0xe6,0xc0,0xf2,0x3c,0xb7,0xfb,0x9b,0x42,0x3b,
+ 0x70,0xff,0xd8,0x00,0x77,0x57,0x03,0x55,0xfd,0xb8,0x7f,0xb8,0xdb,0x00,0x07,0x4a,
+ 0x18,0x77,0x94,0x39,0xb0,0xce,0xaf,0x99,0x1d,0xec,0xb9,0xcf,0xf3,0x15,0xee,0x10,
+ 0xd4,0x1a,0x82,0xea,0x7d,0xf6,0x19,0xfe,0xc4,0x80,0xce,0x10,0xd3,0x82,0x89,0x01,
+ 0x24,0x9f,0x07,0x44,0x21,0x68,0xdc,0xe7,0x99,0x41,0xa5,0x1a,0x3e,0x50,0x67,0xd8,
+ 0xd3,0x6a,0x12,0x57,0xec,0x69,0xfe,0xf1,0x5f,0xa5,0x4d,0x7e,0x5d,0x04,0x1c,0x9a,
+ 0xa6,0x29,0x0a,0x62,0x26,0x05,0x25,0x9f,0xa4,0x34,0x20,0x04,0xa3,0x09,0x74,0xa6,
+ 0xa2,0x20,0xc2,0x01,0x0a,0x45,0xcb,0x6a,0xc2,0xed,0x77,0x01,0x61,0x4c,0x57,0xef,
+ 0x34,0xc2,0x04,0x18,0x53,0x55,0x17,0x62,0x1b,0x73,0x80,0x40,0x26,0x9d,0x0f,0x80,
+ 0x52,0xcb,0xf3,0xe0,0x7a,0xe2,0x09,0x80,0xeb,0x44,0x14,0xfb,0x7c,0xc0,0xa5,0xbd,
+ 0x10,0x22,0xdb,0x70,0x70,0x3d,0xbf,0x92,0x90,0x3f,0xc9,0x7f,0x61,0xad,0x96,0xd0,
+ 0x17,0x38,0x5f,0x9c,0x10,0x44,0x39,0x21,0xe9,0x7e,0x98,0x83,0x03,0xfc,0xf4,0xf7,
+ 0xc3,0x34,0xc8,0xb5,0x7c,0x2f,0x18,0x97,0x27,0x02,0x63,0x92,0x47,0xb0,0x03,0x8a,
+ 0x4e,0x03,0x07,0x79,0xe6,0x40,0xe1,0xf4,0xaf,0x3b,0x40,0xb1,0xce,0x97,0x12,0xf3,
+ 0x35,0x94,0x3f,0xf3,0xc1,0xae,0xe1,0xe0,0x34,0x2c,0x80,0x0c,0x7e,0xe5,0xb4,0x56,
+ 0xc8,0xb3,0xfd,0xf9,0xaf,0x92,0x3f,0xd3,0x84,0xf9,0xda,0xd2,0x60,0x4e,0x34,0xf7,
+ 0x45,0x61,0xbe,0xb1,0x54,0xcb,0xc9,0x95,0x70,0x70,0x3b,0x5e,0xc9,0x95,0x7a,0x85,
+ 0xfc,0xea,0xa5,0xc1,0x2f,0x2b,0xd6,0xfd,0x03,0xb7,0xa4,0xd5,0xf5,0xfc,0xad,0xe7,
+ 0xab,0x11,0x69,0x67,0xda,0xb7,0x70,0x70,0x6f,0xeb,0x8c,0xa7,0x13,0x57,0x70,0x20,
+ 0x8c,0x0f,0xac,0xf3,0x69,0x02,0xe8,0x6b,0x09,0x30,0x18,0x24,0x21,0xd8,0x0c,0xe3,
+ 0x8f,0xb1,0x59,0xfa,0x33,0xcf,0x03,0xab,0x42,0xd3,0xf3,0xa4,0x3b,0x04,0x88,0xd4,
+ 0x72,0x45,0xe6,0x17,0xa6,0x47,0xa4,0x95,0xd3,0xf3,0x9a,0xee,0xc8,0x9f,0xce,0x6a,
+ 0x27,0x06,0xd6,0xf9,0xb7,0x07,0xa7,0xdf,0x27,0x7d,0x45,0x90,0x20,0x8d,0x0f,0x6e,
+ 0x17,0xbe,0xa2,0xdd,0x8e,0x4a,0x4b,0xfa,0x0a,0xcc,0xc0,0x81,0x72,0x9f,0x34,0x43,
+ 0x98,0x61,0xd9,0x0f,0xdc,0xbf,0x80,0x92,0x4f,0xc1,0xbd,0x99,0xef,0xa7,0xc1,0x70,
+ 0xae,0x9a,0x16,0x10,0x70,0xc0,0x70,0x40,0x57,0xdc,0x9b,0x17,0xdc,0x90,0xab,0xae,
+ 0xb5,0xde,0xde,0x26,0x11,0x5e,0x17,0xc9,0x25,0xd9,0x04,0xc2,0x34,0x5d,0xb9,0x76,
+ 0xe0,0xce,0xb5,0xce,0xb7,0xa7,0xe7,0x08,0x4d,0xc6,0x0a,0xcf,0xf5,0x4b,0xc5,0x2f,
+ 0xc3,0x69,0xe3,0x56,0x4f,0xc6,0xc4,0x20,0x73,0x29,0x2a,0x01,0x73,0x60,0x7d,0x9e,
+ 0x8c,0xb4,0x87,0xaa,0xef,0x8f,0xfe,0xb5,0x7a,0x53,0x9f,0x84,0xda,0x3f,0xf2,0xd7,
+ 0xea,0x0c,0x84,0x01,0xf0,0x36,0xfb,0x22,0x0e,0xee,0x78,0x48,0x78,0x9b,0xfd,0xfd,
+ 0x9c,0x19,0x86,0x65,0xbe,0xfc,0xb7,0xfe,0xd7,0xa3,0xcf,0x76,0x14,0x67,0x7c,0xe1,
+ 0x2e,0x1c,0xec,0xeb,0x28,0xbe,0x53,0xbe,0xf7,0xae,0xfe,0x2d,0xcf,0x16,0xfe,0x3c,
+ 0x43,0xf6,0xdf,0x75,0xda,0x1c,0x58,0x9f,0x67,0xd1,0xd5,0x7b,0xae,0xfe,0xfa,0xf9,
+ 0x0b,0x1f,0x8e,0x56,0xfd,0x10,0x07,0x07,0x2e,0x7c,0x3c,0xba,0xe8,0xca,0xb2,0xdf,
+ 0x6d,0xbd,0x3a,0x70,0x79,0x74,0xd1,0x23,0xcb,0xae,0x9a,0x03,0xf8,0xdf,0xf8,0xf1,
+ 0x3d,0x9e,0x31,0xc7,0x7f,0x67,0x74,0xcb,0xaa,0xd9,0xa3,0x8e,0xa7,0x6a,0xae,0x46,
+ 0xb7,0xfc,0xb3,0xef,0x5f,0xef,0xfc,0xe1,0x6b,0x77,0x5e,0x78,0xec,0x72,0xd5,0xd5,
+ 0x3b,0x6f,0xe1,0x83,0x01,0xeb,0xfc,0xaa,0x47,0xee,0xf9,0xdd,0xd6,0x03,0x03,0x1f,
+ 0x4e,0x3c,0xc6,0x87,0x97,0x27,0x1e,0x0c,0xe7,0xdf,0xf3,0x3b,0xf3,0x09,0xad,0xf3,
+ 0xff,0xef,0xf6,0xce,0x2f,0xb6,0xa9,0x2a,0x8e,0xe3,0xbf,0xdb,0x9e,0x96,0x96,0xb5,
+ 0xe3,0x5e,0xe8,0xa0,0xe0,0xb2,0x74,0xeb,0xd8,0xa6,0x12,0x73,0xc1,0x8d,0x3f,0xc1,
+ 0xb0,0xb3,0xb5,0xdd,0xca,0xe4,0x4f,0x27,0xa0,0x40,0x8c,0xe9,0x90,0xa8,0xf1,0x69,
+ 0xc3,0x17,0x13,0x03,0xdc,0x42,0x21,0xc4,0x40,0xb2,0xcc,0xa9,0xd3,0x4c,0x1d,0x89,
+ 0x1a,0x62,0x40,0x63,0x8c,0xc6,0xc4,0x98,0x5c,0x88,0x08,0x84,0x87,0x2d,0x06,0x12,
+ 0xa3,0x89,0x40,0xdc,0x8b,0x09,0x09,0x7b,0x20,0x31,0x3e,0xcc,0xf9,0xfb,0x9d,0x7b,
+ 0xdb,0x9e,0x62,0x84,0x88,0xdc,0x17,0x73,0xbe,0x4f,0xdf,0x9d,0x9d,0xfe,0x76,0x7a,
+ 0xfa,0xbb,0xbf,0xfb,0xf9,0xdd,0xdb,0x76,0xc9,0x03,0xd9,0x6b,0x23,0x6b,0xa6,0x8f,
+ 0x0f,0xac,0xa7,0x07,0x7e,0x3e,0x7d,0x02,0x97,0xbd,0xe5,0x97,0x45,0x14,0x21,0x19,
+ 0x27,0x53,0xbc,0x39,0x20,0xcf,0xd7,0x0e,0x0d,0x66,0xea,0xf5,0xd6,0xba,0x7e,0xbb,
+ 0x69,0x90,0x8f,0x43,0x6b,0x2c,0x7c,0x1e,0x41,0x71,0x5c,0x6f,0x65,0xda,0x79,0xdf,
+ 0x90,0x8d,0xa6,0x5e,0x93,0xf7,0x93,0x1d,0x19,0x02,0xc1,0x87,0xc5,0x23,0x2e,0x0d,
+ 0x7e,0xe7,0x12,0x63,0xc0,0x31,0x29,0x3d,0x20,0xcf,0xf7,0x3b,0x58,0x18,0x65,0x87,
+ 0x0a,0x2e,0x1f,0x5a,0x58,0x66,0x85,0x39,0x2a,0x0c,0xd5,0xe7,0xaa,0x1d,0xca,0xe3,
+ 0x41,0x1a,0xd4,0x0b,0x2e,0xb6,0xc5,0x4b,0xd8,0x16,0x77,0x40,0xce,0x17,0xd4,0xbb,
+ 0xe4,0xf9,0xa1,0xf4,0x3e,0xfa,0xa7,0x0e,0x35,0x70,0x6c,0xef,0x2a,0xad,0xbe,0xd8,
+ 0x9b,0x30,0x2e,0x32,0x34,0x56,0x6f,0xb3,0x71,0x19,0x33,0x04,0x4d,0xc2,0xa8,0x5a,
+ 0x3f,0xe4,0xf5,0xd0,0x51,0x5f,0x80,0x4e,0x85,0x10,0xd7,0x89,0x06,0x39,0xd2,0x53,
+ 0x15,0x28,0xca,0xf1,0x23,0xac,0x89,0xbe,0xcb,0x69,0x10,0x8e,0x23,0x28,0x22,0x16,
+ 0xe6,0xf5,0x31,0xf6,0x02,0x99,0x41,0x7d,0x9c,0x35,0x6b,0x61,0xab,0x9b,0x57,0xd5,
+ 0x93,0x47,0x59,0x9f,0xb5,0xf8,0x54,0xe6,0x53,0x78,0x84,0xed,0x2e,0x2c,0x9c,0x48,
+ 0x9f,0x32,0xd0,0x9c,0x75,0x4d,0x9f,0x33,0x22,0xad,0xde,0x8e,0xc2,0x22,0x88,0xfd,
+ 0x18,0x78,0x57,0xdf,0x44,0x66,0x0a,0xda,0xb5,0x4d,0xb0,0x0d,0x98,0x1d,0x30,0xd1,
+ 0xf4,0xc3,0x62,0x3b,0x00,0x1a,0xaf,0x3c,0x00,0x5b,0x55,0x3d,0x81,0x34,0xd8,0x0f,
+ 0x74,0xcf,0x01,0xdb,0x36,0xea,0x54,0xd3,0xf8,0xac,0x58,0x4e,0x18,0x03,0x10,0x2b,
+ 0xca,0xb7,0xaf,0x31,0xbe,0x68,0x57,0x87,0x13,0xe0,0x5c,0x29,0xd0,0x13,0x4c,0x34,
+ 0x98,0x45,0x71,0x87,0x80,0x2a,0x35,0x24,0x12,0x50,0x35,0x9f,0xe5,0xb5,0x31,0x2c,
+ 0x92,0x71,0xaa,0xf8,0x71,0x2c,0xfd,0xc8,0x23,0x79,0x51,0x36,0xd7,0x55,0x4c,0x79,
+ 0xbe,0xae,0x81,0x8f,0x36,0xad,0xc5,0xf9,0xc4,0xe7,0x18,0x9a,0xf0,0x1d,0xa6,0x15,
+ 0xe8,0x8c,0xe6,0x8a,0x13,0x1f,0x5a,0x04,0x45,0x50,0xc5,0x87,0xcc,0x31,0xab,0x08,
+ 0x9c,0xda,0xac,0xca,0xf9,0x94,0x63,0x67,0x4e,0x65,0xfc,0x4e,0x3e,0x64,0x15,0x3e,
+ 0xf4,0xd1,0x5d,0xee,0xd2,0x0e,0x71,0xfc,0xd1,0x14,0x90,0x06,0xe7,0x24,0x53,0xac,
+ 0x1a,0xc1,0x13,0x81,0xbc,0x1e,0xc1,0x6f,0x21,0x38,0xec,0x1a,0x83,0x4e,0xbb,0x3b,
+ 0x4b,0x06,0x47,0x30,0x1f,0x2a,0xeb,0xd1,0xba,0x65,0x2c,0xfc,0x07,0x53,0xc9,0x87,
+ 0x1c,0xb8,0xf1,0x23,0xd5,0xf1,0x23,0x52,0xfc,0x90,0x94,0x6f,0x3c,0xc3,0xf1,0x85,
+ 0x8c,0x41,0x86,0x88,0xdf,0x31,0x06,0x67,0x83,0x25,0xe3,0x8c,0x68,0xdd,0x7a,0x69,
+ 0x3d,0x59,0x4e,0x58,0x58,0x9f,0x9f,0x17,0x47,0x3e,0xec,0x47,0x2c,0x64,0x55,0xa6,
+ 0xcb,0x31,0x50,0xe6,0xb1,0x2c,0x11,0x37,0x65,0xbe,0xb8,0x04,0x4c,0x8d,0x3f,0xf2,
+ 0x21,0x08,0x2c,0x24,0x50,0xc4,0xc6,0xcd,0xd4,0x43,0xd2,0xd5,0x10,0x9e,0x79,0x1a,
+ 0x69,0x90,0xe5,0x1b,0x73,0xb0,0x18,0x41,0xf1,0xaa,0xc0,0x42,0x5f,0x19,0x14,0x87,
+ 0xac,0x2b,0xbc,0x23,0x1e,0xe0,0x12,0xcf,0xf7,0xb0,0xa1,0xc3,0x3b,0x11,0xea,0x0c,
+ 0xc4,0x42,0xc4,0x3c,0xc7,0x58,0xf5,0xd2,0xc8,0xce,0x75,0x76,0x25,0xbe,0xd6,0xe3,
+ 0x1b,0xb2,0xc6,0xf3,0xad,0x88,0x85,0x41,0x9a,0xf6,0x62,0x3c,0x4c,0x58,0x48,0x23,
+ 0x64,0xc4,0xaf,0x58,0x65,0x7e,0x2e,0xd3,0x13,0x70,0xf8,0x93,0x1f,0x9d,0x37,0x64,
+ 0x3d,0x4b,0xb4,0xf9,0xbd,0xd3,0x9f,0x3a,0xa0,0x48,0xe8,0xc8,0xce,0x55,0x5e,0x2f,
+ 0xa0,0x7b,0xa3,0xc8,0x87,0x69,0x36,0x8c,0xcf,0x6e,0xa3,0x53,0x7f,0x9a,0xa9,0xfe,
+ 0x64,0xd9,0x88,0x53,0x9a,0xb2,0x4c,0xda,0x7f,0xcc,0xdb,0x01,0x2b,0x9e,0x0f,0x8e,
+ 0x19,0x1f,0xa3,0x59,0x86,0xa0,0xa8,0x1d,0x85,0x81,0x42,0xdc,0x35,0x56,0x7c,0x40,
+ 0x14,0xa2,0xb2,0x32,0x79,0xf6,0xaa,0x56,0x0b,0x29,0x0b,0x26,0xac,0xb5,0x5a,0x03,
+ 0xf8,0x2d,0xfd,0x3a,0x23,0xd3,0x6b,0x19,0x65,0x23,0xe5,0xb3,0xf6,0x14,0x7d,0x45,
+ 0x4e,0x9b,0x2f,0x0b,0x6f,0x58,0x09,0x6b,0xa9,0x29,0xd2,0xa6,0x99,0xb0,0x30,0xab,
+ 0x8d,0x38,0xa0,0x98,0x95,0xf3,0x41,0xeb,0x66,0x89,0x93,0x22,0x3f,0x5f,0xb7,0x90,
+ 0x06,0x27,0x82,0x4e,0xda,0xb8,0x7c,0x98,0x70,0xf9,0xb0,0xea,0xf8,0xe2,0x85,0xd8,
+ 0xaa,0x0c,0x1e,0x8e,0x90,0x2b,0xe8,0x66,0x20,0x62,0xa4,0x58,0x0e,0x8f,0xfb,0x74,
+ 0xc8,0x20,0x3e,0x14,0x06,0xa4,0xfd,0xc1,0x96,0xf2,0x62,0x0c,0xa7,0xc1,0x93,0x60,
+ 0xda,0xb1,0x09,0x2d,0xa2,0xa5,0x00,0xcf,0xee,0x38,0x42,0xc6,0x16,0x86,0x57,0x8e,
+ 0x17,0x2c,0x1f,0x66,0x8c,0xf8,0x10,0xbd,0x0f,0x2b,0x8e,0x56,0xbe,0x7a,0x97,0x90,
+ 0x8d,0xb4,0x9e,0xa6,0x85,0xc4,0x87,0x11,0xcb,0xdf,0x84,0xc7,0x45,0x53,0x63,0x5b,
+ 0x68,0xbe,0xcb,0x87,0x65,0x63,0x49,0xeb,0xd1,0x20,0x24,0x8a,0x0c,0x66,0x69,0xd1,
+ 0xa9,0x36,0xe5,0xfa,0x43,0x26,0x80,0xf5,0xd9,0xb7,0x4b,0xde,0x1f,0xf0,0xed,0x85,
+ 0xa5,0xd0,0xd2,0x35,0x35,0x7c,0x28,0x0f,0xef,0x40,0x0b,0xdf,0x38,0x5c,0xaa,0x3f,
+ 0xc3,0x41,0x61,0x7c,0x61,0xab,0x7c,0x49,0x8c,0x67,0xf2,0xa3,0x6b,0x81,0x5e,0xaf,
+ 0x63,0x13,0xc5,0xb5,0x5a,0x6d,0x38,0xe5,0xbc,0x5e,0x34,0xa2,0x5f,0x0f,0x0a,0x53,
+ 0x90,0xfa,0xd3,0x1c,0x3e,0xd1,0x75,0xb9,0xda,0x41,0xff,0x5b,0xf0,0x11,0xbd,0xfb,
+ 0x41,0xf7,0x33,0xb8,0x51,0x32,0x67,0x4b,0x46,0xaa,0x3f,0x8c,0x41,0x07,0x8f,0xe6,
+ 0xfc,0xbb,0xad,0x2b,0xb0,0x92,0x47,0xe9,0x9f,0xd6,0x5f,0x25,0xb0,0xcc,0xf9,0x63,
+ 0x64,0xb8,0x30,0x95,0xf7,0x87,0xf3,0x4c,0x8a,0x61,0x37,0x6a,0xf6,0x00,0xd5,0x07,
+ 0x32,0x11,0xa3,0xda,0x60,0xe9,0x30,0xe4,0xfa,0xc3,0x21,0x89,0x55,0xda,0x2d,0xe1,
+ 0x58,0xcb,0xe9,0x8a,0xb0,0x7b,0xd5,0xd0,0x31,0xa2,0x54,0x56,0xf6,0x27,0x9b,0x76,
+ 0xf9,0xd0,0xda,0xbb,0x47,0x18,0x09,0x0b,0x85,0x49,0xc9,0x7c,0x88,0xf5,0x27,0xbd,
+ 0xbd,0xbf,0x2e,0x98,0x49,0x41,0x6c,0x7b,0xce,0x88,0x21,0x1f,0x1a,0x3c,0x2d,0x0c,
+ 0xd6,0x1f,0x20,0xd3,0x85,0x46,0xca,0x1f,0x4a,0x40,0xaa,0x7c,0x05,0xaa,0x7c,0xfa,
+ 0xa1,0x40,0x42,0xcb,0x62,0x8e,0x53,0x6e,0x62,0xe3,0xe0,0x1a,0x90,0x84,0x10,0x88,
+ 0x7c,0x08,0x2b,0xf4,0x12,0x16,0xd2,0x48,0xd1,0xe1,0x43,0x70,0x41,0x11,0x34,0xbd,
+ 0xbc,0x9e,0xcd,0xfe,0x6d,0x5d,0xc5,0xa9,0xc6,0xd5,0xb0,0xd9,0xb7,0x88,0x5f,0x99,
+ 0x6a,0x6c,0x0f,0x6d,0xf6,0x6d,0x43,0xd3,0xd1,0x1e,0x75,0x46,0x3a,0xda,0x23,0xd2,
+ 0x7a,0xf0,0xf9,0xee,0xeb,0xaa,0x1f,0xee,0x6d,0x32,0x2e,0x35,0xef,0xc1,0xb3,0xff,
+ 0xe1,0x84,0x71,0x29,0xe0,0x62,0xc0,0x45,0x97,0x07,0x62,0x52,0x7f,0x0a,0x02,0x0b,
+ 0x89,0x0f,0x6b,0xfa,0xfa,0x64,0x3e,0xfc,0xb0,0xc4,0x87,0x7b,0xab,0xf9,0x50,0xd0,
+ 0x17,0xf1,0xe1,0xfa,0x83,0x5b,0x65,0x3e,0xbc,0xfd,0x80,0xf8,0x50,0x60,0xe1,0x6f,
+ 0xc3,0x73,0xb3,0x9d,0x7f,0x38,0xa0,0xb8,0xbf,0xf9,0x03,0xc2,0xc2,0xe1,0xb7,0x67,
+ 0x97,0xcf,0xb9,0x46,0x9e,0x2f,0xfe,0xfa,0xef,0xd3,0x38,0xff,0x4f,0x07,0x14,0x67,
+ 0xd7,0x1f,0x24,0x2c,0x9c,0xbe,0x35,0xbb,0x7e,0xce,0x35,0x55,0xf3,0x1b,0x5c,0x3e,
+ 0x4c,0x36,0x6c,0xb9,0x36,0xb2,0x12,0xf9,0x30,0x79,0x60,0xcb,0x05,0x41,0x98,0x49,
+ 0x81,0x9a,0xc5,0x5b,0xff,0x61,0xfd,0x26,0x24,0x34,0x7a,0x7b,0xaa,0x09,0xa9,0xc8,
+ 0xfd,0x47,0x51,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0xfa,0xbf,0x4b,
+ 0xf4,0x0e,0x4c,0xf5,0x0e,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,
+ 0x77,0x97,0xe8,0x1d,0x82,0xaa,0x77,0x50,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,
+ 0x52,0x52,0xba,0xbb,0x44,0xef,0x10,0x12,0xbd,0x03,0xfe,0x14,0x58,0xfb,0xdc,0x2e,
+ 0xde,0xb9,0xe1,0xb5,0x5d,0x1e,0xfd,0xb5,0xb6,0x0b,0xb0,0x82,0x27,0xd3,0x10,0xb3,
+ 0xbd,0x89,0xcf,0xe6,0xbf,0xf4,0x8e,0x55,0x53,0xf7,0x4d,0xd6,0x9b,0xf0,0xd0,0x39,
+ 0x49,0xeb,0xe7,0xd0,0x69,0x7b,0x13,0x9f,0x25,0x46,0x4f,0xda,0xcb,0xae,0x9c,0x38,
+ 0xe6,0x4d,0x78,0x30,0x27,0xcd,0x9b,0x3c,0x39,0x68,0x9b,0xb6,0x37,0xf1,0xa3,0x6b,
+ 0xf6,0x1f,0xb1,0xeb,0x3f,0x7b,0x7e,0xab,0x37,0xe1,0x71,0xff,0x9d,0xf5,0x7b,0xb5,
+ 0xff,0x91,0xd6,0x71,0x0b,0x9e,0x58,0x32,0xe1,0xdd,0xfe,0x2f,0xc0,0xfc,0xd9,0x0a,
+ 0x5e,0xed,0x7f,0x6d,0xcb,0xd7,0x33,0xf0,0xd0,0x8e,0x2f,0x37,0x7a,0x13,0x1e,0xf7,
+ 0xdf,0x59,0xbf,0x67,0xf9,0xff,0x58,0xdd,0x27,0xbc,0xe6,0x95,0xd1,0x7b,0x7d,0xe6,
+ 0xff,0x7e,0x65,0x4e,0x76,0x62,0xfe,0x1c,0xf4,0x2e,0xff,0x75,0x6d,0x35,0x2c,0x0f,
+ 0x3f,0xec,0x5d,0xfe,0x3b,0xeb,0xf7,0x6a,0xff,0xa3,0x8d,0xe9,0x1e,0x58,0x75,0xbb,
+ 0xc5,0xab,0xfc,0x31,0xe7,0x6c,0xaa,0x9f,0xe6,0x8c,0xed,0x4d,0x7c,0x16,0x1a,0x7a,
+ 0xd3,0x5e,0xfd,0xc5,0xa8,0x67,0xf5,0xdf,0x5d,0xff,0xdf,0xbf,0x99,0xe0,0xc1,0x88,
+ 0x25,0x47,0xcf,0xd8,0xc9,0x25,0x23,0x9e,0xd5,0x9f,0xb9,0x19,0xaa,0x9f,0x33,0x5e,
+ 0xed,0xff,0x82,0x0d,0xbf,0xde,0xb2,0x3b,0x7e,0x7a,0x66,0xd2,0x9b,0xf0,0xb8,0xff,
+ 0xce,0xfa,0x3d,0xdb,0xff,0x0d,0xc7,0xdf,0xb7,0x1e,0x5f,0x72,0x3a,0x7c,0xef,0xa9,
+ 0xf7,0x25,0x73,0x6e,0x92,0xea,0xa7,0x67,0xf9,0x1f,0x6c,0x38,0xf3,0xb2,0xd5,0xf2,
+ 0xed,0xcf,0x69,0x6f,0xc2,0xe3,0xfe,0x3b,0xeb,0xf7,0x6c,0xff,0x97,0xef,0xf8,0x0a,
+ 0x12,0x75,0xef,0x79,0x57,0x7f,0xe6,0xa8,0x7e,0x7a,0x97,0xff,0xcb,0x02,0x8d,0x7c,
+ 0xc3,0xe9,0xe8,0x65,0x6f,0xc2,0xd3,0x97,0x9c,0x88,0xf5,0x7b,0xb3,0xff,0xa6,0xf8,
+ 0x46,0x8a,0x1b,0x3f,0x98,0x60,0xd1,0x67,0x44,0xfc,0x26,0xf0,0x7f,0x7d,0x3f,0xc1,
+ 0x7d,0x6c,0xc0,0x84,0x09,0x4d,0x8a,0xb9,0xfb,0xce,0x79,0x7f,0x01,0xf4,0xb7,0xc1,
+ 0xde,0xf0,0x33,0x01,0x00,
diff --git a/board/esd/hh405/hh405.c b/board/esd/hh405/hh405.c
index 64690ac1b0f..9c582b121c6 100644
--- a/board/esd/hh405/hh405.c
+++ b/board/esd/hh405/hh405.c
@@ -2,6 +2,9 @@
* (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.
+ *
* See file CREDITS for list of people who contributed to this
* project.
*
@@ -25,8 +28,176 @@
#include <asm/processor.h>
#include <command.h>
#include <malloc.h>
+#include <pci.h>
+#include <sm501.h>
+
+
+#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)},
+ /* panel control regs... */
+ {0x80000, SWAP32(0x0f013105)}, /* panel display control: 16-bit RGB 5:6:5 mode */
+ {0x80004, SWAP32(0xc428bb17)}, /* panel panning control ??? */
+ {0x8000C, SWAP32(0x00000000)}, /* 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)},
+ /* panel control regs... */
+ {0x80000, SWAP32(0x0f013105)}, /* panel display control: 16-bit RGB 5:6:5 mode */
+ {0x80004, SWAP32(0xc428bb17)}, /* panel panning control ??? */
+ {0x8000C, SWAP32(0x00000000)}, /* 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)},
+ /* panel control regs... */
+ {0x80000, SWAP32(0x0f013106)}, /* panel display control: 32-bit RGB 8:8:8 mode */
+ {0x80004, SWAP32(0xc428bb17)}, /* panel panning control ??? */
+ {0x8000C, SWAP32(0x00000000)}, /* 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)},
+ /* panel control regs... */
+ {0x80000, SWAP32(0x0f013106)}, /* panel display control: 32-bit RGB 8:8:8 mode */
+ {0x80004, SWAP32(0xc428bb17)}, /* panel panning control ??? */
+ {0x8000C, SWAP32(0x00000000)}, /* 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
@@ -92,7 +263,7 @@ unsigned char logo_bmp_1024[] =
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_${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},
@@ -134,14 +305,15 @@ int board_revision(void)
if (value & 0x80000000) {
/* Revision 1.0 or 1.1 detected */
- return 1;
+ return 0x0101;
} else {
if (value & 0x00400000) {
- /* Revision 1.3 detected */
- return 3;
+ /* unused */
+ return 0x0103;
} else {
- /* Revision 1.2 detected */
- return 2;
+ /* Revision >= 2.0 detected */
+ /* rev. 2.x uses four SM501 GPIOs for revision coding */
+ return 0x0200;
}
}
}
@@ -261,10 +433,15 @@ int misc_init_r (void)
* Write Board revision into FPGA
*/
*fpga_ctrl |= gd->board_type & 0x0003;
- if (gd->board_type >= 2) {
+ if (gd->board_type >= 0x0200) {
*fpga_ctrl |= CFG_FPGA_CTRL_CF_BUS_EN;
}
+ /*
+ * Setup and enable EEPROM write protection
+ */
+ out32(GPIO0_OR, in32(GPIO0_OR) | CFG_EEPROM_WP);
+
/*
* Set NAND-FLASH GPIO signals to default
*/
@@ -301,6 +478,7 @@ int misc_init_r (void)
/*
* Init lcd interface and display logo
*/
+
str = getenv("bd_type");
if (strcmp(str, "ppc230") == 0) {
/*
@@ -375,9 +553,29 @@ int misc_init_r (void)
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 {
- printf("Unsupported bd_type defined (%s) -> No display configured!\n", str);
- return 0;
+ 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);
+ } else if (strcmp(str, "ppc231") == 0) {
+ printf("(1024*768, %dbpp)\n", BPP);
+ } 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 */
}
return (0);
@@ -392,7 +590,7 @@ int checkboard (void)
{
DECLARE_GLOBAL_DATA_PTR;
- unsigned char str[64];
+ char str[64];
int i = getenv_r ("serial#", str, sizeof(str));
puts ("Board: ");
@@ -410,7 +608,9 @@ int checkboard (void)
}
gd->board_type = board_revision();
- printf(", Rev 1.%ld)\n", gd->board_type);
+ printf(", Rev %ld.%ld)\n",
+ (gd->board_type >> 8) & 0xff,
+ gd->board_type & 0xff);
/*
* Disable sleep mode in LXT971
@@ -420,7 +620,6 @@ int checkboard (void)
return 0;
}
-/* ------------------------------------------------------------------------- */
long int initdram (int board_type)
{
@@ -437,7 +636,6 @@ long int initdram (int board_type)
return (4*1024*1024 << ((val & 0x000e0000) >> 17));
}
-/* ------------------------------------------------------------------------- */
int testdram (void)
{
@@ -447,7 +645,6 @@ int testdram (void)
return (0);
}
-/* ------------------------------------------------------------------------- */
#ifdef CONFIG_IDE_RESET
void ide_set_reset(int on)
@@ -479,3 +676,202 @@ void nand_init(void)
}
}
#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)
+{
+ DECLARE_GLOBAL_DATA_PTR;
+
+ 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.%ld)",
+ (gd->board_type >> 8) & 0xff, gd->board_type & 0xff);
+ 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);
+ return (addr & 0xfffffffe);
+ }
+
+ 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 */
diff --git a/board/esd/hh405/u-boot.lds b/board/esd/hh405/u-boot.lds
index 311a5fe7f2f..f7a20d1da23 100644
--- a/board/esd/hh405/u-boot.lds
+++ b/board/esd/hh405/u-boot.lds
@@ -67,7 +67,6 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -87,6 +86,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -119,11 +119,13 @@ SECTIONS
_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 = .;
diff --git a/board/esd/hub405/hub405.c b/board/esd/hub405/hub405.c
index bbd8555ead4..e77dba8a869 100644
--- a/board/esd/hub405/hub405.c
+++ b/board/esd/hub405/hub405.c
@@ -210,7 +210,7 @@ int checkboard (void)
{
DECLARE_GLOBAL_DATA_PTR;
- unsigned char str[64];
+ char str[64];
int i = getenv_r ("serial#", str, sizeof(str));
puts ("Board: ");
diff --git a/board/esd/hub405/u-boot.lds b/board/esd/hub405/u-boot.lds
index ba555501ed4..98338e93515 100644
--- a/board/esd/hub405/u-boot.lds
+++ b/board/esd/hub405/u-boot.lds
@@ -67,7 +67,7 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
+ cpu/ppc4xx/4xx_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -87,6 +87,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -119,10 +120,12 @@ SECTIONS
_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 = .;
diff --git a/board/esd/ocrtc/cmd_ocrtc.c b/board/esd/ocrtc/cmd_ocrtc.c
index 881d1799f09..ffbb4adddcd 100644
--- a/board/esd/ocrtc/cmd_ocrtc.c
+++ b/board/esd/ocrtc/cmd_ocrtc.c
@@ -24,15 +24,12 @@
#include <common.h>
#include <command.h>
#include <pci.h>
+#include <pci_ids.h>
#include <405gp_pci.h>
#if (CONFIG_COMMANDS & CFG_CMD_BSP)
-#define IBM_VENDOR_ID 0x1014
-#define PPC405_DEVICE_ID 0x0156
-
-
/*
* Set device number on pci board
*/
@@ -43,7 +40,7 @@ int do_setdevice(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
u32 addr;
while (bdf >= 0) {
- if ((bdf = pci_find_device(IBM_VENDOR_ID, PPC405_DEVICE_ID, idx++)) < 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);
diff --git a/board/esd/ocrtc/ocrtc.c b/board/esd/ocrtc/ocrtc.c
index ac032ef0ad2..261b8a54d02 100644
--- a/board/esd/ocrtc/ocrtc.c
+++ b/board/esd/ocrtc/ocrtc.c
@@ -74,7 +74,7 @@ int misc_init_f (void)
*/
int checkboard (void)
{
- unsigned char str[64];
+ char str[64];
int i = getenv_r ("serial#", str, sizeof (str));
puts ("Board: ");
diff --git a/board/esd/ocrtc/u-boot.lds b/board/esd/ocrtc/u-boot.lds
index 251a4cce9a5..476b4a05502 100644
--- a/board/esd/ocrtc/u-boot.lds
+++ b/board/esd/ocrtc/u-boot.lds
@@ -67,7 +67,6 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -87,6 +86,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -119,11 +119,13 @@ SECTIONS
_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 = .;
diff --git a/board/esd/pci405/cmd_pci405.c b/board/esd/pci405/cmd_pci405.c
index e1ca5839692..0315c3d97ba 100644
--- a/board/esd/pci405/cmd_pci405.c
+++ b/board/esd/pci405/cmd_pci405.c
@@ -91,7 +91,7 @@ int do_loadpci(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
pci_read_config_dword(PCIDEVID_405GP, i, ptr++);
}
ptr = (unsigned int *)PCI_REGS_ADDR;
- *ptr = crc32(0, (char *)PCI_REGS_ADDR+4, PCI_REGS_LEN-4);
+ *ptr = crc32(0, (uchar *)PCI_REGS_ADDR+4, PCI_REGS_LEN-4);
printf("\nStoring PCI Configuration Regs...\n");
} else {
@@ -874,7 +874,7 @@ int do_savepci(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
pci_read_config_dword(PCIDEVID_405GP, i, ptr++);
}
ptr = (unsigned int *)PCI_REGS_ADDR;
- *ptr = crc32(0, (char *)PCI_REGS_ADDR+4, PCI_REGS_LEN-4);
+ *ptr = crc32(0, (uchar *)PCI_REGS_ADDR+4, PCI_REGS_LEN-4);
printf("\nStoring PCI Configuration Regs...\n");
@@ -896,7 +896,7 @@ int do_restorepci(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
* Rewrite pci config regs (only after soft-reset with magic set)
*/
ptr = (unsigned int *)PCI_REGS_ADDR;
- if (crc32(0, (char *)PCI_REGS_ADDR+4, PCI_REGS_LEN-4) == *ptr) {
+ 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) {
diff --git a/board/esd/pci405/pci405.c b/board/esd/pci405/pci405.c
index d1b680768cb..4be4d7e7d9e 100644
--- a/board/esd/pci405/pci405.c
+++ b/board/esd/pci405/pci405.c
@@ -275,7 +275,7 @@ int misc_init_r (void)
* Rewrite pci config regs (only after soft-reset with magic set)
*/
ptr = (unsigned int *)PCI_REGS_ADDR;
- if (crc32(0, (char *)PCI_REGS_ADDR+4, PCI_REGS_LEN-4) == *ptr) {
+ 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) {
@@ -322,7 +322,7 @@ int checkboard (void)
{
DECLARE_GLOBAL_DATA_PTR;
- unsigned char str[64];
+ char str[64];
int i = getenv_r ("serial#", str, sizeof(str));
puts ("Board: ");
diff --git a/board/esd/pci405/u-boot.lds b/board/esd/pci405/u-boot.lds
index 311a5fe7f2f..f7a20d1da23 100644
--- a/board/esd/pci405/u-boot.lds
+++ b/board/esd/pci405/u-boot.lds
@@ -67,7 +67,6 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -87,6 +86,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -119,11 +119,13 @@ SECTIONS
_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 = .;
diff --git a/board/esd/pf5200/Makefile b/board/esd/pf5200/Makefile
new file mode 100644
index 00000000000..603bbe283cb
--- /dev/null
+++ b/board/esd/pf5200/Makefile
@@ -0,0 +1,53 @@
+
+#
+# (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 $(TOPDIR)/config.mk
+
+LIB = 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
+
+# OBJS = $(BOARD).o flash.o $(CPLD)
+OBJS = $(BOARD).o flash.o
+
+$(LIB): $(OBJS) $(SOBJS)
+ $(AR) crv $@ $(OBJS)
+
+clean:
+ rm -f $(SOBJS) $(OBJS)
+
+distclean: clean
+ rm -f $(LIB) core *.bak .depend
+
+#########################################################################
+
+.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
+ $(CC) -M $(CPPFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
+
+-include .depend
+
+#########################################################################
diff --git a/board/esd/pf5200/config.mk b/board/esd/pf5200/config.mk
new file mode 100644
index 00000000000..07b5de1881c
--- /dev/null
+++ b/board/esd/pf5200/config.mk
@@ -0,0 +1,44 @@
+#
+# (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 $(TOPDIR)/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
new file mode 100644
index 00000000000..53afbc0b920
--- /dev/null
+++ b/board/esd/pf5200/flash.c
@@ -0,0 +1,461 @@
+/*
+ * (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
new file mode 100644
index 00000000000..22d0a554442
--- /dev/null
+++ b/board/esd/pf5200/mt46v16m16-75.h
@@ -0,0 +1,37 @@
+/*
+ * (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
new file mode 100644
index 00000000000..2b47012cfaf
--- /dev/null
+++ b/board/esd/pf5200/pf5200.c
@@ -0,0 +1,370 @@
+/*
+ * (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)
+
+#define GPIO_PSC1_4 0x01000000UL
+
+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 &= ~GPIO_PSC1_4;
+ } else {
+ *(vu_long *) MPC5XXX_WU_GPIO_DATA |= 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 |= 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 &= ~GPIO_WU6;
+ *(vu_long *) MPC5XXX_INTERRUPT_GPIO_DATA_OUTPUT &= ~GPIO_USB9;
+ } else {
+ *(vu_long *) MPC5XXX_WU_GPIO_DATA |= 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
new file mode 100644
index 00000000000..f23432ecfa8
--- /dev/null
+++ b/board/esd/pf5200/u-boot.lds
@@ -0,0 +1,125 @@
+/*
+ * (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/plu405.c b/board/esd/plu405/plu405.c
index e3eff31fb70..5b9d0631f8e 100644
--- a/board/esd/plu405/plu405.c
+++ b/board/esd/plu405/plu405.c
@@ -54,7 +54,7 @@ const unsigned char fpgadata[] =
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_${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},
@@ -203,7 +203,7 @@ int misc_init_r (void)
*/
int checkboard (void)
{
- unsigned char str[64];
+ char str[64];
int i = getenv_r ("serial#", str, sizeof(str));
puts ("Board: ");
diff --git a/board/esd/plu405/u-boot.lds b/board/esd/plu405/u-boot.lds
index 311a5fe7f2f..43f776579ef 100644
--- a/board/esd/plu405/u-boot.lds
+++ b/board/esd/plu405/u-boot.lds
@@ -67,7 +67,7 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
+ cpu/ppc4xx/4xx_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -87,6 +87,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -119,11 +120,13 @@ SECTIONS
_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 = .;
diff --git a/board/esd/pmc405/Makefile b/board/esd/pmc405/Makefile
index 2c410a17ffa..741e4aacdcd 100644
--- a/board/esd/pmc405/Makefile
+++ b/board/esd/pmc405/Makefile
@@ -30,7 +30,7 @@ CPLD = ../common/xilinx_jtag/lenval.o \
../common/xilinx_jtag/micro.o \
../common/xilinx_jtag/ports.o
-OBJS = $(BOARD).o strataflash.o ../common/misc.o $(CPLD)
+OBJS = $(BOARD).o ../common/misc.o ../common/cmd_loadpci.o $(CPLD)
$(LIB): $(OBJS) $(SOBJS)
$(AR) crv $@ $(OBJS)
diff --git a/board/esd/pmc405/pmc405.c b/board/esd/pmc405/pmc405.c
index a72547d5cef..f9e4d4377c6 100644
--- a/board/esd/pmc405/pmc405.c
+++ b/board/esd/pmc405/pmc405.c
@@ -1,6 +1,9 @@
/*
* (C) Copyright 2001-2003
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
+ * Stefan Roese, DENX Software Engineering, sr@denx.de.
+ *
+ * (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.
@@ -66,16 +69,27 @@ int board_early_init_f (void)
mtebc (epcr, 0xa8400000);
/*
- * Setup GPIO pins (CS6+CS7 as GPIO)
+ * Setup GPIO pins
*/
- mtdcr(cntrl0, mfdcr(cntrl0) | 0x00300000);
- /*
- * Configure GPIO pins
+ mtdcr(cntrl0, mfdcr(cntrl0) | ((CFG_FPGA_INIT | \
+ CFG_FPGA_DONE | \
+ CFG_XEREADY | \
+ CFG_NONMONARCH | \
+ CFG_REV1_2) << 5));
+
+ if (!(in32(GPIO0_IR) & CFG_REV1_2)) {
+ /* rev 1.2 boards */
+ mtdcr(cntrl0, mfdcr(cntrl0) | ((CFG_INTA_FAKE | \
+ CFG_SELF_RST) << 5));
+ }
+
+ out32(GPIO0_OR, 0);
+ out32(GPIO0_TCR, CFG_FPGA_PRG | CFG_FPGA_CLK | CFG_FPGA_DATA | CFG_XEREADY); /* setup for output */
+
+ /* - check if rev1_2 is low, then:
+ * - set/reset CFG_INTA_FAKE/CFG_SELF_RST in TCR to assert INTA# or SELFRST#
*/
- out32(GPIO0_ODR, 0x00000000); /* no open drain pins */
- out32(GPIO0_TCR, CFG_FPGA_PRG | CFG_FPGA_CLK | CFG_FPGA_DATA); /* setup for output */
- out32(GPIO0_OR, 0); /* outputs -> low */
return 0;
}
@@ -83,11 +97,6 @@ int board_early_init_f (void)
/* ------------------------------------------------------------------------- */
-int misc_init_f (void)
-{
- return 0; /* dummy implementation */
-}
-
int misc_init_r (void)
{
@@ -97,17 +106,31 @@ int misc_init_r (void)
gd->bd->bi_flashstart = 0 - gd->bd->bi_flashsize;
gd->bd->bi_flashoffset = 0;
+ out32(GPIO0_OR, in32(GPIO0_OR) | CFG_XEREADY); /* deassert EREADY# */
return (0);
}
+ushort pmc405_pci_subsys_deviceid(void)
+{
+ ulong val;
+ val = in32(GPIO0_IR);
+ if (!(val & CFG_REV1_2)) { /* low=rev1.2 */
+ if (val & CFG_NONMONARCH) { /* monarch# signal */
+ return CFG_PCI_SUBSYS_DEVICEID_NONMONARCH;
+ }
+ return CFG_PCI_SUBSYS_DEVICEID_MONARCH;
+ }
+ return CFG_PCI_SUBSYS_DEVICEID_NONMONARCH;
+}
/*
* Check Board Identity:
*/
-
int checkboard (void)
{
- unsigned char str[64];
+ ulong val;
+
+ char str[64];
int i = getenv_r ("serial#", str, sizeof(str));
puts ("Board: ");
@@ -118,12 +141,18 @@ int checkboard (void)
puts(str);
}
- putc ('\n');
+ val = in32(GPIO0_IR);
+ if (!(val & CFG_REV1_2)) { /* low=rev1.2 */
+ puts(" rev1.2 (");
+ if (val & CFG_NONMONARCH) { /* monarch# signal */
+ puts("non-");
+ }
+ puts("monarch)");
+ } else {
+ puts(" <=rev1.1");
+ }
- /*
- * Disable sleep mode in LXT971
- */
- lxt971_no_sleep();
+ putc ('\n');
return 0;
}
@@ -145,17 +174,19 @@ long int initdram (int board_type)
return (4*1024*1024 << ((val & 0x000e0000) >> 17));
}
-/* ------------------------------------------------------------------------- */
-int testdram (void)
+/* ------------------------------------------------------------------------- */
+void reset_phy(void)
{
- /* TODO: XXX XXX XXX */
- printf ("test: 16 MB - ok\n");
+#ifdef CONFIG_LXT971_NO_SLEEP
- return (0);
+ /*
+ * Disable sleep mode in LXT971
+ */
+ lxt971_no_sleep();
+#endif
}
-/* ------------------------------------------------------------------------- */
int do_cantest(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
{
diff --git a/board/esd/pmc405/u-boot.lds b/board/esd/pmc405/u-boot.lds
index bfd71dbfcbe..e84d69ebb7d 100644
--- a/board/esd/pmc405/u-boot.lds
+++ b/board/esd/pmc405/u-boot.lds
@@ -67,7 +67,6 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -87,6 +86,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -119,10 +119,12 @@ SECTIONS
_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 = .;
diff --git a/board/esd/tasreg/u-boot.lds b/board/esd/tasreg/u-boot.lds
index f4aa16a72d6..a803b1cbadc 100644
--- a/board/esd/tasreg/u-boot.lds
+++ b/board/esd/tasreg/u-boot.lds
@@ -75,6 +75,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -110,11 +112,13 @@ SECTIONS
_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 = .;
diff --git a/board/esd/voh405/u-boot.lds b/board/esd/voh405/u-boot.lds
index 311a5fe7f2f..43f776579ef 100644
--- a/board/esd/voh405/u-boot.lds
+++ b/board/esd/voh405/u-boot.lds
@@ -67,7 +67,7 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
+ cpu/ppc4xx/4xx_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -87,6 +87,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -119,11 +120,13 @@ SECTIONS
_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 = .;
diff --git a/board/esd/voh405/voh405.c b/board/esd/voh405/voh405.c
index 9cea69f18c2..eda3fd9d9d8 100644
--- a/board/esd/voh405/voh405.c
+++ b/board/esd/voh405/voh405.c
@@ -268,7 +268,7 @@ int misc_init_r (void)
int checkboard (void)
{
- unsigned char str[64];
+ char str[64];
int i = getenv_r ("serial#", str, sizeof(str));
puts ("Board: ");
diff --git a/board/esd/vom405/u-boot.lds b/board/esd/vom405/u-boot.lds
index 311a5fe7f2f..f7a20d1da23 100644
--- a/board/esd/vom405/u-boot.lds
+++ b/board/esd/vom405/u-boot.lds
@@ -67,7 +67,6 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -87,6 +86,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -119,11 +119,13 @@ SECTIONS
_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 = .;
diff --git a/board/esd/vom405/vom405.c b/board/esd/vom405/vom405.c
index 70bc6db96c0..bc5fa7c69b2 100644
--- a/board/esd/vom405/vom405.c
+++ b/board/esd/vom405/vom405.c
@@ -79,12 +79,6 @@ int board_early_init_f (void)
/* ------------------------------------------------------------------------- */
-int misc_init_f (void)
-{
- return 0; /* dummy implementation */
-}
-
-
int misc_init_r (void)
{
DECLARE_GLOBAL_DATA_PTR;
@@ -103,7 +97,7 @@ int misc_init_r (void)
int checkboard (void)
{
- unsigned char str[64];
+ char str[64];
int i = getenv_r ("serial#", str, sizeof(str));
int flashcnt;
int delay;
@@ -132,11 +126,6 @@ int checkboard (void)
}
*led_reg = 0x40;
- /*
- * Disable sleep mode in LXT971
- */
- lxt971_no_sleep();
-
return 0;
}
@@ -159,10 +148,13 @@ long int initdram (int board_type)
/* ------------------------------------------------------------------------- */
-int testdram (void)
+void reset_phy(void)
{
- /* TODO: XXX XXX XXX */
- printf ("test: 16 MB - ok\n");
+#ifdef CONFIG_LXT971_NO_SLEEP
- return (0);
+ /*
+ * Disable sleep mode in LXT971
+ */
+ lxt971_no_sleep();
+#endif
}
diff --git a/board/esd/wuh405/u-boot.lds b/board/esd/wuh405/u-boot.lds
index ba555501ed4..95854f29327 100644
--- a/board/esd/wuh405/u-boot.lds
+++ b/board/esd/wuh405/u-boot.lds
@@ -67,7 +67,6 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -87,6 +86,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -119,10 +119,12 @@ SECTIONS
_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 = .;
diff --git a/board/esd/wuh405/wuh405.c b/board/esd/wuh405/wuh405.c
index 09c4d36a951..db24122c5ea 100644
--- a/board/esd/wuh405/wuh405.c
+++ b/board/esd/wuh405/wuh405.c
@@ -193,7 +193,7 @@ int misc_init_r (void)
int checkboard (void)
{
- unsigned char str[64];
+ char str[64];
int i = getenv_r ("serial#", str, sizeof(str));
puts ("Board: ");
diff --git a/board/esteem192e/esteem192e.c b/board/esteem192e/esteem192e.c
index 5c3e9b42657..3959eead272 100644
--- a/board/esteem192e/esteem192e.c
+++ b/board/esteem192e/esteem192e.c
@@ -147,8 +147,8 @@ long int initdram (int board_type)
* Check Bank 0 Memory Size for re-configuration
*
*/
- size_b0 = get_ram_size ((ulong *) SDRAM_BASE2_PRELIM, SDRAM_MAX_SIZE);
- size_b1 = get_ram_size ((ulong *) SDRAM_BASE3_PRELIM, SDRAM_MAX_SIZE);
+ 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);
diff --git a/board/esteem192e/u-boot.lds b/board/esteem192e/u-boot.lds
index 717c8954823..4c541bf5c29 100644
--- a/board/esteem192e/u-boot.lds
+++ b/board/esteem192e/u-boot.lds
@@ -77,6 +77,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -109,11 +110,13 @@ SECTIONS
_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 = .;
diff --git a/board/etin/debris/u-boot.lds b/board/etin/debris/u-boot.lds
index ab22203093b..c742bcd2470 100644
--- a/board/etin/debris/u-boot.lds
+++ b/board/etin/debris/u-boot.lds
@@ -67,6 +67,8 @@ SECTIONS
. = ALIGN(16);
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -99,10 +101,12 @@ SECTIONS
_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 = .;
diff --git a/board/etx094/etx094.c b/board/etx094/etx094.c
index efe7cb21512..dba3c1181e6 100644
--- a/board/etx094/etx094.c
+++ b/board/etx094/etx094.c
@@ -92,8 +92,8 @@ int checkboard (void)
{
DECLARE_GLOBAL_DATA_PTR;
- unsigned char *s = getenv ("serial#");
- unsigned char *e;
+ char *s = getenv ("serial#");
+ char *e;
puts ("Board: ");
@@ -186,7 +186,7 @@ long int initdram (int board_type)
*
* try 8 column mode
*/
- size8 = dram_size (CFG_MAMR_8COL, (ulong *) SDRAM_BASE2_PRELIM,
+ size8 = dram_size (CFG_MAMR_8COL, (long *) SDRAM_BASE2_PRELIM,
SDRAM_MAX_SIZE);
udelay (1000);
@@ -194,7 +194,7 @@ long int initdram (int board_type)
/*
* try 9 column mode
*/
- size9 = dram_size (CFG_MAMR_9COL, (ulong *) SDRAM_BASE2_PRELIM,
+ size9 = dram_size (CFG_MAMR_9COL, (long *) SDRAM_BASE2_PRELIM,
SDRAM_MAX_SIZE);
if (size8 < size9) { /* leave configuration at 9 columns */
@@ -215,7 +215,7 @@ long int initdram (int board_type)
* but then only half the real size will be used.]
*/
size_b1 =
- dram_size (memctl->memc_mamr, (ulong *) SDRAM_BASE3_PRELIM,
+ dram_size (memctl->memc_mamr, (long *) SDRAM_BASE3_PRELIM,
SDRAM_MAX_SIZE);
/* debug ("SDRAM Bank 1: %ld MB\n", size8 >> 20); */
} else {
diff --git a/board/etx094/u-boot.lds b/board/etx094/u-boot.lds
index 3d202e3f4ea..c50db8f8c8b 100644
--- a/board/etx094/u-boot.lds
+++ b/board/etx094/u-boot.lds
@@ -79,6 +79,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -111,11 +112,13 @@ SECTIONS
_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 = .;
diff --git a/board/etx094/u-boot.lds.debug b/board/etx094/u-boot.lds.debug
index 7cd68090bbd..e4d8b10913e 100644
--- a/board/etx094/u-boot.lds.debug
+++ b/board/etx094/u-boot.lds.debug
@@ -81,6 +81,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/evb4510/u-boot.lds b/board/evb4510/u-boot.lds
index 98997904d48..5b70a40aab6 100644
--- a/board/evb4510/u-boot.lds
+++ b/board/evb4510/u-boot.lds
@@ -44,6 +44,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/evb64260/eth.c b/board/evb64260/eth.c
index f0743fa292e..eafa48bc6ea 100644
--- a/board/evb64260/eth.c
+++ b/board/evb64260/eth.c
@@ -85,12 +85,17 @@ static const char ether_port_phy_addr[3]={0,1,2};
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;
- miiphy_read(phy,reg,&val);
+ gt6426x_miiphy_read(GT6426x_MII_DEVNAME,phy,reg,&val);
return val;
}
@@ -182,7 +187,7 @@ gt6426x_eth_receive(struct eth_dev_s *p,unsigned int icr)
*/
/* let the upper layer handle the packet */
- NetReceive (eth_data, eth_len);
+ NetReceive ((uchar *)eth_data, eth_len);
rx->buff_size_byte_count = GT6426x_ETH_BUF_SIZE<<16;
@@ -266,7 +271,7 @@ gt6426x_eth_transmit(void *v, volatile char *p, unsigned int s)
#endif
memcpy(dev->eth_tx_buffer, (char *) p, s);
- tx->buff_pointer = dev->eth_tx_buffer;
+ tx->buff_pointer = (uchar *)dev->eth_tx_buffer;
tx->bytecount_reserved = ((__u16)s) << 16;
/* 31 - own
@@ -339,8 +344,8 @@ gt6426x_eth_disable(void *v)
MII utilities - write: write to an MII register via SMI
***************************************************************************/
int
-miiphy_write(unsigned char phy, unsigned char reg,
- unsigned short data)
+gt6426x_miiphy_write(char *devname, unsigned char phy,
+ unsigned char reg, unsigned short data)
{
unsigned int temp= (reg<<21) | (phy<<16) | data;
@@ -354,8 +359,8 @@ miiphy_write(unsigned char phy, unsigned char reg,
MII utilities - read: read from an MII register via SMI
***************************************************************************/
int
-miiphy_read(unsigned char phy, unsigned char reg,
- unsigned short *val)
+gt6426x_miiphy_read(char *devname, unsigned char phy,
+ unsigned char reg, unsigned short *val)
{
unsigned int temp= (reg<<21) | (phy<<16) | 1<<26;
@@ -444,7 +449,7 @@ check_phy_state(struct eth_dev_s *p)
if ((psr & 0x3) != want) {
printf("MII: GT thinks %x, PHY thinks %x, restarting autoneg..\n",
psr & 0x3, want);
- miiphy_write(ether_port_phy_addr[p->dev],0,
+ 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 */
@@ -490,7 +495,7 @@ gt6426x_eth_probe(void *v, bd_t *bis)
led 2: 0xc=link/rxact
led 3: 0x2=rxact (N/C)
strch: 0,2=30 ms, enable */
- miiphy_write(ether_port_phy_addr[p->dev], 20, 0x1c22);
+ 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); */
@@ -583,7 +588,7 @@ gt6426x_eth_probe(void *v, bd_t *bis)
/* Initialize Rx Side */
for (temp = 0; temp < NR; temp++) {
- p->eth_rx_desc[temp].buff_pointer = p->eth_rx_buffer[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 */
@@ -719,7 +724,8 @@ gt6426x_eth_initialize(bd_t *bis)
dev->send = (void*)gt6426x_eth_transmit;
dev->recv = (void*)gt6426x_eth_poll;
- dev->priv = (void*)p = calloc( sizeof(*p), 1 );
+ p = calloc( sizeof(*p), 1 );
+ dev->priv = (void*)p;
if (!p)
{
printf( "%s: %s allocation failure, %s\n",
@@ -791,6 +797,11 @@ gt6426x_eth_initialize(bd_t *bis)
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
index ecc376213a5..beb6db16dfb 100644
--- a/board/evb64260/eth.h
+++ b/board/evb64260/eth.h
@@ -39,14 +39,14 @@ typedef struct eth0_tx_desc_struct {
volatile struct eth0_tx_desc_struct * next_desc;
/* Note - the following will not work for 64 bit addressing */
volatile unsigned char * buff_pointer;
-} eth0_tx_desc_single __attribute__ ((packed));
+} __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;
-} eth0_rx_desc_single __attribute__ ((packed));
+} __attribute__ ((packed)) eth0_rx_desc_single;
#define NT 20 /* Number of Transmit buffers */
#define NR 20 /* Number of Receive buffers */
diff --git a/board/evb64260/eth_addrtbl.c b/board/evb64260/eth_addrtbl.c
index 0abc7d45369..e8ef0e3e52e 100644
--- a/board/evb64260/eth_addrtbl.c
+++ b/board/evb64260/eth_addrtbl.c
@@ -55,8 +55,9 @@ unsigned int initAddressTable (u32 port, u32 hashMode, u32 hashSizeSelector)
int bytes =
hashLength[hashSizeSelector] * sizeof (addrTblEntry);
- tableBase = (unsigned int) realAddrTableBase[port] =
+ realAddrTableBase[port] =
malloc (bytes + 64);
+ tableBase = (unsigned int)realAddrTableBase;
if (!tableBase) {
printf ("%s: alloc memory failed \n", __FUNCTION__);
diff --git a/board/evb64260/flash.c b/board/evb64260/flash.c
index 7ca6f0ae73d..6ab23dce2f7 100644
--- a/board/evb64260/flash.c
+++ b/board/evb64260/flash.c
@@ -589,7 +589,7 @@ flash_get_size (int portwidth, vu_long *addr, flash_info_t *info)
int
flash_erase (flash_info_t *info, int s_first, int s_last)
{
- volatile unsigned char *addr = (char *)(info->start[0]);
+ volatile unsigned char *addr = (uchar *)(info->start[0]);
int flag, prot, sect, l_sect;
ulong start, now, last;
@@ -600,7 +600,7 @@ flash_erase (flash_info_t *info, int s_first, int s_last)
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 = (char *)(info->start[sect]);
+ addr = (uchar *)(info->start[sect]);
memset((void *)addr, 0, sector_size);
}
return 0;
@@ -658,7 +658,7 @@ flash_erase (flash_info_t *info, int s_first, int s_last)
/* Start erase on unprotected sectors */
for (sect = s_first; sect<=s_last; sect++) {
if (info->protect[sect] == 0) { /* not protected */
- addr = (char *)(info->start[sect]);
+ addr = (uchar *)(info->start[sect]);
flash_cmd(info->portwidth,addr,0,0x30);
l_sect = sect;
}
@@ -794,7 +794,7 @@ write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
static int
write_word (flash_info_t *info, ulong dest, ulong data)
{
- volatile unsigned char *addr = (char *)(info->start[0]);
+ volatile unsigned char *addr = (uchar *)(info->start[0]);
ulong start;
int flag, i;
diff --git a/board/evb64260/i2c.c b/board/evb64260/i2c.c
index 22cb8096c83..c62b64729c1 100644
--- a/board/evb64260/i2c.c
+++ b/board/evb64260/i2c.c
@@ -146,7 +146,7 @@ i2c_select_device(uchar dev_addr, uchar read, int ten_bit)
static uchar
i2c_get_data(uchar* return_data, int len) {
- unsigned int data, status;
+ unsigned int data, status = 0;
int count = 0;
DP(puts("i2c_get_data\n"));
diff --git a/board/evb64260/u-boot.lds b/board/evb64260/u-boot.lds
index 0dfa8c00054..d89eb6cff20 100644
--- a/board/evb64260/u-boot.lds
+++ b/board/evb64260/u-boot.lds
@@ -74,6 +74,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -106,11 +107,13 @@ SECTIONS
_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 = .;
diff --git a/board/evb64260/zuma_pbb_mbox.c b/board/evb64260/zuma_pbb_mbox.c
index 5131339a6c9..2b9a469f8d1 100644
--- a/board/evb64260/zuma_pbb_mbox.c
+++ b/board/evb64260/zuma_pbb_mbox.c
@@ -116,7 +116,7 @@ zuma_mbox_dump(void)
static void
zuma_mbox_setenv(void)
{
- unsigned char *data, buf[32];
+ char *data, buf[32];
unsigned char save = 0;
data = getenv("baudrate");
diff --git a/board/exbitgen/u-boot.lds b/board/exbitgen/u-boot.lds
index 7dd539178ef..d5dea8238ef 100644
--- a/board/exbitgen/u-boot.lds
+++ b/board/exbitgen/u-boot.lds
@@ -87,6 +87,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -119,10 +121,12 @@ SECTIONS
_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 = .;
diff --git a/board/fads/fads.h b/board/fads/fads.h
index aff1b7efec2..1127c7ff726 100644
--- a/board/fads/fads.h
+++ b/board/fads/fads.h
@@ -58,8 +58,8 @@
#undef CONFIG_BOOTARGS
#define CONFIG_BOOTCOMMAND \
"dhcp;" \
- "setenv bootargs root=/dev/nfs rw nfsroot=$(serverip):$(rootpath) " \
- "ip=$(ipaddr):$(serverip):$(gatewayip):$(netmask):$(hostname)::off;" \
+ "setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath} " \
+ "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off;" \
"bootm"
#undef CONFIG_WATCHDOG /* watchdog disabled */
diff --git a/board/fads/u-boot.lds b/board/fads/u-boot.lds
index b8f463a19f6..21a2d9e32a0 100644
--- a/board/fads/u-boot.lds
+++ b/board/fads/u-boot.lds
@@ -66,6 +66,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -98,11 +99,13 @@ SECTIONS
_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 = .;
diff --git a/board/fads/u-boot.lds.debug b/board/fads/u-boot.lds.debug
index 0245f78fc8a..650572d4d05 100644
--- a/board/fads/u-boot.lds.debug
+++ b/board/fads/u-boot.lds.debug
@@ -75,6 +75,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/flagadm/u-boot.lds b/board/flagadm/u-boot.lds
index 87e323b6a4f..04995ea7563 100644
--- a/board/flagadm/u-boot.lds
+++ b/board/flagadm/u-boot.lds
@@ -66,6 +66,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -98,11 +99,13 @@ SECTIONS
_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 = .;
diff --git a/board/flagadm/u-boot.lds.debug b/board/flagadm/u-boot.lds.debug
index f6f7cf4fa53..3165d563451 100644
--- a/board/flagadm/u-boot.lds.debug
+++ b/board/flagadm/u-boot.lds.debug
@@ -74,6 +74,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/funkwerk/vovpn-gw/m88e6060.c b/board/funkwerk/vovpn-gw/m88e6060.c
index e4ff3c37c50..03a03d0af09 100644
--- a/board/funkwerk/vovpn-gw/m88e6060.c
+++ b/board/funkwerk/vovpn-gw/m88e6060.c
@@ -160,12 +160,12 @@ m88e6060_initialize( int devAddr )
/*** reset all phys into powerdown ************************************/
for (i=0, err=0; i<M88X_PHY_CNT; i++) {
- err += miiphy_read( devAddr+phyTab[i],M88X_PHY_CNTL,&val );
+ 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 += miiphy_write( devAddr+phyTab[i],M88X_PHY_CNTL,val );
+ err += bb_miiphy_write(NULL, devAddr+phyTab[i],M88X_PHY_CNTL,val );
}
if (err) {
printf( "%s [ERR] reset phys\n",_f );
@@ -174,9 +174,9 @@ m88e6060_initialize( int devAddr )
/*** disable all ports ************************************************/
for (i=0, err=0; i<M88X_PRT_CNT; i++) {
- err += miiphy_read( devAddr+prtTab[i],M88X_PRT_CNTL,&val );
+ err += bb_miiphy_read(NULL, devAddr+prtTab[i],M88X_PRT_CNTL,&val );
val &= 0xfffc;
- err += miiphy_write( devAddr+prtTab[i],M88X_PRT_CNTL,val );
+ err += bb_miiphy_write(NULL, devAddr+prtTab[i],M88X_PRT_CNTL,val );
}
if (err) {
printf( "%s [ERR] disable ports\n",_f );
@@ -187,33 +187,33 @@ m88e6060_initialize( int devAddr )
/* set switch mac addr */
#define ea eth_get_dev()->enetaddr
val = (ea[4] << 8) | ea[5];
- err = miiphy_write( devAddr+15,M88X_GLB_MAC45,val );
+ err = bb_miiphy_write(NULL, devAddr+15,M88X_GLB_MAC45,val );
val = (ea[2] << 8) | ea[3];
- err += miiphy_write( devAddr+15,M88X_GLB_MAC23,val );
+ err += bb_miiphy_write(NULL, devAddr+15,M88X_GLB_MAC23,val );
val = (ea[0] << 8) | ea[1];
#undef ea
val &= 0xfeff; /* clear DiffAddr */
- err += miiphy_write( devAddr+15,M88X_GLB_MAC01,val );
+ 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 = miiphy_read( devAddr+15,M88X_GLB_CNTL,&val );
+ err = bb_miiphy_read(NULL, devAddr+15,M88X_GLB_CNTL,&val );
val &= 0xd870;
val |= 0x0500;
- err += miiphy_write( devAddr+15,M88X_GLB_CNTL,val );
+ 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 = miiphy_read( devAddr+15,M88X_ATU_CNTL,&val );
+ err = bb_miiphy_read(NULL, devAddr+15,M88X_ATU_CNTL,&val );
val &= 0x000f;
val |= 0x2130;
- err += miiphy_write( devAddr+15,M88X_ATU_CNTL,val );
+ err += bb_miiphy_write(NULL, devAddr+15,M88X_ATU_CNTL,val );
if (err) {
printf( "%s [ERR] atu control register\n",_f );
return( -1 );
@@ -226,10 +226,10 @@ m88e6060_initialize( int devAddr )
}
while (p->reg != -1) {
err = 0;
- err += miiphy_read( devAddr+prtTab[i],p->reg,&val );
+ err += bb_miiphy_read(NULL, devAddr+prtTab[i],p->reg,&val );
val &= p->msk;
val |= p->val;
- err += miiphy_write( devAddr+prtTab[i],p->reg,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 */
@@ -245,10 +245,10 @@ m88e6060_initialize( int devAddr )
}
while (p->reg != -1) {
err = 0;
- err += miiphy_read( devAddr+phyTab[i],p->reg,&val );
+ err += bb_miiphy_read(NULL, devAddr+phyTab[i],p->reg,&val );
val &= p->msk;
val |= p->val;
- err += miiphy_write( devAddr+phyTab[i],p->reg,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 */
diff --git a/board/funkwerk/vovpn-gw/u-boot.lds b/board/funkwerk/vovpn-gw/u-boot.lds
index 098c0464cc8..bf8048d27ec 100644
--- a/board/funkwerk/vovpn-gw/u-boot.lds
+++ b/board/funkwerk/vovpn-gw/u-boot.lds
@@ -60,6 +60,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -92,11 +93,13 @@ SECTIONS
_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 = .;
diff --git a/board/funkwerk/vovpn-gw/vovpn-gw.c b/board/funkwerk/vovpn-gw/vovpn-gw.c
index 4acddefa508..97f81eefcfd 100644
--- a/board/funkwerk/vovpn-gw/vovpn-gw.c
+++ b/board/funkwerk/vovpn-gw/vovpn-gw.c
@@ -198,7 +198,7 @@ void reset_phy (void)
iop->pdat |= 0x00080000;
for (i=0; i<100; i++) {
udelay(20000);
- if (miiphy_read( CFG_PHY_ADDR,2,&val ) == 0) {
+ if (bb_miiphy_read("FCC1 ETHERNET", CFG_PHY_ADDR,2,&val ) == 0) {
break;
}
}
diff --git a/board/g2000/g2000.c b/board/g2000/g2000.c
index 5967e90e1ec..3f7875334de 100644
--- a/board/g2000/g2000.c
+++ b/board/g2000/g2000.c
@@ -90,7 +90,7 @@ int misc_init_r (void)
*/
int checkboard (void)
{
- unsigned char str[64];
+ char str[64];
int i = getenv_r ("serial#", str, sizeof(str));
puts ("Board: ");
diff --git a/board/g2000/u-boot.lds b/board/g2000/u-boot.lds
index 311a5fe7f2f..43f776579ef 100644
--- a/board/g2000/u-boot.lds
+++ b/board/g2000/u-boot.lds
@@ -67,7 +67,7 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
+ cpu/ppc4xx/4xx_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -87,6 +87,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -119,11 +120,13 @@ SECTIONS
_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 = .;
diff --git a/board/gcplus/u-boot.lds b/board/gcplus/u-boot.lds
index f625b48c3a2..9900a57c0a0 100644
--- a/board/gcplus/u-boot.lds
+++ b/board/gcplus/u-boot.lds
@@ -46,6 +46,7 @@ SECTIONS
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/gen860t/gen860t.c b/board/gen860t/gen860t.c
index f1d173ebc97..b7a1b56437a 100644
--- a/board/gen860t/gen860t.c
+++ b/board/gen860t/gen860t.c
@@ -128,8 +128,8 @@ int checkboard (void)
{
DECLARE_GLOBAL_DATA_PTR;
- unsigned char *s;
- unsigned char buf[64];
+ char *s;
+ char buf[64];
int i;
i = getenv_r ("board_id", buf, sizeof (buf));
@@ -266,7 +266,7 @@ int misc_init_r (void)
int last_stage_init (void)
{
#if !defined(CONFIG_SC)
- unsigned char buf[256];
+ char buf[256];
int i;
/*
diff --git a/board/gen860t/u-boot-flashenv.lds b/board/gen860t/u-boot-flashenv.lds
index f46c3143274..7926a2e09d7 100644
--- a/board/gen860t/u-boot-flashenv.lds
+++ b/board/gen860t/u-boot-flashenv.lds
@@ -102,6 +102,12 @@ SECTIONS
_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 = .;
diff --git a/board/gen860t/u-boot.lds b/board/gen860t/u-boot.lds
index d4c258f9665..1df481751c5 100644
--- a/board/gen860t/u-boot.lds
+++ b/board/gen860t/u-boot.lds
@@ -67,6 +67,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -101,11 +102,13 @@ SECTIONS
_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 = .;
diff --git a/board/genietv/flash.c b/board/genietv/flash.c
index f12d0be5525..1c1728bb498 100644
--- a/board/genietv/flash.c
+++ b/board/genietv/flash.c
@@ -188,12 +188,11 @@ static ulong flash_get_size (vu_long *addr, flash_info_t *info)
#endif
switch (value)
{
- case 0x01:
- case AMD_MANUFACT:
+ case 0x1: /* AMD_MANUFACT */
info->flash_id = FLASH_MAN_AMD;
break;
- case FUJ_MANUFACT:
+ case 0x4: /* FUJ_MANUFACT */
info->flash_id = FLASH_MAN_FUJ;
break;
diff --git a/board/genietv/genietv.c b/board/genietv/genietv.c
index c19841ae792..5f8c8997e51 100644
--- a/board/genietv/genietv.c
+++ b/board/genietv/genietv.c
@@ -187,14 +187,14 @@ long int initdram (int board_type)
PrintState ();
#endif
/* printf ("\nChecking bank1..."); */
- size8 = dram_size (CFG_MBMR_8COL, (ulong *) SDRAM_BASE1_PRELIM,
+ 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, (ulong *) SDRAM_BASE2_PRELIM,
+ dram_size (memctl->memc_mbmr, (long *) SDRAM_BASE2_PRELIM,
SDRAM_MAX_SIZE);
/*
diff --git a/board/genietv/u-boot.lds b/board/genietv/u-boot.lds
index 276e2b445ef..f48b9ad2a15 100644
--- a/board/genietv/u-boot.lds
+++ b/board/genietv/u-boot.lds
@@ -76,6 +76,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -108,11 +109,13 @@ SECTIONS
_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 = .;
diff --git a/board/genietv/u-boot.lds.debug b/board/genietv/u-boot.lds.debug
index 749817da615..e843df6a02c 100644
--- a/board/genietv/u-boot.lds.debug
+++ b/board/genietv/u-boot.lds.debug
@@ -75,6 +75,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/gth/flash.c b/board/gth/flash.c
index c8b56fb96b2..41a5c50b0fa 100644
--- a/board/gth/flash.c
+++ b/board/gth/flash.c
@@ -261,7 +261,7 @@ static ulong flash_get_size (vu_long *addr, flash_info_t *info)
#if 0
ulong base = (ulong)addr;
#endif
- uchar value;
+ ulong value;
/* Write auto select command: read Manufacturer ID */
#if 0
@@ -278,7 +278,7 @@ static ulong flash_get_size (vu_long *addr, flash_info_t *info)
switch (value)
{
- case AMD_MANUFACT:case 0x01:
+ case AMD_MANUFACT:
info->flash_id = FLASH_MAN_AMD;
break;
diff --git a/board/gth/gth.c b/board/gth/gth.c
index 6f972ce8908..b1fcbf5cc36 100644
--- a/board/gth/gth.c
+++ b/board/gth/gth.c
@@ -589,7 +589,7 @@ int misc_init_r (void)
(Rx[8] != ':') | (Rx[11] != ':') | (Rx[14] != ':')) {
printf ("*** ethernet addr invalid, using default ***\n");
} else {
- setenv ("ethaddr", Rx);
+ setenv ("ethaddr", (char *)Rx);
}
return (0);
}
diff --git a/board/gth/u-boot.lds b/board/gth/u-boot.lds
index 50f41b53d2e..8ac4bdad076 100644
--- a/board/gth/u-boot.lds
+++ b/board/gth/u-boot.lds
@@ -66,6 +66,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -98,11 +99,13 @@ SECTIONS
_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 = .;
diff --git a/board/gw8260/gw8260.c b/board/gw8260/gw8260.c
index 163d58ccf53..2719a9585fa 100644
--- a/board/gw8260/gw8260.c
+++ b/board/gw8260/gw8260.c
@@ -320,7 +320,7 @@ unsigned long long pattern[] = {
int mem_test_data (void)
{
unsigned long long *pmem = (unsigned long long *) CFG_SDRAM_BASE;
- unsigned long long temp64;
+ unsigned long long temp64 = 0;
int num_patterns = sizeof (pattern) / sizeof (pattern[0]);
int i;
unsigned int hi, lo;
@@ -427,7 +427,7 @@ int mem_march (volatile unsigned long long *base,
unsigned long long wmask, short read, short write)
{
unsigned int i;
- unsigned long long temp;
+ unsigned long long temp = 0;
unsigned int hitemp, lotemp, himask, lomask;
for (i = 0; i < size; i++) {
diff --git a/board/gw8260/u-boot.lds b/board/gw8260/u-boot.lds
index 32e8f399a26..ab65cb11fc2 100644
--- a/board/gw8260/u-boot.lds
+++ b/board/gw8260/u-boot.lds
@@ -61,6 +61,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -93,11 +94,13 @@ SECTIONS
_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 = .;
diff --git a/board/hermes/hermes.c b/board/hermes/hermes.c
index 7490324cb0e..e95d9ee3324 100644
--- a/board/hermes/hermes.c
+++ b/board/hermes/hermes.c
@@ -107,8 +107,8 @@ int checkboard (void)
{
DECLARE_GLOBAL_DATA_PTR;
- unsigned char *s = getenv ("serial#");
- unsigned char *e;
+ char *s = getenv ("serial#");
+ char *e;
puts ("Board: ");
@@ -179,7 +179,7 @@ long int initdram (int board_type)
*
* try 8 column mode
*/
- size8 = dram_size (CFG_MAMR_8COL, (ulong *) SDRAM_BASE_PRELIM,
+ size8 = dram_size (CFG_MAMR_8COL, (long *) SDRAM_BASE_PRELIM,
SDRAM_MAX_SIZE);
udelay (1000);
@@ -187,7 +187,7 @@ long int initdram (int board_type)
/*
* try 9 column mode
*/
- size9 = dram_size (CFG_MAMR_9COL, (ulong *) SDRAM_BASE_PRELIM,
+ size9 = dram_size (CFG_MAMR_9COL, (long *) SDRAM_BASE_PRELIM,
SDRAM_MAX_SIZE);
if (size8 < size9) { /* leave configuration at 9 columns */
diff --git a/board/hermes/u-boot.lds b/board/hermes/u-boot.lds
index 4dbf7a6e83f..ef53ab7a0a8 100644
--- a/board/hermes/u-boot.lds
+++ b/board/hermes/u-boot.lds
@@ -77,6 +77,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -109,11 +110,13 @@ SECTIONS
_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 = .;
diff --git a/board/hermes/u-boot.lds.debug b/board/hermes/u-boot.lds.debug
index 49e84c033d5..a961fa47ba5 100644
--- a/board/hermes/u-boot.lds.debug
+++ b/board/hermes/u-boot.lds.debug
@@ -74,6 +74,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/hidden_dragon/u-boot.lds b/board/hidden_dragon/u-boot.lds
index db89a78fd0f..2a5cd2ebd9d 100644
--- a/board/hidden_dragon/u-boot.lds
+++ b/board/hidden_dragon/u-boot.lds
@@ -68,6 +68,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -100,11 +101,13 @@ SECTIONS
_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 = .;
diff --git a/board/hmi1001/hmi1001.c b/board/hmi1001/hmi1001.c
index fca11d0e7cd..237e8631657 100644
--- a/board/hmi1001/hmi1001.c
+++ b/board/hmi1001/hmi1001.c
@@ -30,6 +30,7 @@
#include <common.h>
#include <mpc5xxx.h>
#include <pci.h>
+#include <malloc.h>
#ifndef CFG_RAMBOOT
static void sdram_start (int hi_addr)
@@ -156,8 +157,122 @@ int checkboard (void)
return 0;
}
-int misc_init_f (void)
+#ifdef CONFIG_PREBOOT
+
+static uchar kbd_magic_prefix[] = "key_magic";
+static uchar kbd_command_prefix[] = "key_cmd";
+
+#define S1_ROT 0xf0
+#define S2_Q 0x40
+#define S2_M 0x20
+
+struct kbd_data_t {
+ char s1;
+ char s2;
+};
+
+struct kbd_data_t* get_keys (struct kbd_data_t *kbd_data)
+{
+ kbd_data->s1 = *((volatile uchar*)(CFG_STATUS1_BASE));
+ kbd_data->s2 = *((volatile uchar*)(CFG_STATUS2_BASE));
+
+ return kbd_data;
+}
+
+static int compare_magic (const struct kbd_data_t *kbd_data, uchar *str)
{
+ char s1 = str[0];
+ char s2;
+
+ if (s1 >= '0' && s1 <= '9')
+ s1 -= '0';
+ else if (s1 >= 'a' && s1 <= 'f')
+ s1 = s1 - 'a' + 10;
+ else if (s1 >= 'A' && s1 <= 'F')
+ s1 = s1 - 'A' + 10;
+ else
+ return -1;
+
+ if (((S1_ROT & kbd_data->s1) >> 4) != s1)
+ return -1;
+
+ s2 = (S2_Q | S2_M) & kbd_data->s2;
+
+ switch (str[1]) {
+ case 'q':
+ case 'Q':
+ if (s2 == S2_Q)
+ return -1;
+ break;
+ case 'm':
+ case 'M':
+ if (s2 == S2_M)
+ return -1;
+ break;
+ case '\0':
+ if (s2 == (S2_Q | S2_M))
+ return 0;
+ default:
+ return -1;
+ }
+
+ if (str[2])
+ return -1;
+
+ return 0;
+}
+
+static uchar *key_match (const struct kbd_data_t *kbd_data)
+{
+ uchar magic[sizeof (kbd_magic_prefix) + 1];
+ uchar *suffix;
+ uchar *kbd_magic_keys;
+
+ /*
+ * The following string defines the characters that can be 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 = kbd_magic_keys; *suffix ||
+ suffix == kbd_magic_keys; ++suffix) {
+ sprintf (magic, "%s%c", kbd_magic_prefix, *suffix);
+
+ if (compare_magic(kbd_data, getenv(magic)) == 0) {
+ uchar cmd_name[sizeof (kbd_command_prefix) + 1];
+ char *cmd;
+
+ sprintf (cmd_name, "%s%c", kbd_command_prefix, *suffix);
+ cmd = getenv (cmd_name);
+
+ return (cmd);
+ }
+ }
+
+ return (NULL);
+}
+
+#endif /* CONFIG_PREBOOT */
+
+int misc_init_r (void)
+{
+#ifdef CONFIG_PREBOOT
+ struct kbd_data_t kbd_data;
+ /* Decode keys */
+ uchar *str = strdup (key_match (get_keys (&kbd_data)));
+ /* Set or delete definition */
+ setenv ("preboot", str);
+ free (str);
+#endif /* CONFIG_PREBOOT */
+
return 0;
}
diff --git a/board/hmi1001/u-boot.lds b/board/hmi1001/u-boot.lds
index fda49773ea2..123a14c5aa0 100644
--- a/board/hmi1001/u-boot.lds
+++ b/board/hmi1001/u-boot.lds
@@ -72,6 +72,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -104,11 +105,13 @@ SECTIONS
_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 = .;
diff --git a/board/hymod/eeprom.c b/board/hymod/eeprom.c
index 15eb48e1038..c9b9b181105 100644
--- a/board/hymod/eeprom.c
+++ b/board/hymod/eeprom.c
@@ -58,7 +58,7 @@ hymod_eeprom_load (int which, hymod_eeprom_t *ep)
eeprom_read (dev_addr, offset, (uchar *)&crc, sizeof (ulong));
offset += sizeof (ulong);
- if (crc32 (crc32 (0, (char *)&hdr, sizeof hdr), data, len) != crc)
+ if (crc32 (crc32 (0, (uchar *)&hdr, sizeof hdr), data, len) != crc)
return (0);
ep->ver = hdr.ver;
@@ -260,7 +260,7 @@ uint_handler (eerec_map_t *rp, uchar *val, uchar *dp, uchar *edp)
char *eval;
ulong lval;
- lval = simple_strtol (val, &eval, 10);
+ 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);
@@ -315,12 +315,12 @@ static uchar *
date_handler (eerec_map_t *rp, uchar *val, uchar *dp, uchar *edp)
{
hymod_date_t date;
- uchar *p = val;
+ char *p = (char *)val;
char *ep;
ulong lval;
lval = simple_strtol (p, &ep, 10);
- if ((uchar *)ep == p || *ep++ != '-') {
+ if (ep == p || *ep++ != '-') {
bad_date:
printf ("%s rec (%s) is not a valid date\n", rp->name, val);
return (NULL);
@@ -330,12 +330,12 @@ bad_date:
date.year = lval;
lval = simple_strtol (p = ep, &ep, 10);
- if ((uchar *)ep == p || *ep++ != '-' || lval == 0 || lval > 12)
+ if (ep == p || *ep++ != '-' || lval == 0 || lval > 12)
goto bad_date;
date.month = lval;
lval = simple_strtol (p = ep, &ep, 10);
- if ((uchar *)ep == p || *ep != '\0' || lval == 0 || lval > 31)
+ if (ep == p || *ep != '\0' || lval == 0 || lval > 31)
goto bad_date;
date.day = lval;
@@ -359,7 +359,7 @@ string_handler (eerec_map_t *rp, uchar *val, uchar *dp, uchar *edp)
{
uint len;
- if ((len = strlen (val)) > rp->maxlen) {
+ 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);
@@ -387,7 +387,7 @@ bytes_handler (eerec_map_t *rp, uchar *val, uchar *dp, uchar *edp)
for (nbytes = 0, p = val; *p != '\0'; p = (uchar *)ep) {
ulong lval;
- lval = simple_strtol (p, &ep, 10);
+ 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",
@@ -451,7 +451,7 @@ eerec_callback (uchar *name, uchar *val)
eerec_map_t *rp;
for (rp = eerec_map; rp < &eerec_map[neerecs]; rp++)
- if (strcmp (name, rp->name) == 0)
+ if (strcmp ((char *)name, rp->name) == 0)
break;
if (rp >= &eerec_map[neerecs])
diff --git a/board/hymod/env.c b/board/hymod/env.c
index f58aec25709..f9e14213ceb 100644
--- a/board/hymod/env.c
+++ b/board/hymod/env.c
@@ -38,7 +38,7 @@ env_callback (uchar *name, uchar *value)
char ov[CFG_CBSIZE], nv[CFG_CBSIZE], *p, *q, *nn, c, *curver, *newver;
int override = 1, append = 0, remove = 0, nnl, ovl, nvl;
- nn = name;
+ nn = (char *)name;
if (*nn == '-') {
override = 0;
@@ -68,7 +68,7 @@ env_callback (uchar *name, uchar *value)
return (0);
}
- p = value;
+ p = (char *)value;
q = nv;
while ((c = *p) == ' ' || c == '\t')
diff --git a/board/hymod/global_env b/board/hymod/global_env
index 43cab1d1ce7..f61d0807dfb 100644
--- a/board/hymod/global_env
+++ b/board/hymod/global_env
@@ -135,26 +135,26 @@ 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)
+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)
+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)
+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)
+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
diff --git a/board/hymod/u-boot.lds b/board/hymod/u-boot.lds
index 1e20425083e..337a3954d2d 100644
--- a/board/hymod/u-boot.lds
+++ b/board/hymod/u-boot.lds
@@ -79,6 +79,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -111,11 +112,13 @@ SECTIONS
_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 = .;
diff --git a/board/hymod/u-boot.lds.debug b/board/hymod/u-boot.lds.debug
index c0ee8499cd6..ddd4678ee8c 100644
--- a/board/hymod/u-boot.lds.debug
+++ b/board/hymod/u-boot.lds.debug
@@ -74,6 +74,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/icecube/flash.c b/board/icecube/flash.c
index 4ae71e661cc..713011c972a 100644
--- a/board/icecube/flash.c
+++ b/board/icecube/flash.c
@@ -139,7 +139,7 @@ void flash_print_info (flash_info_t *info)
int i;
uchar *boottype;
uchar *bootletter;
- uchar *fmt;
+ char *fmt;
uchar botbootletter[] = "B";
uchar topbootletter[] = "T";
uchar botboottype[] = "bottom boot sector";
diff --git a/board/icecube/icecube.c b/board/icecube/icecube.c
index 7c9a92a913f..1f1a74ce339 100644
--- a/board/icecube/icecube.c
+++ b/board/icecube/icecube.c
@@ -107,9 +107,9 @@ long int initdram (int board_type)
/* find RAM size using SDRAM CS0 only */
sdram_start(0);
- test1 = get_ram_size((ulong *)CFG_SDRAM_BASE, 0x80000000);
+ test1 = get_ram_size((long *)CFG_SDRAM_BASE, 0x80000000);
sdram_start(1);
- test2 = get_ram_size((ulong *)CFG_SDRAM_BASE, 0x80000000);
+ test2 = get_ram_size((long *)CFG_SDRAM_BASE, 0x80000000);
if (test1 > test2) {
sdram_start(0);
dramsize = test1;
@@ -135,10 +135,10 @@ long int initdram (int board_type)
/* find RAM size using SDRAM CS1 only */
if (!dramsize)
sdram_start(0);
- test2 = test1 = get_ram_size((ulong *)(CFG_SDRAM_BASE + dramsize), 0x80000000);
+ test2 = test1 = get_ram_size((long *)(CFG_SDRAM_BASE + dramsize), 0x80000000);
if (!dramsize) {
sdram_start(1);
- test2 = get_ram_size((ulong *)(CFG_SDRAM_BASE + dramsize), 0x80000000);
+ test2 = get_ram_size((long *)(CFG_SDRAM_BASE + dramsize), 0x80000000);
}
if (test1 > test2) {
sdram_start(0);
@@ -207,9 +207,9 @@ long int initdram (int board_type)
/* find RAM size */
sdram_start(0);
- test1 = get_ram_size((ulong *)CFG_SDRAM_BASE, 0x80000000);
+ test1 = get_ram_size((long *)CFG_SDRAM_BASE, 0x80000000);
sdram_start(1);
- test2 = get_ram_size((ulong *)CFG_SDRAM_BASE, 0x80000000);
+ test2 = get_ram_size((long *)CFG_SDRAM_BASE, 0x80000000);
if (test1 > test2) {
sdram_start(0);
dramsize = test1;
diff --git a/board/icecube/u-boot.lds b/board/icecube/u-boot.lds
index d999dd16ad9..f23432ecfa8 100644
--- a/board/icecube/u-boot.lds
+++ b/board/icecube/u-boot.lds
@@ -61,6 +61,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -93,11 +94,13 @@ SECTIONS
_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 = .;
diff --git a/board/icu862/flash.c b/board/icu862/flash.c
index 6315bd95b11..ca5bcf31af5 100644
--- a/board/icu862/flash.c
+++ b/board/icu862/flash.c
@@ -251,7 +251,7 @@ static ulong flash_get_size (vu_long *addr, flash_info_t *info)
value = addr[1]; /* device ID */
- switch (value) {
+ switch ((unsigned long)value) {
case AMD_ID_F040B:
info->flash_id += FLASH_AM040;
info->sector_count = 8;
diff --git a/board/icu862/icu862.c b/board/icu862/icu862.c
index b41ebae28b3..8da9d1c9a49 100644
--- a/board/icu862/icu862.c
+++ b/board/icu862/icu862.c
@@ -143,7 +143,7 @@ long int initdram (int board_type)
*
* try 8 column mode
*/
- size8 = dram_size (CFG_MAMR_8COL, (ulong *) SDRAM_BASE1_PRELIM,
+ size8 = dram_size (CFG_MAMR_8COL, SDRAM_BASE1_PRELIM,
SDRAM_MAX_SIZE);
udelay (1000);
@@ -151,7 +151,7 @@ long int initdram (int board_type)
/*
* try 9 column mode
*/
- size9 = dram_size (CFG_MAMR_9COL, (ulong *) SDRAM_BASE1_PRELIM,
+ size9 = dram_size (CFG_MAMR_9COL, SDRAM_BASE1_PRELIM,
SDRAM_MAX_SIZE);
if (size8 < size9) { /* leave configuration at 9 columns */
diff --git a/board/icu862/u-boot.lds b/board/icu862/u-boot.lds
index 84e9cbf2e5d..4bc50c50cb5 100644
--- a/board/icu862/u-boot.lds
+++ b/board/icu862/u-boot.lds
@@ -80,6 +80,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -112,11 +113,13 @@ SECTIONS
_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 = .;
diff --git a/board/icu862/u-boot.lds.debug b/board/icu862/u-boot.lds.debug
index 7b84fd34877..87f228beed6 100644
--- a/board/icu862/u-boot.lds.debug
+++ b/board/icu862/u-boot.lds.debug
@@ -75,6 +75,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/ids8247/u-boot.lds b/board/ids8247/u-boot.lds
index 39f71ff557f..788aed3c6f1 100644
--- a/board/ids8247/u-boot.lds
+++ b/board/ids8247/u-boot.lds
@@ -62,6 +62,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -94,11 +95,13 @@ SECTIONS
_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 = .;
diff --git a/board/impa7/u-boot.lds b/board/impa7/u-boot.lds
index 64d946c4392..1122d7521c4 100644
--- a/board/impa7/u-boot.lds
+++ b/board/impa7/u-boot.lds
@@ -44,6 +44,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/incaip/flash.c b/board/incaip/flash.c
index 686f2e96fd0..520514dea35 100644
--- a/board/incaip/flash.c
+++ b/board/incaip/flash.c
@@ -190,7 +190,7 @@ void flash_print_info (flash_info_t *info)
int i;
uchar *boottype;
uchar *bootletter;
- uchar *fmt;
+ char *fmt;
uchar botbootletter[] = "B";
uchar topbootletter[] = "T";
uchar botboottype[] = "bottom boot sector";
diff --git a/board/incaip/incaip.c b/board/incaip/incaip.c
index eb6eaea2785..b5d9e004927 100644
--- a/board/incaip/incaip.c
+++ b/board/incaip/incaip.c
@@ -68,7 +68,7 @@ long int initdram(int board_type)
{
*INCA_IP_SDRAM_MC_CFGPB0 = (0x14 << 8) |
(rows << 4) | cols;
- size = get_ram_size((ulong *)CFG_SDRAM_BASE,
+ size = get_ram_size((long *)CFG_SDRAM_BASE,
max_sdram_size());
if (size > max_size)
diff --git a/board/incaip/lowlevel_init.S b/board/incaip/lowlevel_init.S
index fb64ef419de..14d738aa1a7 100644
--- a/board/incaip/lowlevel_init.S
+++ b/board/incaip/lowlevel_init.S
@@ -66,6 +66,7 @@
.globl ebu_init
.ent ebu_init
ebu_init:
+__ebu_init:
li t1, EBU_MODUL_BASE
li t2, 0xA0000041
@@ -118,6 +119,7 @@ ebu_init:
.globl cgu_init
.ent cgu_init
cgu_init:
+__cgu_init:
li t1, CGU_MODUL_BASE
@@ -182,6 +184,7 @@ cgu_init:
.globl sdram_init
.ent sdram_init
sdram_init:
+__sdram_init:
li t1, MC_MODUL_BASE
@@ -281,11 +284,11 @@ lowlevel_init:
/* We rely on the fact that neither ebu_init() nor cgu_init() nor sdram_init()
* modify t0 and a0.
*/
- bal cgu_init
+ bal __cgu_init
nop
- bal ebu_init
+ bal __ebu_init
nop
- bal sdram_init
+ bal __sdram_init
nop
move ra, t0
diff --git a/board/incaip/u-boot.lds b/board/incaip/u-boot.lds
index a2d19a84c9e..10c99179864 100644
--- a/board/incaip/u-boot.lds
+++ b/board/incaip/u-boot.lds
@@ -54,6 +54,7 @@ SECTIONS
.sdata : { *(.sdata) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/inka4x0/u-boot.lds b/board/inka4x0/u-boot.lds
index fda49773ea2..123a14c5aa0 100644
--- a/board/inka4x0/u-boot.lds
+++ b/board/inka4x0/u-boot.lds
@@ -72,6 +72,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -104,11 +105,13 @@ SECTIONS
_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 = .;
diff --git a/board/innokom/u-boot.lds b/board/innokom/u-boot.lds
index 58c371df06b..f0102391b34 100644
--- a/board/innokom/u-boot.lds
+++ b/board/innokom/u-boot.lds
@@ -44,6 +44,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/integratorap/Makefile b/board/integratorap/Makefile
index 00336aa7791..358df62519a 100644
--- a/board/integratorap/Makefile
+++ b/board/integratorap/Makefile
@@ -30,7 +30,7 @@ include $(TOPDIR)/config.mk
LIB = lib$(BOARD).a
OBJS := integratorap.o flash.o
-SOBJS := platform.o
+SOBJS := lowlevel_init.o memsetup.o
$(LIB): $(OBJS) $(SOBJS)
$(AR) crv $@ $^
diff --git a/board/integratorap/integratorap.c b/board/integratorap/integratorap.c
index fb83c82c15a..d4f61d6403d 100644
--- a/board/integratorap/integratorap.c
+++ b/board/integratorap/integratorap.c
@@ -24,7 +24,7 @@
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
@@ -36,7 +36,7 @@
#include <common.h>
#ifdef CONFIG_PCI
-# include <pci.h>
+#include <pci.h>
#endif
void flash__init (void);
@@ -46,7 +46,7 @@ void peripheral_power_enable (void);
#if defined(CONFIG_SHOW_BOOT_PROGRESS)
void show_boot_progress(int progress)
{
- printf("Boot reached stage %d\n", progress);
+ printf("Boot reached stage %d\n", progress);
}
#endif
@@ -75,6 +75,11 @@ int board_init (void)
gd->flags = 0;
+#ifdef CONFIG_CM_REMAP
+extern void cm_remap(void);
+ cm_remap(); /* remaps writeable memory to 0x00000000 */
+#endif
+
icache_enable ();
flash__init ();
@@ -109,17 +114,17 @@ static struct pci_config_table pci_integrator_config_table[] = {
/* 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 _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)))
+#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?) */ \
+ unsigned int __dev = PCI_DEV (__devfn); /* FIXME to check!! (slot?) */ \
\
if (__bus == 0) { \
/* local bus segment so need a type 0 config cycle */ \
@@ -142,10 +147,10 @@ static struct pci_config_table pci_integrator_config_table[] = {
/* 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 |= ((__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 */ \
+ __address |= __offset & 0xFF; /* bits 7..0 = register number */ \
} \
_V3Write16 (V3_LB_MAP1, __mapaddress); \
__address; \
@@ -463,7 +468,7 @@ void flash__init (void)
/*************************************************************
Routine:ether__init
Description: take the Ethernet controller out of reset and wait
- for the EEPROM load to complete.
+ for the EEPROM load to complete.
*************************************************************/
void ether__init (void)
{
@@ -475,5 +480,172 @@ void ether__init (void)
******************************/
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;
+
+#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
new file mode 100644
index 00000000000..ab9589c95c4
--- /dev/null
+++ b/board/integratorap/lowlevel_init.S
@@ -0,0 +1,213 @@
+/*
+ * 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/platform.S b/board/integratorap/memsetup.S
index 480e040cd0d..dfdc7848fd1 100644
--- a/board/integratorap/platform.S
+++ b/board/integratorap/memsetup.S
@@ -1,8 +1,5 @@
/*
- * Board specific setup info
- *
- * (C) Copyright 2004, ARM Ltd.
- * Philippe Robin, <philippe.robin@arm.com>
+ * Memory setup for integratorAP
*
* See file CREDITS for list of people who contributed to this
* project.
@@ -22,12 +19,11 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*/
+/*
+ * Memory setup
+ * - the reset defaults are assumed sufficient
+ */
-#include <config.h>
-#include <version.h>
-
-.globl platformsetup
-platformsetup:
-
- /* All done by Integrator's boot monitor! */
- mov pc, lr
+.globl memsetup
+memsetup:
+ mov pc,lr
diff --git a/board/integratorap/split_by_variant.sh b/board/integratorap/split_by_variant.sh
new file mode 100755
index 00000000000..9f71babf35d
--- /dev/null
+++ b/board/integratorap/split_by_variant.sh
@@ -0,0 +1,116 @@
+#!/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
+mv tmp.fil ./include/config.h
+# ---------------------------------------------------------
+# Ensure correct core object loaded first in U-Boot image
+# ---------------------------------------------------------
+sed -r 's/CPU_FILE/cpu\/'$cpu'\/start.o/; s/#.*//' board/integratorap/u-boot.lds.template > 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
new file mode 100644
index 00000000000..0ec8087258a
--- /dev/null
+++ b/board/integratorap/u-boot.lds.template
@@ -0,0 +1,53 @@
+/*
+ * (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
index 9c97237e5e7..3d589fcd5ad 100644
--- a/board/integratorcp/Makefile
+++ b/board/integratorcp/Makefile
@@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk
LIB = lib$(BOARD).a
OBJS := integratorcp.o flash.o
-SOBJS := platform.o
+SOBJS := lowlevel_init.o memsetup.o
$(LIB): $(OBJS) $(SOBJS)
$(AR) crv $@ $^
diff --git a/board/integratorcp/integratorcp.c b/board/integratorcp/integratorcp.c
index 6fe8f05babb..216876b469d 100644
--- a/board/integratorcp/integratorcp.c
+++ b/board/integratorcp/integratorcp.c
@@ -24,7 +24,7 @@
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
@@ -42,19 +42,12 @@ void peripheral_power_enable (void);
#if defined(CONFIG_SHOW_BOOT_PROGRESS)
void show_boot_progress(int progress)
{
- printf("Boot reached stage %d\n", 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
*/
@@ -71,6 +64,11 @@ int board_init (void)
gd->flags = 0;
+#ifdef CONFIG_CM_REMAP
+extern void cm_remap(void);
+ cm_remap(); /* remaps writeable memory to 0x00000000 */
+#endif
+
icache_enable ();
flash__init ();
@@ -95,7 +93,7 @@ void flash__init (void)
/*************************************************************
Routine:ether__init
Description: take the Ethernet controller out of reset and wait
- for the EEPROM load to complete.
+ for the EEPROM load to complete.
*************************************************************/
void ether__init (void)
{
@@ -107,5 +105,172 @@ void ether__init (void)
******************************/
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;
+
+#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
new file mode 100644
index 00000000000..18f7d2eaebe
--- /dev/null
+++ b/board/integratorcp/lowlevel_init.S
@@ -0,0 +1,214 @@
+/*
+ * 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/platform.S b/board/integratorcp/memsetup.S
index c02051b50ae..dfdc7848fd1 100644
--- a/board/integratorcp/platform.S
+++ b/board/integratorcp/memsetup.S
@@ -1,8 +1,5 @@
/*
- * Board specific setup info
- *
- * (C) Copyright 2003, ARM Ltd.
- * Philippe Robin, <philippe.robin@arm.com>
+ * Memory setup for integratorAP
*
* See file CREDITS for list of people who contributed to this
* project.
@@ -22,12 +19,11 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*/
+/*
+ * Memory setup
+ * - the reset defaults are assumed sufficient
+ */
-#include <config.h>
-#include <version.h>
-
-.globl platformsetup
-platformsetup:
-
- /* All done by IntegratorCP's boot monitor! */
- mov pc, lr
+.globl memsetup
+memsetup:
+ mov pc,lr
diff --git a/board/integratorcp/split_by_variant.sh b/board/integratorcp/split_by_variant.sh
new file mode 100755
index 00000000000..3a354339d7c
--- /dev/null
+++ b/board/integratorcp/split_by_variant.sh
@@ -0,0 +1,111 @@
+#!/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
+mv tmp.fil ./include/config.h
+# ---------------------------------------------------------
+# Ensure correct core object loaded first in U-Boot image
+# ---------------------------------------------------------
+sed -r 's/CPU_FILE/cpu\/'$cpu'\/start.o/; s/#.*//' board/integratorcp/u-boot.lds.template > 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
new file mode 100644
index 00000000000..0ec8087258a
--- /dev/null
+++ b/board/integratorcp/u-boot.lds.template
@@ -0,0 +1,53 @@
+/*
+ * (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/ip860.c b/board/ip860/ip860.c
index 5b634e459f5..9dd809b6782 100644
--- a/board/ip860/ip860.c
+++ b/board/ip860/ip860.c
@@ -114,10 +114,10 @@ int checkboard (void)
puts ("Board: ");
- i = getenv_r ("serial#", buf, sizeof (buf));
+ i = getenv_r ("serial#", (char *)buf, sizeof (buf));
s = (i > 0) ? buf : NULL;
- if (!s || strncmp (s, "IP860", 5)) {
+ if (!s || strncmp ((char *)s, "IP860", 5)) {
puts ("### No HW ID - assuming IP860");
} else {
for (e = s; *e; ++e) {
@@ -190,9 +190,9 @@ long int initdram (int board_type)
* Check SDRAM Memory Size
*/
if (ip860_get_dram_size() == 16)
- size = dram_size (refresh_val | 0x00804114, (ulong *)SDRAM_BASE, SDRAM_MAX_SIZE);
+ size = dram_size (refresh_val | 0x00804114, SDRAM_BASE, SDRAM_MAX_SIZE);
else
- size = dram_size (refresh_val | 0x00906114, (ulong *)SDRAM_BASE, SDRAM_MAX_SIZE);
+ size = dram_size (refresh_val | 0x00906114, SDRAM_BASE, SDRAM_MAX_SIZE);
udelay (1000);
diff --git a/board/ip860/u-boot.lds b/board/ip860/u-boot.lds
index d196731a803..8cb25044357 100644
--- a/board/ip860/u-boot.lds
+++ b/board/ip860/u-boot.lds
@@ -77,6 +77,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -109,11 +110,13 @@ SECTIONS
_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 = .;
diff --git a/board/ip860/u-boot.lds.debug b/board/ip860/u-boot.lds.debug
index b4d65792643..43d2b3bd605 100644
--- a/board/ip860/u-boot.lds.debug
+++ b/board/ip860/u-boot.lds.debug
@@ -75,6 +75,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/iphase4539/iphase4539.c b/board/iphase4539/iphase4539.c
index e50250e4567..0ca9cf5137e 100644
--- a/board/iphase4539/iphase4539.c
+++ b/board/iphase4539/iphase4539.c
@@ -342,7 +342,7 @@ int hwc_serial_number (void)
{
int sn = -1;
- if (!seeprom_read (0xa0, (char *) &sn, sizeof (sn))) {
+ if (!seeprom_read (0xa0, (uchar *) &sn, sizeof (sn))) {
sn = cpu_to_le32 (sn);
}
return sn;
@@ -351,7 +351,7 @@ int hwc_mac_address (char *str)
{
char mac[6];
- if (!seeprom_read (0xb0, mac, sizeof (mac))) {
+ 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 {
diff --git a/board/iphase4539/u-boot.lds b/board/iphase4539/u-boot.lds
index 61fb15c6a67..4ea01eab661 100644
--- a/board/iphase4539/u-boot.lds
+++ b/board/iphase4539/u-boot.lds
@@ -61,6 +61,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -93,11 +94,13 @@ SECTIONS
_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 = .;
diff --git a/board/ispan/ispan.c b/board/ispan/ispan.c
index fd348996212..d39b8cd5335 100644
--- a/board/ispan/ispan.c
+++ b/board/ispan/ispan.c
@@ -290,7 +290,7 @@ static int hwc_serial_number (void)
{
int sn = -1;
- if (!seeprom_read (0xa0, (char *) &sn, sizeof (sn))) {
+ if (!seeprom_read (0xa0, (uchar *) &sn, sizeof (sn))) {
sn = cpu_to_le32 (sn);
}
return sn;
@@ -300,7 +300,7 @@ static int hwc_mac_address (char *str)
{
char mac[6];
- if (!seeprom_read (0xb0, mac, sizeof (mac))) {
+ if (!seeprom_read (0xb0, (uchar *)mac, sizeof (mac))) {
sprintf (str, "%02X:%02X:%02X:%02X:%02X:%02X",
mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
} else {
diff --git a/board/ispan/u-boot.lds b/board/ispan/u-boot.lds
index 098c0464cc8..bf8048d27ec 100644
--- a/board/ispan/u-boot.lds
+++ b/board/ispan/u-boot.lds
@@ -60,6 +60,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -92,11 +93,13 @@ SECTIONS
_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 = .;
diff --git a/board/ivm/ivm.c b/board/ivm/ivm.c
index cb661c9d28d..7927ea9a502 100644
--- a/board/ivm/ivm.c
+++ b/board/ivm/ivm.c
@@ -251,7 +251,7 @@ long int initdram (int board_type)
* Check Bank 0 Memory Size for re-configuration
*/
size_b0 =
- dram_size (CFG_MBMR_8COL, (ulong *) SDRAM_BASE3_PRELIM,
+ dram_size (CFG_MBMR_8COL, (long *) SDRAM_BASE3_PRELIM,
SDRAM_MAX_SIZE);
memctl->memc_mbmr = CFG_MBMR_8COL | MBMR_PTBE;
diff --git a/board/ivm/u-boot.lds b/board/ivm/u-boot.lds
index ea4fc8f60ae..fdeabc59e79 100644
--- a/board/ivm/u-boot.lds
+++ b/board/ivm/u-boot.lds
@@ -66,6 +66,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -98,11 +99,13 @@ SECTIONS
_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 = .;
diff --git a/board/ivm/u-boot.lds.debug b/board/ivm/u-boot.lds.debug
index 7b53217071b..3214f3f0c86 100644
--- a/board/ivm/u-boot.lds.debug
+++ b/board/ivm/u-boot.lds.debug
@@ -75,6 +75,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/ixdp425/ixdp425.c b/board/ixdp425/ixdp425.c
index 80553ba015a..c04626a3465 100644
--- a/board/ixdp425/ixdp425.c
+++ b/board/ixdp425/ixdp425.c
@@ -75,6 +75,7 @@ int dram_init (void)
/**********************************************************/
extern struct pci_controller hose;
+extern void pci_ixp_init(struct pci_controller * hose);
void pci_init_board(void)
{
diff --git a/board/ixdp425/u-boot.lds b/board/ixdp425/u-boot.lds
index 91ef0302b3a..e2ceac7227c 100644
--- a/board/ixdp425/u-boot.lds
+++ b/board/ixdp425/u-boot.lds
@@ -44,6 +44,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/jse/u-boot.lds b/board/jse/u-boot.lds
index 3e54af7d020..60c111539d4 100644
--- a/board/jse/u-boot.lds
+++ b/board/jse/u-boot.lds
@@ -79,6 +79,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -111,11 +112,13 @@ SECTIONS
_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 = .;
diff --git a/board/kb9202/Makefile b/board/kb9202/Makefile
new file mode 100644
index 00000000000..f36d88dc3f5
--- /dev/null
+++ b/board/kb9202/Makefile
@@ -0,0 +1,49 @@
+#
+# (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
+#
+# Adapted for KwikByte KB920x boards - APR2005
+#
+#
+
+include $(TOPDIR)/config.mk
+
+LIB = lib$(BOARD).a
+
+OBJS := kb9202.o
+
+$(LIB): $(OBJS) $(SOBJS)
+ $(AR) crv $@ $(OBJS) $(SOBJS)
+
+clean:
+ rm -f $(SOBJS) $(OBJS)
+
+distclean: clean
+ rm -f $(LIB) core *.bak .depend
+
+#########################################################################
+
+.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
+ $(CC) -M $(CPPFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
+
+-include .depend
+
+#########################################################################
diff --git a/board/kb9202/config.mk b/board/kb9202/config.mk
new file mode 100644
index 00000000000..9ce161e55f0
--- /dev/null
+++ b/board/kb9202/config.mk
@@ -0,0 +1 @@
+TEXT_BASE = 0x21f00000
diff --git a/board/kb9202/kb9202.c b/board/kb9202/kb9202.c
new file mode 100644
index 00000000000..4a7cf77ba52
--- /dev/null
+++ b/board/kb9202/kb9202.c
@@ -0,0 +1,97 @@
+/*
+ * (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
+ */
+
+/*
+ * Adapted for KwikByte KB920x board from at91rm9200dk.c: 22APR2005
+ */
+
+#include <common.h>
+#include <asm/arch/AT91RM9200.h>
+#include <at91rm9200_net.h>
+#include <lxt971a.h>
+
+/* ------------------------------------------------------------------------- */
+/*
+ * Miscelaneous platform dependent initialisations
+ */
+
+void lowlevel_init(void) {
+ /* Required by assembly functions - do nothing */
+}
+
+int board_init (void)
+{
+ DECLARE_GLOBAL_DATA_PTR;
+
+ /* Enable Ctrlc */
+ console_init_f ();
+
+ /* memory and cpu-speed are setup before relocation */
+ /* so we do _nothing_ here */
+
+ gd->bd->bi_arch_number = MACH_TYPE_KB9200;
+
+ /* adress of boot parameters */
+ gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
+
+ return 0;
+}
+
+int dram_init (void)
+{
+ DECLARE_GLOBAL_DATA_PTR;
+
+ 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)
+
+unsigned int lxt972_IsPhyConnected (AT91PS_EMAC p_mac);
+UCHAR lxt972_GetLinkSpeed (AT91PS_EMAC p_mac);
+UCHAR lxt972_InitPhy (AT91PS_EMAC p_mac);
+UCHAR lxt972_AutoNegotiate (AT91PS_EMAC p_mac, int *status);
+
+/*
+ * 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 = lxt972_InitPhy;
+ p_phyops->IsPhyConnected = lxt972_IsPhyConnected;
+ p_phyops->GetLinkSpeed = lxt972_GetLinkSpeed;
+ p_phyops->AutoNegotiate = lxt972_AutoNegotiate;
+}
+
+#endif /* CONFIG_COMMANDS & CFG_CMD_NET */
+#endif /* CONFIG_DRIVER_ETHER */
diff --git a/board/integratorcp/u-boot.lds b/board/kb9202/u-boot.lds
index 33931be1277..76df6b2af1d 100644
--- a/board/integratorcp/u-boot.lds
+++ b/board/kb9202/u-boot.lds
@@ -22,20 +22,26 @@
*/
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 :
+ .text :
{
- cpu/arm926ejs/start.o (.text)
+ cpu/arm920t/start.o (.text)
*(.text)
}
+
+ . = ALIGN(4);
.rodata : { *(.rodata) }
+
. = ALIGN(4);
.data : { *(.data) }
+
. = ALIGN(4);
.got : { *(.got) }
diff --git a/board/kup/common/load_sernum_ethaddr.c b/board/kup/common/load_sernum_ethaddr.c
index 39ee124ebc4..b7b74998578 100644
--- a/board/kup/common/load_sernum_ethaddr.c
+++ b/board/kup/common/load_sernum_ethaddr.c
@@ -54,9 +54,9 @@
void load_sernum_ethaddr (void)
{
unsigned char *hwi;
- unsigned char *var;
+ char *var;
unsigned char hwi_stack[CFG_HWINFO_SIZE];
- unsigned char *p;
+ char *p;
hwi = (unsigned char *) (CFG_FLASH_BASE + CFG_HWINFO_OFFSET);
if (*((unsigned long *) hwi) != (unsigned long) CFG_HWINFO_MAGIC) {
@@ -68,11 +68,11 @@ void load_sernum_ethaddr (void)
/*
** ethaddr
*/
- var = strstr (hwi_stack, ETHADDR_TOKEN);
+ var = strstr ((char *)hwi_stack, ETHADDR_TOKEN);
if (var) {
var += sizeof (ETHADDR_TOKEN) - 1;
p = strchr (var, '\r');
- if (p < hwi + CFG_HWINFO_SIZE) {
+ if ((unsigned char *)p < hwi + CFG_HWINFO_SIZE) {
*p = '\0';
setenv ("ethaddr", var);
*p = '\r';
@@ -81,11 +81,11 @@ void load_sernum_ethaddr (void)
/*
** lcd
*/
- var = strstr (hwi_stack, LCD_TOKEN);
+ var = strstr ((char *)hwi_stack, LCD_TOKEN);
if (var) {
var += sizeof (LCD_TOKEN) - 1;
p = strchr (var, '\r');
- if (p < hwi + CFG_HWINFO_SIZE) {
+ if ((unsigned char *)p < hwi + CFG_HWINFO_SIZE) {
*p = '\0';
setenv ("lcd", var);
*p = '\r';
diff --git a/board/kup/kup4k/kup4k.c b/board/kup/kup4k/kup4k.c
index c352c8b6717..e621c436ffd 100644
--- a/board/kup/kup4k/kup4k.c
+++ b/board/kup/kup4k/kup4k.c
@@ -327,7 +327,7 @@ void lcd_logo (bd_t * bd)
int r = 8, g = 8, b = 4;
int r1, g1, b1;
int n;
- uchar tmp[64]; /* long enough for environment variables */
+ char tmp[64]; /* long enough for environment variables */
int tft = 0;
immr->im_cpm.cp_pbpar &= ~(PB_LCD_PWM);
@@ -453,7 +453,7 @@ void lcd_logo (bd_t * bd)
}
/* copy bitmap */
- fb = (char *) (fb_info.VmemAddr);
+ fb = (uchar *) (fb_info.VmemAddr);
memcpy (fb, (uchar *) CONFIG_KUP4K_LOGO, 320 * 240);
}
#endif /* CONFIG_KUP4K_LOGO */
diff --git a/board/kup/kup4k/u-boot.lds b/board/kup/kup4k/u-boot.lds
index 233913633b9..8625999df40 100644
--- a/board/kup/kup4k/u-boot.lds
+++ b/board/kup/kup4k/u-boot.lds
@@ -80,6 +80,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -112,11 +113,13 @@ SECTIONS
_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 = .;
diff --git a/board/kup/kup4k/u-boot.lds.debug b/board/kup/kup4k/u-boot.lds.debug
index 4e369d50ef0..c0cf1cb7476 100644
--- a/board/kup/kup4k/u-boot.lds.debug
+++ b/board/kup/kup4k/u-boot.lds.debug
@@ -74,6 +74,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/kup/kup4x/u-boot.lds b/board/kup/kup4x/u-boot.lds
index 233913633b9..8625999df40 100644
--- a/board/kup/kup4x/u-boot.lds
+++ b/board/kup/kup4x/u-boot.lds
@@ -80,6 +80,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -112,11 +113,13 @@ SECTIONS
_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 = .;
diff --git a/board/kup/kup4x/u-boot.lds.debug b/board/kup/kup4x/u-boot.lds.debug
index 4e369d50ef0..c0cf1cb7476 100644
--- a/board/kup/kup4x/u-boot.lds.debug
+++ b/board/kup/kup4x/u-boot.lds.debug
@@ -74,6 +74,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/lantec/lantec.c b/board/lantec/lantec.c
index aa96a16c515..417dbbb05b0 100644
--- a/board/lantec/lantec.c
+++ b/board/lantec/lantec.c
@@ -171,7 +171,7 @@ long int initdram (int board_type)
* Check Bank 0 Memory Size for re-configuration
*/
size_b0 = dram_size (CFG_MAMR_8COL,
- (ulong *) SDRAM_BASE3_PRELIM, SDRAM_MAX_SIZE);
+ (long *) SDRAM_BASE3_PRELIM, SDRAM_MAX_SIZE);
memctl->memc_mamr = CFG_MAMR_8COL | MAMR_PTAE;
diff --git a/board/lantec/u-boot.lds b/board/lantec/u-boot.lds
index 1f8581ca3d1..29ecabd9b31 100644
--- a/board/lantec/u-boot.lds
+++ b/board/lantec/u-boot.lds
@@ -77,6 +77,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -109,11 +110,13 @@ SECTIONS
_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 = .;
diff --git a/board/lantec/u-boot.lds.debug b/board/lantec/u-boot.lds.debug
index c64087dbe3d..65b25b926a7 100644
--- a/board/lantec/u-boot.lds.debug
+++ b/board/lantec/u-boot.lds.debug
@@ -74,6 +74,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/lart/u-boot.lds b/board/lart/u-boot.lds
index bfb7c38cc89..258bece23cf 100644
--- a/board/lart/u-boot.lds
+++ b/board/lart/u-boot.lds
@@ -44,6 +44,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/logodl/u-boot.lds b/board/logodl/u-boot.lds
index 58c371df06b..f0102391b34 100644
--- a/board/logodl/u-boot.lds
+++ b/board/logodl/u-boot.lds
@@ -44,6 +44,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/lpd7a40x/u-boot.lds b/board/lpd7a40x/u-boot.lds
index 719d8b19fd0..156b871e57b 100644
--- a/board/lpd7a40x/u-boot.lds
+++ b/board/lpd7a40x/u-boot.lds
@@ -45,6 +45,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/lubbock/u-boot.lds b/board/lubbock/u-boot.lds
index 58c371df06b..f0102391b34 100644
--- a/board/lubbock/u-boot.lds
+++ b/board/lubbock/u-boot.lds
@@ -44,6 +44,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/lwmon/README.keybd b/board/lwmon/README.keybd
index 788c8644514..54f0aeb81fb 100644
--- a/board/lwmon/README.keybd
+++ b/board/lwmon/README.keybd
@@ -100,10 +100,10 @@ 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)
+(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
diff --git a/board/lwmon/lwmon.c b/board/lwmon/lwmon.c
index 7cf57788b8b..a174b57b70e 100644
--- a/board/lwmon/lwmon.c
+++ b/board/lwmon/lwmon.c
@@ -266,14 +266,14 @@ long int initdram (int board_type)
*
* try 8 column mode
*/
- size8 = dram_size (CFG_MAMR_8COL, (ulong *)SDRAM_BASE3_PRELIM, SDRAM_MAX_SIZE);
+ 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, (ulong *)SDRAM_BASE3_PRELIM, SDRAM_MAX_SIZE);
+ size9 = dram_size (CFG_MAMR_9COL, (long *)SDRAM_BASE3_PRELIM, SDRAM_MAX_SIZE);
if (size8 < size9) { /* leave configuration at 9 columns */
size_b0 = size9;
@@ -574,11 +574,11 @@ int misc_init_r (void)
DECLARE_GLOBAL_DATA_PTR;
uchar kbd_data[KEYBD_DATALEN];
- uchar keybd_env[2 * KEYBD_DATALEN + 1];
+ char keybd_env[2 * KEYBD_DATALEN + 1];
uchar kbd_init_status = gd->kbd_status >> 8;
uchar kbd_status = gd->kbd_status;
uchar val;
- uchar *str;
+ char *str;
int i;
if (kbd_init_status) {
@@ -617,7 +617,7 @@ int misc_init_r (void)
}
setenv ("keybd", keybd_env);
- str = strdup (key_match (kbd_data)); /* decode keys */
+ 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) ||
@@ -649,11 +649,11 @@ static int compare_magic (uchar *kbd_data, uchar *str)
/* Don't include modifier byte */
memcpy (compare, kbd_data+1, KEYBD_DATALEN-1);
- for (; str != NULL; str = (*nxt) ? nxt+1 : nxt) {
+ for (; str != NULL; str = (*nxt) ? (uchar *)(nxt+1) : (uchar *)nxt) {
uchar c;
int k;
- c = (uchar) simple_strtoul (str, (char **) (&nxt), 16);
+ c = (uchar) simple_strtoul ((char *)str, (char **) (&nxt), 16);
if (str == (uchar *)nxt) { /* invalid character */
break;
@@ -719,9 +719,9 @@ V* Verification: dzu@denx.de
***********************************************************************/
static uchar *key_match (uchar *kbd_data)
{
- uchar magic[sizeof (kbd_magic_prefix) + 1];
+ char magic[sizeof (kbd_magic_prefix) + 1];
uchar *suffix;
- uchar *kbd_magic_keys;
+ char *kbd_magic_keys;
/*
* The following string defines the characters that can pe appended
@@ -737,13 +737,13 @@ static uchar *key_match (uchar *kbd_data)
/* loop over all magic keys;
* use '\0' suffix in case of empty string
*/
- for (suffix=kbd_magic_keys; *suffix || suffix==kbd_magic_keys; ++suffix) {
+ 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, getenv(magic)) == 0) {
- uchar cmd_name[sizeof (kbd_command_prefix) + 1];
+ 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);
@@ -754,7 +754,7 @@ static uchar *key_match (uchar *kbd_data)
cmd_name, cmd ? cmd : "<<NULL>>");
#endif
*kbd_data = *suffix;
- return (cmd);
+ return ((uchar *)cmd);
}
}
#if 0
@@ -863,7 +863,7 @@ V* Verification: dzu@denx.de
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];
+ char keybd_env[2 * KEYBD_DATALEN + 1];
uchar val;
int i;
@@ -1044,7 +1044,7 @@ static int key_pressed(void)
i2c_write (kbd_addr, 0, 0, &val, 1);
i2c_read (kbd_addr, 0, 0, kbd_data, KEYBD_DATALEN);
- return (compare_magic(kbd_data, CONFIG_MODEM_KEY_MAGIC) == 0);
+ return (compare_magic(kbd_data, (uchar *)CONFIG_MODEM_KEY_MAGIC) == 0);
}
#endif /* CONFIG_MODEM_SUPPORT */
@@ -1063,6 +1063,6 @@ int post_hotkeys_pressed(void)
i2c_write (kbd_addr, 0, 0, &val, 1);
i2c_read (kbd_addr, 0, 0, kbd_data, KEYBD_DATALEN);
- return (compare_magic(kbd_data, CONFIG_POST_KEY_MAGIC) == 0);
+ return (compare_magic(kbd_data, (uchar *)CONFIG_POST_KEY_MAGIC) == 0);
}
#endif
diff --git a/board/lwmon/u-boot.lds b/board/lwmon/u-boot.lds
index fffa79eab11..6505d455619 100644
--- a/board/lwmon/u-boot.lds
+++ b/board/lwmon/u-boot.lds
@@ -66,6 +66,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -98,11 +99,13 @@ SECTIONS
_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 = .;
diff --git a/board/lwmon/u-boot.lds.debug b/board/lwmon/u-boot.lds.debug
index 153286be44d..828afbbced1 100644
--- a/board/lwmon/u-boot.lds.debug
+++ b/board/lwmon/u-boot.lds.debug
@@ -75,6 +75,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/m5272c3/u-boot.lds b/board/m5272c3/u-boot.lds
index f4aa16a72d6..f7dc0709040 100644
--- a/board/m5272c3/u-boot.lds
+++ b/board/m5272c3/u-boot.lds
@@ -110,11 +110,13 @@ SECTIONS
_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 = .;
diff --git a/board/m5282evb/u-boot.lds b/board/m5282evb/u-boot.lds
index d790018d2dd..c461d20e518 100644
--- a/board/m5282evb/u-boot.lds
+++ b/board/m5282evb/u-boot.lds
@@ -110,10 +110,12 @@ SECTIONS
_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 = .;
diff --git a/board/mbx8xx/u-boot.lds b/board/mbx8xx/u-boot.lds
index c1ee544bf2c..1400cea157e 100644
--- a/board/mbx8xx/u-boot.lds
+++ b/board/mbx8xx/u-boot.lds
@@ -66,6 +66,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -98,11 +99,13 @@ SECTIONS
_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 = .;
diff --git a/board/mbx8xx/u-boot.lds.debug b/board/mbx8xx/u-boot.lds.debug
index 0245f78fc8a..650572d4d05 100644
--- a/board/mbx8xx/u-boot.lds.debug
+++ b/board/mbx8xx/u-boot.lds.debug
@@ -75,6 +75,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/ml2/flash.c b/board/ml2/flash.c
index 4f805a663b1..87cb1ff18e1 100644
--- a/board/ml2/flash.c
+++ b/board/ml2/flash.c
@@ -216,7 +216,7 @@ int flash_erase (flash_info_t *info, int s_first, int s_last) {
return rc;
}
-volatile static int write_word (flash_info_t *info, ulong dest, unsigned long long data) {
+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;
diff --git a/board/ml2/ml2.c b/board/ml2/ml2.c
index ff5f8167962..f32e512d4f3 100644
--- a/board/ml2/ml2.c
+++ b/board/ml2/ml2.c
@@ -30,8 +30,8 @@ int board_early_init_f (void)
int checkboard (void)
{
- unsigned char *s = getenv ("serial#");
- unsigned char *e;
+ char *s = getenv ("serial#");
+ char *e;
if (!s || strncmp (s, "ML2", 9)) {
printf ("### No HW ID - assuming ML2");
diff --git a/board/ml2/u-boot.lds b/board/ml2/u-boot.lds
index 07275d3bd7a..f8e9e33748a 100644
--- a/board/ml2/u-boot.lds
+++ b/board/ml2/u-boot.lds
@@ -64,7 +64,7 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
+ cpu/ppc4xx/4xx_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -84,6 +84,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -116,11 +117,13 @@ SECTIONS
_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 = .;
diff --git a/board/ml2/u-boot.lds.debug b/board/ml2/u-boot.lds.debug
index d483424ad6d..1608f8cdaa3 100644
--- a/board/ml2/u-boot.lds.debug
+++ b/board/ml2/u-boot.lds.debug
@@ -74,6 +74,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/modnet50/u-boot.lds b/board/modnet50/u-boot.lds
index 98997904d48..5b70a40aab6 100644
--- a/board/modnet50/u-boot.lds
+++ b/board/modnet50/u-boot.lds
@@ -44,6 +44,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/mousse/README b/board/mousse/README
index 61aacce5db0..d5dda7a8e73 100644
--- a/board/mousse/README
+++ b/board/mousse/README
@@ -132,7 +132,7 @@ pins 1-2 and follow the procedure below to FLASH a bootrom
tftp 100000 u-boot.bin
protect off FFF00000 FFF7FFFF
erase FFF00000 FFF7FFFF
-cp.b 100000 FFF00000 \$(filesize)\
+cp.b 100000 FFF00000 \${filesize}\
Here is an example:
@@ -169,7 +169,7 @@ 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)\
+cp.b 100000 FFF80000 \${filesize}\
C. FLASH KERNEL REGION (960KB)
@@ -183,7 +183,7 @@ 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)\
+cp.b 100000 FFE10000 \${filesize}\
reset
Here is an example:
diff --git a/board/mousse/u-boot.lds b/board/mousse/u-boot.lds
index 82ef5fe15a3..57358b8a49d 100644
--- a/board/mousse/u-boot.lds
+++ b/board/mousse/u-boot.lds
@@ -66,6 +66,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -98,11 +99,13 @@ SECTIONS
_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 = .;
diff --git a/board/mousse/u-boot.lds.rom b/board/mousse/u-boot.lds.rom
index 9b46554b979..5a5722e81a3 100644
--- a/board/mousse/u-boot.lds.rom
+++ b/board/mousse/u-boot.lds.rom
@@ -70,6 +70,8 @@ SECTIONS
. = ALIGN(16);
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/mp2usb/Makefile b/board/mp2usb/Makefile
new file mode 100644
index 00000000000..b6ea3cf4739
--- /dev/null
+++ b/board/mp2usb/Makefile
@@ -0,0 +1,46 @@
+#
+# (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 $(TOPDIR)/config.mk
+
+LIB = lib$(BOARD).a
+
+OBJS := mp2usb.o flash.o
+
+$(LIB): $(OBJS) $(SOBJS)
+ $(AR) crv $@ $(OBJS) $(SOBJS)
+
+clean:
+ rm -f $(SOBJS) $(OBJS)
+
+distclean: clean
+ rm -f $(LIB) core *.bak .depend
+
+#########################################################################
+
+.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
+ $(CC) -M $(CPPFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
+
+-include .depend
+
+#########################################################################
diff --git a/board/mp2usb/config.mk b/board/mp2usb/config.mk
new file mode 100644
index 00000000000..e299bfd5ef4
--- /dev/null
+++ b/board/mp2usb/config.mk
@@ -0,0 +1,3 @@
+TEXT_BASE = 0x27F00000
+## For testing: load at 0x20100000 and "go" at 0x201000A4
+#TEXT_BASE = 0x20100000
diff --git a/board/omap5912osk/flash.c b/board/mp2usb/flash.c
index fd6b9c0bbd6..89ced163bb7 100644
--- a/board/omap5912osk/flash.c
+++ b/board/mp2usb/flash.c
@@ -2,16 +2,11 @@
* (C) Copyright 2001
* Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
*
- * (C) Copyright 2001-2004
+ * (C) Copyright 2001
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
*
- * (C) Copyright 2003
- * Texas Instruments, <www.ti.com>
- * Kshitij Gupta <Kshitij@ti.com>
-
- * (C) Copyright 2004
- * Texas Instruments <www.ti.com>
- * Rishi Bhattacharya
+ * 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.
@@ -23,7 +18,7 @@
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
@@ -35,55 +30,44 @@
#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 */
+#define CFG_MAX_FLASH_BANKS 1
+#define PHYS_FLASH_SECT_SIZE 0x00020000 /* 128 KB sectors (x1) */
-/* Board support for 1 or 2 flash devices */
-#undef FLASH_PORT_WIDTH32
-#define FLASH_PORT_WIDTH16
+flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-#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 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 */
-};
-
+/* 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
*/
-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);
+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);
/*-----------------------------------------------------------------------
*/
@@ -92,6 +76,7 @@ unsigned long flash_init (void)
{
int i;
ulong size = 0;
+
for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
switch (i) {
case 0:
@@ -107,46 +92,39 @@ unsigned long flash_init (void)
/* Protect monitor and environment sectors
*/
- flash_protect (FLAG_PROTECT_SET,
+ flash_protect ( FLAG_PROTECT_SET,
CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1, &flash_info[0]);
+ CFG_FLASH_BASE + monitor_flash_len - 1,
+ &flash_info[0] );
- flash_protect (FLAG_PROTECT_SET,
+ flash_protect ( FLAG_PROTECT_SET,
CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
+ CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0] );
return size;
}
/*-----------------------------------------------------------------------
*/
-static void flash_get_offsets (ulong base, flash_info_t * info)
+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;
- }
+ info->start[i] = base + (i * PHYS_FLASH_SECT_SIZE);
+ info->protect[i] = 0;
}
}
}
/*-----------------------------------------------------------------------
*/
-void flash_print_info (flash_info_t * info)
+void flash_print_info (flash_info_t *info)
{
int i;
@@ -165,11 +143,11 @@ void flash_print_info (flash_info_t * info)
}
switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F256L18T:
- printf ("FLASH 28F256L18T\n");
+ case FLASH_28F640J3A:
+ printf ("28F640J3A\n");
break;
case FLASH_28F128J3A:
- printf ("FLASH 28F128J3A\n");
+ printf ("28F128J3A\n");
break;
default:
printf ("Unknown Chip Type\n");
@@ -184,7 +162,8 @@ void flash_print_info (flash_info_t * info)
if ((i % 5) == 0)
printf ("\n ");
printf (" %08lX%s",
- info->start[i], info->protect[i] ? " (RO)" : " ");
+ info->start[i],
+ info->protect[i] ? " (RO)" : " ");
}
printf ("\n");
return;
@@ -193,7 +172,7 @@ void flash_print_info (flash_info_t * info)
/*
* The following code cannot be run from FLASH!
*/
-static ulong flash_get_size (FPW * addr, flash_info_t * info)
+static ulong flash_get_size (FPW *addr, flash_info_t *info)
{
volatile FPW value;
@@ -210,41 +189,31 @@ static ulong flash_get_size (FPW * addr, flash_info_t * info)
case (FPW) INTEL_MANUFACT:
info->flash_id = FLASH_MAN_INTEL;
break;
- case (FPW) MT2_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 */
+ addr[0] = (FPW) INTEL_RESET; /* restore read mode */
+ return (0); /* no or unknown flash */
}
mb ();
- value = addr[1]; /* device ID */
+ 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 = 259;
- info->size = 0x02000000;
- debug ("Intel StrataFlash 28F256K3C device initialized\n");
- break; /* => 32 MB */
-
- case (FPW) (INTEL_ID_28F128J3A):
- info->flash_id +=FLASH_28F128J3A;
- info->sector_count = 259;
- info->size = 0x02000000;
- debug ("Micron StrataFlash MT28F128J3 device initialized\n");
- break; /* => 32 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;
@@ -253,47 +222,25 @@ static ulong flash_get_size (FPW * addr, flash_info_t * info)
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);
info->sector_count = CFG_MAX_FLASH_SECT;
}
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
+ addr[0] = (FPW) INTEL_RESET; /* 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
-
-FPW status;
-
- *addr = (FPW) 0x00500050; /* clear status register */
-
- /* this sends the clear lock bit command */
- *addr = (FPW) 0x00600060;
- *addr = (FPW) 0x00D000D0;
-
- while (((status =*addr) & (FPW) 0x00800080) != (FPW) 0x00800080);
-
- *addr = (FPW) 0x00FF00FF;
-
-}
-
-
/*-----------------------------------------------------------------------
*/
-int flash_erase (flash_info_t * info, int s_first, int s_last)
+int flash_erase (flash_info_t *info, int s_first, int s_last)
{
- int flag, prot, sect;
+ 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) {
@@ -307,7 +254,7 @@ int flash_erase (flash_info_t * info, int s_first, int s_last)
type = (info->flash_id & FLASH_VENDMASK);
if ((type != FLASH_MAN_INTEL)) {
printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
+ info->flash_id);
return 1;
}
@@ -320,56 +267,64 @@ int flash_erase (flash_info_t * info, int s_first, int s_last)
if (prot) {
printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
+ 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 */
- flag = disable_interrupts ();
+ iflag = disable_interrupts ();
/* Start erase on unprotected sectors */
for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
+ 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 */
+ *addr = (FPW) INTEL_CLEAR; /* clear status register */
+ *addr = (FPW) INTEL_ERASE; /* erase setup */
+ *addr = (FPW) INTEL_CONFIRM; /* erase confirm */
- while (((status =
- *addr) & (FPW) 0x00800080) !=
- (FPW) 0x00800080) {
- if (get_timer_masked () >
- CFG_FLASH_ERASE_TOUT) {
+ while (((status = *addr) & (FPW) INTEL_FINISHED) != (FPW) INTEL_FINISHED) {
+ if (get_timer_masked () > CFG_FLASH_ERASE_TOUT) {
printf ("Timeout\n");
- /* suspend erase */
- *addr = (FPW) 0x00B000B0;
- /* reset to read mode */
- *addr = (FPW) 0x00FF00FF;
+ *addr = (FPW) INTEL_SUSPEND; /* suspend erase */
+ *addr = (FPW) INTEL_RESET; /* reset to read mode */
rcode = 1;
break;
}
}
- /* clear status register cmd. */
- *addr = (FPW) 0x00500050;
- *addr = (FPW) 0x00FF00FF;/* resest to read mode */
+ *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;
}
@@ -381,7 +336,7 @@ int flash_erase (flash_info_t * info, int s_first, int s_last)
* 4 - Flash not identified
*/
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
+int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
{
ulong cp, wp;
FPW data;
@@ -390,14 +345,10 @@ int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
if (info->flash_id == FLASH_UNKNOWN) {
return 4;
}
-/* get lower word aligned address */
-#ifdef FLASH_PORT_WIDTH16
+
+ /* get lower word aligned address */
wp = (addr & ~1);
port_width = 2;
-#else
- wp = (addr & ~3);
- port_width = 4;
-#endif
/*
* handle unaligned start bytes
@@ -467,33 +418,51 @@ int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
* 1 - write timeout
* 2 - Flash not erased
*/
-static int write_data (flash_info_t * info, ulong dest, FPW data)
+static int write_data (flash_info_t *info, ulong dest, FPW data)
{
FPWV *addr = (FPWV *) dest;
ulong status;
- int flag;
+ int cflag, iflag;
/* Check if Flash is (sufficiently) erased */
if ((*addr & data) != data) {
- printf ("not erased at %08lx (%x)\n", (ulong) addr, *addr);
+ 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 */
- flag = disable_interrupts ();
- *addr = (FPW) 0x00400040; /* write setup */
+ 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) 0x00800080) != (FPW) 0x00800080) {
+ while (((status = *addr) & (FPW) INTEL_FINISHED) != (FPW) INTEL_FINISHED) {
if (get_timer_masked () > CFG_FLASH_WRITE_TOUT) {
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
+ *addr = (FPW) INTEL_RESET; /* restore read mode */
return (1);
}
}
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
+
+ *addr = (FPW) INTEL_RESET; /* restore read mode */
+
+ if (iflag)
+ enable_interrupts ();
+
+ if (cflag)
+ icache_enable ();
+
return (0);
}
@@ -505,3 +474,79 @@ void inline spin_wheel (void)
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
new file mode 100644
index 00000000000..e75be1e3aa8
--- /dev/null
+++ b/board/mp2usb/mp2usb.c
@@ -0,0 +1,88 @@
+/*
+ * (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>
+
+/* ------------------------------------------------------------------------- */
+/*
+ * Miscelaneous platform dependent initialisations
+ */
+
+int board_init (void)
+{
+ DECLARE_GLOBAL_DATA_PTR;
+
+ /* 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)
+{
+ DECLARE_GLOBAL_DATA_PTR;
+
+ 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
new file mode 100644
index 00000000000..76df6b2af1d
--- /dev/null
+++ b/board/mp2usb/u-boot.lds
@@ -0,0 +1,56 @@
+/*
+ * (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/mpc8260ads.c b/board/mpc8260ads/mpc8260ads.c
index fea9173cdd9..93550e2ad01 100644
--- a/board/mpc8260ads/mpc8260ads.c
+++ b/board/mpc8260ads/mpc8260ads.c
@@ -13,6 +13,10 @@
* 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.
*
@@ -39,6 +43,9 @@
#include <i2c.h>
#include <spd.h>
#include <miiphy.h>
+#ifdef CONFIG_PCI
+#include <pci.h>
+#endif
/*
* I/O Port configuration table
@@ -231,8 +238,9 @@ void reset_phy (void)
* Do not bypass Rx/Tx (de)scrambler (fix configuration error)
* Enable autonegotiation.
*/
- miiphy_write(CFG_PHY_ADDR, 16, 0x610);
- miiphy_write(CFG_PHY_ADDR, PHY_BMCR, PHY_BMCR_AUTON | PHY_BMCR_RST_NEG);
+ 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)
@@ -240,17 +248,36 @@ void reset_phy (void)
* to advertise all capabilities, including 100Mb/s, and
* restart autonegotiation.
*/
- miiphy_write(CFG_PHY_ADDR, PHY_ANAR, 0x01E1); /* Advertise all capabilities */
- miiphy_write(CFG_PHY_ADDR, PHY_DCR, 0x0000); /* Do not bypass Rx/Tx (de)scrambler */
- miiphy_write(CFG_PHY_ADDR, PHY_BMCR, PHY_BMCR_AUTON | PHY_BMCR_RST_NEG);
+
+ /* 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
@@ -506,3 +533,14 @@ int checkboard (void)
#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
index 098c0464cc8..bf8048d27ec 100644
--- a/board/mpc8260ads/u-boot.lds
+++ b/board/mpc8260ads/u-boot.lds
@@ -60,6 +60,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -92,11 +93,13 @@ SECTIONS
_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 = .;
diff --git a/board/mpc8266ads/u-boot.lds b/board/mpc8266ads/u-boot.lds
index d0b1e041860..2220758cb93 100644
--- a/board/mpc8266ads/u-boot.lds
+++ b/board/mpc8266ads/u-boot.lds
@@ -61,6 +61,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -93,10 +94,12 @@ SECTIONS
_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 = .;
diff --git a/board/mpc8349ads/u-boot.lds b/board/mpc8349ads/u-boot.lds
index 12c2d6f13de..020cfa66f83 100644
--- a/board/mpc8349ads/u-boot.lds
+++ b/board/mpc8349ads/u-boot.lds
@@ -57,6 +57,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -89,11 +90,13 @@ SECTIONS
_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 = .;
diff --git a/board/mpc8540ads/u-boot.lds b/board/mpc8540ads/u-boot.lds
index 85852d59d3f..e7a88cfa449 100644
--- a/board/mpc8540ads/u-boot.lds
+++ b/board/mpc8540ads/u-boot.lds
@@ -87,6 +87,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -119,10 +120,12 @@ SECTIONS
_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 = .;
diff --git a/board/mpc8540eval/u-boot.lds b/board/mpc8540eval/u-boot.lds
index 2479af1516e..0755d0166b8 100644
--- a/board/mpc8540eval/u-boot.lds
+++ b/board/mpc8540eval/u-boot.lds
@@ -78,6 +78,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -110,10 +111,12 @@ SECTIONS
_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 = .;
diff --git a/board/mpc8560ads/mpc8560ads.c b/board/mpc8560ads/mpc8560ads.c
index 9accc5cd333..25f69a0bf5d 100644
--- a/board/mpc8560ads/mpc8560ads.c
+++ b/board/mpc8560ads/mpc8560ads.c
@@ -237,9 +237,14 @@ void reset_phy (void)
udelay(1000);
#endif
#if defined(CONFIG_MII) && defined(CONFIG_ETHER_ON_FCC)
- miiphy_reset(0x0); /* reset PHY */
- miiphy_write(0, PHY_MIPSCR, 0xf028); /* change PHY address to 0x02 */
- miiphy_write(0x02, PHY_BMCR, PHY_BMCR_AUTON | PHY_BMCR_RST_NEG);
+ /* 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 */
}
diff --git a/board/mpc8560ads/u-boot.lds b/board/mpc8560ads/u-boot.lds
index c307d638526..8dcee1f1015 100644
--- a/board/mpc8560ads/u-boot.lds
+++ b/board/mpc8560ads/u-boot.lds
@@ -91,6 +91,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -123,10 +124,12 @@ SECTIONS
_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 = .;
diff --git a/board/mpl/common/common_util.c b/board/mpl/common/common_util.c
index e14bccaced1..b331d6ec474 100644
--- a/board/mpl/common/common_util.c
+++ b/board/mpl/common/common_util.c
@@ -163,7 +163,7 @@ mpl_prg(uchar *src, ulong size)
#endif
printf("flash erased, programming from 0x%lx 0x%lx Bytes\n",
(ulong)src, size);
- if ((rc = flash_write (src, start, size)) != 0) {
+ if ((rc = flash_write ((char *)src, start, size)) != 0) {
puts("ERROR ");
flash_perror(rc);
return (1);
@@ -200,14 +200,14 @@ mpl_prg_image(uchar *ld_addr)
len = sizeof(image_header_t);
checksum = ntohl(hdr->ih_hcrc);
hdr->ih_hcrc = 0;
- if (crc32 (0, (char *)data, len) != checksum) {
+ 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, (char *)data, len) != ntohl(hdr->ih_dcrc)) {
+ if (crc32 (0, (uchar *)data, len) != ntohl(hdr->ih_dcrc)) {
puts("Bad Data CRC\n");
return 1;
}
@@ -376,8 +376,8 @@ void copy_old_env(ulong size)
} while(len > off);
name=&name_buf[0];
value=&value_buf[0];
- if(strncmp(name,"baudrate",8)!=0) {
- setenv(name,value);
+ if(strncmp((char *)name,"baudrate",8)!=0) {
+ setenv((char *)name,(char *)value);
}
}
@@ -387,7 +387,7 @@ void copy_old_env(ulong size)
void check_env(void)
{
- unsigned char *s;
+ char *s;
int i=0;
char buf[32];
backup_t back;
@@ -592,7 +592,7 @@ void video_get_info_str (int line_number, char *info)
char buf[64];
char tmp[16];
char cpustr[16];
- unsigned char *s, *e, bc;
+ char *s, *e, bc;
switch (line_number)
{
case 2:
diff --git a/board/mpl/common/isa.c b/board/mpl/common/isa.c
index 793c34fe2fe..51b2773c71a 100644
--- a/board/mpl/common/isa.c
+++ b/board/mpl/common/isa.c
@@ -155,7 +155,7 @@ void isa_write_table(SIO_LOGDEV_TABLE *ldt,unsigned char ldev)
void isa_sio_loadtable(void)
{
- unsigned char *s = getenv("floppy");
+ char *s = getenv("floppy");
/* setup Floppy device 0*/
isa_write_table((SIO_LOGDEV_TABLE *)&sio_fdc,0);
/* setup parallel port device 3 */
diff --git a/board/mpl/common/kbd.c b/board/mpl/common/kbd.c
index 9bd1ff94d46..7724e241d17 100644
--- a/board/mpl/common/kbd.c
+++ b/board/mpl/common/kbd.c
@@ -613,7 +613,7 @@ char * kbd_initialize(void)
| KBD_MODE_DISABLE_MOUSE
| KBD_MODE_KCC);
- /* ibm powerpc portables need this to use scan-code set 1 -- Cort */
+ /* 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)) {
/*
diff --git a/board/mpl/common/pci_parts.h b/board/mpl/common/pci_parts.h
index a57b1215619..60008e2b240 100644
--- a/board/mpl/common/pci_parts.h
+++ b/board/mpl/common/pci_parts.h
@@ -137,7 +137,7 @@ static struct pci_pip405_config_entry piix4_pmm_cntrl_f3[] = {
{ } /* end of device table */
};
/* PPC405 Dummy only used to prevent autosetup on this host bridge */
-static struct pci_pip405_config_entry ibm405_dummy[] = {
+static struct pci_pip405_config_entry ppc405_dummy[] = {
{ } /* end of device table */
};
@@ -150,7 +150,7 @@ static struct pci_config_table pci_pip405_config_table[]={
PCI_DEVICE_ID_IBM_405GP,
PCI_ANY_ID,
PCI_ANY_ID, PCI_ANY_ID, 0,
- pci_pip405_write_regs, {(unsigned long) ibm405_dummy}},
+ pci_pip405_write_regs, {(unsigned long) ppc405_dummy}},
{PCI_VENDOR_ID_INTEL, /* PIIX4 ISA Bridge Function 0 */
PCI_DEVICE_ID_INTEL_82371AB_0,
diff --git a/board/mpl/mip405/mip405.c b/board/mpl/mip405/mip405.c
index b1adde617cb..9c469b09ac9 100644
--- a/board/mpl/mip405/mip405.c
+++ b/board/mpl/mip405/mip405.c
@@ -585,15 +585,15 @@ void get_pcbrev_var(unsigned char *pcbrev, unsigned char *var)
int checkboard (void)
{
- unsigned char s[50];
+ char s[50];
unsigned char bc, var;
int i;
backup_t *b = (backup_t *) s;
puts ("Board: ");
get_pcbrev_var(&bc,&var);
- i = getenv_r ("serial#", s, 32);
- if ((i == 0) || strncmp (s, BOARD_NAME,sizeof(BOARD_NAME))) {
+ i = getenv_r ("serial#", (char *)s, 32);
+ if ((i == 0) || strncmp ((char *)s, BOARD_NAME,sizeof(BOARD_NAME))) {
get_backup_values (b);
if (strncmp (b->signature, "MPL\0", 4) != 0) {
puts ("### No HW ID - assuming " BOARD_NAME);
@@ -728,15 +728,15 @@ int last_stage_init (void)
{
unsigned long stop;
struct rtc_time newtm;
- unsigned char *s;
+ char *s;
mem_test_reloc();
/* write correct LED configuration */
- if (miiphy_write (0x1, 0x14, 0x2402) != 0) {
+ if (miiphy_write("ppc_4xx_eth0", 0x1, 0x14, 0x2402) != 0) {
printf ("Error writing to the PHY\n");
}
/* since LED/CFG2 is not connected on the -2,
* write to correct capability information */
- if (miiphy_write (0x1, 0x4, 0x01E1) != 0) {
+ if (miiphy_write("ppc_4xx_eth0", 0x1, 0x4, 0x01E1) != 0) {
printf ("Error writing to the PHY\n");
}
print_mip405_rev ();
diff --git a/board/mpl/mip405/u-boot.lds b/board/mpl/mip405/u-boot.lds
index bb0f122b57c..ad5f2739ca6 100644
--- a/board/mpl/mip405/u-boot.lds
+++ b/board/mpl/mip405/u-boot.lds
@@ -73,7 +73,7 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
+ cpu/ppc4xx/4xx_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -93,6 +93,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -125,11 +126,13 @@ SECTIONS
_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 = .;
diff --git a/board/mpl/pati/u-boot.lds b/board/mpl/pati/u-boot.lds
index 3188801081f..5b03fef66c7 100644
--- a/board/mpl/pati/u-boot.lds
+++ b/board/mpl/pati/u-boot.lds
@@ -69,6 +69,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -101,11 +102,13 @@ SECTIONS
_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 = .;
diff --git a/board/mpl/pip405/pip405.c b/board/mpl/pip405/pip405.c
index 590bd20ff0f..a398362f96a 100644
--- a/board/mpl/pip405/pip405.c
+++ b/board/mpl/pip405/pip405.c
@@ -180,7 +180,7 @@ int board_early_init_f (void)
{
unsigned char dataout[1];
unsigned char datain[128];
- unsigned long sdram_size;
+ unsigned long sdram_size = 0;
SDRAM_SETUP *t = (SDRAM_SETUP *) sdram_setup_table;
unsigned long memclk;
unsigned long tmemclk = 0;
@@ -574,15 +574,15 @@ int board_early_init_f (void)
int checkboard (void)
{
- unsigned char s[50];
+ char s[50];
unsigned char bc;
int i;
backup_t *b = (backup_t *) s;
puts ("Board: ");
- i = getenv_r ("serial#", s, 32);
- if ((i == 0) || strncmp (s, "PIP405", 6)) {
+ i = getenv_r ("serial#", (char *)s, 32);
+ if ((i == 0) || strncmp ((char *)s, "PIP405", 6)) {
get_backup_values (b);
if (strncmp (b->signature, "MPL\0", 4) != 0) {
puts ("### No HW ID - assuming PIP405");
diff --git a/board/mpl/pip405/u-boot.lds b/board/mpl/pip405/u-boot.lds
index 9b83ded4d75..11819a4fcb2 100644
--- a/board/mpl/pip405/u-boot.lds
+++ b/board/mpl/pip405/u-boot.lds
@@ -69,7 +69,6 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -89,6 +88,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -121,11 +121,13 @@ SECTIONS
_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 = .;
diff --git a/board/mpl/pip405/u-boot.lds.debug b/board/mpl/pip405/u-boot.lds.debug
index d483424ad6d..1608f8cdaa3 100644
--- a/board/mpl/pip405/u-boot.lds.debug
+++ b/board/mpl/pip405/u-boot.lds.debug
@@ -74,6 +74,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/mpl/vcma9/u-boot.lds b/board/mpl/vcma9/u-boot.lds
index 76df6b2af1d..f4fbf969c3c 100644
--- a/board/mpl/vcma9/u-boot.lds
+++ b/board/mpl/vcma9/u-boot.lds
@@ -45,6 +45,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/musenki/u-boot.lds b/board/musenki/u-boot.lds
index 9d949b5def5..7c051095f84 100644
--- a/board/musenki/u-boot.lds
+++ b/board/musenki/u-boot.lds
@@ -71,6 +71,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -103,11 +104,13 @@ SECTIONS
_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 = .;
diff --git a/board/mvblue/u-boot.lds b/board/mvblue/u-boot.lds
index 9d949b5def5..7c051095f84 100644
--- a/board/mvblue/u-boot.lds
+++ b/board/mvblue/u-boot.lds
@@ -71,6 +71,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -103,11 +104,13 @@ SECTIONS
_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 = .;
diff --git a/board/mvs1/mvs1.c b/board/mvs1/mvs1.c
index fb7547f349e..f8a8cb7578b 100644
--- a/board/mvs1/mvs1.c
+++ b/board/mvs1/mvs1.c
@@ -197,14 +197,14 @@ long int initdram (int board_type)
*
* try 8 column mode
*/
- size8 = dram_size (CFG_MAMR_8COL, (ulong *) SDRAM_BASE2_PRELIM,
+ size8 = dram_size (CFG_MAMR_8COL, SDRAM_BASE2_PRELIM,
SDRAM_MAX_SIZE);
udelay (1000);
/*
* try 9 column mode
*/
- size9 = dram_size (CFG_MAMR_9COL, (ulong *) SDRAM_BASE2_PRELIM,
+ size9 = dram_size (CFG_MAMR_9COL, SDRAM_BASE2_PRELIM,
SDRAM_MAX_SIZE);
if (size8 < size9) { /* leave configuration at 9 columns */
diff --git a/board/mvs1/u-boot.lds b/board/mvs1/u-boot.lds
index 87bf341a9df..a04de3d85b1 100644
--- a/board/mvs1/u-boot.lds
+++ b/board/mvs1/u-boot.lds
@@ -81,6 +81,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -113,11 +114,13 @@ SECTIONS
_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 = .;
diff --git a/board/mvs1/u-boot.lds.debug b/board/mvs1/u-boot.lds.debug
index c0ee8499cd6..ddd4678ee8c 100644
--- a/board/mvs1/u-boot.lds.debug
+++ b/board/mvs1/u-boot.lds.debug
@@ -74,6 +74,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/mx1ads/u-boot.lds b/board/mx1ads/u-boot.lds
index 649216abda0..8438f99f78b 100644
--- a/board/mx1ads/u-boot.lds
+++ b/board/mx1ads/u-boot.lds
@@ -46,6 +46,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/mx1fs2/u-boot.lds b/board/mx1fs2/u-boot.lds
index 5076303c7ef..1d1669cdea0 100644
--- a/board/mx1fs2/u-boot.lds
+++ b/board/mx1fs2/u-boot.lds
@@ -45,6 +45,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/nc650/u-boot.lds b/board/nc650/u-boot.lds
index 2b08dd649a1..ca449181eba 100644
--- a/board/nc650/u-boot.lds
+++ b/board/nc650/u-boot.lds
@@ -65,6 +65,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -97,11 +98,13 @@ SECTIONS
_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 = .;
diff --git a/board/nc650/u-boot.lds.debug b/board/nc650/u-boot.lds.debug
index 1c3b7ddced4..2228a2005a9 100644
--- a/board/nc650/u-boot.lds.debug
+++ b/board/nc650/u-boot.lds.debug
@@ -64,6 +64,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/netphone/netphone.c b/board/netphone/netphone.c
index 698115a3191..dd03e4bd5bd 100644
--- a/board/netphone/netphone.c
+++ b/board/netphone/netphone.c
@@ -38,6 +38,11 @@
#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 */
@@ -483,12 +488,13 @@ void reset_phys(void)
mii_init();
for (phyno = 0; phyno < 32; ++phyno) {
- miiphy_read(phyno, PHY_PHYIDR1, &v);
+ fec8xx_miiphy_read(NULL, phyno, PHY_PHYIDR1, &v);
if (v == 0xFFFF)
continue;
- miiphy_write(phyno, PHY_BMCR, PHY_BMCR_POWD);
+ fec8xx_miiphy_write(NULL, phyno, PHY_BMCR, PHY_BMCR_POWD);
udelay(10000);
- miiphy_write(phyno, PHY_BMCR, PHY_BMCR_RESET | PHY_BMCR_AUTON);
+ fec8xx_miiphy_write(NULL, phyno, PHY_BMCR,
+ PHY_BMCR_RESET | PHY_BMCR_AUTON);
udelay(10000);
}
}
diff --git a/board/netphone/u-boot.lds b/board/netphone/u-boot.lds
index c3dac0ef4a5..9f2901c869b 100644
--- a/board/netphone/u-boot.lds
+++ b/board/netphone/u-boot.lds
@@ -77,6 +77,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -109,11 +110,13 @@ SECTIONS
_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 = .;
diff --git a/board/netphone/u-boot.lds.debug b/board/netphone/u-boot.lds.debug
index 21b7e6aabc0..004e7fd354a 100644
--- a/board/netphone/u-boot.lds.debug
+++ b/board/netphone/u-boot.lds.debug
@@ -74,6 +74,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/netstar/config.mk b/board/netstar/config.mk
index 8b73e975981..57a34c49576 100644
--- a/board/netstar/config.mk
+++ b/board/netstar/config.mk
@@ -9,3 +9,7 @@
# XXX TEXT_BASE = 0x20012000
TEXT_BASE = 0x13FC0000
+
+# Compile the new NAND code (needed iff #ifdef CONFIG_NEW_NAND_CODE)
+BOARDLIBS = drivers/nand/libnand.a
+
diff --git a/board/netstar/crcek b/board/netstar/crcek
new file mode 100755
index 00000000000..9593f893c81
--- /dev/null
+++ b/board/netstar/crcek
Binary files differ
diff --git a/board/netstar/crcit b/board/netstar/crcit
new file mode 100755
index 00000000000..98ae42e03bd
--- /dev/null
+++ b/board/netstar/crcit
Binary files differ
diff --git a/board/netstar/eeprom b/board/netstar/eeprom
new file mode 100755
index 00000000000..c30c98b72ce
--- /dev/null
+++ b/board/netstar/eeprom
Binary files differ
diff --git a/board/netta/netta.c b/board/netta/netta.c
index e7024e52d3c..9194bfb9de3 100644
--- a/board/netta/netta.c
+++ b/board/netta/netta.c
@@ -35,6 +35,11 @@
#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 */
@@ -431,12 +436,13 @@ void reset_phys(void)
mii_init();
for (phyno = 0; phyno < 32; ++phyno) {
- miiphy_read(phyno, PHY_PHYIDR1, &v);
+ fec8xx_miiphy_read(NULL, phyno, PHY_PHYIDR1, &v);
if (v == 0xFFFF)
continue;
- miiphy_write(phyno, PHY_BMCR, PHY_BMCR_POWD);
+ fec8xx_miiphy_write(NULL, phyno, PHY_BMCR, PHY_BMCR_POWD);
udelay(10000);
- miiphy_write(phyno, PHY_BMCR, PHY_BMCR_RESET | PHY_BMCR_AUTON);
+ fec8xx_miiphy_write(NULL, phyno, PHY_BMCR,
+ PHY_BMCR_RESET | PHY_BMCR_AUTON);
udelay(10000);
}
}
diff --git a/board/netta/u-boot.lds b/board/netta/u-boot.lds
index c3dac0ef4a5..9f2901c869b 100644
--- a/board/netta/u-boot.lds
+++ b/board/netta/u-boot.lds
@@ -77,6 +77,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -109,11 +110,13 @@ SECTIONS
_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 = .;
diff --git a/board/netta/u-boot.lds.debug b/board/netta/u-boot.lds.debug
index 21b7e6aabc0..004e7fd354a 100644
--- a/board/netta/u-boot.lds.debug
+++ b/board/netta/u-boot.lds.debug
@@ -74,6 +74,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/netta2/netta2.c b/board/netta2/netta2.c
index f4ce7a4946e..c9b405145e5 100644
--- a/board/netta2/netta2.c
+++ b/board/netta2/netta2.c
@@ -36,6 +36,11 @@
#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 */
@@ -481,12 +486,13 @@ void reset_phys(void)
mii_init();
for (phyno = 0; phyno < 32; ++phyno) {
- miiphy_read(phyno, PHY_PHYIDR1, &v);
+ fec8xx_miiphy_read(NULL, phyno, PHY_PHYIDR1, &v);
if (v == 0xFFFF)
continue;
- miiphy_write(phyno, PHY_BMCR, PHY_BMCR_POWD);
+ fec8xx_miiphy_write(NULL, phyno, PHY_BMCR, PHY_BMCR_POWD);
udelay(10000);
- miiphy_write(phyno, PHY_BMCR, PHY_BMCR_RESET | PHY_BMCR_AUTON);
+ fec8xx_miiphy_write(NULL, phyno, PHY_BMCR,
+ PHY_BMCR_RESET | PHY_BMCR_AUTON);
udelay(10000);
}
}
diff --git a/board/netta2/u-boot.lds b/board/netta2/u-boot.lds
index c3dac0ef4a5..9f2901c869b 100644
--- a/board/netta2/u-boot.lds
+++ b/board/netta2/u-boot.lds
@@ -77,6 +77,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -109,11 +110,13 @@ SECTIONS
_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 = .;
diff --git a/board/netta2/u-boot.lds.debug b/board/netta2/u-boot.lds.debug
index 21b7e6aabc0..004e7fd354a 100644
--- a/board/netta2/u-boot.lds.debug
+++ b/board/netta2/u-boot.lds.debug
@@ -74,6 +74,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/netvia/u-boot.lds b/board/netvia/u-boot.lds
index 14d4ba099d1..dc69db6ad0c 100644
--- a/board/netvia/u-boot.lds
+++ b/board/netvia/u-boot.lds
@@ -77,6 +77,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -109,11 +110,13 @@ SECTIONS
_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 = .;
diff --git a/board/netvia/u-boot.lds.debug b/board/netvia/u-boot.lds.debug
index 44eb2b6de0b..96569bfd9ad 100644
--- a/board/netvia/u-boot.lds.debug
+++ b/board/netvia/u-boot.lds.debug
@@ -74,6 +74,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/ns9750dev/Makefile b/board/ns9750dev/Makefile
index d2718cc683a..fb4333c19c0 100644
--- a/board/ns9750dev/Makefile
+++ b/board/ns9750dev/Makefile
@@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk
LIB = lib$(BOARD).a
OBJS := ns9750dev.o flash.o led.o
-SOBJS := platform.o
+SOBJS := lowlevel_init.o
$(LIB): $(OBJS) $(SOBJS)
$(AR) crv $@ $(OBJS) $(SOBJS)
diff --git a/board/ns9750dev/platform.S b/board/ns9750dev/lowlevel_init.S
index afcad154082..3a0978663a7 100644
--- a/board/ns9750dev/platform.S
+++ b/board/ns9750dev/lowlevel_init.S
@@ -75,8 +75,8 @@ _CAS_LATENCY:
.word 0x00022000 @ for CAS2 latency
#ifndef CONFIG_SKIP_LOWLEVEL_INIT
-.globl platformsetup
-platformsetup:
+.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
diff --git a/board/ns9750dev/u-boot.lds b/board/ns9750dev/u-boot.lds
index 8a05892af9c..8ebb6519fff 100644
--- a/board/ns9750dev/u-boot.lds
+++ b/board/ns9750dev/u-boot.lds
@@ -45,6 +45,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/nx823/nx823.c b/board/nx823/nx823.c
index cbcbab8945a..65d45c197f0 100644
--- a/board/nx823/nx823.c
+++ b/board/nx823/nx823.c
@@ -221,7 +221,7 @@ long int initdram (int board_type)
*
* try 8 column mode
*/
- size8 = dram_size (CFG_MAMR_8COL, (ulong *) SDRAM_BASE1_PRELIM,
+ size8 = dram_size (CFG_MAMR_8COL, (long *) SDRAM_BASE1_PRELIM,
SDRAM_MAX_SIZE);
udelay (1000);
@@ -229,7 +229,7 @@ long int initdram (int board_type)
/*
* try 9 column mode
*/
- size9 = dram_size (CFG_MAMR_9COL, (ulong *) SDRAM_BASE1_PRELIM,
+ size9 = dram_size (CFG_MAMR_9COL, (long *) SDRAM_BASE1_PRELIM,
SDRAM_MAX_SIZE);
if (size8 < size9) { /* leave configuration at 9 columns */
@@ -248,7 +248,7 @@ long int initdram (int board_type)
* [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, (ulong *) SDRAM_BASE2_PRELIM,
+ size_b1 = dram_size (memctl->memc_mamr, (long *) SDRAM_BASE2_PRELIM,
SDRAM_MAX_SIZE);
/* debug ("SDRAM Bank 1: %ld MB\n", size8 >> 20); */
diff --git a/board/nx823/u-boot.lds b/board/nx823/u-boot.lds
index 526198cc51e..7099fc40de6 100644
--- a/board/nx823/u-boot.lds
+++ b/board/nx823/u-boot.lds
@@ -67,6 +67,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -99,11 +100,13 @@ SECTIONS
_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 = .;
diff --git a/board/nx823/u-boot.lds.debug b/board/nx823/u-boot.lds.debug
index f6f7cf4fa53..3165d563451 100644
--- a/board/nx823/u-boot.lds.debug
+++ b/board/nx823/u-boot.lds.debug
@@ -74,6 +74,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/tqm8560/Makefile b/board/o2dnt/Makefile
index 403ad2d8393..2eb4366bf71 100644
--- a/board/tqm8560/Makefile
+++ b/board/o2dnt/Makefile
@@ -1,5 +1,6 @@
+
#
-# (C) Copyright 2001
+# (C) Copyright 2005
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
#
# See file CREDITS for list of people who contributed to this
@@ -12,7 +13,7 @@
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
@@ -25,15 +26,13 @@ include $(TOPDIR)/config.mk
LIB = lib$(BOARD).a
-OBJS := $(BOARD).o
-SOBJS := init.o
-#SOBJS :=
+OBJS := $(BOARD).o flash.o
-$(LIB): $(OBJS) $(SOBJS)
+$(LIB): $(OBJS) $(SOBJS)
$(AR) crv $@ $(OBJS)
clean:
- rm -f $(OBJS) $(SOBJS)
+ rm -f $(SOBJS) $(OBJS)
distclean: clean
rm -f $(LIB) core *.bak .depend
diff --git a/board/o2dnt/config.mk b/board/o2dnt/config.mk
new file mode 100644
index 00000000000..b873376804a
--- /dev/null
+++ b/board/o2dnt/config.mk
@@ -0,0 +1,27 @@
+#
+# (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
new file mode 100644
index 00000000000..037d28732d8
--- /dev/null
+++ b/board/o2dnt/flash.c
@@ -0,0 +1,587 @@
+/*
+ * (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
new file mode 100644
index 00000000000..81a27002f43
--- /dev/null
+++ b/board/o2dnt/o2dnt.c
@@ -0,0 +1,182 @@
+/*
+ * (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
new file mode 100644
index 00000000000..88dc118e8fd
--- /dev/null
+++ b/board/o2dnt/u-boot.lds
@@ -0,0 +1,125 @@
+/*
+ * (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/omap1510inn/Makefile b/board/omap1510inn/Makefile
index bd6285cb231..902b24ea1ac 100644
--- a/board/omap1510inn/Makefile
+++ b/board/omap1510inn/Makefile
@@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk
LIB = lib$(BOARD).a
OBJS := omap1510innovator.o
-SOBJS := platform.o
+SOBJS := lowlevel_init.o
$(LIB): $(OBJS) $(SOBJS)
$(AR) crv $@ $^
diff --git a/board/omap1510inn/platform.S b/board/omap1510inn/lowlevel_init.S
index 8045e84b2dd..1c68e5b816e 100644
--- a/board/omap1510inn/platform.S
+++ b/board/omap1510inn/lowlevel_init.S
@@ -39,8 +39,8 @@
_TEXT_BASE:
.word TEXT_BASE /* sdram load addr from config.mk */
-.globl platformsetup
-platformsetup:
+.globl lowlevel_init
+lowlevel_init:
/*
* Configure 1510 pins functions to match our board.
diff --git a/board/omap1510inn/u-boot.lds b/board/omap1510inn/u-boot.lds
index cb28b31b8a2..b6d16190fcd 100644
--- a/board/omap1510inn/u-boot.lds
+++ b/board/omap1510inn/u-boot.lds
@@ -45,6 +45,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/omap1610inn/Makefile b/board/omap1610inn/Makefile
index 4a96b8334be..4560102327e 100644
--- a/board/omap1610inn/Makefile
+++ b/board/omap1610inn/Makefile
@@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk
LIB = lib$(BOARD).a
OBJS := omap1610innovator.o flash.o
-SOBJS := platform.o
+SOBJS := lowlevel_init.o
$(LIB): $(OBJS) $(SOBJS)
$(AR) crv $@ $^
diff --git a/board/omap1610inn/platform.S b/board/omap1610inn/lowlevel_init.S
index d694f94bb9d..eaf1742cc73 100644
--- a/board/omap1610inn/platform.S
+++ b/board/omap1610inn/lowlevel_init.S
@@ -37,8 +37,8 @@
_TEXT_BASE:
.word TEXT_BASE /* sdram load addr from config.mk */
-.globl platformsetup
-platformsetup:
+.globl lowlevel_init
+lowlevel_init:
/*------------------------------------------------------*
diff --git a/board/omap1610inn/u-boot.lds b/board/omap1610inn/u-boot.lds
index eee4813f383..710b2a2d6e6 100644
--- a/board/omap1610inn/u-boot.lds
+++ b/board/omap1610inn/u-boot.lds
@@ -40,6 +40,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/omap2420h4/Makefile b/board/omap2420h4/Makefile
index deab6b6d1c9..ed4786879a1 100644
--- a/board/omap2420h4/Makefile
+++ b/board/omap2420h4/Makefile
@@ -25,8 +25,8 @@ include $(TOPDIR)/config.mk
LIB = lib$(BOARD).a
-OBJS := omap2420h4.o flash.o mem.o sys_info.o
-SOBJS := platform.o
+OBJS := omap2420h4.o mem.o sys_info.o
+SOBJS := lowlevel_init.o
$(LIB): $(OBJS) $(SOBJS)
$(AR) crv $@ $^
diff --git a/board/omap2420h4/config.mk b/board/omap2420h4/config.mk
index e6aa75678d9..3edcde01882 100644
--- a/board/omap2420h4/config.mk
+++ b/board/omap2420h4/config.mk
@@ -19,4 +19,10 @@ 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 = 0x40280000
+#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/platform.S b/board/omap2420h4/lowlevel_init.S
index 73ba4628575..9752fc488da 100644
--- a/board/omap2420h4/platform.S
+++ b/board/omap2420h4/lowlevel_init.S
@@ -158,8 +158,8 @@ pll_div_add:
pll_div_val:
.word DPLL_VAL /* DPLL setting (300MHz default) */
-.globl platformsetup
-platformsetup:
+.globl lowlevel_init
+lowlevel_init:
ldr sp, SRAM_STACK
str ip, [sp] /* stash old link register */
mov ip, lr /* save link reg across call */
diff --git a/board/omap2420h4/mem.c b/board/omap2420h4/mem.c
index 9ae595b3cac..62eb6e38a32 100644
--- a/board/omap2420h4/mem.c
+++ b/board/omap2420h4/mem.c
@@ -48,7 +48,7 @@ void sdelay (unsigned long loops)
*********************************************************************************/
void prcm_init(void)
{
- u32 rev,div;
+ u32 div;
void (*f_lock_pll) (u32, u32, u32, u32);
extern void *_end_vect, *_start;
@@ -64,11 +64,7 @@ void prcm_init(void)
__raw_writel(DSP_DIV, CM_CLKSEL_DSP); /* set dsp and iva dividers */
__raw_writel(GFX_DIV, CM_CLKSEL_GFX); /* set gfx dividers */
- rev = get_cpu_rev();
- if (rev == CPU_2420_ES1 || rev == CPU_2422_ES1)
- div = BUS_DIV_ES1;
- else
- div = BUS_DIV;
+ div = BUS_DIV;
__raw_writel(div, CM_CLKSEL1_CORE);/* set L3/L4/USB/Display/Vlnc/SSi dividers */
sdelay(1000);
@@ -99,6 +95,23 @@ void prcm_init(void)
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
@@ -122,6 +135,7 @@ u32 mem_ok(void)
return(1);
}
+
/********************************************************
* sdrc_init() - init the sdrc chip selects CS0 and CS1
* - early init routines, called from flash or
@@ -148,28 +162,29 @@ void sdrc_init(void)
**************************************************************************/
void do_sdrc_init(u32 offset, u32 early)
{
- u32 cpu, bug=0, rev, common=0, cs0=0, pmask=0, pass_type;
+ 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_ES1, H4_2422_SDRC_MR_0_DDR,
- 0, H4_2422_SDRC_DLLA_CTRL, H4_2422_SDRC_DLLB_CTRL
+ 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_ES1, H4_2420_SDRC_MR_0_DDR, H4_2420_SDRC_MR_0_SDR,
- H4_2420_SDRC_DLLA_CTRL, H4_2420_SDRC_DLLB_CTRL
+ 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
@@ -197,9 +212,15 @@ void do_sdrc_init(u32 offset, u32 early)
if(running_from_internal_boot())
sdata = (sdrc_data_t *)((u32)sdata + 0x4000);
}
- if (!early && (get_mem_type() == DDR_COMBO)) {/* combo part has a shared CKE signal, can't use feature */
- pmask = BIT2;
- pass_type = COMBO_DDR; /* CS1 config */
+
+ 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:
@@ -208,11 +229,10 @@ next_mem_type:
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);
- __raw_writel((__raw_readl(SDRC_POWER)) & ~pmask, SDRC_POWER);
#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) & ~pmask, SDRC_POWER);
+ __raw_writel((__raw_readl(SDRC_POWER)|BIT6), SDRC_POWER);
#endif
}
@@ -224,15 +244,16 @@ next_mem_type:
__raw_writel(sdata->sdrc_mdcfg_0_sdr, SDRC_MCFG_0+offset);
}
- if(pass_type == IP_SDR){ /* SDRAM can run full speed only rated for 105MHz*/
- a = H4_242X_SDRC_ACTIM_CTRLA_0_100MHz;
- b = H4_242X_SDRC_ACTIM_CTRLB_0_100MHz;
- r = H4_2420_SDRC_RFR_CTRL;
- } else {
- a = sdata->sdrc_actim_ctrla_0;
- b = sdata->sdrc_actim_ctrlb_0;
- r = sdata->sdrc_rfr_ctrl;
- }
+ 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);
@@ -241,7 +262,6 @@ next_mem_type:
__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) */
@@ -263,18 +283,22 @@ next_mem_type:
__raw_writel(sdata->sdrc_mr_0_ddr, SDRC_MR_0+offset);
/* NOTE: ES1 242x _BUG_ DLL + External Bandwidth fix*/
- rev = get_cpu_rev();
- if (rev == CPU_2420_ES1 || rev == CPU_2422_ES1){
- bug = BIT0;
+ 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 */
}
- /* enable & load up DLL with good value for 75MHz, and set phase to 90% */
+ 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_dlla_ctrl, SDRC_DLLA_CTRL);
- __raw_writel(sdata->sdrc_dlla_ctrl & ~(BIT2|bug), SDRC_DLLA_CTRL);
- __raw_writel(sdata->sdrc_dllb_ctrl, SDRC_DLLB_CTRL);
- __raw_writel(sdata->sdrc_dllb_ctrl & ~(BIT2|bug) , SDRC_DLLB_CTRL);
+ __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);
@@ -291,12 +315,18 @@ next_mem_type:
*****************************************************/
void gpmc_init(void)
{
- u32 mux=0, mtype, mwidth;
+ 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(0x1, GPMC_TIMEOUT_CONTROL);/* timeout disable */
+ __raw_writel(tval, GPMC_TIMEOUT_CONTROL);/* timeout disable */
#ifdef CFG_NAND_BOOT
__raw_writel(0x001, GPMC_CONFIG); /* set nWP, disable limited addr */
#else
diff --git a/board/omap2420h4/omap2420h4.c b/board/omap2420h4/omap2420h4.c
index 8c7982d679a..6ae1a490a50 100644
--- a/board/omap2420h4/omap2420h4.c
+++ b/board/omap2420h4/omap2420h4.c
@@ -36,7 +36,7 @@
extern struct nand_chip nand_dev_desc[CFG_MAX_NAND_DEVICE];
#endif
-static void wait_for_command_complete(unsigned int wd_base);
+ void wait_for_command_complete(unsigned int wd_base);
/*******************************************************
* Routine: delay
@@ -65,6 +65,21 @@ int board_init (void)
}
/**********************************************************
+ * 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.
@@ -76,6 +91,7 @@ void s_init(void)
watchdog_init();
set_muxconf_regs();
delay(100);
+ try_unlock_sram();
if(!in_sdram)
prcm_init();
@@ -102,20 +118,10 @@ int misc_init_r (void)
*****************************************/
void watchdog_init(void)
{
- int mode;
- #define GP (BIT8|BIT9)
-
/* There are 4 watch dogs. 1 secure, and 3 general purpose.
- * I would expect that the ROM takes care of the secure one,
- * but we will try also. Of the 3 GP ones, 1 can reset us
- * directly, the other 2 only generate MPU interrupts.
- */
- mode = (__raw_readl(CONTROL_STATUS) & (BIT8|BIT9));
- if (mode == GP) {
- __raw_writel(WD_UNLOCK1 ,WD1_BASE+WSPR);
- wait_for_command_complete(WD1_BASE);
- __raw_writel(WD_UNLOCK2 ,WD1_BASE+WSPR);
- }
+ * 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);
@@ -135,7 +141,7 @@ void watchdog_init(void)
* Routine: wait_for_command_complete
* Description: Wait for posting to finish on watchdog
******************************************************/
-static void wait_for_command_complete(unsigned int wd_base)
+void wait_for_command_complete(unsigned int wd_base)
{
int pending = 1;
do {
@@ -191,7 +197,7 @@ int dram_init (void)
{
DECLARE_GLOBAL_DATA_PTR;
unsigned int size0=0,size1=0;
- u32 mtype, btype;
+ u32 mtype, btype, rev, cpu;
u8 chg_on = 0x5; /* enable charge of back up battery */
u8 vmode_on = 0x8C;
#define NOT_EARLY 0
@@ -200,6 +206,8 @@ int dram_init (void)
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){
@@ -210,15 +218,16 @@ int dram_init (void)
if ((mtype == DDR_COMBO) || (mtype == DDR_STACKED)) {
do_sdrc_init(SDRC_CS1_OSET, NOT_EARLY); /* init other chip select */
- size0 = size1 = SZ_32M;
- } else if (mtype == SDR_DISCRETE)
- size0 = SZ_128M;
- else
- size0 = SZ_64M;
+ }
+ 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;
- gd->bd->bi_dram[1].start = PHYS_SDRAM_2;
+ 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;
diff --git a/board/omap2420h4/sys_info.c b/board/omap2420h4/sys_info.c
index 121d67916df..a9f72412a79 100644
--- a/board/omap2420h4/sys_info.c
+++ b/board/omap2420h4/sys_info.c
@@ -29,6 +29,16 @@
#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 ...
@@ -40,6 +50,14 @@ 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 */
@@ -61,6 +79,16 @@ u32 get_cpu_rev(void)
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.
@@ -70,24 +98,40 @@ u32 get_cpu_rev(void)
*************************************************************/
u32 get_mem_type(void)
{
- volatile u32 *burst = (volatile u32 *)(SDRC_MR_0+SDRC_CS0_OSET);
+ u32 cpu, sdr = is_mem_sdr();
- if (get_cpu_type() == CPU_2422)
+ 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(*burst == H4_2420_SDRC_MR_0_SDR)
+ if(sdr)
return(SDR_DISCRETE);
else
return(DDR_COMBO);
else
- if(*burst == H4_2420_SDRC_MR_0_SDR) /* SDP + SDR kit */
+ 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
@@ -104,7 +148,7 @@ u32 get_board_type(void)
/******************************************************************
* get_sysboot_value() - get init word settings (dip switch on h4)
******************************************************************/
-u32 get_sysboot_value(void)
+inline u32 get_sysboot_value(void)
{
return(0x00000FFF & __raw_readl(CONTROL_STATUS));
}
@@ -193,22 +237,53 @@ u32 wait_on_value(u32 read_bit_mask, u32 match_value, u32 read_addr, u32 bound)
*********************************************************************/
void display_board_info(u32 btype)
{
- char cpu_2420[] = "2420";
+ char cpu_2420[] = "2420"; /* cpu type */
char cpu_2422[] = "2422";
- char db_men[] = "Menelaus";
- char db_ip[]= "IP";
- char *cpu_s, *db_s;
- u32 cpu = get_cpu_type();
+ 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[] = "?";
- if(cpu == CPU_2420)
- cpu_s = cpu_2420;
+ 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;
- printf("TI H4 SDP Base Board with OMAP%s %s Daughter Board\n",cpu_s, db_s);
+
+ 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);
}
/*************************************************************************
@@ -230,7 +305,7 @@ u32 get_board_rev(void)
/********************************************************
* get_base(); get upper addr of current execution
*******************************************************/
-static u32 get_base(void)
+u32 get_base(void)
{
u32 val;
__asm__ __volatile__("mov %0, pc \n" : "=r" (val) : : "memory");
@@ -242,7 +317,7 @@ static u32 get_base(void)
/********************************************************
* get_base2(); get 2upper addr of current execution
*******************************************************/
-static u32 get_base2(void)
+u32 get_base2(void)
{
u32 val;
__asm__ __volatile__("mov %0, pc \n" : "=r" (val) : : "memory");
@@ -300,3 +375,13 @@ u32 running_from_internal_boot(void)
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
index e9ff741ced5..1460adcdd80 100644
--- a/board/omap2420h4/u-boot.lds
+++ b/board/omap2420h4/u-boot.lds
@@ -47,6 +47,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/omap5912osk/Makefile b/board/omap5912osk/Makefile
index ef60dd21167..4b564217b74 100644
--- a/board/omap5912osk/Makefile
+++ b/board/omap5912osk/Makefile
@@ -25,8 +25,8 @@ include $(TOPDIR)/config.mk
LIB = lib$(BOARD).a
-OBJS := omap5912osk.o flash.o
-SOBJS := platform.o
+OBJS := omap5912osk.o
+SOBJS := lowlevel_init.o
$(LIB): $(OBJS) $(SOBJS)
$(AR) crv $@ $^
diff --git a/board/omap5912osk/platform.S b/board/omap5912osk/lowlevel_init.S
index 33c72423ab0..3b9633ad988 100644
--- a/board/omap5912osk/platform.S
+++ b/board/omap5912osk/lowlevel_init.S
@@ -38,8 +38,8 @@
_TEXT_BASE:
.word TEXT_BASE /* sdram load addr from config.mk */
-.globl platformsetup
-platformsetup:
+.globl lowlevel_init
+lowlevel_init:
/*------------------------------------------------------*
diff --git a/board/omap5912osk/u-boot.lds b/board/omap5912osk/u-boot.lds
index 901f0809d3b..142450cdd5f 100644
--- a/board/omap5912osk/u-boot.lds
+++ b/board/omap5912osk/u-boot.lds
@@ -40,6 +40,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/omap730p2/Makefile b/board/omap730p2/Makefile
index 10585080739..29467ac39e6 100644
--- a/board/omap730p2/Makefile
+++ b/board/omap730p2/Makefile
@@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk
LIB = lib$(BOARD).a
OBJS := omap730p2.o flash.o
-SOBJS := platform.o
+SOBJS := lowlevel_init.o
$(LIB): $(OBJS) $(SOBJS)
$(AR) crv $@ $^
diff --git a/board/omap730p2/platform.S b/board/omap730p2/lowlevel_init.S
index f30c2424ffb..6c6f48240a2 100644
--- a/board/omap730p2/platform.S
+++ b/board/omap730p2/lowlevel_init.S
@@ -43,8 +43,8 @@
_TEXT_BASE:
.word TEXT_BASE /* sdram load addr from config.mk */
-.globl platformsetup
-platformsetup:
+.globl lowlevel_init
+lowlevel_init:
/* Save callers address in r11 - r11 must never be modified */
mov r11, lr
diff --git a/board/omap730p2/u-boot.lds b/board/omap730p2/u-boot.lds
index eee4813f383..710b2a2d6e6 100644
--- a/board/omap730p2/u-boot.lds
+++ b/board/omap730p2/u-boot.lds
@@ -40,6 +40,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/oxc/u-boot.lds b/board/oxc/u-boot.lds
index db89a78fd0f..2a5cd2ebd9d 100644
--- a/board/oxc/u-boot.lds
+++ b/board/oxc/u-boot.lds
@@ -68,6 +68,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -100,11 +101,13 @@ SECTIONS
_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 = .;
diff --git a/board/pb1x00/Makefile b/board/pb1x00/Makefile
new file mode 100644
index 00000000000..d1cdc6b9244
--- /dev/null
+++ b/board/pb1x00/Makefile
@@ -0,0 +1,41 @@
+#
+# (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 $(TOPDIR)/config.mk
+
+LIB = lib$(BOARD).a
+
+OBJS = $(BOARD).o flash.o
+SOBJS = memsetup.o
+
+$(LIB): .depend $(OBJS) $(SOBJS)
+ $(AR) crv $@ $(OBJS) $(SOBJS)
+
+#########################################################################
+
+.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
+ $(CC) -M $(CFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
+
+sinclude .depend
+
+#########################################################################
diff --git a/board/pb1x00/README b/board/pb1x00/README
new file mode 100644
index 00000000000..b37ff3616b2
--- /dev/null
+++ b/board/pb1x00/README
@@ -0,0 +1,63 @@
+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
new file mode 100644
index 00000000000..396a0454ad2
--- /dev/null
+++ b/board/pb1x00/config.mk
@@ -0,0 +1,32 @@
+#
+# (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
new file mode 100644
index 00000000000..3cf29e844bc
--- /dev/null
+++ b/board/pb1x00/flash.c
@@ -0,0 +1,43 @@
+/*
+ * (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
new file mode 100644
index 00000000000..44f02b9555e
--- /dev/null
+++ b/board/pb1x00/memsetup.S
@@ -0,0 +1,392 @@
+/* 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
new file mode 100644
index 00000000000..40ac2a4d7cd
--- /dev/null
+++ b/board/pb1x00/pb1x00.c
@@ -0,0 +1,115 @@
+/*
+ * (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
new file mode 100644
index 00000000000..a2d19a84c9e
--- /dev/null
+++ b/board/pb1x00/u-boot.lds
@@ -0,0 +1,68 @@
+/*
+ * (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/flash.c b/board/pcippc2/flash.c
index 6e9e3395c1b..8c01415faed 100644
--- a/board/pcippc2/flash.c
+++ b/board/pcippc2/flash.c
@@ -136,7 +136,7 @@ static ulong flash_get_size (ulong addr, flash_info_t *info)
DEBUGF("Device ID @ 0x%08lx: 0x%08x\n", addr+1, value);
- switch (value) {
+ switch ((ulong)value) {
case AMD_ID_F040B:
DEBUGF("Am29F040B\n");
info->flash_id += FLASH_AM040;
diff --git a/board/pcippc2/u-boot.lds b/board/pcippc2/u-boot.lds
index 6ead7f2b0d9..5c8cd5a882b 100644
--- a/board/pcippc2/u-boot.lds
+++ b/board/pcippc2/u-boot.lds
@@ -77,6 +77,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -109,11 +110,13 @@ SECTIONS
_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 = .;
diff --git a/board/pleb2/u-boot.lds b/board/pleb2/u-boot.lds
index 58c371df06b..f0102391b34 100644
--- a/board/pleb2/u-boot.lds
+++ b/board/pleb2/u-boot.lds
@@ -44,6 +44,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/pm520/flash.c b/board/pm520/flash.c
index 386822179d8..38f579bc596 100644
--- a/board/pm520/flash.c
+++ b/board/pm520/flash.c
@@ -168,6 +168,10 @@ void flash_print_info (flash_info_t *info)
}
switch (info->flash_id & FLASH_TYPEMASK) {
+ case FLASH_28F256J3A:
+ printf ("28F256J3A\n");
+ break;
+
case FLASH_28F128J3A:
printf ("28F128J3A\n");
break;
@@ -236,25 +240,33 @@ static ulong flash_get_size (FPW *addr, flash_info_t *info)
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;
+ 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 + 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 + 0x01800000;
+ info->start[0] = CFG_FLASH_BASE + 0x03800000;
break; /* => 8 MB */
default:
@@ -285,6 +297,7 @@ static void flash_sync_real_protect (flash_info_t * info)
switch (info->flash_id & FLASH_TYPEMASK) {
+ case FLASH_28F256J3A:
case FLASH_28F128J3A:
case FLASH_28F640J3A:
case FLASH_28F320J3A:
diff --git a/board/pm520/pm520.c b/board/pm520/pm520.c
index 619df59c90d..d4cc5cb5617 100644
--- a/board/pm520/pm520.c
+++ b/board/pm520/pm520.c
@@ -107,9 +107,9 @@ long int initdram (int board_type)
/* find RAM size using SDRAM CS0 only */
sdram_start(0);
- test1 = get_ram_size((ulong *)CFG_SDRAM_BASE, 0x80000000);
+ test1 = get_ram_size((long *)CFG_SDRAM_BASE, 0x80000000);
sdram_start(1);
- test2 = get_ram_size((ulong *)CFG_SDRAM_BASE, 0x80000000);
+ test2 = get_ram_size((long *)CFG_SDRAM_BASE, 0x80000000);
if (test1 > test2) {
sdram_start(0);
dramsize = test1;
@@ -135,10 +135,10 @@ long int initdram (int board_type)
/* find RAM size using SDRAM CS1 only */
if (!dramsize)
sdram_start(0);
- test2 = test1 = get_ram_size((ulong *)(CFG_SDRAM_BASE + dramsize), 0x80000000);
+ test2 = test1 = get_ram_size((long *)(CFG_SDRAM_BASE + dramsize), 0x80000000);
if (!dramsize) {
sdram_start(1);
- test2 = get_ram_size((ulong *)(CFG_SDRAM_BASE + dramsize), 0x80000000);
+ test2 = get_ram_size((long *)(CFG_SDRAM_BASE + dramsize), 0x80000000);
}
if (test1 > test2) {
sdram_start(0);
diff --git a/board/pm520/u-boot.lds b/board/pm520/u-boot.lds
index 672a250cf2b..3cc2968487b 100644
--- a/board/pm520/u-boot.lds
+++ b/board/pm520/u-boot.lds
@@ -61,6 +61,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -93,11 +94,13 @@ SECTIONS
_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 = .;
diff --git a/board/pm826/u-boot.lds b/board/pm826/u-boot.lds
index ce6c4540d07..05f29c6ed08 100644
--- a/board/pm826/u-boot.lds
+++ b/board/pm826/u-boot.lds
@@ -62,6 +62,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -94,11 +95,13 @@ SECTIONS
_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 = .;
diff --git a/board/pm828/u-boot.lds b/board/pm828/u-boot.lds
index e19137066fe..928c1cf3932 100644
--- a/board/pm828/u-boot.lds
+++ b/board/pm828/u-boot.lds
@@ -62,6 +62,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -94,11 +95,13 @@ SECTIONS
_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 = .;
diff --git a/board/pm854/u-boot.lds b/board/pm854/u-boot.lds
index 4db6b342bd6..fbfc65a1e82 100644
--- a/board/pm854/u-boot.lds
+++ b/board/pm854/u-boot.lds
@@ -87,6 +87,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -119,10 +120,12 @@ SECTIONS
_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 = .;
diff --git a/board/pm856/u-boot.lds b/board/pm856/u-boot.lds
index dae8347d835..e946a8e512e 100644
--- a/board/pm856/u-boot.lds
+++ b/board/pm856/u-boot.lds
@@ -87,6 +87,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -119,10 +120,12 @@ SECTIONS
_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 = .;
diff --git a/board/pn62/pn62.c b/board/pn62/pn62.c
index 025224027e8..377aaa8bca3 100644
--- a/board/pn62/pn62.c
+++ b/board/pn62/pn62.c
@@ -167,7 +167,7 @@ static int get_serial_number (char *string, int size)
if (size < I2155X_VPD_SN_SIZE)
size = I2155X_VPD_SN_SIZE;
for (i = 0; i < (size - 1); i++) {
- i2155x_read_vpd (I2155X_VPD_SN_START + i, 1, &c);
+ i2155x_read_vpd (I2155X_VPD_SN_START + i, 1, (uchar *)&c);
if (c == '\0')
break;
string[i] = c;
diff --git a/board/pn62/u-boot.lds b/board/pn62/u-boot.lds
index 98584dcf0a5..eaee3fdefc6 100644
--- a/board/pn62/u-boot.lds
+++ b/board/pn62/u-boot.lds
@@ -71,6 +71,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -103,11 +104,13 @@ SECTIONS
_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 = .;
diff --git a/board/ppmc8260/ppmc8260.c b/board/ppmc8260/ppmc8260.c
index e92ad8f96ba..2b20c26f174 100644
--- a/board/ppmc8260/ppmc8260.c
+++ b/board/ppmc8260/ppmc8260.c
@@ -285,7 +285,7 @@ int misc_init_r (void)
int res;
if ((ds != 0) && (ds != 0xff)) {
- res = getenv_r ("ethaddr", tmp, sizeof (tmp));
+ res = getenv_r ("ethaddr", (char *)tmp, sizeof (tmp));
if (res > 0) {
ss = ((ds >> 4) & 0x0f);
ss += ss < 0x0a ? '0' : ('a' - 10);
@@ -296,7 +296,7 @@ int misc_init_r (void)
tmp[16] = ss;
tmp[17] = '\0';
- setenv ("ethaddr", tmp);
+ setenv ("ethaddr", (char *)tmp);
/* set the led to show the address */
*((unsigned char *) (CFG_LED_BASE + 1)) = ds;
}
diff --git a/board/ppmc8260/u-boot.lds b/board/ppmc8260/u-boot.lds
index 492033e2e79..84d4b78b9ec 100644
--- a/board/ppmc8260/u-boot.lds
+++ b/board/ppmc8260/u-boot.lds
@@ -62,6 +62,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -94,11 +95,13 @@ SECTIONS
_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 = .;
diff --git a/board/prodrive/p3p440/Makefile b/board/prodrive/p3p440/Makefile
new file mode 100644
index 00000000000..47116d36746
--- /dev/null
+++ b/board/prodrive/p3p440/Makefile
@@ -0,0 +1,47 @@
+#
+# (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 $(TOPDIR)/config.mk
+
+LIB = lib$(BOARD).a
+
+OBJS = $(BOARD).o
+SOBJS = init.o
+
+$(LIB): $(OBJS) $(SOBJS)
+ $(AR) crv $@ $(OBJS)
+
+clean:
+ rm -f $(SOBJS) $(OBJS)
+
+distclean: clean
+ rm -f $(LIB) core *.bak .depend
+
+#########################################################################
+
+.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
+ $(CC) -M $(CFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
+
+sinclude .depend
+
+#########################################################################
diff --git a/board/prodrive/p3p440/config.mk b/board/prodrive/p3p440/config.mk
new file mode 100644
index 00000000000..e5722dd36a7
--- /dev/null
+++ b/board/prodrive/p3p440/config.mk
@@ -0,0 +1,44 @@
+#
+# (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/prodrive/p3p440/init.S b/board/prodrive/p3p440/init.S
new file mode 100644
index 00000000000..ee6b7066e9f
--- /dev/null
+++ b/board/prodrive/p3p440/init.S
@@ -0,0 +1,99 @@
+/*
+ * (C) Copyright 2005
+ * Stefan Roese, DENX Software Engineering, sr@denx.de.
+ *
+ * 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/prodrive/p3p440/p3p440.c b/board/prodrive/p3p440/p3p440.c
new file mode 100644
index 00000000000..d42a643c2f0
--- /dev/null
+++ b/board/prodrive/p3p440/p3p440.c
@@ -0,0 +1,264 @@
+/*
+ * (C) Copyright 2005
+ * Stefan Roese, DENX Software Engineering, sr@denx.de.
+ *
+ * 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 <command.h>
+
+#include "p3p440.h"
+
+void set_led(int color)
+{
+ switch (color) {
+ case LED_OFF:
+ out32(GPIO0_OR, in32(GPIO0_OR) & ~CFG_LED_GREEN & ~CFG_LED_RED);
+ break;
+
+ case LED_GREEN:
+ out32(GPIO0_OR, (in32(GPIO0_OR) | CFG_LED_GREEN) & ~CFG_LED_RED);
+ break;
+
+ case LED_RED:
+ out32(GPIO0_OR, (in32(GPIO0_OR) | CFG_LED_RED) & ~CFG_LED_GREEN);
+ break;
+
+ case LED_ORANGE:
+ out32(GPIO0_OR, in32(GPIO0_OR) | CFG_LED_GREEN | CFG_LED_RED);
+ break;
+ }
+}
+
+static int is_monarch(void)
+{
+ out32(GPIO0_OR, in32(GPIO0_OR) & ~CFG_GPIO_RDY);
+ udelay(1000);
+
+ if (in32(GPIO0_IR) & CFG_MONARCH_IO)
+ return 0;
+ else
+ return 1;
+}
+
+static void wait_for_pci_ready(void)
+{
+ /*
+ * Configure EREADY_IO as input
+ */
+ out32(GPIO0_TCR, in32(GPIO0_TCR) & ~CFG_EREADY_IO);
+ udelay(1000);
+
+ for (;;) {
+ if (in32(GPIO0_IR) & CFG_EREADY_IO)
+ return;
+ }
+
+}
+
+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 */
+
+ /*--------------------------------------------------------------------
+ * Setup pin multiplexing (GPIO/IRQ...)
+ *-------------------------------------------------------------------*/
+ mtdcr(cpc0_gpio, 0x03F01F80);
+
+ out32(GPIO0_ODR, 0x00000000); /* no open drain pins */
+ out32(GPIO0_TCR, CFG_GPIO_RDY | CFG_EREADY_IO | CFG_LED_RED | CFG_LED_GREEN);
+ out32(GPIO0_OR, CFG_GPIO_RDY);
+
+ /*--------------------------------------------------------------------
+ * 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, 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: P3P440");
+ if (s != NULL) {
+ puts(", serial# ");
+ puts(s);
+ }
+
+ if (is_monarch()) {
+ puts(", Monarch");
+ } else {
+ puts(", None-Monarch");
+ }
+
+ putc('\n');
+
+ return (0);
+}
+
+int misc_init_r (void)
+{
+ DECLARE_GLOBAL_DATA_PTR;
+
+ /*
+ * Adjust flash start and offset to detected values
+ */
+ gd->bd->bi_flashstart = 0 - gd->bd->bi_flashsize;
+ gd->bd->bi_flashoffset = 0;
+
+ /*
+ * Check if only one FLASH bank is available
+ */
+ if (gd->bd->bi_flashsize != CFG_MAX_FLASH_BANKS * (0 - CFG_FLASH0)) {
+ mtebc(pb1cr, 0); /* disable cs */
+ mtebc(pb1ap, 0);
+ mtebc(pb2cr, 0); /* disable cs */
+ mtebc(pb2ap, 0);
+ mtebc(pb3cr, 0); /* disable cs */
+ mtebc(pb3ap, 0);
+ }
+
+ return 0;
+}
+
+/*************************************************************************
+ * 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 P3P440 board is always configured as the host & requires the
+ * PCI arbiter to be disabled because it's an PMC module.
+ *--------------------------------------------------------------------------*/
+ strap = mfdcr(cpc0_strp1);
+ if (strap & 0x00100000) {
+ printf("PCI: CPC0_STRP1[PAE] 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)
+{
+ 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) */
+
+/*************************************************************************
+ * 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)
+{
+ if (is_monarch()) {
+ wait_for_pci_ready();
+ return 1; /* return 1 for host controller */
+ } else {
+ return 0; /* return 0 for adapter controller */
+ }
+}
+#endif /* defined(CONFIG_PCI) */
diff --git a/board/prodrive/p3p440/p3p440.h b/board/prodrive/p3p440/p3p440.h
new file mode 100644
index 00000000000..e4e87d1f59d
--- /dev/null
+++ b/board/prodrive/p3p440/p3p440.h
@@ -0,0 +1,40 @@
+/*
+ * (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
+ */
+
+#ifndef __P3P440_H__
+#define __P3P440_H__
+
+#define CFG_GPIO_RDY (0x80000000 >> 11)
+#define CFG_MONARCH_IO (0x80000000 >> 18)
+#define CFG_EREADY_IO (0x80000000 >> 20)
+#define CFG_LED_GREEN (0x80000000 >> 21)
+#define CFG_LED_RED (0x80000000 >> 22)
+
+#define LED_OFF 1
+#define LED_GREEN 2
+#define LED_RED 3
+#define LED_ORANGE 4
+
+long int fixed_sdram(void);
+
+#endif /* __P3P440_H__ */
diff --git a/board/prodrive/p3p440/u-boot.lds b/board/prodrive/p3p440/u-boot.lds
new file mode 100644
index 00000000000..92bb740e453
--- /dev/null
+++ b/board/prodrive/p3p440/u-boot.lds
@@ -0,0 +1,157 @@
+/*
+ * (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/prodrive/p3p440/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/psyent/pci5441/u-boot.lds b/board/psyent/pci5441/u-boot.lds
index b99b82c826c..8f9cd8fa598 100644
--- a/board/psyent/pci5441/u-boot.lds
+++ b/board/psyent/pci5441/u-boot.lds
@@ -46,6 +46,7 @@ SECTIONS
* the initialization code relocates the command table as
* well -- admittedly, this is just pure laziness ;-)
*/
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd :
{
diff --git a/board/psyent/pk1c20/u-boot.lds b/board/psyent/pk1c20/u-boot.lds
index b99b82c826c..8f9cd8fa598 100644
--- a/board/psyent/pk1c20/u-boot.lds
+++ b/board/psyent/pk1c20/u-boot.lds
@@ -46,6 +46,7 @@ SECTIONS
* the initialization code relocates the command table as
* well -- admittedly, this is just pure laziness ;-)
*/
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd :
{
diff --git a/board/purple/u-boot.lds b/board/purple/u-boot.lds
index aeea5d475e4..1bdac1f4a6f 100644
--- a/board/purple/u-boot.lds
+++ b/board/purple/u-boot.lds
@@ -64,6 +64,7 @@ SECTIONS
.sdata : { *(.sdata) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/pxa255_idp/Makefile b/board/pxa255_idp/Makefile
new file mode 100644
index 00000000000..b5f352a6f6d
--- /dev/null
+++ b/board/pxa255_idp/Makefile
@@ -0,0 +1,48 @@
+
+#
+# (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 $(TOPDIR)/config.mk
+
+LIB = lib$(BOARD).a
+
+OBJS := pxa_idp.o
+SOBJS := memsetup.o
+
+$(LIB): $(OBJS) $(SOBJS)
+ $(AR) crv $@ $(OBJS) $(SOBJS)
+
+clean:
+ rm -f $(SOBJS) $(OBJS)
+
+distclean: clean
+ rm -f $(LIB) core *.bak .depend
+
+#########################################################################
+
+.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
+ $(CC) -M $(CPPFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
+
+-include .depend
+
+#########################################################################
diff --git a/board/pxa255_idp/README b/board/pxa255_idp/README
new file mode 100644
index 00000000000..0cc2f2ae33e
--- /dev/null
+++ b/board/pxa255_idp/README
@@ -0,0 +1,11 @@
+Tested:
+
+- MMC
+- Ethernet
+- BL console (on serial port connector J5)
+- flash support
+
+Todo:
+
+- display support
+- PCMCIA support
diff --git a/board/pxa255_idp/config.mk b/board/pxa255_idp/config.mk
new file mode 100644
index 00000000000..d2a2040e689
--- /dev/null
+++ b/board/pxa255_idp/config.mk
@@ -0,0 +1,3 @@
+#TEXT_BASE = 0xa1700000
+TEXT_BASE = 0xa3000000
+#TEXT_BASE = 0
diff --git a/board/pxa255_idp/idp_notes.txt b/board/pxa255_idp/idp_notes.txt
new file mode 100644
index 00000000000..47467485fe8
--- /dev/null
+++ b/board/pxa255_idp/idp_notes.txt
@@ -0,0 +1,46 @@
+Notes on the Vibren PXA255 IDP.
+
+Chip select usage:
+
+CS0 - flash
+CS1 - alt flash (Mdoc or main flash)
+CS2 - high speed expansion bus
+CS3 - Media Q, low speed exp bus
+CS4 - low speed exp bus
+CS5 - low speed exp bus
+ - IDE: offset 0x03000000 (abs: 0x17000000)
+ - Eth: offset 0x03400000 (abs: 0x17400000)
+ - core voltage latch: offset 0x03800000 (abs: 0x17800000)
+ - CPLD: offset 0x03C00000 (abs: 0x17C00000)
+
+PCMCIA Power control
+
+MAX1602EE w/ code pulled high (Cirrus code)
+vx = 5v
+vy = 3v
+
+ Bit pattern
+ PWR 3,2,1,0
+vcc vpp A1VCC A0VCC A1VPP A0VPP
+=====================================================
+0 0 0 0 0 0 0x0
+3 (vy) 0 1 0 1 1 0xB
+3 (vy) 3 (vy) 1 0 0 1 0x9
+3 (vy) 12(12in) 1 0 1 0 0xA
+5 (vx) 0 0 1 1 1 0x7
+5 (vx) 5 (vx) 0 1 0 1 0x5
+5 (vx 12(12in) 0 1 1 0 0x6
+
+Display power sequencing:
+
+- VDD applied
+- within 1sec, activate scanning signals
+- wait at least 50mS - scanning signals must be active before activating DISP
+
+Signal mapping:
+Schematic LV8V31 signal name
+=========================================
+LCD_ENAVLCD DISP
+LCD_PWR Applies VDD to board
+
+Both of the above signals are controlled by the CPLD
diff --git a/board/pxa255_idp/memsetup.S b/board/pxa255_idp/memsetup.S
new file mode 100644
index 00000000000..7e485a28a61
--- /dev/null
+++ b/board/pxa255_idp/memsetup.S
@@ -0,0 +1,496 @@
+/*
+ * 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/memsetup.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 memsetup
+memsetup:
+
+ mov r10, lr
+
+#ifdef DEBUG_BLINK_ENABLE
+ /* 3rd blink */
+ bl blink
+#endif
+
+ /* 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]
+
+#ifdef DEBUG_BLINK_ENABLE
+ /* 4th debug blink */
+ bl blink
+#endif
+
+ /* ---------------------------------------------------------------- */
+ /* 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]
+
+#ifdef DEBUG_BLINK_ENABLE
+ /* 5th blink */
+ bl blink
+#endif
+
+ /* ---------------------------------------------------------------- */
+ /* 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 */
+#if 0
+ /* FIXME turn on serial ports */
+ /* look into moving this to board_init() */
+ ldr r2, =(PXA_CS5_PHYS + 0x03C0002c)
+ mov r3, #0x13
+ str r3, [r2]
+#endif
+
+#ifdef DEBUG_BLINK_ENABLE
+ /* 6th blink */
+ bl blink
+#endif
+
+ /* ---------------------------------------------------------------- */
+ /* 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 */
+#if 0
+ 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]
+
+#endif
+
+#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 memsetup */
+ /* ---------------------------------------------------------------- */
+
+#ifdef DEBUG_BLINK_ENABLE
+ /* 7th blink */
+ bl blink
+#endif
+
+endmemsetup:
+
+ mov pc, r10
+
+
+#ifdef DEBUG_BLINK_ENABLE
+
+/* debug LED code */
+
+/* delay about 200ms */
+delay:
+
+ /* reset OSCR to 0 */
+ ldr r8, =OSCR
+ mov r9, #0
+ str r9, [r8]
+
+ /* make sure new value has stuck */
+1:
+ ldr r8, =OSCR
+ ldr r9, [r8]
+ mov r8, #0x10000
+ cmp r9, r8
+ bgt 1b
+
+ /* now, wait for delay to expire */
+1:
+ ldr r8, =OSCR
+ ldr r9, [r8]
+ mov r8, #0xd4000
+ cmp r8, r9
+ bgt 1b
+
+ mov pc, lr
+
+/* blink code -- trashes r7, r8, r9 */
+
+.globl blink
+blink:
+
+ mov r7, lr
+
+ /* set GPIO10 as outout */
+ ldr r8, =GPDR0
+ ldr r9, [r8]
+ orr r9, r9, #(1<<10)
+ str r9, [r8]
+
+ /* turn LED off */
+ mov r9, #(1<<10)
+ ldr r8, =GPCR0
+ str r9, [r8]
+ bl delay
+
+ /* turn LED on */
+ mov r9, #(1<<10)
+ ldr r8, =GPSR0
+ str r9, [r8]
+ bl delay
+
+ /* turn LED off */
+ mov r9, #(1<<10)
+ ldr r8, =GPCR0
+ str r9, [r8]
+
+ mov pc, r7
+
+#endif
diff --git a/board/pxa255_idp/pxa_idp.c b/board/pxa255_idp/pxa_idp.c
new file mode 100644
index 00000000000..d5b993ae551
--- /dev/null
+++ b/board/pxa255_idp/pxa_idp.c
@@ -0,0 +1,140 @@
+/*
+ * (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 2004
+ * BEC Systems <http://bec-systems.com>
+ * Cliff Brake <cliff.brake@gmail.com>
+ * Support for Accelent/Vibren PXA255 IDP
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this 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>
+
+/* ------------------------------------------------------------------------- */
+
+
+/*
+ * Miscelaneous platform dependent initialisations
+ */
+
+int board_init (void)
+{
+ DECLARE_GLOBAL_DATA_PTR;
+
+ /* 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_PXA_IDP;
+
+ /* adress of boot parameters */
+ gd->bd->bi_boot_params = 0xa0000100;
+
+ /* turn on serial ports */
+ *(volatile unsigned int *)(PXA_CS5_PHYS + 0x03C0002c) = 0x13;
+
+ /* set PWM for LCD */
+ /* a value that works is 60Hz, 77% duty cycle */
+ CKEN |= CKEN0_PWM0;
+ PWM_CTRL0 = 0x3f;
+ PWM_PERVAL0 = 0x3ff;
+ PWM_PWDUTY0 = 792;
+
+ /* clear reset to AC97 codec */
+ CKEN |= CKEN2_AC97;
+ GCR = GCR_COLD_RST;
+
+ /* enable LCD backlight */
+ /* *(volatile unsigned int *)(PXA_CS5_PHYS + 0x03C00030) = 0x7; */
+
+ /* test display */
+ /* lcd_puts("This is a test\nTest #2\n"); */
+
+ return 0;
+}
+
+int board_late_init(void)
+{
+ setenv("stdout", "serial");
+ setenv("stderr", "serial");
+ 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;
+ 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;
+}
+
+
+#ifdef DEBUG_BLINKC_ENABLE
+
+void delay_c(void)
+{
+ /* reset OSCR to 0 */
+ OSCR = 0;
+ while(OSCR > 0x10000)
+ ;
+
+ while(OSCR < 0xd4000)
+ ;
+}
+
+void blink_c(void)
+{
+ int led_bit = (1<<10);
+
+ GPDR0 = led_bit;
+ GPCR0 = led_bit;
+ delay_c();
+ GPSR0 = led_bit;
+ delay_c();
+ GPCR0 = led_bit;
+}
+
+int do_idpcmd(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+ printf("IDPCMD started\n");
+ return 0;
+}
+
+U_BOOT_CMD(idpcmd, CFG_MAXARGS, 0, do_idpcmd,
+ "idpcmd - custom IDP command\n",
+ "no args at this time\n"
+);
+
+#endif
diff --git a/board/pxa255_idp/pxa_reg_calcs.out b/board/pxa255_idp/pxa_reg_calcs.out
new file mode 100644
index 00000000000..bda9946c1c7
--- /dev/null
+++ b/board/pxa255_idp/pxa_reg_calcs.out
@@ -0,0 +1,119 @@
+gafr0_l: 0x80001005
+gafr0_u: 0xa5128012
+gafr1_l: 0x699a9558
+gafr1_u: 0xaaa5aa6a
+gafr2_l: 0xaaaaaaaa
+gafr2_u: 0x2
+gpcr0: 0x1800400
+gpcr1: 0x0
+gpcr2: 0x0
+gpdr0: 0xc1818440
+gpdr1: 0xfcffab82
+gpdr2: 0x1ffff
+gpsr0: 0x8000
+gpsr1: 0x3f0002
+gpsr2: 0x1c000
+
+
+#define CFG_GAFR0_L_VAL 0x80001005
+#define CFG_GAFR0_U_VAL 0xa5128012
+#define CFG_GAFR1_L_VAL 0x699a9558
+#define CFG_GAFR1_U_VAL 0xaaa5aa6a
+#define CFG_GAFR2_L_VAL 0xaaaaaaaa
+#define CFG_GAFR2_U_VAL 0x2
+#define CFG_GPCR0_VAL 0x1800400
+#define CFG_GPCR1_VAL 0x0
+#define CFG_GPCR2_VAL 0x0
+#define CFG_GPDR0_VAL 0xc1818440
+#define CFG_GPDR1_VAL 0xfcffab82
+#define CFG_GPDR2_VAL 0x1ffff
+#define CFG_GPSR0_VAL 0x8000
+#define CFG_GPSR1_VAL 0x3f0002
+#define CFG_GPSR2_VAL 0x1c000
+
+
+GPIO: 0, dir=0, set=0, clr=0, alt=none, desc=USER_RESET#
+GPIO: 1, dir=0, set=0, clr=0, alt=gpio reset, desc=USER_RESET#
+GPIO: 2, dir=0, set=0, clr=0, alt=gpio, desc=BAT_DATA
+GPIO: 3, dir=0, set=0, clr=0, alt=gpio, desc=MQ_IRQ#
+GPIO: 4, dir=0, set=0, clr=0, alt=gpio, desc=IRQ_ETH
+GPIO: 5, dir=0, set=0, clr=0, alt=gpio, desc=IRQ_TOUCH#
+GPIO: 6, dir=1, set=0, clr=0, alt=MMC clk, desc=MMC_CLK
+GPIO: 7, dir=0, set=0, clr=0, alt=gpio, desc=PCC_S0_CD#
+GPIO: 8, dir=0, set=0, clr=0, alt=gpio, desc=PCC_S1_CD#
+GPIO: 9, dir=0, set=0, clr=0, alt=gpio, desc=MMC_CD#
+GPIO: 10, dir=1, set=0, clr=1, alt=gpio, desc=GPIO_10/RTC_CLK/debug LED
+GPIO: 11, dir=0, set=0, clr=0, alt=gpio, desc=3M6_CLK
+GPIO: 12, dir=0, set=0, clr=0, alt=gpio, desc=GPIO_12/32K_CLK
+GPIO: 13, dir=0, set=0, clr=0, alt=gpio, desc=MBGNT
+GPIO: 14, dir=0, set=0, clr=0, alt=gpio, desc=MBREQ
+GPIO: 15, dir=1, set=1, clr=0, alt=nCS_1, desc=CS1#
+GPIO: 16, dir=1, set=0, clr=0, alt=PWM0, desc=PWM0
+GPIO: 17, dir=0, set=0, clr=0, alt=gpio, desc=IRQ_AXB
+GPIO: 18, dir=0, set=0, clr=0, alt=RDY, desc=RDY
+GPIO: 19, dir=0, set=0, clr=0, alt=gpio, desc=XB_DREQ1, PCC_SO_IRQ_O#
+GPIO: 20, dir=0, set=0, clr=0, alt=gpio, desc=XB_DREQ0
+GPIO: 21, dir=0, set=0, clr=0, alt=gpio, desc=IRQ_IDE, PFI
+GPIO: 22, dir=0, set=0, clr=0, alt=gpio, desc=Consumer IR, PCC_S1_IRQ_O#
+GPIO: 23, dir=1, set=0, clr=1, alt=SSP SCLK, desc=SSP_SCLK
+GPIO: 24, dir=1, set=0, clr=1, alt=SSP SFRM, desc=SSP_SFRM
+GPIO: 25, dir=0, set=0, clr=0, alt=gpio, desc=SSP_TXD
+GPIO: 26, dir=0, set=0, clr=0, alt=SSP RXD, desc=SSP_RXD
+GPIO: 27, dir=0, set=0, clr=0, alt=gpio, desc=SSP_EXTCLK
+GPIO: 28, dir=0, set=0, clr=0, alt=AC97 bitclk in, I2S bitclock out, desc=AC_BITCLK
+GPIO: 29, dir=0, set=0, clr=0, alt=AC97 SDATA_IN0, desc=AUD_SDIN0
+GPIO: 30, dir=1, set=0, clr=0, alt=AC97 SDATA_OUT, desc=AC_SDOUT
+GPIO: 31, dir=1, set=0, clr=0, alt=AC97 SYNC, desc=AC_SYNC
+GPIO: 32, dir=0, set=0, clr=0, alt=gpio, desc=AUD_SDIN1
+GPIO: 33, dir=1, set=1, clr=0, alt=nCS_5, desc=CS5#
+GPIO: 34, dir=0, set=0, clr=0, alt=FF RXD, desc=FF_RXD
+GPIO: 35, dir=0, set=0, clr=0, alt=FF CTS, desc=FF_CTS
+GPIO: 36, dir=0, set=0, clr=0, alt=FF DCD, desc=FF_DCD
+GPIO: 37, dir=0, set=0, clr=0, alt=FF DSR, desc=FF_DSR
+GPIO: 38, dir=0, set=0, clr=0, alt=FF RI, desc=FF_RI
+GPIO: 39, dir=1, set=0, clr=0, alt=FF TXD, desc=FF_TXD
+GPIO: 40, dir=1, set=0, clr=0, alt=FF DTR, desc=FF_DTR
+GPIO: 41, dir=1, set=0, clr=0, alt=FF RTS, desc=FF_RTS
+GPIO: 42, dir=0, set=0, clr=0, alt=BT RXD, desc=BT_RXD
+GPIO: 43, dir=1, set=0, clr=0, alt=BT TXD, desc=BT_TXD
+GPIO: 44, dir=0, set=0, clr=0, alt=BT CTS, desc=BT_CTS
+GPIO: 45, dir=1, set=0, clr=0, alt=BT RTS, desc=BT_RTS
+GPIO: 46, dir=0, set=0, clr=0, alt=STD RXD, desc=IR_RXD
+GPIO: 47, dir=1, set=0, clr=0, alt=STD TXD, desc=IR_TXD
+GPIO: 48, dir=1, set=1, clr=0, alt=nPOE, desc=PCC_OE#
+GPIO: 49, dir=1, set=1, clr=0, alt=nPWE, desc=PCC_WE#
+GPIO: 50, dir=1, set=1, clr=0, alt=nPIOR, desc=PCC_IOR#
+GPIO: 51, dir=1, set=1, clr=0, alt=nPIOW, desc=PCC_IOW#
+GPIO: 52, dir=1, set=1, clr=0, alt=nPCE[1], desc=PCC_CE1#
+GPIO: 53, dir=1, set=1, clr=0, alt=nPCE[2], desc=PCC_CE2#
+GPIO: 54, dir=1, set=0, clr=0, alt=nPSKSEL, desc=PCC_SCKSEL
+GPIO: 55, dir=1, set=0, clr=0, alt=nPREG, desc=PCC_REG#
+GPIO: 56, dir=0, set=0, clr=0, alt=nPWAIT, desc=PCC_WAIT#
+GPIO: 57, dir=0, set=0, clr=0, alt=nIOIS16, desc=PCC_IOIS16#
+GPIO: 58, dir=1, set=0, clr=0, alt=LDD[0], desc=LDD0
+GPIO: 59, dir=1, set=0, clr=0, alt=LDD[1], desc=LDD1
+GPIO: 60, dir=1, set=0, clr=0, alt=LDD[2], desc=LDD2
+GPIO: 61, dir=1, set=0, clr=0, alt=LDD[3], desc=LDD3
+GPIO: 62, dir=1, set=0, clr=0, alt=LDD[4], desc=LDD4
+GPIO: 63, dir=1, set=0, clr=0, alt=LDD[5], desc=LDD5
+GPIO: 64, dir=1, set=0, clr=0, alt=LDD[6], desc=LDD6
+GPIO: 65, dir=1, set=0, clr=0, alt=LDD[7], desc=LDD7
+GPIO: 66, dir=1, set=0, clr=0, alt=LDD[8], desc=LDD8
+GPIO: 67, dir=1, set=0, clr=0, alt=LDD[9], desc=LDD9
+GPIO: 68, dir=1, set=0, clr=0, alt=LDD[10], desc=LDD10
+GPIO: 69, dir=1, set=0, clr=0, alt=LDD[11], desc=LDD11
+GPIO: 70, dir=1, set=0, clr=0, alt=LDD[12], desc=LDD12
+GPIO: 71, dir=1, set=0, clr=0, alt=LDD[13], desc=LDD13
+GPIO: 72, dir=1, set=0, clr=0, alt=LDD[14], desc=LDD14
+GPIO: 73, dir=1, set=0, clr=0, alt=LDD[15], desc=LDD15
+GPIO: 74, dir=1, set=0, clr=0, alt=LCD_FCLK, desc=FCLK
+GPIO: 75, dir=1, set=0, clr=0, alt=LCD_LCLK, desc=LCLK
+GPIO: 76, dir=1, set=0, clr=0, alt=LCD_PCLK, desc=PCLK
+GPIO: 77, dir=1, set=0, clr=0, alt=LCD_ACBIAS, desc=ACBIAS
+GPIO: 78, dir=1, set=1, clr=0, alt=nCS_2, desc=CS2#
+GPIO: 79, dir=1, set=1, clr=0, alt=nCS_3, desc=CS3#
+GPIO: 80, dir=1, set=1, clr=0, alt=nCS_4, desc=CS4#
+GPIO: 81, dir=0, set=0, clr=0, alt=gpio, desc=
+GPIO: 82, dir=0, set=0, clr=0, alt=gpio, desc=
+GPIO: 83, dir=0, set=0, clr=0, alt=gpio, desc=
+GPIO: 84, dir=0, set=0, clr=0, alt=gpio, desc=
diff --git a/board/pxa255_idp/pxa_reg_calcs.py b/board/pxa255_idp/pxa_reg_calcs.py
new file mode 100644
index 00000000000..c4bcb4b0add
--- /dev/null
+++ b/board/pxa255_idp/pxa_reg_calcs.py
@@ -0,0 +1,311 @@
+#!/usr/bin/python
+
+# (C) Copyright 2004
+# BEC Systems <http://bec-systems.com>
+# Cliff Brake <cliff.brake@gmail.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
+
+# calculations for PXA255 registers
+
+class gpio:
+ dir = '0'
+ set = '0'
+ clr = '0'
+ alt = '0'
+ desc = ''
+
+ def __init__(self, dir=0, set=0, clr=0, alt=0, desc=''):
+ self.dir = dir
+ self.set = set
+ self.clr = clr
+ self.alt = alt
+ self.desc = desc
+
+
+# the following is a dictionary of all GPIOs in the system
+# the key is the GPIO number
+
+
+pxa255_alt_func = {
+ 0: ['gpio', 'none', 'none', 'none'],
+ 1: ['gpio', 'gpio reset', 'none', 'none'],
+ 2: ['gpio', 'none', 'none', 'none'],
+ 3: ['gpio', 'none', 'none', 'none'],
+ 4: ['gpio', 'none', 'none', 'none'],
+ 5: ['gpio', 'none', 'none', 'none'],
+ 6: ['gpio', 'MMC clk', 'none', 'none'],
+ 7: ['gpio', '48MHz clock', 'none', 'none'],
+ 8: ['gpio', 'MMC CS0', 'none', 'none'],
+ 9: ['gpio', 'MMC CS1', 'none', 'none'],
+ 10: ['gpio', 'RTC Clock', 'none', 'none'],
+ 11: ['gpio', '3.6MHz', 'none', 'none'],
+ 12: ['gpio', '32KHz', 'none', 'none'],
+ 13: ['gpio', 'none', 'MBGNT', 'none'],
+ 14: ['gpio', 'MBREQ', 'none', 'none'],
+ 15: ['gpio', 'none', 'nCS_1', 'none'],
+ 16: ['gpio', 'none', 'PWM0', 'none'],
+ 17: ['gpio', 'none', 'PWM1', 'none'],
+ 18: ['gpio', 'RDY', 'none', 'none'],
+ 19: ['gpio', 'DREQ[1]', 'none', 'none'],
+ 20: ['gpio', 'DREQ[0]', 'none', 'none'],
+ 21: ['gpio', 'none', 'none', 'none'],
+ 22: ['gpio', 'none', 'none', 'none'],
+ 23: ['gpio', 'none', 'SSP SCLK', 'none'],
+ 24: ['gpio', 'none', 'SSP SFRM', 'none'],
+ 25: ['gpio', 'none', 'SSP TXD', 'none'],
+ 26: ['gpio', 'SSP RXD', 'none', 'none'],
+ 27: ['gpio', 'SSP EXTCLK', 'none', 'none'],
+ 28: ['gpio', 'AC97 bitclk in, I2S bitclock out', 'I2S bitclock in', 'none'],
+ 29: ['gpio', 'AC97 SDATA_IN0', 'I2S SDATA_IN', 'none'],
+ 30: ['gpio', 'I2S SDATA_OUT', 'AC97 SDATA_OUT', 'none'],
+ 31: ['gpio', 'I2S SYNC', 'AC97 SYNC', 'none'],
+ 32: ['gpio', 'AC97 SDATA_IN1', 'I2S SYSCLK', 'none'],
+ 33: ['gpio', 'none', 'nCS_5', 'none'],
+ 34: ['gpio', 'FF RXD', 'MMC CS0', 'none'],
+ 35: ['gpio', 'FF CTS', 'none', 'none'],
+ 36: ['gpio', 'FF DCD', 'none', 'none'],
+ 37: ['gpio', 'FF DSR', 'none', 'none'],
+ 38: ['gpio', 'FF RI', 'none', 'none'],
+ 39: ['gpio', 'MMC CS1', 'FF TXD', 'none'],
+ 40: ['gpio', 'none', 'FF DTR', 'none'],
+ 41: ['gpio', 'none', 'FF RTS', 'none'],
+ 42: ['gpio', 'BT RXD', 'none', 'HW RXD'],
+ 43: ['gpio', 'none', 'BT TXD', 'HW TXD'],
+ 44: ['gpio', 'BT CTS', 'none', 'HW CTS'],
+ 45: ['gpio', 'none', 'BT RTS', 'HW RTS'],
+ 46: ['gpio', 'ICP_RXD', 'STD RXD', 'none'],
+ 47: ['gpio', 'STD TXD', 'ICP_TXD', 'none'],
+ 48: ['gpio', 'HW TXD', 'nPOE', 'none'],
+ 49: ['gpio', 'HW RXD', 'nPWE', 'none'],
+ 50: ['gpio', 'HW CTS', 'nPIOR', 'none'],
+ 51: ['gpio', 'nPIOW', 'HW RTS', 'none'],
+ 52: ['gpio', 'none', 'nPCE[1]', 'none'],
+ 53: ['gpio', 'MMC CLK', 'nPCE[2]', 'none'],
+ 54: ['gpio', 'MMC CLK', 'nPSKSEL', 'none'],
+ 55: ['gpio', 'none', 'nPREG', 'none'],
+ 56: ['gpio', 'nPWAIT', 'none', 'none'],
+ 57: ['gpio', 'nIOIS16', 'none', 'none'],
+ 58: ['gpio', 'none', 'LDD[0]', 'none'],
+ 59: ['gpio', 'none', 'LDD[1]', 'none'],
+ 60: ['gpio', 'none', 'LDD[2]', 'none'],
+ 61: ['gpio', 'none', 'LDD[3]', 'none'],
+ 62: ['gpio', 'none', 'LDD[4]', 'none'],
+ 63: ['gpio', 'none', 'LDD[5]', 'none'],
+ 64: ['gpio', 'none', 'LDD[6]', 'none'],
+ 65: ['gpio', 'none', 'LDD[7]', 'none'],
+ 66: ['gpio', 'MBREQ', 'LDD[8]', 'none'],
+ 67: ['gpio', 'MMC CS0', 'LDD[9]', 'none'],
+ 68: ['gpio', 'MMC CS1', 'LDD[10]', 'none'],
+ 69: ['gpio', 'MMC CLK', 'LDD[11]', 'none'],
+ 70: ['gpio', 'RTC CLK', 'LDD[12]', 'none'],
+ 71: ['gpio', '3.6 MHz', 'LDD[13]', 'none'],
+ 72: ['gpio', '32 KHz', 'LDD[14]', 'none'],
+ 73: ['gpio', 'MBGNT', 'LDD[15]', 'none'],
+ 74: ['gpio', 'none', 'LCD_FCLK', 'none'],
+ 75: ['gpio', 'none', 'LCD_LCLK', 'none'],
+ 76: ['gpio', 'none', 'LCD_PCLK', 'none'],
+ 77: ['gpio', 'none', 'LCD_ACBIAS', 'none'],
+ 78: ['gpio', 'none', 'nCS_2', 'none'],
+ 79: ['gpio', 'none', 'nCS_3', 'none'],
+ 80: ['gpio', 'none', 'nCS_4', 'none'],
+ 81: ['gpio', 'NSSPSCLK', 'none', 'none'],
+ 82: ['gpio', 'NSSPSFRM', 'none', 'none'],
+ 83: ['gpio', 'NSSPTXD', 'NSSPRXD', 'none'],
+ 84: ['gpio', 'NSSPTXD', 'NSSPRXD', 'none'],
+}
+
+
+#def __init__(self, dir=0, set=0, clr=0, alt=0, desc=''):
+
+gpio_list = []
+
+for i in range(0,85):
+ gpio_list.append(gpio())
+
+#chip select GPIOs
+gpio_list[18] = gpio(0, 0, 0, 1, 'RDY')
+gpio_list[33] = gpio(1, 1, 0, 2, 'CS5#')
+gpio_list[80] = gpio(1, 1, 0, 2, 'CS4#')
+gpio_list[79] = gpio(1, 1, 0, 2, 'CS3#')
+gpio_list[78] = gpio(1, 1, 0, 2, 'CS2#')
+gpio_list[15] = gpio(1, 1, 0, 2, 'CS1#')
+gpio_list[22] = gpio(0, 0, 0, 0, 'Consumer IR, PCC_S1_IRQ_O#')
+gpio_list[21] = gpio(0, 0, 0, 0, 'IRQ_IDE, PFI')
+gpio_list[19] = gpio(0, 0, 0, 0, 'XB_DREQ1, PCC_SO_IRQ_O#')
+gpio_list[20] = gpio(0, 0, 0, 0, 'XB_DREQ0')
+gpio_list[20] = gpio(0, 0, 0, 0, 'XB_DREQ0')
+gpio_list[17] = gpio(0, 0, 0, 0, 'IRQ_AXB')
+gpio_list[16] = gpio(1, 0, 0, 2, 'PWM0')
+
+# PCMCIA stuff
+gpio_list[57] = gpio(0, 0, 0, 1, 'PCC_IOIS16#')
+gpio_list[56] = gpio(0, 0, 0, 1, 'PCC_WAIT#')
+gpio_list[55] = gpio(1, 0, 0, 2, 'PCC_REG#')
+gpio_list[54] = gpio(1, 0, 0, 2, 'PCC_SCKSEL')
+gpio_list[53] = gpio(1, 1, 0, 2, 'PCC_CE2#')
+gpio_list[52] = gpio(1, 1, 0, 2, 'PCC_CE1#')
+gpio_list[51] = gpio(1, 1, 0, 1, 'PCC_IOW#')
+gpio_list[50] = gpio(1, 1, 0, 2, 'PCC_IOR#')
+gpio_list[49] = gpio(1, 1, 0, 2, 'PCC_WE#')
+gpio_list[48] = gpio(1, 1, 0, 2, 'PCC_OE#')
+
+# SSP port
+gpio_list[26] = gpio(0, 0, 0, 1, 'SSP_RXD')
+gpio_list[25] = gpio(0, 0, 0, 0, 'SSP_TXD')
+gpio_list[24] = gpio(1, 0, 1, 2, 'SSP_SFRM')
+gpio_list[23] = gpio(1, 0, 1, 2, 'SSP_SCLK')
+gpio_list[27] = gpio(0, 0, 0, 0, 'SSP_EXTCLK')
+
+# audio codec
+gpio_list[32] = gpio(0, 0, 0, 0, 'AUD_SDIN1')
+gpio_list[31] = gpio(1, 0, 0, 2, 'AC_SYNC')
+gpio_list[30] = gpio(1, 0, 0, 2, 'AC_SDOUT')
+gpio_list[29] = gpio(0, 0, 0, 1, 'AUD_SDIN0')
+gpio_list[28] = gpio(0, 0, 0, 1, 'AC_BITCLK')
+
+# serial ports
+gpio_list[39] = gpio(1, 0, 0, 2, 'FF_TXD')
+gpio_list[34] = gpio(0, 0, 0, 1, 'FF_RXD')
+gpio_list[41] = gpio(1, 0, 0, 2, 'FF_RTS')
+gpio_list[35] = gpio(0, 0, 0, 1, 'FF_CTS')
+gpio_list[40] = gpio(1, 0, 0, 2, 'FF_DTR')
+gpio_list[37] = gpio(0, 0, 0, 1, 'FF_DSR')
+gpio_list[38] = gpio(0, 0, 0, 1, 'FF_RI')
+gpio_list[36] = gpio(0, 0, 0, 1, 'FF_DCD')
+
+gpio_list[43] = gpio(1, 0, 0, 2, 'BT_TXD')
+gpio_list[42] = gpio(0, 0, 0, 1, 'BT_RXD')
+gpio_list[45] = gpio(1, 0, 0, 2, 'BT_RTS')
+gpio_list[44] = gpio(0, 0, 0, 1, 'BT_CTS')
+
+gpio_list[47] = gpio(1, 0, 0, 1, 'IR_TXD')
+gpio_list[46] = gpio(0, 0, 0, 2, 'IR_RXD')
+
+# misc GPIO signals
+gpio_list[14] = gpio(0, 0, 0, 0, 'MBREQ')
+gpio_list[13] = gpio(0, 0, 0, 0, 'MBGNT')
+gpio_list[12] = gpio(0, 0, 0, 0, 'GPIO_12/32K_CLK')
+gpio_list[11] = gpio(0, 0, 0, 0, '3M6_CLK')
+gpio_list[10] = gpio(1, 0, 1, 0, 'GPIO_10/RTC_CLK/debug LED')
+gpio_list[9] = gpio(0, 0, 0, 0, 'MMC_CD#')
+gpio_list[8] = gpio(0, 0, 0, 0, 'PCC_S1_CD#')
+gpio_list[7] = gpio(0, 0, 0, 0, 'PCC_S0_CD#')
+gpio_list[6] = gpio(1, 0, 0, 1, 'MMC_CLK')
+gpio_list[5] = gpio(0, 0, 0, 0, 'IRQ_TOUCH#')
+gpio_list[4] = gpio(0, 0, 0, 0, 'IRQ_ETH')
+gpio_list[3] = gpio(0, 0, 0, 0, 'MQ_IRQ#')
+gpio_list[2] = gpio(0, 0, 0, 0, 'BAT_DATA')
+gpio_list[1] = gpio(0, 0, 0, 1, 'USER_RESET#')
+gpio_list[0] = gpio(0, 0, 0, 1, 'USER_RESET#')
+
+# LCD GPIOs
+gpio_list[58] = gpio(1, 0, 0, 2, 'LDD0')
+gpio_list[59] = gpio(1, 0, 0, 2, 'LDD1')
+gpio_list[60] = gpio(1, 0, 0, 2, 'LDD2')
+gpio_list[61] = gpio(1, 0, 0, 2, 'LDD3')
+gpio_list[62] = gpio(1, 0, 0, 2, 'LDD4')
+gpio_list[63] = gpio(1, 0, 0, 2, 'LDD5')
+gpio_list[64] = gpio(1, 0, 0, 2, 'LDD6')
+gpio_list[65] = gpio(1, 0, 0, 2, 'LDD7')
+gpio_list[66] = gpio(1, 0, 0, 2, 'LDD8')
+gpio_list[67] = gpio(1, 0, 0, 2, 'LDD9')
+gpio_list[68] = gpio(1, 0, 0, 2, 'LDD10')
+gpio_list[69] = gpio(1, 0, 0, 2, 'LDD11')
+gpio_list[70] = gpio(1, 0, 0, 2, 'LDD12')
+gpio_list[71] = gpio(1, 0, 0, 2, 'LDD13')
+gpio_list[72] = gpio(1, 0, 0, 2, 'LDD14')
+gpio_list[73] = gpio(1, 0, 0, 2, 'LDD15')
+gpio_list[74] = gpio(1, 0, 0, 2, 'FCLK')
+gpio_list[75] = gpio(1, 0, 0, 2, 'LCLK')
+gpio_list[76] = gpio(1, 0, 0, 2, 'PCLK')
+gpio_list[77] = gpio(1, 0, 0, 2, 'ACBIAS')
+
+# calculate registers
+pxa_regs = {
+ 'gpdr0':0, 'gpdr1':0, 'gpdr2':0,
+ 'gpsr0':0, 'gpsr1':0, 'gpsr2':0,
+ 'gpcr0':0, 'gpcr1':0, 'gpcr2':0,
+ 'gafr0_l':0, 'gafr0_u':0,
+ 'gafr1_l':0, 'gafr1_u':0,
+ 'gafr2_l':0, 'gafr2_u':0,
+}
+
+# U-boot define names
+uboot_reg_names = {
+ 'gpdr0':'CFG_GPDR0_VAL', 'gpdr1':'CFG_GPDR1_VAL', 'gpdr2':'CFG_GPDR2_VAL',
+ 'gpsr0':'CFG_GPSR0_VAL', 'gpsr1':'CFG_GPSR1_VAL', 'gpsr2':'CFG_GPSR2_VAL',
+ 'gpcr0':'CFG_GPCR0_VAL', 'gpcr1':'CFG_GPCR1_VAL', 'gpcr2':'CFG_GPCR2_VAL',
+ 'gafr0_l':'CFG_GAFR0_L_VAL', 'gafr0_u':'CFG_GAFR0_U_VAL',
+ 'gafr1_l':'CFG_GAFR1_L_VAL', 'gafr1_u':'CFG_GAFR1_U_VAL',
+ 'gafr2_l':'CFG_GAFR2_L_VAL', 'gafr2_u':'CFG_GAFR2_U_VAL',
+}
+
+# bit mappings
+
+bit_mappings = [
+
+{ 'gpio':(0,32), 'shift':1, 'regs':{'dir':'gpdr0', 'set':'gpsr0', 'clr':'gpcr0'} },
+{ 'gpio':(32,64), 'shift':1, 'regs':{'dir':'gpdr1', 'set':'gpsr1', 'clr':'gpcr1'} },
+{ 'gpio':(64,85), 'shift':1, 'regs':{'dir':'gpdr2', 'set':'gpsr2', 'clr':'gpcr2'} },
+{ 'gpio':(0,16), 'shift':2, 'regs':{'alt':'gafr0_l'} },
+{ 'gpio':(16,32), 'shift':2, 'regs':{'alt':'gafr0_u'} },
+{ 'gpio':(32,48), 'shift':2, 'regs':{'alt':'gafr1_l'} },
+{ 'gpio':(48,64), 'shift':2, 'regs':{'alt':'gafr1_u'} },
+{ 'gpio':(64,80), 'shift':2, 'regs':{'alt':'gafr2_l'} },
+{ 'gpio':(80,85), 'shift':2, 'regs':{'alt':'gafr2_u'} },
+
+]
+
+def stuff_bits(bit_mapping, gpio_list):
+ gpios = range( bit_mapping['gpio'][0], bit_mapping['gpio'][1])
+
+ for gpio in gpios:
+ for reg in bit_mapping['regs'].keys():
+ value = eval( 'gpio_list[gpio].%s' % (reg) )
+ if ( value ):
+ # we have a high bit
+ bit_shift = (gpio - bit_mapping['gpio'][0]) * bit_mapping['shift']
+ bit = value << (bit_shift)
+ pxa_regs[bit_mapping['regs'][reg]] |= bit
+
+for i in bit_mappings:
+ stuff_bits(i, gpio_list)
+
+# now print out all regs
+registers = pxa_regs.keys()
+registers.sort()
+for reg in registers:
+ print '%s: 0x%x' % (reg, pxa_regs[reg])
+
+# print define to past right into U-Boot source code
+
+print
+print
+
+for reg in registers:
+ print '#define %s 0x%x' % (uboot_reg_names[reg], pxa_regs[reg])
+
+# print all GPIOS
+print
+print
+
+for i in range(len(gpio_list)):
+ gpio_i = gpio_list[i]
+ alt_func_desc = pxa255_alt_func[i][gpio_i.alt]
+ print 'GPIO: %i, dir=%i, set=%i, clr=%i, alt=%s, desc=%s' % (i, gpio_i.dir, gpio_i.set, gpio_i.clr, alt_func_desc, gpio_i.desc)
+
+
diff --git a/board/pxa255_idp/u-boot.lds b/board/pxa255_idp/u-boot.lds
new file mode 100644
index 00000000000..20ce1089389
--- /dev/null
+++ b/board/pxa255_idp/u-boot.lds
@@ -0,0 +1,55 @@
+/*
+ * (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
+ */
+
+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/quantum/quantum.c b/board/quantum/quantum.c
index 8a73448dc7c..2861bc3b166 100644
--- a/board/quantum/quantum.c
+++ b/board/quantum/quantum.c
@@ -87,7 +87,7 @@ const uint sdram_table[] = {
int checkboard (void)
{
- unsigned char *s = getenv ("serial#");
+ char *s = getenv ("serial#");
puts ("Board QUANTUM, Serial No: ");
@@ -136,7 +136,7 @@ long int initdram (int board_type)
/* Check Bank 0 Memory Size,
* 9 column mode
*/
- size9 = dram_size (CFG_MAMR_9COL, (ulong *) SDRAM_BASE_PRELIM,
+ size9 = dram_size (CFG_MAMR_9COL, (long *) SDRAM_BASE_PRELIM,
SDRAM_MAX_SIZE);
/*
* Final mapping:
@@ -162,7 +162,7 @@ static long int dram_size (long int mamr_value, long int *base,
{
volatile immap_t *immap = (immap_t *) CFG_IMMR;
volatile memctl8xx_t *memctl = &immap->im_memctl;
- volatile long int *addr;
+ volatile ulong *addr;
ulong cnt, val, size;
ulong save[32]; /* to make test non-destructive */
unsigned char i = 0;
diff --git a/board/quantum/u-boot.lds b/board/quantum/u-boot.lds
index 082d8b07cfb..049f9901f71 100644
--- a/board/quantum/u-boot.lds
+++ b/board/quantum/u-boot.lds
@@ -78,6 +78,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -110,11 +111,13 @@ SECTIONS
_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 = .;
diff --git a/board/quantum/u-boot.lds.debug b/board/quantum/u-boot.lds.debug
index f34c2a43937..894b9bd25b7 100644
--- a/board/quantum/u-boot.lds.debug
+++ b/board/quantum/u-boot.lds.debug
@@ -74,6 +74,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/r360mpi/r360mpi.c b/board/r360mpi/r360mpi.c
index 8ca08e25d1c..ffb4c0ecf9f 100644
--- a/board/r360mpi/r360mpi.c
+++ b/board/r360mpi/r360mpi.c
@@ -152,7 +152,7 @@ long int initdram (int board_type)
*
* try 8 column mode
*/
- size8 = dram_size (CFG_MAMR_8COL, (ulong *) SDRAM_BASE2_PRELIM,
+ size8 = dram_size (CFG_MAMR_8COL, (long *) SDRAM_BASE2_PRELIM,
SDRAM_MAX_SIZE);
udelay (1000);
@@ -160,7 +160,7 @@ long int initdram (int board_type)
/*
* try 9 column mode
*/
- size9 = dram_size (CFG_MAMR_9COL, (ulong *) SDRAM_BASE2_PRELIM,
+ size9 = dram_size (CFG_MAMR_9COL, (long *) SDRAM_BASE2_PRELIM,
SDRAM_MAX_SIZE);
if (size8 < size9) { /* leave configuration at 9 columns */
@@ -287,21 +287,21 @@ static uchar *key_match (uchar *);
int misc_init_r (void)
{
- uchar kbd_data[KEYBD_DATALEN];
- uchar keybd_env[2 * KEYBD_DATALEN + 1];
- uchar *str;
+ 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, kbd_data, KEYBD_DATALEN);
+ 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 (key_match (keybd_env)); /* decode keys */
+ 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 */
@@ -347,36 +347,36 @@ static uchar *key_match (uchar * kbd_str)
* "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) {
+ 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 (magic, "%s%c", kbd_magic_prefix, *suffix);
+ sprintf ((char *)magic, "%s%c", kbd_magic_prefix, *suffix);
#if 0
printf ("### Check magic \"%s\"\n", magic);
#endif
- if ((str = getenv (magic)) != 0) {
+ if ((str = (uchar *)getenv ((char *)magic)) != 0) {
#if 0
printf ("### Compare \"%s\" \"%s\"\n",
kbd_str, str);
#endif
- if (strcmp (kbd_str, str) == 0) {
- sprintf (cmd_name, "%s%c",
+ if (strcmp ((char *)kbd_str, (char *)str) == 0) {
+ sprintf ((char *)cmd_name, "%s%c",
kbd_command_prefix,
*suffix);
- if ((cmd = getenv (cmd_name)) != 0) {
+ if ((cmd = getenv ((char *)cmd_name)) != 0) {
#if 0
printf ("### Set PREBOOT to $(%s): \"%s\"\n",
cmd_name, cmd);
#endif
- return (cmd);
+ return ((uchar *)cmd);
}
}
}
@@ -404,11 +404,11 @@ int do_kbd (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
puts ("Keys:");
for (i = 0; i < KEYBD_DATALEN; ++i) {
- sprintf (keybd_env + i + i, "%02X", kbd_data[i]);
+ sprintf ((char *)(keybd_env + i + i), "%02X", kbd_data[i]);
printf (" %02x", kbd_data[i]);
}
putc ('\n');
- setenv ("keybd", keybd_env);
+ setenv ("keybd", (char *)keybd_env);
return 0;
}
diff --git a/board/r360mpi/u-boot.lds b/board/r360mpi/u-boot.lds
index f64b32f795d..8b06af78e47 100644
--- a/board/r360mpi/u-boot.lds
+++ b/board/r360mpi/u-boot.lds
@@ -75,6 +75,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -107,11 +108,13 @@ SECTIONS
_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 = .;
diff --git a/board/rattler/u-boot.lds b/board/rattler/u-boot.lds
index a0c086343bf..522e6daa539 100644
--- a/board/rattler/u-boot.lds
+++ b/board/rattler/u-boot.lds
@@ -60,6 +60,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -92,11 +93,13 @@ SECTIONS
_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 = .;
diff --git a/board/rbc823/flash.c b/board/rbc823/flash.c
index f12d0be5525..84ae5c1b5d6 100644
--- a/board/rbc823/flash.c
+++ b/board/rbc823/flash.c
@@ -188,12 +188,11 @@ static ulong flash_get_size (vu_long *addr, flash_info_t *info)
#endif
switch (value)
{
- case 0x01:
- case AMD_MANUFACT:
+ case 0x01: /*AMD_MANUFACT*/
info->flash_id = FLASH_MAN_AMD;
break;
- case FUJ_MANUFACT:
+ case 0x04: /*FUJ_MANUFACT*/
info->flash_id = FLASH_MAN_FUJ;
break;
diff --git a/board/rbc823/rbc823.c b/board/rbc823/rbc823.c
index d0ceb4a7d5c..9e60c2b6469 100644
--- a/board/rbc823/rbc823.c
+++ b/board/rbc823/rbc823.c
@@ -127,7 +127,7 @@ const uint static_table[] =
int checkboard (void)
{
- unsigned char *s = getenv ("serial#");
+ char *s = getenv ("serial#");
if (!s || strncmp (s, "TQM8", 4)) {
printf ("### No HW ID - assuming RBC823\n");
@@ -193,14 +193,14 @@ long int initdram (int board_type)
*
* try 8 column mode
*/
- size8 = dram_size (CFG_MAMR_8COL, (ulong *) SDRAM_BASE4_PRELIM,
+ 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, (ulong *) SDRAM_BASE4_PRELIM,
+ size9 = dram_size (CFG_MAMR_9COL, (long *) SDRAM_BASE4_PRELIM,
SDRAM_MAX_SIZE);
if (size8 < size9) { /* leave configuration at 9 columns */
diff --git a/board/rbc823/u-boot.lds b/board/rbc823/u-boot.lds
index 05f655571fb..68ca85644ea 100644
--- a/board/rbc823/u-boot.lds
+++ b/board/rbc823/u-boot.lds
@@ -77,6 +77,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -109,10 +110,12 @@ SECTIONS
_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 = .;
diff --git a/board/rmu/rmu.c b/board/rmu/rmu.c
index cf00efc78b0..8cb03c7f849 100644
--- a/board/rmu/rmu.c
+++ b/board/rmu/rmu.c
@@ -127,7 +127,7 @@ long int initdram (int board_type)
* 9 column mode
*/
- size9 = dram_size (CFG_MAMR_9COL, (ulong *) SDRAM_BASE_PRELIM,
+ size9 = dram_size (CFG_MAMR_9COL, (long *) SDRAM_BASE_PRELIM,
SDRAM_MAX_SIZE);
/*
diff --git a/board/rmu/u-boot.lds b/board/rmu/u-boot.lds
index 082d8b07cfb..049f9901f71 100644
--- a/board/rmu/u-boot.lds
+++ b/board/rmu/u-boot.lds
@@ -78,6 +78,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -110,11 +111,13 @@ SECTIONS
_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 = .;
diff --git a/board/rmu/u-boot.lds.debug b/board/rmu/u-boot.lds.debug
index f34c2a43937..894b9bd25b7 100644
--- a/board/rmu/u-boot.lds.debug
+++ b/board/rmu/u-boot.lds.debug
@@ -74,6 +74,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/rpxsuper/u-boot.lds b/board/rpxsuper/u-boot.lds
index 44224cbdd08..9e623d0b934 100644
--- a/board/rpxsuper/u-boot.lds
+++ b/board/rpxsuper/u-boot.lds
@@ -61,6 +61,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -93,11 +94,13 @@ SECTIONS
_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 = .;
diff --git a/board/rsdproto/u-boot.lds b/board/rsdproto/u-boot.lds
index bdc75c13d74..70fc3a5d279 100644
--- a/board/rsdproto/u-boot.lds
+++ b/board/rsdproto/u-boot.lds
@@ -66,6 +66,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -98,11 +99,13 @@ SECTIONS
_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 = .;
diff --git a/board/sacsng/u-boot.lds b/board/sacsng/u-boot.lds
index 44224cbdd08..9e623d0b934 100644
--- a/board/sacsng/u-boot.lds
+++ b/board/sacsng/u-boot.lds
@@ -61,6 +61,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -93,11 +94,13 @@ SECTIONS
_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 = .;
diff --git a/board/sandburst/common/ppc440gx_i2c.c b/board/sandburst/common/ppc440gx_i2c.c
index 858b38ceccd..859dd7afe56 100644
--- a/board/sandburst/common/ppc440gx_i2c.c
+++ b/board/sandburst/common/ppc440gx_i2c.c
@@ -451,9 +451,9 @@ int i2c_write1 (uchar chip, uint addr, int alen, uchar * buffer, int len)
*/
uchar i2c_reg_read1(uchar i2c_addr, uchar reg)
{
- char buf;
+ uchar buf;
- i2c_read1(i2c_addr, reg, 1, &buf, 1);
+ i2c_read1(i2c_addr, reg, 1, &buf, (uchar)1);
return(buf);
}
diff --git a/board/sandburst/karef/karef.c b/board/sandburst/karef/karef.c
index 3856a399a54..2d71d3b2cc7 100644
--- a/board/sandburst/karef/karef.c
+++ b/board/sandburst/karef/karef.c
@@ -242,7 +242,7 @@ int checkboard (void)
sys_info_t sysinfo;
unsigned char brd_rev, brd_id;
unsigned short sernum;
- unsigned char scan_rev, scan_id, ofem_rev, ofem_id;
+ unsigned char scan_rev, scan_id, ofem_rev=0, ofem_id=0;
unsigned char ofem_brd_rev, ofem_brd_id;
KAREF_FPGA_REGS_ST *karef_ps;
OFEM_FPGA_REGS_ST *ofem_ps;
@@ -305,12 +305,6 @@ int checkboard (void)
printf("OFEM Board Rev:\t0x%02X\tID: 0x%02X\n", ofem_brd_id, ofem_brd_rev);
}
- 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);
-
/* Fix the ack in the bme 32 */
udelay(5000);
out32(CFG_BME32_BASE + 0x0000000C, 0x00000001);
@@ -349,7 +343,6 @@ int misc_init_r (void)
char envstr[255];
KAREF_FPGA_REGS_ST *karef_ps;
OFEM_FPGA_REGS_ST *ofem_ps;
- unsigned char ofem_id;
if(NULL != getenv("secondserial")) {
puts("secondserial is set, switching to second serial port\n");
diff --git a/board/sandburst/karef/karef.h b/board/sandburst/karef/karef.h
index 779081950a1..5de7cb51302 100644
--- a/board/sandburst/karef/karef.h
+++ b/board/sandburst/karef/karef.h
@@ -57,7 +57,7 @@ typedef struct karef_fpga_regs_s
volatile unsigned long brdout_enable_ul; /* Read/Write */
volatile unsigned long brdin_data_ul; /* Read Only */
volatile unsigned long misc_ul; /* Read/Write */
-} KAREF_FPGA_REGS_ST __attribute__((packed)), * KAREF_FPGA_REGS_PST;
+} __attribute__((packed)) KAREF_FPGA_REGS_ST , * KAREF_FPGA_REGS_PST;
/* OFEM FPGA */
typedef struct ofem_fpga_regs_s
@@ -70,7 +70,7 @@ typedef struct ofem_fpga_regs_s
volatile unsigned long scrmask_ul; /* Read/Write */
volatile unsigned long control_ul; /* Read/Write */
volatile unsigned long mac_flow_ctrl_ul; /* Read/Write */
-} OFEM_FPGA_REGS_ST __attribute__((packed)), * OFEM_FPGA_REGS_PST;
+} __attribute__((packed)) OFEM_FPGA_REGS_ST , * OFEM_FPGA_REGS_PST;
#endif /* __KAREF_H__ */
diff --git a/board/sandburst/karef/u-boot.lds b/board/sandburst/karef/u-boot.lds
index ff8658f2fcd..9e9e99045ff 100644
--- a/board/sandburst/karef/u-boot.lds
+++ b/board/sandburst/karef/u-boot.lds
@@ -75,7 +75,7 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/440gx_enet.o (.text)
+ cpu/ppc4xx/4xx_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -95,6 +95,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -127,11 +128,13 @@ SECTIONS
_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 = .;
diff --git a/board/sandburst/karef/u-boot.lds.debug b/board/sandburst/karef/u-boot.lds.debug
index c6522b939b3..47d80fae1b6 100644
--- a/board/sandburst/karef/u-boot.lds.debug
+++ b/board/sandburst/karef/u-boot.lds.debug
@@ -65,7 +65,7 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/440gx_enet.o (.text)
+ cpu/ppc4xx/4xx_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -84,6 +84,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/sandburst/metrobox/metrobox.c b/board/sandburst/metrobox/metrobox.c
index 869367dabaa..86d259fac4a 100644
--- a/board/sandburst/metrobox/metrobox.c
+++ b/board/sandburst/metrobox/metrobox.c
@@ -272,13 +272,6 @@ int checkboard (void)
printf ("OptoFPGA ID:\t0x%02X\tRev: 0x%02X\n", opto_id, opto_rev);
printf ("Board Rev:\t0x%02X\tID: %s\n", brd_rev, board_id_as[brd_id]);
- 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);
-
-
/* Fix the ack in the bme 32 */
udelay(5000);
out32(CFG_BME32_BASE + 0x0000000C, 0x00000001);
diff --git a/board/sandburst/metrobox/metrobox.h b/board/sandburst/metrobox/metrobox.h
index cb7a83ce329..3f28f004423 100644
--- a/board/sandburst/metrobox/metrobox.h
+++ b/board/sandburst/metrobox/metrobox.h
@@ -40,6 +40,6 @@ typedef struct opto_fpga_regs_s {
volatile unsigned long scrmask_ul; /* Read/Write */
volatile unsigned long control_ul; /* Read/Write */
volatile unsigned long boardinfo_ul; /* Read Only */
-} OPTO_FPGA_REGS_ST __attribute__ ((packed)), *OPTO_FPGA_REGS_PST;
+} __attribute__ ((packed)) OPTO_FPGA_REGS_ST , *OPTO_FPGA_REGS_PST;
#endif /* __METROBOX_H__ */
diff --git a/board/sandburst/metrobox/u-boot.lds b/board/sandburst/metrobox/u-boot.lds
index 0fdb166ed58..a17401af925 100644
--- a/board/sandburst/metrobox/u-boot.lds
+++ b/board/sandburst/metrobox/u-boot.lds
@@ -75,7 +75,7 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/440gx_enet.o (.text)
+ cpu/ppc4xx/4xx_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -95,6 +95,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -127,11 +128,13 @@ SECTIONS
_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 = .;
diff --git a/board/sandburst/metrobox/u-boot.lds.debug b/board/sandburst/metrobox/u-boot.lds.debug
index 459a1d83af6..fef4c4220cb 100644
--- a/board/sandburst/metrobox/u-boot.lds.debug
+++ b/board/sandburst/metrobox/u-boot.lds.debug
@@ -65,7 +65,7 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/440gx_enet.o (.text)
+ cpu/ppc4xx/4xx_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -84,6 +84,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/sandpoint/u-boot.lds b/board/sandpoint/u-boot.lds
index db89a78fd0f..2a5cd2ebd9d 100644
--- a/board/sandpoint/u-boot.lds
+++ b/board/sandpoint/u-boot.lds
@@ -68,6 +68,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -100,11 +101,13 @@ SECTIONS
_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 = .;
diff --git a/board/sbc405/sbc405.c b/board/sbc405/sbc405.c
index ef9bce18e0c..cad58731d3e 100644
--- a/board/sbc405/sbc405.c
+++ b/board/sbc405/sbc405.c
@@ -78,7 +78,7 @@ int misc_init_r (void)
int checkboard (void)
{
- unsigned char str[64];
+ char str[64];
int i = getenv_r ("serial#", str, sizeof(str));
puts ("Board: ");
diff --git a/board/sbc405/u-boot.lds b/board/sbc405/u-boot.lds
index bfd71dbfcbe..39fba61684a 100644
--- a/board/sbc405/u-boot.lds
+++ b/board/sbc405/u-boot.lds
@@ -67,7 +67,7 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
+ cpu/ppc4xx/4xx_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -87,6 +87,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -119,10 +120,12 @@ SECTIONS
_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 = .;
diff --git a/board/sbc8240/u-boot.lds b/board/sbc8240/u-boot.lds
index 7e6053aaecc..7be85e4410a 100644
--- a/board/sbc8240/u-boot.lds
+++ b/board/sbc8240/u-boot.lds
@@ -71,6 +71,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -103,11 +104,13 @@ SECTIONS
_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 = .;
diff --git a/board/sbc8260/u-boot.lds b/board/sbc8260/u-boot.lds
index 44224cbdd08..9e623d0b934 100644
--- a/board/sbc8260/u-boot.lds
+++ b/board/sbc8260/u-boot.lds
@@ -61,6 +61,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -93,11 +94,13 @@ SECTIONS
_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 = .;
diff --git a/board/sbc8560/sbc8560.c b/board/sbc8560/sbc8560.c
index 7f7272da1f7..e8b9929e771 100644
--- a/board/sbc8560/sbc8560.c
+++ b/board/sbc8560/sbc8560.c
@@ -223,9 +223,14 @@ void reset_phy (void)
udelay(1000);
#endif
#if defined(CONFIG_MII) && defined(CONFIG_ETHER_ON_FCC)
- miiphy_reset(0x0); /* reset PHY */
- miiphy_write(0, PHY_MIPSCR, 0xf028); /* change PHY address to 0x02 */
- miiphy_write(0x02, PHY_BMCR, PHY_BMCR_AUTON | PHY_BMCR_RST_NEG);
+ /* 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 */
}
diff --git a/board/sbc8560/u-boot.lds b/board/sbc8560/u-boot.lds
index a3ed1d5af69..48e19fe2a22 100644
--- a/board/sbc8560/u-boot.lds
+++ b/board/sbc8560/u-boot.lds
@@ -94,6 +94,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -126,10 +127,12 @@ SECTIONS
_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 = .;
diff --git a/board/sc520_cdp/u-boot.lds b/board/sc520_cdp/u-boot.lds
index 9d2f71c33a8..72164a1c8e6 100644
--- a/board/sc520_cdp/u-boot.lds
+++ b/board/sc520_cdp/u-boot.lds
@@ -62,6 +62,7 @@ SECTIONS
_i386boot_bios_size = SIZEOF(.bios);
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/sc520_spunk/u-boot.lds b/board/sc520_spunk/u-boot.lds
index da7ea18245c..127d707e6bf 100644
--- a/board/sc520_spunk/u-boot.lds
+++ b/board/sc520_spunk/u-boot.lds
@@ -50,6 +50,7 @@ SECTIONS
_i386boot_bss_size = SIZEOF(.bss);
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/scb9328/u-boot.lds b/board/scb9328/u-boot.lds
index 5076303c7ef..1d1669cdea0 100644
--- a/board/scb9328/u-boot.lds
+++ b/board/scb9328/u-boot.lds
@@ -45,6 +45,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/shannon/u-boot.lds b/board/shannon/u-boot.lds
index bfb7c38cc89..258bece23cf 100644
--- a/board/shannon/u-boot.lds
+++ b/board/shannon/u-boot.lds
@@ -44,6 +44,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/siemens/CCM/ccm.c b/board/siemens/CCM/ccm.c
index 3ed1b754ca9..5a32e45e289 100644
--- a/board/siemens/CCM/ccm.c
+++ b/board/siemens/CCM/ccm.c
@@ -102,7 +102,7 @@ int checkboard (void)
unsigned char *s;
unsigned char buf[64];
- s = (getenv_r ("serial#", buf, sizeof(buf)) > 0) ? buf : NULL;
+ s = (getenv_r ("serial#", (char *)&buf, sizeof(buf)) > 0) ? buf : NULL;
puts ("Board: Siemens CCM");
@@ -203,14 +203,14 @@ long int initdram (int board_type)
*
* try 8 column mode
*/
- size8 = dram_size (CFG_MAMR_8COL, (ulong *)SDRAM_BASE2_PRELIM, SDRAM_MAX_SIZE);
+ size8 = dram_size (CFG_MAMR_8COL, SDRAM_BASE2_PRELIM, SDRAM_MAX_SIZE);
udelay (1000);
/*
* try 9 column mode
*/
- size9 = dram_size (CFG_MAMR_9COL, (ulong *)SDRAM_BASE2_PRELIM, SDRAM_MAX_SIZE);
+ size9 = dram_size (CFG_MAMR_9COL, SDRAM_BASE2_PRELIM, SDRAM_MAX_SIZE);
if (size8 < size9) { /* leave configuration at 9 columns */
size = size9;
diff --git a/board/siemens/CCM/u-boot.lds b/board/siemens/CCM/u-boot.lds
index 86e587ff2fe..cdf550f67b5 100644
--- a/board/siemens/CCM/u-boot.lds
+++ b/board/siemens/CCM/u-boot.lds
@@ -77,6 +77,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -109,11 +110,13 @@ SECTIONS
_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 = .;
diff --git a/board/siemens/CCM/u-boot.lds.debug b/board/siemens/CCM/u-boot.lds.debug
index 4e677216db9..3b50272ea65 100644
--- a/board/siemens/CCM/u-boot.lds.debug
+++ b/board/siemens/CCM/u-boot.lds.debug
@@ -74,6 +74,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/siemens/IAD210/IAD210.c b/board/siemens/IAD210/IAD210.c
index 52cd4e6fa75..e498937b65f 100644
--- a/board/siemens/IAD210/IAD210.c
+++ b/board/siemens/IAD210/IAD210.c
@@ -155,7 +155,7 @@ long int initdram (int board_type)
* Check Bank 0 Memory Size for re-configuration
*
*/
- size = dram_size (CFG_MAMR, (ulong *) SDRAM_BASE_PRELIM,
+ size = dram_size (CFG_MAMR, (long *) SDRAM_BASE_PRELIM,
SDRAM_MAX_SIZE);
udelay (1000);
diff --git a/board/siemens/IAD210/u-boot.lds b/board/siemens/IAD210/u-boot.lds
index d2f2848788c..42e1b83b95a 100644
--- a/board/siemens/IAD210/u-boot.lds
+++ b/board/siemens/IAD210/u-boot.lds
@@ -75,6 +75,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -107,11 +108,13 @@ SECTIONS
_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 = .;
diff --git a/board/siemens/SCM/scm.c b/board/siemens/SCM/scm.c
index d832edf8255..d20688d5687 100644
--- a/board/siemens/SCM/scm.c
+++ b/board/siemens/SCM/scm.c
@@ -206,7 +206,7 @@ const iop_conf_t iop_conf_tab[4][32] = {
*/
int checkboard (void)
{
- unsigned char str[64];
+ char str[64];
int i = getenv_r ("serial#", str, sizeof (str));
puts ("Board: ");
diff --git a/board/siemens/SCM/u-boot.lds b/board/siemens/SCM/u-boot.lds
index ce6c4540d07..05f29c6ed08 100644
--- a/board/siemens/SCM/u-boot.lds
+++ b/board/siemens/SCM/u-boot.lds
@@ -62,6 +62,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -94,11 +95,13 @@ SECTIONS
_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 = .;
diff --git a/board/siemens/common/README b/board/siemens/common/README
index d7819038404..7f1c8cd62db 100644
--- a/board/siemens/common/README
+++ b/board/siemens/common/README
@@ -19,7 +19,7 @@ Die MTD-Partitionierung kann nun mittels "bootargs" ueber-
geben werden:
=> printenv addmtd
- addmtd=setenv bootargs $(bootargs)
+ addmtd=setenv bootargs ${bootargs}
mtdparts=0:256k(U-Boot)ro,768k(Kernel),-(Rest)\;1:-(myJFFS2)
Die Portierung auf SMC ist natuerlich noch nicht getestet.
diff --git a/board/siemens/common/fpga.c b/board/siemens/common/fpga.c
index 169048e42fe..e9941cda615 100644
--- a/board/siemens/common/fpga.c
+++ b/board/siemens/common/fpga.c
@@ -169,7 +169,7 @@ static int fpga_load (fpga_t* fpga, ulong addr, int checkall)
}
}
- if (checkall && fpga_get_version(fpga, hdr.ih_name) < 0)
+ if (checkall && fpga_get_version(fpga, (char *)(hdr.ih_name)) < 0)
return 1;
/* align length */
@@ -341,7 +341,7 @@ int fpga_init (void)
}
hdr = (image_header_t *)addr;
- if ((new_id = fpga_get_version(fpga, hdr->ih_name)) == -1)
+ if ((new_id = fpga_get_version(fpga, (char *)(hdr->ih_name))) == -1)
return 1;
do_load = 1;
diff --git a/board/siemens/pcu_e/pcu_e.c b/board/siemens/pcu_e/pcu_e.c
index 6374513fecc..3f05e4a6abc 100644
--- a/board/siemens/pcu_e/pcu_e.c
+++ b/board/siemens/pcu_e/pcu_e.c
@@ -241,9 +241,9 @@ long int initdram (int board_type)
* Check Bank 0 Memory Size for re-configuration
*/
#if PCU_E_WITH_SWAPPED_CS /* XXX */
- size_b0 = dram_size (CFG_MAMR, (ulong *) SDRAM_BASE5_PRELIM, SDRAM_MAX_SIZE);
+ size_b0 = dram_size (CFG_MAMR, (long *) SDRAM_BASE5_PRELIM, SDRAM_MAX_SIZE);
#else /* XXX */
- size_b0 = dram_size (CFG_MAMR, (ulong *) SDRAM_BASE2_PRELIM, SDRAM_MAX_SIZE);
+ size_b0 = dram_size (CFG_MAMR, (long *) SDRAM_BASE2_PRELIM, SDRAM_MAX_SIZE);
#endif /* XXX */
memctl->memc_mamr = CFG_MAMR | MAMR_PTAE;
diff --git a/board/siemens/pcu_e/u-boot.lds b/board/siemens/pcu_e/u-boot.lds
index fffa79eab11..6505d455619 100644
--- a/board/siemens/pcu_e/u-boot.lds
+++ b/board/siemens/pcu_e/u-boot.lds
@@ -66,6 +66,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -98,11 +99,13 @@ SECTIONS
_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 = .;
diff --git a/board/siemens/pcu_e/u-boot.lds.debug b/board/siemens/pcu_e/u-boot.lds.debug
index 153286be44d..828afbbced1 100644
--- a/board/siemens/pcu_e/u-boot.lds.debug
+++ b/board/siemens/pcu_e/u-boot.lds.debug
@@ -75,6 +75,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/sixnet/flash.c b/board/sixnet/flash.c
index 4ab6c1bdc42..61d758085c2 100644
--- a/board/sixnet/flash.c
+++ b/board/sixnet/flash.c
@@ -196,7 +196,7 @@ void flash_print_info (flash_info_t *info)
int i;
uchar *boottype;
uchar *bootletter;
- uchar *fmt;
+ char *fmt;
uchar botbootletter[] = "B";
uchar topbootletter[] = "T";
uchar botboottype[] = "bottom boot sector";
diff --git a/board/sixnet/sixnet.c b/board/sixnet/sixnet.c
index c31ea539e2b..867589f918e 100644
--- a/board/sixnet/sixnet.c
+++ b/board/sixnet/sixnet.c
@@ -356,7 +356,7 @@ void nand_init(void)
static long ram_size(ulong *base, long maxsize)
{
volatile long *test_addr;
- volatile long *base_addr = base;
+ 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 */
diff --git a/board/sixnet/u-boot.lds b/board/sixnet/u-boot.lds
index f35328a555c..1513a8517d9 100644
--- a/board/sixnet/u-boot.lds
+++ b/board/sixnet/u-boot.lds
@@ -66,6 +66,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -98,11 +99,13 @@ SECTIONS
_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 = .;
diff --git a/board/sl8245/u-boot.lds b/board/sl8245/u-boot.lds
index 6bd865e8cce..acb9ffda3b0 100644
--- a/board/sl8245/u-boot.lds
+++ b/board/sl8245/u-boot.lds
@@ -70,6 +70,8 @@ SECTIONS
. = ALIGN(16);
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -102,10 +104,12 @@ SECTIONS
_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 = .;
diff --git a/board/smdk2400/u-boot.lds b/board/smdk2400/u-boot.lds
index 76df6b2af1d..f4fbf969c3c 100644
--- a/board/smdk2400/u-boot.lds
+++ b/board/smdk2400/u-boot.lds
@@ -45,6 +45,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/smdk2410/u-boot.lds b/board/smdk2410/u-boot.lds
index 76df6b2af1d..f4fbf969c3c 100644
--- a/board/smdk2410/u-boot.lds
+++ b/board/smdk2410/u-boot.lds
@@ -45,6 +45,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/snmc/qs850/qs850.c b/board/snmc/qs850/qs850.c
index 105eeb8eb83..637f1250e90 100644
--- a/board/snmc/qs850/qs850.c
+++ b/board/snmc/qs850/qs850.c
@@ -89,8 +89,8 @@ const uint sdram_table[] =
int checkboard (void)
{
- unsigned char *s, *e;
- unsigned char buf[64];
+ char *s, *e;
+ char buf[64];
int i;
i = getenv_r("serial#", buf, sizeof(buf));
@@ -192,7 +192,7 @@ long int initdram (int board_type)
* Check for 32M SDRAM Memory Size
*/
size = dram_size(CFG_32M_MAMR|MAMR_PTAE,
- (ulong *)SDRAM_BASE, SDRAM_32M_MAX_SIZE);
+ (long *)SDRAM_BASE, SDRAM_32M_MAX_SIZE);
udelay (1000);
/*
@@ -200,7 +200,7 @@ long int initdram (int board_type)
*/
if (size != SDRAM_32M_MAX_SIZE) {
size = dram_size(CFG_16M_MAMR|MAMR_PTAE,
- (ulong *)SDRAM_BASE, SDRAM_16M_MAX_SIZE);
+ (long *)SDRAM_BASE, SDRAM_16M_MAX_SIZE);
udelay (1000);
}
diff --git a/board/snmc/qs850/u-boot.lds b/board/snmc/qs850/u-boot.lds
index 61e10849e53..cb3f456a0ef 100644
--- a/board/snmc/qs850/u-boot.lds
+++ b/board/snmc/qs850/u-boot.lds
@@ -80,6 +80,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -112,11 +113,13 @@ SECTIONS
_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 = .;
diff --git a/board/snmc/qs860t/qs860t.c b/board/snmc/qs860t/qs860t.c
index 2a55157813b..a11d8630102 100644
--- a/board/snmc/qs860t/qs860t.c
+++ b/board/snmc/qs860t/qs860t.c
@@ -89,8 +89,8 @@ const uint sdram_table[] =
int checkboard (void)
{
- unsigned char *s, *e;
- unsigned char buf[64];
+ char *s, *e;
+ char buf[64];
int i;
i = getenv_r("serial#", buf, sizeof(buf));
@@ -163,7 +163,7 @@ long int initdram (int board_type)
*/
if (size != SDRAM_64M_MAX_SIZE) {
#endif
- size = dram_size (CFG_16M_MBMR, (ulong *)SDRAM_BASE, SDRAM_16M_MAX_SIZE);
+ size = dram_size (CFG_16M_MBMR, (long *)SDRAM_BASE, SDRAM_16M_MAX_SIZE);
udelay (1000);
#if 0
}
diff --git a/board/snmc/qs860t/u-boot.lds b/board/snmc/qs860t/u-boot.lds
index 61e10849e53..cb3f456a0ef 100644
--- a/board/snmc/qs860t/u-boot.lds
+++ b/board/snmc/qs860t/u-boot.lds
@@ -80,6 +80,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -112,11 +113,13 @@ SECTIONS
_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 = .;
diff --git a/board/sorcery/u-boot.lds b/board/sorcery/u-boot.lds
index 6e4a060bb6a..889bc77d2f8 100644
--- a/board/sorcery/u-boot.lds
+++ b/board/sorcery/u-boot.lds
@@ -61,6 +61,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -93,11 +94,13 @@ SECTIONS
_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 = .;
diff --git a/board/spd8xx/spd8xx.c b/board/spd8xx/spd8xx.c
index 9f52e339bab..c79b9b0dd5e 100644
--- a/board/spd8xx/spd8xx.c
+++ b/board/spd8xx/spd8xx.c
@@ -205,7 +205,7 @@ long int initdram (int board_type)
* Check Bank 0 Memory Size for re-configuration
*/
size_b0 =
- dram_size (CFG_MBMR_8COL, (ulong *) SDRAM_BASE3_PRELIM,
+ dram_size (CFG_MBMR_8COL, SDRAM_BASE3_PRELIM,
SDRAM_MAX_SIZE);
memctl->memc_mbmr = CFG_MBMR_8COL | MBMR_PTBE;
diff --git a/board/spd8xx/u-boot.lds b/board/spd8xx/u-boot.lds
index f801d3b194f..f9150ab3d1c 100644
--- a/board/spd8xx/u-boot.lds
+++ b/board/spd8xx/u-boot.lds
@@ -66,6 +66,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -98,11 +99,13 @@ SECTIONS
_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 = .;
diff --git a/board/spd8xx/u-boot.lds.debug b/board/spd8xx/u-boot.lds.debug
index 0245f78fc8a..650572d4d05 100644
--- a/board/spd8xx/u-boot.lds.debug
+++ b/board/spd8xx/u-boot.lds.debug
@@ -75,6 +75,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/ssv/adnpesc1/u-boot.lds b/board/ssv/adnpesc1/u-boot.lds
index a7d35af3f73..8b01f45e551 100644
--- a/board/ssv/adnpesc1/u-boot.lds
+++ b/board/ssv/adnpesc1/u-boot.lds
@@ -50,6 +50,7 @@ SECTIONS
. = ALIGN(4);
__data_end = .;
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd :
{
diff --git a/board/stxgp3/stxgp3.c b/board/stxgp3/stxgp3.c
index 1dd9b2f17bc..2b3949cd7b3 100644
--- a/board/stxgp3/stxgp3.c
+++ b/board/stxgp3/stxgp3.c
@@ -239,9 +239,14 @@ reset_phy(void)
udelay(1000);
#endif
#if defined(CONFIG_MII) && defined(CONFIG_ETHER_ON_FCC)
- miiphy_reset(0x0); /* reset PHY */
- miiphy_write(0, PHY_MIPSCR, 0xf028); /* change PHY address to 0x02 */
- miiphy_write(0x02, PHY_BMCR, PHY_BMCR_AUTON | PHY_BMCR_RST_NEG);
+ /* 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
}
diff --git a/board/stxgp3/u-boot.lds b/board/stxgp3/u-boot.lds
index dae5acbc38b..3bc615021dc 100644
--- a/board/stxgp3/u-boot.lds
+++ b/board/stxgp3/u-boot.lds
@@ -96,6 +96,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -128,10 +129,12 @@ SECTIONS
_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 = .;
diff --git a/board/stxxtc/Makefile b/board/stxxtc/Makefile
index 8c529a0611d..11065cfd2c4 100644
--- a/board/stxxtc/Makefile
+++ b/board/stxxtc/Makefile
@@ -25,11 +25,19 @@ include $(TOPDIR)/config.mk
LIB = lib$(BOARD).a
-OBJS = $(BOARD).o
+OBJS = $(BOARD).o oftree.o
$(LIB): .depend $(OBJS)
$(AR) crv $@ $(OBJS)
+%.dtb: %.dts
+ dtc -f -V 0x10 -I dts -O dtb $< >$@
+
+%.c: %.dtb
+ xxd -i $< \
+ | sed -e "s/^unsigned char/const unsigned char/g" \
+ | sed -e "s/^unsigned int/const unsigned int/g" > $@
+
#########################################################################
.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
diff --git a/board/stxxtc/oftree.dts b/board/stxxtc/oftree.dts
new file mode 100644
index 00000000000..e3f30179435
--- /dev/null
+++ b/board/stxxtc/oftree.dts
@@ -0,0 +1,52 @@
+/ {
+ model = "STXXTC V1";
+ compatible = "STXXTC";
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ cpus {
+ linux,phandle = <1>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ PowerPC,MPC870@0 {
+ linux,phandle = <3>;
+ name = "PowerPC,MPC870";
+ device_type = "cpu";
+ reg = <0>;
+ clock-frequency = <0>; /* place-holder for runtime fillup */
+ timebase-frequency = <0>; /* dido */
+ linux,boot-cpu;
+ i-cache-size = <2000>;
+ d-cache-size = <2000>;
+ 32-bit;
+ };
+ };
+
+ memory@0 {
+ device_type = "memory";
+ reg = <00000000 00000000 00000000 20000000>;
+ };
+
+ /* copy of the bd_t information (place-holders) */
+ bd_t {
+ memstart = <0>;
+ memsize = <0>;
+ flashstart = <0>;
+ flashsize = <0>;
+ flashoffset = <0>;
+ sramstart = <0>;
+ sramsize = <0>;
+
+ immr_base = <0>;
+
+ bootflags = <0>;
+ ip_addr = <0>;
+ enetaddr = [ 00 00 00 00 00 00 ];
+ ethspeed = <0>;
+ intfreq = <0>;
+ busfreq = <0>;
+
+ baudrate = <0>;
+ };
+
+};
diff --git a/board/stxxtc/stxxtc.c b/board/stxxtc/stxxtc.c
index b38b4bea474..aa3d129f9c9 100644
--- a/board/stxxtc/stxxtc.c
+++ b/board/stxxtc/stxxtc.c
@@ -481,12 +481,12 @@ void reset_phys(void)
mii_init();
for (phyno = 0; phyno < 32; ++phyno) {
- miiphy_read(phyno, PHY_PHYIDR1, &v);
+ miiphy_read("FEC ETHERNET", phyno, PHY_PHYIDR1, &v);
if (v == 0xFFFF)
continue;
- miiphy_write(phyno, PHY_BMCR, PHY_BMCR_POWD);
+ miiphy_write("FEC ETHERNET", phyno, PHY_BMCR, PHY_BMCR_POWD);
udelay(10000);
- miiphy_write(phyno, PHY_BMCR, PHY_BMCR_RESET | PHY_BMCR_AUTON);
+ miiphy_write("FEC ETHERNET", phyno, PHY_BMCR, PHY_BMCR_RESET | PHY_BMCR_AUTON);
udelay(10000);
}
}
diff --git a/board/stxxtc/u-boot.lds b/board/stxxtc/u-boot.lds
index c3dac0ef4a5..9f2901c869b 100644
--- a/board/stxxtc/u-boot.lds
+++ b/board/stxxtc/u-boot.lds
@@ -77,6 +77,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -109,11 +110,13 @@ SECTIONS
_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 = .;
diff --git a/board/stxxtc/u-boot.lds.debug b/board/stxxtc/u-boot.lds.debug
index 21b7e6aabc0..004e7fd354a 100644
--- a/board/stxxtc/u-boot.lds.debug
+++ b/board/stxxtc/u-boot.lds.debug
@@ -74,6 +74,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/svm_sc8xx/svm_sc8xx.c b/board/svm_sc8xx/svm_sc8xx.c
index 1311ea9aaa5..9bb9fd019f7 100644
--- a/board/svm_sc8xx/svm_sc8xx.c
+++ b/board/svm_sc8xx/svm_sc8xx.c
@@ -77,7 +77,7 @@ const uint sdram_table[] =
int checkboard (void)
{
- unsigned char *s = getenv("serial#");
+ char *s = getenv("serial#");
int board_type;
if (!s || strncmp(s, "SVM8", 4)) {
diff --git a/board/svm_sc8xx/u-boot.lds b/board/svm_sc8xx/u-boot.lds
index 36e483613e4..d7f7dc13292 100644
--- a/board/svm_sc8xx/u-boot.lds
+++ b/board/svm_sc8xx/u-boot.lds
@@ -80,6 +80,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -113,11 +114,13 @@ SECTIONS
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 = .;
diff --git a/board/svm_sc8xx/u-boot.lds.debug b/board/svm_sc8xx/u-boot.lds.debug
index f34c2a43937..894b9bd25b7 100644
--- a/board/svm_sc8xx/u-boot.lds.debug
+++ b/board/svm_sc8xx/u-boot.lds.debug
@@ -74,6 +74,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/sx1/Makefile b/board/sx1/Makefile
index 8cd02d1411b..8fbdf2a5e33 100644
--- a/board/sx1/Makefile
+++ b/board/sx1/Makefile
@@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk
LIB = lib$(BOARD).a
OBJS := sx1.o
-SOBJS := platform.o
+SOBJS := lowlevel_init.o
$(LIB): $(OBJS) $(SOBJS)
$(AR) crv $@ $^
diff --git a/board/sx1/platform.S b/board/sx1/lowlevel_init.S
index bd54df18c44..bdf812e05af 100644
--- a/board/sx1/platform.S
+++ b/board/sx1/lowlevel_init.S
@@ -39,8 +39,8 @@
_TEXT_BASE:
.word TEXT_BASE /* sdram load addr from config.mk */
-.globl platformsetup
-platformsetup:
+.globl lowlevel_init
+lowlevel_init:
/*
* Configure 1510 pins functions to match our board.
diff --git a/board/sx1/u-boot.lds b/board/sx1/u-boot.lds
index 670f4db7bc3..d28155f4cb8 100644
--- a/board/sx1/u-boot.lds
+++ b/board/sx1/u-boot.lds
@@ -45,6 +45,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/tb0229/u-boot.lds b/board/tb0229/u-boot.lds
index a6429b6d838..30a2bc57eac 100644
--- a/board/tb0229/u-boot.lds
+++ b/board/tb0229/u-boot.lds
@@ -54,6 +54,7 @@ SECTIONS
.sdata : { *(.sdata) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/total5200/sdram.c b/board/total5200/sdram.c
index 367c826b8a3..a1601f274d2 100644
--- a/board/total5200/sdram.c
+++ b/board/total5200/sdram.c
@@ -102,9 +102,9 @@ long int mpc5xxx_sdram_init (sdram_conf_t *sdram_conf)
/* find RAM size using SDRAM CS0 only */
mpc5xxx_sdram_start(sdram_conf, 0);
- test1 = get_ram_size((ulong *)CFG_SDRAM_BASE, 0x80000000);
+ test1 = get_ram_size((long *)CFG_SDRAM_BASE, 0x80000000);
mpc5xxx_sdram_start(sdram_conf, 1);
- test2 = get_ram_size((ulong *)CFG_SDRAM_BASE, 0x80000000);
+ test2 = get_ram_size((long *)CFG_SDRAM_BASE, 0x80000000);
if (test1 > test2) {
mpc5xxx_sdram_start(sdram_conf, 0);
dramsize = test1;
@@ -129,9 +129,9 @@ long int mpc5xxx_sdram_init (sdram_conf_t *sdram_conf)
/* find RAM size using SDRAM CS1 only */
mpc5xxx_sdram_start(sdram_conf, 0);
- test1 = get_ram_size((ulong *)(CFG_SDRAM_BASE + dramsize), 0x80000000);
+ test1 = get_ram_size((long *)(CFG_SDRAM_BASE + dramsize), 0x80000000);
mpc5xxx_sdram_start(sdram_conf, 1);
- test2 = get_ram_size((ulong *)(CFG_SDRAM_BASE + dramsize), 0x80000000);
+ test2 = get_ram_size((long *)(CFG_SDRAM_BASE + dramsize), 0x80000000);
if (test1 > test2) {
mpc5xxx_sdram_start(sdram_conf, 0);
dramsize2 = test1;
@@ -199,9 +199,9 @@ long int mpc5xxx_sdram_init (sdram_conf_t *sdram_conf)
/* find RAM size */
mpc5xxx_sdram_start(sdram_conf, 0);
- test1 = get_ram_size((ulong *)CFG_SDRAM_BASE, 0x80000000);
+ test1 = get_ram_size((long *)CFG_SDRAM_BASE, 0x80000000);
mpc5xxx_sdram_start(sdram_conf, 1);
- test2 = get_ram_size((ulong *)CFG_SDRAM_BASE, 0x80000000);
+ test2 = get_ram_size((long *)CFG_SDRAM_BASE, 0x80000000);
if (test1 > test2) {
mpc5xxx_sdram_start(sdram_conf, 0);
dramsize = test1;
diff --git a/board/total5200/u-boot.lds b/board/total5200/u-boot.lds
index 672a250cf2b..3cc2968487b 100644
--- a/board/total5200/u-boot.lds
+++ b/board/total5200/u-boot.lds
@@ -61,6 +61,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -93,11 +94,13 @@ SECTIONS
_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 = .;
diff --git a/board/tqm5200/Makefile b/board/tqm5200/Makefile
index 50ef578aaed..c2343325663 100644
--- a/board/tqm5200/Makefile
+++ b/board/tqm5200/Makefile
@@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk
LIB = lib$(BOARD).a
#OBJS := $(BOARD).o flash.o
-OBJS := $(BOARD).o
+OBJS := $(BOARD).o cmd_stk52xx.o
$(LIB): $(OBJS) $(SOBJS)
$(AR) crv $@ $(OBJS)
diff --git a/board/tqm5200/cmd_stk52xx.c b/board/tqm5200/cmd_stk52xx.c
new file mode 100755
index 00000000000..8b9057f503a
--- /dev/null
+++ b/board/tqm5200/cmd_stk52xx.c
@@ -0,0 +1,1221 @@
+/*
+ * (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
+ */
+
+/*
+ * SKT52XX specific functions
+ */
+/*#define DEBUG*/
+
+#include <common.h>
+#include <command.h>
+
+#if (CONFIG_COMMANDS & CFG_CMD_BSP)
+
+#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);
+
+#ifdef CONFIG_STK52XX
+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;
+}
+
+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;
+}
+
+/*
+ * 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;
+}
+
+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));
+}
+
+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
+ led_init();
+ 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;
+ } 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;
+ }
+ }
+ break;
+
+ case 4:
+ if (strcmp (argv[1], "led") == 0) {
+ return (do_led (argv));
+ }
+ break;
+
+ 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"
+);
+
+U_BOOT_CMD(
+ fkt , 4, 1, cmd_fkt,
+ "fkt - Function test routines\n",
+ "led number on/off\n"
+ " - 'number's like printed on SKT52XX 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"
+);
+#endif /* CONFIG_STK52XX */
+#endif /* CFG_CMD_BSP */
diff --git a/board/tqm5200/tqm5200.c b/board/tqm5200/tqm5200.c
index 90275ecd8e5..6aad920edaa 100644
--- a/board/tqm5200/tqm5200.c
+++ b/board/tqm5200/tqm5200.c
@@ -122,9 +122,9 @@ long int initdram (int board_type)
/* find RAM size using SDRAM CS0 only */
sdram_start(0);
- test1 = get_ram_size((ulong *)CFG_SDRAM_BASE, 0x20000000);
+ test1 = get_ram_size((long *)CFG_SDRAM_BASE, 0x20000000);
sdram_start(1);
- test2 = get_ram_size((ulong *)CFG_SDRAM_BASE, 0x20000000);
+ test2 = get_ram_size((long *)CFG_SDRAM_BASE, 0x20000000);
if (test1 > test2) {
sdram_start(0);
dramsize = test1;
@@ -150,9 +150,9 @@ long int initdram (int board_type)
/* find RAM size using SDRAM CS1 only */
sdram_start(0);
- test1 = get_ram_size((ulong *)(CFG_SDRAM_BASE + dramsize), 0x20000000);
+ test1 = get_ram_size((long *)(CFG_SDRAM_BASE + dramsize), 0x20000000);
sdram_start(1);
- test2 = get_ram_size((ulong *)(CFG_SDRAM_BASE + dramsize), 0x20000000);
+ test2 = get_ram_size((long *)(CFG_SDRAM_BASE + dramsize), 0x20000000);
if (test1 > test2) {
sdram_start(0);
dramsize2 = test1;
@@ -425,7 +425,7 @@ int last_stage_init (void)
* Check for SRAM and SRAM size
*/
- /* save origianl SRAM content */
+ /* save original SRAM content */
save = *(volatile u16 *)CFG_CS2_START;
restore = 1;
@@ -447,8 +447,7 @@ int last_stage_init (void)
*(vu_long *)MPC5XXX_CS2_STOP = 0x0000FFFF;
restore = 0;
__asm__ volatile ("sync");
- }
- else if (*(volatile u16 *)(CFG_CS2_START + (1<<19)) == 0xA5A5) {
+ } 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");
@@ -461,8 +460,7 @@ int last_stage_init (void)
}
else
puts ("!! possible error in SRAM detection\n");
- }
- else {
+ } else {
puts ("SRAM: 1 MB\n");
}
/* restore origianl SRAM content */
@@ -497,8 +495,7 @@ int last_stage_init (void)
*(vu_long *)MPC5XXX_CS1_STOP = 0x0000FFFF;
restore = 0;
__asm__ volatile ("sync");
- }
- else {
+ } else {
puts ("VGA: SMI501 (Voyager) with 8 MB\n");
}
/* restore origianl FB content */
@@ -598,11 +595,46 @@ void video_get_info_str (int line_number, char *info)
#endif
/*
- * Returns SM501 register base address. First thing called in the driver.
+ * Returns SM501 register base address. First thing called in the
+ * driver. Checks if SM501 is physically present.
*/
unsigned int board_video_init (void)
{
- return SM501_MMIO_BASE;
+ 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;
}
/*
diff --git a/board/tqm5200/u-boot.lds b/board/tqm5200/u-boot.lds
index 672a250cf2b..3cc2968487b 100644
--- a/board/tqm5200/u-boot.lds
+++ b/board/tqm5200/u-boot.lds
@@ -61,6 +61,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -93,11 +94,13 @@ SECTIONS
_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 = .;
diff --git a/board/tqm8260/tqm8260.c b/board/tqm8260/tqm8260.c
index 22919873d1e..029863b7d9f 100644
--- a/board/tqm8260/tqm8260.c
+++ b/board/tqm8260/tqm8260.c
@@ -195,7 +195,7 @@ const iop_conf_t iop_conf_tab[4][32] = {
*/
int checkboard (void)
{
- unsigned char str[64];
+ char str[64];
int i = getenv_r ("serial#", str, sizeof (str));
puts ("Board: ");
diff --git a/board/tqm8260/u-boot.lds b/board/tqm8260/u-boot.lds
index ce6c4540d07..05f29c6ed08 100644
--- a/board/tqm8260/u-boot.lds
+++ b/board/tqm8260/u-boot.lds
@@ -62,6 +62,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -94,11 +95,13 @@ SECTIONS
_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 = .;
diff --git a/board/tqm834x/Makefile b/board/tqm834x/Makefile
new file mode 100644
index 00000000000..3ecc7d090e2
--- /dev/null
+++ b/board/tqm834x/Makefile
@@ -0,0 +1,45 @@
+#
+# Copyright 2004 Freescale Semiconductor, 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 = lib$(BOARD).a
+
+OBJS = $(BOARD).o pci.o
+
+$(LIB): $(OBJS) $(SOBJS)
+ $(AR) crv $@ $(OBJS)
+
+clean:
+ rm -f $(SOBJS) $(OBJS)
+
+distclean: clean
+ rm -f $(LIB) core *.bak .depend
+
+#########################################################################
+
+.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
+ $(CC) -M $(CPPFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
+
+-include .depend
+
+#########################################################################
diff --git a/board/tqm834x/config.mk b/board/tqm834x/config.mk
new file mode 100644
index 00000000000..f172c4ede01
--- /dev/null
+++ b/board/tqm834x/config.mk
@@ -0,0 +1,23 @@
+#
+# Copyright 2004 Freescale Semiconductor, 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
+#
+
+TEXT_BASE = 0x80000000
diff --git a/board/tqm834x/pci.c b/board/tqm834x/pci.c
new file mode 100644
index 00000000000..5a23e6c55e9
--- /dev/null
+++ b/board/tqm834x/pci.c
@@ -0,0 +1,220 @@
+/*
+ * (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 <asm/mmu.h>
+#include <common.h>
+#include <pci.h>
+
+#ifdef CONFIG_PCI
+
+/* System RAM mapped to PCI space */
+#define CONFIG_PCI_SYS_MEM_BUS CFG_SDRAM_BASE
+#define CONFIG_PCI_SYS_MEM_PHYS CFG_SDRAM_BASE
+#define CONFIG_PCI_SYS_MEM_SIZE (1024 * 1024 * 1024)
+
+#ifndef CONFIG_PCI_PNP
+static struct pci_config_table pci_tqm834x_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 pci1_hose = {
+#ifndef CONFIG_PCI_PNP
+ config_table:pci_tqm834x_config_table,
+#endif
+};
+
+
+/**************************************************************************
+ * pci_init_board()
+ *
+ * NOTICE: MPC8349 internally has two PCI controllers (PCI1 and PCI2) but since
+ * per TQM834x design physical connections to external devices (PCI sockets)
+ * are routed only to the PCI1 we do not account for the second one - this code
+ * supports PCI1 module only. Should support for the PCI2 be required in the
+ * future it needs a separate pci_controller structure (above) and handling -
+ * please refer to other boards' implementation for dual PCI host controllers,
+ * for example board/Marvell/db64360/pci.c, pci_init_board()
+ *
+ */
+void
+pci_init_board(void)
+{
+ volatile immap_t * immr;
+ volatile clk8349_t * clk;
+ volatile law8349_t * pci_law;
+ volatile pot8349_t * pci_pot;
+ volatile pcictrl8349_t * pci_ctrl;
+ volatile pciconf8349_t * pci_conf;
+ u16 reg16;
+ u32 reg32;
+ struct pci_controller * hose;
+
+ immr = (immap_t *)CFG_IMMRBAR;
+ clk = (clk8349_t *)&immr->clk;
+ pci_law = immr->sysconf.pcilaw;
+ pci_pot = immr->ios.pot;
+ pci_ctrl = immr->pci_ctrl;
+ pci_conf = immr->pci_conf;
+
+ hose = &pci1_hose;
+
+ /*
+ * Configure PCI controller and PCI_CLK_OUTPUT
+ */
+
+ /*
+ * WARNING! only PCI_CLK_OUTPUT1 is enabled here as this is the one
+ * line actually used for clocking all external PCI devices in TQM83xx.
+ * Enabling other PCI_CLK_OUTPUT lines may lead to board's hang for
+ * unknown reasons - particularly PCI_CLK_OUTPUT6 and PCI_CLK_OUTPUT7
+ * are known to hang the board; this issue is under investigation
+ * (13 oct 05)
+ */
+ reg32 = OCCR_PCICOE1;
+#if 0
+ /* enabling all PCI_CLK_OUTPUT lines HANGS the board... */
+ reg32 = 0xff000000;
+#endif
+ if (clk->spmr & SPMR_CKID) {
+ /* PCI Clock is half CONFIG_83XX_CLKIN so need to set up OCCR
+ * fields accordingly */
+ reg32 |= (OCCR_PCI1CR | OCCR_PCI2CR);
+
+ reg32 |= (OCCR_PCICD0 | OCCR_PCICD1 | OCCR_PCICD2 \
+ | OCCR_PCICD3 | OCCR_PCICD4 | OCCR_PCICD5 \
+ | OCCR_PCICD6 | OCCR_PCICD7);
+ }
+
+ clk->occr = reg32;
+ udelay(2000);
+
+ /*
+ * Release PCI RST Output signal
+ */
+ pci_ctrl[0].gcr = 0;
+ udelay(2000);
+ pci_ctrl[0].gcr = 1;
+ udelay(2000);
+
+ /*
+ * Configure PCI Local Access Windows
+ */
+ pci_law[0].bar = CFG_PCI1_MEM_PHYS & LAWBAR_BAR;
+ pci_law[0].ar = LAWAR_EN | LAWAR_SIZE_512M;
+
+ pci_law[1].bar = CFG_PCI1_IO_PHYS & LAWBAR_BAR;
+ pci_law[1].ar = LAWAR_EN | LAWAR_SIZE_16M;
+
+ /*
+ * Configure PCI Outbound Translation Windows
+ */
+
+ /* PCI1 mem space */
+ pci_pot[0].potar = (CFG_PCI1_MEM_BASE >> 12) & POTAR_TA_MASK;
+ pci_pot[0].pobar = (CFG_PCI1_MEM_PHYS >> 12) & POBAR_BA_MASK;
+ pci_pot[0].pocmr = POCMR_EN | (POCMR_CM_512M & POCMR_CM_MASK);
+
+ /* PCI1 IO space */
+ pci_pot[1].potar = (CFG_PCI1_IO_BASE >> 12) & POTAR_TA_MASK;
+ pci_pot[1].pobar = (CFG_PCI1_IO_PHYS >> 12) & POBAR_BA_MASK;
+ pci_pot[1].pocmr = POCMR_EN | POCMR_IO | (POCMR_CM_16M & POCMR_CM_MASK);
+
+ /*
+ * Configure PCI Inbound Translation Windows
+ */
+
+ /* we need RAM mapped to PCI space for the devices to
+ * access main memory */
+ pci_ctrl[0].pitar1 = 0x0;
+ pci_ctrl[0].pibar1 = 0x0;
+ pci_ctrl[0].piebar1 = 0x0;
+ pci_ctrl[0].piwar1 = PIWAR_EN | PIWAR_PF | PIWAR_RTT_SNOOP | PIWAR_WTT_SNOOP | PIWAR_IWS_256M;
+
+ hose->first_busno = 0;
+ hose->last_busno = 0xff;
+
+ /* PCI memory space */
+ pci_set_region(hose->regions + 0,
+ CFG_PCI1_MEM_BASE,
+ CFG_PCI1_MEM_PHYS,
+ CFG_PCI1_MEM_SIZE,
+ PCI_REGION_MEM);
+
+ /* PCI IO space */
+ pci_set_region(hose->regions + 1,
+ CFG_PCI1_IO_BASE,
+ CFG_PCI1_IO_PHYS,
+ CFG_PCI1_IO_SIZE,
+ PCI_REGION_IO);
+
+ /* System memory space */
+ pci_set_region(hose->regions + 2,
+ CONFIG_PCI_SYS_MEM_BUS,
+ CONFIG_PCI_SYS_MEM_PHYS,
+ CONFIG_PCI_SYS_MEM_SIZE,
+ PCI_REGION_MEM | PCI_REGION_MEMORY);
+
+ hose->region_count = 3;
+
+ pci_setup_indirect(hose,
+ (CFG_IMMRBAR+0x8300),
+ (CFG_IMMRBAR+0x8304));
+
+ pci_register_hose(hose);
+
+ /*
+ * Write to Command register
+ */
+ reg16 = 0xff;
+ pci_hose_read_config_word (hose, PCI_BDF(0,0,0), PCI_COMMAND,
+ &reg16);
+ reg16 |= PCI_COMMAND_SERR | PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY;
+ pci_hose_write_config_word(hose, PCI_BDF(0,0,0), PCI_COMMAND,
+ reg16);
+
+ /*
+ * Clear non-reserved bits in status register.
+ */
+ pci_hose_write_config_word(hose, PCI_BDF(0,0,0), PCI_STATUS,
+ 0xffff);
+ pci_hose_write_config_byte(hose, PCI_BDF(0,0,0), PCI_LATENCY_TIMER,
+ 0x80);
+
+#ifdef CONFIG_PCI_SCAN_SHOW
+ printf("PCI: Bus Dev VenId DevId Class Int\n");
+#endif
+ /*
+ * Hose scan.
+ */
+ hose->last_busno = pci_hose_scan(hose);
+}
+#endif /* CONFIG_PCI */
diff --git a/board/tqm834x/tqm834x.c b/board/tqm834x/tqm834x.c
new file mode 100644
index 00000000000..dada6739b6c
--- /dev/null
+++ b/board/tqm834x/tqm834x.c
@@ -0,0 +1,408 @@
+/*
+ * (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>
+#include <ioports.h>
+#include <mpc83xx.h>
+#include <asm/mpc8349_pci.h>
+#include <i2c.h>
+#include <spd.h>
+#include <miiphy.h>
+#include <asm-ppc/mmu.h>
+#include <pci.h>
+
+#define IOSYNC asm("eieio")
+#define ISYNC asm("isync")
+#define SYNC asm("sync")
+#define FPW FLASH_PORT_WIDTH
+#define FPWV FLASH_PORT_WIDTHV
+
+#define DDR_MAX_SIZE_PER_CS 0x20000000
+
+#if defined(DDR_CASLAT_20)
+#define TIMING_CASLAT TIMING_CFG1_CASLAT_20
+#define MODE_CASLAT DDR_MODE_CASLAT_20
+#else
+#define TIMING_CASLAT TIMING_CFG1_CASLAT_25
+#define MODE_CASLAT DDR_MODE_CASLAT_25
+#endif
+
+#define INITIAL_CS_CONFIG (CSCONFIG_EN | CSCONFIG_ROW_BIT_12 | \
+ CSCONFIG_COL_BIT_9)
+
+/* Global variable used to store detected number of banks */
+int tqm834x_num_flash_banks;
+
+/* External definitions */
+ulong flash_get_size (ulong base, int banknum);
+extern flash_info_t flash_info[];
+extern long spd_sdram (void);
+
+/* Local functions */
+static int detect_num_flash_banks(void);
+static long int get_ddr_bank_size(short cs, volatile long *base);
+static void set_cs_bounds(short cs, long base, long size);
+static void set_cs_config(short cs, long config);
+static void set_ddr_config(void);
+
+/* Local variable */
+static volatile immap_t *im = (immap_t *)CFG_IMMRBAR;
+
+/**************************************************************************
+ * Board initialzation after relocation to RAM. Used to detect the number
+ * of Flash banks on TQM834x.
+ */
+int board_early_init_r (void) {
+ /* sanity check, IMMARBAR should be mirrored at offset zero of IMMR */
+ if ((im->sysconf.immrbar & IMMRBAR_BASE_ADDR) != (u32)im)
+ return 0;
+
+ /* detect the number of Flash banks */
+ return detect_num_flash_banks();
+}
+
+/**************************************************************************
+ * DRAM initalization and size detection
+ */
+long int initdram (int board_type)
+{
+ long bank_size;
+ long size;
+ int cs;
+
+ /* during size detection, set up the max DDRLAW size */
+ im->sysconf.ddrlaw[0].bar = CFG_DDR_BASE;
+ im->sysconf.ddrlaw[0].ar = (LAWAR_EN | LAWAR_SIZE_2G);
+
+ /* set CS bounds to maximum size */
+ for(cs = 0; cs < 4; ++cs) {
+ set_cs_bounds(cs,
+ CFG_DDR_BASE + (cs * DDR_MAX_SIZE_PER_CS),
+ DDR_MAX_SIZE_PER_CS);
+
+ set_cs_config(cs, INITIAL_CS_CONFIG);
+ }
+
+ /* configure ddr controller */
+ set_ddr_config();
+
+ udelay(200);
+
+ /* enable DDR controller */
+ im->ddr.sdram_cfg = (SDRAM_CFG_MEM_EN |
+ SDRAM_CFG_SREN |
+ SDRAM_CFG_SDRAM_TYPE_DDR);
+ SYNC;
+
+ /* size detection */
+ debug("\n");
+ size = 0;
+ for(cs = 0; cs < 4; ++cs) {
+ debug("\nDetecting Bank%d\n", cs);
+
+ bank_size = get_ddr_bank_size(cs,
+ (volatile long*)(CFG_DDR_BASE + size));
+ size += bank_size;
+
+ debug("DDR Bank%d size: %d MiB\n\n", cs, bank_size >> 20);
+
+ /* exit if less than one bank */
+ if(size < DDR_MAX_SIZE_PER_CS) break;
+ }
+
+ return size;
+}
+
+/**************************************************************************
+ * checkboard()
+ */
+int checkboard (void)
+{
+ puts("Board: TQM834x\n");
+
+#ifdef CONFIG_PCI
+ DECLARE_GLOBAL_DATA_PTR;
+ volatile immap_t * immr;
+ u32 w, f;
+
+ immr = (immap_t *)CFG_IMMRBAR;
+ if (!(immr->reset.rcwh & RCWH_PCIHOST)) {
+ printf("PCI: NOT in host mode..?!\n");
+ return 0;
+ }
+
+ /* get bus width */
+ w = 32;
+ if (immr->reset.rcwh & RCWH_PCI64)
+ w = 64;
+
+ /* get clock */
+ f = gd->pci_clk;
+
+ printf("PCI1: %d bit, %d MHz\n", w, f / 1000000);
+#else
+ printf("PCI: disabled\n");
+#endif
+ return 0;
+}
+
+
+/**************************************************************************
+ *
+ * Local functions
+ *
+ *************************************************************************/
+
+/**************************************************************************
+ * Detect the number of flash banks (1 or 2). Store it in
+ * a global variable tqm834x_num_flash_banks.
+ * Bank detection code based on the Monitor code.
+ */
+static int detect_num_flash_banks(void)
+{
+ typedef unsigned long FLASH_PORT_WIDTH;
+ typedef volatile unsigned long FLASH_PORT_WIDTHV;
+ FPWV *bank1_base;
+ FPWV *bank2_base;
+ FPW bank1_read;
+ FPW bank2_read;
+ ulong bank1_size;
+ ulong bank2_size;
+ ulong total_size;
+
+ tqm834x_num_flash_banks = 2; /* assume two banks */
+
+ /* Get bank 1 and 2 information */
+ bank1_size = flash_get_size(CFG_FLASH_BASE, 0);
+ debug("Bank1 size: %lu\n", bank1_size);
+ bank2_size = flash_get_size(CFG_FLASH_BASE + bank1_size, 1);
+ debug("Bank2 size: %lu\n", bank2_size);
+ total_size = bank1_size + bank2_size;
+
+ if (bank2_size > 0) {
+ /* Seems like we've got bank 2, but maybe it's mirrored 1 */
+
+ /* Set the base addresses */
+ bank1_base = (FPWV *) (CFG_FLASH_BASE);
+ bank2_base = (FPWV *) (CFG_FLASH_BASE + bank1_size);
+
+ /* Put bank 2 into CFI command mode and read */
+ bank2_base[0x55] = 0x00980098;
+ IOSYNC;
+ ISYNC;
+ bank2_read = bank2_base[0x10];
+
+ /* Read from bank 1 (it's in read mode) */
+ bank1_read = bank1_base[0x10];
+
+ /* Reset Flash */
+ bank1_base[0] = 0x00F000F0;
+ bank2_base[0] = 0x00F000F0;
+
+ if (bank2_read == bank1_read) {
+ /*
+ * Looks like just one bank, but not sure yet. Let's
+ * read from bank 2 in autosoelect mode.
+ */
+ bank2_base[0x0555] = 0x00AA00AA;
+ bank2_base[0x02AA] = 0x00550055;
+ bank2_base[0x0555] = 0x00900090;
+ IOSYNC;
+ ISYNC;
+ bank2_read = bank2_base[0x10];
+
+ /* Read from bank 1 (it's in read mode) */
+ bank1_read = bank1_base[0x10];
+
+ /* Reset Flash */
+ bank1_base[0] = 0x00F000F0;
+ bank2_base[0] = 0x00F000F0;
+
+ if (bank2_read == bank1_read) {
+ /*
+ * In both CFI command and autoselect modes,
+ * we got the some data reading from Flash.
+ * There is only one mirrored bank.
+ */
+ tqm834x_num_flash_banks = 1;
+ total_size = bank1_size;
+ }
+ }
+ }
+
+ debug("Number of flash banks detected: %d\n", tqm834x_num_flash_banks);
+
+ /* set OR0 and BR0 */
+ im->lbus.bank[0].or = CFG_OR_TIMING_FLASH |
+ (-(total_size) & OR_GPCM_AM);
+ im->lbus.bank[0].br = (CFG_FLASH_BASE & BR_BA) |
+ (BR_MS_GPCM | BR_PS_32 | BR_V);
+
+ return (0);
+}
+
+/*************************************************************************
+ * Detect the size of a ddr bank. Sets CS bounds and CS config accordingly.
+ */
+static long int get_ddr_bank_size(short cs, volatile long *base)
+{
+ /* This array lists all valid DDR SDRAM configurations, with
+ * Bank sizes in bytes. (Refer to Table 9-27 in the MPC8349E RM).
+ * The last entry has to to have size equal 0 and is igonred during
+ * autodection. Bank sizes must be in increasing order of size
+ */
+ struct {
+ long row;
+ long col;
+ long size;
+ } conf[] = {
+ {CSCONFIG_ROW_BIT_12, CSCONFIG_COL_BIT_8, 32 << 20},
+ {CSCONFIG_ROW_BIT_12, CSCONFIG_COL_BIT_9, 64 << 20},
+ {CSCONFIG_ROW_BIT_12, CSCONFIG_COL_BIT_10, 128 << 20},
+ {CSCONFIG_ROW_BIT_13, CSCONFIG_COL_BIT_9, 128 << 20},
+ {CSCONFIG_ROW_BIT_13, CSCONFIG_COL_BIT_10, 256 << 20},
+ {CSCONFIG_ROW_BIT_13, CSCONFIG_COL_BIT_11, 512 << 20},
+ {CSCONFIG_ROW_BIT_14, CSCONFIG_COL_BIT_10, 512 << 20},
+ {CSCONFIG_ROW_BIT_14, CSCONFIG_COL_BIT_11, 1024 << 20},
+ {0, 0, 0}
+ };
+
+ int i;
+ int detected;
+ long size;
+
+ detected = -1;
+ for(i = 0; conf[i].size != 0; ++i) {
+
+ /* set sdram bank configuration */
+ set_cs_config(cs, CSCONFIG_EN | conf[i].col | conf[i].row);
+
+ debug("Getting RAM size...\n");
+ size = get_ram_size(base, DDR_MAX_SIZE_PER_CS);
+
+ if((size == conf[i].size) && (i == detected + 1))
+ detected = i;
+
+ debug("Trying %ld x %ld (%ld MiB) at addr %p, detected: %ld MiB\n",
+ conf[i].row,
+ conf[i].col,
+ conf[i].size >> 20,
+ base,
+ size >> 20);
+ }
+
+ if(detected == -1){
+ /* disable empty cs */
+ debug("\nNo valid configurations for CS%d, disabling...\n", cs);
+ set_cs_config(cs, 0);
+ return 0;
+ }
+
+ debug("\nDetected configuration %ld x %ld (%ld MiB) at addr %p\n",
+ conf[detected].row, conf[detected].col, conf[detected].size >> 20, base);
+
+ /* configure cs ro detected params */
+ set_cs_config(cs, CSCONFIG_EN | conf[detected].row |
+ conf[detected].col);
+
+ set_cs_bounds(cs, (long)base, conf[detected].size);
+
+ return(conf[detected].size);
+}
+
+/**************************************************************************
+ * Sets DDR bank CS bounds.
+ */
+static void set_cs_bounds(short cs, long base, long size)
+{
+ debug("Setting bounds %08x, %08x for cs %d\n", base, size, cs);
+ if(size == 0){
+ im->ddr.csbnds[cs].csbnds = 0x00000000;
+ } else {
+ im->ddr.csbnds[cs].csbnds =
+ ((base >> CSBNDS_SA_SHIFT) & CSBNDS_SA) |
+ (((base + size - 1) >> CSBNDS_EA_SHIFT) &
+ CSBNDS_EA);
+ }
+ SYNC;
+}
+
+/**************************************************************************
+ * Sets DDR banks CS configuration.
+ * config == 0x00000000 disables the CS.
+ */
+static void set_cs_config(short cs, long config)
+{
+ debug("Setting config %08x for cs %d\n", config, cs);
+ im->ddr.cs_config[cs] = config;
+ SYNC;
+}
+
+/**************************************************************************
+ * Sets DDR clocks, timings and configuration.
+ */
+static void set_ddr_config(void) {
+ /* clock control */
+ im->ddr.sdram_clk_cntl = DDR_SDRAM_CLK_CNTL_SS_EN |
+ DDR_SDRAM_CLK_CNTL_CLK_ADJUST_05;
+ SYNC;
+
+ /* timing configuration */
+ im->ddr.timing_cfg_1 =
+ (4 << TIMING_CFG1_PRETOACT_SHIFT) |
+ (7 << TIMING_CFG1_ACTTOPRE_SHIFT) |
+ (4 << TIMING_CFG1_ACTTORW_SHIFT) |
+ (5 << TIMING_CFG1_REFREC_SHIFT) |
+ (3 << TIMING_CFG1_WRREC_SHIFT) |
+ (3 << TIMING_CFG1_ACTTOACT_SHIFT) |
+ (1 << TIMING_CFG1_WRTORD_SHIFT) |
+ (TIMING_CFG1_CASLAT & TIMING_CASLAT);
+
+ im->ddr.timing_cfg_2 =
+ TIMING_CFG2_CPO_DEF |
+ (2 << TIMING_CFG2_WR_DATA_DELAY_SHIFT);
+ SYNC;
+
+ /* don't enable DDR controller yet */
+ im->ddr.sdram_cfg =
+ SDRAM_CFG_SREN |
+ SDRAM_CFG_SDRAM_TYPE_DDR;
+ SYNC;
+
+ /* Set SDRAM mode */
+ im->ddr.sdram_mode =
+ ((DDR_MODE_EXT_MODEREG | DDR_MODE_WEAK) <<
+ SDRAM_MODE_ESD_SHIFT) |
+ ((DDR_MODE_MODEREG | DDR_MODE_BLEN_4) <<
+ SDRAM_MODE_SD_SHIFT) |
+ ((DDR_MODE_CASLAT << SDRAM_MODE_SD_SHIFT) &
+ MODE_CASLAT);
+ SYNC;
+
+ /* Set fast SDRAM refresh rate */
+ im->ddr.sdram_interval =
+ (DDR_REFINT_166MHZ_7US << SDRAM_INTERVAL_REFINT_SHIFT) |
+ (DDR_BSTOPRE << SDRAM_INTERVAL_BSTOPRE_SHIFT);
+ SYNC;
+}
diff --git a/board/tqm834x/u-boot.lds b/board/tqm834x/u-boot.lds
new file mode 100644
index 00000000000..020cfa66f83
--- /dev/null
+++ b/board/tqm834x/u-boot.lds
@@ -0,0 +1,122 @@
+/*
+ * Copyright 2004 Freescale Semiconductor, 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_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/mpc83xx/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/tqm8540/init.S b/board/tqm8540/init.S
deleted file mode 100644
index d9f4d8f96c6..00000000000
--- a/board/tqm8540/init.S
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- * 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
-
- /*
- * 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, 1: 32M Non-cacheable, guarded
- * 0xfe000000 32M FLASH
- * Out of reset this entry is only 4K.
- */
- .long TLB1_MAS0(1, 1, 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)
- .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+0x1000000), 0,0,0,0,1,0,1,0)
- .long TLB1_MAS3(E500_TLB_RPN(CFG_FLASH_BASE+0x1000000), 0,0,0,0,0,1,0,1,0,1)
-
- /*
- * TLB 2: 256M Non-cacheable, guarded
- * 0x80000000 256M PCI1 MEM First 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), 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 3: 256M Non-cacheable, guarded
- * 0x90000000 256M PCI1 MEM Second half
- */
- .long TLB1_MAS0(1, 3, 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 4: 256M Non-cacheable, guarded
- * 0xc0000000 256M Rapid IO MEM First 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), 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 5: 256M Non-cacheable, guarded
- * 0xd0000000 256M Rapid IO MEM Second half
- */
- .long TLB1_MAS0(1, 5, 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 6: 64M Non-cacheable, guarded
- * 0xe000_0000 1M CCSRBAR
- * 0xe200_0000 16M PCI1 IO
- */
- .long TLB1_MAS0(1, 6, 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)
-
-#if !defined(CONFIG_SPD_EEPROM)
- /*
- * TLB 7: 256M DDR
- * 0x00000000 256M 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.
- */
- .long TLB1_MAS0(1, 7, 0)
- .long TLB1_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_256M)
- .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, 8, 0)
- .long TLB1_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_256M)
- .long TLB1_MAS2(E500_TLB_EPN(CFG_DDR_SDRAM_BASE+0x10000000), 0,0,0,0,0,0,0,0)
- .long TLB1_MAS3(E500_TLB_RPN(CFG_DDR_SDRAM_BASE+0x10000000), 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
- * 0xf800_0000 0xf80f_ffff BCSR 1M
- * 0xfe00_0000 0xffff_ffff FLASH (boot bank) 32M
- *
- * 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_256M))
-#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))
-
-#define LAWBAR2 ((CFG_LBC_FLASH_BASE>>12) & 0xfffff)
-#define LAWAR2 (LAWAR_EN | LAWAR_TRGT_IF_LBC | (LAWAR_SIZE & LAWAR_SIZE_32M))
-
-#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/tqm8540/tqm8540.c b/board/tqm8540/tqm8540.c
deleted file mode 100644
index ee10d004274..00000000000
--- a/board/tqm8540/tqm8540.c
+++ /dev/null
@@ -1,273 +0,0 @@
-/*
- * Copyright 2005 DENX Software Engineering
- * Copyright 2004 Freescale Semiconductor.
- * (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 <pci.h>
-#include <asm/processor.h>
-#include <asm/immap_85xx.h>
-#include <spd.h>
-
-#if defined(CONFIG_DDR_ECC)
-extern void ddr_enable_ecc (unsigned int dram_size);
-#endif
-
-extern long int spd_sdram (void);
-
-void local_bus_init (void);
-long int fixed_sdram (void);
-
-
-int board_early_init_f (void)
-{
- return 0;
-}
-
-int checkboard (void)
-{
- puts ("Board: TQM8540\n");
-
-#ifdef CONFIG_PCI
- printf ("PCI1: 32 bit, %d MHz (compiled)\n",
- CONFIG_SYS_CLK_FREQ / 1000000);
-#else
- printf ("PCI1: disabled\n");
-#endif
- /*
- * Initialize local bus.
- */
- local_bus_init ();
-
- 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_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
-
-#if defined(CONFIG_SPD_EEPROM)
- dram_size = spd_sdram ();
-#else
- dram_size = fixed_sdram ();
-#endif
-
-#if defined(CONFIG_DDR_ECC)
- /*
- * Initialize and enable DDR ECC.
- */
- ddr_enable_ecc (dram_size);
-#endif
-
- return dram_size;
-}
-
-
-/*
- * Initialize Local Bus
- */
-
-void local_bus_init (void)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile ccsr_gur_t *gur = &immap->im_gur;
- volatile ccsr_lbc_t *lbc = &immap->im_lbc;
-
- uint clkdiv;
- uint lbc_hz;
- sys_info_t sysinfo;
-
- /*
- * Errata LBC11.
- * Fix Local Bus clock glitch when DLL is enabled.
- *
- * If localbus freq is < 66Mhz, DLL bypass mode must be used.
- * If localbus freq is > 133Mhz, DLL can be safely enabled.
- * Between 66 and 133, the DLL is enabled with an override workaround.
- */
-
- get_sys_info (&sysinfo);
- clkdiv = lbc->lcrr & 0x0f;
- lbc_hz = sysinfo.freqSystemBus / 1000000 / clkdiv;
-
- if (lbc_hz < 66) {
- lbc->lcrr = CFG_LBC_LCRR | 0x80000000; /* DLL Bypass */
- lbc->ltedr = 0xa4c80000; /* DK: !!! */
-
- } else if (lbc_hz >= 133) {
- lbc->lcrr = CFG_LBC_LCRR & (~0x80000000); /* DLL Enabled */
-
- } else {
- /*
- * On REV1 boards, need to change CLKDIV before enable DLL.
- * Default CLKDIV is 8, change it to 4 temporarily.
- */
- uint pvr = get_pvr ();
- uint temp_lbcdll = 0;
-
- if (pvr == PVR_85xx_REV1) {
- /* FIXME: Justify the high bit here. */
- lbc->lcrr = 0x10000004;
- }
-
- lbc->lcrr = CFG_LBC_LCRR & (~0x80000000); /* DLL Enabled */
- udelay (200);
-
- /*
- * Sample LBC DLL ctrl reg, upshift it to set the
- * override bits.
- */
- temp_lbcdll = gur->lbcdllcr;
- gur->lbcdllcr = (((temp_lbcdll & 0xff) << 16) | 0x80000000);
- asm ("sync;isync;msync");
- }
-}
-
-
-#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;
- ddr->err_disable = 0x0000000D;
-#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 get_ram_size (0, CFG_SDRAM_SIZE * 1024 * 1024);
-}
-#endif /* !defined(CONFIG_SPD_EEPROM) */
-
-
-#if defined(CONFIG_PCI)
-/*
- * Initialize PCI Devices, report devices found.
- */
-
-#ifndef CONFIG_PCI_PNP
-static struct pci_config_table pci_mpc85xxads_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_mpc85xxads_config_table,
-#endif
-};
-
-#endif /* CONFIG_PCI */
-
-
-void pci_init_board (void)
-{
-#ifdef CONFIG_PCI
- extern void pci_mpc85xx_init (struct pci_controller *hose);
-
- pci_mpc85xx_init (&hose);
-#endif /* CONFIG_PCI */
-}
diff --git a/board/tqm8540/Makefile b/board/tqm85xx/Makefile
index 403ad2d8393..3933d46f0ca 100644
--- a/board/tqm8540/Makefile
+++ b/board/tqm85xx/Makefile
@@ -25,7 +25,7 @@ include $(TOPDIR)/config.mk
LIB = lib$(BOARD).a
-OBJS := $(BOARD).o
+OBJS := $(BOARD).o sdram.o
SOBJS := init.o
#SOBJS :=
diff --git a/board/tqm8560/config.mk b/board/tqm85xx/config.mk
index 8aab1e2863e..52e84ad7723 100644
--- a/board/tqm8560/config.mk
+++ b/board/tqm85xx/config.mk
@@ -22,7 +22,7 @@
#
#
-# tqm8560 board
+# tqm85xx board
# default CCARBAR is at 0xff700000
# assume U-Boot is less than 256k
#
diff --git a/board/tqm8560/init.S b/board/tqm85xx/init.S
index d9f4d8f96c6..1f610385e6d 100644
--- a/board/tqm8560/init.S
+++ b/board/tqm85xx/init.S
@@ -108,18 +108,18 @@ tlb1_entry:
/*
- * TLB 0, 1: 32M Non-cacheable, guarded
- * 0xfe000000 32M FLASH
+ * TLB 0, 1: 128M Non-cacheable, guarded
+ * 0xf8000000 128M FLASH
* Out of reset this entry is only 4K.
*/
.long TLB1_MAS0(1, 1, 0)
- .long TLB1_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_16M)
+ .long TLB1_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_64M)
.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)
.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+0x1000000), 0,0,0,0,1,0,1,0)
- .long TLB1_MAS3(E500_TLB_RPN(CFG_FLASH_BASE+0x1000000), 0,0,0,0,0,1,0,1,0,1)
+ .long TLB1_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_64M)
+ .long TLB1_MAS2(E500_TLB_EPN(CFG_FLASH_BASE+0x4000000), 0,0,0,0,1,0,1,0)
+ .long TLB1_MAS3(E500_TLB_RPN(CFG_FLASH_BASE+0x4000000), 0,0,0,0,0,1,0,1,0,1)
/*
* TLB 2: 256M Non-cacheable, guarded
@@ -171,23 +171,21 @@ tlb1_entry:
.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)
-#if !defined(CONFIG_SPD_EEPROM)
/*
- * TLB 7: 256M DDR
- * 0x00000000 256M DDR System memory
+ * TLB 7+8: 512M DDR, cache disabled (needed for memory test)
+ * 0x00000000 512M 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.
*/
.long TLB1_MAS0(1, 7, 0)
.long TLB1_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_256M)
- .long TLB1_MAS2(E500_TLB_EPN(CFG_DDR_SDRAM_BASE), 0,0,0,0,0,0,0,0)
+ .long TLB1_MAS2(E500_TLB_EPN(CFG_DDR_SDRAM_BASE), 0,0,0,0,1,0,1,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, 8, 0)
.long TLB1_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_256M)
- .long TLB1_MAS2(E500_TLB_EPN(CFG_DDR_SDRAM_BASE+0x10000000), 0,0,0,0,0,0,0,0)
+ .long TLB1_MAS2(E500_TLB_EPN(CFG_DDR_SDRAM_BASE+0x10000000), 0,0,0,0,1,0,1,0)
.long TLB1_MAS3(E500_TLB_RPN(CFG_DDR_SDRAM_BASE+0x10000000), 0,0,0,0,0,1,0,1,0,1)
-#endif
entry_end
@@ -207,19 +205,14 @@ tlb1_entry:
* 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_256M))
-#else
-#define LAWBAR0 0
-#define LAWAR0 ((LAWAR_TRGT_IF_DDR | (LAWAR_SIZE & LAWAR_SIZE_128M)) & ~LAWAR_EN)
-#endif
+#define LAWAR0 (LAWAR_EN | LAWAR_TRGT_IF_DDR | (LAWAR_SIZE & LAWAR_SIZE_512M))
#define LAWBAR1 ((CFG_PCI1_MEM_BASE>>12) & 0xfffff)
#define LAWAR1 (LAWAR_EN | LAWAR_TRGT_IF_PCIX | (LAWAR_SIZE & LAWAR_SIZE_512M))
#define LAWBAR2 ((CFG_LBC_FLASH_BASE>>12) & 0xfffff)
-#define LAWAR2 (LAWAR_EN | LAWAR_TRGT_IF_LBC | (LAWAR_SIZE & LAWAR_SIZE_32M))
+#define LAWAR2 (LAWAR_EN | LAWAR_TRGT_IF_LBC | (LAWAR_SIZE & LAWAR_SIZE_128M))
#define LAWBAR3 ((CFG_PCI1_IO_BASE>>12) & 0xfffff)
#define LAWAR3 (LAWAR_EN | LAWAR_TRGT_IF_PCIX | (LAWAR_SIZE & LAWAR_SIZE_16M))
diff --git a/board/tqm85xx/sdram.c b/board/tqm85xx/sdram.c
new file mode 100644
index 00000000000..9c1f0876872
--- /dev/null
+++ b/board/tqm85xx/sdram.c
@@ -0,0 +1,226 @@
+/*
+ * (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 <asm/immap_85xx.h>
+#include <asm/processor.h>
+#include <asm/mmu.h>
+#include <spd.h>
+
+struct sdram_conf_s {
+ unsigned long size;
+ unsigned long reg;
+};
+
+typedef struct sdram_conf_s sdram_conf_t;
+
+sdram_conf_t ddr_cs_conf[] = {
+ {(512 << 20), 0x80000202}, /* 512MB, 14x10(4) */
+ {(256 << 20), 0x80000102}, /* 256MB, 13x10(4) */
+ {(128 << 20), 0x80000101}, /* 128MB, 13x9(4) */
+ {(64 << 20), 0x80000001}, /* 64MB, 12x9(4) */
+};
+
+#define N_DDR_CS_CONF (sizeof(ddr_cs_conf) / sizeof(ddr_cs_conf[0]))
+
+int cas_latency(void);
+
+/*
+ * Autodetect onboard DDR SDRAM on 85xx platforms
+ *
+ * NOTE: Some of the hardcoded values are hardware dependant,
+ * so this should be extended for other future boards
+ * using this routine!
+ */
+long int sdram_setup(int casl)
+{
+ int i;
+ volatile immap_t *immap = (immap_t *) CFG_IMMR;
+ volatile ccsr_ddr_t *ddr = &immap->im_ddr;
+ unsigned long cfg_ddr_timing1;
+ unsigned long cfg_ddr_mode;
+
+ /*
+ * Disable memory controller.
+ */
+ ddr->cs0_config = 0;
+ ddr->sdram_cfg = 0;
+
+ switch (casl) {
+ case 20:
+ cfg_ddr_timing1 = 0x47405331 | (3 << 16);
+ cfg_ddr_mode = 0x40020002 | (2 << 4);
+ break;
+
+ case 25:
+ cfg_ddr_timing1 = 0x47405331 | (4 << 16);
+ cfg_ddr_mode = 0x40020002 | (6 << 4);
+ break;
+
+ case 30:
+ default:
+ cfg_ddr_timing1 = 0x47405331 | (5 << 16);
+ cfg_ddr_mode = 0x40020002 | (3 << 4);
+ break;
+ }
+
+ ddr->cs0_bnds = (ddr_cs_conf[0].size - 1) >> 24;
+ ddr->cs0_config = ddr_cs_conf[0].reg;
+ ddr->timing_cfg_1 = cfg_ddr_timing1;
+ ddr->timing_cfg_2 = 0x00000800; /* P9-45,may need tuning */
+ ddr->sdram_mode = cfg_ddr_mode;
+ ddr->sdram_interval = 0x05160100; /* autocharge,no open page */
+ ddr->err_disable = 0x0000000D;
+
+ asm ("sync;isync;msync");
+ udelay(1000);
+
+ ddr->sdram_cfg = 0xc2000000; /* unbuffered,no DYN_PWR */
+ asm ("sync; isync; msync");
+ udelay(1000);
+
+ for (i=0; i<N_DDR_CS_CONF; i++) {
+ ddr->cs0_config = ddr_cs_conf[i].reg;
+
+ if (get_ram_size(0, ddr_cs_conf[i].size) == ddr_cs_conf[i].size) {
+ /*
+ * OK, size detected -> all done
+ */
+ return ddr_cs_conf[i].size;
+ }
+ }
+
+ return 0; /* nothing found ! */
+}
+
+void board_add_ram_info(int use_default)
+{
+ int casl;
+
+ if (use_default)
+ casl = CONFIG_DDR_DEFAULT_CL;
+ else
+ casl = cas_latency();
+
+ puts(" (CL=");
+ switch (casl) {
+ case 20:
+ puts("2)");
+ break;
+
+ case 25:
+ puts("2.5)");
+ break;
+
+ case 30:
+ puts("3)");
+ break;
+ }
+}
+
+long int initdram (int board_type)
+{
+ long dram_size = 0;
+ int casl;
+
+#if defined(CONFIG_DDR_DLL)
+ /*
+ * This DLL-Override only used on TQM8540 and TQM8560
+ */
+ {
+ volatile immap_t *immap = (immap_t *) CFG_IMMR;
+ volatile ccsr_gur_t *gur= &immap->im_gur;
+ int i,x;
+
+ x = 10;
+
+ /*
+ * Work around to stabilize DDR DLL
+ */
+ gur->ddrdllcr = 0x81000000;
+ asm("sync;isync;msync");
+ udelay (200);
+ while (gur->ddrdllcr != 0x81000100) {
+ gur->devdisr = gur->devdisr | 0x00010000;
+ asm("sync;isync;msync");
+ for (i=0; i<x; i++)
+ ;
+ gur->devdisr = gur->devdisr & 0xfff7ffff;
+ asm("sync;isync;msync");
+ x++;
+ }
+ }
+#endif
+
+ casl = cas_latency();
+ dram_size = sdram_setup(casl);
+ if ((dram_size == 0) && (casl != CONFIG_DDR_DEFAULT_CL)) {
+ /*
+ * Try again with default CAS latency
+ */
+ puts("Problem with CAS lantency");
+ board_add_ram_info(1);
+ puts(", using default CL!\n");
+ casl = CONFIG_DDR_DEFAULT_CL;
+ dram_size = sdram_setup(casl);
+ puts(" ");
+ }
+
+ 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
diff --git a/board/tqm8560/tqm8560.c b/board/tqm85xx/tqm85xx.c
index 5f2edd89ddb..13ea6f48dde 100644
--- a/board/tqm8560/tqm8560.c
+++ b/board/tqm85xx/tqm85xx.c
@@ -1,5 +1,7 @@
/*
- * Copyright 2005 DENX Software Engineering
+ * (C) Copyright 2005
+ * Stefan Roese, DENX Software Engineering, sr@denx.de.
+ *
* Copyright 2004 Freescale Semiconductor.
* (C) Copyright 2002,2003, Motorola Inc.
* Xianghua Xiao, (X.Xiao@motorola.com)
@@ -32,16 +34,15 @@
#include <asm/immap_85xx.h>
#include <ioports.h>
#include <spd.h>
+#include <flash.h>
-#if defined(CONFIG_DDR_ECC)
-extern void ddr_enable_ecc (unsigned int dram_size);
-#endif
-
-extern long int spd_sdram (void);
+extern flash_info_t flash_info[]; /* FLASH chips info */
void local_bus_init (void);
long int fixed_sdram (void);
+ulong flash_get_size (ulong base, int banknum);
+#ifdef CONFIG_CPM2
/*
* I/O Port configuration table
*
@@ -53,24 +54,24 @@ 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 */
+ /* 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, 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] */
+ /* 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, 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] */
@@ -89,20 +90,20 @@ const iop_conf_t iop_conf_tab[4][32] = {
/* Port B configuration */
{ /* conf ppar psor pdir podr pdat */
- /* PB31 */ { 0, 1, 0, 1, 0, 0 }, /* FCC2 MII TX_ER */
- /* PB30 */ { 0, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_DV */
- /* PB29 */ { 0, 1, 1, 1, 0, 0 }, /* FCC2 MII TX_EN */
- /* PB28 */ { 0, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_ER */
- /* PB27 */ { 0, 1, 0, 0, 0, 0 }, /* FCC2 MII COL */
- /* PB26 */ { 0, 1, 0, 0, 0, 0 }, /* FCC2 MII CRS */
- /* PB25 */ { 0, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[3] */
- /* PB24 */ { 0, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[2] */
- /* PB23 */ { 0, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[1] */
- /* PB22 */ { 0, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[0] */
- /* PB21 */ { 0, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[0] */
- /* PB20 */ { 0, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[1] */
- /* PB19 */ { 0, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[2] */
- /* PB18 */ { 0, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[3] */
+ /* 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:RX_DIV */
/* PB16 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3:RX_ERR */
/* PB15 */ { 1, 1, 0, 1, 0, 0 }, /* FCC3:TX_ERR */
@@ -135,12 +136,12 @@ const iop_conf_t iop_conf_tab[4][32] = {
/* 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 */ { 0, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_CLK CLK13 */
+ /* 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 CLK13 */
/* PC18 */ { 1, 1, 0, 0, 0, 0 }, /* FCC Tx Clock (CLK14) */
/* PC17 */ { 1, 1, 0, 0, 0, 0 }, /* PC17 */
- /* PC16 */ { 0, 1, 0, 0, 0, 0 }, /* FCC Tx Clock (CLK16) */
+ /* PC16 */ { 1, 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, 1, 0, 0, 0, 0 }, /* PC13 */
@@ -195,16 +196,49 @@ const iop_conf_t iop_conf_tab[4][32] = {
/* PD0 */ { 0, 0, 0, 0, 0, 0 } /* pin doesn't exist */
}
};
+#endif /* CONFIG_CPM2 */
+
+#define CASL_STRING1 "casl=xx"
+#define CASL_STRING2 "casl="
+static const int casl_table[] = { 20, 25, 30 };
+#define N_CASL (sizeof(casl_table) / sizeof(casl_table[0]))
-int board_early_init_f (void)
+int cas_latency(void)
{
- return 0;
+ char *s = getenv("serial#");
+ int casl;
+ int val;
+ int i;
+
+ casl = CONFIG_DDR_DEFAULT_CL;
+
+ if (s != NULL) {
+ if (strncmp(s + strlen(s) - strlen(CASL_STRING1), CASL_STRING2,
+ strlen(CASL_STRING2)) == 0) {
+ val = simple_strtoul(s + strlen(s) - 2, NULL, 10);
+
+ for (i=0; i<N_CASL; ++i) {
+ if (val == casl_table[i]) {
+ return val;
+ }
+ }
+ }
+ }
+
+ return casl;
}
int checkboard (void)
{
- puts ("Board: TQM8560\n");
+ char *s = getenv("serial#");
+
+ printf("Board: %s", CONFIG_BOARDNAME);
+ if (s != NULL) {
+ puts(", serial# ");
+ puts(s);
+ }
+ putc('\n');
#ifdef CONFIG_PCI
printf ("PCI1: 32 bit, %d MHz (compiled)\n",
@@ -212,6 +246,7 @@ int checkboard (void)
#else
printf ("PCI1: disabled\n");
#endif
+
/*
* Initialize local bus.
*/
@@ -220,48 +255,69 @@ int checkboard (void)
return 0;
}
-
-long int initdram (int board_type)
+int misc_init_r (void)
{
- long dram_size = 0;
- extern long spd_sdram (void);
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
+ DECLARE_GLOBAL_DATA_PTR;
+ volatile immap_t *immap = (immap_t *)CFG_IMMR;
+ volatile ccsr_lbc_t *memctl = &immap->im_lbc;
-#if defined(CONFIG_DDR_DLL)
- {
- volatile ccsr_gur_t *gur = &immap->im_gur;
- uint temp_ddrdll = 0;
+ /*
+ * Adjust flash start and offset to detected values
+ */
+ gd->bd->bi_flashstart = 0 - gd->bd->bi_flashsize;
+ gd->bd->bi_flashoffset = 0;
+
+ /*
+ * Check if boot FLASH isn't max size
+ */
+ if (gd->bd->bi_flashsize < (0 - CFG_FLASH0)) {
+ memctl->or0 = gd->bd->bi_flashstart | (CFG_OR0_PRELIM & 0x00007fff);
+ memctl->br0 = gd->bd->bi_flashstart | (CFG_BR0_PRELIM & 0x00007fff);
/*
- * Work around to stabilize DDR DLL
+ * Re-check to get correct base address
*/
- temp_ddrdll = gur->ddrdllcr;
- gur->ddrdllcr = ((temp_ddrdll & 0xff) << 16) | 0x80000000;
- asm ("sync;isync;msync");
+ flash_get_size(gd->bd->bi_flashstart, CFG_MAX_FLASH_BANKS - 1);
}
-#endif
-#if defined(CONFIG_SPD_EEPROM)
- dram_size = spd_sdram ();
-#else
- dram_size = fixed_sdram ();
-#endif
-
-#if defined(CONFIG_DDR_ECC)
/*
- * Initialize and enable DDR ECC.
+ * Check if only one FLASH bank is available
*/
- ddr_enable_ecc (dram_size);
-#endif
+ if (gd->bd->bi_flashsize != CFG_MAX_FLASH_BANKS * (0 - CFG_FLASH0)) {
+ memctl->or1 = 0;
+ memctl->br1 = 0;
- return dram_size;
-}
+ /*
+ * Re-do flash protection upon new addresses
+ */
+ flash_protect (FLAG_PROTECT_CLEAR,
+ gd->bd->bi_flashstart, 0xffffffff,
+ &flash_info[CFG_MAX_FLASH_BANKS - 1]);
+
+ /* Monitor protection ON by default */
+ flash_protect (FLAG_PROTECT_SET,
+ CFG_MONITOR_BASE, 0xffffffff,
+ &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]);
+ }
+ return 0;
+}
/*
* Initialize Local Bus
*/
-
void local_bus_init (void)
{
volatile immap_t *immap = (immap_t *) CFG_IMMR;
@@ -318,79 +374,6 @@ void local_bus_init (void)
}
}
-
-#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;
- ddr->err_disable = 0x0000000D;
-#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 get_ram_size (0, CFG_SDRAM_SIZE * 1024 * 1024);
-}
-#endif /* !defined(CONFIG_SPD_EEPROM) */
-
-
#if defined(CONFIG_PCI)
/*
* Initialize PCI Devices, report devices found.
diff --git a/board/tqm8540/u-boot.lds b/board/tqm85xx/u-boot.lds
index ffd75629b73..4cc825bcdb1 100644
--- a/board/tqm8540/u-boot.lds
+++ b/board/tqm85xx/u-boot.lds
@@ -35,7 +35,7 @@ SECTIONS
.bootpg 0xFFFFF000 :
{
cpu/mpc85xx/start.o (.bootpg)
- board/tqm8540/init.o (.bootpg)
+ board/tqm85xx/init.o (.bootpg)
} = 0xffff
/* Read-only sections, merged into text segment: */
@@ -65,7 +65,7 @@ SECTIONS
.text :
{
cpu/mpc85xx/start.o (.text)
- board/tqm8540/init.o (.text)
+ board/tqm85xx/init.o (.text)
cpu/mpc85xx/traps.o (.text)
cpu/mpc85xx/interrupts.o (.text)
cpu/mpc85xx/cpu_init.o (.text)
@@ -87,6 +87,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -119,10 +120,12 @@ SECTIONS
_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 = .;
diff --git a/board/tqm8xx/load_sernum_ethaddr.c b/board/tqm8xx/load_sernum_ethaddr.c
index 98baf7f67db..143f36801d2 100644
--- a/board/tqm8xx/load_sernum_ethaddr.c
+++ b/board/tqm8xx/load_sernum_ethaddr.c
@@ -96,10 +96,10 @@ void load_sernum_ethaddr (void)
/* set serial# and ethaddr if not yet defined */
if (getenv("serial#") == NULL) {
- setenv ("serial#", serial);
+ setenv ((char *)"serial#", (char *)serial);
}
if (getenv("ethaddr") == NULL) {
- setenv ("ethaddr", ethaddr);
+ setenv ((char *)"ethaddr", (char *)ethaddr);
}
}
diff --git a/board/tqm8xx/tqm8xx.c b/board/tqm8xx/tqm8xx.c
index a7a6f2a2fa7..017bdf9442a 100644
--- a/board/tqm8xx/tqm8xx.c
+++ b/board/tqm8xx/tqm8xx.c
@@ -106,7 +106,7 @@ int checkboard (void)
{
DECLARE_GLOBAL_DATA_PTR;
- unsigned char *s = getenv ("serial#");
+ char *s = getenv ("serial#");
puts ("Board: ");
@@ -215,7 +215,7 @@ long int initdram (int board_type)
*
* try 8 column mode
*/
- size8 = dram_size (CFG_MAMR_8COL, (ulong *) SDRAM_BASE2_PRELIM,
+ 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);
@@ -224,7 +224,7 @@ long int initdram (int board_type)
/*
* try 9 column mode
*/
- size9 = dram_size (CFG_MAMR_9COL, (ulong *) SDRAM_BASE2_PRELIM,
+ 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);
@@ -263,7 +263,7 @@ long int initdram (int board_type)
* [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, (ulong *) SDRAM_BASE3_PRELIM,
+ 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 {
diff --git a/board/tqm8xx/u-boot.lds b/board/tqm8xx/u-boot.lds
index 10dc7d25710..d526d1d07d3 100644
--- a/board/tqm8xx/u-boot.lds
+++ b/board/tqm8xx/u-boot.lds
@@ -80,6 +80,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -112,11 +113,13 @@ SECTIONS
_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 = .;
diff --git a/board/tqm8xx/u-boot.lds.debug b/board/tqm8xx/u-boot.lds.debug
index c0ee8499cd6..ddd4678ee8c 100644
--- a/board/tqm8xx/u-boot.lds.debug
+++ b/board/tqm8xx/u-boot.lds.debug
@@ -74,6 +74,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/trab/auto_update.c b/board/trab/auto_update.c
index 0399fe86ac7..056e562bfea 100644
--- a/board/trab/auto_update.c
+++ b/board/trab/auto_update.c
@@ -199,7 +199,7 @@ 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 (uchar *, 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);
@@ -296,7 +296,7 @@ au_check_header_valid(int idx, long nbytes)
/* recycle checksum */
checksum = ntohl(hdr->ih_size);
/* for kernel and app the image header must also fit into flash */
- if (idx != IDX_DISK)
+ 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 */
diff --git a/board/trab/u-boot.lds b/board/trab/u-boot.lds
index 5afdb70a93c..e56cdd3cad4 100644
--- a/board/trab/u-boot.lds
+++ b/board/trab/u-boot.lds
@@ -53,6 +53,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/uc100/u-boot.lds b/board/uc100/u-boot.lds
index 85c9dc0ead2..d7c798ebb68 100644
--- a/board/uc100/u-boot.lds
+++ b/board/uc100/u-boot.lds
@@ -79,6 +79,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -111,11 +112,13 @@ SECTIONS
_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 = .;
diff --git a/board/uc100/u-boot.lds.debug b/board/uc100/u-boot.lds.debug
index eaa3aa25cca..d9bb8683639 100644
--- a/board/uc100/u-boot.lds.debug
+++ b/board/uc100/u-boot.lds.debug
@@ -73,6 +73,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/uc100/uc100.c b/board/uc100/uc100.c
index 6fc68e5cc3c..4f2cff624fe 100644
--- a/board/uc100/uc100.c
+++ b/board/uc100/uc100.c
@@ -30,6 +30,8 @@
#include <i2c.h>
#include <miiphy.h>
+int fec8xx_miiphy_write(char *devname, unsigned char addr,
+ unsigned char reg, unsigned short value);
/*********************************************************************/
/* UPMA Pre Initilization Table by WV (Miron MT48LC16M16A2-7E B) */
@@ -147,7 +149,7 @@ int board_switch(void)
*/
int checkboard (void)
{
- unsigned char str[64];
+ char str[64];
int i = getenv_r ("serial#", str, sizeof(str));
puts ("Board: ");
@@ -258,8 +260,11 @@ int misc_init_r (void)
*/
mii_init();
- miiphy_write(0, PHY_BMCR, 0x2100); /* disable auto-negotiation, 100mbit, full-duplex */
- miiphy_write(0, PHY_FCSCR, 0x4122); /* set LED's to Link, Transmit, Receive */
+ /* disable auto-negotiation, 100mbit, full-duplex */
+ fec8xx_miiphy_write(NULL, 0, PHY_BMCR, 0x2100);
+
+ /* set LED's to Link, Transmit, Receive */
+ fec8xx_miiphy_write(NULL, 0, PHY_FCSCR, 0x4122);
return 0;
}
diff --git a/board/utx8245/u-boot.lds b/board/utx8245/u-boot.lds
index ae624845382..45f3018bb9f 100644
--- a/board/utx8245/u-boot.lds
+++ b/board/utx8245/u-boot.lds
@@ -76,6 +76,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -108,11 +109,13 @@ SECTIONS
_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 = .;
diff --git a/board/v37/u-boot.lds b/board/v37/u-boot.lds
index ab1bbc91a5d..f9722dbb6bd 100644
--- a/board/v37/u-boot.lds
+++ b/board/v37/u-boot.lds
@@ -82,6 +82,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -114,11 +115,13 @@ SECTIONS
_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 = .;
diff --git a/board/versatile/Makefile b/board/versatile/Makefile
index 42b6ed5b5c9..fbdc627e386 100644
--- a/board/versatile/Makefile
+++ b/board/versatile/Makefile
@@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk
LIB = lib$(BOARD).a
OBJS := versatile.o flash.o
-SOBJS := platform.o
+SOBJS := lowlevel_init.o
$(LIB): $(OBJS) $(SOBJS)
$(AR) crv $@ $^
diff --git a/board/versatile/platform.S b/board/versatile/lowlevel_init.S
index 68c3e8b1857..bdfce2d3c13 100644
--- a/board/versatile/platform.S
+++ b/board/versatile/lowlevel_init.S
@@ -26,8 +26,9 @@
#include <config.h>
#include <version.h>
-.globl platformsetup
-platformsetup:
+/* 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
new file mode 100755
index 00000000000..35c663e6a55
--- /dev/null
+++ b/board/versatile/split_by_variant.sh
@@ -0,0 +1,40 @@
+#!/bin/sh
+# ---------------------------------------------------------
+# Set the core module defines according to Core Module
+# ---------------------------------------------------------
+# ---------------------------------------------------------
+# Set up the Versatile type define
+# ---------------------------------------------------------
+variant=PB926EJ-S
+if [ "$1" == "" ]
+then
+ echo "$0:: No parameters - using versatilepb_config"
+ echo "#define CONFIG_ARCH_VERSATILE_PB" > ./include/config.h
+ variant=PB926EJ-S
+else
+ case "$1" in
+ versatilepb_config | \
+ versatile_config)
+ echo "#define CONFIG_ARCH_VERSATILE_PB" > ./include/config.h
+ ;;
+
+ versatileab_config)
+ echo "#define CONFIG_ARCH_VERSATILE_AB" > ./include/config.h
+ variant=AB926EJ-S
+ ;;
+
+
+ *)
+ echo "$0:: Unrecognised config - using versatilepb_config"
+ echo "#define CONFIG_ARCH_VERSATILE_PB" > ./include/config.h
+ variant=PB926EJ-S
+ ;;
+
+ esac
+
+fi
+# ---------------------------------------------------------
+# Complete the configuration
+# ---------------------------------------------------------
+./mkconfig -a versatile arm arm926ejs versatile
+echo "Variant:: $variant"
diff --git a/board/versatile/u-boot.lds b/board/versatile/u-boot.lds
index 33931be1277..cb6ee188b19 100644
--- a/board/versatile/u-boot.lds
+++ b/board/versatile/u-boot.lds
@@ -39,6 +39,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/voiceblue/setup.S b/board/voiceblue/setup.S
index 4a110e846dc..dcf37b5dce5 100644
--- a/board/voiceblue/setup.S
+++ b/board/voiceblue/setup.S
@@ -122,8 +122,8 @@ MUX_CONFIG_OFFSETS:
.byte 0x0c @ COMP_MODE_CTRL_0
.byte 0xff
-.globl platformsetup
-platformsetup:
+.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
diff --git a/board/voiceblue/u-boot.lds b/board/voiceblue/u-boot.lds
index 8317f72d06d..f35a3ab024d 100644
--- a/board/voiceblue/u-boot.lds
+++ b/board/voiceblue/u-boot.lds
@@ -44,6 +44,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/w7o/flash.c b/board/w7o/flash.c
index d6ea63530c6..32815fb63e0 100644
--- a/board/w7o/flash.c
+++ b/board/w7o/flash.c
@@ -805,7 +805,7 @@ static int _flash_protect(flash_info_t *info, long sector)
int flag;
ulong status;
int rcode = 0;
- volatile long *addr = (unsigned long *)sector;
+ volatile long *addr = (long *)sector;
switch(info->flash_id & FLASH_TYPEMASK) {
case FLASH_28F320J3A:
@@ -863,7 +863,7 @@ static int _flash_unprotect(flash_info_t *info, long sector)
int flag;
ulong status;
int rcode = 0;
- volatile long *addr = (unsigned long *)sector;
+ volatile long *addr = (long *)sector;
switch(info->flash_id & FLASH_TYPEMASK) {
case FLASH_28F320J3A:
diff --git a/board/w7o/fpga.c b/board/w7o/fpga.c
index 97af9242946..100bce4722e 100644
--- a/board/w7o/fpga.c
+++ b/board/w7o/fpga.c
@@ -77,17 +77,17 @@ fpgaDownload(unsigned char *saddr,
dest = (unsigned short *)daddr;
/* Get DCR output register */
- grego = in32(IBM405GP_GPIO0_OR);
+ grego = in32(PPC405GP_GPIO0_OR);
/* Reset FPGA */
grego &= ~GPIO_XCV_PROG; /* PROG line low */
- out32(IBM405GP_GPIO0_OR, grego);
+ out32(PPC405GP_GPIO0_OR, grego);
/* Setup timeout timer */
start = get_timer(0);
/* Wait for FPGA init line */
- while(in32(IBM405GP_GPIO0_IR) & GPIO_XCV_INIT) { /* Wait INIT line low */
+ 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");
@@ -100,10 +100,10 @@ fpgaDownload(unsigned char *saddr,
/* Unreset FPGA */
grego |= GPIO_XCV_PROG; /* PROG line high */
- out32(IBM405GP_GPIO0_OR, grego);
+ out32(PPC405GP_GPIO0_OR, grego);
/* Wait for FPGA end of init period . */
- while(!(in32(IBM405GP_GPIO0_IR) & GPIO_XCV_INIT)) { /* Wait for INIT hi */
+ while(!(in32(PPC405GP_GPIO0_IR) & GPIO_XCV_INIT)) { /* Wait for INIT hi */
/* Check for timeout */
if (get_timer(start) > 3) {
@@ -112,7 +112,7 @@ fpgaDownload(unsigned char *saddr,
/* Reset FPGA */
grego &= ~GPIO_XCV_PROG; /* PROG line low */
- out32(IBM405GP_GPIO0_OR, grego);
+ out32(PPC405GP_GPIO0_OR, grego);
goto done;
}
@@ -127,18 +127,18 @@ fpgaDownload(unsigned char *saddr,
mtdcr(CPC0_CR0, greg); /* ... just do it */
/* turn on open drain for CNFG */
- greg = in32(IBM405GP_GPIO0_ODR); /* get open drain register */
+ greg = in32(PPC405GP_GPIO0_ODR); /* get open drain register */
greg |= cnfg; /* CNFG open drain */
- out32(IBM405GP_GPIO0_ODR, greg); /* .. just do it */
+ out32(PPC405GP_GPIO0_ODR, greg); /* .. just do it */
/* Turn output enable on for CNFG */
- greg = in32(IBM405GP_GPIO0_TCR); /* get tristate register */
+ greg = in32(PPC405GP_GPIO0_TCR); /* get tristate register */
greg |= cnfg; /* CNFG tristate inactive */
- out32(IBM405GP_GPIO0_TCR, greg); /* ... just do it */
+ out32(PPC405GP_GPIO0_TCR, greg); /* ... just do it */
/* Setup FPGA for programming */
grego &= ~cnfg; /* CONFIG line low */
- out32(IBM405GP_GPIO0_OR, grego);
+ out32(PPC405GP_GPIO0_OR, grego);
/*
* Program the FPGA
@@ -149,12 +149,12 @@ fpgaDownload(unsigned char *saddr,
/* Done programming */
grego |= cnfg; /* CONFIG line high */
- out32(IBM405GP_GPIO0_OR, grego);
+ out32(PPC405GP_GPIO0_OR, grego);
/* Turn output enable OFF for CNFG */
- greg = in32(IBM405GP_GPIO0_TCR); /* get tristate register */
+ greg = in32(PPC405GP_GPIO0_TCR); /* get tristate register */
greg &= ~cnfg; /* CNFG tristate inactive */
- out32(IBM405GP_GPIO0_TCR, greg); /* ... just do it */
+ out32(PPC405GP_GPIO0_TCR, greg); /* ... just do it */
/* Toggle IRQ/GPIO */
greg = mfdcr(CPC0_CR0); /* get chip ctrl register */
@@ -180,7 +180,7 @@ fpgaDownload(unsigned char *saddr,
start = get_timer(0);
/* Wait for FPGA end of programming period . */
- while(!(in32(IBM405GP_GPIO0_IR) & GPIO_XCV_DONE)) { /* Test DONE low */
+ while(!(in32(PPC405GP_GPIO0_IR) & GPIO_XCV_DONE)) { /* Test DONE low */
/* Check for timeout */
if (get_timer(start) > 3) {
@@ -189,7 +189,7 @@ fpgaDownload(unsigned char *saddr,
/* Reset FPGA */
grego &= ~GPIO_XCV_PROG; /* PROG line low */
- out32(IBM405GP_GPIO0_OR, grego);
+ out32(PPC405GP_GPIO0_OR, grego);
goto done;
}
@@ -252,7 +252,7 @@ int init_fpga(void)
xcv_len = len - 14 - fn_len; /* fpga image length */
/* Check for uninitialized FLASH */
- if ((strncmp(buf, "w7o", 3)!=0) || (len > 0x0007ffffL) || (len == 0))
+ if ((strncmp((char *)buf, "w7o", 3)!=0) || (len > 0x0007ffffL) || (len == 0))
goto bad_image;
/*
diff --git a/board/w7o/u-boot.lds b/board/w7o/u-boot.lds
index 5576ab9a67a..7e3e15dc2ea 100644
--- a/board/w7o/u-boot.lds
+++ b/board/w7o/u-boot.lds
@@ -71,6 +71,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -103,11 +104,13 @@ SECTIONS
_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 = .;
diff --git a/board/w7o/u-boot.lds.debug b/board/w7o/u-boot.lds.debug
index f996db30ad6..a0c72c92103 100644
--- a/board/w7o/u-boot.lds.debug
+++ b/board/w7o/u-boot.lds.debug
@@ -74,6 +74,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/w7o/vpd.c b/board/w7o/vpd.c
index fc2cd983215..2ce15680e15 100644
--- a/board/w7o/vpd.c
+++ b/board/w7o/vpd.c
@@ -125,7 +125,7 @@ static int vpd_is_valid(unsigned dev_addr, unsigned char *buf)
unsigned short stored_crc16, calc_crc16 = 0xffff;
/* Check Eyecatcher */
- if (strncmp(vpd->header.eyecatcher, VPD_EYECATCHER, VPD_EYE_SIZE) != 0) {
+ 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;
@@ -259,7 +259,7 @@ int vpd_get_data(unsigned char dev_addr, VPD *vpdInfo)
case VPD_PID_PID:
if (strlen_ok(packet, MAX_PROD_ID)) {
strncpy(vpdInfo->productId,
- packet->data, packet->size);
+ (char *)(packet->data), packet->size);
}
break;
case VPD_PID_REV:
diff --git a/board/w7o/w7o.c b/board/w7o/w7o.c
index 1e3ceb20d65..c56c269daec 100644
--- a/board/w7o/w7o.c
+++ b/board/w7o/w7o.c
@@ -47,9 +47,9 @@ int board_early_init_f (void)
/*
* Setup GPIO pins - reset devices.
*/
- out32 (IBM405GP_GPIO0_ODR, 0x10000000); /* one open drain pin */
- out32 (IBM405GP_GPIO0_OR, 0x3E000000); /* set output pins to default */
- out32 (IBM405GP_GPIO0_TCR, 0x7f800000); /* setup for output */
+ 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
@@ -78,9 +78,9 @@ int board_early_init_f (void)
/*
* Setup GPIO pins
*/
- out32 (IBM405GP_GPIO0_ODR, 0x01800000); /* XCV Done Open Drain */
- out32 (IBM405GP_GPIO0_OR, 0x03800000); /* set out pins to default */
- out32 (IBM405GP_GPIO0_TCR, 0x66C00000); /* setup for output */
+ 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
@@ -207,8 +207,8 @@ static void w7o_env_init (VPD * vpd)
(strncmp (vpd->productId, "CMM", 3) == 0))) {
char buf[30];
char *eth;
- unsigned char *serial = getenv ("serial#");
- unsigned char *ethaddr = getenv ("ethaddr");
+ char *serial = getenv ("serial#");
+ char *ethaddr = getenv ("ethaddr");
/* Set 'serial#' envvar if serial# isn't set */
if (!serial) {
@@ -218,7 +218,7 @@ static void w7o_env_init (VPD * vpd)
}
/* Set 'ethaddr' envvar if 'ethaddr' envvar is the default */
- eth = vpd->ethAddrs[0];
+ eth = (char *)(vpd->ethAddrs[0]);
if (ethaddr
&& (strcmp (ethaddr, MK_STR (CONFIG_ETHADDR)) == 0)) {
/* Now setup ethaddr */
@@ -238,14 +238,14 @@ int misc_init_r (void)
#if defined(CONFIG_W7OLMG)
unsigned long greg; /* GPIO Register */
- greg = in32 (IBM405GP_GPIO0_OR);
+ greg = in32 (PPC405GP_GPIO0_OR);
/*
* XXX - Unreset devices - this should be moved into VxWorks driver code
*/
greg |= 0x41800000L; /* SAM, PHY, Galileo */
- out32 (IBM405GP_GPIO0_OR, greg); /* set output pins to default */
+ out32 (PPC405GP_GPIO0_OR, greg); /* set output pins to default */
#endif /* CONFIG_W7OLMG */
/*
diff --git a/board/w7o/w7o.h b/board/w7o/w7o.h
index 84581664e81..d6f50e2e678 100644
--- a/board/w7o/w7o.h
+++ b/board/w7o/w7o.h
@@ -25,13 +25,13 @@
#define _W7O_H_
#include <config.h>
-/* IBM 405GP PowerPC GPIO registers */
-#define IBM405GP_GPIO0_OR 0xef600700L /* GPIO Output */
-#define IBM405GP_GPIO0_TCR 0xef600704L /* GPIO Three-State Control */
-#define IBM405GP_GPIO0_ODR 0xef600718L /* GPIO Open Drain */
-#define IBM405GP_GPIO0_IR 0xef60071cL /* GPIO Input */
+/* 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 */
-/* IBM 405GP DCRs */
+/* AMCC 405GP DCRs */
#define CPC0_CR0 0xb1 /* Chip control register 0 */
/* LMG FPGA <=> CPU GPIO signals */
diff --git a/board/wepep250/u-boot.lds b/board/wepep250/u-boot.lds
index 58c371df06b..f0102391b34 100644
--- a/board/wepep250/u-boot.lds
+++ b/board/wepep250/u-boot.lds
@@ -44,6 +44,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/westel/amx860/u-boot.lds b/board/westel/amx860/u-boot.lds
index 86e587ff2fe..cdf550f67b5 100644
--- a/board/westel/amx860/u-boot.lds
+++ b/board/westel/amx860/u-boot.lds
@@ -77,6 +77,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -109,11 +110,13 @@ SECTIONS
_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 = .;
diff --git a/board/westel/amx860/u-boot.lds.debug b/board/westel/amx860/u-boot.lds.debug
index 7b84fd34877..87f228beed6 100644
--- a/board/westel/amx860/u-boot.lds.debug
+++ b/board/westel/amx860/u-boot.lds.debug
@@ -75,6 +75,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/xaeniax/u-boot.lds b/board/xaeniax/u-boot.lds
index 58c371df06b..f0102391b34 100644
--- a/board/xaeniax/u-boot.lds
+++ b/board/xaeniax/u-boot.lds
@@ -44,6 +44,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/xilinx/common/xdma_channel.c b/board/xilinx/common/xdma_channel.c
index 25f1e260287..3d5fc75e365 100644
--- a/board/xilinx/common/xdma_channel.c
+++ b/board/xilinx/common/xdma_channel.c
@@ -123,7 +123,7 @@ XDmaChannel_Initialize(XDmaChannel * InstancePtr, u32 BaseAddress)
/* initialize the version of the component
*/
- XVersion_FromString(&InstancePtr->Version, "1.00a");
+ XVersion_FromString(&InstancePtr->Version, (s8 *)"1.00a");
/* reset the DMA channel such that it's in a known state and ready
* and indicate the initialization occured with no errors, note that
diff --git a/board/xilinx/ml300/ml300.c b/board/xilinx/ml300/ml300.c
index f335fc1ba6d..dad562f1c77 100644
--- a/board/xilinx/ml300/ml300.c
+++ b/board/xilinx/ml300/ml300.c
@@ -55,8 +55,8 @@ board_pre_init(void)
int
checkboard(void)
{
- uchar tmp[64]; /* long enough for environment variables */
- uchar *s, *e;
+ char tmp[64]; /* long enough for environment variables */
+ char *s, *e;
int i = getenv_r("L", tmp, sizeof (tmp));
if (i < 0) {
diff --git a/board/xilinx/ml300/u-boot.lds b/board/xilinx/ml300/u-boot.lds
index e7b7e107b06..b6d748e1d98 100644
--- a/board/xilinx/ml300/u-boot.lds
+++ b/board/xilinx/ml300/u-boot.lds
@@ -65,7 +65,7 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
+ cpu/ppc4xx/4xx_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -85,6 +85,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -117,11 +118,13 @@ SECTIONS
_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 = .;
diff --git a/board/xilinx/ml300/u-boot.lds.debug b/board/xilinx/ml300/u-boot.lds.debug
index d483424ad6d..1608f8cdaa3 100644
--- a/board/xilinx/ml300/u-boot.lds.debug
+++ b/board/xilinx/ml300/u-boot.lds.debug
@@ -74,6 +74,8 @@ SECTIONS
{
*(.rodata)
*(.rodata1)
+ *(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/xilinx/xilinx_enet/emac_adapter.c b/board/xilinx/xilinx_enet/emac_adapter.c
index bf8cf0bccb4..5c492ebbc0e 100644
--- a/board/xilinx/xilinx_enet/emac_adapter.c
+++ b/board/xilinx/xilinx_enet/emac_adapter.c
@@ -148,7 +148,7 @@ eth_rx(void)
RecvFrameLength = PKTSIZE;
Result = XEmac_PollRecv(&Emac, (u8 *) etherrxbuff, &RecvFrameLength);
if (Result == XST_SUCCESS) {
- NetReceive(etherrxbuff, RecvFrameLength);
+ NetReceive((uchar *)etherrxbuff, RecvFrameLength);
return (1);
} else {
return (0);
diff --git a/board/xilinx/xilinx_iic/iic_adapter.c b/board/xilinx/xilinx_iic/iic_adapter.c
index 5ad4a0c1194..f3ecba72dc8 100644
--- a/board/xilinx/xilinx_iic/iic_adapter.c
+++ b/board/xilinx/xilinx_iic/iic_adapter.c
@@ -291,15 +291,15 @@ read_crc(uchar * buffer, int len)
static void
ip_ml300(uchar * s, uchar * res)
{
- uchar temp[2];
+ char temp[2];
u8 i;
res[0] = 0x00;
for (i = 0; i < 4; i++) {
sprintf(temp, "%02x", atoi(s));
- s = strchr(s, '.') + 1;
- strcat(res, temp);
+ s = (uchar *)strchr((char *)s, '.') + 1;
+ strcat((char *)res, temp);
}
}
@@ -310,8 +310,8 @@ static void
change_null(uchar * s)
{
if (s != NULL) {
- change_null(strchr(s + 1, 255));
- *(strchr(s, 255)) = '\0';
+ change_null((uchar *)strchr((char *)s + 1, 255));
+ *(strchr((char *)s, 255)) = '\0';
}
}
@@ -321,8 +321,8 @@ change_null(uchar * s)
void
convert_env(void)
{
- uchar *s; /* pointer to env value */
- uchar temp[20]; /* temp storage for addresses */
+ char *s; /* pointer to env value */
+ char temp[20]; /* temp storage for addresses */
/* E -> ethaddr */
s = getenv("E");
@@ -345,8 +345,8 @@ convert_env(void)
/* I -> ipaddr */
s = getenv("I");
if (s != NULL) {
- sprintf(temp, "%d.%d.%d.%d", axtoi(s), axtoi(s + 2),
- axtoi(s + 4), axtoi(s + 6));
+ sprintf(temp, "%d.%d.%d.%d", axtoi((u8 *)s), axtoi((u8 *)(s + 2)),
+ axtoi((u8 *)(s + 4)), axtoi((u8 *)(s + 6)));
setenv("ipaddr", temp);
setenv("I", NULL);
}
@@ -354,8 +354,8 @@ convert_env(void)
/* S -> serverip */
s = getenv("S");
if (s != NULL) {
- sprintf(temp, "%d.%d.%d.%d", axtoi(s), axtoi(s + 2),
- axtoi(s + 4), axtoi(s + 6));
+ sprintf(temp, "%d.%d.%d.%d", axtoi((u8 *)s), axtoi((u8 *)(s + 2)),
+ axtoi((u8 *)(s + 4)), axtoi((u8 *)(s + 6)));
setenv("serverip", temp);
setenv("S", NULL);
}
@@ -391,9 +391,9 @@ convert_env(void)
static void
save_env(void)
{
- uchar eprom[ENV_SIZE]; /* buffer to be written back to EEPROM */
- uchar *s, temp[20];
- uchar ff[] = { 0xff, 0x00 }; /* dummy null value */
+ char eprom[ENV_SIZE]; /* buffer to be written back to EEPROM */
+ char *s, temp[20];
+ char ff[] = { 0xff, 0x00 }; /* dummy null value */
u32 len; /* length of env to be written to EEPROM */
eprom[0] = 0x00;
@@ -422,7 +422,7 @@ save_env(void)
s = getenv("ipaddr");
if (s != NULL) {
strcat(eprom, "I=");
- ip_ml300(s, temp);
+ ip_ml300((uchar *)s, (uchar *)temp);
strcat(eprom, temp);
strcat(eprom, ff);
}
@@ -431,7 +431,7 @@ save_env(void)
s = getenv("serverip");
if (s != NULL) {
strcat(eprom, "S=");
- ip_ml300(s, temp);
+ ip_ml300((uchar *)s, (uchar *)temp);
strcat(eprom, temp);
strcat(eprom, ff);
}
@@ -461,11 +461,11 @@ save_env(void)
}
len = strlen(eprom); /* find env length without crc */
- change_null(eprom); /* change 0xff to 0x00 */
+ change_null((uchar *)eprom); /* change 0xff to 0x00 */
/* update EEPROM env values if there is enough space */
- if (update_crc(len, eprom) == 0)
- send(CFG_ENV_OFFSET, eprom, len + 6);
+ if (update_crc(len, (uchar *)eprom) == 0)
+ send(CFG_ENV_OFFSET, (uchar *)eprom, len + 6);
}
/************************************************************************
diff --git a/board/xm250/u-boot.lds b/board/xm250/u-boot.lds
index e0b0514713f..db8387520eb 100644
--- a/board/xm250/u-boot.lds
+++ b/board/xm250/u-boot.lds
@@ -44,6 +44,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/xpedite1k/u-boot.lds b/board/xpedite1k/u-boot.lds
index 3f964c8852e..0f08637107b 100644
--- a/board/xpedite1k/u-boot.lds
+++ b/board/xpedite1k/u-boot.lds
@@ -74,7 +74,6 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -94,6 +93,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -126,11 +126,13 @@ SECTIONS
_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 = .;
diff --git a/board/xpedite1k/u-boot.lds.debug b/board/xpedite1k/u-boot.lds.debug
index 3530c9889a7..5066326927f 100644
--- a/board/xpedite1k/u-boot.lds.debug
+++ b/board/xpedite1k/u-boot.lds.debug
@@ -64,7 +64,6 @@ SECTIONS
cpu/ppc4xx/serial.o (.text)
cpu/ppc4xx/cpu_init.o (.text)
cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/405gp_enet.o (.text)
common/dlmalloc.o (.text)
lib_generic/crc32.o (.text)
lib_ppc/extable.o (.text)
@@ -83,6 +82,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
diff --git a/board/xpedite1k/xpedite1k.c b/board/xpedite1k/xpedite1k.c
index d6b30b94466..bb36c965236 100644
--- a/board/xpedite1k/xpedite1k.c
+++ b/board/xpedite1k/xpedite1k.c
@@ -96,15 +96,7 @@ int board_early_init_f(void)
int checkboard (void)
{
- sys_info_t sysinfo;
- get_sys_info (&sysinfo);
-
printf ("Board: XES XPedite1000 440GX\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);
return (0);
}
diff --git a/board/xsengine/flash.c b/board/xsengine/flash.c
index 3f93700d6db..2b9afc7a77b 100644
--- a/board/xsengine/flash.c
+++ b/board/xsengine/flash.c
@@ -101,13 +101,9 @@ void flash_print_info (flash_info_t *info)
}
switch (info->flash_id & FLASH_TYPEMASK) {
- 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");
+ case FLASH_S29GL064M: printf ("S29GL064M (64Mbit, top boot sector size)\n");
break;
default: printf ("Unknown Chip Type\n");
break;
@@ -174,17 +170,6 @@ static ulong flash_get_size (vu_long *addr, flash_info_t *info)
debug ("Mirror Bit flash: addr[14] = %08lX addr[15] = %08lX\n",
addr[14], addr[15]);
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");
@@ -196,17 +181,17 @@ static ulong flash_get_size (vu_long *addr, flash_info_t *info)
info->size = 0x01000000;
}
break; /* => 16 MB */
- case AMD_ID_LV320B_2:
- if (addr[15] != AMD_ID_LV320B_3) {
- debug ("Chip: AMLV320B -> unknown\n");
+ 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: AMLV320B\n");
- info->flash_id += FLASH_AMLV320B;
- info->sector_count = 71;
- info->size = 0x00800000;
+ debug ("Chip: S29GL064M-R3\n");
+ info->flash_id += FLASH_S29GL064M;
+ info->sector_count = 128;
+ info->size = 0x01000000;
}
- break; /* => 8 MB */
+ break; /* => 16 MB */
default:
debug ("Chip: *** unknown ***\n");
info->flash_id = FLASH_UNKNOWN;
diff --git a/board/xsengine/u-boot.lds b/board/xsengine/u-boot.lds
index e0b0514713f..db8387520eb 100644
--- a/board/xsengine/u-boot.lds
+++ b/board/xsengine/u-boot.lds
@@ -44,6 +44,7 @@ SECTIONS
. = ALIGN(4);
.got : { *(.got) }
+ . = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
diff --git a/board/zpc1900/u-boot.lds b/board/zpc1900/u-boot.lds
index d6f35f31e09..18c4b46f47b 100644
--- a/board/zpc1900/u-boot.lds
+++ b/board/zpc1900/u-boot.lds
@@ -60,6 +60,7 @@ SECTIONS
*(.rodata)
*(.rodata1)
*(.rodata.str1.4)
+ *(.eh_frame)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
@@ -92,11 +93,13 @@ SECTIONS
_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 = .;