summaryrefslogtreecommitdiff
path: root/arch/arm
diff options
context:
space:
mode:
authorStefano Babic <sbabic@denx.de>2014-08-11 10:21:03 +0200
committerStefano Babic <sbabic@denx.de>2014-08-11 10:21:03 +0200
commite82abaeb7f2a0833fccf90460c48b9f2100258f8 (patch)
treede701f5c90b7373966412d566b5c00d3837954bc /arch/arm
parentf93f21906e374d46c6abfbdf4eb9cb1ab51b6384 (diff)
parent1899fac925eda817e12234aef3d01d354788662e (diff)
downloadu-boot-imx-e82abaeb7f2a0833fccf90460c48b9f2100258f8.zip
u-boot-imx-e82abaeb7f2a0833fccf90460c48b9f2100258f8.tar.gz
u-boot-imx-e82abaeb7f2a0833fccf90460c48b9f2100258f8.tar.bz2
Merge branch 'master' of git://git.denx.de/u-boot-arm
Conflicts: boards.cfg Signed-off-by: Stefano Babic <sbabic@denx.de>
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/Kconfig1002
-rw-r--r--arch/arm/config.mk2
-rw-r--r--arch/arm/cpu/arm926ejs/kirkwood/cpu.c9
-rw-r--r--arch/arm/cpu/armv7/sunxi/Makefile3
-rw-r--r--arch/arm/cpu/armv7/sunxi/board.c5
-rw-r--r--arch/arm/cpu/armv7/sunxi/clock_sun4i.c4
-rw-r--r--arch/arm/cpu/armv7/sunxi/psci.S162
-rw-r--r--arch/arm/include/asm/arch-fsl-lsch3/config.h4
-rw-r--r--arch/arm/include/asm/arch-kirkwood/kirkwood.h1
-rw-r--r--arch/arm/include/asm/arch-s3c24x0/s3c2410.h4
-rw-r--r--arch/arm/include/asm/arch-s3c24x0/s3c2440.h4
-rw-r--r--arch/arm/include/asm/arch-s3c24x0/s3c24x0.h19
-rw-r--r--arch/arm/include/asm/arch-sunxi/clock_sun4i.h15
-rw-r--r--arch/arm/include/asm/config.h2
-rw-r--r--arch/arm/include/asm/io.h1
-rw-r--r--arch/arm/lib/crt0.S12
16 files changed, 1233 insertions, 16 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
new file mode 100644
index 0000000..e385eda
--- /dev/null
+++ b/arch/arm/Kconfig
@@ -0,0 +1,1002 @@
+menu "ARM architecture"
+ depends on ARM
+
+config SYS_ARCH
+ string
+ default "arm"
+
+choice
+ prompt "Target select"
+
+config TARGET_INTEGRATORAP_CM720T
+ bool "Support integratorap_cm720t"
+
+config TARGET_INTEGRATORAP_CM920T
+ bool "Support integratorap_cm920t"
+
+config TARGET_INTEGRATORCP_CM920T
+ bool "Support integratorcp_cm920t"
+
+config TARGET_A320EVB
+ bool "Support a320evb"
+
+config TARGET_AT91RM9200EK
+ bool "Support at91rm9200ek"
+
+config TARGET_EB_CPUX9K2
+ bool "Support eb_cpux9k2"
+
+config TARGET_CPUAT91
+ bool "Support cpuat91"
+
+config TARGET_EDB93XX
+ bool "Support edb93xx"
+
+config TARGET_SCB9328
+ bool "Support scb9328"
+
+config TARGET_CM4008
+ bool "Support cm4008"
+
+config TARGET_CM41XX
+ bool "Support cm41xx"
+
+config TARGET_VCMA9
+ bool "Support VCMA9"
+
+config TARGET_SMDK2410
+ bool "Support smdk2410"
+
+config TARGET_INTEGRATORAP_CM926EJS
+ bool "Support integratorap_cm926ejs"
+
+config TARGET_INTEGRATORCP_CM926EJS
+ bool "Support integratorcp_cm926ejs"
+
+config TARGET_ASPENITE
+ bool "Support aspenite"
+
+config TARGET_GPLUGD
+ bool "Support gplugd"
+
+config TARGET_AFEB9260
+ bool "Support afeb9260"
+
+config TARGET_AT91SAM9260EK
+ bool "Support at91sam9260ek"
+
+config TARGET_AT91SAM9261EK
+ bool "Support at91sam9261ek"
+
+config TARGET_AT91SAM9263EK
+ bool "Support at91sam9263ek"
+
+config TARGET_AT91SAM9M10G45EK
+ bool "Support at91sam9m10g45ek"
+
+config TARGET_AT91SAM9N12EK
+ bool "Support at91sam9n12ek"
+
+config TARGET_AT91SAM9RLEK
+ bool "Support at91sam9rlek"
+
+config TARGET_AT91SAM9X5EK
+ bool "Support at91sam9x5ek"
+
+config TARGET_SNAPPER9260
+ bool "Support snapper9260"
+
+config TARGET_VL_MA2SC
+ bool "Support vl_ma2sc"
+
+config TARGET_SBC35_A9G20
+ bool "Support sbc35_a9g20"
+
+config TARGET_TNY_A9260
+ bool "Support tny_a9260"
+
+config TARGET_USB_A9263
+ bool "Support usb_a9263"
+
+config TARGET_ETHERNUT5
+ bool "Support ethernut5"
+
+config TARGET_TOP9000
+ bool "Support top9000"
+
+config TARGET_MEESC
+ bool "Support meesc"
+
+config TARGET_OTC570
+ bool "Support otc570"
+
+config TARGET_CPU9260
+ bool "Support cpu9260"
+
+config TARGET_PM9261
+ bool "Support pm9261"
+
+config TARGET_PM9263
+ bool "Support pm9263"
+
+config TARGET_PM9G45
+ bool "Support pm9g45"
+
+config TARGET_CORVUS
+ bool "Support corvus"
+
+config TARGET_TAURUS
+ bool "Support taurus"
+
+config TARGET_STAMP9G20
+ bool "Support stamp9g20"
+
+config TARGET_CAM_ENC_4XX
+ bool "Support cam_enc_4xx"
+
+config TARGET_IPAM390
+ bool "Support ipam390"
+
+config TARGET_DA830EVM
+ bool "Support da830evm"
+
+config TARGET_DA850EVM
+ bool "Support da850evm"
+
+config TARGET_HAWKBOARD
+ bool "Support hawkboard"
+
+config TARGET_DAVINCI_DM355EVM
+ bool "Support davinci_dm355evm"
+
+config TARGET_DAVINCI_DM355LEOPARD
+ bool "Support davinci_dm355leopard"
+
+config TARGET_DAVINCI_DM365EVM
+ bool "Support davinci_dm365evm"
+
+config TARGET_DAVINCI_DM6467EVM
+ bool "Support davinci_dm6467evm"
+
+config TARGET_DAVINCI_DVEVM
+ bool "Support davinci_dvevm"
+
+config TARGET_EA20
+ bool "Support ea20"
+
+config TARGET_DAVINCI_SCHMOOGIE
+ bool "Support davinci_schmoogie"
+
+config TARGET_DAVINCI_SFFSDR
+ bool "Support davinci_sffsdr"
+
+config TARGET_DAVINCI_SONATA
+ bool "Support davinci_sonata"
+
+config TARGET_ENBW_CMC
+ bool "Support enbw_cmc"
+
+config TARGET_CALIMAIN
+ bool "Support calimain"
+
+config TARGET_LSXL
+ bool "Support lsxl"
+
+config TARGET_POGO_E02
+ bool "Support pogo_e02"
+
+config TARGET_DNS325
+ bool "Support dns325"
+
+config TARGET_ICONNECT
+ bool "Support iconnect"
+
+config TARGET_TK71
+ bool "Support tk71"
+
+config TARGET_KM_KIRKWOOD
+ bool "Support km_kirkwood"
+
+config TARGET_NET2BIG_V2
+ bool "Support net2big_v2"
+
+config TARGET_NETSPACE_V2
+ bool "Support netspace_v2"
+
+config TARGET_WIRELESS_SPACE
+ bool "Support wireless_space"
+
+config TARGET_DREAMPLUG
+ bool "Support dreamplug"
+
+config TARGET_GURUPLUG
+ bool "Support guruplug"
+
+config TARGET_MV88F6281GTW_GE
+ bool "Support mv88f6281gtw_ge"
+
+config TARGET_OPENRD
+ bool "Support openrd"
+
+config TARGET_RD6281A
+ bool "Support rd6281a"
+
+config TARGET_SHEEVAPLUG
+ bool "Support sheevaplug"
+
+config TARGET_IB62X0
+ bool "Support ib62x0"
+
+config TARGET_DOCKSTAR
+ bool "Support dockstar"
+
+config TARGET_GOFLEXHOME
+ bool "Support goflexhome"
+
+config TARGET_DEVKIT3250
+ bool "Support devkit3250"
+
+config TARGET_JADECPU
+ bool "Support jadecpu"
+
+config TARGET_MX25PDK
+ bool "Support mx25pdk"
+
+config TARGET_TX25
+ bool "Support tx25"
+
+config TARGET_ZMX25
+ bool "Support zmx25"
+
+config TARGET_APF27
+ bool "Support apf27"
+
+config TARGET_IMX27LITE
+ bool "Support imx27lite"
+
+config TARGET_MAGNESIUM
+ bool "Support magnesium"
+
+config TARGET_APX4DEVKIT
+ bool "Support apx4devkit"
+
+config TARGET_XFI3
+ bool "Support xfi3"
+
+config TARGET_M28EVK
+ bool "Support m28evk"
+
+config TARGET_MX23EVK
+ bool "Support mx23evk"
+
+config TARGET_MX28EVK
+ bool "Support mx28evk"
+
+config TARGET_MX23_OLINUXINO
+ bool "Support mx23_olinuxino"
+
+config TARGET_BG0900
+ bool "Support bg0900"
+
+config TARGET_SANSA_FUZE_PLUS
+ bool "Support sansa_fuze_plus"
+
+config TARGET_SC_SPS_1
+ bool "Support sc_sps_1"
+
+config TARGET_NHK8815
+ bool "Support nhk8815"
+
+config TARGET_OMAP5912OSK
+ bool "Support omap5912osk"
+
+config TARGET_EDMINIV2
+ bool "Support edminiv2"
+
+config TARGET_DKB
+ bool "Support dkb"
+
+config TARGET_SPEAR300
+ bool "Support spear300"
+
+config TARGET_SPEAR310
+ bool "Support spear310"
+
+config TARGET_SPEAR320
+ bool "Support spear320"
+
+config TARGET_SPEAR600
+ bool "Support spear600"
+
+config TARGET_X600
+ bool "Support x600"
+
+config TARGET_VERSATILEAB
+ bool "Support versatileab"
+
+config TARGET_VERSATILEPB
+ bool "Support versatilepb"
+
+config TARGET_VERSATILEQEMU
+ bool "Support versatileqemu"
+
+config TARGET_INTEGRATORCP_CM1136
+ bool "Support integratorcp_cm1136"
+
+config TARGET_IMX31_PHYCORE
+ bool "Support imx31_phycore"
+
+config TARGET_QONG
+ bool "Support qong"
+
+config TARGET_MX31ADS
+ bool "Support mx31ads"
+
+config TARGET_MX31PDK
+ bool "Support mx31pdk"
+
+config TARGET_TT01
+ bool "Support tt01"
+
+config TARGET_IMX31_LITEKIT
+ bool "Support imx31_litekit"
+
+config TARGET_WOODBURN
+ bool "Support woodburn"
+
+config TARGET_WOODBURN_SD
+ bool "Support woodburn_sd"
+
+config TARGET_FLEA3
+ bool "Support flea3"
+
+config TARGET_MX35PDK
+ bool "Support mx35pdk"
+
+config TARGET_RPI_B
+ bool "Support rpi_b"
+
+config TARGET_TNETV107X_EVM
+ bool "Support tnetv107x_evm"
+
+config TARGET_INTEGRATORAP_CM946ES
+ bool "Support integratorap_cm946es"
+
+config TARGET_INTEGRATORCP_CM946ES
+ bool "Support integratorcp_cm946es"
+
+config TARGET_VEXPRESS_CA15_TC2
+ bool "Support vexpress_ca15_tc2"
+
+config TARGET_VEXPRESS_CA5X2
+ bool "Support vexpress_ca5x2"
+
+config TARGET_VEXPRESS_CA9X4
+ bool "Support vexpress_ca9x4"
+
+config TARGET_KWB
+ bool "Support kwb"
+
+config TARGET_TSERIES
+ bool "Support tseries"
+
+config TARGET_CM_T335
+ bool "Support cm_t335"
+
+config TARGET_PEPPER
+ bool "Support pepper"
+
+config TARGET_AM335X_IGEP0033
+ bool "Support am335x_igep0033"
+
+config TARGET_PCM051
+ bool "Support pcm051"
+
+config TARGET_DRACO
+ bool "Support draco"
+
+config TARGET_DXR2
+ bool "Support dxr2"
+
+config TARGET_PXM2
+ bool "Support pxm2"
+
+config TARGET_RUT
+ bool "Support rut"
+
+config TARGET_PENGWYN
+ bool "Support pengwyn"
+
+config TARGET_AM335X_EVM
+ bool "Support am335x_evm"
+
+config TARGET_AM43XX_EVM
+ bool "Support am43xx_evm"
+
+config TARGET_TI814X_EVM
+ bool "Support ti814x_evm"
+
+config TARGET_TI816X_EVM
+ bool "Support ti816x_evm"
+
+config TARGET_SAMA5D3_XPLAINED
+ bool "Support sama5d3_xplained"
+
+config TARGET_SAMA5D3XEK
+ bool "Support sama5d3xek"
+
+config TARGET_BCM28155_AP
+ bool "Support bcm28155_ap"
+
+config TARGET_ARNDALE
+ bool "Support arndale"
+
+config TARGET_ORIGEN
+ bool "Support origen"
+
+config TARGET_SMDK5250
+ bool "Support smdk5250"
+
+config TARGET_SNOW
+ bool "Support snow"
+
+config TARGET_PEACH_PIT
+ bool "Support peach-pit"
+
+config TARGET_SMDK5420
+ bool "Support smdk5420"
+
+config TARGET_SMDKV310
+ bool "Support smdkv310"
+
+config TARGET_TRATS
+ bool "Support trats"
+
+config TARGET_TRATS2
+ bool "Support trats2"
+
+config TARGET_S5PC210_UNIVERSAL
+ bool "Support s5pc210_universal"
+
+config TARGET_HIGHBANK
+ bool "Support highbank"
+
+config TARGET_K2E_EVM
+ bool "Support k2e_evm"
+
+config TARGET_K2HK_EVM
+ bool "Support k2hk_evm"
+
+config TARGET_M53EVK
+ bool "Support m53evk"
+
+config TARGET_IMA3_MX53
+ bool "Support ima3-mx53"
+
+config TARGET_MX51EVK
+ bool "Support mx51evk"
+
+config TARGET_MX53ARD
+ bool "Support mx53ard"
+
+config TARGET_MX53EVK
+ bool "Support mx53evk"
+
+config TARGET_MX53LOCO
+ bool "Support mx53loco"
+
+config TARGET_MX53SMD
+ bool "Support mx53smd"
+
+config TARGET_MX51_EFIKAMX
+ bool "Support mx51_efikamx"
+
+config TARGET_VISION2
+ bool "Support vision2"
+
+config TARGET_UDOO
+ bool "Support udoo"
+
+config TARGET_WANDBOARD
+ bool "Support wandboard"
+
+config TARGET_TITANIUM
+ bool "Support titanium"
+
+config TARGET_NITROGEN6X
+ bool "Support nitrogen6x"
+
+config TARGET_CGTQMX6EVAL
+ bool "Support cgtqmx6eval"
+
+config TARGET_EMBESTMX6BOARDS
+ bool "Support embestmx6boards"
+
+config TARGET_MX6QARM2
+ bool "Support mx6qarm2"
+
+config TARGET_MX6QSABREAUTO
+ bool "Support mx6qsabreauto"
+
+config TARGET_MX6SABRESD
+ bool "Support mx6sabresd"
+
+config TARGET_MX6SLEVK
+ bool "Support mx6slevk"
+
+config TARGET_GW_VENTANA
+ bool "Support gw_ventana"
+
+config TARGET_HUMMINGBOARD
+ bool "Support hummingboard"
+
+config TARGET_OMAP3_OVERO
+ bool "Support omap3_overo"
+
+config TARGET_OMAP3_PANDORA
+ bool "Support omap3_pandora"
+
+config TARGET_ECO5PK
+ bool "Support eco5pk"
+
+config TARGET_DIG297
+ bool "Support dig297"
+
+config TARGET_CM_T35
+ bool "Support cm_t35"
+
+config TARGET_TRICORDER
+ bool "Support tricorder"
+
+config TARGET_MCX
+ bool "Support mcx"
+
+config TARGET_OMAP3_IGEP00X0
+ bool "Support omap3_igep00x0"
+
+config TARGET_AM3517_EVM
+ bool "Support am3517_evm"
+
+config TARGET_OMAP3_LOGIC
+ bool "Support omap3_logic"
+
+config TARGET_OMAP3_ZOOM1
+ bool "Support omap3_zoom1"
+
+config TARGET_OMAP3_MVBLX
+ bool "Support omap3_mvblx"
+
+config TARGET_NOKIA_RX51
+ bool "Support nokia_rx51"
+
+config TARGET_TAO3530
+ bool "Support tao3530"
+
+config TARGET_TWISTER
+ bool "Support twister"
+
+config TARGET_MT_VENTOUX
+ bool "Support mt_ventoux"
+
+config TARGET_AM3517_CRANE
+ bool "Support am3517_crane"
+
+config TARGET_OMAP3_BEAGLE
+ bool "Support omap3_beagle"
+
+config TARGET_OMAP3_EVM
+ bool "Support omap3_evm"
+
+config TARGET_OMAP3_EVM_QUICK_MMC
+ bool "Support omap3_evm_quick_mmc"
+
+config TARGET_OMAP3_EVM_QUICK_NAND
+ bool "Support omap3_evm_quick_nand"
+
+config TARGET_OMAP3_SDP3430
+ bool "Support omap3_sdp3430"
+
+config TARGET_DEVKIT8000
+ bool "Support devkit8000"
+
+config TARGET_DUOVERO
+ bool "Support duovero"
+
+config TARGET_OMAP4_PANDA
+ bool "Support omap4_panda"
+
+config TARGET_OMAP4_SDP4430
+ bool "Support omap4_sdp4430"
+
+config TARGET_CM_T54
+ bool "Support cm_t54"
+
+config TARGET_DRA7XX_EVM
+ bool "Support dra7xx_evm"
+
+config TARGET_OMAP5_UEVM
+ bool "Support omap5_uevm"
+
+config TARGET_ARMADILLO_800EVA
+ bool "Support armadillo-800eva"
+
+config TARGET_KZM9G
+ bool "Support kzm9g"
+
+config TARGET_ALT
+ bool "Support alt"
+
+config TARGET_KOELSCH
+ bool "Support koelsch"
+
+config TARGET_LAGER
+ bool "Support lager"
+
+config TARGET_S5P_GONI
+ bool "Support s5p_goni"
+
+config TARGET_SMDKC100
+ bool "Support smdkc100"
+
+config TARGET_SOCFPGA_CYCLONE5
+ bool "Support socfpga_cyclone5"
+
+config TARGET_SUN4I
+ bool "Support sun4i"
+
+config TARGET_SUN5I
+ bool "Support sun5i"
+
+config TARGET_SUN7I
+ bool "Support sun7i"
+
+config TARGET_SNOWBALL
+ bool "Support snowball"
+
+config TARGET_U8500_HREF
+ bool "Support u8500_href"
+
+config TARGET_VF610TWR
+ bool "Support vf610twr"
+
+config TARGET_ZYNQ_MICROZED
+ bool "Support zynq_microzed"
+
+config TARGET_ZYNQ_ZC70X
+ bool "Support zynq_zc70x"
+
+config TARGET_ZYNQ_ZC770
+ bool "Support zynq_zc770"
+
+config TARGET_ZYNQ_ZED
+ bool "Support zynq_zed"
+
+config TARGET_MEDCOM_WIDE
+ bool "Support medcom-wide"
+
+config TARGET_PLUTUX
+ bool "Support plutux"
+
+config TARGET_TEC
+ bool "Support tec"
+
+config TARGET_PAZ00
+ bool "Support paz00"
+
+config TARGET_TRIMSLICE
+ bool "Support trimslice"
+
+config TARGET_HARMONY
+ bool "Support harmony"
+
+config TARGET_SEABOARD
+ bool "Support seaboard"
+
+config TARGET_VENTANA
+ bool "Support ventana"
+
+config TARGET_WHISTLER
+ bool "Support whistler"
+
+config TARGET_COLIBRI_T20_IRIS
+ bool "Support colibri_t20_iris"
+
+config TARGET_TEC_NG
+ bool "Support tec-ng"
+
+config TARGET_BEAVER
+ bool "Support beaver"
+
+config TARGET_CARDHU
+ bool "Support cardhu"
+
+config TARGET_DALMORE
+ bool "Support dalmore"
+
+config TARGET_JETSON_TK1
+ bool "Support jetson-tk1"
+
+config TARGET_VENICE2
+ bool "Support venice2"
+
+config TARGET_VEXPRESS_AEMV8A
+ bool "Support vexpress_aemv8a"
+
+config TARGET_VEXPRESS_AEMV8A_SEMI
+ bool "Support vexpress_aemv8a_semi"
+
+config TARGET_LS2085A_EMU
+ bool "Support ls2085a_emu"
+
+config TARGET_LS2085A_SIMU
+ bool "Support ls2085a_simu"
+
+config TARGET_BALLOON3
+ bool "Support balloon3"
+
+config TARGET_H2200
+ bool "Support h2200"
+
+config TARGET_PALMLD
+ bool "Support palmld"
+
+config TARGET_PALMTC
+ bool "Support palmtc"
+
+config TARGET_PALMTREO680
+ bool "Support palmtreo680"
+
+config TARGET_PXA255_IDP
+ bool "Support pxa255_idp"
+
+config TARGET_TRIZEPSIV
+ bool "Support trizepsiv"
+
+config TARGET_VPAC270
+ bool "Support vpac270"
+
+config TARGET_XAENIAX
+ bool "Support xaeniax"
+
+config TARGET_ZIPITZ2
+ bool "Support zipitz2"
+
+config TARGET_LP8X4X
+ bool "Support lp8x4x"
+
+config TARGET_COLIBRI_PXA270
+ bool "Support colibri_pxa270"
+
+config TARGET_JORNADA
+ bool "Support jornada"
+
+endchoice
+
+source "board/8dtech/eco5pk/Kconfig"
+source "board/Barix/ipam390/Kconfig"
+source "board/BuR/kwb/Kconfig"
+source "board/BuR/tseries/Kconfig"
+source "board/BuS/eb_cpux9k2/Kconfig"
+source "board/BuS/vl_ma2sc/Kconfig"
+source "board/CarMediaLab/flea3/Kconfig"
+source "board/LaCie/edminiv2/Kconfig"
+source "board/LaCie/net2big_v2/Kconfig"
+source "board/LaCie/netspace_v2/Kconfig"
+source "board/LaCie/wireless_space/Kconfig"
+source "board/Marvell/aspenite/Kconfig"
+source "board/Marvell/dkb/Kconfig"
+source "board/Marvell/dreamplug/Kconfig"
+source "board/Marvell/gplugd/Kconfig"
+source "board/Marvell/guruplug/Kconfig"
+source "board/Marvell/mv88f6281gtw_ge/Kconfig"
+source "board/Marvell/openrd/Kconfig"
+source "board/Marvell/rd6281a/Kconfig"
+source "board/Marvell/sheevaplug/Kconfig"
+source "board/Seagate/dockstar/Kconfig"
+source "board/Seagate/goflexhome/Kconfig"
+source "board/afeb9260/Kconfig"
+source "board/ait/cam_enc_4xx/Kconfig"
+source "board/altera/socfpga/Kconfig"
+source "board/armadeus/apf27/Kconfig"
+source "board/armltd/integrator/Kconfig"
+source "board/armltd/versatile/Kconfig"
+source "board/armltd/vexpress/Kconfig"
+source "board/armltd/vexpress64/Kconfig"
+source "board/atmark-techno/armadillo-800eva/Kconfig"
+source "board/atmel/at91rm9200ek/Kconfig"
+source "board/atmel/at91sam9260ek/Kconfig"
+source "board/atmel/at91sam9261ek/Kconfig"
+source "board/atmel/at91sam9263ek/Kconfig"
+source "board/atmel/at91sam9m10g45ek/Kconfig"
+source "board/atmel/at91sam9n12ek/Kconfig"
+source "board/atmel/at91sam9rlek/Kconfig"
+source "board/atmel/at91sam9x5ek/Kconfig"
+source "board/atmel/sama5d3_xplained/Kconfig"
+source "board/atmel/sama5d3xek/Kconfig"
+source "board/avionic-design/medcom-wide/Kconfig"
+source "board/avionic-design/plutux/Kconfig"
+source "board/avionic-design/tec-ng/Kconfig"
+source "board/avionic-design/tec/Kconfig"
+source "board/balloon3/Kconfig"
+source "board/barco/titanium/Kconfig"
+source "board/bluegiga/apx4devkit/Kconfig"
+source "board/bluewater/snapper9260/Kconfig"
+source "board/boundary/nitrogen6x/Kconfig"
+source "board/broadcom/bcm28155_ap/Kconfig"
+source "board/buffalo/lsxl/Kconfig"
+source "board/calao/sbc35_a9g20/Kconfig"
+source "board/calao/tny_a9260/Kconfig"
+source "board/calao/usb_a9263/Kconfig"
+source "board/cirrus/edb93xx/Kconfig"
+source "board/cloudengines/pogo_e02/Kconfig"
+source "board/cm4008/Kconfig"
+source "board/cm41xx/Kconfig"
+source "board/comelit/dig297/Kconfig"
+source "board/compal/paz00/Kconfig"
+source "board/compulab/cm_t335/Kconfig"
+source "board/compulab/cm_t35/Kconfig"
+source "board/compulab/cm_t54/Kconfig"
+source "board/compulab/trimslice/Kconfig"
+source "board/congatec/cgtqmx6eval/Kconfig"
+source "board/corscience/tricorder/Kconfig"
+source "board/creative/xfi3/Kconfig"
+source "board/d-link/dns325/Kconfig"
+source "board/davedenx/qong/Kconfig"
+source "board/davinci/da8xxevm/Kconfig"
+source "board/davinci/dm355evm/Kconfig"
+source "board/davinci/dm355leopard/Kconfig"
+source "board/davinci/dm365evm/Kconfig"
+source "board/davinci/dm6467evm/Kconfig"
+source "board/davinci/dvevm/Kconfig"
+source "board/davinci/ea20/Kconfig"
+source "board/davinci/schmoogie/Kconfig"
+source "board/davinci/sffsdr/Kconfig"
+source "board/davinci/sonata/Kconfig"
+source "board/denx/m28evk/Kconfig"
+source "board/denx/m53evk/Kconfig"
+source "board/egnite/ethernut5/Kconfig"
+source "board/embest/mx6boards/Kconfig"
+source "board/emk/top9000/Kconfig"
+source "board/enbw/enbw_cmc/Kconfig"
+source "board/esd/meesc/Kconfig"
+source "board/esd/otc570/Kconfig"
+source "board/esg/ima3-mx53/Kconfig"
+source "board/eukrea/cpu9260/Kconfig"
+source "board/eukrea/cpuat91/Kconfig"
+source "board/faraday/a320evb/Kconfig"
+source "board/freescale/ls2085a/Kconfig"
+source "board/freescale/mx23evk/Kconfig"
+source "board/freescale/mx25pdk/Kconfig"
+source "board/freescale/mx28evk/Kconfig"
+source "board/freescale/mx31ads/Kconfig"
+source "board/freescale/mx31pdk/Kconfig"
+source "board/freescale/mx35pdk/Kconfig"
+source "board/freescale/mx51evk/Kconfig"
+source "board/freescale/mx53ard/Kconfig"
+source "board/freescale/mx53evk/Kconfig"
+source "board/freescale/mx53loco/Kconfig"
+source "board/freescale/mx53smd/Kconfig"
+source "board/freescale/mx6qarm2/Kconfig"
+source "board/freescale/mx6qsabreauto/Kconfig"
+source "board/freescale/mx6sabresd/Kconfig"
+source "board/freescale/mx6slevk/Kconfig"
+source "board/freescale/vf610twr/Kconfig"
+source "board/gateworks/gw_ventana/Kconfig"
+source "board/genesi/mx51_efikamx/Kconfig"
+source "board/gumstix/duovero/Kconfig"
+source "board/gumstix/pepper/Kconfig"
+source "board/h2200/Kconfig"
+source "board/hale/tt01/Kconfig"
+source "board/highbank/Kconfig"
+source "board/htkw/mcx/Kconfig"
+source "board/icpdas/lp8x4x/Kconfig"
+source "board/imx31_phycore/Kconfig"
+source "board/iomega/iconnect/Kconfig"
+source "board/isee/igep0033/Kconfig"
+source "board/isee/igep00x0/Kconfig"
+source "board/jornada/Kconfig"
+source "board/karo/tk71/Kconfig"
+source "board/karo/tx25/Kconfig"
+source "board/keymile/km_arm/Kconfig"
+source "board/kmc/kzm9g/Kconfig"
+source "board/logicpd/am3517evm/Kconfig"
+source "board/logicpd/imx27lite/Kconfig"
+source "board/logicpd/imx31_litekit/Kconfig"
+source "board/logicpd/omap3som/Kconfig"
+source "board/logicpd/zoom1/Kconfig"
+source "board/matrix_vision/mvblx/Kconfig"
+source "board/mpl/vcma9/Kconfig"
+source "board/nokia/rx51/Kconfig"
+source "board/nvidia/beaver/Kconfig"
+source "board/nvidia/cardhu/Kconfig"
+source "board/nvidia/dalmore/Kconfig"
+source "board/nvidia/harmony/Kconfig"
+source "board/nvidia/jetson-tk1/Kconfig"
+source "board/nvidia/seaboard/Kconfig"
+source "board/nvidia/venice2/Kconfig"
+source "board/nvidia/ventana/Kconfig"
+source "board/nvidia/whistler/Kconfig"
+source "board/olimex/mx23_olinuxino/Kconfig"
+source "board/omicron/calimain/Kconfig"
+source "board/overo/Kconfig"
+source "board/palmld/Kconfig"
+source "board/palmtc/Kconfig"
+source "board/palmtreo680/Kconfig"
+source "board/pandora/Kconfig"
+source "board/phytec/pcm051/Kconfig"
+source "board/ppcag/bg0900/Kconfig"
+source "board/pxa255_idp/Kconfig"
+source "board/raidsonic/ib62x0/Kconfig"
+source "board/raspberrypi/rpi_b/Kconfig"
+source "board/renesas/alt/Kconfig"
+source "board/renesas/koelsch/Kconfig"
+source "board/renesas/lager/Kconfig"
+source "board/ronetix/pm9261/Kconfig"
+source "board/ronetix/pm9263/Kconfig"
+source "board/ronetix/pm9g45/Kconfig"
+source "board/samsung/arndale/Kconfig"
+source "board/samsung/goni/Kconfig"
+source "board/samsung/origen/Kconfig"
+source "board/samsung/smdk2410/Kconfig"
+source "board/samsung/smdk5250/Kconfig"
+source "board/samsung/smdk5420/Kconfig"
+source "board/samsung/smdkc100/Kconfig"
+source "board/samsung/smdkv310/Kconfig"
+source "board/samsung/trats/Kconfig"
+source "board/samsung/trats2/Kconfig"
+source "board/samsung/universal_c210/Kconfig"
+source "board/sandisk/sansa_fuze_plus/Kconfig"
+source "board/scb9328/Kconfig"
+source "board/schulercontrol/sc_sps_1/Kconfig"
+source "board/siemens/corvus/Kconfig"
+source "board/siemens/draco/Kconfig"
+source "board/siemens/pxm2/Kconfig"
+source "board/siemens/rut/Kconfig"
+source "board/siemens/taurus/Kconfig"
+source "board/silica/pengwyn/Kconfig"
+source "board/solidrun/hummingboard/Kconfig"
+source "board/spear/spear300/Kconfig"
+source "board/spear/spear310/Kconfig"
+source "board/spear/spear320/Kconfig"
+source "board/spear/spear600/Kconfig"
+source "board/spear/x600/Kconfig"
+source "board/st-ericsson/snowball/Kconfig"
+source "board/st-ericsson/u8500/Kconfig"
+source "board/st/nhk8815/Kconfig"
+source "board/sunxi/Kconfig"
+source "board/syteco/jadecpu/Kconfig"
+source "board/syteco/zmx25/Kconfig"
+source "board/taskit/stamp9g20/Kconfig"
+source "board/technexion/tao3530/Kconfig"
+source "board/technexion/twister/Kconfig"
+source "board/teejet/mt_ventoux/Kconfig"
+source "board/ti/am335x/Kconfig"
+source "board/ti/am3517crane/Kconfig"
+source "board/ti/am43xx/Kconfig"
+source "board/ti/beagle/Kconfig"
+source "board/ti/dra7xx/Kconfig"
+source "board/ti/evm/Kconfig"
+source "board/ti/ks2_evm/Kconfig"
+source "board/ti/omap5912osk/Kconfig"
+source "board/ti/omap5_uevm/Kconfig"
+source "board/ti/panda/Kconfig"
+source "board/ti/sdp3430/Kconfig"
+source "board/ti/sdp4430/Kconfig"
+source "board/ti/ti814x/Kconfig"
+source "board/ti/ti816x/Kconfig"
+source "board/ti/tnetv107xevm/Kconfig"
+source "board/timll/devkit3250/Kconfig"
+source "board/timll/devkit8000/Kconfig"
+source "board/toradex/colibri_pxa270/Kconfig"
+source "board/toradex/colibri_t20_iris/Kconfig"
+source "board/trizepsiv/Kconfig"
+source "board/ttcontrol/vision2/Kconfig"
+source "board/udoo/Kconfig"
+source "board/vpac270/Kconfig"
+source "board/wandboard/Kconfig"
+source "board/woodburn/Kconfig"
+source "board/xaeniax/Kconfig"
+source "board/xilinx/zynq/Kconfig"
+source "board/zipitz2/Kconfig"
+
+endmenu
diff --git a/arch/arm/config.mk b/arch/arm/config.mk
index c3b8289..c339e6d 100644
--- a/arch/arm/config.mk
+++ b/arch/arm/config.mk
@@ -22,7 +22,7 @@ PLATFORM_RELFLAGS += $(call cc-option, -msoft-float) \
# Support generic board on ARM
__HAVE_ARCH_GENERIC_BOARD := y
-PLATFORM_CPPFLAGS += -DCONFIG_ARM -D__ARM__
+PLATFORM_CPPFLAGS += -D__ARM__
# Choose between ARM/Thumb instruction sets
ifeq ($(CONFIG_SYS_THUMB_BUILD),y)
diff --git a/arch/arm/cpu/arm926ejs/kirkwood/cpu.c b/arch/arm/cpu/arm926ejs/kirkwood/cpu.c
index da80240..881e2de 100644
--- a/arch/arm/cpu/arm926ejs/kirkwood/cpu.c
+++ b/arch/arm/cpu/arm926ejs/kirkwood/cpu.c
@@ -13,6 +13,7 @@
#include <asm/io.h>
#include <asm/arch/cpu.h>
#include <asm/arch/kirkwood.h>
+#include <mvebu_mmc.h>
#define BUFLEN 16
@@ -377,3 +378,11 @@ int cpu_eth_init(bd_t *bis)
return 0;
}
#endif
+
+#ifdef CONFIG_MVEBU_MMC
+int board_mmc_init(bd_t *bis)
+{
+ mvebu_mmc_init(bis);
+ return 0;
+}
+#endif /* CONFIG_MVEBU_MMC */
diff --git a/arch/arm/cpu/armv7/sunxi/Makefile b/arch/arm/cpu/armv7/sunxi/Makefile
index 6c70639..e9721b2 100644
--- a/arch/arm/cpu/armv7/sunxi/Makefile
+++ b/arch/arm/cpu/armv7/sunxi/Makefile
@@ -17,6 +17,9 @@ obj-$(CONFIG_SUN7I) += clock_sun4i.o
ifndef CONFIG_SPL_BUILD
obj-y += cpu_info.o
+ifdef CONFIG_ARMV7_PSCI
+obj-y += psci.o
+endif
endif
ifdef CONFIG_SPL_BUILD
diff --git a/arch/arm/cpu/armv7/sunxi/board.c b/arch/arm/cpu/armv7/sunxi/board.c
index 8f2cef3..f2cedbb 100644
--- a/arch/arm/cpu/armv7/sunxi/board.c
+++ b/arch/arm/cpu/armv7/sunxi/board.c
@@ -129,6 +129,11 @@ int cpu_eth_init(bd_t *bis)
{
__maybe_unused int rc;
+#ifdef CONFIG_MACPWR
+ gpio_direction_output(CONFIG_MACPWR, 1);
+ mdelay(200);
+#endif
+
#ifdef CONFIG_SUNXI_EMAC
rc = sunxi_emac_initialize(bis);
if (rc < 0) {
diff --git a/arch/arm/cpu/armv7/sunxi/clock_sun4i.c b/arch/arm/cpu/armv7/sunxi/clock_sun4i.c
index b8b16cf..ecbdb01 100644
--- a/arch/arm/cpu/armv7/sunxi/clock_sun4i.c
+++ b/arch/arm/cpu/armv7/sunxi/clock_sun4i.c
@@ -39,6 +39,10 @@ void clock_init_safe(void)
setbits_le32(&ccm->ahb_gate0, 0x1 << AHB_GATE_OFFSET_DMA);
#endif
writel(PLL6_CFG_DEFAULT, &ccm->pll6_cfg);
+#ifdef CONFIG_SUNXI_AHCI
+ setbits_le32(&ccm->ahb_gate0, 0x1 << AHB_GATE_OFFSET_SATA);
+ setbits_le32(&ccm->pll6_cfg, 0x1 << CCM_PLL6_CTRL_SATA_EN_SHIFT);
+#endif
}
#endif
diff --git a/arch/arm/cpu/armv7/sunxi/psci.S b/arch/arm/cpu/armv7/sunxi/psci.S
new file mode 100644
index 0000000..0084c81
--- /dev/null
+++ b/arch/arm/cpu/armv7/sunxi/psci.S
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2013 - ARM Ltd
+ * Author: Marc Zyngier <marc.zyngier@arm.com>
+ *
+ * Based on code by Carl van Schaik <carl@ok-labs.com>.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <config.h>
+#include <asm/psci.h>
+#include <asm/arch/cpu.h>
+
+/*
+ * Memory layout:
+ *
+ * SECURE_RAM to text_end :
+ * ._secure_text section
+ * text_end to ALIGN_PAGE(text_end):
+ * nothing
+ * ALIGN_PAGE(text_end) to ALIGN_PAGE(text_end) + 0x1000)
+ * 1kB of stack per CPU (4 CPUs max).
+ */
+
+ .pushsection ._secure.text, "ax"
+
+ .arch_extension sec
+
+#define ONE_MS (CONFIG_SYS_CLK_FREQ / 1000)
+#define TEN_MS (10 * ONE_MS)
+
+.macro timer_wait reg, ticks
+ @ Program CNTP_TVAL
+ movw \reg, #(\ticks & 0xffff)
+ movt \reg, #(\ticks >> 16)
+ mcr p15, 0, \reg, c14, c2, 0
+ isb
+ @ Enable physical timer, mask interrupt
+ mov \reg, #3
+ mcr p15, 0, \reg, c14, c2, 1
+ @ Poll physical timer until ISTATUS is on
+1: isb
+ mrc p15, 0, \reg, c14, c2, 1
+ ands \reg, \reg, #4
+ bne 1b
+ @ Disable timer
+ mov \reg, #0
+ mcr p15, 0, \reg, c14, c2, 1
+ isb
+.endm
+
+.globl psci_arch_init
+psci_arch_init:
+ mrc p15, 0, r5, c1, c1, 0 @ Read SCR
+ bic r5, r5, #1 @ Secure mode
+ mcr p15, 0, r5, c1, c1, 0 @ Write SCR
+ isb
+
+ mrc p15, 0, r4, c0, c0, 5 @ MPIDR
+ and r4, r4, #3 @ cpu number in cluster
+ mov r5, #400 @ 1kB of stack per CPU
+ mul r4, r4, r5
+
+ adr r5, text_end @ end of text
+ add r5, r5, #0x2000 @ Skip two pages
+ lsr r5, r5, #12 @ Align to start of page
+ lsl r5, r5, #12
+ sub sp, r5, r4 @ here's our stack!
+
+ bx lr
+
+ @ r1 = target CPU
+ @ r2 = target PC
+.globl psci_cpu_on
+psci_cpu_on:
+ adr r0, _target_pc
+ str r2, [r0]
+ dsb
+
+ movw r0, #(SUNXI_CPUCFG_BASE & 0xffff)
+ movt r0, #(SUNXI_CPUCFG_BASE >> 16)
+
+ @ CPU mask
+ and r1, r1, #3 @ only care about first cluster
+ mov r4, #1
+ lsl r4, r4, r1
+
+ adr r6, _sunxi_cpu_entry
+ str r6, [r0, #0x1a4] @ PRIVATE_REG (boot vector)
+
+ @ Assert reset on target CPU
+ mov r6, #0
+ lsl r5, r1, #6 @ 64 bytes per CPU
+ add r5, r5, #0x40 @ Offset from base
+ add r5, r5, r0 @ CPU control block
+ str r6, [r5] @ Reset CPU
+
+ @ l1 invalidate
+ ldr r6, [r0, #0x184]
+ bic r6, r6, r4
+ str r6, [r0, #0x184]
+
+ @ Lock CPU
+ ldr r6, [r0, #0x1e4]
+ bic r6, r6, r4
+ str r6, [r0, #0x1e4]
+
+ @ Release power clamp
+ movw r6, #0x1ff
+ movt r6, #0
+1: lsrs r6, r6, #1
+ str r6, [r0, #0x1b0]
+ bne 1b
+
+ timer_wait r1, TEN_MS
+
+ @ Clear power gating
+ ldr r6, [r0, #0x1b4]
+ bic r6, r6, #1
+ str r6, [r0, #0x1b4]
+
+ @ Deassert reset on target CPU
+ mov r6, #3
+ str r6, [r5]
+
+ @ Unlock CPU
+ ldr r6, [r0, #0x1e4]
+ orr r6, r6, r4
+ str r6, [r0, #0x1e4]
+
+ mov r0, #ARM_PSCI_RET_SUCCESS @ Return PSCI_RET_SUCCESS
+ mov pc, lr
+
+_target_pc:
+ .word 0
+
+_sunxi_cpu_entry:
+ @ Set SMP bit
+ mrc p15, 0, r0, c1, c0, 1
+ orr r0, r0, #0x40
+ mcr p15, 0, r0, c1, c0, 1
+ isb
+
+ bl _nonsec_init
+ bl psci_arch_init
+
+ adr r0, _target_pc
+ ldr r0, [r0]
+ b _do_nonsec_entry
+
+text_end:
+ .popsection
diff --git a/arch/arm/include/asm/arch-fsl-lsch3/config.h b/arch/arm/include/asm/arch-fsl-lsch3/config.h
index c1c718e..b17410a 100644
--- a/arch/arm/include/asm/arch-fsl-lsch3/config.h
+++ b/arch/arm/include/asm/arch-fsl-lsch3/config.h
@@ -43,7 +43,11 @@
/* DDR */
#define CONFIG_SYS_FSL_DDR_LE
#define CONFIG_VERY_BIG_RAM
+#ifdef CONFIG_SYS_FSL_DDR4
+#define CONFIG_SYS_FSL_DDRC_GEN4
+#else
#define CONFIG_SYS_FSL_DDRC_ARM_GEN3 /* Enable Freescale ARM DDR3 driver */
+#endif
#define CONFIG_SYS_FSL_DDR /* Freescale DDR driver */
#define CONFIG_SYS_LS2_DDR_BLOCK1_SIZE ((phys_size_t)2 << 30)
#define CONFIG_MAX_MEM_MAPPED CONFIG_SYS_LS2_DDR_BLOCK1_SIZE
diff --git a/arch/arm/include/asm/arch-kirkwood/kirkwood.h b/arch/arm/include/asm/arch-kirkwood/kirkwood.h
index bc207f5..3ea51d7 100644
--- a/arch/arm/include/asm/arch-kirkwood/kirkwood.h
+++ b/arch/arm/include/asm/arch-kirkwood/kirkwood.h
@@ -39,6 +39,7 @@
#define KW_EGIGA0_BASE (KW_REGISTER(0x72000))
#define KW_EGIGA1_BASE (KW_REGISTER(0x76000))
#define KW_SATA_BASE (KW_REGISTER(0x80000))
+#define KW_SDIO_BASE (KW_REGISTER(0x90000))
/* Kirkwood Sata controller has two ports */
#define KW_SATA_PORT0_OFFSET 0x2000
diff --git a/arch/arm/include/asm/arch-s3c24x0/s3c2410.h b/arch/arm/include/asm/arch-s3c24x0/s3c2410.h
index 01fe0f2..ce4186f 100644
--- a/arch/arm/include/asm/arch-s3c24x0/s3c2410.h
+++ b/arch/arm/include/asm/arch-s3c24x0/s3c2410.h
@@ -139,9 +139,9 @@ static inline struct s3c24x0_spi *s3c24x0_get_base_spi(void)
return (struct s3c24x0_spi *)S3C24X0_SPI_BASE;
}
-static inline struct s3c2410_sdi *s3c2410_get_base_sdi(void)
+static inline struct s3c24x0_sdi *s3c24x0_get_base_sdi(void)
{
- return (struct s3c2410_sdi *)S3C2410_SDI_BASE;
+ return (struct s3c24x0_sdi *)S3C2410_SDI_BASE;
}
#endif /*__S3C2410_H__*/
diff --git a/arch/arm/include/asm/arch-s3c24x0/s3c2440.h b/arch/arm/include/asm/arch-s3c24x0/s3c2440.h
index 15a7cb4..3f44bdc 100644
--- a/arch/arm/include/asm/arch-s3c24x0/s3c2440.h
+++ b/arch/arm/include/asm/arch-s3c24x0/s3c2440.h
@@ -137,9 +137,9 @@ static inline struct s3c24x0_spi *s3c24x0_get_base_spi(void)
return (struct s3c24x0_spi *)S3C24X0_SPI_BASE;
}
-static inline struct s3c2440_sdi *s3c2440_get_base_sdi(void)
+static inline struct s3c24x0_sdi *s3c24x0_get_base_sdi(void)
{
- return (struct s3c2440_sdi *)S3C2440_SDI_BASE;
+ return (struct s3c24x0_sdi *)S3C2440_SDI_BASE;
}
#endif /*__S3C2440_H__*/
diff --git a/arch/arm/include/asm/arch-s3c24x0/s3c24x0.h b/arch/arm/include/asm/arch-s3c24x0/s3c24x0.h
index 86d720c..ed9df34 100644
--- a/arch/arm/include/asm/arch-s3c24x0/s3c24x0.h
+++ b/arch/arm/include/asm/arch-s3c24x0/s3c24x0.h
@@ -675,7 +675,7 @@ struct s3c2400_mmc {
/* SD INTERFACE (see S3C2410 manual chapter 19) */
-struct s3c2410_sdi {
+struct s3c24x0_sdi {
u32 sdicon;
u32 sdipre;
u32 sdicarg;
@@ -691,14 +691,19 @@ struct s3c2410_sdi {
u32 sdidcnt;
u32 sdidsta;
u32 sdifsta;
-#ifdef __BIG_ENDIAN
- u8 res[3];
- u8 sdidat;
+#ifdef CONFIG_S3C2410
+ u32 sdidat;
+ u32 sdiimsk;
#else
- u8 sdidat;
- u8 res[3];
-#endif
u32 sdiimsk;
+ u32 sdidat;
+#endif
};
+#ifdef CONFIG_CMD_MMC
+#include <mmc.h>
+int s3cmmc_initialize(bd_t *bis, int (*getcd)(struct mmc *),
+ int (*getwp)(struct mmc *));
+#endif
+
#endif /*__S3C24X0_H__*/
diff --git a/arch/arm/include/asm/arch-sunxi/clock_sun4i.h b/arch/arm/include/asm/arch-sunxi/clock_sun4i.h
index 928f3f2..1ba997a 100644
--- a/arch/arm/include/asm/arch-sunxi/clock_sun4i.h
+++ b/arch/arm/include/asm/arch-sunxi/clock_sun4i.h
@@ -218,10 +218,13 @@ struct sunxi_ccm_reg {
#define CCM_PLL5_CTRL_BYPASS (0x1 << 30)
#define CCM_PLL5_CTRL_EN (0x1 << 31)
-#define CCM_PLL6_CTRL_N_SHIFT 8
-#define CCM_PLL6_CTRL_N_MASK (0x1f << CCM_PLL6_CTRL_N_SHIFT)
-#define CCM_PLL6_CTRL_K_SHIFT 4
-#define CCM_PLL6_CTRL_K_MASK (0x3 << CCM_PLL6_CTRL_K_SHIFT)
+#define CCM_PLL6_CTRL_EN 31
+#define CCM_PLL6_CTRL_BYPASS_EN 30
+#define CCM_PLL6_CTRL_SATA_EN_SHIFT 14
+#define CCM_PLL6_CTRL_N_SHIFT 8
+#define CCM_PLL6_CTRL_N_MASK (0x1f << CCM_PLL6_CTRL_N_SHIFT)
+#define CCM_PLL6_CTRL_K_SHIFT 4
+#define CCM_PLL6_CTRL_K_MASK (0x3 << CCM_PLL6_CTRL_K_SHIFT)
#define CCM_GPS_CTRL_RESET (0x1 << 0)
#define CCM_GPS_CTRL_GATE (0x1 << 1)
@@ -253,4 +256,8 @@ struct sunxi_ccm_reg {
#define CCM_GMAC_CTRL_GPIT_MII (0x0 << 2)
#define CCM_GMAC_CTRL_GPIT_RGMII (0x1 << 2)
+#define CCM_USB_CTRL_PHY1_RST (0x1 << 1)
+#define CCM_USB_CTRL_PHY2_RST (0x1 << 2)
+#define CCM_USB_CTRL_PHYGATE (0x1 << 8)
+
#endif /* _SUNXI_CLOCK_SUN4I_H */
diff --git a/arch/arm/include/asm/config.h b/arch/arm/include/asm/config.h
index d3433da..5f2a5f4 100644
--- a/arch/arm/include/asm/config.h
+++ b/arch/arm/include/asm/config.h
@@ -7,7 +7,9 @@
#ifndef _ASM_CONFIG_H_
#define _ASM_CONFIG_H_
+#ifdef __aarch64__
#define CONFIG_SYS_GENERIC_GLOBAL_DATA
+#endif
#define CONFIG_LMB
#define CONFIG_SYS_BOOT_RAMDISK_HIGH
diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h
index 214f3ea..6d18eb3 100644
--- a/arch/arm/include/asm/io.h
+++ b/arch/arm/include/asm/io.h
@@ -136,6 +136,7 @@ extern inline void __raw_readsl(unsigned long addr, void *data, int longlen)
* TODO: The kernel offers some more advanced versions of barriers, it might
* have some advantages to use them instead of the simple one here.
*/
+#define mb() asm volatile("dsb sy" : : : "memory")
#define dmb() __asm__ __volatile__ ("" : : : "memory")
#define __iormb() dmb()
#define __iowmb() dmb()
diff --git a/arch/arm/lib/crt0.S b/arch/arm/lib/crt0.S
index dfc2de9..29cdad0 100644
--- a/arch/arm/lib/crt0.S
+++ b/arch/arm/lib/crt0.S
@@ -67,10 +67,22 @@ ENTRY(_main)
ldr sp, =(CONFIG_SYS_INIT_SP_ADDR)
#endif
bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
+ mov r2, sp
sub sp, sp, #GD_SIZE /* allocate one GD above SP */
bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
mov r9, sp /* GD is above SP */
+ mov r1, sp
mov r0, #0
+clr_gd:
+ cmp r1, r2 /* while not at end of GD */
+ strlo r0, [r1] /* clear 32-bit GD word */
+ addlo r1, r1, #4 /* move to next */
+ blo clr_gd
+#if defined(CONFIG_SYS_MALLOC_F_LEN) && !defined(CONFIG_SPL_BUILD)
+ sub sp, sp, #CONFIG_SYS_MALLOC_F_LEN
+ str sp, [r9, #GD_MALLOC_BASE]
+#endif
+ /* mov r0, #0 not needed due to above code */
bl board_init_f
#if ! defined(CONFIG_SPL_BUILD)