summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--Kconfig65
-rwxr-xr-xMAKEALL28
-rw-r--r--Makefile122
-rw-r--r--README19
-rw-r--r--arch/Kconfig66
-rw-r--r--arch/arc/Kconfig29
-rw-r--r--arch/arc/config.mk2
-rw-r--r--arch/arm/Kconfig1002
-rw-r--r--arch/arm/config.mk4
-rw-r--r--arch/arm/cpu/arm926ejs/kirkwood/cpu.c9
-rw-r--r--arch/arm/cpu/armv7/Makefile5
-rw-r--r--arch/arm/cpu/armv7/keystone/Makefile5
-rw-r--r--arch/arm/cpu/armv7/keystone/clock-k2e.c101
-rw-r--r--arch/arm/cpu/armv7/keystone/clock-k2hk.c113
-rw-r--r--arch/arm/cpu/armv7/keystone/clock.c154
-rw-r--r--arch/arm/cpu/armv7/keystone/cmd_clock.c31
-rw-r--r--arch/arm/cpu/armv7/keystone/ddr3.c25
-rw-r--r--arch/arm/cpu/armv7/keystone/init.c16
-rw-r--r--arch/arm/cpu/armv7/keystone/keystone.c87
-rw-r--r--arch/arm/cpu/armv7/keystone/msmc.c6
-rw-r--r--arch/arm/cpu/armv7/keystone/psc.c42
-rw-r--r--arch/arm/cpu/armv7/keystone/spl.c8
-rw-r--r--arch/arm/cpu/armv7/nonsec_virt.S168
-rw-r--r--arch/arm/cpu/armv7/omap-common/hwinit-common.c3
-rw-r--r--arch/arm/cpu/armv7/omap-common/mem-common.c15
-rw-r--r--arch/arm/cpu/armv7/omap3/mem.c139
-rw-r--r--arch/arm/cpu/armv7/psci.S102
-rw-r--r--arch/arm/cpu/armv7/rmobile/Makefile1
-rw-r--r--arch/arm/cpu/armv7/rmobile/cpu_info.c1
-rw-r--r--arch/arm/cpu/armv7/rmobile/pfc-r8a7794.c1513
-rw-r--r--arch/arm/cpu/armv7/sunxi/Makefile4
-rw-r--r--arch/arm/cpu/armv7/sunxi/board.c41
-rw-r--r--arch/arm/cpu/armv7/sunxi/clock_sun4i.c3
-rw-r--r--arch/arm/cpu/armv7/sunxi/cpu_info.c15
-rw-r--r--arch/arm/cpu/armv7/sunxi/dram.c102
-rw-r--r--arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds5
-rw-r--r--arch/arm/cpu/armv7/sunxi/u-boot-spl.lds6
-rw-r--r--arch/arm/cpu/armv7/virt-dt.c100
-rw-r--r--arch/arm/cpu/armv7/virt-v7.c76
-rw-r--r--arch/arm/cpu/armv7/zynq/ddrc.c4
-rw-r--r--arch/arm/cpu/u-boot.lds30
-rw-r--r--arch/arm/include/asm/arch-am33xx/ddr_defs.h4
-rw-r--r--arch/arm/include/asm/arch-am33xx/mem.h7
-rw-r--r--arch/arm/include/asm/arch-keystone/clock-k2e.h68
-rw-r--r--arch/arm/include/asm/arch-keystone/clock-k2hk.h23
-rw-r--r--arch/arm/include/asm/arch-keystone/clock.h32
-rw-r--r--arch/arm/include/asm/arch-keystone/clock_defs.h2
-rw-r--r--arch/arm/include/asm/arch-keystone/ddr3.h56
-rw-r--r--arch/arm/include/asm/arch-keystone/hardware-k2e.h44
-rw-r--r--arch/arm/include/asm/arch-keystone/hardware-k2hk.h182
-rw-r--r--arch/arm/include/asm/arch-keystone/hardware.h117
-rw-r--r--arch/arm/include/asm/arch-keystone/mon.h15
-rw-r--r--arch/arm/include/asm/arch-keystone/msmc.h17
-rw-r--r--arch/arm/include/asm/arch-kirkwood/config.h3
-rw-r--r--arch/arm/include/asm/arch-kirkwood/kirkwood.h1
-rw-r--r--arch/arm/include/asm/arch-omap3/cpu.h1
-rw-r--r--arch/arm/include/asm/arch-omap3/mem.h13
-rw-r--r--arch/arm/include/asm/arch-rmobile/gpio.h3
-rw-r--r--arch/arm/include/asm/arch-rmobile/r8a7794-gpio.h176
-rw-r--r--arch/arm/include/asm/arch-rmobile/r8a7794.h14
-rw-r--r--arch/arm/include/asm/arch-rmobile/rcar-base.h4
-rw-r--r--arch/arm/include/asm/arch-rmobile/rmobile.h2
-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/gpio.h2
-rw-r--r--arch/arm/include/asm/arch-sunxi/i2c.h15
-rw-r--r--arch/arm/include/asm/arch-sunxi/timer.h5
-rw-r--r--arch/arm/include/asm/armv7.h11
-rw-r--r--arch/arm/include/asm/config.h2
-rw-r--r--arch/arm/include/asm/omap_common.h8
-rw-r--r--arch/arm/include/asm/proc-armv/ptrace.h2
-rw-r--r--arch/arm/include/asm/psci.h35
-rw-r--r--arch/arm/include/asm/secure.h26
-rw-r--r--arch/arm/lib/bootm-fdt.c14
-rw-r--r--arch/arm/lib/bootm.c31
-rw-r--r--arch/arm/lib/crt0.S12
-rw-r--r--arch/arm/lib/interrupts.c2
-rw-r--r--arch/arm/lib/sections.c2
-rw-r--r--arch/avr32/Kconfig51
-rw-r--r--arch/avr32/config.mk1
-rw-r--r--arch/blackfin/Kconfig150
-rw-r--r--arch/blackfin/config.mk1
-rw-r--r--arch/blackfin/cpu/jtag-console.c10
-rw-r--r--arch/m68k/Kconfig98
-rw-r--r--arch/m68k/config.mk2
-rw-r--r--arch/m68k/cpu/mcf52x2/config.mk16
-rw-r--r--arch/m68k/cpu/mcf532x/config.mk6
-rw-r--r--arch/m68k/cpu/mcf5445x/config.mk4
-rw-r--r--arch/microblaze/Kconfig18
-rw-r--r--arch/mips/Kconfig37
-rw-r--r--arch/mips/config.mk2
-rw-r--r--arch/nds32/Kconfig26
-rw-r--r--arch/nds32/config.mk2
-rw-r--r--arch/nios2/Kconfig26
-rw-r--r--arch/nios2/config.mk2
-rw-r--r--arch/openrisc/Kconfig18
-rw-r--r--arch/openrisc/config.mk2
-rw-r--r--arch/powerpc/Kconfig58
-rw-r--r--arch/powerpc/config.mk2
-rw-r--r--arch/powerpc/cpu/74xx_7xx/Kconfig49
-rw-r--r--arch/powerpc/cpu/74xx_7xx/config.mk2
-rw-r--r--arch/powerpc/cpu/mpc512x/Kconfig34
-rw-r--r--arch/powerpc/cpu/mpc512x/config.mk2
-rw-r--r--arch/powerpc/cpu/mpc512x/serial.c10
-rw-r--r--arch/powerpc/cpu/mpc5xx/Kconfig22
-rw-r--r--arch/powerpc/cpu/mpc5xx/config.mk2
-rw-r--r--arch/powerpc/cpu/mpc5xxx/Kconfig154
-rw-r--r--arch/powerpc/cpu/mpc5xxx/config.mk3
-rw-r--r--arch/powerpc/cpu/mpc824x/Kconfig49
-rw-r--r--arch/powerpc/cpu/mpc824x/config.mk2
-rw-r--r--arch/powerpc/cpu/mpc8260/Kconfig94
-rw-r--r--arch/powerpc/cpu/mpc8260/config.mk2
-rw-r--r--arch/powerpc/cpu/mpc83xx/Kconfig100
-rw-r--r--arch/powerpc/cpu/mpc83xx/config.mk2
-rw-r--r--arch/powerpc/cpu/mpc85xx/Kconfig190
-rw-r--r--arch/powerpc/cpu/mpc85xx/config.mk2
-rw-r--r--arch/powerpc/cpu/mpc86xx/Kconfig30
-rw-r--r--arch/powerpc/cpu/mpc86xx/config.mk2
-rw-r--r--arch/powerpc/cpu/mpc8xx/Kconfig160
-rw-r--r--arch/powerpc/cpu/mpc8xx/config.mk2
-rw-r--r--arch/powerpc/cpu/mpc8xx/video.c6
-rw-r--r--arch/powerpc/cpu/ppc4xx/Kconfig322
-rw-r--r--arch/powerpc/cpu/ppc4xx/config.mk6
-rw-r--r--arch/powerpc/cpu/ppc4xx/cpu_init.c4
-rw-r--r--arch/sandbox/Kconfig16
-rw-r--r--arch/sandbox/config.mk2
-rw-r--r--arch/sandbox/cpu/cpu.c4
-rw-r--r--arch/sandbox/cpu/start.c8
-rw-r--r--arch/sandbox/include/asm/config.h1
-rw-r--r--arch/sh/Kconfig98
-rw-r--r--arch/sh/cpu/sh2/u-boot.lds76
-rw-r--r--arch/sh/cpu/sh4/u-boot.lds80
-rw-r--r--arch/sh/cpu/u-boot.lds (renamed from arch/sh/cpu/sh3/u-boot.lds)8
-rw-r--r--arch/sparc/Kconfig34
-rw-r--r--arch/sparc/config.mk2
-rw-r--r--arch/x86/Kconfig18
-rw-r--r--arch/x86/cpu/config.mk2
-rw-r--r--arch/x86/lib/video.c8
-rw-r--r--board/8dtech/eco5pk/Kconfig23
-rw-r--r--board/8dtech/eco5pk/MAINTAINERS6
-rw-r--r--board/AndesTech/adp-ag101/Kconfig23
-rw-r--r--board/AndesTech/adp-ag101/MAINTAINERS6
-rw-r--r--board/AndesTech/adp-ag101p/Kconfig23
-rw-r--r--board/AndesTech/adp-ag101p/MAINTAINERS6
-rw-r--r--board/AndesTech/adp-ag102/Kconfig23
-rw-r--r--board/AndesTech/adp-ag102/MAINTAINERS6
-rw-r--r--board/Barix/ipam390/Kconfig23
-rw-r--r--board/Barix/ipam390/MAINTAINERS6
-rw-r--r--board/BuR/kwb/Kconfig23
-rw-r--r--board/BuR/kwb/MAINTAINERS6
-rw-r--r--board/BuR/tseries/Kconfig23
-rw-r--r--board/BuR/tseries/MAINTAINERS8
-rw-r--r--board/BuS/eb_cpu5282/Kconfig19
-rw-r--r--board/BuS/eb_cpu5282/MAINTAINERS7
-rw-r--r--board/BuS/eb_cpux9k2/Kconfig23
-rw-r--r--board/BuS/eb_cpux9k2/MAINTAINERS7
-rw-r--r--board/BuS/vl_ma2sc/Kconfig23
-rw-r--r--board/BuS/vl_ma2sc/MAINTAINERS7
-rw-r--r--board/CarMediaLab/flea3/Kconfig23
-rw-r--r--board/CarMediaLab/flea3/MAINTAINERS6
-rw-r--r--board/LEOX/elpt860/Kconfig15
-rw-r--r--board/LEOX/elpt860/MAINTAINERS6
-rw-r--r--board/LaCie/edminiv2/Kconfig23
-rw-r--r--board/LaCie/edminiv2/MAINTAINERS6
-rw-r--r--board/LaCie/net2big_v2/Kconfig23
-rw-r--r--board/LaCie/net2big_v2/MAINTAINERS11
-rw-r--r--board/LaCie/netspace_v2/Kconfig23
-rw-r--r--board/LaCie/netspace_v2/MAINTAINERS14
-rw-r--r--board/LaCie/wireless_space/Kconfig23
-rw-r--r--board/LaCie/wireless_space/MAINTAINERS6
-rw-r--r--board/Marvell/aspenite/Kconfig23
-rw-r--r--board/Marvell/aspenite/MAINTAINERS6
-rw-r--r--board/Marvell/db64360/Kconfig15
-rw-r--r--board/Marvell/db64360/MAINTAINERS6
-rw-r--r--board/Marvell/db64460/Kconfig15
-rw-r--r--board/Marvell/db64460/MAINTAINERS6
-rw-r--r--board/Marvell/dkb/Kconfig23
-rw-r--r--board/Marvell/dkb/MAINTAINERS6
-rw-r--r--board/Marvell/dreamplug/Kconfig23
-rw-r--r--board/Marvell/dreamplug/MAINTAINERS6
-rw-r--r--board/Marvell/gplugd/Kconfig23
-rw-r--r--board/Marvell/gplugd/MAINTAINERS6
-rw-r--r--board/Marvell/guruplug/Kconfig23
-rw-r--r--board/Marvell/guruplug/MAINTAINERS6
-rw-r--r--board/Marvell/mv88f6281gtw_ge/Kconfig23
-rw-r--r--board/Marvell/mv88f6281gtw_ge/MAINTAINERS6
-rw-r--r--board/Marvell/openrd/Kconfig23
-rw-r--r--board/Marvell/openrd/MAINTAINERS12
-rw-r--r--board/Marvell/rd6281a/Kconfig23
-rw-r--r--board/Marvell/rd6281a/MAINTAINERS6
-rw-r--r--board/Marvell/sheevaplug/Kconfig23
-rw-r--r--board/Marvell/sheevaplug/MAINTAINERS6
-rw-r--r--board/RRvision/Kconfig11
-rw-r--r--board/RRvision/MAINTAINERS7
-rw-r--r--board/Seagate/dockstar/Kconfig23
-rw-r--r--board/Seagate/dockstar/MAINTAINERS6
-rw-r--r--board/Seagate/goflexhome/Kconfig23
-rw-r--r--board/Seagate/goflexhome/MAINTAINERS6
-rw-r--r--board/a3000/Kconfig11
-rw-r--r--board/a3000/MAINTAINERS6
-rw-r--r--board/a3m071/Kconfig11
-rw-r--r--board/a3m071/MAINTAINERS7
-rw-r--r--board/a4m072/Kconfig11
-rw-r--r--board/a4m072/MAINTAINERS6
-rw-r--r--board/abilis/tb100/Kconfig19
-rw-r--r--board/abilis/tb100/MAINTAINERS6
-rw-r--r--board/afeb9260/Kconfig19
-rw-r--r--board/afeb9260/MAINTAINERS6
-rw-r--r--board/ait/cam_enc_4xx/Kconfig23
-rw-r--r--board/ait/cam_enc_4xx/MAINTAINERS6
-rw-r--r--board/alphaproject/ap_sh4a_4a/Kconfig19
-rw-r--r--board/alphaproject/ap_sh4a_4a/MAINTAINERS7
-rw-r--r--board/altera/nios2-generic/Kconfig15
-rw-r--r--board/altera/nios2-generic/MAINTAINERS6
-rw-r--r--board/altera/socfpga/Kconfig23
-rw-r--r--board/altera/socfpga/MAINTAINERS7
-rw-r--r--board/amcc/acadia/Kconfig15
-rw-r--r--board/amcc/acadia/MAINTAINERS6
-rw-r--r--board/amcc/bamboo/Kconfig15
-rw-r--r--board/amcc/bamboo/MAINTAINERS6
-rw-r--r--board/amcc/bluestone/Kconfig15
-rw-r--r--board/amcc/bluestone/MAINTAINERS6
-rw-r--r--board/amcc/bubinga/Kconfig15
-rw-r--r--board/amcc/bubinga/MAINTAINERS6
-rw-r--r--board/amcc/canyonlands/Kconfig15
-rw-r--r--board/amcc/canyonlands/MAINTAINERS8
-rw-r--r--board/amcc/ebony/Kconfig15
-rw-r--r--board/amcc/ebony/MAINTAINERS6
-rw-r--r--board/amcc/katmai/Kconfig15
-rw-r--r--board/amcc/katmai/MAINTAINERS6
-rw-r--r--board/amcc/kilauea/Kconfig15
-rw-r--r--board/amcc/kilauea/MAINTAINERS7
-rw-r--r--board/amcc/luan/Kconfig15
-rw-r--r--board/amcc/luan/MAINTAINERS6
-rw-r--r--board/amcc/makalu/Kconfig15
-rw-r--r--board/amcc/makalu/MAINTAINERS6
-rw-r--r--board/amcc/ocotea/Kconfig15
-rw-r--r--board/amcc/ocotea/MAINTAINERS6
-rw-r--r--board/amcc/redwood/Kconfig15
-rw-r--r--board/amcc/redwood/MAINTAINERS6
-rw-r--r--board/amcc/sequoia/Kconfig15
-rw-r--r--board/amcc/sequoia/MAINTAINERS9
-rw-r--r--board/amcc/taihu/Kconfig15
-rw-r--r--board/amcc/taihu/MAINTAINERS6
-rw-r--r--board/amcc/taishan/Kconfig15
-rw-r--r--board/amcc/taishan/MAINTAINERS6
-rw-r--r--board/amcc/walnut/Kconfig15
-rw-r--r--board/amcc/walnut/MAINTAINERS7
-rw-r--r--board/amcc/yosemite/Kconfig15
-rw-r--r--board/amcc/yosemite/MAINTAINERS7
-rw-r--r--board/amcc/yucca/Kconfig15
-rw-r--r--board/amcc/yucca/MAINTAINERS6
-rw-r--r--board/armadeus/apf27/Kconfig23
-rw-r--r--board/armadeus/apf27/MAINTAINERS7
-rw-r--r--board/armltd/integrator/Kconfig159
-rw-r--r--board/armltd/integrator/MAINTAINERS14
-rw-r--r--board/armltd/versatile/Kconfig71
-rw-r--r--board/armltd/versatile/MAINTAINERS8
-rw-r--r--board/armltd/vexpress/Kconfig59
-rw-r--r--board/armltd/vexpress/MAINTAINERS14
-rw-r--r--board/armltd/vexpress64/Kconfig39
-rw-r--r--board/armltd/vexpress64/MAINTAINERS11
-rw-r--r--board/astro/mcf5373l/Kconfig19
-rw-r--r--board/astro/mcf5373l/MAINTAINERS6
-rw-r--r--board/atc/Kconfig11
-rw-r--r--board/atc/MAINTAINERS6
-rw-r--r--board/atmark-techno/armadillo-800eva/Kconfig23
-rw-r--r--board/atmark-techno/armadillo-800eva/MAINTAINERS6
-rw-r--r--board/atmel/at91rm9200ek/Kconfig23
-rw-r--r--board/atmel/at91rm9200ek/MAINTAINERS7
-rw-r--r--board/atmel/at91sam9260ek/Kconfig23
-rw-r--r--board/atmel/at91sam9260ek/MAINTAINERS16
-rw-r--r--board/atmel/at91sam9261ek/Kconfig23
-rw-r--r--board/atmel/at91sam9261ek/MAINTAINERS11
-rw-r--r--board/atmel/at91sam9263ek/Kconfig23
-rw-r--r--board/atmel/at91sam9263ek/MAINTAINERS10
-rw-r--r--board/atmel/at91sam9m10g45ek/Kconfig23
-rw-r--r--board/atmel/at91sam9m10g45ek/MAINTAINERS7
-rw-r--r--board/atmel/at91sam9n12ek/Kconfig23
-rw-r--r--board/atmel/at91sam9n12ek/MAINTAINERS8
-rw-r--r--board/atmel/at91sam9rlek/Kconfig23
-rw-r--r--board/atmel/at91sam9rlek/MAINTAINERS7
-rw-r--r--board/atmel/at91sam9x5ek/Kconfig23
-rw-r--r--board/atmel/at91sam9x5ek/MAINTAINERS9
-rw-r--r--board/atmel/atngw100/Kconfig19
-rw-r--r--board/atmel/atngw100/MAINTAINERS6
-rw-r--r--board/atmel/atngw100mkii/Kconfig19
-rw-r--r--board/atmel/atngw100mkii/MAINTAINERS6
-rw-r--r--board/atmel/atstk1000/Kconfig79
-rw-r--r--board/atmel/atstk1000/MAINTAINERS12
-rw-r--r--board/atmel/sama5d3_xplained/Kconfig23
-rw-r--r--board/atmel/sama5d3_xplained/MAINTAINERS7
-rw-r--r--board/atmel/sama5d3xek/Kconfig23
-rw-r--r--board/atmel/sama5d3xek/MAINTAINERS8
-rw-r--r--board/avionic-design/medcom-wide/Kconfig24
-rw-r--r--board/avionic-design/medcom-wide/MAINTAINERS6
-rw-r--r--board/avionic-design/plutux/Kconfig24
-rw-r--r--board/avionic-design/plutux/MAINTAINERS6
-rw-r--r--board/avionic-design/tec-ng/Kconfig24
-rw-r--r--board/avionic-design/tec-ng/MAINTAINERS6
-rw-r--r--board/avionic-design/tec/Kconfig24
-rw-r--r--board/avionic-design/tec/MAINTAINERS6
-rw-r--r--board/avnet/fx12mm/Kconfig15
-rw-r--r--board/avnet/fx12mm/MAINTAINERS7
-rw-r--r--board/avnet/v5fx30teval/Kconfig15
-rw-r--r--board/avnet/v5fx30teval/MAINTAINERS7
-rw-r--r--board/balloon3/Kconfig15
-rw-r--r--board/balloon3/MAINTAINERS6
-rw-r--r--board/barco/titanium/Kconfig23
-rw-r--r--board/barco/titanium/MAINTAINERS6
-rw-r--r--board/bc3450/Kconfig11
-rw-r--r--board/bc3450/MAINTAINERS6
-rw-r--r--board/bct-brettl2/Kconfig11
-rw-r--r--board/bct-brettl2/MAINTAINERS6
-rw-r--r--board/bf506f-ezkit/Kconfig11
-rw-r--r--board/bf506f-ezkit/MAINTAINERS6
-rw-r--r--board/bf518f-ezbrd/Kconfig11
-rw-r--r--board/bf518f-ezbrd/MAINTAINERS6
-rw-r--r--board/bf525-ucr2/Kconfig11
-rw-r--r--board/bf525-ucr2/MAINTAINERS7
-rw-r--r--board/bf526-ezbrd/Kconfig11
-rw-r--r--board/bf526-ezbrd/MAINTAINERS6
-rw-r--r--board/bf527-ad7160-eval/Kconfig11
-rw-r--r--board/bf527-ad7160-eval/MAINTAINERS6
-rw-r--r--board/bf527-ezkit/Kconfig11
-rw-r--r--board/bf527-ezkit/MAINTAINERS7
-rw-r--r--board/bf527-ezkit/video.c10
-rw-r--r--board/bf527-sdp/Kconfig11
-rw-r--r--board/bf527-sdp/MAINTAINERS6
-rw-r--r--board/bf533-ezkit/Kconfig11
-rw-r--r--board/bf533-ezkit/MAINTAINERS6
-rw-r--r--board/bf533-stamp/Kconfig11
-rw-r--r--board/bf533-stamp/MAINTAINERS6
-rw-r--r--board/bf537-minotaur/Kconfig11
-rw-r--r--board/bf537-minotaur/MAINTAINERS6
-rw-r--r--board/bf537-pnav/Kconfig11
-rw-r--r--board/bf537-pnav/MAINTAINERS6
-rw-r--r--board/bf537-srv1/Kconfig11
-rw-r--r--board/bf537-srv1/MAINTAINERS6
-rw-r--r--board/bf537-stamp/Kconfig11
-rw-r--r--board/bf537-stamp/MAINTAINERS6
-rw-r--r--board/bf538f-ezkit/Kconfig11
-rw-r--r--board/bf538f-ezkit/MAINTAINERS6
-rw-r--r--board/bf548-ezkit/Kconfig11
-rw-r--r--board/bf548-ezkit/MAINTAINERS6
-rw-r--r--board/bf548-ezkit/video.c10
-rw-r--r--board/bf561-acvilon/Kconfig11
-rw-r--r--board/bf561-acvilon/MAINTAINERS6
-rw-r--r--board/bf561-ezkit/Kconfig11
-rw-r--r--board/bf561-ezkit/MAINTAINERS6
-rw-r--r--board/bf609-ezkit/Kconfig11
-rw-r--r--board/bf609-ezkit/MAINTAINERS6
-rw-r--r--board/blackstamp/Kconfig11
-rw-r--r--board/blackstamp/MAINTAINERS8
-rw-r--r--board/blackvme/Kconfig11
-rw-r--r--board/blackvme/MAINTAINERS8
-rw-r--r--board/bluegiga/apx4devkit/Kconfig23
-rw-r--r--board/bluegiga/apx4devkit/MAINTAINERS6
-rw-r--r--board/bluewater/snapper9260/Kconfig23
-rw-r--r--board/bluewater/snapper9260/MAINTAINERS7
-rw-r--r--board/boundary/nitrogen6x/Kconfig23
-rw-r--r--board/boundary/nitrogen6x/MAINTAINERS12
-rw-r--r--board/br4/Kconfig11
-rw-r--r--board/br4/MAINTAINERS6
-rw-r--r--board/broadcom/bcm28155_ap/Kconfig23
-rw-r--r--board/broadcom/bcm28155_ap/MAINTAINERS6
-rw-r--r--board/buffalo/lsxl/Kconfig23
-rw-r--r--board/buffalo/lsxl/MAINTAINERS7
-rw-r--r--board/calao/sbc35_a9g20/Kconfig23
-rw-r--r--board/calao/sbc35_a9g20/MAINTAINERS7
-rw-r--r--board/calao/tny_a9260/Kconfig23
-rw-r--r--board/calao/tny_a9260/MAINTAINERS9
-rw-r--r--board/calao/usb_a9263/Kconfig23
-rw-r--r--board/calao/usb_a9263/MAINTAINERS6
-rw-r--r--board/canmb/Kconfig11
-rw-r--r--board/canmb/MAINTAINERS6
-rw-r--r--board/chromebook-x86/coreboot/Kconfig19
-rw-r--r--board/chromebook-x86/coreboot/MAINTAINERS6
-rw-r--r--board/cirrus/edb93xx/Kconfig23
-rw-r--r--board/cirrus/edb93xx/MAINTAINERS6
-rw-r--r--board/cloudengines/pogo_e02/Kconfig23
-rw-r--r--board/cloudengines/pogo_e02/MAINTAINERS6
-rw-r--r--board/cm-bf527/Kconfig11
-rw-r--r--board/cm-bf527/MAINTAINERS6
-rw-r--r--board/cm-bf533/Kconfig11
-rw-r--r--board/cm-bf533/MAINTAINERS6
-rw-r--r--board/cm-bf537e/Kconfig11
-rw-r--r--board/cm-bf537e/MAINTAINERS6
-rw-r--r--board/cm-bf537u/Kconfig11
-rw-r--r--board/cm-bf537u/MAINTAINERS6
-rw-r--r--board/cm-bf548/Kconfig11
-rw-r--r--board/cm-bf548/MAINTAINERS6
-rw-r--r--board/cm-bf548/video.c10
-rw-r--r--board/cm-bf561/Kconfig11
-rw-r--r--board/cm-bf561/MAINTAINERS6
-rw-r--r--board/cm4008/Kconfig19
-rw-r--r--board/cm4008/MAINTAINERS6
-rw-r--r--board/cm41xx/Kconfig19
-rw-r--r--board/cm41xx/MAINTAINERS6
-rw-r--r--board/cm5200/Kconfig11
-rw-r--r--board/cm5200/MAINTAINERS6
-rw-r--r--board/cmi/Kconfig11
-rw-r--r--board/cmi/MAINTAINERS6
-rw-r--r--board/cobra5272/Kconfig15
-rw-r--r--board/cobra5272/MAINTAINERS6
-rw-r--r--board/cogent/Kconfig23
-rw-r--r--board/cogent/MAINTAINERS8
-rw-r--r--board/comelit/dig297/Kconfig23
-rw-r--r--board/comelit/dig297/MAINTAINERS6
-rw-r--r--board/compal/paz00/Kconfig24
-rw-r--r--board/compal/paz00/MAINTAINERS7
-rw-r--r--board/compulab/cm_t335/Kconfig23
-rw-r--r--board/compulab/cm_t335/MAINTAINERS6
-rw-r--r--board/compulab/cm_t35/Kconfig23
-rw-r--r--board/compulab/cm_t35/MAINTAINERS6
-rw-r--r--board/compulab/cm_t54/Kconfig23
-rw-r--r--board/compulab/cm_t54/MAINTAINERS6
-rw-r--r--board/compulab/trimslice/Kconfig24
-rw-r--r--board/compulab/trimslice/MAINTAINERS7
-rw-r--r--board/congatec/cgtqmx6eval/Kconfig23
-rw-r--r--board/congatec/cgtqmx6eval/MAINTAINERS6
-rw-r--r--board/corscience/tricorder/Kconfig23
-rw-r--r--board/corscience/tricorder/MAINTAINERS7
-rw-r--r--board/cpc45/Kconfig11
-rw-r--r--board/cpc45/MAINTAINERS7
-rw-r--r--board/cpu86/Kconfig11
-rw-r--r--board/cpu86/MAINTAINERS7
-rw-r--r--board/cpu87/Kconfig11
-rw-r--r--board/cpu87/MAINTAINERS7
-rw-r--r--board/cray/L1/Kconfig15
-rw-r--r--board/cray/L1/MAINTAINERS6
-rw-r--r--board/creative/xfi3/Kconfig23
-rw-r--r--board/creative/xfi3/MAINTAINERS6
-rw-r--r--board/csb272/Kconfig11
-rw-r--r--board/csb272/MAINTAINERS6
-rw-r--r--board/csb472/Kconfig11
-rw-r--r--board/csb472/MAINTAINERS6
-rw-r--r--board/cu824/Kconfig11
-rw-r--r--board/cu824/MAINTAINERS6
-rw-r--r--board/d-link/dns325/Kconfig23
-rw-r--r--board/d-link/dns325/MAINTAINERS6
-rw-r--r--board/dave/PPChameleonEVB/Kconfig31
-rw-r--r--board/dave/PPChameleonEVB/MAINTAINERS20
-rw-r--r--board/davedenx/aria/Kconfig15
-rw-r--r--board/davedenx/aria/MAINTAINERS6
-rw-r--r--board/davedenx/qong/Kconfig23
-rw-r--r--board/davedenx/qong/MAINTAINERS6
-rw-r--r--board/davinci/da8xxevm/Kconfig71
-rw-r--r--board/davinci/da8xxevm/MAINTAINERS22
-rw-r--r--board/davinci/dm355evm/Kconfig23
-rw-r--r--board/davinci/dm355evm/MAINTAINERS6
-rw-r--r--board/davinci/dm355leopard/Kconfig23
-rw-r--r--board/davinci/dm355leopard/MAINTAINERS6
-rw-r--r--board/davinci/dm365evm/Kconfig23
-rw-r--r--board/davinci/dm365evm/MAINTAINERS6
-rw-r--r--board/davinci/dm6467evm/Kconfig23
-rw-r--r--board/davinci/dm6467evm/MAINTAINERS7
-rw-r--r--board/davinci/dvevm/Kconfig23
-rw-r--r--board/davinci/dvevm/MAINTAINERS6
-rw-r--r--board/davinci/ea20/Kconfig23
-rw-r--r--board/davinci/ea20/MAINTAINERS6
-rw-r--r--board/davinci/schmoogie/Kconfig23
-rw-r--r--board/davinci/schmoogie/MAINTAINERS6
-rw-r--r--board/davinci/sffsdr/Kconfig23
-rw-r--r--board/davinci/sffsdr/MAINTAINERS6
-rw-r--r--board/davinci/sonata/Kconfig23
-rw-r--r--board/davinci/sonata/MAINTAINERS6
-rw-r--r--board/dbau1x00/Kconfig19
-rw-r--r--board/dbau1x00/MAINTAINERS10
-rw-r--r--board/denx/m28evk/Kconfig23
-rw-r--r--board/denx/m28evk/MAINTAINERS6
-rw-r--r--board/denx/m53evk/Kconfig23
-rw-r--r--board/denx/m53evk/MAINTAINERS6
-rw-r--r--board/dnp5370/Kconfig11
-rw-r--r--board/dnp5370/MAINTAINERS6
-rw-r--r--board/eXalion/Kconfig11
-rw-r--r--board/eXalion/MAINTAINERS6
-rw-r--r--board/earthlcd/favr-32-ezkit/Kconfig19
-rw-r--r--board/earthlcd/favr-32-ezkit/MAINTAINERS6
-rw-r--r--board/egnite/ethernut5/Kconfig23
-rw-r--r--board/egnite/ethernut5/MAINTAINERS6
-rw-r--r--board/eltec/elppc/Kconfig15
-rw-r--r--board/eltec/elppc/MAINTAINERS6
-rw-r--r--board/eltec/mhpc/Kconfig15
-rw-r--r--board/eltec/mhpc/MAINTAINERS6
-rw-r--r--board/embest/mx6boards/Kconfig23
-rw-r--r--board/embest/mx6boards/MAINTAINERS7
-rw-r--r--board/emk/top5200/Kconfig15
-rw-r--r--board/emk/top5200/MAINTAINERS8
-rw-r--r--board/emk/top860/Kconfig15
-rw-r--r--board/emk/top860/MAINTAINERS6
-rw-r--r--board/emk/top9000/Kconfig23
-rw-r--r--board/emk/top9000/MAINTAINERS7
-rw-r--r--board/enbw/enbw_cmc/Kconfig23
-rw-r--r--board/enbw/enbw_cmc/MAINTAINERS6
-rw-r--r--board/ep8260/Kconfig11
-rw-r--r--board/ep8260/MAINTAINERS6
-rw-r--r--board/ep82xxm/Kconfig11
-rw-r--r--board/ep82xxm/MAINTAINERS6
-rw-r--r--board/esd/apc405/Kconfig15
-rw-r--r--board/esd/apc405/MAINTAINERS6
-rw-r--r--board/esd/ar405/Kconfig15
-rw-r--r--board/esd/ar405/MAINTAINERS6
-rw-r--r--board/esd/ash405/Kconfig15
-rw-r--r--board/esd/ash405/MAINTAINERS6
-rw-r--r--board/esd/cms700/Kconfig15
-rw-r--r--board/esd/cms700/MAINTAINERS6
-rw-r--r--board/esd/cpci2dp/Kconfig15
-rw-r--r--board/esd/cpci2dp/MAINTAINERS6
-rw-r--r--board/esd/cpci405/Kconfig63
-rw-r--r--board/esd/cpci405/MAINTAINERS12
-rw-r--r--board/esd/cpci5200/Kconfig15
-rw-r--r--board/esd/cpci5200/MAINTAINERS6
-rw-r--r--board/esd/cpci750/Kconfig15
-rw-r--r--board/esd/cpci750/MAINTAINERS6
-rw-r--r--board/esd/cpciiser4/Kconfig15
-rw-r--r--board/esd/cpciiser4/MAINTAINERS6
-rw-r--r--board/esd/dp405/Kconfig15
-rw-r--r--board/esd/dp405/MAINTAINERS6
-rw-r--r--board/esd/du405/Kconfig15
-rw-r--r--board/esd/du405/MAINTAINERS6
-rw-r--r--board/esd/du440/Kconfig15
-rw-r--r--board/esd/du440/MAINTAINERS6
-rw-r--r--board/esd/hh405/Kconfig15
-rw-r--r--board/esd/hh405/MAINTAINERS6
-rw-r--r--board/esd/hub405/Kconfig15
-rw-r--r--board/esd/hub405/MAINTAINERS6
-rw-r--r--board/esd/mecp5123/Kconfig15
-rw-r--r--board/esd/mecp5123/MAINTAINERS6
-rw-r--r--board/esd/mecp5200/Kconfig15
-rw-r--r--board/esd/mecp5200/MAINTAINERS6
-rw-r--r--board/esd/meesc/Kconfig23
-rw-r--r--board/esd/meesc/MAINTAINERS7
-rw-r--r--board/esd/ocrtc/Kconfig15
-rw-r--r--board/esd/ocrtc/MAINTAINERS6
-rw-r--r--board/esd/otc570/Kconfig23
-rw-r--r--board/esd/otc570/MAINTAINERS7
-rw-r--r--board/esd/pci405/Kconfig15
-rw-r--r--board/esd/pci405/MAINTAINERS6
-rw-r--r--board/esd/pf5200/Kconfig15
-rw-r--r--board/esd/pf5200/MAINTAINERS6
-rw-r--r--board/esd/plu405/Kconfig15
-rw-r--r--board/esd/plu405/MAINTAINERS6
-rw-r--r--board/esd/pmc405/Kconfig15
-rw-r--r--board/esd/pmc405/MAINTAINERS6
-rw-r--r--board/esd/pmc405de/Kconfig15
-rw-r--r--board/esd/pmc405de/MAINTAINERS6
-rw-r--r--board/esd/pmc440/Kconfig15
-rw-r--r--board/esd/pmc440/MAINTAINERS6
-rw-r--r--board/esd/tasreg/Kconfig19
-rw-r--r--board/esd/tasreg/MAINTAINERS6
-rw-r--r--board/esd/vme8349/Kconfig15
-rw-r--r--board/esd/vme8349/MAINTAINERS7
-rw-r--r--board/esd/voh405/Kconfig15
-rw-r--r--board/esd/voh405/MAINTAINERS6
-rw-r--r--board/esd/vom405/Kconfig15
-rw-r--r--board/esd/vom405/MAINTAINERS6
-rw-r--r--board/esd/wuh405/Kconfig15
-rw-r--r--board/esd/wuh405/MAINTAINERS6
-rw-r--r--board/esg/ima3-mx53/Kconfig23
-rw-r--r--board/esg/ima3-mx53/MAINTAINERS6
-rw-r--r--board/espt/Kconfig15
-rw-r--r--board/espt/MAINTAINERS6
-rw-r--r--board/esteem192e/Kconfig11
-rw-r--r--board/esteem192e/MAINTAINERS6
-rw-r--r--board/eukrea/cpu9260/Kconfig23
-rw-r--r--board/eukrea/cpu9260/MAINTAINERS13
-rw-r--r--board/eukrea/cpuat91/Kconfig23
-rw-r--r--board/eukrea/cpuat91/MAINTAINERS7
-rw-r--r--board/evb64260/Kconfig23
-rw-r--r--board/evb64260/MAINTAINERS12
-rw-r--r--board/exmeritus/hww1u1a/Kconfig15
-rw-r--r--board/exmeritus/hww1u1a/MAINTAINERS6
-rw-r--r--board/faraday/a320evb/Kconfig23
-rw-r--r--board/faraday/a320evb/MAINTAINERS6
-rw-r--r--board/flagadm/Kconfig11
-rw-r--r--board/flagadm/MAINTAINERS6
-rw-r--r--board/freescale/b4860qds/Kconfig15
-rw-r--r--board/freescale/b4860qds/MAINTAINERS17
-rw-r--r--board/freescale/bsc9131rdb/Kconfig15
-rw-r--r--board/freescale/bsc9131rdb/MAINTAINERS9
-rw-r--r--board/freescale/bsc9132qds/Kconfig15
-rw-r--r--board/freescale/bsc9132qds/MAINTAINERS25
-rw-r--r--board/freescale/c29xpcie/Kconfig15
-rw-r--r--board/freescale/c29xpcie/MAINTAINERS8
-rw-r--r--board/freescale/corenet_ds/Kconfig63
-rw-r--r--board/freescale/corenet_ds/MAINTAINERS29
-rw-r--r--board/freescale/ls2085a/Kconfig47
-rw-r--r--board/freescale/ls2085a/MAINTAINERS9
-rw-r--r--board/freescale/m5208evbe/Kconfig19
-rw-r--r--board/freescale/m5208evbe/MAINTAINERS6
-rw-r--r--board/freescale/m52277evb/Kconfig19
-rw-r--r--board/freescale/m52277evb/MAINTAINERS7
-rw-r--r--board/freescale/m5235evb/Kconfig19
-rw-r--r--board/freescale/m5235evb/MAINTAINERS7
-rw-r--r--board/freescale/m5249evb/Kconfig19
-rw-r--r--board/freescale/m5249evb/MAINTAINERS6
-rw-r--r--board/freescale/m5253demo/Kconfig19
-rw-r--r--board/freescale/m5253demo/MAINTAINERS6
-rw-r--r--board/freescale/m5253evbe/Kconfig19
-rw-r--r--board/freescale/m5253evbe/MAINTAINERS6
-rw-r--r--board/freescale/m5272c3/Kconfig19
-rw-r--r--board/freescale/m5272c3/MAINTAINERS6
-rw-r--r--board/freescale/m5275evb/Kconfig19
-rw-r--r--board/freescale/m5275evb/MAINTAINERS6
-rw-r--r--board/freescale/m5282evb/Kconfig19
-rw-r--r--board/freescale/m5282evb/MAINTAINERS6
-rw-r--r--board/freescale/m53017evb/Kconfig19
-rw-r--r--board/freescale/m53017evb/MAINTAINERS6
-rw-r--r--board/freescale/m5329evb/Kconfig19
-rw-r--r--board/freescale/m5329evb/MAINTAINERS7
-rw-r--r--board/freescale/m5373evb/Kconfig19
-rw-r--r--board/freescale/m5373evb/MAINTAINERS6
-rw-r--r--board/freescale/m54418twr/Kconfig19
-rw-r--r--board/freescale/m54418twr/MAINTAINERS11
-rw-r--r--board/freescale/m54451evb/Kconfig19
-rw-r--r--board/freescale/m54451evb/MAINTAINERS7
-rw-r--r--board/freescale/m54455evb/Kconfig19
-rw-r--r--board/freescale/m54455evb/MAINTAINERS10
-rw-r--r--board/freescale/m547xevb/Kconfig19
-rw-r--r--board/freescale/m547xevb/MAINTAINERS12
-rw-r--r--board/freescale/m548xevb/Kconfig19
-rw-r--r--board/freescale/m548xevb/MAINTAINERS13
-rw-r--r--board/freescale/mpc5121ads/Kconfig15
-rw-r--r--board/freescale/mpc5121ads/MAINTAINERS7
-rw-r--r--board/freescale/mpc7448hpc2/Kconfig15
-rw-r--r--board/freescale/mpc7448hpc2/MAINTAINERS6
-rw-r--r--board/freescale/mpc8266ads/Kconfig15
-rw-r--r--board/freescale/mpc8266ads/MAINTAINERS6
-rw-r--r--board/freescale/mpc8308rdb/Kconfig15
-rw-r--r--board/freescale/mpc8308rdb/MAINTAINERS6
-rw-r--r--board/freescale/mpc8313erdb/Kconfig15
-rw-r--r--board/freescale/mpc8313erdb/MAINTAINERS9
-rw-r--r--board/freescale/mpc8315erdb/Kconfig15
-rw-r--r--board/freescale/mpc8315erdb/MAINTAINERS6
-rw-r--r--board/freescale/mpc8323erdb/Kconfig15
-rw-r--r--board/freescale/mpc8323erdb/MAINTAINERS6
-rw-r--r--board/freescale/mpc832xemds/Kconfig15
-rw-r--r--board/freescale/mpc832xemds/MAINTAINERS10
-rw-r--r--board/freescale/mpc8349emds/Kconfig15
-rw-r--r--board/freescale/mpc8349emds/MAINTAINERS6
-rw-r--r--board/freescale/mpc8349itx/Kconfig15
-rw-r--r--board/freescale/mpc8349itx/MAINTAINERS8
-rw-r--r--board/freescale/mpc8360emds/Kconfig15
-rw-r--r--board/freescale/mpc8360emds/MAINTAINERS15
-rw-r--r--board/freescale/mpc8360erdk/Kconfig15
-rw-r--r--board/freescale/mpc8360erdk/MAINTAINERS7
-rw-r--r--board/freescale/mpc837xemds/Kconfig15
-rw-r--r--board/freescale/mpc837xemds/MAINTAINERS7
-rw-r--r--board/freescale/mpc837xerdb/Kconfig15
-rw-r--r--board/freescale/mpc837xerdb/MAINTAINERS6
-rw-r--r--board/freescale/mpc8536ds/Kconfig15
-rw-r--r--board/freescale/mpc8536ds/MAINTAINERS9
-rw-r--r--board/freescale/mpc8540ads/Kconfig15
-rw-r--r--board/freescale/mpc8540ads/MAINTAINERS6
-rw-r--r--board/freescale/mpc8541cds/Kconfig15
-rw-r--r--board/freescale/mpc8541cds/MAINTAINERS7
-rw-r--r--board/freescale/mpc8544ds/Kconfig15
-rw-r--r--board/freescale/mpc8544ds/MAINTAINERS6
-rw-r--r--board/freescale/mpc8548cds/Kconfig15
-rw-r--r--board/freescale/mpc8548cds/MAINTAINERS8
-rw-r--r--board/freescale/mpc8555cds/Kconfig15
-rw-r--r--board/freescale/mpc8555cds/MAINTAINERS7
-rw-r--r--board/freescale/mpc8560ads/Kconfig15
-rw-r--r--board/freescale/mpc8560ads/MAINTAINERS6
-rw-r--r--board/freescale/mpc8568mds/Kconfig15
-rw-r--r--board/freescale/mpc8568mds/MAINTAINERS6
-rw-r--r--board/freescale/mpc8569mds/Kconfig15
-rw-r--r--board/freescale/mpc8569mds/MAINTAINERS7
-rw-r--r--board/freescale/mpc8572ds/Kconfig15
-rw-r--r--board/freescale/mpc8572ds/MAINTAINERS7
-rw-r--r--board/freescale/mpc8610hpcd/Kconfig15
-rw-r--r--board/freescale/mpc8610hpcd/MAINTAINERS6
-rw-r--r--board/freescale/mpc8641hpcn/Kconfig15
-rw-r--r--board/freescale/mpc8641hpcn/MAINTAINERS7
-rw-r--r--board/freescale/mx23evk/Kconfig23
-rw-r--r--board/freescale/mx23evk/MAINTAINERS6
-rw-r--r--board/freescale/mx25pdk/Kconfig23
-rw-r--r--board/freescale/mx25pdk/MAINTAINERS6
-rw-r--r--board/freescale/mx28evk/Kconfig23
-rw-r--r--board/freescale/mx28evk/MAINTAINERS9
-rw-r--r--board/freescale/mx31ads/Kconfig23
-rw-r--r--board/freescale/mx31ads/MAINTAINERS6
-rw-r--r--board/freescale/mx31pdk/Kconfig23
-rw-r--r--board/freescale/mx31pdk/MAINTAINERS6
-rw-r--r--board/freescale/mx35pdk/Kconfig23
-rw-r--r--board/freescale/mx35pdk/MAINTAINERS6
-rw-r--r--board/freescale/mx51evk/Kconfig23
-rw-r--r--board/freescale/mx51evk/MAINTAINERS6
-rw-r--r--board/freescale/mx53ard/Kconfig23
-rw-r--r--board/freescale/mx53ard/MAINTAINERS6
-rw-r--r--board/freescale/mx53evk/Kconfig23
-rw-r--r--board/freescale/mx53evk/MAINTAINERS6
-rw-r--r--board/freescale/mx53loco/Kconfig23
-rw-r--r--board/freescale/mx53loco/MAINTAINERS6
-rw-r--r--board/freescale/mx53smd/Kconfig23
-rw-r--r--board/freescale/mx53smd/MAINTAINERS6
-rw-r--r--board/freescale/mx6qarm2/Kconfig23
-rw-r--r--board/freescale/mx6qarm2/MAINTAINERS6
-rw-r--r--board/freescale/mx6qsabreauto/Kconfig23
-rw-r--r--board/freescale/mx6qsabreauto/MAINTAINERS7
-rw-r--r--board/freescale/mx6sabresd/Kconfig23
-rw-r--r--board/freescale/mx6sabresd/MAINTAINERS7
-rw-r--r--board/freescale/mx6slevk/Kconfig23
-rw-r--r--board/freescale/mx6slevk/MAINTAINERS6
-rw-r--r--board/freescale/p1010rdb/Kconfig15
-rw-r--r--board/freescale/p1010rdb/MAINTAINERS33
-rw-r--r--board/freescale/p1022ds/Kconfig15
-rw-r--r--board/freescale/p1022ds/MAINTAINERS13
-rw-r--r--board/freescale/p1023rdb/Kconfig15
-rw-r--r--board/freescale/p1023rdb/MAINTAINERS6
-rw-r--r--board/freescale/p1_p2_rdb/Kconfig15
-rw-r--r--board/freescale/p1_p2_rdb/MAINTAINERS37
-rw-r--r--board/freescale/p1_p2_rdb_pc/Kconfig15
-rw-r--r--board/freescale/p1_p2_rdb_pc/MAINTAINERS51
-rw-r--r--board/freescale/p1_twr/Kconfig15
-rw-r--r--board/freescale/p1_twr/MAINTAINERS6
-rw-r--r--board/freescale/p2020come/Kconfig15
-rw-r--r--board/freescale/p2020come/MAINTAINERS7
-rw-r--r--board/freescale/p2020ds/Kconfig15
-rw-r--r--board/freescale/p2020ds/MAINTAINERS10
-rw-r--r--board/freescale/p2041rdb/Kconfig15
-rw-r--r--board/freescale/p2041rdb/MAINTAINERS11
-rw-r--r--board/freescale/qemu-ppce500/Kconfig15
-rw-r--r--board/freescale/qemu-ppce500/MAINTAINERS6
-rw-r--r--board/freescale/t1040qds/Kconfig15
-rw-r--r--board/freescale/t1040qds/MAINTAINERS12
-rw-r--r--board/freescale/t104xrdb/Kconfig15
-rw-r--r--board/freescale/t104xrdb/MAINTAINERS22
-rw-r--r--board/freescale/t208xqds/Kconfig15
-rw-r--r--board/freescale/t208xqds/MAINTAINERS20
-rw-r--r--board/freescale/t208xrdb/Kconfig15
-rw-r--r--board/freescale/t208xrdb/MAINTAINERS15
-rw-r--r--board/freescale/t4qds/Kconfig31
-rw-r--r--board/freescale/t4qds/MAINTAINERS26
-rw-r--r--board/freescale/t4rdb/Kconfig15
-rw-r--r--board/freescale/t4rdb/MAINTAINERS7
-rw-r--r--board/freescale/vf610twr/Kconfig23
-rw-r--r--board/freescale/vf610twr/MAINTAINERS6
-rw-r--r--board/funkwerk/vovpn-gw/Kconfig15
-rw-r--r--board/funkwerk/vovpn-gw/MAINTAINERS6
-rw-r--r--board/g2000/Kconfig11
-rw-r--r--board/g2000/MAINTAINERS6
-rw-r--r--board/gaisler/gr_cpci_ax2000/Kconfig19
-rw-r--r--board/gaisler/gr_cpci_ax2000/MAINTAINERS6
-rw-r--r--board/gaisler/gr_ep2s60/Kconfig19
-rw-r--r--board/gaisler/gr_ep2s60/MAINTAINERS6
-rw-r--r--board/gaisler/gr_xc3s_1500/Kconfig19
-rw-r--r--board/gaisler/gr_xc3s_1500/MAINTAINERS6
-rw-r--r--board/gaisler/grsim/Kconfig19
-rw-r--r--board/gaisler/grsim/MAINTAINERS6
-rw-r--r--board/gaisler/grsim_leon2/Kconfig19
-rw-r--r--board/gaisler/grsim_leon2/MAINTAINERS6
-rw-r--r--board/galaxy5200/Kconfig11
-rw-r--r--board/galaxy5200/MAINTAINERS7
-rw-r--r--board/gateworks/gw_ventana/Kconfig23
-rw-r--r--board/gateworks/gw_ventana/MAINTAINERS6
-rw-r--r--board/gdsys/405ep/Kconfig63
-rw-r--r--board/gdsys/405ep/MAINTAINERS12
-rw-r--r--board/gdsys/405ex/Kconfig15
-rw-r--r--board/gdsys/405ex/MAINTAINERS6
-rw-r--r--board/gdsys/dlvision/Kconfig15
-rw-r--r--board/gdsys/dlvision/MAINTAINERS6
-rw-r--r--board/gdsys/gdppc440etx/Kconfig15
-rw-r--r--board/gdsys/gdppc440etx/MAINTAINERS6
-rw-r--r--board/gdsys/intip/Kconfig15
-rw-r--r--board/gdsys/intip/MAINTAINERS7
-rw-r--r--board/gdsys/p1022/Kconfig15
-rw-r--r--board/gdsys/p1022/MAINTAINERS9
-rw-r--r--board/gen860t/Kconfig11
-rw-r--r--board/gen860t/MAINTAINERS7
-rw-r--r--board/genesi/mx51_efikamx/Kconfig23
-rw-r--r--board/genesi/mx51_efikamx/MAINTAINERS7
-rw-r--r--board/gumstix/duovero/Kconfig23
-rw-r--r--board/gumstix/duovero/MAINTAINERS6
-rw-r--r--board/gumstix/pepper/Kconfig23
-rw-r--r--board/gumstix/pepper/MAINTAINERS6
-rw-r--r--board/gumstix/pepper/board.c30
-rw-r--r--board/gw8260/Kconfig11
-rw-r--r--board/gw8260/MAINTAINERS6
-rw-r--r--board/h2200/Kconfig15
-rw-r--r--board/h2200/MAINTAINERS6
-rw-r--r--board/hale/tt01/Kconfig23
-rw-r--r--board/hale/tt01/MAINTAINERS6
-rw-r--r--board/hermes/Kconfig11
-rw-r--r--board/hermes/MAINTAINERS6
-rw-r--r--board/highbank/Kconfig19
-rw-r--r--board/highbank/MAINTAINERS6
-rw-r--r--board/htkw/mcx/Kconfig23
-rw-r--r--board/htkw/mcx/MAINTAINERS6
-rw-r--r--board/hymod/Kconfig11
-rw-r--r--board/hymod/MAINTAINERS6
-rw-r--r--board/ibf-dsp561/Kconfig11
-rw-r--r--board/ibf-dsp561/MAINTAINERS6
-rw-r--r--board/icecube/Kconfig11
-rw-r--r--board/icecube/MAINTAINERS21
-rw-r--r--board/icpdas/lp8x4x/Kconfig19
-rw-r--r--board/icpdas/lp8x4x/MAINTAINERS6
-rw-r--r--board/icu862/Kconfig11
-rw-r--r--board/icu862/MAINTAINERS7
-rw-r--r--board/ids/ids8247/Kconfig15
-rw-r--r--board/ids/ids8247/MAINTAINERS6
-rw-r--r--board/ids/ids8313/Kconfig15
-rw-r--r--board/ids/ids8313/MAINTAINERS6
-rw-r--r--board/ifm/ac14xx/Kconfig15
-rw-r--r--board/ifm/ac14xx/MAINTAINERS6
-rw-r--r--board/ifm/o2dnt2/Kconfig95
-rw-r--r--board/ifm/o2dnt2/MAINTAINERS20
-rw-r--r--board/imgtec/malta/Kconfig19
-rw-r--r--board/imgtec/malta/MAINTAINERS7
-rw-r--r--board/imx31_phycore/Kconfig19
-rw-r--r--board/imx31_phycore/MAINTAINERS11
-rw-r--r--board/in-circuit/grasshopper/Kconfig19
-rw-r--r--board/in-circuit/grasshopper/MAINTAINERS6
-rw-r--r--board/inka4x0/Kconfig11
-rw-r--r--board/inka4x0/MAINTAINERS6
-rw-r--r--board/intercontrol/digsy_mtc/Kconfig15
-rw-r--r--board/intercontrol/digsy_mtc/MAINTAINERS9
-rw-r--r--board/iomega/iconnect/Kconfig23
-rw-r--r--board/iomega/iconnect/MAINTAINERS6
-rw-r--r--board/ip04/Kconfig11
-rw-r--r--board/ip04/MAINTAINERS6
-rw-r--r--board/ip860/Kconfig11
-rw-r--r--board/ip860/MAINTAINERS6
-rw-r--r--board/ipek01/Kconfig11
-rw-r--r--board/ipek01/MAINTAINERS6
-rw-r--r--board/iphase4539/Kconfig11
-rw-r--r--board/iphase4539/MAINTAINERS6
-rw-r--r--board/isee/igep0033/Kconfig23
-rw-r--r--board/isee/igep0033/MAINTAINERS6
-rw-r--r--board/isee/igep00x0/Kconfig23
-rw-r--r--board/isee/igep00x0/MAINTAINERS14
-rw-r--r--board/ivm/Kconfig23
-rw-r--r--board/ivm/MAINTAINERS12
-rw-r--r--board/jornada/Kconfig15
-rw-r--r--board/jornada/MAINTAINERS6
-rw-r--r--board/jse/Kconfig11
-rw-r--r--board/jse/MAINTAINERS6
-rw-r--r--board/jupiter/Kconfig11
-rw-r--r--board/jupiter/MAINTAINERS6
-rw-r--r--board/karo/tk71/Kconfig23
-rw-r--r--board/karo/tk71/MAINTAINERS6
-rw-r--r--board/karo/tx25/Kconfig23
-rw-r--r--board/karo/tx25/MAINTAINERS6
-rw-r--r--board/keymile/km82xx/Kconfig15
-rw-r--r--board/keymile/km82xx/MAINTAINERS7
-rw-r--r--board/keymile/km83xx/Kconfig47
-rw-r--r--board/keymile/km83xx/MAINTAINERS19
-rw-r--r--board/keymile/km_arm/Kconfig23
-rw-r--r--board/keymile/km_arm/MAINTAINERS14
-rw-r--r--board/keymile/kmp204x/Kconfig15
-rw-r--r--board/keymile/kmp204x/MAINTAINERS7
-rw-r--r--board/kmc/kzm9g/Kconfig23
-rw-r--r--board/kmc/kzm9g/MAINTAINERS7
-rw-r--r--board/korat/Kconfig11
-rw-r--r--board/korat/MAINTAINERS7
-rw-r--r--board/kup/kup4k/Kconfig15
-rw-r--r--board/kup/kup4k/MAINTAINERS6
-rw-r--r--board/kup/kup4x/Kconfig15
-rw-r--r--board/kup/kup4x/MAINTAINERS6
-rw-r--r--board/logicpd/am3517evm/Kconfig23
-rw-r--r--board/logicpd/am3517evm/MAINTAINERS6
-rw-r--r--board/logicpd/imx27lite/Kconfig47
-rw-r--r--board/logicpd/imx27lite/MAINTAINERS12
-rw-r--r--board/logicpd/imx31_litekit/Kconfig23
-rw-r--r--board/logicpd/imx31_litekit/MAINTAINERS6
-rw-r--r--board/logicpd/omap3som/Kconfig23
-rw-r--r--board/logicpd/omap3som/MAINTAINERS6
-rw-r--r--board/logicpd/zoom1/Kconfig23
-rw-r--r--board/logicpd/zoom1/MAINTAINERS6
-rw-r--r--board/lwmon/Kconfig11
-rw-r--r--board/lwmon/MAINTAINERS6
-rw-r--r--board/lwmon5/Kconfig11
-rw-r--r--board/lwmon5/MAINTAINERS7
-rw-r--r--board/manroland/hmi1001/Kconfig15
-rw-r--r--board/manroland/hmi1001/MAINTAINERS6
-rw-r--r--board/manroland/mucmc52/Kconfig15
-rw-r--r--board/manroland/mucmc52/MAINTAINERS6
-rw-r--r--board/manroland/uc100/Kconfig15
-rw-r--r--board/manroland/uc100/MAINTAINERS6
-rw-r--r--board/manroland/uc101/Kconfig15
-rw-r--r--board/manroland/uc101/MAINTAINERS6
-rw-r--r--board/matrix_vision/mergerbox/Kconfig15
-rw-r--r--board/matrix_vision/mergerbox/MAINTAINERS6
-rw-r--r--board/matrix_vision/mvbc_p/Kconfig15
-rw-r--r--board/matrix_vision/mvbc_p/MAINTAINERS6
-rw-r--r--board/matrix_vision/mvblm7/Kconfig15
-rw-r--r--board/matrix_vision/mvblm7/MAINTAINERS6
-rw-r--r--board/matrix_vision/mvblx/Kconfig23
-rw-r--r--board/matrix_vision/mvblx/MAINTAINERS6
-rw-r--r--board/matrix_vision/mvsmr/Kconfig15
-rw-r--r--board/matrix_vision/mvsmr/MAINTAINERS6
-rw-r--r--board/mcc200/Kconfig11
-rw-r--r--board/mcc200/MAINTAINERS17
-rw-r--r--board/micronas/vct/Kconfig19
-rw-r--r--board/micronas/vct/MAINTAINERS17
-rw-r--r--board/mimc/mimc200/Kconfig19
-rw-r--r--board/mimc/mimc200/MAINTAINERS6
-rw-r--r--board/miromico/hammerhead/Kconfig19
-rw-r--r--board/miromico/hammerhead/MAINTAINERS6
-rw-r--r--board/mosaixtech/icon/Kconfig15
-rw-r--r--board/mosaixtech/icon/MAINTAINERS6
-rw-r--r--board/motionpro/Kconfig11
-rw-r--r--board/motionpro/MAINTAINERS6
-rw-r--r--board/mpc8308_p1m/Kconfig11
-rw-r--r--board/mpc8308_p1m/MAINTAINERS6
-rw-r--r--board/mpl/common/kbd.c6
-rw-r--r--board/mpl/common/kbd.h6
-rw-r--r--board/mpl/mip405/Kconfig15
-rw-r--r--board/mpl/mip405/MAINTAINERS7
-rw-r--r--board/mpl/pati/Kconfig15
-rw-r--r--board/mpl/pati/MAINTAINERS6
-rw-r--r--board/mpl/pati/pati.c8
-rw-r--r--board/mpl/pip405/Kconfig15
-rw-r--r--board/mpl/pip405/MAINTAINERS6
-rw-r--r--board/mpl/vcma9/Kconfig23
-rw-r--r--board/mpl/vcma9/MAINTAINERS6
-rw-r--r--board/mpr2/Kconfig15
-rw-r--r--board/mpr2/MAINTAINERS6
-rw-r--r--board/ms7720se/Kconfig15
-rw-r--r--board/ms7720se/MAINTAINERS6
-rw-r--r--board/ms7722se/Kconfig15
-rw-r--r--board/ms7722se/MAINTAINERS7
-rw-r--r--board/ms7750se/Kconfig15
-rw-r--r--board/ms7750se/MAINTAINERS7
-rw-r--r--board/muas3001/Kconfig11
-rw-r--r--board/muas3001/MAINTAINERS7
-rw-r--r--board/munices/Kconfig11
-rw-r--r--board/munices/MAINTAINERS6
-rw-r--r--board/musenki/Kconfig11
-rw-r--r--board/musenki/MAINTAINERS6
-rw-r--r--board/mvblue/Kconfig11
-rw-r--r--board/mvblue/MAINTAINERS6
-rw-r--r--board/netvia/Kconfig11
-rw-r--r--board/netvia/MAINTAINERS7
-rw-r--r--board/nokia/rx51/Kconfig23
-rw-r--r--board/nokia/rx51/MAINTAINERS6
-rw-r--r--board/nokia/rx51/rx51.c6
-rw-r--r--board/nvidia/beaver/Kconfig24
-rw-r--r--board/nvidia/beaver/MAINTAINERS7
-rw-r--r--board/nvidia/cardhu/Kconfig24
-rw-r--r--board/nvidia/cardhu/MAINTAINERS6
-rw-r--r--board/nvidia/dalmore/Kconfig24
-rw-r--r--board/nvidia/dalmore/MAINTAINERS6
-rw-r--r--board/nvidia/harmony/Kconfig24
-rw-r--r--board/nvidia/harmony/MAINTAINERS6
-rw-r--r--board/nvidia/jetson-tk1/Kconfig24
-rw-r--r--board/nvidia/jetson-tk1/MAINTAINERS6
-rw-r--r--board/nvidia/seaboard/Kconfig24
-rw-r--r--board/nvidia/seaboard/MAINTAINERS6
-rw-r--r--board/nvidia/venice2/Kconfig24
-rw-r--r--board/nvidia/venice2/MAINTAINERS6
-rw-r--r--board/nvidia/ventana/Kconfig24
-rw-r--r--board/nvidia/ventana/MAINTAINERS7
-rw-r--r--board/nvidia/whistler/Kconfig24
-rw-r--r--board/nvidia/whistler/MAINTAINERS7
-rw-r--r--board/olimex/mx23_olinuxino/Kconfig23
-rw-r--r--board/olimex/mx23_olinuxino/MAINTAINERS6
-rw-r--r--board/omicron/calimain/Kconfig23
-rw-r--r--board/omicron/calimain/MAINTAINERS7
-rw-r--r--board/openrisc/openrisc-generic/Kconfig15
-rw-r--r--board/openrisc/openrisc-generic/MAINTAINERS6
-rw-r--r--board/overo/Kconfig19
-rw-r--r--board/overo/MAINTAINERS6
-rw-r--r--board/palmld/Kconfig15
-rw-r--r--board/palmld/MAINTAINERS6
-rw-r--r--board/palmtc/Kconfig15
-rw-r--r--board/palmtc/MAINTAINERS6
-rw-r--r--board/palmtreo680/Kconfig15
-rw-r--r--board/palmtreo680/MAINTAINERS6
-rw-r--r--board/pandora/Kconfig19
-rw-r--r--board/pandora/MAINTAINERS6
-rw-r--r--board/pb1x00/Kconfig19
-rw-r--r--board/pb1x00/MAINTAINERS6
-rw-r--r--board/pcs440ep/Kconfig11
-rw-r--r--board/pcs440ep/MAINTAINERS6
-rw-r--r--board/pdm360ng/Kconfig11
-rw-r--r--board/pdm360ng/MAINTAINERS6
-rw-r--r--board/phytec/pcm030/Kconfig15
-rw-r--r--board/phytec/pcm030/MAINTAINERS7
-rw-r--r--board/phytec/pcm051/Kconfig23
-rw-r--r--board/phytec/pcm051/MAINTAINERS7
-rw-r--r--board/pm520/Kconfig11
-rw-r--r--board/pm520/MAINTAINERS9
-rw-r--r--board/pm826/Kconfig11
-rw-r--r--board/pm826/MAINTAINERS13
-rw-r--r--board/pm828/Kconfig11
-rw-r--r--board/pm828/MAINTAINERS9
-rw-r--r--board/ppcag/bg0900/Kconfig23
-rw-r--r--board/ppcag/bg0900/MAINTAINERS6
-rw-r--r--board/ppmc7xx/Kconfig11
-rw-r--r--board/ppmc7xx/MAINTAINERS6
-rw-r--r--board/ppmc8260/Kconfig11
-rw-r--r--board/ppmc8260/MAINTAINERS6
-rw-r--r--board/pr1/Kconfig11
-rw-r--r--board/pr1/MAINTAINERS6
-rw-r--r--board/prodrive/alpr/Kconfig15
-rw-r--r--board/prodrive/alpr/MAINTAINERS6
-rw-r--r--board/prodrive/p3mx/Kconfig15
-rw-r--r--board/prodrive/p3mx/MAINTAINERS7
-rw-r--r--board/prodrive/p3p440/Kconfig15
-rw-r--r--board/prodrive/p3p440/MAINTAINERS6
-rw-r--r--board/psyent/pci5441/Kconfig15
-rw-r--r--board/psyent/pci5441/MAINTAINERS6
-rw-r--r--board/psyent/pk1c20/Kconfig15
-rw-r--r--board/psyent/pk1c20/MAINTAINERS6
-rw-r--r--board/pxa255_idp/Kconfig15
-rw-r--r--board/pxa255_idp/MAINTAINERS6
-rw-r--r--board/qemu-mips/Kconfig31
-rw-r--r--board/qemu-mips/MAINTAINERS14
-rw-r--r--board/r360mpi/Kconfig11
-rw-r--r--board/r360mpi/MAINTAINERS6
-rw-r--r--board/raidsonic/ib62x0/Kconfig23
-rw-r--r--board/raidsonic/ib62x0/MAINTAINERS6
-rw-r--r--board/raspberrypi/rpi_b/Kconfig23
-rw-r--r--board/raspberrypi/rpi_b/MAINTAINERS6
-rw-r--r--board/renesas/MigoR/Kconfig19
-rw-r--r--board/renesas/MigoR/MAINTAINERS6
-rw-r--r--board/renesas/alt/Kconfig23
-rw-r--r--board/renesas/alt/MAINTAINERS6
-rw-r--r--board/renesas/alt/Makefile9
-rw-r--r--board/renesas/alt/alt.c173
-rw-r--r--board/renesas/alt/qos.c944
-rw-r--r--board/renesas/alt/qos.h12
-rw-r--r--board/renesas/ap325rxa/Kconfig19
-rw-r--r--board/renesas/ap325rxa/MAINTAINERS7
-rw-r--r--board/renesas/ecovec/Kconfig19
-rw-r--r--board/renesas/ecovec/MAINTAINERS7
-rw-r--r--board/renesas/koelsch/Kconfig23
-rw-r--r--board/renesas/koelsch/MAINTAINERS6
-rw-r--r--board/renesas/lager/Kconfig23
-rw-r--r--board/renesas/lager/MAINTAINERS6
-rw-r--r--board/renesas/r0p7734/Kconfig19
-rw-r--r--board/renesas/r0p7734/MAINTAINERS7
-rw-r--r--board/renesas/r2dplus/Kconfig19
-rw-r--r--board/renesas/r2dplus/MAINTAINERS7
-rw-r--r--board/renesas/r7780mp/Kconfig19
-rw-r--r--board/renesas/r7780mp/MAINTAINERS7
-rw-r--r--board/renesas/rsk7203/Kconfig19
-rw-r--r--board/renesas/rsk7203/MAINTAINERS7
-rw-r--r--board/renesas/rsk7264/Kconfig19
-rw-r--r--board/renesas/rsk7264/MAINTAINERS6
-rw-r--r--board/renesas/rsk7269/Kconfig19
-rw-r--r--board/renesas/rsk7269/MAINTAINERS6
-rw-r--r--board/renesas/sh7752evb/Kconfig19
-rw-r--r--board/renesas/sh7752evb/MAINTAINERS6
-rw-r--r--board/renesas/sh7753evb/Kconfig19
-rw-r--r--board/renesas/sh7753evb/MAINTAINERS6
-rw-r--r--board/renesas/sh7757lcr/Kconfig19
-rw-r--r--board/renesas/sh7757lcr/MAINTAINERS6
-rw-r--r--board/renesas/sh7763rdp/Kconfig19
-rw-r--r--board/renesas/sh7763rdp/MAINTAINERS7
-rw-r--r--board/renesas/sh7785lcr/Kconfig19
-rw-r--r--board/renesas/sh7785lcr/MAINTAINERS7
-rw-r--r--board/ronetix/pm9261/Kconfig23
-rw-r--r--board/ronetix/pm9261/MAINTAINERS6
-rw-r--r--board/ronetix/pm9263/Kconfig23
-rw-r--r--board/ronetix/pm9263/MAINTAINERS6
-rw-r--r--board/ronetix/pm9g45/Kconfig23
-rw-r--r--board/ronetix/pm9g45/MAINTAINERS6
-rw-r--r--board/sacsng/Kconfig11
-rw-r--r--board/sacsng/MAINTAINERS6
-rw-r--r--board/samsung/arndale/Kconfig23
-rw-r--r--board/samsung/arndale/MAINTAINERS6
-rw-r--r--board/samsung/goni/Kconfig23
-rw-r--r--board/samsung/goni/MAINTAINERS6
-rw-r--r--board/samsung/origen/Kconfig23
-rw-r--r--board/samsung/origen/MAINTAINERS6
-rw-r--r--board/samsung/smdk2410/Kconfig23
-rw-r--r--board/samsung/smdk2410/MAINTAINERS6
-rw-r--r--board/samsung/smdk5250/Kconfig47
-rw-r--r--board/samsung/smdk5250/MAINTAINERS12
-rw-r--r--board/samsung/smdk5420/Kconfig47
-rw-r--r--board/samsung/smdk5420/MAINTAINERS12
-rw-r--r--board/samsung/smdkc100/Kconfig23
-rw-r--r--board/samsung/smdkc100/MAINTAINERS6
-rw-r--r--board/samsung/smdkv310/Kconfig23
-rw-r--r--board/samsung/smdkv310/MAINTAINERS6
-rw-r--r--board/samsung/trats/Kconfig23
-rw-r--r--board/samsung/trats/MAINTAINERS6
-rw-r--r--board/samsung/trats2/Kconfig23
-rw-r--r--board/samsung/trats2/MAINTAINERS6
-rw-r--r--board/samsung/universal_c210/Kconfig23
-rw-r--r--board/samsung/universal_c210/MAINTAINERS6
-rw-r--r--board/sandbox/MAINTAINERS6
-rw-r--r--board/sandburst/karef/Kconfig15
-rw-r--r--board/sandburst/karef/MAINTAINERS6
-rw-r--r--board/sandburst/metrobox/Kconfig15
-rw-r--r--board/sandburst/metrobox/MAINTAINERS6
-rw-r--r--board/sandisk/sansa_fuze_plus/Kconfig23
-rw-r--r--board/sandisk/sansa_fuze_plus/MAINTAINERS6
-rw-r--r--board/sandpoint/Kconfig23
-rw-r--r--board/sandpoint/MAINTAINERS12
-rw-r--r--board/sbc405/Kconfig11
-rw-r--r--board/sbc405/MAINTAINERS6
-rw-r--r--board/sbc8349/Kconfig11
-rw-r--r--board/sbc8349/MAINTAINERS8
-rw-r--r--board/sbc8548/Kconfig11
-rw-r--r--board/sbc8548/MAINTAINERS10
-rw-r--r--board/sbc8641d/Kconfig11
-rw-r--r--board/sbc8641d/MAINTAINERS6
-rw-r--r--board/sc3/Kconfig11
-rw-r--r--board/sc3/MAINTAINERS6
-rw-r--r--board/scb9328/Kconfig19
-rw-r--r--board/scb9328/MAINTAINERS6
-rw-r--r--board/schulercontrol/sc_sps_1/Kconfig23
-rw-r--r--board/schulercontrol/sc_sps_1/MAINTAINERS6
-rw-r--r--board/shmin/Kconfig15
-rw-r--r--board/shmin/MAINTAINERS7
-rw-r--r--board/siemens/corvus/Kconfig23
-rw-r--r--board/siemens/corvus/MAINTAINERS6
-rw-r--r--board/siemens/draco/Kconfig47
-rw-r--r--board/siemens/draco/MAINTAINERS8
-rw-r--r--board/siemens/pxm2/Kconfig23
-rw-r--r--board/siemens/pxm2/MAINTAINERS6
-rw-r--r--board/siemens/rut/Kconfig23
-rw-r--r--board/siemens/rut/MAINTAINERS6
-rw-r--r--board/siemens/taurus/Kconfig23
-rw-r--r--board/siemens/taurus/MAINTAINERS7
-rw-r--r--board/silica/pengwyn/Kconfig23
-rw-r--r--board/silica/pengwyn/MAINTAINERS6
-rw-r--r--board/sixnet/Kconfig11
-rw-r--r--board/sixnet/MAINTAINERS6
-rw-r--r--board/socrates/Kconfig11
-rw-r--r--board/socrates/MAINTAINERS6
-rw-r--r--board/solidrun/hummingboard/Kconfig23
-rw-r--r--board/solidrun/hummingboard/MAINTAINERS6
-rw-r--r--board/spd8xx/Kconfig11
-rw-r--r--board/spd8xx/MAINTAINERS6
-rw-r--r--board/spear/spear300/Kconfig23
-rw-r--r--board/spear/spear300/MAINTAINERS13
-rw-r--r--board/spear/spear310/Kconfig23
-rw-r--r--board/spear/spear310/MAINTAINERS15
-rw-r--r--board/spear/spear320/Kconfig23
-rw-r--r--board/spear/spear320/MAINTAINERS15
-rw-r--r--board/spear/spear600/Kconfig23
-rw-r--r--board/spear/spear600/MAINTAINERS13
-rw-r--r--board/spear/x600/Kconfig23
-rw-r--r--board/spear/x600/MAINTAINERS6
-rw-r--r--board/st-ericsson/snowball/Kconfig23
-rw-r--r--board/st-ericsson/snowball/MAINTAINERS6
-rw-r--r--board/st-ericsson/u8500/Kconfig23
-rw-r--r--board/st-ericsson/u8500/MAINTAINERS6
-rw-r--r--board/st/nhk8815/Kconfig23
-rw-r--r--board/st/nhk8815/MAINTAINERS8
-rw-r--r--board/stx/stxgp3/Kconfig15
-rw-r--r--board/stx/stxgp3/MAINTAINERS6
-rw-r--r--board/stx/stxssa/Kconfig15
-rw-r--r--board/stx/stxssa/MAINTAINERS7
-rw-r--r--board/stx/stxxtc/Kconfig15
-rw-r--r--board/stx/stxxtc/MAINTAINERS6
-rw-r--r--board/sunxi/Kconfig59
-rw-r--r--board/sunxi/MAINTAINERS19
-rw-r--r--board/sunxi/Makefile4
-rw-r--r--board/sunxi/board.c67
-rw-r--r--board/sunxi/dram_a13_oli_micro.c32
-rw-r--r--board/sunxi/dram_cubieboard.c31
-rw-r--r--board/sunxi/dram_cubieboard2.c31
-rw-r--r--board/sunxi/dram_r7dongle.c31
-rw-r--r--board/sunxi/gmac.c11
-rw-r--r--board/svm_sc8xx/Kconfig11
-rw-r--r--board/svm_sc8xx/MAINTAINERS6
-rw-r--r--board/synopsys/Kconfig31
-rw-r--r--board/synopsys/MAINTAINERS7
-rw-r--r--board/synopsys/axs101/Kconfig19
-rw-r--r--board/synopsys/axs101/MAINTAINERS6
-rw-r--r--board/syteco/jadecpu/Kconfig23
-rw-r--r--board/syteco/jadecpu/MAINTAINERS6
-rw-r--r--board/syteco/zmx25/Kconfig23
-rw-r--r--board/syteco/zmx25/MAINTAINERS6
-rw-r--r--board/t3corp/Kconfig11
-rw-r--r--board/t3corp/MAINTAINERS6
-rw-r--r--board/taskit/stamp9g20/Kconfig23
-rw-r--r--board/taskit/stamp9g20/MAINTAINERS7
-rw-r--r--board/tcm-bf518/Kconfig11
-rw-r--r--board/tcm-bf518/MAINTAINERS6
-rw-r--r--board/tcm-bf537/Kconfig11
-rw-r--r--board/tcm-bf537/MAINTAINERS6
-rw-r--r--board/technexion/tao3530/Kconfig23
-rw-r--r--board/technexion/tao3530/MAINTAINERS11
-rw-r--r--board/technexion/twister/Kconfig23
-rw-r--r--board/technexion/twister/MAINTAINERS6
-rw-r--r--board/teejet/mt_ventoux/Kconfig23
-rw-r--r--board/teejet/mt_ventoux/MAINTAINERS6
-rw-r--r--board/ti/am335x/Kconfig23
-rw-r--r--board/ti/am335x/MAINTAINERS17
-rw-r--r--board/ti/am335x/board.c30
-rw-r--r--board/ti/am3517crane/Kconfig23
-rw-r--r--board/ti/am3517crane/MAINTAINERS6
-rw-r--r--board/ti/am43xx/Kconfig23
-rw-r--r--board/ti/am43xx/MAINTAINERS7
-rw-r--r--board/ti/am43xx/board.c14
-rw-r--r--board/ti/beagle/Kconfig23
-rw-r--r--board/ti/beagle/MAINTAINERS6
-rw-r--r--board/ti/dra7xx/Kconfig23
-rw-r--r--board/ti/dra7xx/MAINTAINERS8
-rw-r--r--board/ti/dra7xx/evm.c7
-rw-r--r--board/ti/dra7xx/mux_data.h12
-rw-r--r--board/ti/evm/Kconfig71
-rw-r--r--board/ti/evm/MAINTAINERS14
-rw-r--r--board/ti/k2hk_evm/Makefile9
-rw-r--r--board/ti/k2hk_evm/ddr3.c268
-rw-r--r--board/ti/ks2_evm/Kconfig47
-rw-r--r--board/ti/ks2_evm/MAINTAINERS8
-rw-r--r--board/ti/ks2_evm/Makefile13
-rw-r--r--board/ti/ks2_evm/README_K2HK (renamed from board/ti/k2hk_evm/README)28
-rw-r--r--board/ti/ks2_evm/board.c (renamed from board/ti/k2hk_evm/board.c)156
-rw-r--r--board/ti/ks2_evm/board.h19
-rw-r--r--board/ti/ks2_evm/board_k2e.c39
-rw-r--r--board/ti/ks2_evm/board_k2hk.c81
-rw-r--r--board/ti/ks2_evm/ddr3_cfg.c170
-rw-r--r--board/ti/ks2_evm/ddr3_cfg.h24
-rw-r--r--board/ti/ks2_evm/ddr3_k2e.c55
-rw-r--r--board/ti/ks2_evm/ddr3_k2hk.c84
-rw-r--r--board/ti/omap5912osk/Kconfig23
-rw-r--r--board/ti/omap5912osk/MAINTAINERS6
-rw-r--r--board/ti/omap5_uevm/Kconfig23
-rw-r--r--board/ti/omap5_uevm/MAINTAINERS6
-rw-r--r--board/ti/panda/Kconfig23
-rw-r--r--board/ti/panda/MAINTAINERS6
-rw-r--r--board/ti/sdp3430/Kconfig23
-rw-r--r--board/ti/sdp3430/MAINTAINERS6
-rw-r--r--board/ti/sdp4430/Kconfig23
-rw-r--r--board/ti/sdp4430/MAINTAINERS6
-rw-r--r--board/ti/ti814x/Kconfig23
-rw-r--r--board/ti/ti814x/MAINTAINERS6
-rw-r--r--board/ti/ti816x/Kconfig23
-rw-r--r--board/ti/ti816x/MAINTAINERS6
-rw-r--r--board/ti/tnetv107xevm/Kconfig23
-rw-r--r--board/ti/tnetv107xevm/MAINTAINERS6
-rw-r--r--board/timll/devkit3250/Kconfig23
-rw-r--r--board/timll/devkit3250/MAINTAINERS6
-rw-r--r--board/timll/devkit8000/Kconfig23
-rw-r--r--board/timll/devkit8000/MAINTAINERS6
-rw-r--r--board/toradex/colibri_pxa270/Kconfig19
-rw-r--r--board/toradex/colibri_pxa270/MAINTAINERS6
-rw-r--r--board/toradex/colibri_t20_iris/Kconfig24
-rw-r--r--board/toradex/colibri_t20_iris/MAINTAINERS6
-rw-r--r--board/total5200/Kconfig11
-rw-r--r--board/total5200/MAINTAINERS9
-rw-r--r--board/tqc/tqm5200/Kconfig63
-rw-r--r--board/tqc/tqm5200/MAINTAINERS26
-rw-r--r--board/tqc/tqm8260/Kconfig15
-rw-r--r--board/tqc/tqm8260/MAINTAINERS16
-rw-r--r--board/tqc/tqm8272/Kconfig15
-rw-r--r--board/tqc/tqm8272/MAINTAINERS6
-rw-r--r--board/tqc/tqm834x/Kconfig15
-rw-r--r--board/tqc/tqm834x/MAINTAINERS6
-rw-r--r--board/tqc/tqm8xx/Kconfig287
-rw-r--r--board/tqc/tqm8xx/MAINTAINERS47
-rw-r--r--board/trizepsiv/Kconfig15
-rw-r--r--board/trizepsiv/MAINTAINERS7
-rw-r--r--board/ttcontrol/vision2/Kconfig23
-rw-r--r--board/ttcontrol/vision2/MAINTAINERS6
-rw-r--r--board/udoo/Kconfig19
-rw-r--r--board/udoo/MAINTAINERS6
-rw-r--r--board/utx8245/Kconfig11
-rw-r--r--board/utx8245/MAINTAINERS6
-rw-r--r--board/v38b/Kconfig11
-rw-r--r--board/v38b/MAINTAINERS6
-rw-r--r--board/ve8313/Kconfig11
-rw-r--r--board/ve8313/MAINTAINERS6
-rw-r--r--board/vpac270/Kconfig15
-rw-r--r--board/vpac270/MAINTAINERS8
-rw-r--r--board/w7o/Kconfig23
-rw-r--r--board/w7o/MAINTAINERS8
-rw-r--r--board/wandboard/Kconfig19
-rw-r--r--board/wandboard/MAINTAINERS8
-rw-r--r--board/woodburn/Kconfig39
-rw-r--r--board/woodburn/MAINTAINERS12
-rw-r--r--board/xaeniax/Kconfig15
-rw-r--r--board/xaeniax/MAINTAINERS6
-rw-r--r--board/xes/xpedite1000/Kconfig15
-rw-r--r--board/xes/xpedite1000/MAINTAINERS6
-rw-r--r--board/xes/xpedite517x/Kconfig15
-rw-r--r--board/xes/xpedite517x/MAINTAINERS6
-rw-r--r--board/xes/xpedite520x/Kconfig15
-rw-r--r--board/xes/xpedite520x/MAINTAINERS6
-rw-r--r--board/xes/xpedite537x/Kconfig15
-rw-r--r--board/xes/xpedite537x/MAINTAINERS6
-rw-r--r--board/xes/xpedite550x/Kconfig15
-rw-r--r--board/xes/xpedite550x/MAINTAINERS6
-rw-r--r--board/xilinx/microblaze-generic/Kconfig15
-rw-r--r--board/xilinx/microblaze-generic/MAINTAINERS6
-rw-r--r--board/xilinx/ml507/Kconfig15
-rw-r--r--board/xilinx/ml507/MAINTAINERS7
-rw-r--r--board/xilinx/ppc405-generic/Kconfig15
-rw-r--r--board/xilinx/ppc405-generic/MAINTAINERS7
-rw-r--r--board/xilinx/ppc440-generic/Kconfig15
-rw-r--r--board/xilinx/ppc440-generic/MAINTAINERS7
-rw-r--r--board/xilinx/zynq/Kconfig95
-rw-r--r--board/xilinx/zynq/MAINTAINERS15
-rw-r--r--board/xilinx/zynq/Makefile3
-rw-r--r--board/zeus/Kconfig11
-rw-r--r--board/zeus/MAINTAINERS6
-rw-r--r--board/zipitz2/Kconfig15
-rw-r--r--board/zipitz2/MAINTAINERS6
-rw-r--r--boards.cfg1219
-rw-r--r--common/board_f.c28
-rw-r--r--common/board_r.c29
-rw-r--r--common/cmd_log.c11
-rw-r--r--common/console.c24
-rw-r--r--common/dlmalloc.c85
-rw-r--r--common/env_mmc.c35
-rw-r--r--common/image-fdt.c9
-rw-r--r--common/lcd.c14
-rw-r--r--common/stdio.c66
-rw-r--r--common/usb_kbd.c6
-rw-r--r--config.mk10
-rw-r--r--configs/A13-OLinuXinoM_defconfig4
-rw-r--r--configs/A3000_defconfig3
-rw-r--r--configs/APC405_defconfig3
-rw-r--r--configs/AR405_defconfig3
-rw-r--r--configs/ASH405_defconfig3
-rw-r--r--configs/B4420QDS_NAND_defconfig5
-rw-r--r--configs/B4420QDS_SPIFLASH_defconfig4
-rw-r--r--configs/B4420QDS_defconfig4
-rw-r--r--configs/B4860QDS_NAND_defconfig5
-rw-r--r--configs/B4860QDS_SECURE_BOOT_defconfig4
-rw-r--r--configs/B4860QDS_SPIFLASH_defconfig4
-rw-r--r--configs/B4860QDS_SRIO_PCIE_BOOT_defconfig4
-rw-r--r--configs/B4860QDS_defconfig4
-rw-r--r--configs/BC3450_defconfig3
-rw-r--r--configs/BSC9131RDB_NAND_SYSCLK100_defconfig5
-rw-r--r--configs/BSC9131RDB_NAND_defconfig5
-rw-r--r--configs/BSC9131RDB_SPIFLASH_SYSCLK100_defconfig4
-rw-r--r--configs/BSC9131RDB_SPIFLASH_defconfig4
-rw-r--r--configs/BSC9132QDS_NAND_DDRCLK100_SECURE_defconfig4
-rw-r--r--configs/BSC9132QDS_NAND_DDRCLK100_defconfig5
-rw-r--r--configs/BSC9132QDS_NAND_DDRCLK133_SECURE_defconfig4
-rw-r--r--configs/BSC9132QDS_NAND_DDRCLK133_defconfig5
-rw-r--r--configs/BSC9132QDS_NOR_DDRCLK100_SECURE_defconfig4
-rw-r--r--configs/BSC9132QDS_NOR_DDRCLK100_defconfig4
-rw-r--r--configs/BSC9132QDS_NOR_DDRCLK133_SECURE_defconfig4
-rw-r--r--configs/BSC9132QDS_NOR_DDRCLK133_defconfig4
-rw-r--r--configs/BSC9132QDS_SDCARD_DDRCLK100_SECURE_defconfig4
-rw-r--r--configs/BSC9132QDS_SDCARD_DDRCLK100_defconfig4
-rw-r--r--configs/BSC9132QDS_SDCARD_DDRCLK133_SECURE_defconfig4
-rw-r--r--configs/BSC9132QDS_SDCARD_DDRCLK133_defconfig4
-rw-r--r--configs/BSC9132QDS_SPIFLASH_DDRCLK100_SECURE_defconfig4
-rw-r--r--configs/BSC9132QDS_SPIFLASH_DDRCLK100_defconfig4
-rw-r--r--configs/BSC9132QDS_SPIFLASH_DDRCLK133_SECURE_defconfig4
-rw-r--r--configs/BSC9132QDS_SPIFLASH_DDRCLK133_defconfig4
-rw-r--r--configs/C29XPCIE_NAND_defconfig6
-rw-r--r--configs/C29XPCIE_SPIFLASH_defconfig4
-rw-r--r--configs/C29XPCIE_defconfig4
-rw-r--r--configs/CATcenter_25_defconfig4
-rw-r--r--configs/CATcenter_33_defconfig4
-rw-r--r--configs/CATcenter_defconfig4
-rw-r--r--configs/CMS700_defconfig3
-rw-r--r--configs/CPC45_ROMBOOT_defconfig4
-rw-r--r--configs/CPC45_defconfig3
-rw-r--r--configs/CPCI2DP_defconfig3
-rw-r--r--configs/CPCI4052_defconfig3
-rw-r--r--configs/CPCI405AB_defconfig3
-rw-r--r--configs/CPCI405DT_defconfig3
-rw-r--r--configs/CPCI405_defconfig3
-rw-r--r--configs/CPCI750_defconfig3
-rw-r--r--configs/CPCIISER4_defconfig3
-rw-r--r--configs/CPU86_ROMBOOT_defconfig4
-rw-r--r--configs/CPU86_defconfig3
-rw-r--r--configs/CPU87_ROMBOOT_defconfig4
-rw-r--r--configs/CPU87_defconfig3
-rw-r--r--configs/CRAYL1_defconfig3
-rw-r--r--configs/CU824_defconfig3
-rw-r--r--configs/Cubieboard2_FEL_defconfig4
-rw-r--r--configs/Cubieboard2_defconfig4
-rw-r--r--configs/Cubieboard_defconfig4
-rw-r--r--configs/Cubietruck_FEL_defconfig4
-rw-r--r--configs/Cubietruck_defconfig4
-rw-r--r--configs/DB64360_defconfig3
-rw-r--r--configs/DB64460_defconfig3
-rw-r--r--configs/DP405_defconfig3
-rw-r--r--configs/DU405_defconfig3
-rw-r--r--configs/DU440_defconfig3
-rw-r--r--configs/ELPPC_defconfig3
-rw-r--r--configs/ELPT860_defconfig3
-rw-r--r--configs/ESTEEM192E_defconfig3
-rw-r--r--configs/EVAL5200_defconfig4
-rw-r--r--configs/FLAGADM_defconfig3
-rw-r--r--configs/FPS850L_defconfig3
-rw-r--r--configs/FPS860L_defconfig3
-rw-r--r--configs/G2000_defconfig3
-rw-r--r--configs/GEN860T_SC_defconfig4
-rw-r--r--configs/GEN860T_defconfig3
-rw-r--r--configs/HH405_defconfig3
-rw-r--r--configs/HUB405_defconfig3
-rw-r--r--configs/HWW1U1A_defconfig3
-rw-r--r--configs/ICU862_100MHz_defconfig4
-rw-r--r--configs/ICU862_defconfig3
-rw-r--r--configs/IDS8247_defconfig3
-rw-r--r--configs/IP860_defconfig3
-rw-r--r--configs/IPHASE4539_defconfig3
-rw-r--r--configs/IVML24_128_defconfig4
-rw-r--r--configs/IVML24_256_defconfig4
-rw-r--r--configs/IVML24_defconfig4
-rw-r--r--configs/IVMS8_128_defconfig4
-rw-r--r--configs/IVMS8_256_defconfig4
-rw-r--r--configs/IVMS8_defconfig4
-rw-r--r--configs/JSE_defconfig3
-rw-r--r--configs/KAREF_defconfig3
-rw-r--r--configs/KUP4K_defconfig3
-rw-r--r--configs/KUP4X_defconfig3
-rw-r--r--configs/Lite5200_LOWBOOT08_defconfig4
-rw-r--r--configs/Lite5200_LOWBOOT_defconfig4
-rw-r--r--configs/Lite5200_defconfig3
-rw-r--r--configs/M5208EVBE_defconfig2
-rw-r--r--configs/M52277EVB_defconfig3
-rw-r--r--configs/M52277EVB_stmicro_defconfig3
-rw-r--r--configs/M5235EVB_Flash32_defconfig3
-rw-r--r--configs/M5235EVB_defconfig3
-rw-r--r--configs/M5249EVB_defconfig2
-rw-r--r--configs/M5253DEMO_defconfig2
-rw-r--r--configs/M5253EVBE_defconfig2
-rw-r--r--configs/M5272C3_defconfig2
-rw-r--r--configs/M5275EVB_defconfig2
-rw-r--r--configs/M5282EVB_defconfig2
-rw-r--r--configs/M53017EVB_defconfig2
-rw-r--r--configs/M5329AFEE_defconfig3
-rw-r--r--configs/M5329BFEE_defconfig3
-rw-r--r--configs/M5373EVB_defconfig3
-rw-r--r--configs/M54418TWR_defconfig3
-rw-r--r--configs/M54418TWR_nand_mii_defconfig3
-rw-r--r--configs/M54418TWR_nand_rmii_defconfig3
-rw-r--r--configs/M54418TWR_nand_rmii_lowfreq_defconfig3
-rw-r--r--configs/M54418TWR_serial_mii_defconfig3
-rw-r--r--configs/M54418TWR_serial_rmii_defconfig3
-rw-r--r--configs/M54451EVB_defconfig3
-rw-r--r--configs/M54451EVB_stmicro_defconfig3
-rw-r--r--configs/M54455EVB_a66_defconfig3
-rw-r--r--configs/M54455EVB_defconfig3
-rw-r--r--configs/M54455EVB_i66_defconfig3
-rw-r--r--configs/M54455EVB_intel_defconfig3
-rw-r--r--configs/M54455EVB_stm33_defconfig3
-rw-r--r--configs/M5475AFE_defconfig3
-rw-r--r--configs/M5475BFE_defconfig3
-rw-r--r--configs/M5475CFE_defconfig3
-rw-r--r--configs/M5475DFE_defconfig3
-rw-r--r--configs/M5475EFE_defconfig3
-rw-r--r--configs/M5475FFE_defconfig3
-rw-r--r--configs/M5475GFE_defconfig3
-rw-r--r--configs/M5485AFE_defconfig3
-rw-r--r--configs/M5485BFE_defconfig3
-rw-r--r--configs/M5485CFE_defconfig3
-rw-r--r--configs/M5485DFE_defconfig3
-rw-r--r--configs/M5485EFE_defconfig3
-rw-r--r--configs/M5485FFE_defconfig3
-rw-r--r--configs/M5485GFE_defconfig3
-rw-r--r--configs/M5485HFE_defconfig3
-rw-r--r--configs/MERGERBOX_defconfig3
-rw-r--r--configs/METROBOX_defconfig3
-rw-r--r--configs/MHPC_defconfig3
-rw-r--r--configs/MINI5200_defconfig4
-rw-r--r--configs/MIP405T_defconfig4
-rw-r--r--configs/MIP405_defconfig3
-rw-r--r--configs/MPC8266ADS_defconfig3
-rw-r--r--configs/MPC8308RDB_defconfig3
-rw-r--r--configs/MPC8313ERDB_33_defconfig4
-rw-r--r--configs/MPC8313ERDB_66_defconfig4
-rw-r--r--configs/MPC8313ERDB_NAND_33_defconfig5
-rw-r--r--configs/MPC8313ERDB_NAND_66_defconfig5
-rw-r--r--configs/MPC8315ERDB_defconfig3
-rw-r--r--configs/MPC8323ERDB_defconfig3
-rw-r--r--configs/MPC832XEMDS_ATM_defconfig4
-rw-r--r--configs/MPC832XEMDS_HOST_33_defconfig4
-rw-r--r--configs/MPC832XEMDS_HOST_66_defconfig4
-rw-r--r--configs/MPC832XEMDS_SLAVE_defconfig4
-rw-r--r--configs/MPC832XEMDS_defconfig3
-rw-r--r--configs/MPC8349EMDS_defconfig3
-rw-r--r--configs/MPC8349ITXGP_defconfig4
-rw-r--r--configs/MPC8349ITX_LOWBOOT_defconfig4
-rw-r--r--configs/MPC8349ITX_defconfig4
-rw-r--r--configs/MPC8360EMDS_33_ATM_defconfig4
-rw-r--r--configs/MPC8360EMDS_33_HOST_33_defconfig4
-rw-r--r--configs/MPC8360EMDS_33_HOST_66_defconfig4
-rw-r--r--configs/MPC8360EMDS_33_SLAVE_defconfig4
-rw-r--r--configs/MPC8360EMDS_33_defconfig4
-rw-r--r--configs/MPC8360EMDS_66_ATM_defconfig4
-rw-r--r--configs/MPC8360EMDS_66_HOST_33_defconfig4
-rw-r--r--configs/MPC8360EMDS_66_HOST_66_defconfig4
-rw-r--r--configs/MPC8360EMDS_66_SLAVE_defconfig4
-rw-r--r--configs/MPC8360EMDS_66_defconfig4
-rw-r--r--configs/MPC8360ERDK_33_defconfig4
-rw-r--r--configs/MPC8360ERDK_defconfig3
-rw-r--r--configs/MPC837XEMDS_HOST_defconfig4
-rw-r--r--configs/MPC837XEMDS_defconfig3
-rw-r--r--configs/MPC837XERDB_defconfig3
-rw-r--r--configs/MPC8536DS_36BIT_defconfig4
-rw-r--r--configs/MPC8536DS_SDCARD_defconfig4
-rw-r--r--configs/MPC8536DS_SPIFLASH_defconfig4
-rw-r--r--configs/MPC8536DS_defconfig3
-rw-r--r--configs/MPC8540ADS_defconfig3
-rw-r--r--configs/MPC8541CDS_defconfig3
-rw-r--r--configs/MPC8541CDS_legacy_defconfig4
-rw-r--r--configs/MPC8544DS_defconfig3
-rw-r--r--configs/MPC8548CDS_36BIT_defconfig4
-rw-r--r--configs/MPC8548CDS_defconfig3
-rw-r--r--configs/MPC8548CDS_legacy_defconfig4
-rw-r--r--configs/MPC8555CDS_defconfig3
-rw-r--r--configs/MPC8555CDS_legacy_defconfig4
-rw-r--r--configs/MPC8560ADS_defconfig3
-rw-r--r--configs/MPC8568MDS_defconfig3
-rw-r--r--configs/MPC8569MDS_ATM_defconfig4
-rw-r--r--configs/MPC8569MDS_defconfig3
-rw-r--r--configs/MPC8572DS_36BIT_defconfig4
-rw-r--r--configs/MPC8572DS_defconfig3
-rw-r--r--configs/MPC8610HPCD_defconfig3
-rw-r--r--configs/MPC8641HPCN_36BIT_defconfig4
-rw-r--r--configs/MPC8641HPCN_defconfig3
-rw-r--r--configs/MUSENKI_defconfig3
-rw-r--r--configs/MVBC_P_defconfig4
-rw-r--r--configs/MVBLM7_defconfig3
-rw-r--r--configs/MVBLUE_defconfig3
-rw-r--r--configs/MVSMR_defconfig3
-rw-r--r--configs/MigoR_defconfig2
-rw-r--r--configs/MiniFAP_defconfig4
-rw-r--r--configs/NETVIA_V2_defconfig4
-rw-r--r--configs/NETVIA_defconfig4
-rw-r--r--configs/NSCU_defconfig3
-rw-r--r--configs/O2D300_defconfig3
-rw-r--r--configs/O2DNT2_RAMBOOT_defconfig4
-rw-r--r--configs/O2DNT2_defconfig3
-rw-r--r--configs/O2D_defconfig3
-rw-r--r--configs/O2I_defconfig3
-rw-r--r--configs/O2MNT_O2M110_defconfig4
-rw-r--r--configs/O2MNT_O2M112_defconfig4
-rw-r--r--configs/O2MNT_O2M113_defconfig4
-rw-r--r--configs/O2MNT_defconfig3
-rw-r--r--configs/O3DNT_defconfig3
-rw-r--r--configs/OCRTC_defconfig3
-rw-r--r--configs/P1010RDB-PA_36BIT_NAND_SECBOOT_defconfig4
-rw-r--r--configs/P1010RDB-PA_36BIT_NAND_defconfig6
-rw-r--r--configs/P1010RDB-PA_36BIT_NOR_SECBOOT_defconfig4
-rw-r--r--configs/P1010RDB-PA_36BIT_NOR_defconfig4
-rw-r--r--configs/P1010RDB-PA_36BIT_SDCARD_defconfig5
-rw-r--r--configs/P1010RDB-PA_36BIT_SPIFLASH_SECBOOT_defconfig4
-rw-r--r--configs/P1010RDB-PA_36BIT_SPIFLASH_defconfig5
-rw-r--r--configs/P1010RDB-PA_NAND_SECBOOT_defconfig4
-rw-r--r--configs/P1010RDB-PA_NAND_defconfig6
-rw-r--r--configs/P1010RDB-PA_NOR_SECBOOT_defconfig4
-rw-r--r--configs/P1010RDB-PA_NOR_defconfig4
-rw-r--r--configs/P1010RDB-PA_SDCARD_defconfig5
-rw-r--r--configs/P1010RDB-PA_SPIFLASH_SECBOOT_defconfig4
-rw-r--r--configs/P1010RDB-PA_SPIFLASH_defconfig5
-rw-r--r--configs/P1010RDB-PB_36BIT_NAND_SECBOOT_defconfig4
-rw-r--r--configs/P1010RDB-PB_36BIT_NAND_defconfig6
-rw-r--r--configs/P1010RDB-PB_36BIT_NOR_SECBOOT_defconfig4
-rw-r--r--configs/P1010RDB-PB_36BIT_NOR_defconfig4
-rw-r--r--configs/P1010RDB-PB_36BIT_SDCARD_defconfig5
-rw-r--r--configs/P1010RDB-PB_36BIT_SPIFLASH_SECBOOT_defconfig4
-rw-r--r--configs/P1010RDB-PB_36BIT_SPIFLASH_defconfig5
-rw-r--r--configs/P1010RDB-PB_NAND_SECBOOT_defconfig4
-rw-r--r--configs/P1010RDB-PB_NAND_defconfig6
-rw-r--r--configs/P1010RDB-PB_NOR_SECBOOT_defconfig4
-rw-r--r--configs/P1010RDB-PB_NOR_defconfig4
-rw-r--r--configs/P1010RDB-PB_SDCARD_defconfig5
-rw-r--r--configs/P1010RDB-PB_SPIFLASH_SECBOOT_defconfig4
-rw-r--r--configs/P1010RDB-PB_SPIFLASH_defconfig5
-rw-r--r--configs/P1011RDB_36BIT_SDCARD_defconfig5
-rw-r--r--configs/P1011RDB_36BIT_SPIFLASH_defconfig5
-rw-r--r--configs/P1011RDB_36BIT_defconfig4
-rw-r--r--configs/P1011RDB_NAND_defconfig6
-rw-r--r--configs/P1011RDB_SDCARD_defconfig5
-rw-r--r--configs/P1011RDB_SPIFLASH_defconfig5
-rw-r--r--configs/P1011RDB_defconfig4
-rw-r--r--configs/P1020MBG-PC_36BIT_SDCARD_defconfig5
-rw-r--r--configs/P1020MBG-PC_36BIT_defconfig4
-rw-r--r--configs/P1020MBG-PC_SDCARD_defconfig5
-rw-r--r--configs/P1020MBG-PC_defconfig4
-rw-r--r--configs/P1020RDB-PC_36BIT_NAND_defconfig6
-rw-r--r--configs/P1020RDB-PC_36BIT_SDCARD_defconfig5
-rw-r--r--configs/P1020RDB-PC_36BIT_SPIFLASH_defconfig5
-rw-r--r--configs/P1020RDB-PC_36BIT_defconfig4
-rw-r--r--configs/P1020RDB-PC_NAND_defconfig6
-rw-r--r--configs/P1020RDB-PC_SDCARD_defconfig5
-rw-r--r--configs/P1020RDB-PC_SPIFLASH_defconfig5
-rw-r--r--configs/P1020RDB-PC_defconfig4
-rw-r--r--configs/P1020RDB-PD_NAND_defconfig6
-rw-r--r--configs/P1020RDB-PD_SDCARD_defconfig5
-rw-r--r--configs/P1020RDB-PD_SPIFLASH_defconfig5
-rw-r--r--configs/P1020RDB-PD_defconfig4
-rw-r--r--configs/P1020RDB_36BIT_SDCARD_defconfig5
-rw-r--r--configs/P1020RDB_36BIT_SPIFLASH_defconfig5
-rw-r--r--configs/P1020RDB_36BIT_defconfig4
-rw-r--r--configs/P1020RDB_NAND_defconfig6
-rw-r--r--configs/P1020RDB_SDCARD_defconfig5
-rw-r--r--configs/P1020RDB_SPIFLASH_defconfig5
-rw-r--r--configs/P1020RDB_defconfig4
-rw-r--r--configs/P1020UTM-PC_36BIT_SDCARD_defconfig5
-rw-r--r--configs/P1020UTM-PC_36BIT_defconfig4
-rw-r--r--configs/P1020UTM-PC_SDCARD_defconfig5
-rw-r--r--configs/P1020UTM-PC_defconfig4
-rw-r--r--configs/P1021RDB-PC_36BIT_NAND_defconfig6
-rw-r--r--configs/P1021RDB-PC_36BIT_SDCARD_defconfig5
-rw-r--r--configs/P1021RDB-PC_36BIT_SPIFLASH_defconfig5
-rw-r--r--configs/P1021RDB-PC_36BIT_defconfig4
-rw-r--r--configs/P1021RDB-PC_NAND_defconfig6
-rw-r--r--configs/P1021RDB-PC_SDCARD_defconfig5
-rw-r--r--configs/P1021RDB-PC_SPIFLASH_defconfig5
-rw-r--r--configs/P1021RDB-PC_defconfig4
-rw-r--r--configs/P1022DS_36BIT_NAND_defconfig6
-rw-r--r--configs/P1022DS_36BIT_SDCARD_defconfig5
-rw-r--r--configs/P1022DS_36BIT_SPIFLASH_defconfig5
-rw-r--r--configs/P1022DS_36BIT_defconfig4
-rw-r--r--configs/P1022DS_NAND_defconfig6
-rw-r--r--configs/P1022DS_SDCARD_defconfig5
-rw-r--r--configs/P1022DS_SPIFLASH_defconfig5
-rw-r--r--configs/P1022DS_defconfig3
-rw-r--r--configs/P1023RDB_defconfig3
-rw-r--r--configs/P1024RDB_36BIT_defconfig4
-rw-r--r--configs/P1024RDB_NAND_defconfig6
-rw-r--r--configs/P1024RDB_SDCARD_defconfig5
-rw-r--r--configs/P1024RDB_SPIFLASH_defconfig5
-rw-r--r--configs/P1024RDB_defconfig4
-rw-r--r--configs/P1025RDB_36BIT_defconfig4
-rw-r--r--configs/P1025RDB_NAND_defconfig6
-rw-r--r--configs/P1025RDB_SDCARD_defconfig5
-rw-r--r--configs/P1025RDB_SPIFLASH_defconfig5
-rw-r--r--configs/P1025RDB_defconfig4
-rw-r--r--configs/P2010RDB_36BIT_SDCARD_defconfig5
-rw-r--r--configs/P2010RDB_36BIT_SPIFLASH_defconfig5
-rw-r--r--configs/P2010RDB_36BIT_defconfig4
-rw-r--r--configs/P2010RDB_NAND_defconfig6
-rw-r--r--configs/P2010RDB_SDCARD_defconfig5
-rw-r--r--configs/P2010RDB_SPIFLASH_defconfig5
-rw-r--r--configs/P2010RDB_defconfig4
-rw-r--r--configs/P2020COME_SDCARD_defconfig4
-rw-r--r--configs/P2020COME_SPIFLASH_defconfig4
-rw-r--r--configs/P2020DS_36BIT_defconfig4
-rw-r--r--configs/P2020DS_DDR2_defconfig4
-rw-r--r--configs/P2020DS_SDCARD_defconfig4
-rw-r--r--configs/P2020DS_SPIFLASH_defconfig4
-rw-r--r--configs/P2020DS_defconfig3
-rw-r--r--configs/P2020RDB-PC_36BIT_NAND_defconfig6
-rw-r--r--configs/P2020RDB-PC_36BIT_SDCARD_defconfig5
-rw-r--r--configs/P2020RDB-PC_36BIT_SPIFLASH_defconfig5
-rw-r--r--configs/P2020RDB-PC_36BIT_defconfig4
-rw-r--r--configs/P2020RDB-PC_NAND_defconfig6
-rw-r--r--configs/P2020RDB-PC_SDCARD_defconfig5
-rw-r--r--configs/P2020RDB-PC_SPIFLASH_defconfig5
-rw-r--r--configs/P2020RDB-PC_defconfig4
-rw-r--r--configs/P2020RDB_36BIT_SDCARD_defconfig5
-rw-r--r--configs/P2020RDB_36BIT_SPIFLASH_defconfig5
-rw-r--r--configs/P2020RDB_36BIT_defconfig4
-rw-r--r--configs/P2020RDB_NAND_defconfig6
-rw-r--r--configs/P2020RDB_SDCARD_defconfig5
-rw-r--r--configs/P2020RDB_SPIFLASH_defconfig5
-rw-r--r--configs/P2020RDB_defconfig4
-rw-r--r--configs/P2041RDB_NAND_defconfig4
-rw-r--r--configs/P2041RDB_SDCARD_defconfig4
-rw-r--r--configs/P2041RDB_SECURE_BOOT_defconfig4
-rw-r--r--configs/P2041RDB_SPIFLASH_defconfig4
-rw-r--r--configs/P2041RDB_SRIO_PCIE_BOOT_defconfig4
-rw-r--r--configs/P2041RDB_defconfig3
-rw-r--r--configs/P3041DS_NAND_defconfig4
-rw-r--r--configs/P3041DS_SDCARD_defconfig4
-rw-r--r--configs/P3041DS_SECURE_BOOT_defconfig4
-rw-r--r--configs/P3041DS_SPIFLASH_defconfig4
-rw-r--r--configs/P3041DS_SRIO_PCIE_BOOT_defconfig4
-rw-r--r--configs/P3041DS_defconfig3
-rw-r--r--configs/P3G4_defconfig3
-rw-r--r--configs/P4080DS_SDCARD_defconfig4
-rw-r--r--configs/P4080DS_SECURE_BOOT_defconfig4
-rw-r--r--configs/P4080DS_SPIFLASH_defconfig4
-rw-r--r--configs/P4080DS_SRIO_PCIE_BOOT_defconfig4
-rw-r--r--configs/P4080DS_defconfig3
-rw-r--r--configs/P5020DS_NAND_defconfig4
-rw-r--r--configs/P5020DS_SDCARD_defconfig4
-rw-r--r--configs/P5020DS_SECURE_BOOT_defconfig4
-rw-r--r--configs/P5020DS_SPIFLASH_defconfig4
-rw-r--r--configs/P5020DS_SRIO_PCIE_BOOT_defconfig4
-rw-r--r--configs/P5020DS_defconfig3
-rw-r--r--configs/P5040DS_NAND_defconfig4
-rw-r--r--configs/P5040DS_SDCARD_defconfig4
-rw-r--r--configs/P5040DS_SPIFLASH_defconfig4
-rw-r--r--configs/P5040DS_defconfig3
-rw-r--r--configs/PATI_defconfig3
-rw-r--r--configs/PCI405_defconfig3
-rw-r--r--configs/PCI5441_defconfig2
-rw-r--r--configs/PIP405_defconfig3
-rw-r--r--configs/PK1C20_defconfig2
-rw-r--r--configs/PLU405_defconfig3
-rw-r--r--configs/PM520_DDR_defconfig4
-rw-r--r--configs/PM520_ROMBOOT_DDR_defconfig4
-rw-r--r--configs/PM520_ROMBOOT_defconfig4
-rw-r--r--configs/PM520_defconfig3
-rw-r--r--configs/PM825_BIGFLASH_defconfig4
-rw-r--r--configs/PM825_ROMBOOT_BIGFLASH_defconfig4
-rw-r--r--configs/PM825_ROMBOOT_defconfig4
-rw-r--r--configs/PM825_defconfig4
-rw-r--r--configs/PM826_BIGFLASH_defconfig4
-rw-r--r--configs/PM826_ROMBOOT_BIGFLASH_defconfig4
-rw-r--r--configs/PM826_ROMBOOT_defconfig4
-rw-r--r--configs/PM826_defconfig4
-rw-r--r--configs/PM828_PCI_defconfig4
-rw-r--r--configs/PM828_ROMBOOT_PCI_defconfig4
-rw-r--r--configs/PM828_ROMBOOT_defconfig4
-rw-r--r--configs/PM828_defconfig3
-rw-r--r--configs/PMC405DE_defconfig3
-rw-r--r--configs/PMC405_defconfig3
-rw-r--r--configs/PMC440_defconfig3
-rw-r--r--configs/PPChameleonEVB_BA_25_defconfig4
-rw-r--r--configs/PPChameleonEVB_BA_33_defconfig4
-rw-r--r--configs/PPChameleonEVB_HI_25_defconfig4
-rw-r--r--configs/PPChameleonEVB_HI_33_defconfig4
-rw-r--r--configs/PPChameleonEVB_ME_25_defconfig4
-rw-r--r--configs/PPChameleonEVB_ME_33_defconfig4
-rw-r--r--configs/PPChameleonEVB_defconfig3
-rw-r--r--configs/R360MPI_defconfig3
-rw-r--r--configs/RRvision_LCD_defconfig4
-rw-r--r--configs/RRvision_defconfig3
-rw-r--r--configs/SM850_defconfig3
-rw-r--r--configs/SPD823TS_defconfig3
-rw-r--r--configs/SXNI855T_defconfig3
-rw-r--r--configs/Sandpoint8240_defconfig3
-rw-r--r--configs/Sandpoint8245_defconfig3
-rw-r--r--configs/T1040QDS_D4_defconfig4
-rw-r--r--configs/T1040QDS_SECURE_BOOT_defconfig4
-rw-r--r--configs/T1040QDS_defconfig4
-rw-r--r--configs/T1040RDB_NAND_defconfig5
-rw-r--r--configs/T1040RDB_SDCARD_defconfig5
-rw-r--r--configs/T1040RDB_SECURE_BOOT_defconfig4
-rw-r--r--configs/T1040RDB_SPIFLASH_defconfig5
-rw-r--r--configs/T1040RDB_defconfig4
-rw-r--r--configs/T1042RDB_PI_NAND_defconfig5
-rw-r--r--configs/T1042RDB_PI_SDCARD_defconfig5
-rw-r--r--configs/T1042RDB_PI_SPIFLASH_defconfig5
-rw-r--r--configs/T1042RDB_PI_defconfig4
-rw-r--r--configs/T2080QDS_NAND_defconfig5
-rw-r--r--configs/T2080QDS_SDCARD_defconfig5
-rw-r--r--configs/T2080QDS_SECURE_BOOT_defconfig4
-rw-r--r--configs/T2080QDS_SPIFLASH_defconfig5
-rw-r--r--configs/T2080QDS_SRIO_PCIE_BOOT_defconfig4
-rw-r--r--configs/T2080QDS_defconfig4
-rw-r--r--configs/T2080RDB_NAND_defconfig5
-rw-r--r--configs/T2080RDB_SDCARD_defconfig5
-rw-r--r--configs/T2080RDB_SECURE_BOOT_defconfig4
-rw-r--r--configs/T2080RDB_SPIFLASH_defconfig5
-rw-r--r--configs/T2080RDB_SRIO_PCIE_BOOT_defconfig4
-rw-r--r--configs/T2080RDB_defconfig4
-rw-r--r--configs/T2081QDS_NAND_defconfig5
-rw-r--r--configs/T2081QDS_SDCARD_defconfig5
-rw-r--r--configs/T2081QDS_SPIFLASH_defconfig5
-rw-r--r--configs/T2081QDS_SRIO_PCIE_BOOT_defconfig4
-rw-r--r--configs/T2081QDS_defconfig4
-rw-r--r--configs/T4160QDS_NAND_defconfig5
-rw-r--r--configs/T4160QDS_SDCARD_defconfig5
-rw-r--r--configs/T4160QDS_SECURE_BOOT_defconfig4
-rw-r--r--configs/T4160QDS_SPIFLASH_defconfig4
-rw-r--r--configs/T4160QDS_defconfig4
-rw-r--r--configs/T4160RDB_defconfig4
-rw-r--r--configs/T4240EMU_defconfig4
-rw-r--r--configs/T4240QDS_NAND_defconfig5
-rw-r--r--configs/T4240QDS_SDCARD_defconfig5
-rw-r--r--configs/T4240QDS_SECURE_BOOT_defconfig4
-rw-r--r--configs/T4240QDS_SPIFLASH_defconfig4
-rw-r--r--configs/T4240QDS_SRIO_PCIE_BOOT_defconfig4
-rw-r--r--configs/T4240QDS_defconfig4
-rw-r--r--configs/T4240RDB_defconfig4
-rw-r--r--configs/TASREG_defconfig2
-rw-r--r--configs/TB5200_B_defconfig4
-rw-r--r--configs/TB5200_defconfig3
-rw-r--r--configs/TK885D_defconfig3
-rw-r--r--configs/TOP5200_defconfig4
-rw-r--r--configs/TOP860_defconfig3
-rw-r--r--configs/TQM5200S_HIGHBOOT_defconfig4
-rw-r--r--configs/TQM5200S_defconfig4
-rw-r--r--configs/TQM5200_B_HIGHBOOT_defconfig4
-rw-r--r--configs/TQM5200_B_defconfig4
-rw-r--r--configs/TQM5200_STK100_defconfig4
-rw-r--r--configs/TQM5200_defconfig3
-rw-r--r--configs/TQM823L_LCD_defconfig4
-rw-r--r--configs/TQM823L_defconfig3
-rw-r--r--configs/TQM823M_defconfig3
-rw-r--r--configs/TQM8255_AA_defconfig4
-rw-r--r--configs/TQM8260_AA_defconfig4
-rw-r--r--configs/TQM8260_AB_defconfig4
-rw-r--r--configs/TQM8260_AC_defconfig4
-rw-r--r--configs/TQM8260_AD_defconfig4
-rw-r--r--configs/TQM8260_AE_defconfig4
-rw-r--r--configs/TQM8260_AF_defconfig4
-rw-r--r--configs/TQM8260_AG_defconfig4
-rw-r--r--configs/TQM8260_AH_defconfig4
-rw-r--r--configs/TQM8260_AI_defconfig4
-rw-r--r--configs/TQM8265_AA_defconfig4
-rw-r--r--configs/TQM8272_defconfig3
-rw-r--r--configs/TQM834x_defconfig3
-rw-r--r--configs/TQM850L_defconfig3
-rw-r--r--configs/TQM850M_defconfig3
-rw-r--r--configs/TQM855L_defconfig3
-rw-r--r--configs/TQM855M_defconfig3
-rw-r--r--configs/TQM860L_defconfig3
-rw-r--r--configs/TQM860M_defconfig3
-rw-r--r--configs/TQM862L_defconfig3
-rw-r--r--configs/TQM862M_defconfig3
-rw-r--r--configs/TQM866M_defconfig3
-rw-r--r--configs/TQM885D_defconfig3
-rw-r--r--configs/TTTech_defconfig4
-rw-r--r--configs/TWR-P1025_defconfig4
-rw-r--r--configs/Total5200_Rev2_defconfig4
-rw-r--r--configs/Total5200_Rev2_lowboot_defconfig4
-rw-r--r--configs/Total5200_defconfig4
-rw-r--r--configs/Total5200_lowboot_defconfig4
-rw-r--r--configs/VCMA9_defconfig2
-rw-r--r--configs/VOH405_defconfig3
-rw-r--r--configs/VOM405_defconfig3
-rw-r--r--configs/VoVPN-GW_66MHz_defconfig4
-rw-r--r--configs/W7OLMC_defconfig3
-rw-r--r--configs/W7OLMG_defconfig3
-rw-r--r--configs/WUH405_defconfig3
-rw-r--r--configs/ZUMA_defconfig3
-rw-r--r--configs/a320evb_defconfig2
-rw-r--r--configs/a3m071_defconfig4
-rw-r--r--configs/a4m072_defconfig3
-rw-r--r--configs/a4m2k_defconfig5
-rw-r--r--configs/ac14xx_defconfig3
-rw-r--r--configs/acadia_defconfig3
-rw-r--r--configs/adp-ag101_defconfig2
-rw-r--r--configs/adp-ag101p_defconfig2
-rw-r--r--configs/adp-ag102_defconfig2
-rw-r--r--configs/aev_defconfig3
-rw-r--r--configs/afeb9260_defconfig2
-rw-r--r--configs/alpr_defconfig3
-rw-r--r--configs/alt_defconfig2
-rw-r--r--configs/am335x_boneblack_defconfig4
-rw-r--r--configs/am335x_boneblack_vboot_defconfig4
-rw-r--r--configs/am335x_evm_defconfig4
-rw-r--r--configs/am335x_evm_nor_defconfig4
-rw-r--r--configs/am335x_evm_norboot_defconfig3
-rw-r--r--configs/am335x_evm_spiboot_defconfig4
-rw-r--r--configs/am335x_evm_uart1_defconfig4
-rw-r--r--configs/am335x_evm_uart2_defconfig4
-rw-r--r--configs/am335x_evm_uart3_defconfig4
-rw-r--r--configs/am335x_evm_uart4_defconfig4
-rw-r--r--configs/am335x_evm_uart5_defconfig4
-rw-r--r--configs/am335x_evm_usbspl_defconfig4
-rw-r--r--configs/am335x_igep0033_defconfig3
-rw-r--r--configs/am3517_crane_defconfig3
-rw-r--r--configs/am3517_evm_defconfig3
-rw-r--r--configs/am43xx_evm_defconfig4
-rw-r--r--configs/am43xx_evm_qspiboot_defconfig3
-rw-r--r--configs/ap325rxa_defconfig2
-rw-r--r--configs/ap_sh4a_4a_defconfig2
-rw-r--r--configs/apf27_defconfig3
-rw-r--r--configs/apx4devkit_defconfig3
-rw-r--r--configs/arcangel4-be_defconfig2
-rw-r--r--configs/arcangel4_defconfig2
-rw-r--r--configs/arches_defconfig4
-rw-r--r--configs/aria_defconfig3
-rw-r--r--configs/armadillo-800eva_defconfig2
-rw-r--r--configs/arndale_defconfig3
-rw-r--r--configs/aspenite_defconfig2
-rw-r--r--configs/astro_mcf5373l_defconfig2
-rw-r--r--configs/at91rm9200ek_defconfig2
-rw-r--r--configs/at91rm9200ek_ram_defconfig3
-rw-r--r--configs/at91sam9260ek_dataflash_cs0_defconfig3
-rw-r--r--configs/at91sam9260ek_dataflash_cs1_defconfig3
-rw-r--r--configs/at91sam9260ek_nandflash_defconfig3
-rw-r--r--configs/at91sam9261ek_dataflash_cs0_defconfig3
-rw-r--r--configs/at91sam9261ek_dataflash_cs3_defconfig3
-rw-r--r--configs/at91sam9261ek_nandflash_defconfig3
-rw-r--r--configs/at91sam9263ek_dataflash_cs0_defconfig3
-rw-r--r--configs/at91sam9263ek_dataflash_defconfig3
-rw-r--r--configs/at91sam9263ek_nandflash_defconfig3
-rw-r--r--configs/at91sam9263ek_norflash_boot_defconfig3
-rw-r--r--configs/at91sam9263ek_norflash_defconfig3
-rw-r--r--configs/at91sam9g10ek_dataflash_cs0_defconfig3
-rw-r--r--configs/at91sam9g10ek_dataflash_cs3_defconfig3
-rw-r--r--configs/at91sam9g10ek_nandflash_defconfig3
-rw-r--r--configs/at91sam9g20ek_2mmc_nandflash_defconfig3
-rw-r--r--configs/at91sam9g20ek_dataflash_cs0_defconfig3
-rw-r--r--configs/at91sam9g20ek_dataflash_cs1_defconfig3
-rw-r--r--configs/at91sam9g20ek_mmc_defconfig3
-rw-r--r--configs/at91sam9g20ek_nandflash_defconfig3
-rw-r--r--configs/at91sam9m10g45ek_mmc_defconfig3
-rw-r--r--configs/at91sam9m10g45ek_nandflash_defconfig3
-rw-r--r--configs/at91sam9n12ek_mmc_defconfig3
-rw-r--r--configs/at91sam9n12ek_nandflash_defconfig3
-rw-r--r--configs/at91sam9n12ek_spiflash_defconfig3
-rw-r--r--configs/at91sam9rlek_dataflash_defconfig3
-rw-r--r--configs/at91sam9rlek_nandflash_defconfig3
-rw-r--r--configs/at91sam9x5ek_dataflash_defconfig3
-rw-r--r--configs/at91sam9x5ek_mmc_defconfig3
-rw-r--r--configs/at91sam9x5ek_nandflash_defconfig3
-rw-r--r--configs/at91sam9x5ek_spiflash_defconfig3
-rw-r--r--configs/at91sam9xeek_dataflash_cs0_defconfig3
-rw-r--r--configs/at91sam9xeek_dataflash_cs1_defconfig3
-rw-r--r--configs/at91sam9xeek_nandflash_defconfig3
-rw-r--r--configs/atc_defconfig3
-rw-r--r--configs/atngw100_defconfig2
-rw-r--r--configs/atngw100mkii_defconfig2
-rw-r--r--configs/atstk1002_defconfig2
-rw-r--r--configs/atstk1003_defconfig2
-rw-r--r--configs/atstk1004_defconfig2
-rw-r--r--configs/atstk1006_defconfig2
-rw-r--r--configs/axm_defconfig3
-rw-r--r--configs/axs101_defconfig2
-rw-r--r--configs/balloon3_defconfig2
-rw-r--r--configs/bamboo_defconfig3
-rw-r--r--configs/bcm28155_ap_defconfig2
-rw-r--r--configs/bct-brettl2_defconfig2
-rw-r--r--configs/beaver_defconfig3
-rw-r--r--configs/bf506f-ezkit_defconfig2
-rw-r--r--configs/bf518f-ezbrd_defconfig2
-rw-r--r--configs/bf525-ucr2_defconfig2
-rw-r--r--configs/bf526-ezbrd_defconfig2
-rw-r--r--configs/bf527-ad7160-eval_defconfig2
-rw-r--r--configs/bf527-ezkit-v2_defconfig3
-rw-r--r--configs/bf527-ezkit_defconfig2
-rw-r--r--configs/bf527-sdp_defconfig2
-rw-r--r--configs/bf533-ezkit_defconfig2
-rw-r--r--configs/bf533-stamp_defconfig2
-rw-r--r--configs/bf537-minotaur_defconfig2
-rw-r--r--configs/bf537-pnav_defconfig2
-rw-r--r--configs/bf537-srv1_defconfig2
-rw-r--r--configs/bf537-stamp_defconfig2
-rw-r--r--configs/bf538f-ezkit_defconfig2
-rw-r--r--configs/bf548-ezkit_defconfig2
-rw-r--r--configs/bf561-acvilon_defconfig2
-rw-r--r--configs/bf561-ezkit_defconfig2
-rw-r--r--configs/bf609-ezkit_defconfig2
-rw-r--r--configs/bg0900_defconfig3
-rw-r--r--configs/blackstamp_defconfig2
-rw-r--r--configs/blackvme_defconfig2
-rw-r--r--configs/bluestone_defconfig3
-rw-r--r--configs/br4_defconfig2
-rw-r--r--configs/bubinga_defconfig3
-rw-r--r--configs/caddy2_defconfig4
-rw-r--r--configs/calimain_defconfig2
-rw-r--r--configs/cam5200_defconfig4
-rw-r--r--configs/cam5200_niosflash_defconfig4
-rw-r--r--configs/cam_enc_4xx_defconfig3
-rw-r--r--configs/canmb_defconfig3
-rw-r--r--configs/canyonlands_defconfig4
-rw-r--r--configs/cardhu_defconfig3
-rw-r--r--configs/cgtqmx6qeval_defconfig3
-rw-r--r--configs/charon_defconfig3
-rw-r--r--configs/cm-bf527_defconfig2
-rw-r--r--configs/cm-bf533_defconfig2
-rw-r--r--configs/cm-bf537e_defconfig2
-rw-r--r--configs/cm-bf537u_defconfig2
-rw-r--r--configs/cm-bf548_defconfig2
-rw-r--r--configs/cm-bf561_defconfig2
-rw-r--r--configs/cm4008_defconfig2
-rw-r--r--configs/cm41xx_defconfig2
-rw-r--r--configs/cm5200_defconfig3
-rw-r--r--configs/cm_t335_defconfig3
-rw-r--r--configs/cm_t35_defconfig3
-rw-r--r--configs/cm_t54_defconfig3
-rw-r--r--configs/cmi_mpc5xx_defconfig3
-rw-r--r--configs/cobra5272_defconfig2
-rw-r--r--configs/cogent_mpc8260_defconfig3
-rw-r--r--configs/cogent_mpc8xx_defconfig3
-rw-r--r--configs/colibri_pxa270_defconfig2
-rw-r--r--configs/colibri_t20_iris_defconfig3
-rw-r--r--configs/controlcenterd_36BIT_SDCARD_DEVELOP_defconfig4
-rw-r--r--configs/controlcenterd_36BIT_SDCARD_defconfig4
-rw-r--r--configs/controlcenterd_TRAILBLAZER_DEVELOP_defconfig4
-rw-r--r--configs/controlcenterd_TRAILBLAZER_defconfig4
-rw-r--r--configs/coreboot-x86_defconfig3
-rw-r--r--configs/corvus_defconfig3
-rw-r--r--configs/cpci5200_defconfig3
-rw-r--r--configs/cpu9260_128M_defconfig3
-rw-r--r--configs/cpu9260_defconfig3
-rw-r--r--configs/cpu9260_nand_128M_defconfig3
-rw-r--r--configs/cpu9260_nand_defconfig3
-rw-r--r--configs/cpu9G20_128M_defconfig3
-rw-r--r--configs/cpu9G20_defconfig3
-rw-r--r--configs/cpu9G20_nand_128M_defconfig3
-rw-r--r--configs/cpu9G20_nand_defconfig3
-rw-r--r--configs/cpuat91_defconfig2
-rw-r--r--configs/cpuat91_ram_defconfig3
-rw-r--r--configs/csb272_defconfig3
-rw-r--r--configs/csb472_defconfig3
-rw-r--r--configs/d2net_v2_defconfig3
-rw-r--r--configs/da830evm_defconfig2
-rw-r--r--configs/da850_am18xxevm_defconfig4
-rw-r--r--configs/da850evm_defconfig4
-rw-r--r--configs/da850evm_direct_nor_defconfig3
-rw-r--r--configs/dalmore_defconfig3
-rw-r--r--configs/davinci_dm355evm_defconfig2
-rw-r--r--configs/davinci_dm355leopard_defconfig2
-rw-r--r--configs/davinci_dm365evm_defconfig2
-rw-r--r--configs/davinci_dm6467Tevm_defconfig3
-rw-r--r--configs/davinci_dm6467evm_defconfig3
-rw-r--r--configs/davinci_dvevm_defconfig2
-rw-r--r--configs/davinci_schmoogie_defconfig2
-rw-r--r--configs/davinci_sffsdr_defconfig2
-rw-r--r--configs/davinci_sonata_defconfig2
-rw-r--r--configs/dbau1000_defconfig3
-rw-r--r--configs/dbau1100_defconfig3
-rw-r--r--configs/dbau1500_defconfig3
-rw-r--r--configs/dbau1550_defconfig3
-rw-r--r--configs/dbau1550_el_defconfig3
-rw-r--r--configs/devconcenter_defconfig4
-rw-r--r--configs/devkit3250_defconfig2
-rw-r--r--configs/devkit8000_defconfig3
-rw-r--r--configs/dig297_defconfig2
-rw-r--r--configs/digsy_mtc_RAMBOOT_defconfig4
-rw-r--r--configs/digsy_mtc_defconfig3
-rw-r--r--configs/digsy_mtc_rev5_RAMBOOT_defconfig4
-rw-r--r--configs/digsy_mtc_rev5_defconfig4
-rw-r--r--configs/dkb_defconfig2
-rw-r--r--configs/dlvision-10g_defconfig3
-rw-r--r--configs/dlvision_defconfig3
-rw-r--r--configs/dnp5370_defconfig2
-rw-r--r--configs/dns325_defconfig2
-rw-r--r--configs/dockstar_defconfig2
-rw-r--r--configs/dra7xx_evm_defconfig4
-rw-r--r--configs/dra7xx_evm_qspiboot_defconfig4
-rw-r--r--configs/dra7xx_evm_uart3_defconfig4
-rw-r--r--configs/draco_defconfig3
-rw-r--r--configs/dreamplug_defconfig2
-rw-r--r--configs/duovero_defconfig3
-rw-r--r--configs/dxr2_defconfig3
-rw-r--r--configs/eXalion_defconfig3
-rw-r--r--configs/ea20_defconfig2
-rw-r--r--configs/eb_cpu5282_defconfig3
-rw-r--r--configs/eb_cpu5282_internal_defconfig3
-rw-r--r--configs/eb_cpux9k2_defconfig2
-rw-r--r--configs/eb_cpux9k2_ram_defconfig3
-rw-r--r--configs/ebony_defconfig3
-rw-r--r--configs/eco5pk_defconfig3
-rw-r--r--configs/ecovec_defconfig2
-rw-r--r--configs/edb9315a_defconfig3
-rw-r--r--configs/edminiv2_defconfig2
-rw-r--r--configs/enbw_cmc_defconfig2
-rw-r--r--configs/ep8260_defconfig3
-rw-r--r--configs/ep82xxm_defconfig3
-rw-r--r--configs/espt_defconfig2
-rw-r--r--configs/ethernut5_defconfig3
-rw-r--r--configs/favr-32-ezkit_defconfig2
-rw-r--r--configs/flea3_defconfig2
-rw-r--r--configs/fo300_defconfig4
-rw-r--r--configs/fx12mm_defconfig4
-rw-r--r--configs/fx12mm_flash_defconfig4
-rw-r--r--configs/galaxy5200_LOWBOOT_defconfig4
-rw-r--r--configs/galaxy5200_defconfig4
-rw-r--r--configs/gdppc440etx_defconfig3
-rw-r--r--configs/glacier_defconfig4
-rw-r--r--configs/goflexhome_defconfig2
-rw-r--r--configs/gplugd_defconfig2
-rw-r--r--configs/gr_cpci_ax2000_defconfig2
-rw-r--r--configs/gr_ep2s60_defconfig2
-rw-r--r--configs/gr_xc3s_1500_defconfig2
-rw-r--r--configs/grasshopper_defconfig2
-rw-r--r--configs/grsim_defconfig2
-rw-r--r--configs/grsim_leon2_defconfig2
-rw-r--r--configs/guruplug_defconfig2
-rw-r--r--configs/gw8260_defconfig3
-rw-r--r--configs/gwventana_defconfig4
-rw-r--r--configs/h2200_defconfig2
-rw-r--r--configs/haleakala_defconfig4
-rw-r--r--configs/hammerhead_defconfig2
-rw-r--r--configs/harmony_defconfig3
-rw-r--r--configs/hawkboard_defconfig3
-rw-r--r--configs/hawkboard_uart_defconfig4
-rw-r--r--configs/hermes_defconfig3
-rw-r--r--configs/highbank_defconfig2
-rw-r--r--configs/hmi1001_defconfig3
-rw-r--r--configs/hummingboard_solo_defconfig3
-rw-r--r--configs/hymod_defconfig3
-rw-r--r--configs/ib62x0_defconfig2
-rw-r--r--configs/ibf-dsp561_defconfig2
-rw-r--r--configs/icecube_5200_DDR_LOWBOOT08_defconfig4
-rw-r--r--configs/icecube_5200_DDR_LOWBOOT_defconfig4
-rw-r--r--configs/icecube_5200_DDR_defconfig4
-rw-r--r--configs/icecube_5200_LOWBOOT08_defconfig4
-rw-r--r--configs/icecube_5200_LOWBOOT_defconfig4
-rw-r--r--configs/icecube_5200_defconfig3
-rw-r--r--configs/icon_defconfig3
-rw-r--r--configs/iconnect_defconfig2
-rw-r--r--configs/ids8313_defconfig4
-rw-r--r--configs/igep0020_defconfig4
-rw-r--r--configs/igep0020_nand_defconfig4
-rw-r--r--configs/igep0030_defconfig4
-rw-r--r--configs/igep0030_nand_defconfig4
-rw-r--r--configs/igep0032_defconfig4
-rw-r--r--configs/ima3-mx53_defconfig3
-rw-r--r--configs/imx27lite_defconfig2
-rw-r--r--configs/imx31_litekit_defconfig2
-rw-r--r--configs/imx31_phycore_defconfig2
-rw-r--r--configs/imx31_phycore_eet_defconfig3
-rw-r--r--configs/inetspace_v2_defconfig3
-rw-r--r--configs/inka4x0_defconfig3
-rw-r--r--configs/integratorap_cm720t_defconfig3
-rw-r--r--configs/integratorap_cm920t_defconfig3
-rw-r--r--configs/integratorap_cm926ejs_defconfig3
-rw-r--r--configs/integratorap_cm946es_defconfig3
-rw-r--r--configs/integratorcp_cm1136_defconfig3
-rw-r--r--configs/integratorcp_cm920t_defconfig3
-rw-r--r--configs/integratorcp_cm926ejs_defconfig3
-rw-r--r--configs/integratorcp_cm946es_defconfig3
-rw-r--r--configs/intip_defconfig4
-rw-r--r--configs/io64_defconfig3
-rw-r--r--configs/io_defconfig3
-rw-r--r--configs/iocon_defconfig3
-rw-r--r--configs/ip04_defconfig2
-rw-r--r--configs/ipam390_defconfig3
-rw-r--r--configs/ipek01_defconfig3
-rw-r--r--configs/jadecpu_defconfig2
-rw-r--r--configs/jetson-tk1_defconfig4
-rw-r--r--configs/jornada_defconfig2
-rw-r--r--configs/jupiter_defconfig3
-rw-r--r--configs/k2e_evm_defconfig2
-rw-r--r--configs/k2hk_evm_defconfig2
-rw-r--r--configs/katmai_defconfig3
-rw-r--r--configs/kilauea_defconfig4
-rw-r--r--configs/km_kirkwood_128m16_defconfig3
-rw-r--r--configs/km_kirkwood_defconfig3
-rw-r--r--configs/km_kirkwood_pci_defconfig3
-rw-r--r--configs/kmcoge4_defconfig4
-rw-r--r--configs/kmcoge5ne_defconfig4
-rw-r--r--configs/kmcoge5un_defconfig3
-rw-r--r--configs/kmeter1_defconfig4
-rw-r--r--configs/kmlion1_defconfig4
-rw-r--r--configs/kmnusa_defconfig3
-rw-r--r--configs/kmopti2_defconfig4
-rw-r--r--configs/kmsugp1_defconfig3
-rw-r--r--configs/kmsupx5_defconfig4
-rw-r--r--configs/kmsuv31_defconfig3
-rw-r--r--configs/kmvect1_defconfig4
-rw-r--r--configs/koelsch_defconfig2
-rw-r--r--configs/korat_defconfig3
-rw-r--r--configs/korat_perm_defconfig4
-rw-r--r--configs/kwb_defconfig4
-rw-r--r--configs/kzm9g_defconfig2
-rw-r--r--configs/lager_defconfig2
-rw-r--r--configs/lcd4_lwmon5_defconfig5
-rw-r--r--configs/lite5200b_LOWBOOT_defconfig4
-rw-r--r--configs/lite5200b_PM_defconfig4
-rw-r--r--configs/lite5200b_defconfig4
-rw-r--r--configs/lp8x4x_defconfig2
-rw-r--r--configs/ls2085a_emu_D4_defconfig3
-rw-r--r--configs/ls2085a_emu_defconfig3
-rw-r--r--configs/ls2085a_simu_defconfig3
-rw-r--r--configs/lschlv2_defconfig3
-rw-r--r--configs/lsxhl_defconfig3
-rw-r--r--configs/luan_defconfig3
-rw-r--r--configs/lwmon5_defconfig3
-rw-r--r--configs/lwmon_defconfig3
-rw-r--r--configs/m28evk_defconfig3
-rw-r--r--configs/m53evk_defconfig4
-rw-r--r--configs/magnesium_defconfig2
-rw-r--r--configs/makalu_defconfig3
-rw-r--r--configs/malta_defconfig3
-rw-r--r--configs/maltael_defconfig3
-rw-r--r--configs/marsboard_defconfig3
-rw-r--r--configs/mcc200_COM12_SDRAM_defconfig4
-rw-r--r--configs/mcc200_COM12_defconfig4
-rw-r--r--configs/mcc200_COM12_highboot_SDRAM_defconfig4
-rw-r--r--configs/mcc200_COM12_highboot_defconfig4
-rw-r--r--configs/mcc200_SDRAM_defconfig4
-rw-r--r--configs/mcc200_defconfig3
-rw-r--r--configs/mcc200_highboot_SDRAM_defconfig4
-rw-r--r--configs/mcc200_highboot_defconfig4
-rw-r--r--configs/mcx_defconfig3
-rw-r--r--configs/mecp5123_defconfig3
-rw-r--r--configs/mecp5200_defconfig3
-rw-r--r--configs/medcom-wide_defconfig3
-rw-r--r--configs/meesc_dataflash_defconfig3
-rw-r--r--configs/meesc_defconfig3
-rw-r--r--configs/mgcoge3ne_defconfig4
-rw-r--r--configs/mgcoge3un_defconfig3
-rw-r--r--configs/mgcoge_defconfig4
-rw-r--r--configs/microblaze-generic_defconfig3
-rw-r--r--configs/mimc200_defconfig2
-rw-r--r--configs/ml507_defconfig4
-rw-r--r--configs/ml507_flash_defconfig4
-rw-r--r--configs/motionpro_defconfig3
-rw-r--r--configs/mpc5121ads_defconfig3
-rw-r--r--configs/mpc5121ads_rev2_defconfig4
-rw-r--r--configs/mpc7448hpc2_defconfig3
-rw-r--r--configs/mpc8308_p1m_defconfig3
-rw-r--r--configs/mpr2_defconfig2
-rw-r--r--configs/ms7720se_defconfig2
-rw-r--r--configs/ms7722se_defconfig2
-rw-r--r--configs/ms7750se_defconfig2
-rw-r--r--configs/mt_ventoux_defconfig3
-rw-r--r--configs/muas3001_defconfig3
-rw-r--r--configs/muas3001_dev_defconfig4
-rw-r--r--configs/mucmc52_defconfig3
-rw-r--r--configs/munices_defconfig3
-rw-r--r--configs/mv88f6281gtw_ge_defconfig2
-rw-r--r--configs/mx23_olinuxino_defconfig3
-rw-r--r--configs/mx23evk_defconfig3
-rw-r--r--configs/mx25pdk_defconfig3
-rw-r--r--configs/mx28evk_auart_console_defconfig4
-rw-r--r--configs/mx28evk_defconfig4
-rw-r--r--configs/mx28evk_nand_defconfig4
-rw-r--r--configs/mx28evk_spi_defconfig4
-rw-r--r--configs/mx31ads_defconfig2
-rw-r--r--configs/mx31pdk_defconfig3
-rw-r--r--configs/mx35pdk_defconfig2
-rw-r--r--configs/mx51_efikamx_defconfig3
-rw-r--r--configs/mx51_efikasb_defconfig3
-rw-r--r--configs/mx51evk_defconfig3
-rw-r--r--configs/mx53ard_defconfig3
-rw-r--r--configs/mx53evk_defconfig3
-rw-r--r--configs/mx53loco_defconfig3
-rw-r--r--configs/mx53smd_defconfig3
-rw-r--r--configs/mx6dlsabreauto_defconfig3
-rw-r--r--configs/mx6dlsabresd_defconfig3
-rw-r--r--configs/mx6qarm2_defconfig3
-rw-r--r--configs/mx6qsabreauto_defconfig3
-rw-r--r--configs/mx6qsabrelite_defconfig3
-rw-r--r--configs/mx6qsabresd_defconfig3
-rw-r--r--configs/mx6slevk_defconfig3
-rw-r--r--configs/neo_defconfig3
-rw-r--r--configs/net2big_v2_defconfig3
-rw-r--r--configs/netspace_lite_v2_defconfig3
-rw-r--r--configs/netspace_max_v2_defconfig3
-rw-r--r--configs/netspace_mini_v2_defconfig3
-rw-r--r--configs/netspace_v2_defconfig3
-rw-r--r--configs/nhk8815_defconfig2
-rw-r--r--configs/nhk8815_onenand_defconfig3
-rw-r--r--configs/nios2-generic_defconfig2
-rw-r--r--configs/nitrogen6dl2g_defconfig3
-rw-r--r--configs/nitrogen6dl_defconfig3
-rw-r--r--configs/nitrogen6q2g_defconfig3
-rw-r--r--configs/nitrogen6q_defconfig3
-rw-r--r--configs/nitrogen6s1g_defconfig3
-rw-r--r--configs/nitrogen6s_defconfig3
-rw-r--r--configs/nokia_rx51_defconfig2
-rw-r--r--configs/ocotea_defconfig3
-rw-r--r--configs/omap3_beagle_defconfig4
-rw-r--r--configs/omap3_evm_defconfig3
-rw-r--r--configs/omap3_evm_quick_mmc_defconfig3
-rw-r--r--configs/omap3_evm_quick_nand_defconfig3
-rw-r--r--configs/omap3_ha_defconfig4
-rw-r--r--configs/omap3_logic_defconfig2
-rw-r--r--configs/omap3_mvblx_defconfig2
-rw-r--r--configs/omap3_overo_defconfig3
-rw-r--r--configs/omap3_pandora_defconfig2
-rw-r--r--configs/omap3_sdp3430_defconfig2
-rw-r--r--configs/omap3_zoom1_defconfig2
-rw-r--r--configs/omap4_panda_defconfig3
-rw-r--r--configs/omap4_sdp4430_defconfig3
-rw-r--r--configs/omap5912osk_defconfig2
-rw-r--r--configs/omap5_uevm_defconfig3
-rw-r--r--configs/openrd_base_defconfig3
-rw-r--r--configs/openrd_client_defconfig3
-rw-r--r--configs/openrd_ultimate_defconfig3
-rw-r--r--configs/openrisc-generic_defconfig2
-rw-r--r--configs/origen_defconfig3
-rw-r--r--configs/otc570_dataflash_defconfig3
-rw-r--r--configs/otc570_defconfig3
-rw-r--r--configs/p3m7448_defconfig4
-rw-r--r--configs/p3m750_defconfig4
-rw-r--r--configs/p3p440_defconfig3
-rw-r--r--configs/palmld_defconfig2
-rw-r--r--configs/palmtc_defconfig2
-rw-r--r--configs/palmtreo680_defconfig3
-rw-r--r--configs/paz00_defconfig3
-rw-r--r--configs/pb1000_defconfig3
-rw-r--r--configs/pcm030_LOWBOOT_defconfig4
-rw-r--r--configs/pcm030_defconfig3
-rw-r--r--configs/pcm051_rev1_defconfig4
-rw-r--r--configs/pcm051_rev3_defconfig4
-rw-r--r--configs/pcs440ep_defconfig3
-rw-r--r--configs/pdm360ng_defconfig3
-rw-r--r--configs/peach-pit_defconfig3
-rw-r--r--configs/pengwyn_defconfig3
-rw-r--r--configs/pepper_defconfig3
-rw-r--r--configs/pf5200_defconfig3
-rw-r--r--configs/plutux_defconfig3
-rw-r--r--configs/pm9261_defconfig3
-rw-r--r--configs/pm9263_defconfig3
-rw-r--r--configs/pm9g45_defconfig3
-rw-r--r--configs/pogo_e02_defconfig2
-rw-r--r--configs/polaris_defconfig3
-rw-r--r--configs/portl2_defconfig3
-rw-r--r--configs/portuxg20_defconfig3
-rw-r--r--configs/ppmc7xx_defconfig3
-rw-r--r--configs/ppmc8260_defconfig3
-rw-r--r--configs/pr1_defconfig2
-rw-r--r--configs/prs200_DDR_defconfig4
-rw-r--r--configs/prs200_defconfig4
-rw-r--r--configs/prs200_highboot_DDR_defconfig4
-rw-r--r--configs/prs200_highboot_defconfig4
-rw-r--r--configs/pxa255_idp_defconfig2
-rw-r--r--configs/pxm2_defconfig3
-rw-r--r--configs/qemu-ppce500_defconfig3
-rw-r--r--configs/qemu_mips64_defconfig3
-rw-r--r--configs/qemu_mips64el_defconfig3
-rw-r--r--configs/qemu_mips_defconfig3
-rw-r--r--configs/qemu_mipsel_defconfig3
-rw-r--r--configs/qong_defconfig2
-rw-r--r--configs/r0p7734_defconfig2
-rw-r--r--configs/r2dplus_defconfig2
-rw-r--r--configs/r7-tv-dongle_defconfig4
-rw-r--r--configs/r7780mp_defconfig2
-rw-r--r--configs/rainier_defconfig4
-rw-r--r--configs/rainier_ramboot_defconfig4
-rw-r--r--configs/rd6281a_defconfig2
-rw-r--r--configs/redwood_defconfig3
-rw-r--r--configs/riotboard_defconfig3
-rw-r--r--configs/rpi_b_defconfig2
-rw-r--r--configs/rsk7203_defconfig2
-rw-r--r--configs/rsk7264_defconfig2
-rw-r--r--configs/rsk7269_defconfig2
-rw-r--r--configs/rut_defconfig3
-rw-r--r--configs/s5p_goni_defconfig2
-rw-r--r--configs/s5pc210_universal_defconfig2
-rw-r--r--configs/sacsng_defconfig3
-rw-r--r--configs/sama5d3_xplained_mmc_defconfig4
-rw-r--r--configs/sama5d3_xplained_nandflash_defconfig4
-rw-r--r--configs/sama5d3xek_mmc_defconfig4
-rw-r--r--configs/sama5d3xek_nandflash_defconfig4
-rw-r--r--configs/sama5d3xek_spiflash_defconfig4
-rw-r--r--configs/sandbox_defconfig0
-rw-r--r--configs/sansa_fuze_plus_defconfig3
-rw-r--r--configs/sbc35_a9g20_eeprom_defconfig3
-rw-r--r--configs/sbc35_a9g20_nandflash_defconfig3
-rw-r--r--configs/sbc405_defconfig3
-rw-r--r--configs/sbc8349_PCI_33_defconfig4
-rw-r--r--configs/sbc8349_PCI_66_defconfig4
-rw-r--r--configs/sbc8349_defconfig3
-rw-r--r--configs/sbc8548_PCI_33_PCIE_defconfig4
-rw-r--r--configs/sbc8548_PCI_33_defconfig4
-rw-r--r--configs/sbc8548_PCI_66_PCIE_defconfig4
-rw-r--r--configs/sbc8548_PCI_66_defconfig4
-rw-r--r--configs/sbc8548_defconfig3
-rw-r--r--configs/sbc8641d_defconfig3
-rw-r--r--configs/sc3_defconfig3
-rw-r--r--configs/sc_sps_1_defconfig3
-rw-r--r--configs/scb9328_defconfig2
-rw-r--r--configs/seaboard_defconfig3
-rw-r--r--configs/sequoia_defconfig4
-rw-r--r--configs/sequoia_ramboot_defconfig4
-rw-r--r--configs/sh7752evb_defconfig2
-rw-r--r--configs/sh7753evb_defconfig2
-rw-r--r--configs/sh7757lcr_defconfig2
-rw-r--r--configs/sh7763rdp_defconfig2
-rw-r--r--configs/sh7785lcr_32bit_defconfig3
-rw-r--r--configs/sh7785lcr_defconfig2
-rw-r--r--configs/sheevaplug_defconfig2
-rw-r--r--configs/shmin_defconfig2
-rw-r--r--configs/smdk2410_defconfig2
-rw-r--r--configs/smdk5250_defconfig3
-rw-r--r--configs/smdk5420_defconfig3
-rw-r--r--configs/smdkc100_defconfig2
-rw-r--r--configs/smdkv310_defconfig3
-rw-r--r--configs/snapper9260_defconfig3
-rw-r--r--configs/snapper9g20_defconfig3
-rw-r--r--configs/snow_defconfig3
-rw-r--r--configs/snowball_defconfig2
-rw-r--r--configs/socfpga_cyclone5_defconfig3
-rw-r--r--configs/socrates_defconfig3
-rw-r--r--configs/spear300_defconfig3
-rw-r--r--configs/spear300_nand_defconfig3
-rw-r--r--configs/spear300_usbtty_defconfig3
-rw-r--r--configs/spear300_usbtty_nand_defconfig3
-rw-r--r--configs/spear310_defconfig3
-rw-r--r--configs/spear310_nand_defconfig3
-rw-r--r--configs/spear310_pnor_defconfig3
-rw-r--r--configs/spear310_usbtty_defconfig3
-rw-r--r--configs/spear310_usbtty_nand_defconfig3
-rw-r--r--configs/spear310_usbtty_pnor_defconfig3
-rw-r--r--configs/spear320_defconfig3
-rw-r--r--configs/spear320_nand_defconfig3
-rw-r--r--configs/spear320_pnor_defconfig3
-rw-r--r--configs/spear320_usbtty_defconfig3
-rw-r--r--configs/spear320_usbtty_nand_defconfig3
-rw-r--r--configs/spear320_usbtty_pnor_defconfig3
-rw-r--r--configs/spear600_defconfig3
-rw-r--r--configs/spear600_nand_defconfig3
-rw-r--r--configs/spear600_usbtty_defconfig3
-rw-r--r--configs/spear600_usbtty_nand_defconfig3
-rw-r--r--configs/stamp9g20_defconfig3
-rw-r--r--configs/stxgp3_defconfig3
-rw-r--r--configs/stxssa_4M_defconfig4
-rw-r--r--configs/stxssa_defconfig3
-rw-r--r--configs/stxxtc_defconfig3
-rw-r--r--configs/suvd3_defconfig4
-rw-r--r--configs/svm_sc8xx_defconfig3
-rw-r--r--configs/sycamore_defconfig3
-rw-r--r--configs/t3corp_defconfig3
-rw-r--r--configs/taihu_defconfig3
-rw-r--r--configs/taishan_defconfig3
-rw-r--r--configs/tao3530_defconfig3
-rw-r--r--configs/taurus_defconfig3
-rw-r--r--configs/tb100_defconfig2
-rw-r--r--configs/tcm-bf518_defconfig2
-rw-r--r--configs/tcm-bf537_defconfig2
-rw-r--r--configs/tec-ng_defconfig3
-rw-r--r--configs/tec_defconfig3
-rw-r--r--configs/ti814x_evm_defconfig3
-rw-r--r--configs/ti816x_evm_defconfig3
-rw-r--r--configs/titanium_defconfig3
-rw-r--r--configs/tk71_defconfig2
-rw-r--r--configs/tnetv107x_evm_defconfig2
-rw-r--r--configs/tny_a9260_eeprom_defconfig3
-rw-r--r--configs/tny_a9260_nandflash_defconfig3
-rw-r--r--configs/tny_a9g20_eeprom_defconfig3
-rw-r--r--configs/tny_a9g20_nandflash_defconfig3
-rw-r--r--configs/top9000eval_xe_defconfig3
-rw-r--r--configs/top9000su_xe_defconfig3
-rw-r--r--configs/trats2_defconfig2
-rw-r--r--configs/trats_defconfig2
-rw-r--r--configs/tricorder_defconfig3
-rw-r--r--configs/tricorder_flash_defconfig4
-rw-r--r--configs/trimslice_defconfig3
-rw-r--r--configs/trizepsiv_defconfig2
-rw-r--r--configs/tseries_mmc_defconfig4
-rw-r--r--configs/tseries_nand_defconfig4
-rw-r--r--configs/tseries_spi_defconfig4
-rw-r--r--configs/tt01_defconfig2
-rw-r--r--configs/tuge1_defconfig4
-rw-r--r--configs/tuxx1_defconfig4
-rw-r--r--configs/twister_defconfig3
-rw-r--r--configs/tx25_defconfig3
-rw-r--r--configs/u8500_href_defconfig2
-rw-r--r--configs/uc100_defconfig3
-rw-r--r--configs/uc101_defconfig3
-rw-r--r--configs/udoo_quad_defconfig3
-rw-r--r--configs/usb_a9263_dataflash_defconfig3
-rw-r--r--configs/utx8245_defconfig3
-rw-r--r--configs/v38b_defconfig3
-rw-r--r--configs/v5fx30teval_defconfig4
-rw-r--r--configs/v5fx30teval_flash_defconfig4
-rw-r--r--configs/vct_platinum_defconfig3
-rw-r--r--configs/vct_platinum_onenand_defconfig3
-rw-r--r--configs/vct_platinum_onenand_small_defconfig3
-rw-r--r--configs/vct_platinum_small_defconfig3
-rw-r--r--configs/vct_platinumavc_defconfig3
-rw-r--r--configs/vct_platinumavc_onenand_defconfig3
-rw-r--r--configs/vct_platinumavc_onenand_small_defconfig3
-rw-r--r--configs/vct_platinumavc_small_defconfig3
-rw-r--r--configs/vct_premium_defconfig3
-rw-r--r--configs/vct_premium_onenand_defconfig3
-rw-r--r--configs/vct_premium_onenand_small_defconfig3
-rw-r--r--configs/vct_premium_small_defconfig3
-rw-r--r--configs/ve8313_defconfig3
-rw-r--r--configs/venice2_defconfig3
-rw-r--r--configs/ventana_defconfig3
-rw-r--r--configs/versatileab_defconfig3
-rw-r--r--configs/versatilepb_defconfig3
-rw-r--r--configs/versatileqemu_defconfig3
-rw-r--r--configs/vexpress_aemv8a_defconfig3
-rw-r--r--configs/vexpress_aemv8a_semi_defconfig3
-rw-r--r--configs/vexpress_ca15_tc2_defconfig2
-rw-r--r--configs/vexpress_ca5x2_defconfig2
-rw-r--r--configs/vexpress_ca9x4_defconfig2
-rw-r--r--configs/vf610twr_defconfig3
-rw-r--r--configs/virtlab2_defconfig3
-rw-r--r--configs/vision2_defconfig3
-rw-r--r--configs/vl_ma2sc_defconfig2
-rw-r--r--configs/vl_ma2sc_ram_defconfig3
-rw-r--r--configs/vme8349_defconfig3
-rw-r--r--configs/vpac270_nor_128_defconfig3
-rw-r--r--configs/vpac270_nor_256_defconfig3
-rw-r--r--configs/vpac270_ond_256_defconfig4
-rw-r--r--configs/walnut_defconfig3
-rw-r--r--configs/wandboard_dl_defconfig3
-rw-r--r--configs/wandboard_quad_defconfig3
-rw-r--r--configs/wandboard_solo_defconfig3
-rw-r--r--configs/whistler_defconfig3
-rw-r--r--configs/wireless_space_defconfig2
-rw-r--r--configs/woodburn_defconfig2
-rw-r--r--configs/woodburn_sd_defconfig4
-rw-r--r--configs/wtk_defconfig4
-rw-r--r--configs/x600_defconfig3
-rw-r--r--configs/xaeniax_defconfig2
-rw-r--r--configs/xfi3_defconfig3
-rw-r--r--configs/xilinx-ppc405-generic_defconfig4
-rw-r--r--configs/xilinx-ppc405-generic_flash_defconfig4
-rw-r--r--configs/xilinx-ppc440-generic_defconfig4
-rw-r--r--configs/xilinx-ppc440-generic_flash_defconfig4
-rw-r--r--configs/xpedite1000_defconfig3
-rw-r--r--configs/xpedite517x_defconfig3
-rw-r--r--configs/xpedite520x_defconfig3
-rw-r--r--configs/xpedite537x_defconfig3
-rw-r--r--configs/xpedite550x_defconfig3
-rw-r--r--configs/yellowstone_defconfig4
-rw-r--r--configs/yosemite_defconfig4
-rw-r--r--configs/yucca_defconfig3
-rw-r--r--configs/zeus_defconfig3
-rw-r--r--configs/zipitz2_defconfig2
-rw-r--r--configs/zmx25_defconfig2
-rw-r--r--configs/zynq_microzed_defconfig3
-rw-r--r--configs/zynq_zc70x_defconfig3
-rw-r--r--configs/zynq_zc770_xm010_defconfig4
-rw-r--r--configs/zynq_zc770_xm012_defconfig4
-rw-r--r--configs/zynq_zc770_xm013_defconfig4
-rw-r--r--configs/zynq_zed_defconfig3
-rw-r--r--doc/README.SPL2
-rw-r--r--doc/README.nand12
-rw-r--r--doc/driver-model/README.txt216
-rw-r--r--drivers/core/device.c169
-rw-r--r--drivers/core/lists.c22
-rw-r--r--drivers/core/root.c78
-rw-r--r--drivers/core/uclass.c135
-rw-r--r--drivers/demo/demo-uclass.c1
-rw-r--r--drivers/gpio/Makefile3
-rw-r--r--drivers/gpio/sunxi_gpio.c102
-rw-r--r--drivers/i2c/Makefile2
-rw-r--r--drivers/i2c/mvtwsi.c88
-rw-r--r--drivers/input/cros_ec_keyb.c6
-rw-r--r--drivers/input/i8042.c4
-rw-r--r--drivers/input/keyboard.c6
-rw-r--r--drivers/input/tegra-kbc.c6
-rw-r--r--drivers/misc/cbmem_console.c6
-rw-r--r--drivers/mmc/Makefile2
-rw-r--r--drivers/mmc/bcm2835_sdhci.c2
-rw-r--r--drivers/mmc/dw_mmc.c5
-rw-r--r--drivers/mmc/gen_atmel_mci.c63
-rw-r--r--drivers/mmc/mvebu_mmc.c361
-rw-r--r--drivers/mmc/s3c_sdi.c321
-rw-r--r--drivers/mmc/sunxi_mmc.c141
-rw-r--r--drivers/mtd/nand/davinci_nand.c196
-rw-r--r--drivers/net/Makefile2
-rw-r--r--drivers/net/cpsw.c8
-rw-r--r--drivers/net/netconsole.c10
-rw-r--r--drivers/net/sh_eth.c5
-rw-r--r--drivers/net/sh_eth.h6
-rw-r--r--drivers/net/sunxi_emac.c (renamed from drivers/net/sunxi_wemac.c)140
-rw-r--r--drivers/power/Makefile2
-rw-r--r--drivers/power/axp152.c97
-rw-r--r--drivers/power/axp209.c167
-rw-r--r--drivers/power/pmic/pmic_tps65218.c22
-rw-r--r--drivers/serial/ns16550.c4
-rw-r--r--drivers/serial/serial.c55
-rw-r--r--drivers/serial/serial_sh.h3
-rw-r--r--drivers/serial/usbtty.c8
-rw-r--r--drivers/video/cfb_console.c8
-rw-r--r--include/.gitignore1
-rw-r--r--include/asm-generic/global_data.h9
-rw-r--r--include/atmel_mci.h18
-rw-r--r--include/axp152.h10
-rw-r--r--include/axp209.h14
-rw-r--r--include/common.h11
-rw-r--r--include/configs/B4860QDS.h1
-rw-r--r--include/configs/BSC9131RDB.h1
-rw-r--r--include/configs/BSC9132QDS.h1
-rw-r--r--include/configs/C29XPCIE.h2
-rw-r--r--include/configs/ELPPC.h4
-rw-r--r--include/configs/MHPC.h4
-rw-r--r--include/configs/MPC8313ERDB.h1
-rw-r--r--include/configs/P1010RDB.h4
-rw-r--r--include/configs/P1022DS.h4
-rw-r--r--include/configs/P1_P2_RDB.h4
-rw-r--r--include/configs/T104xRDB.h1
-rw-r--r--include/configs/T208xQDS.h1
-rw-r--r--include/configs/T208xRDB.h1
-rw-r--r--include/configs/T4240QDS.h1
-rw-r--r--include/configs/a3m071.h1
-rw-r--r--include/configs/alt.h166
-rw-r--r--include/configs/am335x_evm.h6
-rw-r--r--include/configs/am335x_igep0033.h1
-rw-r--r--include/configs/am3517_crane.h8
-rw-r--r--include/configs/am3517_evm.h8
-rw-r--r--include/configs/am43xx_evm.h2
-rw-r--r--include/configs/apf27.h1
-rw-r--r--include/configs/arndale.h1
-rw-r--r--include/configs/bur_am335x_common.h1
-rw-r--r--include/configs/cam_enc_4xx.h1
-rw-r--r--include/configs/cm_t335.h5
-rw-r--r--include/configs/cm_t35.h4
-rw-r--r--include/configs/controlcenterd.h2
-rw-r--r--include/configs/da850evm.h1
-rw-r--r--include/configs/devkit8000.h3
-rw-r--r--include/configs/dig297.h4
-rw-r--r--include/configs/dlvision-10g.h1
-rw-r--r--include/configs/dlvision.h1
-rw-r--r--include/configs/edminiv2.h3
-rw-r--r--include/configs/exynos5-dt.h1
-rw-r--r--include/configs/gdppc440etx.h1
-rw-r--r--include/configs/hawkboard.h1
-rw-r--r--include/configs/intip.h1
-rw-r--r--include/configs/io.h1
-rw-r--r--include/configs/io64.h1
-rw-r--r--include/configs/iocon.h1
-rw-r--r--include/configs/ipam390.h1
-rw-r--r--include/configs/jadecpu.h4
-rw-r--r--include/configs/k2e_evm.h37
-rw-r--r--include/configs/k2hk_evm.h253
-rw-r--r--include/configs/ks2_evm.h275
-rw-r--r--include/configs/lwmon5.h1
-rw-r--r--include/configs/m53evk.h1
-rw-r--r--include/configs/mcx.h5
-rw-r--r--include/configs/microblaze-generic.h2
-rw-r--r--include/configs/mx31pdk.h1
-rw-r--r--include/configs/mxs.h1
-rw-r--r--include/configs/neo.h1
-rw-r--r--include/configs/nokia_rx51.h7
-rw-r--r--include/configs/omap3_beagle.h13
-rw-r--r--include/configs/omap3_evm_common.h8
-rw-r--r--include/configs/omap3_igep00x0.h10
-rw-r--r--include/configs/omap3_logic.h8
-rw-r--r--include/configs/omap3_overo.h12
-rw-r--r--include/configs/omap3_pandora.h7
-rw-r--r--include/configs/omap3_zoom1.h14
-rw-r--r--include/configs/openrd.h8
-rw-r--r--include/configs/origen.h1
-rw-r--r--include/configs/p1_p2_rdb_pc.h4
-rw-r--r--include/configs/palmtreo680.h1
-rw-r--r--include/configs/pcm051.h1
-rw-r--r--include/configs/pengwyn.h6
-rw-r--r--include/configs/sama5d3_xplained.h1
-rw-r--r--include/configs/sama5d3xek.h1
-rw-r--r--include/configs/sandbox.h4
-rw-r--r--include/configs/sheevaplug.h11
-rw-r--r--include/configs/siemens-am33x-common.h1
-rw-r--r--include/configs/smdkv310.h1
-rw-r--r--include/configs/socfpga_cyclone5.h1
-rw-r--r--include/configs/sun4i.h24
-rw-r--r--include/configs/sun5i.h24
-rw-r--r--include/configs/sun7i.h1
-rw-r--r--include/configs/sunxi-common.h28
-rw-r--r--include/configs/tam3517-common.h5
-rw-r--r--include/configs/tao3530.h9
-rw-r--r--include/configs/tegra-common.h1
-rw-r--r--include/configs/ti814x_evm.h1
-rw-r--r--include/configs/ti816x_evm.h1
-rw-r--r--include/configs/ti_armv7_common.h9
-rw-r--r--include/configs/tricorder.h5
-rw-r--r--include/configs/tx25.h1
-rw-r--r--include/configs/vpac270.h1
-rw-r--r--include/configs/woodburn_sd.h1
-rw-r--r--include/configs/x600.h1
-rw-r--r--include/configs/zynq-common.h3
-rw-r--r--include/cpsw.h1
-rw-r--r--include/dm/device-internal.h6
-rw-r--r--include/dm/device.h120
-rw-r--r--include/dm/lists.h2
-rw-r--r--include/dm/platdata.h10
-rw-r--r--include/dm/root.h61
-rw-r--r--include/dm/test.h22
-rw-r--r--include/dm/uclass-id.h3
-rw-r--r--include/dm/uclass-internal.h23
-rw-r--r--include/dm/uclass.h49
-rw-r--r--include/environment.h9
-rw-r--r--include/fdtdec.h29
-rw-r--r--include/i8042.h6
-rw-r--r--include/linux/kconfig.h46
-rw-r--r--include/mvebu_mmc.h278
-rw-r--r--include/netdev.h2
-rw-r--r--include/power/pmic.h1
-rw-r--r--include/power/tps65218.h1
-rw-r--r--include/stdio_dev.h17
-rw-r--r--include/video.h8
-rw-r--r--lib/asm-offsets.c3
-rw-r--r--lib/fdtdec.c61
-rwxr-xr-xmkconfig186
-rw-r--r--scripts/Makefile2
-rw-r--r--scripts/Makefile.autoconf100
-rw-r--r--scripts/Makefile.build31
-rw-r--r--scripts/Makefile.spl31
-rw-r--r--scripts/basic/fixdep.c6
-rw-r--r--scripts/kconfig/.gitignore22
-rw-r--r--scripts/kconfig/Makefile321
-rw-r--r--scripts/kconfig/POTFILES.in12
-rwxr-xr-xscripts/kconfig/check.sh13
-rw-r--r--scripts/kconfig/conf.c718
-rw-r--r--scripts/kconfig/confdata.c1250
-rw-r--r--scripts/kconfig/expr.c1168
-rw-r--r--scripts/kconfig/expr.h241
-rw-r--r--scripts/kconfig/gconf.c1542
-rw-r--r--scripts/kconfig/gconf.glade661
-rw-r--r--scripts/kconfig/images.c326
-rw-r--r--scripts/kconfig/kxgettext.c235
-rw-r--r--scripts/kconfig/list.h131
-rw-r--r--scripts/kconfig/lkc.h200
-rw-r--r--scripts/kconfig/lkc_proto.h57
-rw-r--r--scripts/kconfig/lxdialog/.gitignore4
-rw-r--r--scripts/kconfig/lxdialog/BIG.FAT.WARNING4
-rw-r--r--scripts/kconfig/lxdialog/check-lxdialog.sh87
-rw-r--r--scripts/kconfig/lxdialog/checklist.c332
-rw-r--r--scripts/kconfig/lxdialog/dialog.h257
-rw-r--r--scripts/kconfig/lxdialog/inputbox.c301
-rw-r--r--scripts/kconfig/lxdialog/menubox.c437
-rw-r--r--scripts/kconfig/lxdialog/textbox.c408
-rw-r--r--scripts/kconfig/lxdialog/util.c713
-rw-r--r--scripts/kconfig/lxdialog/yesno.c114
-rw-r--r--scripts/kconfig/mconf.c1036
-rw-r--r--scripts/kconfig/menu.c697
-rwxr-xr-xscripts/kconfig/merge_config.sh150
-rw-r--r--scripts/kconfig/nconf.c1556
-rw-r--r--scripts/kconfig/nconf.gui.c656
-rw-r--r--scripts/kconfig/nconf.h96
-rw-r--r--scripts/kconfig/qconf.cc1795
-rw-r--r--scripts/kconfig/qconf.h338
-rw-r--r--scripts/kconfig/streamline_config.pl647
-rw-r--r--scripts/kconfig/symbol.c1373
-rw-r--r--scripts/kconfig/util.c157
-rw-r--r--scripts/kconfig/zconf.gperf48
-rw-r--r--scripts/kconfig/zconf.hash.c_shipped289
-rw-r--r--scripts/kconfig/zconf.l363
-rw-r--r--scripts/kconfig/zconf.lex.c_shipped2420
-rw-r--r--scripts/kconfig/zconf.tab.c_shipped2538
-rw-r--r--scripts/kconfig/zconf.y733
-rwxr-xr-xscripts/multiconfig.py410
-rwxr-xr-xscripts/show-gnu-make25
-rw-r--r--test/dm/Makefile1
-rw-r--r--test/dm/bus.c242
-rw-r--r--test/dm/cmd_dm.c35
-rw-r--r--test/dm/core.c64
-rw-r--r--test/dm/test-driver.c11
-rw-r--r--test/dm/test-fdt.c164
-rw-r--r--test/dm/test-main.c4
-rw-r--r--test/dm/test.dts42
-rw-r--r--tools/Makefile2
-rw-r--r--tools/buildman/board.py2
-rw-r--r--tools/buildman/builder.py63
-rwxr-xr-xtools/buildman/buildman.py9
-rw-r--r--tools/buildman/control.py22
-rw-r--r--tools/env/Makefile2
-rwxr-xr-xtools/genboardscfg.py504
-rw-r--r--tools/mksunxiboot.c10
-rw-r--r--tools/patman/gitutil.py11
2713 files changed, 57698 insertions, 3901 deletions
diff --git a/.gitignore b/.gitignore
index 0ace33b..a40c277 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,6 +34,7 @@
/SPL
/System.map
/u-boot*
+/boards.cfg
#
# git files that we don't want to ignore even it they are dot-files
@@ -53,8 +54,6 @@
#
/include/config/
/include/generated/
-/include/spl-autoconf.mk
-/include/tpl-autoconf.mk
# stgit generated dirs
patches-*
diff --git a/Kconfig b/Kconfig
new file mode 100644
index 0000000..9e77a6e
--- /dev/null
+++ b/Kconfig
@@ -0,0 +1,65 @@
+#
+# For a description of the syntax of this configuration file,
+# see Documentation/kbuild/kconfig-language.txt.
+#
+mainmenu "U-Boot $UBOOTVERSION Configuration"
+
+config UBOOTVERSION
+ string
+ option env="UBOOTVERSION"
+
+config KCONFIG_OBJDIR
+ string
+ option env="KCONFIG_OBJDIR"
+
+config DEFCONFIG_LIST
+ string
+ depends on !SPL_BUILD
+ option defconfig_list
+ default "configs/sandbox_defconfig"
+
+menu "General setup"
+
+config SPL_BUILD
+ bool
+ depends on $KCONFIG_OBJDIR="spl" || $KCONFIG_OBJDIR="tpl"
+ default y
+
+config TPL_BUILD
+ bool
+ depends on $KCONFIG_OBJDIR="tpl"
+ default y
+
+config SPL
+ bool
+ prompt "Enable SPL" if !SPL_BUILD
+ default y if SPL_BUILD
+ help
+ If you want to build SPL as well as the normal image, say Y.
+
+config TPL
+ bool
+ depends on SPL
+ prompt "Enable TPL" if !SPL_BUILD
+ default y if TPL_BUILD
+ default n
+ help
+ If you want to build TPL as well as the normal image and SPL, say Y.
+
+config SYS_EXTRA_OPTIONS
+ string "Extra Options (DEPRECATED)"
+ depends on !SPL_BUILD
+ help
+ The old configuration infrastructure (= mkconfig + boards.cfg)
+ provided the extra options field. It you have something like
+ "HAS_BAR,BAZ=64", the optional options
+ #define CONFIG_HAS
+ #define CONFIG_BAZ 64
+ will be defined in include/config.h.
+ This option was prepared for the smooth migration from the old
+ configuration to Kconfig. Since this option will be removed sometime,
+ new boards should not use this option.
+
+endmenu # General setup
+
+source "arch/Kconfig"
diff --git a/MAKEALL b/MAKEALL
index 020e65f..929fe88 100755
--- a/MAKEALL
+++ b/MAKEALL
@@ -162,9 +162,23 @@ while true ; do
echo "Internal error!" >&2 ; exit 1 ;;
esac
done
+
+GNU_MAKE=$(scripts/show-gnu-make) || {
+ echo "GNU Make not found" >&2
+ exit 1
+}
+
# echo "Remaining arguments:"
# for arg do echo '--> '"\`$arg'" ; done
+if [ ! -r boards.cfg ]; then
+ echo "Could not find boards.cfg"
+ tools/genboardscfg.py || {
+ echo "Failed to generate boards.cfg" >&2
+ exit 1
+ }
+fi
+
FILTER="\$1 !~ /^#/"
[ "$opt_a" ] && FILTER="${FILTER} && $opt_a"
[ "$opt_c" ] && FILTER="${FILTER} && $opt_c"
@@ -506,9 +520,9 @@ get_target_location() {
set ${line}
- CONFIG_NAME="${7%_config}"
+ CONFIG_NAME="${7%_defconfig}"
- [ "${BOARD_NAME}" ] || BOARD_NAME="${7%_config}"
+ [ "${BOARD_NAME}" ] || BOARD_NAME="${7%_defconfig}"
if [ $# -gt 5 ]; then
if [ "$6" = "-" ] ; then
@@ -633,11 +647,11 @@ build_target() {
target_arch=$(get_target_arch ${target})
eval cross_toolchain=\$CROSS_COMPILE_`echo $target_arch | tr '[:lower:]' '[:upper:]'`
if [ "${cross_toolchain}" ] ; then
- MAKE="make CROSS_COMPILE=${cross_toolchain}"
+ MAKE="$GNU_MAKE CROSS_COMPILE=${cross_toolchain}"
elif [ "${CROSS_COMPILE}" ] ; then
- MAKE="make CROSS_COMPILE=${CROSS_COMPILE}"
+ MAKE="$GNU_MAKE CROSS_COMPILE=${CROSS_COMPILE}"
else
- MAKE=make
+ MAKE=$GNU_MAKE
fi
if [ "${output_dir}" != "." ] ; then
@@ -645,7 +659,9 @@ build_target() {
fi
${MAKE} distclean >/dev/null
- ${MAKE} -s ${target}_config
+
+ echo "Building ${target} board..."
+ ${MAKE} -s ${target}_defconfig >/dev/null
${MAKE} ${JOBS} ${CHECK} all \
>${LOG_DIR}/$target.MAKELOG 2> ${LOG_DIR}/$target.ERR
diff --git a/Makefile b/Makefile
index ca212b5..5e49545 100644
--- a/Makefile
+++ b/Makefile
@@ -166,9 +166,6 @@ VPATH := $(srctree)$(if $(KBUILD_EXTMOD),:$(KBUILD_EXTMOD))
export srctree objtree VPATH
-MKCONFIG := $(srctree)/mkconfig
-export MKCONFIG
-
# Make sure CDPATH settings don't interfere
unexport CDPATH
@@ -189,9 +186,6 @@ HOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \
export HOSTARCH HOSTOS
-# Deal with colliding definitions from tcsh etc.
-VENDOR=
-
#########################################################################
# set default to nothing for native builds
@@ -199,6 +193,9 @@ ifeq ($(HOSTARCH),$(ARCH))
CROSS_COMPILE ?=
endif
+KCONFIG_CONFIG ?= .config
+export KCONFIG_CONFIG
+
# SHELL used by kbuild
CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
else if [ -x /bin/bash ]; then echo /bin/bash; \
@@ -341,6 +338,7 @@ OBJCOPY = $(CROSS_COMPILE)objcopy
OBJDUMP = $(CROSS_COMPILE)objdump
AWK = awk
PERL = perl
+PYTHON = python
DTC = dtc
CHECK = sparse
@@ -362,7 +360,7 @@ export VERSION PATCHLEVEL SUBLEVEL UBOOTRELEASE UBOOTVERSION
export ARCH CPU BOARD VENDOR SOC CPUDIR BOARDDIR
export CONFIG_SHELL HOSTCC HOSTCFLAGS HOSTLDFLAGS CROSS_COMPILE AS LD CC
export CPP AR NM LDR STRIP OBJCOPY OBJDUMP
-export MAKE AWK PERL
+export MAKE AWK PERL PYTHON
export HOSTCXX HOSTCXXFLAGS DTC CHECK CHECKFLAGS
export KBUILD_CPPFLAGS NOSTDINC_FLAGS UBOOTINCLUDE OBJCOPYFLAGS LDFLAGS
@@ -460,31 +458,49 @@ ifeq ($(config-targets),1)
# *config targets only - make sure prerequisites are updated, and descend
# in scripts/kconfig to make the *config target
-# Read arch specific Makefile to set KBUILD_DEFCONFIG as needed.
-# KBUILD_DEFCONFIG may point out an alternative default configuration
-# used for 'make defconfig'
+KBUILD_DEFCONFIG := sandbox_defconfig
+export KBUILD_DEFCONFIG KBUILD_KCONFIG
-%_config:: outputmakefile
- @$(MKCONFIG) -A $(@:_config=)
+config: scripts_basic outputmakefile FORCE
+ +$(Q)$(PYTHON) $(srctree)/scripts/multiconfig.py $@
+
+%config: scripts_basic outputmakefile FORCE
+ +$(Q)$(PYTHON) $(srctree)/scripts/multiconfig.py $@
else
# ===========================================================================
# Build targets only - this includes vmlinux, arch specific targets, clean
# targets and others. In general all targets except *config targets.
-# load ARCH, BOARD, and CPU configuration
--include include/config.mk
-
ifeq ($(dot-config),1)
# Read in config
+-include include/config/auto.conf
+
+# Read in dependencies to all Kconfig* files, make sure to run
+# oldconfig if changes are detected.
+-include include/config/auto.conf.cmd
+
+# To avoid any implicit rule to kick in, define an empty command
+$(KCONFIG_CONFIG) include/config/auto.conf.cmd: ;
+
+# If .config is newer than include/config/auto.conf, someone tinkered
+# with it and forgot to run make oldconfig.
+# if auto.conf.cmd is missing then we are probably in a cleaned tree so
+# we execute the config step to be sure to catch updated Kconfig files
+include/config/%.conf: $(KCONFIG_CONFIG) include/config/auto.conf.cmd
+ $(Q)$(MAKE) -f $(srctree)/Makefile silentoldconfig
+
-include include/autoconf.mk
-include include/autoconf.mk.dep
-# load other configuration
+# We want to include arch/$(ARCH)/config.mk only when include/config/auto.conf
+# is up-to-date. When we switch to a different board configuration, old CONFIG
+# macros are still remaining in include/config/auto.conf. Without the following
+# gimmick, wrong config.mk would be included leading nasty warnings/errors.
+autoconf_is_current := $(if $(wildcard $(KCONFIG_CONFIG)),$(shell find . \
+ -path ./include/config/auto.conf -newer $(KCONFIG_CONFIG)))
+ifneq ($(autoconf_is_current),)
include $(srctree)/config.mk
-
-ifeq ($(wildcard include/config.mk),)
-$(error "System not configured - see README")
endif
# If board code explicitly specified LDSCRIPT or CONFIG_SYS_LDSCRIPT, use
@@ -513,8 +529,8 @@ ifndef LDSCRIPT
endif
else
-
-
+# Dummy target needed, because used as prerequisite
+include/config/auto.conf: ;
endif # $(dot-config)
KBUILD_CFLAGS += -Os #-fomit-frame-pointer
@@ -563,7 +579,8 @@ KBUILD_CFLAGS += $(KCFLAGS)
UBOOTINCLUDE := \
-Iinclude \
$(if $(KBUILD_SRC), -I$(srctree)/include) \
- -I$(srctree)/arch/$(ARCH)/include
+ -I$(srctree)/arch/$(ARCH)/include \
+ -include $(srctree)/include/linux/kconfig.h
NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
CHECKFLAGS += $(NOSTDINC_FLAGS)
@@ -915,6 +932,12 @@ OBJCOPYFLAGS_u-boot-spi.gph = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO)
u-boot-spi.gph: spl/u-boot-spl.gph u-boot.img FORCE
$(call if_changed,pad_cat)
+MKIMAGEFLAGS_u-boot-nand.gph = -A $(ARCH) -T gpimage -C none \
+ -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE) -n U-Boot
+u-boot-nand.gph: u-boot.bin FORCE
+ $(call if_changed,mkimage)
+ @dd if=/dev/zero bs=8 count=1 2>/dev/null >> $@
+
ifneq ($(CONFIG_SUNXI),)
OBJCOPYFLAGS_u-boot-sunxi-with-spl.bin = -I binary -O binary \
--pad-to=$(CONFIG_SPL_PAD_TO) --gap-fill=0xff
@@ -1018,7 +1041,7 @@ define filechk_uboot.release
endef
# Store (new) UBOOTRELEASE string in include/config/uboot.release
-include/config/uboot.release: Makefile FORCE
+include/config/uboot.release: include/config/auto.conf FORCE
$(call filechk,uboot.release)
@@ -1036,8 +1059,8 @@ PHONY += prepare archprepare prepare0 prepare1 prepare2 prepare3
# 1) Check that make has not been executed in the kernel src $(srctree)
prepare3: include/config/uboot.release
ifneq ($(KBUILD_SRC),)
- @$(kecho) ' Using $(srctree) as source for u-boot'
- $(Q)if [ -f $(srctree)/include/config.mk ]; then \
+ @$(kecho) ' Using $(srctree) as source for U-Boot'
+ $(Q)if [ -f $(srctree)/.config -o -d $(srctree)/include/config ]; then \
echo >&2 " $(srctree) is not clean, please run 'make mrproper'"; \
echo >&2 " in the '$(srctree)' directory.";\
/bin/false; \
@@ -1047,7 +1070,8 @@ endif
# prepare2 creates a makefile if using a separate output directory
prepare2: prepare3 outputmakefile
-prepare1: prepare2 $(version_h) $(timestamp_h)
+prepare1: prepare2 $(version_h) $(timestamp_h) \
+ include/config/auto.conf
ifeq ($(__HAVE_ARCH_GENERIC_BOARD),)
ifeq ($(CONFIG_SYS_GENERIC_BOARD),y)
@echo >&2 " Your architecture does not support generic board."
@@ -1089,29 +1113,6 @@ $(version_h): include/config/uboot.release FORCE
$(timestamp_h): $(srctree)/Makefile FORCE
$(call filechk,timestamp.h)
-#
-# Auto-generate the autoconf.mk file (which is included by all makefiles)
-#
-# This target actually generates 2 files; autoconf.mk and autoconf.mk.dep.
-# the dep file is only include in this top level makefile to determine when
-# to regenerate the autoconf.mk file.
-
-quiet_cmd_autoconf_dep = GEN $@
- cmd_autoconf_dep = $(CC) -x c -DDO_DEPS_ONLY -M $(c_flags) \
- -MQ include/autoconf.mk $(srctree)/include/common.h > $@ || rm $@
-
-include/autoconf.mk.dep: include/config.h include/common.h
- $(call cmd,autoconf_dep)
-
-quiet_cmd_autoconf = GEN $@
- cmd_autoconf = \
- $(CPP) $(c_flags) -DDO_DEPS_ONLY -dM $(srctree)/include/common.h > $@.tmp && \
- sed -n -f $(srctree)/tools/scripts/define2mk.sed $@.tmp > $@; \
- rm $@.tmp
-
-include/autoconf.mk: include/config.h
- $(call cmd,autoconf)
-
# ---------------------------------------------------------------------------
PHONY += depend dep
@@ -1135,7 +1136,7 @@ spl/sunxi-spl.bin: spl/u-boot-spl
@:
tpl/u-boot-tpl.bin: tools prepare
- $(Q)$(MAKE) obj=tpl -f $(srctree)/scripts/Makefile.spl all CONFIG_TPL_BUILD=y
+ $(Q)$(MAKE) obj=tpl -f $(srctree)/scripts/Makefile.spl all
TAG_SUBDIRS := $(patsubst %,$(srctree)/%,$(u-boot-dirs) include)
@@ -1210,20 +1211,18 @@ include/license.h: tools/bin2header COPYING
# Directories & files removed with 'make clean'
CLEAN_DIRS += $(MODVERDIR)
-CLEAN_FILES += u-boot.lds include/bmp_logo.h include/bmp_logo_data.h \
- include/autoconf.mk* include/spl-autoconf.mk \
- include/tpl-autoconf.mk
+CLEAN_FILES += u-boot.lds include/bmp_logo.h include/bmp_logo_data.h
# Directories & files removed with 'make clobber'
-CLOBBER_DIRS += spl tpl
+CLOBBER_DIRS += $(foreach d, spl tpl, $(patsubst %,$d/%, \
+ $(filter-out include, $(shell ls -1 $d 2>/dev/null))))
CLOBBER_FILES += u-boot* MLO* SPL System.map
# Directories & files removed with 'make mrproper'
-MRPROPER_DIRS += include/config include/generated \
+MRPROPER_DIRS += include/config include/generated spl tpl \
.tmp_objdiff
-MRPROPER_FILES += .config .config.old \
- ctags etags cscope* GPATH GTAGS GRTAGS GSYMS \
- include/config.h include/config.mk
+MRPROPER_FILES += .config .config.old include/autoconf.mk* include/config.h \
+ ctags etags TAGS cscope* GPATH GTAGS GRTAGS GSYMS
# clean - Delete most, but leave enough to build external modules
#
@@ -1300,10 +1299,9 @@ help:
@echo ' mrproper - Remove all generated files + config + various backup files'
@echo ' distclean - mrproper + remove editor backup and patch files'
@echo ''
-# uncomment after adding Kconfig feature
-# @echo 'Configuration targets:'
-# @$(MAKE) -f $(srctree)/scripts/kconfig/Makefile help
-# @echo ''
+ @echo 'Configuration targets:'
+ @$(MAKE) -f $(srctree)/scripts/kconfig/Makefile help
+ @echo ''
@echo 'Other generic targets:'
@echo ' all - Build all necessary images depending on configuration'
@echo ' u-boot - Build the bare u-boot'
diff --git a/README b/README
index 4ac7399..31e08fc 100644
--- a/README
+++ b/README
@@ -3736,6 +3736,25 @@ Configuration Settings:
- CONFIG_SYS_MALLOC_LEN:
Size of DRAM reserved for malloc() use.
+- CONFIG_SYS_MALLOC_F_LEN
+ Size of the malloc() pool for use before relocation. If
+ this is defined, then a very simple malloc() implementation
+ will become available before relocation. The address is just
+ below the global data, and the stack is moved down to make
+ space.
+
+ This feature allocates regions with increasing addresses
+ within the region. calloc() is supported, but realloc()
+ is not available. free() is supported but does nothing.
+ The memory will be freed (or in fact just forgotton) when
+ U-Boot relocates itself.
+
+ Pre-relocation malloc() is only supported on sandbox
+ at present but is fairly easy to enable for other archs.
+
+ Pre-relocation malloc() is only supported on ARM at present
+ but is fairly easy to enable for other archs.
+
- CONFIG_SYS_BOOTM_LEN:
Normally compressed uImages are limited to an
uncompressed size of 8 MBytes. If this is not enough,
diff --git a/arch/Kconfig b/arch/Kconfig
new file mode 100644
index 0000000..8620a4f
--- /dev/null
+++ b/arch/Kconfig
@@ -0,0 +1,66 @@
+choice
+ prompt "Architecture select"
+ default SANDBOX
+
+config ARC
+ bool "ARC architecture"
+
+config ARM
+ bool "ARM architecture"
+
+config AVR32
+ bool "AVR32 architecture"
+
+config BLACKFIN
+ bool "Blackfin architecture"
+
+config M68K
+ bool "M68000 architecture"
+
+config MICROBLAZE
+ bool "MicroBlaze architecture"
+
+config MIPS
+ bool "MIPS architecture"
+
+config NDS32
+ bool "NDS32 architecture"
+
+config NIOS2
+ bool "Nios II architecture"
+
+config OPENRISC
+ bool "OpenRISC architecture"
+
+config PPC
+ bool "PowerPC architecture"
+
+config SANDBOX
+ bool "Sandbox"
+
+config SH
+ bool "SuperH architecture"
+
+config SPARC
+ bool "SPARC architecture"
+
+config X86
+ bool "x86 architecture"
+
+endchoice
+
+source "arch/arc/Kconfig"
+source "arch/arm/Kconfig"
+source "arch/avr32/Kconfig"
+source "arch/blackfin/Kconfig"
+source "arch/m68k/Kconfig"
+source "arch/microblaze/Kconfig"
+source "arch/mips/Kconfig"
+source "arch/nds32/Kconfig"
+source "arch/nios2/Kconfig"
+source "arch/openrisc/Kconfig"
+source "arch/powerpc/Kconfig"
+source "arch/sandbox/Kconfig"
+source "arch/sh/Kconfig"
+source "arch/sparc/Kconfig"
+source "arch/x86/Kconfig"
diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig
new file mode 100644
index 0000000..51d5aff
--- /dev/null
+++ b/arch/arc/Kconfig
@@ -0,0 +1,29 @@
+menu "ARC architecture"
+ depends on ARC
+
+config SYS_ARCH
+ string
+ default "arc"
+
+choice
+ prompt "Target select"
+
+config TARGET_TB100
+ bool "Support tb100"
+
+config TARGET_ARCANGEL4
+ bool "Support arcangel4"
+
+config TARGET_ARCANGEL4_BE
+ bool "Support arcangel4-be"
+
+config TARGET_AXS101
+ bool "Support axs101"
+
+endchoice
+
+source "board/abilis/tb100/Kconfig"
+source "board/synopsys/Kconfig"
+source "board/synopsys/axs101/Kconfig"
+
+endmenu
diff --git a/arch/arc/config.mk b/arch/arc/config.mk
index a3b8df7..e408800 100644
--- a/arch/arc/config.mk
+++ b/arch/arc/config.mk
@@ -21,7 +21,7 @@ ifeq ($(CROSS_COMPILE),)
CROSS_COMPILE := $(ARC_CROSS_COMPILE)
endif
-PLATFORM_CPPFLAGS += -ffixed-r25 -D__ARC__ -DCONFIG_ARC -gdwarf-2
+PLATFORM_CPPFLAGS += -ffixed-r25 -D__ARC__ -gdwarf-2
# Needed for relocation
LDFLAGS_FINAL += -pie
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 5fa1825..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)
@@ -113,7 +113,7 @@ endif
ifdef CONFIG_ARM64
OBJCOPYFLAGS += -j .text -j .rodata -j .data -j .u_boot_list -j .rela.dyn
else
-OBJCOPYFLAGS += -j .text -j .rodata -j .hash -j .data -j .got.plt -j .u_boot_list -j .rel.dyn
+OBJCOPYFLAGS += -j .text -j .secure_text -j .rodata -j .hash -j .data -j .got.plt -j .u_boot_list -j .rel.dyn
endif
ifdef CONFIG_OF_EMBED
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/Makefile b/arch/arm/cpu/armv7/Makefile
index 232118d..703ce8c 100644
--- a/arch/arm/cpu/armv7/Makefile
+++ b/arch/arm/cpu/armv7/Makefile
@@ -21,6 +21,11 @@ endif
ifneq ($(CONFIG_ARMV7_NONSEC)$(CONFIG_ARMV7_VIRT),)
obj-y += nonsec_virt.o
obj-y += virt-v7.o
+obj-y += virt-dt.o
+endif
+
+ifneq ($(CONFIG_ARMV7_PSCI),)
+obj-y += psci.o
endif
obj-$(CONFIG_KONA) += kona-common/
diff --git a/arch/arm/cpu/armv7/keystone/Makefile b/arch/arm/cpu/armv7/keystone/Makefile
index c4af252..f8519c0 100644
--- a/arch/arm/cpu/armv7/keystone/Makefile
+++ b/arch/arm/cpu/armv7/keystone/Makefile
@@ -8,9 +8,12 @@
obj-y += init.o
obj-y += psc.o
obj-y += clock.o
+obj-$(CONFIG_SOC_K2HK) += clock-k2hk.o
+obj-$(CONFIG_SOC_K2E) += clock-k2e.o
obj-y += cmd_clock.o
obj-y += cmd_mon.o
-obj-y += keystone_nav.o
+obj-$(CONFIG_DRIVER_TI_KEYSTONE_NET) += keystone_nav.o
obj-y += msmc.o
obj-$(CONFIG_SPL_BUILD) += spl.o
obj-y += ddr3.o
+obj-y += keystone.o
diff --git a/arch/arm/cpu/armv7/keystone/clock-k2e.c b/arch/arm/cpu/armv7/keystone/clock-k2e.c
new file mode 100644
index 0000000..42092e1
--- /dev/null
+++ b/arch/arm/cpu/armv7/keystone/clock-k2e.c
@@ -0,0 +1,101 @@
+/*
+ * Keystone2: get clk rate for K2E
+ *
+ * (C) Copyright 2012-2014
+ * Texas Instruments Incorporated, <www.ti.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/clock_defs.h>
+
+const struct keystone_pll_regs keystone_pll_regs[] = {
+ [CORE_PLL] = {KS2_MAINPLLCTL0, KS2_MAINPLLCTL1},
+ [PASS_PLL] = {KS2_PASSPLLCTL0, KS2_PASSPLLCTL1},
+ [DDR3_PLL] = {KS2_DDR3APLLCTL0, KS2_DDR3APLLCTL1},
+};
+
+/**
+ * pll_freq_get - get pll frequency
+ * Fout = Fref * NF(mult) / NR(prediv) / OD
+ * @pll: pll identifier
+ */
+static unsigned long pll_freq_get(int pll)
+{
+ unsigned long mult = 1, prediv = 1, output_div = 2;
+ unsigned long ret;
+ u32 tmp, reg;
+
+ if (pll == CORE_PLL) {
+ ret = external_clk[sys_clk];
+ if (pllctl_reg_read(pll, ctl) & PLLCTL_PLLEN) {
+ /* PLL mode */
+ tmp = __raw_readl(KS2_MAINPLLCTL0);
+ prediv = (tmp & PLL_DIV_MASK) + 1;
+ mult = (((tmp & PLLM_MULT_HI_SMASK) >> 6) |
+ (pllctl_reg_read(pll, mult) &
+ PLLM_MULT_LO_MASK)) + 1;
+ output_div = ((pllctl_reg_read(pll, secctl) >>
+ PLL_CLKOD_SHIFT) & PLL_CLKOD_MASK) + 1;
+
+ ret = ret / prediv / output_div * mult;
+ }
+ } else {
+ switch (pll) {
+ case PASS_PLL:
+ ret = external_clk[pa_clk];
+ reg = KS2_PASSPLLCTL0;
+ break;
+ case DDR3_PLL:
+ ret = external_clk[ddr3_clk];
+ reg = KS2_DDR3APLLCTL0;
+ break;
+ default:
+ return 0;
+ }
+
+ tmp = __raw_readl(reg);
+
+ if (!(tmp & PLLCTL_BYPASS)) {
+ /* Bypass disabled */
+ prediv = (tmp & PLL_DIV_MASK) + 1;
+ mult = ((tmp >> PLL_MULT_SHIFT) & PLL_MULT_MASK) + 1;
+ output_div = ((tmp >> PLL_CLKOD_SHIFT) &
+ PLL_CLKOD_MASK) + 1;
+ ret = ((ret / prediv) * mult) / output_div;
+ }
+ }
+
+ return ret;
+}
+
+unsigned long clk_get_rate(unsigned int clk)
+{
+ switch (clk) {
+ case core_pll_clk: return pll_freq_get(CORE_PLL);
+ case pass_pll_clk: return pll_freq_get(PASS_PLL);
+ case ddr3_pll_clk: return pll_freq_get(DDR3_PLL);
+ case sys_clk0_1_clk:
+ case sys_clk0_clk: return pll_freq_get(CORE_PLL) / pll0div_read(1);
+ case sys_clk1_clk: return pll_freq_get(CORE_PLL) / pll0div_read(2);
+ case sys_clk2_clk: return pll_freq_get(CORE_PLL) / pll0div_read(3);
+ case sys_clk3_clk: return pll_freq_get(CORE_PLL) / pll0div_read(4);
+ case sys_clk0_2_clk: return clk_get_rate(sys_clk0_clk) / 2;
+ case sys_clk0_3_clk: return clk_get_rate(sys_clk0_clk) / 3;
+ case sys_clk0_4_clk: return clk_get_rate(sys_clk0_clk) / 4;
+ case sys_clk0_6_clk: return clk_get_rate(sys_clk0_clk) / 6;
+ case sys_clk0_8_clk: return clk_get_rate(sys_clk0_clk) / 8;
+ case sys_clk0_12_clk: return clk_get_rate(sys_clk0_clk) / 12;
+ case sys_clk0_24_clk: return clk_get_rate(sys_clk0_clk) / 24;
+ case sys_clk1_3_clk: return clk_get_rate(sys_clk1_clk) / 3;
+ case sys_clk1_4_clk: return clk_get_rate(sys_clk1_clk) / 4;
+ case sys_clk1_6_clk: return clk_get_rate(sys_clk1_clk) / 6;
+ case sys_clk1_12_clk: return clk_get_rate(sys_clk1_clk) / 12;
+ default:
+ break;
+ }
+
+ return 0;
+}
diff --git a/arch/arm/cpu/armv7/keystone/clock-k2hk.c b/arch/arm/cpu/armv7/keystone/clock-k2hk.c
new file mode 100644
index 0000000..96a9f72
--- /dev/null
+++ b/arch/arm/cpu/armv7/keystone/clock-k2hk.c
@@ -0,0 +1,113 @@
+/*
+ * Keystone2: get clk rate for K2HK
+ *
+ * (C) Copyright 2012-2014
+ * Texas Instruments Incorporated, <www.ti.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/clock_defs.h>
+
+const struct keystone_pll_regs keystone_pll_regs[] = {
+ [CORE_PLL] = {KS2_MAINPLLCTL0, KS2_MAINPLLCTL1},
+ [PASS_PLL] = {KS2_PASSPLLCTL0, KS2_PASSPLLCTL1},
+ [TETRIS_PLL] = {KS2_ARMPLLCTL0, KS2_ARMPLLCTL1},
+ [DDR3A_PLL] = {KS2_DDR3APLLCTL0, KS2_DDR3APLLCTL1},
+ [DDR3B_PLL] = {KS2_DDR3BPLLCTL0, KS2_DDR3BPLLCTL1},
+};
+
+/**
+ * pll_freq_get - get pll frequency
+ * Fout = Fref * NF(mult) / NR(prediv) / OD
+ * @pll: pll identifier
+ */
+static unsigned long pll_freq_get(int pll)
+{
+ unsigned long mult = 1, prediv = 1, output_div = 2;
+ unsigned long ret;
+ u32 tmp, reg;
+
+ if (pll == CORE_PLL) {
+ ret = external_clk[sys_clk];
+ if (pllctl_reg_read(pll, ctl) & PLLCTL_PLLEN) {
+ /* PLL mode */
+ tmp = __raw_readl(KS2_MAINPLLCTL0);
+ prediv = (tmp & PLL_DIV_MASK) + 1;
+ mult = (((tmp & PLLM_MULT_HI_SMASK) >> 6) |
+ (pllctl_reg_read(pll, mult) &
+ PLLM_MULT_LO_MASK)) + 1;
+ output_div = ((pllctl_reg_read(pll, secctl) >>
+ PLL_CLKOD_SHIFT) & PLL_CLKOD_MASK) + 1;
+
+ ret = ret / prediv / output_div * mult;
+ }
+ } else {
+ switch (pll) {
+ case PASS_PLL:
+ ret = external_clk[pa_clk];
+ reg = KS2_PASSPLLCTL0;
+ break;
+ case TETRIS_PLL:
+ ret = external_clk[tetris_clk];
+ reg = KS2_ARMPLLCTL0;
+ break;
+ case DDR3A_PLL:
+ ret = external_clk[ddr3a_clk];
+ reg = KS2_DDR3APLLCTL0;
+ break;
+ case DDR3B_PLL:
+ ret = external_clk[ddr3b_clk];
+ reg = KS2_DDR3BPLLCTL0;
+ break;
+ default:
+ return 0;
+ }
+
+ tmp = __raw_readl(reg);
+
+ if (!(tmp & PLLCTL_BYPASS)) {
+ /* Bypass disabled */
+ prediv = (tmp & PLL_DIV_MASK) + 1;
+ mult = ((tmp >> PLL_MULT_SHIFT) & PLL_MULT_MASK) + 1;
+ output_div = ((tmp >> PLL_CLKOD_SHIFT) &
+ PLL_CLKOD_MASK) + 1;
+ ret = ((ret / prediv) * mult) / output_div;
+ }
+ }
+
+ return ret;
+}
+
+unsigned long clk_get_rate(unsigned int clk)
+{
+ switch (clk) {
+ case core_pll_clk: return pll_freq_get(CORE_PLL);
+ case pass_pll_clk: return pll_freq_get(PASS_PLL);
+ case tetris_pll_clk: return pll_freq_get(TETRIS_PLL);
+ case ddr3a_pll_clk: return pll_freq_get(DDR3A_PLL);
+ case ddr3b_pll_clk: return pll_freq_get(DDR3B_PLL);
+ case sys_clk0_1_clk:
+ case sys_clk0_clk: return pll_freq_get(CORE_PLL) / pll0div_read(1);
+ case sys_clk1_clk: return pll_freq_get(CORE_PLL) / pll0div_read(2);
+ case sys_clk2_clk: return pll_freq_get(CORE_PLL) / pll0div_read(3);
+ case sys_clk3_clk: return pll_freq_get(CORE_PLL) / pll0div_read(4);
+ case sys_clk0_2_clk: return clk_get_rate(sys_clk0_clk) / 2;
+ case sys_clk0_3_clk: return clk_get_rate(sys_clk0_clk) / 3;
+ case sys_clk0_4_clk: return clk_get_rate(sys_clk0_clk) / 4;
+ case sys_clk0_6_clk: return clk_get_rate(sys_clk0_clk) / 6;
+ case sys_clk0_8_clk: return clk_get_rate(sys_clk0_clk) / 8;
+ case sys_clk0_12_clk: return clk_get_rate(sys_clk0_clk) / 12;
+ case sys_clk0_24_clk: return clk_get_rate(sys_clk0_clk) / 24;
+ case sys_clk1_3_clk: return clk_get_rate(sys_clk1_clk) / 3;
+ case sys_clk1_4_clk: return clk_get_rate(sys_clk1_clk) / 4;
+ case sys_clk1_6_clk: return clk_get_rate(sys_clk1_clk) / 6;
+ case sys_clk1_12_clk: return clk_get_rate(sys_clk1_clk) / 12;
+ default:
+ break;
+ }
+
+ return 0;
+}
diff --git a/arch/arm/cpu/armv7/keystone/clock.c b/arch/arm/cpu/armv7/keystone/clock.c
index bfa4c9d..03c1d9f 100644
--- a/arch/arm/cpu/armv7/keystone/clock.c
+++ b/arch/arm/cpu/armv7/keystone/clock.c
@@ -8,9 +8,6 @@
*/
#include <common.h>
-#include <asm-generic/errno.h>
-#include <asm/io.h>
-#include <asm/processor.h>
#include <asm/arch/clock.h>
#include <asm/arch/clock_defs.h>
@@ -24,106 +21,6 @@ static void wait_for_completion(const struct pll_init_data *data)
}
}
-struct pll_regs {
- u32 reg0, reg1;
-};
-
-static const struct pll_regs pll_regs[] = {
- [CORE_PLL] = { K2HK_MAINPLLCTL0, K2HK_MAINPLLCTL1},
- [PASS_PLL] = { K2HK_PASSPLLCTL0, K2HK_PASSPLLCTL1},
- [TETRIS_PLL] = { K2HK_ARMPLLCTL0, K2HK_ARMPLLCTL1},
- [DDR3A_PLL] = { K2HK_DDR3APLLCTL0, K2HK_DDR3APLLCTL1},
- [DDR3B_PLL] = { K2HK_DDR3BPLLCTL0, K2HK_DDR3BPLLCTL1},
-};
-
-/* Fout = Fref * NF(mult) / NR(prediv) / OD */
-static unsigned long pll_freq_get(int pll)
-{
- unsigned long mult = 1, prediv = 1, output_div = 2;
- unsigned long ret;
- u32 tmp, reg;
-
- if (pll == CORE_PLL) {
- ret = external_clk[sys_clk];
- if (pllctl_reg_read(pll, ctl) & PLLCTL_PLLEN) {
- /* PLL mode */
- tmp = __raw_readl(K2HK_MAINPLLCTL0);
- prediv = (tmp & PLL_DIV_MASK) + 1;
- mult = (((tmp & PLLM_MULT_HI_SMASK) >> 6) |
- (pllctl_reg_read(pll, mult) &
- PLLM_MULT_LO_MASK)) + 1;
- output_div = ((pllctl_reg_read(pll, secctl) >>
- PLL_CLKOD_SHIFT) & PLL_CLKOD_MASK) + 1;
-
- ret = ret / prediv / output_div * mult;
- }
- } else {
- switch (pll) {
- case PASS_PLL:
- ret = external_clk[pa_clk];
- reg = K2HK_PASSPLLCTL0;
- break;
- case TETRIS_PLL:
- ret = external_clk[tetris_clk];
- reg = K2HK_ARMPLLCTL0;
- break;
- case DDR3A_PLL:
- ret = external_clk[ddr3a_clk];
- reg = K2HK_DDR3APLLCTL0;
- break;
- case DDR3B_PLL:
- ret = external_clk[ddr3b_clk];
- reg = K2HK_DDR3BPLLCTL0;
- break;
- default:
- return 0;
- }
-
- tmp = __raw_readl(reg);
-
- if (!(tmp & PLLCTL_BYPASS)) {
- /* Bypass disabled */
- prediv = (tmp & PLL_DIV_MASK) + 1;
- mult = ((tmp >> PLL_MULT_SHIFT) & PLL_MULT_MASK) + 1;
- output_div = ((tmp >> PLL_CLKOD_SHIFT) &
- PLL_CLKOD_MASK) + 1;
- ret = ((ret / prediv) * mult) / output_div;
- }
- }
-
- return ret;
-}
-
-unsigned long clk_get_rate(unsigned int clk)
-{
- switch (clk) {
- case core_pll_clk: return pll_freq_get(CORE_PLL);
- case pass_pll_clk: return pll_freq_get(PASS_PLL);
- case tetris_pll_clk: return pll_freq_get(TETRIS_PLL);
- case ddr3a_pll_clk: return pll_freq_get(DDR3A_PLL);
- case ddr3b_pll_clk: return pll_freq_get(DDR3B_PLL);
- case sys_clk0_1_clk:
- case sys_clk0_clk: return pll_freq_get(CORE_PLL) / pll0div_read(1);
- case sys_clk1_clk: return pll_freq_get(CORE_PLL) / pll0div_read(2);
- case sys_clk2_clk: return pll_freq_get(CORE_PLL) / pll0div_read(3);
- case sys_clk3_clk: return pll_freq_get(CORE_PLL) / pll0div_read(4);
- case sys_clk0_2_clk: return clk_get_rate(sys_clk0_clk) / 2;
- case sys_clk0_3_clk: return clk_get_rate(sys_clk0_clk) / 3;
- case sys_clk0_4_clk: return clk_get_rate(sys_clk0_clk) / 4;
- case sys_clk0_6_clk: return clk_get_rate(sys_clk0_clk) / 6;
- case sys_clk0_8_clk: return clk_get_rate(sys_clk0_clk) / 8;
- case sys_clk0_12_clk: return clk_get_rate(sys_clk0_clk) / 12;
- case sys_clk0_24_clk: return clk_get_rate(sys_clk0_clk) / 24;
- case sys_clk1_3_clk: return clk_get_rate(sys_clk1_clk) / 3;
- case sys_clk1_4_clk: return clk_get_rate(sys_clk1_clk) / 4;
- case sys_clk1_6_clk: return clk_get_rate(sys_clk1_clk) / 6;
- case sys_clk1_12_clk: return clk_get_rate(sys_clk1_clk) / 12;
- default:
- break;
- }
- return 0;
-}
-
void init_pll(const struct pll_init_data *data)
{
u32 tmp, tmp_ctl, pllm, plld, pllod, bwadj;
@@ -139,7 +36,7 @@ void init_pll(const struct pll_init_data *data)
tmp = pllctl_reg_read(data->pll, secctl);
if (tmp & (PLLCTL_BYPASS)) {
- setbits_le32(pll_regs[data->pll].reg1,
+ setbits_le32(keystone_pll_regs[data->pll].reg1,
BIT(MAIN_ENSAT_OFFSET));
pllctl_reg_clrbits(data->pll, ctl, PLLCTL_PLLEN |
@@ -159,21 +56,24 @@ void init_pll(const struct pll_init_data *data)
pllctl_reg_write(data->pll, mult, pllm & PLLM_MULT_LO_MASK);
- clrsetbits_le32(pll_regs[data->pll].reg0, PLLM_MULT_HI_SMASK,
- (pllm << 6));
+ clrsetbits_le32(keystone_pll_regs[data->pll].reg0,
+ PLLM_MULT_HI_SMASK, (pllm << 6));
/* Set the BWADJ (12 bit field) */
tmp_ctl = pllm >> 1; /* Divide the pllm by 2 */
- clrsetbits_le32(pll_regs[data->pll].reg0, PLL_BWADJ_LO_SMASK,
+ clrsetbits_le32(keystone_pll_regs[data->pll].reg0,
+ PLL_BWADJ_LO_SMASK,
(tmp_ctl << PLL_BWADJ_LO_SHIFT));
- clrsetbits_le32(pll_regs[data->pll].reg1, PLL_BWADJ_HI_MASK,
+ clrsetbits_le32(keystone_pll_regs[data->pll].reg1,
+ PLL_BWADJ_HI_MASK,
(tmp_ctl >> 8));
/*
* Set the pll divider (6 bit field) *
* PLLD[5:0] is located in MAINPLLCTL0
*/
- clrsetbits_le32(pll_regs[data->pll].reg0, PLL_DIV_MASK, plld);
+ clrsetbits_le32(keystone_pll_regs[data->pll].reg0,
+ PLL_DIV_MASK, plld);
/* Set the OUTPUT DIVIDE (4 bit field) in SECCTL */
pllctl_reg_rmw(data->pll, secctl, PLL_CLKOD_SMASK,
@@ -206,17 +106,18 @@ void init_pll(const struct pll_init_data *data)
tmp = pllctl_reg_setbits(data->pll, ctl, PLLCTL_PLLEN);
+#ifndef CONFIG_SOC_K2E
} else if (data->pll == TETRIS_PLL) {
bwadj = pllm >> 1;
/* 1.5 Set PLLCTL0[BYPASS] =1 (enable bypass), */
- setbits_le32(pll_regs[data->pll].reg0, PLLCTL_BYPASS);
+ setbits_le32(keystone_pll_regs[data->pll].reg0, PLLCTL_BYPASS);
/*
* Set CHIPMISCCTL1[13] = 0 (enable glitchfree bypass)
* only applicable for Kepler
*/
- clrbits_le32(K2HK_MISC_CTRL, ARM_PLL_EN);
+ clrbits_le32(KS2_MISC_CTRL, KS2_ARM_PLL_EN);
/* 2 In PLLCTL1, write PLLRST = 1 (PLL is reset) */
- setbits_le32(pll_regs[data->pll].reg1 ,
+ setbits_le32(keystone_pll_regs[data->pll].reg1 ,
PLL_PLLRST | PLLCTL_ENSAT);
/*
@@ -229,13 +130,13 @@ void init_pll(const struct pll_init_data *data)
(pllm << 6) |
(plld & PLL_DIV_MASK) |
(pllod << PLL_CLKOD_SHIFT) | PLLCTL_BYPASS;
- __raw_writel(tmp, pll_regs[data->pll].reg0);
+ __raw_writel(tmp, keystone_pll_regs[data->pll].reg0);
/* Set BWADJ[11:8] bits */
- tmp = __raw_readl(pll_regs[data->pll].reg1);
+ tmp = __raw_readl(keystone_pll_regs[data->pll].reg1);
tmp &= ~(PLL_BWADJ_HI_MASK);
tmp |= ((bwadj>>8) & PLL_BWADJ_HI_MASK);
- __raw_writel(tmp, pll_regs[data->pll].reg1);
+ __raw_writel(tmp, keystone_pll_regs[data->pll].reg1);
/*
* 5 Wait for at least 5 us based on the reference
* clock (PLL reset time)
@@ -243,26 +144,27 @@ void init_pll(const struct pll_init_data *data)
sdelay(21000); /* Wait for a minimum of 7 us*/
/* 6 In PLLCTL1, write PLLRST = 0 (PLL reset is released) */
- clrbits_le32(pll_regs[data->pll].reg1, PLL_PLLRST);
+ clrbits_le32(keystone_pll_regs[data->pll].reg1, PLL_PLLRST);
/*
* 7 Wait for at least 500 * REFCLK cycles * (PLLD + 1)
* (PLL lock time)
*/
sdelay(105000);
/* 8 disable bypass */
- clrbits_le32(pll_regs[data->pll].reg0, PLLCTL_BYPASS);
+ clrbits_le32(keystone_pll_regs[data->pll].reg0, PLLCTL_BYPASS);
/*
* 9 Set CHIPMISCCTL1[13] = 1 (disable glitchfree bypass)
* only applicable for Kepler
*/
- setbits_le32(K2HK_MISC_CTRL, ARM_PLL_EN);
+ setbits_le32(KS2_MISC_CTRL, KS2_ARM_PLL_EN);
+#endif
} else {
- setbits_le32(pll_regs[data->pll].reg1, PLLCTL_ENSAT);
+ setbits_le32(keystone_pll_regs[data->pll].reg1, PLLCTL_ENSAT);
/*
* process keeps state of Bypass bit while programming
* all other DDR PLL settings
*/
- tmp = __raw_readl(pll_regs[data->pll].reg0);
+ tmp = __raw_readl(keystone_pll_regs[data->pll].reg0);
tmp &= PLLCTL_BYPASS; /* clear everything except Bypass */
/*
@@ -274,10 +176,10 @@ void init_pll(const struct pll_init_data *data)
(pllm << PLL_MULT_SHIFT) |
(plld & PLL_DIV_MASK) |
(pllod << PLL_CLKOD_SHIFT);
- __raw_writel(tmp, pll_regs[data->pll].reg0);
+ __raw_writel(tmp, keystone_pll_regs[data->pll].reg0);
/* Set BWADJ[11:8] bits */
- tmp = __raw_readl(pll_regs[data->pll].reg1);
+ tmp = __raw_readl(keystone_pll_regs[data->pll].reg1);
tmp &= ~(PLL_BWADJ_HI_MASK);
tmp |= ((bwadj >> 8) & PLL_BWADJ_HI_MASK);
@@ -285,20 +187,20 @@ void init_pll(const struct pll_init_data *data)
if (data->pll == PASS_PLL)
tmp |= PLLCTL_PAPLL;
- __raw_writel(tmp, pll_regs[data->pll].reg1);
+ __raw_writel(tmp, keystone_pll_regs[data->pll].reg1);
/* Reset bit: bit 14 for both DDR3 & PASS PLL */
tmp = PLL_PLLRST;
/* Set RESET bit = 1 */
- setbits_le32(pll_regs[data->pll].reg1, tmp);
+ setbits_le32(keystone_pll_regs[data->pll].reg1, tmp);
/* Wait for a minimum of 7 us*/
sdelay(21000);
/* Clear RESET bit */
- clrbits_le32(pll_regs[data->pll].reg1, tmp);
+ clrbits_le32(keystone_pll_regs[data->pll].reg1, tmp);
sdelay(105000);
/* clear BYPASS (Enable PLL Mode) */
- clrbits_le32(pll_regs[data->pll].reg0, PLLCTL_BYPASS);
+ clrbits_le32(keystone_pll_regs[data->pll].reg0, PLLCTL_BYPASS);
sdelay(21000); /* Wait for a minimum of 7 us*/
}
diff --git a/arch/arm/cpu/armv7/keystone/cmd_clock.c b/arch/arm/cpu/armv7/keystone/cmd_clock.c
index afd30f3..d97c95b 100644
--- a/arch/arm/cpu/armv7/keystone/cmd_clock.c
+++ b/arch/arm/cpu/armv7/keystone/cmd_clock.c
@@ -14,10 +14,10 @@
#include <asm/arch/psc_defs.h>
struct pll_init_data cmd_pll_data = {
- .pll = MAIN_PLL,
- .pll_m = 16,
- .pll_d = 1,
- .pll_od = 2,
+ .pll = MAIN_PLL,
+ .pll_m = 16,
+ .pll_d = 1,
+ .pll_od = 2,
};
int do_pll_cmd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
@@ -27,12 +27,19 @@ int do_pll_cmd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
if (strncmp(argv[1], "pa", 2) == 0)
cmd_pll_data.pll = PASS_PLL;
+#ifndef CONFIG_SOC_K2E
else if (strncmp(argv[1], "arm", 3) == 0)
cmd_pll_data.pll = TETRIS_PLL;
+#endif
+#ifdef CONFIG_SOC_K2HK
else if (strncmp(argv[1], "ddr3a", 5) == 0)
cmd_pll_data.pll = DDR3A_PLL;
else if (strncmp(argv[1], "ddr3b", 5) == 0)
cmd_pll_data.pll = DDR3B_PLL;
+#else
+ else if (strncmp(argv[1], "ddr3", 4) == 0)
+ cmd_pll_data.pll = DDR3_PLL;
+#endif
else
goto pll_cmd_usage;
@@ -51,11 +58,20 @@ pll_cmd_usage:
return cmd_usage(cmdtp);
}
+#ifdef CONFIG_SOC_K2HK
U_BOOT_CMD(
pllset, 5, 0, do_pll_cmd,
"set pll multiplier and pre divider",
"<pa|arm|ddr3a|ddr3b> <mult> <div> <OD>\n"
);
+#endif
+#ifdef CONFIG_SOC_K2E
+U_BOOT_CMD(
+ pllset, 5, 0, do_pll_cmd,
+ "set pll multiplier and pre divider",
+ "<pa|ddr3> <mult> <div> <OD>\n"
+);
+#endif
int do_getclk_cmd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
@@ -79,7 +95,12 @@ U_BOOT_CMD(
getclk, 2, 0, do_getclk_cmd,
"get clock rate",
"<clk index>\n"
- "See the 'enum clk_e' in the k2hk clock.h for clk indexes\n"
+#ifdef CONFIG_SOC_K2HK
+ "See the 'enum clk_e' in the clock-k2hk.h for clk indexes\n"
+#endif
+#ifdef CONFIG_SOC_K2E
+ "See the 'enum clk_e' in the clock-k2e.h for clk indexes\n"
+#endif
);
int do_psc_cmd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
diff --git a/arch/arm/cpu/armv7/keystone/ddr3.c b/arch/arm/cpu/armv7/keystone/ddr3.c
index 4875db7..2391e79 100644
--- a/arch/arm/cpu/armv7/keystone/ddr3.c
+++ b/arch/arm/cpu/armv7/keystone/ddr3.c
@@ -7,10 +7,11 @@
* SPDX-License-Identifier: GPL-2.0+
*/
-#include <asm/arch/hardware.h>
#include <asm/io.h>
+#include <common.h>
+#include <asm/arch/ddr3.h>
-void init_ddrphy(u32 base, struct ddr3_phy_config *phy_cfg)
+void ddr3_init_ddrphy(u32 base, struct ddr3_phy_config *phy_cfg)
{
unsigned int tmp;
@@ -57,7 +58,7 @@ void init_ddrphy(u32 base, struct ddr3_phy_config *phy_cfg)
;
}
-void init_ddremif(u32 base, struct ddr3_emif_config *emif_cfg)
+void ddr3_init_ddremif(u32 base, struct ddr3_emif_config *emif_cfg)
{
__raw_writel(emif_cfg->sdcfg, base + KS2_DDR3_SDCFG_OFFSET);
__raw_writel(emif_cfg->sdtim1, base + KS2_DDR3_SDTIM1_OFFSET);
@@ -67,3 +68,21 @@ void init_ddremif(u32 base, struct ddr3_emif_config *emif_cfg)
__raw_writel(emif_cfg->zqcfg, base + KS2_DDR3_ZQCFG_OFFSET);
__raw_writel(emif_cfg->sdrfc, base + KS2_DDR3_SDRFC_OFFSET);
}
+
+void ddr3_reset_ddrphy(void)
+{
+ u32 tmp;
+
+ /* Assert DDR3A PHY reset */
+ tmp = readl(KS2_DDR3APLLCTL1);
+ tmp |= KS2_DDR3_PLLCTRL_PHY_RESET;
+ writel(tmp, KS2_DDR3APLLCTL1);
+
+ /* wait 10us to catch the reset */
+ udelay(10);
+
+ /* Release DDR3A PHY reset */
+ tmp = readl(KS2_DDR3APLLCTL1);
+ tmp &= ~KS2_DDR3_PLLCTRL_PHY_RESET;
+ __raw_writel(tmp, KS2_DDR3APLLCTL1);
+}
diff --git a/arch/arm/cpu/armv7/keystone/init.c b/arch/arm/cpu/armv7/keystone/init.c
index 4df5ae1..a8f8aee 100644
--- a/arch/arm/cpu/armv7/keystone/init.c
+++ b/arch/arm/cpu/armv7/keystone/init.c
@@ -10,13 +10,14 @@
#include <common.h>
#include <ns16550.h>
#include <asm/io.h>
+#include <asm/arch/msmc.h>
#include <asm/arch/clock.h>
#include <asm/arch/hardware.h>
void chip_configuration_unlock(void)
{
- __raw_writel(KEYSTONE_KICK0_MAGIC, KEYSTONE_KICK0);
- __raw_writel(KEYSTONE_KICK1_MAGIC, KEYSTONE_KICK1);
+ __raw_writel(KS2_KICK0_MAGIC, KS2_KICK0);
+ __raw_writel(KS2_KICK1_MAGIC, KS2_KICK1);
}
int arch_cpu_init(void)
@@ -24,11 +25,12 @@ int arch_cpu_init(void)
chip_configuration_unlock();
icache_enable();
-#ifdef CONFIG_SOC_K2HK
- share_all_segments(8);
- share_all_segments(9);
- share_all_segments(10); /* QM PDSP */
- share_all_segments(11); /* PCIE */
+ msmc_share_all_segments(8); /* TETRIS */
+ msmc_share_all_segments(9); /* NETCP */
+ msmc_share_all_segments(10); /* QM PDSP */
+ msmc_share_all_segments(11); /* PCIE 0 */
+#ifdef CONFIG_SOC_K2E
+ msmc_share_all_segments(13); /* PCIE 1 */
#endif
/*
diff --git a/arch/arm/cpu/armv7/keystone/keystone.c b/arch/arm/cpu/armv7/keystone/keystone.c
new file mode 100644
index 0000000..11a9357
--- /dev/null
+++ b/arch/arm/cpu/armv7/keystone/keystone.c
@@ -0,0 +1,87 @@
+/*
+ * Keystone EVM : Board initialization
+ *
+ * (C) Copyright 2014
+ * Texas Instruments Incorporated, <www.ti.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/mon.h>
+#include <asm/arch/psc_defs.h>
+#include <asm/arch/hardware.h>
+#include <asm/arch/hardware.h>
+
+/**
+ * cpu_to_bus - swap bytes of the 32-bit data if the device is BE
+ * @ptr - array of data
+ * @length - lenght of data array
+ */
+int cpu_to_bus(u32 *ptr, u32 length)
+{
+ u32 i;
+
+ if (!(readl(KS2_DEVSTAT) & 0x1))
+ for (i = 0; i < length; i++, ptr++)
+ *ptr = cpu_to_be32(*ptr);
+
+ return 0;
+}
+
+static int turn_off_myself(void)
+{
+ printf("Turning off ourselves\r\n");
+ mon_power_off(0);
+
+ psc_disable_module(KS2_LPSC_TETRIS);
+ psc_disable_domain(KS2_TETRIS_PWR_DOMAIN);
+
+ asm volatile ("isb\n"
+ "dsb\n"
+ "wfi\n");
+
+ printf("What! Should not see that\n");
+ return 0;
+}
+
+static void turn_off_all_dsps(int num_dsps)
+{
+ int i;
+
+ for (i = 0; i < num_dsps; i++) {
+ if (psc_disable_module(i + KS2_LPSC_GEM_0))
+ printf("Cannot disable module for #%d DSP", i);
+
+ if (psc_disable_domain(i + 8))
+ printf("Cannot disable domain for #%d DSP", i);
+ }
+}
+
+int do_killme_cmd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+ return turn_off_myself();
+}
+
+U_BOOT_CMD(
+ killme, 1, 0, do_killme_cmd,
+ "turn off main ARM core",
+ "turn off main ARM core. Should not live after that :(\n"
+);
+
+int misc_init_r(void)
+{
+ char *env;
+ long ks2_debug = 0;
+
+ env = getenv("ks2_debug");
+
+ if (env)
+ ks2_debug = simple_strtol(env, NULL, 0);
+
+ if ((ks2_debug & DBG_LEAVE_DSPS_ON) == 0)
+ turn_off_all_dsps(KS2_NUM_DSPS);
+
+ return 0;
+}
diff --git a/arch/arm/cpu/armv7/keystone/msmc.c b/arch/arm/cpu/armv7/keystone/msmc.c
index f3f1621..7d8e597 100644
--- a/arch/arm/cpu/armv7/keystone/msmc.c
+++ b/arch/arm/cpu/armv7/keystone/msmc.c
@@ -8,7 +8,7 @@
*/
#include <common.h>
-#include <asm/arch/hardware.h>
+#include <asm/arch/msmc.h>
struct mpax {
u32 mpaxl;
@@ -56,9 +56,9 @@ struct msms_regs {
};
-void share_all_segments(int priv_id)
+void msmc_share_all_segments(int priv_id)
{
- struct msms_regs *msmc = (struct msms_regs *)K2HK_MSMC_CTRL_BASE;
+ struct msms_regs *msmc = (struct msms_regs *)KS2_MSMC_CTRL_BASE;
int j;
for (j = 0; j < 8; j++) {
diff --git a/arch/arm/cpu/armv7/keystone/psc.c b/arch/arm/cpu/armv7/keystone/psc.c
index c844dc8..fa5422f 100644
--- a/arch/arm/cpu/armv7/keystone/psc.c
+++ b/arch/arm/cpu/armv7/keystone/psc.c
@@ -16,10 +16,6 @@
#define DEVICE_REG32_R(addr) __raw_readl((u32 *)(addr))
#define DEVICE_REG32_W(addr, val) __raw_writel(val, (u32 *)(addr))
-#ifdef CONFIG_SOC_K2HK
-#define DEVICE_PSC_BASE K2HK_PSC_BASE
-#endif
-
int psc_delay(void)
{
udelay(10);
@@ -55,7 +51,7 @@ int psc_wait(u32 domain_num)
retry = 0;
do {
- ptstat = DEVICE_REG32_R(DEVICE_PSC_BASE + PSC_REG_PSTAT);
+ ptstat = DEVICE_REG32_R(KS2_PSC_BASE + PSC_REG_PSTAT);
ptstat = ptstat & (1 << domain_num);
} while ((ptstat != 0) && ((retry += psc_delay()) <
PSC_PTSTAT_TIMEOUT_LIMIT));
@@ -71,7 +67,7 @@ u32 psc_get_domain_num(u32 mod_num)
u32 domain_num;
/* Get the power domain associated with the module number */
- domain_num = DEVICE_REG32_R(DEVICE_PSC_BASE +
+ domain_num = DEVICE_REG32_R(KS2_PSC_BASE +
PSC_REG_MDCFG(mod_num));
domain_num = PSC_REG_MDCFG_GET_PD(domain_num);
@@ -106,7 +102,7 @@ int psc_set_state(u32 mod_num, u32 state)
* Get the power domain associated with the module number, and reset
* isolation functionality
*/
- v = DEVICE_REG32_R(DEVICE_PSC_BASE + PSC_REG_MDCFG(mod_num));
+ v = DEVICE_REG32_R(KS2_PSC_BASE + PSC_REG_MDCFG(mod_num));
domain_num = PSC_REG_MDCFG_GET_PD(v);
reset_iso = PSC_REG_MDCFG_GET_RESET_ISO(v);
@@ -123,24 +119,24 @@ int psc_set_state(u32 mod_num, u32 state)
* change is made if the new state is power down.
*/
if (state == PSC_REG_VAL_MDCTL_NEXT_ON) {
- pdctl = DEVICE_REG32_R(DEVICE_PSC_BASE +
+ pdctl = DEVICE_REG32_R(KS2_PSC_BASE +
PSC_REG_PDCTL(domain_num));
pdctl = PSC_REG_PDCTL_SET_NEXT(pdctl,
PSC_REG_VAL_PDCTL_NEXT_ON);
- DEVICE_REG32_W(DEVICE_PSC_BASE + PSC_REG_PDCTL(domain_num),
+ DEVICE_REG32_W(KS2_PSC_BASE + PSC_REG_PDCTL(domain_num),
pdctl);
}
/* Set the next state for the module to enabled/disabled */
- mdctl = DEVICE_REG32_R(DEVICE_PSC_BASE + PSC_REG_MDCTL(mod_num));
+ mdctl = DEVICE_REG32_R(KS2_PSC_BASE + PSC_REG_MDCTL(mod_num));
mdctl = PSC_REG_MDCTL_SET_NEXT(mdctl, state);
mdctl = PSC_REG_MDCTL_SET_RESET_ISO(mdctl, reset_iso);
- DEVICE_REG32_W(DEVICE_PSC_BASE + PSC_REG_MDCTL(mod_num), mdctl);
+ DEVICE_REG32_W(KS2_PSC_BASE + PSC_REG_MDCTL(mod_num), mdctl);
/* Trigger the enable */
- ptcmd = DEVICE_REG32_R(DEVICE_PSC_BASE + PSC_REG_PTCMD);
+ ptcmd = DEVICE_REG32_R(KS2_PSC_BASE + PSC_REG_PTCMD);
ptcmd |= (u32)(1<<domain_num);
- DEVICE_REG32_W(DEVICE_PSC_BASE + PSC_REG_PTCMD, ptcmd);
+ DEVICE_REG32_W(KS2_PSC_BASE + PSC_REG_PTCMD, ptcmd);
/* Wait on the complete */
return psc_wait(domain_num);
@@ -161,7 +157,7 @@ int psc_enable_module(u32 mod_num)
u32 mdctl;
/* Set the bit to apply reset */
- mdctl = DEVICE_REG32_R(DEVICE_PSC_BASE + PSC_REG_MDCTL(mod_num));
+ mdctl = DEVICE_REG32_R(KS2_PSC_BASE + PSC_REG_MDCTL(mod_num));
if ((mdctl & 0x3f) == PSC_REG_VAL_MDSTAT_STATE_ON)
return 0;
@@ -180,11 +176,11 @@ int psc_disable_module(u32 mod_num)
u32 mdctl;
/* Set the bit to apply reset */
- mdctl = DEVICE_REG32_R(DEVICE_PSC_BASE + PSC_REG_MDCTL(mod_num));
+ mdctl = DEVICE_REG32_R(KS2_PSC_BASE + PSC_REG_MDCTL(mod_num));
if ((mdctl & 0x3f) == 0)
return 0;
mdctl = PSC_REG_MDCTL_SET_LRSTZ(mdctl, 0);
- DEVICE_REG32_W(DEVICE_PSC_BASE + PSC_REG_MDCTL(mod_num), mdctl);
+ DEVICE_REG32_W(KS2_PSC_BASE + PSC_REG_MDCTL(mod_num), mdctl);
return psc_set_state(mod_num, PSC_REG_VAL_MDCTL_NEXT_SWRSTDISABLE);
}
@@ -203,11 +199,11 @@ int psc_set_reset_iso(u32 mod_num)
u32 mdctl;
/* Set the reset isolation bit */
- mdctl = DEVICE_REG32_R(DEVICE_PSC_BASE + PSC_REG_MDCTL(mod_num));
+ mdctl = DEVICE_REG32_R(KS2_PSC_BASE + PSC_REG_MDCTL(mod_num));
mdctl = PSC_REG_MDCTL_SET_RESET_ISO(mdctl, 1);
- DEVICE_REG32_W(DEVICE_PSC_BASE + PSC_REG_MDCTL(mod_num), mdctl);
+ DEVICE_REG32_W(KS2_PSC_BASE + PSC_REG_MDCTL(mod_num), mdctl);
- v = DEVICE_REG32_R(DEVICE_PSC_BASE + PSC_REG_MDCFG(mod_num));
+ v = DEVICE_REG32_R(KS2_PSC_BASE + PSC_REG_MDCFG(mod_num));
if (PSC_REG_MDCFG_GET_RESET_ISO(v) == 1)
return 0;
@@ -224,14 +220,14 @@ int psc_disable_domain(u32 domain_num)
u32 pdctl;
u32 ptcmd;
- pdctl = DEVICE_REG32_R(DEVICE_PSC_BASE + PSC_REG_PDCTL(domain_num));
+ pdctl = DEVICE_REG32_R(KS2_PSC_BASE + PSC_REG_PDCTL(domain_num));
pdctl = PSC_REG_PDCTL_SET_NEXT(pdctl, PSC_REG_VAL_PDCTL_NEXT_OFF);
pdctl = PSC_REG_PDCTL_SET_PDMODE(pdctl, PSC_REG_VAL_PDCTL_PDMODE_SLEEP);
- DEVICE_REG32_W(DEVICE_PSC_BASE + PSC_REG_PDCTL(domain_num), pdctl);
+ DEVICE_REG32_W(KS2_PSC_BASE + PSC_REG_PDCTL(domain_num), pdctl);
- ptcmd = DEVICE_REG32_R(DEVICE_PSC_BASE + PSC_REG_PTCMD);
+ ptcmd = DEVICE_REG32_R(KS2_PSC_BASE + PSC_REG_PTCMD);
ptcmd |= (u32)(1 << domain_num);
- DEVICE_REG32_W(DEVICE_PSC_BASE + PSC_REG_PTCMD, ptcmd);
+ DEVICE_REG32_W(KS2_PSC_BASE + PSC_REG_PTCMD, ptcmd);
return psc_wait(domain_num);
}
diff --git a/arch/arm/cpu/armv7/keystone/spl.c b/arch/arm/cpu/armv7/keystone/spl.c
index e07b64d..d4b0e9b 100644
--- a/arch/arm/cpu/armv7/keystone/spl.c
+++ b/arch/arm/cpu/armv7/keystone/spl.c
@@ -18,10 +18,18 @@
DECLARE_GLOBAL_DATA_PTR;
+#ifdef CONFIG_K2HK_EVM
static struct pll_init_data spl_pll_config[] = {
CORE_PLL_799,
TETRIS_PLL_500,
};
+#endif
+
+#ifdef CONFIG_K2E_EVM
+static struct pll_init_data spl_pll_config[] = {
+ CORE_PLL_800,
+};
+#endif
void spl_init_keystone_plls(void)
{
diff --git a/arch/arm/cpu/armv7/nonsec_virt.S b/arch/arm/cpu/armv7/nonsec_virt.S
index 6367e09..745670e 100644
--- a/arch/arm/cpu/armv7/nonsec_virt.S
+++ b/arch/arm/cpu/armv7/nonsec_virt.S
@@ -10,10 +10,13 @@
#include <linux/linkage.h>
#include <asm/gic.h>
#include <asm/armv7.h>
+#include <asm/proc-armv/ptrace.h>
.arch_extension sec
.arch_extension virt
+ .pushsection ._secure.text, "ax"
+
.align 5
/* the vector table for secure state and HYP mode */
_monitor_vectors:
@@ -22,43 +25,95 @@ _monitor_vectors:
adr pc, _secure_monitor
.word 0
.word 0
- adr pc, _hyp_trap
+ .word 0
.word 0
.word 0
+.macro is_cpu_virt_capable tmp
+ mrc p15, 0, \tmp, c0, c1, 1 @ read ID_PFR1
+ and \tmp, \tmp, #CPUID_ARM_VIRT_MASK @ mask virtualization bits
+ cmp \tmp, #(1 << CPUID_ARM_VIRT_SHIFT)
+.endm
+
/*
* secure monitor handler
* U-boot calls this "software interrupt" in start.S
* This is executed on a "smc" instruction, we use a "smc #0" to switch
* to non-secure state.
- * We use only r0 and r1 here, due to constraints in the caller.
+ * r0, r1, r2: passed to the callee
+ * ip: target PC
*/
_secure_monitor:
- mrc p15, 0, r1, c1, c1, 0 @ read SCR
- bic r1, r1, #0x4e @ clear IRQ, FIQ, EA, nET bits
- orr r1, r1, #0x31 @ enable NS, AW, FW bits
+#ifdef CONFIG_ARMV7_PSCI
+ ldr r5, =_psci_vectors @ Switch to the next monitor
+ mcr p15, 0, r5, c12, c0, 1
+ isb
-#ifdef CONFIG_ARMV7_VIRT
- mrc p15, 0, r0, c0, c1, 1 @ read ID_PFR1
- and r0, r0, #CPUID_ARM_VIRT_MASK @ mask virtualization bits
- cmp r0, #(1 << CPUID_ARM_VIRT_SHIFT)
- orreq r1, r1, #0x100 @ allow HVC instruction
+ @ Obtain a secure stack, and configure the PSCI backend
+ bl psci_arch_init
#endif
- mcr p15, 0, r1, c1, c1, 0 @ write SCR (with NS bit set)
-
+ mrc p15, 0, r5, c1, c1, 0 @ read SCR
+ bic r5, r5, #0x4a @ clear IRQ, EA, nET bits
+ orr r5, r5, #0x31 @ enable NS, AW, FW bits
+ @ FIQ preserved for secure mode
+ mov r6, #SVC_MODE @ default mode is SVC
+ is_cpu_virt_capable r4
#ifdef CONFIG_ARMV7_VIRT
- mrceq p15, 0, r0, c12, c0, 1 @ get MVBAR value
- mcreq p15, 4, r0, c12, c0, 0 @ write HVBAR
+ orreq r5, r5, #0x100 @ allow HVC instruction
+ moveq r6, #HYP_MODE @ Enter the kernel as HYP
#endif
- movs pc, lr @ return to non-secure SVC
-
-_hyp_trap:
- mrs lr, elr_hyp @ for older asm: .byte 0x00, 0xe3, 0x0e, 0xe1
- mov pc, lr @ do no switch modes, but
- @ return to caller
+ mcr p15, 0, r5, c1, c1, 0 @ write SCR (with NS bit set)
+ isb
+ bne 1f
+
+ @ Reset CNTVOFF to 0 before leaving monitor mode
+ mrc p15, 0, r4, c0, c1, 1 @ read ID_PFR1
+ ands r4, r4, #CPUID_ARM_GENTIMER_MASK @ test arch timer bits
+ movne r4, #0
+ mcrrne p15, 4, r4, r4, c14 @ Reset CNTVOFF to zero
+1:
+ mov lr, ip
+ mov ip, #(F_BIT | I_BIT | A_BIT) @ Set A, I and F
+ tst lr, #1 @ Check for Thumb PC
+ orrne ip, ip, #T_BIT @ Set T if Thumb
+ orr ip, ip, r6 @ Slot target mode in
+ msr spsr_cxfs, ip @ Set full SPSR
+ movs pc, lr @ ERET to non-secure
+
+ENTRY(_do_nonsec_entry)
+ mov ip, r0
+ mov r0, r1
+ mov r1, r2
+ mov r2, r3
+ smc #0
+ENDPROC(_do_nonsec_entry)
+
+.macro get_cbar_addr addr
+#ifdef CONFIG_ARM_GIC_BASE_ADDRESS
+ ldr \addr, =CONFIG_ARM_GIC_BASE_ADDRESS
+#else
+ mrc p15, 4, \addr, c15, c0, 0 @ read CBAR
+ bfc \addr, #0, #15 @ clear reserved bits
+#endif
+.endm
+
+.macro get_gicd_addr addr
+ get_cbar_addr \addr
+ add \addr, \addr, #GIC_DIST_OFFSET @ GIC dist i/f offset
+.endm
+
+.macro get_gicc_addr addr, tmp
+ get_cbar_addr \addr
+ is_cpu_virt_capable \tmp
+ movne \tmp, #GIC_CPU_OFFSET_A9 @ GIC CPU offset for A9
+ moveq \tmp, #GIC_CPU_OFFSET_A15 @ GIC CPU offset for A15/A7
+ add \addr, \addr, \tmp
+.endm
+
+#ifndef CONFIG_ARMV7_PSCI
/*
* Secondary CPUs start here and call the code for the core specific parts
* of the non-secure and HYP mode transition. The GIC distributor specific
@@ -66,31 +121,21 @@ _hyp_trap:
* Then they go back to wfi and wait to be woken up by the kernel again.
*/
ENTRY(_smp_pen)
- mrs r0, cpsr
- orr r0, r0, #0xc0
- msr cpsr, r0 @ disable interrupts
- ldr r1, =_start
- mcr p15, 0, r1, c12, c0, 0 @ set VBAR
+ cpsid i
+ cpsid f
bl _nonsec_init
- mov r12, r0 @ save GICC address
-#ifdef CONFIG_ARMV7_VIRT
- bl _switch_to_hyp
-#endif
-
- ldr r1, [r12, #GICC_IAR] @ acknowledge IPI
- str r1, [r12, #GICC_EOIR] @ signal end of interrupt
adr r0, _smp_pen @ do not use this address again
b smp_waitloop @ wait for IPIs, board specific
ENDPROC(_smp_pen)
+#endif
/*
* Switch a core to non-secure state.
*
* 1. initialize the GIC per-core interface
* 2. allow coprocessor access in non-secure modes
- * 3. switch the cpu mode (by calling "smc #0")
*
* Called from smp_pen by secondary cores and directly by the BSP.
* Do not assume that the stack is available and only use registers
@@ -100,38 +145,23 @@ ENDPROC(_smp_pen)
* though, but we check this in C before calling this function.
*/
ENTRY(_nonsec_init)
-#ifdef CONFIG_ARM_GIC_BASE_ADDRESS
- ldr r2, =CONFIG_ARM_GIC_BASE_ADDRESS
-#else
- mrc p15, 4, r2, c15, c0, 0 @ read CBAR
- bfc r2, #0, #15 @ clear reserved bits
-#endif
- add r3, r2, #GIC_DIST_OFFSET @ GIC dist i/f offset
+ get_gicd_addr r3
+
mvn r1, #0 @ all bits to 1
str r1, [r3, #GICD_IGROUPRn] @ allow private interrupts
- mrc p15, 0, r0, c0, c0, 0 @ read MIDR
- ldr r1, =MIDR_PRIMARY_PART_MASK
- and r0, r0, r1 @ mask out variant and revision
+ get_gicc_addr r3, r1
- ldr r1, =MIDR_CORTEX_A7_R0P0 & MIDR_PRIMARY_PART_MASK
- cmp r0, r1 @ check for Cortex-A7
-
- ldr r1, =MIDR_CORTEX_A15_R0P0 & MIDR_PRIMARY_PART_MASK
- cmpne r0, r1 @ check for Cortex-A15
-
- movne r1, #GIC_CPU_OFFSET_A9 @ GIC CPU offset for A9
- moveq r1, #GIC_CPU_OFFSET_A15 @ GIC CPU offset for A15/A7
- add r3, r2, r1 @ r3 = GIC CPU i/f addr
-
- mov r1, #1 @ set GICC_CTLR[enable]
+ mov r1, #3 @ Enable both groups
str r1, [r3, #GICC_CTLR] @ and clear all other bits
mov r1, #0xff
str r1, [r3, #GICC_PMR] @ set priority mask register
+ mrc p15, 0, r0, c1, c1, 2
movw r1, #0x3fff
- movt r1, #0x0006
- mcr p15, 0, r1, c1, c1, 2 @ NSACR = all copros to non-sec
+ movt r1, #0x0004
+ orr r0, r0, r1
+ mcr p15, 0, r0, c1, c1, 2 @ NSACR = all copros to non-sec
/* The CNTFRQ register of the generic timer needs to be
* programmed in secure state. Some primary bootloaders / firmware
@@ -149,21 +179,9 @@ ENTRY(_nonsec_init)
adr r1, _monitor_vectors
mcr p15, 0, r1, c12, c0, 1 @ set MVBAR to secure vectors
-
- mrc p15, 0, ip, c12, c0, 0 @ save secure copy of VBAR
-
isb
- smc #0 @ call into MONITOR mode
-
- mcr p15, 0, ip, c12, c0, 0 @ write non-secure copy of VBAR
-
- mov r1, #1
- str r1, [r3, #GICC_CTLR] @ enable non-secure CPU i/f
- add r2, r2, #GIC_DIST_OFFSET
- str r1, [r2, #GICD_CTLR] @ allow private interrupts
mov r0, r3 @ return GICC address
-
bx lr
ENDPROC(_nonsec_init)
@@ -175,18 +193,10 @@ ENTRY(smp_waitloop)
ldr r1, [r1]
cmp r0, r1 @ make sure we dont execute this code
beq smp_waitloop @ again (due to a spurious wakeup)
- mov pc, r1
+ mov r0, r1
+ b _do_nonsec_entry
ENDPROC(smp_waitloop)
.weak smp_waitloop
#endif
-ENTRY(_switch_to_hyp)
- mov r0, lr
- mov r1, sp @ save SVC copy of LR and SP
- isb
- hvc #0 @ for older asm: .byte 0x70, 0x00, 0x40, 0xe1
- mov sp, r1
- mov lr, r0 @ restore SVC copy of LR and SP
-
- bx lr
-ENDPROC(_switch_to_hyp)
+ .popsection
diff --git a/arch/arm/cpu/armv7/omap-common/hwinit-common.c b/arch/arm/cpu/armv7/omap-common/hwinit-common.c
index 5f50a19..1b4477f 100644
--- a/arch/arm/cpu/armv7/omap-common/hwinit-common.c
+++ b/arch/arm/cpu/armv7/omap-common/hwinit-common.c
@@ -123,7 +123,8 @@ void s_init(void)
hw_data_init();
#ifdef CONFIG_SPL_BUILD
- if (warm_reset() && (omap_revision() <= OMAP5430_ES1_0))
+ if (warm_reset() &&
+ (is_omap44xx() || (omap_revision() == OMAP5430_ES1_0)))
force_emif_self_refresh();
#endif
watchdog_init();
diff --git a/arch/arm/cpu/armv7/omap-common/mem-common.c b/arch/arm/cpu/armv7/omap-common/mem-common.c
index 5bc7e1f..fc4290c 100644
--- a/arch/arm/cpu/armv7/omap-common/mem-common.c
+++ b/arch/arm/cpu/armv7/omap-common/mem-common.c
@@ -87,9 +87,13 @@ void gpmc_init(void)
STNOR_GPMC_CONFIG6,
STNOR_GPMC_CONFIG7
};
- u32 size = GPMC_SIZE_16M;
u32 base = CONFIG_SYS_FLASH_BASE;
-#elif defined(CONFIG_NAND)
+ u32 size = (CONFIG_SYS_FLASH_SIZE > 0x08000000) ? GPMC_SIZE_256M :
+ /* > 64MB */ ((CONFIG_SYS_FLASH_SIZE > 0x04000000) ? GPMC_SIZE_128M :
+ /* > 32MB */ ((CONFIG_SYS_FLASH_SIZE > 0x02000000) ? GPMC_SIZE_64M :
+ /* > 16MB */ ((CONFIG_SYS_FLASH_SIZE > 0x01000000) ? GPMC_SIZE_32M :
+ /* min 16MB */ GPMC_SIZE_16M)));
+#elif defined(CONFIG_NAND) || defined(CONFIG_CMD_NAND)
/* configure GPMC for NAND */
const u32 gpmc_regs[GPMC_MAX_REG] = { M_NAND_GPMC_CONFIG1,
M_NAND_GPMC_CONFIG2,
@@ -99,8 +103,9 @@ void gpmc_init(void)
M_NAND_GPMC_CONFIG6,
0
};
- u32 size = GPMC_SIZE_256M;
u32 base = CONFIG_SYS_NAND_BASE;
+ u32 size = GPMC_SIZE_16M;
+
#elif defined(CONFIG_CMD_ONENAND)
const u32 gpmc_regs[GPMC_MAX_REG] = { ONENAND_GPMC_CONFIG1,
ONENAND_GPMC_CONFIG2,
@@ -110,8 +115,8 @@ void gpmc_init(void)
ONENAND_GPMC_CONFIG6,
0
};
- u32 base = PISMO1_ONEN_BASE;
- u32 size = PISMO1_ONEN_SIZE;
+ u32 size = GPMC_SIZE_128M;
+ u32 base = CONFIG_SYS_ONENAND_BASE;
#else
const u32 gpmc_regs[GPMC_MAX_REG] = { 0, 0, 0, 0, 0, 0, 0 };
u32 size = 0;
diff --git a/arch/arm/cpu/armv7/omap3/mem.c b/arch/arm/cpu/armv7/omap3/mem.c
deleted file mode 100644
index 1832aff..0000000
--- a/arch/arm/cpu/armv7/omap3/mem.c
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * (C) Copyright 2008
- * Texas Instruments, <www.ti.com>
- *
- * Author :
- * Manikandan Pillai <mani.pillai@ti.com>
- *
- * Initial Code from:
- * Richard Woodruff <r-woodruff2@ti.com>
- * Syed Mohammed Khasim <khasim@ti.com>
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/io.h>
-#include <asm/arch/mem.h>
-#include <asm/arch/sys_proto.h>
-#include <command.h>
-
-struct gpmc *gpmc_cfg;
-
-#if defined(CONFIG_CMD_NAND)
-static const u32 gpmc_m_nand[GPMC_MAX_REG] = {
- M_NAND_GPMC_CONFIG1,
- M_NAND_GPMC_CONFIG2,
- M_NAND_GPMC_CONFIG3,
- M_NAND_GPMC_CONFIG4,
- M_NAND_GPMC_CONFIG5,
- M_NAND_GPMC_CONFIG6, 0
-};
-#endif /* CONFIG_CMD_NAND */
-
-#if defined(CONFIG_CMD_ONENAND)
-static const u32 gpmc_onenand[GPMC_MAX_REG] = {
- ONENAND_GPMC_CONFIG1,
- ONENAND_GPMC_CONFIG2,
- ONENAND_GPMC_CONFIG3,
- ONENAND_GPMC_CONFIG4,
- ONENAND_GPMC_CONFIG5,
- ONENAND_GPMC_CONFIG6, 0
-};
-#endif /* CONFIG_CMD_ONENAND */
-
-/********************************************************
- * mem_ok() - test used to see if timings are correct
- * for a part. Helps in guessing which part
- * we are currently using.
- *******************************************************/
-u32 mem_ok(u32 cs)
-{
- u32 val1, val2, addr;
- u32 pattern = 0x12345678;
-
- addr = OMAP34XX_SDRC_CS0 + get_sdr_cs_offset(cs);
-
- writel(0x0, addr + 0x400); /* clear pos A */
- writel(pattern, addr); /* pattern to pos B */
- writel(0x0, addr + 4); /* remove pattern off the bus */
- val1 = readl(addr + 0x400); /* get pos A value */
- val2 = readl(addr); /* get val2 */
- writel(0x0, addr + 0x400); /* clear pos A */
-
- if ((val1 != 0) || (val2 != pattern)) /* see if pos A val changed */
- return 0;
- else
- return 1;
-}
-
-void enable_gpmc_cs_config(const u32 *gpmc_config, struct gpmc_cs *cs, u32 base,
- u32 size)
-{
- writel(0, &cs->config7);
- sdelay(1000);
- /* Delay for settling */
- writel(gpmc_config[0], &cs->config1);
- writel(gpmc_config[1], &cs->config2);
- writel(gpmc_config[2], &cs->config3);
- writel(gpmc_config[3], &cs->config4);
- writel(gpmc_config[4], &cs->config5);
- writel(gpmc_config[5], &cs->config6);
-
- /*
- * Enable the config. size is the CS size and goes in
- * bits 11:8. We set bit 6 to enable this CS and the base
- * address goes into bits 5:0.
- */
- writel((size << 8) | (GPMC_CS_ENABLE << 6) |
- ((base >> 24) & GPMC_BASEADDR_MASK),
- &cs->config7);
- sdelay(2000);
-}
-
-/*****************************************************
- * gpmc_init(): init gpmc bus
- * Init GPMC for x16, MuxMode (SDRAM in x32).
- * This code can only be executed from SRAM or SDRAM.
- *****************************************************/
-void gpmc_init(void)
-{
- /* putting a blanket check on GPMC based on ZeBu for now */
- gpmc_cfg = (struct gpmc *)GPMC_BASE;
-#if defined(CONFIG_CMD_NAND) || defined(CONFIG_CMD_ONENAND)
- const u32 *gpmc_config = NULL;
- u32 base = 0;
- u32 size = 0;
-#endif
- u32 config = 0;
-
- /* global settings */
- writel(0, &gpmc_cfg->irqenable); /* isr's sources masked */
- writel(0, &gpmc_cfg->timeout_control);/* timeout disable */
-
- config = readl(&gpmc_cfg->config);
- config &= (~0xf00);
- writel(config, &gpmc_cfg->config);
-
- /*
- * Disable the GPMC0 config set by ROM code
- * It conflicts with our MPDB (both at 0x08000000)
- */
- writel(0, &gpmc_cfg->cs[0].config7);
- sdelay(1000);
-
-#if defined(CONFIG_CMD_NAND) /* CS 0 */
- gpmc_config = gpmc_m_nand;
-
- base = PISMO1_NAND_BASE;
- size = PISMO1_NAND_SIZE;
- enable_gpmc_cs_config(gpmc_config, &gpmc_cfg->cs[0], base, size);
-#endif
-
-#if defined(CONFIG_CMD_ONENAND)
- gpmc_config = gpmc_onenand;
- base = PISMO1_ONEN_BASE;
- size = PISMO1_ONEN_SIZE;
- enable_gpmc_cs_config(gpmc_config, &gpmc_cfg->cs[0], base, size);
-#endif
-}
diff --git a/arch/arm/cpu/armv7/psci.S b/arch/arm/cpu/armv7/psci.S
new file mode 100644
index 0000000..bf11a34
--- /dev/null
+++ b/arch/arm/cpu/armv7/psci.S
@@ -0,0 +1,102 @@
+/*
+ * Copyright (C) 2013,2014 - ARM Ltd
+ * Author: Marc Zyngier <marc.zyngier@arm.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 <linux/linkage.h>
+#include <asm/psci.h>
+
+ .pushsection ._secure.text, "ax"
+
+ .arch_extension sec
+
+ .align 5
+ .globl _psci_vectors
+_psci_vectors:
+ b default_psci_vector @ reset
+ b default_psci_vector @ undef
+ b _smc_psci @ smc
+ b default_psci_vector @ pabort
+ b default_psci_vector @ dabort
+ b default_psci_vector @ hyp
+ b default_psci_vector @ irq
+ b psci_fiq_enter @ fiq
+
+ENTRY(psci_fiq_enter)
+ movs pc, lr
+ENDPROC(psci_fiq_enter)
+.weak psci_fiq_enter
+
+ENTRY(default_psci_vector)
+ movs pc, lr
+ENDPROC(default_psci_vector)
+.weak default_psci_vector
+
+ENTRY(psci_cpu_suspend)
+ENTRY(psci_cpu_off)
+ENTRY(psci_cpu_on)
+ENTRY(psci_migrate)
+ mov r0, #ARM_PSCI_RET_NI @ Return -1 (Not Implemented)
+ mov pc, lr
+ENDPROC(psci_migrate)
+ENDPROC(psci_cpu_on)
+ENDPROC(psci_cpu_off)
+ENDPROC(psci_cpu_suspend)
+.weak psci_cpu_suspend
+.weak psci_cpu_off
+.weak psci_cpu_on
+.weak psci_migrate
+
+_psci_table:
+ .word ARM_PSCI_FN_CPU_SUSPEND
+ .word psci_cpu_suspend
+ .word ARM_PSCI_FN_CPU_OFF
+ .word psci_cpu_off
+ .word ARM_PSCI_FN_CPU_ON
+ .word psci_cpu_on
+ .word ARM_PSCI_FN_MIGRATE
+ .word psci_migrate
+ .word 0
+ .word 0
+
+_smc_psci:
+ push {r4-r7,lr}
+
+ @ Switch to secure
+ mrc p15, 0, r7, c1, c1, 0
+ bic r4, r7, #1
+ mcr p15, 0, r4, c1, c1, 0
+ isb
+
+ adr r4, _psci_table
+1: ldr r5, [r4] @ Load PSCI function ID
+ ldr r6, [r4, #4] @ Load target PC
+ cmp r5, #0 @ If reach the end, bail out
+ moveq r0, #ARM_PSCI_RET_INVAL @ Return -2 (Invalid)
+ beq 2f
+ cmp r0, r5 @ If not matching, try next entry
+ addne r4, r4, #8
+ bne 1b
+
+ blx r6 @ Execute PSCI function
+
+ @ Switch back to non-secure
+2: mcr p15, 0, r7, c1, c1, 0
+
+ pop {r4-r7, lr}
+ movs pc, lr @ Return to the kernel
+
+ .popsection
diff --git a/arch/arm/cpu/armv7/rmobile/Makefile b/arch/arm/cpu/armv7/rmobile/Makefile
index fad004c..dd7de41 100644
--- a/arch/arm/cpu/armv7/rmobile/Makefile
+++ b/arch/arm/cpu/armv7/rmobile/Makefile
@@ -13,5 +13,6 @@ obj-$(CONFIG_GLOBAL_TIMER) += timer.o
obj-$(CONFIG_R8A7740) += lowlevel_init.o cpu_info-r8a7740.o pfc-r8a7740.o
obj-$(CONFIG_R8A7790) += lowlevel_init_ca15.o cpu_info-rcar.o pfc-r8a7790.o
obj-$(CONFIG_R8A7791) += lowlevel_init_ca15.o cpu_info-rcar.o pfc-r8a7791.o
+obj-$(CONFIG_R8A7794) += lowlevel_init_ca15.o cpu_info-rcar.o pfc-r8a7794.o
obj-$(CONFIG_SH73A0) += lowlevel_init.o cpu_info-sh73a0.o pfc-sh73a0.o
obj-$(CONFIG_TMU_TIMER) += ../../../../sh/lib/time.o
diff --git a/arch/arm/cpu/armv7/rmobile/cpu_info.c b/arch/arm/cpu/armv7/rmobile/cpu_info.c
index 7a7c97d..b98137e 100644
--- a/arch/arm/cpu/armv7/rmobile/cpu_info.c
+++ b/arch/arm/cpu/armv7/rmobile/cpu_info.c
@@ -53,6 +53,7 @@ static const struct {
{ 0x40, "R8A7740" },
{ 0x45, "R8A7790" },
{ 0x47, "R8A7791" },
+ { 0x4C, "R8A7794" },
{ 0x0, "CPU" },
};
diff --git a/arch/arm/cpu/armv7/rmobile/pfc-r8a7794.c b/arch/arm/cpu/armv7/rmobile/pfc-r8a7794.c
new file mode 100644
index 0000000..e123663
--- /dev/null
+++ b/arch/arm/cpu/armv7/rmobile/pfc-r8a7794.c
@@ -0,0 +1,1513 @@
+/*
+ * arch/arm/cpu/armv7/rmobile/pfc-r8a7794.c
+ * This file is r8a7794 processor support - PFC hardware block.
+ *
+ * Copyright (C) 2014 Renesas Electronics Corporation
+ *
+ * SPDX-License-Identifier: GPL-2.0
+ */
+
+#include <common.h>
+#include <sh_pfc.h>
+#include <asm/gpio.h>
+
+#define CPU_32_PORT(fn, pfx, sfx) \
+ PORT_10(fn, pfx, sfx), PORT_10(fn, pfx##1, sfx), \
+ PORT_10(fn, pfx##2, sfx), PORT_1(fn, pfx##30, sfx), \
+ PORT_1(fn, pfx##31, sfx)
+
+#define CPU_26_PORT(fn, pfx, sfx) \
+ PORT_10(fn, pfx, sfx), PORT_10(fn, pfx##1, sfx), \
+ PORT_1(fn, pfx##20, sfx), PORT_1(fn, pfx##21, sfx), \
+ PORT_1(fn, pfx##22, sfx), PORT_1(fn, pfx##23, sfx), \
+ PORT_1(fn, pfx##24, sfx), PORT_1(fn, pfx##25, sfx)
+
+#define CPU_28_PORT(fn, pfx, sfx) \
+ PORT_10(fn, pfx, sfx), PORT_10(fn, pfx##1, sfx), \
+ PORT_1(fn, pfx##20, sfx), PORT_1(fn, pfx##21, sfx), \
+ PORT_1(fn, pfx##22, sfx), PORT_1(fn, pfx##23, sfx), \
+ PORT_1(fn, pfx##24, sfx), PORT_1(fn, pfx##25, sfx), \
+ PORT_1(fn, pfx##26, sfx), PORT_1(fn, pfx##27, sfx)
+
+/*
+ * GP_0_0_DATA -> GP_6_25_DATA
+ * (except for GP1[26],GP1[27],GP1[28],GP1[29]),GP1[30],GP1[31]
+ * GP5[28],GP5[29]),GP5[30],GP5[31],GP6[26],GP6[27],GP6[28],
+ * GP6[29]),GP6[30],GP6[31])
+ */
+#define CPU_ALL_PORT(fn, pfx, sfx) \
+ CPU_32_PORT(fn, pfx##_0_, sfx), \
+ CPU_26_PORT(fn, pfx##_1_, sfx), \
+ CPU_32_PORT(fn, pfx##_2_, sfx), \
+ CPU_32_PORT(fn, pfx##_3_, sfx), \
+ CPU_32_PORT(fn, pfx##_4_, sfx), \
+ CPU_28_PORT(fn, pfx##_5_, sfx), \
+ CPU_26_PORT(fn, pfx##_6_, sfx)
+
+#define _GP_GPIO(pfx, sfx) PINMUX_GPIO(GPIO_GP##pfx, GP##pfx##_DATA)
+#define _GP_DATA(pfx, sfx) PINMUX_DATA(GP##pfx##_DATA, GP##pfx##_FN, \
+ GP##pfx##_IN, GP##pfx##_OUT)
+
+#define _GP_INOUTSEL(pfx, sfx) GP##pfx##_IN, GP##pfx##_OUT
+#define _GP_INDT(pfx, sfx) GP##pfx##_DATA
+
+#define GP_ALL(str) CPU_ALL_PORT(_PORT_ALL, GP, str)
+#define PINMUX_GPIO_GP_ALL() CPU_ALL_PORT(_GP_GPIO, , unused)
+#define PINMUX_DATA_GP_ALL() CPU_ALL_PORT(_GP_DATA, , unused)
+
+
+#define PORT_10_REV(fn, pfx, sfx) \
+ PORT_1(fn, pfx##9, sfx), PORT_1(fn, pfx##8, sfx), \
+ PORT_1(fn, pfx##7, sfx), PORT_1(fn, pfx##6, sfx), \
+ PORT_1(fn, pfx##5, sfx), PORT_1(fn, pfx##4, sfx), \
+ PORT_1(fn, pfx##3, sfx), PORT_1(fn, pfx##2, sfx), \
+ PORT_1(fn, pfx##1, sfx), PORT_1(fn, pfx##0, sfx)
+
+#define CPU_32_PORT_REV(fn, pfx, sfx) \
+ PORT_1(fn, pfx##31, sfx), PORT_1(fn, pfx##30, sfx), \
+ PORT_10_REV(fn, pfx##2, sfx), PORT_10_REV(fn, pfx##1, sfx), \
+ PORT_10_REV(fn, pfx, sfx)
+
+#define GP_INOUTSEL(bank) CPU_32_PORT_REV(_GP_INOUTSEL, _##bank##_, unused)
+#define GP_INDT(bank) CPU_32_PORT_REV(_GP_INDT, _##bank##_, unused)
+
+#define PINMUX_IPSR_DATA(ipsr, fn) PINMUX_DATA(fn##_MARK, FN_##ipsr, FN_##fn)
+#define PINMUX_IPSR_MODSEL_DATA(ipsr, fn, ms) PINMUX_DATA(fn##_MARK, FN_##ms, \
+ FN_##ipsr, FN_##fn)
+
+enum {
+ PINMUX_RESERVED = 0,
+
+ PINMUX_DATA_BEGIN,
+ GP_ALL(DATA),
+ PINMUX_DATA_END,
+
+ PINMUX_INPUT_BEGIN,
+ GP_ALL(IN),
+ PINMUX_INPUT_END,
+
+ PINMUX_OUTPUT_BEGIN,
+ GP_ALL(OUT),
+ PINMUX_OUTPUT_END,
+
+ PINMUX_FUNCTION_BEGIN,
+ GP_ALL(FN),
+
+ /* GPSR0 */
+ FN_IP0_23_22, FN_IP0_24, FN_IP0_25, FN_IP0_27_26, FN_IP0_29_28,
+ FN_IP0_31_30, FN_IP1_1_0, FN_IP1_3_2, FN_IP1_5_4, FN_IP1_7_6,
+ FN_IP1_10_8, FN_IP1_12_11, FN_IP1_14_13, FN_IP1_17_15, FN_IP1_19_18,
+ FN_IP1_21_20, FN_IP1_23_22, FN_IP1_24, FN_A2, FN_IP1_26, FN_IP1_27,
+ FN_IP1_29_28, FN_IP1_31_30, FN_IP2_1_0, FN_IP2_3_2, FN_IP2_5_4,
+ FN_IP2_7_6, FN_IP2_9_8, FN_IP2_11_10, FN_IP2_13_12, FN_IP2_15_14,
+ FN_IP2_17_16,
+
+ /* GPSR1 */
+ FN_IP2_20_18, FN_IP2_23_21, FN_IP2_26_24, FN_IP2_29_27, FN_IP2_31_30,
+ FN_IP3_1_0, FN_IP3_3_2, FN_IP3_5_4, FN_IP3_7_6, FN_IP3_9_8, FN_IP3_10,
+ FN_IP3_11, FN_IP3_12, FN_IP3_14_13, FN_IP3_17_15, FN_IP3_20_18,
+ FN_IP3_23_21, FN_IP3_26_24, FN_IP3_29_27, FN_IP3_30, FN_IP3_31,
+ FN_WE0_N, FN_WE1_N, FN_IP4_1_0 , FN_IP7_31, FN_DACK0,
+
+ /* GPSR2 */
+ FN_IP4_4_2, FN_IP4_7_5, FN_IP4_9_8, FN_IP4_11_10, FN_IP4_13_12,
+ FN_IP4_15_14, FN_IP4_17_16, FN_IP4_19_18, FN_IP4_22_20, FN_IP4_25_23,
+ FN_IP4_27_26, FN_IP4_29_28, FN_IP4_31_30, FN_IP5_1_0, FN_IP5_3_2,
+ FN_IP5_5_4, FN_IP5_8_6, FN_IP5_11_9, FN_IP5_13_12, FN_IP5_15_14,
+ FN_IP5_17_16, FN_IP5_19_18, FN_IP5_21_20, FN_IP5_23_22, FN_IP5_25_24,
+ FN_IP5_27_26, FN_IP5_29_28, FN_IP5_31_30, FN_IP6_1_0, FN_IP6_3_2,
+ FN_IP6_5_4, FN_IP6_7_6,
+
+ /* GPSR3 */
+ FN_IP6_8, FN_IP6_9, FN_IP6_10, FN_IP6_11, FN_IP6_12, FN_IP6_13,
+ FN_IP6_14, FN_IP6_15, FN_IP6_16, FN_IP6_19_17, FN_IP6_22_20,
+ FN_IP6_25_23, FN_IP6_28_26, FN_IP6_31_29, FN_IP7_2_0, FN_IP7_5_3,
+ FN_IP7_8_6, FN_IP7_11_9, FN_IP7_14_12, FN_IP7_17_15, FN_IP7_20_18,
+ FN_IP7_23_21, FN_IP7_26_24, FN_IP7_29_27, FN_IP8_2_0, FN_IP8_5_3,
+ FN_IP8_8_6, FN_IP8_11_9, FN_IP8_14_12, FN_IP8_16_15, FN_IP8_19_17,
+ FN_IP8_22_20,
+
+ /* GPSR4 */
+ FN_IP8_25_23, FN_IP8_28_26, FN_IP8_31_29, FN_IP9_2_0, FN_IP9_5_3,
+ FN_IP9_8_6, FN_IP9_11_9, FN_IP9_14_12, FN_IP9_16_15, FN_IP9_18_17,
+ FN_IP9_21_19, FN_IP9_24_22, FN_IP9_27_25, FN_IP9_30_28, FN_IP10_2_0,
+ FN_IP10_5_3, FN_IP10_8_6, FN_IP10_11_9, FN_IP10_14_12, FN_IP10_17_15,
+ FN_IP10_20_18, FN_IP10_23_21, FN_IP10_26_24, FN_IP10_29_27,
+ FN_IP10_31_30, FN_IP11_2_0, FN_IP11_5_3, FN_IP11_7_6, FN_IP11_10_8,
+ FN_IP11_13_11, FN_IP11_15_14, FN_IP11_17_16,
+
+ /* GPSR5 */
+ FN_IP11_20_18, FN_IP11_23_21, FN_IP11_26_24, FN_IP11_29_27, FN_IP12_2_0,
+ FN_IP12_5_3, FN_IP12_8_6, FN_IP12_10_9, FN_IP12_12_11, FN_IP12_14_13,
+ FN_IP12_17_15, FN_IP12_20_18, FN_IP12_23_21, FN_IP12_26_24,
+ FN_IP12_29_27, FN_IP13_2_0, FN_IP13_5_3, FN_IP13_8_6, FN_IP13_11_9,
+ FN_IP13_14_12, FN_IP13_17_15, FN_IP13_20_18, FN_IP13_23_21,
+ FN_IP13_26_24, FN_USB0_PWEN, FN_USB0_OVC, FN_USB1_PWEN, FN_USB1_OVC,
+
+ /* GPSR6 */
+ FN_SD0_CLK, FN_SD0_CMD, FN_SD0_DATA0, FN_SD0_DATA1, FN_SD0_DATA2,
+ FN_SD0_DATA3, FN_SD0_CD, FN_SD0_WP, FN_SD1_CLK, FN_SD1_CMD,
+ FN_SD1_DATA0, FN_SD1_DATA1, FN_SD1_DATA2, FN_SD1_DATA3, FN_IP0_0,
+ FN_IP0_9_8, FN_IP0_10, FN_IP0_11, FN_IP0_12, FN_IP0_13, FN_IP0_14,
+ FN_IP0_15, FN_IP0_16, FN_IP0_17, FN_IP0_19_18, FN_IP0_21_20,
+
+ /*
+ * From IPSR0 to IPSR5 have been removed because they does not use.
+ */
+
+ /* IPSR6 */
+ FN_DU0_EXVSYNC_DU0_VSYNC, FN_QSTB_QHE, FN_CC50_STATE28,
+ FN_DU0_EXODDF_DU0_ODDF_DISP_CDE, FN_QCPV_QDE, FN_CC50_STATE29,
+ FN_DU0_DISP, FN_QPOLA, FN_CC50_STATE30, FN_DU0_CDE, FN_QPOLB,
+ FN_CC50_STATE31, FN_VI0_CLK, FN_AVB_RX_CLK, FN_VI0_DATA0_VI0_B0,
+ FN_AVB_RX_DV, FN_VI0_DATA1_VI0_B1, FN_AVB_RXD0, FN_VI0_DATA2_VI0_B2,
+ FN_AVB_RXD1, FN_VI0_DATA3_VI0_B3, FN_AVB_RXD2, FN_VI0_DATA4_VI0_B4,
+ FN_AVB_RXD3, FN_VI0_DATA5_VI0_B5, FN_AVB_RXD4, FN_VI0_DATA6_VI0_B6,
+ FN_AVB_RXD5, FN_VI0_DATA7_VI0_B7, FN_AVB_RXD6, FN_VI0_CLKENB,
+ FN_I2C3_SCL, FN_SCIFA5_RXD_C, FN_IETX_C, FN_AVB_RXD7, FN_VI0_FIELD,
+ FN_I2C3_SDA, FN_SCIFA5_TXD_C, FN_IECLK_C, FN_AVB_RX_ER, FN_VI0_HSYNC_N,
+ FN_SCIF0_RXD_B, FN_I2C0_SCL_C, FN_IERX_C, FN_AVB_COL, FN_VI0_VSYNC_N,
+ FN_SCIF0_TXD_B, FN_I2C0_SDA_C, FN_AUDIO_CLKOUT_B, FN_AVB_TX_EN,
+ FN_ETH_MDIO, FN_VI0_G0, FN_MSIOF2_RXD_B, FN_IIC0_SCL_D, FN_AVB_TX_CLK,
+ FN_ADIDATA, FN_AD_DI,
+
+ /* IPSR7 */
+ FN_ETH_CRS_DV, FN_VI0_G1, FN_MSIOF2_TXD_B, FN_IIC0_SDA_D, FN_AVB_TXD0,
+ FN_ADICS_SAMP, FN_AD_DO, FN_ETH_RX_ER, FN_VI0_G2, FN_MSIOF2_SCK_B,
+ FN_CAN0_RX_B, FN_AVB_TXD1, FN_ADICLK, FN_AD_CLK, FN_ETH_RXD0, FN_VI0_G3,
+ FN_MSIOF2_SYNC_B, FN_CAN0_TX_B, FN_AVB_TXD2, FN_ADICHS0, FN_AD_NCS_N,
+ FN_ETH_RXD1, FN_VI0_G4, FN_MSIOF2_SS1_B, FN_SCIF4_RXD_D, FN_AVB_TXD3,
+ FN_ADICHS1, FN_ETH_LINK, FN_VI0_G5, FN_MSIOF2_SS2_B, FN_SCIF4_TXD_D,
+ FN_AVB_TXD4, FN_ADICHS2, FN_ETH_REFCLK, FN_VI0_G6, FN_SCIF2_SCK_C,
+ FN_AVB_TXD5, FN_SSI_SCK5_B, FN_ETH_TXD1, FN_VI0_G7, FN_SCIF2_RXD_C,
+ FN_IIC1_SCL_D, FN_AVB_TXD6, FN_SSI_WS5_B, FN_ETH_TX_EN, FN_VI0_R0,
+ FN_SCIF2_TXD_C, FN_IIC1_SDA_D, FN_AVB_TXD7, FN_SSI_SDATA5_B,
+ FN_ETH_MAGIC, FN_VI0_R1, FN_SCIF3_SCK_B, FN_AVB_TX_ER, FN_SSI_SCK6_B,
+ FN_ETH_TXD0, FN_VI0_R2, FN_SCIF3_RXD_B, FN_I2C4_SCL_E, FN_AVB_GTX_CLK,
+ FN_SSI_WS6_B, FN_DREQ0_N, FN_SCIFB1_RXD,
+
+ /* IPSR8 */
+ FN_ETH_MDC, FN_VI0_R3, FN_SCIF3_TXD_B, FN_I2C4_SDA_E, FN_AVB_MDC,
+ FN_SSI_SDATA6_B, FN_HSCIF0_HRX, FN_VI0_R4, FN_I2C1_SCL_C,
+ FN_AUDIO_CLKA_B, FN_AVB_MDIO, FN_SSI_SCK78_B, FN_HSCIF0_HTX,
+ FN_VI0_R5, FN_I2C1_SDA_C, FN_AUDIO_CLKB_B, FN_AVB_LINK, FN_SSI_WS78_B,
+ FN_HSCIF0_HCTS_N, FN_VI0_R6, FN_SCIF0_RXD_D, FN_I2C0_SCL_E,
+ FN_AVB_MAGIC, FN_SSI_SDATA7_B, FN_HSCIF0_HRTS_N, FN_VI0_R7,
+ FN_SCIF0_TXD_D, FN_I2C0_SDA_E, FN_AVB_PHY_INT, FN_SSI_SDATA8_B,
+ FN_HSCIF0_HSCK, FN_SCIF_CLK_B, FN_AVB_CRS, FN_AUDIO_CLKC_B,
+ FN_I2C0_SCL, FN_SCIF0_RXD_C, FN_PWM5, FN_TCLK1_B, FN_AVB_GTXREFCLK,
+ FN_CAN1_RX_D, FN_TPUTO0_B, FN_I2C0_SDA, FN_SCIF0_TXD_C, FN_TPUTO0,
+ FN_CAN_CLK, FN_DVC_MUTE, FN_CAN1_TX_D, FN_I2C1_SCL, FN_SCIF4_RXD,
+ FN_PWM5_B, FN_DU1_DR0, FN_RIF1_SYNC_B, FN_TS_SDATA_D, FN_TPUTO1_B,
+ FN_I2C1_SDA, FN_SCIF4_TXD, FN_IRQ5, FN_DU1_DR1, FN_RIF1_CLK_B,
+ FN_TS_SCK_D, FN_BPFCLK_C, FN_MSIOF0_RXD, FN_SCIF5_RXD, FN_I2C2_SCL_C,
+ FN_DU1_DR2, FN_RIF1_D0_B, FN_TS_SDEN_D, FN_FMCLK_C, FN_RDS_CLK,
+
+ /*
+ * From IPSR9 to IPSR10 have been removed because they does not use.
+ */
+
+ /* IPSR11 */
+ FN_SSI_WS5, FN_SCIFA3_RXD, FN_I2C3_SCL_C, FN_DU1_DOTCLKOUT0,
+ FN_CAN_DEBUGOUT11, FN_SSI_SDATA5, FN_SCIFA3_TXD, FN_I2C3_SDA_C,
+ FN_DU1_DOTCLKOUT1, FN_CAN_DEBUGOUT12, FN_SSI_SCK6, FN_SCIFA1_SCK_B,
+ FN_DU1_EXHSYNC_DU1_HSYNC, FN_CAN_DEBUGOUT13, FN_SSI_WS6,
+ FN_SCIFA1_RXD_B, FN_I2C4_SCL_C, FN_DU1_EXVSYNC_DU1_VSYNC,
+ FN_CAN_DEBUGOUT14, FN_SSI_SDATA6, FN_SCIFA1_TXD_B, FN_I2C4_SDA_C,
+ FN_DU1_EXODDF_DU1_ODDF_DISP_CDE, FN_CAN_DEBUGOUT15, FN_SSI_SCK78,
+ FN_SCIFA2_SCK_B, FN_IIC0_SDA_C, FN_DU1_DISP, FN_SSI_WS78,
+ FN_SCIFA2_RXD_B, FN_IIC0_SCL_C, FN_DU1_CDE, FN_SSI_SDATA7,
+ FN_SCIFA2_TXD_B, FN_IRQ8, FN_AUDIO_CLKA_D, FN_CAN_CLK_D, FN_PCMOE_N,
+ FN_SSI_SCK0129, FN_MSIOF1_RXD_B, FN_SCIF5_RXD_D, FN_ADIDATA_B,
+ FN_AD_DI_B, FN_PCMWE_N, FN_SSI_WS0129, FN_MSIOF1_TXD_B, FN_SCIF5_TXD_D,
+ FN_ADICS_SAMP_B, FN_AD_DO_B, FN_SSI_SDATA0, FN_MSIOF1_SCK_B, FN_PWM0_B,
+ FN_ADICLK_B, FN_AD_CLK_B,
+
+ /*
+ * From IPSR12 to IPSR13 have been removed because they does not use.
+ */
+
+ /* MOD_SEL */
+ FN_SEL_ADG_0, FN_SEL_ADG_1, FN_SEL_ADG_2, FN_SEL_ADG_3,
+ FN_SEL_ADI_0, FN_SEL_ADI_1, FN_SEL_CAN_0, FN_SEL_CAN_1,
+ FN_SEL_CAN_2, FN_SEL_CAN_3, FN_SEL_DARC_0, FN_SEL_DARC_1,
+ FN_SEL_DARC_2, FN_SEL_DARC_3, FN_SEL_DARC_4, FN_SEL_DR0_0,
+ FN_SEL_DR0_1, FN_SEL_DR1_0, FN_SEL_DR1_1, FN_SEL_DR2_0, FN_SEL_DR2_1,
+ FN_SEL_DR3_0, FN_SEL_DR3_1, FN_SEL_ETH_0, FN_SEL_ETH_1, FN_SEL_FSN_0,
+ FN_SEL_FSN_1, FN_SEL_I2C00_0, FN_SEL_I2C00_1, FN_SEL_I2C00_2,
+ FN_SEL_I2C00_3, FN_SEL_I2C00_4, FN_SEL_I2C01_0, FN_SEL_I2C01_1,
+ FN_SEL_I2C01_2, FN_SEL_I2C01_3, FN_SEL_I2C01_4, FN_SEL_I2C02_0,
+ FN_SEL_I2C02_1, FN_SEL_I2C02_2, FN_SEL_I2C02_3, FN_SEL_I2C02_4,
+ FN_SEL_I2C03_0, FN_SEL_I2C03_1, FN_SEL_I2C03_2, FN_SEL_I2C03_3,
+ FN_SEL_I2C03_4, FN_SEL_I2C04_0, FN_SEL_I2C04_1, FN_SEL_I2C04_2,
+ FN_SEL_I2C04_3, FN_SEL_I2C04_4, FN_SEL_IIC00_0, FN_SEL_IIC00_1,
+ FN_SEL_IIC00_2, FN_SEL_IIC00_3, FN_SEL_AVB_0, FN_SEL_AVB_1,
+
+ /* MOD_SEL2 */
+ FN_SEL_IEB_0, FN_SEL_IEB_1, FN_SEL_IEB_2, FN_SEL_IIC01_0,
+ FN_SEL_IIC01_1, FN_SEL_IIC01_2, FN_SEL_IIC01_3, FN_SEL_LBS_0,
+ FN_SEL_LBS_1, FN_SEL_MSI1_0, FN_SEL_MSI1_1, FN_SEL_MSI2_0,
+ FN_SEL_MSI2_1, FN_SEL_RAD_0, FN_SEL_RAD_1, FN_SEL_RCN_0,
+ FN_SEL_RCN_1, FN_SEL_RSP_0, FN_SEL_RSP_1, FN_SEL_SCIFA0_0,
+ FN_SEL_SCIFA0_1, FN_SEL_SCIFA0_2, FN_SEL_SCIFA0_3, FN_SEL_SCIFA1_0,
+ FN_SEL_SCIFA1_1, FN_SEL_SCIFA1_2, FN_SEL_SCIFA2_0, FN_SEL_SCIFA2_1,
+ FN_SEL_SCIFA3_0, FN_SEL_SCIFA3_1, FN_SEL_SCIFA4_0, FN_SEL_SCIFA4_1,
+ FN_SEL_SCIFA4_2, FN_SEL_SCIFA4_3, FN_SEL_SCIFA5_0, FN_SEL_SCIFA5_1,
+ FN_SEL_SCIFA5_2, FN_SEL_SCIFA5_3, FN_SEL_SPDM_0, FN_SEL_SPDM_1,
+ FN_SEL_TMU_0, FN_SEL_TMU_1, FN_SEL_TSIF0_0, FN_SEL_TSIF0_1,
+ FN_SEL_TSIF0_2, FN_SEL_TSIF0_3, FN_SEL_CAN0_0, FN_SEL_CAN0_1,
+ FN_SEL_CAN0_2, FN_SEL_CAN0_3, FN_SEL_CAN1_0, FN_SEL_CAN1_1,
+ FN_SEL_CAN1_2, FN_SEL_CAN1_3, FN_SEL_HSCIF0_0, FN_SEL_HSCIF0_1,
+ FN_SEL_HSCIF1_0, FN_SEL_HSCIF1_1, FN_SEL_RDS_0, FN_SEL_RDS_1,
+ FN_SEL_RDS_2, FN_SEL_RDS_3,
+
+ /* MOD_SEL3 */
+ FN_SEL_SCIF0_0, FN_SEL_SCIF0_1, FN_SEL_SCIF0_2, FN_SEL_SCIF0_3,
+ FN_SEL_SCIF1_0, FN_SEL_SCIF1_1, FN_SEL_SCIF1_2, FN_SEL_SCIF2_0,
+ FN_SEL_SCIF2_1, FN_SEL_SCIF2_2, FN_SEL_SCIF3_0, FN_SEL_SCIF3_1,
+ FN_SEL_SCIF4_0, FN_SEL_SCIF4_1, FN_SEL_SCIF4_2, FN_SEL_SCIF4_3,
+ FN_SEL_SCIF4_4, FN_SEL_SCIF5_0, FN_SEL_SCIF5_1, FN_SEL_SCIF5_2,
+ FN_SEL_SCIF5_3, FN_SEL_SSI1_0, FN_SEL_SSI1_1, FN_SEL_SSI2_0,
+ FN_SEL_SSI2_1, FN_SEL_SSI4_0, FN_SEL_SSI4_1, FN_SEL_SSI5_0,
+ FN_SEL_SSI5_1, FN_SEL_SSI6_0, FN_SEL_SSI6_1, FN_SEL_SSI7_0,
+ FN_SEL_SSI7_1, FN_SEL_SSI8_0, FN_SEL_SSI8_1, FN_SEL_SSI9_0,
+ FN_SEL_SSI9_1,
+ PINMUX_FUNCTION_END,
+
+ PINMUX_MARK_BEGIN,
+ A2_MARK, WE0_N_MARK, WE1_N_MARK, DACK0_MARK,
+
+ USB0_PWEN_MARK, USB0_OVC_MARK, USB1_PWEN_MARK, USB1_OVC_MARK,
+
+ SD0_CLK_MARK, SD0_CMD_MARK, SD0_DATA0_MARK, SD0_DATA1_MARK,
+ SD0_DATA2_MARK, SD0_DATA3_MARK, SD0_CD_MARK, SD0_WP_MARK,
+
+ SD1_CLK_MARK, SD1_CMD_MARK, SD1_DATA0_MARK, SD1_DATA1_MARK,
+ SD1_DATA2_MARK, SD1_DATA3_MARK,
+
+ /*
+ * From IPSR0 to IPSR5 have been removed because they does not use.
+ */
+
+ /* IPSR6 */
+ DU0_EXVSYNC_DU0_VSYNC_MARK, QSTB_QHE_MARK, CC50_STATE28_MARK,
+ DU0_EXODDF_DU0_ODDF_DISP_CDE_MARK, QCPV_QDE_MARK, CC50_STATE29_MARK,
+ DU0_DISP_MARK, QPOLA_MARK, CC50_STATE30_MARK, DU0_CDE_MARK, QPOLB_MARK,
+ CC50_STATE31_MARK, VI0_CLK_MARK, AVB_RX_CLK_MARK, VI0_DATA0_VI0_B0_MARK,
+ AVB_RX_DV_MARK, VI0_DATA1_VI0_B1_MARK, AVB_RXD0_MARK,
+ VI0_DATA2_VI0_B2_MARK, AVB_RXD1_MARK, VI0_DATA3_VI0_B3_MARK,
+ AVB_RXD2_MARK, VI0_DATA4_VI0_B4_MARK, AVB_RXD3_MARK,
+ VI0_DATA5_VI0_B5_MARK, AVB_RXD4_MARK, VI0_DATA6_VI0_B6_MARK,
+ AVB_RXD5_MARK, VI0_DATA7_VI0_B7_MARK, AVB_RXD6_MARK, VI0_CLKENB_MARK,
+ I2C3_SCL_MARK, SCIFA5_RXD_C_MARK, IETX_C_MARK, AVB_RXD7_MARK,
+ VI0_FIELD_MARK, I2C3_SDA_MARK, SCIFA5_TXD_C_MARK, IECLK_C_MARK,
+ AVB_RX_ER_MARK, VI0_HSYNC_N_MARK, SCIF0_RXD_B_MARK, I2C0_SCL_C_MARK,
+ IERX_C_MARK, AVB_COL_MARK, VI0_VSYNC_N_MARK, SCIF0_TXD_B_MARK,
+ I2C0_SDA_C_MARK, AUDIO_CLKOUT_B_MARK, AVB_TX_EN_MARK, ETH_MDIO_MARK,
+ VI0_G0_MARK, MSIOF2_RXD_B_MARK, IIC0_SCL_D_MARK, AVB_TX_CLK_MARK,
+ ADIDATA_MARK, AD_DI_MARK,
+
+ /* IPSR7 */
+ ETH_CRS_DV_MARK, VI0_G1_MARK, MSIOF2_TXD_B_MARK, IIC0_SDA_D_MARK,
+ AVB_TXD0_MARK, ADICS_SAMP_MARK, AD_DO_MARK, ETH_RX_ER_MARK, VI0_G2_MARK,
+ MSIOF2_SCK_B_MARK, CAN0_RX_B_MARK, AVB_TXD1_MARK, ADICLK_MARK,
+ AD_CLK_MARK, ETH_RXD0_MARK, VI0_G3_MARK, MSIOF2_SYNC_B_MARK,
+ CAN0_TX_B_MARK, AVB_TXD2_MARK, ADICHS0_MARK, AD_NCS_N_MARK,
+ ETH_RXD1_MARK, VI0_G4_MARK, MSIOF2_SS1_B_MARK, SCIF4_RXD_D_MARK,
+ AVB_TXD3_MARK, ADICHS1_MARK, ETH_LINK_MARK, VI0_G5_MARK,
+ MSIOF2_SS2_B_MARK, SCIF4_TXD_D_MARK, AVB_TXD4_MARK, ADICHS2_MARK,
+ ETH_REFCLK_MARK, VI0_G6_MARK, SCIF2_SCK_C_MARK, AVB_TXD5_MARK,
+ SSI_SCK5_B_MARK, ETH_TXD1_MARK, VI0_G7_MARK, SCIF2_RXD_C_MARK,
+ IIC1_SCL_D_MARK, AVB_TXD6_MARK, SSI_WS5_B_MARK, ETH_TX_EN_MARK,
+ VI0_R0_MARK, SCIF2_TXD_C_MARK, IIC1_SDA_D_MARK, AVB_TXD7_MARK,
+ SSI_SDATA5_B_MARK, ETH_MAGIC_MARK, VI0_R1_MARK, SCIF3_SCK_B_MARK,
+ AVB_TX_ER_MARK, SSI_SCK6_B_MARK, ETH_TXD0_MARK, VI0_R2_MARK,
+ SCIF3_RXD_B_MARK, I2C4_SCL_E_MARK, AVB_GTX_CLK_MARK, SSI_WS6_B_MARK,
+ DREQ0_N_MARK, SCIFB1_RXD_MARK,
+
+ /* IPSR8 */
+ ETH_MDC_MARK, VI0_R3_MARK, SCIF3_TXD_B_MARK, I2C4_SDA_E_MARK,
+ AVB_MDC_MARK, SSI_SDATA6_B_MARK, HSCIF0_HRX_MARK, VI0_R4_MARK,
+ I2C1_SCL_C_MARK, AUDIO_CLKA_B_MARK, AVB_MDIO_MARK, SSI_SCK78_B_MARK,
+ HSCIF0_HTX_MARK, VI0_R5_MARK, I2C1_SDA_C_MARK, AUDIO_CLKB_B_MARK,
+ AVB_LINK_MARK, SSI_WS78_B_MARK, HSCIF0_HCTS_N_MARK, VI0_R6_MARK,
+ SCIF0_RXD_D_MARK, I2C0_SCL_E_MARK, AVB_MAGIC_MARK, SSI_SDATA7_B_MARK,
+ HSCIF0_HRTS_N_MARK, VI0_R7_MARK, SCIF0_TXD_D_MARK, I2C0_SDA_E_MARK,
+ AVB_PHY_INT_MARK, SSI_SDATA8_B_MARK,
+ HSCIF0_HSCK_MARK, SCIF_CLK_B_MARK, AVB_CRS_MARK, AUDIO_CLKC_B_MARK,
+ I2C0_SCL_MARK, SCIF0_RXD_C_MARK, PWM5_MARK, TCLK1_B_MARK,
+ AVB_GTXREFCLK_MARK, CAN1_RX_D_MARK, TPUTO0_B_MARK, I2C0_SDA_MARK,
+ SCIF0_TXD_C_MARK, TPUTO0_MARK, CAN_CLK_MARK, DVC_MUTE_MARK,
+ CAN1_TX_D_MARK, I2C1_SCL_MARK, SCIF4_RXD_MARK, PWM5_B_MARK,
+ DU1_DR0_MARK, RIF1_SYNC_B_MARK, TS_SDATA_D_MARK, TPUTO1_B_MARK,
+ I2C1_SDA_MARK, SCIF4_TXD_MARK, IRQ5_MARK, DU1_DR1_MARK, RIF1_CLK_B_MARK,
+ TS_SCK_D_MARK, BPFCLK_C_MARK, MSIOF0_RXD_MARK, SCIF5_RXD_MARK,
+ I2C2_SCL_C_MARK, DU1_DR2_MARK, RIF1_D0_B_MARK, TS_SDEN_D_MARK,
+ FMCLK_C_MARK, RDS_CLK_MARK,
+
+ /*
+ * From IPSR9 to IPSR10 have been removed because they does not use.
+ */
+
+ /* IPSR11 */
+ SSI_WS5_MARK, SCIFA3_RXD_MARK, I2C3_SCL_C_MARK, DU1_DOTCLKOUT0_MARK,
+ CAN_DEBUGOUT11_MARK, SSI_SDATA5_MARK, SCIFA3_TXD_MARK, I2C3_SDA_C_MARK,
+ DU1_DOTCLKOUT1_MARK, CAN_DEBUGOUT12_MARK, SSI_SCK6_MARK,
+ SCIFA1_SCK_B_MARK, DU1_EXHSYNC_DU1_HSYNC_MARK, CAN_DEBUGOUT13_MARK,
+ SSI_WS6_MARK, SCIFA1_RXD_B_MARK, I2C4_SCL_C_MARK,
+ DU1_EXVSYNC_DU1_VSYNC_MARK, CAN_DEBUGOUT14_MARK, SSI_SDATA6_MARK,
+ SCIFA1_TXD_B_MARK, I2C4_SDA_C_MARK, DU1_EXODDF_DU1_ODDF_DISP_CDE_MARK,
+ CAN_DEBUGOUT15_MARK, SSI_SCK78_MARK, SCIFA2_SCK_B_MARK, IIC0_SDA_C_MARK,
+ DU1_DISP_MARK, SSI_WS78_MARK, SCIFA2_RXD_B_MARK, IIC0_SCL_C_MARK,
+ DU1_CDE_MARK, SSI_SDATA7_MARK, SCIFA2_TXD_B_MARK, IRQ8_MARK,
+ AUDIO_CLKA_D_MARK, CAN_CLK_D_MARK, PCMOE_N_MARK, SSI_SCK0129_MARK,
+ MSIOF1_RXD_B_MARK, SCIF5_RXD_D_MARK, ADIDATA_B_MARK, AD_DI_B_MARK,
+ PCMWE_N_MARK, SSI_WS0129_MARK, MSIOF1_TXD_B_MARK, SCIF5_TXD_D_MARK,
+ ADICS_SAMP_B_MARK, AD_DO_B_MARK, SSI_SDATA0_MARK, MSIOF1_SCK_B_MARK,
+ PWM0_B_MARK, ADICLK_B_MARK, AD_CLK_B_MARK,
+
+ /*
+ * From IPSR12 to IPSR13 have been removed because they does not use.
+ */
+
+ PINMUX_MARK_END,
+};
+
+static pinmux_enum_t pinmux_data[] = {
+ PINMUX_DATA_GP_ALL(), /* PINMUX_DATA(GP_M_N_DATA, GP_M_N_FN...), */
+
+ PINMUX_DATA(A2_MARK, FN_A2),
+ PINMUX_DATA(WE0_N_MARK, FN_WE0_N),
+ PINMUX_DATA(WE1_N_MARK, FN_WE1_N),
+ PINMUX_DATA(DACK0_MARK, FN_DACK0),
+ PINMUX_DATA(USB0_PWEN_MARK, FN_USB0_PWEN),
+ PINMUX_DATA(USB0_OVC_MARK, FN_USB0_OVC),
+ PINMUX_DATA(USB1_PWEN_MARK, FN_USB1_PWEN),
+ PINMUX_DATA(USB1_OVC_MARK, FN_USB1_OVC),
+ PINMUX_DATA(SD0_CLK_MARK, FN_SD0_CLK),
+ PINMUX_DATA(SD0_CMD_MARK, FN_SD0_CMD),
+ PINMUX_DATA(SD0_DATA0_MARK, FN_SD0_DATA0),
+ PINMUX_DATA(SD0_DATA1_MARK, FN_SD0_DATA1),
+ PINMUX_DATA(SD0_DATA2_MARK, FN_SD0_DATA2),
+ PINMUX_DATA(SD0_DATA3_MARK, FN_SD0_DATA3),
+ PINMUX_DATA(SD0_CD_MARK, FN_SD0_CD),
+ PINMUX_DATA(SD0_WP_MARK, FN_SD0_WP),
+ PINMUX_DATA(SD1_CLK_MARK, FN_SD1_CLK),
+ PINMUX_DATA(SD1_CMD_MARK, FN_SD1_CMD),
+ PINMUX_DATA(SD1_DATA0_MARK, FN_SD1_DATA0),
+ PINMUX_DATA(SD1_DATA1_MARK, FN_SD1_DATA1),
+ PINMUX_DATA(SD1_DATA2_MARK, FN_SD1_DATA2),
+ PINMUX_DATA(SD1_DATA3_MARK, FN_SD1_DATA3),
+
+ /*
+ * From IPSR0 to IPSR5 have been removed because they does not use.
+ */
+
+ /* IPSR6 */
+ PINMUX_IPSR_DATA(IP6_1_0, DU0_EXVSYNC_DU0_VSYNC),
+ PINMUX_IPSR_DATA(IP6_1_0, QSTB_QHE),
+ PINMUX_IPSR_DATA(IP6_1_0, CC50_STATE28),
+ PINMUX_IPSR_DATA(IP6_3_2, DU0_EXODDF_DU0_ODDF_DISP_CDE),
+ PINMUX_IPSR_DATA(IP6_3_2, QCPV_QDE),
+ PINMUX_IPSR_DATA(IP6_3_2, CC50_STATE29),
+ PINMUX_IPSR_DATA(IP6_5_4, DU0_DISP),
+ PINMUX_IPSR_DATA(IP6_5_4, QPOLA),
+ PINMUX_IPSR_DATA(IP6_5_4, CC50_STATE30),
+ PINMUX_IPSR_DATA(IP6_7_6, DU0_CDE),
+ PINMUX_IPSR_DATA(IP6_7_6, QPOLB),
+ PINMUX_IPSR_DATA(IP6_7_6, CC50_STATE31),
+ PINMUX_IPSR_DATA(IP6_8, VI0_CLK),
+ PINMUX_IPSR_DATA(IP6_8, AVB_RX_CLK),
+ PINMUX_IPSR_DATA(IP6_9, VI0_DATA0_VI0_B0),
+ PINMUX_IPSR_DATA(IP6_9, AVB_RX_DV),
+ PINMUX_IPSR_DATA(IP6_10, VI0_DATA1_VI0_B1),
+ PINMUX_IPSR_DATA(IP6_10, AVB_RXD0),
+ PINMUX_IPSR_DATA(IP6_11, VI0_DATA2_VI0_B2),
+ PINMUX_IPSR_DATA(IP6_11, AVB_RXD1),
+ PINMUX_IPSR_DATA(IP6_12, VI0_DATA3_VI0_B3),
+ PINMUX_IPSR_DATA(IP6_12, AVB_RXD2),
+ PINMUX_IPSR_DATA(IP6_13, VI0_DATA4_VI0_B4),
+ PINMUX_IPSR_DATA(IP6_13, AVB_RXD3),
+ PINMUX_IPSR_DATA(IP6_14, VI0_DATA5_VI0_B5),
+ PINMUX_IPSR_DATA(IP6_14, AVB_RXD4),
+ PINMUX_IPSR_DATA(IP6_15, VI0_DATA6_VI0_B6),
+ PINMUX_IPSR_DATA(IP6_15, AVB_RXD5),
+ PINMUX_IPSR_DATA(IP6_16, VI0_DATA7_VI0_B7),
+ PINMUX_IPSR_DATA(IP6_16, AVB_RXD6),
+ PINMUX_IPSR_DATA(IP6_19_17, VI0_CLKENB),
+ PINMUX_IPSR_MODSEL_DATA(IP6_19_17, I2C3_SCL, SEL_I2C03_0),
+ PINMUX_IPSR_MODSEL_DATA(IP6_19_17, SCIFA5_RXD_C, SEL_SCIFA5_2),
+ PINMUX_IPSR_MODSEL_DATA(IP6_19_17, IETX_C, SEL_IEB_2),
+ PINMUX_IPSR_DATA(IP6_19_17, AVB_RXD7),
+ PINMUX_IPSR_DATA(IP6_22_20, VI0_FIELD),
+ PINMUX_IPSR_MODSEL_DATA(IP6_22_20, I2C3_SDA, SEL_I2C03_0),
+ PINMUX_IPSR_MODSEL_DATA(IP6_22_20, SCIFA5_TXD_C, SEL_SCIFA5_2),
+ PINMUX_IPSR_MODSEL_DATA(IP6_22_20, IECLK_C, SEL_IEB_2),
+ PINMUX_IPSR_DATA(IP6_22_20, AVB_RX_ER),
+ PINMUX_IPSR_DATA(IP6_25_23, VI0_HSYNC_N),
+ PINMUX_IPSR_MODSEL_DATA(IP6_25_23, SCIF0_RXD_B, SEL_SCIF0_1),
+ PINMUX_IPSR_MODSEL_DATA(IP6_25_23, I2C0_SCL_C, SEL_I2C00_2),
+ PINMUX_IPSR_MODSEL_DATA(IP6_25_23, IERX_C, SEL_IEB_2),
+ PINMUX_IPSR_DATA(IP6_25_23, AVB_COL),
+ PINMUX_IPSR_DATA(IP6_28_26, VI0_VSYNC_N),
+ PINMUX_IPSR_MODSEL_DATA(IP6_28_26, SCIF0_TXD_B, SEL_SCIF0_1),
+ PINMUX_IPSR_MODSEL_DATA(IP6_28_26, I2C0_SDA_C, SEL_I2C00_2),
+ PINMUX_IPSR_MODSEL_DATA(IP6_28_26, AUDIO_CLKOUT_B, SEL_ADG_1),
+ PINMUX_IPSR_DATA(IP6_28_26, AVB_TX_EN),
+ PINMUX_IPSR_MODSEL_DATA(IP6_31_29, ETH_MDIO, SEL_ETH_0),
+ PINMUX_IPSR_DATA(IP6_31_29, VI0_G0),
+ PINMUX_IPSR_MODSEL_DATA(IP6_31_29, MSIOF2_RXD_B, SEL_MSI2_1),
+ PINMUX_IPSR_MODSEL_DATA(IP6_31_29, IIC0_SCL_D, SEL_IIC00_3),
+ PINMUX_IPSR_DATA(IP6_31_29, AVB_TX_CLK),
+ PINMUX_IPSR_MODSEL_DATA(IP6_31_29, ADIDATA, SEL_RAD_0),
+ PINMUX_IPSR_MODSEL_DATA(IP6_31_29, AD_DI, SEL_ADI_0),
+
+ /* IPSR7 */
+ PINMUX_IPSR_MODSEL_DATA(IP7_2_0, ETH_CRS_DV, SEL_ETH_0),
+ PINMUX_IPSR_DATA(IP7_2_0, VI0_G1),
+ PINMUX_IPSR_MODSEL_DATA(IP7_2_0, MSIOF2_TXD_B, SEL_MSI2_1),
+ PINMUX_IPSR_MODSEL_DATA(IP7_2_0, IIC0_SDA_D, SEL_IIC00_3),
+ PINMUX_IPSR_DATA(IP7_2_0, AVB_TXD0),
+ PINMUX_IPSR_MODSEL_DATA(IP7_2_0, ADICS_SAMP, SEL_RAD_0),
+ PINMUX_IPSR_MODSEL_DATA(IP7_2_0, AD_DO, SEL_ADI_0),
+ PINMUX_IPSR_MODSEL_DATA(IP7_5_3, ETH_RX_ER, SEL_ETH_0),
+ PINMUX_IPSR_DATA(IP7_5_3, VI0_G2),
+ PINMUX_IPSR_MODSEL_DATA(IP7_5_3, MSIOF2_SCK_B, SEL_MSI2_1),
+ PINMUX_IPSR_MODSEL_DATA(IP7_5_3, CAN0_RX_B, SEL_CAN0_1),
+ PINMUX_IPSR_DATA(IP7_5_3, AVB_TXD1),
+ PINMUX_IPSR_MODSEL_DATA(IP7_5_3, ADICLK, SEL_RAD_0),
+ PINMUX_IPSR_MODSEL_DATA(IP7_5_3, AD_CLK, SEL_ADI_0),
+ PINMUX_IPSR_MODSEL_DATA(IP7_8_6, ETH_RXD0, SEL_ETH_0),
+ PINMUX_IPSR_DATA(IP7_8_6, VI0_G3),
+ PINMUX_IPSR_MODSEL_DATA(IP7_8_6, MSIOF2_SYNC_B, SEL_MSI2_1),
+ PINMUX_IPSR_MODSEL_DATA(IP7_8_6, CAN0_TX_B, SEL_CAN0_1),
+ PINMUX_IPSR_DATA(IP7_8_6, AVB_TXD2),
+ PINMUX_IPSR_MODSEL_DATA(IP7_8_6, ADICHS0, SEL_RAD_0),
+ PINMUX_IPSR_MODSEL_DATA(IP7_8_6, AD_NCS_N, SEL_ADI_0),
+ PINMUX_IPSR_MODSEL_DATA(IP7_11_9, ETH_RXD1, SEL_ETH_0),
+ PINMUX_IPSR_DATA(IP7_11_9, VI0_G4),
+ PINMUX_IPSR_MODSEL_DATA(IP7_11_9, MSIOF2_SS1_B, SEL_MSI2_1),
+ PINMUX_IPSR_MODSEL_DATA(IP7_11_9, SCIF4_RXD_D, SEL_SCIF4_3),
+ PINMUX_IPSR_DATA(IP7_11_9, AVB_TXD3),
+ PINMUX_IPSR_MODSEL_DATA(IP7_11_9, ADICHS1, SEL_RAD_0),
+ PINMUX_IPSR_MODSEL_DATA(IP7_14_12, ETH_LINK, SEL_ETH_0),
+ PINMUX_IPSR_DATA(IP7_14_12, VI0_G5),
+ PINMUX_IPSR_MODSEL_DATA(IP7_14_12, MSIOF2_SS2_B, SEL_MSI2_1),
+ PINMUX_IPSR_MODSEL_DATA(IP7_14_12, SCIF4_TXD_D, SEL_SCIF4_3),
+ PINMUX_IPSR_DATA(IP7_14_12, AVB_TXD4),
+ PINMUX_IPSR_MODSEL_DATA(IP7_14_12, ADICHS2, SEL_RAD_0),
+ PINMUX_IPSR_MODSEL_DATA(IP7_17_15, ETH_REFCLK, SEL_ETH_0),
+ PINMUX_IPSR_DATA(IP7_17_15, VI0_G6),
+ PINMUX_IPSR_MODSEL_DATA(IP7_17_15, SCIF2_SCK_C, SEL_SCIF2_2),
+ PINMUX_IPSR_DATA(IP7_17_15, AVB_TXD5),
+ PINMUX_IPSR_MODSEL_DATA(IP7_17_15, SSI_SCK5_B, SEL_SSI5_1),
+ PINMUX_IPSR_MODSEL_DATA(IP7_20_18, ETH_TXD1, SEL_ETH_0),
+ PINMUX_IPSR_DATA(IP7_20_18, VI0_G7),
+ PINMUX_IPSR_MODSEL_DATA(IP7_20_18, SCIF2_RXD_C, SEL_SCIF2_2),
+ PINMUX_IPSR_MODSEL_DATA(IP7_20_18, IIC1_SCL_D, SEL_IIC01_3),
+ PINMUX_IPSR_DATA(IP7_20_18, AVB_TXD6),
+ PINMUX_IPSR_MODSEL_DATA(IP7_20_18, SSI_WS5_B, SEL_SSI5_1),
+ PINMUX_IPSR_MODSEL_DATA(IP7_23_21, ETH_TX_EN, SEL_ETH_0),
+ PINMUX_IPSR_DATA(IP7_23_21, VI0_R0),
+ PINMUX_IPSR_MODSEL_DATA(IP7_23_21, SCIF2_TXD_C, SEL_SCIF2_2),
+ PINMUX_IPSR_MODSEL_DATA(IP7_23_21, IIC1_SDA_D, SEL_IIC01_3),
+ PINMUX_IPSR_DATA(IP7_23_21, AVB_TXD7),
+ PINMUX_IPSR_MODSEL_DATA(IP7_23_21, SSI_SDATA5_B, SEL_SSI5_1),
+ PINMUX_IPSR_MODSEL_DATA(IP7_26_24, ETH_MAGIC, SEL_ETH_0),
+ PINMUX_IPSR_DATA(IP7_26_24, VI0_R1),
+ PINMUX_IPSR_MODSEL_DATA(IP7_26_24, SCIF3_SCK_B, SEL_SCIF3_1),
+ PINMUX_IPSR_DATA(IP7_26_24, AVB_TX_ER),
+ PINMUX_IPSR_MODSEL_DATA(IP7_26_24, SSI_SCK6_B, SEL_SSI6_1),
+ PINMUX_IPSR_MODSEL_DATA(IP7_29_27, ETH_TXD0, SEL_ETH_0),
+ PINMUX_IPSR_DATA(IP7_29_27, VI0_R2),
+ PINMUX_IPSR_MODSEL_DATA(IP7_29_27, SCIF3_RXD_B, SEL_SCIF3_1),
+ PINMUX_IPSR_MODSEL_DATA(IP7_29_27, I2C4_SCL_E, SEL_I2C04_4),
+ PINMUX_IPSR_DATA(IP7_29_27, AVB_GTX_CLK),
+ PINMUX_IPSR_MODSEL_DATA(IP7_29_27, SSI_WS6_B, SEL_SSI6_1),
+ PINMUX_IPSR_DATA(IP7_31, DREQ0_N),
+ PINMUX_IPSR_DATA(IP7_31, SCIFB1_RXD),
+
+ /* IPSR8 */
+ PINMUX_IPSR_MODSEL_DATA(IP8_2_0, ETH_MDC, SEL_ETH_0),
+ PINMUX_IPSR_DATA(IP8_2_0, VI0_R3),
+ PINMUX_IPSR_MODSEL_DATA(IP8_2_0, SCIF3_TXD_B, SEL_SCIF3_1),
+ PINMUX_IPSR_MODSEL_DATA(IP8_2_0, I2C4_SDA_E, SEL_I2C04_4),
+ PINMUX_IPSR_DATA(IP8_2_0, AVB_MDC),
+ PINMUX_IPSR_MODSEL_DATA(IP8_2_0, SSI_SDATA6_B, SEL_SSI6_1),
+ PINMUX_IPSR_MODSEL_DATA(IP8_5_3, HSCIF0_HRX, SEL_HSCIF0_0),
+ PINMUX_IPSR_DATA(IP8_5_3, VI0_R4),
+ PINMUX_IPSR_MODSEL_DATA(IP8_5_3, I2C1_SCL_C, SEL_I2C01_2),
+ PINMUX_IPSR_MODSEL_DATA(IP8_5_3, AUDIO_CLKA_B, SEL_ADG_1),
+ PINMUX_IPSR_DATA(IP8_5_3, AVB_MDIO),
+ PINMUX_IPSR_MODSEL_DATA(IP8_5_3, SSI_SCK78_B, SEL_SSI7_1),
+ PINMUX_IPSR_MODSEL_DATA(IP8_8_6, HSCIF0_HTX, SEL_HSCIF0_0),
+ PINMUX_IPSR_DATA(IP8_8_6, VI0_R5),
+ PINMUX_IPSR_MODSEL_DATA(IP8_8_6, I2C1_SDA_C, SEL_I2C01_2),
+ PINMUX_IPSR_MODSEL_DATA(IP8_8_6, AUDIO_CLKB_B, SEL_ADG_1),
+ PINMUX_IPSR_DATA(IP8_5_3, AVB_LINK),
+ PINMUX_IPSR_MODSEL_DATA(IP8_8_6, SSI_WS78_B, SEL_SSI7_1),
+ PINMUX_IPSR_DATA(IP8_11_9, HSCIF0_HCTS_N),
+ PINMUX_IPSR_DATA(IP8_11_9, VI0_R6),
+ PINMUX_IPSR_MODSEL_DATA(IP8_11_9, SCIF0_RXD_D, SEL_SCIF0_3),
+ PINMUX_IPSR_MODSEL_DATA(IP8_11_9, I2C0_SCL_E, SEL_I2C00_4),
+ PINMUX_IPSR_DATA(IP8_11_9, AVB_MAGIC),
+ PINMUX_IPSR_MODSEL_DATA(IP8_11_9, SSI_SDATA7_B, SEL_SSI7_1),
+ PINMUX_IPSR_DATA(IP8_14_12, HSCIF0_HRTS_N),
+ PINMUX_IPSR_DATA(IP8_14_12, VI0_R7),
+ PINMUX_IPSR_MODSEL_DATA(IP8_14_12, SCIF0_TXD_D, SEL_SCIF0_3),
+ PINMUX_IPSR_MODSEL_DATA(IP8_14_12, I2C0_SDA_E, SEL_I2C00_4),
+ PINMUX_IPSR_DATA(IP8_14_12, AVB_PHY_INT),
+ PINMUX_IPSR_MODSEL_DATA(IP8_14_12, SSI_SDATA8_B, SEL_SSI8_1),
+ PINMUX_IPSR_MODSEL_DATA(IP8_16_15, HSCIF0_HSCK, SEL_HSCIF0_0),
+ PINMUX_IPSR_MODSEL_DATA(IP8_16_15, SCIF_CLK_B, SEL_SCIF0_1),
+ PINMUX_IPSR_DATA(IP8_16_15, AVB_CRS),
+ PINMUX_IPSR_MODSEL_DATA(IP8_16_15, AUDIO_CLKC_B, SEL_ADG_1),
+ PINMUX_IPSR_MODSEL_DATA(IP8_19_17, I2C0_SCL, SEL_I2C00_0),
+ PINMUX_IPSR_MODSEL_DATA(IP8_19_17, SCIF0_RXD_C, SEL_SCIF0_2),
+ PINMUX_IPSR_DATA(IP8_19_17, PWM5),
+ PINMUX_IPSR_MODSEL_DATA(IP8_19_17, TCLK1_B, SEL_TMU_1),
+ PINMUX_IPSR_DATA(IP8_19_17, AVB_GTXREFCLK),
+ PINMUX_IPSR_MODSEL_DATA(IP8_19_17, CAN1_RX_D, SEL_CAN1_3),
+ PINMUX_IPSR_DATA(IP8_19_17, TPUTO0_B),
+ PINMUX_IPSR_MODSEL_DATA(IP8_22_20, I2C0_SDA, SEL_I2C00_0),
+ PINMUX_IPSR_MODSEL_DATA(IP8_22_20, SCIF0_TXD_C, SEL_SCIF0_2),
+ PINMUX_IPSR_DATA(IP8_22_20, TPUTO0),
+ PINMUX_IPSR_MODSEL_DATA(IP8_22_20, CAN_CLK, SEL_CAN_0),
+ PINMUX_IPSR_DATA(IP8_22_20, DVC_MUTE),
+ PINMUX_IPSR_MODSEL_DATA(IP8_22_20, CAN1_TX_D, SEL_CAN1_3),
+ PINMUX_IPSR_MODSEL_DATA(IP8_25_23, I2C1_SCL, SEL_I2C01_0),
+ PINMUX_IPSR_MODSEL_DATA(IP8_25_23, SCIF4_RXD, SEL_SCIF4_0),
+ PINMUX_IPSR_DATA(IP8_25_23, PWM5_B),
+ PINMUX_IPSR_DATA(IP8_25_23, DU1_DR0),
+ PINMUX_IPSR_MODSEL_DATA(IP8_25_23, RIF1_SYNC_B, SEL_DR2_1),
+ PINMUX_IPSR_MODSEL_DATA(IP8_25_23, TS_SDATA_D, SEL_TSIF0_3),
+ PINMUX_IPSR_DATA(IP8_25_23, TPUTO1_B),
+ PINMUX_IPSR_MODSEL_DATA(IP8_28_26, I2C1_SDA, SEL_I2C01_0),
+ PINMUX_IPSR_MODSEL_DATA(IP8_28_26, SCIF4_TXD, SEL_SCIF4_0),
+ PINMUX_IPSR_DATA(IP8_28_26, IRQ5),
+ PINMUX_IPSR_DATA(IP8_28_26, DU1_DR1),
+ PINMUX_IPSR_MODSEL_DATA(IP8_28_26, RIF1_CLK_B, SEL_DR2_1),
+ PINMUX_IPSR_MODSEL_DATA(IP8_28_26, TS_SCK_D, SEL_TSIF0_3),
+ PINMUX_IPSR_MODSEL_DATA(IP8_28_26, BPFCLK_C, SEL_DARC_2),
+ PINMUX_IPSR_DATA(IP8_31_29, MSIOF0_RXD),
+ PINMUX_IPSR_MODSEL_DATA(IP8_31_29, SCIF5_RXD, SEL_SCIF5_0),
+ PINMUX_IPSR_MODSEL_DATA(IP8_31_29, I2C2_SCL_C, SEL_I2C02_2),
+ PINMUX_IPSR_DATA(IP8_31_29, DU1_DR2),
+ PINMUX_IPSR_MODSEL_DATA(IP8_31_29, RIF1_D0_B, SEL_DR2_1),
+ PINMUX_IPSR_MODSEL_DATA(IP8_31_29, TS_SDEN_D, SEL_TSIF0_3),
+ PINMUX_IPSR_MODSEL_DATA(IP8_31_29, FMCLK_C, SEL_DARC_2),
+ PINMUX_IPSR_MODSEL_DATA(IP8_31_29, RDS_CLK, SEL_RDS_0),
+
+ /*
+ * From IPSR9 to IPSR10 have been removed because they does not use.
+ */
+
+ /* IPSR11 */
+ PINMUX_IPSR_MODSEL_DATA(IP11_2_0, SSI_WS5, SEL_SSI5_0),
+ PINMUX_IPSR_MODSEL_DATA(IP11_2_0, SCIFA3_RXD, SEL_SCIFA3_0),
+ PINMUX_IPSR_MODSEL_DATA(IP11_2_0, I2C3_SCL_C, SEL_I2C03_2),
+ PINMUX_IPSR_DATA(IP11_2_0, DU1_DOTCLKOUT0),
+ PINMUX_IPSR_DATA(IP11_2_0, CAN_DEBUGOUT11),
+ PINMUX_IPSR_MODSEL_DATA(IP11_5_3, SSI_SDATA5, SEL_SSI5_0),
+ PINMUX_IPSR_MODSEL_DATA(IP11_5_3, SCIFA3_TXD, SEL_SCIFA3_0),
+ PINMUX_IPSR_MODSEL_DATA(IP11_5_3, I2C3_SDA_C, SEL_I2C03_2),
+ PINMUX_IPSR_DATA(IP11_5_3, DU1_DOTCLKOUT1),
+ PINMUX_IPSR_DATA(IP11_5_3, CAN_DEBUGOUT12),
+ PINMUX_IPSR_MODSEL_DATA(IP11_7_6, SSI_SCK6, SEL_SSI6_0),
+ PINMUX_IPSR_MODSEL_DATA(IP11_7_6, SCIFA1_SCK_B, SEL_SCIFA1_1),
+ PINMUX_IPSR_DATA(IP11_7_6, DU1_EXHSYNC_DU1_HSYNC),
+ PINMUX_IPSR_DATA(IP11_7_6, CAN_DEBUGOUT13),
+ PINMUX_IPSR_MODSEL_DATA(IP11_10_8, SSI_WS6, SEL_SSI6_0),
+ PINMUX_IPSR_MODSEL_DATA(IP11_10_8, SCIFA1_RXD_B, SEL_SCIFA1_1),
+ PINMUX_IPSR_MODSEL_DATA(IP11_10_8, I2C4_SCL_C, SEL_I2C04_2),
+ PINMUX_IPSR_DATA(IP11_10_8, DU1_EXVSYNC_DU1_VSYNC),
+ PINMUX_IPSR_DATA(IP11_10_8, CAN_DEBUGOUT14),
+ PINMUX_IPSR_MODSEL_DATA(IP11_13_11, SSI_SDATA6, SEL_SSI6_0),
+ PINMUX_IPSR_MODSEL_DATA(IP11_13_11, SCIFA1_TXD_B, SEL_SCIFA1_1),
+ PINMUX_IPSR_MODSEL_DATA(IP11_13_11, I2C4_SDA_C, SEL_I2C04_2),
+ PINMUX_IPSR_DATA(IP11_13_11, DU1_EXODDF_DU1_ODDF_DISP_CDE),
+ PINMUX_IPSR_DATA(IP11_13_11, CAN_DEBUGOUT15),
+ PINMUX_IPSR_MODSEL_DATA(IP11_15_14, SSI_SCK78, SEL_SSI7_0),
+ PINMUX_IPSR_MODSEL_DATA(IP11_15_14, SCIFA2_SCK_B, SEL_SCIFA2_1),
+ PINMUX_IPSR_MODSEL_DATA(IP11_15_14, IIC0_SDA_C, SEL_IIC00_2),
+ PINMUX_IPSR_DATA(IP11_15_14, DU1_DISP),
+ PINMUX_IPSR_MODSEL_DATA(IP11_17_16, SSI_WS78, SEL_SSI7_0),
+ PINMUX_IPSR_MODSEL_DATA(IP11_17_16, SCIFA2_RXD_B, SEL_SCIFA2_1),
+ PINMUX_IPSR_MODSEL_DATA(IP11_17_16, IIC0_SCL_C, SEL_IIC00_2),
+ PINMUX_IPSR_DATA(IP11_17_16, DU1_CDE),
+ PINMUX_IPSR_MODSEL_DATA(IP11_20_18, SSI_SDATA7, SEL_SSI7_0),
+ PINMUX_IPSR_MODSEL_DATA(IP11_20_18, SCIFA2_TXD_B, SEL_SCIFA2_1),
+ PINMUX_IPSR_DATA(IP11_20_18, IRQ8),
+ PINMUX_IPSR_MODSEL_DATA(IP11_20_18, AUDIO_CLKA_D, SEL_ADG_3),
+ PINMUX_IPSR_MODSEL_DATA(IP11_20_18, CAN_CLK_D, SEL_CAN_3),
+ PINMUX_IPSR_DATA(IP11_20_18, PCMOE_N),
+ PINMUX_IPSR_DATA(IP11_23_21, SSI_SCK0129),
+ PINMUX_IPSR_MODSEL_DATA(IP11_23_21, MSIOF1_RXD_B, SEL_MSI1_1),
+ PINMUX_IPSR_MODSEL_DATA(IP11_23_21, SCIF5_RXD_D, SEL_SCIF5_3),
+ PINMUX_IPSR_MODSEL_DATA(IP11_23_21, ADIDATA_B, SEL_RAD_1),
+ PINMUX_IPSR_MODSEL_DATA(IP11_23_21, AD_DI_B, SEL_ADI_1),
+ PINMUX_IPSR_DATA(IP11_23_21, PCMWE_N),
+ PINMUX_IPSR_DATA(IP11_26_24, SSI_WS0129),
+ PINMUX_IPSR_MODSEL_DATA(IP11_26_24, MSIOF1_TXD_B, SEL_MSI1_1),
+ PINMUX_IPSR_MODSEL_DATA(IP11_26_24, SCIF5_TXD_D, SEL_SCIF5_3),
+ PINMUX_IPSR_MODSEL_DATA(IP11_26_24, ADICS_SAMP_B, SEL_RAD_1),
+ PINMUX_IPSR_MODSEL_DATA(IP11_26_24, AD_DO_B, SEL_ADI_1),
+ PINMUX_IPSR_DATA(IP11_29_27, SSI_SDATA0),
+ PINMUX_IPSR_MODSEL_DATA(IP11_29_27, MSIOF1_SCK_B, SEL_MSI1_1),
+ PINMUX_IPSR_DATA(IP11_29_27, PWM0_B),
+ PINMUX_IPSR_MODSEL_DATA(IP11_29_27, ADICLK_B, SEL_RAD_1),
+ PINMUX_IPSR_MODSEL_DATA(IP11_29_27, AD_CLK_B, SEL_ADI_1),
+
+ /*
+ * From IPSR12 to IPSR13 have been removed because they does not use.
+ */
+};
+
+static struct pinmux_gpio pinmux_gpios[] = {
+ PINMUX_GPIO_GP_ALL(),
+
+ GPIO_FN(A2), GPIO_FN(WE0_N), GPIO_FN(WE1_N), GPIO_FN(DACK0),
+ GPIO_FN(USB0_PWEN), GPIO_FN(USB0_OVC), GPIO_FN(USB1_PWEN),
+ GPIO_FN(USB1_OVC), GPIO_FN(SD0_CLK), GPIO_FN(SD0_CMD),
+ GPIO_FN(SD0_DATA0), GPIO_FN(SD0_DATA1), GPIO_FN(SD0_DATA2),
+ GPIO_FN(SD0_DATA3), GPIO_FN(SD0_CD), GPIO_FN(SD0_WP),
+ GPIO_FN(SD1_CLK), GPIO_FN(SD1_CMD), GPIO_FN(SD1_DATA0),
+ GPIO_FN(SD1_DATA1), GPIO_FN(SD1_DATA2), GPIO_FN(SD1_DATA3),
+
+ /*
+ * From IPSR0 to IPSR5 have been removed because they does not use
+ */
+
+ /* IPSR6 */
+ GPIO_FN(DU0_EXVSYNC_DU0_VSYNC), GPIO_FN(QSTB_QHE),
+ GPIO_FN(CC50_STATE28), GPIO_FN(DU0_EXODDF_DU0_ODDF_DISP_CDE),
+ GPIO_FN(QCPV_QDE), GPIO_FN(CC50_STATE29), GPIO_FN(DU0_DISP),
+ GPIO_FN(QPOLA), GPIO_FN(CC50_STATE30), GPIO_FN(DU0_CDE), GPIO_FN(QPOLB),
+ GPIO_FN(CC50_STATE31), GPIO_FN(VI0_CLK), GPIO_FN(AVB_RX_CLK),
+ GPIO_FN(VI0_DATA0_VI0_B0), GPIO_FN(AVB_RX_DV),
+ GPIO_FN(VI0_DATA1_VI0_B1), GPIO_FN(AVB_RXD0), GPIO_FN(VI0_DATA2_VI0_B2),
+ GPIO_FN(AVB_RXD1), GPIO_FN(VI0_DATA3_VI0_B3), GPIO_FN(AVB_RXD2),
+ GPIO_FN(VI0_DATA4_VI0_B4), GPIO_FN(AVB_RXD3), GPIO_FN(VI0_DATA5_VI0_B5),
+ GPIO_FN(AVB_RXD4), GPIO_FN(VI0_DATA6_VI0_B6), GPIO_FN(AVB_RXD5),
+ GPIO_FN(VI0_DATA7_VI0_B7), GPIO_FN(AVB_RXD6), GPIO_FN(VI0_CLKENB),
+ GPIO_FN(I2C3_SCL), GPIO_FN(SCIFA5_RXD_C), GPIO_FN(IETX_C),
+ GPIO_FN(AVB_RXD7), GPIO_FN(VI0_FIELD), GPIO_FN(I2C3_SDA),
+ GPIO_FN(SCIFA5_TXD_C), GPIO_FN(IECLK_C), GPIO_FN(AVB_RX_ER),
+ GPIO_FN(VI0_HSYNC_N), GPIO_FN(SCIF0_RXD_B), GPIO_FN(I2C0_SCL_C),
+ GPIO_FN(IERX_C), GPIO_FN(AVB_COL), GPIO_FN(VI0_VSYNC_N),
+ GPIO_FN(SCIF0_TXD_B), GPIO_FN(I2C0_SDA_C), GPIO_FN(AUDIO_CLKOUT_B),
+ GPIO_FN(AVB_TX_EN), GPIO_FN(ETH_MDIO), GPIO_FN(VI0_G0),
+ GPIO_FN(MSIOF2_RXD_B), GPIO_FN(IIC0_SCL_D), GPIO_FN(AVB_TX_CLK),
+ GPIO_FN(ADIDATA), GPIO_FN(AD_DI),
+
+ /* IPSR7 */
+ GPIO_FN(ETH_CRS_DV), GPIO_FN(VI0_G1), GPIO_FN(MSIOF2_TXD_B),
+ GPIO_FN(IIC0_SDA_D), GPIO_FN(AVB_TXD0), GPIO_FN(ADICS_SAMP),
+ GPIO_FN(AD_DO), GPIO_FN(ETH_RX_ER), GPIO_FN(VI0_G2),
+ GPIO_FN(MSIOF2_SCK_B), GPIO_FN(CAN0_RX_B), GPIO_FN(AVB_TXD1),
+ GPIO_FN(ADICLK), GPIO_FN(AD_CLK), GPIO_FN(ETH_RXD0), GPIO_FN(VI0_G3),
+ GPIO_FN(MSIOF2_SYNC_B), GPIO_FN(CAN0_TX_B), GPIO_FN(AVB_TXD2),
+ GPIO_FN(ADICHS0), GPIO_FN(AD_NCS_N), GPIO_FN(ETH_RXD1),
+ GPIO_FN(VI0_G4), GPIO_FN(MSIOF2_SS1_B), GPIO_FN(SCIF4_RXD_D),
+ GPIO_FN(AVB_TXD3), GPIO_FN(ADICHS1), GPIO_FN(ETH_LINK), GPIO_FN(VI0_G5),
+ GPIO_FN(MSIOF2_SS2_B), GPIO_FN(SCIF4_TXD_D), GPIO_FN(AVB_TXD4),
+ GPIO_FN(ADICHS2), GPIO_FN(ETH_REFCLK), GPIO_FN(VI0_G6),
+ GPIO_FN(SCIF2_SCK_C), GPIO_FN(AVB_TXD5), GPIO_FN(SSI_SCK5_B),
+ GPIO_FN(ETH_TXD1), GPIO_FN(VI0_G7), GPIO_FN(SCIF2_RXD_C),
+ GPIO_FN(IIC1_SCL_D), GPIO_FN(AVB_TXD6), GPIO_FN(SSI_WS5_B),
+ GPIO_FN(ETH_TX_EN), GPIO_FN(VI0_R0), GPIO_FN(SCIF2_TXD_C),
+ GPIO_FN(IIC1_SDA_D), GPIO_FN(AVB_TXD7), GPIO_FN(SSI_SDATA5_B),
+ GPIO_FN(ETH_MAGIC), GPIO_FN(VI0_R1), GPIO_FN(SCIF3_SCK_B),
+ GPIO_FN(AVB_TX_ER), GPIO_FN(SSI_SCK6_B), GPIO_FN(ETH_TXD0),
+ GPIO_FN(VI0_R2), GPIO_FN(SCIF3_RXD_B), GPIO_FN(I2C4_SCL_E),
+ GPIO_FN(AVB_GTX_CLK), GPIO_FN(SSI_WS6_B), GPIO_FN(DREQ0_N),
+ GPIO_FN(SCIFB1_RXD),
+
+ /* IPSR8 */
+ GPIO_FN(ETH_MDC), GPIO_FN(VI0_R3), GPIO_FN(SCIF3_TXD_B),
+ GPIO_FN(I2C4_SDA_E), GPIO_FN(AVB_MDC), GPIO_FN(SSI_SDATA6_B),
+ GPIO_FN(HSCIF0_HRX), GPIO_FN(VI0_R4), GPIO_FN(I2C1_SCL_C),
+ GPIO_FN(AUDIO_CLKA_B), GPIO_FN(AVB_MDIO), GPIO_FN(SSI_SCK78_B),
+ GPIO_FN(HSCIF0_HTX), GPIO_FN(VI0_R5), GPIO_FN(I2C1_SDA_C),
+ GPIO_FN(AUDIO_CLKB_B), GPIO_FN(AVB_LINK), GPIO_FN(SSI_WS78_B),
+ GPIO_FN(HSCIF0_HCTS_N), GPIO_FN(VI0_R6), GPIO_FN(SCIF0_RXD_D),
+ GPIO_FN(I2C0_SCL_E), GPIO_FN(AVB_MAGIC), GPIO_FN(SSI_SDATA7_B),
+ GPIO_FN(HSCIF0_HRTS_N), GPIO_FN(VI0_R7), GPIO_FN(SCIF0_TXD_D),
+ GPIO_FN(I2C0_SDA_E), GPIO_FN(AVB_PHY_INT), GPIO_FN(SSI_SDATA8_B),
+ GPIO_FN(HSCIF0_HSCK), GPIO_FN(SCIF_CLK_B), GPIO_FN(AVB_CRS),
+ GPIO_FN(AUDIO_CLKC_B), GPIO_FN(I2C0_SCL), GPIO_FN(SCIF0_RXD_C),
+ GPIO_FN(PWM5), GPIO_FN(TCLK1_B), GPIO_FN(AVB_GTXREFCLK),
+ GPIO_FN(CAN1_RX_D), GPIO_FN(TPUTO0_B), GPIO_FN(I2C0_SDA),
+ GPIO_FN(SCIF0_TXD_C), GPIO_FN(TPUTO0), GPIO_FN(CAN_CLK),
+ GPIO_FN(DVC_MUTE), GPIO_FN(CAN1_TX_D), GPIO_FN(I2C1_SCL),
+ GPIO_FN(SCIF4_RXD), GPIO_FN(PWM5_B), GPIO_FN(DU1_DR0),
+ GPIO_FN(RIF1_SYNC_B), GPIO_FN(TS_SDATA_D), GPIO_FN(TPUTO1_B),
+ GPIO_FN(I2C1_SDA), GPIO_FN(SCIF4_TXD), GPIO_FN(IRQ5),
+ GPIO_FN(DU1_DR1), GPIO_FN(RIF1_CLK_B), GPIO_FN(TS_SCK_D),
+ GPIO_FN(BPFCLK_C), GPIO_FN(MSIOF0_RXD), GPIO_FN(SCIF5_RXD),
+ GPIO_FN(I2C2_SCL_C), GPIO_FN(DU1_DR2), GPIO_FN(RIF1_D0_B),
+ GPIO_FN(TS_SDEN_D), GPIO_FN(FMCLK_C), GPIO_FN(RDS_CLK),
+
+ /*
+ * From IPSR9 to IPSR10 have been removed because they does not use.
+ */
+
+ /* IPSR11 */
+ GPIO_FN(SSI_WS5), GPIO_FN(SCIFA3_RXD), GPIO_FN(I2C3_SCL_C),
+ GPIO_FN(DU1_DOTCLKOUT0), GPIO_FN(CAN_DEBUGOUT11), GPIO_FN(SSI_SDATA5),
+ GPIO_FN(SCIFA3_TXD), GPIO_FN(I2C3_SDA_C), GPIO_FN(DU1_DOTCLKOUT1),
+ GPIO_FN(CAN_DEBUGOUT12), GPIO_FN(SSI_SCK6), GPIO_FN(SCIFA1_SCK_B),
+ GPIO_FN(DU1_EXHSYNC_DU1_HSYNC), GPIO_FN(CAN_DEBUGOUT13),
+ GPIO_FN(SSI_WS6), GPIO_FN(SCIFA1_RXD_B), GPIO_FN(I2C4_SCL_C),
+ GPIO_FN(DU1_EXVSYNC_DU1_VSYNC), GPIO_FN(CAN_DEBUGOUT14),
+ GPIO_FN(SSI_SDATA6), GPIO_FN(SCIFA1_TXD_B), GPIO_FN(I2C4_SDA_C),
+ GPIO_FN(DU1_EXODDF_DU1_ODDF_DISP_CDE), GPIO_FN(CAN_DEBUGOUT15),
+ GPIO_FN(SSI_SCK78), GPIO_FN(SCIFA2_SCK_B), GPIO_FN(IIC0_SDA_C),
+ GPIO_FN(DU1_DISP), GPIO_FN(SSI_WS78), GPIO_FN(SCIFA2_RXD_B),
+ GPIO_FN(IIC0_SCL_C), GPIO_FN(DU1_CDE), GPIO_FN(SSI_SDATA7),
+ GPIO_FN(SCIFA2_TXD_B), GPIO_FN(IRQ8), GPIO_FN(AUDIO_CLKA_D),
+ GPIO_FN(CAN_CLK_D), GPIO_FN(PCMOE_N), GPIO_FN(SSI_SCK0129),
+ GPIO_FN(MSIOF1_RXD_B), GPIO_FN(SCIF5_RXD_D), GPIO_FN(ADIDATA_B),
+ GPIO_FN(AD_DI_B), GPIO_FN(PCMWE_N), GPIO_FN(SSI_WS0129),
+ GPIO_FN(MSIOF1_TXD_B), GPIO_FN(SCIF5_TXD_D), GPIO_FN(ADICS_SAMP_B),
+ GPIO_FN(AD_DO_B), GPIO_FN(SSI_SDATA0), GPIO_FN(MSIOF1_SCK_B),
+ GPIO_FN(PWM0_B), GPIO_FN(ADICLK_B), GPIO_FN(AD_CLK_B),
+
+ /*
+ * From IPSR12 to IPSR13 have been removed because they does not use.
+ */
+};
+
+static struct pinmux_cfg_reg pinmux_config_regs[] = {
+ { PINMUX_CFG_REG("GPSR0", 0xE6060004, 32, 1) {
+ GP_0_31_FN, FN_IP2_17_16,
+ GP_0_30_FN, FN_IP2_15_14,
+ GP_0_29_FN, FN_IP2_13_12,
+ GP_0_28_FN, FN_IP2_11_10,
+ GP_0_27_FN, FN_IP2_9_8,
+ GP_0_26_FN, FN_IP2_7_6,
+ GP_0_25_FN, FN_IP2_5_4,
+ GP_0_24_FN, FN_IP2_3_2,
+ GP_0_23_FN, FN_IP2_1_0,
+ GP_0_22_FN, FN_IP1_31_30,
+ GP_0_21_FN, FN_IP1_29_28,
+ GP_0_20_FN, FN_IP1_27,
+ GP_0_19_FN, FN_IP1_26,
+ GP_0_18_FN, FN_A2,
+ GP_0_17_FN, FN_IP1_24,
+ GP_0_16_FN, FN_IP1_23_22,
+ GP_0_15_FN, FN_IP1_21_20,
+ GP_0_14_FN, FN_IP1_19_18,
+ GP_0_13_FN, FN_IP1_17_15,
+ GP_0_12_FN, FN_IP1_14_13,
+ GP_0_11_FN, FN_IP1_12_11,
+ GP_0_10_FN, FN_IP1_10_8,
+ GP_0_9_FN, FN_IP1_7_6,
+ GP_0_8_FN, FN_IP1_5_4,
+ GP_0_7_FN, FN_IP1_3_2,
+ GP_0_6_FN, FN_IP1_1_0,
+ GP_0_5_FN, FN_IP0_31_30,
+ GP_0_4_FN, FN_IP0_29_28,
+ GP_0_3_FN, FN_IP0_27_26,
+ GP_0_2_FN, FN_IP0_25,
+ GP_0_1_FN, FN_IP0_24,
+ GP_0_0_FN, FN_IP0_23_22, }
+ },
+ { PINMUX_CFG_REG("GPSR1", 0xE6060008, 32, 1) {
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ GP_1_25_FN, FN_DACK0,
+ GP_1_24_FN, FN_IP7_31,
+ GP_1_23_FN, FN_IP4_1_0,
+ GP_1_22_FN, FN_WE1_N,
+ GP_1_21_FN, FN_WE0_N,
+ GP_1_20_FN, FN_IP3_31,
+ GP_1_19_FN, FN_IP3_30,
+ GP_1_18_FN, FN_IP3_29_27,
+ GP_1_17_FN, FN_IP3_26_24,
+ GP_1_16_FN, FN_IP3_23_21,
+ GP_1_15_FN, FN_IP3_20_18,
+ GP_1_14_FN, FN_IP3_17_15,
+ GP_1_13_FN, FN_IP3_14_13,
+ GP_1_12_FN, FN_IP3_12,
+ GP_1_11_FN, FN_IP3_11,
+ GP_1_10_FN, FN_IP3_10,
+ GP_1_9_FN, FN_IP3_9_8,
+ GP_1_8_FN, FN_IP3_7_6,
+ GP_1_7_FN, FN_IP3_5_4,
+ GP_1_6_FN, FN_IP3_3_2,
+ GP_1_5_FN, FN_IP3_1_0,
+ GP_1_4_FN, FN_IP2_31_30,
+ GP_1_3_FN, FN_IP2_29_27,
+ GP_1_2_FN, FN_IP2_26_24,
+ GP_1_1_FN, FN_IP2_23_21,
+ GP_1_0_FN, FN_IP2_20_18, }
+ },
+ { PINMUX_CFG_REG("GPSR2", 0xE606000C, 32, 1) {
+ GP_2_31_FN, FN_IP6_7_6,
+ GP_2_30_FN, FN_IP6_5_4,
+ GP_2_29_FN, FN_IP6_3_2,
+ GP_2_28_FN, FN_IP6_1_0,
+ GP_2_27_FN, FN_IP5_31_30,
+ GP_2_26_FN, FN_IP5_29_28,
+ GP_2_25_FN, FN_IP5_27_26,
+ GP_2_24_FN, FN_IP5_25_24,
+ GP_2_23_FN, FN_IP5_23_22,
+ GP_2_22_FN, FN_IP5_21_20,
+ GP_2_21_FN, FN_IP5_19_18,
+ GP_2_20_FN, FN_IP5_17_16,
+ GP_2_19_FN, FN_IP5_15_14,
+ GP_2_18_FN, FN_IP5_13_12,
+ GP_2_17_FN, FN_IP5_11_9,
+ GP_2_16_FN, FN_IP5_8_6,
+ GP_2_15_FN, FN_IP5_5_4,
+ GP_2_14_FN, FN_IP5_3_2,
+ GP_2_13_FN, FN_IP5_1_0,
+ GP_2_12_FN, FN_IP4_31_30,
+ GP_2_11_FN, FN_IP4_29_28,
+ GP_2_10_FN, FN_IP4_27_26,
+ GP_2_9_FN, FN_IP4_25_23,
+ GP_2_8_FN, FN_IP4_22_20,
+ GP_2_7_FN, FN_IP4_19_18,
+ GP_2_6_FN, FN_IP4_17_16,
+ GP_2_5_FN, FN_IP4_15_14,
+ GP_2_4_FN, FN_IP4_13_12,
+ GP_2_3_FN, FN_IP4_11_10,
+ GP_2_2_FN, FN_IP4_9_8,
+ GP_2_1_FN, FN_IP4_7_5,
+ GP_2_0_FN, FN_IP4_4_2 }
+ },
+ { PINMUX_CFG_REG("GPSR3", 0xE6060010, 32, 1) {
+ GP_3_31_FN, FN_IP8_22_20,
+ GP_3_30_FN, FN_IP8_19_17,
+ GP_3_29_FN, FN_IP8_16_15,
+ GP_3_28_FN, FN_IP8_14_12,
+ GP_3_27_FN, FN_IP8_11_9,
+ GP_3_26_FN, FN_IP8_8_6,
+ GP_3_25_FN, FN_IP8_5_3,
+ GP_3_24_FN, FN_IP8_2_0,
+ GP_3_23_FN, FN_IP7_29_27,
+ GP_3_22_FN, FN_IP7_26_24,
+ GP_3_21_FN, FN_IP7_23_21,
+ GP_3_20_FN, FN_IP7_20_18,
+ GP_3_19_FN, FN_IP7_17_15,
+ GP_3_18_FN, FN_IP7_14_12,
+ GP_3_17_FN, FN_IP7_11_9,
+ GP_3_16_FN, FN_IP7_8_6,
+ GP_3_15_FN, FN_IP7_5_3,
+ GP_3_14_FN, FN_IP7_2_0,
+ GP_3_13_FN, FN_IP6_31_29,
+ GP_3_12_FN, FN_IP6_28_26,
+ GP_3_11_FN, FN_IP6_25_23,
+ GP_3_10_FN, FN_IP6_22_20,
+ GP_3_9_FN, FN_IP6_19_17,
+ GP_3_8_FN, FN_IP6_16,
+ GP_3_7_FN, FN_IP6_15,
+ GP_3_6_FN, FN_IP6_14,
+ GP_3_5_FN, FN_IP6_13,
+ GP_3_4_FN, FN_IP6_12,
+ GP_3_3_FN, FN_IP6_11,
+ GP_3_2_FN, FN_IP6_10,
+ GP_3_1_FN, FN_IP6_9,
+ GP_3_0_FN, FN_IP6_8 }
+ },
+ { PINMUX_CFG_REG("GPSR4", 0xE6060014, 32, 1) {
+ GP_4_31_FN, FN_IP11_17_16,
+ GP_4_30_FN, FN_IP11_15_14,
+ GP_4_29_FN, FN_IP11_13_11,
+ GP_4_28_FN, FN_IP11_10_8,
+ GP_4_27_FN, FN_IP11_7_6,
+ GP_4_26_FN, FN_IP11_5_3,
+ GP_4_25_FN, FN_IP11_2_0,
+ GP_4_24_FN, FN_IP10_31_30,
+ GP_4_23_FN, FN_IP10_29_27,
+ GP_4_22_FN, FN_IP10_26_24,
+ GP_4_21_FN, FN_IP10_23_21,
+ GP_4_20_FN, FN_IP10_20_18,
+ GP_4_19_FN, FN_IP10_17_15,
+ GP_4_18_FN, FN_IP10_14_12,
+ GP_4_17_FN, FN_IP10_11_9,
+ GP_4_16_FN, FN_IP10_8_6,
+ GP_4_15_FN, FN_IP10_5_3,
+ GP_4_14_FN, FN_IP10_2_0,
+ GP_4_13_FN, FN_IP9_30_28,
+ GP_4_12_FN, FN_IP9_27_25,
+ GP_4_11_FN, FN_IP9_24_22,
+ GP_4_10_FN, FN_IP9_21_19,
+ GP_4_9_FN, FN_IP9_18_17,
+ GP_4_8_FN, FN_IP9_16_15,
+ GP_4_7_FN, FN_IP9_14_12,
+ GP_4_6_FN, FN_IP9_11_9,
+ GP_4_5_FN, FN_IP9_8_6,
+ GP_4_4_FN, FN_IP9_5_3,
+ GP_4_3_FN, FN_IP9_2_0,
+ GP_4_2_FN, FN_IP8_31_29,
+ GP_4_1_FN, FN_IP8_28_26,
+ GP_4_0_FN, FN_IP8_25_23 }
+ },
+ { PINMUX_CFG_REG("GPSR5", 0xE6060018, 32, 1) {
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ GP_5_27_FN, FN_USB1_OVC,
+ GP_5_26_FN, FN_USB1_PWEN,
+ GP_5_25_FN, FN_USB0_OVC,
+ GP_5_24_FN, FN_USB0_PWEN,
+ GP_5_23_FN, FN_IP13_26_24,
+ GP_5_22_FN, FN_IP13_23_21,
+ GP_5_21_FN, FN_IP13_20_18,
+ GP_5_20_FN, FN_IP13_17_15,
+ GP_5_19_FN, FN_IP13_14_12,
+ GP_5_18_FN, FN_IP13_11_9,
+ GP_5_17_FN, FN_IP13_8_6,
+ GP_5_16_FN, FN_IP13_5_3,
+ GP_5_15_FN, FN_IP13_2_0,
+ GP_5_14_FN, FN_IP12_29_27,
+ GP_5_13_FN, FN_IP12_26_24,
+ GP_5_12_FN, FN_IP12_23_21,
+ GP_5_11_FN, FN_IP12_20_18,
+ GP_5_10_FN, FN_IP12_17_15,
+ GP_5_9_FN, FN_IP12_14_13,
+ GP_5_8_FN, FN_IP12_12_11,
+ GP_5_7_FN, FN_IP12_10_9,
+ GP_5_6_FN, FN_IP12_8_6,
+ GP_5_5_FN, FN_IP12_5_3,
+ GP_5_4_FN, FN_IP12_2_0,
+ GP_5_3_FN, FN_IP11_29_27,
+ GP_5_2_FN, FN_IP11_26_24,
+ GP_5_1_FN, FN_IP11_23_21,
+ GP_5_0_FN, FN_IP11_20_18 }
+ },
+ { PINMUX_CFG_REG("GPSR6", 0xE606001C, 32, 1) {
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ GP_6_25_FN, FN_IP0_21_20,
+ GP_6_24_FN, FN_IP0_19_18,
+ GP_6_23_FN, FN_IP0_17,
+ GP_6_22_FN, FN_IP0_16,
+ GP_6_21_FN, FN_IP0_15,
+ GP_6_20_FN, FN_IP0_14,
+ GP_6_19_FN, FN_IP0_13,
+ GP_6_18_FN, FN_IP0_12,
+ GP_6_17_FN, FN_IP0_11,
+ GP_6_16_FN, FN_IP0_10,
+ GP_6_15_FN, FN_IP0_9_8,
+ GP_6_14_FN, FN_IP0_0,
+ GP_6_13_FN, FN_SD1_DATA3,
+ GP_6_12_FN, FN_SD1_DATA2,
+ GP_6_11_FN, FN_SD1_DATA1,
+ GP_6_10_FN, FN_SD1_DATA0,
+ GP_6_9_FN, FN_SD1_CMD,
+ GP_6_8_FN, FN_SD1_CLK,
+ GP_6_7_FN, FN_SD0_WP,
+ GP_6_6_FN, FN_SD0_CD,
+ GP_6_5_FN, FN_SD0_DATA3,
+ GP_6_4_FN, FN_SD0_DATA2,
+ GP_6_3_FN, FN_SD0_DATA1,
+ GP_6_2_FN, FN_SD0_DATA0,
+ GP_6_1_FN, FN_SD0_CMD,
+ GP_6_0_FN, FN_SD0_CLK }
+ },
+
+ /*
+ * From IPSR0 to IPSR5 have been removed because they does not use.
+ */
+
+ { PINMUX_CFG_REG_VAR("IPSR6", 0xE6060038, 32,
+ 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
+ 2, 2) {
+ /* IP6_31_29 [3] */
+ FN_ETH_MDIO, FN_VI0_G0, FN_MSIOF2_RXD_B, FN_IIC0_SCL_D,
+ FN_AVB_TX_CLK, FN_ADIDATA, FN_AD_DI, 0,
+ /* IP6_28_26 [3] */
+ FN_VI0_VSYNC_N, FN_SCIF0_TXD_B, FN_I2C0_SDA_C,
+ FN_AUDIO_CLKOUT_B, FN_AVB_TX_EN, 0, 0, 0,
+ /* IP6_25_23 [3] */
+ FN_VI0_HSYNC_N, FN_SCIF0_RXD_B, FN_I2C0_SCL_C, FN_IERX_C,
+ FN_AVB_COL, 0, 0, 0,
+ /* IP6_22_20 [3] */
+ FN_VI0_FIELD, FN_I2C3_SDA, FN_SCIFA5_TXD_C, FN_IECLK_C,
+ FN_AVB_RX_ER, 0, 0, 0,
+ /* IP6_19_17 [3] */
+ FN_VI0_CLKENB, FN_I2C3_SCL, FN_SCIFA5_RXD_C, FN_IETX_C,
+ FN_AVB_RXD7, 0, 0, 0,
+ /* IP6_16 [1] */
+ FN_VI0_DATA7_VI0_B7, FN_AVB_RXD6,
+ /* IP6_15 [1] */
+ FN_VI0_DATA6_VI0_B6, FN_AVB_RXD5,
+ /* IP6_14 [1] */
+ FN_VI0_DATA5_VI0_B5, FN_AVB_RXD4,
+ /* IP6_13 [1] */
+ FN_VI0_DATA4_VI0_B4, FN_AVB_RXD3,
+ /* IP6_12 [1] */
+ FN_VI0_DATA3_VI0_B3, FN_AVB_RXD2,
+ /* IP6_11 [1] */
+ FN_VI0_DATA2_VI0_B2, FN_AVB_RXD1,
+ /* IP6_10 [1] */
+ FN_VI0_DATA1_VI0_B1, FN_AVB_RXD0,
+ /* IP6_9 [1] */
+ FN_VI0_DATA0_VI0_B0, FN_AVB_RX_DV,
+ /* IP6_8 [1] */
+ FN_VI0_CLK, FN_AVB_RX_CLK,
+ /* IP6_7_6 [2] */
+ FN_DU0_CDE, FN_QPOLB, FN_CC50_STATE31, 0,
+ /* IP6_5_4 [2] */
+ FN_DU0_DISP, FN_QPOLA, FN_CC50_STATE30, 0,
+ /* IP6_3_2 [2] */
+ FN_DU0_EXODDF_DU0_ODDF_DISP_CDE, FN_QCPV_QDE, FN_CC50_STATE29,
+ /* IP6_1_0 [2] */
+ FN_DU0_EXVSYNC_DU0_VSYNC, FN_QSTB_QHE, FN_CC50_STATE28, 0, }
+ },
+ { PINMUX_CFG_REG_VAR("IPSR7", 0xE606003C, 32,
+ 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3) {
+ /* IP7_31 [1] */
+ FN_DREQ0_N, FN_SCIFB1_RXD,
+ /* IP7_30 [1] */
+ 0, 0,
+ /* IP7_29_27 [3] */
+ FN_ETH_TXD0, FN_VI0_R2, FN_SCIF3_RXD_B, FN_I2C4_SCL_E,
+ FN_AVB_GTX_CLK, FN_SSI_WS6_B, 0, 0,
+ /* IP7_26_24 [3] */
+ FN_ETH_MAGIC, FN_VI0_R1, FN_SCIF3_SCK_B, FN_AVB_TX_ER,
+ FN_SSI_SCK6_B, 0, 0, 0,
+ /* IP7_23_21 [3] */
+ FN_ETH_TX_EN, FN_VI0_R0, FN_SCIF2_TXD_C, FN_IIC1_SDA_D,
+ FN_AVB_TXD7, FN_SSI_SDATA5_B, 0, 0,
+ /* IP7_20_18 [3] */
+ FN_ETH_TXD1, FN_VI0_G7, FN_SCIF2_RXD_C, FN_IIC1_SCL_D,
+ FN_AVB_TXD6, FN_SSI_WS5_B, 0, 0,
+ /* IP7_17_15 [3] */
+ FN_ETH_REFCLK, FN_VI0_G6, FN_SCIF2_SCK_C, FN_AVB_TXD5,
+ FN_SSI_SCK5_B, 0, 0, 0,
+ /* IP7_14_12 [3] */
+ FN_ETH_LINK, FN_VI0_G5, FN_MSIOF2_SS2_B, FN_SCIF4_TXD_D,
+ FN_AVB_TXD4, FN_ADICHS2, 0, 0,
+ /* IP7_11_9 [3] */
+ FN_ETH_RXD1, FN_VI0_G4, FN_MSIOF2_SS1_B, FN_SCIF4_RXD_D,
+ FN_AVB_TXD3, FN_ADICHS1, 0, 0,
+ /* IP7_8_6 [3] */
+ FN_ETH_RXD0, FN_VI0_G3, FN_MSIOF2_SYNC_B, FN_CAN0_TX_B,
+ FN_AVB_TXD2, FN_ADICHS0, FN_AD_NCS_N, 0,
+ /* IP7_5_3 [3] */
+ FN_ETH_RX_ER, FN_VI0_G2, FN_MSIOF2_SCK_B, FN_CAN0_RX_B,
+ FN_AVB_TXD1, FN_ADICLK, FN_AD_CLK, 0,
+ /* IP7_2_0 [3] */
+ FN_ETH_CRS_DV, FN_VI0_G1, FN_MSIOF2_TXD_B, FN_IIC0_SDA_D,
+ FN_AVB_TXD0, FN_ADICS_SAMP, FN_AD_DO, 0, }
+ },
+ { PINMUX_CFG_REG_VAR("IPSR8", 0xE6060040, 32,
+ 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3) {
+ /* IP8_31_29 [3] */
+ FN_MSIOF0_RXD, FN_SCIF5_RXD, FN_I2C2_SCL_C, FN_DU1_DR2,
+ FN_RIF1_D0_B, FN_TS_SDEN_D, FN_FMCLK_C, FN_RDS_CLK,
+ /* IP8_28_26 [3] */
+ FN_I2C1_SDA, FN_SCIF4_TXD, FN_IRQ5, FN_DU1_DR1,
+ FN_RIF1_CLK_B, FN_TS_SCK_D, FN_BPFCLK_C, 0,
+ /* IP8_25_23 [3] */
+ FN_I2C1_SCL, FN_SCIF4_RXD, FN_PWM5_B, FN_DU1_DR0,
+ FN_RIF1_SYNC_B, FN_TS_SDATA_D, FN_TPUTO1_B, 0,
+ /* IP8_22_20 [3] */
+ FN_I2C0_SDA, FN_SCIF0_TXD_C, FN_TPUTO0, FN_CAN_CLK,
+ FN_DVC_MUTE, FN_CAN1_TX_D, 0, 0,
+ /* IP8_19_17 [3] */
+ FN_I2C0_SCL, FN_SCIF0_RXD_C, FN_PWM5, FN_TCLK1_B,
+ FN_AVB_GTXREFCLK, FN_CAN1_RX_D, FN_TPUTO0_B, 0,
+ /* IP8_16_15 [2] */
+ FN_HSCIF0_HSCK, FN_SCIF_CLK_B, FN_AVB_CRS, FN_AUDIO_CLKC_B,
+ /* IP8_14_12 [3] */
+ FN_HSCIF0_HRTS_N, FN_VI0_R7, FN_SCIF0_TXD_D, FN_I2C0_SDA_E,
+ FN_AVB_PHY_INT, FN_SSI_SDATA8_B, 0, 0,
+ /* IP8_11_9 [3] */
+ FN_HSCIF0_HCTS_N, FN_VI0_R6, FN_SCIF0_RXD_D, FN_I2C0_SCL_E,
+ FN_AVB_MAGIC, FN_SSI_SDATA7_B, 0, 0,
+ /* IP8_8_6 [3] */
+ FN_HSCIF0_HTX, FN_VI0_R5, FN_I2C1_SDA_C, FN_AUDIO_CLKB_B,
+ FN_AVB_LINK, FN_SSI_WS78_B, 0, 0,
+ /* IP8_5_3 [3] */
+ FN_HSCIF0_HRX, FN_VI0_R4, FN_I2C1_SCL_C, FN_AUDIO_CLKA_B,
+ FN_AVB_MDIO, FN_SSI_SCK78_B, 0, 0,
+ /* IP8_2_0 [3] */
+ FN_ETH_MDC, FN_VI0_R3, FN_SCIF3_TXD_B, FN_I2C4_SDA_E,
+ FN_AVB_MDC, FN_SSI_SDATA6_B, 0, 0, }
+ },
+
+ /*
+ * From IPSR9 to IPSR10 have been removed because they does not use.
+ */
+
+ { PINMUX_CFG_REG_VAR("IPSR11", 0xE606004C, 32,
+ 2, 3, 3, 3, 3, 2, 2, 3, 3, 2, 3, 3) {
+ /* IP11_31_30 [2] */
+ 0, 0, 0, 0,
+ /* IP11_29_27 [3] */
+ FN_SSI_SDATA0, FN_MSIOF1_SCK_B, FN_PWM0_B, FN_ADICLK_B,
+ FN_AD_CLK_B, 0, 0, 0,
+ /* IP11_26_24 [3] */
+ FN_SSI_WS0129, FN_MSIOF1_TXD_B, FN_SCIF5_TXD_D, FN_ADICS_SAMP_B,
+ FN_AD_DO_B, 0, 0, 0,
+ /* IP11_23_21 [3] */
+ FN_SSI_SCK0129, FN_MSIOF1_RXD_B, FN_SCIF5_RXD_D, FN_ADIDATA_B,
+ FN_AD_DI_B, FN_PCMWE_N, 0, 0,
+ /* IP11_20_18 [3] */
+ FN_SSI_SDATA7, FN_SCIFA2_TXD_B, FN_IRQ8, FN_AUDIO_CLKA_D,
+ FN_CAN_CLK_D, FN_PCMOE_N, 0, 0,
+ /* IP11_17_16 [2] */
+ FN_SSI_WS78, FN_SCIFA2_RXD_B, FN_IIC0_SCL_C, FN_DU1_CDE,
+ /* IP11_15_14 [2] */
+ FN_SSI_SCK78, FN_SCIFA2_SCK_B, FN_IIC0_SDA_C, FN_DU1_DISP,
+ /* IP11_13_11 [3] */
+ FN_SSI_SDATA6, FN_SCIFA1_TXD_B, FN_I2C4_SDA_C,
+ FN_DU1_EXODDF_DU1_ODDF_DISP_CDE, FN_CAN_DEBUGOUT15, 0, 0, 0,
+ /* IP11_10_8 [3] */
+ FN_SSI_WS6, FN_SCIFA1_RXD_B, FN_I2C4_SCL_C,
+ FN_DU1_EXVSYNC_DU1_VSYNC, FN_CAN_DEBUGOUT14, 0, 0, 0,
+ /* IP11_7_6 [2] */
+ FN_SSI_SCK6, FN_SCIFA1_SCK_B, FN_DU1_EXHSYNC_DU1_HSYNC,
+ FN_CAN_DEBUGOUT13,
+ /* IP11_5_3 [3] */
+ FN_SSI_SDATA5, FN_SCIFA3_TXD, FN_I2C3_SDA_C, FN_DU1_DOTCLKOUT1,
+ FN_CAN_DEBUGOUT12, 0, 0, 0,
+ /* IP11_2_0 [3] */
+ FN_SSI_WS5, FN_SCIFA3_RXD, FN_I2C3_SCL_C, FN_DU1_DOTCLKOUT0,
+ FN_CAN_DEBUGOUT11, 0, 0, 0, }
+ },
+
+ /*
+ * From IPSR12 to IPSR13 have been removed because they does not use.
+ */
+
+ { PINMUX_CFG_REG_VAR("MOD_SEL", 0xE6060090, 32,
+ 2, 1, 2, 3, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3,
+ 2, 1) {
+ /* SEL_ADG [2] */
+ FN_SEL_ADG_0, FN_SEL_ADG_1, FN_SEL_ADG_2, FN_SEL_ADG_3,
+ /* SEL_ADI [1] */
+ FN_SEL_ADI_0, FN_SEL_ADI_1,
+ /* SEL_CAN [2] */
+ FN_SEL_CAN_0, FN_SEL_CAN_1, FN_SEL_CAN_2, FN_SEL_CAN_3,
+ /* SEL_DARC [3] */
+ FN_SEL_DARC_0, FN_SEL_DARC_1, FN_SEL_DARC_2, FN_SEL_DARC_3,
+ FN_SEL_DARC_4, 0, 0, 0,
+ /* SEL_DR0 [1] */
+ FN_SEL_DR0_0, FN_SEL_DR0_1,
+ /* SEL_DR1 [1] */
+ FN_SEL_DR1_0, FN_SEL_DR1_1,
+ /* SEL_DR2 [1] */
+ FN_SEL_DR2_0, FN_SEL_DR2_1,
+ /* SEL_DR3 [1] */
+ FN_SEL_DR3_0, FN_SEL_DR3_1,
+ /* SEL_ETH [1] */
+ FN_SEL_ETH_0, FN_SEL_ETH_1,
+ /* SLE_FSN [1] */
+ FN_SEL_FSN_0, FN_SEL_FSN_1,
+ /* SEL_IC200 [3] */
+ FN_SEL_I2C00_0, FN_SEL_I2C00_1, FN_SEL_I2C00_2, FN_SEL_I2C00_3,
+ FN_SEL_I2C00_4, 0, 0, 0,
+ /* SEL_I2C01 [3] */
+ FN_SEL_I2C01_0, FN_SEL_I2C01_1, FN_SEL_I2C01_2, FN_SEL_I2C01_3,
+ FN_SEL_I2C01_4, 0, 0, 0,
+ /* SEL_I2C02 [3] */
+ FN_SEL_I2C02_0, FN_SEL_I2C02_1, FN_SEL_I2C02_2, FN_SEL_I2C02_3,
+ FN_SEL_I2C02_4, 0, 0, 0,
+ /* SEL_I2C03 [3] */
+ FN_SEL_I2C03_0, FN_SEL_I2C03_1, FN_SEL_I2C03_2, FN_SEL_I2C03_3,
+ FN_SEL_I2C03_4, 0, 0, 0,
+ /* SEL_I2C04 [3] */
+ FN_SEL_I2C04_0, FN_SEL_I2C04_1, FN_SEL_I2C04_2, FN_SEL_I2C04_3,
+ FN_SEL_I2C04_4, 0, 0, 0,
+ /* SEL_IIC00 [2] */
+ FN_SEL_IIC00_0, FN_SEL_IIC00_1, FN_SEL_IIC00_2, FN_SEL_IIC00_3,
+ /* SEL_AVB [1] */
+ FN_SEL_AVB_0, FN_SEL_AVB_1, }
+ },
+ { PINMUX_CFG_REG_VAR("MOD_SEL2", 0xE6060094, 32,
+ 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1,
+ 2, 2, 2, 1, 1, 2) {
+ /* SEL_IEB [2] */
+ FN_SEL_IEB_0, FN_SEL_IEB_1, FN_SEL_IEB_2, 0,
+ /* SEL_IIC0 [2] */
+ FN_SEL_IIC01_0, FN_SEL_IIC01_1, FN_SEL_IIC01_2, FN_SEL_IIC01_3,
+ /* SEL_LBS [1] */
+ FN_SEL_LBS_0, FN_SEL_LBS_1,
+ /* SEL_MSI1 [1] */
+ FN_SEL_MSI1_0, FN_SEL_MSI1_1,
+ /* SEL_MSI2 [1] */
+ FN_SEL_MSI2_0, FN_SEL_MSI2_1,
+ /* SEL_RAD [1] */
+ FN_SEL_RAD_0, FN_SEL_RAD_1,
+ /* SEL_RCN [1] */
+ FN_SEL_RCN_0, FN_SEL_RCN_1,
+ /* SEL_RSP [1] */
+ FN_SEL_RSP_0, FN_SEL_RSP_1,
+ /* SEL_SCIFA0 [2] */
+ FN_SEL_SCIFA0_0, FN_SEL_SCIFA0_1, FN_SEL_SCIFA0_2,
+ FN_SEL_SCIFA0_3,
+ /* SEL_SCIFA1 [2] */
+ FN_SEL_SCIFA1_0, FN_SEL_SCIFA1_1, FN_SEL_SCIFA1_2, 0,
+ /* SEL_SCIFA2 [1] */
+ FN_SEL_SCIFA2_0, FN_SEL_SCIFA2_1,
+ /* SEL_SCIFA3 [1] */
+ FN_SEL_SCIFA3_0, FN_SEL_SCIFA3_1,
+ /* SEL_SCIFA4 [2] */
+ FN_SEL_SCIFA4_0, FN_SEL_SCIFA4_1, FN_SEL_SCIFA4_2,
+ FN_SEL_SCIFA4_3,
+ /* SEL_SCIFA5 [2] */
+ FN_SEL_SCIFA5_0, FN_SEL_SCIFA5_1, FN_SEL_SCIFA5_2,
+ FN_SEL_SCIFA5_3,
+ /* SEL_SPDM [1] */
+ FN_SEL_SPDM_0, FN_SEL_SPDM_1,
+ /* SEL_TMU [1] */
+ FN_SEL_TMU_0, FN_SEL_TMU_1,
+ /* SEL_TSIF0 [2] */
+ FN_SEL_TSIF0_0, FN_SEL_TSIF0_1, FN_SEL_TSIF0_2, FN_SEL_TSIF0_3,
+ /* SEL_CAN0 [2] */
+ FN_SEL_CAN0_0, FN_SEL_CAN0_1, FN_SEL_CAN0_2, FN_SEL_CAN0_3,
+ /* SEL_CAN1 [2] */
+ FN_SEL_CAN1_0, FN_SEL_CAN1_1, FN_SEL_CAN1_2, FN_SEL_CAN1_3,
+ /* SEL_HSCIF0 [1] */
+ FN_SEL_HSCIF0_0, FN_SEL_HSCIF0_1,
+ /* SEL_HSCIF1 [1] */
+ FN_SEL_HSCIF1_0, FN_SEL_HSCIF1_1,
+ /* SEL_RDS [2] */
+ FN_SEL_RDS_0, FN_SEL_RDS_1, FN_SEL_RDS_2, FN_SEL_RDS_3, }
+ },
+ { PINMUX_CFG_REG_VAR("MOD_SEL3", 0xE6060098, 32,
+ 2, 2, 2, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) {
+ /* SEL_SCIF0 [2] */
+ FN_SEL_SCIF0_0, FN_SEL_SCIF0_1, FN_SEL_SCIF0_2, FN_SEL_SCIF0_3,
+ /* SEL_SCIF1 [2] */
+ FN_SEL_SCIF1_0, FN_SEL_SCIF1_1, FN_SEL_SCIF1_2, 0,
+ /* SEL_SCIF2 [2] */
+ FN_SEL_SCIF2_0, FN_SEL_SCIF2_1, FN_SEL_SCIF2_2, 0,
+ /* SEL_SCIF3 [1] */
+ FN_SEL_SCIF3_0, FN_SEL_SCIF3_1,
+ /* SEL_SCIF4 [3] */
+ FN_SEL_SCIF4_0, FN_SEL_SCIF4_1, FN_SEL_SCIF4_2, FN_SEL_SCIF4_3,
+ FN_SEL_SCIF4_4, 0, 0, 0,
+ /* SEL_SCIF5 [2] */
+ FN_SEL_SCIF5_0, FN_SEL_SCIF5_1, FN_SEL_SCIF5_2, FN_SEL_SCIF5_3,
+ /* SEL_SSI1 [1] */
+ FN_SEL_SSI1_0, FN_SEL_SSI1_1,
+ /* SEL_SSI2 [1] */
+ FN_SEL_SSI2_0, FN_SEL_SSI2_1,
+ /* SEL_SSI4 [1] */
+ FN_SEL_SSI4_0, FN_SEL_SSI4_1,
+ /* SEL_SSI5 [1] */
+ FN_SEL_SSI5_0, FN_SEL_SSI5_1,
+ /* SEL_SSI6 [1] */
+ FN_SEL_SSI6_0, FN_SEL_SSI6_1,
+ /* SEL_SSI7 [1] */
+ FN_SEL_SSI7_0, FN_SEL_SSI7_1,
+ /* SEL_SSI8 [1] */
+ FN_SEL_SSI8_0, FN_SEL_SSI8_1,
+ /* SEL_SSI9 [1] */
+ FN_SEL_SSI9_0, FN_SEL_SSI9_1,
+ /* RESEVED [1] */
+ 0, 0,
+ /* RESEVED [1] */
+ 0, 0,
+ /* RESEVED [1] */
+ 0, 0,
+ /* RESEVED [1] */
+ 0, 0,
+ /* RESEVED [1] */
+ 0, 0,
+ /* RESEVED [1] */
+ 0, 0,
+ /* RESEVED [1] */
+ 0, 0,
+ /* RESEVED [1] */
+ 0, 0,
+ /* RESEVED [1] */
+ 0, 0,
+ /* RESEVED [1] */
+ 0, 0,
+ /* RESEVED [1] */
+ 0, 0,
+ /* RESEVED [1] */
+ 0, 0, }
+ },
+ { PINMUX_CFG_REG("INOUTSEL0", 0xE6050004, 32, 1) { GP_INOUTSEL(0) } },
+ { PINMUX_CFG_REG("INOUTSEL1", 0xE6051004, 32, 1) {
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ GP_1_25_IN, GP_1_25_OUT,
+ GP_1_24_IN, GP_1_24_OUT,
+ GP_1_23_IN, GP_1_23_OUT,
+ GP_1_22_IN, GP_1_22_OUT,
+ GP_1_21_IN, GP_1_21_OUT,
+ GP_1_20_IN, GP_1_20_OUT,
+ GP_1_19_IN, GP_1_19_OUT,
+ GP_1_18_IN, GP_1_18_OUT,
+ GP_1_17_IN, GP_1_17_OUT,
+ GP_1_16_IN, GP_1_16_OUT,
+ GP_1_15_IN, GP_1_15_OUT,
+ GP_1_14_IN, GP_1_14_OUT,
+ GP_1_13_IN, GP_1_13_OUT,
+ GP_1_12_IN, GP_1_12_OUT,
+ GP_1_11_IN, GP_1_11_OUT,
+ GP_1_10_IN, GP_1_10_OUT,
+ GP_1_9_IN, GP_1_9_OUT,
+ GP_1_8_IN, GP_1_8_OUT,
+ GP_1_7_IN, GP_1_7_OUT,
+ GP_1_6_IN, GP_1_6_OUT,
+ GP_1_5_IN, GP_1_5_OUT,
+ GP_1_4_IN, GP_1_4_OUT,
+ GP_1_3_IN, GP_1_3_OUT,
+ GP_1_2_IN, GP_1_2_OUT,
+ GP_1_1_IN, GP_1_1_OUT,
+ GP_1_0_IN, GP_1_0_OUT, }
+ },
+ { PINMUX_CFG_REG("INOUTSEL2", 0xE6052004, 32, 1) { GP_INOUTSEL(2) } },
+ { PINMUX_CFG_REG("INOUTSEL3", 0xE6053004, 32, 1) { GP_INOUTSEL(3) } },
+ { PINMUX_CFG_REG("INOUTSEL4", 0xE6054004, 32, 1) { GP_INOUTSEL(4) } },
+ { PINMUX_CFG_REG("INOUTSEL5", 0xE6055004, 32, 1) {
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ GP_5_27_IN, GP_5_27_OUT,
+ GP_5_26_IN, GP_5_26_OUT,
+ GP_5_25_IN, GP_5_25_OUT,
+ GP_5_24_IN, GP_5_24_OUT,
+ GP_5_23_IN, GP_5_23_OUT,
+ GP_5_22_IN, GP_5_22_OUT,
+ GP_5_21_IN, GP_5_21_OUT,
+ GP_5_20_IN, GP_5_20_OUT,
+ GP_5_19_IN, GP_5_19_OUT,
+ GP_5_18_IN, GP_5_18_OUT,
+ GP_5_17_IN, GP_5_17_OUT,
+ GP_5_16_IN, GP_5_16_OUT,
+ GP_5_15_IN, GP_5_15_OUT,
+ GP_5_14_IN, GP_5_14_OUT,
+ GP_5_13_IN, GP_5_13_OUT,
+ GP_5_12_IN, GP_5_12_OUT,
+ GP_5_11_IN, GP_5_11_OUT,
+ GP_5_10_IN, GP_5_10_OUT,
+ GP_5_9_IN, GP_5_9_OUT,
+ GP_5_8_IN, GP_5_8_OUT,
+ GP_5_7_IN, GP_5_7_OUT,
+ GP_5_6_IN, GP_5_6_OUT,
+ GP_5_5_IN, GP_5_5_OUT,
+ GP_5_4_IN, GP_5_4_OUT,
+ GP_5_3_IN, GP_5_3_OUT,
+ GP_5_2_IN, GP_5_2_OUT,
+ GP_5_1_IN, GP_5_1_OUT,
+ GP_5_0_IN, GP_5_0_OUT, }
+ },
+ { PINMUX_CFG_REG("INOUTSEL6", 0xE6055404, 32, 1) {
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ GP_6_25_IN, GP_6_25_OUT,
+ GP_6_24_IN, GP_6_24_OUT,
+ GP_6_23_IN, GP_6_23_OUT,
+ GP_6_22_IN, GP_6_22_OUT,
+ GP_6_21_IN, GP_6_21_OUT,
+ GP_6_20_IN, GP_6_20_OUT,
+ GP_6_19_IN, GP_6_19_OUT,
+ GP_6_18_IN, GP_6_18_OUT,
+ GP_6_17_IN, GP_6_17_OUT,
+ GP_6_16_IN, GP_6_16_OUT,
+ GP_6_15_IN, GP_6_15_OUT,
+ GP_6_14_IN, GP_6_14_OUT,
+ GP_6_13_IN, GP_6_13_OUT,
+ GP_6_12_IN, GP_6_12_OUT,
+ GP_6_11_IN, GP_6_11_OUT,
+ GP_6_10_IN, GP_6_10_OUT,
+ GP_6_9_IN, GP_6_9_OUT,
+ GP_6_8_IN, GP_6_8_OUT,
+ GP_6_7_IN, GP_6_7_OUT,
+ GP_6_6_IN, GP_6_6_OUT,
+ GP_6_5_IN, GP_6_5_OUT,
+ GP_6_4_IN, GP_6_4_OUT,
+ GP_6_3_IN, GP_6_3_OUT,
+ GP_6_2_IN, GP_6_2_OUT,
+ GP_6_1_IN, GP_6_1_OUT,
+ GP_6_0_IN, GP_6_0_OUT, }
+ },
+ { },
+};
+
+static struct pinmux_data_reg pinmux_data_regs[] = {
+ { PINMUX_DATA_REG("INDT0", 0xE6050008, 32) { GP_INDT(0) } },
+ { PINMUX_DATA_REG("INDT1", 0xE6051008, 32) {
+ 0, 0, 0, 0,
+ 0, 0, GP_1_25_DATA, GP_1_24_DATA,
+ GP_1_23_DATA, GP_1_22_DATA, GP_1_21_DATA, GP_1_20_DATA,
+ GP_1_19_DATA, GP_1_18_DATA, GP_1_17_DATA, GP_1_16_DATA,
+ GP_1_15_DATA, GP_1_14_DATA, GP_1_13_DATA, GP_1_12_DATA,
+ GP_1_11_DATA, GP_1_10_DATA, GP_1_9_DATA, GP_1_8_DATA,
+ GP_1_7_DATA, GP_1_6_DATA, GP_1_5_DATA, GP_1_4_DATA,
+ GP_1_3_DATA, GP_1_2_DATA, GP_1_1_DATA, GP_1_0_DATA }
+ },
+ { PINMUX_DATA_REG("INDT2", 0xE6052008, 32) { GP_INDT(2) } },
+ { PINMUX_DATA_REG("INDT3", 0xE6053008, 32) { GP_INDT(3) } },
+ { PINMUX_DATA_REG("INDT4", 0xE6054008, 32) { GP_INDT(4) } },
+ { PINMUX_DATA_REG("INDT5", 0xE6055008, 32) {
+ 0, 0, 0, 0,
+ GP_5_27_DATA, GP_5_26_DATA, GP_5_25_DATA, GP_5_24_DATA,
+ GP_5_23_DATA, GP_5_22_DATA, GP_5_21_DATA, GP_5_20_DATA,
+ GP_5_19_DATA, GP_5_18_DATA, GP_5_17_DATA, GP_5_16_DATA,
+ GP_5_15_DATA, GP_5_14_DATA, GP_5_13_DATA, GP_5_12_DATA,
+ GP_5_11_DATA, GP_5_10_DATA, GP_5_9_DATA, GP_5_8_DATA,
+ GP_5_7_DATA, GP_5_6_DATA, GP_5_5_DATA, GP_5_4_DATA,
+ GP_5_3_DATA, GP_5_2_DATA, GP_5_1_DATA, GP_5_0_DATA }
+ },
+ { PINMUX_DATA_REG("INDT6", 0xE6055408, 32) {
+ 0, 0, 0, 0,
+ 0, 0, GP_6_25_DATA, GP_6_24_DATA,
+ GP_6_23_DATA, GP_6_22_DATA, GP_6_21_DATA, GP_6_20_DATA,
+ GP_6_19_DATA, GP_6_18_DATA, GP_6_17_DATA, GP_6_16_DATA,
+ GP_6_15_DATA, GP_6_14_DATA, GP_6_13_DATA, GP_6_12_DATA,
+ GP_6_11_DATA, GP_6_10_DATA, GP_6_9_DATA, GP_6_8_DATA,
+ GP_6_7_DATA, GP_6_6_DATA, GP_6_5_DATA, GP_6_4_DATA,
+ GP_6_3_DATA, GP_6_2_DATA, GP_6_1_DATA, GP_6_0_DATA }
+ },
+ { },
+};
+
+static struct pinmux_info r8a7794_pinmux_info = {
+ .name = "r8a7794_pfc",
+
+ .unlock_reg = 0xe6060000, /* PMMR */
+
+ .reserved_id = PINMUX_RESERVED,
+ .data = { PINMUX_DATA_BEGIN, PINMUX_DATA_END },
+ .input = { PINMUX_INPUT_BEGIN, PINMUX_INPUT_END },
+ .output = { PINMUX_OUTPUT_BEGIN, PINMUX_OUTPUT_END },
+ .mark = { PINMUX_MARK_BEGIN, PINMUX_MARK_END },
+ .function = { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END },
+
+ .first_gpio = GPIO_GP_0_0,
+ .last_gpio = GPIO_FN_AD_CLK_B,
+
+ .gpios = pinmux_gpios,
+ .cfg_regs = pinmux_config_regs,
+ .data_regs = pinmux_data_regs,
+
+ .gpio_data = pinmux_data,
+ .gpio_data_size = ARRAY_SIZE(pinmux_data),
+};
+
+void r8a7794_pinmux_init(void)
+{
+ register_pinmux(&r8a7794_pinmux_info);
+}
diff --git a/arch/arm/cpu/armv7/sunxi/Makefile b/arch/arm/cpu/armv7/sunxi/Makefile
index a64bfa1..6c70639 100644
--- a/arch/arm/cpu/armv7/sunxi/Makefile
+++ b/arch/arm/cpu/armv7/sunxi/Makefile
@@ -11,6 +11,8 @@ obj-y += timer.o
obj-y += board.o
obj-y += clock.o
obj-y += pinmux.o
+obj-$(CONFIG_SUN4I) += clock_sun4i.o
+obj-$(CONFIG_SUN5I) += clock_sun4i.o
obj-$(CONFIG_SUN7I) += clock_sun4i.o
ifndef CONFIG_SPL_BUILD
@@ -18,6 +20,8 @@ obj-y += cpu_info.o
endif
ifdef CONFIG_SPL_BUILD
+obj-$(CONFIG_SUN4I) += dram.o
+obj-$(CONFIG_SUN5I) += dram.o
obj-$(CONFIG_SUN7I) += dram.o
ifdef CONFIG_SPL_FEL
obj-y += start.o
diff --git a/arch/arm/cpu/armv7/sunxi/board.c b/arch/arm/cpu/armv7/sunxi/board.c
index 49c9448..8f2cef3 100644
--- a/arch/arm/cpu/armv7/sunxi/board.c
+++ b/arch/arm/cpu/armv7/sunxi/board.c
@@ -11,6 +11,7 @@
*/
#include <common.h>
+#include <i2c.h>
#include <netdev.h>
#include <miiphy.h>
#include <serial.h>
@@ -24,6 +25,8 @@
#include <asm/arch/sys_proto.h>
#include <asm/arch/timer.h>
+#include <linux/compiler.h>
+
#ifdef CONFIG_SPL_BUILD
/* Pointer to the global data structure for SPL */
DECLARE_GLOBAL_DATA_PTR;
@@ -47,15 +50,38 @@ u32 spl_boot_mode(void)
int gpio_init(void)
{
+#if CONFIG_CONS_INDEX == 1 && (defined(CONFIG_SUN4I) || defined(CONFIG_SUN7I))
sunxi_gpio_set_cfgpin(SUNXI_GPB(22), SUN4I_GPB22_UART0_TX);
sunxi_gpio_set_cfgpin(SUNXI_GPB(23), SUN4I_GPB23_UART0_RX);
sunxi_gpio_set_pull(SUNXI_GPB(23), 1);
+#elif CONFIG_CONS_INDEX == 1 && defined(CONFIG_SUN5I)
+ sunxi_gpio_set_cfgpin(SUNXI_GPB(19), SUN5I_GPB19_UART0_TX);
+ sunxi_gpio_set_cfgpin(SUNXI_GPB(20), SUN5I_GPB20_UART0_RX);
+ sunxi_gpio_set_pull(SUNXI_GPB(20), 1);
+#elif CONFIG_CONS_INDEX == 2 && defined(CONFIG_SUN5I)
+ sunxi_gpio_set_cfgpin(SUNXI_GPG(3), SUN5I_GPG3_UART1_TX);
+ sunxi_gpio_set_cfgpin(SUNXI_GPG(4), SUN5I_GPG4_UART1_RX);
+ sunxi_gpio_set_pull(SUNXI_GPG(4), 1);
+#else
+#error Unsupported console port number. Please fix pin mux settings in board.c
+#endif
return 0;
}
void reset_cpu(ulong addr)
{
+ static const struct sunxi_wdog *wdog =
+ &((struct sunxi_timer_reg *)SUNXI_TIMER_BASE)->wdog;
+
+ /* Set the watchdog for its shortest interval (.5s) and wait */
+ writel(WDT_MODE_RESET_EN | WDT_MODE_EN, &wdog->mode);
+ writel(WDT_CTRL_KEY | WDT_CTRL_RESTART, &wdog->ctl);
+
+ while (1) {
+ /* sun5i sometimes gets stuck without this */
+ writel(WDT_MODE_RESET_EN | WDT_MODE_EN, &wdog->mode);
+ }
}
/* do some early init */
@@ -72,11 +98,16 @@ void s_init(void)
clock_init();
timer_init();
gpio_init();
+ i2c_init_board();
#ifdef CONFIG_SPL_BUILD
gd = &gdata;
preloader_console_init();
+#ifdef CONFIG_SPL_I2C_SUPPORT
+ /* Needed early by sunxi_board_init if PMU is enabled */
+ i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
+#endif
sunxi_board_init();
#endif
}
@@ -96,7 +127,15 @@ void enable_caches(void)
*/
int cpu_eth_init(bd_t *bis)
{
- int rc;
+ __maybe_unused int rc;
+
+#ifdef CONFIG_SUNXI_EMAC
+ rc = sunxi_emac_initialize(bis);
+ if (rc < 0) {
+ printf("sunxi: failed to initialize emac\n");
+ return rc;
+ }
+#endif
#ifdef CONFIG_SUNXI_GMAC
rc = sunxi_gmac_initialize(bis);
diff --git a/arch/arm/cpu/armv7/sunxi/clock_sun4i.c b/arch/arm/cpu/armv7/sunxi/clock_sun4i.c
index 5a7da3c..b8b16cf 100644
--- a/arch/arm/cpu/armv7/sunxi/clock_sun4i.c
+++ b/arch/arm/cpu/armv7/sunxi/clock_sun4i.c
@@ -36,8 +36,7 @@ void clock_init_safe(void)
CPU_CLK_SRC_PLL1 << CPU_CLK_SRC_SHIFT,
&ccm->cpu_ahb_apb0_cfg);
#ifdef CONFIG_SUN7I
- writel(0x1 << AHB_GATE_OFFSET_DMA | readl(&ccm->ahb_gate0),
- &ccm->ahb_gate0);
+ setbits_le32(&ccm->ahb_gate0, 0x1 << AHB_GATE_OFFSET_DMA);
#endif
writel(PLL6_CFG_DEFAULT, &ccm->pll6_cfg);
}
diff --git a/arch/arm/cpu/armv7/sunxi/cpu_info.c b/arch/arm/cpu/armv7/sunxi/cpu_info.c
index b4c3d5c..5cf35ac 100644
--- a/arch/arm/cpu/armv7/sunxi/cpu_info.c
+++ b/arch/arm/cpu/armv7/sunxi/cpu_info.c
@@ -13,7 +13,22 @@
#ifdef CONFIG_DISPLAY_CPUINFO
int print_cpuinfo(void)
{
+#ifdef CONFIG_SUN4I
+ puts("CPU: Allwinner A10 (SUN4I)\n");
+#elif defined CONFIG_SUN5I
+ u32 val = readl(SUNXI_SID_BASE + 0x08);
+ switch ((val >> 12) & 0xf) {
+ case 0: puts("CPU: Allwinner A12 (SUN5I)\n"); break;
+ case 3: puts("CPU: Allwinner A13 (SUN5I)\n"); break;
+ case 7: puts("CPU: Allwinner A10s (SUN5I)\n"); break;
+ default: puts("CPU: Allwinner A1X (SUN5I)\n");
+ }
+#elif defined CONFIG_SUN7I
puts("CPU: Allwinner A20 (SUN7I)\n");
+#else
+#warning Please update cpu_info.c with correct CPU information
+ puts("CPU: SUNXI Family\n");
+#endif
return 0;
}
#endif
diff --git a/arch/arm/cpu/armv7/sunxi/dram.c b/arch/arm/cpu/armv7/sunxi/dram.c
index b43c4b4..0f1ceec 100644
--- a/arch/arm/cpu/armv7/sunxi/dram.c
+++ b/arch/arm/cpu/armv7/sunxi/dram.c
@@ -53,16 +53,37 @@ static void mctl_ddr3_reset(void)
struct sunxi_dram_reg *dram =
(struct sunxi_dram_reg *)SUNXI_DRAMC_BASE;
- clrbits_le32(&dram->mcr, DRAM_MCR_RESET);
- udelay(2);
- setbits_le32(&dram->mcr, DRAM_MCR_RESET);
+#ifdef CONFIG_SUN4I
+ struct sunxi_timer_reg *timer =
+ (struct sunxi_timer_reg *)SUNXI_TIMER_BASE;
+ u32 reg_val;
+
+ writel(0, &timer->cpu_cfg);
+ reg_val = readl(&timer->cpu_cfg);
+
+ if ((reg_val & CPU_CFG_CHIP_VER_MASK) !=
+ CPU_CFG_CHIP_VER(CPU_CFG_CHIP_REV_A)) {
+ setbits_le32(&dram->mcr, DRAM_MCR_RESET);
+ udelay(2);
+ clrbits_le32(&dram->mcr, DRAM_MCR_RESET);
+ } else
+#endif
+ {
+ clrbits_le32(&dram->mcr, DRAM_MCR_RESET);
+ udelay(2);
+ setbits_le32(&dram->mcr, DRAM_MCR_RESET);
+ }
}
static void mctl_set_drive(void)
{
struct sunxi_dram_reg *dram = (struct sunxi_dram_reg *)SUNXI_DRAMC_BASE;
+#ifdef CONFIG_SUN7I
clrsetbits_le32(&dram->mcr, DRAM_MCR_MODE_NORM(0x3) | (0x3 << 28),
+#else
+ clrsetbits_le32(&dram->mcr, DRAM_MCR_MODE_NORM(0x3),
+#endif
DRAM_MCR_MODE_EN(0x3) |
0xffc);
}
@@ -134,6 +155,26 @@ static void mctl_enable_dllx(u32 phase)
}
static u32 hpcr_value[32] = {
+#ifdef CONFIG_SUN5I
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0x1031, 0x1031, 0x0735, 0x1035,
+ 0x1035, 0x0731, 0x1031, 0,
+ 0x0301, 0x0301, 0x0301, 0x0301,
+ 0x0301, 0x0301, 0x0301, 0
+#endif
+#ifdef CONFIG_SUN4I
+ 0x0301, 0x0301, 0x0301, 0x0301,
+ 0x0301, 0x0301, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0x1031, 0x1031, 0x0735, 0x5031,
+ 0x1035, 0x0731, 0x1031, 0x0735,
+ 0x1035, 0x1031, 0x0731, 0x1035,
+ 0x1031, 0x0301, 0x0301, 0x0731
+#endif
#ifdef CONFIG_SUN7I
0x0301, 0x0301, 0x0301, 0x0301,
0x0301, 0x0301, 0x0301, 0x0301,
@@ -223,22 +264,38 @@ static void mctl_setup_dram_clock(u32 clk)
clrbits_le32(&ccm->ahb_gate0, CCM_AHB_GATE_GPS);
#endif
+#if defined(CONFIG_SUN5I) || defined(CONFIG_SUN7I)
/* setup MBUS clock */
reg_val = CCM_MBUS_CTRL_GATE |
+#ifdef CONFIG_SUN7I
CCM_MBUS_CTRL_CLK_SRC(CCM_MBUS_CTRL_CLK_SRC_PLL6) |
CCM_MBUS_CTRL_N(CCM_MBUS_CTRL_N_X(2)) |
CCM_MBUS_CTRL_M(CCM_MBUS_CTRL_M_X(2));
+#else /* defined(CONFIG_SUN5I) */
+ CCM_MBUS_CTRL_CLK_SRC(CCM_MBUS_CTRL_CLK_SRC_PLL5) |
+ CCM_MBUS_CTRL_N(CCM_MBUS_CTRL_N_X(1)) |
+ CCM_MBUS_CTRL_M(CCM_MBUS_CTRL_M_X(2));
+#endif
writel(reg_val, &ccm->mbus_clk_cfg);
+#endif
/*
* open DRAMC AHB & DLL register clock
* close it first
*/
+#if defined(CONFIG_SUN5I) || defined(CONFIG_SUN7I)
clrbits_le32(&ccm->ahb_gate0, CCM_AHB_GATE_SDRAM | CCM_AHB_GATE_DLL);
+#else
+ clrbits_le32(&ccm->ahb_gate0, CCM_AHB_GATE_SDRAM);
+#endif
udelay(22);
/* then open it */
+#if defined(CONFIG_SUN5I) || defined(CONFIG_SUN7I)
setbits_le32(&ccm->ahb_gate0, CCM_AHB_GATE_SDRAM | CCM_AHB_GATE_DLL);
+#else
+ setbits_le32(&ccm->ahb_gate0, CCM_AHB_GATE_SDRAM);
+#endif
udelay(22);
}
@@ -385,6 +442,13 @@ static void dramc_clock_output_en(u32 on)
else
clrbits_le32(&dram->mcr, DRAM_MCR_DCLK_OUT);
#endif
+#ifdef CONFIG_SUN4I
+ struct sunxi_ccm_reg *ccm = (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+ if (on)
+ setbits_le32(&ccm->dram_clk_cfg, CCM_DRAM_CTRL_DCLK_OUT);
+ else
+ clrbits_le32(&ccm->dram_clk_cfg, CCM_DRAM_CTRL_DCLK_OUT);
+#endif
}
static const u16 tRFC_table[2][6] = {
@@ -420,12 +484,25 @@ unsigned long dramc_init(struct dram_para *para)
/* setup DRAM relative clock */
mctl_setup_dram_clock(para->clock);
+#ifdef CONFIG_SUN5I
+ /* Disable any pad power save control */
+ writel(0, &dram->ppwrsctl);
+#endif
+
/* reset external DRAM */
+#ifndef CONFIG_SUN7I
+ mctl_ddr3_reset();
+#endif
mctl_set_drive();
/* dram clock off */
dramc_clock_output_en(0);
+#ifdef CONFIG_SUN4I
+ /* select dram controller 1 */
+ writel(DRAM_CSEL_MAGIC, &dram->csel);
+#endif
+
mctl_itm_disable();
mctl_enable_dll0(para->tpr3);
@@ -482,6 +559,9 @@ unsigned long dramc_init(struct dram_para *para)
mctl_ddr3_reset();
else
setbits_le32(&dram->mcr, DRAM_MCR_RESET);
+#else
+ /* dram clock on */
+ dramc_clock_output_en(1);
#endif
udelay(1);
@@ -490,6 +570,22 @@ unsigned long dramc_init(struct dram_para *para)
mctl_enable_dllx(para->tpr3);
+#ifdef CONFIG_SUN4I
+ /* set odt impedance divide ratio */
+ reg_val = ((para->zq) >> 8) & 0xfffff;
+ reg_val |= ((para->zq) & 0xff) << 20;
+ reg_val |= (para->zq) & 0xf0000000;
+ writel(reg_val, &dram->zqcr0);
+#endif
+
+#ifdef CONFIG_SUN4I
+ /* set I/O configure register */
+ reg_val = 0x00cc0000;
+ reg_val |= (para->odt_en) & 0x3;
+ reg_val |= ((para->odt_en) & 0x3) << 30;
+ writel(reg_val, &dram->iocr);
+#endif
+
/* set refresh period */
dramc_set_autorefresh_cycle(para->clock, para->type - 2, density);
diff --git a/arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds b/arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds
index 364e35c..928b7c1 100644
--- a/arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds
+++ b/arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds
@@ -27,6 +27,11 @@ SECTIONS
}
. = ALIGN(4);
+ .u_boot_list : {
+ KEEP(*(SORT(.u_boot_list*)));
+ }
+
+ . = ALIGN(4);
. = .;
. = ALIGN(4);
diff --git a/arch/arm/cpu/armv7/sunxi/u-boot-spl.lds b/arch/arm/cpu/armv7/sunxi/u-boot-spl.lds
index 5008028..53f0cbd 100644
--- a/arch/arm/cpu/armv7/sunxi/u-boot-spl.lds
+++ b/arch/arm/cpu/armv7/sunxi/u-boot-spl.lds
@@ -27,6 +27,7 @@ SECTIONS
.text :
{
__start = .;
+ *(.vectors)
arch/arm/cpu/armv7/start.o (.text)
*(.text*)
} > .sram
@@ -38,6 +39,11 @@ SECTIONS
.data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
. = ALIGN(4);
+ .u_boot_list : {
+ KEEP(*(SORT(.u_boot_list*)));
+ } > .sram
+
+ . = ALIGN(4);
__image_copy_end = .;
_end = .;
diff --git a/arch/arm/cpu/armv7/virt-dt.c b/arch/arm/cpu/armv7/virt-dt.c
new file mode 100644
index 0000000..0b0d6a7
--- /dev/null
+++ b/arch/arm/cpu/armv7/virt-dt.c
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2013 - ARM Ltd
+ * Author: Marc Zyngier <marc.zyngier@arm.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 <common.h>
+#include <stdio_dev.h>
+#include <linux/ctype.h>
+#include <linux/types.h>
+#include <asm/global_data.h>
+#include <libfdt.h>
+#include <fdt_support.h>
+#include <asm/armv7.h>
+#include <asm/psci.h>
+
+static int fdt_psci(void *fdt)
+{
+#ifdef CONFIG_ARMV7_PSCI
+ int nodeoff;
+ int tmp;
+
+ nodeoff = fdt_path_offset(fdt, "/cpus");
+ if (nodeoff < 0) {
+ printf("couldn't find /cpus\n");
+ return nodeoff;
+ }
+
+ /* add 'enable-method = "psci"' to each cpu node */
+ for (tmp = fdt_first_subnode(fdt, nodeoff);
+ tmp >= 0;
+ tmp = fdt_next_subnode(fdt, tmp)) {
+ const struct fdt_property *prop;
+ int len;
+
+ prop = fdt_get_property(fdt, tmp, "device_type", &len);
+ if (!prop)
+ continue;
+ if (len < 4)
+ continue;
+ if (strcmp(prop->data, "cpu"))
+ continue;
+
+ fdt_setprop_string(fdt, tmp, "enable-method", "psci");
+ }
+
+ nodeoff = fdt_path_offset(fdt, "/psci");
+ if (nodeoff < 0) {
+ nodeoff = fdt_path_offset(fdt, "/");
+ if (nodeoff < 0)
+ return nodeoff;
+
+ nodeoff = fdt_add_subnode(fdt, nodeoff, "psci");
+ if (nodeoff < 0)
+ return nodeoff;
+ }
+
+ tmp = fdt_setprop_string(fdt, nodeoff, "compatible", "arm,psci");
+ if (tmp)
+ return tmp;
+ tmp = fdt_setprop_string(fdt, nodeoff, "method", "smc");
+ if (tmp)
+ return tmp;
+ tmp = fdt_setprop_u32(fdt, nodeoff, "cpu_suspend", ARM_PSCI_FN_CPU_SUSPEND);
+ if (tmp)
+ return tmp;
+ tmp = fdt_setprop_u32(fdt, nodeoff, "cpu_off", ARM_PSCI_FN_CPU_OFF);
+ if (tmp)
+ return tmp;
+ tmp = fdt_setprop_u32(fdt, nodeoff, "cpu_on", ARM_PSCI_FN_CPU_ON);
+ if (tmp)
+ return tmp;
+ tmp = fdt_setprop_u32(fdt, nodeoff, "migrate", ARM_PSCI_FN_MIGRATE);
+ if (tmp)
+ return tmp;
+#endif
+ return 0;
+}
+
+int armv7_update_dt(void *fdt)
+{
+#ifndef CONFIG_ARMV7_SECURE_BASE
+ /* secure code lives in RAM, keep it alive */
+ fdt_add_mem_rsv(fdt, (unsigned long)__secure_start,
+ __secure_end - __secure_start);
+#endif
+
+ return fdt_psci(fdt);
+}
diff --git a/arch/arm/cpu/armv7/virt-v7.c b/arch/arm/cpu/armv7/virt-v7.c
index 2cd604f..651ca40 100644
--- a/arch/arm/cpu/armv7/virt-v7.c
+++ b/arch/arm/cpu/armv7/virt-v7.c
@@ -13,17 +13,10 @@
#include <asm/armv7.h>
#include <asm/gic.h>
#include <asm/io.h>
+#include <asm/secure.h>
unsigned long gic_dist_addr;
-static unsigned int read_cpsr(void)
-{
- unsigned int reg;
-
- asm volatile ("mrs %0, cpsr\n" : "=r" (reg));
- return reg;
-}
-
static unsigned int read_id_pfr1(void)
{
unsigned int reg;
@@ -37,25 +30,8 @@ static unsigned long get_gicd_base_address(void)
#ifdef CONFIG_ARM_GIC_BASE_ADDRESS
return CONFIG_ARM_GIC_BASE_ADDRESS + GIC_DIST_OFFSET;
#else
- unsigned midr;
unsigned periphbase;
- /* check whether we are an Cortex-A15 or A7.
- * The actual HYP switch should work with all CPUs supporting
- * the virtualization extension, but we need the GIC address,
- * which we know only for sure for those two CPUs.
- */
- asm("mrc p15, 0, %0, c0, c0, 0\n" : "=r"(midr));
- switch (midr & MIDR_PRIMARY_PART_MASK) {
- case MIDR_CORTEX_A9_R0P1:
- case MIDR_CORTEX_A15_R0P0:
- case MIDR_CORTEX_A7_R0P0:
- break;
- default:
- printf("nonsec: could not determine GIC address.\n");
- return -1;
- }
-
/* get the GIC base address from the CBAR register */
asm("mrc p15, 4, %0, c15, c0, 0\n" : "=r" (periphbase));
@@ -72,6 +48,18 @@ static unsigned long get_gicd_base_address(void)
#endif
}
+static void relocate_secure_section(void)
+{
+#ifdef CONFIG_ARMV7_SECURE_BASE
+ size_t sz = __secure_end - __secure_start;
+
+ memcpy((void *)CONFIG_ARMV7_SECURE_BASE, __secure_start, sz);
+ flush_dcache_range(CONFIG_ARMV7_SECURE_BASE,
+ CONFIG_ARMV7_SECURE_BASE + sz + 1);
+ invalidate_icache_all();
+#endif
+}
+
static void kick_secondary_cpus_gic(unsigned long gicdaddr)
{
/* kick all CPUs (except this one) by writing to GICD_SGIR */
@@ -83,35 +71,7 @@ void __weak smp_kick_all_cpus(void)
kick_secondary_cpus_gic(gic_dist_addr);
}
-int armv7_switch_hyp(void)
-{
- unsigned int reg;
-
- /* check whether we are in HYP mode already */
- if ((read_cpsr() & 0x1f) == 0x1a) {
- debug("CPU already in HYP mode\n");
- return 0;
- }
-
- /* check whether the CPU supports the virtualization extensions */
- reg = read_id_pfr1();
- if ((reg & CPUID_ARM_VIRT_MASK) != 1 << CPUID_ARM_VIRT_SHIFT) {
- printf("HYP mode: Virtualization extensions not implemented.\n");
- return -1;
- }
-
- /* call the HYP switching code on this CPU also */
- _switch_to_hyp();
-
- if ((read_cpsr() & 0x1F) != 0x1a) {
- printf("HYP mode: switch not successful.\n");
- return -1;
- }
-
- return 0;
-}
-
-int armv7_switch_nonsec(void)
+int armv7_init_nonsec(void)
{
unsigned int reg;
unsigned itlinesnr, i;
@@ -147,11 +107,13 @@ int armv7_switch_nonsec(void)
for (i = 1; i <= itlinesnr; i++)
writel((unsigned)-1, gic_dist_addr + GICD_IGROUPRn + 4 * i);
- smp_set_core_boot_addr((unsigned long)_smp_pen, -1);
+#ifndef CONFIG_ARMV7_PSCI
+ smp_set_core_boot_addr((unsigned long)secure_ram_addr(_smp_pen), -1);
smp_kick_all_cpus();
+#endif
/* call the non-sec switching code on this CPU also */
- _nonsec_init();
-
+ relocate_secure_section();
+ secure_ram_addr(_nonsec_init)();
return 0;
}
diff --git a/arch/arm/cpu/armv7/zynq/ddrc.c b/arch/arm/cpu/armv7/zynq/ddrc.c
index e0ed3bf..1ea086d 100644
--- a/arch/arm/cpu/armv7/zynq/ddrc.c
+++ b/arch/arm/cpu/armv7/zynq/ddrc.c
@@ -34,7 +34,7 @@ void zynq_ddrc_init(void)
/* ECC is enabled when memory is in 16bit mode and it is enabled */
if ((ecctype == ZYNQ_DDRC_ECC_SCRUBREG_ECCMODE_SECDED) &&
(width == ZYNQ_DDRC_CTRLREG_BUSWIDTH_16BIT)) {
- puts("Memory: ECC enabled\n");
+ puts("ECC enabled ");
/*
* Clear the first 1MB because it is not initialized from
* first stage bootloader. To get ECC to work all memory has
@@ -42,6 +42,6 @@ void zynq_ddrc_init(void)
*/
memset((void *)0, 0, 1 * 1024 * 1024);
} else {
- puts("Memory: ECC disabled\n");
+ puts("ECC disabled ");
}
}
diff --git a/arch/arm/cpu/u-boot.lds b/arch/arm/cpu/u-boot.lds
index a7728e0..7336162 100644
--- a/arch/arm/cpu/u-boot.lds
+++ b/arch/arm/cpu/u-boot.lds
@@ -7,6 +7,8 @@
* SPDX-License-Identifier: GPL-2.0+
*/
+#include <config.h>
+
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm)
ENTRY(_start)
@@ -23,6 +25,34 @@ SECTIONS
*(.text*)
}
+#if defined(CONFIG_ARMV7_NONSEC) || defined(CONFIG_ARMV7_VIRT) || defined(CONFIG_ARMV7_PSCI)
+
+#ifndef CONFIG_ARMV7_SECURE_BASE
+#define CONFIG_ARMV7_SECURE_BASE
+#endif
+
+ .__secure_start : {
+ . = ALIGN(0x1000);
+ *(.__secure_start)
+ }
+
+ .secure_text CONFIG_ARMV7_SECURE_BASE :
+ AT(ADDR(.__secure_start) + SIZEOF(.__secure_start))
+ {
+ *(._secure.text)
+ }
+
+ . = LOADADDR(.__secure_start) +
+ SIZEOF(.__secure_start) +
+ SIZEOF(.secure_text);
+
+ __secure_end_lma = .;
+ .__secure_end : AT(__secure_end_lma) {
+ *(.__secure_end)
+ LONG(0x1d1071c); /* Must output something to reset LMA */
+ }
+#endif
+
. = ALIGN(4);
.rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
diff --git a/arch/arm/include/asm/arch-am33xx/ddr_defs.h b/arch/arm/include/asm/arch-am33xx/ddr_defs.h
index 4d89952..97bbfe2 100644
--- a/arch/arm/include/asm/arch-am33xx/ddr_defs.h
+++ b/arch/arm/include/asm/arch-am33xx/ddr_defs.h
@@ -33,11 +33,7 @@
#define MT47H128M16RT25E_EMIF_SDCFG 0x41805332
#define MT47H128M16RT25E_EMIF_SDREF 0x0000081a
#define MT47H128M16RT25E_RATIO 0x80
-#define MT47H128M16RT25E_INVERT_CLKOUT 0x00
#define MT47H128M16RT25E_RD_DQS 0x12
-#define MT47H128M16RT25E_WR_DQS 0x00
-#define MT47H128M16RT25E_PHY_WRLVL 0x00
-#define MT47H128M16RT25E_PHY_GATELVL 0x00
#define MT47H128M16RT25E_PHY_WR_DATA 0x40
#define MT47H128M16RT25E_PHY_FIFO_WE 0x80
#define MT47H128M16RT25E_IOCTRL_VALUE 0x18B
diff --git a/arch/arm/include/asm/arch-am33xx/mem.h b/arch/arm/include/asm/arch-am33xx/mem.h
index e7e8c58..b2412b5 100644
--- a/arch/arm/include/asm/arch-am33xx/mem.h
+++ b/arch/arm/include/asm/arch-am33xx/mem.h
@@ -59,13 +59,6 @@
/* max number of GPMC regs */
#define GPMC_MAX_REG 7
-#define PISMO1_NOR 1
-#define PISMO1_NAND 2
-#define PISMO2_CS0 3
-#define PISMO2_CS1 4
-#define PISMO1_ONENAND 5
#define DBG_MPDB 6
-#define PISMO2_NAND_CS0 7
-#define PISMO2_NAND_CS1 8
#endif /* endif _MEM_H_ */
diff --git a/arch/arm/include/asm/arch-keystone/clock-k2e.h b/arch/arm/include/asm/arch-keystone/clock-k2e.h
new file mode 100644
index 0000000..4147811
--- /dev/null
+++ b/arch/arm/include/asm/arch-keystone/clock-k2e.h
@@ -0,0 +1,68 @@
+/*
+ * K2E: Clock management APIs
+ *
+ * (C) Copyright 2012-2014
+ * Texas Instruments Incorporated, <www.ti.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef __ASM_ARCH_CLOCK_K2E_H
+#define __ASM_ARCH_CLOCK_K2E_H
+
+enum ext_clk_e {
+ sys_clk,
+ alt_core_clk,
+ pa_clk,
+ ddr3_clk,
+ mcm_clk,
+ pcie_clk,
+ sgmii_clk,
+ xgmii_clk,
+ usb_clk,
+ ext_clk_count /* number of external clocks */
+};
+
+extern unsigned int external_clk[ext_clk_count];
+
+enum clk_e {
+ core_pll_clk,
+ pass_pll_clk,
+ ddr3_pll_clk,
+ sys_clk0_clk,
+ sys_clk0_1_clk,
+ sys_clk0_2_clk,
+ sys_clk0_3_clk,
+ sys_clk0_4_clk,
+ sys_clk0_6_clk,
+ sys_clk0_8_clk,
+ sys_clk0_12_clk,
+ sys_clk0_24_clk,
+ sys_clk1_clk,
+ sys_clk1_3_clk,
+ sys_clk1_4_clk,
+ sys_clk1_6_clk,
+ sys_clk1_12_clk,
+ sys_clk2_clk,
+ sys_clk3_clk
+};
+
+#define KS2_CLK1_6 sys_clk0_6_clk
+
+/* PLL identifiers */
+enum pll_type_e {
+ CORE_PLL,
+ PASS_PLL,
+ DDR3_PLL,
+};
+
+#define CORE_PLL_800 {CORE_PLL, 16, 1, 2}
+#define CORE_PLL_1000 {CORE_PLL, 20, 1, 2}
+#define CORE_PLL_1200 {CORE_PLL, 24, 1, 2}
+#define PASS_PLL_1000 {PASS_PLL, 20, 1, 2}
+#define DDR3_PLL_200 {DDR3_PLL, 4, 1, 2}
+#define DDR3_PLL_400 {DDR3_PLL, 16, 1, 4}
+#define DDR3_PLL_800 {DDR3_PLL, 16, 1, 2}
+#define DDR3_PLL_333 {DDR3_PLL, 20, 1, 6}
+
+#endif
diff --git a/arch/arm/include/asm/arch-keystone/clock-k2hk.h b/arch/arm/include/asm/arch-keystone/clock-k2hk.h
index 6a69a8d..784a0be 100644
--- a/arch/arm/include/asm/arch-keystone/clock-k2hk.h
+++ b/arch/arm/include/asm/arch-keystone/clock-k2hk.h
@@ -10,10 +10,6 @@
#ifndef __ASM_ARCH_CLOCK_K2HK_H
#define __ASM_ARCH_CLOCK_K2HK_H
-#include <asm/arch/hardware.h>
-
-#ifndef __ASSEMBLY__
-
enum ext_clk_e {
sys_clk,
alt_core_clk,
@@ -56,7 +52,7 @@ enum clk_e {
sys_clk3_clk
};
-#define K2HK_CLK1_6 sys_clk0_6_clk
+#define KS2_CLK1_6 sys_clk0_6_clk
/* PLL identifiers */
enum pll_type_e {
@@ -66,15 +62,6 @@ enum pll_type_e {
DDR3A_PLL,
DDR3B_PLL,
};
-#define MAIN_PLL CORE_PLL
-
-/* PLL configuration data */
-struct pll_init_data {
- int pll;
- int pll_m; /* PLL Multiplier */
- int pll_d; /* PLL divider */
- int pll_od; /* PLL output divider */
-};
#define CORE_PLL_799 {CORE_PLL, 13, 1, 2}
#define CORE_PLL_983 {CORE_PLL, 16, 1, 2}
@@ -98,12 +85,4 @@ struct pll_init_data {
#define DDR3_PLL_800(x) {DDR3##x##_PLL, 16, 1, 2}
#define DDR3_PLL_333(x) {DDR3##x##_PLL, 20, 1, 6}
-void init_plls(int num_pll, struct pll_init_data *config);
-void init_pll(const struct pll_init_data *data);
-unsigned long clk_get_rate(unsigned int clk);
-unsigned long clk_round_rate(unsigned int clk, unsigned long hz);
-int clk_set_rate(unsigned int clk, unsigned long hz);
-
-#endif
-
#endif
diff --git a/arch/arm/include/asm/arch-keystone/clock.h b/arch/arm/include/asm/arch-keystone/clock.h
index 324501b..1513c76 100644
--- a/arch/arm/include/asm/arch-keystone/clock.h
+++ b/arch/arm/include/asm/arch-keystone/clock.h
@@ -10,8 +10,40 @@
#ifndef __ASM_ARCH_CLOCK_H
#define __ASM_ARCH_CLOCK_H
+#ifndef __ASSEMBLY__
+
#ifdef CONFIG_SOC_K2HK
#include <asm/arch/clock-k2hk.h>
#endif
+#ifdef CONFIG_SOC_K2E
+#include <asm/arch/clock-k2e.h>
+#endif
+
+#define MAIN_PLL CORE_PLL
+
+#include <asm/types.h>
+
+struct keystone_pll_regs {
+ u32 reg0;
+ u32 reg1;
+};
+
+/* PLL configuration data */
+struct pll_init_data {
+ int pll;
+ int pll_m; /* PLL Multiplier */
+ int pll_d; /* PLL divider */
+ int pll_od; /* PLL output divider */
+};
+
+extern const struct keystone_pll_regs keystone_pll_regs[];
+
+void init_plls(int num_pll, struct pll_init_data *config);
+void init_pll(const struct pll_init_data *data);
+unsigned long clk_get_rate(unsigned int clk);
+unsigned long clk_round_rate(unsigned int clk, unsigned long hz);
+int clk_set_rate(unsigned int clk, unsigned long hz);
+
+#endif
#endif
diff --git a/arch/arm/include/asm/arch-keystone/clock_defs.h b/arch/arm/include/asm/arch-keystone/clock_defs.h
index b251aff..e545341 100644
--- a/arch/arm/include/asm/arch-keystone/clock_defs.h
+++ b/arch/arm/include/asm/arch-keystone/clock_defs.h
@@ -50,7 +50,7 @@ struct pllctl_regs {
};
static struct pllctl_regs *pllctl_regs[] = {
- (struct pllctl_regs *)(CLOCK_BASE + 0x100)
+ (struct pllctl_regs *)(KS2_CLOCK_BASE + 0x100)
};
#define pllctl_reg(pll, reg) (&(pllctl_regs[pll]->reg))
diff --git a/arch/arm/include/asm/arch-keystone/ddr3.h b/arch/arm/include/asm/arch-keystone/ddr3.h
new file mode 100644
index 0000000..4d229a2
--- /dev/null
+++ b/arch/arm/include/asm/arch-keystone/ddr3.h
@@ -0,0 +1,56 @@
+/*
+ * DDR3
+ *
+ * (C) Copyright 2014
+ * Texas Instruments Incorporated, <www.ti.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef _DDR3_H_
+#define _DDR3_H_
+
+#include <asm/arch/hardware.h>
+
+struct ddr3_phy_config {
+ unsigned int pllcr;
+ unsigned int pgcr1_mask;
+ unsigned int pgcr1_val;
+ unsigned int ptr0;
+ unsigned int ptr1;
+ unsigned int ptr2;
+ unsigned int ptr3;
+ unsigned int ptr4;
+ unsigned int dcr_mask;
+ unsigned int dcr_val;
+ unsigned int dtpr0;
+ unsigned int dtpr1;
+ unsigned int dtpr2;
+ unsigned int mr0;
+ unsigned int mr1;
+ unsigned int mr2;
+ unsigned int dtcr;
+ unsigned int pgcr2;
+ unsigned int zq0cr1;
+ unsigned int zq1cr1;
+ unsigned int zq2cr1;
+ unsigned int pir_v1;
+ unsigned int pir_v2;
+};
+
+struct ddr3_emif_config {
+ unsigned int sdcfg;
+ unsigned int sdtim1;
+ unsigned int sdtim2;
+ unsigned int sdtim3;
+ unsigned int sdtim4;
+ unsigned int zqcfg;
+ unsigned int sdrfc;
+};
+
+void ddr3_init(void);
+void ddr3_reset_ddrphy(void);
+void ddr3_init_ddrphy(u32 base, struct ddr3_phy_config *phy_cfg);
+void ddr3_init_ddremif(u32 base, struct ddr3_emif_config *emif_cfg);
+
+#endif
diff --git a/arch/arm/include/asm/arch-keystone/hardware-k2e.h b/arch/arm/include/asm/arch-keystone/hardware-k2e.h
new file mode 100644
index 0000000..62172a4
--- /dev/null
+++ b/arch/arm/include/asm/arch-keystone/hardware-k2e.h
@@ -0,0 +1,44 @@
+/*
+ * K2E: SoC definitions
+ *
+ * (C) Copyright 2012-2014
+ * Texas Instruments Incorporated, <www.ti.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef __ASM_ARCH_HARDWARE_K2E_H
+#define __ASM_ARCH_HARDWARE_K2E_H
+
+/* PA SS Registers */
+#define KS2_PASS_BASE 0x24000000
+
+/* Power and Sleep Controller (PSC) Domains */
+#define KS2_LPSC_MOD_RST 0
+#define KS2_LPSC_USB_1 1
+#define KS2_LPSC_USB 2
+#define KS2_LPSC_EMIF25_SPI 3
+#define KS2_LPSC_TSIP 4
+#define KS2_LPSC_DEBUGSS_TRC 5
+#define KS2_LPSC_TETB_TRC 6
+#define KS2_LPSC_PKTPROC 7
+#define KS2_LPSC_PA KS2_LPSC_PKTPROC
+#define KS2_LPSC_SGMII 8
+#define KS2_LPSC_CPGMAC KS2_LPSC_SGMII
+#define KS2_LPSC_CRYPTO 9
+#define KS2_LPSC_PCIE 10
+#define KS2_LPSC_VUSR0 12
+#define KS2_LPSC_CHIP_SRSS 13
+#define KS2_LPSC_MSMC 14
+#define KS2_LPSC_EMIF4F_DDR3 23
+#define KS2_LPSC_PCIE_1 27
+#define KS2_LPSC_XGE 50
+
+/* Chip Interrupt Controller */
+#define KS2_CIC2_DDR3_ECC_IRQ_NUM -1 /* not defined in K2E */
+#define KS2_CIC2_DDR3_ECC_CHAN_NUM -1 /* not defined in K2E */
+
+/* Number of DSP cores */
+#define KS2_NUM_DSPS 1
+
+#endif
diff --git a/arch/arm/include/asm/arch-keystone/hardware-k2hk.h b/arch/arm/include/asm/arch-keystone/hardware-k2hk.h
index 50ce649..eb132f7 100644
--- a/arch/arm/include/asm/arch-keystone/hardware-k2hk.h
+++ b/arch/arm/include/asm/arch-keystone/hardware-k2hk.h
@@ -6,136 +6,82 @@
*
* SPDX-License-Identifier: GPL-2.0+
*/
+
#ifndef __ASM_ARCH_HARDWARE_K2HK_H
#define __ASM_ARCH_HARDWARE_K2HK_H
-#define K2HK_PLL_CNTRL_BASE 0x02310000
-#define CLOCK_BASE K2HK_PLL_CNTRL_BASE
-#define KS2_RSTCTRL (K2HK_PLL_CNTRL_BASE + 0xe8)
-#define KS2_RSTCTRL_KEY 0x5a69
-#define KS2_RSTCTRL_MASK 0xffff0000
-#define KS2_RSTCTRL_SWRST 0xfffe0000
-
-#define K2HK_PSC_BASE 0x02350000
-#define KS2_DEVICE_STATE_CTRL_BASE 0x02620000
-#define JTAG_ID_REG (KS2_DEVICE_STATE_CTRL_BASE + 0x18)
-#define K2HK_DEVSTAT (KS2_DEVICE_STATE_CTRL_BASE + 0x20)
-
-#define K2HK_MISC_CTRL (KS2_DEVICE_STATE_CTRL_BASE + 0xc7c)
-
-#define ARM_PLL_EN BIT(13)
+#define KS2_MISC_CTRL (KS2_DEVICE_STATE_CTRL_BASE + 0xc7c)
-#define K2HK_SPI0_BASE 0x21000400
-#define K2HK_SPI1_BASE 0x21000600
-#define K2HK_SPI2_BASE 0x21000800
-#define K2HK_SPI_BASE K2HK_SPI0_BASE
-
-/* Chip configuration unlock codes and registers */
-#define KEYSTONE_KICK0 (KS2_DEVICE_STATE_CTRL_BASE + 0x38)
-#define KEYSTONE_KICK1 (KS2_DEVICE_STATE_CTRL_BASE + 0x3c)
-#define KEYSTONE_KICK0_MAGIC 0x83e70b13
-#define KEYSTONE_KICK1_MAGIC 0x95a4f1e0
+#define KS2_ARM_PLL_EN BIT(13)
/* PA SS Registers */
-#define KS2_PASS_BASE 0x02000000
+#define KS2_PASS_BASE 0x02000000
/* PLL control registers */
-#define K2HK_MAINPLLCTL0 (KS2_DEVICE_STATE_CTRL_BASE + 0x350)
-#define K2HK_MAINPLLCTL1 (KS2_DEVICE_STATE_CTRL_BASE + 0x354)
-#define K2HK_PASSPLLCTL0 (KS2_DEVICE_STATE_CTRL_BASE + 0x358)
-#define K2HK_PASSPLLCTL1 (KS2_DEVICE_STATE_CTRL_BASE + 0x35C)
-#define K2HK_DDR3APLLCTL0 (KS2_DEVICE_STATE_CTRL_BASE + 0x360)
-#define K2HK_DDR3APLLCTL1 (KS2_DEVICE_STATE_CTRL_BASE + 0x364)
-#define K2HK_DDR3BPLLCTL0 (KS2_DEVICE_STATE_CTRL_BASE + 0x368)
-#define K2HK_DDR3BPLLCTL1 (KS2_DEVICE_STATE_CTRL_BASE + 0x36C)
-#define K2HK_ARMPLLCTL0 (KS2_DEVICE_STATE_CTRL_BASE + 0x370)
-#define K2HK_ARMPLLCTL1 (KS2_DEVICE_STATE_CTRL_BASE + 0x374)
+#define KS2_DDR3BPLLCTL0 (KS2_DEVICE_STATE_CTRL_BASE + 0x368)
+#define KS2_DDR3BPLLCTL1 (KS2_DEVICE_STATE_CTRL_BASE + 0x36C)
/* Power and Sleep Controller (PSC) Domains */
-#define K2HK_LPSC_MOD 0
-#define K2HK_LPSC_DUMMY1 1
-#define K2HK_LPSC_USB 2
-#define K2HK_LPSC_EMIF25_SPI 3
-#define K2HK_LPSC_TSIP 4
-#define K2HK_LPSC_DEBUGSS_TRC 5
-#define K2HK_LPSC_TETB_TRC 6
-#define K2HK_LPSC_PKTPROC 7
-#define KS2_LPSC_PA K2HK_LPSC_PKTPROC
-#define K2HK_LPSC_SGMII 8
-#define KS2_LPSC_CPGMAC K2HK_LPSC_SGMII
-#define K2HK_LPSC_CRYPTO 9
-#define K2HK_LPSC_PCIE 10
-#define K2HK_LPSC_SRIO 11
-#define K2HK_LPSC_VUSR0 12
-#define K2HK_LPSC_CHIP_SRSS 13
-#define K2HK_LPSC_MSMC 14
-#define K2HK_LPSC_GEM_0 15
-#define K2HK_LPSC_GEM_1 16
-#define K2HK_LPSC_GEM_2 17
-#define K2HK_LPSC_GEM_3 18
-#define K2HK_LPSC_GEM_4 19
-#define K2HK_LPSC_GEM_5 20
-#define K2HK_LPSC_GEM_6 21
-#define K2HK_LPSC_GEM_7 22
-#define K2HK_LPSC_EMIF4F_DDR3A 23
-#define K2HK_LPSC_EMIF4F_DDR3B 24
-#define K2HK_LPSC_TAC 25
-#define K2HK_LPSC_RAC 26
-#define K2HK_LPSC_RAC_1 27
-#define K2HK_LPSC_FFTC_A 28
-#define K2HK_LPSC_FFTC_B 29
-#define K2HK_LPSC_FFTC_C 30
-#define K2HK_LPSC_FFTC_D 31
-#define K2HK_LPSC_FFTC_E 32
-#define K2HK_LPSC_FFTC_F 33
-#define K2HK_LPSC_AI2 34
-#define K2HK_LPSC_TCP3D_0 35
-#define K2HK_LPSC_TCP3D_1 36
-#define K2HK_LPSC_TCP3D_2 37
-#define K2HK_LPSC_TCP3D_3 38
-#define K2HK_LPSC_VCP2X4_A 39
-#define K2HK_LPSC_CP2X4_B 40
-#define K2HK_LPSC_VCP2X4_C 41
-#define K2HK_LPSC_VCP2X4_D 42
-#define K2HK_LPSC_VCP2X4_E 43
-#define K2HK_LPSC_VCP2X4_F 44
-#define K2HK_LPSC_VCP2X4_G 45
-#define K2HK_LPSC_VCP2X4_H 46
-#define K2HK_LPSC_BCP 47
-#define K2HK_LPSC_DXB 48
-#define K2HK_LPSC_VUSR1 49
-#define K2HK_LPSC_XGE 50
-#define K2HK_LPSC_ARM_SREFLEX 51
-#define K2HK_LPSC_TETRIS 52
+#define KS2_LPSC_MOD 0
+#define KS2_LPSC_DUMMY1 1
+#define KS2_LPSC_USB 2
+#define KS2_LPSC_EMIF25_SPI 3
+#define KS2_LPSC_TSIP 4
+#define KS2_LPSC_DEBUGSS_TRC 5
+#define KS2_LPSC_TETB_TRC 6
+#define KS2_LPSC_PKTPROC 7
+#define KS2_LPSC_PA KS2_LPSC_PKTPROC
+#define KS2_LPSC_SGMII 8
+#define KS2_LPSC_CPGMAC KS2_LPSC_SGMII
+#define KS2_LPSC_CRYPTO 9
+#define KS2_LPSC_PCIE 10
+#define KS2_LPSC_SRIO 11
+#define KS2_LPSC_VUSR0 12
+#define KS2_LPSC_CHIP_SRSS 13
+#define KS2_LPSC_MSMC 14
+#define KS2_LPSC_GEM_1 16
+#define KS2_LPSC_GEM_2 17
+#define KS2_LPSC_GEM_3 18
+#define KS2_LPSC_GEM_4 19
+#define KS2_LPSC_GEM_5 20
+#define KS2_LPSC_GEM_6 21
+#define KS2_LPSC_GEM_7 22
+#define KS2_LPSC_EMIF4F_DDR3A 23
+#define KS2_LPSC_EMIF4F_DDR3B 24
+#define KS2_LPSC_TAC 25
+#define KS2_LPSC_RAC 26
+#define KS2_LPSC_RAC_1 27
+#define KS2_LPSC_FFTC_A 28
+#define KS2_LPSC_FFTC_B 29
+#define KS2_LPSC_FFTC_C 30
+#define KS2_LPSC_FFTC_D 31
+#define KS2_LPSC_FFTC_E 32
+#define KS2_LPSC_FFTC_F 33
+#define KS2_LPSC_AI2 34
+#define KS2_LPSC_TCP3D_0 35
+#define KS2_LPSC_TCP3D_1 36
+#define KS2_LPSC_TCP3D_2 37
+#define KS2_LPSC_TCP3D_3 38
+#define KS2_LPSC_VCP2X4_A 39
+#define KS2_LPSC_CP2X4_B 40
+#define KS2_LPSC_VCP2X4_C 41
+#define KS2_LPSC_VCP2X4_D 42
+#define KS2_LPSC_VCP2X4_E 43
+#define KS2_LPSC_VCP2X4_F 44
+#define KS2_LPSC_VCP2X4_G 45
+#define KS2_LPSC_VCP2X4_H 46
+#define KS2_LPSC_BCP 47
+#define KS2_LPSC_DXB 48
+#define KS2_LPSC_VUSR1 49
+#define KS2_LPSC_XGE 50
+#define KS2_LPSC_ARM_SREFLEX 51
-/* DDR3A definitions */
-#define K2HK_DDR3A_EMIF_CTRL_BASE 0x21010000
-#define K2HK_DDR3A_EMIF_DATA_BASE 0x80000000
-#define K2HK_DDR3A_DDRPHYC 0x02329000
/* DDR3B definitions */
-#define K2HK_DDR3B_EMIF_CTRL_BASE 0x21020000
-#define K2HK_DDR3B_EMIF_DATA_BASE 0x60000000
-#define K2HK_DDR3B_DDRPHYC 0x02328000
-
-/* Queue manager */
-#define DEVICE_QM_MANAGER_BASE 0x02a02000
-#define DEVICE_QM_DESC_SETUP_BASE 0x02a03000
-#define DEVICE_QM_MANAGER_QUEUES_BASE 0x02a80000
-#define DEVICE_QM_MANAGER_Q_PROXY_BASE 0x02ac0000
-#define DEVICE_QM_QUEUE_STATUS_BASE 0x02a40000
-#define DEVICE_QM_NUM_LINKRAMS 2
-#define DEVICE_QM_NUM_MEMREGIONS 20
-
-#define DEVICE_PA_CDMA_GLOBAL_CFG_BASE 0x02004000
-#define DEVICE_PA_CDMA_TX_CHAN_CFG_BASE 0x02004400
-#define DEVICE_PA_CDMA_RX_CHAN_CFG_BASE 0x02004800
-#define DEVICE_PA_CDMA_RX_FLOW_CFG_BASE 0x02005000
-
-#define DEVICE_PA_CDMA_RX_NUM_CHANNELS 24
-#define DEVICE_PA_CDMA_RX_NUM_FLOWS 32
-#define DEVICE_PA_CDMA_TX_NUM_CHANNELS 9
+#define KS2_DDR3B_EMIF_CTRL_BASE 0x21020000
+#define KS2_DDR3B_EMIF_DATA_BASE 0x60000000
+#define KS2_DDR3B_DDRPHYC 0x02328000
-/* MSMC control */
-#define K2HK_MSMC_CTRL_BASE 0x0bc00000
+/* Number of DSP cores */
+#define KS2_NUM_DSPS 8
#endif /* __ASM_ARCH_HARDWARE_H */
diff --git a/arch/arm/include/asm/arch-keystone/hardware.h b/arch/arm/include/asm/arch-keystone/hardware.h
index ffdecbf..ddeb06e 100644
--- a/arch/arm/include/asm/arch-keystone/hardware.h
+++ b/arch/arm/include/asm/arch-keystone/hardware.h
@@ -22,42 +22,6 @@
typedef volatile unsigned int dv_reg;
typedef volatile unsigned int *dv_reg_p;
-struct ddr3_phy_config {
- unsigned int pllcr;
- unsigned int pgcr1_mask;
- unsigned int pgcr1_val;
- unsigned int ptr0;
- unsigned int ptr1;
- unsigned int ptr2;
- unsigned int ptr3;
- unsigned int ptr4;
- unsigned int dcr_mask;
- unsigned int dcr_val;
- unsigned int dtpr0;
- unsigned int dtpr1;
- unsigned int dtpr2;
- unsigned int mr0;
- unsigned int mr1;
- unsigned int mr2;
- unsigned int dtcr;
- unsigned int pgcr2;
- unsigned int zq0cr1;
- unsigned int zq1cr1;
- unsigned int zq2cr1;
- unsigned int pir_v1;
- unsigned int pir_v2;
-};
-
-struct ddr3_emif_config {
- unsigned int sdcfg;
- unsigned int sdtim1;
- unsigned int sdtim2;
- unsigned int sdtim3;
- unsigned int sdtim4;
- unsigned int zqcfg;
- unsigned int sdrfc;
-};
-
#endif
#define BIT(x) (1 << (x))
@@ -105,6 +69,11 @@ struct ddr3_emif_config {
#define NOSRA_MASK 0x08000000
#define ECC_MASK 0x00000001
+/* DDR3 definitions */
+#define KS2_DDR3A_EMIF_CTRL_BASE 0x21010000
+#define KS2_DDR3A_EMIF_DATA_BASE 0x80000000
+#define KS2_DDR3A_DDRPHYC 0x02329000
+
#define KS2_DDR3_MIDR_OFFSET 0x00
#define KS2_DDR3_STATUS_OFFSET 0x04
#define KS2_DDR3_SDCFG_OFFSET 0x08
@@ -116,39 +85,103 @@ struct ddr3_emif_config {
#define KS2_DDR3_PMCTL_OFFSET 0x38
#define KS2_DDR3_ZQCFG_OFFSET 0xC8
+#define KS2_DDR3_PLLCTRL_PHY_RESET 0x80000000
+
#define KS2_UART0_BASE 0x02530c00
#define KS2_UART1_BASE 0x02531000
+/* Boot Config */
+#define KS2_DEVICE_STATE_CTRL_BASE 0x02620000
+#define KS2_JTAG_ID_REG (KS2_DEVICE_STATE_CTRL_BASE + 0x18)
+#define KS2_DEVSTAT (KS2_DEVICE_STATE_CTRL_BASE + 0x20)
+
+/* PSC */
+#define KS2_PSC_BASE 0x02350000
+#define KS2_LPSC_GEM_0 15
+#define KS2_LPSC_TETRIS 52
+#define KS2_TETRIS_PWR_DOMAIN 31
+
+/* Chip configuration unlock codes and registers */
+#define KS2_KICK0 (KS2_DEVICE_STATE_CTRL_BASE + 0x38)
+#define KS2_KICK1 (KS2_DEVICE_STATE_CTRL_BASE + 0x3c)
+#define KS2_KICK0_MAGIC 0x83e70b13
+#define KS2_KICK1_MAGIC 0x95a4f1e0
+
+/* PLL control registers */
+#define KS2_MAINPLLCTL0 (KS2_DEVICE_STATE_CTRL_BASE + 0x350)
+#define KS2_MAINPLLCTL1 (KS2_DEVICE_STATE_CTRL_BASE + 0x354)
+#define KS2_PASSPLLCTL0 (KS2_DEVICE_STATE_CTRL_BASE + 0x358)
+#define KS2_PASSPLLCTL1 (KS2_DEVICE_STATE_CTRL_BASE + 0x35C)
+#define KS2_DDR3APLLCTL0 (KS2_DEVICE_STATE_CTRL_BASE + 0x360)
+#define KS2_DDR3APLLCTL1 (KS2_DEVICE_STATE_CTRL_BASE + 0x364)
+#define KS2_ARMPLLCTL0 (KS2_DEVICE_STATE_CTRL_BASE + 0x370)
+#define KS2_ARMPLLCTL1 (KS2_DEVICE_STATE_CTRL_BASE + 0x374)
+
+#define KS2_PLL_CNTRL_BASE 0x02310000
+#define KS2_CLOCK_BASE KS2_PLL_CNTRL_BASE
+#define KS2_RSTCTRL_RSTYPE (KS2_PLL_CNTRL_BASE + 0xe4)
+#define KS2_RSTCTRL (KS2_PLL_CNTRL_BASE + 0xe8)
+#define KS2_RSTCTRL_KEY 0x5a69
+#define KS2_RSTCTRL_MASK 0xffff0000
+#define KS2_RSTCTRL_SWRST 0xfffe0000
+
+/* SPI */
+#define KS2_SPI0_BASE 0x21000400
+#define KS2_SPI1_BASE 0x21000600
+#define KS2_SPI2_BASE 0x21000800
+#define KS2_SPI_BASE KS2_SPI0_BASE
+
/* AEMIF */
#define KS2_AEMIF_CNTRL_BASE 0x21000a00
#define DAVINCI_ASYNC_EMIF_CNTRL_BASE KS2_AEMIF_CNTRL_BASE
+/* Flag from ks2_debug options to check if DSPs need to stay ON */
+#define DBG_LEAVE_DSPS_ON 0x1
+
+/* Queue manager */
+#define KS2_QM_MANAGER_BASE 0x02a02000
+#define KS2_QM_DESC_SETUP_BASE 0x02a03000
+#define KS2_QM_MANAGER_QUEUES_BASEi 0x02a80000
+#define KS2_QM_MANAGER_Q_PROXY_BASE 0x02ac0000
+#define KS2_QM_QUEUE_STATUS_BASE 0x02a40000
+
+/* MSMC control */
+#define KS2_MSMC_CTRL_BASE 0x0bc00000
+
#ifdef CONFIG_SOC_K2HK
#include <asm/arch/hardware-k2hk.h>
#endif
+#ifdef CONFIG_SOC_K2E
+#include <asm/arch/hardware-k2e.h>
+#endif
+
#ifndef __ASSEMBLY__
static inline int cpu_is_k2hk(void)
{
- unsigned int jtag_id = __raw_readl(JTAG_ID_REG);
+ unsigned int jtag_id = __raw_readl(KS2_JTAG_ID_REG);
unsigned int part_no = (jtag_id >> 12) & 0xffff;
return (part_no == 0xb981) ? 1 : 0;
}
+static inline int cpu_is_k2e(void)
+{
+ unsigned int jtag_id = __raw_readl(KS2_JTAG_ID_REG);
+ unsigned int part_no = (jtag_id >> 12) & 0xffff;
+
+ return (part_no == 0xb9a6) ? 1 : 0;
+}
+
static inline int cpu_revision(void)
{
- unsigned int jtag_id = __raw_readl(JTAG_ID_REG);
+ unsigned int jtag_id = __raw_readl(KS2_JTAG_ID_REG);
unsigned int rev = (jtag_id >> 28) & 0xf;
return rev;
}
-void share_all_segments(int priv_id);
int cpu_to_bus(u32 *ptr, u32 length);
-void init_ddrphy(u32 base, struct ddr3_phy_config *phy_cfg);
-void init_ddremif(u32 base, struct ddr3_emif_config *emif_cfg);
-void init_ddr3(void);
void sdelay(unsigned long);
#endif
diff --git a/arch/arm/include/asm/arch-keystone/mon.h b/arch/arm/include/asm/arch-keystone/mon.h
new file mode 100644
index 0000000..33a2876
--- /dev/null
+++ b/arch/arm/include/asm/arch-keystone/mon.h
@@ -0,0 +1,15 @@
+/*
+ * K2HK: secure kernel command header file
+ *
+ * (C) Copyright 2014
+ * Texas Instruments Incorporated, <www.ti.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef _MON_H_
+#define _MON_H_
+
+int mon_power_off(int core_id);
+
+#endif
diff --git a/arch/arm/include/asm/arch-keystone/msmc.h b/arch/arm/include/asm/arch-keystone/msmc.h
new file mode 100644
index 0000000..c320db5
--- /dev/null
+++ b/arch/arm/include/asm/arch-keystone/msmc.h
@@ -0,0 +1,17 @@
+/*
+ * MSMC controller
+ *
+ * (C) Copyright 2014
+ * Texas Instruments Incorporated, <www.ti.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef _MSMC_H_
+#define _MSMC_H_
+
+#include <asm/arch/hardware.h>
+
+void msmc_share_all_segments(int priv_id);
+
+#endif
diff --git a/arch/arm/include/asm/arch-kirkwood/config.h b/arch/arm/include/asm/arch-kirkwood/config.h
index 7a688e4..f7bfa0e 100644
--- a/arch/arm/include/asm/arch-kirkwood/config.h
+++ b/arch/arm/include/asm/arch-kirkwood/config.h
@@ -129,7 +129,8 @@
*/
#ifdef CONFIG_CMD_I2C
#ifndef CONFIG_SYS_I2C_SOFT
-#define CONFIG_I2C_MVTWSI
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_MVTWSI
#endif
#define CONFIG_SYS_I2C_SLAVE 0x0
#define CONFIG_SYS_I2C_SPEED 100000
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-omap3/cpu.h b/arch/arm/include/asm/arch-omap3/cpu.h
index 4d06ef8..53cc2b0 100644
--- a/arch/arm/include/asm/arch-omap3/cpu.h
+++ b/arch/arm/include/asm/arch-omap3/cpu.h
@@ -98,7 +98,6 @@ struct ctrl_id {
#define DEBUG_BASE 0x08000000 /* debug board */
#define NAND_BASE 0x30000000 /* NAND addr */
/* (actual size small port) */
-#define PISMO2_BASE 0x18000000 /* PISMO2 CS1/2 */
#define ONENAND_MAP 0x20000000 /* OneNand addr */
/* (actual size small port) */
/* SMS */
diff --git a/arch/arm/include/asm/arch-omap3/mem.h b/arch/arm/include/asm/arch-omap3/mem.h
index d2dfb1e..0b78c1c 100644
--- a/arch/arm/include/asm/arch-omap3/mem.h
+++ b/arch/arm/include/asm/arch-omap3/mem.h
@@ -427,20 +427,7 @@ enum {
/* max number of GPMC regs */
#define GPMC_MAX_REG 7
-#define PISMO1_NOR 1
-#define PISMO1_NAND 2
-#define PISMO2_CS0 3
-#define PISMO2_CS1 4
-#define PISMO1_ONENAND 5
#define DBG_MPDB 6
-#define PISMO2_NAND_CS0 7
-#define PISMO2_NAND_CS1 8
-
-/* make it readable for the gpmc_init */
-#define PISMO1_NOR_BASE FLASH_BASE
-#define PISMO1_NAND_BASE NAND_BASE
-#define PISMO2_CS0_BASE PISMO2_MAP1
-#define PISMO1_ONEN_BASE ONENAND_MAP
#define DBG_MPDB_BASE DEBUG_BASE
#ifndef __ASSEMBLY__
diff --git a/arch/arm/include/asm/arch-rmobile/gpio.h b/arch/arm/include/asm/arch-rmobile/gpio.h
index 560e9f4..d25ea61 100644
--- a/arch/arm/include/asm/arch-rmobile/gpio.h
+++ b/arch/arm/include/asm/arch-rmobile/gpio.h
@@ -13,6 +13,9 @@ void r8a7790_pinmux_init(void);
#elif defined(CONFIG_R8A7791)
#include "r8a7791-gpio.h"
void r8a7791_pinmux_init(void);
+#elif defined(CONFIG_R8A7794)
+#include "r8a7794-gpio.h"
+void r8a7794_pinmux_init(void);
#endif
#endif /* __ASM_ARCH_GPIO_H */
diff --git a/arch/arm/include/asm/arch-rmobile/r8a7794-gpio.h b/arch/arm/include/asm/arch-rmobile/r8a7794-gpio.h
new file mode 100644
index 0000000..a45a67c
--- /dev/null
+++ b/arch/arm/include/asm/arch-rmobile/r8a7794-gpio.h
@@ -0,0 +1,176 @@
+#ifndef __ASM_R8A7794_H__
+#define __ASM_R8A7794_H__
+
+/* Pin Function Controller:
+ * GPIO_FN_xx - GPIO used to select pin function
+ * GPIO_GP_x_x - GPIO mapped to real I/O pin on CPU
+ */
+enum {
+ GPIO_GP_0_0, GPIO_GP_0_1, GPIO_GP_0_2, GPIO_GP_0_3,
+ GPIO_GP_0_4, GPIO_GP_0_5, GPIO_GP_0_6, GPIO_GP_0_7,
+ GPIO_GP_0_8, GPIO_GP_0_9, GPIO_GP_0_10, GPIO_GP_0_11,
+ GPIO_GP_0_12, GPIO_GP_0_13, GPIO_GP_0_14, GPIO_GP_0_15,
+ GPIO_GP_0_16, GPIO_GP_0_17, GPIO_GP_0_18, GPIO_GP_0_19,
+ GPIO_GP_0_20, GPIO_GP_0_21, GPIO_GP_0_22, GPIO_GP_0_23,
+ GPIO_GP_0_24, GPIO_GP_0_25, GPIO_GP_0_26, GPIO_GP_0_27,
+ GPIO_GP_0_28, GPIO_GP_0_29, GPIO_GP_0_30, GPIO_GP_0_31,
+
+ GPIO_GP_1_0, GPIO_GP_1_1, GPIO_GP_1_2, GPIO_GP_1_3,
+ GPIO_GP_1_4, GPIO_GP_1_5, GPIO_GP_1_6, GPIO_GP_1_7,
+ GPIO_GP_1_8, GPIO_GP_1_9, GPIO_GP_1_10, GPIO_GP_1_11,
+ GPIO_GP_1_12, GPIO_GP_1_13, GPIO_GP_1_14, GPIO_GP_1_15,
+ GPIO_GP_1_16, GPIO_GP_1_17, GPIO_GP_1_18, GPIO_GP_1_19,
+ GPIO_GP_1_20, GPIO_GP_1_21, GPIO_GP_1_22, GPIO_GP_1_23,
+ GPIO_GP_1_24, GPIO_GP_1_25,
+
+ GPIO_GP_2_0, GPIO_GP_2_1, GPIO_GP_2_2, GPIO_GP_2_3,
+ GPIO_GP_2_4, GPIO_GP_2_5, GPIO_GP_2_6, GPIO_GP_2_7,
+ GPIO_GP_2_8, GPIO_GP_2_9, GPIO_GP_2_10, GPIO_GP_2_11,
+ GPIO_GP_2_12, GPIO_GP_2_13, GPIO_GP_2_14, GPIO_GP_2_15,
+ GPIO_GP_2_16, GPIO_GP_2_17, GPIO_GP_2_18, GPIO_GP_2_19,
+ GPIO_GP_2_20, GPIO_GP_2_21, GPIO_GP_2_22, GPIO_GP_2_23,
+ GPIO_GP_2_24, GPIO_GP_2_25, GPIO_GP_2_26, GPIO_GP_2_27,
+ GPIO_GP_2_28, GPIO_GP_2_29, GPIO_GP_2_30, GPIO_GP_2_31,
+
+ GPIO_GP_3_0, GPIO_GP_3_1, GPIO_GP_3_2, GPIO_GP_3_3,
+ GPIO_GP_3_4, GPIO_GP_3_5, GPIO_GP_3_6, GPIO_GP_3_7,
+ GPIO_GP_3_8, GPIO_GP_3_9, GPIO_GP_3_10, GPIO_GP_3_11,
+ GPIO_GP_3_12, GPIO_GP_3_13, GPIO_GP_3_14, GPIO_GP_3_15,
+ GPIO_GP_3_16, GPIO_GP_3_17, GPIO_GP_3_18, GPIO_GP_3_19,
+ GPIO_GP_3_20, GPIO_GP_3_21, GPIO_GP_3_22, GPIO_GP_3_23,
+ GPIO_GP_3_24, GPIO_GP_3_25, GPIO_GP_3_26, GPIO_GP_3_27,
+ GPIO_GP_3_28, GPIO_GP_3_29, GPIO_GP_3_30, GPIO_GP_3_31,
+
+ GPIO_GP_4_0, GPIO_GP_4_1, GPIO_GP_4_2, GPIO_GP_4_3,
+ GPIO_GP_4_4, GPIO_GP_4_5, GPIO_GP_4_6, GPIO_GP_4_7,
+ GPIO_GP_4_8, GPIO_GP_4_9, GPIO_GP_4_10, GPIO_GP_4_11,
+ GPIO_GP_4_12, GPIO_GP_4_13, GPIO_GP_4_14, GPIO_GP_4_15,
+ GPIO_GP_4_16, GPIO_GP_4_17, GPIO_GP_4_18, GPIO_GP_4_19,
+ GPIO_GP_4_20, GPIO_GP_4_21, GPIO_GP_4_22, GPIO_GP_4_23,
+ GPIO_GP_4_24, GPIO_GP_4_25, GPIO_GP_4_26, GPIO_GP_4_27,
+ GPIO_GP_4_28, GPIO_GP_4_29, GPIO_GP_4_30, GPIO_GP_4_31,
+
+ GPIO_GP_5_0, GPIO_GP_5_1, GPIO_GP_5_2, GPIO_GP_5_3,
+ GPIO_GP_5_4, GPIO_GP_5_5, GPIO_GP_5_6, GPIO_GP_5_7,
+ GPIO_GP_5_8, GPIO_GP_5_9, GPIO_GP_5_10, GPIO_GP_5_11,
+ GPIO_GP_5_12, GPIO_GP_5_13, GPIO_GP_5_14, GPIO_GP_5_15,
+ GPIO_GP_5_16, GPIO_GP_5_17, GPIO_GP_5_18, GPIO_GP_5_19,
+ GPIO_GP_5_20, GPIO_GP_5_21, GPIO_GP_5_22, GPIO_GP_5_23,
+ GPIO_GP_5_24, GPIO_GP_5_25, GPIO_GP_5_26, GPIO_GP_5_27,
+
+ GPIO_GP_6_0, GPIO_GP_6_1, GPIO_GP_6_2, GPIO_GP_6_3,
+ GPIO_GP_6_4, GPIO_GP_6_5, GPIO_GP_6_6, GPIO_GP_6_7,
+ GPIO_GP_6_8, GPIO_GP_6_9, GPIO_GP_6_10, GPIO_GP_6_11,
+ GPIO_GP_6_12, GPIO_GP_6_13, GPIO_GP_6_14, GPIO_GP_6_15,
+ GPIO_GP_6_16, GPIO_GP_6_17, GPIO_GP_6_18, GPIO_GP_6_19,
+ GPIO_GP_6_20, GPIO_GP_6_21, GPIO_GP_6_22, GPIO_GP_6_23,
+ GPIO_GP_6_24, GPIO_GP_6_25,
+
+ GPIO_FN_A2, GPIO_FN_WE0_N, GPIO_FN_WE1_N, GPIO_FN_DACK0,
+ GPIO_FN_USB0_PWEN, GPIO_FN_USB0_OVC, GPIO_FN_USB1_PWEN,
+ GPIO_FN_USB1_OVC, GPIO_FN_SD0_CLK, GPIO_FN_SD0_CMD,
+ GPIO_FN_SD0_DATA0, GPIO_FN_SD0_DATA1, GPIO_FN_SD0_DATA2,
+ GPIO_FN_SD0_DATA3, GPIO_FN_SD0_CD, GPIO_FN_SD0_WP,
+ GPIO_FN_SD1_CLK, GPIO_FN_SD1_CMD, GPIO_FN_SD1_DATA0,
+ GPIO_FN_SD1_DATA1, GPIO_FN_SD1_DATA2, GPIO_FN_SD1_DATA3,
+
+ /*
+ * From IPSR0 to IPSR5 have been removed because they does not use.
+ */
+
+ /* IPSR6 */
+ GPIO_FN_DU0_EXVSYNC_DU0_VSYNC, GPIO_FN_QSTB_QHE, GPIO_FN_CC50_STATE28,
+ GPIO_FN_DU0_EXODDF_DU0_ODDF_DISP_CDE, GPIO_FN_QCPV_QDE,
+ GPIO_FN_CC50_STATE29, GPIO_FN_DU0_DISP, GPIO_FN_QPOLA,
+ GPIO_FN_CC50_STATE30, GPIO_FN_DU0_CDE, GPIO_FN_QPOLB,
+ GPIO_FN_CC50_STATE31, GPIO_FN_VI0_CLK, GPIO_FN_AVB_RX_CLK,
+ GPIO_FN_VI0_DATA0_VI0_B0, GPIO_FN_AVB_RX_DV, GPIO_FN_VI0_DATA1_VI0_B1,
+ GPIO_FN_AVB_RXD0, GPIO_FN_VI0_DATA2_VI0_B2, GPIO_FN_AVB_RXD1,
+ GPIO_FN_VI0_DATA3_VI0_B3, GPIO_FN_AVB_RXD2, GPIO_FN_VI0_DATA4_VI0_B4,
+ GPIO_FN_AVB_RXD3, GPIO_FN_VI0_DATA5_VI0_B5, GPIO_FN_AVB_RXD4,
+ GPIO_FN_VI0_DATA6_VI0_B6, GPIO_FN_AVB_RXD5, GPIO_FN_VI0_DATA7_VI0_B7,
+ GPIO_FN_AVB_RXD6, GPIO_FN_VI0_CLKENB, GPIO_FN_I2C3_SCL,
+ GPIO_FN_SCIFA5_RXD_C, GPIO_FN_IETX_C, GPIO_FN_AVB_RXD7,
+ GPIO_FN_VI0_FIELD, GPIO_FN_I2C3_SDA, GPIO_FN_SCIFA5_TXD_C,
+ GPIO_FN_IECLK_C, GPIO_FN_AVB_RX_ER, GPIO_FN_VI0_HSYNC_N,
+ GPIO_FN_SCIF0_RXD_B, GPIO_FN_I2C0_SCL_C, GPIO_FN_IERX_C,
+ GPIO_FN_AVB_COL, GPIO_FN_VI0_VSYNC_N, GPIO_FN_SCIF0_TXD_B,
+ GPIO_FN_I2C0_SDA_C, GPIO_FN_AUDIO_CLKOUT_B, GPIO_FN_AVB_TX_EN,
+ GPIO_FN_ETH_MDIO, GPIO_FN_VI0_G0, GPIO_FN_MSIOF2_RXD_B,
+ GPIO_FN_IIC0_SCL_D, GPIO_FN_AVB_TX_CLK, GPIO_FN_ADIDATA, GPIO_FN_AD_DI,
+
+ /* IPSR7 */
+ GPIO_FN_ETH_CRS_DV, GPIO_FN_VI0_G1, GPIO_FN_MSIOF2_TXD_B,
+ GPIO_FN_IIC0_SDA_D, GPIO_FN_AVB_TXD0, GPIO_FN_ADICS_SAMP, GPIO_FN_AD_DO,
+ GPIO_FN_ETH_RX_ER, GPIO_FN_VI0_G2, GPIO_FN_MSIOF2_SCK_B,
+ GPIO_FN_CAN0_RX_B, GPIO_FN_AVB_TXD1, GPIO_FN_ADICLK, GPIO_FN_AD_CLK,
+ GPIO_FN_ETH_RXD0, GPIO_FN_VI0_G3, GPIO_FN_MSIOF2_SYNC_B,
+ GPIO_FN_CAN0_TX_B, GPIO_FN_AVB_TXD2, GPIO_FN_ADICHS0, GPIO_FN_AD_NCS_N,
+ GPIO_FN_ETH_RXD1, GPIO_FN_VI0_G4, GPIO_FN_MSIOF2_SS1_B,
+ GPIO_FN_SCIF4_RXD_D, GPIO_FN_AVB_TXD3, GPIO_FN_ADICHS1,
+ GPIO_FN_ETH_LINK, GPIO_FN_VI0_G5, GPIO_FN_MSIOF2_SS2_B,
+ GPIO_FN_SCIF4_TXD_D, GPIO_FN_AVB_TXD4, GPIO_FN_ADICHS2,
+ GPIO_FN_ETH_REFCLK, GPIO_FN_VI0_G6, GPIO_FN_SCIF2_SCK_C,
+ GPIO_FN_AVB_TXD5, GPIO_FN_SSI_SCK5_B, GPIO_FN_ETH_TXD1, GPIO_FN_VI0_G7,
+ GPIO_FN_SCIF2_RXD_C, GPIO_FN_IIC1_SCL_D, GPIO_FN_AVB_TXD6,
+ GPIO_FN_SSI_WS5_B, GPIO_FN_ETH_TX_EN, GPIO_FN_VI0_R0,
+ GPIO_FN_SCIF2_TXD_C, GPIO_FN_IIC1_SDA_D, GPIO_FN_AVB_TXD7,
+ GPIO_FN_SSI_SDATA5_B, GPIO_FN_ETH_MAGIC, GPIO_FN_VI0_R1,
+ GPIO_FN_SCIF3_SCK_B, GPIO_FN_AVB_TX_ER, GPIO_FN_SSI_SCK6_B,
+ GPIO_FN_ETH_TXD0, GPIO_FN_VI0_R2, GPIO_FN_SCIF3_RXD_B,
+ GPIO_FN_I2C4_SCL_E, GPIO_FN_AVB_GTX_CLK, GPIO_FN_SSI_WS6_B,
+ GPIO_FN_DREQ0_N, GPIO_FN_SCIFB1_RXD,
+
+ /* IPSR8 */
+ GPIO_FN_ETH_MDC, GPIO_FN_VI0_R3, GPIO_FN_SCIF3_TXD_B,
+ GPIO_FN_I2C4_SDA_E, GPIO_FN_AVB_MDC, GPIO_FN_SSI_SDATA6_B,
+ GPIO_FN_HSCIF0_HRX, GPIO_FN_VI0_R4, GPIO_FN_I2C1_SCL_C,
+ GPIO_FN_AUDIO_CLKA_B, GPIO_FN_AVB_MDIO, GPIO_FN_SSI_SCK78_B,
+ GPIO_FN_HSCIF0_HTX, GPIO_FN_VI0_R5, GPIO_FN_I2C1_SDA_C,
+ GPIO_FN_AUDIO_CLKB_B, GPIO_FN_AVB_LINK, GPIO_FN_SSI_WS78_B,
+ GPIO_FN_HSCIF0_HCTS_N, GPIO_FN_VI0_R6, GPIO_FN_SCIF0_RXD_D,
+ GPIO_FN_I2C0_SCL_E, GPIO_FN_AVB_MAGIC, GPIO_FN_SSI_SDATA7_B,
+ GPIO_FN_HSCIF0_HRTS_N, GPIO_FN_VI0_R7, GPIO_FN_SCIF0_TXD_D,
+ GPIO_FN_I2C0_SDA_E, GPIO_FN_AVB_PHY_INT, GPIO_FN_SSI_SDATA8_B,
+ GPIO_FN_HSCIF0_HSCK, GPIO_FN_SCIF_CLK_B, GPIO_FN_AVB_CRS,
+ GPIO_FN_AUDIO_CLKC_B, GPIO_FN_I2C0_SCL, GPIO_FN_SCIF0_RXD_C,
+ GPIO_FN_PWM5, GPIO_FN_TCLK1_B, GPIO_FN_AVB_GTXREFCLK, GPIO_FN_CAN1_RX_D,
+ GPIO_FN_TPUTO0_B, GPIO_FN_I2C0_SDA, GPIO_FN_SCIF0_TXD_C, GPIO_FN_TPUTO0,
+ GPIO_FN_CAN_CLK, GPIO_FN_DVC_MUTE, GPIO_FN_CAN1_TX_D, GPIO_FN_I2C1_SCL,
+ GPIO_FN_SCIF4_RXD, GPIO_FN_PWM5_B, GPIO_FN_DU1_DR0, GPIO_FN_RIF1_SYNC_B,
+ GPIO_FN_TS_SDATA_D, GPIO_FN_TPUTO1_B, GPIO_FN_I2C1_SDA,
+ GPIO_FN_SCIF4_TXD, GPIO_FN_IRQ5, GPIO_FN_DU1_DR1, GPIO_FN_RIF1_CLK_B,
+ GPIO_FN_TS_SCK_D, GPIO_FN_BPFCLK_C, GPIO_FN_MSIOF0_RXD,
+ GPIO_FN_SCIF5_RXD, GPIO_FN_I2C2_SCL_C, GPIO_FN_DU1_DR2,
+ GPIO_FN_RIF1_D0_B, GPIO_FN_TS_SDEN_D, GPIO_FN_FMCLK_C, GPIO_FN_RDS_CLK,
+
+ /*
+ * From IPSR9 to IPSR10 have been removed because they does not use.
+ */
+
+ /* IPSR11 */
+ GPIO_FN_SSI_WS5, GPIO_FN_SCIFA3_RXD, GPIO_FN_I2C3_SCL_C,
+ GPIO_FN_DU1_DOTCLKOUT0, GPIO_FN_CAN_DEBUGOUT11, GPIO_FN_SSI_SDATA5,
+ GPIO_FN_SCIFA3_TXD, GPIO_FN_I2C3_SDA_C, GPIO_FN_DU1_DOTCLKOUT1,
+ GPIO_FN_CAN_DEBUGOUT12, GPIO_FN_SSI_SCK6, GPIO_FN_SCIFA1_SCK_B,
+ GPIO_FN_DU1_EXHSYNC_DU1_HSYNC, GPIO_FN_CAN_DEBUGOUT13, GPIO_FN_SSI_WS6,
+ GPIO_FN_SCIFA1_RXD_B, GPIO_FN_I2C4_SCL_C, GPIO_FN_DU1_EXVSYNC_DU1_VSYNC,
+ GPIO_FN_CAN_DEBUGOUT14, GPIO_FN_SSI_SDATA6, GPIO_FN_SCIFA1_TXD_B,
+ GPIO_FN_I2C4_SDA_C, GPIO_FN_DU1_EXODDF_DU1_ODDF_DISP_CDE,
+ GPIO_FN_CAN_DEBUGOUT15, GPIO_FN_SSI_SCK78, GPIO_FN_SCIFA2_SCK_B,
+ GPIO_FN_IIC0_SDA_C, GPIO_FN_DU1_DISP, GPIO_FN_SSI_WS78,
+ GPIO_FN_SCIFA2_RXD_B, GPIO_FN_IIC0_SCL_C, GPIO_FN_DU1_CDE,
+ GPIO_FN_SSI_SDATA7, GPIO_FN_SCIFA2_TXD_B, GPIO_FN_IRQ8,
+ GPIO_FN_AUDIO_CLKA_D, GPIO_FN_CAN_CLK_D, GPIO_FN_PCMOE_N,
+ GPIO_FN_SSI_SCK0129, GPIO_FN_MSIOF1_RXD_B, GPIO_FN_SCIF5_RXD_D,
+ GPIO_FN_ADIDATA_B, GPIO_FN_AD_DI_B, GPIO_FN_PCMWE_N, GPIO_FN_SSI_WS0129,
+ GPIO_FN_MSIOF1_TXD_B, GPIO_FN_SCIF5_TXD_D, GPIO_FN_ADICS_SAMP_B,
+ GPIO_FN_AD_DO_B, GPIO_FN_SSI_SDATA0, GPIO_FN_MSIOF1_SCK_B,
+ GPIO_FN_PWM0_B, GPIO_FN_ADICLK_B, GPIO_FN_AD_CLK_B,
+
+ /*
+ * From IPSR12 to IPSR13 have been removed because they does not use.
+ */
+};
+
+#endif /* __ASM_R8A7794_H__ */
diff --git a/arch/arm/include/asm/arch-rmobile/r8a7794.h b/arch/arm/include/asm/arch-rmobile/r8a7794.h
new file mode 100644
index 0000000..94276dd
--- /dev/null
+++ b/arch/arm/include/asm/arch-rmobile/r8a7794.h
@@ -0,0 +1,14 @@
+/*
+ * arch/arm/include/asm/arch-rmobile/r8a7794.h
+ *
+ * Copyright (C) 2014 Renesas Electronics Corporation
+ *
+ * SPDX-License-Identifier: GPL-2.0
+*/
+
+#ifndef __ASM_ARCH_R8A7794_H
+#define __ASM_ARCH_R8A7794_H
+
+#include "rcar-base.h"
+
+#endif /* __ASM_ARCH_R8A7794_H */
diff --git a/arch/arm/include/asm/arch-rmobile/rcar-base.h b/arch/arm/include/asm/arch-rmobile/rcar-base.h
index 41240f3..027e9b1 100644
--- a/arch/arm/include/asm/arch-rmobile/rcar-base.h
+++ b/arch/arm/include/asm/arch-rmobile/rcar-base.h
@@ -10,7 +10,7 @@
#define __ASM_ARCH_RCAR_BASE_H
/*
- * R-Car (R8A7790/R8A7791) I/O Addresses
+ * R-Car (R8A7790/R8A7791/R8A7794) I/O Addresses
*/
#define RWDT_BASE 0xE6020000
#define SWDT_BASE 0xE6030000
@@ -116,7 +116,7 @@
#define SYS_AXI_SAT1_BASE 0xFF8009C0
#define SYS_AXI_SDM0_BASE 0xFF800A00
#define SYS_AXI_SDM1_BASE 0xFF800A40
-#define SYS_AXI_TRAB_BASE 0xFF800B00
+#define SYS_AXI_TRAB_BASE 0xFF800B00 /* SYS_AXI_TRKF_BASE in R*A7794 */
#define SYS_AXI_UDM0_BASE 0xFF800B80
#define SYS_AXI_UDM1_BASE 0xFF800BC0
diff --git a/arch/arm/include/asm/arch-rmobile/rmobile.h b/arch/arm/include/asm/arch-rmobile/rmobile.h
index ebddd7a..2cc38e1 100644
--- a/arch/arm/include/asm/arch-rmobile/rmobile.h
+++ b/arch/arm/include/asm/arch-rmobile/rmobile.h
@@ -10,6 +10,8 @@
#include <asm/arch/r8a7790.h>
#elif defined(CONFIG_R8A7791)
#include <asm/arch/r8a7791.h>
+#elif defined(CONFIG_R8A7794)
+#include <asm/arch/r8a7794.h>
#else
#error "SOC Name not defined"
#endif
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/gpio.h b/arch/arm/include/asm/arch-sunxi/gpio.h
index 892479c..f7f3d8c 100644
--- a/arch/arm/include/asm/arch-sunxi/gpio.h
+++ b/arch/arm/include/asm/arch-sunxi/gpio.h
@@ -143,5 +143,7 @@ int sunxi_gpio_set_cfgpin(u32 pin, u32 val);
int sunxi_gpio_get_cfgpin(u32 pin);
int sunxi_gpio_set_drv(u32 pin, u32 val);
int sunxi_gpio_set_pull(u32 pin, u32 val);
+int sunxi_name_to_gpio(const char *name);
+#define name_to_gpio(name) sunxi_name_to_gpio(name)
#endif /* _SUNXI_GPIO_H */
diff --git a/arch/arm/include/asm/arch-sunxi/i2c.h b/arch/arm/include/asm/arch-sunxi/i2c.h
new file mode 100644
index 0000000..dc5406b
--- /dev/null
+++ b/arch/arm/include/asm/arch-sunxi/i2c.h
@@ -0,0 +1,15 @@
+/*
+ * Copyright 2014 - Hans de Goede <hdegoede@redhat.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+#ifndef _SUNXI_I2C_H_
+#define _SUNXI_I2C_H_
+
+#include <asm/arch/cpu.h>
+
+#define CONFIG_I2C_MVTWSI_BASE SUNXI_TWI0_BASE
+/* This is abp0-clk on sun4i/5i/7i / abp1-clk on sun6i/sun8i which is 24MHz */
+#define CONFIG_SYS_TCLK 24000000
+
+#endif
diff --git a/arch/arm/include/asm/arch-sunxi/timer.h b/arch/arm/include/asm/arch-sunxi/timer.h
index 6aacfd7..58e14fd 100644
--- a/arch/arm/include/asm/arch-sunxi/timer.h
+++ b/arch/arm/include/asm/arch-sunxi/timer.h
@@ -11,6 +11,11 @@
#ifndef _SUNXI_TIMER_H_
#define _SUNXI_TIMER_H_
+#define WDT_CTRL_RESTART (0x1 << 0)
+#define WDT_CTRL_KEY (0x0a57 << 1)
+#define WDT_MODE_EN (0x1 << 0)
+#define WDT_MODE_RESET_EN (0x1 << 1)
+
#ifndef __ASSEMBLY__
#include <linux/types.h>
diff --git a/arch/arm/include/asm/armv7.h b/arch/arm/include/asm/armv7.h
index 395444e..323f282 100644
--- a/arch/arm/include/asm/armv7.h
+++ b/arch/arm/include/asm/armv7.h
@@ -78,13 +78,18 @@ void v7_outer_cache_inval_range(u32 start, u32 end);
#if defined(CONFIG_ARMV7_NONSEC) || defined(CONFIG_ARMV7_VIRT)
-int armv7_switch_nonsec(void);
-int armv7_switch_hyp(void);
+int armv7_init_nonsec(void);
+int armv7_update_dt(void *fdt);
/* defined in assembly file */
unsigned int _nonsec_init(void);
+void _do_nonsec_entry(void *target_pc, unsigned long r0,
+ unsigned long r1, unsigned long r2);
void _smp_pen(void);
-void _switch_to_hyp(void);
+
+extern char __secure_start[];
+extern char __secure_end[];
+
#endif /* CONFIG_ARMV7_NONSEC || CONFIG_ARMV7_VIRT */
#endif /* ! __ASSEMBLY__ */
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/omap_common.h b/arch/arm/include/asm/omap_common.h
index d1344ee..1838234 100644
--- a/arch/arm/include/asm/omap_common.h
+++ b/arch/arm/include/asm/omap_common.h
@@ -595,6 +595,14 @@ static inline u32 omap_revision(void)
return *omap_si_rev;
}
+#define OMAP44xx 0x44000000
+
+static inline u8 is_omap44xx(void)
+{
+ extern u32 *const omap_si_rev;
+ return (*omap_si_rev & 0xFF000000) == OMAP44xx;
+};
+
#define OMAP54xx 0x54000000
static inline u8 is_omap54xx(void)
diff --git a/arch/arm/include/asm/proc-armv/ptrace.h b/arch/arm/include/asm/proc-armv/ptrace.h
index 21aef58..71df5a9 100644
--- a/arch/arm/include/asm/proc-armv/ptrace.h
+++ b/arch/arm/include/asm/proc-armv/ptrace.h
@@ -38,12 +38,14 @@ struct pt_regs {
#define IRQ_MODE 0x12
#define SVC_MODE 0x13
#define ABT_MODE 0x17
+#define HYP_MODE 0x1a
#define UND_MODE 0x1b
#define SYSTEM_MODE 0x1f
#define MODE_MASK 0x1f
#define T_BIT 0x20
#define F_BIT 0x40
#define I_BIT 0x80
+#define A_BIT 0x100
#define CC_V_BIT (1 << 28)
#define CC_C_BIT (1 << 29)
#define CC_Z_BIT (1 << 30)
diff --git a/arch/arm/include/asm/psci.h b/arch/arm/include/asm/psci.h
new file mode 100644
index 0000000..704b4b0
--- /dev/null
+++ b/arch/arm/include/asm/psci.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2013 - ARM Ltd
+ * Author: Marc Zyngier <marc.zyngier@arm.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/>.
+ */
+
+#ifndef __ARM_PSCI_H__
+#define __ARM_PSCI_H__
+
+/* PSCI interface */
+#define ARM_PSCI_FN_BASE 0x95c1ba5e
+#define ARM_PSCI_FN(n) (ARM_PSCI_FN_BASE + (n))
+
+#define ARM_PSCI_FN_CPU_SUSPEND ARM_PSCI_FN(0)
+#define ARM_PSCI_FN_CPU_OFF ARM_PSCI_FN(1)
+#define ARM_PSCI_FN_CPU_ON ARM_PSCI_FN(2)
+#define ARM_PSCI_FN_MIGRATE ARM_PSCI_FN(3)
+
+#define ARM_PSCI_RET_SUCCESS 0
+#define ARM_PSCI_RET_NI (-1)
+#define ARM_PSCI_RET_INVAL (-2)
+#define ARM_PSCI_RET_DENIED (-3)
+
+#endif /* __ARM_PSCI_H__ */
diff --git a/arch/arm/include/asm/secure.h b/arch/arm/include/asm/secure.h
new file mode 100644
index 0000000..effdb18
--- /dev/null
+++ b/arch/arm/include/asm/secure.h
@@ -0,0 +1,26 @@
+#ifndef __ASM_SECURE_H
+#define __ASM_SECURE_H
+
+#include <config.h>
+
+#ifdef CONFIG_ARMV7_SECURE_BASE
+/*
+ * Warning, horror ahead.
+ *
+ * The target code lives in our "secure ram", but u-boot doesn't know
+ * that, and has blindly added reloc_off to every relocation
+ * entry. Gahh. Do the opposite conversion. This hack also prevents
+ * GCC from generating code veeners, which u-boot doesn't relocate at
+ * all...
+ */
+#define secure_ram_addr(_fn) ({ \
+ DECLARE_GLOBAL_DATA_PTR; \
+ void *__fn = _fn; \
+ typeof(_fn) *__tmp = (__fn - gd->reloc_off); \
+ __tmp; \
+ })
+#else
+#define secure_ram_addr(_fn) (_fn)
+#endif
+
+#endif
diff --git a/arch/arm/lib/bootm-fdt.c b/arch/arm/lib/bootm-fdt.c
index e40691d..d4f1578 100644
--- a/arch/arm/lib/bootm-fdt.c
+++ b/arch/arm/lib/bootm-fdt.c
@@ -17,13 +17,14 @@
#include <common.h>
#include <fdt_support.h>
+#include <asm/armv7.h>
DECLARE_GLOBAL_DATA_PTR;
-int arch_fixup_memory_node(void *blob)
+int arch_fixup_fdt(void *blob)
{
bd_t *bd = gd->bd;
- int bank;
+ int bank, ret;
u64 start[CONFIG_NR_DRAM_BANKS];
u64 size[CONFIG_NR_DRAM_BANKS];
@@ -32,5 +33,12 @@ int arch_fixup_memory_node(void *blob)
size[bank] = bd->bi_dram[bank].size;
}
- return fdt_fixup_memory_banks(blob, start, size, CONFIG_NR_DRAM_BANKS);
+ ret = fdt_fixup_memory_banks(blob, start, size, CONFIG_NR_DRAM_BANKS);
+#if defined(CONFIG_ARMV7_NONSEC) || defined(CONFIG_ARMV7_VIRT)
+ if (ret)
+ return ret;
+
+ ret = armv7_update_dt(blob);
+#endif
+ return ret;
}
diff --git a/arch/arm/lib/bootm.c b/arch/arm/lib/bootm.c
index 47ee070..178e8fb 100644
--- a/arch/arm/lib/bootm.c
+++ b/arch/arm/lib/bootm.c
@@ -20,6 +20,7 @@
#include <libfdt.h>
#include <fdt_support.h>
#include <asm/bootm.h>
+#include <asm/secure.h>
#include <linux/compiler.h>
#if defined(CONFIG_ARMV7_NONSEC) || defined(CONFIG_ARMV7_VIRT)
@@ -184,27 +185,17 @@ static void setup_end_tag(bd_t *bd)
__weak void setup_board_tags(struct tag **in_params) {}
+#ifdef CONFIG_ARM64
static void do_nonsec_virt_switch(void)
{
-#if defined(CONFIG_ARMV7_NONSEC) || defined(CONFIG_ARMV7_VIRT)
- if (armv7_switch_nonsec() == 0)
-#ifdef CONFIG_ARMV7_VIRT
- if (armv7_switch_hyp() == 0)
- debug("entered HYP mode\n");
-#else
- debug("entered non-secure state\n");
-#endif
-#endif
-
-#ifdef CONFIG_ARM64
smp_kick_all_cpus();
flush_dcache_all(); /* flush cache before swtiching to EL2 */
armv8_switch_to_el2();
#ifdef CONFIG_ARMV8_SWITCH_TO_EL1
armv8_switch_to_el1();
#endif
-#endif
}
+#endif
/* Subcommand: PREP */
static void boot_prep_linux(bootm_headers_t *images)
@@ -242,7 +233,6 @@ static void boot_prep_linux(bootm_headers_t *images)
printf("FDT and ATAGS support not compiled in - hanging\n");
hang();
}
- do_nonsec_virt_switch();
}
/* Subcommand: GO */
@@ -260,8 +250,10 @@ static void boot_jump_linux(bootm_headers_t *images, int flag)
announce_and_cleanup(fake);
- if (!fake)
+ if (!fake) {
+ do_nonsec_virt_switch();
kernel_entry(images->ft_addr);
+ }
#else
unsigned long machid = gd->bd->bi_arch_number;
char *s;
@@ -287,9 +279,16 @@ static void boot_jump_linux(bootm_headers_t *images, int flag)
else
r2 = gd->bd->bi_boot_params;
- if (!fake)
+ if (!fake) {
+#if defined(CONFIG_ARMV7_NONSEC) || defined(CONFIG_ARMV7_VIRT)
+ armv7_init_nonsec();
+ secure_ram_addr(_do_nonsec_entry)(kernel_entry,
+ 0, machid, r2);
+#else
kernel_entry(0, machid, r2);
#endif
+ }
+#endif
}
/* Main Entry point for arm bootm implementation
@@ -360,7 +359,7 @@ void boot_prep_vxworks(bootm_headers_t *images)
if (images->ft_addr) {
off = fdt_path_offset(images->ft_addr, "/memory");
if (off < 0) {
- if (arch_fixup_memory_node(images->ft_addr))
+ if (arch_fixup_fdt(images->ft_addr))
puts("## WARNING: fixup memory failed!\n");
}
}
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)
diff --git a/arch/arm/lib/interrupts.c b/arch/arm/lib/interrupts.c
index 758b013..f6b7c03 100644
--- a/arch/arm/lib/interrupts.c
+++ b/arch/arm/lib/interrupts.c
@@ -103,7 +103,7 @@ void show_regs (struct pt_regs *regs)
"UK12_26", "UK13_26", "UK14_26", "UK15_26",
"USER_32", "FIQ_32", "IRQ_32", "SVC_32",
"UK4_32", "UK5_32", "UK6_32", "ABT_32",
- "UK8_32", "UK9_32", "UK10_32", "UND_32",
+ "UK8_32", "UK9_32", "HYP_32", "UND_32",
"UK12_32", "UK13_32", "UK14_32", "SYS_32",
};
diff --git a/arch/arm/lib/sections.c b/arch/arm/lib/sections.c
index 5b30bcb..a1205c3 100644
--- a/arch/arm/lib/sections.c
+++ b/arch/arm/lib/sections.c
@@ -25,4 +25,6 @@ char __image_copy_start[0] __attribute__((section(".__image_copy_start")));
char __image_copy_end[0] __attribute__((section(".__image_copy_end")));
char __rel_dyn_start[0] __attribute__((section(".__rel_dyn_start")));
char __rel_dyn_end[0] __attribute__((section(".__rel_dyn_end")));
+char __secure_start[0] __attribute__((section(".__secure_start")));
+char __secure_end[0] __attribute__((section(".__secure_end")));
char _end[0] __attribute__((section(".__end")));
diff --git a/arch/avr32/Kconfig b/arch/avr32/Kconfig
new file mode 100644
index 0000000..46337ae
--- /dev/null
+++ b/arch/avr32/Kconfig
@@ -0,0 +1,51 @@
+menu "AVR32 architecture"
+ depends on AVR32
+
+config SYS_ARCH
+ string
+ default "avr32"
+
+choice
+ prompt "Target select"
+
+config TARGET_ATNGW100
+ bool "Support atngw100"
+
+config TARGET_ATNGW100MKII
+ bool "Support atngw100mkii"
+
+config TARGET_ATSTK1002
+ bool "Support atstk1002"
+
+config TARGET_ATSTK1003
+ bool "Support atstk1003"
+
+config TARGET_ATSTK1004
+ bool "Support atstk1004"
+
+config TARGET_ATSTK1006
+ bool "Support atstk1006"
+
+config TARGET_FAVR_32_EZKIT
+ bool "Support favr-32-ezkit"
+
+config TARGET_GRASSHOPPER
+ bool "Support grasshopper"
+
+config TARGET_MIMC200
+ bool "Support mimc200"
+
+config TARGET_HAMMERHEAD
+ bool "Support hammerhead"
+
+endchoice
+
+source "board/atmel/atngw100/Kconfig"
+source "board/atmel/atngw100mkii/Kconfig"
+source "board/atmel/atstk1000/Kconfig"
+source "board/earthlcd/favr-32-ezkit/Kconfig"
+source "board/in-circuit/grasshopper/Kconfig"
+source "board/mimc/mimc200/Kconfig"
+source "board/miromico/hammerhead/Kconfig"
+
+endmenu
diff --git a/arch/avr32/config.mk b/arch/avr32/config.mk
index 28a371c..469185e 100644
--- a/arch/avr32/config.mk
+++ b/arch/avr32/config.mk
@@ -9,7 +9,6 @@ ifeq ($(CROSS_COMPILE),)
CROSS_COMPILE := avr32-linux-
endif
-PLATFORM_CPPFLAGS += -DCONFIG_AVR32
CONFIG_STANDALONE_LOAD_ADDR ?= 0x00000000
PLATFORM_RELFLAGS += -ffixed-r5 -fPIC -mno-init-got -mrelax
diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig
new file mode 100644
index 0000000..bb8a133
--- /dev/null
+++ b/arch/blackfin/Kconfig
@@ -0,0 +1,150 @@
+menu "Blackfin architecture"
+ depends on BLACKFIN
+
+config SYS_ARCH
+ string
+ default "blackfin"
+
+choice
+ prompt "Target select"
+
+config TARGET_BCT_BRETTL2
+ bool "Support bct-brettl2"
+
+config TARGET_BF506F_EZKIT
+ bool "Support bf506f-ezkit"
+
+config TARGET_BF518F_EZBRD
+ bool "Support bf518f-ezbrd"
+
+config TARGET_BF525_UCR2
+ bool "Support bf525-ucr2"
+
+config TARGET_BF526_EZBRD
+ bool "Support bf526-ezbrd"
+
+config TARGET_BF527_AD7160_EVAL
+ bool "Support bf527-ad7160-eval"
+
+config TARGET_BF527_EZKIT
+ bool "Support bf527-ezkit"
+
+config TARGET_BF527_SDP
+ bool "Support bf527-sdp"
+
+config TARGET_BF533_EZKIT
+ bool "Support bf533-ezkit"
+
+config TARGET_BF533_STAMP
+ bool "Support bf533-stamp"
+
+config TARGET_BF537_MINOTAUR
+ bool "Support bf537-minotaur"
+
+config TARGET_BF537_PNAV
+ bool "Support bf537-pnav"
+
+config TARGET_BF537_SRV1
+ bool "Support bf537-srv1"
+
+config TARGET_BF537_STAMP
+ bool "Support bf537-stamp"
+
+config TARGET_BF538F_EZKIT
+ bool "Support bf538f-ezkit"
+
+config TARGET_BF548_EZKIT
+ bool "Support bf548-ezkit"
+
+config TARGET_BF561_ACVILON
+ bool "Support bf561-acvilon"
+
+config TARGET_BF561_EZKIT
+ bool "Support bf561-ezkit"
+
+config TARGET_BF609_EZKIT
+ bool "Support bf609-ezkit"
+
+config TARGET_BLACKSTAMP
+ bool "Support blackstamp"
+
+config TARGET_BLACKVME
+ bool "Support blackvme"
+
+config TARGET_BR4
+ bool "Support br4"
+
+config TARGET_CM_BF527
+ bool "Support cm-bf527"
+
+config TARGET_CM_BF533
+ bool "Support cm-bf533"
+
+config TARGET_CM_BF537E
+ bool "Support cm-bf537e"
+
+config TARGET_CM_BF537U
+ bool "Support cm-bf537u"
+
+config TARGET_CM_BF548
+ bool "Support cm-bf548"
+
+config TARGET_CM_BF561
+ bool "Support cm-bf561"
+
+config TARGET_DNP5370
+ bool "Support dnp5370"
+
+config TARGET_IBF_DSP561
+ bool "Support ibf-dsp561"
+
+config TARGET_IP04
+ bool "Support ip04"
+
+config TARGET_PR1
+ bool "Support pr1"
+
+config TARGET_TCM_BF518
+ bool "Support tcm-bf518"
+
+config TARGET_TCM_BF537
+ bool "Support tcm-bf537"
+
+endchoice
+
+source "board/bct-brettl2/Kconfig"
+source "board/bf506f-ezkit/Kconfig"
+source "board/bf518f-ezbrd/Kconfig"
+source "board/bf525-ucr2/Kconfig"
+source "board/bf526-ezbrd/Kconfig"
+source "board/bf527-ad7160-eval/Kconfig"
+source "board/bf527-ezkit/Kconfig"
+source "board/bf527-sdp/Kconfig"
+source "board/bf533-ezkit/Kconfig"
+source "board/bf533-stamp/Kconfig"
+source "board/bf537-minotaur/Kconfig"
+source "board/bf537-pnav/Kconfig"
+source "board/bf537-srv1/Kconfig"
+source "board/bf537-stamp/Kconfig"
+source "board/bf538f-ezkit/Kconfig"
+source "board/bf548-ezkit/Kconfig"
+source "board/bf561-acvilon/Kconfig"
+source "board/bf561-ezkit/Kconfig"
+source "board/bf609-ezkit/Kconfig"
+source "board/blackstamp/Kconfig"
+source "board/blackvme/Kconfig"
+source "board/br4/Kconfig"
+source "board/cm-bf527/Kconfig"
+source "board/cm-bf533/Kconfig"
+source "board/cm-bf537e/Kconfig"
+source "board/cm-bf537u/Kconfig"
+source "board/cm-bf548/Kconfig"
+source "board/cm-bf561/Kconfig"
+source "board/dnp5370/Kconfig"
+source "board/ibf-dsp561/Kconfig"
+source "board/ip04/Kconfig"
+source "board/pr1/Kconfig"
+source "board/tcm-bf518/Kconfig"
+source "board/tcm-bf537/Kconfig"
+
+endmenu
diff --git a/arch/blackfin/config.mk b/arch/blackfin/config.mk
index fcaa44f..7b17b75 100644
--- a/arch/blackfin/config.mk
+++ b/arch/blackfin/config.mk
@@ -21,7 +21,6 @@ endif
CONFIG_BFIN_BOOT_MODE := $(strip $(CONFIG_BFIN_BOOT_MODE:"%"=%))
PLATFORM_RELFLAGS += -ffixed-P3 -fomit-frame-pointer -mno-fdpic
-PLATFORM_CPPFLAGS += -DCONFIG_BLACKFIN
LDFLAGS_FINAL += --gc-sections
LDFLAGS += -m elf32bfin
diff --git a/arch/blackfin/cpu/jtag-console.c b/arch/blackfin/cpu/jtag-console.c
index 7cddb85..b8be318 100644
--- a/arch/blackfin/cpu/jtag-console.c
+++ b/arch/blackfin/cpu/jtag-console.c
@@ -112,11 +112,11 @@ static void jtag_send(const char *raw_str, uint32_t len)
if (cooked_str != raw_str)
free((char *)cooked_str);
}
-static void jtag_putc(const char c)
+static void jtag_putc(struct stdio_dev *dev, const char c)
{
jtag_send(&c, 1);
}
-static void jtag_puts(const char *s)
+static void jtag_puts(struct stdio_dev *dev, const char *s)
{
jtag_send(s, strlen(s));
}
@@ -133,7 +133,7 @@ static int jtag_tstc_dbg(void)
}
/* Higher layers want to know when any data is available */
-static int jtag_tstc(void)
+static int jtag_tstc(struct stdio_dev *dev)
{
return jtag_tstc_dbg() || leftovers_len;
}
@@ -142,7 +142,7 @@ static int jtag_tstc(void)
* [32bit length][actual data]
*/
static uint32_t leftovers;
-static int jtag_getc(void)
+static int jtag_getc(struct stdio_dev *dev)
{
int ret;
uint32_t emudat;
@@ -173,7 +173,7 @@ static int jtag_getc(void)
leftovers = emudat;
}
- return jtag_getc();
+ return jtag_getc(dev);
}
int drv_jtag_console_init(void)
diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig
new file mode 100644
index 0000000..6cda7db
--- /dev/null
+++ b/arch/m68k/Kconfig
@@ -0,0 +1,98 @@
+menu "M68000 architecture"
+ depends on M68K
+
+config SYS_ARCH
+ string
+ default "m68k"
+
+choice
+ prompt "Target select"
+
+config TARGET_M52277EVB
+ bool "Support M52277EVB"
+
+config TARGET_M5235EVB
+ bool "Support M5235EVB"
+
+config TARGET_COBRA5272
+ bool "Support cobra5272"
+
+config TARGET_EB_CPU5282
+ bool "Support eb_cpu5282"
+
+config TARGET_TASREG
+ bool "Support TASREG"
+
+config TARGET_M5208EVBE
+ bool "Support M5208EVBE"
+
+config TARGET_M5249EVB
+ bool "Support M5249EVB"
+
+config TARGET_M5253DEMO
+ bool "Support M5253DEMO"
+
+config TARGET_M5253EVBE
+ bool "Support M5253EVBE"
+
+config TARGET_M5272C3
+ bool "Support M5272C3"
+
+config TARGET_M5275EVB
+ bool "Support M5275EVB"
+
+config TARGET_M5282EVB
+ bool "Support M5282EVB"
+
+config TARGET_ASTRO_MCF5373L
+ bool "Support astro_mcf5373l"
+
+config TARGET_M53017EVB
+ bool "Support M53017EVB"
+
+config TARGET_M5329EVB
+ bool "Support M5329EVB"
+
+config TARGET_M5373EVB
+ bool "Support M5373EVB"
+
+config TARGET_M54418TWR
+ bool "Support M54418TWR"
+
+config TARGET_M54451EVB
+ bool "Support M54451EVB"
+
+config TARGET_M54455EVB
+ bool "Support M54455EVB"
+
+config TARGET_M5475EVB
+ bool "Support M5475EVB"
+
+config TARGET_M5485EVB
+ bool "Support M5485EVB"
+
+endchoice
+
+source "board/BuS/eb_cpu5282/Kconfig"
+source "board/astro/mcf5373l/Kconfig"
+source "board/cobra5272/Kconfig"
+source "board/esd/tasreg/Kconfig"
+source "board/freescale/m5208evbe/Kconfig"
+source "board/freescale/m52277evb/Kconfig"
+source "board/freescale/m5235evb/Kconfig"
+source "board/freescale/m5249evb/Kconfig"
+source "board/freescale/m5253demo/Kconfig"
+source "board/freescale/m5253evbe/Kconfig"
+source "board/freescale/m5272c3/Kconfig"
+source "board/freescale/m5275evb/Kconfig"
+source "board/freescale/m5282evb/Kconfig"
+source "board/freescale/m53017evb/Kconfig"
+source "board/freescale/m5329evb/Kconfig"
+source "board/freescale/m5373evb/Kconfig"
+source "board/freescale/m54418twr/Kconfig"
+source "board/freescale/m54451evb/Kconfig"
+source "board/freescale/m54455evb/Kconfig"
+source "board/freescale/m547xevb/Kconfig"
+source "board/freescale/m548xevb/Kconfig"
+
+endmenu
diff --git a/arch/m68k/config.mk b/arch/m68k/config.mk
index 33b3d51..3b3a7e8 100644
--- a/arch/m68k/config.mk
+++ b/arch/m68k/config.mk
@@ -11,7 +11,7 @@ endif
CONFIG_STANDALONE_LOAD_ADDR ?= 0x20000
-PLATFORM_CPPFLAGS += -DCONFIG_M68K -D__M68K__
+PLATFORM_CPPFLAGS += -D__M68K__
PLATFORM_LDFLAGS += -n
PLATFORM_RELFLAGS += -ffunction-sections -fdata-sections
PLATFORM_RELFLAGS += -ffixed-d7 -msep-data
diff --git a/arch/m68k/cpu/mcf52x2/config.mk b/arch/m68k/cpu/mcf52x2/config.mk
index 34ad99e..f66000b 100644
--- a/arch/m68k/cpu/mcf52x2/config.mk
+++ b/arch/m68k/cpu/mcf52x2/config.mk
@@ -7,14 +7,14 @@
# SPDX-License-Identifier: GPL-2.0+
#
-cfg=$(shell grep configs $(objtree)/include/config.h | sed 's/.*<\(configs.*\)>/\1/')
-is5208:=$(shell grep CONFIG_M5208 $(srctree)/include/$(cfg))
-is5249:=$(shell grep CONFIG_M5249 $(srctree)/include/$(cfg))
-is5253:=$(shell grep CONFIG_M5253 $(srctree)/include/$(cfg))
-is5271:=$(shell grep CONFIG_M5271 $(srctree)/include/$(cfg))
-is5272:=$(shell grep CONFIG_M5272 $(srctree)/include/$(cfg))
-is5275:=$(shell grep CONFIG_M5275 $(srctree)/include/$(cfg))
-is5282:=$(shell grep CONFIG_M5282 $(srctree)/include/$(cfg))
+cfg=$(srctree)/include/configs/$(CONFIG_SYS_CONFIG_NAME:"%"=%).h
+is5208:=$(shell grep CONFIG_M5208 $(cfg))
+is5249:=$(shell grep CONFIG_M5249 $(cfg))
+is5253:=$(shell grep CONFIG_M5253 $(cfg))
+is5271:=$(shell grep CONFIG_M5271 $(cfg))
+is5272:=$(shell grep CONFIG_M5272 $(cfg))
+is5275:=$(shell grep CONFIG_M5275 $(cfg))
+is5282:=$(shell grep CONFIG_M5282 $(cfg))
ifneq (,$(findstring CONFIG_M5208,$(is5208)))
PLATFORM_CPPFLAGS += -mcpu=5208
diff --git a/arch/m68k/cpu/mcf532x/config.mk b/arch/m68k/cpu/mcf532x/config.mk
index af94354..2efb60f 100644
--- a/arch/m68k/cpu/mcf532x/config.mk
+++ b/arch/m68k/cpu/mcf532x/config.mk
@@ -7,9 +7,9 @@
# SPDX-License-Identifier: GPL-2.0+
#
-cfg=$(shell grep configs $(objtree)/include/config.h | sed 's/.*<\(configs.*\)>/\1/')
-is5301x:=$(shell grep CONFIG_MCF5301x $(srctree)/include/$(cfg))
-is532x:=$(shell grep CONFIG_MCF532x $(srctree)/include/$(cfg))
+cfg=$(srctree)/include/configs/$(CONFIG_SYS_CONFIG_NAME:"%"=%).h
+is5301x:=$(shell grep CONFIG_MCF5301x $(cfg))
+is532x:=$(shell grep CONFIG_MCF532x $(cfg))
ifneq (,$(findstring CONFIG_MCF5301x,$(is5301x)))
PLATFORM_CPPFLAGS += -mcpu=53015 -fPIC
diff --git a/arch/m68k/cpu/mcf5445x/config.mk b/arch/m68k/cpu/mcf5445x/config.mk
index 5fd0d4d..13f8a9f 100644
--- a/arch/m68k/cpu/mcf5445x/config.mk
+++ b/arch/m68k/cpu/mcf5445x/config.mk
@@ -9,8 +9,8 @@
# SPDX-License-Identifier: GPL-2.0+
#
-cfg=$(shell grep configs $(objtree)/include/config.h | sed 's/.*<\(configs.*\)>/\1/')
-is5441x:=$(shell grep CONFIG_MCF5441x $(srctree)/include/$(cfg))
+cfg=$(srctree)/include/configs/$(CONFIG_SYS_CONFIG_NAME:"%"=%).h
+is5441x:=$(shell grep CONFIG_MCF5441x $(cfg))
ifneq (,$(findstring CONFIG_MCF5441x,$(is5441x)))
PLATFORM_CPPFLAGS += -mcpu=54418 -fPIC
diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig
new file mode 100644
index 0000000..ddaa45f
--- /dev/null
+++ b/arch/microblaze/Kconfig
@@ -0,0 +1,18 @@
+menu "MicroBlaze architecture"
+ depends on MICROBLAZE
+
+config SYS_ARCH
+ string
+ default "microblaze"
+
+choice
+ prompt "Target select"
+
+config TARGET_MICROBLAZE_GENERIC
+ bool "Support microblaze-generic"
+
+endchoice
+
+source "board/xilinx/microblaze-generic/Kconfig"
+
+endmenu
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
new file mode 100644
index 0000000..5bf0df4
--- /dev/null
+++ b/arch/mips/Kconfig
@@ -0,0 +1,37 @@
+menu "MIPS architecture"
+ depends on MIPS
+
+config SYS_ARCH
+ string
+ default "mips"
+
+choice
+ prompt "Target select"
+
+config TARGET_QEMU_MIPS
+ bool "Support qemu-mips"
+
+config TARGET_MALTA
+ bool "Support malta"
+
+config TARGET_VCT
+ bool "Support vct"
+
+config TARGET_DBAU1X00
+ bool "Support dbau1x00"
+
+config TARGET_PB1X00
+ bool "Support pb1x00"
+
+config TARGET_QEMU_MIPS64
+ bool "Support qemu-mips64"
+
+endchoice
+
+source "board/dbau1x00/Kconfig"
+source "board/imgtec/malta/Kconfig"
+source "board/micronas/vct/Kconfig"
+source "board/pb1x00/Kconfig"
+source "board/qemu-mips/Kconfig"
+
+endmenu
diff --git a/arch/mips/config.mk b/arch/mips/config.mk
index f4a234a..a2d07af 100644
--- a/arch/mips/config.mk
+++ b/arch/mips/config.mk
@@ -25,7 +25,7 @@ endif
# Default to EB if no endianess is configured
ENDIANNESS ?= -EB
-PLATFORM_CPPFLAGS += -DCONFIG_MIPS -D__MIPS__
+PLATFORM_CPPFLAGS += -D__MIPS__
__HAVE_ARCH_GENERIC_BOARD := y
diff --git a/arch/nds32/Kconfig b/arch/nds32/Kconfig
new file mode 100644
index 0000000..743a8fe
--- /dev/null
+++ b/arch/nds32/Kconfig
@@ -0,0 +1,26 @@
+menu "NDS32 architecture"
+ depends on NDS32
+
+config SYS_ARCH
+ string
+ default "nds32"
+
+choice
+ prompt "Target select"
+
+config TARGET_ADP_AG101
+ bool "Support adp-ag101"
+
+config TARGET_ADP_AG101P
+ bool "Support adp-ag101p"
+
+config TARGET_ADP_AG102
+ bool "Support adp-ag102"
+
+endchoice
+
+source "board/AndesTech/adp-ag101/Kconfig"
+source "board/AndesTech/adp-ag101p/Kconfig"
+source "board/AndesTech/adp-ag102/Kconfig"
+
+endmenu
diff --git a/arch/nds32/config.mk b/arch/nds32/config.mk
index 1024852..5ac9f90 100644
--- a/arch/nds32/config.mk
+++ b/arch/nds32/config.mk
@@ -17,6 +17,6 @@ CONFIG_STANDALONE_LOAD_ADDR = 0x300000 \
PLATFORM_RELFLAGS += -fno-strict-aliasing -fno-common -mrelax
PLATFORM_RELFLAGS += -gdwarf-2
-PLATFORM_CPPFLAGS += -DCONFIG_NDS32 -D__nds32__ -G0 -ffixed-10 -fpie
+PLATFORM_CPPFLAGS += -D__nds32__ -G0 -ffixed-10 -fpie
LDFLAGS_u-boot = --gc-sections --relax
diff --git a/arch/nios2/Kconfig b/arch/nios2/Kconfig
new file mode 100644
index 0000000..b703646
--- /dev/null
+++ b/arch/nios2/Kconfig
@@ -0,0 +1,26 @@
+menu "Nios II architecture"
+ depends on NIOS2
+
+config SYS_ARCH
+ string
+ default "nios2"
+
+choice
+ prompt "Target select"
+
+config TARGET_NIOS2_GENERIC
+ bool "Support nios2-generic"
+
+config TARGET_PCI5441
+ bool "Support PCI5441"
+
+config TARGET_PK1C20
+ bool "Support PK1C20"
+
+endchoice
+
+source "board/altera/nios2-generic/Kconfig"
+source "board/psyent/pci5441/Kconfig"
+source "board/psyent/pk1c20/Kconfig"
+
+endmenu
diff --git a/arch/nios2/config.mk b/arch/nios2/config.mk
index 65a5a40..82bd887 100644
--- a/arch/nios2/config.mk
+++ b/arch/nios2/config.mk
@@ -12,7 +12,7 @@ endif
CONFIG_STANDALONE_LOAD_ADDR ?= 0x02000000
-PLATFORM_CPPFLAGS += -DCONFIG_NIOS2 -D__NIOS2__
+PLATFORM_CPPFLAGS += -D__NIOS2__
PLATFORM_CPPFLAGS += -G0
LDFLAGS_FINAL += --gc-sections
diff --git a/arch/openrisc/Kconfig b/arch/openrisc/Kconfig
new file mode 100644
index 0000000..cc54a2e
--- /dev/null
+++ b/arch/openrisc/Kconfig
@@ -0,0 +1,18 @@
+menu "OpenRISC architecture"
+ depends on OPENRISC
+
+config SYS_ARCH
+ string
+ default "openrisc"
+
+choice
+ prompt "Target select"
+
+config TARGET_OPENRISC_GENERIC
+ bool "Support openrisc-generic"
+
+endchoice
+
+source "board/openrisc/openrisc-generic/Kconfig"
+
+endmenu
diff --git a/arch/openrisc/config.mk b/arch/openrisc/config.mk
index 9902b9a..cd95f24 100644
--- a/arch/openrisc/config.mk
+++ b/arch/openrisc/config.mk
@@ -11,6 +11,6 @@ endif
# r10 used for global object pointer, already set in OR32 GCC but just to be
# clear
-PLATFORM_CPPFLAGS += -DCONFIG_OPENRISC -D__OR1K__ -ffixed-r10
+PLATFORM_CPPFLAGS += -D__OR1K__ -ffixed-r10
CONFIG_STANDALONE_LOAD_ADDR ?= 0x40000
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
new file mode 100644
index 0000000..3325af3
--- /dev/null
+++ b/arch/powerpc/Kconfig
@@ -0,0 +1,58 @@
+menu "PowerPC architecture"
+ depends on PPC
+
+config SYS_ARCH
+ string
+ default "powerpc"
+
+choice
+ prompt "CPU select"
+
+config 74xx_7xx
+ bool "74xx"
+
+config MPC512X
+ bool "MPC512X"
+
+config 5xx
+ bool "MPC5xx"
+
+config MPC5xxx
+ bool "MPC5xxx"
+
+config MPC824X
+ bool "MPC824X"
+
+config MPC8260
+ bool "MPC8260"
+
+config MPC83xx
+ bool "MPC83xx"
+
+config MPC85xx
+ bool "MPC85xx"
+
+config MPC86xx
+ bool "MPC86xx"
+
+config 8xx
+ bool "MPC8xx"
+
+config 4xx
+ bool "PPC4xx"
+
+endchoice
+
+source "arch/powerpc/cpu/74xx_7xx/Kconfig"
+source "arch/powerpc/cpu/mpc512x/Kconfig"
+source "arch/powerpc/cpu/mpc5xx/Kconfig"
+source "arch/powerpc/cpu/mpc5xxx/Kconfig"
+source "arch/powerpc/cpu/mpc824x/Kconfig"
+source "arch/powerpc/cpu/mpc8260/Kconfig"
+source "arch/powerpc/cpu/mpc83xx/Kconfig"
+source "arch/powerpc/cpu/mpc85xx/Kconfig"
+source "arch/powerpc/cpu/mpc86xx/Kconfig"
+source "arch/powerpc/cpu/mpc8xx/Kconfig"
+source "arch/powerpc/cpu/ppc4xx/Kconfig"
+
+endmenu
diff --git a/arch/powerpc/config.mk b/arch/powerpc/config.mk
index fb7096e..6329b6c 100644
--- a/arch/powerpc/config.mk
+++ b/arch/powerpc/config.mk
@@ -13,7 +13,7 @@ CONFIG_STANDALONE_LOAD_ADDR ?= 0x40000
LDFLAGS_FINAL += --gc-sections
PLATFORM_RELFLAGS += -fpic -mrelocatable -ffunction-sections -fdata-sections \
-meabi
-PLATFORM_CPPFLAGS += -DCONFIG_PPC -D__powerpc__ -ffixed-r2
+PLATFORM_CPPFLAGS += -D__powerpc__ -ffixed-r2
PLATFORM_LDFLAGS += -n
# Support generic board on PPC
diff --git a/arch/powerpc/cpu/74xx_7xx/Kconfig b/arch/powerpc/cpu/74xx_7xx/Kconfig
new file mode 100644
index 0000000..6ce464d
--- /dev/null
+++ b/arch/powerpc/cpu/74xx_7xx/Kconfig
@@ -0,0 +1,49 @@
+menu "74xx_7xx CPU"
+ depends on 74xx_7xx
+
+config SYS_CPU
+ string
+ default "74xx_7xx"
+
+choice
+ prompt "Target select"
+
+config TARGET_P3G4
+ bool "Support P3G4"
+
+config TARGET_ZUMA
+ bool "Support ZUMA"
+
+config TARGET_PPMC7XX
+ bool "Support ppmc7xx"
+
+config TARGET_ELPPC
+ bool "Support ELPPC"
+
+config TARGET_CPCI750
+ bool "Support CPCI750"
+
+config TARGET_MPC7448HPC2
+ bool "Support mpc7448hpc2"
+
+config TARGET_DB64360
+ bool "Support DB64360"
+
+config TARGET_DB64460
+ bool "Support DB64460"
+
+config TARGET_P3MX
+ bool "Support p3mx"
+
+endchoice
+
+source "board/Marvell/db64360/Kconfig"
+source "board/Marvell/db64460/Kconfig"
+source "board/eltec/elppc/Kconfig"
+source "board/esd/cpci750/Kconfig"
+source "board/evb64260/Kconfig"
+source "board/freescale/mpc7448hpc2/Kconfig"
+source "board/ppmc7xx/Kconfig"
+source "board/prodrive/p3mx/Kconfig"
+
+endmenu
diff --git a/arch/powerpc/cpu/74xx_7xx/config.mk b/arch/powerpc/cpu/74xx_7xx/config.mk
index 96812a0..4cd1a26 100644
--- a/arch/powerpc/cpu/74xx_7xx/config.mk
+++ b/arch/powerpc/cpu/74xx_7xx/config.mk
@@ -5,4 +5,4 @@
# SPDX-License-Identifier: GPL-2.0+
#
-PLATFORM_CPPFLAGS += -DCONFIG_74xx_7xx -mstring
+PLATFORM_CPPFLAGS += -mstring
diff --git a/arch/powerpc/cpu/mpc512x/Kconfig b/arch/powerpc/cpu/mpc512x/Kconfig
new file mode 100644
index 0000000..bfc4eae
--- /dev/null
+++ b/arch/powerpc/cpu/mpc512x/Kconfig
@@ -0,0 +1,34 @@
+menu "mpc512x CPU"
+ depends on MPC512X
+
+config SYS_CPU
+ string
+ default "mpc512x"
+
+choice
+ prompt "Target select"
+
+config TARGET_PDM360NG
+ bool "Support pdm360ng"
+
+config TARGET_ARIA
+ bool "Support aria"
+
+config TARGET_MECP5123
+ bool "Support mecp5123"
+
+config TARGET_MPC5121ADS
+ bool "Support mpc5121ads"
+
+config TARGET_AC14XX
+ bool "Support ac14xx"
+
+endchoice
+
+source "board/davedenx/aria/Kconfig"
+source "board/esd/mecp5123/Kconfig"
+source "board/freescale/mpc5121ads/Kconfig"
+source "board/ifm/ac14xx/Kconfig"
+source "board/pdm360ng/Kconfig"
+
+endmenu
diff --git a/arch/powerpc/cpu/mpc512x/config.mk b/arch/powerpc/cpu/mpc512x/config.mk
index 03759e6..5bf1b2a 100644
--- a/arch/powerpc/cpu/mpc512x/config.mk
+++ b/arch/powerpc/cpu/mpc512x/config.mk
@@ -4,4 +4,4 @@
# SPDX-License-Identifier: GPL-2.0+
#
-PLATFORM_CPPFLAGS += -DCONFIG_MPC512X -DCONFIG_E300 -msoft-float -mcpu=603e
+PLATFORM_CPPFLAGS += -DCONFIG_E300 -msoft-float -mcpu=603e
diff --git a/arch/powerpc/cpu/mpc512x/serial.c b/arch/powerpc/cpu/mpc512x/serial.c
index 42e0dc9..4105a28 100644
--- a/arch/powerpc/cpu/mpc512x/serial.c
+++ b/arch/powerpc/cpu/mpc512x/serial.c
@@ -384,7 +384,7 @@ struct stdio_dev *open_port(int num, int baudrate)
sprintf(env_val, "%d", baudrate);
setenv(env_var, env_val);
- if (port->start())
+ if (port->start(port))
return NULL;
set_bit(num, &initialized);
@@ -407,7 +407,7 @@ int close_port(int num)
if (!port)
return -1;
- ret = port->stop();
+ ret = port->stop(port);
clear_bit(num, &initialized);
return ret;
@@ -418,7 +418,7 @@ int write_port(struct stdio_dev *port, char *buf)
if (!port || !buf)
return -1;
- port->puts(buf);
+ port->puts(port, buf);
return 0;
}
@@ -433,8 +433,8 @@ int read_port(struct stdio_dev *port, char *buf, int size)
if (!size)
return 0;
- while (port->tstc()) {
- buf[cnt++] = port->getc();
+ while (port->tstc(port)) {
+ buf[cnt++] = port->getc(port);
if (cnt > size)
break;
}
diff --git a/arch/powerpc/cpu/mpc5xx/Kconfig b/arch/powerpc/cpu/mpc5xx/Kconfig
new file mode 100644
index 0000000..79579d7
--- /dev/null
+++ b/arch/powerpc/cpu/mpc5xx/Kconfig
@@ -0,0 +1,22 @@
+menu "mpc5xx CPU"
+ depends on 5xx
+
+config SYS_CPU
+ string
+ default "mpc5xx"
+
+choice
+ prompt "Target select"
+
+config TARGET_CMI_MPC5XX
+ bool "Support cmi_mpc5xx"
+
+config TARGET_PATI
+ bool "Support PATI"
+
+endchoice
+
+source "board/cmi/Kconfig"
+source "board/mpl/pati/Kconfig"
+
+endmenu
diff --git a/arch/powerpc/cpu/mpc5xx/config.mk b/arch/powerpc/cpu/mpc5xx/config.mk
index 31e2dc9..dd2ec37 100644
--- a/arch/powerpc/cpu/mpc5xx/config.mk
+++ b/arch/powerpc/cpu/mpc5xx/config.mk
@@ -5,4 +5,4 @@
# SPDX-License-Identifier: GPL-2.0+
#
-PLATFORM_CPPFLAGS += -DCONFIG_5xx -mpowerpc -msoft-float
+PLATFORM_CPPFLAGS += -mpowerpc -msoft-float
diff --git a/arch/powerpc/cpu/mpc5xxx/Kconfig b/arch/powerpc/cpu/mpc5xxx/Kconfig
new file mode 100644
index 0000000..b2f0bad
--- /dev/null
+++ b/arch/powerpc/cpu/mpc5xxx/Kconfig
@@ -0,0 +1,154 @@
+menu "mpc5xxx CPU"
+ depends on MPC5xxx
+
+config SYS_CPU
+ string
+ default "mpc5xxx"
+
+choice
+ prompt "Target select"
+
+config TARGET_A3M071
+ bool "Support a3m071"
+
+config TARGET_A4M072
+ bool "Support a4m072"
+
+config TARGET_BC3450
+ bool "Support BC3450"
+
+config TARGET_CANMB
+ bool "Support canmb"
+
+config TARGET_CM5200
+ bool "Support cm5200"
+
+config TARGET_GALAXY5200
+ bool "Support galaxy5200"
+
+config TARGET_ICECUBE
+ bool "Support IceCube"
+
+config TARGET_INKA4X0
+ bool "Support inka4x0"
+
+config TARGET_IPEK01
+ bool "Support ipek01"
+
+config TARGET_JUPITER
+ bool "Support jupiter"
+
+config TARGET_MCC200
+ bool "Support mcc200"
+
+config TARGET_MOTIONPRO
+ bool "Support motionpro"
+
+config TARGET_MUNICES
+ bool "Support munices"
+
+config TARGET_PM520
+ bool "Support PM520"
+
+config TARGET_TOTAL5200
+ bool "Support Total5200"
+
+config TARGET_V38B
+ bool "Support v38b"
+
+config TARGET_TOP5200
+ bool "Support TOP5200"
+
+config TARGET_CPCI5200
+ bool "Support cpci5200"
+
+config TARGET_MECP5200
+ bool "Support mecp5200"
+
+config TARGET_PF5200
+ bool "Support pf5200"
+
+config TARGET_O2D
+ bool "Support O2D"
+
+config TARGET_O2D300
+ bool "Support O2D300"
+
+config TARGET_O2DNT2
+ bool "Support O2DNT2"
+
+config TARGET_O2I
+ bool "Support O2I"
+
+config TARGET_O2MNT
+ bool "Support O2MNT"
+
+config TARGET_O3DNT
+ bool "Support O3DNT"
+
+config TARGET_DIGSY_MTC
+ bool "Support digsy_mtc"
+
+config TARGET_HMI1001
+ bool "Support hmi1001"
+
+config TARGET_MUCMC52
+ bool "Support mucmc52"
+
+config TARGET_UC101
+ bool "Support uc101"
+
+config TARGET_MVBC_P
+ bool "Support MVBC_P"
+
+config TARGET_MVSMR
+ bool "Support MVSMR"
+
+config TARGET_PCM030
+ bool "Support pcm030"
+
+config TARGET_AEV
+ bool "Support aev"
+
+config TARGET_CHARON
+ bool "Support charon"
+
+config TARGET_TB5200
+ bool "Support TB5200"
+
+config TARGET_TQM5200
+ bool "Support TQM5200"
+
+endchoice
+
+source "board/a3m071/Kconfig"
+source "board/a4m072/Kconfig"
+source "board/bc3450/Kconfig"
+source "board/canmb/Kconfig"
+source "board/cm5200/Kconfig"
+source "board/emk/top5200/Kconfig"
+source "board/esd/cpci5200/Kconfig"
+source "board/esd/mecp5200/Kconfig"
+source "board/esd/pf5200/Kconfig"
+source "board/galaxy5200/Kconfig"
+source "board/icecube/Kconfig"
+source "board/ifm/o2dnt2/Kconfig"
+source "board/inka4x0/Kconfig"
+source "board/intercontrol/digsy_mtc/Kconfig"
+source "board/ipek01/Kconfig"
+source "board/jupiter/Kconfig"
+source "board/manroland/hmi1001/Kconfig"
+source "board/manroland/mucmc52/Kconfig"
+source "board/manroland/uc101/Kconfig"
+source "board/matrix_vision/mvbc_p/Kconfig"
+source "board/matrix_vision/mvsmr/Kconfig"
+source "board/mcc200/Kconfig"
+source "board/motionpro/Kconfig"
+source "board/munices/Kconfig"
+source "board/phytec/pcm030/Kconfig"
+source "board/pm520/Kconfig"
+source "board/total5200/Kconfig"
+source "board/tqc/tqm5200/Kconfig"
+source "board/v38b/Kconfig"
+
+endmenu
diff --git a/arch/powerpc/cpu/mpc5xxx/config.mk b/arch/powerpc/cpu/mpc5xxx/config.mk
index 3384f6f..bcff214 100644
--- a/arch/powerpc/cpu/mpc5xxx/config.mk
+++ b/arch/powerpc/cpu/mpc5xxx/config.mk
@@ -5,5 +5,4 @@
# SPDX-License-Identifier: GPL-2.0+
#
-PLATFORM_CPPFLAGS += -DCONFIG_MPC5xxx \
- -mstring -mcpu=603e -mmultiple
+PLATFORM_CPPFLAGS += -mstring -mcpu=603e -mmultiple
diff --git a/arch/powerpc/cpu/mpc824x/Kconfig b/arch/powerpc/cpu/mpc824x/Kconfig
new file mode 100644
index 0000000..309833f
--- /dev/null
+++ b/arch/powerpc/cpu/mpc824x/Kconfig
@@ -0,0 +1,49 @@
+menu "mpc824x CPU"
+ depends on MPC824X
+
+config SYS_CPU
+ string
+ default "mpc824x"
+
+choice
+ prompt "Target select"
+
+config TARGET_A3000
+ bool "Support A3000"
+
+config TARGET_CPC45
+ bool "Support CPC45"
+
+config TARGET_CU824
+ bool "Support CU824"
+
+config TARGET_EXALION
+ bool "Support eXalion"
+
+config TARGET_MUSENKI
+ bool "Support MUSENKI"
+
+config TARGET_MVBLUE
+ bool "Support MVBLUE"
+
+config TARGET_SANDPOINT8240
+ bool "Support Sandpoint8240"
+
+config TARGET_SANDPOINT8245
+ bool "Support Sandpoint8245"
+
+config TARGET_UTX8245
+ bool "Support utx8245"
+
+endchoice
+
+source "board/a3000/Kconfig"
+source "board/cpc45/Kconfig"
+source "board/cu824/Kconfig"
+source "board/eXalion/Kconfig"
+source "board/musenki/Kconfig"
+source "board/mvblue/Kconfig"
+source "board/sandpoint/Kconfig"
+source "board/utx8245/Kconfig"
+
+endmenu
diff --git a/arch/powerpc/cpu/mpc824x/config.mk b/arch/powerpc/cpu/mpc824x/config.mk
index a224bc8..ecfb07e 100644
--- a/arch/powerpc/cpu/mpc824x/config.mk
+++ b/arch/powerpc/cpu/mpc824x/config.mk
@@ -5,4 +5,4 @@
# SPDX-License-Identifier: GPL-2.0+
#
-PLATFORM_CPPFLAGS += -DCONFIG_MPC824X -mstring -mcpu=603e -msoft-float
+PLATFORM_CPPFLAGS += -mstring -mcpu=603e -msoft-float
diff --git a/arch/powerpc/cpu/mpc8260/Kconfig b/arch/powerpc/cpu/mpc8260/Kconfig
new file mode 100644
index 0000000..1a8707d
--- /dev/null
+++ b/arch/powerpc/cpu/mpc8260/Kconfig
@@ -0,0 +1,94 @@
+menu "mpc8260 CPU"
+ depends on MPC8260
+
+config SYS_CPU
+ string
+ default "mpc8260"
+
+choice
+ prompt "Target select"
+
+config TARGET_ATC
+ bool "Support atc"
+
+config TARGET_COGENT_MPC8260
+ bool "Support cogent_mpc8260"
+
+config TARGET_CPU86
+ bool "Support CPU86"
+
+config TARGET_CPU87
+ bool "Support CPU87"
+
+config TARGET_EP8260
+ bool "Support ep8260"
+
+config TARGET_EP82XXM
+ bool "Support ep82xxm"
+
+config TARGET_GW8260
+ bool "Support gw8260"
+
+config TARGET_HYMOD
+ bool "Support hymod"
+
+config TARGET_IPHASE4539
+ bool "Support IPHASE4539"
+
+config TARGET_MUAS3001
+ bool "Support muas3001"
+
+config TARGET_PM826
+ bool "Support PM826"
+
+config TARGET_PM828
+ bool "Support PM828"
+
+config TARGET_PPMC8260
+ bool "Support ppmc8260"
+
+config TARGET_SACSNG
+ bool "Support sacsng"
+
+config TARGET_MPC8266ADS
+ bool "Support MPC8266ADS"
+
+config TARGET_VOVPN_GW
+ bool "Support VoVPN-GW"
+
+config TARGET_IDS8247
+ bool "Support IDS8247"
+
+config TARGET_KM82XX
+ bool "Support km82xx"
+
+config TARGET_TQM8260
+ bool "Support TQM8260"
+
+config TARGET_TQM8272
+ bool "Support TQM8272"
+
+endchoice
+
+source "board/atc/Kconfig"
+source "board/cogent/Kconfig"
+source "board/cpu86/Kconfig"
+source "board/cpu87/Kconfig"
+source "board/ep8260/Kconfig"
+source "board/ep82xxm/Kconfig"
+source "board/freescale/mpc8266ads/Kconfig"
+source "board/funkwerk/vovpn-gw/Kconfig"
+source "board/gw8260/Kconfig"
+source "board/hymod/Kconfig"
+source "board/ids/ids8247/Kconfig"
+source "board/iphase4539/Kconfig"
+source "board/keymile/km82xx/Kconfig"
+source "board/muas3001/Kconfig"
+source "board/pm826/Kconfig"
+source "board/pm828/Kconfig"
+source "board/ppmc8260/Kconfig"
+source "board/sacsng/Kconfig"
+source "board/tqc/tqm8260/Kconfig"
+source "board/tqc/tqm8272/Kconfig"
+
+endmenu
diff --git a/arch/powerpc/cpu/mpc8260/config.mk b/arch/powerpc/cpu/mpc8260/config.mk
index 59f152d..6a1b6e3 100644
--- a/arch/powerpc/cpu/mpc8260/config.mk
+++ b/arch/powerpc/cpu/mpc8260/config.mk
@@ -5,5 +5,5 @@
# SPDX-License-Identifier: GPL-2.0+
#
-PLATFORM_CPPFLAGS += -DCONFIG_MPC8260 -DCONFIG_CPM2 \
+PLATFORM_CPPFLAGS += -DCONFIG_CPM2 \
-mstring -mcpu=603e -mmultiple
diff --git a/arch/powerpc/cpu/mpc83xx/Kconfig b/arch/powerpc/cpu/mpc83xx/Kconfig
new file mode 100644
index 0000000..5fd3393
--- /dev/null
+++ b/arch/powerpc/cpu/mpc83xx/Kconfig
@@ -0,0 +1,100 @@
+menu "mpc83xx CPU"
+ depends on MPC83xx
+
+config SYS_CPU
+ string
+ default "mpc83xx"
+
+choice
+ prompt "Target select"
+
+config TARGET_MPC8308_P1M
+ bool "Support mpc8308_p1m"
+
+config TARGET_SBC8349
+ bool "Support sbc8349"
+
+config TARGET_VE8313
+ bool "Support ve8313"
+
+config TARGET_VME8349
+ bool "Support vme8349"
+
+config TARGET_MPC8308RDB
+ bool "Support MPC8308RDB"
+
+config TARGET_MPC8313ERDB
+ bool "Support MPC8313ERDB"
+
+config TARGET_MPC8315ERDB
+ bool "Support MPC8315ERDB"
+
+config TARGET_MPC8323ERDB
+ bool "Support MPC8323ERDB"
+
+config TARGET_MPC832XEMDS
+ bool "Support MPC832XEMDS"
+
+config TARGET_MPC8349EMDS
+ bool "Support MPC8349EMDS"
+
+config TARGET_MPC8349ITX
+ bool "Support MPC8349ITX"
+
+config TARGET_MPC8360EMDS
+ bool "Support MPC8360EMDS"
+
+config TARGET_MPC8360ERDK
+ bool "Support MPC8360ERDK"
+
+config TARGET_MPC837XEMDS
+ bool "Support MPC837XEMDS"
+
+config TARGET_MPC837XERDB
+ bool "Support MPC837XERDB"
+
+config TARGET_IDS8313
+ bool "Support ids8313"
+
+config TARGET_KM8360
+ bool "Support km8360"
+
+config TARGET_SUVD3
+ bool "Support suvd3"
+
+config TARGET_TUXX1
+ bool "Support tuxx1"
+
+config TARGET_MERGERBOX
+ bool "Support MERGERBOX"
+
+config TARGET_MVBLM7
+ bool "Support MVBLM7"
+
+config TARGET_TQM834X
+ bool "Support TQM834x"
+
+endchoice
+
+source "board/esd/vme8349/Kconfig"
+source "board/freescale/mpc8308rdb/Kconfig"
+source "board/freescale/mpc8313erdb/Kconfig"
+source "board/freescale/mpc8315erdb/Kconfig"
+source "board/freescale/mpc8323erdb/Kconfig"
+source "board/freescale/mpc832xemds/Kconfig"
+source "board/freescale/mpc8349emds/Kconfig"
+source "board/freescale/mpc8349itx/Kconfig"
+source "board/freescale/mpc8360emds/Kconfig"
+source "board/freescale/mpc8360erdk/Kconfig"
+source "board/freescale/mpc837xemds/Kconfig"
+source "board/freescale/mpc837xerdb/Kconfig"
+source "board/ids/ids8313/Kconfig"
+source "board/keymile/km83xx/Kconfig"
+source "board/matrix_vision/mergerbox/Kconfig"
+source "board/matrix_vision/mvblm7/Kconfig"
+source "board/mpc8308_p1m/Kconfig"
+source "board/sbc8349/Kconfig"
+source "board/tqc/tqm834x/Kconfig"
+source "board/ve8313/Kconfig"
+
+endmenu
diff --git a/arch/powerpc/cpu/mpc83xx/config.mk b/arch/powerpc/cpu/mpc83xx/config.mk
index dfce4d5..0c08350 100644
--- a/arch/powerpc/cpu/mpc83xx/config.mk
+++ b/arch/powerpc/cpu/mpc83xx/config.mk
@@ -4,4 +4,4 @@
# SPDX-License-Identifier: GPL-2.0+
#
-PLATFORM_CPPFLAGS += -DCONFIG_MPC83xx -DCONFIG_E300 -msoft-float
+PLATFORM_CPPFLAGS += -DCONFIG_E300 -msoft-float
diff --git a/arch/powerpc/cpu/mpc85xx/Kconfig b/arch/powerpc/cpu/mpc85xx/Kconfig
new file mode 100644
index 0000000..0f70380
--- /dev/null
+++ b/arch/powerpc/cpu/mpc85xx/Kconfig
@@ -0,0 +1,190 @@
+menu "mpc85xx CPU"
+ depends on MPC85xx
+
+config SYS_CPU
+ string
+ default "mpc85xx"
+
+choice
+ prompt "Target select"
+
+config TARGET_SBC8548
+ bool "Support sbc8548"
+
+config TARGET_SOCRATES
+ bool "Support socrates"
+
+config TARGET_HWW1U1A
+ bool "Support HWW1U1A"
+
+config TARGET_B4860QDS
+ bool "Support B4860QDS"
+
+config TARGET_BSC9131RDB
+ bool "Support BSC9131RDB"
+
+config TARGET_BSC9132QDS
+ bool "Support BSC9132QDS"
+
+config TARGET_C29XPCIE
+ bool "Support C29XPCIE"
+
+config TARGET_P3041DS
+ bool "Support P3041DS"
+
+config TARGET_P4080DS
+ bool "Support P4080DS"
+
+config TARGET_P5020DS
+ bool "Support P5020DS"
+
+config TARGET_P5040DS
+ bool "Support P5040DS"
+
+config TARGET_MPC8536DS
+ bool "Support MPC8536DS"
+
+config TARGET_MPC8540ADS
+ bool "Support MPC8540ADS"
+
+config TARGET_MPC8541CDS
+ bool "Support MPC8541CDS"
+
+config TARGET_MPC8544DS
+ bool "Support MPC8544DS"
+
+config TARGET_MPC8548CDS
+ bool "Support MPC8548CDS"
+
+config TARGET_MPC8555CDS
+ bool "Support MPC8555CDS"
+
+config TARGET_MPC8560ADS
+ bool "Support MPC8560ADS"
+
+config TARGET_MPC8568MDS
+ bool "Support MPC8568MDS"
+
+config TARGET_MPC8569MDS
+ bool "Support MPC8569MDS"
+
+config TARGET_MPC8572DS
+ bool "Support MPC8572DS"
+
+config TARGET_P1010RDB
+ bool "Support P1010RDB"
+
+config TARGET_P1022DS
+ bool "Support P1022DS"
+
+config TARGET_P1023RDB
+ bool "Support P1023RDB"
+
+config TARGET_P1_P2_RDB
+ bool "Support P1_P2_RDB"
+
+config TARGET_P1_P2_RDB_PC
+ bool "Support p1_p2_rdb_pc"
+
+config TARGET_P1_TWR
+ bool "Support p1_twr"
+
+config TARGET_P2020COME
+ bool "Support P2020COME"
+
+config TARGET_P2020DS
+ bool "Support P2020DS"
+
+config TARGET_P2041RDB
+ bool "Support P2041RDB"
+
+config TARGET_QEMU_PPCE500
+ bool "Support qemu-ppce500"
+
+config TARGET_T1040QDS
+ bool "Support T1040QDS"
+
+config TARGET_T104XRDB
+ bool "Support T104xRDB"
+
+config TARGET_T208XQDS
+ bool "Support T208xQDS"
+
+config TARGET_T208XRDB
+ bool "Support T208xRDB"
+
+config TARGET_T4240EMU
+ bool "Support T4240EMU"
+
+config TARGET_T4240QDS
+ bool "Support T4240QDS"
+
+config TARGET_T4240RDB
+ bool "Support T4240RDB"
+
+config TARGET_CONTROLCENTERD
+ bool "Support controlcenterd"
+
+config TARGET_KMP204X
+ bool "Support kmp204x"
+
+config TARGET_STXGP3
+ bool "Support stxgp3"
+
+config TARGET_STXSSA
+ bool "Support stxssa"
+
+config TARGET_XPEDITE520X
+ bool "Support xpedite520x"
+
+config TARGET_XPEDITE537X
+ bool "Support xpedite537x"
+
+config TARGET_XPEDITE550X
+ bool "Support xpedite550x"
+
+endchoice
+
+source "board/exmeritus/hww1u1a/Kconfig"
+source "board/freescale/b4860qds/Kconfig"
+source "board/freescale/bsc9131rdb/Kconfig"
+source "board/freescale/bsc9132qds/Kconfig"
+source "board/freescale/c29xpcie/Kconfig"
+source "board/freescale/corenet_ds/Kconfig"
+source "board/freescale/mpc8536ds/Kconfig"
+source "board/freescale/mpc8540ads/Kconfig"
+source "board/freescale/mpc8541cds/Kconfig"
+source "board/freescale/mpc8544ds/Kconfig"
+source "board/freescale/mpc8548cds/Kconfig"
+source "board/freescale/mpc8555cds/Kconfig"
+source "board/freescale/mpc8560ads/Kconfig"
+source "board/freescale/mpc8568mds/Kconfig"
+source "board/freescale/mpc8569mds/Kconfig"
+source "board/freescale/mpc8572ds/Kconfig"
+source "board/freescale/p1010rdb/Kconfig"
+source "board/freescale/p1022ds/Kconfig"
+source "board/freescale/p1023rdb/Kconfig"
+source "board/freescale/p1_p2_rdb/Kconfig"
+source "board/freescale/p1_p2_rdb_pc/Kconfig"
+source "board/freescale/p1_twr/Kconfig"
+source "board/freescale/p2020come/Kconfig"
+source "board/freescale/p2020ds/Kconfig"
+source "board/freescale/p2041rdb/Kconfig"
+source "board/freescale/qemu-ppce500/Kconfig"
+source "board/freescale/t1040qds/Kconfig"
+source "board/freescale/t104xrdb/Kconfig"
+source "board/freescale/t208xqds/Kconfig"
+source "board/freescale/t208xrdb/Kconfig"
+source "board/freescale/t4qds/Kconfig"
+source "board/freescale/t4rdb/Kconfig"
+source "board/gdsys/p1022/Kconfig"
+source "board/keymile/kmp204x/Kconfig"
+source "board/sbc8548/Kconfig"
+source "board/socrates/Kconfig"
+source "board/stx/stxgp3/Kconfig"
+source "board/stx/stxssa/Kconfig"
+source "board/xes/xpedite520x/Kconfig"
+source "board/xes/xpedite537x/Kconfig"
+source "board/xes/xpedite550x/Kconfig"
+
+endmenu
diff --git a/arch/powerpc/cpu/mpc85xx/config.mk b/arch/powerpc/cpu/mpc85xx/config.mk
index 1470f95..72c964c 100644
--- a/arch/powerpc/cpu/mpc85xx/config.mk
+++ b/arch/powerpc/cpu/mpc85xx/config.mk
@@ -5,7 +5,7 @@
# SPDX-License-Identifier: GPL-2.0+
#
-PLATFORM_CPPFLAGS += -DCONFIG_MPC85xx -Wa,-me500 -msoft-float -mno-string
+PLATFORM_CPPFLAGS += -Wa,-me500 -msoft-float -mno-string
# -mspe=yes is needed to have -mno-spe accepted by a buggy GCC;
# see "[PATCH,rs6000] make -mno-spe work as expected" on
diff --git a/arch/powerpc/cpu/mpc86xx/Kconfig b/arch/powerpc/cpu/mpc86xx/Kconfig
new file mode 100644
index 0000000..f0ff441
--- /dev/null
+++ b/arch/powerpc/cpu/mpc86xx/Kconfig
@@ -0,0 +1,30 @@
+menu "mpc86xx CPU"
+ depends on MPC86xx
+
+config SYS_CPU
+ string
+ default "mpc86xx"
+
+choice
+ prompt "Target select"
+
+config TARGET_SBC8641D
+ bool "Support sbc8641d"
+
+config TARGET_MPC8610HPCD
+ bool "Support MPC8610HPCD"
+
+config TARGET_MPC8641HPCN
+ bool "Support MPC8641HPCN"
+
+config TARGET_XPEDITE517X
+ bool "Support xpedite517x"
+
+endchoice
+
+source "board/freescale/mpc8610hpcd/Kconfig"
+source "board/freescale/mpc8641hpcn/Kconfig"
+source "board/sbc8641d/Kconfig"
+source "board/xes/xpedite517x/Kconfig"
+
+endmenu
diff --git a/arch/powerpc/cpu/mpc86xx/config.mk b/arch/powerpc/cpu/mpc86xx/config.mk
index 4c7235f..69a0b96 100644
--- a/arch/powerpc/cpu/mpc86xx/config.mk
+++ b/arch/powerpc/cpu/mpc86xx/config.mk
@@ -5,4 +5,4 @@
# SPDX-License-Identifier: GPL-2.0+
#
-PLATFORM_CPPFLAGS += -DCONFIG_MPC86xx -mstring -maltivec -mabi=altivec -msoft-float
+PLATFORM_CPPFLAGS += -mstring -maltivec -mabi=altivec -msoft-float
diff --git a/arch/powerpc/cpu/mpc8xx/Kconfig b/arch/powerpc/cpu/mpc8xx/Kconfig
new file mode 100644
index 0000000..35608a6
--- /dev/null
+++ b/arch/powerpc/cpu/mpc8xx/Kconfig
@@ -0,0 +1,160 @@
+menu "mpc8xx CPU"
+ depends on 8xx
+
+config SYS_CPU
+ string
+ default "mpc8xx"
+
+choice
+ prompt "Target select"
+
+config TARGET_COGENT_MPC8XX
+ bool "Support cogent_mpc8xx"
+
+config TARGET_ESTEEM192E
+ bool "Support ESTEEM192E"
+
+config TARGET_FLAGADM
+ bool "Support FLAGADM"
+
+config TARGET_GEN860T
+ bool "Support GEN860T"
+
+config TARGET_HERMES
+ bool "Support hermes"
+
+config TARGET_ICU862
+ bool "Support ICU862"
+
+config TARGET_IP860
+ bool "Support IP860"
+
+config TARGET_IVML24
+ bool "Support IVML24"
+
+config TARGET_IVMS8
+ bool "Support IVMS8"
+
+config TARGET_LWMON
+ bool "Support lwmon"
+
+config TARGET_NETVIA
+ bool "Support NETVIA"
+
+config TARGET_R360MPI
+ bool "Support R360MPI"
+
+config TARGET_RRVISION
+ bool "Support RRvision"
+
+config TARGET_SXNI855T
+ bool "Support SXNI855T"
+
+config TARGET_SPD823TS
+ bool "Support SPD823TS"
+
+config TARGET_SVM_SC8XX
+ bool "Support svm_sc8xx"
+
+config TARGET_MHPC
+ bool "Support MHPC"
+
+config TARGET_TOP860
+ bool "Support TOP860"
+
+config TARGET_KUP4K
+ bool "Support KUP4K"
+
+config TARGET_KUP4X
+ bool "Support KUP4X"
+
+config TARGET_ELPT860
+ bool "Support ELPT860"
+
+config TARGET_UC100
+ bool "Support uc100"
+
+config TARGET_STXXTC
+ bool "Support stxxtc"
+
+config TARGET_FPS850L
+ bool "Support FPS850L"
+
+config TARGET_FPS860L
+ bool "Support FPS860L"
+
+config TARGET_NSCU
+ bool "Support NSCU"
+
+config TARGET_SM850
+ bool "Support SM850"
+
+config TARGET_TK885D
+ bool "Support TK885D"
+
+config TARGET_TQM823L
+ bool "Support TQM823L"
+
+config TARGET_TQM823M
+ bool "Support TQM823M"
+
+config TARGET_TQM850L
+ bool "Support TQM850L"
+
+config TARGET_TQM850M
+ bool "Support TQM850M"
+
+config TARGET_TQM855L
+ bool "Support TQM855L"
+
+config TARGET_TQM855M
+ bool "Support TQM855M"
+
+config TARGET_TQM860L
+ bool "Support TQM860L"
+
+config TARGET_TQM860M
+ bool "Support TQM860M"
+
+config TARGET_TQM862L
+ bool "Support TQM862L"
+
+config TARGET_TQM862M
+ bool "Support TQM862M"
+
+config TARGET_TQM866M
+ bool "Support TQM866M"
+
+config TARGET_TQM885D
+ bool "Support TQM885D"
+
+config TARGET_VIRTLAB2
+ bool "Support virtlab2"
+
+endchoice
+
+source "board/LEOX/elpt860/Kconfig"
+source "board/RRvision/Kconfig"
+source "board/cogent/Kconfig"
+source "board/eltec/mhpc/Kconfig"
+source "board/emk/top860/Kconfig"
+source "board/esteem192e/Kconfig"
+source "board/flagadm/Kconfig"
+source "board/gen860t/Kconfig"
+source "board/hermes/Kconfig"
+source "board/icu862/Kconfig"
+source "board/ip860/Kconfig"
+source "board/ivm/Kconfig"
+source "board/kup/kup4k/Kconfig"
+source "board/kup/kup4x/Kconfig"
+source "board/lwmon/Kconfig"
+source "board/manroland/uc100/Kconfig"
+source "board/netvia/Kconfig"
+source "board/r360mpi/Kconfig"
+source "board/sixnet/Kconfig"
+source "board/spd8xx/Kconfig"
+source "board/stx/stxxtc/Kconfig"
+source "board/svm_sc8xx/Kconfig"
+source "board/tqc/tqm8xx/Kconfig"
+
+endmenu
diff --git a/arch/powerpc/cpu/mpc8xx/config.mk b/arch/powerpc/cpu/mpc8xx/config.mk
index ee2c883..485e43d 100644
--- a/arch/powerpc/cpu/mpc8xx/config.mk
+++ b/arch/powerpc/cpu/mpc8xx/config.mk
@@ -5,4 +5,4 @@
# SPDX-License-Identifier: GPL-2.0+
#
-PLATFORM_CPPFLAGS += -DCONFIG_8xx -mstring -mcpu=860 -msoft-float
+PLATFORM_CPPFLAGS += -mstring -mcpu=860 -msoft-float
diff --git a/arch/powerpc/cpu/mpc8xx/video.c b/arch/powerpc/cpu/mpc8xx/video.c
index 2fd5b11..9590bfd 100644
--- a/arch/powerpc/cpu/mpc8xx/video.c
+++ b/arch/powerpc/cpu/mpc8xx/video.c
@@ -948,7 +948,7 @@ static inline void console_newline (void)
}
}
-void video_putc (const char c)
+void video_putc(struct stdio_dev *dev, const char c)
{
if (!video_enable) {
serial_putc (c);
@@ -985,7 +985,7 @@ void video_putc (const char c)
}
}
-void video_puts (const char *s)
+void video_puts(struct stdio_dev *dev, const char *s)
{
int count = strlen (s);
@@ -994,7 +994,7 @@ void video_puts (const char *s)
serial_putc (*s++);
else
while (count--)
- video_putc (*s++);
+ video_putc(dev, *s++);
}
/************************************************************************/
diff --git a/arch/powerpc/cpu/ppc4xx/Kconfig b/arch/powerpc/cpu/ppc4xx/Kconfig
new file mode 100644
index 0000000..2d15dd1
--- /dev/null
+++ b/arch/powerpc/cpu/ppc4xx/Kconfig
@@ -0,0 +1,322 @@
+menu "ppc4xx CPU"
+ depends on 4xx
+
+config SYS_CPU
+ string
+ default "ppc4xx"
+
+choice
+ prompt "Target select"
+
+config TARGET_CSB272
+ bool "Support csb272"
+
+config TARGET_CSB472
+ bool "Support csb472"
+
+config TARGET_G2000
+ bool "Support G2000"
+
+config TARGET_JSE
+ bool "Support JSE"
+
+config TARGET_KORAT
+ bool "Support korat"
+
+config TARGET_LWMON5
+ bool "Support lwmon5"
+
+config TARGET_PCS440EP
+ bool "Support pcs440ep"
+
+config TARGET_SBC405
+ bool "Support sbc405"
+
+config TARGET_SC3
+ bool "Support sc3"
+
+config TARGET_T3CORP
+ bool "Support t3corp"
+
+config TARGET_W7OLMC
+ bool "Support W7OLMC"
+
+config TARGET_W7OLMG
+ bool "Support W7OLMG"
+
+config TARGET_ZEUS
+ bool "Support zeus"
+
+config TARGET_ACADIA
+ bool "Support acadia"
+
+config TARGET_BAMBOO
+ bool "Support bamboo"
+
+config TARGET_BLUESTONE
+ bool "Support bluestone"
+
+config TARGET_BUBINGA
+ bool "Support bubinga"
+
+config TARGET_CANYONLANDS
+ bool "Support canyonlands"
+
+config TARGET_EBONY
+ bool "Support ebony"
+
+config TARGET_KATMAI
+ bool "Support katmai"
+
+config TARGET_KILAUEA
+ bool "Support kilauea"
+
+config TARGET_LUAN
+ bool "Support luan"
+
+config TARGET_MAKALU
+ bool "Support makalu"
+
+config TARGET_OCOTEA
+ bool "Support ocotea"
+
+config TARGET_REDWOOD
+ bool "Support redwood"
+
+config TARGET_SEQUOIA
+ bool "Support sequoia"
+
+config TARGET_TAIHU
+ bool "Support taihu"
+
+config TARGET_TAISHAN
+ bool "Support taishan"
+
+config TARGET_WALNUT
+ bool "Support walnut"
+
+config TARGET_YOSEMITE
+ bool "Support yosemite"
+
+config TARGET_YUCCA
+ bool "Support yucca"
+
+config TARGET_FX12MM
+ bool "Support fx12mm"
+
+config TARGET_V5FX30TEVAL
+ bool "Support v5fx30teval"
+
+config TARGET_CRAYL1
+ bool "Support CRAYL1"
+
+config TARGET_CATCENTER
+ bool "Support CATcenter"
+
+config TARGET_PPCHAMELEONEVB
+ bool "Support PPChameleonEVB"
+
+config TARGET_APC405
+ bool "Support APC405"
+
+config TARGET_AR405
+ bool "Support AR405"
+
+config TARGET_ASH405
+ bool "Support ASH405"
+
+config TARGET_CMS700
+ bool "Support CMS700"
+
+config TARGET_CPCI2DP
+ bool "Support CPCI2DP"
+
+config TARGET_CPCI405
+ bool "Support CPCI405"
+
+config TARGET_CPCI4052
+ bool "Support CPCI4052"
+
+config TARGET_CPCI405AB
+ bool "Support CPCI405AB"
+
+config TARGET_CPCI405DT
+ bool "Support CPCI405DT"
+
+config TARGET_CPCIISER4
+ bool "Support CPCIISER4"
+
+config TARGET_DP405
+ bool "Support DP405"
+
+config TARGET_DU405
+ bool "Support DU405"
+
+config TARGET_DU440
+ bool "Support DU440"
+
+config TARGET_HH405
+ bool "Support HH405"
+
+config TARGET_HUB405
+ bool "Support HUB405"
+
+config TARGET_OCRTC
+ bool "Support OCRTC"
+
+config TARGET_PCI405
+ bool "Support PCI405"
+
+config TARGET_PLU405
+ bool "Support PLU405"
+
+config TARGET_PMC405
+ bool "Support PMC405"
+
+config TARGET_PMC405DE
+ bool "Support PMC405DE"
+
+config TARGET_PMC440
+ bool "Support PMC440"
+
+config TARGET_VOH405
+ bool "Support VOH405"
+
+config TARGET_VOM405
+ bool "Support VOM405"
+
+config TARGET_WUH405
+ bool "Support WUH405"
+
+config TARGET_DLVISION_10G
+ bool "Support dlvision-10g"
+
+config TARGET_IO
+ bool "Support io"
+
+config TARGET_IOCON
+ bool "Support iocon"
+
+config TARGET_NEO
+ bool "Support neo"
+
+config TARGET_IO64
+ bool "Support io64"
+
+config TARGET_DLVISION
+ bool "Support dlvision"
+
+config TARGET_GDPPC440ETX
+ bool "Support gdppc440etx"
+
+config TARGET_INTIP
+ bool "Support intip"
+
+config TARGET_ICON
+ bool "Support icon"
+
+config TARGET_MIP405
+ bool "Support MIP405"
+
+config TARGET_PIP405
+ bool "Support PIP405"
+
+config TARGET_ALPR
+ bool "Support alpr"
+
+config TARGET_P3P440
+ bool "Support p3p440"
+
+config TARGET_KAREF
+ bool "Support KAREF"
+
+config TARGET_METROBOX
+ bool "Support METROBOX"
+
+config TARGET_XPEDITE1000
+ bool "Support xpedite1000"
+
+config TARGET_ML507
+ bool "Support ml507"
+
+config TARGET_XILINX_PPC405_GENERIC
+ bool "Support xilinx-ppc405-generic"
+
+config TARGET_XILINX_PPC440_GENERIC
+ bool "Support xilinx-ppc440-generic"
+
+endchoice
+
+source "board/amcc/acadia/Kconfig"
+source "board/amcc/bamboo/Kconfig"
+source "board/amcc/bluestone/Kconfig"
+source "board/amcc/bubinga/Kconfig"
+source "board/amcc/canyonlands/Kconfig"
+source "board/amcc/ebony/Kconfig"
+source "board/amcc/katmai/Kconfig"
+source "board/amcc/kilauea/Kconfig"
+source "board/amcc/luan/Kconfig"
+source "board/amcc/makalu/Kconfig"
+source "board/amcc/ocotea/Kconfig"
+source "board/amcc/redwood/Kconfig"
+source "board/amcc/sequoia/Kconfig"
+source "board/amcc/taihu/Kconfig"
+source "board/amcc/taishan/Kconfig"
+source "board/amcc/walnut/Kconfig"
+source "board/amcc/yosemite/Kconfig"
+source "board/amcc/yucca/Kconfig"
+source "board/avnet/fx12mm/Kconfig"
+source "board/avnet/v5fx30teval/Kconfig"
+source "board/cray/L1/Kconfig"
+source "board/csb272/Kconfig"
+source "board/csb472/Kconfig"
+source "board/dave/PPChameleonEVB/Kconfig"
+source "board/esd/apc405/Kconfig"
+source "board/esd/ar405/Kconfig"
+source "board/esd/ash405/Kconfig"
+source "board/esd/cms700/Kconfig"
+source "board/esd/cpci2dp/Kconfig"
+source "board/esd/cpci405/Kconfig"
+source "board/esd/cpciiser4/Kconfig"
+source "board/esd/dp405/Kconfig"
+source "board/esd/du405/Kconfig"
+source "board/esd/du440/Kconfig"
+source "board/esd/hh405/Kconfig"
+source "board/esd/hub405/Kconfig"
+source "board/esd/ocrtc/Kconfig"
+source "board/esd/pci405/Kconfig"
+source "board/esd/plu405/Kconfig"
+source "board/esd/pmc405/Kconfig"
+source "board/esd/pmc405de/Kconfig"
+source "board/esd/pmc440/Kconfig"
+source "board/esd/voh405/Kconfig"
+source "board/esd/vom405/Kconfig"
+source "board/esd/wuh405/Kconfig"
+source "board/g2000/Kconfig"
+source "board/gdsys/405ep/Kconfig"
+source "board/gdsys/405ex/Kconfig"
+source "board/gdsys/dlvision/Kconfig"
+source "board/gdsys/gdppc440etx/Kconfig"
+source "board/gdsys/intip/Kconfig"
+source "board/jse/Kconfig"
+source "board/korat/Kconfig"
+source "board/lwmon5/Kconfig"
+source "board/mosaixtech/icon/Kconfig"
+source "board/mpl/mip405/Kconfig"
+source "board/mpl/pip405/Kconfig"
+source "board/pcs440ep/Kconfig"
+source "board/prodrive/alpr/Kconfig"
+source "board/prodrive/p3p440/Kconfig"
+source "board/sandburst/karef/Kconfig"
+source "board/sandburst/metrobox/Kconfig"
+source "board/sbc405/Kconfig"
+source "board/sc3/Kconfig"
+source "board/t3corp/Kconfig"
+source "board/w7o/Kconfig"
+source "board/xes/xpedite1000/Kconfig"
+source "board/xilinx/ml507/Kconfig"
+source "board/xilinx/ppc405-generic/Kconfig"
+source "board/xilinx/ppc440-generic/Kconfig"
+source "board/zeus/Kconfig"
+
+endmenu
diff --git a/arch/powerpc/cpu/ppc4xx/config.mk b/arch/powerpc/cpu/ppc4xx/config.mk
index 102f069..f87c9dc 100644
--- a/arch/powerpc/cpu/ppc4xx/config.mk
+++ b/arch/powerpc/cpu/ppc4xx/config.mk
@@ -5,10 +5,10 @@
# SPDX-License-Identifier: GPL-2.0+
#
-PLATFORM_CPPFLAGS += -DCONFIG_4xx -mstring -msoft-float
+PLATFORM_CPPFLAGS += -mstring -msoft-float
-cfg=$(shell grep configs $(objtree)/include/config.h | sed 's/.*<\(configs.*\)>/\1/')
-is440:=$(shell grep CONFIG_440 $(srctree)/include/$(cfg))
+cfg=$(srctree)/include/configs/$(CONFIG_SYS_CONFIG_NAME:"%"=%).h
+is440:=$(shell grep CONFIG_440 $(cfg))
ifneq (,$(findstring CONFIG_440,$(is440)))
PLATFORM_CPPFLAGS += -Wa,-m440 -mcpu=440
diff --git a/arch/powerpc/cpu/ppc4xx/cpu_init.c b/arch/powerpc/cpu/ppc4xx/cpu_init.c
index d465dcd..0b27d29 100644
--- a/arch/powerpc/cpu/ppc4xx/cpu_init.c
+++ b/arch/powerpc/cpu/ppc4xx/cpu_init.c
@@ -12,9 +12,7 @@
#include <asm/ppc4xx-gpio.h>
#include <asm/ppc4xx.h>
-#if defined(CONFIG_405GP) || defined(CONFIG_405EP)
DECLARE_GLOBAL_DATA_PTR;
-#endif
#ifndef CONFIG_SYS_PLL_RECONFIG
#define CONFIG_SYS_PLL_RECONFIG 0
@@ -451,6 +449,8 @@ cpu_init_f (void)
mtdcr(PLB4A1_ACR, (mfdcr(PLB4A1_ACR) & ~PLB4Ax_ACR_RDP_MASK) |
PLB4Ax_ACR_RDP_4DEEP);
#endif /* CONFIG_440SP/SPE || CONFIG_460EX/GT || CONFIG_405EX */
+
+ gd = (gd_t *)(CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_GBL_DATA_OFFSET);
}
/*
diff --git a/arch/sandbox/Kconfig b/arch/sandbox/Kconfig
new file mode 100644
index 0000000..c393550
--- /dev/null
+++ b/arch/sandbox/Kconfig
@@ -0,0 +1,16 @@
+menu "Sandbox architecture"
+ depends on SANDBOX
+
+config SYS_ARCH
+ string
+ default "sandbox"
+
+config SYS_BOARD
+ string
+ default "sandbox"
+
+config SYS_CONFIG_NAME
+ string
+ default "sandbox"
+
+endmenu
diff --git a/arch/sandbox/config.mk b/arch/sandbox/config.mk
index c3f889f..e38a44b 100644
--- a/arch/sandbox/config.mk
+++ b/arch/sandbox/config.mk
@@ -1,7 +1,7 @@
# Copyright (c) 2011 The Chromium OS Authors.
# SPDX-License-Identifier: GPL-2.0+
-PLATFORM_CPPFLAGS += -DCONFIG_SANDBOX -D__SANDBOX__ -U_FORTIFY_SOURCE
+PLATFORM_CPPFLAGS += -D__SANDBOX__ -U_FORTIFY_SOURCE
PLATFORM_CPPFLAGS += -DCONFIG_ARCH_MAP_SYSMEM -DCONFIG_SYS_GENERIC_BOARD
PLATFORM_LIBS += -lrt
diff --git a/arch/sandbox/cpu/cpu.c b/arch/sandbox/cpu/cpu.c
index 3f4005b..1aa397c 100644
--- a/arch/sandbox/cpu/cpu.c
+++ b/arch/sandbox/cpu/cpu.c
@@ -4,6 +4,7 @@
*/
#include <common.h>
+#include <dm/root.h>
#include <os.h>
#include <asm/state.h>
@@ -14,6 +15,9 @@ void reset_cpu(ulong ignored)
if (state_uninit())
os_exit(2);
+ if (dm_uninit())
+ os_exit(2);
+
/* This is considered normal termination for now */
os_exit(0);
}
diff --git a/arch/sandbox/cpu/start.c b/arch/sandbox/cpu/start.c
index aad3b8b..b3d7051 100644
--- a/arch/sandbox/cpu/start.c
+++ b/arch/sandbox/cpu/start.c
@@ -6,6 +6,7 @@
#include <common.h>
#include <os.h>
#include <asm/getopt.h>
+#include <asm/io.h>
#include <asm/sections.h>
#include <asm/state.h>
@@ -218,6 +219,7 @@ SANDBOX_CMDLINE_OPT_SHORT(terminal, 't', 1,
int main(int argc, char *argv[])
{
struct sandbox_state *state;
+ gd_t data;
int ret;
ret = state_init();
@@ -236,6 +238,12 @@ int main(int argc, char *argv[])
if (state->ram_buf_rm && state->ram_buf_fname)
os_unlink(state->ram_buf_fname);
+ memset(&data, '\0', sizeof(data));
+ gd = &data;
+#ifdef CONFIG_SYS_MALLOC_F_LEN
+ gd->malloc_base = CONFIG_MALLOC_F_ADDR;
+#endif
+
/* Do pre- and post-relocation init */
board_init_f(0);
diff --git a/arch/sandbox/include/asm/config.h b/arch/sandbox/include/asm/config.h
index 6c1bff9..ec7729e 100644
--- a/arch/sandbox/include/asm/config.h
+++ b/arch/sandbox/include/asm/config.h
@@ -7,7 +7,6 @@
#ifndef _ASM_CONFIG_H_
#define _ASM_CONFIG_H_
-#define CONFIG_SYS_GENERIC_GLOBAL_DATA
#define CONFIG_SANDBOX_ARCH
/* Used by drivers/spi/sandbox_spi.c and arch/sandbox/include/asm/state.h */
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
new file mode 100644
index 0000000..e6ded16
--- /dev/null
+++ b/arch/sh/Kconfig
@@ -0,0 +1,98 @@
+menu "SuperH architecture"
+ depends on SH
+
+config SYS_ARCH
+ string
+ default "sh"
+
+choice
+ prompt "Target select"
+
+config TARGET_RSK7203
+ bool "Support rsk7203"
+
+config TARGET_RSK7264
+ bool "Support rsk7264"
+
+config TARGET_RSK7269
+ bool "Support rsk7269"
+
+config TARGET_MPR2
+ bool "Support mpr2"
+
+config TARGET_MS7720SE
+ bool "Support ms7720se"
+
+config TARGET_SHMIN
+ bool "Support shmin"
+
+config TARGET_ESPT
+ bool "Support espt"
+
+config TARGET_MS7722SE
+ bool "Support ms7722se"
+
+config TARGET_MS7750SE
+ bool "Support ms7750se"
+
+config TARGET_AP_SH4A_4A
+ bool "Support ap_sh4a_4a"
+
+config TARGET_AP325RXA
+ bool "Support ap325rxa"
+
+config TARGET_ECOVEC
+ bool "Support ecovec"
+
+config TARGET_MIGOR
+ bool "Support MigoR"
+
+config TARGET_R0P7734
+ bool "Support r0p7734"
+
+config TARGET_R2DPLUS
+ bool "Support r2dplus"
+
+config TARGET_R7780MP
+ bool "Support r7780mp"
+
+config TARGET_SH7752EVB
+ bool "Support sh7752evb"
+
+config TARGET_SH7753EVB
+ bool "Support sh7753evb"
+
+config TARGET_SH7757LCR
+ bool "Support sh7757lcr"
+
+config TARGET_SH7763RDP
+ bool "Support sh7763rdp"
+
+config TARGET_SH7785LCR
+ bool "Support sh7785lcr"
+
+endchoice
+
+source "board/alphaproject/ap_sh4a_4a/Kconfig"
+source "board/espt/Kconfig"
+source "board/mpr2/Kconfig"
+source "board/ms7720se/Kconfig"
+source "board/ms7722se/Kconfig"
+source "board/ms7750se/Kconfig"
+source "board/renesas/MigoR/Kconfig"
+source "board/renesas/ap325rxa/Kconfig"
+source "board/renesas/ecovec/Kconfig"
+source "board/renesas/r0p7734/Kconfig"
+source "board/renesas/r2dplus/Kconfig"
+source "board/renesas/r7780mp/Kconfig"
+source "board/renesas/rsk7203/Kconfig"
+source "board/renesas/rsk7264/Kconfig"
+source "board/renesas/rsk7269/Kconfig"
+source "board/renesas/sh7752evb/Kconfig"
+source "board/renesas/sh7753evb/Kconfig"
+source "board/renesas/sh7757lcr/Kconfig"
+source "board/renesas/sh7763rdp/Kconfig"
+source "board/renesas/sh7785lcr/Kconfig"
+source "board/shmin/Kconfig"
+
+endmenu
diff --git a/arch/sh/cpu/sh2/u-boot.lds b/arch/sh/cpu/sh2/u-boot.lds
deleted file mode 100644
index 254d9f2..0000000
--- a/arch/sh/cpu/sh2/u-boot.lds
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2008 Nobuhiro Iwamatsu
- * Copyright (C) 2008 Renesas Solutions Corp.
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-OUTPUT_FORMAT("elf32-sh-linux", "elf32-sh-linux", "elf32-sh-linux")
-OUTPUT_ARCH(sh)
-ENTRY(_start)
-
-SECTIONS
-{
- /*
- * entry and reloct_dst will be provided via ldflags
- */
- . = .;
-
- PROVIDE (_ftext = .);
- PROVIDE (_fcode = .);
- PROVIDE (_start = .);
-
- .text :
- {
- KEEP(arch/sh/cpu/sh2/start.o (.text))
- . = ALIGN(8192);
- common/env_embedded.o (.ppcenv)
- . = ALIGN(8192);
- common/env_embedded.o (.ppcenvr)
- . = ALIGN(8192);
- *(.text)
- . = ALIGN(4);
- } =0xFF
- PROVIDE (_ecode = .);
- .rodata :
- {
- *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
- . = ALIGN(4);
- }
- PROVIDE (_etext = .);
-
-
- PROVIDE (_fdata = .);
- .data :
- {
- *(.data)
- . = ALIGN(4);
- }
- PROVIDE (_edata = .);
-
- PROVIDE (_fgot = .);
- .got :
- {
- *(.got)
- . = ALIGN(4);
- }
- PROVIDE (_egot = .);
-
-
- .u_boot_list : {
- KEEP(*(SORT(.u_boot_list*)));
- }
-
- PROVIDE (reloc_dst_end = .);
-
- PROVIDE (bss_start = .);
- PROVIDE (__bss_start = .);
- .bss :
- {
- *(.bss)
- . = ALIGN(4);
- }
- PROVIDE (bss_end = .);
-
- PROVIDE (__bss_end = .);
-}
diff --git a/arch/sh/cpu/sh4/u-boot.lds b/arch/sh/cpu/sh4/u-boot.lds
deleted file mode 100644
index 57544ce..0000000
--- a/arch/sh/cpu/sh4/u-boot.lds
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (C) 2007
- * Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
- *
- * Copyright (C) 2008-2009
- * Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-OUTPUT_FORMAT("elf32-sh-linux", "elf32-sh-linux", "elf32-sh-linux")
-OUTPUT_ARCH(sh)
-ENTRY(_start)
-
-SECTIONS
-{
- /*
- * entry and reloct_dst will be provided via ldflags
- */
- . = .;
-
- PROVIDE (_ftext = .);
- PROVIDE (_fcode = .);
- PROVIDE (_start = .);
-
- .text :
- {
- KEEP(arch/sh/cpu/sh4/start.o (.text))
- . = ALIGN(8192);
- common/env_embedded.o (.ppcenv)
- . = ALIGN(8192);
- common/env_embedded.o (.ppcenvr)
- . = ALIGN(8192);
- *(.text)
- . = ALIGN(4);
- } =0xFF
- PROVIDE (_ecode = .);
- .rodata :
- {
- *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
- . = ALIGN(4);
- }
- PROVIDE (_etext = .);
-
-
- PROVIDE (_fdata = .);
- .data :
- {
- *(.data)
- . = ALIGN(4);
- }
- PROVIDE (_edata = .);
-
- PROVIDE (_fgot = .);
- .got :
- {
- *(.got)
- . = ALIGN(4);
- }
- PROVIDE (_egot = .);
-
-
- .u_boot_list : {
- KEEP(*(SORT(.u_boot_list*)));
- }
-
- PROVIDE (reloc_dst_end = .);
- /* _reloc_dst_end = .; */
-
- PROVIDE (bss_start = .);
- PROVIDE (__bss_start = .);
- .bss (NOLOAD) :
- {
- *(.bss)
- . = ALIGN(4);
- }
- PROVIDE (bss_end = .);
-
- PROVIDE (__bss_end = .);
-}
diff --git a/arch/sh/cpu/sh3/u-boot.lds b/arch/sh/cpu/u-boot.lds
index 26de086..30c7a9d 100644
--- a/arch/sh/cpu/sh3/u-boot.lds
+++ b/arch/sh/cpu/u-boot.lds
@@ -1,10 +1,10 @@
/*
* Copyright (C) 2007
- * Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
- *
- * Copyright (C) 2007
* Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
*
+ * Copyright (C) 2008-2009
+ * Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
+ *
* Copyright (C) 2008
* Mark Jonas <mark.jonas@de.bosch.com>
*
@@ -28,7 +28,7 @@ SECTIONS
.text :
{
- KEEP(arch/sh/cpu/sh3/start.o (.text))
+ KEEP(*/start.o (.text))
. = ALIGN(8192);
common/env_embedded.o (.ppcenv)
. = ALIGN(8192);
diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
new file mode 100644
index 0000000..fc92910
--- /dev/null
+++ b/arch/sparc/Kconfig
@@ -0,0 +1,34 @@
+menu "SPARC architecture"
+ depends on SPARC
+
+config SYS_ARCH
+ string
+ default "sparc"
+
+choice
+ prompt "Target select"
+
+config TARGET_GRSIM_LEON2
+ bool "Support grsim_leon2"
+
+config TARGET_GR_CPCI_AX2000
+ bool "Support gr_cpci_ax2000"
+
+config TARGET_GR_EP2S60
+ bool "Support gr_ep2s60"
+
+config TARGET_GR_XC3S_1500
+ bool "Support gr_xc3s_1500"
+
+config TARGET_GRSIM
+ bool "Support grsim"
+
+endchoice
+
+source "board/gaisler/gr_cpci_ax2000/Kconfig"
+source "board/gaisler/gr_ep2s60/Kconfig"
+source "board/gaisler/gr_xc3s_1500/Kconfig"
+source "board/gaisler/grsim/Kconfig"
+source "board/gaisler/grsim_leon2/Kconfig"
+
+endmenu
diff --git a/arch/sparc/config.mk b/arch/sparc/config.mk
index be59f58..196d28a 100644
--- a/arch/sparc/config.mk
+++ b/arch/sparc/config.mk
@@ -14,4 +14,4 @@ gcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`)
CONFIG_STANDALONE_LOAD_ADDR ?= 0x00000000 -L $(gcclibdir) \
-T $(srctree)/examples/standalone/sparc.lds
-PLATFORM_CPPFLAGS += -DCONFIG_SPARC -D__sparc__
+PLATFORM_CPPFLAGS += -D__sparc__
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
new file mode 100644
index 0000000..8fc619a
--- /dev/null
+++ b/arch/x86/Kconfig
@@ -0,0 +1,18 @@
+menu "x86 architecture"
+ depends on X86
+
+config SYS_ARCH
+ string
+ default "x86"
+
+choice
+ prompt "Target select"
+
+config TARGET_COREBOOT
+ bool "Support coreboot"
+
+endchoice
+
+source "board/chromebook-x86/coreboot/Kconfig"
+
+endmenu
diff --git a/arch/x86/cpu/config.mk b/arch/x86/cpu/config.mk
index 4b2c873..f7b01d3 100644
--- a/arch/x86/cpu/config.mk
+++ b/arch/x86/cpu/config.mk
@@ -7,7 +7,7 @@
CROSS_COMPILE ?= i386-linux-
-PLATFORM_CPPFLAGS += -DCONFIG_X86 -D__I386__ -Werror
+PLATFORM_CPPFLAGS += -D__I386__ -Werror
# DO NOT MODIFY THE FOLLOWING UNLESS YOU REALLY KNOW WHAT YOU ARE DOING!
LDPPFLAGS += -DRESET_SEG_START=0xffff0000
diff --git a/arch/x86/lib/video.c b/arch/x86/lib/video.c
index dfd2a84..975949d 100644
--- a/arch/x86/lib/video.c
+++ b/arch/x86/lib/video.c
@@ -104,7 +104,7 @@ static void __video_putc(const char c, int *x, int *y)
}
}
-static void video_putc(const char c)
+static void video_putc(struct stdio_dev *dev, const char c)
{
int x, y, pos;
@@ -123,7 +123,7 @@ static void video_putc(const char c)
outb_p(0xff & (pos >> 1), vidport+1);
}
-static void video_puts(const char *s)
+static void video_puts(struct stdio_dev *dev, const char *s)
{
int x, y, pos;
char c;
@@ -178,8 +178,6 @@ int video_init(void)
vga_dev.flags = DEV_FLAGS_OUTPUT | DEV_FLAGS_SYSTEM;
vga_dev.putc = video_putc; /* 'putc' function */
vga_dev.puts = video_puts; /* 'puts' function */
- vga_dev.tstc = NULL; /* 'tstc' function */
- vga_dev.getc = NULL; /* 'getc' function */
if (stdio_register(&vga_dev) == 0)
return 1;
@@ -191,8 +189,6 @@ int video_init(void)
strcpy(kbd_dev.name, "kbd");
kbd_dev.ext = 0;
kbd_dev.flags = DEV_FLAGS_INPUT | DEV_FLAGS_SYSTEM;
- kbd_dev.putc = NULL; /* 'putc' function */
- kbd_dev.puts = NULL; /* 'puts' function */
kbd_dev.tstc = i8042_tstc; /* 'tstc' function */
kbd_dev.getc = i8042_getc; /* 'getc' function */
diff --git a/board/8dtech/eco5pk/Kconfig b/board/8dtech/eco5pk/Kconfig
new file mode 100644
index 0000000..fb1b308
--- /dev/null
+++ b/board/8dtech/eco5pk/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_ECO5PK
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "eco5pk"
+
+config SYS_VENDOR
+ string
+ default "8dtech"
+
+config SYS_SOC
+ string
+ default "omap3"
+
+config SYS_CONFIG_NAME
+ string
+ default "eco5pk"
+
+endif
diff --git a/board/8dtech/eco5pk/MAINTAINERS b/board/8dtech/eco5pk/MAINTAINERS
new file mode 100644
index 0000000..20c1c8c
--- /dev/null
+++ b/board/8dtech/eco5pk/MAINTAINERS
@@ -0,0 +1,6 @@
+ECO5PK BOARD
+M: Raphael Assenat <raph@8d.com>
+S: Maintained
+F: board/8dtech/eco5pk/
+F: include/configs/eco5pk.h
+F: configs/eco5pk_defconfig
diff --git a/board/AndesTech/adp-ag101/Kconfig b/board/AndesTech/adp-ag101/Kconfig
new file mode 100644
index 0000000..3567543
--- /dev/null
+++ b/board/AndesTech/adp-ag101/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_ADP_AG101
+
+config SYS_CPU
+ string
+ default "n1213"
+
+config SYS_BOARD
+ string
+ default "adp-ag101"
+
+config SYS_VENDOR
+ string
+ default "AndesTech"
+
+config SYS_SOC
+ string
+ default "ag101"
+
+config SYS_CONFIG_NAME
+ string
+ default "adp-ag101"
+
+endif
diff --git a/board/AndesTech/adp-ag101/MAINTAINERS b/board/AndesTech/adp-ag101/MAINTAINERS
new file mode 100644
index 0000000..1f0169b
--- /dev/null
+++ b/board/AndesTech/adp-ag101/MAINTAINERS
@@ -0,0 +1,6 @@
+ADP-AG101 BOARD
+M: Andes <uboot@andestech.com>
+S: Maintained
+F: board/AndesTech/adp-ag101/
+F: include/configs/adp-ag101.h
+F: configs/adp-ag101_defconfig
diff --git a/board/AndesTech/adp-ag101p/Kconfig b/board/AndesTech/adp-ag101p/Kconfig
new file mode 100644
index 0000000..ee551a6
--- /dev/null
+++ b/board/AndesTech/adp-ag101p/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_ADP_AG101P
+
+config SYS_CPU
+ string
+ default "n1213"
+
+config SYS_BOARD
+ string
+ default "adp-ag101p"
+
+config SYS_VENDOR
+ string
+ default "AndesTech"
+
+config SYS_SOC
+ string
+ default "ag101"
+
+config SYS_CONFIG_NAME
+ string
+ default "adp-ag101p"
+
+endif
diff --git a/board/AndesTech/adp-ag101p/MAINTAINERS b/board/AndesTech/adp-ag101p/MAINTAINERS
new file mode 100644
index 0000000..9a2c7a3
--- /dev/null
+++ b/board/AndesTech/adp-ag101p/MAINTAINERS
@@ -0,0 +1,6 @@
+ADP-AG101P BOARD
+M: Andes <uboot@andestech.com>
+S: Maintained
+F: board/AndesTech/adp-ag101p/
+F: include/configs/adp-ag101p.h
+F: configs/adp-ag101p_defconfig
diff --git a/board/AndesTech/adp-ag102/Kconfig b/board/AndesTech/adp-ag102/Kconfig
new file mode 100644
index 0000000..34566bd
--- /dev/null
+++ b/board/AndesTech/adp-ag102/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_ADP_AG102
+
+config SYS_CPU
+ string
+ default "n1213"
+
+config SYS_BOARD
+ string
+ default "adp-ag102"
+
+config SYS_VENDOR
+ string
+ default "AndesTech"
+
+config SYS_SOC
+ string
+ default "ag102"
+
+config SYS_CONFIG_NAME
+ string
+ default "adp-ag102"
+
+endif
diff --git a/board/AndesTech/adp-ag102/MAINTAINERS b/board/AndesTech/adp-ag102/MAINTAINERS
new file mode 100644
index 0000000..94b87c7
--- /dev/null
+++ b/board/AndesTech/adp-ag102/MAINTAINERS
@@ -0,0 +1,6 @@
+ADP-AG102 BOARD
+M: Andes <uboot@andestech.com>
+S: Maintained
+F: board/AndesTech/adp-ag102/
+F: include/configs/adp-ag102.h
+F: configs/adp-ag102_defconfig
diff --git a/board/Barix/ipam390/Kconfig b/board/Barix/ipam390/Kconfig
new file mode 100644
index 0000000..a8134479
--- /dev/null
+++ b/board/Barix/ipam390/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_IPAM390
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "ipam390"
+
+config SYS_VENDOR
+ string
+ default "Barix"
+
+config SYS_SOC
+ string
+ default "davinci"
+
+config SYS_CONFIG_NAME
+ string
+ default "ipam390"
+
+endif
diff --git a/board/Barix/ipam390/MAINTAINERS b/board/Barix/ipam390/MAINTAINERS
new file mode 100644
index 0000000..640e34f
--- /dev/null
+++ b/board/Barix/ipam390/MAINTAINERS
@@ -0,0 +1,6 @@
+IPAM390 BOARD
+M: Heiko Schocher <hs@denx.de>
+S: Maintained
+F: board/Barix/ipam390/
+F: include/configs/ipam390.h
+F: configs/ipam390_defconfig
diff --git a/board/BuR/kwb/Kconfig b/board/BuR/kwb/Kconfig
new file mode 100644
index 0000000..5676c4f
--- /dev/null
+++ b/board/BuR/kwb/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_KWB
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "kwb"
+
+config SYS_VENDOR
+ string
+ default "BuR"
+
+config SYS_SOC
+ string
+ default "am33xx"
+
+config SYS_CONFIG_NAME
+ string
+ default "kwb"
+
+endif
diff --git a/board/BuR/kwb/MAINTAINERS b/board/BuR/kwb/MAINTAINERS
new file mode 100644
index 0000000..c28fb49
--- /dev/null
+++ b/board/BuR/kwb/MAINTAINERS
@@ -0,0 +1,6 @@
+KWB BOARD
+M: Hannes Petermaier <hannes.petermaier@br-automation.com>
+S: Maintained
+F: board/BuR/kwb/
+F: include/configs/kwb.h
+F: configs/kwb_defconfig
diff --git a/board/BuR/tseries/Kconfig b/board/BuR/tseries/Kconfig
new file mode 100644
index 0000000..f452023
--- /dev/null
+++ b/board/BuR/tseries/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_TSERIES
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "tseries"
+
+config SYS_VENDOR
+ string
+ default "BuR"
+
+config SYS_SOC
+ string
+ default "am33xx"
+
+config SYS_CONFIG_NAME
+ string
+ default "tseries"
+
+endif
diff --git a/board/BuR/tseries/MAINTAINERS b/board/BuR/tseries/MAINTAINERS
new file mode 100644
index 0000000..e57326a
--- /dev/null
+++ b/board/BuR/tseries/MAINTAINERS
@@ -0,0 +1,8 @@
+TSERIES BOARD
+M: Hannes Petermaier <hannes.petermaier@br-automation.com>
+S: Maintained
+F: board/BuR/tseries/
+F: include/configs/tseries.h
+F: configs/tseries_mmc_defconfig
+F: configs/tseries_nand_defconfig
+F: configs/tseries_spi_defconfig
diff --git a/board/BuS/eb_cpu5282/Kconfig b/board/BuS/eb_cpu5282/Kconfig
new file mode 100644
index 0000000..f53f295
--- /dev/null
+++ b/board/BuS/eb_cpu5282/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_EB_CPU5282
+
+config SYS_CPU
+ string
+ default "mcf52x2"
+
+config SYS_BOARD
+ string
+ default "eb_cpu5282"
+
+config SYS_VENDOR
+ string
+ default "BuS"
+
+config SYS_CONFIG_NAME
+ string
+ default "eb_cpu5282"
+
+endif
diff --git a/board/BuS/eb_cpu5282/MAINTAINERS b/board/BuS/eb_cpu5282/MAINTAINERS
new file mode 100644
index 0000000..87298ad
--- /dev/null
+++ b/board/BuS/eb_cpu5282/MAINTAINERS
@@ -0,0 +1,7 @@
+EB_CPU5282 BOARD
+M: Jens Scharsig <esw@bus-elektronik.de>
+S: Maintained
+F: board/BuS/eb_cpu5282/
+F: include/configs/eb_cpu5282.h
+F: configs/eb_cpu5282_defconfig
+F: configs/eb_cpu5282_internal_defconfig
diff --git a/board/BuS/eb_cpux9k2/Kconfig b/board/BuS/eb_cpux9k2/Kconfig
new file mode 100644
index 0000000..3a36cf3
--- /dev/null
+++ b/board/BuS/eb_cpux9k2/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_EB_CPUX9K2
+
+config SYS_CPU
+ string
+ default "arm920t"
+
+config SYS_BOARD
+ string
+ default "eb_cpux9k2"
+
+config SYS_VENDOR
+ string
+ default "BuS"
+
+config SYS_SOC
+ string
+ default "at91"
+
+config SYS_CONFIG_NAME
+ string
+ default "eb_cpux9k2"
+
+endif
diff --git a/board/BuS/eb_cpux9k2/MAINTAINERS b/board/BuS/eb_cpux9k2/MAINTAINERS
new file mode 100644
index 0000000..81c4349
--- /dev/null
+++ b/board/BuS/eb_cpux9k2/MAINTAINERS
@@ -0,0 +1,7 @@
+EB_CPUX9K2 BOARD
+M: Jens Scharsig <esw@bus-elektronik.de>
+S: Maintained
+F: board/BuS/eb_cpux9k2/
+F: include/configs/eb_cpux9k2.h
+F: configs/eb_cpux9k2_defconfig
+F: configs/eb_cpux9k2_ram_defconfig
diff --git a/board/BuS/vl_ma2sc/Kconfig b/board/BuS/vl_ma2sc/Kconfig
new file mode 100644
index 0000000..d4a6e52
--- /dev/null
+++ b/board/BuS/vl_ma2sc/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_VL_MA2SC
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "vl_ma2sc"
+
+config SYS_VENDOR
+ string
+ default "BuS"
+
+config SYS_SOC
+ string
+ default "at91"
+
+config SYS_CONFIG_NAME
+ string
+ default "vl_ma2sc"
+
+endif
diff --git a/board/BuS/vl_ma2sc/MAINTAINERS b/board/BuS/vl_ma2sc/MAINTAINERS
new file mode 100644
index 0000000..b70104d
--- /dev/null
+++ b/board/BuS/vl_ma2sc/MAINTAINERS
@@ -0,0 +1,7 @@
+VL_MA2SC BOARD
+M: Jens Scharsig <esw@bus-elektronik.de>
+S: Maintained
+F: board/BuS/vl_ma2sc/
+F: include/configs/vl_ma2sc.h
+F: configs/vl_ma2sc_defconfig
+F: configs/vl_ma2sc_ram_defconfig
diff --git a/board/CarMediaLab/flea3/Kconfig b/board/CarMediaLab/flea3/Kconfig
new file mode 100644
index 0000000..cbc004a
--- /dev/null
+++ b/board/CarMediaLab/flea3/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_FLEA3
+
+config SYS_CPU
+ string
+ default "arm1136"
+
+config SYS_BOARD
+ string
+ default "flea3"
+
+config SYS_VENDOR
+ string
+ default "CarMediaLab"
+
+config SYS_SOC
+ string
+ default "mx35"
+
+config SYS_CONFIG_NAME
+ string
+ default "flea3"
+
+endif
diff --git a/board/CarMediaLab/flea3/MAINTAINERS b/board/CarMediaLab/flea3/MAINTAINERS
new file mode 100644
index 0000000..c7b0df7
--- /dev/null
+++ b/board/CarMediaLab/flea3/MAINTAINERS
@@ -0,0 +1,6 @@
+FLEA3 BOARD
+M: Stefano Babic <sbabic@denx.de>
+S: Maintained
+F: board/CarMediaLab/flea3/
+F: include/configs/flea3.h
+F: configs/flea3_defconfig
diff --git a/board/LEOX/elpt860/Kconfig b/board/LEOX/elpt860/Kconfig
new file mode 100644
index 0000000..2cfa5bc
--- /dev/null
+++ b/board/LEOX/elpt860/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_ELPT860
+
+config SYS_BOARD
+ string
+ default "elpt860"
+
+config SYS_VENDOR
+ string
+ default "LEOX"
+
+config SYS_CONFIG_NAME
+ string
+ default "ELPT860"
+
+endif
diff --git a/board/LEOX/elpt860/MAINTAINERS b/board/LEOX/elpt860/MAINTAINERS
new file mode 100644
index 0000000..8f8a199
--- /dev/null
+++ b/board/LEOX/elpt860/MAINTAINERS
@@ -0,0 +1,6 @@
+ELPT860 BOARD
+M: The LEOX team <team@leox.org>
+S: Maintained
+F: board/LEOX/elpt860/
+F: include/configs/ELPT860.h
+F: configs/ELPT860_defconfig
diff --git a/board/LaCie/edminiv2/Kconfig b/board/LaCie/edminiv2/Kconfig
new file mode 100644
index 0000000..f1151d1
--- /dev/null
+++ b/board/LaCie/edminiv2/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_EDMINIV2
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "edminiv2"
+
+config SYS_VENDOR
+ string
+ default "LaCie"
+
+config SYS_SOC
+ string
+ default "orion5x"
+
+config SYS_CONFIG_NAME
+ string
+ default "edminiv2"
+
+endif
diff --git a/board/LaCie/edminiv2/MAINTAINERS b/board/LaCie/edminiv2/MAINTAINERS
new file mode 100644
index 0000000..e0591f4
--- /dev/null
+++ b/board/LaCie/edminiv2/MAINTAINERS
@@ -0,0 +1,6 @@
+EDMINIV2 BOARD
+M: Albert ARIBAUD <albert.u.boot@aribaud.net>
+S: Maintained
+F: board/LaCie/edminiv2/
+F: include/configs/edminiv2.h
+F: configs/edminiv2_defconfig
diff --git a/board/LaCie/net2big_v2/Kconfig b/board/LaCie/net2big_v2/Kconfig
new file mode 100644
index 0000000..867d0d3
--- /dev/null
+++ b/board/LaCie/net2big_v2/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_NET2BIG_V2
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "net2big_v2"
+
+config SYS_VENDOR
+ string
+ default "LaCie"
+
+config SYS_SOC
+ string
+ default "kirkwood"
+
+config SYS_CONFIG_NAME
+ string
+ default "lacie_kw"
+
+endif
diff --git a/board/LaCie/net2big_v2/MAINTAINERS b/board/LaCie/net2big_v2/MAINTAINERS
new file mode 100644
index 0000000..1afaa5c
--- /dev/null
+++ b/board/LaCie/net2big_v2/MAINTAINERS
@@ -0,0 +1,11 @@
+NET2BIG_V2 BOARD
+M: -
+S: Maintained
+F: board/LaCie/net2big_v2/
+F: include/configs/lacie_kw.h
+F: configs/d2net_v2_defconfig
+
+NET2BIG_V2 BOARD
+M: Simon Guinot <simon.guinot@sequanux.org>
+S: Maintained
+F: configs/net2big_v2_defconfig
diff --git a/board/LaCie/netspace_v2/Kconfig b/board/LaCie/netspace_v2/Kconfig
new file mode 100644
index 0000000..fb6fbef
--- /dev/null
+++ b/board/LaCie/netspace_v2/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_NETSPACE_V2
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "netspace_v2"
+
+config SYS_VENDOR
+ string
+ default "LaCie"
+
+config SYS_SOC
+ string
+ default "kirkwood"
+
+config SYS_CONFIG_NAME
+ string
+ default "lacie_kw"
+
+endif
diff --git a/board/LaCie/netspace_v2/MAINTAINERS b/board/LaCie/netspace_v2/MAINTAINERS
new file mode 100644
index 0000000..ad3dfa1
--- /dev/null
+++ b/board/LaCie/netspace_v2/MAINTAINERS
@@ -0,0 +1,14 @@
+NETSPACE_V2 BOARD
+M: Simon Guinot <simon.guinot@sequanux.org>
+S: Maintained
+F: board/LaCie/netspace_v2/
+F: include/configs/lacie_kw.h
+F: configs/inetspace_v2_defconfig
+F: configs/netspace_max_v2_defconfig
+F: configs/netspace_v2_defconfig
+
+NETSPACE_LITE_V2 BOARD
+M: -
+S: Maintained
+F: configs/netspace_lite_v2_defconfig
+F: configs/netspace_mini_v2_defconfig
diff --git a/board/LaCie/wireless_space/Kconfig b/board/LaCie/wireless_space/Kconfig
new file mode 100644
index 0000000..4815cde
--- /dev/null
+++ b/board/LaCie/wireless_space/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_WIRELESS_SPACE
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "wireless_space"
+
+config SYS_VENDOR
+ string
+ default "LaCie"
+
+config SYS_SOC
+ string
+ default "kirkwood"
+
+config SYS_CONFIG_NAME
+ string
+ default "wireless_space"
+
+endif
diff --git a/board/LaCie/wireless_space/MAINTAINERS b/board/LaCie/wireless_space/MAINTAINERS
new file mode 100644
index 0000000..8b36bff
--- /dev/null
+++ b/board/LaCie/wireless_space/MAINTAINERS
@@ -0,0 +1,6 @@
+WIRELESS_SPACE BOARD
+M: -
+S: Maintained
+F: board/LaCie/wireless_space/
+F: include/configs/wireless_space.h
+F: configs/wireless_space_defconfig
diff --git a/board/Marvell/aspenite/Kconfig b/board/Marvell/aspenite/Kconfig
new file mode 100644
index 0000000..7edcd81
--- /dev/null
+++ b/board/Marvell/aspenite/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_ASPENITE
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "aspenite"
+
+config SYS_VENDOR
+ string
+ default "Marvell"
+
+config SYS_SOC
+ string
+ default "armada100"
+
+config SYS_CONFIG_NAME
+ string
+ default "aspenite"
+
+endif
diff --git a/board/Marvell/aspenite/MAINTAINERS b/board/Marvell/aspenite/MAINTAINERS
new file mode 100644
index 0000000..a77d30e
--- /dev/null
+++ b/board/Marvell/aspenite/MAINTAINERS
@@ -0,0 +1,6 @@
+ASPENITE BOARD
+M: Prafulla Wadaskar <prafulla@marvell.com>
+S: Maintained
+F: board/Marvell/aspenite/
+F: include/configs/aspenite.h
+F: configs/aspenite_defconfig
diff --git a/board/Marvell/db64360/Kconfig b/board/Marvell/db64360/Kconfig
new file mode 100644
index 0000000..c08fd05
--- /dev/null
+++ b/board/Marvell/db64360/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_DB64360
+
+config SYS_BOARD
+ string
+ default "db64360"
+
+config SYS_VENDOR
+ string
+ default "Marvell"
+
+config SYS_CONFIG_NAME
+ string
+ default "DB64360"
+
+endif
diff --git a/board/Marvell/db64360/MAINTAINERS b/board/Marvell/db64360/MAINTAINERS
new file mode 100644
index 0000000..7383207
--- /dev/null
+++ b/board/Marvell/db64360/MAINTAINERS
@@ -0,0 +1,6 @@
+DB64360 BOARD
+M: -
+S: Maintained
+F: board/Marvell/db64360/
+F: include/configs/DB64360.h
+F: configs/DB64360_defconfig
diff --git a/board/Marvell/db64460/Kconfig b/board/Marvell/db64460/Kconfig
new file mode 100644
index 0000000..3cd2eb4
--- /dev/null
+++ b/board/Marvell/db64460/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_DB64460
+
+config SYS_BOARD
+ string
+ default "db64460"
+
+config SYS_VENDOR
+ string
+ default "Marvell"
+
+config SYS_CONFIG_NAME
+ string
+ default "DB64460"
+
+endif
diff --git a/board/Marvell/db64460/MAINTAINERS b/board/Marvell/db64460/MAINTAINERS
new file mode 100644
index 0000000..751aac2
--- /dev/null
+++ b/board/Marvell/db64460/MAINTAINERS
@@ -0,0 +1,6 @@
+DB64460 BOARD
+M: -
+S: Maintained
+F: board/Marvell/db64460/
+F: include/configs/DB64460.h
+F: configs/DB64460_defconfig
diff --git a/board/Marvell/dkb/Kconfig b/board/Marvell/dkb/Kconfig
new file mode 100644
index 0000000..7ce761b
--- /dev/null
+++ b/board/Marvell/dkb/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_DKB
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "dkb"
+
+config SYS_VENDOR
+ string
+ default "Marvell"
+
+config SYS_SOC
+ string
+ default "pantheon"
+
+config SYS_CONFIG_NAME
+ string
+ default "dkb"
+
+endif
diff --git a/board/Marvell/dkb/MAINTAINERS b/board/Marvell/dkb/MAINTAINERS
new file mode 100644
index 0000000..c272b7a
--- /dev/null
+++ b/board/Marvell/dkb/MAINTAINERS
@@ -0,0 +1,6 @@
+DKB BOARD
+M: Lei Wen <leiwen@marvell.com>
+S: Maintained
+F: board/Marvell/dkb/
+F: include/configs/dkb.h
+F: configs/dkb_defconfig
diff --git a/board/Marvell/dreamplug/Kconfig b/board/Marvell/dreamplug/Kconfig
new file mode 100644
index 0000000..e067318
--- /dev/null
+++ b/board/Marvell/dreamplug/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_DREAMPLUG
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "dreamplug"
+
+config SYS_VENDOR
+ string
+ default "Marvell"
+
+config SYS_SOC
+ string
+ default "kirkwood"
+
+config SYS_CONFIG_NAME
+ string
+ default "dreamplug"
+
+endif
diff --git a/board/Marvell/dreamplug/MAINTAINERS b/board/Marvell/dreamplug/MAINTAINERS
new file mode 100644
index 0000000..2561ba8
--- /dev/null
+++ b/board/Marvell/dreamplug/MAINTAINERS
@@ -0,0 +1,6 @@
+DREAMPLUG BOARD
+M: Jason Cooper <u-boot@lakedaemon.net>
+S: Maintained
+F: board/Marvell/dreamplug/
+F: include/configs/dreamplug.h
+F: configs/dreamplug_defconfig
diff --git a/board/Marvell/gplugd/Kconfig b/board/Marvell/gplugd/Kconfig
new file mode 100644
index 0000000..94cdd48
--- /dev/null
+++ b/board/Marvell/gplugd/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_GPLUGD
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "gplugd"
+
+config SYS_VENDOR
+ string
+ default "Marvell"
+
+config SYS_SOC
+ string
+ default "armada100"
+
+config SYS_CONFIG_NAME
+ string
+ default "gplugd"
+
+endif
diff --git a/board/Marvell/gplugd/MAINTAINERS b/board/Marvell/gplugd/MAINTAINERS
new file mode 100644
index 0000000..320bc09
--- /dev/null
+++ b/board/Marvell/gplugd/MAINTAINERS
@@ -0,0 +1,6 @@
+GPLUGD BOARD
+M: Ajay Bhargav <ajay.bhargav@einfochips.com>
+S: Maintained
+F: board/Marvell/gplugd/
+F: include/configs/gplugd.h
+F: configs/gplugd_defconfig
diff --git a/board/Marvell/guruplug/Kconfig b/board/Marvell/guruplug/Kconfig
new file mode 100644
index 0000000..fce8562
--- /dev/null
+++ b/board/Marvell/guruplug/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_GURUPLUG
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "guruplug"
+
+config SYS_VENDOR
+ string
+ default "Marvell"
+
+config SYS_SOC
+ string
+ default "kirkwood"
+
+config SYS_CONFIG_NAME
+ string
+ default "guruplug"
+
+endif
diff --git a/board/Marvell/guruplug/MAINTAINERS b/board/Marvell/guruplug/MAINTAINERS
new file mode 100644
index 0000000..b5d0734
--- /dev/null
+++ b/board/Marvell/guruplug/MAINTAINERS
@@ -0,0 +1,6 @@
+GURUPLUG BOARD
+M: Siddarth Gore <gores@marvell.com>
+S: Maintained
+F: board/Marvell/guruplug/
+F: include/configs/guruplug.h
+F: configs/guruplug_defconfig
diff --git a/board/Marvell/mv88f6281gtw_ge/Kconfig b/board/Marvell/mv88f6281gtw_ge/Kconfig
new file mode 100644
index 0000000..17adab0
--- /dev/null
+++ b/board/Marvell/mv88f6281gtw_ge/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_MV88F6281GTW_GE
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "mv88f6281gtw_ge"
+
+config SYS_VENDOR
+ string
+ default "Marvell"
+
+config SYS_SOC
+ string
+ default "kirkwood"
+
+config SYS_CONFIG_NAME
+ string
+ default "mv88f6281gtw_ge"
+
+endif
diff --git a/board/Marvell/mv88f6281gtw_ge/MAINTAINERS b/board/Marvell/mv88f6281gtw_ge/MAINTAINERS
new file mode 100644
index 0000000..9c26ca7
--- /dev/null
+++ b/board/Marvell/mv88f6281gtw_ge/MAINTAINERS
@@ -0,0 +1,6 @@
+MV88F6281GTW_GE BOARD
+M: Prafulla Wadaskar <prafulla@marvell.com>
+S: Maintained
+F: board/Marvell/mv88f6281gtw_ge/
+F: include/configs/mv88f6281gtw_ge.h
+F: configs/mv88f6281gtw_ge_defconfig
diff --git a/board/Marvell/openrd/Kconfig b/board/Marvell/openrd/Kconfig
new file mode 100644
index 0000000..2dfed34
--- /dev/null
+++ b/board/Marvell/openrd/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_OPENRD
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "openrd"
+
+config SYS_VENDOR
+ string
+ default "Marvell"
+
+config SYS_SOC
+ string
+ default "kirkwood"
+
+config SYS_CONFIG_NAME
+ string
+ default "openrd"
+
+endif
diff --git a/board/Marvell/openrd/MAINTAINERS b/board/Marvell/openrd/MAINTAINERS
new file mode 100644
index 0000000..7a52a8e
--- /dev/null
+++ b/board/Marvell/openrd/MAINTAINERS
@@ -0,0 +1,12 @@
+OPENRD BOARD
+M: Prafulla Wadaskar <prafulla@marvell.com>
+S: Maintained
+F: board/Marvell/openrd/
+F: include/configs/openrd.h
+F: configs/openrd_base_defconfig
+
+OPENRD_CLIENT BOARD
+M: -
+S: Maintained
+F: configs/openrd_client_defconfig
+F: configs/openrd_ultimate_defconfig
diff --git a/board/Marvell/rd6281a/Kconfig b/board/Marvell/rd6281a/Kconfig
new file mode 100644
index 0000000..ae753b0
--- /dev/null
+++ b/board/Marvell/rd6281a/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_RD6281A
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "rd6281a"
+
+config SYS_VENDOR
+ string
+ default "Marvell"
+
+config SYS_SOC
+ string
+ default "kirkwood"
+
+config SYS_CONFIG_NAME
+ string
+ default "rd6281a"
+
+endif
diff --git a/board/Marvell/rd6281a/MAINTAINERS b/board/Marvell/rd6281a/MAINTAINERS
new file mode 100644
index 0000000..d4ad592
--- /dev/null
+++ b/board/Marvell/rd6281a/MAINTAINERS
@@ -0,0 +1,6 @@
+RD6281A BOARD
+M: Prafulla Wadaskar <prafulla@marvell.com>
+S: Maintained
+F: board/Marvell/rd6281a/
+F: include/configs/rd6281a.h
+F: configs/rd6281a_defconfig
diff --git a/board/Marvell/sheevaplug/Kconfig b/board/Marvell/sheevaplug/Kconfig
new file mode 100644
index 0000000..6f3eb38
--- /dev/null
+++ b/board/Marvell/sheevaplug/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_SHEEVAPLUG
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "sheevaplug"
+
+config SYS_VENDOR
+ string
+ default "Marvell"
+
+config SYS_SOC
+ string
+ default "kirkwood"
+
+config SYS_CONFIG_NAME
+ string
+ default "sheevaplug"
+
+endif
diff --git a/board/Marvell/sheevaplug/MAINTAINERS b/board/Marvell/sheevaplug/MAINTAINERS
new file mode 100644
index 0000000..2b0103d
--- /dev/null
+++ b/board/Marvell/sheevaplug/MAINTAINERS
@@ -0,0 +1,6 @@
+SHEEVAPLUG BOARD
+M: Prafulla Wadaskar <prafulla@marvell.com>
+S: Maintained
+F: board/Marvell/sheevaplug/
+F: include/configs/sheevaplug.h
+F: configs/sheevaplug_defconfig
diff --git a/board/RRvision/Kconfig b/board/RRvision/Kconfig
new file mode 100644
index 0000000..ac6bebc
--- /dev/null
+++ b/board/RRvision/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_RRVISION
+
+config SYS_BOARD
+ string
+ default "RRvision"
+
+config SYS_CONFIG_NAME
+ string
+ default "RRvision"
+
+endif
diff --git a/board/RRvision/MAINTAINERS b/board/RRvision/MAINTAINERS
new file mode 100644
index 0000000..59b5c5f
--- /dev/null
+++ b/board/RRvision/MAINTAINERS
@@ -0,0 +1,7 @@
+RRVISION BOARD
+M: Wolfgang Denk <wd@denx.de>
+S: Maintained
+F: board/RRvision/
+F: include/configs/RRvision.h
+F: configs/RRvision_defconfig
+F: configs/RRvision_LCD_defconfig
diff --git a/board/Seagate/dockstar/Kconfig b/board/Seagate/dockstar/Kconfig
new file mode 100644
index 0000000..4696ac6
--- /dev/null
+++ b/board/Seagate/dockstar/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_DOCKSTAR
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "dockstar"
+
+config SYS_VENDOR
+ string
+ default "Seagate"
+
+config SYS_SOC
+ string
+ default "kirkwood"
+
+config SYS_CONFIG_NAME
+ string
+ default "dockstar"
+
+endif
diff --git a/board/Seagate/dockstar/MAINTAINERS b/board/Seagate/dockstar/MAINTAINERS
new file mode 100644
index 0000000..f259e58
--- /dev/null
+++ b/board/Seagate/dockstar/MAINTAINERS
@@ -0,0 +1,6 @@
+DOCKSTAR BOARD
+M: Eric Cooper <ecc@cmu.edu>
+S: Maintained
+F: board/Seagate/dockstar/
+F: include/configs/dockstar.h
+F: configs/dockstar_defconfig
diff --git a/board/Seagate/goflexhome/Kconfig b/board/Seagate/goflexhome/Kconfig
new file mode 100644
index 0000000..0f918cb
--- /dev/null
+++ b/board/Seagate/goflexhome/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_GOFLEXHOME
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "goflexhome"
+
+config SYS_VENDOR
+ string
+ default "Seagate"
+
+config SYS_SOC
+ string
+ default "kirkwood"
+
+config SYS_CONFIG_NAME
+ string
+ default "goflexhome"
+
+endif
diff --git a/board/Seagate/goflexhome/MAINTAINERS b/board/Seagate/goflexhome/MAINTAINERS
new file mode 100644
index 0000000..6d6a1ff
--- /dev/null
+++ b/board/Seagate/goflexhome/MAINTAINERS
@@ -0,0 +1,6 @@
+GOFLEXHOME BOARD
+M: Suriyan Ramasami <suriyan.r@gmail.com>
+S: Maintained
+F: board/Seagate/goflexhome/
+F: include/configs/goflexhome.h
+F: configs/goflexhome_defconfig
diff --git a/board/a3000/Kconfig b/board/a3000/Kconfig
new file mode 100644
index 0000000..9ce64fd
--- /dev/null
+++ b/board/a3000/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_A3000
+
+config SYS_BOARD
+ string
+ default "a3000"
+
+config SYS_CONFIG_NAME
+ string
+ default "A3000"
+
+endif
diff --git a/board/a3000/MAINTAINERS b/board/a3000/MAINTAINERS
new file mode 100644
index 0000000..2d8560f
--- /dev/null
+++ b/board/a3000/MAINTAINERS
@@ -0,0 +1,6 @@
+A3000 BOARD
+M: -
+S: Maintained
+F: board/a3000/
+F: include/configs/A3000.h
+F: configs/A3000_defconfig
diff --git a/board/a3m071/Kconfig b/board/a3m071/Kconfig
new file mode 100644
index 0000000..ab32d5c
--- /dev/null
+++ b/board/a3m071/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_A3M071
+
+config SYS_BOARD
+ string
+ default "a3m071"
+
+config SYS_CONFIG_NAME
+ string
+ default "a3m071"
+
+endif
diff --git a/board/a3m071/MAINTAINERS b/board/a3m071/MAINTAINERS
new file mode 100644
index 0000000..975107d
--- /dev/null
+++ b/board/a3m071/MAINTAINERS
@@ -0,0 +1,7 @@
+A3M071 BOARD
+M: Stefan Roese <sr@denx.de>
+S: Maintained
+F: board/a3m071/
+F: include/configs/a3m071.h
+F: configs/a3m071_defconfig
+F: configs/a4m2k_defconfig
diff --git a/board/a4m072/Kconfig b/board/a4m072/Kconfig
new file mode 100644
index 0000000..cc31947
--- /dev/null
+++ b/board/a4m072/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_A4M072
+
+config SYS_BOARD
+ string
+ default "a4m072"
+
+config SYS_CONFIG_NAME
+ string
+ default "a4m072"
+
+endif
diff --git a/board/a4m072/MAINTAINERS b/board/a4m072/MAINTAINERS
new file mode 100644
index 0000000..83dc59e
--- /dev/null
+++ b/board/a4m072/MAINTAINERS
@@ -0,0 +1,6 @@
+A4M072 BOARD
+M: Sergei Poselenov <sposelenov@emcraft.com>
+S: Maintained
+F: board/a4m072/
+F: include/configs/a4m072.h
+F: configs/a4m072_defconfig
diff --git a/board/abilis/tb100/Kconfig b/board/abilis/tb100/Kconfig
new file mode 100644
index 0000000..eccf928
--- /dev/null
+++ b/board/abilis/tb100/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_TB100
+
+config SYS_CPU
+ string
+ default "arc700"
+
+config SYS_BOARD
+ string
+ default "tb100"
+
+config SYS_VENDOR
+ string
+ default "abilis"
+
+config SYS_CONFIG_NAME
+ string
+ default "tb100"
+
+endif
diff --git a/board/abilis/tb100/MAINTAINERS b/board/abilis/tb100/MAINTAINERS
new file mode 100644
index 0000000..f08c3fe
--- /dev/null
+++ b/board/abilis/tb100/MAINTAINERS
@@ -0,0 +1,6 @@
+TB100 BOARD
+M: Alexey Brodkin <abrodkin@synopsys.com>
+S: Maintained
+F: board/abilis/tb100/
+F: include/configs/tb100.h
+F: configs/tb100_defconfig
diff --git a/board/afeb9260/Kconfig b/board/afeb9260/Kconfig
new file mode 100644
index 0000000..008d943
--- /dev/null
+++ b/board/afeb9260/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_AFEB9260
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "afeb9260"
+
+config SYS_SOC
+ string
+ default "at91"
+
+config SYS_CONFIG_NAME
+ string
+ default "afeb9260"
+
+endif
diff --git a/board/afeb9260/MAINTAINERS b/board/afeb9260/MAINTAINERS
new file mode 100644
index 0000000..337f302
--- /dev/null
+++ b/board/afeb9260/MAINTAINERS
@@ -0,0 +1,6 @@
+AFEB9260 BOARD
+M: Sergey Lapin <slapin@ossfans.org>
+S: Maintained
+F: board/afeb9260/
+F: include/configs/afeb9260.h
+F: configs/afeb9260_defconfig
diff --git a/board/ait/cam_enc_4xx/Kconfig b/board/ait/cam_enc_4xx/Kconfig
new file mode 100644
index 0000000..d1f89df
--- /dev/null
+++ b/board/ait/cam_enc_4xx/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_CAM_ENC_4XX
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "cam_enc_4xx"
+
+config SYS_VENDOR
+ string
+ default "ait"
+
+config SYS_SOC
+ string
+ default "davinci"
+
+config SYS_CONFIG_NAME
+ string
+ default "cam_enc_4xx"
+
+endif
diff --git a/board/ait/cam_enc_4xx/MAINTAINERS b/board/ait/cam_enc_4xx/MAINTAINERS
new file mode 100644
index 0000000..d6477c6
--- /dev/null
+++ b/board/ait/cam_enc_4xx/MAINTAINERS
@@ -0,0 +1,6 @@
+CAM_ENC_4XX BOARD
+M: Heiko Schocher <hs@denx.de>
+S: Maintained
+F: board/ait/cam_enc_4xx/
+F: include/configs/cam_enc_4xx.h
+F: configs/cam_enc_4xx_defconfig
diff --git a/board/alphaproject/ap_sh4a_4a/Kconfig b/board/alphaproject/ap_sh4a_4a/Kconfig
new file mode 100644
index 0000000..7893164
--- /dev/null
+++ b/board/alphaproject/ap_sh4a_4a/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_AP_SH4A_4A
+
+config SYS_CPU
+ string
+ default "sh4"
+
+config SYS_BOARD
+ string
+ default "ap_sh4a_4a"
+
+config SYS_VENDOR
+ string
+ default "alphaproject"
+
+config SYS_CONFIG_NAME
+ string
+ default "ap_sh4a_4a"
+
+endif
diff --git a/board/alphaproject/ap_sh4a_4a/MAINTAINERS b/board/alphaproject/ap_sh4a_4a/MAINTAINERS
new file mode 100644
index 0000000..f24489d
--- /dev/null
+++ b/board/alphaproject/ap_sh4a_4a/MAINTAINERS
@@ -0,0 +1,7 @@
+AP_SH4A_4A BOARD
+M: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+M: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+S: Maintained
+F: board/alphaproject/ap_sh4a_4a/
+F: include/configs/ap_sh4a_4a.h
+F: configs/ap_sh4a_4a_defconfig
diff --git a/board/altera/nios2-generic/Kconfig b/board/altera/nios2-generic/Kconfig
new file mode 100644
index 0000000..1209638
--- /dev/null
+++ b/board/altera/nios2-generic/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_NIOS2_GENERIC
+
+config SYS_BOARD
+ string
+ default "nios2-generic"
+
+config SYS_VENDOR
+ string
+ default "altera"
+
+config SYS_CONFIG_NAME
+ string
+ default "nios2-generic"
+
+endif
diff --git a/board/altera/nios2-generic/MAINTAINERS b/board/altera/nios2-generic/MAINTAINERS
new file mode 100644
index 0000000..9cbcba9
--- /dev/null
+++ b/board/altera/nios2-generic/MAINTAINERS
@@ -0,0 +1,6 @@
+NIOS2-GENERIC BOARD
+M: Scott McNutt <smcnutt@psyent.com>
+S: Maintained
+F: board/altera/nios2-generic/
+F: include/configs/nios2-generic.h
+F: configs/nios2-generic_defconfig
diff --git a/board/altera/socfpga/Kconfig b/board/altera/socfpga/Kconfig
new file mode 100644
index 0000000..d0d9012
--- /dev/null
+++ b/board/altera/socfpga/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_SOCFPGA_CYCLONE5
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "socfpga"
+
+config SYS_VENDOR
+ string
+ default "altera"
+
+config SYS_SOC
+ string
+ default "socfpga"
+
+config SYS_CONFIG_NAME
+ string
+ default "socfpga_cyclone5"
+
+endif
diff --git a/board/altera/socfpga/MAINTAINERS b/board/altera/socfpga/MAINTAINERS
new file mode 100644
index 0000000..626c0f7
--- /dev/null
+++ b/board/altera/socfpga/MAINTAINERS
@@ -0,0 +1,7 @@
+SOCFPGA BOARD
+M: Dinh Nguyen <dinguyen@altera.com>
+M: Chin-Liang See <clsee@altera.com>
+S: Maintained
+F: board/altera/socfpga/
+F: include/configs/socfpga_cyclone5.h
+F: configs/socfpga_cyclone5_defconfig
diff --git a/board/amcc/acadia/Kconfig b/board/amcc/acadia/Kconfig
new file mode 100644
index 0000000..096f02e
--- /dev/null
+++ b/board/amcc/acadia/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_ACADIA
+
+config SYS_BOARD
+ string
+ default "acadia"
+
+config SYS_VENDOR
+ string
+ default "amcc"
+
+config SYS_CONFIG_NAME
+ string
+ default "acadia"
+
+endif
diff --git a/board/amcc/acadia/MAINTAINERS b/board/amcc/acadia/MAINTAINERS
new file mode 100644
index 0000000..c16961f
--- /dev/null
+++ b/board/amcc/acadia/MAINTAINERS
@@ -0,0 +1,6 @@
+ACADIA BOARD
+M: Stefan Roese <sr@denx.de>
+S: Maintained
+F: board/amcc/acadia/
+F: include/configs/acadia.h
+F: configs/acadia_defconfig
diff --git a/board/amcc/bamboo/Kconfig b/board/amcc/bamboo/Kconfig
new file mode 100644
index 0000000..a002cfa
--- /dev/null
+++ b/board/amcc/bamboo/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_BAMBOO
+
+config SYS_BOARD
+ string
+ default "bamboo"
+
+config SYS_VENDOR
+ string
+ default "amcc"
+
+config SYS_CONFIG_NAME
+ string
+ default "bamboo"
+
+endif
diff --git a/board/amcc/bamboo/MAINTAINERS b/board/amcc/bamboo/MAINTAINERS
new file mode 100644
index 0000000..4c8929e
--- /dev/null
+++ b/board/amcc/bamboo/MAINTAINERS
@@ -0,0 +1,6 @@
+BAMBOO BOARD
+M: Stefan Roese <sr@denx.de>
+S: Maintained
+F: board/amcc/bamboo/
+F: include/configs/bamboo.h
+F: configs/bamboo_defconfig
diff --git a/board/amcc/bluestone/Kconfig b/board/amcc/bluestone/Kconfig
new file mode 100644
index 0000000..2f5999d
--- /dev/null
+++ b/board/amcc/bluestone/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_BLUESTONE
+
+config SYS_BOARD
+ string
+ default "bluestone"
+
+config SYS_VENDOR
+ string
+ default "amcc"
+
+config SYS_CONFIG_NAME
+ string
+ default "bluestone"
+
+endif
diff --git a/board/amcc/bluestone/MAINTAINERS b/board/amcc/bluestone/MAINTAINERS
new file mode 100644
index 0000000..4a329e9
--- /dev/null
+++ b/board/amcc/bluestone/MAINTAINERS
@@ -0,0 +1,6 @@
+BLUESTONE BOARD
+M: Tirumala Marri <tmarri@apm.com>
+S: Orphan (since 2014-03)
+F: board/amcc/bluestone/
+F: include/configs/bluestone.h
+F: configs/bluestone_defconfig
diff --git a/board/amcc/bubinga/Kconfig b/board/amcc/bubinga/Kconfig
new file mode 100644
index 0000000..29f769b
--- /dev/null
+++ b/board/amcc/bubinga/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_BUBINGA
+
+config SYS_BOARD
+ string
+ default "bubinga"
+
+config SYS_VENDOR
+ string
+ default "amcc"
+
+config SYS_CONFIG_NAME
+ string
+ default "bubinga"
+
+endif
diff --git a/board/amcc/bubinga/MAINTAINERS b/board/amcc/bubinga/MAINTAINERS
new file mode 100644
index 0000000..9d5ace2
--- /dev/null
+++ b/board/amcc/bubinga/MAINTAINERS
@@ -0,0 +1,6 @@
+BUBINGA BOARD
+M: -
+S: Maintained
+F: board/amcc/bubinga/
+F: include/configs/bubinga.h
+F: configs/bubinga_defconfig
diff --git a/board/amcc/canyonlands/Kconfig b/board/amcc/canyonlands/Kconfig
new file mode 100644
index 0000000..545056a
--- /dev/null
+++ b/board/amcc/canyonlands/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_CANYONLANDS
+
+config SYS_BOARD
+ string
+ default "canyonlands"
+
+config SYS_VENDOR
+ string
+ default "amcc"
+
+config SYS_CONFIG_NAME
+ string
+ default "canyonlands"
+
+endif
diff --git a/board/amcc/canyonlands/MAINTAINERS b/board/amcc/canyonlands/MAINTAINERS
new file mode 100644
index 0000000..52bf004
--- /dev/null
+++ b/board/amcc/canyonlands/MAINTAINERS
@@ -0,0 +1,8 @@
+CANYONLANDS BOARD
+M: Stefan Roese <sr@denx.de>
+S: Maintained
+F: board/amcc/canyonlands/
+F: include/configs/canyonlands.h
+F: configs/arches_defconfig
+F: configs/canyonlands_defconfig
+F: configs/glacier_defconfig
diff --git a/board/amcc/ebony/Kconfig b/board/amcc/ebony/Kconfig
new file mode 100644
index 0000000..cc1448f
--- /dev/null
+++ b/board/amcc/ebony/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_EBONY
+
+config SYS_BOARD
+ string
+ default "ebony"
+
+config SYS_VENDOR
+ string
+ default "amcc"
+
+config SYS_CONFIG_NAME
+ string
+ default "ebony"
+
+endif
diff --git a/board/amcc/ebony/MAINTAINERS b/board/amcc/ebony/MAINTAINERS
new file mode 100644
index 0000000..bc62851
--- /dev/null
+++ b/board/amcc/ebony/MAINTAINERS
@@ -0,0 +1,6 @@
+EBONY BOARD
+M: Stefan Roese <sr@denx.de>
+S: Maintained
+F: board/amcc/ebony/
+F: include/configs/ebony.h
+F: configs/ebony_defconfig
diff --git a/board/amcc/katmai/Kconfig b/board/amcc/katmai/Kconfig
new file mode 100644
index 0000000..2a8d783
--- /dev/null
+++ b/board/amcc/katmai/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_KATMAI
+
+config SYS_BOARD
+ string
+ default "katmai"
+
+config SYS_VENDOR
+ string
+ default "amcc"
+
+config SYS_CONFIG_NAME
+ string
+ default "katmai"
+
+endif
diff --git a/board/amcc/katmai/MAINTAINERS b/board/amcc/katmai/MAINTAINERS
new file mode 100644
index 0000000..f089352
--- /dev/null
+++ b/board/amcc/katmai/MAINTAINERS
@@ -0,0 +1,6 @@
+KATMAI BOARD
+M: Stefan Roese <sr@denx.de>
+S: Maintained
+F: board/amcc/katmai/
+F: include/configs/katmai.h
+F: configs/katmai_defconfig
diff --git a/board/amcc/kilauea/Kconfig b/board/amcc/kilauea/Kconfig
new file mode 100644
index 0000000..3564cc3
--- /dev/null
+++ b/board/amcc/kilauea/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_KILAUEA
+
+config SYS_BOARD
+ string
+ default "kilauea"
+
+config SYS_VENDOR
+ string
+ default "amcc"
+
+config SYS_CONFIG_NAME
+ string
+ default "kilauea"
+
+endif
diff --git a/board/amcc/kilauea/MAINTAINERS b/board/amcc/kilauea/MAINTAINERS
new file mode 100644
index 0000000..12bbcb1
--- /dev/null
+++ b/board/amcc/kilauea/MAINTAINERS
@@ -0,0 +1,7 @@
+KILAUEA BOARD
+M: Stefan Roese <sr@denx.de>
+S: Maintained
+F: board/amcc/kilauea/
+F: include/configs/kilauea.h
+F: configs/haleakala_defconfig
+F: configs/kilauea_defconfig
diff --git a/board/amcc/luan/Kconfig b/board/amcc/luan/Kconfig
new file mode 100644
index 0000000..7f19980
--- /dev/null
+++ b/board/amcc/luan/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_LUAN
+
+config SYS_BOARD
+ string
+ default "luan"
+
+config SYS_VENDOR
+ string
+ default "amcc"
+
+config SYS_CONFIG_NAME
+ string
+ default "luan"
+
+endif
diff --git a/board/amcc/luan/MAINTAINERS b/board/amcc/luan/MAINTAINERS
new file mode 100644
index 0000000..a23296d
--- /dev/null
+++ b/board/amcc/luan/MAINTAINERS
@@ -0,0 +1,6 @@
+LUAN BOARD
+M: John Otken <jotken@softadvances.com>
+S: Maintained
+F: board/amcc/luan/
+F: include/configs/luan.h
+F: configs/luan_defconfig
diff --git a/board/amcc/makalu/Kconfig b/board/amcc/makalu/Kconfig
new file mode 100644
index 0000000..7f95bdc
--- /dev/null
+++ b/board/amcc/makalu/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MAKALU
+
+config SYS_BOARD
+ string
+ default "makalu"
+
+config SYS_VENDOR
+ string
+ default "amcc"
+
+config SYS_CONFIG_NAME
+ string
+ default "makalu"
+
+endif
diff --git a/board/amcc/makalu/MAINTAINERS b/board/amcc/makalu/MAINTAINERS
new file mode 100644
index 0000000..ecd5e19
--- /dev/null
+++ b/board/amcc/makalu/MAINTAINERS
@@ -0,0 +1,6 @@
+MAKALU BOARD
+M: Stefan Roese <sr@denx.de>
+S: Maintained
+F: board/amcc/makalu/
+F: include/configs/makalu.h
+F: configs/makalu_defconfig
diff --git a/board/amcc/ocotea/Kconfig b/board/amcc/ocotea/Kconfig
new file mode 100644
index 0000000..5eaf812
--- /dev/null
+++ b/board/amcc/ocotea/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_OCOTEA
+
+config SYS_BOARD
+ string
+ default "ocotea"
+
+config SYS_VENDOR
+ string
+ default "amcc"
+
+config SYS_CONFIG_NAME
+ string
+ default "ocotea"
+
+endif
diff --git a/board/amcc/ocotea/MAINTAINERS b/board/amcc/ocotea/MAINTAINERS
new file mode 100644
index 0000000..34634a2
--- /dev/null
+++ b/board/amcc/ocotea/MAINTAINERS
@@ -0,0 +1,6 @@
+OCOTEA BOARD
+M: Stefan Roese <sr@denx.de>
+S: Maintained
+F: board/amcc/ocotea/
+F: include/configs/ocotea.h
+F: configs/ocotea_defconfig
diff --git a/board/amcc/redwood/Kconfig b/board/amcc/redwood/Kconfig
new file mode 100644
index 0000000..001d400
--- /dev/null
+++ b/board/amcc/redwood/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_REDWOOD
+
+config SYS_BOARD
+ string
+ default "redwood"
+
+config SYS_VENDOR
+ string
+ default "amcc"
+
+config SYS_CONFIG_NAME
+ string
+ default "redwood"
+
+endif
diff --git a/board/amcc/redwood/MAINTAINERS b/board/amcc/redwood/MAINTAINERS
new file mode 100644
index 0000000..756b301
--- /dev/null
+++ b/board/amcc/redwood/MAINTAINERS
@@ -0,0 +1,6 @@
+REDWOOD BOARD
+M: Feng Kan <fkan@amcc.com>
+S: Maintained
+F: board/amcc/redwood/
+F: include/configs/redwood.h
+F: configs/redwood_defconfig
diff --git a/board/amcc/sequoia/Kconfig b/board/amcc/sequoia/Kconfig
new file mode 100644
index 0000000..ddcaced
--- /dev/null
+++ b/board/amcc/sequoia/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_SEQUOIA
+
+config SYS_BOARD
+ string
+ default "sequoia"
+
+config SYS_VENDOR
+ string
+ default "amcc"
+
+config SYS_CONFIG_NAME
+ string
+ default "sequoia"
+
+endif
diff --git a/board/amcc/sequoia/MAINTAINERS b/board/amcc/sequoia/MAINTAINERS
new file mode 100644
index 0000000..6c28a37
--- /dev/null
+++ b/board/amcc/sequoia/MAINTAINERS
@@ -0,0 +1,9 @@
+SEQUOIA BOARD
+M: Stefan Roese <sr@denx.de>
+S: Maintained
+F: board/amcc/sequoia/
+F: include/configs/sequoia.h
+F: configs/rainier_defconfig
+F: configs/rainier_ramboot_defconfig
+F: configs/sequoia_defconfig
+F: configs/sequoia_ramboot_defconfig
diff --git a/board/amcc/taihu/Kconfig b/board/amcc/taihu/Kconfig
new file mode 100644
index 0000000..8411a82
--- /dev/null
+++ b/board/amcc/taihu/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_TAIHU
+
+config SYS_BOARD
+ string
+ default "taihu"
+
+config SYS_VENDOR
+ string
+ default "amcc"
+
+config SYS_CONFIG_NAME
+ string
+ default "taihu"
+
+endif
diff --git a/board/amcc/taihu/MAINTAINERS b/board/amcc/taihu/MAINTAINERS
new file mode 100644
index 0000000..2efc254
--- /dev/null
+++ b/board/amcc/taihu/MAINTAINERS
@@ -0,0 +1,6 @@
+TAIHU BOARD
+M: John Otken <jotken@softadvances.com>
+S: Maintained
+F: board/amcc/taihu/
+F: include/configs/taihu.h
+F: configs/taihu_defconfig
diff --git a/board/amcc/taishan/Kconfig b/board/amcc/taishan/Kconfig
new file mode 100644
index 0000000..0022063
--- /dev/null
+++ b/board/amcc/taishan/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_TAISHAN
+
+config SYS_BOARD
+ string
+ default "taishan"
+
+config SYS_VENDOR
+ string
+ default "amcc"
+
+config SYS_CONFIG_NAME
+ string
+ default "taishan"
+
+endif
diff --git a/board/amcc/taishan/MAINTAINERS b/board/amcc/taishan/MAINTAINERS
new file mode 100644
index 0000000..d9d80bf
--- /dev/null
+++ b/board/amcc/taishan/MAINTAINERS
@@ -0,0 +1,6 @@
+TAISHAN BOARD
+M: Stefan Roese <sr@denx.de>
+S: Maintained
+F: board/amcc/taishan/
+F: include/configs/taishan.h
+F: configs/taishan_defconfig
diff --git a/board/amcc/walnut/Kconfig b/board/amcc/walnut/Kconfig
new file mode 100644
index 0000000..f98cec5
--- /dev/null
+++ b/board/amcc/walnut/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_WALNUT
+
+config SYS_BOARD
+ string
+ default "walnut"
+
+config SYS_VENDOR
+ string
+ default "amcc"
+
+config SYS_CONFIG_NAME
+ string
+ default "walnut"
+
+endif
diff --git a/board/amcc/walnut/MAINTAINERS b/board/amcc/walnut/MAINTAINERS
new file mode 100644
index 0000000..2a98c85
--- /dev/null
+++ b/board/amcc/walnut/MAINTAINERS
@@ -0,0 +1,7 @@
+WALNUT BOARD
+M: Stefan Roese <sr@denx.de>
+S: Maintained
+F: board/amcc/walnut/
+F: include/configs/walnut.h
+F: configs/sycamore_defconfig
+F: configs/walnut_defconfig
diff --git a/board/amcc/yosemite/Kconfig b/board/amcc/yosemite/Kconfig
new file mode 100644
index 0000000..8aa62c0
--- /dev/null
+++ b/board/amcc/yosemite/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_YOSEMITE
+
+config SYS_BOARD
+ string
+ default "yosemite"
+
+config SYS_VENDOR
+ string
+ default "amcc"
+
+config SYS_CONFIG_NAME
+ string
+ default "yosemite"
+
+endif
diff --git a/board/amcc/yosemite/MAINTAINERS b/board/amcc/yosemite/MAINTAINERS
new file mode 100644
index 0000000..3f553e1
--- /dev/null
+++ b/board/amcc/yosemite/MAINTAINERS
@@ -0,0 +1,7 @@
+YOSEMITE BOARD
+M: Stefan Roese <sr@denx.de>
+S: Maintained
+F: board/amcc/yosemite/
+F: include/configs/yosemite.h
+F: configs/yellowstone_defconfig
+F: configs/yosemite_defconfig
diff --git a/board/amcc/yucca/Kconfig b/board/amcc/yucca/Kconfig
new file mode 100644
index 0000000..945333f
--- /dev/null
+++ b/board/amcc/yucca/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_YUCCA
+
+config SYS_BOARD
+ string
+ default "yucca"
+
+config SYS_VENDOR
+ string
+ default "amcc"
+
+config SYS_CONFIG_NAME
+ string
+ default "yucca"
+
+endif
diff --git a/board/amcc/yucca/MAINTAINERS b/board/amcc/yucca/MAINTAINERS
new file mode 100644
index 0000000..0663003
--- /dev/null
+++ b/board/amcc/yucca/MAINTAINERS
@@ -0,0 +1,6 @@
+YUCCA BOARD
+M: -
+S: Maintained
+F: board/amcc/yucca/
+F: include/configs/yucca.h
+F: configs/yucca_defconfig
diff --git a/board/armadeus/apf27/Kconfig b/board/armadeus/apf27/Kconfig
new file mode 100644
index 0000000..f2d33c6
--- /dev/null
+++ b/board/armadeus/apf27/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_APF27
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "apf27"
+
+config SYS_VENDOR
+ string
+ default "armadeus"
+
+config SYS_SOC
+ string
+ default "mx27"
+
+config SYS_CONFIG_NAME
+ string
+ default "apf27"
+
+endif
diff --git a/board/armadeus/apf27/MAINTAINERS b/board/armadeus/apf27/MAINTAINERS
new file mode 100644
index 0000000..09f0525
--- /dev/null
+++ b/board/armadeus/apf27/MAINTAINERS
@@ -0,0 +1,7 @@
+APF27 BOARD
+M: Philippe Reynes <tremyfr@yahoo.fr>
+M: Eric Jarrige <eric.jarrige@armadeus.org>
+S: Maintained
+F: board/armadeus/apf27/
+F: include/configs/apf27.h
+F: configs/apf27_defconfig
diff --git a/board/armltd/integrator/Kconfig b/board/armltd/integrator/Kconfig
new file mode 100644
index 0000000..c1ac6b1
--- /dev/null
+++ b/board/armltd/integrator/Kconfig
@@ -0,0 +1,159 @@
+if TARGET_INTEGRATORAP_CM720T
+
+config SYS_CPU
+ string
+ default "arm720t"
+
+config SYS_BOARD
+ string
+ default "integrator"
+
+config SYS_VENDOR
+ string
+ default "armltd"
+
+config SYS_CONFIG_NAME
+ string
+ default "integratorap"
+
+endif
+
+if TARGET_INTEGRATORAP_CM920T
+
+config SYS_CPU
+ string
+ default "arm920t"
+
+config SYS_BOARD
+ string
+ default "integrator"
+
+config SYS_VENDOR
+ string
+ default "armltd"
+
+config SYS_CONFIG_NAME
+ string
+ default "integratorap"
+
+endif
+
+if TARGET_INTEGRATORCP_CM920T
+
+config SYS_CPU
+ string
+ default "arm920t"
+
+config SYS_BOARD
+ string
+ default "integrator"
+
+config SYS_VENDOR
+ string
+ default "armltd"
+
+config SYS_CONFIG_NAME
+ string
+ default "integratorcp"
+
+endif
+
+if TARGET_INTEGRATORAP_CM926EJS
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "integrator"
+
+config SYS_VENDOR
+ string
+ default "armltd"
+
+config SYS_CONFIG_NAME
+ string
+ default "integratorap"
+
+endif
+
+if TARGET_INTEGRATORCP_CM926EJS
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "integrator"
+
+config SYS_VENDOR
+ string
+ default "armltd"
+
+config SYS_CONFIG_NAME
+ string
+ default "integratorcp"
+
+endif
+
+if TARGET_INTEGRATORCP_CM1136
+
+config SYS_CPU
+ string
+ default "arm1136"
+
+config SYS_BOARD
+ string
+ default "integrator"
+
+config SYS_VENDOR
+ string
+ default "armltd"
+
+config SYS_CONFIG_NAME
+ string
+ default "integratorcp"
+
+endif
+
+if TARGET_INTEGRATORAP_CM946ES
+
+config SYS_CPU
+ string
+ default "arm946es"
+
+config SYS_BOARD
+ string
+ default "integrator"
+
+config SYS_VENDOR
+ string
+ default "armltd"
+
+config SYS_CONFIG_NAME
+ string
+ default "integratorap"
+
+endif
+
+if TARGET_INTEGRATORCP_CM946ES
+
+config SYS_CPU
+ string
+ default "arm946es"
+
+config SYS_BOARD
+ string
+ default "integrator"
+
+config SYS_VENDOR
+ string
+ default "armltd"
+
+config SYS_CONFIG_NAME
+ string
+ default "integratorcp"
+
+endif
diff --git a/board/armltd/integrator/MAINTAINERS b/board/armltd/integrator/MAINTAINERS
new file mode 100644
index 0000000..8af765e
--- /dev/null
+++ b/board/armltd/integrator/MAINTAINERS
@@ -0,0 +1,14 @@
+INTEGRATOR BOARD
+M: Linus Walleij <linus.walleij@linaro.org>
+S: Maintained
+F: board/armltd/integrator/
+F: include/configs/integratorcp.h
+F: configs/integratorcp_cm1136_defconfig
+F: include/configs/integratorap.h
+F: configs/integratorap_cm720t_defconfig
+F: configs/integratorap_cm920t_defconfig
+F: configs/integratorcp_cm920t_defconfig
+F: configs/integratorap_cm926ejs_defconfig
+F: configs/integratorcp_cm926ejs_defconfig
+F: configs/integratorap_cm946es_defconfig
+F: configs/integratorcp_cm946es_defconfig
diff --git a/board/armltd/versatile/Kconfig b/board/armltd/versatile/Kconfig
new file mode 100644
index 0000000..f96d0b2
--- /dev/null
+++ b/board/armltd/versatile/Kconfig
@@ -0,0 +1,71 @@
+if TARGET_VERSATILEAB
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "versatile"
+
+config SYS_VENDOR
+ string
+ default "armltd"
+
+config SYS_SOC
+ string
+ default "versatile"
+
+config SYS_CONFIG_NAME
+ string
+ default "versatile"
+
+endif
+
+if TARGET_VERSATILEPB
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "versatile"
+
+config SYS_VENDOR
+ string
+ default "armltd"
+
+config SYS_SOC
+ string
+ default "versatile"
+
+config SYS_CONFIG_NAME
+ string
+ default "versatile"
+
+endif
+
+if TARGET_VERSATILEQEMU
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "versatile"
+
+config SYS_VENDOR
+ string
+ default "armltd"
+
+config SYS_SOC
+ string
+ default "versatile"
+
+config SYS_CONFIG_NAME
+ string
+ default "versatile"
+
+endif
diff --git a/board/armltd/versatile/MAINTAINERS b/board/armltd/versatile/MAINTAINERS
new file mode 100644
index 0000000..f390e53
--- /dev/null
+++ b/board/armltd/versatile/MAINTAINERS
@@ -0,0 +1,8 @@
+VERSATILE BOARD
+M: -
+S: Maintained
+F: board/armltd/versatile/
+F: include/configs/versatile.h
+F: configs/versatileab_defconfig
+F: configs/versatilepb_defconfig
+F: configs/versatileqemu_defconfig
diff --git a/board/armltd/vexpress/Kconfig b/board/armltd/vexpress/Kconfig
new file mode 100644
index 0000000..e49e871
--- /dev/null
+++ b/board/armltd/vexpress/Kconfig
@@ -0,0 +1,59 @@
+if TARGET_VEXPRESS_CA15_TC2
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "vexpress"
+
+config SYS_VENDOR
+ string
+ default "armltd"
+
+config SYS_CONFIG_NAME
+ string
+ default "vexpress_ca15_tc2"
+
+endif
+
+if TARGET_VEXPRESS_CA5X2
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "vexpress"
+
+config SYS_VENDOR
+ string
+ default "armltd"
+
+config SYS_CONFIG_NAME
+ string
+ default "vexpress_ca5x2"
+
+endif
+
+if TARGET_VEXPRESS_CA9X4
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "vexpress"
+
+config SYS_VENDOR
+ string
+ default "armltd"
+
+config SYS_CONFIG_NAME
+ string
+ default "vexpress_ca9x4"
+
+endif
diff --git a/board/armltd/vexpress/MAINTAINERS b/board/armltd/vexpress/MAINTAINERS
new file mode 100644
index 0000000..cfde7f2
--- /dev/null
+++ b/board/armltd/vexpress/MAINTAINERS
@@ -0,0 +1,14 @@
+VEXPRESS BOARD
+M: -
+S: Maintained
+F: board/armltd/vexpress/
+F: include/configs/vexpress_ca15_tc2.h
+F: configs/vexpress_ca15_tc2_defconfig
+
+VEXPRESS_CA5X2 BOARD
+M: Matt Waddel <matt.waddel@linaro.org>
+S: Maintained
+F: include/configs/vexpress_ca5x2.h
+F: configs/vexpress_ca5x2_defconfig
+F: include/configs/vexpress_ca9x4.h
+F: configs/vexpress_ca9x4_defconfig
diff --git a/board/armltd/vexpress64/Kconfig b/board/armltd/vexpress64/Kconfig
new file mode 100644
index 0000000..91eb8d2
--- /dev/null
+++ b/board/armltd/vexpress64/Kconfig
@@ -0,0 +1,39 @@
+if TARGET_VEXPRESS_AEMV8A
+
+config SYS_CPU
+ string
+ default "armv8"
+
+config SYS_BOARD
+ string
+ default "vexpress64"
+
+config SYS_VENDOR
+ string
+ default "armltd"
+
+config SYS_CONFIG_NAME
+ string
+ default "vexpress_aemv8a"
+
+endif
+
+if TARGET_VEXPRESS_AEMV8A_SEMI
+
+config SYS_CPU
+ string
+ default "armv8"
+
+config SYS_BOARD
+ string
+ default "vexpress64"
+
+config SYS_VENDOR
+ string
+ default "armltd"
+
+config SYS_CONFIG_NAME
+ string
+ default "vexpress_aemv8a"
+
+endif
diff --git a/board/armltd/vexpress64/MAINTAINERS b/board/armltd/vexpress64/MAINTAINERS
new file mode 100644
index 0000000..97c4b0e
--- /dev/null
+++ b/board/armltd/vexpress64/MAINTAINERS
@@ -0,0 +1,11 @@
+VEXPRESS64 BOARD
+M: David Feng <fenghua@phytium.com.cn>
+S: Maintained
+F: board/armltd/vexpress64/
+F: include/configs/vexpress_aemv8a.h
+F: configs/vexpress_aemv8a_defconfig
+
+VEXPRESS_AEMV8A_SEMI BOARD
+M: Steve Rae <srae@broadcom.com>
+S: Maintained
+F: configs/vexpress_aemv8a_semi_defconfig
diff --git a/board/astro/mcf5373l/Kconfig b/board/astro/mcf5373l/Kconfig
new file mode 100644
index 0000000..6e947dc
--- /dev/null
+++ b/board/astro/mcf5373l/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_ASTRO_MCF5373L
+
+config SYS_CPU
+ string
+ default "mcf532x"
+
+config SYS_BOARD
+ string
+ default "mcf5373l"
+
+config SYS_VENDOR
+ string
+ default "astro"
+
+config SYS_CONFIG_NAME
+ string
+ default "astro_mcf5373l"
+
+endif
diff --git a/board/astro/mcf5373l/MAINTAINERS b/board/astro/mcf5373l/MAINTAINERS
new file mode 100644
index 0000000..6c23da7
--- /dev/null
+++ b/board/astro/mcf5373l/MAINTAINERS
@@ -0,0 +1,6 @@
+MCF5373L BOARD
+M: Wolfgang Wegner <w.wegner@astro-kom.de>
+S: Maintained
+F: board/astro/mcf5373l/
+F: include/configs/astro_mcf5373l.h
+F: configs/astro_mcf5373l_defconfig
diff --git a/board/atc/Kconfig b/board/atc/Kconfig
new file mode 100644
index 0000000..826753f
--- /dev/null
+++ b/board/atc/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_ATC
+
+config SYS_BOARD
+ string
+ default "atc"
+
+config SYS_CONFIG_NAME
+ string
+ default "atc"
+
+endif
diff --git a/board/atc/MAINTAINERS b/board/atc/MAINTAINERS
new file mode 100644
index 0000000..1c5d61e
--- /dev/null
+++ b/board/atc/MAINTAINERS
@@ -0,0 +1,6 @@
+ATC BOARD
+M: Wolfgang Denk <wd@denx.de>
+S: Maintained
+F: board/atc/
+F: include/configs/atc.h
+F: configs/atc_defconfig
diff --git a/board/atmark-techno/armadillo-800eva/Kconfig b/board/atmark-techno/armadillo-800eva/Kconfig
new file mode 100644
index 0000000..c8f89fe
--- /dev/null
+++ b/board/atmark-techno/armadillo-800eva/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_ARMADILLO_800EVA
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "armadillo-800eva"
+
+config SYS_VENDOR
+ string
+ default "atmark-techno"
+
+config SYS_SOC
+ string
+ default "rmobile"
+
+config SYS_CONFIG_NAME
+ string
+ default "armadillo-800eva"
+
+endif
diff --git a/board/atmark-techno/armadillo-800eva/MAINTAINERS b/board/atmark-techno/armadillo-800eva/MAINTAINERS
new file mode 100644
index 0000000..6f547d8
--- /dev/null
+++ b/board/atmark-techno/armadillo-800eva/MAINTAINERS
@@ -0,0 +1,6 @@
+ARMADILLO-800EVA BOARD
+M: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
+S: Maintained
+F: board/atmark-techno/armadillo-800eva/
+F: include/configs/armadillo-800eva.h
+F: configs/armadillo-800eva_defconfig
diff --git a/board/atmel/at91rm9200ek/Kconfig b/board/atmel/at91rm9200ek/Kconfig
new file mode 100644
index 0000000..d7ee4f4
--- /dev/null
+++ b/board/atmel/at91rm9200ek/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_AT91RM9200EK
+
+config SYS_CPU
+ string
+ default "arm920t"
+
+config SYS_BOARD
+ string
+ default "at91rm9200ek"
+
+config SYS_VENDOR
+ string
+ default "atmel"
+
+config SYS_SOC
+ string
+ default "at91"
+
+config SYS_CONFIG_NAME
+ string
+ default "at91rm9200ek"
+
+endif
diff --git a/board/atmel/at91rm9200ek/MAINTAINERS b/board/atmel/at91rm9200ek/MAINTAINERS
new file mode 100644
index 0000000..d2a479b
--- /dev/null
+++ b/board/atmel/at91rm9200ek/MAINTAINERS
@@ -0,0 +1,7 @@
+AT91RM9200EK BOARD
+M: Andreas Bießmann <andreas.devel@gmail.com>
+S: Maintained
+F: board/atmel/at91rm9200ek/
+F: include/configs/at91rm9200ek.h
+F: configs/at91rm9200ek_defconfig
+F: configs/at91rm9200ek_ram_defconfig
diff --git a/board/atmel/at91sam9260ek/Kconfig b/board/atmel/at91sam9260ek/Kconfig
new file mode 100644
index 0000000..14af5bc
--- /dev/null
+++ b/board/atmel/at91sam9260ek/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_AT91SAM9260EK
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "at91sam9260ek"
+
+config SYS_VENDOR
+ string
+ default "atmel"
+
+config SYS_SOC
+ string
+ default "at91"
+
+config SYS_CONFIG_NAME
+ string
+ default "at91sam9260ek"
+
+endif
diff --git a/board/atmel/at91sam9260ek/MAINTAINERS b/board/atmel/at91sam9260ek/MAINTAINERS
new file mode 100644
index 0000000..0c7c721
--- /dev/null
+++ b/board/atmel/at91sam9260ek/MAINTAINERS
@@ -0,0 +1,16 @@
+AT91SAM9260EK BOARD
+M: Stelian Pop <stelian@popies.net>
+S: Maintained
+F: board/atmel/at91sam9260ek/
+F: include/configs/at91sam9260ek.h
+F: configs/at91sam9260ek_dataflash_cs0_defconfig
+F: configs/at91sam9260ek_dataflash_cs1_defconfig
+F: configs/at91sam9260ek_nandflash_defconfig
+F: configs/at91sam9g20ek_2mmc_nandflash_defconfig
+F: configs/at91sam9g20ek_dataflash_cs0_defconfig
+F: configs/at91sam9g20ek_dataflash_cs1_defconfig
+F: configs/at91sam9g20ek_mmc_defconfig
+F: configs/at91sam9g20ek_nandflash_defconfig
+F: configs/at91sam9xeek_dataflash_cs0_defconfig
+F: configs/at91sam9xeek_dataflash_cs1_defconfig
+F: configs/at91sam9xeek_nandflash_defconfig
diff --git a/board/atmel/at91sam9261ek/Kconfig b/board/atmel/at91sam9261ek/Kconfig
new file mode 100644
index 0000000..63dcdd8
--- /dev/null
+++ b/board/atmel/at91sam9261ek/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_AT91SAM9261EK
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "at91sam9261ek"
+
+config SYS_VENDOR
+ string
+ default "atmel"
+
+config SYS_SOC
+ string
+ default "at91"
+
+config SYS_CONFIG_NAME
+ string
+ default "at91sam9261ek"
+
+endif
diff --git a/board/atmel/at91sam9261ek/MAINTAINERS b/board/atmel/at91sam9261ek/MAINTAINERS
new file mode 100644
index 0000000..682dfdf
--- /dev/null
+++ b/board/atmel/at91sam9261ek/MAINTAINERS
@@ -0,0 +1,11 @@
+AT91SAM9261EK BOARD
+M: Stelian Pop <stelian@popies.net>
+S: Maintained
+F: board/atmel/at91sam9261ek/
+F: include/configs/at91sam9261ek.h
+F: configs/at91sam9261ek_dataflash_cs0_defconfig
+F: configs/at91sam9261ek_dataflash_cs3_defconfig
+F: configs/at91sam9261ek_nandflash_defconfig
+F: configs/at91sam9g10ek_dataflash_cs0_defconfig
+F: configs/at91sam9g10ek_dataflash_cs3_defconfig
+F: configs/at91sam9g10ek_nandflash_defconfig
diff --git a/board/atmel/at91sam9263ek/Kconfig b/board/atmel/at91sam9263ek/Kconfig
new file mode 100644
index 0000000..fa0a58a
--- /dev/null
+++ b/board/atmel/at91sam9263ek/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_AT91SAM9263EK
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "at91sam9263ek"
+
+config SYS_VENDOR
+ string
+ default "atmel"
+
+config SYS_SOC
+ string
+ default "at91"
+
+config SYS_CONFIG_NAME
+ string
+ default "at91sam9263ek"
+
+endif
diff --git a/board/atmel/at91sam9263ek/MAINTAINERS b/board/atmel/at91sam9263ek/MAINTAINERS
new file mode 100644
index 0000000..3b4b654
--- /dev/null
+++ b/board/atmel/at91sam9263ek/MAINTAINERS
@@ -0,0 +1,10 @@
+AT91SAM9263EK BOARD
+M: Stelian Pop <stelian@popies.net>
+S: Maintained
+F: board/atmel/at91sam9263ek/
+F: include/configs/at91sam9263ek.h
+F: configs/at91sam9263ek_dataflash_defconfig
+F: configs/at91sam9263ek_dataflash_cs0_defconfig
+F: configs/at91sam9263ek_nandflash_defconfig
+F: configs/at91sam9263ek_norflash_defconfig
+F: configs/at91sam9263ek_norflash_boot_defconfig
diff --git a/board/atmel/at91sam9m10g45ek/Kconfig b/board/atmel/at91sam9m10g45ek/Kconfig
new file mode 100644
index 0000000..8567f95
--- /dev/null
+++ b/board/atmel/at91sam9m10g45ek/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_AT91SAM9M10G45EK
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "at91sam9m10g45ek"
+
+config SYS_VENDOR
+ string
+ default "atmel"
+
+config SYS_SOC
+ string
+ default "at91"
+
+config SYS_CONFIG_NAME
+ string
+ default "at91sam9m10g45ek"
+
+endif
diff --git a/board/atmel/at91sam9m10g45ek/MAINTAINERS b/board/atmel/at91sam9m10g45ek/MAINTAINERS
new file mode 100644
index 0000000..6389e6a
--- /dev/null
+++ b/board/atmel/at91sam9m10g45ek/MAINTAINERS
@@ -0,0 +1,7 @@
+AT91SAM9M10G45EK BOARD
+M: Bo Shen <voice.shen@atmel.com>
+S: Maintained
+F: board/atmel/at91sam9m10g45ek/
+F: include/configs/at91sam9m10g45ek.h
+F: configs/at91sam9m10g45ek_mmc_defconfig
+F: configs/at91sam9m10g45ek_nandflash_defconfig
diff --git a/board/atmel/at91sam9n12ek/Kconfig b/board/atmel/at91sam9n12ek/Kconfig
new file mode 100644
index 0000000..4fc714b
--- /dev/null
+++ b/board/atmel/at91sam9n12ek/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_AT91SAM9N12EK
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "at91sam9n12ek"
+
+config SYS_VENDOR
+ string
+ default "atmel"
+
+config SYS_SOC
+ string
+ default "at91"
+
+config SYS_CONFIG_NAME
+ string
+ default "at91sam9n12ek"
+
+endif
diff --git a/board/atmel/at91sam9n12ek/MAINTAINERS b/board/atmel/at91sam9n12ek/MAINTAINERS
new file mode 100644
index 0000000..82a9192
--- /dev/null
+++ b/board/atmel/at91sam9n12ek/MAINTAINERS
@@ -0,0 +1,8 @@
+AT91SAM9N12EK BOARD
+M: Josh Wu <josh.wu@atmel.com>
+S: Maintained
+F: board/atmel/at91sam9n12ek/
+F: include/configs/at91sam9n12ek.h
+F: configs/at91sam9n12ek_mmc_defconfig
+F: configs/at91sam9n12ek_nandflash_defconfig
+F: configs/at91sam9n12ek_spiflash_defconfig
diff --git a/board/atmel/at91sam9rlek/Kconfig b/board/atmel/at91sam9rlek/Kconfig
new file mode 100644
index 0000000..178f80d
--- /dev/null
+++ b/board/atmel/at91sam9rlek/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_AT91SAM9RLEK
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "at91sam9rlek"
+
+config SYS_VENDOR
+ string
+ default "atmel"
+
+config SYS_SOC
+ string
+ default "at91"
+
+config SYS_CONFIG_NAME
+ string
+ default "at91sam9rlek"
+
+endif
diff --git a/board/atmel/at91sam9rlek/MAINTAINERS b/board/atmel/at91sam9rlek/MAINTAINERS
new file mode 100644
index 0000000..7dd8ef7
--- /dev/null
+++ b/board/atmel/at91sam9rlek/MAINTAINERS
@@ -0,0 +1,7 @@
+AT91SAM9RLEK BOARD
+M: Stelian Pop <stelian@popies.net>
+S: Maintained
+F: board/atmel/at91sam9rlek/
+F: include/configs/at91sam9rlek.h
+F: configs/at91sam9rlek_dataflash_defconfig
+F: configs/at91sam9rlek_nandflash_defconfig
diff --git a/board/atmel/at91sam9x5ek/Kconfig b/board/atmel/at91sam9x5ek/Kconfig
new file mode 100644
index 0000000..0a0b132
--- /dev/null
+++ b/board/atmel/at91sam9x5ek/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_AT91SAM9X5EK
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "at91sam9x5ek"
+
+config SYS_VENDOR
+ string
+ default "atmel"
+
+config SYS_SOC
+ string
+ default "at91"
+
+config SYS_CONFIG_NAME
+ string
+ default "at91sam9x5ek"
+
+endif
diff --git a/board/atmel/at91sam9x5ek/MAINTAINERS b/board/atmel/at91sam9x5ek/MAINTAINERS
new file mode 100644
index 0000000..5fea489
--- /dev/null
+++ b/board/atmel/at91sam9x5ek/MAINTAINERS
@@ -0,0 +1,9 @@
+AT91SAM9X5EK BOARD
+M: Bo Shen <voice.shen@atmel.com>
+S: Maintained
+F: board/atmel/at91sam9x5ek/
+F: include/configs/at91sam9x5ek.h
+F: configs/at91sam9x5ek_dataflash_defconfig
+F: configs/at91sam9x5ek_mmc_defconfig
+F: configs/at91sam9x5ek_nandflash_defconfig
+F: configs/at91sam9x5ek_spiflash_defconfig
diff --git a/board/atmel/atngw100/Kconfig b/board/atmel/atngw100/Kconfig
new file mode 100644
index 0000000..a966b31
--- /dev/null
+++ b/board/atmel/atngw100/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_ATNGW100
+
+config SYS_BOARD
+ string
+ default "atngw100"
+
+config SYS_VENDOR
+ string
+ default "atmel"
+
+config SYS_SOC
+ string
+ default "at32ap700x"
+
+config SYS_CONFIG_NAME
+ string
+ default "atngw100"
+
+endif
diff --git a/board/atmel/atngw100/MAINTAINERS b/board/atmel/atngw100/MAINTAINERS
new file mode 100644
index 0000000..dd698ea
--- /dev/null
+++ b/board/atmel/atngw100/MAINTAINERS
@@ -0,0 +1,6 @@
+ATNGW100 BOARD
+M: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
+S: Orphan (since 2014-06)
+F: board/atmel/atngw100/
+F: include/configs/atngw100.h
+F: configs/atngw100_defconfig
diff --git a/board/atmel/atngw100mkii/Kconfig b/board/atmel/atngw100mkii/Kconfig
new file mode 100644
index 0000000..dcea07e
--- /dev/null
+++ b/board/atmel/atngw100mkii/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_ATNGW100MKII
+
+config SYS_BOARD
+ string
+ default "atngw100mkii"
+
+config SYS_VENDOR
+ string
+ default "atmel"
+
+config SYS_SOC
+ string
+ default "at32ap700x"
+
+config SYS_CONFIG_NAME
+ string
+ default "atngw100mkii"
+
+endif
diff --git a/board/atmel/atngw100mkii/MAINTAINERS b/board/atmel/atngw100mkii/MAINTAINERS
new file mode 100644
index 0000000..212363e
--- /dev/null
+++ b/board/atmel/atngw100mkii/MAINTAINERS
@@ -0,0 +1,6 @@
+ATNGW100MKII BOARD
+M: Andreas Bießmann <andreas.devel@googlemail.com>
+S: Maintained
+F: board/atmel/atngw100mkii/
+F: include/configs/atngw100mkii.h
+F: configs/atngw100mkii_defconfig
diff --git a/board/atmel/atstk1000/Kconfig b/board/atmel/atstk1000/Kconfig
new file mode 100644
index 0000000..1a24409
--- /dev/null
+++ b/board/atmel/atstk1000/Kconfig
@@ -0,0 +1,79 @@
+if TARGET_ATSTK1002
+
+config SYS_BOARD
+ string
+ default "atstk1000"
+
+config SYS_VENDOR
+ string
+ default "atmel"
+
+config SYS_SOC
+ string
+ default "at32ap700x"
+
+config SYS_CONFIG_NAME
+ string
+ default "atstk1002"
+
+endif
+
+if TARGET_ATSTK1003
+
+config SYS_BOARD
+ string
+ default "atstk1000"
+
+config SYS_VENDOR
+ string
+ default "atmel"
+
+config SYS_SOC
+ string
+ default "at32ap700x"
+
+config SYS_CONFIG_NAME
+ string
+ default "atstk1003"
+
+endif
+
+if TARGET_ATSTK1004
+
+config SYS_BOARD
+ string
+ default "atstk1000"
+
+config SYS_VENDOR
+ string
+ default "atmel"
+
+config SYS_SOC
+ string
+ default "at32ap700x"
+
+config SYS_CONFIG_NAME
+ string
+ default "atstk1004"
+
+endif
+
+if TARGET_ATSTK1006
+
+config SYS_BOARD
+ string
+ default "atstk1000"
+
+config SYS_VENDOR
+ string
+ default "atmel"
+
+config SYS_SOC
+ string
+ default "at32ap700x"
+
+config SYS_CONFIG_NAME
+ string
+ default "atstk1006"
+
+endif
diff --git a/board/atmel/atstk1000/MAINTAINERS b/board/atmel/atstk1000/MAINTAINERS
new file mode 100644
index 0000000..76365b0
--- /dev/null
+++ b/board/atmel/atstk1000/MAINTAINERS
@@ -0,0 +1,12 @@
+ATSTK1000 BOARD
+M: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
+S: Orphan (since 2014-06)
+F: board/atmel/atstk1000/
+F: include/configs/atstk1002.h
+F: configs/atstk1002_defconfig
+F: include/configs/atstk1003.h
+F: configs/atstk1003_defconfig
+F: include/configs/atstk1004.h
+F: configs/atstk1004_defconfig
+F: include/configs/atstk1006.h
+F: configs/atstk1006_defconfig
diff --git a/board/atmel/sama5d3_xplained/Kconfig b/board/atmel/sama5d3_xplained/Kconfig
new file mode 100644
index 0000000..603b241
--- /dev/null
+++ b/board/atmel/sama5d3_xplained/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_SAMA5D3_XPLAINED
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "sama5d3_xplained"
+
+config SYS_VENDOR
+ string
+ default "atmel"
+
+config SYS_SOC
+ string
+ default "at91"
+
+config SYS_CONFIG_NAME
+ string
+ default "sama5d3_xplained"
+
+endif
diff --git a/board/atmel/sama5d3_xplained/MAINTAINERS b/board/atmel/sama5d3_xplained/MAINTAINERS
new file mode 100644
index 0000000..8a09c19
--- /dev/null
+++ b/board/atmel/sama5d3_xplained/MAINTAINERS
@@ -0,0 +1,7 @@
+SAMA5D3_XPLAINED BOARD
+M: Bo Shen <voice.shen@atmel.com>
+S: Maintained
+F: board/atmel/sama5d3_xplained/
+F: include/configs/sama5d3_xplained.h
+F: configs/sama5d3_xplained_mmc_defconfig
+F: configs/sama5d3_xplained_nandflash_defconfig
diff --git a/board/atmel/sama5d3xek/Kconfig b/board/atmel/sama5d3xek/Kconfig
new file mode 100644
index 0000000..5b4eb6f
--- /dev/null
+++ b/board/atmel/sama5d3xek/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_SAMA5D3XEK
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "sama5d3xek"
+
+config SYS_VENDOR
+ string
+ default "atmel"
+
+config SYS_SOC
+ string
+ default "at91"
+
+config SYS_CONFIG_NAME
+ string
+ default "sama5d3xek"
+
+endif
diff --git a/board/atmel/sama5d3xek/MAINTAINERS b/board/atmel/sama5d3xek/MAINTAINERS
new file mode 100644
index 0000000..560303c
--- /dev/null
+++ b/board/atmel/sama5d3xek/MAINTAINERS
@@ -0,0 +1,8 @@
+SAMA5D3XEK BOARD
+M: Bo Shen <voice.shen@atmel.com>
+S: Maintained
+F: board/atmel/sama5d3xek/
+F: include/configs/sama5d3xek.h
+F: configs/sama5d3xek_mmc_defconfig
+F: configs/sama5d3xek_nandflash_defconfig
+F: configs/sama5d3xek_spiflash_defconfig
diff --git a/board/avionic-design/medcom-wide/Kconfig b/board/avionic-design/medcom-wide/Kconfig
new file mode 100644
index 0000000..2472fe2
--- /dev/null
+++ b/board/avionic-design/medcom-wide/Kconfig
@@ -0,0 +1,24 @@
+if TARGET_MEDCOM_WIDE
+
+config SYS_CPU
+ string
+ default "arm720t" if SPL_BUILD
+ default "armv7" if !SPL_BUILD
+
+config SYS_BOARD
+ string
+ default "medcom-wide"
+
+config SYS_VENDOR
+ string
+ default "avionic-design"
+
+config SYS_SOC
+ string
+ default "tegra20"
+
+config SYS_CONFIG_NAME
+ string
+ default "medcom-wide"
+
+endif
diff --git a/board/avionic-design/medcom-wide/MAINTAINERS b/board/avionic-design/medcom-wide/MAINTAINERS
new file mode 100644
index 0000000..0a00fcf
--- /dev/null
+++ b/board/avionic-design/medcom-wide/MAINTAINERS
@@ -0,0 +1,6 @@
+MEDCOM-WIDE BOARD
+M: Alban Bedel <alban.bedel@avionic-design.de>
+S: Maintained
+F: board/avionic-design/medcom-wide/
+F: include/configs/medcom-wide.h
+F: configs/medcom-wide_defconfig
diff --git a/board/avionic-design/plutux/Kconfig b/board/avionic-design/plutux/Kconfig
new file mode 100644
index 0000000..a697a54
--- /dev/null
+++ b/board/avionic-design/plutux/Kconfig
@@ -0,0 +1,24 @@
+if TARGET_PLUTUX
+
+config SYS_CPU
+ string
+ default "arm720t" if SPL_BUILD
+ default "armv7" if !SPL_BUILD
+
+config SYS_BOARD
+ string
+ default "plutux"
+
+config SYS_VENDOR
+ string
+ default "avionic-design"
+
+config SYS_SOC
+ string
+ default "tegra20"
+
+config SYS_CONFIG_NAME
+ string
+ default "plutux"
+
+endif
diff --git a/board/avionic-design/plutux/MAINTAINERS b/board/avionic-design/plutux/MAINTAINERS
new file mode 100644
index 0000000..e8ef509
--- /dev/null
+++ b/board/avionic-design/plutux/MAINTAINERS
@@ -0,0 +1,6 @@
+PLUTUX BOARD
+M: Alban Bedel <alban.bedel@avionic-design.de>
+S: Maintained
+F: board/avionic-design/plutux/
+F: include/configs/plutux.h
+F: configs/plutux_defconfig
diff --git a/board/avionic-design/tec-ng/Kconfig b/board/avionic-design/tec-ng/Kconfig
new file mode 100644
index 0000000..f52edda
--- /dev/null
+++ b/board/avionic-design/tec-ng/Kconfig
@@ -0,0 +1,24 @@
+if TARGET_TEC_NG
+
+config SYS_CPU
+ string
+ default "arm720t" if SPL_BUILD
+ default "armv7" if !SPL_BUILD
+
+config SYS_BOARD
+ string
+ default "tec-ng"
+
+config SYS_VENDOR
+ string
+ default "avionic-design"
+
+config SYS_SOC
+ string
+ default "tegra30"
+
+config SYS_CONFIG_NAME
+ string
+ default "tec-ng"
+
+endif
diff --git a/board/avionic-design/tec-ng/MAINTAINERS b/board/avionic-design/tec-ng/MAINTAINERS
new file mode 100644
index 0000000..5cbdf8e
--- /dev/null
+++ b/board/avionic-design/tec-ng/MAINTAINERS
@@ -0,0 +1,6 @@
+TEC-NG BOARD
+M: Alban Bedel <alban.bedel@avionic-design.de>
+S: Maintained
+F: board/avionic-design/tec-ng/
+F: include/configs/tec-ng.h
+F: configs/tec-ng_defconfig
diff --git a/board/avionic-design/tec/Kconfig b/board/avionic-design/tec/Kconfig
new file mode 100644
index 0000000..d19e3f4
--- /dev/null
+++ b/board/avionic-design/tec/Kconfig
@@ -0,0 +1,24 @@
+if TARGET_TEC
+
+config SYS_CPU
+ string
+ default "arm720t" if SPL_BUILD
+ default "armv7" if !SPL_BUILD
+
+config SYS_BOARD
+ string
+ default "tec"
+
+config SYS_VENDOR
+ string
+ default "avionic-design"
+
+config SYS_SOC
+ string
+ default "tegra20"
+
+config SYS_CONFIG_NAME
+ string
+ default "tec"
+
+endif
diff --git a/board/avionic-design/tec/MAINTAINERS b/board/avionic-design/tec/MAINTAINERS
new file mode 100644
index 0000000..10f1aac
--- /dev/null
+++ b/board/avionic-design/tec/MAINTAINERS
@@ -0,0 +1,6 @@
+TEC BOARD
+M: Alban Bedel <alban.bedel@avionic-design.de>
+S: Maintained
+F: board/avionic-design/tec/
+F: include/configs/tec.h
+F: configs/tec_defconfig
diff --git a/board/avnet/fx12mm/Kconfig b/board/avnet/fx12mm/Kconfig
new file mode 100644
index 0000000..7b1687e
--- /dev/null
+++ b/board/avnet/fx12mm/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_FX12MM
+
+config SYS_BOARD
+ string
+ default "fx12mm"
+
+config SYS_VENDOR
+ string
+ default "avnet"
+
+config SYS_CONFIG_NAME
+ string
+ default "fx12mm"
+
+endif
diff --git a/board/avnet/fx12mm/MAINTAINERS b/board/avnet/fx12mm/MAINTAINERS
new file mode 100644
index 0000000..c92e258
--- /dev/null
+++ b/board/avnet/fx12mm/MAINTAINERS
@@ -0,0 +1,7 @@
+FX12MM BOARD
+M: Georg Schardt <schardt@team-ctech.de>
+S: Maintained
+F: board/avnet/fx12mm/
+F: include/configs/fx12mm.h
+F: configs/fx12mm_defconfig
+F: configs/fx12mm_flash_defconfig
diff --git a/board/avnet/v5fx30teval/Kconfig b/board/avnet/v5fx30teval/Kconfig
new file mode 100644
index 0000000..8ae22e9
--- /dev/null
+++ b/board/avnet/v5fx30teval/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_V5FX30TEVAL
+
+config SYS_BOARD
+ string
+ default "v5fx30teval"
+
+config SYS_VENDOR
+ string
+ default "avnet"
+
+config SYS_CONFIG_NAME
+ string
+ default "v5fx30teval"
+
+endif
diff --git a/board/avnet/v5fx30teval/MAINTAINERS b/board/avnet/v5fx30teval/MAINTAINERS
new file mode 100644
index 0000000..91dde7a
--- /dev/null
+++ b/board/avnet/v5fx30teval/MAINTAINERS
@@ -0,0 +1,7 @@
+V5FX30TEVAL BOARD
+M: Ricardo Ribalda <ricardo.ribalda@uam.es>
+S: Maintained
+F: board/avnet/v5fx30teval/
+F: include/configs/v5fx30teval.h
+F: configs/v5fx30teval_defconfig
+F: configs/v5fx30teval_flash_defconfig
diff --git a/board/balloon3/Kconfig b/board/balloon3/Kconfig
new file mode 100644
index 0000000..aee2193
--- /dev/null
+++ b/board/balloon3/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_BALLOON3
+
+config SYS_CPU
+ string
+ default "pxa"
+
+config SYS_BOARD
+ string
+ default "balloon3"
+
+config SYS_CONFIG_NAME
+ string
+ default "balloon3"
+
+endif
diff --git a/board/balloon3/MAINTAINERS b/board/balloon3/MAINTAINERS
new file mode 100644
index 0000000..df9a5bb
--- /dev/null
+++ b/board/balloon3/MAINTAINERS
@@ -0,0 +1,6 @@
+BALLOON3 BOARD
+M: Marek Vasut <marek.vasut@gmail.com>
+S: Maintained
+F: board/balloon3/
+F: include/configs/balloon3.h
+F: configs/balloon3_defconfig
diff --git a/board/barco/titanium/Kconfig b/board/barco/titanium/Kconfig
new file mode 100644
index 0000000..a2ddd87
--- /dev/null
+++ b/board/barco/titanium/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_TITANIUM
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "titanium"
+
+config SYS_VENDOR
+ string
+ default "barco"
+
+config SYS_SOC
+ string
+ default "mx6"
+
+config SYS_CONFIG_NAME
+ string
+ default "titanium"
+
+endif
diff --git a/board/barco/titanium/MAINTAINERS b/board/barco/titanium/MAINTAINERS
new file mode 100644
index 0000000..7e9913f
--- /dev/null
+++ b/board/barco/titanium/MAINTAINERS
@@ -0,0 +1,6 @@
+TITANIUM BOARD
+M: Stefan Roese <sr@denx.de>
+S: Maintained
+F: board/barco/titanium/
+F: include/configs/titanium.h
+F: configs/titanium_defconfig
diff --git a/board/bc3450/Kconfig b/board/bc3450/Kconfig
new file mode 100644
index 0000000..ba058db
--- /dev/null
+++ b/board/bc3450/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_BC3450
+
+config SYS_BOARD
+ string
+ default "bc3450"
+
+config SYS_CONFIG_NAME
+ string
+ default "BC3450"
+
+endif
diff --git a/board/bc3450/MAINTAINERS b/board/bc3450/MAINTAINERS
new file mode 100644
index 0000000..e2a8363
--- /dev/null
+++ b/board/bc3450/MAINTAINERS
@@ -0,0 +1,6 @@
+BC3450 BOARD
+M: -
+S: Maintained
+F: board/bc3450/
+F: include/configs/BC3450.h
+F: configs/BC3450_defconfig
diff --git a/board/bct-brettl2/Kconfig b/board/bct-brettl2/Kconfig
new file mode 100644
index 0000000..c3e3837
--- /dev/null
+++ b/board/bct-brettl2/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_BCT_BRETTL2
+
+config SYS_BOARD
+ string
+ default "bct-brettl2"
+
+config SYS_CONFIG_NAME
+ string
+ default "bct-brettl2"
+
+endif
diff --git a/board/bct-brettl2/MAINTAINERS b/board/bct-brettl2/MAINTAINERS
new file mode 100644
index 0000000..32245d4
--- /dev/null
+++ b/board/bct-brettl2/MAINTAINERS
@@ -0,0 +1,6 @@
+BCT-BRETTL2 BOARD
+M: Peter Meerwald <devel@bct-electronic.com>
+S: Maintained
+F: board/bct-brettl2/
+F: include/configs/bct-brettl2.h
+F: configs/bct-brettl2_defconfig
diff --git a/board/bf506f-ezkit/Kconfig b/board/bf506f-ezkit/Kconfig
new file mode 100644
index 0000000..749ad2b
--- /dev/null
+++ b/board/bf506f-ezkit/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_BF506F_EZKIT
+
+config SYS_BOARD
+ string
+ default "bf506f-ezkit"
+
+config SYS_CONFIG_NAME
+ string
+ default "bf506f-ezkit"
+
+endif
diff --git a/board/bf506f-ezkit/MAINTAINERS b/board/bf506f-ezkit/MAINTAINERS
new file mode 100644
index 0000000..aaf1b7e
--- /dev/null
+++ b/board/bf506f-ezkit/MAINTAINERS
@@ -0,0 +1,6 @@
+BF506F-EZKIT BOARD
+M: Sonic Zhang <sonic.adi@gmail.com>
+S: Maintained
+F: board/bf506f-ezkit/
+F: include/configs/bf506f-ezkit.h
+F: configs/bf506f-ezkit_defconfig
diff --git a/board/bf518f-ezbrd/Kconfig b/board/bf518f-ezbrd/Kconfig
new file mode 100644
index 0000000..5656d1c
--- /dev/null
+++ b/board/bf518f-ezbrd/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_BF518F_EZBRD
+
+config SYS_BOARD
+ string
+ default "bf518f-ezbrd"
+
+config SYS_CONFIG_NAME
+ string
+ default "bf518f-ezbrd"
+
+endif
diff --git a/board/bf518f-ezbrd/MAINTAINERS b/board/bf518f-ezbrd/MAINTAINERS
new file mode 100644
index 0000000..6727ae4
--- /dev/null
+++ b/board/bf518f-ezbrd/MAINTAINERS
@@ -0,0 +1,6 @@
+BF518F-EZBRD BOARD
+M: Sonic Zhang <sonic.adi@gmail.com>
+S: Maintained
+F: board/bf518f-ezbrd/
+F: include/configs/bf518f-ezbrd.h
+F: configs/bf518f-ezbrd_defconfig
diff --git a/board/bf525-ucr2/Kconfig b/board/bf525-ucr2/Kconfig
new file mode 100644
index 0000000..5967d04
--- /dev/null
+++ b/board/bf525-ucr2/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_BF525_UCR2
+
+config SYS_BOARD
+ string
+ default "bf525-ucr2"
+
+config SYS_CONFIG_NAME
+ string
+ default "bf525-ucr2"
+
+endif
diff --git a/board/bf525-ucr2/MAINTAINERS b/board/bf525-ucr2/MAINTAINERS
new file mode 100644
index 0000000..f2e9575
--- /dev/null
+++ b/board/bf525-ucr2/MAINTAINERS
@@ -0,0 +1,7 @@
+BF525-UCR2 BOARD
+M: Haitao Zhang <hzhang@ucrobotics.com>
+M: Chong Huang <chuang@ucrobotics.com>
+S: Maintained
+F: board/bf525-ucr2/
+F: include/configs/bf525-ucr2.h
+F: configs/bf525-ucr2_defconfig
diff --git a/board/bf526-ezbrd/Kconfig b/board/bf526-ezbrd/Kconfig
new file mode 100644
index 0000000..6793c0e
--- /dev/null
+++ b/board/bf526-ezbrd/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_BF526_EZBRD
+
+config SYS_BOARD
+ string
+ default "bf526-ezbrd"
+
+config SYS_CONFIG_NAME
+ string
+ default "bf526-ezbrd"
+
+endif
diff --git a/board/bf526-ezbrd/MAINTAINERS b/board/bf526-ezbrd/MAINTAINERS
new file mode 100644
index 0000000..f7c2d18
--- /dev/null
+++ b/board/bf526-ezbrd/MAINTAINERS
@@ -0,0 +1,6 @@
+BF526-EZBRD BOARD
+M: Sonic Zhang <sonic.adi@gmail.com>
+S: Maintained
+F: board/bf526-ezbrd/
+F: include/configs/bf526-ezbrd.h
+F: configs/bf526-ezbrd_defconfig
diff --git a/board/bf527-ad7160-eval/Kconfig b/board/bf527-ad7160-eval/Kconfig
new file mode 100644
index 0000000..6febd7f
--- /dev/null
+++ b/board/bf527-ad7160-eval/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_BF527_AD7160_EVAL
+
+config SYS_BOARD
+ string
+ default "bf527-ad7160-eval"
+
+config SYS_CONFIG_NAME
+ string
+ default "bf527-ad7160-eval"
+
+endif
diff --git a/board/bf527-ad7160-eval/MAINTAINERS b/board/bf527-ad7160-eval/MAINTAINERS
new file mode 100644
index 0000000..e93de1a
--- /dev/null
+++ b/board/bf527-ad7160-eval/MAINTAINERS
@@ -0,0 +1,6 @@
+BF527-AD7160-EVAL BOARD
+M: Sonic Zhang <sonic.adi@gmail.com>
+S: Maintained
+F: board/bf527-ad7160-eval/
+F: include/configs/bf527-ad7160-eval.h
+F: configs/bf527-ad7160-eval_defconfig
diff --git a/board/bf527-ezkit/Kconfig b/board/bf527-ezkit/Kconfig
new file mode 100644
index 0000000..459d971
--- /dev/null
+++ b/board/bf527-ezkit/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_BF527_EZKIT
+
+config SYS_BOARD
+ string
+ default "bf527-ezkit"
+
+config SYS_CONFIG_NAME
+ string
+ default "bf527-ezkit"
+
+endif
diff --git a/board/bf527-ezkit/MAINTAINERS b/board/bf527-ezkit/MAINTAINERS
new file mode 100644
index 0000000..7a95396
--- /dev/null
+++ b/board/bf527-ezkit/MAINTAINERS
@@ -0,0 +1,7 @@
+BF527-EZKIT BOARD
+M: Sonic Zhang <sonic.adi@gmail.com>
+S: Maintained
+F: board/bf527-ezkit/
+F: include/configs/bf527-ezkit.h
+F: configs/bf527-ezkit_defconfig
+F: configs/bf527-ezkit-v2_defconfig
diff --git a/board/bf527-ezkit/video.c b/board/bf527-ezkit/video.c
index 5d8a091..c2bf145 100644
--- a/board/bf527-ezkit/video.c
+++ b/board/bf527-ezkit/video.c
@@ -391,14 +391,6 @@ void video_stop(void)
#endif
}
-void video_putc(const char c)
-{
-}
-
-void video_puts(const char *s)
-{
-}
-
int drv_video_init(void)
{
int error, devices = 1;
@@ -448,8 +440,6 @@ int drv_video_init(void)
strcpy(videodev.name, "video");
videodev.ext = DEV_EXT_VIDEO; /* Video extensions */
videodev.flags = DEV_FLAGS_SYSTEM; /* No Output */
- videodev.putc = video_putc; /* 'putc' function */
- videodev.puts = video_puts; /* 'puts' function */
error = stdio_register(&videodev);
diff --git a/board/bf527-sdp/Kconfig b/board/bf527-sdp/Kconfig
new file mode 100644
index 0000000..8d54fb8
--- /dev/null
+++ b/board/bf527-sdp/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_BF527_SDP
+
+config SYS_BOARD
+ string
+ default "bf527-sdp"
+
+config SYS_CONFIG_NAME
+ string
+ default "bf527-sdp"
+
+endif
diff --git a/board/bf527-sdp/MAINTAINERS b/board/bf527-sdp/MAINTAINERS
new file mode 100644
index 0000000..32ccfc5
--- /dev/null
+++ b/board/bf527-sdp/MAINTAINERS
@@ -0,0 +1,6 @@
+BF527-SDP BOARD
+M: Sonic Zhang <sonic.adi@gmail.com>
+S: Maintained
+F: board/bf527-sdp/
+F: include/configs/bf527-sdp.h
+F: configs/bf527-sdp_defconfig
diff --git a/board/bf533-ezkit/Kconfig b/board/bf533-ezkit/Kconfig
new file mode 100644
index 0000000..c0317c2
--- /dev/null
+++ b/board/bf533-ezkit/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_BF533_EZKIT
+
+config SYS_BOARD
+ string
+ default "bf533-ezkit"
+
+config SYS_CONFIG_NAME
+ string
+ default "bf533-ezkit"
+
+endif
diff --git a/board/bf533-ezkit/MAINTAINERS b/board/bf533-ezkit/MAINTAINERS
new file mode 100644
index 0000000..bfa7c3c
--- /dev/null
+++ b/board/bf533-ezkit/MAINTAINERS
@@ -0,0 +1,6 @@
+BF533-EZKIT BOARD
+M: Sonic Zhang <sonic.adi@gmail.com>
+S: Maintained
+F: board/bf533-ezkit/
+F: include/configs/bf533-ezkit.h
+F: configs/bf533-ezkit_defconfig
diff --git a/board/bf533-stamp/Kconfig b/board/bf533-stamp/Kconfig
new file mode 100644
index 0000000..3f01c2b
--- /dev/null
+++ b/board/bf533-stamp/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_BF533_STAMP
+
+config SYS_BOARD
+ string
+ default "bf533-stamp"
+
+config SYS_CONFIG_NAME
+ string
+ default "bf533-stamp"
+
+endif
diff --git a/board/bf533-stamp/MAINTAINERS b/board/bf533-stamp/MAINTAINERS
new file mode 100644
index 0000000..c7aeefa
--- /dev/null
+++ b/board/bf533-stamp/MAINTAINERS
@@ -0,0 +1,6 @@
+BF533-STAMP BOARD
+M: Sonic Zhang <sonic.adi@gmail.com>
+S: Maintained
+F: board/bf533-stamp/
+F: include/configs/bf533-stamp.h
+F: configs/bf533-stamp_defconfig
diff --git a/board/bf537-minotaur/Kconfig b/board/bf537-minotaur/Kconfig
new file mode 100644
index 0000000..6704f2d
--- /dev/null
+++ b/board/bf537-minotaur/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_BF537_MINOTAUR
+
+config SYS_BOARD
+ string
+ default "bf537-minotaur"
+
+config SYS_CONFIG_NAME
+ string
+ default "bf537-minotaur"
+
+endif
diff --git a/board/bf537-minotaur/MAINTAINERS b/board/bf537-minotaur/MAINTAINERS
new file mode 100644
index 0000000..04643b1
--- /dev/null
+++ b/board/bf537-minotaur/MAINTAINERS
@@ -0,0 +1,6 @@
+BF537-MINOTAUR BOARD
+M: Martin Strubel <strubel@section5.ch>
+S: Maintained
+F: board/bf537-minotaur/
+F: include/configs/bf537-minotaur.h
+F: configs/bf537-minotaur_defconfig
diff --git a/board/bf537-pnav/Kconfig b/board/bf537-pnav/Kconfig
new file mode 100644
index 0000000..125a9fa
--- /dev/null
+++ b/board/bf537-pnav/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_BF537_PNAV
+
+config SYS_BOARD
+ string
+ default "bf537-pnav"
+
+config SYS_CONFIG_NAME
+ string
+ default "bf537-pnav"
+
+endif
diff --git a/board/bf537-pnav/MAINTAINERS b/board/bf537-pnav/MAINTAINERS
new file mode 100644
index 0000000..b8b22a3
--- /dev/null
+++ b/board/bf537-pnav/MAINTAINERS
@@ -0,0 +1,6 @@
+BF537-PNAV BOARD
+M: Sonic Zhang <sonic.adi@gmail.com>
+S: Maintained
+F: board/bf537-pnav/
+F: include/configs/bf537-pnav.h
+F: configs/bf537-pnav_defconfig
diff --git a/board/bf537-srv1/Kconfig b/board/bf537-srv1/Kconfig
new file mode 100644
index 0000000..658a6e5
--- /dev/null
+++ b/board/bf537-srv1/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_BF537_SRV1
+
+config SYS_BOARD
+ string
+ default "bf537-srv1"
+
+config SYS_CONFIG_NAME
+ string
+ default "bf537-srv1"
+
+endif
diff --git a/board/bf537-srv1/MAINTAINERS b/board/bf537-srv1/MAINTAINERS
new file mode 100644
index 0000000..c8f1458
--- /dev/null
+++ b/board/bf537-srv1/MAINTAINERS
@@ -0,0 +1,6 @@
+BF537-SRV1 BOARD
+M: Martin Strubel <strubel@section5.ch>
+S: Maintained
+F: board/bf537-srv1/
+F: include/configs/bf537-srv1.h
+F: configs/bf537-srv1_defconfig
diff --git a/board/bf537-stamp/Kconfig b/board/bf537-stamp/Kconfig
new file mode 100644
index 0000000..9330a4c
--- /dev/null
+++ b/board/bf537-stamp/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_BF537_STAMP
+
+config SYS_BOARD
+ string
+ default "bf537-stamp"
+
+config SYS_CONFIG_NAME
+ string
+ default "bf537-stamp"
+
+endif
diff --git a/board/bf537-stamp/MAINTAINERS b/board/bf537-stamp/MAINTAINERS
new file mode 100644
index 0000000..7d9c133
--- /dev/null
+++ b/board/bf537-stamp/MAINTAINERS
@@ -0,0 +1,6 @@
+BF537-STAMP BOARD
+M: Sonic Zhang <sonic.adi@gmail.com>
+S: Maintained
+F: board/bf537-stamp/
+F: include/configs/bf537-stamp.h
+F: configs/bf537-stamp_defconfig
diff --git a/board/bf538f-ezkit/Kconfig b/board/bf538f-ezkit/Kconfig
new file mode 100644
index 0000000..5b9c8d9
--- /dev/null
+++ b/board/bf538f-ezkit/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_BF538F_EZKIT
+
+config SYS_BOARD
+ string
+ default "bf538f-ezkit"
+
+config SYS_CONFIG_NAME
+ string
+ default "bf538f-ezkit"
+
+endif
diff --git a/board/bf538f-ezkit/MAINTAINERS b/board/bf538f-ezkit/MAINTAINERS
new file mode 100644
index 0000000..7964735
--- /dev/null
+++ b/board/bf538f-ezkit/MAINTAINERS
@@ -0,0 +1,6 @@
+BF538F-EZKIT BOARD
+M: Sonic Zhang <sonic.adi@gmail.com>
+S: Maintained
+F: board/bf538f-ezkit/
+F: include/configs/bf538f-ezkit.h
+F: configs/bf538f-ezkit_defconfig
diff --git a/board/bf548-ezkit/Kconfig b/board/bf548-ezkit/Kconfig
new file mode 100644
index 0000000..8d799aa
--- /dev/null
+++ b/board/bf548-ezkit/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_BF548_EZKIT
+
+config SYS_BOARD
+ string
+ default "bf548-ezkit"
+
+config SYS_CONFIG_NAME
+ string
+ default "bf548-ezkit"
+
+endif
diff --git a/board/bf548-ezkit/MAINTAINERS b/board/bf548-ezkit/MAINTAINERS
new file mode 100644
index 0000000..e2683bb
--- /dev/null
+++ b/board/bf548-ezkit/MAINTAINERS
@@ -0,0 +1,6 @@
+BF548-EZKIT BOARD
+M: Sonic Zhang <sonic.adi@gmail.com>
+S: Maintained
+F: board/bf548-ezkit/
+F: include/configs/bf548-ezkit.h
+F: configs/bf548-ezkit_defconfig
diff --git a/board/bf548-ezkit/video.c b/board/bf548-ezkit/video.c
index 6737ac1..47e68c6 100644
--- a/board/bf548-ezkit/video.c
+++ b/board/bf548-ezkit/video.c
@@ -281,14 +281,6 @@ static void dma_bitblit(void *dst, fastimage_t *logo, int x, int y)
}
-void video_putc(const char c)
-{
-}
-
-void video_puts(const char *s)
-{
-}
-
int drv_video_init(void)
{
int error, devices = 1;
@@ -338,8 +330,6 @@ int drv_video_init(void)
strcpy(videodev.name, "video");
videodev.ext = DEV_EXT_VIDEO; /* Video extensions */
videodev.flags = DEV_FLAGS_SYSTEM; /* No Output */
- videodev.putc = video_putc; /* 'putc' function */
- videodev.puts = video_puts; /* 'puts' function */
error = stdio_register(&videodev);
diff --git a/board/bf561-acvilon/Kconfig b/board/bf561-acvilon/Kconfig
new file mode 100644
index 0000000..6c1789c
--- /dev/null
+++ b/board/bf561-acvilon/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_BF561_ACVILON
+
+config SYS_BOARD
+ string
+ default "bf561-acvilon"
+
+config SYS_CONFIG_NAME
+ string
+ default "bf561-acvilon"
+
+endif
diff --git a/board/bf561-acvilon/MAINTAINERS b/board/bf561-acvilon/MAINTAINERS
new file mode 100644
index 0000000..056ee0b
--- /dev/null
+++ b/board/bf561-acvilon/MAINTAINERS
@@ -0,0 +1,6 @@
+BF561-ACVILON BOARD
+M: Valentin Yakovenkov <yakovenkov@niistt.ru>
+S: Maintained
+F: board/bf561-acvilon/
+F: include/configs/bf561-acvilon.h
+F: configs/bf561-acvilon_defconfig
diff --git a/board/bf561-ezkit/Kconfig b/board/bf561-ezkit/Kconfig
new file mode 100644
index 0000000..d1cb81f
--- /dev/null
+++ b/board/bf561-ezkit/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_BF561_EZKIT
+
+config SYS_BOARD
+ string
+ default "bf561-ezkit"
+
+config SYS_CONFIG_NAME
+ string
+ default "bf561-ezkit"
+
+endif
diff --git a/board/bf561-ezkit/MAINTAINERS b/board/bf561-ezkit/MAINTAINERS
new file mode 100644
index 0000000..5ced3bb
--- /dev/null
+++ b/board/bf561-ezkit/MAINTAINERS
@@ -0,0 +1,6 @@
+BF561-EZKIT BOARD
+M: Sonic Zhang <sonic.adi@gmail.com>
+S: Maintained
+F: board/bf561-ezkit/
+F: include/configs/bf561-ezkit.h
+F: configs/bf561-ezkit_defconfig
diff --git a/board/bf609-ezkit/Kconfig b/board/bf609-ezkit/Kconfig
new file mode 100644
index 0000000..ad959d7
--- /dev/null
+++ b/board/bf609-ezkit/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_BF609_EZKIT
+
+config SYS_BOARD
+ string
+ default "bf609-ezkit"
+
+config SYS_CONFIG_NAME
+ string
+ default "bf609-ezkit"
+
+endif
diff --git a/board/bf609-ezkit/MAINTAINERS b/board/bf609-ezkit/MAINTAINERS
new file mode 100644
index 0000000..acfc6c7
--- /dev/null
+++ b/board/bf609-ezkit/MAINTAINERS
@@ -0,0 +1,6 @@
+BF609-EZKIT BOARD
+M: Sonic Zhang <sonic.adi@gmail.com>
+S: Maintained
+F: board/bf609-ezkit/
+F: include/configs/bf609-ezkit.h
+F: configs/bf609-ezkit_defconfig
diff --git a/board/blackstamp/Kconfig b/board/blackstamp/Kconfig
new file mode 100644
index 0000000..0046b93
--- /dev/null
+++ b/board/blackstamp/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_BLACKSTAMP
+
+config SYS_BOARD
+ string
+ default "blackstamp"
+
+config SYS_CONFIG_NAME
+ string
+ default "blackstamp"
+
+endif
diff --git a/board/blackstamp/MAINTAINERS b/board/blackstamp/MAINTAINERS
new file mode 100644
index 0000000..a0d72c6
--- /dev/null
+++ b/board/blackstamp/MAINTAINERS
@@ -0,0 +1,8 @@
+BLACKSTAMP BOARD
+M: Wojtek Skulski <skulski@pas.rochester.edu>
+M: Wojtek Skulski <info@skutek.com>
+M: Benjamin Matthews <mben12@gmail.com>
+S: Maintained
+F: board/blackstamp/
+F: include/configs/blackstamp.h
+F: configs/blackstamp_defconfig
diff --git a/board/blackvme/Kconfig b/board/blackvme/Kconfig
new file mode 100644
index 0000000..72aaa29
--- /dev/null
+++ b/board/blackvme/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_BLACKVME
+
+config SYS_BOARD
+ string
+ default "blackvme"
+
+config SYS_CONFIG_NAME
+ string
+ default "blackvme"
+
+endif
diff --git a/board/blackvme/MAINTAINERS b/board/blackvme/MAINTAINERS
new file mode 100644
index 0000000..3f8b32c
--- /dev/null
+++ b/board/blackvme/MAINTAINERS
@@ -0,0 +1,8 @@
+BLACKVME BOARD
+M: Wojtek Skulski <skulski@pas.rochester.edu>
+M: Wojtek Skulski <info@skutek.com>
+M: Benjamin Matthews <mben12@gmail.com>
+S: Maintained
+F: board/blackvme/
+F: include/configs/blackvme.h
+F: configs/blackvme_defconfig
diff --git a/board/bluegiga/apx4devkit/Kconfig b/board/bluegiga/apx4devkit/Kconfig
new file mode 100644
index 0000000..acccec9
--- /dev/null
+++ b/board/bluegiga/apx4devkit/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_APX4DEVKIT
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "apx4devkit"
+
+config SYS_VENDOR
+ string
+ default "bluegiga"
+
+config SYS_SOC
+ string
+ default "mxs"
+
+config SYS_CONFIG_NAME
+ string
+ default "apx4devkit"
+
+endif
diff --git a/board/bluegiga/apx4devkit/MAINTAINERS b/board/bluegiga/apx4devkit/MAINTAINERS
new file mode 100644
index 0000000..286e9e9
--- /dev/null
+++ b/board/bluegiga/apx4devkit/MAINTAINERS
@@ -0,0 +1,6 @@
+APX4DEVKIT BOARD
+M: Lauri Hintsala <lauri.hintsala@bluegiga.com>
+S: Maintained
+F: board/bluegiga/apx4devkit/
+F: include/configs/apx4devkit.h
+F: configs/apx4devkit_defconfig
diff --git a/board/bluewater/snapper9260/Kconfig b/board/bluewater/snapper9260/Kconfig
new file mode 100644
index 0000000..81eb911
--- /dev/null
+++ b/board/bluewater/snapper9260/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_SNAPPER9260
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "snapper9260"
+
+config SYS_VENDOR
+ string
+ default "bluewater"
+
+config SYS_SOC
+ string
+ default "at91"
+
+config SYS_CONFIG_NAME
+ string
+ default "snapper9260"
+
+endif
diff --git a/board/bluewater/snapper9260/MAINTAINERS b/board/bluewater/snapper9260/MAINTAINERS
new file mode 100644
index 0000000..ff1e997
--- /dev/null
+++ b/board/bluewater/snapper9260/MAINTAINERS
@@ -0,0 +1,7 @@
+SNAPPER9260 BOARD
+M: Ryan Mallon <ryan@bluewatersys.com>
+S: Maintained
+F: board/bluewater/snapper9260/
+F: include/configs/snapper9260.h
+F: configs/snapper9260_defconfig
+F: configs/snapper9g20_defconfig
diff --git a/board/boundary/nitrogen6x/Kconfig b/board/boundary/nitrogen6x/Kconfig
new file mode 100644
index 0000000..190809c
--- /dev/null
+++ b/board/boundary/nitrogen6x/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_NITROGEN6X
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "nitrogen6x"
+
+config SYS_VENDOR
+ string
+ default "boundary"
+
+config SYS_SOC
+ string
+ default "mx6"
+
+config SYS_CONFIG_NAME
+ string
+ default "nitrogen6x"
+
+endif
diff --git a/board/boundary/nitrogen6x/MAINTAINERS b/board/boundary/nitrogen6x/MAINTAINERS
new file mode 100644
index 0000000..cb06c03
--- /dev/null
+++ b/board/boundary/nitrogen6x/MAINTAINERS
@@ -0,0 +1,12 @@
+NITROGEN6X BOARD
+M: Eric Nelson <eric.nelson@boundarydevices.com>
+S: Maintained
+F: board/boundary/nitrogen6x/
+F: include/configs/nitrogen6x.h
+F: configs/mx6qsabrelite_defconfig
+F: configs/nitrogen6dl_defconfig
+F: configs/nitrogen6dl2g_defconfig
+F: configs/nitrogen6q_defconfig
+F: configs/nitrogen6q2g_defconfig
+F: configs/nitrogen6s_defconfig
+F: configs/nitrogen6s1g_defconfig
diff --git a/board/br4/Kconfig b/board/br4/Kconfig
new file mode 100644
index 0000000..03d9783
--- /dev/null
+++ b/board/br4/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_BR4
+
+config SYS_BOARD
+ string
+ default "br4"
+
+config SYS_CONFIG_NAME
+ string
+ default "br4"
+
+endif
diff --git a/board/br4/MAINTAINERS b/board/br4/MAINTAINERS
new file mode 100644
index 0000000..4085da5
--- /dev/null
+++ b/board/br4/MAINTAINERS
@@ -0,0 +1,6 @@
+BR4 BOARD
+M: Dimitar Penev <dpn@switchfin.org>
+S: Maintained
+F: board/br4/
+F: include/configs/br4.h
+F: configs/br4_defconfig
diff --git a/board/broadcom/bcm28155_ap/Kconfig b/board/broadcom/bcm28155_ap/Kconfig
new file mode 100644
index 0000000..20c83d3
--- /dev/null
+++ b/board/broadcom/bcm28155_ap/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_BCM28155_AP
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "bcm28155_ap"
+
+config SYS_VENDOR
+ string
+ default "broadcom"
+
+config SYS_SOC
+ string
+ default "bcm281xx"
+
+config SYS_CONFIG_NAME
+ string
+ default "bcm28155_ap"
+
+endif
diff --git a/board/broadcom/bcm28155_ap/MAINTAINERS b/board/broadcom/bcm28155_ap/MAINTAINERS
new file mode 100644
index 0000000..a74c394
--- /dev/null
+++ b/board/broadcom/bcm28155_ap/MAINTAINERS
@@ -0,0 +1,6 @@
+BCM28155_AP BOARD
+M: Tim Kryger <tim.kryger@linaro.org>
+S: Maintained
+F: board/broadcom/bcm28155_ap/
+F: include/configs/bcm28155_ap.h
+F: configs/bcm28155_ap_defconfig
diff --git a/board/buffalo/lsxl/Kconfig b/board/buffalo/lsxl/Kconfig
new file mode 100644
index 0000000..99f7b7c
--- /dev/null
+++ b/board/buffalo/lsxl/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_LSXL
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "lsxl"
+
+config SYS_VENDOR
+ string
+ default "buffalo"
+
+config SYS_SOC
+ string
+ default "kirkwood"
+
+config SYS_CONFIG_NAME
+ string
+ default "lsxl"
+
+endif
diff --git a/board/buffalo/lsxl/MAINTAINERS b/board/buffalo/lsxl/MAINTAINERS
new file mode 100644
index 0000000..facc2dd
--- /dev/null
+++ b/board/buffalo/lsxl/MAINTAINERS
@@ -0,0 +1,7 @@
+LSXL BOARD
+M: Michael Walle <michael@walle.cc>
+S: Maintained
+F: board/buffalo/lsxl/
+F: include/configs/lsxl.h
+F: configs/lschlv2_defconfig
+F: configs/lsxhl_defconfig
diff --git a/board/calao/sbc35_a9g20/Kconfig b/board/calao/sbc35_a9g20/Kconfig
new file mode 100644
index 0000000..192d228
--- /dev/null
+++ b/board/calao/sbc35_a9g20/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_SBC35_A9G20
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "sbc35_a9g20"
+
+config SYS_VENDOR
+ string
+ default "calao"
+
+config SYS_SOC
+ string
+ default "at91"
+
+config SYS_CONFIG_NAME
+ string
+ default "sbc35_a9g20"
+
+endif
diff --git a/board/calao/sbc35_a9g20/MAINTAINERS b/board/calao/sbc35_a9g20/MAINTAINERS
new file mode 100644
index 0000000..d275230
--- /dev/null
+++ b/board/calao/sbc35_a9g20/MAINTAINERS
@@ -0,0 +1,7 @@
+SBC35_A9G20 BOARD
+M: Albin Tonnerre <albin.tonnerre@free-electrons.com>
+S: Orphan (since 2014-06)
+F: board/calao/sbc35_a9g20/
+F: include/configs/sbc35_a9g20.h
+F: configs/sbc35_a9g20_eeprom_defconfig
+F: configs/sbc35_a9g20_nandflash_defconfig
diff --git a/board/calao/tny_a9260/Kconfig b/board/calao/tny_a9260/Kconfig
new file mode 100644
index 0000000..3d33d5c
--- /dev/null
+++ b/board/calao/tny_a9260/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_TNY_A9260
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "tny_a9260"
+
+config SYS_VENDOR
+ string
+ default "calao"
+
+config SYS_SOC
+ string
+ default "at91"
+
+config SYS_CONFIG_NAME
+ string
+ default "tny_a9260"
+
+endif
diff --git a/board/calao/tny_a9260/MAINTAINERS b/board/calao/tny_a9260/MAINTAINERS
new file mode 100644
index 0000000..5a71b8e
--- /dev/null
+++ b/board/calao/tny_a9260/MAINTAINERS
@@ -0,0 +1,9 @@
+TNY_A9260 BOARD
+M: Albin Tonnerre <albin.tonnerre@free-electrons.com>
+S: Orphan (since 2014-06)
+F: board/calao/tny_a9260/
+F: include/configs/tny_a9260.h
+F: configs/tny_a9260_eeprom_defconfig
+F: configs/tny_a9260_nandflash_defconfig
+F: configs/tny_a9g20_eeprom_defconfig
+F: configs/tny_a9g20_nandflash_defconfig
diff --git a/board/calao/usb_a9263/Kconfig b/board/calao/usb_a9263/Kconfig
new file mode 100644
index 0000000..8141c7d
--- /dev/null
+++ b/board/calao/usb_a9263/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_USB_A9263
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "usb_a9263"
+
+config SYS_VENDOR
+ string
+ default "calao"
+
+config SYS_SOC
+ string
+ default "at91"
+
+config SYS_CONFIG_NAME
+ string
+ default "usb_a9263"
+
+endif
diff --git a/board/calao/usb_a9263/MAINTAINERS b/board/calao/usb_a9263/MAINTAINERS
new file mode 100644
index 0000000..2f39cd3
--- /dev/null
+++ b/board/calao/usb_a9263/MAINTAINERS
@@ -0,0 +1,6 @@
+USB_A9263 BOARD
+M: Mateusz Kulikowski <mateusz.kulikowski@gmail.com>
+S: Maintained
+F: board/calao/usb_a9263/
+F: include/configs/usb_a9263.h
+F: configs/usb_a9263_dataflash_defconfig
diff --git a/board/canmb/Kconfig b/board/canmb/Kconfig
new file mode 100644
index 0000000..042cc35
--- /dev/null
+++ b/board/canmb/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_CANMB
+
+config SYS_BOARD
+ string
+ default "canmb"
+
+config SYS_CONFIG_NAME
+ string
+ default "canmb"
+
+endif
diff --git a/board/canmb/MAINTAINERS b/board/canmb/MAINTAINERS
new file mode 100644
index 0000000..aa4eb30
--- /dev/null
+++ b/board/canmb/MAINTAINERS
@@ -0,0 +1,6 @@
+CANMB BOARD
+M: -
+S: Maintained
+F: board/canmb/
+F: include/configs/canmb.h
+F: configs/canmb_defconfig
diff --git a/board/chromebook-x86/coreboot/Kconfig b/board/chromebook-x86/coreboot/Kconfig
new file mode 100644
index 0000000..64cd347
--- /dev/null
+++ b/board/chromebook-x86/coreboot/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_COREBOOT
+
+config SYS_BOARD
+ string
+ default "coreboot"
+
+config SYS_VENDOR
+ string
+ default "chromebook-x86"
+
+config SYS_SOC
+ string
+ default "coreboot"
+
+config SYS_CONFIG_NAME
+ string
+ default "coreboot"
+
+endif
diff --git a/board/chromebook-x86/coreboot/MAINTAINERS b/board/chromebook-x86/coreboot/MAINTAINERS
new file mode 100644
index 0000000..3b2fb52
--- /dev/null
+++ b/board/chromebook-x86/coreboot/MAINTAINERS
@@ -0,0 +1,6 @@
+COREBOOT BOARD
+M: Simon Glass <sjg@chromium.org>
+S: Maintained
+F: board/chromebook-x86/coreboot/
+F: include/configs/coreboot.h
+F: configs/coreboot-x86_defconfig
diff --git a/board/cirrus/edb93xx/Kconfig b/board/cirrus/edb93xx/Kconfig
new file mode 100644
index 0000000..0a9bdb2
--- /dev/null
+++ b/board/cirrus/edb93xx/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_EDB93XX
+
+config SYS_CPU
+ string
+ default "arm920t"
+
+config SYS_BOARD
+ string
+ default "edb93xx"
+
+config SYS_VENDOR
+ string
+ default "cirrus"
+
+config SYS_SOC
+ string
+ default "ep93xx"
+
+config SYS_CONFIG_NAME
+ string
+ default "edb93xx"
+
+endif
diff --git a/board/cirrus/edb93xx/MAINTAINERS b/board/cirrus/edb93xx/MAINTAINERS
new file mode 100644
index 0000000..3bb2843
--- /dev/null
+++ b/board/cirrus/edb93xx/MAINTAINERS
@@ -0,0 +1,6 @@
+EDB93XX BOARD
+M: Sergey Kostanbaev <sergey.kostanbaev@fairwaves.ru>
+S: Maintained
+F: board/cirrus/edb93xx/
+F: include/configs/edb93xx.h
+F: configs/edb9315a_defconfig
diff --git a/board/cloudengines/pogo_e02/Kconfig b/board/cloudengines/pogo_e02/Kconfig
new file mode 100644
index 0000000..149a1a2
--- /dev/null
+++ b/board/cloudengines/pogo_e02/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_POGO_E02
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "pogo_e02"
+
+config SYS_VENDOR
+ string
+ default "cloudengines"
+
+config SYS_SOC
+ string
+ default "kirkwood"
+
+config SYS_CONFIG_NAME
+ string
+ default "pogo_e02"
+
+endif
diff --git a/board/cloudengines/pogo_e02/MAINTAINERS b/board/cloudengines/pogo_e02/MAINTAINERS
new file mode 100644
index 0000000..42c5dda
--- /dev/null
+++ b/board/cloudengines/pogo_e02/MAINTAINERS
@@ -0,0 +1,6 @@
+POGO_E02 BOARD
+M: Dave Purdy <david.c.purdy@gmail.com>
+S: Maintained
+F: board/cloudengines/pogo_e02/
+F: include/configs/pogo_e02.h
+F: configs/pogo_e02_defconfig
diff --git a/board/cm-bf527/Kconfig b/board/cm-bf527/Kconfig
new file mode 100644
index 0000000..d43d306
--- /dev/null
+++ b/board/cm-bf527/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_CM_BF527
+
+config SYS_BOARD
+ string
+ default "cm-bf527"
+
+config SYS_CONFIG_NAME
+ string
+ default "cm-bf527"
+
+endif
diff --git a/board/cm-bf527/MAINTAINERS b/board/cm-bf527/MAINTAINERS
new file mode 100644
index 0000000..789f5c4
--- /dev/null
+++ b/board/cm-bf527/MAINTAINERS
@@ -0,0 +1,6 @@
+CM-BF527 BOARD
+M: Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
+S: Orphan (since 2014-03)
+F: board/cm-bf527/
+F: include/configs/cm-bf527.h
+F: configs/cm-bf527_defconfig
diff --git a/board/cm-bf533/Kconfig b/board/cm-bf533/Kconfig
new file mode 100644
index 0000000..af5bbb2
--- /dev/null
+++ b/board/cm-bf533/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_CM_BF533
+
+config SYS_BOARD
+ string
+ default "cm-bf533"
+
+config SYS_CONFIG_NAME
+ string
+ default "cm-bf533"
+
+endif
diff --git a/board/cm-bf533/MAINTAINERS b/board/cm-bf533/MAINTAINERS
new file mode 100644
index 0000000..f643043
--- /dev/null
+++ b/board/cm-bf533/MAINTAINERS
@@ -0,0 +1,6 @@
+CM-BF533 BOARD
+M: Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
+S: Orphan (since 2014-03)
+F: board/cm-bf533/
+F: include/configs/cm-bf533.h
+F: configs/cm-bf533_defconfig
diff --git a/board/cm-bf537e/Kconfig b/board/cm-bf537e/Kconfig
new file mode 100644
index 0000000..83c160d
--- /dev/null
+++ b/board/cm-bf537e/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_CM_BF537E
+
+config SYS_BOARD
+ string
+ default "cm-bf537e"
+
+config SYS_CONFIG_NAME
+ string
+ default "cm-bf537e"
+
+endif
diff --git a/board/cm-bf537e/MAINTAINERS b/board/cm-bf537e/MAINTAINERS
new file mode 100644
index 0000000..44735fa
--- /dev/null
+++ b/board/cm-bf537e/MAINTAINERS
@@ -0,0 +1,6 @@
+CM-BF537E BOARD
+M: Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
+S: Orphan (since 2014-03)
+F: board/cm-bf537e/
+F: include/configs/cm-bf537e.h
+F: configs/cm-bf537e_defconfig
diff --git a/board/cm-bf537u/Kconfig b/board/cm-bf537u/Kconfig
new file mode 100644
index 0000000..de384b7
--- /dev/null
+++ b/board/cm-bf537u/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_CM_BF537U
+
+config SYS_BOARD
+ string
+ default "cm-bf537u"
+
+config SYS_CONFIG_NAME
+ string
+ default "cm-bf537u"
+
+endif
diff --git a/board/cm-bf537u/MAINTAINERS b/board/cm-bf537u/MAINTAINERS
new file mode 100644
index 0000000..da925f8
--- /dev/null
+++ b/board/cm-bf537u/MAINTAINERS
@@ -0,0 +1,6 @@
+CM-BF537U BOARD
+M: Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
+S: Orphan (since 2014-03)
+F: board/cm-bf537u/
+F: include/configs/cm-bf537u.h
+F: configs/cm-bf537u_defconfig
diff --git a/board/cm-bf548/Kconfig b/board/cm-bf548/Kconfig
new file mode 100644
index 0000000..29b027d
--- /dev/null
+++ b/board/cm-bf548/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_CM_BF548
+
+config SYS_BOARD
+ string
+ default "cm-bf548"
+
+config SYS_CONFIG_NAME
+ string
+ default "cm-bf548"
+
+endif
diff --git a/board/cm-bf548/MAINTAINERS b/board/cm-bf548/MAINTAINERS
new file mode 100644
index 0000000..4cd83df
--- /dev/null
+++ b/board/cm-bf548/MAINTAINERS
@@ -0,0 +1,6 @@
+CM-BF548 BOARD
+M: Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
+S: Orphan (since 2014-03)
+F: board/cm-bf548/
+F: include/configs/cm-bf548.h
+F: configs/cm-bf548_defconfig
diff --git a/board/cm-bf548/video.c b/board/cm-bf548/video.c
index c35d285..b098615 100644
--- a/board/cm-bf548/video.c
+++ b/board/cm-bf548/video.c
@@ -283,14 +283,6 @@ static void dma_bitblit(void *dst, fastimage_t *logo, int x, int y)
}
-void video_putc(const char c)
-{
-}
-
-void video_puts(const char *s)
-{
-}
-
int drv_video_init(void)
{
int error, devices = 1;
@@ -342,8 +334,6 @@ int drv_video_init(void)
strcpy(videodev.name, "video");
videodev.ext = DEV_EXT_VIDEO; /* Video extensions */
videodev.flags = DEV_FLAGS_SYSTEM; /* No Output */
- videodev.putc = video_putc; /* 'putc' function */
- videodev.puts = video_puts; /* 'puts' function */
error = stdio_register(&videodev);
diff --git a/board/cm-bf561/Kconfig b/board/cm-bf561/Kconfig
new file mode 100644
index 0000000..94d110c
--- /dev/null
+++ b/board/cm-bf561/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_CM_BF561
+
+config SYS_BOARD
+ string
+ default "cm-bf561"
+
+config SYS_CONFIG_NAME
+ string
+ default "cm-bf561"
+
+endif
diff --git a/board/cm-bf561/MAINTAINERS b/board/cm-bf561/MAINTAINERS
new file mode 100644
index 0000000..a4606ff
--- /dev/null
+++ b/board/cm-bf561/MAINTAINERS
@@ -0,0 +1,6 @@
+CM-BF561 BOARD
+M: Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
+S: Orphan (since 2014-03)
+F: board/cm-bf561/
+F: include/configs/cm-bf561.h
+F: configs/cm-bf561_defconfig
diff --git a/board/cm4008/Kconfig b/board/cm4008/Kconfig
new file mode 100644
index 0000000..397794d
--- /dev/null
+++ b/board/cm4008/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_CM4008
+
+config SYS_CPU
+ string
+ default "arm920t"
+
+config SYS_BOARD
+ string
+ default "cm4008"
+
+config SYS_SOC
+ string
+ default "ks8695"
+
+config SYS_CONFIG_NAME
+ string
+ default "cm4008"
+
+endif
diff --git a/board/cm4008/MAINTAINERS b/board/cm4008/MAINTAINERS
new file mode 100644
index 0000000..5f08bc3
--- /dev/null
+++ b/board/cm4008/MAINTAINERS
@@ -0,0 +1,6 @@
+CM4008 BOARD
+M: Greg Ungerer <greg.ungerer@opengear.com>
+S: Maintained
+F: board/cm4008/
+F: include/configs/cm4008.h
+F: configs/cm4008_defconfig
diff --git a/board/cm41xx/Kconfig b/board/cm41xx/Kconfig
new file mode 100644
index 0000000..ae2831e
--- /dev/null
+++ b/board/cm41xx/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_CM41XX
+
+config SYS_CPU
+ string
+ default "arm920t"
+
+config SYS_BOARD
+ string
+ default "cm41xx"
+
+config SYS_SOC
+ string
+ default "ks8695"
+
+config SYS_CONFIG_NAME
+ string
+ default "cm41xx"
+
+endif
diff --git a/board/cm41xx/MAINTAINERS b/board/cm41xx/MAINTAINERS
new file mode 100644
index 0000000..f308b0f
--- /dev/null
+++ b/board/cm41xx/MAINTAINERS
@@ -0,0 +1,6 @@
+CM41XX BOARD
+M: -
+S: Maintained
+F: board/cm41xx/
+F: include/configs/cm41xx.h
+F: configs/cm41xx_defconfig
diff --git a/board/cm5200/Kconfig b/board/cm5200/Kconfig
new file mode 100644
index 0000000..b4c8f22
--- /dev/null
+++ b/board/cm5200/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_CM5200
+
+config SYS_BOARD
+ string
+ default "cm5200"
+
+config SYS_CONFIG_NAME
+ string
+ default "cm5200"
+
+endif
diff --git a/board/cm5200/MAINTAINERS b/board/cm5200/MAINTAINERS
new file mode 100644
index 0000000..9fc5365
--- /dev/null
+++ b/board/cm5200/MAINTAINERS
@@ -0,0 +1,6 @@
+CM5200 BOARD
+M: -
+S: Maintained
+F: board/cm5200/
+F: include/configs/cm5200.h
+F: configs/cm5200_defconfig
diff --git a/board/cmi/Kconfig b/board/cmi/Kconfig
new file mode 100644
index 0000000..8040e59
--- /dev/null
+++ b/board/cmi/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_CMI_MPC5XX
+
+config SYS_BOARD
+ string
+ default "cmi"
+
+config SYS_CONFIG_NAME
+ string
+ default "cmi_mpc5xx"
+
+endif
diff --git a/board/cmi/MAINTAINERS b/board/cmi/MAINTAINERS
new file mode 100644
index 0000000..ab33d5d
--- /dev/null
+++ b/board/cmi/MAINTAINERS
@@ -0,0 +1,6 @@
+CMI BOARD
+M: -
+S: Maintained
+F: board/cmi/
+F: include/configs/cmi_mpc5xx.h
+F: configs/cmi_mpc5xx_defconfig
diff --git a/board/cobra5272/Kconfig b/board/cobra5272/Kconfig
new file mode 100644
index 0000000..6e55d43
--- /dev/null
+++ b/board/cobra5272/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_COBRA5272
+
+config SYS_CPU
+ string
+ default "mcf52x2"
+
+config SYS_BOARD
+ string
+ default "cobra5272"
+
+config SYS_CONFIG_NAME
+ string
+ default "cobra5272"
+
+endif
diff --git a/board/cobra5272/MAINTAINERS b/board/cobra5272/MAINTAINERS
new file mode 100644
index 0000000..00942fc
--- /dev/null
+++ b/board/cobra5272/MAINTAINERS
@@ -0,0 +1,6 @@
+COBRA5272 BOARD
+M: -
+S: Maintained
+F: board/cobra5272/
+F: include/configs/cobra5272.h
+F: configs/cobra5272_defconfig
diff --git a/board/cogent/Kconfig b/board/cogent/Kconfig
new file mode 100644
index 0000000..113034d
--- /dev/null
+++ b/board/cogent/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_COGENT_MPC8260
+
+config SYS_BOARD
+ string
+ default "cogent"
+
+config SYS_CONFIG_NAME
+ string
+ default "cogent_mpc8260"
+
+endif
+
+if TARGET_COGENT_MPC8XX
+
+config SYS_BOARD
+ string
+ default "cogent"
+
+config SYS_CONFIG_NAME
+ string
+ default "cogent_mpc8xx"
+
+endif
diff --git a/board/cogent/MAINTAINERS b/board/cogent/MAINTAINERS
new file mode 100644
index 0000000..7126015
--- /dev/null
+++ b/board/cogent/MAINTAINERS
@@ -0,0 +1,8 @@
+COGENT BOARD
+M: Murray Jensen <Murray.Jensen@csiro.au>
+S: Maintained
+F: board/cogent/
+F: include/configs/cogent_mpc8260.h
+F: configs/cogent_mpc8260_defconfig
+F: include/configs/cogent_mpc8xx.h
+F: configs/cogent_mpc8xx_defconfig
diff --git a/board/comelit/dig297/Kconfig b/board/comelit/dig297/Kconfig
new file mode 100644
index 0000000..d7a2bf2
--- /dev/null
+++ b/board/comelit/dig297/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_DIG297
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "dig297"
+
+config SYS_VENDOR
+ string
+ default "comelit"
+
+config SYS_SOC
+ string
+ default "omap3"
+
+config SYS_CONFIG_NAME
+ string
+ default "dig297"
+
+endif
diff --git a/board/comelit/dig297/MAINTAINERS b/board/comelit/dig297/MAINTAINERS
new file mode 100644
index 0000000..318374e
--- /dev/null
+++ b/board/comelit/dig297/MAINTAINERS
@@ -0,0 +1,6 @@
+DIG297 BOARD
+M: Luca Ceresoli <luca.ceresoli@comelit.it>
+S: Maintained
+F: board/comelit/dig297/
+F: include/configs/dig297.h
+F: configs/dig297_defconfig
diff --git a/board/compal/paz00/Kconfig b/board/compal/paz00/Kconfig
new file mode 100644
index 0000000..4f0f09f
--- /dev/null
+++ b/board/compal/paz00/Kconfig
@@ -0,0 +1,24 @@
+if TARGET_PAZ00
+
+config SYS_CPU
+ string
+ default "arm720t" if SPL_BUILD
+ default "armv7" if !SPL_BUILD
+
+config SYS_BOARD
+ string
+ default "paz00"
+
+config SYS_VENDOR
+ string
+ default "compal"
+
+config SYS_SOC
+ string
+ default "tegra20"
+
+config SYS_CONFIG_NAME
+ string
+ default "paz00"
+
+endif
diff --git a/board/compal/paz00/MAINTAINERS b/board/compal/paz00/MAINTAINERS
new file mode 100644
index 0000000..ee2b2e9
--- /dev/null
+++ b/board/compal/paz00/MAINTAINERS
@@ -0,0 +1,7 @@
+PAZ00 BOARD
+M: Tom Warren <twarren@nvidia.com>
+M: Stephen Warren <swarren@nvidia.com>
+S: Maintained
+F: board/compal/paz00/
+F: include/configs/paz00.h
+F: configs/paz00_defconfig
diff --git a/board/compulab/cm_t335/Kconfig b/board/compulab/cm_t335/Kconfig
new file mode 100644
index 0000000..4a1adf3
--- /dev/null
+++ b/board/compulab/cm_t335/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_CM_T335
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "cm_t335"
+
+config SYS_VENDOR
+ string
+ default "compulab"
+
+config SYS_SOC
+ string
+ default "am33xx"
+
+config SYS_CONFIG_NAME
+ string
+ default "cm_t335"
+
+endif
diff --git a/board/compulab/cm_t335/MAINTAINERS b/board/compulab/cm_t335/MAINTAINERS
new file mode 100644
index 0000000..5fb922c
--- /dev/null
+++ b/board/compulab/cm_t335/MAINTAINERS
@@ -0,0 +1,6 @@
+CM_T335 BOARD
+M: Igor Grinberg <grinberg@compulab.co.il>
+S: Maintained
+F: board/compulab/cm_t335/
+F: include/configs/cm_t335.h
+F: configs/cm_t335_defconfig
diff --git a/board/compulab/cm_t35/Kconfig b/board/compulab/cm_t35/Kconfig
new file mode 100644
index 0000000..fd960bc
--- /dev/null
+++ b/board/compulab/cm_t35/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_CM_T35
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "cm_t35"
+
+config SYS_VENDOR
+ string
+ default "compulab"
+
+config SYS_SOC
+ string
+ default "omap3"
+
+config SYS_CONFIG_NAME
+ string
+ default "cm_t35"
+
+endif
diff --git a/board/compulab/cm_t35/MAINTAINERS b/board/compulab/cm_t35/MAINTAINERS
new file mode 100644
index 0000000..fc5d73f
--- /dev/null
+++ b/board/compulab/cm_t35/MAINTAINERS
@@ -0,0 +1,6 @@
+CM_T35 BOARD
+M: Igor Grinberg <grinberg@compulab.co.il>
+S: Maintained
+F: board/compulab/cm_t35/
+F: include/configs/cm_t35.h
+F: configs/cm_t35_defconfig
diff --git a/board/compulab/cm_t54/Kconfig b/board/compulab/cm_t54/Kconfig
new file mode 100644
index 0000000..0fe3692
--- /dev/null
+++ b/board/compulab/cm_t54/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_CM_T54
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "cm_t54"
+
+config SYS_VENDOR
+ string
+ default "compulab"
+
+config SYS_SOC
+ string
+ default "omap5"
+
+config SYS_CONFIG_NAME
+ string
+ default "cm_t54"
+
+endif
diff --git a/board/compulab/cm_t54/MAINTAINERS b/board/compulab/cm_t54/MAINTAINERS
new file mode 100644
index 0000000..461fe09
--- /dev/null
+++ b/board/compulab/cm_t54/MAINTAINERS
@@ -0,0 +1,6 @@
+CM_T54 BOARD
+M: Dmitry Lifshitz <lifshitz@compulab.co.il>
+S: Maintained
+F: board/compulab/cm_t54/
+F: include/configs/cm_t54.h
+F: configs/cm_t54_defconfig
diff --git a/board/compulab/trimslice/Kconfig b/board/compulab/trimslice/Kconfig
new file mode 100644
index 0000000..e545f0c
--- /dev/null
+++ b/board/compulab/trimslice/Kconfig
@@ -0,0 +1,24 @@
+if TARGET_TRIMSLICE
+
+config SYS_CPU
+ string
+ default "arm720t" if SPL_BUILD
+ default "armv7" if !SPL_BUILD
+
+config SYS_BOARD
+ string
+ default "trimslice"
+
+config SYS_VENDOR
+ string
+ default "compulab"
+
+config SYS_SOC
+ string
+ default "tegra20"
+
+config SYS_CONFIG_NAME
+ string
+ default "trimslice"
+
+endif
diff --git a/board/compulab/trimslice/MAINTAINERS b/board/compulab/trimslice/MAINTAINERS
new file mode 100644
index 0000000..85b1200
--- /dev/null
+++ b/board/compulab/trimslice/MAINTAINERS
@@ -0,0 +1,7 @@
+TRIMSLICE BOARD
+M: Tom Warren <twarren@nvidia.com>
+M: Stephen Warren <swarren@nvidia.com>
+S: Maintained
+F: board/compulab/trimslice/
+F: include/configs/trimslice.h
+F: configs/trimslice_defconfig
diff --git a/board/congatec/cgtqmx6eval/Kconfig b/board/congatec/cgtqmx6eval/Kconfig
new file mode 100644
index 0000000..155fa2c
--- /dev/null
+++ b/board/congatec/cgtqmx6eval/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_CGTQMX6EVAL
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "cgtqmx6eval"
+
+config SYS_VENDOR
+ string
+ default "congatec"
+
+config SYS_SOC
+ string
+ default "mx6"
+
+config SYS_CONFIG_NAME
+ string
+ default "cgtqmx6eval"
+
+endif
diff --git a/board/congatec/cgtqmx6eval/MAINTAINERS b/board/congatec/cgtqmx6eval/MAINTAINERS
new file mode 100644
index 0000000..53ad759
--- /dev/null
+++ b/board/congatec/cgtqmx6eval/MAINTAINERS
@@ -0,0 +1,6 @@
+CGTQMX6EVAL BOARD
+M: Leo Sartre <lsartre@adeneo-embedded.com>
+S: Orphan (since 2014-06)
+F: board/congatec/cgtqmx6eval/
+F: include/configs/cgtqmx6eval.h
+F: configs/cgtqmx6qeval_defconfig
diff --git a/board/corscience/tricorder/Kconfig b/board/corscience/tricorder/Kconfig
new file mode 100644
index 0000000..a1e06e7
--- /dev/null
+++ b/board/corscience/tricorder/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_TRICORDER
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "tricorder"
+
+config SYS_VENDOR
+ string
+ default "corscience"
+
+config SYS_SOC
+ string
+ default "omap3"
+
+config SYS_CONFIG_NAME
+ string
+ default "tricorder"
+
+endif
diff --git a/board/corscience/tricorder/MAINTAINERS b/board/corscience/tricorder/MAINTAINERS
new file mode 100644
index 0000000..8a8171b
--- /dev/null
+++ b/board/corscience/tricorder/MAINTAINERS
@@ -0,0 +1,7 @@
+TRICORDER BOARD
+M: Thomas Weber <weber@corscience.de>
+S: Maintained
+F: board/corscience/tricorder/
+F: include/configs/tricorder.h
+F: configs/tricorder_defconfig
+F: configs/tricorder_flash_defconfig
diff --git a/board/cpc45/Kconfig b/board/cpc45/Kconfig
new file mode 100644
index 0000000..fd1a536
--- /dev/null
+++ b/board/cpc45/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_CPC45
+
+config SYS_BOARD
+ string
+ default "cpc45"
+
+config SYS_CONFIG_NAME
+ string
+ default "CPC45"
+
+endif
diff --git a/board/cpc45/MAINTAINERS b/board/cpc45/MAINTAINERS
new file mode 100644
index 0000000..163e09c
--- /dev/null
+++ b/board/cpc45/MAINTAINERS
@@ -0,0 +1,7 @@
+CPC45 BOARD
+M: Josef Wagner <Wagner@Microsys.de>
+S: Maintained
+F: board/cpc45/
+F: include/configs/CPC45.h
+F: configs/CPC45_defconfig
+F: configs/CPC45_ROMBOOT_defconfig
diff --git a/board/cpu86/Kconfig b/board/cpu86/Kconfig
new file mode 100644
index 0000000..27f1e4e
--- /dev/null
+++ b/board/cpu86/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_CPU86
+
+config SYS_BOARD
+ string
+ default "cpu86"
+
+config SYS_CONFIG_NAME
+ string
+ default "CPU86"
+
+endif
diff --git a/board/cpu86/MAINTAINERS b/board/cpu86/MAINTAINERS
new file mode 100644
index 0000000..06bdd0d
--- /dev/null
+++ b/board/cpu86/MAINTAINERS
@@ -0,0 +1,7 @@
+CPU86 BOARD
+M: Wolfgang Denk <wd@denx.de>
+S: Maintained
+F: board/cpu86/
+F: include/configs/CPU86.h
+F: configs/CPU86_defconfig
+F: configs/CPU86_ROMBOOT_defconfig
diff --git a/board/cpu87/Kconfig b/board/cpu87/Kconfig
new file mode 100644
index 0000000..b45225d
--- /dev/null
+++ b/board/cpu87/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_CPU87
+
+config SYS_BOARD
+ string
+ default "cpu87"
+
+config SYS_CONFIG_NAME
+ string
+ default "CPU87"
+
+endif
diff --git a/board/cpu87/MAINTAINERS b/board/cpu87/MAINTAINERS
new file mode 100644
index 0000000..6e84f60
--- /dev/null
+++ b/board/cpu87/MAINTAINERS
@@ -0,0 +1,7 @@
+CPU87 BOARD
+M: -
+S: Maintained
+F: board/cpu87/
+F: include/configs/CPU87.h
+F: configs/CPU87_defconfig
+F: configs/CPU87_ROMBOOT_defconfig
diff --git a/board/cray/L1/Kconfig b/board/cray/L1/Kconfig
new file mode 100644
index 0000000..fa9a702
--- /dev/null
+++ b/board/cray/L1/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_CRAYL1
+
+config SYS_BOARD
+ string
+ default "L1"
+
+config SYS_VENDOR
+ string
+ default "cray"
+
+config SYS_CONFIG_NAME
+ string
+ default "CRAYL1"
+
+endif
diff --git a/board/cray/L1/MAINTAINERS b/board/cray/L1/MAINTAINERS
new file mode 100644
index 0000000..e93819e
--- /dev/null
+++ b/board/cray/L1/MAINTAINERS
@@ -0,0 +1,6 @@
+L1 BOARD
+M: David Updegraff <dave@cray.com>
+S: Orphan (since 2014-03)
+F: board/cray/L1/
+F: include/configs/CRAYL1.h
+F: configs/CRAYL1_defconfig
diff --git a/board/creative/xfi3/Kconfig b/board/creative/xfi3/Kconfig
new file mode 100644
index 0000000..9baf515
--- /dev/null
+++ b/board/creative/xfi3/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_XFI3
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "xfi3"
+
+config SYS_VENDOR
+ string
+ default "creative"
+
+config SYS_SOC
+ string
+ default "mxs"
+
+config SYS_CONFIG_NAME
+ string
+ default "xfi3"
+
+endif
diff --git a/board/creative/xfi3/MAINTAINERS b/board/creative/xfi3/MAINTAINERS
new file mode 100644
index 0000000..fb8235a
--- /dev/null
+++ b/board/creative/xfi3/MAINTAINERS
@@ -0,0 +1,6 @@
+XFI3 BOARD
+M: Marek Vasut <marek.vasut@gmail.com>
+S: Maintained
+F: board/creative/xfi3/
+F: include/configs/xfi3.h
+F: configs/xfi3_defconfig
diff --git a/board/csb272/Kconfig b/board/csb272/Kconfig
new file mode 100644
index 0000000..90f94a3
--- /dev/null
+++ b/board/csb272/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_CSB272
+
+config SYS_BOARD
+ string
+ default "csb272"
+
+config SYS_CONFIG_NAME
+ string
+ default "csb272"
+
+endif
diff --git a/board/csb272/MAINTAINERS b/board/csb272/MAINTAINERS
new file mode 100644
index 0000000..4bc95ea
--- /dev/null
+++ b/board/csb272/MAINTAINERS
@@ -0,0 +1,6 @@
+CSB272 BOARD
+M: Tolunay Orkun <torkun@nextio.com>
+S: Maintained
+F: board/csb272/
+F: include/configs/csb272.h
+F: configs/csb272_defconfig
diff --git a/board/csb472/Kconfig b/board/csb472/Kconfig
new file mode 100644
index 0000000..05230a0
--- /dev/null
+++ b/board/csb472/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_CSB472
+
+config SYS_BOARD
+ string
+ default "csb472"
+
+config SYS_CONFIG_NAME
+ string
+ default "csb472"
+
+endif
diff --git a/board/csb472/MAINTAINERS b/board/csb472/MAINTAINERS
new file mode 100644
index 0000000..25041ed
--- /dev/null
+++ b/board/csb472/MAINTAINERS
@@ -0,0 +1,6 @@
+CSB472 BOARD
+M: Tolunay Orkun <torkun@nextio.com>
+S: Maintained
+F: board/csb472/
+F: include/configs/csb472.h
+F: configs/csb472_defconfig
diff --git a/board/cu824/Kconfig b/board/cu824/Kconfig
new file mode 100644
index 0000000..d866688
--- /dev/null
+++ b/board/cu824/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_CU824
+
+config SYS_BOARD
+ string
+ default "cu824"
+
+config SYS_CONFIG_NAME
+ string
+ default "CU824"
+
+endif
diff --git a/board/cu824/MAINTAINERS b/board/cu824/MAINTAINERS
new file mode 100644
index 0000000..b1b7190
--- /dev/null
+++ b/board/cu824/MAINTAINERS
@@ -0,0 +1,6 @@
+CU824 BOARD
+M: Wolfgang Denk <wd@denx.de>
+S: Maintained
+F: board/cu824/
+F: include/configs/CU824.h
+F: configs/CU824_defconfig
diff --git a/board/d-link/dns325/Kconfig b/board/d-link/dns325/Kconfig
new file mode 100644
index 0000000..dea6071
--- /dev/null
+++ b/board/d-link/dns325/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_DNS325
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "dns325"
+
+config SYS_VENDOR
+ string
+ default "d-link"
+
+config SYS_SOC
+ string
+ default "kirkwood"
+
+config SYS_CONFIG_NAME
+ string
+ default "dns325"
+
+endif
diff --git a/board/d-link/dns325/MAINTAINERS b/board/d-link/dns325/MAINTAINERS
new file mode 100644
index 0000000..4b65a9b
--- /dev/null
+++ b/board/d-link/dns325/MAINTAINERS
@@ -0,0 +1,6 @@
+DNS325 BOARD
+M: Stefan Herbrechtsmeier <stefan@code.herbrechtsmeier.net>
+S: Maintained
+F: board/d-link/dns325/
+F: include/configs/dns325.h
+F: configs/dns325_defconfig
diff --git a/board/dave/PPChameleonEVB/Kconfig b/board/dave/PPChameleonEVB/Kconfig
new file mode 100644
index 0000000..3e95654
--- /dev/null
+++ b/board/dave/PPChameleonEVB/Kconfig
@@ -0,0 +1,31 @@
+if TARGET_CATCENTER
+
+config SYS_BOARD
+ string
+ default "PPChameleonEVB"
+
+config SYS_VENDOR
+ string
+ default "dave"
+
+config SYS_CONFIG_NAME
+ string
+ default "CATcenter"
+
+endif
+
+if TARGET_PPCHAMELEONEVB
+
+config SYS_BOARD
+ string
+ default "PPChameleonEVB"
+
+config SYS_VENDOR
+ string
+ default "dave"
+
+config SYS_CONFIG_NAME
+ string
+ default "PPChameleonEVB"
+
+endif
diff --git a/board/dave/PPChameleonEVB/MAINTAINERS b/board/dave/PPChameleonEVB/MAINTAINERS
new file mode 100644
index 0000000..3af5b57
--- /dev/null
+++ b/board/dave/PPChameleonEVB/MAINTAINERS
@@ -0,0 +1,20 @@
+PPCHAMELEONEVB BOARD
+M: -
+S: Maintained
+F: board/dave/PPChameleonEVB/
+F: include/configs/CATcenter.h
+F: configs/CATcenter_defconfig
+F: configs/CATcenter_25_defconfig
+F: configs/CATcenter_33_defconfig
+
+PPCHAMELEONEVB BOARD
+M: Andrea "llandre" Marson <andrea.marson@dave-tech.it>
+S: Maintained
+F: include/configs/PPChameleonEVB.h
+F: configs/PPChameleonEVB_defconfig
+F: configs/PPChameleonEVB_BA_25_defconfig
+F: configs/PPChameleonEVB_BA_33_defconfig
+F: configs/PPChameleonEVB_HI_25_defconfig
+F: configs/PPChameleonEVB_HI_33_defconfig
+F: configs/PPChameleonEVB_ME_25_defconfig
+F: configs/PPChameleonEVB_ME_33_defconfig
diff --git a/board/davedenx/aria/Kconfig b/board/davedenx/aria/Kconfig
new file mode 100644
index 0000000..f5d2aef
--- /dev/null
+++ b/board/davedenx/aria/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_ARIA
+
+config SYS_BOARD
+ string
+ default "aria"
+
+config SYS_VENDOR
+ string
+ default "davedenx"
+
+config SYS_CONFIG_NAME
+ string
+ default "aria"
+
+endif
diff --git a/board/davedenx/aria/MAINTAINERS b/board/davedenx/aria/MAINTAINERS
new file mode 100644
index 0000000..a6152c9
--- /dev/null
+++ b/board/davedenx/aria/MAINTAINERS
@@ -0,0 +1,6 @@
+ARIA BOARD
+M: Wolfgang Denk <wd@denx.de>
+S: Maintained
+F: board/davedenx/aria/
+F: include/configs/aria.h
+F: configs/aria_defconfig
diff --git a/board/davedenx/qong/Kconfig b/board/davedenx/qong/Kconfig
new file mode 100644
index 0000000..51b9428
--- /dev/null
+++ b/board/davedenx/qong/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_QONG
+
+config SYS_CPU
+ string
+ default "arm1136"
+
+config SYS_BOARD
+ string
+ default "qong"
+
+config SYS_VENDOR
+ string
+ default "davedenx"
+
+config SYS_SOC
+ string
+ default "mx31"
+
+config SYS_CONFIG_NAME
+ string
+ default "qong"
+
+endif
diff --git a/board/davedenx/qong/MAINTAINERS b/board/davedenx/qong/MAINTAINERS
new file mode 100644
index 0000000..a275b5b
--- /dev/null
+++ b/board/davedenx/qong/MAINTAINERS
@@ -0,0 +1,6 @@
+QONG BOARD
+M: Wolfgang Denk <wd@denx.de>
+S: Maintained
+F: board/davedenx/qong/
+F: include/configs/qong.h
+F: configs/qong_defconfig
diff --git a/board/davinci/da8xxevm/Kconfig b/board/davinci/da8xxevm/Kconfig
new file mode 100644
index 0000000..89f78d7
--- /dev/null
+++ b/board/davinci/da8xxevm/Kconfig
@@ -0,0 +1,71 @@
+if TARGET_DA830EVM
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "da8xxevm"
+
+config SYS_VENDOR
+ string
+ default "davinci"
+
+config SYS_SOC
+ string
+ default "davinci"
+
+config SYS_CONFIG_NAME
+ string
+ default "da830evm"
+
+endif
+
+if TARGET_DA850EVM
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "da8xxevm"
+
+config SYS_VENDOR
+ string
+ default "davinci"
+
+config SYS_SOC
+ string
+ default "davinci"
+
+config SYS_CONFIG_NAME
+ string
+ default "da850evm"
+
+endif
+
+if TARGET_HAWKBOARD
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "da8xxevm"
+
+config SYS_VENDOR
+ string
+ default "davinci"
+
+config SYS_SOC
+ string
+ default "davinci"
+
+config SYS_CONFIG_NAME
+ string
+ default "hawkboard"
+
+endif
diff --git a/board/davinci/da8xxevm/MAINTAINERS b/board/davinci/da8xxevm/MAINTAINERS
new file mode 100644
index 0000000..dd66f07
--- /dev/null
+++ b/board/davinci/da8xxevm/MAINTAINERS
@@ -0,0 +1,22 @@
+DA8XXEVM BOARD
+M: Nick Thompson <nick.thompson@gefanuc.com>
+S: Maintained
+F: board/davinci/da8xxevm/
+F: include/configs/da830evm.h
+F: configs/da830evm_defconfig
+
+DA850_AM18XXEVM BOARD
+M: Sudhakar Rajashekhara <sudhakar.raj@ti.com>
+S: Maintained
+F: include/configs/da850evm.h
+F: configs/da850_am18xxevm_defconfig
+F: configs/da850evm_defconfig
+F: configs/da850evm_direct_nor_defconfig
+
+HAWKBOARD BOARD
+M: Syed Mohammed Khasim <sm.khasim@gmail.com>
+M: Sughosh Ganu <urwithsughosh@gmail.com>
+S: Maintained
+F: include/configs/hawkboard.h
+F: configs/hawkboard_defconfig
+F: configs/hawkboard_uart_defconfig
diff --git a/board/davinci/dm355evm/Kconfig b/board/davinci/dm355evm/Kconfig
new file mode 100644
index 0000000..2dbb509
--- /dev/null
+++ b/board/davinci/dm355evm/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_DAVINCI_DM355EVM
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "dm355evm"
+
+config SYS_VENDOR
+ string
+ default "davinci"
+
+config SYS_SOC
+ string
+ default "davinci"
+
+config SYS_CONFIG_NAME
+ string
+ default "davinci_dm355evm"
+
+endif
diff --git a/board/davinci/dm355evm/MAINTAINERS b/board/davinci/dm355evm/MAINTAINERS
new file mode 100644
index 0000000..b823785
--- /dev/null
+++ b/board/davinci/dm355evm/MAINTAINERS
@@ -0,0 +1,6 @@
+DM355EVM BOARD
+M: Sandeep Paulraj <s-paulraj@ti.com>
+S: Maintained
+F: board/davinci/dm355evm/
+F: include/configs/davinci_dm355evm.h
+F: configs/davinci_dm355evm_defconfig
diff --git a/board/davinci/dm355leopard/Kconfig b/board/davinci/dm355leopard/Kconfig
new file mode 100644
index 0000000..345704f
--- /dev/null
+++ b/board/davinci/dm355leopard/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_DAVINCI_DM355LEOPARD
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "dm355leopard"
+
+config SYS_VENDOR
+ string
+ default "davinci"
+
+config SYS_SOC
+ string
+ default "davinci"
+
+config SYS_CONFIG_NAME
+ string
+ default "davinci_dm355leopard"
+
+endif
diff --git a/board/davinci/dm355leopard/MAINTAINERS b/board/davinci/dm355leopard/MAINTAINERS
new file mode 100644
index 0000000..f17fea2
--- /dev/null
+++ b/board/davinci/dm355leopard/MAINTAINERS
@@ -0,0 +1,6 @@
+DM355LEOPARD BOARD
+M: Sandeep Paulraj <s-paulraj@ti.com>
+S: Maintained
+F: board/davinci/dm355leopard/
+F: include/configs/davinci_dm355leopard.h
+F: configs/davinci_dm355leopard_defconfig
diff --git a/board/davinci/dm365evm/Kconfig b/board/davinci/dm365evm/Kconfig
new file mode 100644
index 0000000..d5f7ea2
--- /dev/null
+++ b/board/davinci/dm365evm/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_DAVINCI_DM365EVM
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "dm365evm"
+
+config SYS_VENDOR
+ string
+ default "davinci"
+
+config SYS_SOC
+ string
+ default "davinci"
+
+config SYS_CONFIG_NAME
+ string
+ default "davinci_dm365evm"
+
+endif
diff --git a/board/davinci/dm365evm/MAINTAINERS b/board/davinci/dm365evm/MAINTAINERS
new file mode 100644
index 0000000..5adb4e0
--- /dev/null
+++ b/board/davinci/dm365evm/MAINTAINERS
@@ -0,0 +1,6 @@
+DM365EVM BOARD
+M: Sandeep Paulraj <s-paulraj@ti.com>
+S: Maintained
+F: board/davinci/dm365evm/
+F: include/configs/davinci_dm365evm.h
+F: configs/davinci_dm365evm_defconfig
diff --git a/board/davinci/dm6467evm/Kconfig b/board/davinci/dm6467evm/Kconfig
new file mode 100644
index 0000000..f7b225d
--- /dev/null
+++ b/board/davinci/dm6467evm/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_DAVINCI_DM6467EVM
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "dm6467evm"
+
+config SYS_VENDOR
+ string
+ default "davinci"
+
+config SYS_SOC
+ string
+ default "davinci"
+
+config SYS_CONFIG_NAME
+ string
+ default "davinci_dm6467evm"
+
+endif
diff --git a/board/davinci/dm6467evm/MAINTAINERS b/board/davinci/dm6467evm/MAINTAINERS
new file mode 100644
index 0000000..4030bf3
--- /dev/null
+++ b/board/davinci/dm6467evm/MAINTAINERS
@@ -0,0 +1,7 @@
+DM6467EVM BOARD
+M: Sandeep Paulraj <s-paulraj@ti.com>
+S: Maintained
+F: board/davinci/dm6467evm/
+F: include/configs/davinci_dm6467evm.h
+F: configs/davinci_dm6467evm_defconfig
+F: configs/davinci_dm6467Tevm_defconfig
diff --git a/board/davinci/dvevm/Kconfig b/board/davinci/dvevm/Kconfig
new file mode 100644
index 0000000..7a2d86b
--- /dev/null
+++ b/board/davinci/dvevm/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_DAVINCI_DVEVM
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "dvevm"
+
+config SYS_VENDOR
+ string
+ default "davinci"
+
+config SYS_SOC
+ string
+ default "davinci"
+
+config SYS_CONFIG_NAME
+ string
+ default "davinci_dvevm"
+
+endif
diff --git a/board/davinci/dvevm/MAINTAINERS b/board/davinci/dvevm/MAINTAINERS
new file mode 100644
index 0000000..4b3ce45
--- /dev/null
+++ b/board/davinci/dvevm/MAINTAINERS
@@ -0,0 +1,6 @@
+DVEVM BOARD
+M: -
+S: Maintained
+F: board/davinci/dvevm/
+F: include/configs/davinci_dvevm.h
+F: configs/davinci_dvevm_defconfig
diff --git a/board/davinci/ea20/Kconfig b/board/davinci/ea20/Kconfig
new file mode 100644
index 0000000..afab821
--- /dev/null
+++ b/board/davinci/ea20/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_EA20
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "ea20"
+
+config SYS_VENDOR
+ string
+ default "davinci"
+
+config SYS_SOC
+ string
+ default "davinci"
+
+config SYS_CONFIG_NAME
+ string
+ default "ea20"
+
+endif
diff --git a/board/davinci/ea20/MAINTAINERS b/board/davinci/ea20/MAINTAINERS
new file mode 100644
index 0000000..5c300a3
--- /dev/null
+++ b/board/davinci/ea20/MAINTAINERS
@@ -0,0 +1,6 @@
+EA20 BOARD
+M: Stefano Babic <sbabic@denx.de>
+S: Maintained
+F: board/davinci/ea20/
+F: include/configs/ea20.h
+F: configs/ea20_defconfig
diff --git a/board/davinci/schmoogie/Kconfig b/board/davinci/schmoogie/Kconfig
new file mode 100644
index 0000000..45401e4
--- /dev/null
+++ b/board/davinci/schmoogie/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_DAVINCI_SCHMOOGIE
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "schmoogie"
+
+config SYS_VENDOR
+ string
+ default "davinci"
+
+config SYS_SOC
+ string
+ default "davinci"
+
+config SYS_CONFIG_NAME
+ string
+ default "davinci_schmoogie"
+
+endif
diff --git a/board/davinci/schmoogie/MAINTAINERS b/board/davinci/schmoogie/MAINTAINERS
new file mode 100644
index 0000000..b1fc29c
--- /dev/null
+++ b/board/davinci/schmoogie/MAINTAINERS
@@ -0,0 +1,6 @@
+SCHMOOGIE BOARD
+M: -
+S: Maintained
+F: board/davinci/schmoogie/
+F: include/configs/davinci_schmoogie.h
+F: configs/davinci_schmoogie_defconfig
diff --git a/board/davinci/sffsdr/Kconfig b/board/davinci/sffsdr/Kconfig
new file mode 100644
index 0000000..aeb7ef2
--- /dev/null
+++ b/board/davinci/sffsdr/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_DAVINCI_SFFSDR
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "sffsdr"
+
+config SYS_VENDOR
+ string
+ default "davinci"
+
+config SYS_SOC
+ string
+ default "davinci"
+
+config SYS_CONFIG_NAME
+ string
+ default "davinci_sffsdr"
+
+endif
diff --git a/board/davinci/sffsdr/MAINTAINERS b/board/davinci/sffsdr/MAINTAINERS
new file mode 100644
index 0000000..428d003
--- /dev/null
+++ b/board/davinci/sffsdr/MAINTAINERS
@@ -0,0 +1,6 @@
+SFFSDR BOARD
+M: -
+S: Maintained
+F: board/davinci/sffsdr/
+F: include/configs/davinci_sffsdr.h
+F: configs/davinci_sffsdr_defconfig
diff --git a/board/davinci/sonata/Kconfig b/board/davinci/sonata/Kconfig
new file mode 100644
index 0000000..2cf5035
--- /dev/null
+++ b/board/davinci/sonata/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_DAVINCI_SONATA
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "sonata"
+
+config SYS_VENDOR
+ string
+ default "davinci"
+
+config SYS_SOC
+ string
+ default "davinci"
+
+config SYS_CONFIG_NAME
+ string
+ default "davinci_sonata"
+
+endif
diff --git a/board/davinci/sonata/MAINTAINERS b/board/davinci/sonata/MAINTAINERS
new file mode 100644
index 0000000..625978c
--- /dev/null
+++ b/board/davinci/sonata/MAINTAINERS
@@ -0,0 +1,6 @@
+SONATA BOARD
+M: -
+S: Maintained
+F: board/davinci/sonata/
+F: include/configs/davinci_sonata.h
+F: configs/davinci_sonata_defconfig
diff --git a/board/dbau1x00/Kconfig b/board/dbau1x00/Kconfig
new file mode 100644
index 0000000..5fca62d
--- /dev/null
+++ b/board/dbau1x00/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_DBAU1X00
+
+config SYS_CPU
+ string
+ default "mips32"
+
+config SYS_BOARD
+ string
+ default "dbau1x00"
+
+config SYS_SOC
+ string
+ default "au1x00"
+
+config SYS_CONFIG_NAME
+ string
+ default "dbau1x00"
+
+endif
diff --git a/board/dbau1x00/MAINTAINERS b/board/dbau1x00/MAINTAINERS
new file mode 100644
index 0000000..b94ed81
--- /dev/null
+++ b/board/dbau1x00/MAINTAINERS
@@ -0,0 +1,10 @@
+DBAU1X00 BOARD
+M: Thomas Lange <thomas@corelatus.se>
+S: Maintained
+F: board/dbau1x00/
+F: include/configs/dbau1x00.h
+F: configs/dbau1000_defconfig
+F: configs/dbau1100_defconfig
+F: configs/dbau1500_defconfig
+F: configs/dbau1550_defconfig
+F: configs/dbau1550_el_defconfig
diff --git a/board/denx/m28evk/Kconfig b/board/denx/m28evk/Kconfig
new file mode 100644
index 0000000..05f79ad
--- /dev/null
+++ b/board/denx/m28evk/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_M28EVK
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "m28evk"
+
+config SYS_VENDOR
+ string
+ default "denx"
+
+config SYS_SOC
+ string
+ default "mxs"
+
+config SYS_CONFIG_NAME
+ string
+ default "m28evk"
+
+endif
diff --git a/board/denx/m28evk/MAINTAINERS b/board/denx/m28evk/MAINTAINERS
new file mode 100644
index 0000000..b0535a9
--- /dev/null
+++ b/board/denx/m28evk/MAINTAINERS
@@ -0,0 +1,6 @@
+M28EVK BOARD
+M: Marek Vasut <marek.vasut@gmail.com>
+S: Maintained
+F: board/denx/m28evk/
+F: include/configs/m28evk.h
+F: configs/m28evk_defconfig
diff --git a/board/denx/m53evk/Kconfig b/board/denx/m53evk/Kconfig
new file mode 100644
index 0000000..5e3298c
--- /dev/null
+++ b/board/denx/m53evk/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_M53EVK
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "m53evk"
+
+config SYS_VENDOR
+ string
+ default "denx"
+
+config SYS_SOC
+ string
+ default "mx5"
+
+config SYS_CONFIG_NAME
+ string
+ default "m53evk"
+
+endif
diff --git a/board/denx/m53evk/MAINTAINERS b/board/denx/m53evk/MAINTAINERS
new file mode 100644
index 0000000..5d8c764
--- /dev/null
+++ b/board/denx/m53evk/MAINTAINERS
@@ -0,0 +1,6 @@
+M53EVK BOARD
+M: Marek Vasut <marek.vasut@gmail.com>
+S: Maintained
+F: board/denx/m53evk/
+F: include/configs/m53evk.h
+F: configs/m53evk_defconfig
diff --git a/board/dnp5370/Kconfig b/board/dnp5370/Kconfig
new file mode 100644
index 0000000..f03a1e7
--- /dev/null
+++ b/board/dnp5370/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_DNP5370
+
+config SYS_BOARD
+ string
+ default "dnp5370"
+
+config SYS_CONFIG_NAME
+ string
+ default "dnp5370"
+
+endif
diff --git a/board/dnp5370/MAINTAINERS b/board/dnp5370/MAINTAINERS
new file mode 100644
index 0000000..8333891
--- /dev/null
+++ b/board/dnp5370/MAINTAINERS
@@ -0,0 +1,6 @@
+DNP5370 BOARD
+M: M.Hasewinkel (MHA) <info@ssv-embedded.de>
+S: Maintained
+F: board/dnp5370/
+F: include/configs/dnp5370.h
+F: configs/dnp5370_defconfig
diff --git a/board/eXalion/Kconfig b/board/eXalion/Kconfig
new file mode 100644
index 0000000..42ba092
--- /dev/null
+++ b/board/eXalion/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_EXALION
+
+config SYS_BOARD
+ string
+ default "eXalion"
+
+config SYS_CONFIG_NAME
+ string
+ default "eXalion"
+
+endif
diff --git a/board/eXalion/MAINTAINERS b/board/eXalion/MAINTAINERS
new file mode 100644
index 0000000..0ea74ca
--- /dev/null
+++ b/board/eXalion/MAINTAINERS
@@ -0,0 +1,6 @@
+EXALION BOARD
+M: Torsten Demke <torsten.demke@fci.com>
+S: Maintained
+F: board/eXalion/
+F: include/configs/eXalion.h
+F: configs/eXalion_defconfig
diff --git a/board/earthlcd/favr-32-ezkit/Kconfig b/board/earthlcd/favr-32-ezkit/Kconfig
new file mode 100644
index 0000000..c0cd1b7
--- /dev/null
+++ b/board/earthlcd/favr-32-ezkit/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_FAVR_32_EZKIT
+
+config SYS_BOARD
+ string
+ default "favr-32-ezkit"
+
+config SYS_VENDOR
+ string
+ default "earthlcd"
+
+config SYS_SOC
+ string
+ default "at32ap700x"
+
+config SYS_CONFIG_NAME
+ string
+ default "favr-32-ezkit"
+
+endif
diff --git a/board/earthlcd/favr-32-ezkit/MAINTAINERS b/board/earthlcd/favr-32-ezkit/MAINTAINERS
new file mode 100644
index 0000000..30453c6
--- /dev/null
+++ b/board/earthlcd/favr-32-ezkit/MAINTAINERS
@@ -0,0 +1,6 @@
+FAVR-32-EZKIT BOARD
+M: Hans-Christian Egtvedt <hans-christian.egtvedt@atmel.com>
+S: Orphan (since 2014-06)
+F: board/earthlcd/favr-32-ezkit/
+F: include/configs/favr-32-ezkit.h
+F: configs/favr-32-ezkit_defconfig
diff --git a/board/egnite/ethernut5/Kconfig b/board/egnite/ethernut5/Kconfig
new file mode 100644
index 0000000..cd2e53c
--- /dev/null
+++ b/board/egnite/ethernut5/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_ETHERNUT5
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "ethernut5"
+
+config SYS_VENDOR
+ string
+ default "egnite"
+
+config SYS_SOC
+ string
+ default "at91"
+
+config SYS_CONFIG_NAME
+ string
+ default "ethernut5"
+
+endif
diff --git a/board/egnite/ethernut5/MAINTAINERS b/board/egnite/ethernut5/MAINTAINERS
new file mode 100644
index 0000000..a4ad913
--- /dev/null
+++ b/board/egnite/ethernut5/MAINTAINERS
@@ -0,0 +1,6 @@
+ETHERNUT5 BOARD
+M: egnite GmbH <info@egnite.de>
+S: Maintained
+F: board/egnite/ethernut5/
+F: include/configs/ethernut5.h
+F: configs/ethernut5_defconfig
diff --git a/board/eltec/elppc/Kconfig b/board/eltec/elppc/Kconfig
new file mode 100644
index 0000000..55564dc
--- /dev/null
+++ b/board/eltec/elppc/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_ELPPC
+
+config SYS_BOARD
+ string
+ default "elppc"
+
+config SYS_VENDOR
+ string
+ default "eltec"
+
+config SYS_CONFIG_NAME
+ string
+ default "ELPPC"
+
+endif
diff --git a/board/eltec/elppc/MAINTAINERS b/board/eltec/elppc/MAINTAINERS
new file mode 100644
index 0000000..5258b3a
--- /dev/null
+++ b/board/eltec/elppc/MAINTAINERS
@@ -0,0 +1,6 @@
+ELPPC BOARD
+M: -
+S: Maintained
+F: board/eltec/elppc/
+F: include/configs/ELPPC.h
+F: configs/ELPPC_defconfig
diff --git a/board/eltec/mhpc/Kconfig b/board/eltec/mhpc/Kconfig
new file mode 100644
index 0000000..69c8358
--- /dev/null
+++ b/board/eltec/mhpc/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MHPC
+
+config SYS_BOARD
+ string
+ default "mhpc"
+
+config SYS_VENDOR
+ string
+ default "eltec"
+
+config SYS_CONFIG_NAME
+ string
+ default "MHPC"
+
+endif
diff --git a/board/eltec/mhpc/MAINTAINERS b/board/eltec/mhpc/MAINTAINERS
new file mode 100644
index 0000000..4d84a35
--- /dev/null
+++ b/board/eltec/mhpc/MAINTAINERS
@@ -0,0 +1,6 @@
+MHPC BOARD
+M: Frank Gottschling <fgottschling@eltec.de>
+S: Maintained
+F: board/eltec/mhpc/
+F: include/configs/MHPC.h
+F: configs/MHPC_defconfig
diff --git a/board/embest/mx6boards/Kconfig b/board/embest/mx6boards/Kconfig
new file mode 100644
index 0000000..b0c823e
--- /dev/null
+++ b/board/embest/mx6boards/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_EMBESTMX6BOARDS
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "mx6boards"
+
+config SYS_VENDOR
+ string
+ default "embest"
+
+config SYS_SOC
+ string
+ default "mx6"
+
+config SYS_CONFIG_NAME
+ string
+ default "embestmx6boards"
+
+endif
diff --git a/board/embest/mx6boards/MAINTAINERS b/board/embest/mx6boards/MAINTAINERS
new file mode 100644
index 0000000..0ffd466
--- /dev/null
+++ b/board/embest/mx6boards/MAINTAINERS
@@ -0,0 +1,7 @@
+MX6BOARDS BOARD
+M: Eric Bénard <eric@eukrea.com>
+S: Maintained
+F: board/embest/mx6boards/
+F: include/configs/embestmx6boards.h
+F: configs/marsboard_defconfig
+F: configs/riotboard_defconfig
diff --git a/board/emk/top5200/Kconfig b/board/emk/top5200/Kconfig
new file mode 100644
index 0000000..1d4e326
--- /dev/null
+++ b/board/emk/top5200/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_TOP5200
+
+config SYS_BOARD
+ string
+ default "top5200"
+
+config SYS_VENDOR
+ string
+ default "emk"
+
+config SYS_CONFIG_NAME
+ string
+ default "TOP5200"
+
+endif
diff --git a/board/emk/top5200/MAINTAINERS b/board/emk/top5200/MAINTAINERS
new file mode 100644
index 0000000..72fea41
--- /dev/null
+++ b/board/emk/top5200/MAINTAINERS
@@ -0,0 +1,8 @@
+TOP5200 BOARD
+M: Reinhard Meyer <reinhard.meyer@emk-elektronik.de>
+S: Maintained
+F: board/emk/top5200/
+F: include/configs/TOP5200.h
+F: configs/EVAL5200_defconfig
+F: configs/MINI5200_defconfig
+F: configs/TOP5200_defconfig
diff --git a/board/emk/top860/Kconfig b/board/emk/top860/Kconfig
new file mode 100644
index 0000000..4da934e
--- /dev/null
+++ b/board/emk/top860/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_TOP860
+
+config SYS_BOARD
+ string
+ default "top860"
+
+config SYS_VENDOR
+ string
+ default "emk"
+
+config SYS_CONFIG_NAME
+ string
+ default "TOP860"
+
+endif
diff --git a/board/emk/top860/MAINTAINERS b/board/emk/top860/MAINTAINERS
new file mode 100644
index 0000000..3676aca
--- /dev/null
+++ b/board/emk/top860/MAINTAINERS
@@ -0,0 +1,6 @@
+TOP860 BOARD
+M: Reinhard Meyer <reinhard.meyer@emk-elektronik.de>
+S: Maintained
+F: board/emk/top860/
+F: include/configs/TOP860.h
+F: configs/TOP860_defconfig
diff --git a/board/emk/top9000/Kconfig b/board/emk/top9000/Kconfig
new file mode 100644
index 0000000..421f7b2
--- /dev/null
+++ b/board/emk/top9000/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_TOP9000
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "top9000"
+
+config SYS_VENDOR
+ string
+ default "emk"
+
+config SYS_SOC
+ string
+ default "at91"
+
+config SYS_CONFIG_NAME
+ string
+ default "top9000"
+
+endif
diff --git a/board/emk/top9000/MAINTAINERS b/board/emk/top9000/MAINTAINERS
new file mode 100644
index 0000000..890359f
--- /dev/null
+++ b/board/emk/top9000/MAINTAINERS
@@ -0,0 +1,7 @@
+TOP9000 BOARD
+M: Reinhard Meyer <reinhard.meyer@emk-elektronik.de>
+S: Maintained
+F: board/emk/top9000/
+F: include/configs/top9000.h
+F: configs/top9000eval_xe_defconfig
+F: configs/top9000su_xe_defconfig
diff --git a/board/enbw/enbw_cmc/Kconfig b/board/enbw/enbw_cmc/Kconfig
new file mode 100644
index 0000000..e061e7e
--- /dev/null
+++ b/board/enbw/enbw_cmc/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_ENBW_CMC
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "enbw_cmc"
+
+config SYS_VENDOR
+ string
+ default "enbw"
+
+config SYS_SOC
+ string
+ default "davinci"
+
+config SYS_CONFIG_NAME
+ string
+ default "enbw_cmc"
+
+endif
diff --git a/board/enbw/enbw_cmc/MAINTAINERS b/board/enbw/enbw_cmc/MAINTAINERS
new file mode 100644
index 0000000..f7c9920
--- /dev/null
+++ b/board/enbw/enbw_cmc/MAINTAINERS
@@ -0,0 +1,6 @@
+ENBW_CMC BOARD
+M: Heiko Schocher <hs@denx.de>
+S: Maintained
+F: board/enbw/enbw_cmc/
+F: include/configs/enbw_cmc.h
+F: configs/enbw_cmc_defconfig
diff --git a/board/ep8260/Kconfig b/board/ep8260/Kconfig
new file mode 100644
index 0000000..15ca962
--- /dev/null
+++ b/board/ep8260/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_EP8260
+
+config SYS_BOARD
+ string
+ default "ep8260"
+
+config SYS_CONFIG_NAME
+ string
+ default "ep8260"
+
+endif
diff --git a/board/ep8260/MAINTAINERS b/board/ep8260/MAINTAINERS
new file mode 100644
index 0000000..bb273df
--- /dev/null
+++ b/board/ep8260/MAINTAINERS
@@ -0,0 +1,6 @@
+EP8260 BOARD
+M: Frank Panno <fpanno@delphintech.com>
+S: Orphan (since 2014-06)
+F: board/ep8260/
+F: include/configs/ep8260.h
+F: configs/ep8260_defconfig
diff --git a/board/ep82xxm/Kconfig b/board/ep82xxm/Kconfig
new file mode 100644
index 0000000..b4121a6
--- /dev/null
+++ b/board/ep82xxm/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_EP82XXM
+
+config SYS_BOARD
+ string
+ default "ep82xxm"
+
+config SYS_CONFIG_NAME
+ string
+ default "ep82xxm"
+
+endif
diff --git a/board/ep82xxm/MAINTAINERS b/board/ep82xxm/MAINTAINERS
new file mode 100644
index 0000000..822261b
--- /dev/null
+++ b/board/ep82xxm/MAINTAINERS
@@ -0,0 +1,6 @@
+EP82XXM BOARD
+M: -
+S: Maintained
+F: board/ep82xxm/
+F: include/configs/ep82xxm.h
+F: configs/ep82xxm_defconfig
diff --git a/board/esd/apc405/Kconfig b/board/esd/apc405/Kconfig
new file mode 100644
index 0000000..83cd8bd
--- /dev/null
+++ b/board/esd/apc405/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_APC405
+
+config SYS_BOARD
+ string
+ default "apc405"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_CONFIG_NAME
+ string
+ default "APC405"
+
+endif
diff --git a/board/esd/apc405/MAINTAINERS b/board/esd/apc405/MAINTAINERS
new file mode 100644
index 0000000..7f2a33f
--- /dev/null
+++ b/board/esd/apc405/MAINTAINERS
@@ -0,0 +1,6 @@
+APC405 BOARD
+M: Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+S: Maintained
+F: board/esd/apc405/
+F: include/configs/APC405.h
+F: configs/APC405_defconfig
diff --git a/board/esd/ar405/Kconfig b/board/esd/ar405/Kconfig
new file mode 100644
index 0000000..e35fc5e
--- /dev/null
+++ b/board/esd/ar405/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_AR405
+
+config SYS_BOARD
+ string
+ default "ar405"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_CONFIG_NAME
+ string
+ default "AR405"
+
+endif
diff --git a/board/esd/ar405/MAINTAINERS b/board/esd/ar405/MAINTAINERS
new file mode 100644
index 0000000..be74ff7
--- /dev/null
+++ b/board/esd/ar405/MAINTAINERS
@@ -0,0 +1,6 @@
+AR405 BOARD
+M: Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+S: Maintained
+F: board/esd/ar405/
+F: include/configs/AR405.h
+F: configs/AR405_defconfig
diff --git a/board/esd/ash405/Kconfig b/board/esd/ash405/Kconfig
new file mode 100644
index 0000000..e9558a4
--- /dev/null
+++ b/board/esd/ash405/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_ASH405
+
+config SYS_BOARD
+ string
+ default "ash405"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_CONFIG_NAME
+ string
+ default "ASH405"
+
+endif
diff --git a/board/esd/ash405/MAINTAINERS b/board/esd/ash405/MAINTAINERS
new file mode 100644
index 0000000..a9dae90
--- /dev/null
+++ b/board/esd/ash405/MAINTAINERS
@@ -0,0 +1,6 @@
+ASH405 BOARD
+M: Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+S: Maintained
+F: board/esd/ash405/
+F: include/configs/ASH405.h
+F: configs/ASH405_defconfig
diff --git a/board/esd/cms700/Kconfig b/board/esd/cms700/Kconfig
new file mode 100644
index 0000000..398d22a
--- /dev/null
+++ b/board/esd/cms700/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_CMS700
+
+config SYS_BOARD
+ string
+ default "cms700"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_CONFIG_NAME
+ string
+ default "CMS700"
+
+endif
diff --git a/board/esd/cms700/MAINTAINERS b/board/esd/cms700/MAINTAINERS
new file mode 100644
index 0000000..0191c8b
--- /dev/null
+++ b/board/esd/cms700/MAINTAINERS
@@ -0,0 +1,6 @@
+CMS700 BOARD
+M: Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+S: Maintained
+F: board/esd/cms700/
+F: include/configs/CMS700.h
+F: configs/CMS700_defconfig
diff --git a/board/esd/cpci2dp/Kconfig b/board/esd/cpci2dp/Kconfig
new file mode 100644
index 0000000..c99404c
--- /dev/null
+++ b/board/esd/cpci2dp/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_CPCI2DP
+
+config SYS_BOARD
+ string
+ default "cpci2dp"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_CONFIG_NAME
+ string
+ default "CPCI2DP"
+
+endif
diff --git a/board/esd/cpci2dp/MAINTAINERS b/board/esd/cpci2dp/MAINTAINERS
new file mode 100644
index 0000000..660e185
--- /dev/null
+++ b/board/esd/cpci2dp/MAINTAINERS
@@ -0,0 +1,6 @@
+CPCI2DP BOARD
+M: Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+S: Maintained
+F: board/esd/cpci2dp/
+F: include/configs/CPCI2DP.h
+F: configs/CPCI2DP_defconfig
diff --git a/board/esd/cpci405/Kconfig b/board/esd/cpci405/Kconfig
new file mode 100644
index 0000000..0b9f9f4
--- /dev/null
+++ b/board/esd/cpci405/Kconfig
@@ -0,0 +1,63 @@
+if TARGET_CPCI405
+
+config SYS_BOARD
+ string
+ default "cpci405"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_CONFIG_NAME
+ string
+ default "CPCI405"
+
+endif
+
+if TARGET_CPCI4052
+
+config SYS_BOARD
+ string
+ default "cpci405"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_CONFIG_NAME
+ string
+ default "CPCI4052"
+
+endif
+
+if TARGET_CPCI405AB
+
+config SYS_BOARD
+ string
+ default "cpci405"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_CONFIG_NAME
+ string
+ default "CPCI405AB"
+
+endif
+
+if TARGET_CPCI405DT
+
+config SYS_BOARD
+ string
+ default "cpci405"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_CONFIG_NAME
+ string
+ default "CPCI405DT"
+
+endif
diff --git a/board/esd/cpci405/MAINTAINERS b/board/esd/cpci405/MAINTAINERS
new file mode 100644
index 0000000..1da58dc
--- /dev/null
+++ b/board/esd/cpci405/MAINTAINERS
@@ -0,0 +1,12 @@
+CPCI405 BOARD
+M: Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+S: Maintained
+F: board/esd/cpci405/
+F: include/configs/CPCI405.h
+F: configs/CPCI405_defconfig
+F: include/configs/CPCI4052.h
+F: configs/CPCI4052_defconfig
+F: include/configs/CPCI405AB.h
+F: configs/CPCI405AB_defconfig
+F: include/configs/CPCI405DT.h
+F: configs/CPCI405DT_defconfig
diff --git a/board/esd/cpci5200/Kconfig b/board/esd/cpci5200/Kconfig
new file mode 100644
index 0000000..29fa9e6
--- /dev/null
+++ b/board/esd/cpci5200/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_CPCI5200
+
+config SYS_BOARD
+ string
+ default "cpci5200"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_CONFIG_NAME
+ string
+ default "cpci5200"
+
+endif
diff --git a/board/esd/cpci5200/MAINTAINERS b/board/esd/cpci5200/MAINTAINERS
new file mode 100644
index 0000000..184d3cc
--- /dev/null
+++ b/board/esd/cpci5200/MAINTAINERS
@@ -0,0 +1,6 @@
+CPCI5200 BOARD
+M: Reinhard Arlt <reinhard.arlt@esd-electronics.com>
+S: Maintained
+F: board/esd/cpci5200/
+F: include/configs/cpci5200.h
+F: configs/cpci5200_defconfig
diff --git a/board/esd/cpci750/Kconfig b/board/esd/cpci750/Kconfig
new file mode 100644
index 0000000..99f8c2d
--- /dev/null
+++ b/board/esd/cpci750/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_CPCI750
+
+config SYS_BOARD
+ string
+ default "cpci750"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_CONFIG_NAME
+ string
+ default "CPCI750"
+
+endif
diff --git a/board/esd/cpci750/MAINTAINERS b/board/esd/cpci750/MAINTAINERS
new file mode 100644
index 0000000..4a46457
--- /dev/null
+++ b/board/esd/cpci750/MAINTAINERS
@@ -0,0 +1,6 @@
+CPCI750 BOARD
+M: Reinhard Arlt <reinhard.arlt@esd-electronics.com>
+S: Maintained
+F: board/esd/cpci750/
+F: include/configs/CPCI750.h
+F: configs/CPCI750_defconfig
diff --git a/board/esd/cpciiser4/Kconfig b/board/esd/cpciiser4/Kconfig
new file mode 100644
index 0000000..1357a51
--- /dev/null
+++ b/board/esd/cpciiser4/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_CPCIISER4
+
+config SYS_BOARD
+ string
+ default "cpciiser4"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_CONFIG_NAME
+ string
+ default "CPCIISER4"
+
+endif
diff --git a/board/esd/cpciiser4/MAINTAINERS b/board/esd/cpciiser4/MAINTAINERS
new file mode 100644
index 0000000..85743db
--- /dev/null
+++ b/board/esd/cpciiser4/MAINTAINERS
@@ -0,0 +1,6 @@
+CPCIISER4 BOARD
+M: Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+S: Maintained
+F: board/esd/cpciiser4/
+F: include/configs/CPCIISER4.h
+F: configs/CPCIISER4_defconfig
diff --git a/board/esd/dp405/Kconfig b/board/esd/dp405/Kconfig
new file mode 100644
index 0000000..0fd7014
--- /dev/null
+++ b/board/esd/dp405/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_DP405
+
+config SYS_BOARD
+ string
+ default "dp405"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_CONFIG_NAME
+ string
+ default "DP405"
+
+endif
diff --git a/board/esd/dp405/MAINTAINERS b/board/esd/dp405/MAINTAINERS
new file mode 100644
index 0000000..6833d8c
--- /dev/null
+++ b/board/esd/dp405/MAINTAINERS
@@ -0,0 +1,6 @@
+DP405 BOARD
+M: Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+S: Maintained
+F: board/esd/dp405/
+F: include/configs/DP405.h
+F: configs/DP405_defconfig
diff --git a/board/esd/du405/Kconfig b/board/esd/du405/Kconfig
new file mode 100644
index 0000000..f2857f6
--- /dev/null
+++ b/board/esd/du405/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_DU405
+
+config SYS_BOARD
+ string
+ default "du405"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_CONFIG_NAME
+ string
+ default "DU405"
+
+endif
diff --git a/board/esd/du405/MAINTAINERS b/board/esd/du405/MAINTAINERS
new file mode 100644
index 0000000..5eff2a4
--- /dev/null
+++ b/board/esd/du405/MAINTAINERS
@@ -0,0 +1,6 @@
+DU405 BOARD
+M: Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+S: Maintained
+F: board/esd/du405/
+F: include/configs/DU405.h
+F: configs/DU405_defconfig
diff --git a/board/esd/du440/Kconfig b/board/esd/du440/Kconfig
new file mode 100644
index 0000000..f80e181
--- /dev/null
+++ b/board/esd/du440/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_DU440
+
+config SYS_BOARD
+ string
+ default "du440"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_CONFIG_NAME
+ string
+ default "DU440"
+
+endif
diff --git a/board/esd/du440/MAINTAINERS b/board/esd/du440/MAINTAINERS
new file mode 100644
index 0000000..ba26948
--- /dev/null
+++ b/board/esd/du440/MAINTAINERS
@@ -0,0 +1,6 @@
+DU440 BOARD
+M: Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+S: Maintained
+F: board/esd/du440/
+F: include/configs/DU440.h
+F: configs/DU440_defconfig
diff --git a/board/esd/hh405/Kconfig b/board/esd/hh405/Kconfig
new file mode 100644
index 0000000..0dc4b06
--- /dev/null
+++ b/board/esd/hh405/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_HH405
+
+config SYS_BOARD
+ string
+ default "hh405"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_CONFIG_NAME
+ string
+ default "HH405"
+
+endif
diff --git a/board/esd/hh405/MAINTAINERS b/board/esd/hh405/MAINTAINERS
new file mode 100644
index 0000000..b695c7b
--- /dev/null
+++ b/board/esd/hh405/MAINTAINERS
@@ -0,0 +1,6 @@
+HH405 BOARD
+M: Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+S: Maintained
+F: board/esd/hh405/
+F: include/configs/HH405.h
+F: configs/HH405_defconfig
diff --git a/board/esd/hub405/Kconfig b/board/esd/hub405/Kconfig
new file mode 100644
index 0000000..e355dd2
--- /dev/null
+++ b/board/esd/hub405/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_HUB405
+
+config SYS_BOARD
+ string
+ default "hub405"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_CONFIG_NAME
+ string
+ default "HUB405"
+
+endif
diff --git a/board/esd/hub405/MAINTAINERS b/board/esd/hub405/MAINTAINERS
new file mode 100644
index 0000000..e84a1d9
--- /dev/null
+++ b/board/esd/hub405/MAINTAINERS
@@ -0,0 +1,6 @@
+HUB405 BOARD
+M: Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+S: Maintained
+F: board/esd/hub405/
+F: include/configs/HUB405.h
+F: configs/HUB405_defconfig
diff --git a/board/esd/mecp5123/Kconfig b/board/esd/mecp5123/Kconfig
new file mode 100644
index 0000000..74237e3
--- /dev/null
+++ b/board/esd/mecp5123/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MECP5123
+
+config SYS_BOARD
+ string
+ default "mecp5123"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_CONFIG_NAME
+ string
+ default "mecp5123"
+
+endif
diff --git a/board/esd/mecp5123/MAINTAINERS b/board/esd/mecp5123/MAINTAINERS
new file mode 100644
index 0000000..ae5fcea
--- /dev/null
+++ b/board/esd/mecp5123/MAINTAINERS
@@ -0,0 +1,6 @@
+MECP5123 BOARD
+M: Reinhard Arlt <reinhard.arlt@esd-electronics.com>
+S: Maintained
+F: board/esd/mecp5123/
+F: include/configs/mecp5123.h
+F: configs/mecp5123_defconfig
diff --git a/board/esd/mecp5200/Kconfig b/board/esd/mecp5200/Kconfig
new file mode 100644
index 0000000..dfcaefd
--- /dev/null
+++ b/board/esd/mecp5200/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MECP5200
+
+config SYS_BOARD
+ string
+ default "mecp5200"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_CONFIG_NAME
+ string
+ default "mecp5200"
+
+endif
diff --git a/board/esd/mecp5200/MAINTAINERS b/board/esd/mecp5200/MAINTAINERS
new file mode 100644
index 0000000..05b7824
--- /dev/null
+++ b/board/esd/mecp5200/MAINTAINERS
@@ -0,0 +1,6 @@
+MECP5200 BOARD
+M: Reinhard Arlt <reinhard.arlt@esd-electronics.com>
+S: Maintained
+F: board/esd/mecp5200/
+F: include/configs/mecp5200.h
+F: configs/mecp5200_defconfig
diff --git a/board/esd/meesc/Kconfig b/board/esd/meesc/Kconfig
new file mode 100644
index 0000000..86a2835
--- /dev/null
+++ b/board/esd/meesc/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_MEESC
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "meesc"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_SOC
+ string
+ default "at91"
+
+config SYS_CONFIG_NAME
+ string
+ default "meesc"
+
+endif
diff --git a/board/esd/meesc/MAINTAINERS b/board/esd/meesc/MAINTAINERS
new file mode 100644
index 0000000..9403699
--- /dev/null
+++ b/board/esd/meesc/MAINTAINERS
@@ -0,0 +1,7 @@
+MEESC BOARD
+M: Daniel Gorsulowski <daniel.gorsulowski@esd.eu>
+S: Maintained
+F: board/esd/meesc/
+F: include/configs/meesc.h
+F: configs/meesc_defconfig
+F: configs/meesc_dataflash_defconfig
diff --git a/board/esd/ocrtc/Kconfig b/board/esd/ocrtc/Kconfig
new file mode 100644
index 0000000..83fa495
--- /dev/null
+++ b/board/esd/ocrtc/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_OCRTC
+
+config SYS_BOARD
+ string
+ default "ocrtc"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_CONFIG_NAME
+ string
+ default "OCRTC"
+
+endif
diff --git a/board/esd/ocrtc/MAINTAINERS b/board/esd/ocrtc/MAINTAINERS
new file mode 100644
index 0000000..85c1a12
--- /dev/null
+++ b/board/esd/ocrtc/MAINTAINERS
@@ -0,0 +1,6 @@
+OCRTC BOARD
+M: Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+S: Maintained
+F: board/esd/ocrtc/
+F: include/configs/OCRTC.h
+F: configs/OCRTC_defconfig
diff --git a/board/esd/otc570/Kconfig b/board/esd/otc570/Kconfig
new file mode 100644
index 0000000..ec6e4d9
--- /dev/null
+++ b/board/esd/otc570/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_OTC570
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "otc570"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_SOC
+ string
+ default "at91"
+
+config SYS_CONFIG_NAME
+ string
+ default "otc570"
+
+endif
diff --git a/board/esd/otc570/MAINTAINERS b/board/esd/otc570/MAINTAINERS
new file mode 100644
index 0000000..a7e165d
--- /dev/null
+++ b/board/esd/otc570/MAINTAINERS
@@ -0,0 +1,7 @@
+OTC570 BOARD
+M: Daniel Gorsulowski <daniel.gorsulowski@esd.eu>
+S: Maintained
+F: board/esd/otc570/
+F: include/configs/otc570.h
+F: configs/otc570_defconfig
+F: configs/otc570_dataflash_defconfig
diff --git a/board/esd/pci405/Kconfig b/board/esd/pci405/Kconfig
new file mode 100644
index 0000000..a1a3971
--- /dev/null
+++ b/board/esd/pci405/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_PCI405
+
+config SYS_BOARD
+ string
+ default "pci405"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_CONFIG_NAME
+ string
+ default "PCI405"
+
+endif
diff --git a/board/esd/pci405/MAINTAINERS b/board/esd/pci405/MAINTAINERS
new file mode 100644
index 0000000..cf9c1c9
--- /dev/null
+++ b/board/esd/pci405/MAINTAINERS
@@ -0,0 +1,6 @@
+PCI405 BOARD
+M: Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+S: Maintained
+F: board/esd/pci405/
+F: include/configs/PCI405.h
+F: configs/PCI405_defconfig
diff --git a/board/esd/pf5200/Kconfig b/board/esd/pf5200/Kconfig
new file mode 100644
index 0000000..82f30af
--- /dev/null
+++ b/board/esd/pf5200/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_PF5200
+
+config SYS_BOARD
+ string
+ default "pf5200"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_CONFIG_NAME
+ string
+ default "pf5200"
+
+endif
diff --git a/board/esd/pf5200/MAINTAINERS b/board/esd/pf5200/MAINTAINERS
new file mode 100644
index 0000000..b6e624e
--- /dev/null
+++ b/board/esd/pf5200/MAINTAINERS
@@ -0,0 +1,6 @@
+PF5200 BOARD
+M: Reinhard Arlt <reinhard.arlt@esd-electronics.com>
+S: Maintained
+F: board/esd/pf5200/
+F: include/configs/pf5200.h
+F: configs/pf5200_defconfig
diff --git a/board/esd/plu405/Kconfig b/board/esd/plu405/Kconfig
new file mode 100644
index 0000000..b9783d7
--- /dev/null
+++ b/board/esd/plu405/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_PLU405
+
+config SYS_BOARD
+ string
+ default "plu405"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_CONFIG_NAME
+ string
+ default "PLU405"
+
+endif
diff --git a/board/esd/plu405/MAINTAINERS b/board/esd/plu405/MAINTAINERS
new file mode 100644
index 0000000..ccb3658
--- /dev/null
+++ b/board/esd/plu405/MAINTAINERS
@@ -0,0 +1,6 @@
+PLU405 BOARD
+M: Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+S: Maintained
+F: board/esd/plu405/
+F: include/configs/PLU405.h
+F: configs/PLU405_defconfig
diff --git a/board/esd/pmc405/Kconfig b/board/esd/pmc405/Kconfig
new file mode 100644
index 0000000..e3c3c82
--- /dev/null
+++ b/board/esd/pmc405/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_PMC405
+
+config SYS_BOARD
+ string
+ default "pmc405"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_CONFIG_NAME
+ string
+ default "PMC405"
+
+endif
diff --git a/board/esd/pmc405/MAINTAINERS b/board/esd/pmc405/MAINTAINERS
new file mode 100644
index 0000000..148a596
--- /dev/null
+++ b/board/esd/pmc405/MAINTAINERS
@@ -0,0 +1,6 @@
+PMC405 BOARD
+M: Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+S: Maintained
+F: board/esd/pmc405/
+F: include/configs/PMC405.h
+F: configs/PMC405_defconfig
diff --git a/board/esd/pmc405de/Kconfig b/board/esd/pmc405de/Kconfig
new file mode 100644
index 0000000..f06b26b
--- /dev/null
+++ b/board/esd/pmc405de/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_PMC405DE
+
+config SYS_BOARD
+ string
+ default "pmc405de"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_CONFIG_NAME
+ string
+ default "PMC405DE"
+
+endif
diff --git a/board/esd/pmc405de/MAINTAINERS b/board/esd/pmc405de/MAINTAINERS
new file mode 100644
index 0000000..a891e23
--- /dev/null
+++ b/board/esd/pmc405de/MAINTAINERS
@@ -0,0 +1,6 @@
+PMC405DE BOARD
+M: Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+S: Maintained
+F: board/esd/pmc405de/
+F: include/configs/PMC405DE.h
+F: configs/PMC405DE_defconfig
diff --git a/board/esd/pmc440/Kconfig b/board/esd/pmc440/Kconfig
new file mode 100644
index 0000000..28db4ab
--- /dev/null
+++ b/board/esd/pmc440/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_PMC440
+
+config SYS_BOARD
+ string
+ default "pmc440"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_CONFIG_NAME
+ string
+ default "PMC440"
+
+endif
diff --git a/board/esd/pmc440/MAINTAINERS b/board/esd/pmc440/MAINTAINERS
new file mode 100644
index 0000000..32fb9ba
--- /dev/null
+++ b/board/esd/pmc440/MAINTAINERS
@@ -0,0 +1,6 @@
+PMC440 BOARD
+M: Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+S: Maintained
+F: board/esd/pmc440/
+F: include/configs/PMC440.h
+F: configs/PMC440_defconfig
diff --git a/board/esd/tasreg/Kconfig b/board/esd/tasreg/Kconfig
new file mode 100644
index 0000000..8fb80dc
--- /dev/null
+++ b/board/esd/tasreg/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_TASREG
+
+config SYS_CPU
+ string
+ default "mcf52x2"
+
+config SYS_BOARD
+ string
+ default "tasreg"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_CONFIG_NAME
+ string
+ default "TASREG"
+
+endif
diff --git a/board/esd/tasreg/MAINTAINERS b/board/esd/tasreg/MAINTAINERS
new file mode 100644
index 0000000..10bc7a4
--- /dev/null
+++ b/board/esd/tasreg/MAINTAINERS
@@ -0,0 +1,6 @@
+TASREG BOARD
+M: Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+S: Maintained
+F: board/esd/tasreg/
+F: include/configs/TASREG.h
+F: configs/TASREG_defconfig
diff --git a/board/esd/vme8349/Kconfig b/board/esd/vme8349/Kconfig
new file mode 100644
index 0000000..4fd507c
--- /dev/null
+++ b/board/esd/vme8349/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_VME8349
+
+config SYS_BOARD
+ string
+ default "vme8349"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_CONFIG_NAME
+ string
+ default "vme8349"
+
+endif
diff --git a/board/esd/vme8349/MAINTAINERS b/board/esd/vme8349/MAINTAINERS
new file mode 100644
index 0000000..a88ba13
--- /dev/null
+++ b/board/esd/vme8349/MAINTAINERS
@@ -0,0 +1,7 @@
+VME8349 BOARD
+M: Reinhard Arlt <reinhard.arlt@esd-electronics.com>
+S: Maintained
+F: board/esd/vme8349/
+F: include/configs/vme8349.h
+F: configs/caddy2_defconfig
+F: configs/vme8349_defconfig
diff --git a/board/esd/voh405/Kconfig b/board/esd/voh405/Kconfig
new file mode 100644
index 0000000..ef3d073
--- /dev/null
+++ b/board/esd/voh405/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_VOH405
+
+config SYS_BOARD
+ string
+ default "voh405"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_CONFIG_NAME
+ string
+ default "VOH405"
+
+endif
diff --git a/board/esd/voh405/MAINTAINERS b/board/esd/voh405/MAINTAINERS
new file mode 100644
index 0000000..0039f5d
--- /dev/null
+++ b/board/esd/voh405/MAINTAINERS
@@ -0,0 +1,6 @@
+VOH405 BOARD
+M: Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+S: Maintained
+F: board/esd/voh405/
+F: include/configs/VOH405.h
+F: configs/VOH405_defconfig
diff --git a/board/esd/vom405/Kconfig b/board/esd/vom405/Kconfig
new file mode 100644
index 0000000..90ba34a
--- /dev/null
+++ b/board/esd/vom405/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_VOM405
+
+config SYS_BOARD
+ string
+ default "vom405"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_CONFIG_NAME
+ string
+ default "VOM405"
+
+endif
diff --git a/board/esd/vom405/MAINTAINERS b/board/esd/vom405/MAINTAINERS
new file mode 100644
index 0000000..385f60a
--- /dev/null
+++ b/board/esd/vom405/MAINTAINERS
@@ -0,0 +1,6 @@
+VOM405 BOARD
+M: Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+S: Maintained
+F: board/esd/vom405/
+F: include/configs/VOM405.h
+F: configs/VOM405_defconfig
diff --git a/board/esd/wuh405/Kconfig b/board/esd/wuh405/Kconfig
new file mode 100644
index 0000000..214af9f
--- /dev/null
+++ b/board/esd/wuh405/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_WUH405
+
+config SYS_BOARD
+ string
+ default "wuh405"
+
+config SYS_VENDOR
+ string
+ default "esd"
+
+config SYS_CONFIG_NAME
+ string
+ default "WUH405"
+
+endif
diff --git a/board/esd/wuh405/MAINTAINERS b/board/esd/wuh405/MAINTAINERS
new file mode 100644
index 0000000..782c72a
--- /dev/null
+++ b/board/esd/wuh405/MAINTAINERS
@@ -0,0 +1,6 @@
+WUH405 BOARD
+M: Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+S: Maintained
+F: board/esd/wuh405/
+F: include/configs/WUH405.h
+F: configs/WUH405_defconfig
diff --git a/board/esg/ima3-mx53/Kconfig b/board/esg/ima3-mx53/Kconfig
new file mode 100644
index 0000000..fc27625
--- /dev/null
+++ b/board/esg/ima3-mx53/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_IMA3_MX53
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "ima3-mx53"
+
+config SYS_VENDOR
+ string
+ default "esg"
+
+config SYS_SOC
+ string
+ default "mx5"
+
+config SYS_CONFIG_NAME
+ string
+ default "ima3-mx53"
+
+endif
diff --git a/board/esg/ima3-mx53/MAINTAINERS b/board/esg/ima3-mx53/MAINTAINERS
new file mode 100644
index 0000000..c434eb9
--- /dev/null
+++ b/board/esg/ima3-mx53/MAINTAINERS
@@ -0,0 +1,6 @@
+IMA3-MX53 BOARD
+M: -
+S: Maintained
+F: board/esg/ima3-mx53/
+F: include/configs/ima3-mx53.h
+F: configs/ima3-mx53_defconfig
diff --git a/board/espt/Kconfig b/board/espt/Kconfig
new file mode 100644
index 0000000..7527e34
--- /dev/null
+++ b/board/espt/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_ESPT
+
+config SYS_CPU
+ string
+ default "sh4"
+
+config SYS_BOARD
+ string
+ default "espt"
+
+config SYS_CONFIG_NAME
+ string
+ default "espt"
+
+endif
diff --git a/board/espt/MAINTAINERS b/board/espt/MAINTAINERS
new file mode 100644
index 0000000..ff6e20c
--- /dev/null
+++ b/board/espt/MAINTAINERS
@@ -0,0 +1,6 @@
+ESPT BOARD
+M: -
+S: Maintained
+F: board/espt/
+F: include/configs/espt.h
+F: configs/espt_defconfig
diff --git a/board/esteem192e/Kconfig b/board/esteem192e/Kconfig
new file mode 100644
index 0000000..848fef8
--- /dev/null
+++ b/board/esteem192e/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_ESTEEM192E
+
+config SYS_BOARD
+ string
+ default "esteem192e"
+
+config SYS_CONFIG_NAME
+ string
+ default "ESTEEM192E"
+
+endif
diff --git a/board/esteem192e/MAINTAINERS b/board/esteem192e/MAINTAINERS
new file mode 100644
index 0000000..8d6634c
--- /dev/null
+++ b/board/esteem192e/MAINTAINERS
@@ -0,0 +1,6 @@
+ESTEEM192E BOARD
+M: Conn Clark <clark@esteem.com>
+S: Maintained
+F: board/esteem192e/
+F: include/configs/ESTEEM192E.h
+F: configs/ESTEEM192E_defconfig
diff --git a/board/eukrea/cpu9260/Kconfig b/board/eukrea/cpu9260/Kconfig
new file mode 100644
index 0000000..d86044e
--- /dev/null
+++ b/board/eukrea/cpu9260/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_CPU9260
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "cpu9260"
+
+config SYS_VENDOR
+ string
+ default "eukrea"
+
+config SYS_SOC
+ string
+ default "at91"
+
+config SYS_CONFIG_NAME
+ string
+ default "cpu9260"
+
+endif
diff --git a/board/eukrea/cpu9260/MAINTAINERS b/board/eukrea/cpu9260/MAINTAINERS
new file mode 100644
index 0000000..fb5aee8
--- /dev/null
+++ b/board/eukrea/cpu9260/MAINTAINERS
@@ -0,0 +1,13 @@
+CPU9260 BOARD
+M: Eric Benard <eric@eukrea.com>
+S: Maintained
+F: board/eukrea/cpu9260/
+F: include/configs/cpu9260.h
+F: configs/cpu9260_defconfig
+F: configs/cpu9260_128M_defconfig
+F: configs/cpu9260_nand_defconfig
+F: configs/cpu9260_nand_128M_defconfig
+F: configs/cpu9G20_defconfig
+F: configs/cpu9G20_128M_defconfig
+F: configs/cpu9G20_nand_defconfig
+F: configs/cpu9G20_nand_128M_defconfig
diff --git a/board/eukrea/cpuat91/Kconfig b/board/eukrea/cpuat91/Kconfig
new file mode 100644
index 0000000..ced3748
--- /dev/null
+++ b/board/eukrea/cpuat91/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_CPUAT91
+
+config SYS_CPU
+ string
+ default "arm920t"
+
+config SYS_BOARD
+ string
+ default "cpuat91"
+
+config SYS_VENDOR
+ string
+ default "eukrea"
+
+config SYS_SOC
+ string
+ default "at91"
+
+config SYS_CONFIG_NAME
+ string
+ default "cpuat91"
+
+endif
diff --git a/board/eukrea/cpuat91/MAINTAINERS b/board/eukrea/cpuat91/MAINTAINERS
new file mode 100644
index 0000000..1f6bc79
--- /dev/null
+++ b/board/eukrea/cpuat91/MAINTAINERS
@@ -0,0 +1,7 @@
+CPUAT91 BOARD
+M: Eric Benard <eric@eukrea.com>
+S: Maintained
+F: board/eukrea/cpuat91/
+F: include/configs/cpuat91.h
+F: configs/cpuat91_defconfig
+F: configs/cpuat91_ram_defconfig
diff --git a/board/evb64260/Kconfig b/board/evb64260/Kconfig
new file mode 100644
index 0000000..f7f86c9
--- /dev/null
+++ b/board/evb64260/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_P3G4
+
+config SYS_BOARD
+ string
+ default "evb64260"
+
+config SYS_CONFIG_NAME
+ string
+ default "P3G4"
+
+endif
+
+if TARGET_ZUMA
+
+config SYS_BOARD
+ string
+ default "evb64260"
+
+config SYS_CONFIG_NAME
+ string
+ default "ZUMA"
+
+endif
diff --git a/board/evb64260/MAINTAINERS b/board/evb64260/MAINTAINERS
new file mode 100644
index 0000000..f8307cc
--- /dev/null
+++ b/board/evb64260/MAINTAINERS
@@ -0,0 +1,12 @@
+EVB64260 BOARD
+M: Wolfgang Denk <wd@denx.de>
+S: Maintained
+F: board/evb64260/
+F: include/configs/P3G4.h
+F: configs/P3G4_defconfig
+
+ZUMA BOARD
+M: Nye Liu <nyet@zumanetworks.com>
+S: Orphan (since 2014-04)
+F: include/configs/ZUMA.h
+F: configs/ZUMA_defconfig
diff --git a/board/exmeritus/hww1u1a/Kconfig b/board/exmeritus/hww1u1a/Kconfig
new file mode 100644
index 0000000..126ce2f
--- /dev/null
+++ b/board/exmeritus/hww1u1a/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_HWW1U1A
+
+config SYS_BOARD
+ string
+ default "hww1u1a"
+
+config SYS_VENDOR
+ string
+ default "exmeritus"
+
+config SYS_CONFIG_NAME
+ string
+ default "HWW1U1A"
+
+endif
diff --git a/board/exmeritus/hww1u1a/MAINTAINERS b/board/exmeritus/hww1u1a/MAINTAINERS
new file mode 100644
index 0000000..e2fe2a6
--- /dev/null
+++ b/board/exmeritus/hww1u1a/MAINTAINERS
@@ -0,0 +1,6 @@
+HWW1U1A BOARD
+M: Kyle Moffett <Kyle.D.Moffett@boeing.com>
+S: Orphan (since 2014-06)
+F: board/exmeritus/hww1u1a/
+F: include/configs/HWW1U1A.h
+F: configs/HWW1U1A_defconfig
diff --git a/board/faraday/a320evb/Kconfig b/board/faraday/a320evb/Kconfig
new file mode 100644
index 0000000..353c873
--- /dev/null
+++ b/board/faraday/a320evb/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_A320EVB
+
+config SYS_CPU
+ string
+ default "arm920t"
+
+config SYS_BOARD
+ string
+ default "a320evb"
+
+config SYS_VENDOR
+ string
+ default "faraday"
+
+config SYS_SOC
+ string
+ default "a320"
+
+config SYS_CONFIG_NAME
+ string
+ default "a320evb"
+
+endif
diff --git a/board/faraday/a320evb/MAINTAINERS b/board/faraday/a320evb/MAINTAINERS
new file mode 100644
index 0000000..f13b015
--- /dev/null
+++ b/board/faraday/a320evb/MAINTAINERS
@@ -0,0 +1,6 @@
+A320EVB BOARD
+M: Po-Yu Chuang <ratbert@faraday-tech.com>
+S: Maintained
+F: board/faraday/a320evb/
+F: include/configs/a320evb.h
+F: configs/a320evb_defconfig
diff --git a/board/flagadm/Kconfig b/board/flagadm/Kconfig
new file mode 100644
index 0000000..bc0657e
--- /dev/null
+++ b/board/flagadm/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_FLAGADM
+
+config SYS_BOARD
+ string
+ default "flagadm"
+
+config SYS_CONFIG_NAME
+ string
+ default "FLAGADM"
+
+endif
diff --git a/board/flagadm/MAINTAINERS b/board/flagadm/MAINTAINERS
new file mode 100644
index 0000000..606989c
--- /dev/null
+++ b/board/flagadm/MAINTAINERS
@@ -0,0 +1,6 @@
+FLAGADM BOARD
+M: Kári Davíðsson <kd@flaga.is>
+S: Orphan (since 2014-06)
+F: board/flagadm/
+F: include/configs/FLAGADM.h
+F: configs/FLAGADM_defconfig
diff --git a/board/freescale/b4860qds/Kconfig b/board/freescale/b4860qds/Kconfig
new file mode 100644
index 0000000..c5321d6
--- /dev/null
+++ b/board/freescale/b4860qds/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_B4860QDS
+
+config SYS_BOARD
+ string
+ default "b4860qds"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "B4860QDS"
+
+endif
diff --git a/board/freescale/b4860qds/MAINTAINERS b/board/freescale/b4860qds/MAINTAINERS
new file mode 100644
index 0000000..9f9a612
--- /dev/null
+++ b/board/freescale/b4860qds/MAINTAINERS
@@ -0,0 +1,17 @@
+B4860QDS BOARD
+M: -
+S: Maintained
+F: board/freescale/b4860qds/
+F: include/configs/B4860QDS.h
+F: configs/B4420QDS_defconfig
+F: configs/B4420QDS_NAND_defconfig
+F: configs/B4420QDS_SPIFLASH_defconfig
+F: configs/B4860QDS_defconfig
+F: configs/B4860QDS_NAND_defconfig
+F: configs/B4860QDS_SPIFLASH_defconfig
+F: configs/B4860QDS_SRIO_PCIE_BOOT_defconfig
+
+B4860QDS_SECURE_BOOT BOARD
+M: Aneesh Bansal <aneesh.bansal@freescale.com>
+S: Maintained
+F: configs/B4860QDS_SECURE_BOOT_defconfig
diff --git a/board/freescale/bsc9131rdb/Kconfig b/board/freescale/bsc9131rdb/Kconfig
new file mode 100644
index 0000000..6099d4d
--- /dev/null
+++ b/board/freescale/bsc9131rdb/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_BSC9131RDB
+
+config SYS_BOARD
+ string
+ default "bsc9131rdb"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "BSC9131RDB"
+
+endif
diff --git a/board/freescale/bsc9131rdb/MAINTAINERS b/board/freescale/bsc9131rdb/MAINTAINERS
new file mode 100644
index 0000000..7cd8134
--- /dev/null
+++ b/board/freescale/bsc9131rdb/MAINTAINERS
@@ -0,0 +1,9 @@
+BSC9131RDB BOARD
+M: Poonam Aggrwal <poonam.aggrwal@freescale.com>
+S: Maintained
+F: board/freescale/bsc9131rdb/
+F: include/configs/BSC9131RDB.h
+F: configs/BSC9131RDB_NAND_defconfig
+F: configs/BSC9131RDB_NAND_SYSCLK100_defconfig
+F: configs/BSC9131RDB_SPIFLASH_defconfig
+F: configs/BSC9131RDB_SPIFLASH_SYSCLK100_defconfig
diff --git a/board/freescale/bsc9132qds/Kconfig b/board/freescale/bsc9132qds/Kconfig
new file mode 100644
index 0000000..955069b
--- /dev/null
+++ b/board/freescale/bsc9132qds/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_BSC9132QDS
+
+config SYS_BOARD
+ string
+ default "bsc9132qds"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "BSC9132QDS"
+
+endif
diff --git a/board/freescale/bsc9132qds/MAINTAINERS b/board/freescale/bsc9132qds/MAINTAINERS
new file mode 100644
index 0000000..3de62d3
--- /dev/null
+++ b/board/freescale/bsc9132qds/MAINTAINERS
@@ -0,0 +1,25 @@
+BSC9132QDS BOARD
+M: Naveen Burmi <NaveenBurmi@freescale.com>
+S: Maintained
+F: board/freescale/bsc9132qds/
+F: include/configs/BSC9132QDS.h
+F: configs/BSC9132QDS_NAND_DDRCLK100_defconfig
+F: configs/BSC9132QDS_NAND_DDRCLK133_defconfig
+F: configs/BSC9132QDS_NOR_DDRCLK100_defconfig
+F: configs/BSC9132QDS_NOR_DDRCLK133_defconfig
+F: configs/BSC9132QDS_SDCARD_DDRCLK100_defconfig
+F: configs/BSC9132QDS_SDCARD_DDRCLK133_defconfig
+F: configs/BSC9132QDS_SPIFLASH_DDRCLK100_defconfig
+F: configs/BSC9132QDS_SPIFLASH_DDRCLK133_defconfig
+
+BSC9132QDS_NAND_DDRCLK100_SECURE BOARD
+M: Aneesh Bansal <aneesh.bansal@freescale.com>
+S: Maintained
+F: configs/BSC9132QDS_NAND_DDRCLK100_SECURE_defconfig
+F: configs/BSC9132QDS_NAND_DDRCLK133_SECURE_defconfig
+F: configs/BSC9132QDS_NOR_DDRCLK100_SECURE_defconfig
+F: configs/BSC9132QDS_NOR_DDRCLK133_SECURE_defconfig
+F: configs/BSC9132QDS_SDCARD_DDRCLK100_SECURE_defconfig
+F: configs/BSC9132QDS_SDCARD_DDRCLK133_SECURE_defconfig
+F: configs/BSC9132QDS_SPIFLASH_DDRCLK100_SECURE_defconfig
+F: configs/BSC9132QDS_SPIFLASH_DDRCLK133_SECURE_defconfig
diff --git a/board/freescale/c29xpcie/Kconfig b/board/freescale/c29xpcie/Kconfig
new file mode 100644
index 0000000..be9c237
--- /dev/null
+++ b/board/freescale/c29xpcie/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_C29XPCIE
+
+config SYS_BOARD
+ string
+ default "c29xpcie"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "C29XPCIE"
+
+endif
diff --git a/board/freescale/c29xpcie/MAINTAINERS b/board/freescale/c29xpcie/MAINTAINERS
new file mode 100644
index 0000000..db2e5e3
--- /dev/null
+++ b/board/freescale/c29xpcie/MAINTAINERS
@@ -0,0 +1,8 @@
+C29XPCIE BOARD
+M: Po Liu <po.liu@freescale.com>
+S: Maintained
+F: board/freescale/c29xpcie/
+F: include/configs/C29XPCIE.h
+F: configs/C29XPCIE_defconfig
+F: configs/C29XPCIE_NAND_defconfig
+F: configs/C29XPCIE_SPIFLASH_defconfig
diff --git a/board/freescale/corenet_ds/Kconfig b/board/freescale/corenet_ds/Kconfig
new file mode 100644
index 0000000..8c3bd9c
--- /dev/null
+++ b/board/freescale/corenet_ds/Kconfig
@@ -0,0 +1,63 @@
+if TARGET_P3041DS
+
+config SYS_BOARD
+ string
+ default "corenet_ds"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "P3041DS"
+
+endif
+
+if TARGET_P4080DS
+
+config SYS_BOARD
+ string
+ default "corenet_ds"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "P4080DS"
+
+endif
+
+if TARGET_P5020DS
+
+config SYS_BOARD
+ string
+ default "corenet_ds"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "P5020DS"
+
+endif
+
+if TARGET_P5040DS
+
+config SYS_BOARD
+ string
+ default "corenet_ds"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "P5040DS"
+
+endif
diff --git a/board/freescale/corenet_ds/MAINTAINERS b/board/freescale/corenet_ds/MAINTAINERS
new file mode 100644
index 0000000..841d82f
--- /dev/null
+++ b/board/freescale/corenet_ds/MAINTAINERS
@@ -0,0 +1,29 @@
+CORENET_DS BOARD
+M: -
+S: Maintained
+F: board/freescale/corenet_ds/
+F: include/configs/P3041DS.h
+F: configs/P3041DS_defconfig
+F: configs/P3041DS_NAND_defconfig
+F: configs/P3041DS_SDCARD_defconfig
+F: configs/P3041DS_SECURE_BOOT_defconfig
+F: configs/P3041DS_SPIFLASH_defconfig
+F: configs/P3041DS_SRIO_PCIE_BOOT_defconfig
+F: include/configs/P4080DS.h
+F: configs/P4080DS_defconfig
+F: configs/P4080DS_SDCARD_defconfig
+F: configs/P4080DS_SECURE_BOOT_defconfig
+F: configs/P4080DS_SPIFLASH_defconfig
+F: configs/P4080DS_SRIO_PCIE_BOOT_defconfig
+F: include/configs/P5020DS.h
+F: configs/P5020DS_defconfig
+F: configs/P5020DS_NAND_defconfig
+F: configs/P5020DS_SDCARD_defconfig
+F: configs/P5020DS_SECURE_BOOT_defconfig
+F: configs/P5020DS_SPIFLASH_defconfig
+F: configs/P5020DS_SRIO_PCIE_BOOT_defconfig
+F: include/configs/P5040DS.h
+F: configs/P5040DS_defconfig
+F: configs/P5040DS_NAND_defconfig
+F: configs/P5040DS_SDCARD_defconfig
+F: configs/P5040DS_SPIFLASH_defconfig
diff --git a/board/freescale/ls2085a/Kconfig b/board/freescale/ls2085a/Kconfig
new file mode 100644
index 0000000..5655e18
--- /dev/null
+++ b/board/freescale/ls2085a/Kconfig
@@ -0,0 +1,47 @@
+if TARGET_LS2085A_EMU
+
+config SYS_CPU
+ string
+ default "armv8"
+
+config SYS_BOARD
+ string
+ default "ls2085a"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_SOC
+ string
+ default "fsl-lsch3"
+
+config SYS_CONFIG_NAME
+ string
+ default "ls2085a_emu"
+
+endif
+
+if TARGET_LS2085A_SIMU
+
+config SYS_CPU
+ string
+ default "armv8"
+
+config SYS_BOARD
+ string
+ default "ls2085a"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_SOC
+ string
+ default "fsl-lsch3"
+
+config SYS_CONFIG_NAME
+ string
+ default "ls2085a_simu"
+
+endif
diff --git a/board/freescale/ls2085a/MAINTAINERS b/board/freescale/ls2085a/MAINTAINERS
new file mode 100644
index 0000000..572c4b8
--- /dev/null
+++ b/board/freescale/ls2085a/MAINTAINERS
@@ -0,0 +1,9 @@
+LS2085A BOARD
+M: York Sun <yorksun@freescale.com>
+S: Maintained
+F: board/freescale/ls2085a/
+F: include/configs/ls2085a_emu.h
+F: configs/ls2085a_emu_defconfig
+F: configs/ls2085a_emu_D4_defconfig
+F: include/configs/ls2085a_simu.h
+F: configs/ls2085a_simu_defconfig
diff --git a/board/freescale/m5208evbe/Kconfig b/board/freescale/m5208evbe/Kconfig
new file mode 100644
index 0000000..9b1fa42
--- /dev/null
+++ b/board/freescale/m5208evbe/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_M5208EVBE
+
+config SYS_CPU
+ string
+ default "mcf52x2"
+
+config SYS_BOARD
+ string
+ default "m5208evbe"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "M5208EVBE"
+
+endif
diff --git a/board/freescale/m5208evbe/MAINTAINERS b/board/freescale/m5208evbe/MAINTAINERS
new file mode 100644
index 0000000..65d04df
--- /dev/null
+++ b/board/freescale/m5208evbe/MAINTAINERS
@@ -0,0 +1,6 @@
+M5208EVBE BOARD
+M: -
+S: Maintained
+F: board/freescale/m5208evbe/
+F: include/configs/M5208EVBE.h
+F: configs/M5208EVBE_defconfig
diff --git a/board/freescale/m52277evb/Kconfig b/board/freescale/m52277evb/Kconfig
new file mode 100644
index 0000000..54a86e4
--- /dev/null
+++ b/board/freescale/m52277evb/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_M52277EVB
+
+config SYS_CPU
+ string
+ default "mcf5227x"
+
+config SYS_BOARD
+ string
+ default "m52277evb"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "M52277EVB"
+
+endif
diff --git a/board/freescale/m52277evb/MAINTAINERS b/board/freescale/m52277evb/MAINTAINERS
new file mode 100644
index 0000000..390f041
--- /dev/null
+++ b/board/freescale/m52277evb/MAINTAINERS
@@ -0,0 +1,7 @@
+M52277EVB BOARD
+M: TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+S: Maintained
+F: board/freescale/m52277evb/
+F: include/configs/M52277EVB.h
+F: configs/M52277EVB_defconfig
+F: configs/M52277EVB_stmicro_defconfig
diff --git a/board/freescale/m5235evb/Kconfig b/board/freescale/m5235evb/Kconfig
new file mode 100644
index 0000000..f996ca2
--- /dev/null
+++ b/board/freescale/m5235evb/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_M5235EVB
+
+config SYS_CPU
+ string
+ default "mcf523x"
+
+config SYS_BOARD
+ string
+ default "m5235evb"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "M5235EVB"
+
+endif
diff --git a/board/freescale/m5235evb/MAINTAINERS b/board/freescale/m5235evb/MAINTAINERS
new file mode 100644
index 0000000..f44422e
--- /dev/null
+++ b/board/freescale/m5235evb/MAINTAINERS
@@ -0,0 +1,7 @@
+M5235EVB BOARD
+M: TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+S: Maintained
+F: board/freescale/m5235evb/
+F: include/configs/M5235EVB.h
+F: configs/M5235EVB_defconfig
+F: configs/M5235EVB_Flash32_defconfig
diff --git a/board/freescale/m5249evb/Kconfig b/board/freescale/m5249evb/Kconfig
new file mode 100644
index 0000000..87643e4
--- /dev/null
+++ b/board/freescale/m5249evb/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_M5249EVB
+
+config SYS_CPU
+ string
+ default "mcf52x2"
+
+config SYS_BOARD
+ string
+ default "m5249evb"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "M5249EVB"
+
+endif
diff --git a/board/freescale/m5249evb/MAINTAINERS b/board/freescale/m5249evb/MAINTAINERS
new file mode 100644
index 0000000..22301b7
--- /dev/null
+++ b/board/freescale/m5249evb/MAINTAINERS
@@ -0,0 +1,6 @@
+M5249EVB BOARD
+M: -
+S: Maintained
+F: board/freescale/m5249evb/
+F: include/configs/M5249EVB.h
+F: configs/M5249EVB_defconfig
diff --git a/board/freescale/m5253demo/Kconfig b/board/freescale/m5253demo/Kconfig
new file mode 100644
index 0000000..76197a7
--- /dev/null
+++ b/board/freescale/m5253demo/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_M5253DEMO
+
+config SYS_CPU
+ string
+ default "mcf52x2"
+
+config SYS_BOARD
+ string
+ default "m5253demo"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "M5253DEMO"
+
+endif
diff --git a/board/freescale/m5253demo/MAINTAINERS b/board/freescale/m5253demo/MAINTAINERS
new file mode 100644
index 0000000..abe065e
--- /dev/null
+++ b/board/freescale/m5253demo/MAINTAINERS
@@ -0,0 +1,6 @@
+M5253DEMO BOARD
+M: TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+S: Maintained
+F: board/freescale/m5253demo/
+F: include/configs/M5253DEMO.h
+F: configs/M5253DEMO_defconfig
diff --git a/board/freescale/m5253evbe/Kconfig b/board/freescale/m5253evbe/Kconfig
new file mode 100644
index 0000000..bdc6c27
--- /dev/null
+++ b/board/freescale/m5253evbe/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_M5253EVBE
+
+config SYS_CPU
+ string
+ default "mcf52x2"
+
+config SYS_BOARD
+ string
+ default "m5253evbe"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "M5253EVBE"
+
+endif
diff --git a/board/freescale/m5253evbe/MAINTAINERS b/board/freescale/m5253evbe/MAINTAINERS
new file mode 100644
index 0000000..1c21b03
--- /dev/null
+++ b/board/freescale/m5253evbe/MAINTAINERS
@@ -0,0 +1,6 @@
+M5253EVBE BOARD
+M: Hayden Fraser <Hayden.Fraser@freescale.com>
+S: Orphan (since 2014-06)
+F: board/freescale/m5253evbe/
+F: include/configs/M5253EVBE.h
+F: configs/M5253EVBE_defconfig
diff --git a/board/freescale/m5272c3/Kconfig b/board/freescale/m5272c3/Kconfig
new file mode 100644
index 0000000..b69c37a
--- /dev/null
+++ b/board/freescale/m5272c3/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_M5272C3
+
+config SYS_CPU
+ string
+ default "mcf52x2"
+
+config SYS_BOARD
+ string
+ default "m5272c3"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "M5272C3"
+
+endif
diff --git a/board/freescale/m5272c3/MAINTAINERS b/board/freescale/m5272c3/MAINTAINERS
new file mode 100644
index 0000000..aa4739f
--- /dev/null
+++ b/board/freescale/m5272c3/MAINTAINERS
@@ -0,0 +1,6 @@
+M5272C3 BOARD
+M: -
+S: Maintained
+F: board/freescale/m5272c3/
+F: include/configs/M5272C3.h
+F: configs/M5272C3_defconfig
diff --git a/board/freescale/m5275evb/Kconfig b/board/freescale/m5275evb/Kconfig
new file mode 100644
index 0000000..85514b7
--- /dev/null
+++ b/board/freescale/m5275evb/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_M5275EVB
+
+config SYS_CPU
+ string
+ default "mcf52x2"
+
+config SYS_BOARD
+ string
+ default "m5275evb"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "M5275EVB"
+
+endif
diff --git a/board/freescale/m5275evb/MAINTAINERS b/board/freescale/m5275evb/MAINTAINERS
new file mode 100644
index 0000000..b87d52c
--- /dev/null
+++ b/board/freescale/m5275evb/MAINTAINERS
@@ -0,0 +1,6 @@
+M5275EVB BOARD
+M: -
+S: Maintained
+F: board/freescale/m5275evb/
+F: include/configs/M5275EVB.h
+F: configs/M5275EVB_defconfig
diff --git a/board/freescale/m5282evb/Kconfig b/board/freescale/m5282evb/Kconfig
new file mode 100644
index 0000000..33e98a7
--- /dev/null
+++ b/board/freescale/m5282evb/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_M5282EVB
+
+config SYS_CPU
+ string
+ default "mcf52x2"
+
+config SYS_BOARD
+ string
+ default "m5282evb"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "M5282EVB"
+
+endif
diff --git a/board/freescale/m5282evb/MAINTAINERS b/board/freescale/m5282evb/MAINTAINERS
new file mode 100644
index 0000000..f945ab4
--- /dev/null
+++ b/board/freescale/m5282evb/MAINTAINERS
@@ -0,0 +1,6 @@
+M5282EVB BOARD
+M: -
+S: Maintained
+F: board/freescale/m5282evb/
+F: include/configs/M5282EVB.h
+F: configs/M5282EVB_defconfig
diff --git a/board/freescale/m53017evb/Kconfig b/board/freescale/m53017evb/Kconfig
new file mode 100644
index 0000000..99ffd7d
--- /dev/null
+++ b/board/freescale/m53017evb/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_M53017EVB
+
+config SYS_CPU
+ string
+ default "mcf532x"
+
+config SYS_BOARD
+ string
+ default "m53017evb"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "M53017EVB"
+
+endif
diff --git a/board/freescale/m53017evb/MAINTAINERS b/board/freescale/m53017evb/MAINTAINERS
new file mode 100644
index 0000000..700b6f7
--- /dev/null
+++ b/board/freescale/m53017evb/MAINTAINERS
@@ -0,0 +1,6 @@
+M53017EVB BOARD
+M: TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+S: Maintained
+F: board/freescale/m53017evb/
+F: include/configs/M53017EVB.h
+F: configs/M53017EVB_defconfig
diff --git a/board/freescale/m5329evb/Kconfig b/board/freescale/m5329evb/Kconfig
new file mode 100644
index 0000000..c9a621a
--- /dev/null
+++ b/board/freescale/m5329evb/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_M5329EVB
+
+config SYS_CPU
+ string
+ default "mcf532x"
+
+config SYS_BOARD
+ string
+ default "m5329evb"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "M5329EVB"
+
+endif
diff --git a/board/freescale/m5329evb/MAINTAINERS b/board/freescale/m5329evb/MAINTAINERS
new file mode 100644
index 0000000..f4f103a
--- /dev/null
+++ b/board/freescale/m5329evb/MAINTAINERS
@@ -0,0 +1,7 @@
+M5329EVB BOARD
+M: TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+S: Maintained
+F: board/freescale/m5329evb/
+F: include/configs/M5329EVB.h
+F: configs/M5329AFEE_defconfig
+F: configs/M5329BFEE_defconfig
diff --git a/board/freescale/m5373evb/Kconfig b/board/freescale/m5373evb/Kconfig
new file mode 100644
index 0000000..583a4b5
--- /dev/null
+++ b/board/freescale/m5373evb/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_M5373EVB
+
+config SYS_CPU
+ string
+ default "mcf532x"
+
+config SYS_BOARD
+ string
+ default "m5373evb"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "M5373EVB"
+
+endif
diff --git a/board/freescale/m5373evb/MAINTAINERS b/board/freescale/m5373evb/MAINTAINERS
new file mode 100644
index 0000000..5db0b34
--- /dev/null
+++ b/board/freescale/m5373evb/MAINTAINERS
@@ -0,0 +1,6 @@
+M5373EVB BOARD
+M: TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+S: Maintained
+F: board/freescale/m5373evb/
+F: include/configs/M5373EVB.h
+F: configs/M5373EVB_defconfig
diff --git a/board/freescale/m54418twr/Kconfig b/board/freescale/m54418twr/Kconfig
new file mode 100644
index 0000000..7d73b94
--- /dev/null
+++ b/board/freescale/m54418twr/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_M54418TWR
+
+config SYS_CPU
+ string
+ default "mcf5445x"
+
+config SYS_BOARD
+ string
+ default "m54418twr"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "M54418TWR"
+
+endif
diff --git a/board/freescale/m54418twr/MAINTAINERS b/board/freescale/m54418twr/MAINTAINERS
new file mode 100644
index 0000000..37b24c7
--- /dev/null
+++ b/board/freescale/m54418twr/MAINTAINERS
@@ -0,0 +1,11 @@
+M54418TWR BOARD
+M: -
+S: Maintained
+F: board/freescale/m54418twr/
+F: include/configs/M54418TWR.h
+F: configs/M54418TWR_defconfig
+F: configs/M54418TWR_nand_mii_defconfig
+F: configs/M54418TWR_nand_rmii_defconfig
+F: configs/M54418TWR_nand_rmii_lowfreq_defconfig
+F: configs/M54418TWR_serial_mii_defconfig
+F: configs/M54418TWR_serial_rmii_defconfig
diff --git a/board/freescale/m54451evb/Kconfig b/board/freescale/m54451evb/Kconfig
new file mode 100644
index 0000000..814db72
--- /dev/null
+++ b/board/freescale/m54451evb/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_M54451EVB
+
+config SYS_CPU
+ string
+ default "mcf5445x"
+
+config SYS_BOARD
+ string
+ default "m54451evb"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "M54451EVB"
+
+endif
diff --git a/board/freescale/m54451evb/MAINTAINERS b/board/freescale/m54451evb/MAINTAINERS
new file mode 100644
index 0000000..be14549
--- /dev/null
+++ b/board/freescale/m54451evb/MAINTAINERS
@@ -0,0 +1,7 @@
+M54451EVB BOARD
+M: -
+S: Maintained
+F: board/freescale/m54451evb/
+F: include/configs/M54451EVB.h
+F: configs/M54451EVB_defconfig
+F: configs/M54451EVB_stmicro_defconfig
diff --git a/board/freescale/m54455evb/Kconfig b/board/freescale/m54455evb/Kconfig
new file mode 100644
index 0000000..acdd13f
--- /dev/null
+++ b/board/freescale/m54455evb/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_M54455EVB
+
+config SYS_CPU
+ string
+ default "mcf5445x"
+
+config SYS_BOARD
+ string
+ default "m54455evb"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "M54455EVB"
+
+endif
diff --git a/board/freescale/m54455evb/MAINTAINERS b/board/freescale/m54455evb/MAINTAINERS
new file mode 100644
index 0000000..3788f5f
--- /dev/null
+++ b/board/freescale/m54455evb/MAINTAINERS
@@ -0,0 +1,10 @@
+M54455EVB BOARD
+M: TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+S: Maintained
+F: board/freescale/m54455evb/
+F: include/configs/M54455EVB.h
+F: configs/M54455EVB_defconfig
+F: configs/M54455EVB_a66_defconfig
+F: configs/M54455EVB_i66_defconfig
+F: configs/M54455EVB_intel_defconfig
+F: configs/M54455EVB_stm33_defconfig
diff --git a/board/freescale/m547xevb/Kconfig b/board/freescale/m547xevb/Kconfig
new file mode 100644
index 0000000..d21072e
--- /dev/null
+++ b/board/freescale/m547xevb/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_M5475EVB
+
+config SYS_CPU
+ string
+ default "mcf547x_8x"
+
+config SYS_BOARD
+ string
+ default "m547xevb"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "M5475EVB"
+
+endif
diff --git a/board/freescale/m547xevb/MAINTAINERS b/board/freescale/m547xevb/MAINTAINERS
new file mode 100644
index 0000000..9a8408d
--- /dev/null
+++ b/board/freescale/m547xevb/MAINTAINERS
@@ -0,0 +1,12 @@
+M547XEVB BOARD
+M: TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+S: Maintained
+F: board/freescale/m547xevb/
+F: include/configs/M5475EVB.h
+F: configs/M5475AFE_defconfig
+F: configs/M5475BFE_defconfig
+F: configs/M5475CFE_defconfig
+F: configs/M5475DFE_defconfig
+F: configs/M5475EFE_defconfig
+F: configs/M5475FFE_defconfig
+F: configs/M5475GFE_defconfig
diff --git a/board/freescale/m548xevb/Kconfig b/board/freescale/m548xevb/Kconfig
new file mode 100644
index 0000000..2afe11c
--- /dev/null
+++ b/board/freescale/m548xevb/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_M5485EVB
+
+config SYS_CPU
+ string
+ default "mcf547x_8x"
+
+config SYS_BOARD
+ string
+ default "m548xevb"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "M5485EVB"
+
+endif
diff --git a/board/freescale/m548xevb/MAINTAINERS b/board/freescale/m548xevb/MAINTAINERS
new file mode 100644
index 0000000..82ad9fd
--- /dev/null
+++ b/board/freescale/m548xevb/MAINTAINERS
@@ -0,0 +1,13 @@
+M548XEVB BOARD
+M: TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+S: Maintained
+F: board/freescale/m548xevb/
+F: include/configs/M5485EVB.h
+F: configs/M5485AFE_defconfig
+F: configs/M5485BFE_defconfig
+F: configs/M5485CFE_defconfig
+F: configs/M5485DFE_defconfig
+F: configs/M5485EFE_defconfig
+F: configs/M5485FFE_defconfig
+F: configs/M5485GFE_defconfig
+F: configs/M5485HFE_defconfig
diff --git a/board/freescale/mpc5121ads/Kconfig b/board/freescale/mpc5121ads/Kconfig
new file mode 100644
index 0000000..9989ccb
--- /dev/null
+++ b/board/freescale/mpc5121ads/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MPC5121ADS
+
+config SYS_BOARD
+ string
+ default "mpc5121ads"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "mpc5121ads"
+
+endif
diff --git a/board/freescale/mpc5121ads/MAINTAINERS b/board/freescale/mpc5121ads/MAINTAINERS
new file mode 100644
index 0000000..0c7f682
--- /dev/null
+++ b/board/freescale/mpc5121ads/MAINTAINERS
@@ -0,0 +1,7 @@
+MPC5121ADS BOARD
+M: -
+S: Maintained
+F: board/freescale/mpc5121ads/
+F: include/configs/mpc5121ads.h
+F: configs/mpc5121ads_defconfig
+F: configs/mpc5121ads_rev2_defconfig
diff --git a/board/freescale/mpc7448hpc2/Kconfig b/board/freescale/mpc7448hpc2/Kconfig
new file mode 100644
index 0000000..0ea712c
--- /dev/null
+++ b/board/freescale/mpc7448hpc2/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MPC7448HPC2
+
+config SYS_BOARD
+ string
+ default "mpc7448hpc2"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "mpc7448hpc2"
+
+endif
diff --git a/board/freescale/mpc7448hpc2/MAINTAINERS b/board/freescale/mpc7448hpc2/MAINTAINERS
new file mode 100644
index 0000000..9966b55
--- /dev/null
+++ b/board/freescale/mpc7448hpc2/MAINTAINERS
@@ -0,0 +1,6 @@
+MPC7448HPC2 BOARD
+M: Roy Zang <tie-fei.zang@freescale.com>
+S: Maintained
+F: board/freescale/mpc7448hpc2/
+F: include/configs/mpc7448hpc2.h
+F: configs/mpc7448hpc2_defconfig
diff --git a/board/freescale/mpc8266ads/Kconfig b/board/freescale/mpc8266ads/Kconfig
new file mode 100644
index 0000000..7c5a646
--- /dev/null
+++ b/board/freescale/mpc8266ads/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MPC8266ADS
+
+config SYS_BOARD
+ string
+ default "mpc8266ads"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "MPC8266ADS"
+
+endif
diff --git a/board/freescale/mpc8266ads/MAINTAINERS b/board/freescale/mpc8266ads/MAINTAINERS
new file mode 100644
index 0000000..bdea02d
--- /dev/null
+++ b/board/freescale/mpc8266ads/MAINTAINERS
@@ -0,0 +1,6 @@
+MPC8266ADS BOARD
+M: Rune Torgersen <runet@innovsys.com>
+S: Maintained
+F: board/freescale/mpc8266ads/
+F: include/configs/MPC8266ADS.h
+F: configs/MPC8266ADS_defconfig
diff --git a/board/freescale/mpc8308rdb/Kconfig b/board/freescale/mpc8308rdb/Kconfig
new file mode 100644
index 0000000..b47765a
--- /dev/null
+++ b/board/freescale/mpc8308rdb/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MPC8308RDB
+
+config SYS_BOARD
+ string
+ default "mpc8308rdb"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "MPC8308RDB"
+
+endif
diff --git a/board/freescale/mpc8308rdb/MAINTAINERS b/board/freescale/mpc8308rdb/MAINTAINERS
new file mode 100644
index 0000000..07ff2abd
--- /dev/null
+++ b/board/freescale/mpc8308rdb/MAINTAINERS
@@ -0,0 +1,6 @@
+MPC8308RDB BOARD
+M: Ilya Yanok <yanok@emcraft.com>
+S: Maintained
+F: board/freescale/mpc8308rdb/
+F: include/configs/MPC8308RDB.h
+F: configs/MPC8308RDB_defconfig
diff --git a/board/freescale/mpc8313erdb/Kconfig b/board/freescale/mpc8313erdb/Kconfig
new file mode 100644
index 0000000..078f437
--- /dev/null
+++ b/board/freescale/mpc8313erdb/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MPC8313ERDB
+
+config SYS_BOARD
+ string
+ default "mpc8313erdb"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "MPC8313ERDB"
+
+endif
diff --git a/board/freescale/mpc8313erdb/MAINTAINERS b/board/freescale/mpc8313erdb/MAINTAINERS
new file mode 100644
index 0000000..923ba95
--- /dev/null
+++ b/board/freescale/mpc8313erdb/MAINTAINERS
@@ -0,0 +1,9 @@
+MPC8313ERDB BOARD
+M: -
+S: Maintained
+F: board/freescale/mpc8313erdb/
+F: include/configs/MPC8313ERDB.h
+F: configs/MPC8313ERDB_33_defconfig
+F: configs/MPC8313ERDB_66_defconfig
+F: configs/MPC8313ERDB_NAND_33_defconfig
+F: configs/MPC8313ERDB_NAND_66_defconfig
diff --git a/board/freescale/mpc8315erdb/Kconfig b/board/freescale/mpc8315erdb/Kconfig
new file mode 100644
index 0000000..46833ca
--- /dev/null
+++ b/board/freescale/mpc8315erdb/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MPC8315ERDB
+
+config SYS_BOARD
+ string
+ default "mpc8315erdb"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "MPC8315ERDB"
+
+endif
diff --git a/board/freescale/mpc8315erdb/MAINTAINERS b/board/freescale/mpc8315erdb/MAINTAINERS
new file mode 100644
index 0000000..938c152
--- /dev/null
+++ b/board/freescale/mpc8315erdb/MAINTAINERS
@@ -0,0 +1,6 @@
+MPC8315ERDB BOARD
+M: Dave Liu <daveliu@freescale.com>
+S: Maintained
+F: board/freescale/mpc8315erdb/
+F: include/configs/MPC8315ERDB.h
+F: configs/MPC8315ERDB_defconfig
diff --git a/board/freescale/mpc8323erdb/Kconfig b/board/freescale/mpc8323erdb/Kconfig
new file mode 100644
index 0000000..a1c0a61
--- /dev/null
+++ b/board/freescale/mpc8323erdb/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MPC8323ERDB
+
+config SYS_BOARD
+ string
+ default "mpc8323erdb"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "MPC8323ERDB"
+
+endif
diff --git a/board/freescale/mpc8323erdb/MAINTAINERS b/board/freescale/mpc8323erdb/MAINTAINERS
new file mode 100644
index 0000000..05057c0
--- /dev/null
+++ b/board/freescale/mpc8323erdb/MAINTAINERS
@@ -0,0 +1,6 @@
+MPC8323ERDB BOARD
+M: Michael Barkowski <michael.barkowski@freescale.com>
+S: Maintained
+F: board/freescale/mpc8323erdb/
+F: include/configs/MPC8323ERDB.h
+F: configs/MPC8323ERDB_defconfig
diff --git a/board/freescale/mpc832xemds/Kconfig b/board/freescale/mpc832xemds/Kconfig
new file mode 100644
index 0000000..83af2c2
--- /dev/null
+++ b/board/freescale/mpc832xemds/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MPC832XEMDS
+
+config SYS_BOARD
+ string
+ default "mpc832xemds"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "MPC832XEMDS"
+
+endif
diff --git a/board/freescale/mpc832xemds/MAINTAINERS b/board/freescale/mpc832xemds/MAINTAINERS
new file mode 100644
index 0000000..56d7073
--- /dev/null
+++ b/board/freescale/mpc832xemds/MAINTAINERS
@@ -0,0 +1,10 @@
+MPC832XEMDS BOARD
+M: Dave Liu <daveliu@freescale.com>
+S: Maintained
+F: board/freescale/mpc832xemds/
+F: include/configs/MPC832XEMDS.h
+F: configs/MPC832XEMDS_defconfig
+F: configs/MPC832XEMDS_ATM_defconfig
+F: configs/MPC832XEMDS_HOST_33_defconfig
+F: configs/MPC832XEMDS_HOST_66_defconfig
+F: configs/MPC832XEMDS_SLAVE_defconfig
diff --git a/board/freescale/mpc8349emds/Kconfig b/board/freescale/mpc8349emds/Kconfig
new file mode 100644
index 0000000..8f549dc
--- /dev/null
+++ b/board/freescale/mpc8349emds/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MPC8349EMDS
+
+config SYS_BOARD
+ string
+ default "mpc8349emds"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "MPC8349EMDS"
+
+endif
diff --git a/board/freescale/mpc8349emds/MAINTAINERS b/board/freescale/mpc8349emds/MAINTAINERS
new file mode 100644
index 0000000..141e77a
--- /dev/null
+++ b/board/freescale/mpc8349emds/MAINTAINERS
@@ -0,0 +1,6 @@
+MPC8349EMDS BOARD
+M: Kim Phillips <kim.phillips@freescale.com>
+S: Maintained
+F: board/freescale/mpc8349emds/
+F: include/configs/MPC8349EMDS.h
+F: configs/MPC8349EMDS_defconfig
diff --git a/board/freescale/mpc8349itx/Kconfig b/board/freescale/mpc8349itx/Kconfig
new file mode 100644
index 0000000..af3fedd
--- /dev/null
+++ b/board/freescale/mpc8349itx/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MPC8349ITX
+
+config SYS_BOARD
+ string
+ default "mpc8349itx"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "MPC8349ITX"
+
+endif
diff --git a/board/freescale/mpc8349itx/MAINTAINERS b/board/freescale/mpc8349itx/MAINTAINERS
new file mode 100644
index 0000000..ed6e4e5
--- /dev/null
+++ b/board/freescale/mpc8349itx/MAINTAINERS
@@ -0,0 +1,8 @@
+MPC8349ITX BOARD
+M: -
+S: Maintained
+F: board/freescale/mpc8349itx/
+F: include/configs/MPC8349ITX.h
+F: configs/MPC8349ITX_defconfig
+F: configs/MPC8349ITX_LOWBOOT_defconfig
+F: configs/MPC8349ITXGP_defconfig
diff --git a/board/freescale/mpc8360emds/Kconfig b/board/freescale/mpc8360emds/Kconfig
new file mode 100644
index 0000000..d6e7766
--- /dev/null
+++ b/board/freescale/mpc8360emds/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MPC8360EMDS
+
+config SYS_BOARD
+ string
+ default "mpc8360emds"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "MPC8360EMDS"
+
+endif
diff --git a/board/freescale/mpc8360emds/MAINTAINERS b/board/freescale/mpc8360emds/MAINTAINERS
new file mode 100644
index 0000000..91ff2ef
--- /dev/null
+++ b/board/freescale/mpc8360emds/MAINTAINERS
@@ -0,0 +1,15 @@
+MPC8360EMDS BOARD
+M: Dave Liu <daveliu@freescale.com>
+S: Maintained
+F: board/freescale/mpc8360emds/
+F: include/configs/MPC8360EMDS.h
+F: configs/MPC8360EMDS_33_defconfig
+F: configs/MPC8360EMDS_33_ATM_defconfig
+F: configs/MPC8360EMDS_33_HOST_33_defconfig
+F: configs/MPC8360EMDS_33_HOST_66_defconfig
+F: configs/MPC8360EMDS_33_SLAVE_defconfig
+F: configs/MPC8360EMDS_66_defconfig
+F: configs/MPC8360EMDS_66_ATM_defconfig
+F: configs/MPC8360EMDS_66_HOST_33_defconfig
+F: configs/MPC8360EMDS_66_HOST_66_defconfig
+F: configs/MPC8360EMDS_66_SLAVE_defconfig
diff --git a/board/freescale/mpc8360erdk/Kconfig b/board/freescale/mpc8360erdk/Kconfig
new file mode 100644
index 0000000..bfb3b1f
--- /dev/null
+++ b/board/freescale/mpc8360erdk/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MPC8360ERDK
+
+config SYS_BOARD
+ string
+ default "mpc8360erdk"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "MPC8360ERDK"
+
+endif
diff --git a/board/freescale/mpc8360erdk/MAINTAINERS b/board/freescale/mpc8360erdk/MAINTAINERS
new file mode 100644
index 0000000..cb075d6
--- /dev/null
+++ b/board/freescale/mpc8360erdk/MAINTAINERS
@@ -0,0 +1,7 @@
+MPC8360ERDK BOARD
+M: Anton Vorontsov <avorontsov@ru.mvista.com>
+S: Orphan (since 2014-03)
+F: board/freescale/mpc8360erdk/
+F: include/configs/MPC8360ERDK.h
+F: configs/MPC8360ERDK_defconfig
+F: configs/MPC8360ERDK_33_defconfig
diff --git a/board/freescale/mpc837xemds/Kconfig b/board/freescale/mpc837xemds/Kconfig
new file mode 100644
index 0000000..b0357cb
--- /dev/null
+++ b/board/freescale/mpc837xemds/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MPC837XEMDS
+
+config SYS_BOARD
+ string
+ default "mpc837xemds"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "MPC837XEMDS"
+
+endif
diff --git a/board/freescale/mpc837xemds/MAINTAINERS b/board/freescale/mpc837xemds/MAINTAINERS
new file mode 100644
index 0000000..6ff1346
--- /dev/null
+++ b/board/freescale/mpc837xemds/MAINTAINERS
@@ -0,0 +1,7 @@
+MPC837XEMDS BOARD
+M: Dave Liu <daveliu@freescale.com>
+S: Maintained
+F: board/freescale/mpc837xemds/
+F: include/configs/MPC837XEMDS.h
+F: configs/MPC837XEMDS_defconfig
+F: configs/MPC837XEMDS_HOST_defconfig
diff --git a/board/freescale/mpc837xerdb/Kconfig b/board/freescale/mpc837xerdb/Kconfig
new file mode 100644
index 0000000..f8e33e6
--- /dev/null
+++ b/board/freescale/mpc837xerdb/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MPC837XERDB
+
+config SYS_BOARD
+ string
+ default "mpc837xerdb"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "MPC837XERDB"
+
+endif
diff --git a/board/freescale/mpc837xerdb/MAINTAINERS b/board/freescale/mpc837xerdb/MAINTAINERS
new file mode 100644
index 0000000..c216d8d
--- /dev/null
+++ b/board/freescale/mpc837xerdb/MAINTAINERS
@@ -0,0 +1,6 @@
+MPC837XERDB BOARD
+M: Joe D'Abbraccio <ljd015@freescale.com>
+S: Orphan (since 2014-06)
+F: board/freescale/mpc837xerdb/
+F: include/configs/MPC837XERDB.h
+F: configs/MPC837XERDB_defconfig
diff --git a/board/freescale/mpc8536ds/Kconfig b/board/freescale/mpc8536ds/Kconfig
new file mode 100644
index 0000000..c7c818c
--- /dev/null
+++ b/board/freescale/mpc8536ds/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MPC8536DS
+
+config SYS_BOARD
+ string
+ default "mpc8536ds"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "MPC8536DS"
+
+endif
diff --git a/board/freescale/mpc8536ds/MAINTAINERS b/board/freescale/mpc8536ds/MAINTAINERS
new file mode 100644
index 0000000..51d7cd7
--- /dev/null
+++ b/board/freescale/mpc8536ds/MAINTAINERS
@@ -0,0 +1,9 @@
+MPC8536DS BOARD
+M: -
+S: Maintained
+F: board/freescale/mpc8536ds/
+F: include/configs/MPC8536DS.h
+F: configs/MPC8536DS_defconfig
+F: configs/MPC8536DS_36BIT_defconfig
+F: configs/MPC8536DS_SDCARD_defconfig
+F: configs/MPC8536DS_SPIFLASH_defconfig
diff --git a/board/freescale/mpc8540ads/Kconfig b/board/freescale/mpc8540ads/Kconfig
new file mode 100644
index 0000000..2cf252c
--- /dev/null
+++ b/board/freescale/mpc8540ads/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MPC8540ADS
+
+config SYS_BOARD
+ string
+ default "mpc8540ads"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "MPC8540ADS"
+
+endif
diff --git a/board/freescale/mpc8540ads/MAINTAINERS b/board/freescale/mpc8540ads/MAINTAINERS
new file mode 100644
index 0000000..41a2191
--- /dev/null
+++ b/board/freescale/mpc8540ads/MAINTAINERS
@@ -0,0 +1,6 @@
+MPC8540ADS BOARD
+M: Kumar Gala <kumar.gala@freescale.com>
+S: Orphan (since 2014-06)
+F: board/freescale/mpc8540ads/
+F: include/configs/MPC8540ADS.h
+F: configs/MPC8540ADS_defconfig
diff --git a/board/freescale/mpc8541cds/Kconfig b/board/freescale/mpc8541cds/Kconfig
new file mode 100644
index 0000000..2beefc2
--- /dev/null
+++ b/board/freescale/mpc8541cds/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MPC8541CDS
+
+config SYS_BOARD
+ string
+ default "mpc8541cds"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "MPC8541CDS"
+
+endif
diff --git a/board/freescale/mpc8541cds/MAINTAINERS b/board/freescale/mpc8541cds/MAINTAINERS
new file mode 100644
index 0000000..073210d
--- /dev/null
+++ b/board/freescale/mpc8541cds/MAINTAINERS
@@ -0,0 +1,7 @@
+MPC8541CDS BOARD
+M: Kumar Gala <kumar.gala@freescale.com>
+S: Orphan (since 2014-06)
+F: board/freescale/mpc8541cds/
+F: include/configs/MPC8541CDS.h
+F: configs/MPC8541CDS_defconfig
+F: configs/MPC8541CDS_legacy_defconfig
diff --git a/board/freescale/mpc8544ds/Kconfig b/board/freescale/mpc8544ds/Kconfig
new file mode 100644
index 0000000..d55b680
--- /dev/null
+++ b/board/freescale/mpc8544ds/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MPC8544DS
+
+config SYS_BOARD
+ string
+ default "mpc8544ds"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "MPC8544DS"
+
+endif
diff --git a/board/freescale/mpc8544ds/MAINTAINERS b/board/freescale/mpc8544ds/MAINTAINERS
new file mode 100644
index 0000000..81b664c
--- /dev/null
+++ b/board/freescale/mpc8544ds/MAINTAINERS
@@ -0,0 +1,6 @@
+MPC8544DS BOARD
+M: -
+S: Maintained
+F: board/freescale/mpc8544ds/
+F: include/configs/MPC8544DS.h
+F: configs/MPC8544DS_defconfig
diff --git a/board/freescale/mpc8548cds/Kconfig b/board/freescale/mpc8548cds/Kconfig
new file mode 100644
index 0000000..69d717e
--- /dev/null
+++ b/board/freescale/mpc8548cds/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MPC8548CDS
+
+config SYS_BOARD
+ string
+ default "mpc8548cds"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "MPC8548CDS"
+
+endif
diff --git a/board/freescale/mpc8548cds/MAINTAINERS b/board/freescale/mpc8548cds/MAINTAINERS
new file mode 100644
index 0000000..89b2425
--- /dev/null
+++ b/board/freescale/mpc8548cds/MAINTAINERS
@@ -0,0 +1,8 @@
+MPC8548CDS BOARD
+M: -
+S: Maintained
+F: board/freescale/mpc8548cds/
+F: include/configs/MPC8548CDS.h
+F: configs/MPC8548CDS_defconfig
+F: configs/MPC8548CDS_36BIT_defconfig
+F: configs/MPC8548CDS_legacy_defconfig
diff --git a/board/freescale/mpc8555cds/Kconfig b/board/freescale/mpc8555cds/Kconfig
new file mode 100644
index 0000000..5858308
--- /dev/null
+++ b/board/freescale/mpc8555cds/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MPC8555CDS
+
+config SYS_BOARD
+ string
+ default "mpc8555cds"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "MPC8555CDS"
+
+endif
diff --git a/board/freescale/mpc8555cds/MAINTAINERS b/board/freescale/mpc8555cds/MAINTAINERS
new file mode 100644
index 0000000..14470d7
--- /dev/null
+++ b/board/freescale/mpc8555cds/MAINTAINERS
@@ -0,0 +1,7 @@
+MPC8555CDS BOARD
+M: Kumar Gala <kumar.gala@freescale.com>
+S: Orphan (since 2014-06)
+F: board/freescale/mpc8555cds/
+F: include/configs/MPC8555CDS.h
+F: configs/MPC8555CDS_defconfig
+F: configs/MPC8555CDS_legacy_defconfig
diff --git a/board/freescale/mpc8560ads/Kconfig b/board/freescale/mpc8560ads/Kconfig
new file mode 100644
index 0000000..55cdb62
--- /dev/null
+++ b/board/freescale/mpc8560ads/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MPC8560ADS
+
+config SYS_BOARD
+ string
+ default "mpc8560ads"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "MPC8560ADS"
+
+endif
diff --git a/board/freescale/mpc8560ads/MAINTAINERS b/board/freescale/mpc8560ads/MAINTAINERS
new file mode 100644
index 0000000..836def2
--- /dev/null
+++ b/board/freescale/mpc8560ads/MAINTAINERS
@@ -0,0 +1,6 @@
+MPC8560ADS BOARD
+M: Kumar Gala <kumar.gala@freescale.com>
+S: Orphan (since 2014-06)
+F: board/freescale/mpc8560ads/
+F: include/configs/MPC8560ADS.h
+F: configs/MPC8560ADS_defconfig
diff --git a/board/freescale/mpc8568mds/Kconfig b/board/freescale/mpc8568mds/Kconfig
new file mode 100644
index 0000000..b02946b
--- /dev/null
+++ b/board/freescale/mpc8568mds/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MPC8568MDS
+
+config SYS_BOARD
+ string
+ default "mpc8568mds"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "MPC8568MDS"
+
+endif
diff --git a/board/freescale/mpc8568mds/MAINTAINERS b/board/freescale/mpc8568mds/MAINTAINERS
new file mode 100644
index 0000000..72c25f5
--- /dev/null
+++ b/board/freescale/mpc8568mds/MAINTAINERS
@@ -0,0 +1,6 @@
+MPC8568MDS BOARD
+M: -
+S: Maintained
+F: board/freescale/mpc8568mds/
+F: include/configs/MPC8568MDS.h
+F: configs/MPC8568MDS_defconfig
diff --git a/board/freescale/mpc8569mds/Kconfig b/board/freescale/mpc8569mds/Kconfig
new file mode 100644
index 0000000..f13a07e
--- /dev/null
+++ b/board/freescale/mpc8569mds/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MPC8569MDS
+
+config SYS_BOARD
+ string
+ default "mpc8569mds"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "MPC8569MDS"
+
+endif
diff --git a/board/freescale/mpc8569mds/MAINTAINERS b/board/freescale/mpc8569mds/MAINTAINERS
new file mode 100644
index 0000000..b5478db
--- /dev/null
+++ b/board/freescale/mpc8569mds/MAINTAINERS
@@ -0,0 +1,7 @@
+MPC8569MDS BOARD
+M: -
+S: Maintained
+F: board/freescale/mpc8569mds/
+F: include/configs/MPC8569MDS.h
+F: configs/MPC8569MDS_defconfig
+F: configs/MPC8569MDS_ATM_defconfig
diff --git a/board/freescale/mpc8572ds/Kconfig b/board/freescale/mpc8572ds/Kconfig
new file mode 100644
index 0000000..3794f03
--- /dev/null
+++ b/board/freescale/mpc8572ds/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MPC8572DS
+
+config SYS_BOARD
+ string
+ default "mpc8572ds"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "MPC8572DS"
+
+endif
diff --git a/board/freescale/mpc8572ds/MAINTAINERS b/board/freescale/mpc8572ds/MAINTAINERS
new file mode 100644
index 0000000..4c9b968
--- /dev/null
+++ b/board/freescale/mpc8572ds/MAINTAINERS
@@ -0,0 +1,7 @@
+MPC8572DS BOARD
+M: York Sun <yorksun@freescale.com>
+S: Maintained
+F: board/freescale/mpc8572ds/
+F: include/configs/MPC8572DS.h
+F: configs/MPC8572DS_defconfig
+F: configs/MPC8572DS_36BIT_defconfig
diff --git a/board/freescale/mpc8610hpcd/Kconfig b/board/freescale/mpc8610hpcd/Kconfig
new file mode 100644
index 0000000..463a433
--- /dev/null
+++ b/board/freescale/mpc8610hpcd/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MPC8610HPCD
+
+config SYS_BOARD
+ string
+ default "mpc8610hpcd"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "MPC8610HPCD"
+
+endif
diff --git a/board/freescale/mpc8610hpcd/MAINTAINERS b/board/freescale/mpc8610hpcd/MAINTAINERS
new file mode 100644
index 0000000..993c02a
--- /dev/null
+++ b/board/freescale/mpc8610hpcd/MAINTAINERS
@@ -0,0 +1,6 @@
+MPC8610HPCD BOARD
+M: -
+S: Maintained
+F: board/freescale/mpc8610hpcd/
+F: include/configs/MPC8610HPCD.h
+F: configs/MPC8610HPCD_defconfig
diff --git a/board/freescale/mpc8641hpcn/Kconfig b/board/freescale/mpc8641hpcn/Kconfig
new file mode 100644
index 0000000..9fc4241
--- /dev/null
+++ b/board/freescale/mpc8641hpcn/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MPC8641HPCN
+
+config SYS_BOARD
+ string
+ default "mpc8641hpcn"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "MPC8641HPCN"
+
+endif
diff --git a/board/freescale/mpc8641hpcn/MAINTAINERS b/board/freescale/mpc8641hpcn/MAINTAINERS
new file mode 100644
index 0000000..34bcc6c
--- /dev/null
+++ b/board/freescale/mpc8641hpcn/MAINTAINERS
@@ -0,0 +1,7 @@
+MPC8641HPCN BOARD
+M: Kumar Gala <kumar.gala@freescale.com>
+S: Orphan (since 2014-06)
+F: board/freescale/mpc8641hpcn/
+F: include/configs/MPC8641HPCN.h
+F: configs/MPC8641HPCN_defconfig
+F: configs/MPC8641HPCN_36BIT_defconfig
diff --git a/board/freescale/mx23evk/Kconfig b/board/freescale/mx23evk/Kconfig
new file mode 100644
index 0000000..ee7911c
--- /dev/null
+++ b/board/freescale/mx23evk/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_MX23EVK
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "mx23evk"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_SOC
+ string
+ default "mxs"
+
+config SYS_CONFIG_NAME
+ string
+ default "mx23evk"
+
+endif
diff --git a/board/freescale/mx23evk/MAINTAINERS b/board/freescale/mx23evk/MAINTAINERS
new file mode 100644
index 0000000..b03ad6a
--- /dev/null
+++ b/board/freescale/mx23evk/MAINTAINERS
@@ -0,0 +1,6 @@
+MX23EVK BOARD
+M: Otavio Salvador <otavio@ossystems.com.br>
+S: Maintained
+F: board/freescale/mx23evk/
+F: include/configs/mx23evk.h
+F: configs/mx23evk_defconfig
diff --git a/board/freescale/mx25pdk/Kconfig b/board/freescale/mx25pdk/Kconfig
new file mode 100644
index 0000000..67cb5ec
--- /dev/null
+++ b/board/freescale/mx25pdk/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_MX25PDK
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "mx25pdk"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_SOC
+ string
+ default "mx25"
+
+config SYS_CONFIG_NAME
+ string
+ default "mx25pdk"
+
+endif
diff --git a/board/freescale/mx25pdk/MAINTAINERS b/board/freescale/mx25pdk/MAINTAINERS
new file mode 100644
index 0000000..6322176
--- /dev/null
+++ b/board/freescale/mx25pdk/MAINTAINERS
@@ -0,0 +1,6 @@
+MX25PDK BOARD
+M: Fabio Estevam <fabio.estevam@freescale.com>
+S: Maintained
+F: board/freescale/mx25pdk/
+F: include/configs/mx25pdk.h
+F: configs/mx25pdk_defconfig
diff --git a/board/freescale/mx28evk/Kconfig b/board/freescale/mx28evk/Kconfig
new file mode 100644
index 0000000..2fe6f32
--- /dev/null
+++ b/board/freescale/mx28evk/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_MX28EVK
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "mx28evk"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_SOC
+ string
+ default "mxs"
+
+config SYS_CONFIG_NAME
+ string
+ default "mx28evk"
+
+endif
diff --git a/board/freescale/mx28evk/MAINTAINERS b/board/freescale/mx28evk/MAINTAINERS
new file mode 100644
index 0000000..1caf5fb
--- /dev/null
+++ b/board/freescale/mx28evk/MAINTAINERS
@@ -0,0 +1,9 @@
+MX28EVK BOARD
+M: Fabio Estevam <fabio.estevam@freescale.com>
+S: Maintained
+F: board/freescale/mx28evk/
+F: include/configs/mx28evk.h
+F: configs/mx28evk_defconfig
+F: configs/mx28evk_auart_console_defconfig
+F: configs/mx28evk_nand_defconfig
+F: configs/mx28evk_spi_defconfig
diff --git a/board/freescale/mx31ads/Kconfig b/board/freescale/mx31ads/Kconfig
new file mode 100644
index 0000000..96116dd
--- /dev/null
+++ b/board/freescale/mx31ads/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_MX31ADS
+
+config SYS_CPU
+ string
+ default "arm1136"
+
+config SYS_BOARD
+ string
+ default "mx31ads"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_SOC
+ string
+ default "mx31"
+
+config SYS_CONFIG_NAME
+ string
+ default "mx31ads"
+
+endif
diff --git a/board/freescale/mx31ads/MAINTAINERS b/board/freescale/mx31ads/MAINTAINERS
new file mode 100644
index 0000000..e9c8fe7
--- /dev/null
+++ b/board/freescale/mx31ads/MAINTAINERS
@@ -0,0 +1,6 @@
+MX31ADS BOARD
+M: (resigned) Guennadi Liakhovetski <g.liakhovetski@gmx.de>
+S: Orphan (since 2013-09)
+F: board/freescale/mx31ads/
+F: include/configs/mx31ads.h
+F: configs/mx31ads_defconfig
diff --git a/board/freescale/mx31pdk/Kconfig b/board/freescale/mx31pdk/Kconfig
new file mode 100644
index 0000000..6ac6a59
--- /dev/null
+++ b/board/freescale/mx31pdk/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_MX31PDK
+
+config SYS_CPU
+ string
+ default "arm1136"
+
+config SYS_BOARD
+ string
+ default "mx31pdk"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_SOC
+ string
+ default "mx31"
+
+config SYS_CONFIG_NAME
+ string
+ default "mx31pdk"
+
+endif
diff --git a/board/freescale/mx31pdk/MAINTAINERS b/board/freescale/mx31pdk/MAINTAINERS
new file mode 100644
index 0000000..2e057db
--- /dev/null
+++ b/board/freescale/mx31pdk/MAINTAINERS
@@ -0,0 +1,6 @@
+MX31PDK BOARD
+M: Fabio Estevam <fabio.estevam@freescale.com>
+S: Maintained
+F: board/freescale/mx31pdk/
+F: include/configs/mx31pdk.h
+F: configs/mx31pdk_defconfig
diff --git a/board/freescale/mx35pdk/Kconfig b/board/freescale/mx35pdk/Kconfig
new file mode 100644
index 0000000..5555b0b
--- /dev/null
+++ b/board/freescale/mx35pdk/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_MX35PDK
+
+config SYS_CPU
+ string
+ default "arm1136"
+
+config SYS_BOARD
+ string
+ default "mx35pdk"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_SOC
+ string
+ default "mx35"
+
+config SYS_CONFIG_NAME
+ string
+ default "mx35pdk"
+
+endif
diff --git a/board/freescale/mx35pdk/MAINTAINERS b/board/freescale/mx35pdk/MAINTAINERS
new file mode 100644
index 0000000..540e943
--- /dev/null
+++ b/board/freescale/mx35pdk/MAINTAINERS
@@ -0,0 +1,6 @@
+MX35PDK BOARD
+M: Stefano Babic <sbabic@denx.de>
+S: Maintained
+F: board/freescale/mx35pdk/
+F: include/configs/mx35pdk.h
+F: configs/mx35pdk_defconfig
diff --git a/board/freescale/mx51evk/Kconfig b/board/freescale/mx51evk/Kconfig
new file mode 100644
index 0000000..a6dbbdd
--- /dev/null
+++ b/board/freescale/mx51evk/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_MX51EVK
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "mx51evk"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_SOC
+ string
+ default "mx5"
+
+config SYS_CONFIG_NAME
+ string
+ default "mx51evk"
+
+endif
diff --git a/board/freescale/mx51evk/MAINTAINERS b/board/freescale/mx51evk/MAINTAINERS
new file mode 100644
index 0000000..0e5f22c
--- /dev/null
+++ b/board/freescale/mx51evk/MAINTAINERS
@@ -0,0 +1,6 @@
+MX51EVK BOARD
+M: Stefano Babic <sbabic@denx.de>
+S: Maintained
+F: board/freescale/mx51evk/
+F: include/configs/mx51evk.h
+F: configs/mx51evk_defconfig
diff --git a/board/freescale/mx53ard/Kconfig b/board/freescale/mx53ard/Kconfig
new file mode 100644
index 0000000..eaaa1b2
--- /dev/null
+++ b/board/freescale/mx53ard/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_MX53ARD
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "mx53ard"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_SOC
+ string
+ default "mx5"
+
+config SYS_CONFIG_NAME
+ string
+ default "mx53ard"
+
+endif
diff --git a/board/freescale/mx53ard/MAINTAINERS b/board/freescale/mx53ard/MAINTAINERS
new file mode 100644
index 0000000..7cc0e5e
--- /dev/null
+++ b/board/freescale/mx53ard/MAINTAINERS
@@ -0,0 +1,6 @@
+MX53ARD BOARD
+M: Fabio Estevam <fabio.estevam@freescale.com>
+S: Maintained
+F: board/freescale/mx53ard/
+F: include/configs/mx53ard.h
+F: configs/mx53ard_defconfig
diff --git a/board/freescale/mx53evk/Kconfig b/board/freescale/mx53evk/Kconfig
new file mode 100644
index 0000000..dda1ada
--- /dev/null
+++ b/board/freescale/mx53evk/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_MX53EVK
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "mx53evk"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_SOC
+ string
+ default "mx5"
+
+config SYS_CONFIG_NAME
+ string
+ default "mx53evk"
+
+endif
diff --git a/board/freescale/mx53evk/MAINTAINERS b/board/freescale/mx53evk/MAINTAINERS
new file mode 100644
index 0000000..5c5f747
--- /dev/null
+++ b/board/freescale/mx53evk/MAINTAINERS
@@ -0,0 +1,6 @@
+MX53EVK BOARD
+M: Jason Liu <r64343@freescale.com>
+S: Maintained
+F: board/freescale/mx53evk/
+F: include/configs/mx53evk.h
+F: configs/mx53evk_defconfig
diff --git a/board/freescale/mx53loco/Kconfig b/board/freescale/mx53loco/Kconfig
new file mode 100644
index 0000000..8b285d2
--- /dev/null
+++ b/board/freescale/mx53loco/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_MX53LOCO
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "mx53loco"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_SOC
+ string
+ default "mx5"
+
+config SYS_CONFIG_NAME
+ string
+ default "mx53loco"
+
+endif
diff --git a/board/freescale/mx53loco/MAINTAINERS b/board/freescale/mx53loco/MAINTAINERS
new file mode 100644
index 0000000..73b113e
--- /dev/null
+++ b/board/freescale/mx53loco/MAINTAINERS
@@ -0,0 +1,6 @@
+MX53LOCO BOARD
+M: Jason Liu <r64343@freescale.com>
+S: Maintained
+F: board/freescale/mx53loco/
+F: include/configs/mx53loco.h
+F: configs/mx53loco_defconfig
diff --git a/board/freescale/mx53smd/Kconfig b/board/freescale/mx53smd/Kconfig
new file mode 100644
index 0000000..1f7e42f
--- /dev/null
+++ b/board/freescale/mx53smd/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_MX53SMD
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "mx53smd"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_SOC
+ string
+ default "mx5"
+
+config SYS_CONFIG_NAME
+ string
+ default "mx53smd"
+
+endif
diff --git a/board/freescale/mx53smd/MAINTAINERS b/board/freescale/mx53smd/MAINTAINERS
new file mode 100644
index 0000000..8830321
--- /dev/null
+++ b/board/freescale/mx53smd/MAINTAINERS
@@ -0,0 +1,6 @@
+MX53SMD BOARD
+M: Fabio Estevam <fabio.estevam@freescale.com>
+S: Maintained
+F: board/freescale/mx53smd/
+F: include/configs/mx53smd.h
+F: configs/mx53smd_defconfig
diff --git a/board/freescale/mx6qarm2/Kconfig b/board/freescale/mx6qarm2/Kconfig
new file mode 100644
index 0000000..2c42e9a
--- /dev/null
+++ b/board/freescale/mx6qarm2/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_MX6QARM2
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "mx6qarm2"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_SOC
+ string
+ default "mx6"
+
+config SYS_CONFIG_NAME
+ string
+ default "mx6qarm2"
+
+endif
diff --git a/board/freescale/mx6qarm2/MAINTAINERS b/board/freescale/mx6qarm2/MAINTAINERS
new file mode 100644
index 0000000..42c19d1
--- /dev/null
+++ b/board/freescale/mx6qarm2/MAINTAINERS
@@ -0,0 +1,6 @@
+MX6QARM2 BOARD
+M: Jason Liu <r64343@freescale.com>
+S: Maintained
+F: board/freescale/mx6qarm2/
+F: include/configs/mx6qarm2.h
+F: configs/mx6qarm2_defconfig
diff --git a/board/freescale/mx6qsabreauto/Kconfig b/board/freescale/mx6qsabreauto/Kconfig
new file mode 100644
index 0000000..21fb4fc
--- /dev/null
+++ b/board/freescale/mx6qsabreauto/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_MX6QSABREAUTO
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "mx6qsabreauto"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_SOC
+ string
+ default "mx6"
+
+config SYS_CONFIG_NAME
+ string
+ default "mx6qsabreauto"
+
+endif
diff --git a/board/freescale/mx6qsabreauto/MAINTAINERS b/board/freescale/mx6qsabreauto/MAINTAINERS
new file mode 100644
index 0000000..fb65ce4
--- /dev/null
+++ b/board/freescale/mx6qsabreauto/MAINTAINERS
@@ -0,0 +1,7 @@
+MX6QSABREAUTO BOARD
+M: Fabio Estevam <fabio.estevam@freescale.com>
+S: Maintained
+F: board/freescale/mx6qsabreauto/
+F: include/configs/mx6qsabreauto.h
+F: configs/mx6dlsabreauto_defconfig
+F: configs/mx6qsabreauto_defconfig
diff --git a/board/freescale/mx6sabresd/Kconfig b/board/freescale/mx6sabresd/Kconfig
new file mode 100644
index 0000000..65d6736
--- /dev/null
+++ b/board/freescale/mx6sabresd/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_MX6SABRESD
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "mx6sabresd"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_SOC
+ string
+ default "mx6"
+
+config SYS_CONFIG_NAME
+ string
+ default "mx6sabresd"
+
+endif
diff --git a/board/freescale/mx6sabresd/MAINTAINERS b/board/freescale/mx6sabresd/MAINTAINERS
new file mode 100644
index 0000000..69c0a30
--- /dev/null
+++ b/board/freescale/mx6sabresd/MAINTAINERS
@@ -0,0 +1,7 @@
+MX6SABRESD BOARD
+M: Fabio Estevam <fabio.estevam@freescale.com>
+S: Maintained
+F: board/freescale/mx6sabresd/
+F: include/configs/mx6sabresd.h
+F: configs/mx6dlsabresd_defconfig
+F: configs/mx6qsabresd_defconfig
diff --git a/board/freescale/mx6slevk/Kconfig b/board/freescale/mx6slevk/Kconfig
new file mode 100644
index 0000000..23c3154
--- /dev/null
+++ b/board/freescale/mx6slevk/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_MX6SLEVK
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "mx6slevk"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_SOC
+ string
+ default "mx6"
+
+config SYS_CONFIG_NAME
+ string
+ default "mx6slevk"
+
+endif
diff --git a/board/freescale/mx6slevk/MAINTAINERS b/board/freescale/mx6slevk/MAINTAINERS
new file mode 100644
index 0000000..660af91
--- /dev/null
+++ b/board/freescale/mx6slevk/MAINTAINERS
@@ -0,0 +1,6 @@
+MX6SLEVK BOARD
+M: Fabio Estevam <fabio.estevam@freescale.com>
+S: Maintained
+F: board/freescale/mx6slevk/
+F: include/configs/mx6slevk.h
+F: configs/mx6slevk_defconfig
diff --git a/board/freescale/p1010rdb/Kconfig b/board/freescale/p1010rdb/Kconfig
new file mode 100644
index 0000000..2abe1c0
--- /dev/null
+++ b/board/freescale/p1010rdb/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_P1010RDB
+
+config SYS_BOARD
+ string
+ default "p1010rdb"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "P1010RDB"
+
+endif
diff --git a/board/freescale/p1010rdb/MAINTAINERS b/board/freescale/p1010rdb/MAINTAINERS
new file mode 100644
index 0000000..579e775
--- /dev/null
+++ b/board/freescale/p1010rdb/MAINTAINERS
@@ -0,0 +1,33 @@
+P1010RDB BOARD
+M: -
+S: Maintained
+F: board/freescale/p1010rdb/
+F: include/configs/P1010RDB.h
+F: configs/P1010RDB-PA_36BIT_NAND_defconfig
+F: configs/P1010RDB-PA_36BIT_NAND_SECBOOT_defconfig
+F: configs/P1010RDB-PA_36BIT_NOR_defconfig
+F: configs/P1010RDB-PA_36BIT_NOR_SECBOOT_defconfig
+F: configs/P1010RDB-PA_36BIT_SDCARD_defconfig
+F: configs/P1010RDB-PA_36BIT_SPIFLASH_defconfig
+F: configs/P1010RDB-PA_36BIT_SPIFLASH_SECBOOT_defconfig
+F: configs/P1010RDB-PA_NAND_defconfig
+F: configs/P1010RDB-PA_NAND_SECBOOT_defconfig
+F: configs/P1010RDB-PA_NOR_defconfig
+F: configs/P1010RDB-PA_NOR_SECBOOT_defconfig
+F: configs/P1010RDB-PA_SDCARD_defconfig
+F: configs/P1010RDB-PA_SPIFLASH_defconfig
+F: configs/P1010RDB-PA_SPIFLASH_SECBOOT_defconfig
+F: configs/P1010RDB-PB_36BIT_NAND_defconfig
+F: configs/P1010RDB-PB_36BIT_NAND_SECBOOT_defconfig
+F: configs/P1010RDB-PB_36BIT_NOR_defconfig
+F: configs/P1010RDB-PB_36BIT_NOR_SECBOOT_defconfig
+F: configs/P1010RDB-PB_36BIT_SDCARD_defconfig
+F: configs/P1010RDB-PB_36BIT_SPIFLASH_defconfig
+F: configs/P1010RDB-PB_36BIT_SPIFLASH_SECBOOT_defconfig
+F: configs/P1010RDB-PB_NAND_defconfig
+F: configs/P1010RDB-PB_NAND_SECBOOT_defconfig
+F: configs/P1010RDB-PB_NOR_defconfig
+F: configs/P1010RDB-PB_NOR_SECBOOT_defconfig
+F: configs/P1010RDB-PB_SDCARD_defconfig
+F: configs/P1010RDB-PB_SPIFLASH_defconfig
+F: configs/P1010RDB-PB_SPIFLASH_SECBOOT_defconfig
diff --git a/board/freescale/p1022ds/Kconfig b/board/freescale/p1022ds/Kconfig
new file mode 100644
index 0000000..39e37bd
--- /dev/null
+++ b/board/freescale/p1022ds/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_P1022DS
+
+config SYS_BOARD
+ string
+ default "p1022ds"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "P1022DS"
+
+endif
diff --git a/board/freescale/p1022ds/MAINTAINERS b/board/freescale/p1022ds/MAINTAINERS
new file mode 100644
index 0000000..86aac36
--- /dev/null
+++ b/board/freescale/p1022ds/MAINTAINERS
@@ -0,0 +1,13 @@
+P1022DS BOARD
+M: Timur Tabi <timur@freescale.com>
+S: Maintained
+F: board/freescale/p1022ds/
+F: include/configs/P1022DS.h
+F: configs/P1022DS_defconfig
+F: configs/P1022DS_36BIT_defconfig
+F: configs/P1022DS_36BIT_NAND_defconfig
+F: configs/P1022DS_36BIT_SDCARD_defconfig
+F: configs/P1022DS_36BIT_SPIFLASH_defconfig
+F: configs/P1022DS_NAND_defconfig
+F: configs/P1022DS_SDCARD_defconfig
+F: configs/P1022DS_SPIFLASH_defconfig
diff --git a/board/freescale/p1023rdb/Kconfig b/board/freescale/p1023rdb/Kconfig
new file mode 100644
index 0000000..95d3295
--- /dev/null
+++ b/board/freescale/p1023rdb/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_P1023RDB
+
+config SYS_BOARD
+ string
+ default "p1023rdb"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "P1023RDB"
+
+endif
diff --git a/board/freescale/p1023rdb/MAINTAINERS b/board/freescale/p1023rdb/MAINTAINERS
new file mode 100644
index 0000000..81501aa
--- /dev/null
+++ b/board/freescale/p1023rdb/MAINTAINERS
@@ -0,0 +1,6 @@
+P1023RDB BOARD
+M: -
+S: Maintained
+F: board/freescale/p1023rdb/
+F: include/configs/P1023RDB.h
+F: configs/P1023RDB_defconfig
diff --git a/board/freescale/p1_p2_rdb/Kconfig b/board/freescale/p1_p2_rdb/Kconfig
new file mode 100644
index 0000000..6d718b9
--- /dev/null
+++ b/board/freescale/p1_p2_rdb/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_P1_P2_RDB
+
+config SYS_BOARD
+ string
+ default "p1_p2_rdb"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "P1_P2_RDB"
+
+endif
diff --git a/board/freescale/p1_p2_rdb/MAINTAINERS b/board/freescale/p1_p2_rdb/MAINTAINERS
new file mode 100644
index 0000000..ad0a858
--- /dev/null
+++ b/board/freescale/p1_p2_rdb/MAINTAINERS
@@ -0,0 +1,37 @@
+P1_P2_RDB BOARD
+M: -
+S: Maintained
+F: board/freescale/p1_p2_rdb/
+F: include/configs/P1_P2_RDB.h
+F: configs/P1011RDB_defconfig
+F: configs/P1011RDB_36BIT_defconfig
+F: configs/P1011RDB_36BIT_SDCARD_defconfig
+F: configs/P1011RDB_36BIT_SPIFLASH_defconfig
+F: configs/P1011RDB_NAND_defconfig
+F: configs/P1011RDB_SDCARD_defconfig
+F: configs/P1011RDB_SPIFLASH_defconfig
+F: configs/P1020RDB_defconfig
+F: configs/P1020RDB_36BIT_defconfig
+F: configs/P1020RDB_36BIT_SDCARD_defconfig
+F: configs/P1020RDB_36BIT_SPIFLASH_defconfig
+F: configs/P1020RDB_NAND_defconfig
+F: configs/P1020RDB_SDCARD_defconfig
+F: configs/P1020RDB_SPIFLASH_defconfig
+F: configs/P2010RDB_defconfig
+F: configs/P2010RDB_36BIT_defconfig
+F: configs/P2010RDB_36BIT_SDCARD_defconfig
+F: configs/P2010RDB_36BIT_SPIFLASH_defconfig
+F: configs/P2010RDB_NAND_defconfig
+F: configs/P2010RDB_SDCARD_defconfig
+F: configs/P2010RDB_SPIFLASH_defconfig
+F: configs/P2020RDB_36BIT_defconfig
+F: configs/P2020RDB_36BIT_SDCARD_defconfig
+F: configs/P2020RDB_36BIT_SPIFLASH_defconfig
+F: configs/P2020RDB_NAND_defconfig
+F: configs/P2020RDB_SDCARD_defconfig
+F: configs/P2020RDB_SPIFLASH_defconfig
+
+P2020RDB BOARD
+M: Poonam Aggrwal <poonam.aggrwal@freescale.com>
+S: Maintained
+F: configs/P2020RDB_defconfig
diff --git a/board/freescale/p1_p2_rdb_pc/Kconfig b/board/freescale/p1_p2_rdb_pc/Kconfig
new file mode 100644
index 0000000..01b89fa
--- /dev/null
+++ b/board/freescale/p1_p2_rdb_pc/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_P1_P2_RDB_PC
+
+config SYS_BOARD
+ string
+ default "p1_p2_rdb_pc"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "p1_p2_rdb_pc"
+
+endif
diff --git a/board/freescale/p1_p2_rdb_pc/MAINTAINERS b/board/freescale/p1_p2_rdb_pc/MAINTAINERS
new file mode 100644
index 0000000..4d429fe
--- /dev/null
+++ b/board/freescale/p1_p2_rdb_pc/MAINTAINERS
@@ -0,0 +1,51 @@
+P1_P2_RDB_PC BOARD
+M: -
+S: Maintained
+F: board/freescale/p1_p2_rdb_pc/
+F: include/configs/p1_p2_rdb_pc.h
+F: configs/P1020MBG-PC_defconfig
+F: configs/P1020MBG-PC_36BIT_defconfig
+F: configs/P1020MBG-PC_36BIT_SDCARD_defconfig
+F: configs/P1020MBG-PC_SDCARD_defconfig
+F: configs/P1020RDB-PC_defconfig
+F: configs/P1020RDB-PC_36BIT_defconfig
+F: configs/P1020RDB-PC_36BIT_NAND_defconfig
+F: configs/P1020RDB-PC_36BIT_SDCARD_defconfig
+F: configs/P1020RDB-PC_36BIT_SPIFLASH_defconfig
+F: configs/P1020RDB-PC_NAND_defconfig
+F: configs/P1020RDB-PC_SDCARD_defconfig
+F: configs/P1020RDB-PC_SPIFLASH_defconfig
+F: configs/P1020RDB-PD_defconfig
+F: configs/P1020RDB-PD_NAND_defconfig
+F: configs/P1020RDB-PD_SDCARD_defconfig
+F: configs/P1020RDB-PD_SPIFLASH_defconfig
+F: configs/P1020UTM-PC_defconfig
+F: configs/P1020UTM-PC_36BIT_defconfig
+F: configs/P1020UTM-PC_36BIT_SDCARD_defconfig
+F: configs/P1020UTM-PC_SDCARD_defconfig
+F: configs/P1021RDB-PC_defconfig
+F: configs/P1021RDB-PC_36BIT_defconfig
+F: configs/P1021RDB-PC_36BIT_NAND_defconfig
+F: configs/P1021RDB-PC_36BIT_SDCARD_defconfig
+F: configs/P1021RDB-PC_36BIT_SPIFLASH_defconfig
+F: configs/P1021RDB-PC_NAND_defconfig
+F: configs/P1021RDB-PC_SDCARD_defconfig
+F: configs/P1021RDB-PC_SPIFLASH_defconfig
+F: configs/P1024RDB_defconfig
+F: configs/P1024RDB_36BIT_defconfig
+F: configs/P1024RDB_NAND_defconfig
+F: configs/P1024RDB_SDCARD_defconfig
+F: configs/P1024RDB_SPIFLASH_defconfig
+F: configs/P1025RDB_defconfig
+F: configs/P1025RDB_36BIT_defconfig
+F: configs/P1025RDB_NAND_defconfig
+F: configs/P1025RDB_SDCARD_defconfig
+F: configs/P1025RDB_SPIFLASH_defconfig
+F: configs/P2020RDB-PC_defconfig
+F: configs/P2020RDB-PC_36BIT_defconfig
+F: configs/P2020RDB-PC_36BIT_NAND_defconfig
+F: configs/P2020RDB-PC_36BIT_SDCARD_defconfig
+F: configs/P2020RDB-PC_36BIT_SPIFLASH_defconfig
+F: configs/P2020RDB-PC_NAND_defconfig
+F: configs/P2020RDB-PC_SDCARD_defconfig
+F: configs/P2020RDB-PC_SPIFLASH_defconfig
diff --git a/board/freescale/p1_twr/Kconfig b/board/freescale/p1_twr/Kconfig
new file mode 100644
index 0000000..5fb4705
--- /dev/null
+++ b/board/freescale/p1_twr/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_P1_TWR
+
+config SYS_BOARD
+ string
+ default "p1_twr"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "p1_twr"
+
+endif
diff --git a/board/freescale/p1_twr/MAINTAINERS b/board/freescale/p1_twr/MAINTAINERS
new file mode 100644
index 0000000..2d7d7e1
--- /dev/null
+++ b/board/freescale/p1_twr/MAINTAINERS
@@ -0,0 +1,6 @@
+P1_TWR BOARD
+M: -
+S: Maintained
+F: board/freescale/p1_twr/
+F: include/configs/p1_twr.h
+F: configs/TWR-P1025_defconfig
diff --git a/board/freescale/p2020come/Kconfig b/board/freescale/p2020come/Kconfig
new file mode 100644
index 0000000..d4d7e13
--- /dev/null
+++ b/board/freescale/p2020come/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_P2020COME
+
+config SYS_BOARD
+ string
+ default "p2020come"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "P2020COME"
+
+endif
diff --git a/board/freescale/p2020come/MAINTAINERS b/board/freescale/p2020come/MAINTAINERS
new file mode 100644
index 0000000..ab3ef94
--- /dev/null
+++ b/board/freescale/p2020come/MAINTAINERS
@@ -0,0 +1,7 @@
+P2020COME BOARD
+M: Ira W. Snyder <iws@ovro.caltech.edu>
+S: Maintained
+F: board/freescale/p2020come/
+F: include/configs/P2020COME.h
+F: configs/P2020COME_SDCARD_defconfig
+F: configs/P2020COME_SPIFLASH_defconfig
diff --git a/board/freescale/p2020ds/Kconfig b/board/freescale/p2020ds/Kconfig
new file mode 100644
index 0000000..29031d0
--- /dev/null
+++ b/board/freescale/p2020ds/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_P2020DS
+
+config SYS_BOARD
+ string
+ default "p2020ds"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "P2020DS"
+
+endif
diff --git a/board/freescale/p2020ds/MAINTAINERS b/board/freescale/p2020ds/MAINTAINERS
new file mode 100644
index 0000000..42cb18d
--- /dev/null
+++ b/board/freescale/p2020ds/MAINTAINERS
@@ -0,0 +1,10 @@
+P2020DS BOARD
+M: -
+S: Maintained
+F: board/freescale/p2020ds/
+F: include/configs/P2020DS.h
+F: configs/P2020DS_defconfig
+F: configs/P2020DS_36BIT_defconfig
+F: configs/P2020DS_DDR2_defconfig
+F: configs/P2020DS_SDCARD_defconfig
+F: configs/P2020DS_SPIFLASH_defconfig
diff --git a/board/freescale/p2041rdb/Kconfig b/board/freescale/p2041rdb/Kconfig
new file mode 100644
index 0000000..b086b1b
--- /dev/null
+++ b/board/freescale/p2041rdb/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_P2041RDB
+
+config SYS_BOARD
+ string
+ default "p2041rdb"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "P2041RDB"
+
+endif
diff --git a/board/freescale/p2041rdb/MAINTAINERS b/board/freescale/p2041rdb/MAINTAINERS
new file mode 100644
index 0000000..bb5bb83
--- /dev/null
+++ b/board/freescale/p2041rdb/MAINTAINERS
@@ -0,0 +1,11 @@
+P2041RDB BOARD
+M: -
+S: Maintained
+F: board/freescale/p2041rdb/
+F: include/configs/P2041RDB.h
+F: configs/P2041RDB_defconfig
+F: configs/P2041RDB_NAND_defconfig
+F: configs/P2041RDB_SDCARD_defconfig
+F: configs/P2041RDB_SECURE_BOOT_defconfig
+F: configs/P2041RDB_SPIFLASH_defconfig
+F: configs/P2041RDB_SRIO_PCIE_BOOT_defconfig
diff --git a/board/freescale/qemu-ppce500/Kconfig b/board/freescale/qemu-ppce500/Kconfig
new file mode 100644
index 0000000..314f6a1
--- /dev/null
+++ b/board/freescale/qemu-ppce500/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_QEMU_PPCE500
+
+config SYS_BOARD
+ string
+ default "qemu-ppce500"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "qemu-ppce500"
+
+endif
diff --git a/board/freescale/qemu-ppce500/MAINTAINERS b/board/freescale/qemu-ppce500/MAINTAINERS
new file mode 100644
index 0000000..77d0a4a
--- /dev/null
+++ b/board/freescale/qemu-ppce500/MAINTAINERS
@@ -0,0 +1,6 @@
+QEMU-PPCE500 BOARD
+M: Alexander Graf <agraf@suse.de>
+S: Maintained
+F: board/freescale/qemu-ppce500/
+F: include/configs/qemu-ppce500.h
+F: configs/qemu-ppce500_defconfig
diff --git a/board/freescale/t1040qds/Kconfig b/board/freescale/t1040qds/Kconfig
new file mode 100644
index 0000000..c1c96f0
--- /dev/null
+++ b/board/freescale/t1040qds/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_T1040QDS
+
+config SYS_BOARD
+ string
+ default "t1040qds"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "T1040QDS"
+
+endif
diff --git a/board/freescale/t1040qds/MAINTAINERS b/board/freescale/t1040qds/MAINTAINERS
new file mode 100644
index 0000000..83f6b3c
--- /dev/null
+++ b/board/freescale/t1040qds/MAINTAINERS
@@ -0,0 +1,12 @@
+T1040QDS BOARD
+M: Poonam Aggrwal <poonam.aggrwal@freescale.com>
+S: Maintained
+F: board/freescale/t1040qds/
+F: include/configs/T1040QDS.h
+F: configs/T1040QDS_defconfig
+F: configs/T1040QDS_D4_defconfig
+
+T1040QDS_SECURE_BOOT BOARD
+M: Aneesh Bansal <aneesh.bansal@freescale.com>
+S: Maintained
+F: configs/T1040QDS_SECURE_BOOT_defconfig
diff --git a/board/freescale/t104xrdb/Kconfig b/board/freescale/t104xrdb/Kconfig
new file mode 100644
index 0000000..d0fd3de
--- /dev/null
+++ b/board/freescale/t104xrdb/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_T104XRDB
+
+config SYS_BOARD
+ string
+ default "t104xrdb"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "T104xRDB"
+
+endif
diff --git a/board/freescale/t104xrdb/MAINTAINERS b/board/freescale/t104xrdb/MAINTAINERS
new file mode 100644
index 0000000..364b0a9
--- /dev/null
+++ b/board/freescale/t104xrdb/MAINTAINERS
@@ -0,0 +1,22 @@
+T104XRDB BOARD
+M: Priyanka Jain <Priyanka.Jain@freescale.com>
+S: Maintained
+F: board/freescale/t104xrdb/
+F: include/configs/T104xRDB.h
+F: configs/T1040RDB_defconfig
+F: configs/T1040RDB_NAND_defconfig
+F: configs/T1040RDB_SPIFLASH_defconfig
+F: configs/T1042RDB_PI_defconfig
+F: configs/T1042RDB_PI_NAND_defconfig
+F: configs/T1042RDB_PI_SPIFLASH_defconfig
+
+T1040RDB_SDCARD BOARD
+M: -
+S: Maintained
+F: configs/T1040RDB_SDCARD_defconfig
+F: configs/T1042RDB_PI_SDCARD_defconfig
+
+T1040RDB_SECURE_BOOT BOARD
+M: Aneesh Bansal <aneesh.bansal@freescale.com>
+S: Maintained
+F: configs/T1040RDB_SECURE_BOOT_defconfig
diff --git a/board/freescale/t208xqds/Kconfig b/board/freescale/t208xqds/Kconfig
new file mode 100644
index 0000000..3d0c6ab
--- /dev/null
+++ b/board/freescale/t208xqds/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_T208XQDS
+
+config SYS_BOARD
+ string
+ default "t208xqds"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "T208xQDS"
+
+endif
diff --git a/board/freescale/t208xqds/MAINTAINERS b/board/freescale/t208xqds/MAINTAINERS
new file mode 100644
index 0000000..643926f
--- /dev/null
+++ b/board/freescale/t208xqds/MAINTAINERS
@@ -0,0 +1,20 @@
+T208XQDS BOARD
+M: -
+S: Maintained
+F: board/freescale/t208xqds/
+F: include/configs/T208xQDS.h
+F: configs/T2080QDS_defconfig
+F: configs/T2080QDS_NAND_defconfig
+F: configs/T2080QDS_SDCARD_defconfig
+F: configs/T2080QDS_SPIFLASH_defconfig
+F: configs/T2080QDS_SRIO_PCIE_BOOT_defconfig
+F: configs/T2081QDS_defconfig
+F: configs/T2081QDS_NAND_defconfig
+F: configs/T2081QDS_SDCARD_defconfig
+F: configs/T2081QDS_SPIFLASH_defconfig
+F: configs/T2081QDS_SRIO_PCIE_BOOT_defconfig
+
+T2080QDS_SECURE_BOOT BOARD
+M: Aneesh Bansal <aneesh.bansal@freescale.com>
+S: Maintained
+F: configs/T2080QDS_SECURE_BOOT_defconfig
diff --git a/board/freescale/t208xrdb/Kconfig b/board/freescale/t208xrdb/Kconfig
new file mode 100644
index 0000000..f8d2c3c
--- /dev/null
+++ b/board/freescale/t208xrdb/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_T208XRDB
+
+config SYS_BOARD
+ string
+ default "t208xrdb"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "T208xRDB"
+
+endif
diff --git a/board/freescale/t208xrdb/MAINTAINERS b/board/freescale/t208xrdb/MAINTAINERS
new file mode 100644
index 0000000..5987143
--- /dev/null
+++ b/board/freescale/t208xrdb/MAINTAINERS
@@ -0,0 +1,15 @@
+T208XRDB BOARD
+M: -
+S: Maintained
+F: board/freescale/t208xrdb/
+F: include/configs/T208xRDB.h
+F: configs/T2080RDB_defconfig
+F: configs/T2080RDB_NAND_defconfig
+F: configs/T2080RDB_SDCARD_defconfig
+F: configs/T2080RDB_SPIFLASH_defconfig
+F: configs/T2080RDB_SRIO_PCIE_BOOT_defconfig
+
+T2080RDB_SECURE_BOOT BOARD
+M: Aneesh Bansal <aneesh.bansal@freescale.com>
+S: Maintained
+F: configs/T2080RDB_SECURE_BOOT_defconfig
diff --git a/board/freescale/t4qds/Kconfig b/board/freescale/t4qds/Kconfig
new file mode 100644
index 0000000..f4b0ba2
--- /dev/null
+++ b/board/freescale/t4qds/Kconfig
@@ -0,0 +1,31 @@
+if TARGET_T4240EMU
+
+config SYS_BOARD
+ string
+ default "t4qds"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "T4240EMU"
+
+endif
+
+if TARGET_T4240QDS
+
+config SYS_BOARD
+ string
+ default "t4qds"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "T4240QDS"
+
+endif
diff --git a/board/freescale/t4qds/MAINTAINERS b/board/freescale/t4qds/MAINTAINERS
new file mode 100644
index 0000000..da796bd
--- /dev/null
+++ b/board/freescale/t4qds/MAINTAINERS
@@ -0,0 +1,26 @@
+T4QDS BOARD
+M: -
+S: Maintained
+F: board/freescale/t4qds/
+F: include/configs/T4240QDS.h
+F: configs/T4160QDS_defconfig
+F: configs/T4160QDS_NAND_defconfig
+F: configs/T4160QDS_SDCARD_defconfig
+F: configs/T4160QDS_SPIFLASH_defconfig
+F: configs/T4240QDS_defconfig
+F: configs/T4240QDS_NAND_defconfig
+F: configs/T4240QDS_SDCARD_defconfig
+F: configs/T4240QDS_SPIFLASH_defconfig
+F: configs/T4240QDS_SRIO_PCIE_BOOT_defconfig
+
+T4160QDS_SECURE_BOOT BOARD
+M: Aneesh Bansal <aneesh.bansal@freescale.com>
+S: Maintained
+F: configs/T4160QDS_SECURE_BOOT_defconfig
+F: configs/T4240QDS_SECURE_BOOT_defconfig
+
+T4240EMU BOARD
+M: York Sun <yorksun@freescale.com>
+S: Maintained
+F: include/configs/T4240EMU.h
+F: configs/T4240EMU_defconfig
diff --git a/board/freescale/t4rdb/Kconfig b/board/freescale/t4rdb/Kconfig
new file mode 100644
index 0000000..07e3c0d
--- /dev/null
+++ b/board/freescale/t4rdb/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_T4240RDB
+
+config SYS_BOARD
+ string
+ default "t4rdb"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ string
+ default "T4240RDB"
+
+endif
diff --git a/board/freescale/t4rdb/MAINTAINERS b/board/freescale/t4rdb/MAINTAINERS
new file mode 100644
index 0000000..845c1b6
--- /dev/null
+++ b/board/freescale/t4rdb/MAINTAINERS
@@ -0,0 +1,7 @@
+T4RDB BOARD
+M: Chunhe Lan <Chunhe.Lan@freescale.com>
+S: Maintained
+F: board/freescale/t4rdb/
+F: include/configs/T4240RDB.h
+F: configs/T4160RDB_defconfig
+F: configs/T4240RDB_defconfig
diff --git a/board/freescale/vf610twr/Kconfig b/board/freescale/vf610twr/Kconfig
new file mode 100644
index 0000000..56bc52a
--- /dev/null
+++ b/board/freescale/vf610twr/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_VF610TWR
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "vf610twr"
+
+config SYS_VENDOR
+ string
+ default "freescale"
+
+config SYS_SOC
+ string
+ default "vf610"
+
+config SYS_CONFIG_NAME
+ string
+ default "vf610twr"
+
+endif
diff --git a/board/freescale/vf610twr/MAINTAINERS b/board/freescale/vf610twr/MAINTAINERS
new file mode 100644
index 0000000..56a09c9
--- /dev/null
+++ b/board/freescale/vf610twr/MAINTAINERS
@@ -0,0 +1,6 @@
+VF610TWR BOARD
+M: Alison Wang <b18965@freescale.com>
+S: Maintained
+F: board/freescale/vf610twr/
+F: include/configs/vf610twr.h
+F: configs/vf610twr_defconfig
diff --git a/board/funkwerk/vovpn-gw/Kconfig b/board/funkwerk/vovpn-gw/Kconfig
new file mode 100644
index 0000000..dc3deca
--- /dev/null
+++ b/board/funkwerk/vovpn-gw/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_VOVPN_GW
+
+config SYS_BOARD
+ string
+ default "vovpn-gw"
+
+config SYS_VENDOR
+ string
+ default "funkwerk"
+
+config SYS_CONFIG_NAME
+ string
+ default "VoVPN-GW"
+
+endif
diff --git a/board/funkwerk/vovpn-gw/MAINTAINERS b/board/funkwerk/vovpn-gw/MAINTAINERS
new file mode 100644
index 0000000..9af5f78
--- /dev/null
+++ b/board/funkwerk/vovpn-gw/MAINTAINERS
@@ -0,0 +1,6 @@
+VOVPN-GW BOARD
+M: -
+S: Maintained
+F: board/funkwerk/vovpn-gw/
+F: include/configs/VoVPN-GW.h
+F: configs/VoVPN-GW_66MHz_defconfig
diff --git a/board/g2000/Kconfig b/board/g2000/Kconfig
new file mode 100644
index 0000000..eae4886
--- /dev/null
+++ b/board/g2000/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_G2000
+
+config SYS_BOARD
+ string
+ default "g2000"
+
+config SYS_CONFIG_NAME
+ string
+ default "G2000"
+
+endif
diff --git a/board/g2000/MAINTAINERS b/board/g2000/MAINTAINERS
new file mode 100644
index 0000000..8171b10
--- /dev/null
+++ b/board/g2000/MAINTAINERS
@@ -0,0 +1,6 @@
+G2000 BOARD
+M: Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+S: Maintained
+F: board/g2000/
+F: include/configs/G2000.h
+F: configs/G2000_defconfig
diff --git a/board/gaisler/gr_cpci_ax2000/Kconfig b/board/gaisler/gr_cpci_ax2000/Kconfig
new file mode 100644
index 0000000..d5a2eb4
--- /dev/null
+++ b/board/gaisler/gr_cpci_ax2000/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_GR_CPCI_AX2000
+
+config SYS_CPU
+ string
+ default "leon3"
+
+config SYS_BOARD
+ string
+ default "gr_cpci_ax2000"
+
+config SYS_VENDOR
+ string
+ default "gaisler"
+
+config SYS_CONFIG_NAME
+ string
+ default "gr_cpci_ax2000"
+
+endif
diff --git a/board/gaisler/gr_cpci_ax2000/MAINTAINERS b/board/gaisler/gr_cpci_ax2000/MAINTAINERS
new file mode 100644
index 0000000..493c31e
--- /dev/null
+++ b/board/gaisler/gr_cpci_ax2000/MAINTAINERS
@@ -0,0 +1,6 @@
+GR_CPCI_AX2000 BOARD
+M: -
+S: Maintained
+F: board/gaisler/gr_cpci_ax2000/
+F: include/configs/gr_cpci_ax2000.h
+F: configs/gr_cpci_ax2000_defconfig
diff --git a/board/gaisler/gr_ep2s60/Kconfig b/board/gaisler/gr_ep2s60/Kconfig
new file mode 100644
index 0000000..e742ea8
--- /dev/null
+++ b/board/gaisler/gr_ep2s60/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_GR_EP2S60
+
+config SYS_CPU
+ string
+ default "leon3"
+
+config SYS_BOARD
+ string
+ default "gr_ep2s60"
+
+config SYS_VENDOR
+ string
+ default "gaisler"
+
+config SYS_CONFIG_NAME
+ string
+ default "gr_ep2s60"
+
+endif
diff --git a/board/gaisler/gr_ep2s60/MAINTAINERS b/board/gaisler/gr_ep2s60/MAINTAINERS
new file mode 100644
index 0000000..151bef1
--- /dev/null
+++ b/board/gaisler/gr_ep2s60/MAINTAINERS
@@ -0,0 +1,6 @@
+GR_EP2S60 BOARD
+M: -
+S: Maintained
+F: board/gaisler/gr_ep2s60/
+F: include/configs/gr_ep2s60.h
+F: configs/gr_ep2s60_defconfig
diff --git a/board/gaisler/gr_xc3s_1500/Kconfig b/board/gaisler/gr_xc3s_1500/Kconfig
new file mode 100644
index 0000000..6d9f107
--- /dev/null
+++ b/board/gaisler/gr_xc3s_1500/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_GR_XC3S_1500
+
+config SYS_CPU
+ string
+ default "leon3"
+
+config SYS_BOARD
+ string
+ default "gr_xc3s_1500"
+
+config SYS_VENDOR
+ string
+ default "gaisler"
+
+config SYS_CONFIG_NAME
+ string
+ default "gr_xc3s_1500"
+
+endif
diff --git a/board/gaisler/gr_xc3s_1500/MAINTAINERS b/board/gaisler/gr_xc3s_1500/MAINTAINERS
new file mode 100644
index 0000000..187f323
--- /dev/null
+++ b/board/gaisler/gr_xc3s_1500/MAINTAINERS
@@ -0,0 +1,6 @@
+GR_XC3S_1500 BOARD
+M: -
+S: Maintained
+F: board/gaisler/gr_xc3s_1500/
+F: include/configs/gr_xc3s_1500.h
+F: configs/gr_xc3s_1500_defconfig
diff --git a/board/gaisler/grsim/Kconfig b/board/gaisler/grsim/Kconfig
new file mode 100644
index 0000000..10f51e1
--- /dev/null
+++ b/board/gaisler/grsim/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_GRSIM
+
+config SYS_CPU
+ string
+ default "leon3"
+
+config SYS_BOARD
+ string
+ default "grsim"
+
+config SYS_VENDOR
+ string
+ default "gaisler"
+
+config SYS_CONFIG_NAME
+ string
+ default "grsim"
+
+endif
diff --git a/board/gaisler/grsim/MAINTAINERS b/board/gaisler/grsim/MAINTAINERS
new file mode 100644
index 0000000..acb863c
--- /dev/null
+++ b/board/gaisler/grsim/MAINTAINERS
@@ -0,0 +1,6 @@
+GRSIM BOARD
+M: -
+S: Maintained
+F: board/gaisler/grsim/
+F: include/configs/grsim.h
+F: configs/grsim_defconfig
diff --git a/board/gaisler/grsim_leon2/Kconfig b/board/gaisler/grsim_leon2/Kconfig
new file mode 100644
index 0000000..8dd2d27
--- /dev/null
+++ b/board/gaisler/grsim_leon2/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_GRSIM_LEON2
+
+config SYS_CPU
+ string
+ default "leon2"
+
+config SYS_BOARD
+ string
+ default "grsim_leon2"
+
+config SYS_VENDOR
+ string
+ default "gaisler"
+
+config SYS_CONFIG_NAME
+ string
+ default "grsim_leon2"
+
+endif
diff --git a/board/gaisler/grsim_leon2/MAINTAINERS b/board/gaisler/grsim_leon2/MAINTAINERS
new file mode 100644
index 0000000..6da9b78
--- /dev/null
+++ b/board/gaisler/grsim_leon2/MAINTAINERS
@@ -0,0 +1,6 @@
+GRSIM_LEON2 BOARD
+M: -
+S: Maintained
+F: board/gaisler/grsim_leon2/
+F: include/configs/grsim_leon2.h
+F: configs/grsim_leon2_defconfig
diff --git a/board/galaxy5200/Kconfig b/board/galaxy5200/Kconfig
new file mode 100644
index 0000000..04f079c
--- /dev/null
+++ b/board/galaxy5200/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_GALAXY5200
+
+config SYS_BOARD
+ string
+ default "galaxy5200"
+
+config SYS_CONFIG_NAME
+ string
+ default "galaxy5200"
+
+endif
diff --git a/board/galaxy5200/MAINTAINERS b/board/galaxy5200/MAINTAINERS
new file mode 100644
index 0000000..f070132
--- /dev/null
+++ b/board/galaxy5200/MAINTAINERS
@@ -0,0 +1,7 @@
+GALAXY5200 BOARD
+M: Eric Millbrandt <emillbrandt@dekaresearch.com>
+S: Orphan (since 2014-06)
+F: board/galaxy5200/
+F: include/configs/galaxy5200.h
+F: configs/galaxy5200_defconfig
+F: configs/galaxy5200_LOWBOOT_defconfig
diff --git a/board/gateworks/gw_ventana/Kconfig b/board/gateworks/gw_ventana/Kconfig
new file mode 100644
index 0000000..a9ff70a
--- /dev/null
+++ b/board/gateworks/gw_ventana/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_GW_VENTANA
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "gw_ventana"
+
+config SYS_VENDOR
+ string
+ default "gateworks"
+
+config SYS_SOC
+ string
+ default "mx6"
+
+config SYS_CONFIG_NAME
+ string
+ default "gw_ventana"
+
+endif
diff --git a/board/gateworks/gw_ventana/MAINTAINERS b/board/gateworks/gw_ventana/MAINTAINERS
new file mode 100644
index 0000000..b44fb4d
--- /dev/null
+++ b/board/gateworks/gw_ventana/MAINTAINERS
@@ -0,0 +1,6 @@
+GW_VENTANA BOARD
+M: Tim Harvey <tharvey@gateworks.com>
+S: Maintained
+F: board/gateworks/gw_ventana/
+F: include/configs/gw_ventana.h
+F: configs/gwventana_defconfig
diff --git a/board/gdsys/405ep/Kconfig b/board/gdsys/405ep/Kconfig
new file mode 100644
index 0000000..8a5d3f5
--- /dev/null
+++ b/board/gdsys/405ep/Kconfig
@@ -0,0 +1,63 @@
+if TARGET_DLVISION_10G
+
+config SYS_BOARD
+ string
+ default "405ep"
+
+config SYS_VENDOR
+ string
+ default "gdsys"
+
+config SYS_CONFIG_NAME
+ string
+ default "dlvision-10g"
+
+endif
+
+if TARGET_IO
+
+config SYS_BOARD
+ string
+ default "405ep"
+
+config SYS_VENDOR
+ string
+ default "gdsys"
+
+config SYS_CONFIG_NAME
+ string
+ default "io"
+
+endif
+
+if TARGET_IOCON
+
+config SYS_BOARD
+ string
+ default "405ep"
+
+config SYS_VENDOR
+ string
+ default "gdsys"
+
+config SYS_CONFIG_NAME
+ string
+ default "iocon"
+
+endif
+
+if TARGET_NEO
+
+config SYS_BOARD
+ string
+ default "405ep"
+
+config SYS_VENDOR
+ string
+ default "gdsys"
+
+config SYS_CONFIG_NAME
+ string
+ default "neo"
+
+endif
diff --git a/board/gdsys/405ep/MAINTAINERS b/board/gdsys/405ep/MAINTAINERS
new file mode 100644
index 0000000..1403880
--- /dev/null
+++ b/board/gdsys/405ep/MAINTAINERS
@@ -0,0 +1,12 @@
+405EP BOARD
+M: Dirk Eibach <eibach@gdsys.de>
+S: Maintained
+F: board/gdsys/405ep/
+F: include/configs/dlvision-10g.h
+F: configs/dlvision-10g_defconfig
+F: include/configs/io.h
+F: configs/io_defconfig
+F: include/configs/iocon.h
+F: configs/iocon_defconfig
+F: include/configs/neo.h
+F: configs/neo_defconfig
diff --git a/board/gdsys/405ex/Kconfig b/board/gdsys/405ex/Kconfig
new file mode 100644
index 0000000..b4fb975
--- /dev/null
+++ b/board/gdsys/405ex/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_IO64
+
+config SYS_BOARD
+ string
+ default "405ex"
+
+config SYS_VENDOR
+ string
+ default "gdsys"
+
+config SYS_CONFIG_NAME
+ string
+ default "io64"
+
+endif
diff --git a/board/gdsys/405ex/MAINTAINERS b/board/gdsys/405ex/MAINTAINERS
new file mode 100644
index 0000000..395b1ac
--- /dev/null
+++ b/board/gdsys/405ex/MAINTAINERS
@@ -0,0 +1,6 @@
+405EX BOARD
+M: Dirk Eibach <eibach@gdsys.de>
+S: Maintained
+F: board/gdsys/405ex/
+F: include/configs/io64.h
+F: configs/io64_defconfig
diff --git a/board/gdsys/dlvision/Kconfig b/board/gdsys/dlvision/Kconfig
new file mode 100644
index 0000000..af8334e
--- /dev/null
+++ b/board/gdsys/dlvision/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_DLVISION
+
+config SYS_BOARD
+ string
+ default "dlvision"
+
+config SYS_VENDOR
+ string
+ default "gdsys"
+
+config SYS_CONFIG_NAME
+ string
+ default "dlvision"
+
+endif
diff --git a/board/gdsys/dlvision/MAINTAINERS b/board/gdsys/dlvision/MAINTAINERS
new file mode 100644
index 0000000..e4d40f8
--- /dev/null
+++ b/board/gdsys/dlvision/MAINTAINERS
@@ -0,0 +1,6 @@
+DLVISION BOARD
+M: Dirk Eibach <eibach@gdsys.de>
+S: Maintained
+F: board/gdsys/dlvision/
+F: include/configs/dlvision.h
+F: configs/dlvision_defconfig
diff --git a/board/gdsys/gdppc440etx/Kconfig b/board/gdsys/gdppc440etx/Kconfig
new file mode 100644
index 0000000..5a05c1c
--- /dev/null
+++ b/board/gdsys/gdppc440etx/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_GDPPC440ETX
+
+config SYS_BOARD
+ string
+ default "gdppc440etx"
+
+config SYS_VENDOR
+ string
+ default "gdsys"
+
+config SYS_CONFIG_NAME
+ string
+ default "gdppc440etx"
+
+endif
diff --git a/board/gdsys/gdppc440etx/MAINTAINERS b/board/gdsys/gdppc440etx/MAINTAINERS
new file mode 100644
index 0000000..cd8d1c6
--- /dev/null
+++ b/board/gdsys/gdppc440etx/MAINTAINERS
@@ -0,0 +1,6 @@
+GDPPC440ETX BOARD
+M: Dirk Eibach <eibach@gdsys.de>
+S: Maintained
+F: board/gdsys/gdppc440etx/
+F: include/configs/gdppc440etx.h
+F: configs/gdppc440etx_defconfig
diff --git a/board/gdsys/intip/Kconfig b/board/gdsys/intip/Kconfig
new file mode 100644
index 0000000..7be439c
--- /dev/null
+++ b/board/gdsys/intip/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_INTIP
+
+config SYS_BOARD
+ string
+ default "intip"
+
+config SYS_VENDOR
+ string
+ default "gdsys"
+
+config SYS_CONFIG_NAME
+ string
+ default "intip"
+
+endif
diff --git a/board/gdsys/intip/MAINTAINERS b/board/gdsys/intip/MAINTAINERS
new file mode 100644
index 0000000..c99d507
--- /dev/null
+++ b/board/gdsys/intip/MAINTAINERS
@@ -0,0 +1,7 @@
+INTIP BOARD
+M: Dirk Eibach <eibach@gdsys.de>
+S: Maintained
+F: board/gdsys/intip/
+F: include/configs/intip.h
+F: configs/devconcenter_defconfig
+F: configs/intip_defconfig
diff --git a/board/gdsys/p1022/Kconfig b/board/gdsys/p1022/Kconfig
new file mode 100644
index 0000000..277ed7d
--- /dev/null
+++ b/board/gdsys/p1022/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_CONTROLCENTERD
+
+config SYS_BOARD
+ string
+ default "p1022"
+
+config SYS_VENDOR
+ string
+ default "gdsys"
+
+config SYS_CONFIG_NAME
+ string
+ default "controlcenterd"
+
+endif
diff --git a/board/gdsys/p1022/MAINTAINERS b/board/gdsys/p1022/MAINTAINERS
new file mode 100644
index 0000000..5119fbb
--- /dev/null
+++ b/board/gdsys/p1022/MAINTAINERS
@@ -0,0 +1,9 @@
+P1022 BOARD
+M: Dirk Eibach <eibach@gdsys.de>
+S: Maintained
+F: board/gdsys/p1022/
+F: include/configs/controlcenterd.h
+F: configs/controlcenterd_36BIT_SDCARD_defconfig
+F: configs/controlcenterd_36BIT_SDCARD_DEVELOP_defconfig
+F: configs/controlcenterd_TRAILBLAZER_defconfig
+F: configs/controlcenterd_TRAILBLAZER_DEVELOP_defconfig
diff --git a/board/gen860t/Kconfig b/board/gen860t/Kconfig
new file mode 100644
index 0000000..438f7cc
--- /dev/null
+++ b/board/gen860t/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_GEN860T
+
+config SYS_BOARD
+ string
+ default "gen860t"
+
+config SYS_CONFIG_NAME
+ string
+ default "GEN860T"
+
+endif
diff --git a/board/gen860t/MAINTAINERS b/board/gen860t/MAINTAINERS
new file mode 100644
index 0000000..c5d3da3
--- /dev/null
+++ b/board/gen860t/MAINTAINERS
@@ -0,0 +1,7 @@
+GEN860T BOARD
+M: Keith Outwater <Keith_Outwater@mvis.com>
+S: Orphan (since 2014-06)
+F: board/gen860t/
+F: include/configs/GEN860T.h
+F: configs/GEN860T_defconfig
+F: configs/GEN860T_SC_defconfig
diff --git a/board/genesi/mx51_efikamx/Kconfig b/board/genesi/mx51_efikamx/Kconfig
new file mode 100644
index 0000000..adfddeb
--- /dev/null
+++ b/board/genesi/mx51_efikamx/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_MX51_EFIKAMX
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "mx51_efikamx"
+
+config SYS_VENDOR
+ string
+ default "genesi"
+
+config SYS_SOC
+ string
+ default "mx5"
+
+config SYS_CONFIG_NAME
+ string
+ default "mx51_efikamx"
+
+endif
diff --git a/board/genesi/mx51_efikamx/MAINTAINERS b/board/genesi/mx51_efikamx/MAINTAINERS
new file mode 100644
index 0000000..a85df77
--- /dev/null
+++ b/board/genesi/mx51_efikamx/MAINTAINERS
@@ -0,0 +1,7 @@
+MX51_EFIKAMX BOARD
+M: -
+S: Maintained
+F: board/genesi/mx51_efikamx/
+F: include/configs/mx51_efikamx.h
+F: configs/mx51_efikamx_defconfig
+F: configs/mx51_efikasb_defconfig
diff --git a/board/gumstix/duovero/Kconfig b/board/gumstix/duovero/Kconfig
new file mode 100644
index 0000000..d1b5c66
--- /dev/null
+++ b/board/gumstix/duovero/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_DUOVERO
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "duovero"
+
+config SYS_VENDOR
+ string
+ default "gumstix"
+
+config SYS_SOC
+ string
+ default "omap4"
+
+config SYS_CONFIG_NAME
+ string
+ default "duovero"
+
+endif
diff --git a/board/gumstix/duovero/MAINTAINERS b/board/gumstix/duovero/MAINTAINERS
new file mode 100644
index 0000000..87cd4e6
--- /dev/null
+++ b/board/gumstix/duovero/MAINTAINERS
@@ -0,0 +1,6 @@
+DUOVERO BOARD
+M: Ash Charles <ash@gumstix.com>
+S: Maintained
+F: board/gumstix/duovero/
+F: include/configs/duovero.h
+F: configs/duovero_defconfig
diff --git a/board/gumstix/pepper/Kconfig b/board/gumstix/pepper/Kconfig
new file mode 100644
index 0000000..290b428
--- /dev/null
+++ b/board/gumstix/pepper/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_PEPPER
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "pepper"
+
+config SYS_VENDOR
+ string
+ default "gumstix"
+
+config SYS_SOC
+ string
+ default "am33xx"
+
+config SYS_CONFIG_NAME
+ string
+ default "pepper"
+
+endif
diff --git a/board/gumstix/pepper/MAINTAINERS b/board/gumstix/pepper/MAINTAINERS
new file mode 100644
index 0000000..ae860ec
--- /dev/null
+++ b/board/gumstix/pepper/MAINTAINERS
@@ -0,0 +1,6 @@
+PEPPER BOARD
+M: Ash Charles <ash@gumstix.com>
+S: Maintained
+F: board/gumstix/pepper/
+F: include/configs/pepper.h
+F: configs/pepper_defconfig
diff --git a/board/gumstix/pepper/board.c b/board/gumstix/pepper/board.c
index 75aac49..f644f81 100644
--- a/board/gumstix/pepper/board.c
+++ b/board/gumstix/pepper/board.c
@@ -34,41 +34,17 @@ DECLARE_GLOBAL_DATA_PTR;
#ifdef CONFIG_SPL_BUILD
static const struct ddr_data ddr2_data = {
- .datardsratio0 = ((MT47H128M16RT25E_RD_DQS<<30) |
- (MT47H128M16RT25E_RD_DQS<<20) |
- (MT47H128M16RT25E_RD_DQS<<10) |
- (MT47H128M16RT25E_RD_DQS<<0)),
- .datawdsratio0 = ((MT47H128M16RT25E_WR_DQS<<30) |
- (MT47H128M16RT25E_WR_DQS<<20) |
- (MT47H128M16RT25E_WR_DQS<<10) |
- (MT47H128M16RT25E_WR_DQS<<0)),
- .datawiratio0 = ((MT47H128M16RT25E_PHY_WRLVL<<30) |
- (MT47H128M16RT25E_PHY_WRLVL<<20) |
- (MT47H128M16RT25E_PHY_WRLVL<<10) |
- (MT47H128M16RT25E_PHY_WRLVL<<0)),
- .datagiratio0 = ((MT47H128M16RT25E_PHY_GATELVL<<30) |
- (MT47H128M16RT25E_PHY_GATELVL<<20) |
- (MT47H128M16RT25E_PHY_GATELVL<<10) |
- (MT47H128M16RT25E_PHY_GATELVL<<0)),
- .datafwsratio0 = ((MT47H128M16RT25E_PHY_FIFO_WE<<30) |
- (MT47H128M16RT25E_PHY_FIFO_WE<<20) |
- (MT47H128M16RT25E_PHY_FIFO_WE<<10) |
- (MT47H128M16RT25E_PHY_FIFO_WE<<0)),
- .datawrsratio0 = ((MT47H128M16RT25E_PHY_WR_DATA<<30) |
- (MT47H128M16RT25E_PHY_WR_DATA<<20) |
- (MT47H128M16RT25E_PHY_WR_DATA<<10) |
- (MT47H128M16RT25E_PHY_WR_DATA<<0)),
+ .datardsratio0 = MT47H128M16RT25E_RD_DQS,
+ .datafwsratio0 = MT47H128M16RT25E_PHY_FIFO_WE,
+ .datawrsratio0 = MT47H128M16RT25E_PHY_WR_DATA,
};
static const struct cmd_control ddr2_cmd_ctrl_data = {
.cmd0csratio = MT47H128M16RT25E_RATIO,
- .cmd0iclkout = MT47H128M16RT25E_INVERT_CLKOUT,
.cmd1csratio = MT47H128M16RT25E_RATIO,
- .cmd1iclkout = MT47H128M16RT25E_INVERT_CLKOUT,
.cmd2csratio = MT47H128M16RT25E_RATIO,
- .cmd2iclkout = MT47H128M16RT25E_INVERT_CLKOUT,
};
static const struct emif_regs ddr2_emif_reg_data = {
diff --git a/board/gw8260/Kconfig b/board/gw8260/Kconfig
new file mode 100644
index 0000000..ce8d1b0
--- /dev/null
+++ b/board/gw8260/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_GW8260
+
+config SYS_BOARD
+ string
+ default "gw8260"
+
+config SYS_CONFIG_NAME
+ string
+ default "gw8260"
+
+endif
diff --git a/board/gw8260/MAINTAINERS b/board/gw8260/MAINTAINERS
new file mode 100644
index 0000000..5268d19
--- /dev/null
+++ b/board/gw8260/MAINTAINERS
@@ -0,0 +1,6 @@
+GW8260 BOARD
+M: Oliver Brown <obrown@adventnetworks.com>
+S: Maintained
+F: board/gw8260/
+F: include/configs/gw8260.h
+F: configs/gw8260_defconfig
diff --git a/board/h2200/Kconfig b/board/h2200/Kconfig
new file mode 100644
index 0000000..f36b4d9
--- /dev/null
+++ b/board/h2200/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_H2200
+
+config SYS_CPU
+ string
+ default "pxa"
+
+config SYS_BOARD
+ string
+ default "h2200"
+
+config SYS_CONFIG_NAME
+ string
+ default "h2200"
+
+endif
diff --git a/board/h2200/MAINTAINERS b/board/h2200/MAINTAINERS
new file mode 100644
index 0000000..b66ff51
--- /dev/null
+++ b/board/h2200/MAINTAINERS
@@ -0,0 +1,6 @@
+H2200 BOARD
+M: Lukasz Dalek <luk0104@gmail.com>
+S: Maintained
+F: board/h2200/
+F: include/configs/h2200.h
+F: configs/h2200_defconfig
diff --git a/board/hale/tt01/Kconfig b/board/hale/tt01/Kconfig
new file mode 100644
index 0000000..549c18b
--- /dev/null
+++ b/board/hale/tt01/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_TT01
+
+config SYS_CPU
+ string
+ default "arm1136"
+
+config SYS_BOARD
+ string
+ default "tt01"
+
+config SYS_VENDOR
+ string
+ default "hale"
+
+config SYS_SOC
+ string
+ default "mx31"
+
+config SYS_CONFIG_NAME
+ string
+ default "tt01"
+
+endif
diff --git a/board/hale/tt01/MAINTAINERS b/board/hale/tt01/MAINTAINERS
new file mode 100644
index 0000000..2f582be
--- /dev/null
+++ b/board/hale/tt01/MAINTAINERS
@@ -0,0 +1,6 @@
+TT01 BOARD
+M: Helmut Raiger <helmut.raiger@hale.at>
+S: Maintained
+F: board/hale/tt01/
+F: include/configs/tt01.h
+F: configs/tt01_defconfig
diff --git a/board/hermes/Kconfig b/board/hermes/Kconfig
new file mode 100644
index 0000000..9d80650
--- /dev/null
+++ b/board/hermes/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_HERMES
+
+config SYS_BOARD
+ string
+ default "hermes"
+
+config SYS_CONFIG_NAME
+ string
+ default "hermes"
+
+endif
diff --git a/board/hermes/MAINTAINERS b/board/hermes/MAINTAINERS
new file mode 100644
index 0000000..a596dad
--- /dev/null
+++ b/board/hermes/MAINTAINERS
@@ -0,0 +1,6 @@
+HERMES BOARD
+M: Wolfgang Denk <wd@denx.de>
+S: Maintained
+F: board/hermes/
+F: include/configs/hermes.h
+F: configs/hermes_defconfig
diff --git a/board/highbank/Kconfig b/board/highbank/Kconfig
new file mode 100644
index 0000000..1c32490
--- /dev/null
+++ b/board/highbank/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_HIGHBANK
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "highbank"
+
+config SYS_SOC
+ string
+ default "highbank"
+
+config SYS_CONFIG_NAME
+ string
+ default "highbank"
+
+endif
diff --git a/board/highbank/MAINTAINERS b/board/highbank/MAINTAINERS
new file mode 100644
index 0000000..69ddedd
--- /dev/null
+++ b/board/highbank/MAINTAINERS
@@ -0,0 +1,6 @@
+HIGHBANK BOARD
+M: Rob Herring <robh@kernel.org>
+S: Maintained
+F: board/highbank/
+F: include/configs/highbank.h
+F: configs/highbank_defconfig
diff --git a/board/htkw/mcx/Kconfig b/board/htkw/mcx/Kconfig
new file mode 100644
index 0000000..1e2c679
--- /dev/null
+++ b/board/htkw/mcx/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_MCX
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "mcx"
+
+config SYS_VENDOR
+ string
+ default "htkw"
+
+config SYS_SOC
+ string
+ default "omap3"
+
+config SYS_CONFIG_NAME
+ string
+ default "mcx"
+
+endif
diff --git a/board/htkw/mcx/MAINTAINERS b/board/htkw/mcx/MAINTAINERS
new file mode 100644
index 0000000..c5f8873
--- /dev/null
+++ b/board/htkw/mcx/MAINTAINERS
@@ -0,0 +1,6 @@
+MCX BOARD
+M: Ilya Yanok <yanok@emcraft.com>
+S: Maintained
+F: board/htkw/mcx/
+F: include/configs/mcx.h
+F: configs/mcx_defconfig
diff --git a/board/hymod/Kconfig b/board/hymod/Kconfig
new file mode 100644
index 0000000..106a837
--- /dev/null
+++ b/board/hymod/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_HYMOD
+
+config SYS_BOARD
+ string
+ default "hymod"
+
+config SYS_CONFIG_NAME
+ string
+ default "hymod"
+
+endif
diff --git a/board/hymod/MAINTAINERS b/board/hymod/MAINTAINERS
new file mode 100644
index 0000000..e27fe97
--- /dev/null
+++ b/board/hymod/MAINTAINERS
@@ -0,0 +1,6 @@
+HYMOD BOARD
+M: Murray Jensen <Murray.Jensen@csiro.au>
+S: Maintained
+F: board/hymod/
+F: include/configs/hymod.h
+F: configs/hymod_defconfig
diff --git a/board/ibf-dsp561/Kconfig b/board/ibf-dsp561/Kconfig
new file mode 100644
index 0000000..5183aff
--- /dev/null
+++ b/board/ibf-dsp561/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_IBF_DSP561
+
+config SYS_BOARD
+ string
+ default "ibf-dsp561"
+
+config SYS_CONFIG_NAME
+ string
+ default "ibf-dsp561"
+
+endif
diff --git a/board/ibf-dsp561/MAINTAINERS b/board/ibf-dsp561/MAINTAINERS
new file mode 100644
index 0000000..dfd0f90
--- /dev/null
+++ b/board/ibf-dsp561/MAINTAINERS
@@ -0,0 +1,6 @@
+IBF-DSP561 BOARD
+M: I-SYST Micromodule <support@i-syst.com>
+S: Maintained
+F: board/ibf-dsp561/
+F: include/configs/ibf-dsp561.h
+F: configs/ibf-dsp561_defconfig
diff --git a/board/icecube/Kconfig b/board/icecube/Kconfig
new file mode 100644
index 0000000..d409cd7
--- /dev/null
+++ b/board/icecube/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_ICECUBE
+
+config SYS_BOARD
+ string
+ default "icecube"
+
+config SYS_CONFIG_NAME
+ string
+ default "IceCube"
+
+endif
diff --git a/board/icecube/MAINTAINERS b/board/icecube/MAINTAINERS
new file mode 100644
index 0000000..02e6c04
--- /dev/null
+++ b/board/icecube/MAINTAINERS
@@ -0,0 +1,21 @@
+ICECUBE BOARD
+M: Wolfgang Denk <wd@denx.de>
+S: Maintained
+F: board/icecube/
+F: include/configs/IceCube.h
+F: configs/icecube_5200_defconfig
+
+ICECUBE_5200_DDR BOARD
+M: -
+S: Maintained
+F: configs/icecube_5200_DDR_defconfig
+F: configs/icecube_5200_DDR_LOWBOOT_defconfig
+F: configs/icecube_5200_DDR_LOWBOOT08_defconfig
+F: configs/icecube_5200_LOWBOOT_defconfig
+F: configs/icecube_5200_LOWBOOT08_defconfig
+F: configs/Lite5200_defconfig
+F: configs/Lite5200_LOWBOOT_defconfig
+F: configs/Lite5200_LOWBOOT08_defconfig
+F: configs/lite5200b_defconfig
+F: configs/lite5200b_LOWBOOT_defconfig
+F: configs/lite5200b_PM_defconfig
diff --git a/board/icpdas/lp8x4x/Kconfig b/board/icpdas/lp8x4x/Kconfig
new file mode 100644
index 0000000..6d58984
--- /dev/null
+++ b/board/icpdas/lp8x4x/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_LP8X4X
+
+config SYS_CPU
+ string
+ default "pxa"
+
+config SYS_BOARD
+ string
+ default "lp8x4x"
+
+config SYS_VENDOR
+ string
+ default "icpdas"
+
+config SYS_CONFIG_NAME
+ string
+ default "lp8x4x"
+
+endif
diff --git a/board/icpdas/lp8x4x/MAINTAINERS b/board/icpdas/lp8x4x/MAINTAINERS
new file mode 100644
index 0000000..90a82e3
--- /dev/null
+++ b/board/icpdas/lp8x4x/MAINTAINERS
@@ -0,0 +1,6 @@
+LP8X4X BOARD
+M: Sergey Yanovich <ynvich@gmail.com>
+S: Maintained
+F: board/icpdas/lp8x4x/
+F: include/configs/lp8x4x.h
+F: configs/lp8x4x_defconfig
diff --git a/board/icu862/Kconfig b/board/icu862/Kconfig
new file mode 100644
index 0000000..d2a7a0a
--- /dev/null
+++ b/board/icu862/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_ICU862
+
+config SYS_BOARD
+ string
+ default "icu862"
+
+config SYS_CONFIG_NAME
+ string
+ default "ICU862"
+
+endif
diff --git a/board/icu862/MAINTAINERS b/board/icu862/MAINTAINERS
new file mode 100644
index 0000000..7fe16d1
--- /dev/null
+++ b/board/icu862/MAINTAINERS
@@ -0,0 +1,7 @@
+ICU862 BOARD
+M: Wolfgang Denk <wd@denx.de>
+S: Maintained
+F: board/icu862/
+F: include/configs/ICU862.h
+F: configs/ICU862_defconfig
+F: configs/ICU862_100MHz_defconfig
diff --git a/board/ids/ids8247/Kconfig b/board/ids/ids8247/Kconfig
new file mode 100644
index 0000000..a80af9e
--- /dev/null
+++ b/board/ids/ids8247/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_IDS8247
+
+config SYS_BOARD
+ string
+ default "ids8247"
+
+config SYS_VENDOR
+ string
+ default "ids"
+
+config SYS_CONFIG_NAME
+ string
+ default "IDS8247"
+
+endif
diff --git a/board/ids/ids8247/MAINTAINERS b/board/ids/ids8247/MAINTAINERS
new file mode 100644
index 0000000..3173cdf
--- /dev/null
+++ b/board/ids/ids8247/MAINTAINERS
@@ -0,0 +1,6 @@
+IDS8247 BOARD
+M: Heiko Schocher <hs@denx.de>
+S: Maintained
+F: board/ids/ids8247/
+F: include/configs/IDS8247.h
+F: configs/IDS8247_defconfig
diff --git a/board/ids/ids8313/Kconfig b/board/ids/ids8313/Kconfig
new file mode 100644
index 0000000..b38877b
--- /dev/null
+++ b/board/ids/ids8313/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_IDS8313
+
+config SYS_BOARD
+ string
+ default "ids8313"
+
+config SYS_VENDOR
+ string
+ default "ids"
+
+config SYS_CONFIG_NAME
+ string
+ default "ids8313"
+
+endif
diff --git a/board/ids/ids8313/MAINTAINERS b/board/ids/ids8313/MAINTAINERS
new file mode 100644
index 0000000..c5b2f9e
--- /dev/null
+++ b/board/ids/ids8313/MAINTAINERS
@@ -0,0 +1,6 @@
+IDS8313 BOARD
+M: Heiko Schocher <hs@denx.de>
+S: Maintained
+F: board/ids/ids8313/
+F: include/configs/ids8313.h
+F: configs/ids8313_defconfig
diff --git a/board/ifm/ac14xx/Kconfig b/board/ifm/ac14xx/Kconfig
new file mode 100644
index 0000000..0772d57
--- /dev/null
+++ b/board/ifm/ac14xx/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_AC14XX
+
+config SYS_BOARD
+ string
+ default "ac14xx"
+
+config SYS_VENDOR
+ string
+ default "ifm"
+
+config SYS_CONFIG_NAME
+ string
+ default "ac14xx"
+
+endif
diff --git a/board/ifm/ac14xx/MAINTAINERS b/board/ifm/ac14xx/MAINTAINERS
new file mode 100644
index 0000000..8fd74e5
--- /dev/null
+++ b/board/ifm/ac14xx/MAINTAINERS
@@ -0,0 +1,6 @@
+AC14XX BOARD
+M: Anatolij Gustschin <agust@denx.de>
+S: Maintained
+F: board/ifm/ac14xx/
+F: include/configs/ac14xx.h
+F: configs/ac14xx_defconfig
diff --git a/board/ifm/o2dnt2/Kconfig b/board/ifm/o2dnt2/Kconfig
new file mode 100644
index 0000000..53e9c0f
--- /dev/null
+++ b/board/ifm/o2dnt2/Kconfig
@@ -0,0 +1,95 @@
+if TARGET_O2D
+
+config SYS_BOARD
+ string
+ default "o2dnt2"
+
+config SYS_VENDOR
+ string
+ default "ifm"
+
+config SYS_CONFIG_NAME
+ string
+ default "o2d"
+
+endif
+
+if TARGET_O2D300
+
+config SYS_BOARD
+ string
+ default "o2dnt2"
+
+config SYS_VENDOR
+ string
+ default "ifm"
+
+config SYS_CONFIG_NAME
+ string
+ default "o2d300"
+
+endif
+
+if TARGET_O2DNT2
+
+config SYS_BOARD
+ string
+ default "o2dnt2"
+
+config SYS_VENDOR
+ string
+ default "ifm"
+
+config SYS_CONFIG_NAME
+ string
+ default "o2dnt2"
+
+endif
+
+if TARGET_O2I
+
+config SYS_BOARD
+ string
+ default "o2dnt2"
+
+config SYS_VENDOR
+ string
+ default "ifm"
+
+config SYS_CONFIG_NAME
+ string
+ default "o2i"
+
+endif
+
+if TARGET_O2MNT
+
+config SYS_BOARD
+ string
+ default "o2dnt2"
+
+config SYS_VENDOR
+ string
+ default "ifm"
+
+config SYS_CONFIG_NAME
+ string
+ default "o2mnt"
+
+endif
+
+if TARGET_O3DNT
+
+config SYS_BOARD
+ string
+ default "o2dnt2"
+
+config SYS_VENDOR
+ string
+ default "ifm"
+
+config SYS_CONFIG_NAME
+ string
+ default "o3dnt"
+
+endif
diff --git a/board/ifm/o2dnt2/MAINTAINERS b/board/ifm/o2dnt2/MAINTAINERS
new file mode 100644
index 0000000..002f89e
--- /dev/null
+++ b/board/ifm/o2dnt2/MAINTAINERS
@@ -0,0 +1,20 @@
+O2DNT2 BOARD
+M: Anatolij Gustschin <agust@denx.de>
+S: Maintained
+F: board/ifm/o2dnt2/
+F: include/configs/o2d.h
+F: configs/O2D_defconfig
+F: include/configs/o2d300.h
+F: configs/O2D300_defconfig
+F: include/configs/o2dnt2.h
+F: configs/O2DNT2_defconfig
+F: configs/O2DNT2_RAMBOOT_defconfig
+F: include/configs/o2i.h
+F: configs/O2I_defconfig
+F: include/configs/o2mnt.h
+F: configs/O2MNT_defconfig
+F: configs/O2MNT_O2M110_defconfig
+F: configs/O2MNT_O2M112_defconfig
+F: configs/O2MNT_O2M113_defconfig
+F: include/configs/o3dnt.h
+F: configs/O3DNT_defconfig
diff --git a/board/imgtec/malta/Kconfig b/board/imgtec/malta/Kconfig
new file mode 100644
index 0000000..8e5cab1
--- /dev/null
+++ b/board/imgtec/malta/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_MALTA
+
+config SYS_CPU
+ string
+ default "mips32"
+
+config SYS_BOARD
+ string
+ default "malta"
+
+config SYS_VENDOR
+ string
+ default "imgtec"
+
+config SYS_CONFIG_NAME
+ string
+ default "malta"
+
+endif
diff --git a/board/imgtec/malta/MAINTAINERS b/board/imgtec/malta/MAINTAINERS
new file mode 100644
index 0000000..a0b3284
--- /dev/null
+++ b/board/imgtec/malta/MAINTAINERS
@@ -0,0 +1,7 @@
+MALTA BOARD
+M: Paul Burton <paul.burton@imgtec.com>
+S: Maintained
+F: board/imgtec/malta/
+F: include/configs/malta.h
+F: configs/malta_defconfig
+F: configs/maltael_defconfig
diff --git a/board/imx31_phycore/Kconfig b/board/imx31_phycore/Kconfig
new file mode 100644
index 0000000..c74f4a6
--- /dev/null
+++ b/board/imx31_phycore/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_IMX31_PHYCORE
+
+config SYS_CPU
+ string
+ default "arm1136"
+
+config SYS_BOARD
+ string
+ default "imx31_phycore"
+
+config SYS_SOC
+ string
+ default "mx31"
+
+config SYS_CONFIG_NAME
+ string
+ default "imx31_phycore"
+
+endif
diff --git a/board/imx31_phycore/MAINTAINERS b/board/imx31_phycore/MAINTAINERS
new file mode 100644
index 0000000..efd5e77
--- /dev/null
+++ b/board/imx31_phycore/MAINTAINERS
@@ -0,0 +1,11 @@
+IMX31_PHYCORE BOARD
+M: -
+S: Maintained
+F: board/imx31_phycore/
+F: include/configs/imx31_phycore.h
+F: configs/imx31_phycore_defconfig
+
+IMX31_PHYCORE_EET BOARD
+M: (resigned) Guennadi Liakhovetski <g.liakhovetski@gmx.de>
+S: Orphan (since 2013-09)
+F: configs/imx31_phycore_eet_defconfig
diff --git a/board/in-circuit/grasshopper/Kconfig b/board/in-circuit/grasshopper/Kconfig
new file mode 100644
index 0000000..da3bcc3
--- /dev/null
+++ b/board/in-circuit/grasshopper/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_GRASSHOPPER
+
+config SYS_BOARD
+ string
+ default "grasshopper"
+
+config SYS_VENDOR
+ string
+ default "in-circuit"
+
+config SYS_SOC
+ string
+ default "at32ap700x"
+
+config SYS_CONFIG_NAME
+ string
+ default "grasshopper"
+
+endif
diff --git a/board/in-circuit/grasshopper/MAINTAINERS b/board/in-circuit/grasshopper/MAINTAINERS
new file mode 100644
index 0000000..db8bd0a
--- /dev/null
+++ b/board/in-circuit/grasshopper/MAINTAINERS
@@ -0,0 +1,6 @@
+GRASSHOPPER BOARD
+M: Andreas Bießmann <andreas.devel@googlemail.com>
+S: Maintained
+F: board/in-circuit/grasshopper/
+F: include/configs/grasshopper.h
+F: configs/grasshopper_defconfig
diff --git a/board/inka4x0/Kconfig b/board/inka4x0/Kconfig
new file mode 100644
index 0000000..44bca35
--- /dev/null
+++ b/board/inka4x0/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_INKA4X0
+
+config SYS_BOARD
+ string
+ default "inka4x0"
+
+config SYS_CONFIG_NAME
+ string
+ default "inka4x0"
+
+endif
diff --git a/board/inka4x0/MAINTAINERS b/board/inka4x0/MAINTAINERS
new file mode 100644
index 0000000..246b2d4
--- /dev/null
+++ b/board/inka4x0/MAINTAINERS
@@ -0,0 +1,6 @@
+INKA4X0 BOARD
+M: Detlev Zundel <dzu@denx.de>
+S: Maintained
+F: board/inka4x0/
+F: include/configs/inka4x0.h
+F: configs/inka4x0_defconfig
diff --git a/board/intercontrol/digsy_mtc/Kconfig b/board/intercontrol/digsy_mtc/Kconfig
new file mode 100644
index 0000000..0b14bc0
--- /dev/null
+++ b/board/intercontrol/digsy_mtc/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_DIGSY_MTC
+
+config SYS_BOARD
+ string
+ default "digsy_mtc"
+
+config SYS_VENDOR
+ string
+ default "intercontrol"
+
+config SYS_CONFIG_NAME
+ string
+ default "digsy_mtc"
+
+endif
diff --git a/board/intercontrol/digsy_mtc/MAINTAINERS b/board/intercontrol/digsy_mtc/MAINTAINERS
new file mode 100644
index 0000000..c83ebcd
--- /dev/null
+++ b/board/intercontrol/digsy_mtc/MAINTAINERS
@@ -0,0 +1,9 @@
+DIGSY_MTC BOARD
+M: Werner Pfister <Pfister_Werner@intercontrol.de>
+S: Maintained
+F: board/intercontrol/digsy_mtc/
+F: include/configs/digsy_mtc.h
+F: configs/digsy_mtc_defconfig
+F: configs/digsy_mtc_RAMBOOT_defconfig
+F: configs/digsy_mtc_rev5_defconfig
+F: configs/digsy_mtc_rev5_RAMBOOT_defconfig
diff --git a/board/iomega/iconnect/Kconfig b/board/iomega/iconnect/Kconfig
new file mode 100644
index 0000000..8ac21d2
--- /dev/null
+++ b/board/iomega/iconnect/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_ICONNECT
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "iconnect"
+
+config SYS_VENDOR
+ string
+ default "iomega"
+
+config SYS_SOC
+ string
+ default "kirkwood"
+
+config SYS_CONFIG_NAME
+ string
+ default "iconnect"
+
+endif
diff --git a/board/iomega/iconnect/MAINTAINERS b/board/iomega/iconnect/MAINTAINERS
new file mode 100644
index 0000000..167cf07
--- /dev/null
+++ b/board/iomega/iconnect/MAINTAINERS
@@ -0,0 +1,6 @@
+ICONNECT BOARD
+M: Luka Perkov <luka@openwrt.org>
+S: Maintained
+F: board/iomega/iconnect/
+F: include/configs/iconnect.h
+F: configs/iconnect_defconfig
diff --git a/board/ip04/Kconfig b/board/ip04/Kconfig
new file mode 100644
index 0000000..95abe63
--- /dev/null
+++ b/board/ip04/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_IP04
+
+config SYS_BOARD
+ string
+ default "ip04"
+
+config SYS_CONFIG_NAME
+ string
+ default "ip04"
+
+endif
diff --git a/board/ip04/MAINTAINERS b/board/ip04/MAINTAINERS
new file mode 100644
index 0000000..278072b
--- /dev/null
+++ b/board/ip04/MAINTAINERS
@@ -0,0 +1,6 @@
+IP04 BOARD
+M: Brent Kandetzki <brentk@teleco.com>
+S: Orphan (since 2014-06)
+F: board/ip04/
+F: include/configs/ip04.h
+F: configs/ip04_defconfig
diff --git a/board/ip860/Kconfig b/board/ip860/Kconfig
new file mode 100644
index 0000000..df1ce8d
--- /dev/null
+++ b/board/ip860/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_IP860
+
+config SYS_BOARD
+ string
+ default "ip860"
+
+config SYS_CONFIG_NAME
+ string
+ default "IP860"
+
+endif
diff --git a/board/ip860/MAINTAINERS b/board/ip860/MAINTAINERS
new file mode 100644
index 0000000..36d5690
--- /dev/null
+++ b/board/ip860/MAINTAINERS
@@ -0,0 +1,6 @@
+IP860 BOARD
+M: Wolfgang Denk <wd@denx.de>
+S: Maintained
+F: board/ip860/
+F: include/configs/IP860.h
+F: configs/IP860_defconfig
diff --git a/board/ipek01/Kconfig b/board/ipek01/Kconfig
new file mode 100644
index 0000000..a2a1f86
--- /dev/null
+++ b/board/ipek01/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_IPEK01
+
+config SYS_BOARD
+ string
+ default "ipek01"
+
+config SYS_CONFIG_NAME
+ string
+ default "ipek01"
+
+endif
diff --git a/board/ipek01/MAINTAINERS b/board/ipek01/MAINTAINERS
new file mode 100644
index 0000000..060f8a5
--- /dev/null
+++ b/board/ipek01/MAINTAINERS
@@ -0,0 +1,6 @@
+IPEK01 BOARD
+M: Wolfgang Grandegger <wg@denx.de>
+S: Maintained
+F: board/ipek01/
+F: include/configs/ipek01.h
+F: configs/ipek01_defconfig
diff --git a/board/iphase4539/Kconfig b/board/iphase4539/Kconfig
new file mode 100644
index 0000000..1ce42f3
--- /dev/null
+++ b/board/iphase4539/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_IPHASE4539
+
+config SYS_BOARD
+ string
+ default "iphase4539"
+
+config SYS_CONFIG_NAME
+ string
+ default "IPHASE4539"
+
+endif
diff --git a/board/iphase4539/MAINTAINERS b/board/iphase4539/MAINTAINERS
new file mode 100644
index 0000000..ddf6814
--- /dev/null
+++ b/board/iphase4539/MAINTAINERS
@@ -0,0 +1,6 @@
+IPHASE4539 BOARD
+M: Wolfgang Grandegger <wg@denx.de>
+S: Maintained
+F: board/iphase4539/
+F: include/configs/IPHASE4539.h
+F: configs/IPHASE4539_defconfig
diff --git a/board/isee/igep0033/Kconfig b/board/isee/igep0033/Kconfig
new file mode 100644
index 0000000..cdb67ed
--- /dev/null
+++ b/board/isee/igep0033/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_AM335X_IGEP0033
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "igep0033"
+
+config SYS_VENDOR
+ string
+ default "isee"
+
+config SYS_SOC
+ string
+ default "am33xx"
+
+config SYS_CONFIG_NAME
+ string
+ default "am335x_igep0033"
+
+endif
diff --git a/board/isee/igep0033/MAINTAINERS b/board/isee/igep0033/MAINTAINERS
new file mode 100644
index 0000000..d162d77
--- /dev/null
+++ b/board/isee/igep0033/MAINTAINERS
@@ -0,0 +1,6 @@
+IGEP0033 BOARD
+M: Enric Balletbo i Serra <eballetbo@iseebcn.com>
+S: Maintained
+F: board/isee/igep0033/
+F: include/configs/am335x_igep0033.h
+F: configs/am335x_igep0033_defconfig
diff --git a/board/isee/igep00x0/Kconfig b/board/isee/igep00x0/Kconfig
new file mode 100644
index 0000000..c9f2969
--- /dev/null
+++ b/board/isee/igep00x0/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_OMAP3_IGEP00X0
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "igep00x0"
+
+config SYS_VENDOR
+ string
+ default "isee"
+
+config SYS_SOC
+ string
+ default "omap3"
+
+config SYS_CONFIG_NAME
+ string
+ default "omap3_igep00x0"
+
+endif
diff --git a/board/isee/igep00x0/MAINTAINERS b/board/isee/igep00x0/MAINTAINERS
new file mode 100644
index 0000000..fe4a8cd
--- /dev/null
+++ b/board/isee/igep00x0/MAINTAINERS
@@ -0,0 +1,14 @@
+IGEP00X0 BOARD
+M: Enric Balletbo i Serra <eballetbo@iseebcn.com>
+S: Maintained
+F: board/isee/igep00x0/
+F: include/configs/omap3_igep00x0.h
+F: configs/igep0020_defconfig
+F: configs/igep0030_defconfig
+F: configs/igep0032_defconfig
+
+IGEP0020_NAND BOARD
+M: -
+S: Maintained
+F: configs/igep0020_nand_defconfig
+F: configs/igep0030_nand_defconfig
diff --git a/board/ivm/Kconfig b/board/ivm/Kconfig
new file mode 100644
index 0000000..ab3da79
--- /dev/null
+++ b/board/ivm/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_IVML24
+
+config SYS_BOARD
+ string
+ default "ivm"
+
+config SYS_CONFIG_NAME
+ string
+ default "IVML24"
+
+endif
+
+if TARGET_IVMS8
+
+config SYS_BOARD
+ string
+ default "ivm"
+
+config SYS_CONFIG_NAME
+ string
+ default "IVMS8"
+
+endif
diff --git a/board/ivm/MAINTAINERS b/board/ivm/MAINTAINERS
new file mode 100644
index 0000000..6a9082c
--- /dev/null
+++ b/board/ivm/MAINTAINERS
@@ -0,0 +1,12 @@
+IVM BOARD
+M: Wolfgang Denk <wd@denx.de>
+S: Maintained
+F: board/ivm/
+F: include/configs/IVML24.h
+F: configs/IVML24_defconfig
+F: configs/IVML24_128_defconfig
+F: configs/IVML24_256_defconfig
+F: include/configs/IVMS8.h
+F: configs/IVMS8_defconfig
+F: configs/IVMS8_128_defconfig
+F: configs/IVMS8_256_defconfig
diff --git a/board/jornada/Kconfig b/board/jornada/Kconfig
new file mode 100644
index 0000000..345d3b6
--- /dev/null
+++ b/board/jornada/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_JORNADA
+
+config SYS_CPU
+ string
+ default "sa1100"
+
+config SYS_BOARD
+ string
+ default "jornada"
+
+config SYS_CONFIG_NAME
+ string
+ default "jornada"
+
+endif
diff --git a/board/jornada/MAINTAINERS b/board/jornada/MAINTAINERS
new file mode 100644
index 0000000..c77d745
--- /dev/null
+++ b/board/jornada/MAINTAINERS
@@ -0,0 +1,6 @@
+JORNADA BOARD
+M: Kristoffer Ericson <kristoffer.ericson@gmail.com>
+S: Maintained
+F: board/jornada/
+F: include/configs/jornada.h
+F: configs/jornada_defconfig
diff --git a/board/jse/Kconfig b/board/jse/Kconfig
new file mode 100644
index 0000000..bb265f2
--- /dev/null
+++ b/board/jse/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_JSE
+
+config SYS_BOARD
+ string
+ default "jse"
+
+config SYS_CONFIG_NAME
+ string
+ default "JSE"
+
+endif
diff --git a/board/jse/MAINTAINERS b/board/jse/MAINTAINERS
new file mode 100644
index 0000000..818a5a0
--- /dev/null
+++ b/board/jse/MAINTAINERS
@@ -0,0 +1,6 @@
+JSE BOARD
+M: Stephen Williams <steve@icarus.com>
+S: Maintained
+F: board/jse/
+F: include/configs/JSE.h
+F: configs/JSE_defconfig
diff --git a/board/jupiter/Kconfig b/board/jupiter/Kconfig
new file mode 100644
index 0000000..36e43b7
--- /dev/null
+++ b/board/jupiter/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_JUPITER
+
+config SYS_BOARD
+ string
+ default "jupiter"
+
+config SYS_CONFIG_NAME
+ string
+ default "jupiter"
+
+endif
diff --git a/board/jupiter/MAINTAINERS b/board/jupiter/MAINTAINERS
new file mode 100644
index 0000000..5a79a61
--- /dev/null
+++ b/board/jupiter/MAINTAINERS
@@ -0,0 +1,6 @@
+JUPITER BOARD
+M: Heiko Schocher <hs@denx.de>
+S: Maintained
+F: board/jupiter/
+F: include/configs/jupiter.h
+F: configs/jupiter_defconfig
diff --git a/board/karo/tk71/Kconfig b/board/karo/tk71/Kconfig
new file mode 100644
index 0000000..546491b
--- /dev/null
+++ b/board/karo/tk71/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_TK71
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "tk71"
+
+config SYS_VENDOR
+ string
+ default "karo"
+
+config SYS_SOC
+ string
+ default "kirkwood"
+
+config SYS_CONFIG_NAME
+ string
+ default "tk71"
+
+endif
diff --git a/board/karo/tk71/MAINTAINERS b/board/karo/tk71/MAINTAINERS
new file mode 100644
index 0000000..39b2b1d
--- /dev/null
+++ b/board/karo/tk71/MAINTAINERS
@@ -0,0 +1,6 @@
+TK71 BOARD
+M: -
+S: Maintained
+F: board/karo/tk71/
+F: include/configs/tk71.h
+F: configs/tk71_defconfig
diff --git a/board/karo/tx25/Kconfig b/board/karo/tx25/Kconfig
new file mode 100644
index 0000000..095b1a5
--- /dev/null
+++ b/board/karo/tx25/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_TX25
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "tx25"
+
+config SYS_VENDOR
+ string
+ default "karo"
+
+config SYS_SOC
+ string
+ default "mx25"
+
+config SYS_CONFIG_NAME
+ string
+ default "tx25"
+
+endif
diff --git a/board/karo/tx25/MAINTAINERS b/board/karo/tx25/MAINTAINERS
new file mode 100644
index 0000000..2defe34
--- /dev/null
+++ b/board/karo/tx25/MAINTAINERS
@@ -0,0 +1,6 @@
+TX25 BOARD
+M: John Rigby <jcrigby@gmail.com>
+S: Maintained
+F: board/karo/tx25/
+F: include/configs/tx25.h
+F: configs/tx25_defconfig
diff --git a/board/keymile/km82xx/Kconfig b/board/keymile/km82xx/Kconfig
new file mode 100644
index 0000000..c29032a
--- /dev/null
+++ b/board/keymile/km82xx/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_KM82XX
+
+config SYS_BOARD
+ string
+ default "km82xx"
+
+config SYS_VENDOR
+ string
+ default "keymile"
+
+config SYS_CONFIG_NAME
+ string
+ default "km82xx"
+
+endif
diff --git a/board/keymile/km82xx/MAINTAINERS b/board/keymile/km82xx/MAINTAINERS
new file mode 100644
index 0000000..50e06b2
--- /dev/null
+++ b/board/keymile/km82xx/MAINTAINERS
@@ -0,0 +1,7 @@
+KM82XX BOARD
+M: Holger Brunck <holger.brunck@keymile.com>
+S: Maintained
+F: board/keymile/km82xx/
+F: include/configs/km82xx.h
+F: configs/mgcoge_defconfig
+F: configs/mgcoge3ne_defconfig
diff --git a/board/keymile/km83xx/Kconfig b/board/keymile/km83xx/Kconfig
new file mode 100644
index 0000000..934c45d
--- /dev/null
+++ b/board/keymile/km83xx/Kconfig
@@ -0,0 +1,47 @@
+if TARGET_KM8360
+
+config SYS_BOARD
+ string
+ default "km83xx"
+
+config SYS_VENDOR
+ string
+ default "keymile"
+
+config SYS_CONFIG_NAME
+ string
+ default "km8360"
+
+endif
+
+if TARGET_SUVD3
+
+config SYS_BOARD
+ string
+ default "km83xx"
+
+config SYS_VENDOR
+ string
+ default "keymile"
+
+config SYS_CONFIG_NAME
+ string
+ default "suvd3"
+
+endif
+
+if TARGET_TUXX1
+
+config SYS_BOARD
+ string
+ default "km83xx"
+
+config SYS_VENDOR
+ string
+ default "keymile"
+
+config SYS_CONFIG_NAME
+ string
+ default "tuxx1"
+
+endif
diff --git a/board/keymile/km83xx/MAINTAINERS b/board/keymile/km83xx/MAINTAINERS
new file mode 100644
index 0000000..cee7e08
--- /dev/null
+++ b/board/keymile/km83xx/MAINTAINERS
@@ -0,0 +1,19 @@
+KM83XX BOARD
+M: Holger Brunck <holger.brunck@keymile.com>
+S: Maintained
+F: board/keymile/km83xx/
+F: include/configs/km8360.h
+F: configs/kmcoge5ne_defconfig
+F: configs/kmeter1_defconfig
+F: include/configs/tuxx1.h
+F: configs/kmopti2_defconfig
+F: include/configs/suvd3.h
+F: configs/kmvect1_defconfig
+F: configs/suvd3_defconfig
+F: configs/tuge1_defconfig
+F: configs/tuxx1_defconfig
+
+KMSUPX5 BOARD
+M: Heiko Schocher <hs@denx.de>
+S: Maintained
+F: configs/kmsupx5_defconfig
diff --git a/board/keymile/km_arm/Kconfig b/board/keymile/km_arm/Kconfig
new file mode 100644
index 0000000..dec4626
--- /dev/null
+++ b/board/keymile/km_arm/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_KM_KIRKWOOD
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "km_arm"
+
+config SYS_VENDOR
+ string
+ default "keymile"
+
+config SYS_SOC
+ string
+ default "kirkwood"
+
+config SYS_CONFIG_NAME
+ string
+ default "km_kirkwood"
+
+endif
diff --git a/board/keymile/km_arm/MAINTAINERS b/board/keymile/km_arm/MAINTAINERS
new file mode 100644
index 0000000..079c803
--- /dev/null
+++ b/board/keymile/km_arm/MAINTAINERS
@@ -0,0 +1,14 @@
+KM_ARM BOARD
+M: Valentin Longchamp <valentin.longchamp@keymile.com>
+S: Maintained
+F: board/keymile/km_arm/
+F: include/configs/km_kirkwood.h
+F: configs/km_kirkwood_defconfig
+F: configs/km_kirkwood_128m16_defconfig
+F: configs/km_kirkwood_pci_defconfig
+F: configs/kmcoge5un_defconfig
+F: configs/kmnusa_defconfig
+F: configs/kmsugp1_defconfig
+F: configs/kmsuv31_defconfig
+F: configs/mgcoge3un_defconfig
+F: configs/portl2_defconfig
diff --git a/board/keymile/kmp204x/Kconfig b/board/keymile/kmp204x/Kconfig
new file mode 100644
index 0000000..0236f69
--- /dev/null
+++ b/board/keymile/kmp204x/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_KMP204X
+
+config SYS_BOARD
+ string
+ default "kmp204x"
+
+config SYS_VENDOR
+ string
+ default "keymile"
+
+config SYS_CONFIG_NAME
+ string
+ default "kmp204x"
+
+endif
diff --git a/board/keymile/kmp204x/MAINTAINERS b/board/keymile/kmp204x/MAINTAINERS
new file mode 100644
index 0000000..93b6bad
--- /dev/null
+++ b/board/keymile/kmp204x/MAINTAINERS
@@ -0,0 +1,7 @@
+KMP204X BOARD
+M: Valentin Longchamp <valentin.longchamp@keymile.com>
+S: Maintained
+F: board/keymile/kmp204x/
+F: include/configs/kmp204x.h
+F: configs/kmcoge4_defconfig
+F: configs/kmlion1_defconfig
diff --git a/board/kmc/kzm9g/Kconfig b/board/kmc/kzm9g/Kconfig
new file mode 100644
index 0000000..2d40173
--- /dev/null
+++ b/board/kmc/kzm9g/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_KZM9G
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "kzm9g"
+
+config SYS_VENDOR
+ string
+ default "kmc"
+
+config SYS_SOC
+ string
+ default "rmobile"
+
+config SYS_CONFIG_NAME
+ string
+ default "kzm9g"
+
+endif
diff --git a/board/kmc/kzm9g/MAINTAINERS b/board/kmc/kzm9g/MAINTAINERS
new file mode 100644
index 0000000..411efd1
--- /dev/null
+++ b/board/kmc/kzm9g/MAINTAINERS
@@ -0,0 +1,7 @@
+KZM9G BOARD
+M: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
+M: Tetsuyuki Kobayashi <koba@kmckk.co.jp>
+S: Maintained
+F: board/kmc/kzm9g/
+F: include/configs/kzm9g.h
+F: configs/kzm9g_defconfig
diff --git a/board/korat/Kconfig b/board/korat/Kconfig
new file mode 100644
index 0000000..c23061c
--- /dev/null
+++ b/board/korat/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_KORAT
+
+config SYS_BOARD
+ string
+ default "korat"
+
+config SYS_CONFIG_NAME
+ string
+ default "korat"
+
+endif
diff --git a/board/korat/MAINTAINERS b/board/korat/MAINTAINERS
new file mode 100644
index 0000000..8b96846
--- /dev/null
+++ b/board/korat/MAINTAINERS
@@ -0,0 +1,7 @@
+KORAT BOARD
+M: Larry Johnson <lrj@acm.org>
+S: Maintained
+F: board/korat/
+F: include/configs/korat.h
+F: configs/korat_defconfig
+F: configs/korat_perm_defconfig
diff --git a/board/kup/kup4k/Kconfig b/board/kup/kup4k/Kconfig
new file mode 100644
index 0000000..bac89aa
--- /dev/null
+++ b/board/kup/kup4k/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_KUP4K
+
+config SYS_BOARD
+ string
+ default "kup4k"
+
+config SYS_VENDOR
+ string
+ default "kup"
+
+config SYS_CONFIG_NAME
+ string
+ default "KUP4K"
+
+endif
diff --git a/board/kup/kup4k/MAINTAINERS b/board/kup/kup4k/MAINTAINERS
new file mode 100644
index 0000000..25d90cf
--- /dev/null
+++ b/board/kup/kup4k/MAINTAINERS
@@ -0,0 +1,6 @@
+KUP4K BOARD
+M: Klaus Heydeck <heydeck@kieback-peter.de>
+S: Maintained
+F: board/kup/kup4k/
+F: include/configs/KUP4K.h
+F: configs/KUP4K_defconfig
diff --git a/board/kup/kup4x/Kconfig b/board/kup/kup4x/Kconfig
new file mode 100644
index 0000000..e04b919
--- /dev/null
+++ b/board/kup/kup4x/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_KUP4X
+
+config SYS_BOARD
+ string
+ default "kup4x"
+
+config SYS_VENDOR
+ string
+ default "kup"
+
+config SYS_CONFIG_NAME
+ string
+ default "KUP4X"
+
+endif
diff --git a/board/kup/kup4x/MAINTAINERS b/board/kup/kup4x/MAINTAINERS
new file mode 100644
index 0000000..85159e4
--- /dev/null
+++ b/board/kup/kup4x/MAINTAINERS
@@ -0,0 +1,6 @@
+KUP4X BOARD
+M: Klaus Heydeck <heydeck@kieback-peter.de>
+S: Maintained
+F: board/kup/kup4x/
+F: include/configs/KUP4X.h
+F: configs/KUP4X_defconfig
diff --git a/board/logicpd/am3517evm/Kconfig b/board/logicpd/am3517evm/Kconfig
new file mode 100644
index 0000000..9bc5ae5
--- /dev/null
+++ b/board/logicpd/am3517evm/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_AM3517_EVM
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "am3517evm"
+
+config SYS_VENDOR
+ string
+ default "logicpd"
+
+config SYS_SOC
+ string
+ default "omap3"
+
+config SYS_CONFIG_NAME
+ string
+ default "am3517_evm"
+
+endif
diff --git a/board/logicpd/am3517evm/MAINTAINERS b/board/logicpd/am3517evm/MAINTAINERS
new file mode 100644
index 0000000..7f03ac1
--- /dev/null
+++ b/board/logicpd/am3517evm/MAINTAINERS
@@ -0,0 +1,6 @@
+AM3517EVM BOARD
+M: Vaibhav Hiremath <hvaibhav@ti.com>
+S: Maintained
+F: board/logicpd/am3517evm/
+F: include/configs/am3517_evm.h
+F: configs/am3517_evm_defconfig
diff --git a/board/logicpd/imx27lite/Kconfig b/board/logicpd/imx27lite/Kconfig
new file mode 100644
index 0000000..f107267
--- /dev/null
+++ b/board/logicpd/imx27lite/Kconfig
@@ -0,0 +1,47 @@
+if TARGET_IMX27LITE
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "imx27lite"
+
+config SYS_VENDOR
+ string
+ default "logicpd"
+
+config SYS_SOC
+ string
+ default "mx27"
+
+config SYS_CONFIG_NAME
+ string
+ default "imx27lite"
+
+endif
+
+if TARGET_MAGNESIUM
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "imx27lite"
+
+config SYS_VENDOR
+ string
+ default "logicpd"
+
+config SYS_SOC
+ string
+ default "mx27"
+
+config SYS_CONFIG_NAME
+ string
+ default "magnesium"
+
+endif
diff --git a/board/logicpd/imx27lite/MAINTAINERS b/board/logicpd/imx27lite/MAINTAINERS
new file mode 100644
index 0000000..a7b22ac
--- /dev/null
+++ b/board/logicpd/imx27lite/MAINTAINERS
@@ -0,0 +1,12 @@
+IMX27LITE BOARD
+M: Wolfgang Denk <wd@denx.de>
+S: Maintained
+F: board/logicpd/imx27lite/
+F: include/configs/imx27lite.h
+F: configs/imx27lite_defconfig
+
+MAGNESIUM BOARD
+M: Heiko Schocher <hs@denx.de>
+S: Maintained
+F: include/configs/magnesium.h
+F: configs/magnesium_defconfig
diff --git a/board/logicpd/imx31_litekit/Kconfig b/board/logicpd/imx31_litekit/Kconfig
new file mode 100644
index 0000000..ae3343b
--- /dev/null
+++ b/board/logicpd/imx31_litekit/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_IMX31_LITEKIT
+
+config SYS_CPU
+ string
+ default "arm1136"
+
+config SYS_BOARD
+ string
+ default "imx31_litekit"
+
+config SYS_VENDOR
+ string
+ default "logicpd"
+
+config SYS_SOC
+ string
+ default "mx31"
+
+config SYS_CONFIG_NAME
+ string
+ default "imx31_litekit"
+
+endif
diff --git a/board/logicpd/imx31_litekit/MAINTAINERS b/board/logicpd/imx31_litekit/MAINTAINERS
new file mode 100644
index 0000000..98cc7bd
--- /dev/null
+++ b/board/logicpd/imx31_litekit/MAINTAINERS
@@ -0,0 +1,6 @@
+IMX31_LITEKIT BOARD
+M: -
+S: Maintained
+F: board/logicpd/imx31_litekit/
+F: include/configs/imx31_litekit.h
+F: configs/imx31_litekit_defconfig
diff --git a/board/logicpd/omap3som/Kconfig b/board/logicpd/omap3som/Kconfig
new file mode 100644
index 0000000..daaefa6
--- /dev/null
+++ b/board/logicpd/omap3som/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_OMAP3_LOGIC
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "omap3som"
+
+config SYS_VENDOR
+ string
+ default "logicpd"
+
+config SYS_SOC
+ string
+ default "omap3"
+
+config SYS_CONFIG_NAME
+ string
+ default "omap3_logic"
+
+endif
diff --git a/board/logicpd/omap3som/MAINTAINERS b/board/logicpd/omap3som/MAINTAINERS
new file mode 100644
index 0000000..ffe2201
--- /dev/null
+++ b/board/logicpd/omap3som/MAINTAINERS
@@ -0,0 +1,6 @@
+OMAP3SOM BOARD
+M: Peter Barada <peter.barada@logicpd.com>
+S: Maintained
+F: board/logicpd/omap3som/
+F: include/configs/omap3_logic.h
+F: configs/omap3_logic_defconfig
diff --git a/board/logicpd/zoom1/Kconfig b/board/logicpd/zoom1/Kconfig
new file mode 100644
index 0000000..3199130
--- /dev/null
+++ b/board/logicpd/zoom1/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_OMAP3_ZOOM1
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "zoom1"
+
+config SYS_VENDOR
+ string
+ default "logicpd"
+
+config SYS_SOC
+ string
+ default "omap3"
+
+config SYS_CONFIG_NAME
+ string
+ default "omap3_zoom1"
+
+endif
diff --git a/board/logicpd/zoom1/MAINTAINERS b/board/logicpd/zoom1/MAINTAINERS
new file mode 100644
index 0000000..338b965
--- /dev/null
+++ b/board/logicpd/zoom1/MAINTAINERS
@@ -0,0 +1,6 @@
+ZOOM1 BOARD
+M: Nishanth Menon <nm@ti.com>
+S: Maintained
+F: board/logicpd/zoom1/
+F: include/configs/omap3_zoom1.h
+F: configs/omap3_zoom1_defconfig
diff --git a/board/lwmon/Kconfig b/board/lwmon/Kconfig
new file mode 100644
index 0000000..a0c7587
--- /dev/null
+++ b/board/lwmon/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_LWMON
+
+config SYS_BOARD
+ string
+ default "lwmon"
+
+config SYS_CONFIG_NAME
+ string
+ default "lwmon"
+
+endif
diff --git a/board/lwmon/MAINTAINERS b/board/lwmon/MAINTAINERS
new file mode 100644
index 0000000..763ce22
--- /dev/null
+++ b/board/lwmon/MAINTAINERS
@@ -0,0 +1,6 @@
+LWMON BOARD
+M: Wolfgang Denk <wd@denx.de>
+S: Maintained
+F: board/lwmon/
+F: include/configs/lwmon.h
+F: configs/lwmon_defconfig
diff --git a/board/lwmon5/Kconfig b/board/lwmon5/Kconfig
new file mode 100644
index 0000000..79cf08e
--- /dev/null
+++ b/board/lwmon5/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_LWMON5
+
+config SYS_BOARD
+ string
+ default "lwmon5"
+
+config SYS_CONFIG_NAME
+ string
+ default "lwmon5"
+
+endif
diff --git a/board/lwmon5/MAINTAINERS b/board/lwmon5/MAINTAINERS
new file mode 100644
index 0000000..7402ab6
--- /dev/null
+++ b/board/lwmon5/MAINTAINERS
@@ -0,0 +1,7 @@
+LWMON5 BOARD
+M: Stefan Roese <sr@denx.de>
+S: Maintained
+F: board/lwmon5/
+F: include/configs/lwmon5.h
+F: configs/lcd4_lwmon5_defconfig
+F: configs/lwmon5_defconfig
diff --git a/board/manroland/hmi1001/Kconfig b/board/manroland/hmi1001/Kconfig
new file mode 100644
index 0000000..2f576dd
--- /dev/null
+++ b/board/manroland/hmi1001/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_HMI1001
+
+config SYS_BOARD
+ string
+ default "hmi1001"
+
+config SYS_VENDOR
+ string
+ default "manroland"
+
+config SYS_CONFIG_NAME
+ string
+ default "hmi1001"
+
+endif
diff --git a/board/manroland/hmi1001/MAINTAINERS b/board/manroland/hmi1001/MAINTAINERS
new file mode 100644
index 0000000..bdfdc01
--- /dev/null
+++ b/board/manroland/hmi1001/MAINTAINERS
@@ -0,0 +1,6 @@
+HMI1001 BOARD
+M: -
+S: Maintained
+F: board/manroland/hmi1001/
+F: include/configs/hmi1001.h
+F: configs/hmi1001_defconfig
diff --git a/board/manroland/mucmc52/Kconfig b/board/manroland/mucmc52/Kconfig
new file mode 100644
index 0000000..4be0722
--- /dev/null
+++ b/board/manroland/mucmc52/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MUCMC52
+
+config SYS_BOARD
+ string
+ default "mucmc52"
+
+config SYS_VENDOR
+ string
+ default "manroland"
+
+config SYS_CONFIG_NAME
+ string
+ default "mucmc52"
+
+endif
diff --git a/board/manroland/mucmc52/MAINTAINERS b/board/manroland/mucmc52/MAINTAINERS
new file mode 100644
index 0000000..45a2764
--- /dev/null
+++ b/board/manroland/mucmc52/MAINTAINERS
@@ -0,0 +1,6 @@
+MUCMC52 BOARD
+M: Heiko Schocher <hs@denx.de>
+S: Maintained
+F: board/manroland/mucmc52/
+F: include/configs/mucmc52.h
+F: configs/mucmc52_defconfig
diff --git a/board/manroland/uc100/Kconfig b/board/manroland/uc100/Kconfig
new file mode 100644
index 0000000..a41a780
--- /dev/null
+++ b/board/manroland/uc100/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_UC100
+
+config SYS_BOARD
+ string
+ default "uc100"
+
+config SYS_VENDOR
+ string
+ default "manroland"
+
+config SYS_CONFIG_NAME
+ string
+ default "uc100"
+
+endif
diff --git a/board/manroland/uc100/MAINTAINERS b/board/manroland/uc100/MAINTAINERS
new file mode 100644
index 0000000..260471c
--- /dev/null
+++ b/board/manroland/uc100/MAINTAINERS
@@ -0,0 +1,6 @@
+UC100 BOARD
+M: Stefan Roese <sr@denx.de>
+S: Maintained
+F: board/manroland/uc100/
+F: include/configs/uc100.h
+F: configs/uc100_defconfig
diff --git a/board/manroland/uc101/Kconfig b/board/manroland/uc101/Kconfig
new file mode 100644
index 0000000..07cfcc6
--- /dev/null
+++ b/board/manroland/uc101/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_UC101
+
+config SYS_BOARD
+ string
+ default "uc101"
+
+config SYS_VENDOR
+ string
+ default "manroland"
+
+config SYS_CONFIG_NAME
+ string
+ default "uc101"
+
+endif
diff --git a/board/manroland/uc101/MAINTAINERS b/board/manroland/uc101/MAINTAINERS
new file mode 100644
index 0000000..0fc7b85
--- /dev/null
+++ b/board/manroland/uc101/MAINTAINERS
@@ -0,0 +1,6 @@
+UC101 BOARD
+M: Heiko Schocher <hs@denx.de>
+S: Maintained
+F: board/manroland/uc101/
+F: include/configs/uc101.h
+F: configs/uc101_defconfig
diff --git a/board/matrix_vision/mergerbox/Kconfig b/board/matrix_vision/mergerbox/Kconfig
new file mode 100644
index 0000000..5b292dc
--- /dev/null
+++ b/board/matrix_vision/mergerbox/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MERGERBOX
+
+config SYS_BOARD
+ string
+ default "mergerbox"
+
+config SYS_VENDOR
+ string
+ default "matrix_vision"
+
+config SYS_CONFIG_NAME
+ string
+ default "MERGERBOX"
+
+endif
diff --git a/board/matrix_vision/mergerbox/MAINTAINERS b/board/matrix_vision/mergerbox/MAINTAINERS
new file mode 100644
index 0000000..22be981
--- /dev/null
+++ b/board/matrix_vision/mergerbox/MAINTAINERS
@@ -0,0 +1,6 @@
+MERGERBOX BOARD
+M: Andre Schwarz <andre.schwarz@matrix-vision.de>
+S: Orphan (since 2014-03)
+F: board/matrix_vision/mergerbox/
+F: include/configs/MERGERBOX.h
+F: configs/MERGERBOX_defconfig
diff --git a/board/matrix_vision/mvbc_p/Kconfig b/board/matrix_vision/mvbc_p/Kconfig
new file mode 100644
index 0000000..ab1fe65
--- /dev/null
+++ b/board/matrix_vision/mvbc_p/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MVBC_P
+
+config SYS_BOARD
+ string
+ default "mvbc_p"
+
+config SYS_VENDOR
+ string
+ default "matrix_vision"
+
+config SYS_CONFIG_NAME
+ string
+ default "MVBC_P"
+
+endif
diff --git a/board/matrix_vision/mvbc_p/MAINTAINERS b/board/matrix_vision/mvbc_p/MAINTAINERS
new file mode 100644
index 0000000..9e76b57
--- /dev/null
+++ b/board/matrix_vision/mvbc_p/MAINTAINERS
@@ -0,0 +1,6 @@
+MVBC_P BOARD
+M: Andre Schwarz <andre.schwarz@matrix-vision.de>
+S: Orphan (since 2014-03)
+F: board/matrix_vision/mvbc_p/
+F: include/configs/MVBC_P.h
+F: configs/MVBC_P_defconfig
diff --git a/board/matrix_vision/mvblm7/Kconfig b/board/matrix_vision/mvblm7/Kconfig
new file mode 100644
index 0000000..c5998b3
--- /dev/null
+++ b/board/matrix_vision/mvblm7/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MVBLM7
+
+config SYS_BOARD
+ string
+ default "mvblm7"
+
+config SYS_VENDOR
+ string
+ default "matrix_vision"
+
+config SYS_CONFIG_NAME
+ string
+ default "MVBLM7"
+
+endif
diff --git a/board/matrix_vision/mvblm7/MAINTAINERS b/board/matrix_vision/mvblm7/MAINTAINERS
new file mode 100644
index 0000000..4f7ca50
--- /dev/null
+++ b/board/matrix_vision/mvblm7/MAINTAINERS
@@ -0,0 +1,6 @@
+MVBLM7 BOARD
+M: Andre Schwarz <andre.schwarz@matrix-vision.de>
+S: Orphan (since 2014-03)
+F: board/matrix_vision/mvblm7/
+F: include/configs/MVBLM7.h
+F: configs/MVBLM7_defconfig
diff --git a/board/matrix_vision/mvblx/Kconfig b/board/matrix_vision/mvblx/Kconfig
new file mode 100644
index 0000000..d89c1e3
--- /dev/null
+++ b/board/matrix_vision/mvblx/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_OMAP3_MVBLX
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "mvblx"
+
+config SYS_VENDOR
+ string
+ default "matrix_vision"
+
+config SYS_SOC
+ string
+ default "omap3"
+
+config SYS_CONFIG_NAME
+ string
+ default "omap3_mvblx"
+
+endif
diff --git a/board/matrix_vision/mvblx/MAINTAINERS b/board/matrix_vision/mvblx/MAINTAINERS
new file mode 100644
index 0000000..2f9a153
--- /dev/null
+++ b/board/matrix_vision/mvblx/MAINTAINERS
@@ -0,0 +1,6 @@
+MVBLX BOARD
+M: Michael Jones <michael.jones@matrix-vision.de>
+S: Maintained
+F: board/matrix_vision/mvblx/
+F: include/configs/omap3_mvblx.h
+F: configs/omap3_mvblx_defconfig
diff --git a/board/matrix_vision/mvsmr/Kconfig b/board/matrix_vision/mvsmr/Kconfig
new file mode 100644
index 0000000..1627a36
--- /dev/null
+++ b/board/matrix_vision/mvsmr/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MVSMR
+
+config SYS_BOARD
+ string
+ default "mvsmr"
+
+config SYS_VENDOR
+ string
+ default "matrix_vision"
+
+config SYS_CONFIG_NAME
+ string
+ default "MVSMR"
+
+endif
diff --git a/board/matrix_vision/mvsmr/MAINTAINERS b/board/matrix_vision/mvsmr/MAINTAINERS
new file mode 100644
index 0000000..9659730
--- /dev/null
+++ b/board/matrix_vision/mvsmr/MAINTAINERS
@@ -0,0 +1,6 @@
+MVSMR BOARD
+M: Andre Schwarz <andre.schwarz@matrix-vision.de>
+S: Orphan (since 2014-03)
+F: board/matrix_vision/mvsmr/
+F: include/configs/MVSMR.h
+F: configs/MVSMR_defconfig
diff --git a/board/mcc200/Kconfig b/board/mcc200/Kconfig
new file mode 100644
index 0000000..c4e8cf1
--- /dev/null
+++ b/board/mcc200/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_MCC200
+
+config SYS_BOARD
+ string
+ default "mcc200"
+
+config SYS_CONFIG_NAME
+ string
+ default "mcc200"
+
+endif
diff --git a/board/mcc200/MAINTAINERS b/board/mcc200/MAINTAINERS
new file mode 100644
index 0000000..3d02bc6
--- /dev/null
+++ b/board/mcc200/MAINTAINERS
@@ -0,0 +1,17 @@
+MCC200 BOARD
+M: -
+S: Maintained
+F: board/mcc200/
+F: include/configs/mcc200.h
+F: configs/mcc200_defconfig
+F: configs/mcc200_COM12_defconfig
+F: configs/mcc200_COM12_highboot_defconfig
+F: configs/mcc200_COM12_highboot_SDRAM_defconfig
+F: configs/mcc200_COM12_SDRAM_defconfig
+F: configs/mcc200_highboot_defconfig
+F: configs/mcc200_highboot_SDRAM_defconfig
+F: configs/mcc200_SDRAM_defconfig
+F: configs/prs200_defconfig
+F: configs/prs200_DDR_defconfig
+F: configs/prs200_highboot_defconfig
+F: configs/prs200_highboot_DDR_defconfig
diff --git a/board/micronas/vct/Kconfig b/board/micronas/vct/Kconfig
new file mode 100644
index 0000000..76c5f7c
--- /dev/null
+++ b/board/micronas/vct/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_VCT
+
+config SYS_CPU
+ string
+ default "mips32"
+
+config SYS_BOARD
+ string
+ default "vct"
+
+config SYS_VENDOR
+ string
+ default "micronas"
+
+config SYS_CONFIG_NAME
+ string
+ default "vct"
+
+endif
diff --git a/board/micronas/vct/MAINTAINERS b/board/micronas/vct/MAINTAINERS
new file mode 100644
index 0000000..4b825d3
--- /dev/null
+++ b/board/micronas/vct/MAINTAINERS
@@ -0,0 +1,17 @@
+VCT BOARD
+M: -
+S: Maintained
+F: board/micronas/vct/
+F: include/configs/vct.h
+F: configs/vct_platinum_defconfig
+F: configs/vct_platinum_onenand_defconfig
+F: configs/vct_platinum_onenand_small_defconfig
+F: configs/vct_platinum_small_defconfig
+F: configs/vct_platinumavc_defconfig
+F: configs/vct_platinumavc_onenand_defconfig
+F: configs/vct_platinumavc_onenand_small_defconfig
+F: configs/vct_platinumavc_small_defconfig
+F: configs/vct_premium_defconfig
+F: configs/vct_premium_onenand_defconfig
+F: configs/vct_premium_onenand_small_defconfig
+F: configs/vct_premium_small_defconfig
diff --git a/board/mimc/mimc200/Kconfig b/board/mimc/mimc200/Kconfig
new file mode 100644
index 0000000..146c3b7
--- /dev/null
+++ b/board/mimc/mimc200/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_MIMC200
+
+config SYS_BOARD
+ string
+ default "mimc200"
+
+config SYS_VENDOR
+ string
+ default "mimc"
+
+config SYS_SOC
+ string
+ default "at32ap700x"
+
+config SYS_CONFIG_NAME
+ string
+ default "mimc200"
+
+endif
diff --git a/board/mimc/mimc200/MAINTAINERS b/board/mimc/mimc200/MAINTAINERS
new file mode 100644
index 0000000..6cb51dd
--- /dev/null
+++ b/board/mimc/mimc200/MAINTAINERS
@@ -0,0 +1,6 @@
+MIMC200 BOARD
+M: Mark Jackson <mpfj@mimc.co.uk>
+S: Maintained
+F: board/mimc/mimc200/
+F: include/configs/mimc200.h
+F: configs/mimc200_defconfig
diff --git a/board/miromico/hammerhead/Kconfig b/board/miromico/hammerhead/Kconfig
new file mode 100644
index 0000000..9795e55
--- /dev/null
+++ b/board/miromico/hammerhead/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_HAMMERHEAD
+
+config SYS_BOARD
+ string
+ default "hammerhead"
+
+config SYS_VENDOR
+ string
+ default "miromico"
+
+config SYS_SOC
+ string
+ default "at32ap700x"
+
+config SYS_CONFIG_NAME
+ string
+ default "hammerhead"
+
+endif
diff --git a/board/miromico/hammerhead/MAINTAINERS b/board/miromico/hammerhead/MAINTAINERS
new file mode 100644
index 0000000..a87ceee
--- /dev/null
+++ b/board/miromico/hammerhead/MAINTAINERS
@@ -0,0 +1,6 @@
+HAMMERHEAD BOARD
+M: Alex Raimondi <alex.raimondi@miromico.ch>
+S: Maintained
+F: board/miromico/hammerhead/
+F: include/configs/hammerhead.h
+F: configs/hammerhead_defconfig
diff --git a/board/mosaixtech/icon/Kconfig b/board/mosaixtech/icon/Kconfig
new file mode 100644
index 0000000..c439b14
--- /dev/null
+++ b/board/mosaixtech/icon/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_ICON
+
+config SYS_BOARD
+ string
+ default "icon"
+
+config SYS_VENDOR
+ string
+ default "mosaixtech"
+
+config SYS_CONFIG_NAME
+ string
+ default "icon"
+
+endif
diff --git a/board/mosaixtech/icon/MAINTAINERS b/board/mosaixtech/icon/MAINTAINERS
new file mode 100644
index 0000000..f3af072
--- /dev/null
+++ b/board/mosaixtech/icon/MAINTAINERS
@@ -0,0 +1,6 @@
+ICON BOARD
+M: Stefan Roese <sr@denx.de>
+S: Maintained
+F: board/mosaixtech/icon/
+F: include/configs/icon.h
+F: configs/icon_defconfig
diff --git a/board/motionpro/Kconfig b/board/motionpro/Kconfig
new file mode 100644
index 0000000..c8ee043
--- /dev/null
+++ b/board/motionpro/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_MOTIONPRO
+
+config SYS_BOARD
+ string
+ default "motionpro"
+
+config SYS_CONFIG_NAME
+ string
+ default "motionpro"
+
+endif
diff --git a/board/motionpro/MAINTAINERS b/board/motionpro/MAINTAINERS
new file mode 100644
index 0000000..10a97cc
--- /dev/null
+++ b/board/motionpro/MAINTAINERS
@@ -0,0 +1,6 @@
+MOTIONPRO BOARD
+M: -
+S: Maintained
+F: board/motionpro/
+F: include/configs/motionpro.h
+F: configs/motionpro_defconfig
diff --git a/board/mpc8308_p1m/Kconfig b/board/mpc8308_p1m/Kconfig
new file mode 100644
index 0000000..6e84bdf
--- /dev/null
+++ b/board/mpc8308_p1m/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_MPC8308_P1M
+
+config SYS_BOARD
+ string
+ default "mpc8308_p1m"
+
+config SYS_CONFIG_NAME
+ string
+ default "mpc8308_p1m"
+
+endif
diff --git a/board/mpc8308_p1m/MAINTAINERS b/board/mpc8308_p1m/MAINTAINERS
new file mode 100644
index 0000000..80d8de7
--- /dev/null
+++ b/board/mpc8308_p1m/MAINTAINERS
@@ -0,0 +1,6 @@
+MPC8308_P1M BOARD
+M: Ilya Yanok <yanok@emcraft.com>
+S: Maintained
+F: board/mpc8308_p1m/
+F: include/configs/mpc8308_p1m.h
+F: configs/mpc8308_p1m_defconfig
diff --git a/board/mpl/common/kbd.c b/board/mpl/common/kbd.c
index 1b5487b..99de2ca 100644
--- a/board/mpl/common/kbd.c
+++ b/board/mpl/common/kbd.c
@@ -204,8 +204,6 @@ int drv_isa_kbd_init (void)
memset (&kbddev, 0, sizeof(kbddev));
strcpy(kbddev.name, DEVNAME);
kbddev.flags = DEV_FLAGS_INPUT | DEV_FLAGS_SYSTEM;
- kbddev.putc = NULL ;
- kbddev.puts = NULL ;
kbddev.getc = kbd_getc ;
kbddev.tstc = kbd_testc ;
@@ -250,7 +248,7 @@ void kbd_put_queue(char data)
}
/* test if a character is in the queue */
-int kbd_testc(void)
+int kbd_testc(struct stdio_dev *dev)
{
if(in_pointer==out_pointer)
return(0); /* no data */
@@ -258,7 +256,7 @@ int kbd_testc(void)
return(1);
}
/* gets the character from the queue */
-int kbd_getc(void)
+int kbd_getc(struct stdio_dev *dev)
{
char c;
while(in_pointer==out_pointer);
diff --git a/board/mpl/common/kbd.h b/board/mpl/common/kbd.h
index 7b19b37..b549e20 100644
--- a/board/mpl/common/kbd.h
+++ b/board/mpl/common/kbd.h
@@ -8,8 +8,10 @@
#ifndef _KBD_H_
#define _KBD_H_
-extern int kbd_testc(void);
-extern int kbd_getc(void);
+struct stdio_dev;
+
+int kbd_testc(struct stdio_dev *sdev);
+int kbd_getc(struct stdio_dev *sdev);
extern void kbd_interrupt(void);
extern char *kbd_initialize(void);
diff --git a/board/mpl/mip405/Kconfig b/board/mpl/mip405/Kconfig
new file mode 100644
index 0000000..6705260
--- /dev/null
+++ b/board/mpl/mip405/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MIP405
+
+config SYS_BOARD
+ string
+ default "mip405"
+
+config SYS_VENDOR
+ string
+ default "mpl"
+
+config SYS_CONFIG_NAME
+ string
+ default "MIP405"
+
+endif
diff --git a/board/mpl/mip405/MAINTAINERS b/board/mpl/mip405/MAINTAINERS
new file mode 100644
index 0000000..b323e5a
--- /dev/null
+++ b/board/mpl/mip405/MAINTAINERS
@@ -0,0 +1,7 @@
+MIP405 BOARD
+M: Denis Peter <d.peter@mpl.ch>
+S: Maintained
+F: board/mpl/mip405/
+F: include/configs/MIP405.h
+F: configs/MIP405_defconfig
+F: configs/MIP405T_defconfig
diff --git a/board/mpl/pati/Kconfig b/board/mpl/pati/Kconfig
new file mode 100644
index 0000000..b902cbd
--- /dev/null
+++ b/board/mpl/pati/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_PATI
+
+config SYS_BOARD
+ string
+ default "pati"
+
+config SYS_VENDOR
+ string
+ default "mpl"
+
+config SYS_CONFIG_NAME
+ string
+ default "PATI"
+
+endif
diff --git a/board/mpl/pati/MAINTAINERS b/board/mpl/pati/MAINTAINERS
new file mode 100644
index 0000000..f7c1bd8
--- /dev/null
+++ b/board/mpl/pati/MAINTAINERS
@@ -0,0 +1,6 @@
+PATI BOARD
+M: -
+S: Maintained
+F: board/mpl/pati/
+F: include/configs/PATI.h
+F: configs/PATI_defconfig
diff --git a/board/mpl/pati/pati.c b/board/mpl/pati/pati.c
index 8ca9bb3..5d701a7 100644
--- a/board/mpl/pati/pati.c
+++ b/board/mpl/pati/pati.c
@@ -445,7 +445,7 @@ void pci_con_put_it(const char c)
PCICON_SET_REG(PCICON_DBELL_REG,PCIMSG_CON_DATA);
}
-void pci_con_putc(const char c)
+void pci_con_putc(struct stdio_dev *dev, const char c)
{
pci_con_put_it(c);
if(c == '\n')
@@ -453,7 +453,7 @@ void pci_con_putc(const char c)
}
-int pci_con_getc(void)
+int pci_con_getc(struct stdio_dev *dev)
{
int res;
int diff;
@@ -473,14 +473,14 @@ int pci_con_getc(void)
return res;
}
-int pci_con_tstc(void)
+int pci_con_tstc(struct stdio_dev *dev)
{
if(r_ptr==(volatile int)w_ptr)
return 0;
return 1;
}
-void pci_con_puts (const char *s)
+void pci_con_puts(struct stdio_dev *dev, const char *s)
{
while (*s) {
pci_con_putc(*s);
diff --git a/board/mpl/pip405/Kconfig b/board/mpl/pip405/Kconfig
new file mode 100644
index 0000000..1e1295b
--- /dev/null
+++ b/board/mpl/pip405/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_PIP405
+
+config SYS_BOARD
+ string
+ default "pip405"
+
+config SYS_VENDOR
+ string
+ default "mpl"
+
+config SYS_CONFIG_NAME
+ string
+ default "PIP405"
+
+endif
diff --git a/board/mpl/pip405/MAINTAINERS b/board/mpl/pip405/MAINTAINERS
new file mode 100644
index 0000000..9b3b974
--- /dev/null
+++ b/board/mpl/pip405/MAINTAINERS
@@ -0,0 +1,6 @@
+PIP405 BOARD
+M: Denis Peter <d.peter@mpl.ch>
+S: Maintained
+F: board/mpl/pip405/
+F: include/configs/PIP405.h
+F: configs/PIP405_defconfig
diff --git a/board/mpl/vcma9/Kconfig b/board/mpl/vcma9/Kconfig
new file mode 100644
index 0000000..91246be
--- /dev/null
+++ b/board/mpl/vcma9/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_VCMA9
+
+config SYS_CPU
+ string
+ default "arm920t"
+
+config SYS_BOARD
+ string
+ default "vcma9"
+
+config SYS_VENDOR
+ string
+ default "mpl"
+
+config SYS_SOC
+ string
+ default "s3c24x0"
+
+config SYS_CONFIG_NAME
+ string
+ default "VCMA9"
+
+endif
diff --git a/board/mpl/vcma9/MAINTAINERS b/board/mpl/vcma9/MAINTAINERS
new file mode 100644
index 0000000..3817436
--- /dev/null
+++ b/board/mpl/vcma9/MAINTAINERS
@@ -0,0 +1,6 @@
+VCMA9 BOARD
+M: David Müller <d.mueller@elsoft.ch>
+S: Maintained
+F: board/mpl/vcma9/
+F: include/configs/VCMA9.h
+F: configs/VCMA9_defconfig
diff --git a/board/mpr2/Kconfig b/board/mpr2/Kconfig
new file mode 100644
index 0000000..93bec59
--- /dev/null
+++ b/board/mpr2/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MPR2
+
+config SYS_CPU
+ string
+ default "sh3"
+
+config SYS_BOARD
+ string
+ default "mpr2"
+
+config SYS_CONFIG_NAME
+ string
+ default "mpr2"
+
+endif
diff --git a/board/mpr2/MAINTAINERS b/board/mpr2/MAINTAINERS
new file mode 100644
index 0000000..beedf8d
--- /dev/null
+++ b/board/mpr2/MAINTAINERS
@@ -0,0 +1,6 @@
+MPR2 BOARD
+M: Mark Jonas <mark.jonas@de.bosch.com>
+S: Maintained
+F: board/mpr2/
+F: include/configs/mpr2.h
+F: configs/mpr2_defconfig
diff --git a/board/ms7720se/Kconfig b/board/ms7720se/Kconfig
new file mode 100644
index 0000000..8873062
--- /dev/null
+++ b/board/ms7720se/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MS7720SE
+
+config SYS_CPU
+ string
+ default "sh3"
+
+config SYS_BOARD
+ string
+ default "ms7720se"
+
+config SYS_CONFIG_NAME
+ string
+ default "ms7720se"
+
+endif
diff --git a/board/ms7720se/MAINTAINERS b/board/ms7720se/MAINTAINERS
new file mode 100644
index 0000000..96a80f4
--- /dev/null
+++ b/board/ms7720se/MAINTAINERS
@@ -0,0 +1,6 @@
+MS7720SE BOARD
+M: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
+S: Maintained
+F: board/ms7720se/
+F: include/configs/ms7720se.h
+F: configs/ms7720se_defconfig
diff --git a/board/ms7722se/Kconfig b/board/ms7722se/Kconfig
new file mode 100644
index 0000000..c5b5b4f
--- /dev/null
+++ b/board/ms7722se/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MS7722SE
+
+config SYS_CPU
+ string
+ default "sh4"
+
+config SYS_BOARD
+ string
+ default "ms7722se"
+
+config SYS_CONFIG_NAME
+ string
+ default "ms7722se"
+
+endif
diff --git a/board/ms7722se/MAINTAINERS b/board/ms7722se/MAINTAINERS
new file mode 100644
index 0000000..61614ba
--- /dev/null
+++ b/board/ms7722se/MAINTAINERS
@@ -0,0 +1,7 @@
+MS7722SE BOARD
+M: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+M: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+S: Maintained
+F: board/ms7722se/
+F: include/configs/ms7722se.h
+F: configs/ms7722se_defconfig
diff --git a/board/ms7750se/Kconfig b/board/ms7750se/Kconfig
new file mode 100644
index 0000000..0c9d88f
--- /dev/null
+++ b/board/ms7750se/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MS7750SE
+
+config SYS_CPU
+ string
+ default "sh4"
+
+config SYS_BOARD
+ string
+ default "ms7750se"
+
+config SYS_CONFIG_NAME
+ string
+ default "ms7750se"
+
+endif
diff --git a/board/ms7750se/MAINTAINERS b/board/ms7750se/MAINTAINERS
new file mode 100644
index 0000000..e23a532
--- /dev/null
+++ b/board/ms7750se/MAINTAINERS
@@ -0,0 +1,7 @@
+MS7750SE BOARD
+M: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+M: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+S: Maintained
+F: board/ms7750se/
+F: include/configs/ms7750se.h
+F: configs/ms7750se_defconfig
diff --git a/board/muas3001/Kconfig b/board/muas3001/Kconfig
new file mode 100644
index 0000000..982d32f
--- /dev/null
+++ b/board/muas3001/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_MUAS3001
+
+config SYS_BOARD
+ string
+ default "muas3001"
+
+config SYS_CONFIG_NAME
+ string
+ default "muas3001"
+
+endif
diff --git a/board/muas3001/MAINTAINERS b/board/muas3001/MAINTAINERS
new file mode 100644
index 0000000..cfb5983
--- /dev/null
+++ b/board/muas3001/MAINTAINERS
@@ -0,0 +1,7 @@
+MUAS3001 BOARD
+M: Heiko Schocher <hs@denx.de>
+S: Maintained
+F: board/muas3001/
+F: include/configs/muas3001.h
+F: configs/muas3001_defconfig
+F: configs/muas3001_dev_defconfig
diff --git a/board/munices/Kconfig b/board/munices/Kconfig
new file mode 100644
index 0000000..d242d56
--- /dev/null
+++ b/board/munices/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_MUNICES
+
+config SYS_BOARD
+ string
+ default "munices"
+
+config SYS_CONFIG_NAME
+ string
+ default "munices"
+
+endif
diff --git a/board/munices/MAINTAINERS b/board/munices/MAINTAINERS
new file mode 100644
index 0000000..b8f5761
--- /dev/null
+++ b/board/munices/MAINTAINERS
@@ -0,0 +1,6 @@
+MUNICES BOARD
+M: -
+S: Maintained
+F: board/munices/
+F: include/configs/munices.h
+F: configs/munices_defconfig
diff --git a/board/musenki/Kconfig b/board/musenki/Kconfig
new file mode 100644
index 0000000..ea33d16
--- /dev/null
+++ b/board/musenki/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_MUSENKI
+
+config SYS_BOARD
+ string
+ default "musenki"
+
+config SYS_CONFIG_NAME
+ string
+ default "MUSENKI"
+
+endif
diff --git a/board/musenki/MAINTAINERS b/board/musenki/MAINTAINERS
new file mode 100644
index 0000000..03a1fe7
--- /dev/null
+++ b/board/musenki/MAINTAINERS
@@ -0,0 +1,6 @@
+MUSENKI BOARD
+M: Jim Thompson <jim@musenki.com>
+S: Orphan (since 2014-04)
+F: board/musenki/
+F: include/configs/MUSENKI.h
+F: configs/MUSENKI_defconfig
diff --git a/board/mvblue/Kconfig b/board/mvblue/Kconfig
new file mode 100644
index 0000000..a70bcbe
--- /dev/null
+++ b/board/mvblue/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_MVBLUE
+
+config SYS_BOARD
+ string
+ default "mvblue"
+
+config SYS_CONFIG_NAME
+ string
+ default "MVBLUE"
+
+endif
diff --git a/board/mvblue/MAINTAINERS b/board/mvblue/MAINTAINERS
new file mode 100644
index 0000000..a809ba5
--- /dev/null
+++ b/board/mvblue/MAINTAINERS
@@ -0,0 +1,6 @@
+MVBLUE BOARD
+M: -
+S: Maintained
+F: board/mvblue/
+F: include/configs/MVBLUE.h
+F: configs/MVBLUE_defconfig
diff --git a/board/netvia/Kconfig b/board/netvia/Kconfig
new file mode 100644
index 0000000..d177b70
--- /dev/null
+++ b/board/netvia/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_NETVIA
+
+config SYS_BOARD
+ string
+ default "netvia"
+
+config SYS_CONFIG_NAME
+ string
+ default "NETVIA"
+
+endif
diff --git a/board/netvia/MAINTAINERS b/board/netvia/MAINTAINERS
new file mode 100644
index 0000000..0313058
--- /dev/null
+++ b/board/netvia/MAINTAINERS
@@ -0,0 +1,7 @@
+NETVIA BOARD
+M: Pantelis Antoniou <panto@intracom.gr>
+S: Maintained
+F: board/netvia/
+F: include/configs/NETVIA.h
+F: configs/NETVIA_defconfig
+F: configs/NETVIA_V2_defconfig
diff --git a/board/nokia/rx51/Kconfig b/board/nokia/rx51/Kconfig
new file mode 100644
index 0000000..41d0daa
--- /dev/null
+++ b/board/nokia/rx51/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_NOKIA_RX51
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "rx51"
+
+config SYS_VENDOR
+ string
+ default "nokia"
+
+config SYS_SOC
+ string
+ default "omap3"
+
+config SYS_CONFIG_NAME
+ string
+ default "nokia_rx51"
+
+endif
diff --git a/board/nokia/rx51/MAINTAINERS b/board/nokia/rx51/MAINTAINERS
new file mode 100644
index 0000000..8bdddc1
--- /dev/null
+++ b/board/nokia/rx51/MAINTAINERS
@@ -0,0 +1,6 @@
+RX51 BOARD
+M: Pali Rohár <pali.rohar@gmail.com>
+S: Maintained
+F: board/nokia/rx51/
+F: include/configs/nokia_rx51.h
+F: configs/nokia_rx51_defconfig
diff --git a/board/nokia/rx51/rx51.c b/board/nokia/rx51/rx51.c
index 3e419ef..c2e07db 100644
--- a/board/nokia/rx51/rx51.c
+++ b/board/nokia/rx51/rx51.c
@@ -585,7 +585,7 @@ static void rx51_kp_fill(u8 k, u8 mods)
* Routine: rx51_kp_tstc
* Description: Test if key was pressed (from buffer).
*/
-int rx51_kp_tstc(void)
+int rx51_kp_tstc(struct stdio_dev *sdev)
{
u8 c, r, dk, i;
u8 intr;
@@ -641,10 +641,10 @@ int rx51_kp_tstc(void)
* Routine: rx51_kp_getc
* Description: Get last pressed key (from buffer).
*/
-int rx51_kp_getc(void)
+int rx51_kp_getc(struct stdio_dev *sdev)
{
keybuf_head %= KEYBUF_SIZE;
- while (!rx51_kp_tstc())
+ while (!rx51_kp_tstc(sdev))
WATCHDOG_RESET();
return keybuf[keybuf_head++];
}
diff --git a/board/nvidia/beaver/Kconfig b/board/nvidia/beaver/Kconfig
new file mode 100644
index 0000000..f052676
--- /dev/null
+++ b/board/nvidia/beaver/Kconfig
@@ -0,0 +1,24 @@
+if TARGET_BEAVER
+
+config SYS_CPU
+ string
+ default "arm720t" if SPL_BUILD
+ default "armv7" if !SPL_BUILD
+
+config SYS_BOARD
+ string
+ default "beaver"
+
+config SYS_VENDOR
+ string
+ default "nvidia"
+
+config SYS_SOC
+ string
+ default "tegra30"
+
+config SYS_CONFIG_NAME
+ string
+ default "beaver"
+
+endif
diff --git a/board/nvidia/beaver/MAINTAINERS b/board/nvidia/beaver/MAINTAINERS
new file mode 100644
index 0000000..26bcacc
--- /dev/null
+++ b/board/nvidia/beaver/MAINTAINERS
@@ -0,0 +1,7 @@
+BEAVER BOARD
+M: Tom Warren <twarren@nvidia.com>
+M: Stephen Warren <swarren@nvidia.com>
+S: Maintained
+F: board/nvidia/beaver/
+F: include/configs/beaver.h
+F: configs/beaver_defconfig
diff --git a/board/nvidia/cardhu/Kconfig b/board/nvidia/cardhu/Kconfig
new file mode 100644
index 0000000..9853114
--- /dev/null
+++ b/board/nvidia/cardhu/Kconfig
@@ -0,0 +1,24 @@
+if TARGET_CARDHU
+
+config SYS_CPU
+ string
+ default "arm720t" if SPL_BUILD
+ default "armv7" if !SPL_BUILD
+
+config SYS_BOARD
+ string
+ default "cardhu"
+
+config SYS_VENDOR
+ string
+ default "nvidia"
+
+config SYS_SOC
+ string
+ default "tegra30"
+
+config SYS_CONFIG_NAME
+ string
+ default "cardhu"
+
+endif
diff --git a/board/nvidia/cardhu/MAINTAINERS b/board/nvidia/cardhu/MAINTAINERS
new file mode 100644
index 0000000..d3c3e36
--- /dev/null
+++ b/board/nvidia/cardhu/MAINTAINERS
@@ -0,0 +1,6 @@
+CARDHU BOARD
+M: Tom Warren <twarren@nvidia.com>
+S: Maintained
+F: board/nvidia/cardhu/
+F: include/configs/cardhu.h
+F: configs/cardhu_defconfig
diff --git a/board/nvidia/dalmore/Kconfig b/board/nvidia/dalmore/Kconfig
new file mode 100644
index 0000000..33b78db
--- /dev/null
+++ b/board/nvidia/dalmore/Kconfig
@@ -0,0 +1,24 @@
+if TARGET_DALMORE
+
+config SYS_CPU
+ string
+ default "arm720t" if SPL_BUILD
+ default "armv7" if !SPL_BUILD
+
+config SYS_BOARD
+ string
+ default "dalmore"
+
+config SYS_VENDOR
+ string
+ default "nvidia"
+
+config SYS_SOC
+ string
+ default "tegra114"
+
+config SYS_CONFIG_NAME
+ string
+ default "dalmore"
+
+endif
diff --git a/board/nvidia/dalmore/MAINTAINERS b/board/nvidia/dalmore/MAINTAINERS
new file mode 100644
index 0000000..fe86375
--- /dev/null
+++ b/board/nvidia/dalmore/MAINTAINERS
@@ -0,0 +1,6 @@
+DALMORE BOARD
+M: Tom Warren <twarren@nvidia.com>
+S: Maintained
+F: board/nvidia/dalmore/
+F: include/configs/dalmore.h
+F: configs/dalmore_defconfig
diff --git a/board/nvidia/harmony/Kconfig b/board/nvidia/harmony/Kconfig
new file mode 100644
index 0000000..2a3bde4
--- /dev/null
+++ b/board/nvidia/harmony/Kconfig
@@ -0,0 +1,24 @@
+if TARGET_HARMONY
+
+config SYS_CPU
+ string
+ default "arm720t" if SPL_BUILD
+ default "armv7" if !SPL_BUILD
+
+config SYS_BOARD
+ string
+ default "harmony"
+
+config SYS_VENDOR
+ string
+ default "nvidia"
+
+config SYS_SOC
+ string
+ default "tegra20"
+
+config SYS_CONFIG_NAME
+ string
+ default "harmony"
+
+endif
diff --git a/board/nvidia/harmony/MAINTAINERS b/board/nvidia/harmony/MAINTAINERS
new file mode 100644
index 0000000..f3508ed
--- /dev/null
+++ b/board/nvidia/harmony/MAINTAINERS
@@ -0,0 +1,6 @@
+HARMONY BOARD
+M: Tom Warren <twarren@nvidia.com>
+S: Maintained
+F: board/nvidia/harmony/
+F: include/configs/harmony.h
+F: configs/harmony_defconfig
diff --git a/board/nvidia/jetson-tk1/Kconfig b/board/nvidia/jetson-tk1/Kconfig
new file mode 100644
index 0000000..22b4c69
--- /dev/null
+++ b/board/nvidia/jetson-tk1/Kconfig
@@ -0,0 +1,24 @@
+if TARGET_JETSON_TK1
+
+config SYS_CPU
+ string
+ default "arm720t" if SPL_BUILD
+ default "armv7" if !SPL_BUILD
+
+config SYS_BOARD
+ string
+ default "jetson-tk1"
+
+config SYS_VENDOR
+ string
+ default "nvidia"
+
+config SYS_SOC
+ string
+ default "tegra124"
+
+config SYS_CONFIG_NAME
+ string
+ default "jetson-tk1"
+
+endif
diff --git a/board/nvidia/jetson-tk1/MAINTAINERS b/board/nvidia/jetson-tk1/MAINTAINERS
new file mode 100644
index 0000000..a5c687d
--- /dev/null
+++ b/board/nvidia/jetson-tk1/MAINTAINERS
@@ -0,0 +1,6 @@
+JETSON-TK1 BOARD
+M: Stephen Warren <swarren@nvidia.com>
+S: Maintained
+F: board/nvidia/jetson-tk1/
+F: include/configs/jetson-tk1.h
+F: configs/jetson-tk1_defconfig
diff --git a/board/nvidia/seaboard/Kconfig b/board/nvidia/seaboard/Kconfig
new file mode 100644
index 0000000..39c65b5
--- /dev/null
+++ b/board/nvidia/seaboard/Kconfig
@@ -0,0 +1,24 @@
+if TARGET_SEABOARD
+
+config SYS_CPU
+ string
+ default "arm720t" if SPL_BUILD
+ default "armv7" if !SPL_BUILD
+
+config SYS_BOARD
+ string
+ default "seaboard"
+
+config SYS_VENDOR
+ string
+ default "nvidia"
+
+config SYS_SOC
+ string
+ default "tegra20"
+
+config SYS_CONFIG_NAME
+ string
+ default "seaboard"
+
+endif
diff --git a/board/nvidia/seaboard/MAINTAINERS b/board/nvidia/seaboard/MAINTAINERS
new file mode 100644
index 0000000..7926ca1
--- /dev/null
+++ b/board/nvidia/seaboard/MAINTAINERS
@@ -0,0 +1,6 @@
+SEABOARD BOARD
+M: Tom Warren <twarren@nvidia.com>
+S: Maintained
+F: board/nvidia/seaboard/
+F: include/configs/seaboard.h
+F: configs/seaboard_defconfig
diff --git a/board/nvidia/venice2/Kconfig b/board/nvidia/venice2/Kconfig
new file mode 100644
index 0000000..84a7160
--- /dev/null
+++ b/board/nvidia/venice2/Kconfig
@@ -0,0 +1,24 @@
+if TARGET_VENICE2
+
+config SYS_CPU
+ string
+ default "arm720t" if SPL_BUILD
+ default "armv7" if !SPL_BUILD
+
+config SYS_BOARD
+ string
+ default "venice2"
+
+config SYS_VENDOR
+ string
+ default "nvidia"
+
+config SYS_SOC
+ string
+ default "tegra124"
+
+config SYS_CONFIG_NAME
+ string
+ default "venice2"
+
+endif
diff --git a/board/nvidia/venice2/MAINTAINERS b/board/nvidia/venice2/MAINTAINERS
new file mode 100644
index 0000000..221df65
--- /dev/null
+++ b/board/nvidia/venice2/MAINTAINERS
@@ -0,0 +1,6 @@
+VENICE2 BOARD
+M: Tom Warren <twarren@nvidia.com>
+S: Maintained
+F: board/nvidia/venice2/
+F: include/configs/venice2.h
+F: configs/venice2_defconfig
diff --git a/board/nvidia/ventana/Kconfig b/board/nvidia/ventana/Kconfig
new file mode 100644
index 0000000..59e85c4
--- /dev/null
+++ b/board/nvidia/ventana/Kconfig
@@ -0,0 +1,24 @@
+if TARGET_VENTANA
+
+config SYS_CPU
+ string
+ default "arm720t" if SPL_BUILD
+ default "armv7" if !SPL_BUILD
+
+config SYS_BOARD
+ string
+ default "ventana"
+
+config SYS_VENDOR
+ string
+ default "nvidia"
+
+config SYS_SOC
+ string
+ default "tegra20"
+
+config SYS_CONFIG_NAME
+ string
+ default "ventana"
+
+endif
diff --git a/board/nvidia/ventana/MAINTAINERS b/board/nvidia/ventana/MAINTAINERS
new file mode 100644
index 0000000..285b84d
--- /dev/null
+++ b/board/nvidia/ventana/MAINTAINERS
@@ -0,0 +1,7 @@
+VENTANA BOARD
+M: Tom Warren <twarren@nvidia.com>
+M: Stephen Warren <swarren@nvidia.com>
+S: Maintained
+F: board/nvidia/ventana/
+F: include/configs/ventana.h
+F: configs/ventana_defconfig
diff --git a/board/nvidia/whistler/Kconfig b/board/nvidia/whistler/Kconfig
new file mode 100644
index 0000000..f025413
--- /dev/null
+++ b/board/nvidia/whistler/Kconfig
@@ -0,0 +1,24 @@
+if TARGET_WHISTLER
+
+config SYS_CPU
+ string
+ default "arm720t" if SPL_BUILD
+ default "armv7" if !SPL_BUILD
+
+config SYS_BOARD
+ string
+ default "whistler"
+
+config SYS_VENDOR
+ string
+ default "nvidia"
+
+config SYS_SOC
+ string
+ default "tegra20"
+
+config SYS_CONFIG_NAME
+ string
+ default "whistler"
+
+endif
diff --git a/board/nvidia/whistler/MAINTAINERS b/board/nvidia/whistler/MAINTAINERS
new file mode 100644
index 0000000..66e2c8d
--- /dev/null
+++ b/board/nvidia/whistler/MAINTAINERS
@@ -0,0 +1,7 @@
+WHISTLER BOARD
+M: Tom Warren <twarren@nvidia.com>
+M: Stephen Warren <swarren@nvidia.com>
+S: Maintained
+F: board/nvidia/whistler/
+F: include/configs/whistler.h
+F: configs/whistler_defconfig
diff --git a/board/olimex/mx23_olinuxino/Kconfig b/board/olimex/mx23_olinuxino/Kconfig
new file mode 100644
index 0000000..07b3284
--- /dev/null
+++ b/board/olimex/mx23_olinuxino/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_MX23_OLINUXINO
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "mx23_olinuxino"
+
+config SYS_VENDOR
+ string
+ default "olimex"
+
+config SYS_SOC
+ string
+ default "mxs"
+
+config SYS_CONFIG_NAME
+ string
+ default "mx23_olinuxino"
+
+endif
diff --git a/board/olimex/mx23_olinuxino/MAINTAINERS b/board/olimex/mx23_olinuxino/MAINTAINERS
new file mode 100644
index 0000000..25f4a10
--- /dev/null
+++ b/board/olimex/mx23_olinuxino/MAINTAINERS
@@ -0,0 +1,6 @@
+MX23_OLINUXINO BOARD
+M: Marek Vasut <marek.vasut@gmail.com>
+S: Maintained
+F: board/olimex/mx23_olinuxino/
+F: include/configs/mx23_olinuxino.h
+F: configs/mx23_olinuxino_defconfig
diff --git a/board/omicron/calimain/Kconfig b/board/omicron/calimain/Kconfig
new file mode 100644
index 0000000..923af8a
--- /dev/null
+++ b/board/omicron/calimain/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_CALIMAIN
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "calimain"
+
+config SYS_VENDOR
+ string
+ default "omicron"
+
+config SYS_SOC
+ string
+ default "davinci"
+
+config SYS_CONFIG_NAME
+ string
+ default "calimain"
+
+endif
diff --git a/board/omicron/calimain/MAINTAINERS b/board/omicron/calimain/MAINTAINERS
new file mode 100644
index 0000000..f6e37a2
--- /dev/null
+++ b/board/omicron/calimain/MAINTAINERS
@@ -0,0 +1,7 @@
+CALIMAIN BOARD
+M: Manfred Rudigier <manfred.rudigier@omicron.at>
+M: Christian Riesch <christian.riesch@omicron.at>
+S: Maintained
+F: board/omicron/calimain/
+F: include/configs/calimain.h
+F: configs/calimain_defconfig
diff --git a/board/openrisc/openrisc-generic/Kconfig b/board/openrisc/openrisc-generic/Kconfig
new file mode 100644
index 0000000..71a8246
--- /dev/null
+++ b/board/openrisc/openrisc-generic/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_OPENRISC_GENERIC
+
+config SYS_BOARD
+ string
+ default "openrisc-generic"
+
+config SYS_VENDOR
+ string
+ default "openrisc"
+
+config SYS_CONFIG_NAME
+ string
+ default "openrisc-generic"
+
+endif
diff --git a/board/openrisc/openrisc-generic/MAINTAINERS b/board/openrisc/openrisc-generic/MAINTAINERS
new file mode 100644
index 0000000..c8dbc74
--- /dev/null
+++ b/board/openrisc/openrisc-generic/MAINTAINERS
@@ -0,0 +1,6 @@
+OPENRISC-GENERIC BOARD
+M: Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>
+S: Maintained
+F: board/openrisc/openrisc-generic/
+F: include/configs/openrisc-generic.h
+F: configs/openrisc-generic_defconfig
diff --git a/board/overo/Kconfig b/board/overo/Kconfig
new file mode 100644
index 0000000..1d4a261
--- /dev/null
+++ b/board/overo/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_OMAP3_OVERO
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "overo"
+
+config SYS_SOC
+ string
+ default "omap3"
+
+config SYS_CONFIG_NAME
+ string
+ default "omap3_overo"
+
+endif
diff --git a/board/overo/MAINTAINERS b/board/overo/MAINTAINERS
new file mode 100644
index 0000000..8f089e8
--- /dev/null
+++ b/board/overo/MAINTAINERS
@@ -0,0 +1,6 @@
+OVERO BOARD
+M: Steve Sakoman <sakoman@gmail.com>
+S: Maintained
+F: board/overo/
+F: include/configs/omap3_overo.h
+F: configs/omap3_overo_defconfig
diff --git a/board/palmld/Kconfig b/board/palmld/Kconfig
new file mode 100644
index 0000000..bed99b6
--- /dev/null
+++ b/board/palmld/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_PALMLD
+
+config SYS_CPU
+ string
+ default "pxa"
+
+config SYS_BOARD
+ string
+ default "palmld"
+
+config SYS_CONFIG_NAME
+ string
+ default "palmld"
+
+endif
diff --git a/board/palmld/MAINTAINERS b/board/palmld/MAINTAINERS
new file mode 100644
index 0000000..7d21b7b
--- /dev/null
+++ b/board/palmld/MAINTAINERS
@@ -0,0 +1,6 @@
+PALMLD BOARD
+M: Marek Vasut <marek.vasut@gmail.com>
+S: Maintained
+F: board/palmld/
+F: include/configs/palmld.h
+F: configs/palmld_defconfig
diff --git a/board/palmtc/Kconfig b/board/palmtc/Kconfig
new file mode 100644
index 0000000..86fb63b
--- /dev/null
+++ b/board/palmtc/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_PALMTC
+
+config SYS_CPU
+ string
+ default "pxa"
+
+config SYS_BOARD
+ string
+ default "palmtc"
+
+config SYS_CONFIG_NAME
+ string
+ default "palmtc"
+
+endif
diff --git a/board/palmtc/MAINTAINERS b/board/palmtc/MAINTAINERS
new file mode 100644
index 0000000..57b6a22
--- /dev/null
+++ b/board/palmtc/MAINTAINERS
@@ -0,0 +1,6 @@
+PALMTC BOARD
+M: Marek Vasut <marek.vasut@gmail.com>
+S: Maintained
+F: board/palmtc/
+F: include/configs/palmtc.h
+F: configs/palmtc_defconfig
diff --git a/board/palmtreo680/Kconfig b/board/palmtreo680/Kconfig
new file mode 100644
index 0000000..4df6c63
--- /dev/null
+++ b/board/palmtreo680/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_PALMTREO680
+
+config SYS_CPU
+ string
+ default "pxa"
+
+config SYS_BOARD
+ string
+ default "palmtreo680"
+
+config SYS_CONFIG_NAME
+ string
+ default "palmtreo680"
+
+endif
diff --git a/board/palmtreo680/MAINTAINERS b/board/palmtreo680/MAINTAINERS
new file mode 100644
index 0000000..bdc034e
--- /dev/null
+++ b/board/palmtreo680/MAINTAINERS
@@ -0,0 +1,6 @@
+PALMTREO680 BOARD
+M: Mike Dunn <mikedunn@newsguy.com>
+S: Orphan (since 2014-06)
+F: board/palmtreo680/
+F: include/configs/palmtreo680.h
+F: configs/palmtreo680_defconfig
diff --git a/board/pandora/Kconfig b/board/pandora/Kconfig
new file mode 100644
index 0000000..a36c0c8
--- /dev/null
+++ b/board/pandora/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_OMAP3_PANDORA
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "pandora"
+
+config SYS_SOC
+ string
+ default "omap3"
+
+config SYS_CONFIG_NAME
+ string
+ default "omap3_pandora"
+
+endif
diff --git a/board/pandora/MAINTAINERS b/board/pandora/MAINTAINERS
new file mode 100644
index 0000000..e123517
--- /dev/null
+++ b/board/pandora/MAINTAINERS
@@ -0,0 +1,6 @@
+PANDORA BOARD
+M: Grazvydas Ignotas <notasas@gmail.com>
+S: Maintained
+F: board/pandora/
+F: include/configs/omap3_pandora.h
+F: configs/omap3_pandora_defconfig
diff --git a/board/pb1x00/Kconfig b/board/pb1x00/Kconfig
new file mode 100644
index 0000000..0ad3f23
--- /dev/null
+++ b/board/pb1x00/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_PB1X00
+
+config SYS_CPU
+ string
+ default "mips32"
+
+config SYS_BOARD
+ string
+ default "pb1x00"
+
+config SYS_SOC
+ string
+ default "au1x00"
+
+config SYS_CONFIG_NAME
+ string
+ default "pb1x00"
+
+endif
diff --git a/board/pb1x00/MAINTAINERS b/board/pb1x00/MAINTAINERS
new file mode 100644
index 0000000..6c5c2bb
--- /dev/null
+++ b/board/pb1x00/MAINTAINERS
@@ -0,0 +1,6 @@
+PB1X00 BOARD
+M: -
+S: Maintained
+F: board/pb1x00/
+F: include/configs/pb1x00.h
+F: configs/pb1000_defconfig
diff --git a/board/pcs440ep/Kconfig b/board/pcs440ep/Kconfig
new file mode 100644
index 0000000..7e69fd3
--- /dev/null
+++ b/board/pcs440ep/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_PCS440EP
+
+config SYS_BOARD
+ string
+ default "pcs440ep"
+
+config SYS_CONFIG_NAME
+ string
+ default "pcs440ep"
+
+endif
diff --git a/board/pcs440ep/MAINTAINERS b/board/pcs440ep/MAINTAINERS
new file mode 100644
index 0000000..6eccc85
--- /dev/null
+++ b/board/pcs440ep/MAINTAINERS
@@ -0,0 +1,6 @@
+PCS440EP BOARD
+M: Stefan Roese <sr@denx.de>
+S: Maintained
+F: board/pcs440ep/
+F: include/configs/pcs440ep.h
+F: configs/pcs440ep_defconfig
diff --git a/board/pdm360ng/Kconfig b/board/pdm360ng/Kconfig
new file mode 100644
index 0000000..e7a8985
--- /dev/null
+++ b/board/pdm360ng/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_PDM360NG
+
+config SYS_BOARD
+ string
+ default "pdm360ng"
+
+config SYS_CONFIG_NAME
+ string
+ default "pdm360ng"
+
+endif
diff --git a/board/pdm360ng/MAINTAINERS b/board/pdm360ng/MAINTAINERS
new file mode 100644
index 0000000..5c99f59
--- /dev/null
+++ b/board/pdm360ng/MAINTAINERS
@@ -0,0 +1,6 @@
+PDM360NG BOARD
+M: Michael Weiss <michael.weiss@ifm.com>
+S: Maintained
+F: board/pdm360ng/
+F: include/configs/pdm360ng.h
+F: configs/pdm360ng_defconfig
diff --git a/board/phytec/pcm030/Kconfig b/board/phytec/pcm030/Kconfig
new file mode 100644
index 0000000..6eea7e8
--- /dev/null
+++ b/board/phytec/pcm030/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_PCM030
+
+config SYS_BOARD
+ string
+ default "pcm030"
+
+config SYS_VENDOR
+ string
+ default "phytec"
+
+config SYS_CONFIG_NAME
+ string
+ default "pcm030"
+
+endif
diff --git a/board/phytec/pcm030/MAINTAINERS b/board/phytec/pcm030/MAINTAINERS
new file mode 100644
index 0000000..4e2ab0d
--- /dev/null
+++ b/board/phytec/pcm030/MAINTAINERS
@@ -0,0 +1,7 @@
+PCM030 BOARD
+M: Jon Smirl <jonsmirl@gmail.com>
+S: Maintained
+F: board/phytec/pcm030/
+F: include/configs/pcm030.h
+F: configs/pcm030_defconfig
+F: configs/pcm030_LOWBOOT_defconfig
diff --git a/board/phytec/pcm051/Kconfig b/board/phytec/pcm051/Kconfig
new file mode 100644
index 0000000..e710445
--- /dev/null
+++ b/board/phytec/pcm051/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_PCM051
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "pcm051"
+
+config SYS_VENDOR
+ string
+ default "phytec"
+
+config SYS_SOC
+ string
+ default "am33xx"
+
+config SYS_CONFIG_NAME
+ string
+ default "pcm051"
+
+endif
diff --git a/board/phytec/pcm051/MAINTAINERS b/board/phytec/pcm051/MAINTAINERS
new file mode 100644
index 0000000..18ea636
--- /dev/null
+++ b/board/phytec/pcm051/MAINTAINERS
@@ -0,0 +1,7 @@
+PCM051 BOARD
+M: Lars Poeschel <poeschel@lemonage.de>
+S: Maintained
+F: board/phytec/pcm051/
+F: include/configs/pcm051.h
+F: configs/pcm051_rev1_defconfig
+F: configs/pcm051_rev3_defconfig
diff --git a/board/pm520/Kconfig b/board/pm520/Kconfig
new file mode 100644
index 0000000..d32f857
--- /dev/null
+++ b/board/pm520/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_PM520
+
+config SYS_BOARD
+ string
+ default "pm520"
+
+config SYS_CONFIG_NAME
+ string
+ default "PM520"
+
+endif
diff --git a/board/pm520/MAINTAINERS b/board/pm520/MAINTAINERS
new file mode 100644
index 0000000..7b255bc
--- /dev/null
+++ b/board/pm520/MAINTAINERS
@@ -0,0 +1,9 @@
+PM520 BOARD
+M: Josef Wagner <Wagner@Microsys.de>
+S: Maintained
+F: board/pm520/
+F: include/configs/PM520.h
+F: configs/PM520_defconfig
+F: configs/PM520_DDR_defconfig
+F: configs/PM520_ROMBOOT_defconfig
+F: configs/PM520_ROMBOOT_DDR_defconfig
diff --git a/board/pm826/Kconfig b/board/pm826/Kconfig
new file mode 100644
index 0000000..f1de16a
--- /dev/null
+++ b/board/pm826/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_PM826
+
+config SYS_BOARD
+ string
+ default "pm826"
+
+config SYS_CONFIG_NAME
+ string
+ default "PM826"
+
+endif
diff --git a/board/pm826/MAINTAINERS b/board/pm826/MAINTAINERS
new file mode 100644
index 0000000..41df4c9
--- /dev/null
+++ b/board/pm826/MAINTAINERS
@@ -0,0 +1,13 @@
+PM826 BOARD
+M: Wolfgang Denk <wd@denx.de>
+S: Maintained
+F: board/pm826/
+F: include/configs/PM826.h
+F: configs/PM825_defconfig
+F: configs/PM825_BIGFLASH_defconfig
+F: configs/PM825_ROMBOOT_defconfig
+F: configs/PM825_ROMBOOT_BIGFLASH_defconfig
+F: configs/PM826_defconfig
+F: configs/PM826_BIGFLASH_defconfig
+F: configs/PM826_ROMBOOT_defconfig
+F: configs/PM826_ROMBOOT_BIGFLASH_defconfig
diff --git a/board/pm828/Kconfig b/board/pm828/Kconfig
new file mode 100644
index 0000000..20f6b34
--- /dev/null
+++ b/board/pm828/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_PM828
+
+config SYS_BOARD
+ string
+ default "pm828"
+
+config SYS_CONFIG_NAME
+ string
+ default "PM828"
+
+endif
diff --git a/board/pm828/MAINTAINERS b/board/pm828/MAINTAINERS
new file mode 100644
index 0000000..767a84d
--- /dev/null
+++ b/board/pm828/MAINTAINERS
@@ -0,0 +1,9 @@
+PM828 BOARD
+M: -
+S: Maintained
+F: board/pm828/
+F: include/configs/PM828.h
+F: configs/PM828_defconfig
+F: configs/PM828_PCI_defconfig
+F: configs/PM828_ROMBOOT_defconfig
+F: configs/PM828_ROMBOOT_PCI_defconfig
diff --git a/board/ppcag/bg0900/Kconfig b/board/ppcag/bg0900/Kconfig
new file mode 100644
index 0000000..e4fb601
--- /dev/null
+++ b/board/ppcag/bg0900/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_BG0900
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "bg0900"
+
+config SYS_VENDOR
+ string
+ default "ppcag"
+
+config SYS_SOC
+ string
+ default "mxs"
+
+config SYS_CONFIG_NAME
+ string
+ default "bg0900"
+
+endif
diff --git a/board/ppcag/bg0900/MAINTAINERS b/board/ppcag/bg0900/MAINTAINERS
new file mode 100644
index 0000000..853c0d5
--- /dev/null
+++ b/board/ppcag/bg0900/MAINTAINERS
@@ -0,0 +1,6 @@
+BG0900 BOARD
+M: Marek Vasut <marex@denx.de>
+S: Maintained
+F: board/ppcag/bg0900/
+F: include/configs/bg0900.h
+F: configs/bg0900_defconfig
diff --git a/board/ppmc7xx/Kconfig b/board/ppmc7xx/Kconfig
new file mode 100644
index 0000000..a28ab98
--- /dev/null
+++ b/board/ppmc7xx/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_PPMC7XX
+
+config SYS_BOARD
+ string
+ default "ppmc7xx"
+
+config SYS_CONFIG_NAME
+ string
+ default "ppmc7xx"
+
+endif
diff --git a/board/ppmc7xx/MAINTAINERS b/board/ppmc7xx/MAINTAINERS
new file mode 100644
index 0000000..5b21aa7
--- /dev/null
+++ b/board/ppmc7xx/MAINTAINERS
@@ -0,0 +1,6 @@
+PPMC7XX BOARD
+M: -
+S: Maintained
+F: board/ppmc7xx/
+F: include/configs/ppmc7xx.h
+F: configs/ppmc7xx_defconfig
diff --git a/board/ppmc8260/Kconfig b/board/ppmc8260/Kconfig
new file mode 100644
index 0000000..e2e8793
--- /dev/null
+++ b/board/ppmc8260/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_PPMC8260
+
+config SYS_BOARD
+ string
+ default "ppmc8260"
+
+config SYS_CONFIG_NAME
+ string
+ default "ppmc8260"
+
+endif
diff --git a/board/ppmc8260/MAINTAINERS b/board/ppmc8260/MAINTAINERS
new file mode 100644
index 0000000..768d092
--- /dev/null
+++ b/board/ppmc8260/MAINTAINERS
@@ -0,0 +1,6 @@
+PPMC8260 BOARD
+M: Brad Kemp <Brad.Kemp@seranoa.com>
+S: Orphan (since 2014-04)
+F: board/ppmc8260/
+F: include/configs/ppmc8260.h
+F: configs/ppmc8260_defconfig
diff --git a/board/pr1/Kconfig b/board/pr1/Kconfig
new file mode 100644
index 0000000..2d80cd4
--- /dev/null
+++ b/board/pr1/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_PR1
+
+config SYS_BOARD
+ string
+ default "pr1"
+
+config SYS_CONFIG_NAME
+ string
+ default "pr1"
+
+endif
diff --git a/board/pr1/MAINTAINERS b/board/pr1/MAINTAINERS
new file mode 100644
index 0000000..23fdbc7
--- /dev/null
+++ b/board/pr1/MAINTAINERS
@@ -0,0 +1,6 @@
+PR1 BOARD
+M: Dimitar Penev <dpn@switchfin.org>
+S: Maintained
+F: board/pr1/
+F: include/configs/pr1.h
+F: configs/pr1_defconfig
diff --git a/board/prodrive/alpr/Kconfig b/board/prodrive/alpr/Kconfig
new file mode 100644
index 0000000..6e99fc7
--- /dev/null
+++ b/board/prodrive/alpr/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_ALPR
+
+config SYS_BOARD
+ string
+ default "alpr"
+
+config SYS_VENDOR
+ string
+ default "prodrive"
+
+config SYS_CONFIG_NAME
+ string
+ default "alpr"
+
+endif
diff --git a/board/prodrive/alpr/MAINTAINERS b/board/prodrive/alpr/MAINTAINERS
new file mode 100644
index 0000000..31baabb
--- /dev/null
+++ b/board/prodrive/alpr/MAINTAINERS
@@ -0,0 +1,6 @@
+ALPR BOARD
+M: Stefan Roese <sr@denx.de>
+S: Maintained
+F: board/prodrive/alpr/
+F: include/configs/alpr.h
+F: configs/alpr_defconfig
diff --git a/board/prodrive/p3mx/Kconfig b/board/prodrive/p3mx/Kconfig
new file mode 100644
index 0000000..89dcba0
--- /dev/null
+++ b/board/prodrive/p3mx/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_P3MX
+
+config SYS_BOARD
+ string
+ default "p3mx"
+
+config SYS_VENDOR
+ string
+ default "prodrive"
+
+config SYS_CONFIG_NAME
+ string
+ default "p3mx"
+
+endif
diff --git a/board/prodrive/p3mx/MAINTAINERS b/board/prodrive/p3mx/MAINTAINERS
new file mode 100644
index 0000000..e60fdb6
--- /dev/null
+++ b/board/prodrive/p3mx/MAINTAINERS
@@ -0,0 +1,7 @@
+P3MX BOARD
+M: Stefan Roese <sr@denx.de>
+S: Maintained
+F: board/prodrive/p3mx/
+F: include/configs/p3mx.h
+F: configs/p3m7448_defconfig
+F: configs/p3m750_defconfig
diff --git a/board/prodrive/p3p440/Kconfig b/board/prodrive/p3p440/Kconfig
new file mode 100644
index 0000000..a0eabe1
--- /dev/null
+++ b/board/prodrive/p3p440/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_P3P440
+
+config SYS_BOARD
+ string
+ default "p3p440"
+
+config SYS_VENDOR
+ string
+ default "prodrive"
+
+config SYS_CONFIG_NAME
+ string
+ default "p3p440"
+
+endif
diff --git a/board/prodrive/p3p440/MAINTAINERS b/board/prodrive/p3p440/MAINTAINERS
new file mode 100644
index 0000000..68fd1a9
--- /dev/null
+++ b/board/prodrive/p3p440/MAINTAINERS
@@ -0,0 +1,6 @@
+P3P440 BOARD
+M: Stefan Roese <sr@denx.de>
+S: Maintained
+F: board/prodrive/p3p440/
+F: include/configs/p3p440.h
+F: configs/p3p440_defconfig
diff --git a/board/psyent/pci5441/Kconfig b/board/psyent/pci5441/Kconfig
new file mode 100644
index 0000000..d722f31
--- /dev/null
+++ b/board/psyent/pci5441/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_PCI5441
+
+config SYS_BOARD
+ string
+ default "pci5441"
+
+config SYS_VENDOR
+ string
+ default "psyent"
+
+config SYS_CONFIG_NAME
+ string
+ default "PCI5441"
+
+endif
diff --git a/board/psyent/pci5441/MAINTAINERS b/board/psyent/pci5441/MAINTAINERS
new file mode 100644
index 0000000..f1f10e9
--- /dev/null
+++ b/board/psyent/pci5441/MAINTAINERS
@@ -0,0 +1,6 @@
+PCI5441 BOARD
+M: Scott McNutt <smcnutt@psyent.com>
+S: Maintained
+F: board/psyent/pci5441/
+F: include/configs/PCI5441.h
+F: configs/PCI5441_defconfig
diff --git a/board/psyent/pk1c20/Kconfig b/board/psyent/pk1c20/Kconfig
new file mode 100644
index 0000000..75f6cd1
--- /dev/null
+++ b/board/psyent/pk1c20/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_PK1C20
+
+config SYS_BOARD
+ string
+ default "pk1c20"
+
+config SYS_VENDOR
+ string
+ default "psyent"
+
+config SYS_CONFIG_NAME
+ string
+ default "PK1C20"
+
+endif
diff --git a/board/psyent/pk1c20/MAINTAINERS b/board/psyent/pk1c20/MAINTAINERS
new file mode 100644
index 0000000..32b901a
--- /dev/null
+++ b/board/psyent/pk1c20/MAINTAINERS
@@ -0,0 +1,6 @@
+PK1C20 BOARD
+M: Scott McNutt <smcnutt@psyent.com>
+S: Maintained
+F: board/psyent/pk1c20/
+F: include/configs/PK1C20.h
+F: configs/PK1C20_defconfig
diff --git a/board/pxa255_idp/Kconfig b/board/pxa255_idp/Kconfig
new file mode 100644
index 0000000..e231f28
--- /dev/null
+++ b/board/pxa255_idp/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_PXA255_IDP
+
+config SYS_CPU
+ string
+ default "pxa"
+
+config SYS_BOARD
+ string
+ default "pxa255_idp"
+
+config SYS_CONFIG_NAME
+ string
+ default "pxa255_idp"
+
+endif
diff --git a/board/pxa255_idp/MAINTAINERS b/board/pxa255_idp/MAINTAINERS
new file mode 100644
index 0000000..24d7236
--- /dev/null
+++ b/board/pxa255_idp/MAINTAINERS
@@ -0,0 +1,6 @@
+PXA255_IDP BOARD
+M: Cliff Brake <cliff.brake@gmail.com>
+S: Maintained
+F: board/pxa255_idp/
+F: include/configs/pxa255_idp.h
+F: configs/pxa255_idp_defconfig
diff --git a/board/qemu-mips/Kconfig b/board/qemu-mips/Kconfig
new file mode 100644
index 0000000..0ca816d
--- /dev/null
+++ b/board/qemu-mips/Kconfig
@@ -0,0 +1,31 @@
+if TARGET_QEMU_MIPS
+
+config SYS_CPU
+ string
+ default "mips32"
+
+config SYS_BOARD
+ string
+ default "qemu-mips"
+
+config SYS_CONFIG_NAME
+ string
+ default "qemu-mips"
+
+endif
+
+if TARGET_QEMU_MIPS64
+
+config SYS_CPU
+ string
+ default "mips64"
+
+config SYS_BOARD
+ string
+ default "qemu-mips"
+
+config SYS_CONFIG_NAME
+ string
+ default "qemu-mips64"
+
+endif
diff --git a/board/qemu-mips/MAINTAINERS b/board/qemu-mips/MAINTAINERS
new file mode 100644
index 0000000..079949a
--- /dev/null
+++ b/board/qemu-mips/MAINTAINERS
@@ -0,0 +1,14 @@
+QEMU-MIPS BOARD
+M: Vlad Lungu <vlad.lungu@windriver.com>
+S: Maintained
+F: board/qemu-mips/
+F: include/configs/qemu-mips.h
+F: configs/qemu_mips_defconfig
+
+QEMU_MIPSEL BOARD
+M: -
+S: Maintained
+F: configs/qemu_mipsel_defconfig
+F: include/configs/qemu-mips64.h
+F: configs/qemu_mips64_defconfig
+F: configs/qemu_mips64el_defconfig
diff --git a/board/r360mpi/Kconfig b/board/r360mpi/Kconfig
new file mode 100644
index 0000000..ea4614f
--- /dev/null
+++ b/board/r360mpi/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_R360MPI
+
+config SYS_BOARD
+ string
+ default "r360mpi"
+
+config SYS_CONFIG_NAME
+ string
+ default "R360MPI"
+
+endif
diff --git a/board/r360mpi/MAINTAINERS b/board/r360mpi/MAINTAINERS
new file mode 100644
index 0000000..a67ab0c
--- /dev/null
+++ b/board/r360mpi/MAINTAINERS
@@ -0,0 +1,6 @@
+R360MPI BOARD
+M: Wolfgang Denk <wd@denx.de>
+S: Maintained
+F: board/r360mpi/
+F: include/configs/R360MPI.h
+F: configs/R360MPI_defconfig
diff --git a/board/raidsonic/ib62x0/Kconfig b/board/raidsonic/ib62x0/Kconfig
new file mode 100644
index 0000000..1e667c4
--- /dev/null
+++ b/board/raidsonic/ib62x0/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_IB62X0
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "ib62x0"
+
+config SYS_VENDOR
+ string
+ default "raidsonic"
+
+config SYS_SOC
+ string
+ default "kirkwood"
+
+config SYS_CONFIG_NAME
+ string
+ default "ib62x0"
+
+endif
diff --git a/board/raidsonic/ib62x0/MAINTAINERS b/board/raidsonic/ib62x0/MAINTAINERS
new file mode 100644
index 0000000..423aa0c
--- /dev/null
+++ b/board/raidsonic/ib62x0/MAINTAINERS
@@ -0,0 +1,6 @@
+IB62X0 BOARD
+M: Luka Perkov <luka@openwrt.org>
+S: Maintained
+F: board/raidsonic/ib62x0/
+F: include/configs/ib62x0.h
+F: configs/ib62x0_defconfig
diff --git a/board/raspberrypi/rpi_b/Kconfig b/board/raspberrypi/rpi_b/Kconfig
new file mode 100644
index 0000000..6e99c91
--- /dev/null
+++ b/board/raspberrypi/rpi_b/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_RPI_B
+
+config SYS_CPU
+ string
+ default "arm1176"
+
+config SYS_BOARD
+ string
+ default "rpi_b"
+
+config SYS_VENDOR
+ string
+ default "raspberrypi"
+
+config SYS_SOC
+ string
+ default "bcm2835"
+
+config SYS_CONFIG_NAME
+ string
+ default "rpi_b"
+
+endif
diff --git a/board/raspberrypi/rpi_b/MAINTAINERS b/board/raspberrypi/rpi_b/MAINTAINERS
new file mode 100644
index 0000000..14f3948
--- /dev/null
+++ b/board/raspberrypi/rpi_b/MAINTAINERS
@@ -0,0 +1,6 @@
+RPI_B BOARD
+M: Stephen Warren <swarren@wwwdotorg.org>
+S: Maintained
+F: board/raspberrypi/rpi_b/
+F: include/configs/rpi_b.h
+F: configs/rpi_b_defconfig
diff --git a/board/renesas/MigoR/Kconfig b/board/renesas/MigoR/Kconfig
new file mode 100644
index 0000000..d72a453
--- /dev/null
+++ b/board/renesas/MigoR/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_MIGOR
+
+config SYS_CPU
+ string
+ default "sh4"
+
+config SYS_BOARD
+ string
+ default "MigoR"
+
+config SYS_VENDOR
+ string
+ default "renesas"
+
+config SYS_CONFIG_NAME
+ string
+ default "MigoR"
+
+endif
diff --git a/board/renesas/MigoR/MAINTAINERS b/board/renesas/MigoR/MAINTAINERS
new file mode 100644
index 0000000..9368b05
--- /dev/null
+++ b/board/renesas/MigoR/MAINTAINERS
@@ -0,0 +1,6 @@
+MIGOR BOARD
+M: -
+S: Maintained
+F: board/renesas/MigoR/
+F: include/configs/MigoR.h
+F: configs/MigoR_defconfig
diff --git a/board/renesas/alt/Kconfig b/board/renesas/alt/Kconfig
new file mode 100644
index 0000000..d317025
--- /dev/null
+++ b/board/renesas/alt/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_ALT
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "alt"
+
+config SYS_VENDOR
+ string
+ default "renesas"
+
+config SYS_SOC
+ string
+ default "rmobile"
+
+config SYS_CONFIG_NAME
+ string
+ default "alt"
+
+endif
diff --git a/board/renesas/alt/MAINTAINERS b/board/renesas/alt/MAINTAINERS
new file mode 100644
index 0000000..6ec140b
--- /dev/null
+++ b/board/renesas/alt/MAINTAINERS
@@ -0,0 +1,6 @@
+ALT BOARD
+M: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
+S: Maintained
+F: board/renesas/alt/
+F: include/configs/alt.h
+F: configs/alt_defconfig
diff --git a/board/renesas/alt/Makefile b/board/renesas/alt/Makefile
new file mode 100644
index 0000000..9ed12bd
--- /dev/null
+++ b/board/renesas/alt/Makefile
@@ -0,0 +1,9 @@
+#
+# board/renesas/alt/Makefile
+#
+# Copyright (C) 2014 Renesas Electronics Corporation
+#
+# SPDX-License-Identifier: GPL-2.0
+#
+
+obj-y := alt.o qos.o
diff --git a/board/renesas/alt/alt.c b/board/renesas/alt/alt.c
new file mode 100644
index 0000000..9d8e8f9
--- /dev/null
+++ b/board/renesas/alt/alt.c
@@ -0,0 +1,173 @@
+/*
+ * board/renesas/alt/alt.c
+ *
+ * Copyright (C) 2014 Renesas Electronics Corporation
+ *
+ * SPDX-License-Identifier: GPL-2.0
+ */
+
+#include <common.h>
+#include <malloc.h>
+#include <asm/processor.h>
+#include <asm/mach-types.h>
+#include <asm/io.h>
+#include <asm/errno.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/gpio.h>
+#include <asm/arch/rmobile.h>
+#include <netdev.h>
+#include <miiphy.h>
+#include <i2c.h>
+#include <div64.h>
+#include "qos.h"
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#define CLK2MHZ(clk) (clk / 1000 / 1000)
+void s_init(void)
+{
+ struct rcar_rwdt *rwdt = (struct rcar_rwdt *)RWDT_BASE;
+ struct rcar_swdt *swdt = (struct rcar_swdt *)SWDT_BASE;
+
+ /* Watchdog init */
+ writel(0xA5A5A500, &rwdt->rwtcsra);
+ writel(0xA5A5A500, &swdt->swtcsra);
+
+ /* QoS */
+ qos_init();
+}
+
+#define MSTPSR1 0xE6150038
+#define SMSTPCR1 0xE6150134
+#define TMU0_MSTP125 (1 << 25)
+
+#define MSTPSR7 0xE61501C4
+#define SMSTPCR7 0xE615014C
+#define SCIF0_MSTP719 (1 << 19)
+
+#define MSTPSR8 0xE61509A0
+#define SMSTPCR8 0xE6150990
+#define ETHER_MSTP813 (1 << 13)
+
+#define mstp_setbits(type, addr, saddr, set) \
+ out_##type((saddr), in_##type(addr) | (set))
+#define mstp_clrbits(type, addr, saddr, clear) \
+ out_##type((saddr), in_##type(addr) & ~(clear))
+#define mstp_setbits_le32(addr, saddr, set) \
+ mstp_setbits(le32, addr, saddr, set)
+#define mstp_clrbits_le32(addr, saddr, clear) \
+ mstp_clrbits(le32, addr, saddr, clear)
+
+int board_early_init_f(void)
+{
+ /* TMU */
+ mstp_clrbits_le32(MSTPSR1, SMSTPCR1, TMU0_MSTP125);
+
+ /* SCIF0 */
+ mstp_clrbits_le32(MSTPSR7, SMSTPCR7, SCIF0_MSTP719);
+
+ /* ETHER */
+ mstp_clrbits_le32(MSTPSR8, SMSTPCR8, ETHER_MSTP813);
+
+ return 0;
+}
+
+void arch_preboot_os(void)
+{
+ /* Disable TMU0 */
+ mstp_setbits_le32(MSTPSR1, SMSTPCR1, TMU0_MSTP125);
+}
+
+int board_init(void)
+{
+ /* adress of boot parameters */
+ gd->bd->bi_boot_params = ALT_SDRAM_BASE + 0x100;
+
+ /* Init PFC controller */
+ r8a7794_pinmux_init();
+
+ /* Ether Enable */
+ gpio_request(GPIO_FN_ETH_CRS_DV, NULL);
+ gpio_request(GPIO_FN_ETH_RX_ER, NULL);
+ gpio_request(GPIO_FN_ETH_RXD0, NULL);
+ gpio_request(GPIO_FN_ETH_RXD1, NULL);
+ gpio_request(GPIO_FN_ETH_LINK, NULL);
+ gpio_request(GPIO_FN_ETH_REFCLK, NULL);
+ gpio_request(GPIO_FN_ETH_MDIO, NULL);
+ gpio_request(GPIO_FN_ETH_TXD1, NULL);
+ gpio_request(GPIO_FN_ETH_TX_EN, NULL);
+ gpio_request(GPIO_FN_ETH_MAGIC, NULL);
+ gpio_request(GPIO_FN_ETH_TXD0, NULL);
+ gpio_request(GPIO_FN_ETH_MDC, NULL);
+ gpio_request(GPIO_FN_IRQ8, NULL);
+
+ /* PHY reset */
+ gpio_request(GPIO_GP_1_24, NULL);
+ gpio_direction_output(GPIO_GP_1_24, 0);
+ mdelay(20);
+ gpio_set_value(GPIO_GP_1_24, 1);
+ udelay(1);
+
+ return 0;
+}
+
+#define CXR24 0xEE7003C0 /* MAC address high register */
+#define CXR25 0xEE7003C8 /* MAC address low register */
+int board_eth_init(bd_t *bis)
+{
+#ifdef CONFIG_SH_ETHER
+ int ret = -ENODEV;
+ u32 val;
+ unsigned char enetaddr[6];
+
+ ret = sh_eth_initialize(bis);
+ if (!eth_getenv_enetaddr("ethaddr", enetaddr))
+ return ret;
+
+ /* Set Mac address */
+ val = enetaddr[0] << 24 | enetaddr[1] << 16 |
+ enetaddr[2] << 8 | enetaddr[3];
+ writel(val, CXR24);
+
+ val = enetaddr[4] << 8 | enetaddr[5];
+ writel(val, CXR25);
+
+ return ret;
+#else
+ return 0;
+#endif
+}
+
+int dram_init(void)
+{
+ gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE;
+ gd->ram_size = CONFIG_SYS_SDRAM_SIZE;
+
+ return 0;
+}
+
+const struct rmobile_sysinfo sysinfo = {
+ CONFIG_RMOBILE_BOARD_STRING
+};
+
+void dram_init_banksize(void)
+{
+ gd->bd->bi_dram[0].start = ALT_SDRAM_BASE;
+ gd->bd->bi_dram[0].size = ALT_SDRAM_SIZE;
+}
+
+int board_late_init(void)
+{
+ return 0;
+}
+
+void reset_cpu(ulong addr)
+{
+ u8 val;
+
+ i2c_set_bus_num(1); /* PowerIC connected to ch3 */
+ i2c_init(400000, 0);
+ i2c_read(CONFIG_SYS_I2C_POWERIC_ADDR, 0x13, 1, &val, 1);
+ val |= 0x02;
+ i2c_write(CONFIG_SYS_I2C_POWERIC_ADDR, 0x13, 1, &val, 1);
+}
diff --git a/board/renesas/alt/qos.c b/board/renesas/alt/qos.c
new file mode 100644
index 0000000..ea51f3f
--- /dev/null
+++ b/board/renesas/alt/qos.c
@@ -0,0 +1,944 @@
+/*
+ * board/renesas/alt/qos.c
+ *
+ * Copyright (C) 2014 Renesas Electronics Corporation
+ *
+ * SPDX-License-Identifier: GPL-2.0
+ *
+ */
+
+#include <common.h>
+#include <asm/processor.h>
+#include <asm/mach-types.h>
+#include <asm/io.h>
+#include <asm/arch/rmobile.h>
+
+/* QoS version 0.10 */
+
+enum {
+ DBSC3_00, DBSC3_01, DBSC3_02, DBSC3_03, DBSC3_04,
+ DBSC3_05, DBSC3_06, DBSC3_07, DBSC3_08, DBSC3_09,
+ DBSC3_10, DBSC3_11, DBSC3_12, DBSC3_13, DBSC3_14,
+ DBSC3_15,
+ DBSC3_NR,
+};
+
+static u32 dbsc3_0_r_qos_addr[DBSC3_NR] = {
+ [DBSC3_00] = DBSC3_0_QOS_R0_BASE,
+ [DBSC3_01] = DBSC3_0_QOS_R1_BASE,
+ [DBSC3_02] = DBSC3_0_QOS_R2_BASE,
+ [DBSC3_03] = DBSC3_0_QOS_R3_BASE,
+ [DBSC3_04] = DBSC3_0_QOS_R4_BASE,
+ [DBSC3_05] = DBSC3_0_QOS_R5_BASE,
+ [DBSC3_06] = DBSC3_0_QOS_R6_BASE,
+ [DBSC3_07] = DBSC3_0_QOS_R7_BASE,
+ [DBSC3_08] = DBSC3_0_QOS_R8_BASE,
+ [DBSC3_09] = DBSC3_0_QOS_R9_BASE,
+ [DBSC3_10] = DBSC3_0_QOS_R10_BASE,
+ [DBSC3_11] = DBSC3_0_QOS_R11_BASE,
+ [DBSC3_12] = DBSC3_0_QOS_R12_BASE,
+ [DBSC3_13] = DBSC3_0_QOS_R13_BASE,
+ [DBSC3_14] = DBSC3_0_QOS_R14_BASE,
+ [DBSC3_15] = DBSC3_0_QOS_R15_BASE,
+};
+
+static u32 dbsc3_0_w_qos_addr[DBSC3_NR] = {
+ [DBSC3_00] = DBSC3_0_QOS_W0_BASE,
+ [DBSC3_01] = DBSC3_0_QOS_W1_BASE,
+ [DBSC3_02] = DBSC3_0_QOS_W2_BASE,
+ [DBSC3_03] = DBSC3_0_QOS_W3_BASE,
+ [DBSC3_04] = DBSC3_0_QOS_W4_BASE,
+ [DBSC3_05] = DBSC3_0_QOS_W5_BASE,
+ [DBSC3_06] = DBSC3_0_QOS_W6_BASE,
+ [DBSC3_07] = DBSC3_0_QOS_W7_BASE,
+ [DBSC3_08] = DBSC3_0_QOS_W8_BASE,
+ [DBSC3_09] = DBSC3_0_QOS_W9_BASE,
+ [DBSC3_10] = DBSC3_0_QOS_W10_BASE,
+ [DBSC3_11] = DBSC3_0_QOS_W11_BASE,
+ [DBSC3_12] = DBSC3_0_QOS_W12_BASE,
+ [DBSC3_13] = DBSC3_0_QOS_W13_BASE,
+ [DBSC3_14] = DBSC3_0_QOS_W14_BASE,
+ [DBSC3_15] = DBSC3_0_QOS_W15_BASE,
+};
+
+void qos_init(void)
+{
+ int i;
+ struct rcar_s3c *s3c;
+ struct rcar_s3c_qos *s3c_qos;
+ struct rcar_dbsc3_qos *qos_addr;
+ struct rcar_mxi *mxi;
+ struct rcar_mxi_qos *mxi_qos;
+ struct rcar_axi_qos *axi_qos;
+
+ /* DBSC DBADJ2 */
+ writel(0x20042004, DBSC3_0_DBADJ2);
+
+ /* S3C -QoS */
+ s3c = (struct rcar_s3c *)S3C_BASE;
+ writel(0x1F0D0B0A, &s3c->s3crorr);
+ writel(0x1F0D0B09, &s3c->s3cworr);
+
+ /* QoS Control Registers */
+ s3c_qos = (struct rcar_s3c_qos *)S3C_QOS_CCI0_BASE;
+ writel(0x00890089, &s3c_qos->s3cqos0);
+ writel(0x20960010, &s3c_qos->s3cqos1);
+ writel(0x20302030, &s3c_qos->s3cqos2);
+ writel(0x20AA2200, &s3c_qos->s3cqos3);
+ writel(0x00002032, &s3c_qos->s3cqos4);
+ writel(0x20960010, &s3c_qos->s3cqos5);
+ writel(0x20302030, &s3c_qos->s3cqos6);
+ writel(0x20AA2200, &s3c_qos->s3cqos7);
+ writel(0x00002032, &s3c_qos->s3cqos8);
+
+ s3c_qos = (struct rcar_s3c_qos *)S3C_QOS_CCI1_BASE;
+ writel(0x00890089, &s3c_qos->s3cqos0);
+ writel(0x20960010, &s3c_qos->s3cqos1);
+ writel(0x20302030, &s3c_qos->s3cqos2);
+ writel(0x20AA2200, &s3c_qos->s3cqos3);
+ writel(0x00002032, &s3c_qos->s3cqos4);
+ writel(0x20960010, &s3c_qos->s3cqos5);
+ writel(0x20302030, &s3c_qos->s3cqos6);
+ writel(0x20AA2200, &s3c_qos->s3cqos7);
+ writel(0x00002032, &s3c_qos->s3cqos8);
+
+ s3c_qos = (struct rcar_s3c_qos *)S3C_QOS_MXI_BASE;
+ writel(0x80928092, &s3c_qos->s3cqos0);
+ writel(0x20960020, &s3c_qos->s3cqos1);
+ writel(0x20302030, &s3c_qos->s3cqos2);
+ writel(0x20AA20DC, &s3c_qos->s3cqos3);
+ writel(0x00002032, &s3c_qos->s3cqos4);
+ writel(0x20960020, &s3c_qos->s3cqos5);
+ writel(0x20302030, &s3c_qos->s3cqos6);
+ writel(0x20AA20DC, &s3c_qos->s3cqos7);
+ writel(0x00002032, &s3c_qos->s3cqos8);
+
+ s3c_qos = (struct rcar_s3c_qos *)S3C_QOS_AXI_BASE;
+ writel(0x00820082, &s3c_qos->s3cqos0);
+ writel(0x20960020, &s3c_qos->s3cqos1);
+ writel(0x20302030, &s3c_qos->s3cqos2);
+ writel(0x20AA20FA, &s3c_qos->s3cqos3);
+ writel(0x00002032, &s3c_qos->s3cqos4);
+ writel(0x20960020, &s3c_qos->s3cqos5);
+ writel(0x20302030, &s3c_qos->s3cqos6);
+ writel(0x20AA20FA, &s3c_qos->s3cqos7);
+ writel(0x00002032, &s3c_qos->s3cqos8);
+
+ /* DBSC -QoS */
+ /* DBSC0 - Read */
+ for (i = DBSC3_00; i < DBSC3_NR; i++) {
+ qos_addr = (struct rcar_dbsc3_qos *)dbsc3_0_r_qos_addr[i];
+ writel(0x00000002, &qos_addr->dblgcnt);
+ writel(0x0000207D, &qos_addr->dbtmval0);
+ writel(0x00002053, &qos_addr->dbtmval1);
+ writel(0x0000202A, &qos_addr->dbtmval2);
+ writel(0x00001FBD, &qos_addr->dbtmval3);
+ writel(0x00000001, &qos_addr->dbrqctr);
+ writel(0x00002064, &qos_addr->dbthres0);
+ writel(0x0000203E, &qos_addr->dbthres1);
+ writel(0x00002019, &qos_addr->dbthres2);
+ writel(0x00000001, &qos_addr->dblgqon);
+ }
+
+ /* DBSC0 - Write */
+ for (i = DBSC3_00; i < DBSC3_NR; i++) {
+ qos_addr = (struct rcar_dbsc3_qos *)dbsc3_0_w_qos_addr[i];
+ writel(0x00000002, &qos_addr->dblgcnt);
+ writel(0x0000207D, &qos_addr->dbtmval0);
+ writel(0x00002053, &qos_addr->dbtmval1);
+ writel(0x00002043, &qos_addr->dbtmval2);
+ writel(0x00002030, &qos_addr->dbtmval3);
+ writel(0x00000001, &qos_addr->dbrqctr);
+ writel(0x00002064, &qos_addr->dbthres0);
+ writel(0x0000203E, &qos_addr->dbthres1);
+ writel(0x00002031, &qos_addr->dbthres2);
+ writel(0x00000001, &qos_addr->dblgqon);
+ }
+
+ /* CCI-400 -QoS */
+ writel(0x20001000, CCI_400_MAXOT_1);
+ writel(0x20001000, CCI_400_MAXOT_2);
+ writel(0x0000000C, CCI_400_QOSCNTL_1);
+ writel(0x0000000C, CCI_400_QOSCNTL_2);
+
+ /* MXI -QoS */
+ /* Transaction Control (MXI) */
+ mxi = (struct rcar_mxi *)MXI_BASE;
+ writel(0x00000013, &mxi->mxrtcr);
+ writel(0x00000013, &mxi->mxwtcr);
+ writel(0x00780080, &mxi->mxsaar0);
+ writel(0x02000800, &mxi->mxsaar1);
+
+ /* QoS Control (MXI) */
+ mxi_qos = (struct rcar_mxi_qos *)MXI_QOS_BASE;
+ writel(0x0000000C, &mxi_qos->vspdu0);
+ writel(0x0000000E, &mxi_qos->du0);
+
+ /* AXI -QoS */
+ /* Transaction Control (MXI) */
+ axi_qos = (struct rcar_axi_qos *)SYS_AXI_SYX64TO128_BASE;
+ writel(0x00000002, &axi_qos->qosconf);
+ writel(0x00002245, &axi_qos->qosctset0);
+ writel(0x00002096, &axi_qos->qosctset1);
+ writel(0x00002030, &axi_qos->qosctset2);
+ writel(0x00002030, &axi_qos->qosctset3);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)SYS_AXI_AVB_BASE;
+ writel(0x00000000, &axi_qos->qosconf);
+ writel(0x000020A6, &axi_qos->qosctset0);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)SYS_AXI_IMUX0_BASE;
+ writel(0x00000002, &axi_qos->qosconf);
+ writel(0x00002245, &axi_qos->qosctset0);
+ writel(0x00002096, &axi_qos->qosctset1);
+ writel(0x00002030, &axi_qos->qosctset2);
+ writel(0x00002030, &axi_qos->qosctset3);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)SYS_AXI_IMUX1_BASE;
+ writel(0x00000002, &axi_qos->qosconf);
+ writel(0x00002245, &axi_qos->qosctset0);
+ writel(0x00002096, &axi_qos->qosctset1);
+ writel(0x00002030, &axi_qos->qosctset2);
+ writel(0x00002030, &axi_qos->qosctset3);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)SYS_AXI_IMUX2_BASE;
+ writel(0x00000002, &axi_qos->qosconf);
+ writel(0x00002245, &axi_qos->qosctset0);
+ writel(0x00002096, &axi_qos->qosctset1);
+ writel(0x00002030, &axi_qos->qosctset2);
+ writel(0x00002030, &axi_qos->qosctset3);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)SYS_AXI_LBS_BASE;
+ writel(0x00000000, &axi_qos->qosconf);
+ writel(0x0000214C, &axi_qos->qosctset0);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)SYS_AXI_MMUDS_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x00002004, &axi_qos->qosctset0);
+ writel(0x00002096, &axi_qos->qosctset1);
+ writel(0x00002030, &axi_qos->qosctset2);
+ writel(0x00002030, &axi_qos->qosctset3);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)SYS_AXI_MMUM_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x00002004, &axi_qos->qosctset0);
+ writel(0x00002096, &axi_qos->qosctset1);
+ writel(0x00002030, &axi_qos->qosctset2);
+ writel(0x00002030, &axi_qos->qosctset3);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)SYS_AXI_MMUS0_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x00002004, &axi_qos->qosctset0);
+ writel(0x00002096, &axi_qos->qosctset1);
+ writel(0x00002030, &axi_qos->qosctset2);
+ writel(0x00002030, &axi_qos->qosctset3);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)SYS_AXI_MMUS1_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x00002004, &axi_qos->qosctset0);
+ writel(0x00002096, &axi_qos->qosctset1);
+ writel(0x00002030, &axi_qos->qosctset2);
+ writel(0x00002030, &axi_qos->qosctset3);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)SYS_AXI_RTX_BASE;
+ writel(0x00000002, &axi_qos->qosconf);
+ writel(0x00002245, &axi_qos->qosctset0);
+ writel(0x00002096, &axi_qos->qosctset1);
+ writel(0x00002030, &axi_qos->qosctset2);
+ writel(0x00002030, &axi_qos->qosctset3);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)SYS_AXI_SDS0_BASE;
+ writel(0x00000000, &axi_qos->qosconf);
+ writel(0x000020A6, &axi_qos->qosctset0);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)SYS_AXI_SDS1_BASE;
+ writel(0x00000000, &axi_qos->qosconf);
+ writel(0x000020A6, &axi_qos->qosctset0);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)SYS_AXI_USB20_BASE;
+ writel(0x00000000, &axi_qos->qosconf);
+ writel(0x00002053, &axi_qos->qosctset0);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)SYS_AXI_USB22_BASE;
+ writel(0x00000000, &axi_qos->qosconf);
+ writel(0x00002053, &axi_qos->qosctset0);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)SYS_AXI_AX2M_BASE;
+ writel(0x00000002, &axi_qos->qosconf);
+ writel(0x00002245, &axi_qos->qosctset0);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)SYS_AXI_CC50_BASE;
+ writel(0x00000000, &axi_qos->qosconf);
+ writel(0x00002029, &axi_qos->qosctset0);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)SYS_AXI_CCI_BASE;
+ writel(0x00000002, &axi_qos->qosconf);
+ writel(0x00002245, &axi_qos->qosctset0);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)SYS_AXI_CS_BASE;
+ writel(0x00000000, &axi_qos->qosconf);
+ writel(0x00002053, &axi_qos->qosctset0);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)SYS_AXI_DDM_BASE;
+ writel(0x00000000, &axi_qos->qosconf);
+ writel(0x000020A6, &axi_qos->qosctset0);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)SYS_AXI_ETH_BASE;
+ writel(0x00000000, &axi_qos->qosconf);
+ writel(0x00002053, &axi_qos->qosctset0);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)SYS_AXI_MPXM_BASE;
+ writel(0x00000002, &axi_qos->qosconf);
+ writel(0x00002245, &axi_qos->qosctset0);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)SYS_AXI_SDM0_BASE;
+ writel(0x00000000, &axi_qos->qosconf);
+ writel(0x0000214C, &axi_qos->qosctset0);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)SYS_AXI_SDM1_BASE;
+ writel(0x00000000, &axi_qos->qosconf);
+ writel(0x0000214C, &axi_qos->qosctset0);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)SYS_AXI_TRAB_BASE;
+ writel(0x00000000, &axi_qos->qosconf);
+ writel(0x000020A6, &axi_qos->qosctset0);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)SYS_AXI_UDM0_BASE;
+ writel(0x00000000, &axi_qos->qosconf);
+ writel(0x00002053, &axi_qos->qosctset0);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)SYS_AXI_UDM1_BASE;
+ writel(0x00000000, &axi_qos->qosconf);
+ writel(0x00002053, &axi_qos->qosctset0);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ /* QoS Register (RT-AXI) */
+ axi_qos = (struct rcar_axi_qos *)RT_AXI_SHX_BASE;
+ writel(0x00000000, &axi_qos->qosconf);
+ writel(0x00002053, &axi_qos->qosctset0);
+ writel(0x00002096, &axi_qos->qosctset1);
+ writel(0x00002030, &axi_qos->qosctset2);
+ writel(0x00002030, &axi_qos->qosctset3);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)RT_AXI_DBG_BASE;
+ writel(0x00000000, &axi_qos->qosconf);
+ writel(0x00002053, &axi_qos->qosctset0);
+ writel(0x00002096, &axi_qos->qosctset1);
+ writel(0x00002030, &axi_qos->qosctset2);
+ writel(0x00002030, &axi_qos->qosctset3);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)RT_AXI_RTX64TO128_BASE;
+ writel(0x00000002, &axi_qos->qosconf);
+ writel(0x00002245, &axi_qos->qosctset0);
+ writel(0x00002096, &axi_qos->qosctset1);
+ writel(0x00002030, &axi_qos->qosctset2);
+ writel(0x00002030, &axi_qos->qosctset3);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)RT_AXI_SY2RT_BASE;
+ writel(0x00000002, &axi_qos->qosconf);
+ writel(0x00002245, &axi_qos->qosctset0);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ /* QoS Register (MP-AXI) */
+ axi_qos = (struct rcar_axi_qos *)MP_AXI_ADSP_BASE;
+ writel(0x00000000, &axi_qos->qosconf);
+ writel(0x00002037, &axi_qos->qosctset0);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)MP_AXI_ASDS0_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x00002014, &axi_qos->qosctset0);
+ writel(0x00000040, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)MP_AXI_ASDS1_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x00002014, &axi_qos->qosctset0);
+ writel(0x00000040, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)MP_AXI_MLP_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x00001FF0, &axi_qos->qosctset0);
+ writel(0x00000020, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00002001, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)MP_AXI_MMUMP_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x00002004, &axi_qos->qosctset0);
+ writel(0x00002096, &axi_qos->qosctset1);
+ writel(0x00002030, &axi_qos->qosctset2);
+ writel(0x00002030, &axi_qos->qosctset3);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)MP_AXI_SPU_BASE;
+ writel(0x00000000, &axi_qos->qosconf);
+ writel(0x00002053, &axi_qos->qosctset0);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)MP_AXI_SPUC_BASE;
+ writel(0x00000000, &axi_qos->qosconf);
+ writel(0x0000206E, &axi_qos->qosctset0);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ /* QoS Register (SYS-AXI256) */
+ axi_qos = (struct rcar_axi_qos *)SYS_AXI256_AXI128TO256_BASE;
+ writel(0x00000002, &axi_qos->qosconf);
+ writel(0x000020EB, &axi_qos->qosctset0);
+ writel(0x00002096, &axi_qos->qosctset1);
+ writel(0x00002030, &axi_qos->qosctset2);
+ writel(0x00002030, &axi_qos->qosctset3);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)SYS_AXI256_SYX_BASE;
+ writel(0x00000002, &axi_qos->qosconf);
+ writel(0x000020EB, &axi_qos->qosctset0);
+ writel(0x00002096, &axi_qos->qosctset1);
+ writel(0x00002030, &axi_qos->qosctset2);
+ writel(0x00002030, &axi_qos->qosctset3);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)SYS_AXI256_MPX_BASE;
+ writel(0x00000002, &axi_qos->qosconf);
+ writel(0x000020EB, &axi_qos->qosctset0);
+ writel(0x00002096, &axi_qos->qosctset1);
+ writel(0x00002030, &axi_qos->qosctset2);
+ writel(0x00002030, &axi_qos->qosctset3);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)SYS_AXI256_MXI_BASE;
+ writel(0x00000002, &axi_qos->qosconf);
+ writel(0x000020EB, &axi_qos->qosctset0);
+ writel(0x00002096, &axi_qos->qosctset1);
+ writel(0x00002030, &axi_qos->qosctset2);
+ writel(0x00002030, &axi_qos->qosctset3);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ /* QoS Register (CCI-AXI) */
+ axi_qos = (struct rcar_axi_qos *)CCI_AXI_MMUS0_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x00002004, &axi_qos->qosctset0);
+ writel(0x00002096, &axi_qos->qosctset1);
+ writel(0x00002030, &axi_qos->qosctset2);
+ writel(0x00002030, &axi_qos->qosctset3);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)CCI_AXI_SYX2_BASE;
+ writel(0x00000002, &axi_qos->qosconf);
+ writel(0x00002245, &axi_qos->qosctset0);
+ writel(0x00002096, &axi_qos->qosctset1);
+ writel(0x00002030, &axi_qos->qosctset2);
+ writel(0x00002030, &axi_qos->qosctset3);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)CCI_AXI_MMUR_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x00002004, &axi_qos->qosctset0);
+ writel(0x00002096, &axi_qos->qosctset1);
+ writel(0x00002030, &axi_qos->qosctset2);
+ writel(0x00002030, &axi_qos->qosctset3);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)CCI_AXI_MMUDS_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x00002004, &axi_qos->qosctset0);
+ writel(0x00002096, &axi_qos->qosctset1);
+ writel(0x00002030, &axi_qos->qosctset2);
+ writel(0x00002030, &axi_qos->qosctset3);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)CCI_AXI_MMUM_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x00002004, &axi_qos->qosctset0);
+ writel(0x00002096, &axi_qos->qosctset1);
+ writel(0x00002030, &axi_qos->qosctset2);
+ writel(0x00002030, &axi_qos->qosctset3);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)CCI_AXI_MXI_BASE;
+ writel(0x00000002, &axi_qos->qosconf);
+ writel(0x00002245, &axi_qos->qosctset0);
+ writel(0x00002096, &axi_qos->qosctset1);
+ writel(0x00002030, &axi_qos->qosctset2);
+ writel(0x00002030, &axi_qos->qosctset3);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)CCI_AXI_MMUS1_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x00002004, &axi_qos->qosctset0);
+ writel(0x00002096, &axi_qos->qosctset1);
+ writel(0x00002030, &axi_qos->qosctset2);
+ writel(0x00002030, &axi_qos->qosctset3);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)CCI_AXI_MMUMP_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x00002004, &axi_qos->qosctset0);
+ writel(0x00002096, &axi_qos->qosctset1);
+ writel(0x00002030, &axi_qos->qosctset2);
+ writel(0x00002030, &axi_qos->qosctset3);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000000, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ /* QoS Register (Media-AXI) */
+ axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_MXR_BASE;
+ writel(0x00000002, &axi_qos->qosconf);
+ writel(0x000020DC, &axi_qos->qosctset0);
+ writel(0x00002096, &axi_qos->qosctset1);
+ writel(0x00002030, &axi_qos->qosctset2);
+ writel(0x00002030, &axi_qos->qosctset3);
+ writel(0x00000020, &axi_qos->qosreqctr);
+ writel(0x000020AA, &axi_qos->qosthres0);
+ writel(0x00002032, &axi_qos->qosthres1);
+ writel(0x00000001, &axi_qos->qosthres2);
+
+ axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_MXW_BASE;
+ writel(0x00000002, &axi_qos->qosconf);
+ writel(0x000020DC, &axi_qos->qosctset0);
+ writel(0x00002096, &axi_qos->qosctset1);
+ writel(0x00002030, &axi_qos->qosctset2);
+ writel(0x00002030, &axi_qos->qosctset3);
+ writel(0x00000020, &axi_qos->qosreqctr);
+ writel(0x000020AA, &axi_qos->qosthres0);
+ writel(0x00002032, &axi_qos->qosthres1);
+ writel(0x00000001, &axi_qos->qosthres2);
+
+ axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_TDMR_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x00002190, &axi_qos->qosctset0);
+ writel(0x00000020, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000001, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_TDMW_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x00002190, &axi_qos->qosctset0);
+ writel(0x00000020, &axi_qos->qosreqctr);
+ writel(0x00000001, &axi_qos->qosthres0);
+ writel(0x00000001, &axi_qos->qosthres1);
+ writel(0x00000001, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSP1CR_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x00002190, &axi_qos->qosctset0);
+ writel(0x00000020, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000001, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSP1CW_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x00002190, &axi_qos->qosctset0);
+ writel(0x00000020, &axi_qos->qosreqctr);
+ writel(0x00000001, &axi_qos->qosthres0);
+ writel(0x00000001, &axi_qos->qosthres1);
+ writel(0x00000001, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSPDU0CR_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x00002190, &axi_qos->qosctset0);
+ writel(0x00000020, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000001, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSPDU0CW_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x00002190, &axi_qos->qosctset0);
+ writel(0x00000020, &axi_qos->qosreqctr);
+ writel(0x00000001, &axi_qos->qosthres0);
+ writel(0x00000001, &axi_qos->qosthres1);
+ writel(0x00000001, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VIN0W_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x00001FF0, &axi_qos->qosctset0);
+ writel(0x00000020, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00002001, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_FDP0R_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x000020C8, &axi_qos->qosctset0);
+ writel(0x00000020, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000001, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_FDP0W_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x000020C8, &axi_qos->qosctset0);
+ writel(0x00000020, &axi_qos->qosreqctr);
+ writel(0x00000001, &axi_qos->qosthres0);
+ writel(0x00000001, &axi_qos->qosthres1);
+ writel(0x00000001, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_IMSR_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x000020C8, &axi_qos->qosctset0);
+ writel(0x00000020, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000001, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_IMSW_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x000020C8, &axi_qos->qosctset0);
+ writel(0x00000020, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000001, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSP1R_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x000020C8, &axi_qos->qosctset0);
+ writel(0x00000020, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000001, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSP1W_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x000020C8, &axi_qos->qosctset0);
+ writel(0x00000020, &axi_qos->qosreqctr);
+ writel(0x00000001, &axi_qos->qosthres0);
+ writel(0x00000001, &axi_qos->qosthres1);
+ writel(0x00000001, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_IMRR_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x000020C8, &axi_qos->qosctset0);
+ writel(0x00000020, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000001, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_IMRW_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x000020C8, &axi_qos->qosctset0);
+ writel(0x00000020, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000001, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSPD0R_BASE;
+ writel(0x00000003, &axi_qos->qosconf);
+ writel(0x000020C8, &axi_qos->qosctset0);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000001, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSPD0W_BASE;
+ writel(0x00000003, &axi_qos->qosconf);
+ writel(0x000020C8, &axi_qos->qosctset0);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000001, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_DU0R_BASE;
+ writel(0x00000003, &axi_qos->qosconf);
+ writel(0x00002063, &axi_qos->qosctset0);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000001, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_DU0W_BASE;
+ writel(0x00000003, &axi_qos->qosconf);
+ writel(0x00002063, &axi_qos->qosctset0);
+ writel(0x00000001, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000001, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VCP0CR_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x00002073, &axi_qos->qosctset0);
+ writel(0x00000020, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000001, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VCP0CW_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x00002073, &axi_qos->qosctset0);
+ writel(0x00000020, &axi_qos->qosreqctr);
+ writel(0x00000001, &axi_qos->qosthres0);
+ writel(0x00000001, &axi_qos->qosthres1);
+ writel(0x00000001, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VCP0VR_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x00002073, &axi_qos->qosctset0);
+ writel(0x00000020, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000001, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VCP0VW_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x00002073, &axi_qos->qosctset0);
+ writel(0x00000020, &axi_qos->qosreqctr);
+ writel(0x00000001, &axi_qos->qosthres0);
+ writel(0x00000001, &axi_qos->qosthres1);
+ writel(0x00000001, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+
+ axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VPC0R_BASE;
+ writel(0x00000001, &axi_qos->qosconf);
+ writel(0x00002073, &axi_qos->qosctset0);
+ writel(0x00000020, &axi_qos->qosreqctr);
+ writel(0x00002064, &axi_qos->qosthres0);
+ writel(0x00002004, &axi_qos->qosthres1);
+ writel(0x00000001, &axi_qos->qosthres2);
+ writel(0x00000001, &axi_qos->qosqon);
+}
diff --git a/board/renesas/alt/qos.h b/board/renesas/alt/qos.h
new file mode 100644
index 0000000..9a6c046
--- /dev/null
+++ b/board/renesas/alt/qos.h
@@ -0,0 +1,12 @@
+/*
+ * Copyright (C) 2013 Renesas Electronics Corporation
+ *
+ * SPDX-License-Identifier: GPL-2.0
+ */
+
+#ifndef __QOS_H__
+#define __QOS_H__
+
+void qos_init(void);
+
+#endif
diff --git a/board/renesas/ap325rxa/Kconfig b/board/renesas/ap325rxa/Kconfig
new file mode 100644
index 0000000..ac1e9ef
--- /dev/null
+++ b/board/renesas/ap325rxa/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_AP325RXA
+
+config SYS_CPU
+ string
+ default "sh4"
+
+config SYS_BOARD
+ string
+ default "ap325rxa"
+
+config SYS_VENDOR
+ string
+ default "renesas"
+
+config SYS_CONFIG_NAME
+ string
+ default "ap325rxa"
+
+endif
diff --git a/board/renesas/ap325rxa/MAINTAINERS b/board/renesas/ap325rxa/MAINTAINERS
new file mode 100644
index 0000000..bdc49c5
--- /dev/null
+++ b/board/renesas/ap325rxa/MAINTAINERS
@@ -0,0 +1,7 @@
+AP325RXA BOARD
+M: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+M: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+S: Maintained
+F: board/renesas/ap325rxa/
+F: include/configs/ap325rxa.h
+F: configs/ap325rxa_defconfig
diff --git a/board/renesas/ecovec/Kconfig b/board/renesas/ecovec/Kconfig
new file mode 100644
index 0000000..d62389e
--- /dev/null
+++ b/board/renesas/ecovec/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_ECOVEC
+
+config SYS_CPU
+ string
+ default "sh4"
+
+config SYS_BOARD
+ string
+ default "ecovec"
+
+config SYS_VENDOR
+ string
+ default "renesas"
+
+config SYS_CONFIG_NAME
+ string
+ default "ecovec"
+
+endif
diff --git a/board/renesas/ecovec/MAINTAINERS b/board/renesas/ecovec/MAINTAINERS
new file mode 100644
index 0000000..439b528
--- /dev/null
+++ b/board/renesas/ecovec/MAINTAINERS
@@ -0,0 +1,7 @@
+ECOVEC BOARD
+M: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+M: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+S: Maintained
+F: board/renesas/ecovec/
+F: include/configs/ecovec.h
+F: configs/ecovec_defconfig
diff --git a/board/renesas/koelsch/Kconfig b/board/renesas/koelsch/Kconfig
new file mode 100644
index 0000000..0def847
--- /dev/null
+++ b/board/renesas/koelsch/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_KOELSCH
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "koelsch"
+
+config SYS_VENDOR
+ string
+ default "renesas"
+
+config SYS_SOC
+ string
+ default "rmobile"
+
+config SYS_CONFIG_NAME
+ string
+ default "koelsch"
+
+endif
diff --git a/board/renesas/koelsch/MAINTAINERS b/board/renesas/koelsch/MAINTAINERS
new file mode 100644
index 0000000..5267b9f
--- /dev/null
+++ b/board/renesas/koelsch/MAINTAINERS
@@ -0,0 +1,6 @@
+KOELSCH BOARD
+M: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
+S: Maintained
+F: board/renesas/koelsch/
+F: include/configs/koelsch.h
+F: configs/koelsch_defconfig
diff --git a/board/renesas/lager/Kconfig b/board/renesas/lager/Kconfig
new file mode 100644
index 0000000..e88f4f6
--- /dev/null
+++ b/board/renesas/lager/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_LAGER
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "lager"
+
+config SYS_VENDOR
+ string
+ default "renesas"
+
+config SYS_SOC
+ string
+ default "rmobile"
+
+config SYS_CONFIG_NAME
+ string
+ default "lager"
+
+endif
diff --git a/board/renesas/lager/MAINTAINERS b/board/renesas/lager/MAINTAINERS
new file mode 100644
index 0000000..a098686
--- /dev/null
+++ b/board/renesas/lager/MAINTAINERS
@@ -0,0 +1,6 @@
+LAGER BOARD
+M: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
+S: Maintained
+F: board/renesas/lager/
+F: include/configs/lager.h
+F: configs/lager_defconfig
diff --git a/board/renesas/r0p7734/Kconfig b/board/renesas/r0p7734/Kconfig
new file mode 100644
index 0000000..2eb1de2
--- /dev/null
+++ b/board/renesas/r0p7734/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_R0P7734
+
+config SYS_CPU
+ string
+ default "sh4"
+
+config SYS_BOARD
+ string
+ default "r0p7734"
+
+config SYS_VENDOR
+ string
+ default "renesas"
+
+config SYS_CONFIG_NAME
+ string
+ default "r0p7734"
+
+endif
diff --git a/board/renesas/r0p7734/MAINTAINERS b/board/renesas/r0p7734/MAINTAINERS
new file mode 100644
index 0000000..c169ad7
--- /dev/null
+++ b/board/renesas/r0p7734/MAINTAINERS
@@ -0,0 +1,7 @@
+R0P7734 BOARD
+M: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+M: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+S: Maintained
+F: board/renesas/r0p7734/
+F: include/configs/r0p7734.h
+F: configs/r0p7734_defconfig
diff --git a/board/renesas/r2dplus/Kconfig b/board/renesas/r2dplus/Kconfig
new file mode 100644
index 0000000..d674d77
--- /dev/null
+++ b/board/renesas/r2dplus/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_R2DPLUS
+
+config SYS_CPU
+ string
+ default "sh4"
+
+config SYS_BOARD
+ string
+ default "r2dplus"
+
+config SYS_VENDOR
+ string
+ default "renesas"
+
+config SYS_CONFIG_NAME
+ string
+ default "r2dplus"
+
+endif
diff --git a/board/renesas/r2dplus/MAINTAINERS b/board/renesas/r2dplus/MAINTAINERS
new file mode 100644
index 0000000..58877c5
--- /dev/null
+++ b/board/renesas/r2dplus/MAINTAINERS
@@ -0,0 +1,7 @@
+R2DPLUS BOARD
+M: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+M: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+S: Maintained
+F: board/renesas/r2dplus/
+F: include/configs/r2dplus.h
+F: configs/r2dplus_defconfig
diff --git a/board/renesas/r7780mp/Kconfig b/board/renesas/r7780mp/Kconfig
new file mode 100644
index 0000000..a862f59
--- /dev/null
+++ b/board/renesas/r7780mp/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_R7780MP
+
+config SYS_CPU
+ string
+ default "sh4"
+
+config SYS_BOARD
+ string
+ default "r7780mp"
+
+config SYS_VENDOR
+ string
+ default "renesas"
+
+config SYS_CONFIG_NAME
+ string
+ default "r7780mp"
+
+endif
diff --git a/board/renesas/r7780mp/MAINTAINERS b/board/renesas/r7780mp/MAINTAINERS
new file mode 100644
index 0000000..56ec21f
--- /dev/null
+++ b/board/renesas/r7780mp/MAINTAINERS
@@ -0,0 +1,7 @@
+R7780MP BOARD
+M: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+M: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+S: Maintained
+F: board/renesas/r7780mp/
+F: include/configs/r7780mp.h
+F: configs/r7780mp_defconfig
diff --git a/board/renesas/rsk7203/Kconfig b/board/renesas/rsk7203/Kconfig
new file mode 100644
index 0000000..61e9913
--- /dev/null
+++ b/board/renesas/rsk7203/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_RSK7203
+
+config SYS_CPU
+ string
+ default "sh2"
+
+config SYS_BOARD
+ string
+ default "rsk7203"
+
+config SYS_VENDOR
+ string
+ default "renesas"
+
+config SYS_CONFIG_NAME
+ string
+ default "rsk7203"
+
+endif
diff --git a/board/renesas/rsk7203/MAINTAINERS b/board/renesas/rsk7203/MAINTAINERS
new file mode 100644
index 0000000..18d3663
--- /dev/null
+++ b/board/renesas/rsk7203/MAINTAINERS
@@ -0,0 +1,7 @@
+RSK7203 BOARD
+M: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+M: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+S: Maintained
+F: board/renesas/rsk7203/
+F: include/configs/rsk7203.h
+F: configs/rsk7203_defconfig
diff --git a/board/renesas/rsk7264/Kconfig b/board/renesas/rsk7264/Kconfig
new file mode 100644
index 0000000..a32d3ca
--- /dev/null
+++ b/board/renesas/rsk7264/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_RSK7264
+
+config SYS_CPU
+ string
+ default "sh2"
+
+config SYS_BOARD
+ string
+ default "rsk7264"
+
+config SYS_VENDOR
+ string
+ default "renesas"
+
+config SYS_CONFIG_NAME
+ string
+ default "rsk7264"
+
+endif
diff --git a/board/renesas/rsk7264/MAINTAINERS b/board/renesas/rsk7264/MAINTAINERS
new file mode 100644
index 0000000..f6202b7
--- /dev/null
+++ b/board/renesas/rsk7264/MAINTAINERS
@@ -0,0 +1,6 @@
+RSK7264 BOARD
+M: Phil Edworthy <phil.edworthy@renesas.com>
+S: Maintained
+F: board/renesas/rsk7264/
+F: include/configs/rsk7264.h
+F: configs/rsk7264_defconfig
diff --git a/board/renesas/rsk7269/Kconfig b/board/renesas/rsk7269/Kconfig
new file mode 100644
index 0000000..c126fcb
--- /dev/null
+++ b/board/renesas/rsk7269/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_RSK7269
+
+config SYS_CPU
+ string
+ default "sh2"
+
+config SYS_BOARD
+ string
+ default "rsk7269"
+
+config SYS_VENDOR
+ string
+ default "renesas"
+
+config SYS_CONFIG_NAME
+ string
+ default "rsk7269"
+
+endif
diff --git a/board/renesas/rsk7269/MAINTAINERS b/board/renesas/rsk7269/MAINTAINERS
new file mode 100644
index 0000000..d3c77c3
--- /dev/null
+++ b/board/renesas/rsk7269/MAINTAINERS
@@ -0,0 +1,6 @@
+RSK7269 BOARD
+M: -
+S: Maintained
+F: board/renesas/rsk7269/
+F: include/configs/rsk7269.h
+F: configs/rsk7269_defconfig
diff --git a/board/renesas/sh7752evb/Kconfig b/board/renesas/sh7752evb/Kconfig
new file mode 100644
index 0000000..12e52b4
--- /dev/null
+++ b/board/renesas/sh7752evb/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_SH7752EVB
+
+config SYS_CPU
+ string
+ default "sh4"
+
+config SYS_BOARD
+ string
+ default "sh7752evb"
+
+config SYS_VENDOR
+ string
+ default "renesas"
+
+config SYS_CONFIG_NAME
+ string
+ default "sh7752evb"
+
+endif
diff --git a/board/renesas/sh7752evb/MAINTAINERS b/board/renesas/sh7752evb/MAINTAINERS
new file mode 100644
index 0000000..8910669
--- /dev/null
+++ b/board/renesas/sh7752evb/MAINTAINERS
@@ -0,0 +1,6 @@
+SH7752EVB BOARD
+M: -
+S: Maintained
+F: board/renesas/sh7752evb/
+F: include/configs/sh7752evb.h
+F: configs/sh7752evb_defconfig
diff --git a/board/renesas/sh7753evb/Kconfig b/board/renesas/sh7753evb/Kconfig
new file mode 100644
index 0000000..a1f4cd0
--- /dev/null
+++ b/board/renesas/sh7753evb/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_SH7753EVB
+
+config SYS_CPU
+ string
+ default "sh4"
+
+config SYS_BOARD
+ string
+ default "sh7753evb"
+
+config SYS_VENDOR
+ string
+ default "renesas"
+
+config SYS_CONFIG_NAME
+ string
+ default "sh7753evb"
+
+endif
diff --git a/board/renesas/sh7753evb/MAINTAINERS b/board/renesas/sh7753evb/MAINTAINERS
new file mode 100644
index 0000000..03e6c8c
--- /dev/null
+++ b/board/renesas/sh7753evb/MAINTAINERS
@@ -0,0 +1,6 @@
+SH7753EVB BOARD
+M: -
+S: Maintained
+F: board/renesas/sh7753evb/
+F: include/configs/sh7753evb.h
+F: configs/sh7753evb_defconfig
diff --git a/board/renesas/sh7757lcr/Kconfig b/board/renesas/sh7757lcr/Kconfig
new file mode 100644
index 0000000..a0e3265
--- /dev/null
+++ b/board/renesas/sh7757lcr/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_SH7757LCR
+
+config SYS_CPU
+ string
+ default "sh4"
+
+config SYS_BOARD
+ string
+ default "sh7757lcr"
+
+config SYS_VENDOR
+ string
+ default "renesas"
+
+config SYS_CONFIG_NAME
+ string
+ default "sh7757lcr"
+
+endif
diff --git a/board/renesas/sh7757lcr/MAINTAINERS b/board/renesas/sh7757lcr/MAINTAINERS
new file mode 100644
index 0000000..bbdd6d0
--- /dev/null
+++ b/board/renesas/sh7757lcr/MAINTAINERS
@@ -0,0 +1,6 @@
+SH7757LCR BOARD
+M: -
+S: Maintained
+F: board/renesas/sh7757lcr/
+F: include/configs/sh7757lcr.h
+F: configs/sh7757lcr_defconfig
diff --git a/board/renesas/sh7763rdp/Kconfig b/board/renesas/sh7763rdp/Kconfig
new file mode 100644
index 0000000..fbc11af
--- /dev/null
+++ b/board/renesas/sh7763rdp/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_SH7763RDP
+
+config SYS_CPU
+ string
+ default "sh4"
+
+config SYS_BOARD
+ string
+ default "sh7763rdp"
+
+config SYS_VENDOR
+ string
+ default "renesas"
+
+config SYS_CONFIG_NAME
+ string
+ default "sh7763rdp"
+
+endif
diff --git a/board/renesas/sh7763rdp/MAINTAINERS b/board/renesas/sh7763rdp/MAINTAINERS
new file mode 100644
index 0000000..6ee8f9f
--- /dev/null
+++ b/board/renesas/sh7763rdp/MAINTAINERS
@@ -0,0 +1,7 @@
+SH7763RDP BOARD
+M: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+M: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+S: Maintained
+F: board/renesas/sh7763rdp/
+F: include/configs/sh7763rdp.h
+F: configs/sh7763rdp_defconfig
diff --git a/board/renesas/sh7785lcr/Kconfig b/board/renesas/sh7785lcr/Kconfig
new file mode 100644
index 0000000..8939f7d
--- /dev/null
+++ b/board/renesas/sh7785lcr/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_SH7785LCR
+
+config SYS_CPU
+ string
+ default "sh4"
+
+config SYS_BOARD
+ string
+ default "sh7785lcr"
+
+config SYS_VENDOR
+ string
+ default "renesas"
+
+config SYS_CONFIG_NAME
+ string
+ default "sh7785lcr"
+
+endif
diff --git a/board/renesas/sh7785lcr/MAINTAINERS b/board/renesas/sh7785lcr/MAINTAINERS
new file mode 100644
index 0000000..0d99de6
--- /dev/null
+++ b/board/renesas/sh7785lcr/MAINTAINERS
@@ -0,0 +1,7 @@
+SH7785LCR BOARD
+M: -
+S: Maintained
+F: board/renesas/sh7785lcr/
+F: include/configs/sh7785lcr.h
+F: configs/sh7785lcr_defconfig
+F: configs/sh7785lcr_32bit_defconfig
diff --git a/board/ronetix/pm9261/Kconfig b/board/ronetix/pm9261/Kconfig
new file mode 100644
index 0000000..1cb9149
--- /dev/null
+++ b/board/ronetix/pm9261/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_PM9261
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "pm9261"
+
+config SYS_VENDOR
+ string
+ default "ronetix"
+
+config SYS_SOC
+ string
+ default "at91"
+
+config SYS_CONFIG_NAME
+ string
+ default "pm9261"
+
+endif
diff --git a/board/ronetix/pm9261/MAINTAINERS b/board/ronetix/pm9261/MAINTAINERS
new file mode 100644
index 0000000..a09b6c0
--- /dev/null
+++ b/board/ronetix/pm9261/MAINTAINERS
@@ -0,0 +1,6 @@
+PM9261 BOARD
+M: Ilko Iliev <iliev@ronetix.at>
+S: Maintained
+F: board/ronetix/pm9261/
+F: include/configs/pm9261.h
+F: configs/pm9261_defconfig
diff --git a/board/ronetix/pm9263/Kconfig b/board/ronetix/pm9263/Kconfig
new file mode 100644
index 0000000..292ccd6
--- /dev/null
+++ b/board/ronetix/pm9263/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_PM9263
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "pm9263"
+
+config SYS_VENDOR
+ string
+ default "ronetix"
+
+config SYS_SOC
+ string
+ default "at91"
+
+config SYS_CONFIG_NAME
+ string
+ default "pm9263"
+
+endif
diff --git a/board/ronetix/pm9263/MAINTAINERS b/board/ronetix/pm9263/MAINTAINERS
new file mode 100644
index 0000000..f26e82a
--- /dev/null
+++ b/board/ronetix/pm9263/MAINTAINERS
@@ -0,0 +1,6 @@
+PM9263 BOARD
+M: Ilko Iliev <iliev@ronetix.at>
+S: Maintained
+F: board/ronetix/pm9263/
+F: include/configs/pm9263.h
+F: configs/pm9263_defconfig
diff --git a/board/ronetix/pm9g45/Kconfig b/board/ronetix/pm9g45/Kconfig
new file mode 100644
index 0000000..e60e9aa
--- /dev/null
+++ b/board/ronetix/pm9g45/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_PM9G45
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "pm9g45"
+
+config SYS_VENDOR
+ string
+ default "ronetix"
+
+config SYS_SOC
+ string
+ default "at91"
+
+config SYS_CONFIG_NAME
+ string
+ default "pm9g45"
+
+endif
diff --git a/board/ronetix/pm9g45/MAINTAINERS b/board/ronetix/pm9g45/MAINTAINERS
new file mode 100644
index 0000000..255a357f
--- /dev/null
+++ b/board/ronetix/pm9g45/MAINTAINERS
@@ -0,0 +1,6 @@
+PM9G45 BOARD
+M: Ilko Iliev <iliev@ronetix.at>
+S: Maintained
+F: board/ronetix/pm9g45/
+F: include/configs/pm9g45.h
+F: configs/pm9g45_defconfig
diff --git a/board/sacsng/Kconfig b/board/sacsng/Kconfig
new file mode 100644
index 0000000..f716a91
--- /dev/null
+++ b/board/sacsng/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_SACSNG
+
+config SYS_BOARD
+ string
+ default "sacsng"
+
+config SYS_CONFIG_NAME
+ string
+ default "sacsng"
+
+endif
diff --git a/board/sacsng/MAINTAINERS b/board/sacsng/MAINTAINERS
new file mode 100644
index 0000000..c2c8ee3
--- /dev/null
+++ b/board/sacsng/MAINTAINERS
@@ -0,0 +1,6 @@
+SACSNG BOARD
+M: Jerry Van Baren <gerald.vanbaren@smiths-aerospace.com>
+S: Orphan (since 2014-06)
+F: board/sacsng/
+F: include/configs/sacsng.h
+F: configs/sacsng_defconfig
diff --git a/board/samsung/arndale/Kconfig b/board/samsung/arndale/Kconfig
new file mode 100644
index 0000000..c3af0ec
--- /dev/null
+++ b/board/samsung/arndale/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_ARNDALE
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "arndale"
+
+config SYS_VENDOR
+ string
+ default "samsung"
+
+config SYS_SOC
+ string
+ default "exynos"
+
+config SYS_CONFIG_NAME
+ string
+ default "arndale"
+
+endif
diff --git a/board/samsung/arndale/MAINTAINERS b/board/samsung/arndale/MAINTAINERS
new file mode 100644
index 0000000..0a01a07
--- /dev/null
+++ b/board/samsung/arndale/MAINTAINERS
@@ -0,0 +1,6 @@
+ARNDALE BOARD
+M: Inderpal Singh <inderpal.singh@linaro.org>
+S: Maintained
+F: board/samsung/arndale/
+F: include/configs/arndale.h
+F: configs/arndale_defconfig
diff --git a/board/samsung/goni/Kconfig b/board/samsung/goni/Kconfig
new file mode 100644
index 0000000..0be535e
--- /dev/null
+++ b/board/samsung/goni/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_S5P_GONI
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "goni"
+
+config SYS_VENDOR
+ string
+ default "samsung"
+
+config SYS_SOC
+ string
+ default "s5pc1xx"
+
+config SYS_CONFIG_NAME
+ string
+ default "s5p_goni"
+
+endif
diff --git a/board/samsung/goni/MAINTAINERS b/board/samsung/goni/MAINTAINERS
new file mode 100644
index 0000000..248ec3c
--- /dev/null
+++ b/board/samsung/goni/MAINTAINERS
@@ -0,0 +1,6 @@
+GONI BOARD
+M: Robert Baldyga <r.baldyga@samsung.com>
+S: Maintained
+F: board/samsung/goni/
+F: include/configs/s5p_goni.h
+F: configs/s5p_goni_defconfig
diff --git a/board/samsung/origen/Kconfig b/board/samsung/origen/Kconfig
new file mode 100644
index 0000000..f52de83
--- /dev/null
+++ b/board/samsung/origen/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_ORIGEN
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "origen"
+
+config SYS_VENDOR
+ string
+ default "samsung"
+
+config SYS_SOC
+ string
+ default "exynos"
+
+config SYS_CONFIG_NAME
+ string
+ default "origen"
+
+endif
diff --git a/board/samsung/origen/MAINTAINERS b/board/samsung/origen/MAINTAINERS
new file mode 100644
index 0000000..8bf373e
--- /dev/null
+++ b/board/samsung/origen/MAINTAINERS
@@ -0,0 +1,6 @@
+ORIGEN BOARD
+M: Chander Kashyap <k.chander@samsung.com>
+S: Maintained
+F: board/samsung/origen/
+F: include/configs/origen.h
+F: configs/origen_defconfig
diff --git a/board/samsung/smdk2410/Kconfig b/board/samsung/smdk2410/Kconfig
new file mode 100644
index 0000000..e921c09
--- /dev/null
+++ b/board/samsung/smdk2410/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_SMDK2410
+
+config SYS_CPU
+ string
+ default "arm920t"
+
+config SYS_BOARD
+ string
+ default "smdk2410"
+
+config SYS_VENDOR
+ string
+ default "samsung"
+
+config SYS_SOC
+ string
+ default "s3c24x0"
+
+config SYS_CONFIG_NAME
+ string
+ default "smdk2410"
+
+endif
diff --git a/board/samsung/smdk2410/MAINTAINERS b/board/samsung/smdk2410/MAINTAINERS
new file mode 100644
index 0000000..12a25e8
--- /dev/null
+++ b/board/samsung/smdk2410/MAINTAINERS
@@ -0,0 +1,6 @@
+SMDK2410 BOARD
+M: David Müller <d.mueller@elsoft.ch>
+S: Maintained
+F: board/samsung/smdk2410/
+F: include/configs/smdk2410.h
+F: configs/smdk2410_defconfig
diff --git a/board/samsung/smdk5250/Kconfig b/board/samsung/smdk5250/Kconfig
new file mode 100644
index 0000000..edebbde
--- /dev/null
+++ b/board/samsung/smdk5250/Kconfig
@@ -0,0 +1,47 @@
+if TARGET_SMDK5250
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "smdk5250"
+
+config SYS_VENDOR
+ string
+ default "samsung"
+
+config SYS_SOC
+ string
+ default "exynos"
+
+config SYS_CONFIG_NAME
+ string
+ default "smdk5250"
+
+endif
+
+if TARGET_SNOW
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "smdk5250"
+
+config SYS_VENDOR
+ string
+ default "samsung"
+
+config SYS_SOC
+ string
+ default "exynos"
+
+config SYS_CONFIG_NAME
+ string
+ default "snow"
+
+endif
diff --git a/board/samsung/smdk5250/MAINTAINERS b/board/samsung/smdk5250/MAINTAINERS
new file mode 100644
index 0000000..8a2a4aa
--- /dev/null
+++ b/board/samsung/smdk5250/MAINTAINERS
@@ -0,0 +1,12 @@
+SMDK5250 BOARD
+M: Chander Kashyap <k.chander@samsung.com>
+S: Maintained
+F: board/samsung/smdk5250/
+F: include/configs/smdk5250.h
+F: configs/smdk5250_defconfig
+
+SNOW BOARD
+M: Rajeshwari Shinde <rajeshwari.s@samsung.com>
+S: Maintained
+F: include/configs/snow.h
+F: configs/snow_defconfig
diff --git a/board/samsung/smdk5420/Kconfig b/board/samsung/smdk5420/Kconfig
new file mode 100644
index 0000000..052c275
--- /dev/null
+++ b/board/samsung/smdk5420/Kconfig
@@ -0,0 +1,47 @@
+if TARGET_PEACH_PIT
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "smdk5420"
+
+config SYS_VENDOR
+ string
+ default "samsung"
+
+config SYS_SOC
+ string
+ default "exynos"
+
+config SYS_CONFIG_NAME
+ string
+ default "peach-pit"
+
+endif
+
+if TARGET_SMDK5420
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "smdk5420"
+
+config SYS_VENDOR
+ string
+ default "samsung"
+
+config SYS_SOC
+ string
+ default "exynos"
+
+config SYS_CONFIG_NAME
+ string
+ default "smdk5420"
+
+endif
diff --git a/board/samsung/smdk5420/MAINTAINERS b/board/samsung/smdk5420/MAINTAINERS
new file mode 100644
index 0000000..c8241a8
--- /dev/null
+++ b/board/samsung/smdk5420/MAINTAINERS
@@ -0,0 +1,12 @@
+SMDK5420 BOARD
+M: Akshay Saraswat <akshay.s@samsung.com>
+S: Maintained
+F: board/samsung/smdk5420/
+F: include/configs/peach-pit.h
+F: configs/peach-pit_defconfig
+
+SMDK5420 BOARD
+M: Rajeshwari Shinde <rajeshwari.s@samsung.com>
+S: Maintained
+F: include/configs/smdk5420.h
+F: configs/smdk5420_defconfig
diff --git a/board/samsung/smdkc100/Kconfig b/board/samsung/smdkc100/Kconfig
new file mode 100644
index 0000000..9c2b4da
--- /dev/null
+++ b/board/samsung/smdkc100/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_SMDKC100
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "smdkc100"
+
+config SYS_VENDOR
+ string
+ default "samsung"
+
+config SYS_SOC
+ string
+ default "s5pc1xx"
+
+config SYS_CONFIG_NAME
+ string
+ default "smdkc100"
+
+endif
diff --git a/board/samsung/smdkc100/MAINTAINERS b/board/samsung/smdkc100/MAINTAINERS
new file mode 100644
index 0000000..39949e4
--- /dev/null
+++ b/board/samsung/smdkc100/MAINTAINERS
@@ -0,0 +1,6 @@
+SMDKC100 BOARD
+M: Minkyu Kang <mk7.kang@samsung.com>
+S: Maintained
+F: board/samsung/smdkc100/
+F: include/configs/smdkc100.h
+F: configs/smdkc100_defconfig
diff --git a/board/samsung/smdkv310/Kconfig b/board/samsung/smdkv310/Kconfig
new file mode 100644
index 0000000..e467092
--- /dev/null
+++ b/board/samsung/smdkv310/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_SMDKV310
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "smdkv310"
+
+config SYS_VENDOR
+ string
+ default "samsung"
+
+config SYS_SOC
+ string
+ default "exynos"
+
+config SYS_CONFIG_NAME
+ string
+ default "smdkv310"
+
+endif
diff --git a/board/samsung/smdkv310/MAINTAINERS b/board/samsung/smdkv310/MAINTAINERS
new file mode 100644
index 0000000..1e058cb
--- /dev/null
+++ b/board/samsung/smdkv310/MAINTAINERS
@@ -0,0 +1,6 @@
+SMDKV310 BOARD
+M: Chander Kashyap <k.chander@samsung.com>
+S: Maintained
+F: board/samsung/smdkv310/
+F: include/configs/smdkv310.h
+F: configs/smdkv310_defconfig
diff --git a/board/samsung/trats/Kconfig b/board/samsung/trats/Kconfig
new file mode 100644
index 0000000..040413e
--- /dev/null
+++ b/board/samsung/trats/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_TRATS
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "trats"
+
+config SYS_VENDOR
+ string
+ default "samsung"
+
+config SYS_SOC
+ string
+ default "exynos"
+
+config SYS_CONFIG_NAME
+ string
+ default "trats"
+
+endif
diff --git a/board/samsung/trats/MAINTAINERS b/board/samsung/trats/MAINTAINERS
new file mode 100644
index 0000000..1b219b4
--- /dev/null
+++ b/board/samsung/trats/MAINTAINERS
@@ -0,0 +1,6 @@
+TRATS BOARD
+M: Lukasz Majewski <l.majewski@samsung.com>
+S: Maintained
+F: board/samsung/trats/
+F: include/configs/trats.h
+F: configs/trats_defconfig
diff --git a/board/samsung/trats2/Kconfig b/board/samsung/trats2/Kconfig
new file mode 100644
index 0000000..a82fdfb
--- /dev/null
+++ b/board/samsung/trats2/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_TRATS2
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "trats2"
+
+config SYS_VENDOR
+ string
+ default "samsung"
+
+config SYS_SOC
+ string
+ default "exynos"
+
+config SYS_CONFIG_NAME
+ string
+ default "trats2"
+
+endif
diff --git a/board/samsung/trats2/MAINTAINERS b/board/samsung/trats2/MAINTAINERS
new file mode 100644
index 0000000..7018300
--- /dev/null
+++ b/board/samsung/trats2/MAINTAINERS
@@ -0,0 +1,6 @@
+TRATS2 BOARD
+M: Lukasz Majewski <l.majewski@samsung.com>
+S: Maintained
+F: board/samsung/trats2/
+F: include/configs/trats2.h
+F: configs/trats2_defconfig
diff --git a/board/samsung/universal_c210/Kconfig b/board/samsung/universal_c210/Kconfig
new file mode 100644
index 0000000..082168f
--- /dev/null
+++ b/board/samsung/universal_c210/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_S5PC210_UNIVERSAL
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "universal_c210"
+
+config SYS_VENDOR
+ string
+ default "samsung"
+
+config SYS_SOC
+ string
+ default "exynos"
+
+config SYS_CONFIG_NAME
+ string
+ default "s5pc210_universal"
+
+endif
diff --git a/board/samsung/universal_c210/MAINTAINERS b/board/samsung/universal_c210/MAINTAINERS
new file mode 100644
index 0000000..6760678
--- /dev/null
+++ b/board/samsung/universal_c210/MAINTAINERS
@@ -0,0 +1,6 @@
+UNIVERSAL_C210 BOARD
+M: Przemyslaw Marczak <p.marczak@samsung.com>
+S: Maintained
+F: board/samsung/universal_c210/
+F: include/configs/s5pc210_universal.h
+F: configs/s5pc210_universal_defconfig
diff --git a/board/sandbox/MAINTAINERS b/board/sandbox/MAINTAINERS
new file mode 100644
index 0000000..10d88a2
--- /dev/null
+++ b/board/sandbox/MAINTAINERS
@@ -0,0 +1,6 @@
+SANDBOX BOARD
+M: Simon Glass <sjg@chromium.org>
+S: Maintained
+F: board/sandbox/
+F: include/configs/sandbox.h
+F: configs/sandbox_defconfig
diff --git a/board/sandburst/karef/Kconfig b/board/sandburst/karef/Kconfig
new file mode 100644
index 0000000..d4aaea5
--- /dev/null
+++ b/board/sandburst/karef/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_KAREF
+
+config SYS_BOARD
+ string
+ default "karef"
+
+config SYS_VENDOR
+ string
+ default "sandburst"
+
+config SYS_CONFIG_NAME
+ string
+ default "KAREF"
+
+endif
diff --git a/board/sandburst/karef/MAINTAINERS b/board/sandburst/karef/MAINTAINERS
new file mode 100644
index 0000000..4c29ae7
--- /dev/null
+++ b/board/sandburst/karef/MAINTAINERS
@@ -0,0 +1,6 @@
+KAREF BOARD
+M: Travis Sawyer <travis.sawyer@sandburst.com>
+S: Orphan (since 2014-03)
+F: board/sandburst/karef/
+F: include/configs/KAREF.h
+F: configs/KAREF_defconfig
diff --git a/board/sandburst/metrobox/Kconfig b/board/sandburst/metrobox/Kconfig
new file mode 100644
index 0000000..be2affc
--- /dev/null
+++ b/board/sandburst/metrobox/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_METROBOX
+
+config SYS_BOARD
+ string
+ default "metrobox"
+
+config SYS_VENDOR
+ string
+ default "sandburst"
+
+config SYS_CONFIG_NAME
+ string
+ default "METROBOX"
+
+endif
diff --git a/board/sandburst/metrobox/MAINTAINERS b/board/sandburst/metrobox/MAINTAINERS
new file mode 100644
index 0000000..f5734ba
--- /dev/null
+++ b/board/sandburst/metrobox/MAINTAINERS
@@ -0,0 +1,6 @@
+METROBOX BOARD
+M: Travis Sawyer <travis.sawyer@sandburst.com>
+S: Orphan (since 2014-03)
+F: board/sandburst/metrobox/
+F: include/configs/METROBOX.h
+F: configs/METROBOX_defconfig
diff --git a/board/sandisk/sansa_fuze_plus/Kconfig b/board/sandisk/sansa_fuze_plus/Kconfig
new file mode 100644
index 0000000..eddbfd8
--- /dev/null
+++ b/board/sandisk/sansa_fuze_plus/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_SANSA_FUZE_PLUS
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "sansa_fuze_plus"
+
+config SYS_VENDOR
+ string
+ default "sandisk"
+
+config SYS_SOC
+ string
+ default "mxs"
+
+config SYS_CONFIG_NAME
+ string
+ default "sansa_fuze_plus"
+
+endif
diff --git a/board/sandisk/sansa_fuze_plus/MAINTAINERS b/board/sandisk/sansa_fuze_plus/MAINTAINERS
new file mode 100644
index 0000000..ccfd399
--- /dev/null
+++ b/board/sandisk/sansa_fuze_plus/MAINTAINERS
@@ -0,0 +1,6 @@
+SANSA_FUZE_PLUS BOARD
+M: Marek Vasut <marek.vasut@gmail.com>
+S: Maintained
+F: board/sandisk/sansa_fuze_plus/
+F: include/configs/sansa_fuze_plus.h
+F: configs/sansa_fuze_plus_defconfig
diff --git a/board/sandpoint/Kconfig b/board/sandpoint/Kconfig
new file mode 100644
index 0000000..3cc99de
--- /dev/null
+++ b/board/sandpoint/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_SANDPOINT8240
+
+config SYS_BOARD
+ string
+ default "sandpoint"
+
+config SYS_CONFIG_NAME
+ string
+ default "Sandpoint8240"
+
+endif
+
+if TARGET_SANDPOINT8245
+
+config SYS_BOARD
+ string
+ default "sandpoint"
+
+config SYS_CONFIG_NAME
+ string
+ default "Sandpoint8245"
+
+endif
diff --git a/board/sandpoint/MAINTAINERS b/board/sandpoint/MAINTAINERS
new file mode 100644
index 0000000..f28c309
--- /dev/null
+++ b/board/sandpoint/MAINTAINERS
@@ -0,0 +1,12 @@
+SANDPOINT BOARD
+M: Wolfgang Denk <wd@denx.de>
+S: Maintained
+F: board/sandpoint/
+F: include/configs/Sandpoint8240.h
+F: configs/Sandpoint8240_defconfig
+
+SANDPOINT8245 BOARD
+M: Jim Thompson <jim@musenki.com>
+S: Orphan (since 2014-04)
+F: include/configs/Sandpoint8245.h
+F: configs/Sandpoint8245_defconfig
diff --git a/board/sbc405/Kconfig b/board/sbc405/Kconfig
new file mode 100644
index 0000000..77082bf
--- /dev/null
+++ b/board/sbc405/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_SBC405
+
+config SYS_BOARD
+ string
+ default "sbc405"
+
+config SYS_CONFIG_NAME
+ string
+ default "sbc405"
+
+endif
diff --git a/board/sbc405/MAINTAINERS b/board/sbc405/MAINTAINERS
new file mode 100644
index 0000000..dbb4451
--- /dev/null
+++ b/board/sbc405/MAINTAINERS
@@ -0,0 +1,6 @@
+SBC405 BOARD
+M: -
+S: Maintained
+F: board/sbc405/
+F: include/configs/sbc405.h
+F: configs/sbc405_defconfig
diff --git a/board/sbc8349/Kconfig b/board/sbc8349/Kconfig
new file mode 100644
index 0000000..5b851f8
--- /dev/null
+++ b/board/sbc8349/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_SBC8349
+
+config SYS_BOARD
+ string
+ default "sbc8349"
+
+config SYS_CONFIG_NAME
+ string
+ default "sbc8349"
+
+endif
diff --git a/board/sbc8349/MAINTAINERS b/board/sbc8349/MAINTAINERS
new file mode 100644
index 0000000..af95c1d
--- /dev/null
+++ b/board/sbc8349/MAINTAINERS
@@ -0,0 +1,8 @@
+SBC8349 BOARD
+M: Paul Gortmaker <paul.gortmaker@windriver.com>
+S: Maintained
+F: board/sbc8349/
+F: include/configs/sbc8349.h
+F: configs/sbc8349_defconfig
+F: configs/sbc8349_PCI_33_defconfig
+F: configs/sbc8349_PCI_66_defconfig
diff --git a/board/sbc8548/Kconfig b/board/sbc8548/Kconfig
new file mode 100644
index 0000000..5223d3d
--- /dev/null
+++ b/board/sbc8548/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_SBC8548
+
+config SYS_BOARD
+ string
+ default "sbc8548"
+
+config SYS_CONFIG_NAME
+ string
+ default "sbc8548"
+
+endif
diff --git a/board/sbc8548/MAINTAINERS b/board/sbc8548/MAINTAINERS
new file mode 100644
index 0000000..ba1f247
--- /dev/null
+++ b/board/sbc8548/MAINTAINERS
@@ -0,0 +1,10 @@
+SBC8548 BOARD
+M: Paul Gortmaker <paul.gortmaker@windriver.com>
+S: Maintained
+F: board/sbc8548/
+F: include/configs/sbc8548.h
+F: configs/sbc8548_defconfig
+F: configs/sbc8548_PCI_33_defconfig
+F: configs/sbc8548_PCI_33_PCIE_defconfig
+F: configs/sbc8548_PCI_66_defconfig
+F: configs/sbc8548_PCI_66_PCIE_defconfig
diff --git a/board/sbc8641d/Kconfig b/board/sbc8641d/Kconfig
new file mode 100644
index 0000000..7f77bca
--- /dev/null
+++ b/board/sbc8641d/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_SBC8641D
+
+config SYS_BOARD
+ string
+ default "sbc8641d"
+
+config SYS_CONFIG_NAME
+ string
+ default "sbc8641d"
+
+endif
diff --git a/board/sbc8641d/MAINTAINERS b/board/sbc8641d/MAINTAINERS
new file mode 100644
index 0000000..a50b541
--- /dev/null
+++ b/board/sbc8641d/MAINTAINERS
@@ -0,0 +1,6 @@
+SBC8641D BOARD
+M: Paul Gortmaker <paul.gortmaker@windriver.com>
+S: Maintained
+F: board/sbc8641d/
+F: include/configs/sbc8641d.h
+F: configs/sbc8641d_defconfig
diff --git a/board/sc3/Kconfig b/board/sc3/Kconfig
new file mode 100644
index 0000000..74694be
--- /dev/null
+++ b/board/sc3/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_SC3
+
+config SYS_BOARD
+ string
+ default "sc3"
+
+config SYS_CONFIG_NAME
+ string
+ default "sc3"
+
+endif
diff --git a/board/sc3/MAINTAINERS b/board/sc3/MAINTAINERS
new file mode 100644
index 0000000..b86c6e6
--- /dev/null
+++ b/board/sc3/MAINTAINERS
@@ -0,0 +1,6 @@
+SC3 BOARD
+M: Heiko Schocher <hs@denx.de>
+S: Maintained
+F: board/sc3/
+F: include/configs/sc3.h
+F: configs/sc3_defconfig
diff --git a/board/scb9328/Kconfig b/board/scb9328/Kconfig
new file mode 100644
index 0000000..040d055
--- /dev/null
+++ b/board/scb9328/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_SCB9328
+
+config SYS_CPU
+ string
+ default "arm920t"
+
+config SYS_BOARD
+ string
+ default "scb9328"
+
+config SYS_SOC
+ string
+ default "imx"
+
+config SYS_CONFIG_NAME
+ string
+ default "scb9328"
+
+endif
diff --git a/board/scb9328/MAINTAINERS b/board/scb9328/MAINTAINERS
new file mode 100644
index 0000000..0917266
--- /dev/null
+++ b/board/scb9328/MAINTAINERS
@@ -0,0 +1,6 @@
+SCB9328 BOARD
+M: Torsten Koschorrek <koschorrek@synertronixx.de>
+S: Maintained
+F: board/scb9328/
+F: include/configs/scb9328.h
+F: configs/scb9328_defconfig
diff --git a/board/schulercontrol/sc_sps_1/Kconfig b/board/schulercontrol/sc_sps_1/Kconfig
new file mode 100644
index 0000000..30071ed
--- /dev/null
+++ b/board/schulercontrol/sc_sps_1/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_SC_SPS_1
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "sc_sps_1"
+
+config SYS_VENDOR
+ string
+ default "schulercontrol"
+
+config SYS_SOC
+ string
+ default "mxs"
+
+config SYS_CONFIG_NAME
+ string
+ default "sc_sps_1"
+
+endif
diff --git a/board/schulercontrol/sc_sps_1/MAINTAINERS b/board/schulercontrol/sc_sps_1/MAINTAINERS
new file mode 100644
index 0000000..74849cd
--- /dev/null
+++ b/board/schulercontrol/sc_sps_1/MAINTAINERS
@@ -0,0 +1,6 @@
+SC_SPS_1 BOARD
+M: Marek Vasut <marek.vasut@gmail.com>
+S: Maintained
+F: board/schulercontrol/sc_sps_1/
+F: include/configs/sc_sps_1.h
+F: configs/sc_sps_1_defconfig
diff --git a/board/shmin/Kconfig b/board/shmin/Kconfig
new file mode 100644
index 0000000..cb9fb9f
--- /dev/null
+++ b/board/shmin/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_SHMIN
+
+config SYS_CPU
+ string
+ default "sh3"
+
+config SYS_BOARD
+ string
+ default "shmin"
+
+config SYS_CONFIG_NAME
+ string
+ default "shmin"
+
+endif
diff --git a/board/shmin/MAINTAINERS b/board/shmin/MAINTAINERS
new file mode 100644
index 0000000..5dee37b
--- /dev/null
+++ b/board/shmin/MAINTAINERS
@@ -0,0 +1,7 @@
+SHMIN BOARD
+M: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+M: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+S: Maintained
+F: board/shmin/
+F: include/configs/shmin.h
+F: configs/shmin_defconfig
diff --git a/board/siemens/corvus/Kconfig b/board/siemens/corvus/Kconfig
new file mode 100644
index 0000000..e24364c
--- /dev/null
+++ b/board/siemens/corvus/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_CORVUS
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "corvus"
+
+config SYS_VENDOR
+ string
+ default "siemens"
+
+config SYS_SOC
+ string
+ default "at91"
+
+config SYS_CONFIG_NAME
+ string
+ default "corvus"
+
+endif
diff --git a/board/siemens/corvus/MAINTAINERS b/board/siemens/corvus/MAINTAINERS
new file mode 100644
index 0000000..59176aa
--- /dev/null
+++ b/board/siemens/corvus/MAINTAINERS
@@ -0,0 +1,6 @@
+CORVUS BOARD
+M: Heiko Schocher <hs@denx.de>
+S: Maintained
+F: board/siemens/corvus/
+F: include/configs/corvus.h
+F: configs/corvus_defconfig
diff --git a/board/siemens/draco/Kconfig b/board/siemens/draco/Kconfig
new file mode 100644
index 0000000..c6dac1c
--- /dev/null
+++ b/board/siemens/draco/Kconfig
@@ -0,0 +1,47 @@
+if TARGET_DRACO
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "draco"
+
+config SYS_VENDOR
+ string
+ default "siemens"
+
+config SYS_SOC
+ string
+ default "am33xx"
+
+config SYS_CONFIG_NAME
+ string
+ default "draco"
+
+endif
+
+if TARGET_DXR2
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "draco"
+
+config SYS_VENDOR
+ string
+ default "siemens"
+
+config SYS_SOC
+ string
+ default "am33xx"
+
+config SYS_CONFIG_NAME
+ string
+ default "dxr2"
+
+endif
diff --git a/board/siemens/draco/MAINTAINERS b/board/siemens/draco/MAINTAINERS
new file mode 100644
index 0000000..f6b68ca
--- /dev/null
+++ b/board/siemens/draco/MAINTAINERS
@@ -0,0 +1,8 @@
+DRACO BOARD
+M: Roger Meier <r.meier@siemens.com>
+S: Maintained
+F: board/siemens/draco/
+F: include/configs/draco.h
+F: configs/draco_defconfig
+F: include/configs/dxr2.h
+F: configs/dxr2_defconfig
diff --git a/board/siemens/pxm2/Kconfig b/board/siemens/pxm2/Kconfig
new file mode 100644
index 0000000..db69537
--- /dev/null
+++ b/board/siemens/pxm2/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_PXM2
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "pxm2"
+
+config SYS_VENDOR
+ string
+ default "siemens"
+
+config SYS_SOC
+ string
+ default "am33xx"
+
+config SYS_CONFIG_NAME
+ string
+ default "pxm2"
+
+endif
diff --git a/board/siemens/pxm2/MAINTAINERS b/board/siemens/pxm2/MAINTAINERS
new file mode 100644
index 0000000..fa734c9
--- /dev/null
+++ b/board/siemens/pxm2/MAINTAINERS
@@ -0,0 +1,6 @@
+PXM2 BOARD
+M: Roger Meier <r.meier@siemens.com>
+S: Maintained
+F: board/siemens/pxm2/
+F: include/configs/pxm2.h
+F: configs/pxm2_defconfig
diff --git a/board/siemens/rut/Kconfig b/board/siemens/rut/Kconfig
new file mode 100644
index 0000000..c4d9e7e
--- /dev/null
+++ b/board/siemens/rut/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_RUT
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "rut"
+
+config SYS_VENDOR
+ string
+ default "siemens"
+
+config SYS_SOC
+ string
+ default "am33xx"
+
+config SYS_CONFIG_NAME
+ string
+ default "rut"
+
+endif
diff --git a/board/siemens/rut/MAINTAINERS b/board/siemens/rut/MAINTAINERS
new file mode 100644
index 0000000..8c1b770
--- /dev/null
+++ b/board/siemens/rut/MAINTAINERS
@@ -0,0 +1,6 @@
+RUT BOARD
+M: Roger Meier <r.meier@siemens.com>
+S: Maintained
+F: board/siemens/rut/
+F: include/configs/rut.h
+F: configs/rut_defconfig
diff --git a/board/siemens/taurus/Kconfig b/board/siemens/taurus/Kconfig
new file mode 100644
index 0000000..3ef14c6
--- /dev/null
+++ b/board/siemens/taurus/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_TAURUS
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "taurus"
+
+config SYS_VENDOR
+ string
+ default "siemens"
+
+config SYS_SOC
+ string
+ default "at91"
+
+config SYS_CONFIG_NAME
+ string
+ default "taurus"
+
+endif
diff --git a/board/siemens/taurus/MAINTAINERS b/board/siemens/taurus/MAINTAINERS
new file mode 100644
index 0000000..74e3518
--- /dev/null
+++ b/board/siemens/taurus/MAINTAINERS
@@ -0,0 +1,7 @@
+TAURUS BOARD
+M: Heiko Schocher <hs@denx.de>
+S: Maintained
+F: board/siemens/taurus/
+F: include/configs/taurus.h
+F: configs/axm_defconfig
+F: configs/taurus_defconfig
diff --git a/board/silica/pengwyn/Kconfig b/board/silica/pengwyn/Kconfig
new file mode 100644
index 0000000..abf86b1
--- /dev/null
+++ b/board/silica/pengwyn/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_PENGWYN
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "pengwyn"
+
+config SYS_VENDOR
+ string
+ default "silica"
+
+config SYS_SOC
+ string
+ default "am33xx"
+
+config SYS_CONFIG_NAME
+ string
+ default "pengwyn"
+
+endif
diff --git a/board/silica/pengwyn/MAINTAINERS b/board/silica/pengwyn/MAINTAINERS
new file mode 100644
index 0000000..14ef775
--- /dev/null
+++ b/board/silica/pengwyn/MAINTAINERS
@@ -0,0 +1,6 @@
+PENGWYN BOARD
+M: Lothar Felten <lothar.felten@gmail.com>
+S: Maintained
+F: board/silica/pengwyn/
+F: include/configs/pengwyn.h
+F: configs/pengwyn_defconfig
diff --git a/board/sixnet/Kconfig b/board/sixnet/Kconfig
new file mode 100644
index 0000000..2c1b995
--- /dev/null
+++ b/board/sixnet/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_SXNI855T
+
+config SYS_BOARD
+ string
+ default "sixnet"
+
+config SYS_CONFIG_NAME
+ string
+ default "SXNI855T"
+
+endif
diff --git a/board/sixnet/MAINTAINERS b/board/sixnet/MAINTAINERS
new file mode 100644
index 0000000..eedb409
--- /dev/null
+++ b/board/sixnet/MAINTAINERS
@@ -0,0 +1,6 @@
+SIXNET BOARD
+M: Dave Ellis <DGE@sixnetio.com>
+S: Orphan (since 2014-06)
+F: board/sixnet/
+F: include/configs/SXNI855T.h
+F: configs/SXNI855T_defconfig
diff --git a/board/socrates/Kconfig b/board/socrates/Kconfig
new file mode 100644
index 0000000..06abd9d
--- /dev/null
+++ b/board/socrates/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_SOCRATES
+
+config SYS_BOARD
+ string
+ default "socrates"
+
+config SYS_CONFIG_NAME
+ string
+ default "socrates"
+
+endif
diff --git a/board/socrates/MAINTAINERS b/board/socrates/MAINTAINERS
new file mode 100644
index 0000000..fc3e11d
--- /dev/null
+++ b/board/socrates/MAINTAINERS
@@ -0,0 +1,6 @@
+SOCRATES BOARD
+M: -
+S: Maintained
+F: board/socrates/
+F: include/configs/socrates.h
+F: configs/socrates_defconfig
diff --git a/board/solidrun/hummingboard/Kconfig b/board/solidrun/hummingboard/Kconfig
new file mode 100644
index 0000000..a412347
--- /dev/null
+++ b/board/solidrun/hummingboard/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_HUMMINGBOARD
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "hummingboard"
+
+config SYS_VENDOR
+ string
+ default "solidrun"
+
+config SYS_SOC
+ string
+ default "mx6"
+
+config SYS_CONFIG_NAME
+ string
+ default "hummingboard"
+
+endif
diff --git a/board/solidrun/hummingboard/MAINTAINERS b/board/solidrun/hummingboard/MAINTAINERS
new file mode 100644
index 0000000..c0c062a
--- /dev/null
+++ b/board/solidrun/hummingboard/MAINTAINERS
@@ -0,0 +1,6 @@
+HUMMINGBOARD BOARD
+M: Jon Nettleton <jon.nettleton@gmail.com>
+S: Maintained
+F: board/solidrun/hummingboard/
+F: include/configs/hummingboard.h
+F: configs/hummingboard_solo_defconfig
diff --git a/board/spd8xx/Kconfig b/board/spd8xx/Kconfig
new file mode 100644
index 0000000..4845cba
--- /dev/null
+++ b/board/spd8xx/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_SPD823TS
+
+config SYS_BOARD
+ string
+ default "spd8xx"
+
+config SYS_CONFIG_NAME
+ string
+ default "SPD823TS"
+
+endif
diff --git a/board/spd8xx/MAINTAINERS b/board/spd8xx/MAINTAINERS
new file mode 100644
index 0000000..7ed9423
--- /dev/null
+++ b/board/spd8xx/MAINTAINERS
@@ -0,0 +1,6 @@
+SPD8XX BOARD
+M: Wolfgang Denk <wd@denx.de>
+S: Maintained
+F: board/spd8xx/
+F: include/configs/SPD823TS.h
+F: configs/SPD823TS_defconfig
diff --git a/board/spear/spear300/Kconfig b/board/spear/spear300/Kconfig
new file mode 100644
index 0000000..7e49e34
--- /dev/null
+++ b/board/spear/spear300/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_SPEAR300
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "spear300"
+
+config SYS_VENDOR
+ string
+ default "spear"
+
+config SYS_SOC
+ string
+ default "spear"
+
+config SYS_CONFIG_NAME
+ string
+ default "spear3xx_evb"
+
+endif
diff --git a/board/spear/spear300/MAINTAINERS b/board/spear/spear300/MAINTAINERS
new file mode 100644
index 0000000..15164fe
--- /dev/null
+++ b/board/spear/spear300/MAINTAINERS
@@ -0,0 +1,13 @@
+SPEAR300 BOARD
+M: Vipin Kumar <vipin.kumar@st.com>
+S: Maintained
+F: board/spear/spear300/
+F: include/configs/spear3xx_evb.h
+F: configs/spear300_defconfig
+
+SPEAR300_NAND BOARD
+M: -
+S: Maintained
+F: configs/spear300_nand_defconfig
+F: configs/spear300_usbtty_defconfig
+F: configs/spear300_usbtty_nand_defconfig
diff --git a/board/spear/spear310/Kconfig b/board/spear/spear310/Kconfig
new file mode 100644
index 0000000..de71040
--- /dev/null
+++ b/board/spear/spear310/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_SPEAR310
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "spear310"
+
+config SYS_VENDOR
+ string
+ default "spear"
+
+config SYS_SOC
+ string
+ default "spear"
+
+config SYS_CONFIG_NAME
+ string
+ default "spear3xx_evb"
+
+endif
diff --git a/board/spear/spear310/MAINTAINERS b/board/spear/spear310/MAINTAINERS
new file mode 100644
index 0000000..3a7e610
--- /dev/null
+++ b/board/spear/spear310/MAINTAINERS
@@ -0,0 +1,15 @@
+SPEAR310 BOARD
+M: Vipin Kumar <vipin.kumar@st.com>
+S: Maintained
+F: board/spear/spear310/
+F: include/configs/spear3xx_evb.h
+F: configs/spear310_defconfig
+
+SPEAR310_NAND BOARD
+M: -
+S: Maintained
+F: configs/spear310_nand_defconfig
+F: configs/spear310_pnor_defconfig
+F: configs/spear310_usbtty_defconfig
+F: configs/spear310_usbtty_nand_defconfig
+F: configs/spear310_usbtty_pnor_defconfig
diff --git a/board/spear/spear320/Kconfig b/board/spear/spear320/Kconfig
new file mode 100644
index 0000000..4cf6baf
--- /dev/null
+++ b/board/spear/spear320/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_SPEAR320
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "spear320"
+
+config SYS_VENDOR
+ string
+ default "spear"
+
+config SYS_SOC
+ string
+ default "spear"
+
+config SYS_CONFIG_NAME
+ string
+ default "spear3xx_evb"
+
+endif
diff --git a/board/spear/spear320/MAINTAINERS b/board/spear/spear320/MAINTAINERS
new file mode 100644
index 0000000..414beca
--- /dev/null
+++ b/board/spear/spear320/MAINTAINERS
@@ -0,0 +1,15 @@
+SPEAR320 BOARD
+M: Vipin Kumar <vipin.kumar@st.com>
+S: Maintained
+F: board/spear/spear320/
+F: include/configs/spear3xx_evb.h
+F: configs/spear320_defconfig
+
+SPEAR320_NAND BOARD
+M: -
+S: Maintained
+F: configs/spear320_nand_defconfig
+F: configs/spear320_pnor_defconfig
+F: configs/spear320_usbtty_defconfig
+F: configs/spear320_usbtty_nand_defconfig
+F: configs/spear320_usbtty_pnor_defconfig
diff --git a/board/spear/spear600/Kconfig b/board/spear/spear600/Kconfig
new file mode 100644
index 0000000..d62f9e7
--- /dev/null
+++ b/board/spear/spear600/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_SPEAR600
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "spear600"
+
+config SYS_VENDOR
+ string
+ default "spear"
+
+config SYS_SOC
+ string
+ default "spear"
+
+config SYS_CONFIG_NAME
+ string
+ default "spear6xx_evb"
+
+endif
diff --git a/board/spear/spear600/MAINTAINERS b/board/spear/spear600/MAINTAINERS
new file mode 100644
index 0000000..a978fdd
--- /dev/null
+++ b/board/spear/spear600/MAINTAINERS
@@ -0,0 +1,13 @@
+SPEAR600 BOARD
+M: Vipin Kumar <vipin.kumar@st.com>
+S: Maintained
+F: board/spear/spear600/
+F: include/configs/spear6xx_evb.h
+F: configs/spear600_defconfig
+
+SPEAR600_NAND BOARD
+M: -
+S: Maintained
+F: configs/spear600_nand_defconfig
+F: configs/spear600_usbtty_defconfig
+F: configs/spear600_usbtty_nand_defconfig
diff --git a/board/spear/x600/Kconfig b/board/spear/x600/Kconfig
new file mode 100644
index 0000000..a924559
--- /dev/null
+++ b/board/spear/x600/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_X600
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "x600"
+
+config SYS_VENDOR
+ string
+ default "spear"
+
+config SYS_SOC
+ string
+ default "spear"
+
+config SYS_CONFIG_NAME
+ string
+ default "x600"
+
+endif
diff --git a/board/spear/x600/MAINTAINERS b/board/spear/x600/MAINTAINERS
new file mode 100644
index 0000000..bff6824
--- /dev/null
+++ b/board/spear/x600/MAINTAINERS
@@ -0,0 +1,6 @@
+X600 BOARD
+M: Stefan Roese <sr@denx.de>
+S: Maintained
+F: board/spear/x600/
+F: include/configs/x600.h
+F: configs/x600_defconfig
diff --git a/board/st-ericsson/snowball/Kconfig b/board/st-ericsson/snowball/Kconfig
new file mode 100644
index 0000000..b5ead0f
--- /dev/null
+++ b/board/st-ericsson/snowball/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_SNOWBALL
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "snowball"
+
+config SYS_VENDOR
+ string
+ default "st-ericsson"
+
+config SYS_SOC
+ string
+ default "u8500"
+
+config SYS_CONFIG_NAME
+ string
+ default "snowball"
+
+endif
diff --git a/board/st-ericsson/snowball/MAINTAINERS b/board/st-ericsson/snowball/MAINTAINERS
new file mode 100644
index 0000000..132fc52
--- /dev/null
+++ b/board/st-ericsson/snowball/MAINTAINERS
@@ -0,0 +1,6 @@
+SNOWBALL BOARD
+M: Mathieu Poirier <mathieu.poirier@linaro.org>
+S: Maintained
+F: board/st-ericsson/snowball/
+F: include/configs/snowball.h
+F: configs/snowball_defconfig
diff --git a/board/st-ericsson/u8500/Kconfig b/board/st-ericsson/u8500/Kconfig
new file mode 100644
index 0000000..bbcfdaf
--- /dev/null
+++ b/board/st-ericsson/u8500/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_U8500_HREF
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "u8500"
+
+config SYS_VENDOR
+ string
+ default "st-ericsson"
+
+config SYS_SOC
+ string
+ default "u8500"
+
+config SYS_CONFIG_NAME
+ string
+ default "u8500_href"
+
+endif
diff --git a/board/st-ericsson/u8500/MAINTAINERS b/board/st-ericsson/u8500/MAINTAINERS
new file mode 100644
index 0000000..54e7921
--- /dev/null
+++ b/board/st-ericsson/u8500/MAINTAINERS
@@ -0,0 +1,6 @@
+U8500 BOARD
+M: -
+S: Maintained
+F: board/st-ericsson/u8500/
+F: include/configs/u8500_href.h
+F: configs/u8500_href_defconfig
diff --git a/board/st/nhk8815/Kconfig b/board/st/nhk8815/Kconfig
new file mode 100644
index 0000000..ec3f880
--- /dev/null
+++ b/board/st/nhk8815/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_NHK8815
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "nhk8815"
+
+config SYS_VENDOR
+ string
+ default "st"
+
+config SYS_SOC
+ string
+ default "nomadik"
+
+config SYS_CONFIG_NAME
+ string
+ default "nhk8815"
+
+endif
diff --git a/board/st/nhk8815/MAINTAINERS b/board/st/nhk8815/MAINTAINERS
new file mode 100644
index 0000000..72c3a8d
--- /dev/null
+++ b/board/st/nhk8815/MAINTAINERS
@@ -0,0 +1,8 @@
+NHK8815 BOARD
+M: Nomadik Linux Team <STN_WMM_nomadik_linux@list.st.com>
+M: Alessandro Rubini <rubini@unipv.it>
+S: Maintained
+F: board/st/nhk8815/
+F: include/configs/nhk8815.h
+F: configs/nhk8815_defconfig
+F: configs/nhk8815_onenand_defconfig
diff --git a/board/stx/stxgp3/Kconfig b/board/stx/stxgp3/Kconfig
new file mode 100644
index 0000000..aac2940
--- /dev/null
+++ b/board/stx/stxgp3/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_STXGP3
+
+config SYS_BOARD
+ string
+ default "stxgp3"
+
+config SYS_VENDOR
+ string
+ default "stx"
+
+config SYS_CONFIG_NAME
+ string
+ default "stxgp3"
+
+endif
diff --git a/board/stx/stxgp3/MAINTAINERS b/board/stx/stxgp3/MAINTAINERS
new file mode 100644
index 0000000..6f485d4
--- /dev/null
+++ b/board/stx/stxgp3/MAINTAINERS
@@ -0,0 +1,6 @@
+STXGP3 BOARD
+M: Dan Malek <dan@embeddedalley.com>
+S: Orphan (since 2014-06)
+F: board/stx/stxgp3/
+F: include/configs/stxgp3.h
+F: configs/stxgp3_defconfig
diff --git a/board/stx/stxssa/Kconfig b/board/stx/stxssa/Kconfig
new file mode 100644
index 0000000..06dd8be
--- /dev/null
+++ b/board/stx/stxssa/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_STXSSA
+
+config SYS_BOARD
+ string
+ default "stxssa"
+
+config SYS_VENDOR
+ string
+ default "stx"
+
+config SYS_CONFIG_NAME
+ string
+ default "stxssa"
+
+endif
diff --git a/board/stx/stxssa/MAINTAINERS b/board/stx/stxssa/MAINTAINERS
new file mode 100644
index 0000000..f56adf0
--- /dev/null
+++ b/board/stx/stxssa/MAINTAINERS
@@ -0,0 +1,7 @@
+STXSSA BOARD
+M: Dan Malek <dan@embeddedalley.com>
+S: Orphan (since 2014-06)
+F: board/stx/stxssa/
+F: include/configs/stxssa.h
+F: configs/stxssa_defconfig
+F: configs/stxssa_4M_defconfig
diff --git a/board/stx/stxxtc/Kconfig b/board/stx/stxxtc/Kconfig
new file mode 100644
index 0000000..c444cff
--- /dev/null
+++ b/board/stx/stxxtc/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_STXXTC
+
+config SYS_BOARD
+ string
+ default "stxxtc"
+
+config SYS_VENDOR
+ string
+ default "stx"
+
+config SYS_CONFIG_NAME
+ string
+ default "stxxtc"
+
+endif
diff --git a/board/stx/stxxtc/MAINTAINERS b/board/stx/stxxtc/MAINTAINERS
new file mode 100644
index 0000000..5ea36b2
--- /dev/null
+++ b/board/stx/stxxtc/MAINTAINERS
@@ -0,0 +1,6 @@
+STXXTC BOARD
+M: Dan Malek <dan@embeddedalley.com>
+S: Orphan (since 2014-06)
+F: board/stx/stxxtc/
+F: include/configs/stxxtc.h
+F: configs/stxxtc_defconfig
diff --git a/board/sunxi/Kconfig b/board/sunxi/Kconfig
new file mode 100644
index 0000000..b06b5e0
--- /dev/null
+++ b/board/sunxi/Kconfig
@@ -0,0 +1,59 @@
+if TARGET_SUN4I
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "sunxi"
+
+config SYS_SOC
+ string
+ default "sunxi"
+
+config SYS_CONFIG_NAME
+ string
+ default "sun4i"
+
+endif
+
+if TARGET_SUN5I
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "sunxi"
+
+config SYS_SOC
+ string
+ default "sunxi"
+
+config SYS_CONFIG_NAME
+ string
+ default "sun5i"
+
+endif
+
+if TARGET_SUN7I
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "sunxi"
+
+config SYS_SOC
+ string
+ default "sunxi"
+
+config SYS_CONFIG_NAME
+ string
+ default "sun7i"
+
+endif
diff --git a/board/sunxi/MAINTAINERS b/board/sunxi/MAINTAINERS
new file mode 100644
index 0000000..1a56608
--- /dev/null
+++ b/board/sunxi/MAINTAINERS
@@ -0,0 +1,19 @@
+SUNXI BOARD
+M: Hans de Goede <hdegoede@redhat.com>
+S: Maintained
+F: board/sunxi/
+F: include/configs/sun5i.h
+F: configs/A13-OLinuXinoM_defconfig
+F: include/configs/sun4i.h
+F: configs/Cubieboard_defconfig
+F: configs/r7-tv-dongle_defconfig
+
+CUBIEBOARD2 BOARD
+M: Ian Campbell <ijc@hellion.org.uk>
+M: Hans de Goede <hdegoede@redhat.com>
+S: Maintained
+F: include/configs/sun7i.h
+F: configs/Cubieboard2_defconfig
+F: configs/Cubieboard2_FEL_defconfig
+F: configs/Cubietruck_defconfig
+F: configs/Cubietruck_FEL_defconfig
diff --git a/board/sunxi/Makefile b/board/sunxi/Makefile
index cbf8f08..62acb8f 100644
--- a/board/sunxi/Makefile
+++ b/board/sunxi/Makefile
@@ -10,4 +10,8 @@
#
obj-y += board.o
obj-$(CONFIG_SUNXI_GMAC) += gmac.o
+obj-$(CONFIG_A13_OLINUXINOM) += dram_a13_oli_micro.o
+obj-$(CONFIG_CUBIEBOARD) += dram_cubieboard.o
+obj-$(CONFIG_CUBIEBOARD2) += dram_cubieboard2.o
obj-$(CONFIG_CUBIETRUCK) += dram_cubietruck.o
+obj-$(CONFIG_R7DONGLE) += dram_r7dongle.o
diff --git a/board/sunxi/board.c b/board/sunxi/board.c
index b05d0b9..2179e23 100644
--- a/board/sunxi/board.c
+++ b/board/sunxi/board.c
@@ -12,10 +12,19 @@
*/
#include <common.h>
+#ifdef CONFIG_AXP152_POWER
+#include <axp152.h>
+#endif
+#ifdef CONFIG_AXP209_POWER
+#include <axp209.h>
+#endif
#include <asm/arch/clock.h>
+#include <asm/arch/cpu.h>
#include <asm/arch/dram.h>
#include <asm/arch/gpio.h>
#include <asm/arch/mmc.h>
+#include <asm/io.h>
+#include <net.h>
DECLARE_GLOBAL_DATA_PTR;
@@ -106,15 +115,73 @@ int board_mmc_init(bd_t *bis)
}
#endif
+void i2c_init_board(void)
+{
+ sunxi_gpio_set_cfgpin(SUNXI_GPB(0), SUNXI_GPB0_TWI0);
+ sunxi_gpio_set_cfgpin(SUNXI_GPB(1), SUNXI_GPB0_TWI0);
+ clock_twi_onoff(0, 1);
+}
+
#ifdef CONFIG_SPL_BUILD
void sunxi_board_init(void)
{
+ int power_failed = 0;
unsigned long ramsize;
+#ifdef CONFIG_AXP152_POWER
+ power_failed = axp152_init();
+ power_failed |= axp152_set_dcdc2(1400);
+ power_failed |= axp152_set_dcdc3(1500);
+ power_failed |= axp152_set_dcdc4(1250);
+ power_failed |= axp152_set_ldo2(3000);
+#endif
+#ifdef CONFIG_AXP209_POWER
+ power_failed |= axp209_init();
+ power_failed |= axp209_set_dcdc2(1400);
+ power_failed |= axp209_set_dcdc3(1250);
+ power_failed |= axp209_set_ldo2(3000);
+ power_failed |= axp209_set_ldo3(2800);
+ power_failed |= axp209_set_ldo4(2800);
+#endif
+
printf("DRAM:");
ramsize = sunxi_dram_init();
printf(" %lu MiB\n", ramsize >> 20);
if (!ramsize)
hang();
+
+ /*
+ * Only clock up the CPU to full speed if we are reasonably
+ * assured it's being powered with suitable core voltage
+ */
+ if (!power_failed)
+ clock_set_pll1(CONFIG_CLK_FULL_SPEED);
+ else
+ printf("Failed to set core voltage! Can't set CPU frequency\n");
+}
+#endif
+
+#ifdef CONFIG_MISC_INIT_R
+int misc_init_r(void)
+{
+ if (!getenv("ethaddr")) {
+ uint32_t reg_val = readl(SUNXI_SID_BASE);
+
+ if (reg_val) {
+ uint8_t mac_addr[6];
+
+ mac_addr[0] = 0x02; /* Non OUI / registered MAC address */
+ mac_addr[1] = (reg_val >> 0) & 0xff;
+ reg_val = readl(SUNXI_SID_BASE + 0x0c);
+ mac_addr[2] = (reg_val >> 24) & 0xff;
+ mac_addr[3] = (reg_val >> 16) & 0xff;
+ mac_addr[4] = (reg_val >> 8) & 0xff;
+ mac_addr[5] = (reg_val >> 0) & 0xff;
+
+ eth_setenv_enetaddr("ethaddr", mac_addr);
+ }
+ }
+
+ return 0;
}
#endif
diff --git a/board/sunxi/dram_a13_oli_micro.c b/board/sunxi/dram_a13_oli_micro.c
new file mode 100644
index 0000000..8154ea2
--- /dev/null
+++ b/board/sunxi/dram_a13_oli_micro.c
@@ -0,0 +1,32 @@
+/* this file is generated, don't edit it yourself */
+
+#include <common.h>
+#include <asm/arch/dram.h>
+
+static struct dram_para dram_para = {
+ .clock = 408,
+ .type = 3,
+ .rank_num = 1,
+ .density = 2048,
+ .io_width = 16,
+ .bus_width = 16,
+ .cas = 9,
+ .zq = 123,
+ .odt_en = 0,
+ .size = 256,
+ .tpr0 = 0x42d899b7,
+ .tpr1 = 0xa090,
+ .tpr2 = 0x22a00,
+ .tpr3 = 0,
+ .tpr4 = 0,
+ .tpr5 = 0,
+ .emr1 = 0,
+ .emr2 = 0x10,
+ .emr3 = 0,
+
+};
+
+unsigned long sunxi_dram_init(void)
+{
+ return dramc_init(&dram_para);
+}
diff --git a/board/sunxi/dram_cubieboard.c b/board/sunxi/dram_cubieboard.c
new file mode 100644
index 0000000..399028c
--- /dev/null
+++ b/board/sunxi/dram_cubieboard.c
@@ -0,0 +1,31 @@
+/* this file is generated, don't edit it yourself */
+
+#include <common.h>
+#include <asm/arch/dram.h>
+
+static struct dram_para dram_para = {
+ .clock = 480,
+ .type = 3,
+ .rank_num = 1,
+ .density = 4096,
+ .io_width = 16,
+ .bus_width = 32,
+ .cas = 6,
+ .zq = 123,
+ .odt_en = 0,
+ .size = 1024,
+ .tpr0 = 0x30926692,
+ .tpr1 = 0x1090,
+ .tpr2 = 0x1a0c8,
+ .tpr3 = 0,
+ .tpr4 = 0,
+ .tpr5 = 0,
+ .emr1 = 0,
+ .emr2 = 0,
+ .emr3 = 0,
+};
+
+unsigned long sunxi_dram_init(void)
+{
+ return dramc_init(&dram_para);
+}
diff --git a/board/sunxi/dram_cubieboard2.c b/board/sunxi/dram_cubieboard2.c
new file mode 100644
index 0000000..9e75367
--- /dev/null
+++ b/board/sunxi/dram_cubieboard2.c
@@ -0,0 +1,31 @@
+/* this file is generated, don't edit it yourself */
+
+#include <common.h>
+#include <asm/arch/dram.h>
+
+static struct dram_para dram_para = {
+ .clock = 480,
+ .type = 3,
+ .rank_num = 1,
+ .density = 4096,
+ .io_width = 16,
+ .bus_width = 32,
+ .cas = 9,
+ .zq = 0x7f,
+ .odt_en = 0,
+ .size = 1024,
+ .tpr0 = 0x42d899b7,
+ .tpr1 = 0xa090,
+ .tpr2 = 0x22a00,
+ .tpr3 = 0x0,
+ .tpr4 = 0x1,
+ .tpr5 = 0x0,
+ .emr1 = 0x4,
+ .emr2 = 0x10,
+ .emr3 = 0x0,
+};
+
+unsigned long sunxi_dram_init(void)
+{
+ return dramc_init(&dram_para);
+}
diff --git a/board/sunxi/dram_r7dongle.c b/board/sunxi/dram_r7dongle.c
new file mode 100644
index 0000000..59343cb
--- /dev/null
+++ b/board/sunxi/dram_r7dongle.c
@@ -0,0 +1,31 @@
+/* this file is generated, don't edit it yourself */
+
+#include <common.h>
+#include <asm/arch/dram.h>
+
+static struct dram_para dram_para = {
+ .clock = 384,
+ .type = 3,
+ .rank_num = 1,
+ .density = 2048,
+ .io_width = 8,
+ .bus_width = 32,
+ .cas = 9,
+ .zq = 123,
+ .odt_en = 0,
+ .size = 1024,
+ .tpr0 = 0x42d899b7,
+ .tpr1 = 0xa090,
+ .tpr2 = 0x22a00,
+ .tpr3 = 0,
+ .tpr4 = 0,
+ .tpr5 = 0,
+ .emr1 = 0x04,
+ .emr2 = 0x10,
+ .emr3 = 0,
+};
+
+unsigned long sunxi_dram_init(void)
+{
+ return dramc_init(&dram_para);
+}
diff --git a/board/sunxi/gmac.c b/board/sunxi/gmac.c
index e48328d..e7ff952 100644
--- a/board/sunxi/gmac.c
+++ b/board/sunxi/gmac.c
@@ -16,17 +16,28 @@ int sunxi_gmac_initialize(bd_t *bis)
setbits_le32(&ccm->ahb_gate1, 0x1 << AHB_GATE_OFFSET_GMAC);
/* Set MII clock */
+#ifdef CONFIG_RGMII
setbits_le32(&ccm->gmac_clk_cfg, CCM_GMAC_CTRL_TX_CLK_SRC_INT_RGMII |
CCM_GMAC_CTRL_GPIT_RGMII);
+#else
+ setbits_le32(&ccm->gmac_clk_cfg, CCM_GMAC_CTRL_TX_CLK_SRC_MII |
+ CCM_GMAC_CTRL_GPIT_MII);
+#endif
/* Configure pin mux settings for GMAC */
for (pin = SUNXI_GPA(0); pin <= SUNXI_GPA(16); pin++) {
+#ifdef CONFIG_RGMII
/* skip unused pins in RGMII mode */
if (pin == SUNXI_GPA(9) || pin == SUNXI_GPA(14))
continue;
+#endif
sunxi_gpio_set_cfgpin(pin, SUN7I_GPA0_GMAC);
sunxi_gpio_set_drv(pin, 3);
}
+#ifdef CONFIG_RGMII
return designware_initialize(SUNXI_GMAC_BASE, PHY_INTERFACE_MODE_RGMII);
+#else
+ return designware_initialize(SUNXI_GMAC_BASE, PHY_INTERFACE_MODE_MII);
+#endif
}
diff --git a/board/svm_sc8xx/Kconfig b/board/svm_sc8xx/Kconfig
new file mode 100644
index 0000000..522b1a8
--- /dev/null
+++ b/board/svm_sc8xx/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_SVM_SC8XX
+
+config SYS_BOARD
+ string
+ default "svm_sc8xx"
+
+config SYS_CONFIG_NAME
+ string
+ default "svm_sc8xx"
+
+endif
diff --git a/board/svm_sc8xx/MAINTAINERS b/board/svm_sc8xx/MAINTAINERS
new file mode 100644
index 0000000..c19bcae
--- /dev/null
+++ b/board/svm_sc8xx/MAINTAINERS
@@ -0,0 +1,6 @@
+SVM_SC8XX BOARD
+M: John Zhan <zhanz@sinovee.com>
+S: Orphan (since 2014-06)
+F: board/svm_sc8xx/
+F: include/configs/svm_sc8xx.h
+F: configs/svm_sc8xx_defconfig
diff --git a/board/synopsys/Kconfig b/board/synopsys/Kconfig
new file mode 100644
index 0000000..22034c1
--- /dev/null
+++ b/board/synopsys/Kconfig
@@ -0,0 +1,31 @@
+if TARGET_ARCANGEL4
+
+config SYS_CPU
+ string
+ default "arc700"
+
+config SYS_VENDOR
+ string
+ default "synopsys"
+
+config SYS_CONFIG_NAME
+ string
+ default "arcangel4"
+
+endif
+
+if TARGET_ARCANGEL4_BE
+
+config SYS_CPU
+ string
+ default "arc700"
+
+config SYS_VENDOR
+ string
+ default "synopsys"
+
+config SYS_CONFIG_NAME
+ string
+ default "arcangel4-be"
+
+endif
diff --git a/board/synopsys/MAINTAINERS b/board/synopsys/MAINTAINERS
new file mode 100644
index 0000000..720edd8
--- /dev/null
+++ b/board/synopsys/MAINTAINERS
@@ -0,0 +1,7 @@
+- BOARD
+M: Alexey Brodkin <abrodkin@synopsys.com>
+S: Maintained
+F: include/configs/arcangel4.h
+F: configs/arcangel4_defconfig
+F: include/configs/arcangel4-be.h
+F: configs/arcangel4-be_defconfig
diff --git a/board/synopsys/axs101/Kconfig b/board/synopsys/axs101/Kconfig
new file mode 100644
index 0000000..535b8eb
--- /dev/null
+++ b/board/synopsys/axs101/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_AXS101
+
+config SYS_CPU
+ string
+ default "arc700"
+
+config SYS_BOARD
+ string
+ default "axs101"
+
+config SYS_VENDOR
+ string
+ default "synopsys"
+
+config SYS_CONFIG_NAME
+ string
+ default "axs101"
+
+endif
diff --git a/board/synopsys/axs101/MAINTAINERS b/board/synopsys/axs101/MAINTAINERS
new file mode 100644
index 0000000..481bbcc
--- /dev/null
+++ b/board/synopsys/axs101/MAINTAINERS
@@ -0,0 +1,6 @@
+AXS101 BOARD
+M: Alexey Brodkin <abrodkin@synopsys.com>
+S: Maintained
+F: board/synopsys/axs101/
+F: include/configs/axs101.h
+F: configs/axs101_defconfig
diff --git a/board/syteco/jadecpu/Kconfig b/board/syteco/jadecpu/Kconfig
new file mode 100644
index 0000000..c00204a
--- /dev/null
+++ b/board/syteco/jadecpu/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_JADECPU
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "jadecpu"
+
+config SYS_VENDOR
+ string
+ default "syteco"
+
+config SYS_SOC
+ string
+ default "mb86r0x"
+
+config SYS_CONFIG_NAME
+ string
+ default "jadecpu"
+
+endif
diff --git a/board/syteco/jadecpu/MAINTAINERS b/board/syteco/jadecpu/MAINTAINERS
new file mode 100644
index 0000000..b53e7ca
--- /dev/null
+++ b/board/syteco/jadecpu/MAINTAINERS
@@ -0,0 +1,6 @@
+JADECPU BOARD
+M: Matthias Weisser <weisserm@arcor.de>
+S: Maintained
+F: board/syteco/jadecpu/
+F: include/configs/jadecpu.h
+F: configs/jadecpu_defconfig
diff --git a/board/syteco/zmx25/Kconfig b/board/syteco/zmx25/Kconfig
new file mode 100644
index 0000000..dbf34e5
--- /dev/null
+++ b/board/syteco/zmx25/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_ZMX25
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "zmx25"
+
+config SYS_VENDOR
+ string
+ default "syteco"
+
+config SYS_SOC
+ string
+ default "mx25"
+
+config SYS_CONFIG_NAME
+ string
+ default "zmx25"
+
+endif
diff --git a/board/syteco/zmx25/MAINTAINERS b/board/syteco/zmx25/MAINTAINERS
new file mode 100644
index 0000000..90f9fab
--- /dev/null
+++ b/board/syteco/zmx25/MAINTAINERS
@@ -0,0 +1,6 @@
+ZMX25 BOARD
+M: Matthias Weisser <weisserm@arcor.de>
+S: Maintained
+F: board/syteco/zmx25/
+F: include/configs/zmx25.h
+F: configs/zmx25_defconfig
diff --git a/board/t3corp/Kconfig b/board/t3corp/Kconfig
new file mode 100644
index 0000000..818293a
--- /dev/null
+++ b/board/t3corp/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_T3CORP
+
+config SYS_BOARD
+ string
+ default "t3corp"
+
+config SYS_CONFIG_NAME
+ string
+ default "t3corp"
+
+endif
diff --git a/board/t3corp/MAINTAINERS b/board/t3corp/MAINTAINERS
new file mode 100644
index 0000000..eaf28c4
--- /dev/null
+++ b/board/t3corp/MAINTAINERS
@@ -0,0 +1,6 @@
+T3CORP BOARD
+M: Stefan Roese <sr@denx.de>
+S: Maintained
+F: board/t3corp/
+F: include/configs/t3corp.h
+F: configs/t3corp_defconfig
diff --git a/board/taskit/stamp9g20/Kconfig b/board/taskit/stamp9g20/Kconfig
new file mode 100644
index 0000000..3aecad9
--- /dev/null
+++ b/board/taskit/stamp9g20/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_STAMP9G20
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "stamp9g20"
+
+config SYS_VENDOR
+ string
+ default "taskit"
+
+config SYS_SOC
+ string
+ default "at91"
+
+config SYS_CONFIG_NAME
+ string
+ default "stamp9g20"
+
+endif
diff --git a/board/taskit/stamp9g20/MAINTAINERS b/board/taskit/stamp9g20/MAINTAINERS
new file mode 100644
index 0000000..a91c196
--- /dev/null
+++ b/board/taskit/stamp9g20/MAINTAINERS
@@ -0,0 +1,7 @@
+STAMP9G20 BOARD
+M: Markus Hubig <mhubig@imko.de>
+S: Maintained
+F: board/taskit/stamp9g20/
+F: include/configs/stamp9g20.h
+F: configs/portuxg20_defconfig
+F: configs/stamp9g20_defconfig
diff --git a/board/tcm-bf518/Kconfig b/board/tcm-bf518/Kconfig
new file mode 100644
index 0000000..a246099
--- /dev/null
+++ b/board/tcm-bf518/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_TCM_BF518
+
+config SYS_BOARD
+ string
+ default "tcm-bf518"
+
+config SYS_CONFIG_NAME
+ string
+ default "tcm-bf518"
+
+endif
diff --git a/board/tcm-bf518/MAINTAINERS b/board/tcm-bf518/MAINTAINERS
new file mode 100644
index 0000000..f649b06
--- /dev/null
+++ b/board/tcm-bf518/MAINTAINERS
@@ -0,0 +1,6 @@
+TCM-BF518 BOARD
+M: Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
+S: Orphan (since 2014-03)
+F: board/tcm-bf518/
+F: include/configs/tcm-bf518.h
+F: configs/tcm-bf518_defconfig
diff --git a/board/tcm-bf537/Kconfig b/board/tcm-bf537/Kconfig
new file mode 100644
index 0000000..a7f1b21
--- /dev/null
+++ b/board/tcm-bf537/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_TCM_BF537
+
+config SYS_BOARD
+ string
+ default "tcm-bf537"
+
+config SYS_CONFIG_NAME
+ string
+ default "tcm-bf537"
+
+endif
diff --git a/board/tcm-bf537/MAINTAINERS b/board/tcm-bf537/MAINTAINERS
new file mode 100644
index 0000000..9ee557d
--- /dev/null
+++ b/board/tcm-bf537/MAINTAINERS
@@ -0,0 +1,6 @@
+TCM-BF537 BOARD
+M: Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
+S: Orphan (since 2014-03)
+F: board/tcm-bf537/
+F: include/configs/tcm-bf537.h
+F: configs/tcm-bf537_defconfig
diff --git a/board/technexion/tao3530/Kconfig b/board/technexion/tao3530/Kconfig
new file mode 100644
index 0000000..06e56a4
--- /dev/null
+++ b/board/technexion/tao3530/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_TAO3530
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "tao3530"
+
+config SYS_VENDOR
+ string
+ default "technexion"
+
+config SYS_SOC
+ string
+ default "omap3"
+
+config SYS_CONFIG_NAME
+ string
+ default "tao3530"
+
+endif
diff --git a/board/technexion/tao3530/MAINTAINERS b/board/technexion/tao3530/MAINTAINERS
new file mode 100644
index 0000000..ad02b46
--- /dev/null
+++ b/board/technexion/tao3530/MAINTAINERS
@@ -0,0 +1,11 @@
+TAO3530 BOARD
+M: Stefan Roese <sr@denx.de>
+S: Maintained
+F: board/technexion/tao3530/
+F: include/configs/tao3530.h
+F: configs/omap3_ha_defconfig
+
+TAO3530 BOARD
+M: Tapani Utriainen <linuxfae@technexion.com>
+S: Maintained
+F: configs/tao3530_defconfig
diff --git a/board/technexion/twister/Kconfig b/board/technexion/twister/Kconfig
new file mode 100644
index 0000000..1790f6d
--- /dev/null
+++ b/board/technexion/twister/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_TWISTER
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "twister"
+
+config SYS_VENDOR
+ string
+ default "technexion"
+
+config SYS_SOC
+ string
+ default "omap3"
+
+config SYS_CONFIG_NAME
+ string
+ default "twister"
+
+endif
diff --git a/board/technexion/twister/MAINTAINERS b/board/technexion/twister/MAINTAINERS
new file mode 100644
index 0000000..1ce2b37
--- /dev/null
+++ b/board/technexion/twister/MAINTAINERS
@@ -0,0 +1,6 @@
+TWISTER BOARD
+M: Stefano Babic <sbabic@denx.de>
+S: Maintained
+F: board/technexion/twister/
+F: include/configs/twister.h
+F: configs/twister_defconfig
diff --git a/board/teejet/mt_ventoux/Kconfig b/board/teejet/mt_ventoux/Kconfig
new file mode 100644
index 0000000..96cf7c0
--- /dev/null
+++ b/board/teejet/mt_ventoux/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_MT_VENTOUX
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "mt_ventoux"
+
+config SYS_VENDOR
+ string
+ default "teejet"
+
+config SYS_SOC
+ string
+ default "omap3"
+
+config SYS_CONFIG_NAME
+ string
+ default "mt_ventoux"
+
+endif
diff --git a/board/teejet/mt_ventoux/MAINTAINERS b/board/teejet/mt_ventoux/MAINTAINERS
new file mode 100644
index 0000000..d23464c
--- /dev/null
+++ b/board/teejet/mt_ventoux/MAINTAINERS
@@ -0,0 +1,6 @@
+MT_VENTOUX BOARD
+M: Stefano Babic <sbabic@denx.de>
+S: Maintained
+F: board/teejet/mt_ventoux/
+F: include/configs/mt_ventoux.h
+F: configs/mt_ventoux_defconfig
diff --git a/board/ti/am335x/Kconfig b/board/ti/am335x/Kconfig
new file mode 100644
index 0000000..c3b61af
--- /dev/null
+++ b/board/ti/am335x/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_AM335X_EVM
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "am335x"
+
+config SYS_VENDOR
+ string
+ default "ti"
+
+config SYS_SOC
+ string
+ default "am33xx"
+
+config SYS_CONFIG_NAME
+ string
+ default "am335x_evm"
+
+endif
diff --git a/board/ti/am335x/MAINTAINERS b/board/ti/am335x/MAINTAINERS
new file mode 100644
index 0000000..d166fa0
--- /dev/null
+++ b/board/ti/am335x/MAINTAINERS
@@ -0,0 +1,17 @@
+AM335X BOARD
+M: Tom Rini <trini@ti.com>
+S: Maintained
+F: board/ti/am335x/
+F: include/configs/am335x_evm.h
+F: configs/am335x_boneblack_defconfig
+F: configs/am335x_boneblack_vboot_defconfig
+F: configs/am335x_evm_defconfig
+F: configs/am335x_evm_nor_defconfig
+F: configs/am335x_evm_norboot_defconfig
+F: configs/am335x_evm_spiboot_defconfig
+F: configs/am335x_evm_uart1_defconfig
+F: configs/am335x_evm_uart2_defconfig
+F: configs/am335x_evm_uart3_defconfig
+F: configs/am335x_evm_uart4_defconfig
+F: configs/am335x_evm_uart5_defconfig
+F: configs/am335x_evm_usbspl_defconfig
diff --git a/board/ti/am335x/board.c b/board/ti/am335x/board.c
index da780ed..d81eec9 100644
--- a/board/ti/am335x/board.c
+++ b/board/ti/am335x/board.c
@@ -84,41 +84,17 @@ static int read_eeprom(struct am335x_baseboard_id *header)
#ifndef CONFIG_SKIP_LOWLEVEL_INIT
static const struct ddr_data ddr2_data = {
- .datardsratio0 = ((MT47H128M16RT25E_RD_DQS<<30) |
- (MT47H128M16RT25E_RD_DQS<<20) |
- (MT47H128M16RT25E_RD_DQS<<10) |
- (MT47H128M16RT25E_RD_DQS<<0)),
- .datawdsratio0 = ((MT47H128M16RT25E_WR_DQS<<30) |
- (MT47H128M16RT25E_WR_DQS<<20) |
- (MT47H128M16RT25E_WR_DQS<<10) |
- (MT47H128M16RT25E_WR_DQS<<0)),
- .datawiratio0 = ((MT47H128M16RT25E_PHY_WRLVL<<30) |
- (MT47H128M16RT25E_PHY_WRLVL<<20) |
- (MT47H128M16RT25E_PHY_WRLVL<<10) |
- (MT47H128M16RT25E_PHY_WRLVL<<0)),
- .datagiratio0 = ((MT47H128M16RT25E_PHY_GATELVL<<30) |
- (MT47H128M16RT25E_PHY_GATELVL<<20) |
- (MT47H128M16RT25E_PHY_GATELVL<<10) |
- (MT47H128M16RT25E_PHY_GATELVL<<0)),
- .datafwsratio0 = ((MT47H128M16RT25E_PHY_FIFO_WE<<30) |
- (MT47H128M16RT25E_PHY_FIFO_WE<<20) |
- (MT47H128M16RT25E_PHY_FIFO_WE<<10) |
- (MT47H128M16RT25E_PHY_FIFO_WE<<0)),
- .datawrsratio0 = ((MT47H128M16RT25E_PHY_WR_DATA<<30) |
- (MT47H128M16RT25E_PHY_WR_DATA<<20) |
- (MT47H128M16RT25E_PHY_WR_DATA<<10) |
- (MT47H128M16RT25E_PHY_WR_DATA<<0)),
+ .datardsratio0 = MT47H128M16RT25E_RD_DQS,
+ .datafwsratio0 = MT47H128M16RT25E_PHY_FIFO_WE,
+ .datawrsratio0 = MT47H128M16RT25E_PHY_WR_DATA,
};
static const struct cmd_control ddr2_cmd_ctrl_data = {
.cmd0csratio = MT47H128M16RT25E_RATIO,
- .cmd0iclkout = MT47H128M16RT25E_INVERT_CLKOUT,
.cmd1csratio = MT47H128M16RT25E_RATIO,
- .cmd1iclkout = MT47H128M16RT25E_INVERT_CLKOUT,
.cmd2csratio = MT47H128M16RT25E_RATIO,
- .cmd2iclkout = MT47H128M16RT25E_INVERT_CLKOUT,
};
static const struct emif_regs ddr2_emif_reg_data = {
diff --git a/board/ti/am3517crane/Kconfig b/board/ti/am3517crane/Kconfig
new file mode 100644
index 0000000..fdb20ab
--- /dev/null
+++ b/board/ti/am3517crane/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_AM3517_CRANE
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "am3517crane"
+
+config SYS_VENDOR
+ string
+ default "ti"
+
+config SYS_SOC
+ string
+ default "omap3"
+
+config SYS_CONFIG_NAME
+ string
+ default "am3517_crane"
+
+endif
diff --git a/board/ti/am3517crane/MAINTAINERS b/board/ti/am3517crane/MAINTAINERS
new file mode 100644
index 0000000..cbc3213
--- /dev/null
+++ b/board/ti/am3517crane/MAINTAINERS
@@ -0,0 +1,6 @@
+AM3517CRANE BOARD
+M: Nagendra T S <nagendra@mistralsolutions.com>
+S: Maintained
+F: board/ti/am3517crane/
+F: include/configs/am3517_crane.h
+F: configs/am3517_crane_defconfig
diff --git a/board/ti/am43xx/Kconfig b/board/ti/am43xx/Kconfig
new file mode 100644
index 0000000..3c61ec1
--- /dev/null
+++ b/board/ti/am43xx/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_AM43XX_EVM
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "am43xx"
+
+config SYS_VENDOR
+ string
+ default "ti"
+
+config SYS_SOC
+ string
+ default "am33xx"
+
+config SYS_CONFIG_NAME
+ string
+ default "am43xx_evm"
+
+endif
diff --git a/board/ti/am43xx/MAINTAINERS b/board/ti/am43xx/MAINTAINERS
new file mode 100644
index 0000000..d375278
--- /dev/null
+++ b/board/ti/am43xx/MAINTAINERS
@@ -0,0 +1,7 @@
+AM43XX BOARD
+M: Lokesh Vutla <lokeshvutla@ti.com>
+S: Maintained
+F: board/ti/am43xx/
+F: include/configs/am43xx_evm.h
+F: configs/am43xx_evm_defconfig
+F: configs/am43xx_evm_qspiboot_defconfig
diff --git a/board/ti/am43xx/board.c b/board/ti/am43xx/board.c
index 7e239f1..51fa9e0 100644
--- a/board/ti/am43xx/board.c
+++ b/board/ti/am43xx/board.c
@@ -19,6 +19,7 @@
#include <asm/arch/gpio.h>
#include <asm/emif.h>
#include "board.h"
+#include <power/pmic.h>
#include <power/tps65218.h>
#include <miiphy.h>
#include <cpsw.h>
@@ -605,6 +606,19 @@ void sdram_init(void)
}
#endif
+/* setup board specific PMIC */
+int power_init_board(void)
+{
+ struct pmic *p;
+
+ power_tps65218_init(I2C_PMIC);
+ p = pmic_get("TPS65218_PMIC");
+ if (p && !pmic_probe(p))
+ puts("PMIC: TPS65218\n");
+
+ return 0;
+}
+
int board_init(void)
{
struct l3f_cfg_bwlimiter *bwlimiter = (struct l3f_cfg_bwlimiter *)L3F_CFG_BWLIMITER;
diff --git a/board/ti/beagle/Kconfig b/board/ti/beagle/Kconfig
new file mode 100644
index 0000000..15dccdf
--- /dev/null
+++ b/board/ti/beagle/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_OMAP3_BEAGLE
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "beagle"
+
+config SYS_VENDOR
+ string
+ default "ti"
+
+config SYS_SOC
+ string
+ default "omap3"
+
+config SYS_CONFIG_NAME
+ string
+ default "omap3_beagle"
+
+endif
diff --git a/board/ti/beagle/MAINTAINERS b/board/ti/beagle/MAINTAINERS
new file mode 100644
index 0000000..2225fb6
--- /dev/null
+++ b/board/ti/beagle/MAINTAINERS
@@ -0,0 +1,6 @@
+BEAGLE BOARD
+M: Tom Rini <trini@ti.com>
+S: Maintained
+F: board/ti/beagle/
+F: include/configs/omap3_beagle.h
+F: configs/omap3_beagle_defconfig
diff --git a/board/ti/dra7xx/Kconfig b/board/ti/dra7xx/Kconfig
new file mode 100644
index 0000000..4b13ef4
--- /dev/null
+++ b/board/ti/dra7xx/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_DRA7XX_EVM
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "dra7xx"
+
+config SYS_VENDOR
+ string
+ default "ti"
+
+config SYS_SOC
+ string
+ default "omap5"
+
+config SYS_CONFIG_NAME
+ string
+ default "dra7xx_evm"
+
+endif
diff --git a/board/ti/dra7xx/MAINTAINERS b/board/ti/dra7xx/MAINTAINERS
new file mode 100644
index 0000000..5ec6769
--- /dev/null
+++ b/board/ti/dra7xx/MAINTAINERS
@@ -0,0 +1,8 @@
+DRA7XX BOARD
+M: Lokesh Vutla <lokeshvutla@ti.com>
+S: Maintained
+F: board/ti/dra7xx/
+F: include/configs/dra7xx_evm.h
+F: configs/dra7xx_evm_defconfig
+F: configs/dra7xx_evm_qspiboot_defconfig
+F: configs/dra7xx_evm_uart3_defconfig
diff --git a/board/ti/dra7xx/evm.c b/board/ti/dra7xx/evm.c
index 7f19655..ae50d88 100644
--- a/board/ti/dra7xx/evm.c
+++ b/board/ti/dra7xx/evm.c
@@ -163,6 +163,8 @@ int spl_start_uboot(void)
#define VIN2A_D15_DLY_VAL ((0x4 << 5) + 0x0)
#define VIN2A_D14_DLY_VAL ((0x4 << 5) + 0x0)
+extern u32 *const omap_si_rev;
+
static void cpsw_control(int enabled)
{
/* VTP can be added here */
@@ -189,7 +191,7 @@ static struct cpsw_platform_data cpsw_data = {
.mdio_div = 0xff,
.channels = 8,
.cpdma_reg_ofs = 0x800,
- .slaves = 1,
+ .slaves = 2,
.slave_data = cpsw_slaves,
.ale_reg_ofs = 0xd00,
.ale_entries = 1024,
@@ -260,6 +262,9 @@ int board_eth_init(bd_t *bis)
ctrl_val |= 0x22;
writel(ctrl_val, (*ctrl)->control_core_control_io1);
+ if (*omap_si_rev == DRA722_ES1_0)
+ cpsw_data.active_slave = 1;
+
ret = cpsw_register(&cpsw_data);
if (ret < 0)
printf("Error %d registering CPSW switch\n", ret);
diff --git a/board/ti/dra7xx/mux_data.h b/board/ti/dra7xx/mux_data.h
index c9e202a..7db7032 100644
--- a/board/ti/dra7xx/mux_data.h
+++ b/board/ti/dra7xx/mux_data.h
@@ -56,6 +56,18 @@ const struct pad_conf_entry core_padconf_array_essential[] = {
{RGMII0_RXD2, (IEN | M0) },
{RGMII0_RXD1, (IEN | M0) },
{RGMII0_RXD0, (IEN | M0) },
+ {VIN2A_D12, (M3) },
+ {VIN2A_D13, (M3) },
+ {VIN2A_D14, (M3) },
+ {VIN2A_D15, (M3) },
+ {VIN2A_D16, (M3) },
+ {VIN2A_D17, (M3) },
+ {VIN2A_D18, (IEN | M3)},
+ {VIN2A_D19, (IEN | M3)},
+ {VIN2A_D20, (IEN | M3)},
+ {VIN2A_D21, (IEN | M3)},
+ {VIN2A_D22, (IEN | M3)},
+ {VIN2A_D23, (IEN | M3)},
{GPMC_A13, (IEN | PDIS | M1)}, /* QSPI1_RTCLK */
{GPMC_A14, (IEN | PDIS | M1)}, /* QSPI1_D[3] */
{GPMC_A15, (IEN | PDIS | M1)}, /* QSPI1_D[2] */
diff --git a/board/ti/evm/Kconfig b/board/ti/evm/Kconfig
new file mode 100644
index 0000000..e342942
--- /dev/null
+++ b/board/ti/evm/Kconfig
@@ -0,0 +1,71 @@
+if TARGET_OMAP3_EVM
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "evm"
+
+config SYS_VENDOR
+ string
+ default "ti"
+
+config SYS_SOC
+ string
+ default "omap3"
+
+config SYS_CONFIG_NAME
+ string
+ default "omap3_evm"
+
+endif
+
+if TARGET_OMAP3_EVM_QUICK_MMC
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "evm"
+
+config SYS_VENDOR
+ string
+ default "ti"
+
+config SYS_SOC
+ string
+ default "omap3"
+
+config SYS_CONFIG_NAME
+ string
+ default "omap3_evm_quick_mmc"
+
+endif
+
+if TARGET_OMAP3_EVM_QUICK_NAND
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "evm"
+
+config SYS_VENDOR
+ string
+ default "ti"
+
+config SYS_SOC
+ string
+ default "omap3"
+
+config SYS_CONFIG_NAME
+ string
+ default "omap3_evm_quick_nand"
+
+endif
diff --git a/board/ti/evm/MAINTAINERS b/board/ti/evm/MAINTAINERS
new file mode 100644
index 0000000..b2ebadc
--- /dev/null
+++ b/board/ti/evm/MAINTAINERS
@@ -0,0 +1,14 @@
+EVM BOARD
+M: Tom Rini <trini@ti.com>
+S: Maintained
+F: board/ti/evm/
+F: include/configs/omap3_evm.h
+F: configs/omap3_evm_defconfig
+
+OMAP3_EVM_QUICK_MMC BOARD
+M: -
+S: Maintained
+F: include/configs/omap3_evm_quick_mmc.h
+F: configs/omap3_evm_quick_mmc_defconfig
+F: include/configs/omap3_evm_quick_nand.h
+F: configs/omap3_evm_quick_nand_defconfig
diff --git a/board/ti/k2hk_evm/Makefile b/board/ti/k2hk_evm/Makefile
deleted file mode 100644
index 3645f2f..0000000
--- a/board/ti/k2hk_evm/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# K2HK-EVM: board Makefile
-# (C) Copyright 2012-2014
-# Texas Instruments Incorporated, <www.ti.com>
-# SPDX-License-Identifier: GPL-2.0+
-#
-
-obj-y += board.o
-obj-y += ddr3.o
diff --git a/board/ti/k2hk_evm/ddr3.c b/board/ti/k2hk_evm/ddr3.c
deleted file mode 100644
index 6092eb8..0000000
--- a/board/ti/k2hk_evm/ddr3.c
+++ /dev/null
@@ -1,268 +0,0 @@
-/*
- * Keystone2: DDR3 initialization
- *
- * (C) Copyright 2012-2014
- * Texas Instruments Incorporated, <www.ti.com>
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/arch/hardware.h>
-#include <asm/io.h>
-#include <i2c.h>
-
-/************************* *****************************/
-static struct ddr3_phy_config ddr3phy_1600_64A = {
- .pllcr = 0x0001C000ul,
- .pgcr1_mask = (IODDRM_MASK | ZCKSEL_MASK),
- .pgcr1_val = ((1 << 2) | (1 << 7) | (1 << 23)),
- .ptr0 = 0x42C21590ul,
- .ptr1 = 0xD05612C0ul,
- .ptr2 = 0, /* not set in gel */
- .ptr3 = 0x0D861A80ul,
- .ptr4 = 0x0C827100ul,
- .dcr_mask = (PDQ_MASK | MPRDQ_MASK | BYTEMASK_MASK | NOSRA_MASK),
- .dcr_val = ((1 << 10) | (1 << 27)),
- .dtpr0 = 0xA19DBB66ul,
- .dtpr1 = 0x12868300ul,
- .dtpr2 = 0x50035200ul,
- .mr0 = 0x00001C70ul,
- .mr1 = 0x00000006ul,
- .mr2 = 0x00000018ul,
- .dtcr = 0x730035C7ul,
- .pgcr2 = 0x00F07A12ul,
- .zq0cr1 = 0x0000005Dul,
- .zq1cr1 = 0x0000005Bul,
- .zq2cr1 = 0x0000005Bul,
- .pir_v1 = 0x00000033ul,
- .pir_v2 = 0x0000FF81ul,
-};
-
-static struct ddr3_emif_config ddr3_1600_64 = {
- .sdcfg = 0x6200CE6aul,
- .sdtim1 = 0x16709C55ul,
- .sdtim2 = 0x00001D4Aul,
- .sdtim3 = 0x435DFF54ul,
- .sdtim4 = 0x553F0CFFul,
- .zqcfg = 0xF0073200ul,
- .sdrfc = 0x00001869ul,
-};
-
-static struct ddr3_phy_config ddr3phy_1600_32 = {
- .pllcr = 0x0001C000ul,
- .pgcr1_mask = (IODDRM_MASK | ZCKSEL_MASK),
- .pgcr1_val = ((1 << 2) | (1 << 7) | (1 << 23)),
- .ptr0 = 0x42C21590ul,
- .ptr1 = 0xD05612C0ul,
- .ptr2 = 0, /* not set in gel */
- .ptr3 = 0x0D861A80ul,
- .ptr4 = 0x0C827100ul,
- .dcr_mask = (PDQ_MASK | MPRDQ_MASK | BYTEMASK_MASK | NOSRA_MASK),
- .dcr_val = ((1 << 10) | (1 << 27)),
- .dtpr0 = 0xA19DBB66ul,
- .dtpr1 = 0x12868300ul,
- .dtpr2 = 0x50035200ul,
- .mr0 = 0x00001C70ul,
- .mr1 = 0x00000006ul,
- .mr2 = 0x00000018ul,
- .dtcr = 0x730035C7ul,
- .pgcr2 = 0x00F07A12ul,
- .zq0cr1 = 0x0000005Dul,
- .zq1cr1 = 0x0000005Bul,
- .zq2cr1 = 0x0000005Bul,
- .pir_v1 = 0x00000033ul,
- .pir_v2 = 0x0000FF81ul,
-};
-
-static struct ddr3_emif_config ddr3_1600_32 = {
- .sdcfg = 0x6200DE6aul,
- .sdtim1 = 0x16709C55ul,
- .sdtim2 = 0x00001D4Aul,
- .sdtim3 = 0x435DFF54ul,
- .sdtim4 = 0x553F0CFFul,
- .zqcfg = 0x70073200ul,
- .sdrfc = 0x00001869ul,
-};
-
-/************************* *****************************/
-static struct ddr3_phy_config ddr3phy_1333_64A = {
- .pllcr = 0x0005C000ul,
- .pgcr1_mask = (IODDRM_MASK | ZCKSEL_MASK),
- .pgcr1_val = ((1 << 2) | (1 << 7) | (1 << 23)),
- .ptr0 = 0x42C21590ul,
- .ptr1 = 0xD05612C0ul,
- .ptr2 = 0, /* not set in gel */
- .ptr3 = 0x0B4515C2ul,
- .ptr4 = 0x0A6E08B4ul,
- .dcr_mask = (PDQ_MASK | MPRDQ_MASK | BYTEMASK_MASK |
- NOSRA_MASK | UDIMM_MASK),
- .dcr_val = ((1 << 10) | (1 << 27) | (1 << 29)),
- .dtpr0 = 0x8558AA55ul,
- .dtpr1 = 0x12857280ul,
- .dtpr2 = 0x5002C200ul,
- .mr0 = 0x00001A60ul,
- .mr1 = 0x00000006ul,
- .mr2 = 0x00000010ul,
- .dtcr = 0x710035C7ul,
- .pgcr2 = 0x00F065B8ul,
- .zq0cr1 = 0x0000005Dul,
- .zq1cr1 = 0x0000005Bul,
- .zq2cr1 = 0x0000005Bul,
- .pir_v1 = 0x00000033ul,
- .pir_v2 = 0x0000FF81ul,
-};
-
-static struct ddr3_emif_config ddr3_1333_64 = {
- .sdcfg = 0x62008C62ul,
- .sdtim1 = 0x125C8044ul,
- .sdtim2 = 0x00001D29ul,
- .sdtim3 = 0x32CDFF43ul,
- .sdtim4 = 0x543F0ADFul,
- .zqcfg = 0xF0073200ul,
- .sdrfc = 0x00001457ul,
-};
-
-static struct ddr3_phy_config ddr3phy_1333_32 = {
- .pllcr = 0x0005C000ul,
- .pgcr1_mask = (IODDRM_MASK | ZCKSEL_MASK),
- .pgcr1_val = ((1 << 2) | (1 << 7) | (1 << 23)),
- .ptr0 = 0x42C21590ul,
- .ptr1 = 0xD05612C0ul,
- .ptr2 = 0, /* not set in gel */
- .ptr3 = 0x0B4515C2ul,
- .ptr4 = 0x0A6E08B4ul,
- .dcr_mask = (PDQ_MASK | MPRDQ_MASK | BYTEMASK_MASK |
- NOSRA_MASK | UDIMM_MASK),
- .dcr_val = ((1 << 10) | (1 << 27) | (1 << 29)),
- .dtpr0 = 0x8558AA55ul,
- .dtpr1 = 0x12857280ul,
- .dtpr2 = 0x5002C200ul,
- .mr0 = 0x00001A60ul,
- .mr1 = 0x00000006ul,
- .mr2 = 0x00000010ul,
- .dtcr = 0x710035C7ul,
- .pgcr2 = 0x00F065B8ul,
- .zq0cr1 = 0x0000005Dul,
- .zq1cr1 = 0x0000005Bul,
- .zq2cr1 = 0x0000005Bul,
- .pir_v1 = 0x00000033ul,
- .pir_v2 = 0x0000FF81ul,
-};
-
-static struct ddr3_emif_config ddr3_1333_32 = {
- .sdcfg = 0x62009C62ul,
- .sdtim1 = 0x125C8044ul,
- .sdtim2 = 0x00001D29ul,
- .sdtim3 = 0x32CDFF43ul,
- .sdtim4 = 0x543F0ADFul,
- .zqcfg = 0xf0073200ul,
- .sdrfc = 0x00001457ul,
-};
-
-/************************* *****************************/
-static struct ddr3_phy_config ddr3phy_1333_64 = {
- .pllcr = 0x0005C000ul,
- .pgcr1_mask = (IODDRM_MASK | ZCKSEL_MASK),
- .pgcr1_val = ((1 << 2) | (1 << 7) | (1 << 23)),
- .ptr0 = 0x42C21590ul,
- .ptr1 = 0xD05612C0ul,
- .ptr2 = 0, /* not set in gel */
- .ptr3 = 0x0B4515C2ul,
- .ptr4 = 0x0A6E08B4ul,
- .dcr_mask = (PDQ_MASK | MPRDQ_MASK | BYTEMASK_MASK | NOSRA_MASK),
- .dcr_val = ((1 << 10) | (1 << 27)),
- .dtpr0 = 0x8558AA55ul,
- .dtpr1 = 0x12857280ul,
- .dtpr2 = 0x5002C200ul,
- .mr0 = 0x00001A60ul,
- .mr1 = 0x00000006ul,
- .mr2 = 0x00000010ul,
- .dtcr = 0x710035C7ul,
- .pgcr2 = 0x00F065B8ul,
- .zq0cr1 = 0x0000005Dul,
- .zq1cr1 = 0x0000005Bul,
- .zq2cr1 = 0x0000005Bul,
- .pir_v1 = 0x00000033ul,
- .pir_v2 = 0x0000FF81ul,
-};
-/******************************************************/
-int get_dimm_params(char *dimm_name)
-{
- u8 spd_params[256];
- int ret;
- int old_bus;
-
- i2c_init(CONFIG_SYS_DAVINCI_I2C_SPEED, CONFIG_SYS_DAVINCI_I2C_SLAVE);
-
- old_bus = i2c_get_bus_num();
- i2c_set_bus_num(1);
-
- ret = i2c_read(0x53, 0, 1, spd_params, 256);
-
- i2c_set_bus_num(old_bus);
-
- dimm_name[0] = '\0';
-
- if (ret) {
- puts("Cannot read DIMM params\n");
- return 1;
- }
-
- /*
- * We need to convert spd data to dimm parameters
- * and to DDR3 EMIF and PHY regirsters values.
- * For now we just return DIMM type string value.
- * Caller may use this value to choose appropriate
- * a pre-set DDR3 configuration
- */
-
- strncpy(dimm_name, (char *)&spd_params[0x80], 18);
- dimm_name[18] = '\0';
-
- return 0;
-}
-
-struct pll_init_data ddr3a_333 = DDR3_PLL_333(A);
-struct pll_init_data ddr3b_333 = DDR3_PLL_333(B);
-struct pll_init_data ddr3a_400 = DDR3_PLL_400(A);
-struct pll_init_data ddr3b_400 = DDR3_PLL_400(B);
-
-void init_ddr3(void)
-{
- char dimm_name[32];
-
- get_dimm_params(dimm_name);
-
- printf("Detected SO-DIMM [%s]\n", dimm_name);
-
- if (!strcmp(dimm_name, "18KSF1G72HZ-1G6E2 ")) {
- init_pll(&ddr3a_400);
- if (cpu_revision() > 0) {
- init_ddrphy(K2HK_DDR3A_DDRPHYC, &ddr3phy_1600_64A);
- init_ddremif(K2HK_DDR3A_EMIF_CTRL_BASE, &ddr3_1600_64);
- printf("DRAM: Capacity 8 GiB (includes reported below)\n");
- } else {
- init_ddrphy(K2HK_DDR3A_DDRPHYC, &ddr3phy_1600_32);
- init_ddremif(K2HK_DDR3A_EMIF_CTRL_BASE, &ddr3_1600_32);
- printf("DRAM: Capacity 4 GiB (includes reported below)\n");
- }
- } else if (!strcmp(dimm_name, "SQR-SD3T-2G1333SED")) {
- init_pll(&ddr3a_333);
- if (cpu_revision() > 0) {
- init_ddrphy(K2HK_DDR3A_DDRPHYC, &ddr3phy_1333_64A);
- init_ddremif(K2HK_DDR3A_EMIF_CTRL_BASE, &ddr3_1333_64);
- } else {
- init_ddrphy(K2HK_DDR3A_DDRPHYC, &ddr3phy_1333_32);
- init_ddremif(K2HK_DDR3A_EMIF_CTRL_BASE, &ddr3_1333_32);
- }
- } else {
- printf("Unknown SO-DIMM. Cannot configure DDR3\n");
- while (1)
- ;
- }
-
- init_pll(&ddr3b_333);
- init_ddrphy(K2HK_DDR3B_DDRPHYC, &ddr3phy_1333_64);
- init_ddremif(K2HK_DDR3B_EMIF_CTRL_BASE, &ddr3_1333_64);
-}
diff --git a/board/ti/ks2_evm/Kconfig b/board/ti/ks2_evm/Kconfig
new file mode 100644
index 0000000..7890b30
--- /dev/null
+++ b/board/ti/ks2_evm/Kconfig
@@ -0,0 +1,47 @@
+if TARGET_K2E_EVM
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "ks2_evm"
+
+config SYS_VENDOR
+ string
+ default "ti"
+
+config SYS_SOC
+ string
+ default "keystone"
+
+config SYS_CONFIG_NAME
+ string
+ default "k2e_evm"
+
+endif
+
+if TARGET_K2HK_EVM
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "ks2_evm"
+
+config SYS_VENDOR
+ string
+ default "ti"
+
+config SYS_SOC
+ string
+ default "keystone"
+
+config SYS_CONFIG_NAME
+ string
+ default "k2hk_evm"
+
+endif
diff --git a/board/ti/ks2_evm/MAINTAINERS b/board/ti/ks2_evm/MAINTAINERS
new file mode 100644
index 0000000..595a80a
--- /dev/null
+++ b/board/ti/ks2_evm/MAINTAINERS
@@ -0,0 +1,8 @@
+KS2_EVM BOARD
+M: Vitaly Andrianov <vitalya@ti.com>
+S: Maintained
+F: board/ti/ks2_evm/
+F: include/configs/k2hk_evm.h
+F: configs/k2hk_evm_defconfig
+F: include/configs/k2e_evm.h
+F: configs/k2e_evm_defconfig
diff --git a/board/ti/ks2_evm/Makefile b/board/ti/ks2_evm/Makefile
new file mode 100644
index 0000000..00f1164
--- /dev/null
+++ b/board/ti/ks2_evm/Makefile
@@ -0,0 +1,13 @@
+#
+# KS2-EVM: board Makefile
+# (C) Copyright 2012-2014
+# Texas Instruments Incorporated, <www.ti.com>
+# SPDX-License-Identifier: GPL-2.0+
+#
+
+obj-y += board.o
+obj-y += ddr3_cfg.o
+obj-$(CONFIG_K2HK_EVM) += board_k2hk.o
+obj-$(CONFIG_K2HK_EVM) += ddr3_k2hk.o
+obj-$(CONFIG_K2E_EVM) += board_k2e.o
+obj-$(CONFIG_K2E_EVM) += ddr3_k2e.o
diff --git a/board/ti/k2hk_evm/README b/board/ti/ks2_evm/README_K2HK
index bfeb05b..7426b8d 100644
--- a/board/ti/k2hk_evm/README
+++ b/board/ti/ks2_evm/README_K2HK
@@ -38,11 +38,13 @@ board configuration file: include/configs/k2hk_evm.h
Supported boot modes:
- SPI NOR boot
+ - AEMIF NAND boot
Supported image formats:-
- u-boot.bin: for loading and running u-boot.bin through Texas instruments
code composure studio (CCS)
- u-boot-spi.gph: gpimage for programming SPI NOR flash for SPI NOR boot
+ - u-boot-nand.gph: gpimage for programming AEMIF NAND flash for NAND boot
Build instructions:
===================
@@ -55,6 +57,10 @@ To build u-boot-spi.gph
>make k2hk_evm_config
>make u-boot-spi.gph
+To build u-boot-nand.gph
+ >make k2hk_evm_config
+ >make u-boot-nand.gph
+
Load and Run U-Boot on K2HK EVM using CCS
=========================================
@@ -115,8 +121,28 @@ instructions:-
5. At the U-Boot console type following to setup u-boot environment variables.
setenv addr_uboot 0x87000000
setenv filesize <size in hex of u-boot-spi.gph rounded to hex 0x10000>
- run burn_uboot
+ run burn_uboot_spi
Once u-boot prompt is available, Power OFF the EVM. Set the SW1 dip switch
to "SPI Little Endian Boot mode" as per instruction at
http://processors.wiki.ti.com/index.php/EVMK2H_Hardware_Setup.
6. Power ON the EVM. The EVM now boots with u-boot image on the NOR flash.
+
+AEMIF NAND Flash programming instructions
+======================================
+U-Boot image can be flashed to first 1024KB of the NAND flash using following
+instructions:-
+
+1. Start CCS and run U-boot as described above.
+2. Suspend Target. Select Run -> Suspend from top level menu
+ CortexA15_1 (Free Running)"
+3. Load u-boot-nand.gph binary from build folder on to DDR address 0x87000000
+ through CCS as described in step 2 of "Load and Run U-Boot on K2HK EVM
+ using CCS", but using address 0x87000000.
+4. Free Run the target as desribed earlier (step 4) to get u-boot prompt
+5. At the U-Boot console type following to setup u-boot environment variables.
+ setenv filesize <size in hex of u-boot-nand.gph rounded to hex 0x10000>
+ run burn_uboot_nand
+ Once u-boot prompt is available, Power OFF the EVM. Set the SW1 dip switch
+ to "ARM NAND Boot mode" as per instruction at
+ http://processors.wiki.ti.com/index.php/EVMK2H_Hardware_Setup.
+6. Power ON the EVM. The EVM now boots with u-boot image on the NAND flash.
diff --git a/board/ti/k2hk_evm/board.c b/board/ti/ks2_evm/board.c
index ef90f9d..dfe7be6 100644
--- a/board/ti/k2hk_evm/board.c
+++ b/board/ti/ks2_evm/board.c
@@ -1,45 +1,22 @@
/*
- * K2HK EVM : Board initialization
+ * Keystone : Board initialization
*
- * (C) Copyright 2012-2014
+ * (C) Copyright 2014
* Texas Instruments Incorporated, <www.ti.com>
*
* SPDX-License-Identifier: GPL-2.0+
*/
+#include "board.h"
#include <common.h>
#include <exports.h>
#include <fdt_support.h>
-#include <libfdt.h>
-
-#include <asm/arch/hardware.h>
-#include <asm/arch/clock.h>
-#include <asm/io.h>
-#include <asm/mach-types.h>
+#include <asm/arch/ddr3.h>
#include <asm/arch/emac_defs.h>
-#include <asm/arch/psc_defs.h>
#include <asm/ti-common/ti-aemif.h>
DECLARE_GLOBAL_DATA_PTR;
-u32 device_big_endian;
-
-unsigned int external_clk[ext_clk_count] = {
- [sys_clk] = 122880000,
- [alt_core_clk] = 125000000,
- [pa_clk] = 122880000,
- [tetris_clk] = 125000000,
- [ddr3a_clk] = 100000000,
- [ddr3b_clk] = 100000000,
- [mcm_clk] = 312500000,
- [pcie_clk] = 100000000,
- [sgmii_srio_clk] = 156250000,
- [xgmii_clk] = 156250000,
- [usb_clk] = 100000000,
- [rp1_clk] = 123456789 /* TODO: cannot find
- what is that */
-};
-
static struct aemif_config aemif_configs[] = {
{ /* CS0 */
.mode = AEMIF_MODE_NAND,
@@ -52,18 +29,11 @@ static struct aemif_config aemif_configs[] = {
.turn_around = 3,
.width = AEMIF_WIDTH_8,
},
-
-};
-
-static struct pll_init_data pll_config[] = {
- CORE_PLL_1228,
- PASS_PLL_983,
- TETRIS_PLL_1200,
};
int dram_init(void)
{
- init_ddr3();
+ ddr3_init();
gd->ram_size = get_ram_size((long *)CONFIG_SYS_SDRAM_BASE,
CONFIG_MAX_RAM_BANK_SIZE);
@@ -71,42 +41,18 @@ int dram_init(void)
return 0;
}
-#ifdef CONFIG_DRIVER_TI_KEYSTONE_NET
-struct eth_priv_t eth_priv_cfg[] = {
- {
- .int_name = "K2HK_EMAC",
- .rx_flow = 22,
- .phy_addr = 0,
- .slave_port = 1,
- .sgmii_link_type = SGMII_LINK_MAC_PHY,
- },
- {
- .int_name = "K2HK_EMAC1",
- .rx_flow = 23,
- .phy_addr = 1,
- .slave_port = 2,
- .sgmii_link_type = SGMII_LINK_MAC_PHY,
- },
- {
- .int_name = "K2HK_EMAC2",
- .rx_flow = 24,
- .phy_addr = 2,
- .slave_port = 3,
- .sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
- },
- {
- .int_name = "K2HK_EMAC3",
- .rx_flow = 25,
- .phy_addr = 3,
- .slave_port = 4,
- .sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
- },
-};
+int board_init(void)
+{
+ gd->bd->bi_boot_params = CONFIG_LINUX_BOOT_PARAM_ADDR;
+
+ return 0;
+}
+#ifdef CONFIG_DRIVER_TI_KEYSTONE_NET
int get_eth_env_param(char *env_name)
{
char *env;
- int res = -1;
+ int res = -1;
env = getenv(env_name);
if (env)
@@ -117,12 +63,14 @@ int get_eth_env_param(char *env_name)
int board_eth_init(bd_t *bis)
{
- int j;
- int res;
- char link_type_name[32];
+ int j;
+ int res;
+ int port_num;
+ char link_type_name[32];
- for (j = 0; j < (sizeof(eth_priv_cfg) / sizeof(struct eth_priv_t));
- j++) {
+ port_num = get_num_eth_ports();
+
+ for (j = 0; j < port_num; j++) {
sprintf(link_type_name, "sgmii%d_link_type", j);
res = get_eth_env_param(link_type_name);
if (res >= 0)
@@ -135,46 +83,24 @@ int board_eth_init(bd_t *bis)
}
#endif
-/* Byte swap the 32-bit data if the device is BE */
-int cpu_to_bus(u32 *ptr, u32 length)
-{
- u32 i;
-
- if (device_big_endian)
- for (i = 0; i < length; i++, ptr++)
- *ptr = __swab32(*ptr);
-
- return 0;
-}
-
-#if defined(CONFIG_BOARD_EARLY_INIT_F)
-int board_early_init_f(void)
-{
- init_plls(ARRAY_SIZE(pll_config), pll_config);
- return 0;
-}
-#endif
-
-int board_init(void)
-{
- gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
-
- return 0;
-}
-
#if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
-#define K2_DDR3_START_ADDR 0x80000000
void ft_board_setup(void *blob, bd_t *bd)
{
- u64 start[2];
+ int lpae;
+ char *env;
+ char *endp;
+ int nbanks;
u64 size[2];
- char name[32], *env, *endp;
- int lpae, nodeoffset;
+ u64 start[2];
+ char name[32];
+ int nodeoffset;
u32 ddr3a_size;
- int nbanks;
+ int unitrd_fixup = 0;
env = getenv("mem_lpae");
lpae = env && simple_strtol(env, NULL, 0);
+ env = getenv("uinitrd_fixup");
+ unitrd_fixup = env && simple_strtol(env, NULL, 0);
ddr3a_size = 0;
if (lpae) {
@@ -191,7 +117,7 @@ void ft_board_setup(void *blob, bd_t *bd)
/* adjust memory start address for LPAE */
if (lpae) {
- start[0] -= K2_DDR3_START_ADDR;
+ start[0] -= CONFIG_SYS_SDRAM_BASE;
start[0] += CONFIG_SYS_LPAE_SDRAM_BASE;
}
@@ -217,10 +143,11 @@ void ft_board_setup(void *blob, bd_t *bd)
fdt_fixup_memory_banks(blob, start, size, nbanks);
/* Fix up the initrd */
- if (lpae) {
- u64 initrd_start, initrd_end;
- u32 *prop1, *prop2;
+ if (lpae && unitrd_fixup) {
int err;
+ u32 *prop1, *prop2;
+ u64 initrd_start, initrd_end;
+
nodeoffset = fdt_path_offset(blob, "/chosen");
if (nodeoffset >= 0) {
prop1 = (u32 *)fdt_getprop(blob, nodeoffset,
@@ -229,11 +156,11 @@ void ft_board_setup(void *blob, bd_t *bd)
"linux,initrd-end", NULL);
if (prop1 && prop2) {
initrd_start = __be32_to_cpu(*prop1);
- initrd_start -= K2_DDR3_START_ADDR;
+ initrd_start -= CONFIG_SYS_SDRAM_BASE;
initrd_start += CONFIG_SYS_LPAE_SDRAM_BASE;
initrd_start = __cpu_to_be64(initrd_start);
initrd_end = __be32_to_cpu(*prop2);
- initrd_end -= K2_DDR3_START_ADDR;
+ initrd_end -= CONFIG_SYS_SDRAM_BASE;
initrd_end += CONFIG_SYS_LPAE_SDRAM_BASE;
initrd_end = __cpu_to_be64(initrd_end);
@@ -267,9 +194,10 @@ void ft_board_setup(void *blob, bd_t *bd)
void ft_board_setup_ex(void *blob, bd_t *bd)
{
- int lpae;
- char *env;
- u64 *reserve_start, size;
+ int lpae;
+ u64 size;
+ char *env;
+ u64 *reserve_start;
env = getenv("mem_lpae");
lpae = env && simple_strtol(env, NULL, 0);
@@ -286,7 +214,7 @@ void ft_board_setup_ex(void *blob, bd_t *bd)
*reserve_start = __cpu_to_be64(*reserve_start);
size = __cpu_to_be64(*(reserve_start + 1));
if (size) {
- *reserve_start -= K2_DDR3_START_ADDR;
+ *reserve_start -= CONFIG_SYS_SDRAM_BASE;
*reserve_start +=
CONFIG_SYS_LPAE_SDRAM_BASE;
*reserve_start =
diff --git a/board/ti/ks2_evm/board.h b/board/ti/ks2_evm/board.h
new file mode 100644
index 0000000..d91ef73
--- /dev/null
+++ b/board/ti/ks2_evm/board.h
@@ -0,0 +1,19 @@
+/*
+ * K2HK EVM : Board common header
+ *
+ * (C) Copyright 2014
+ * Texas Instruments Incorporated, <www.ti.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef _KS2_BOARD
+#define _KS2_BOARD
+
+#include <asm/arch/emac_defs.h>
+
+extern struct eth_priv_t eth_priv_cfg[];
+
+int get_num_eth_ports(void);
+
+#endif
diff --git a/board/ti/ks2_evm/board_k2e.c b/board/ti/ks2_evm/board_k2e.c
new file mode 100644
index 0000000..d2499b7
--- /dev/null
+++ b/board/ti/ks2_evm/board_k2e.c
@@ -0,0 +1,39 @@
+/*
+ * K2E EVM : Board initialization
+ *
+ * (C) Copyright 2014
+ * Texas Instruments Incorporated, <www.ti.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/arch/ddr3.h>
+#include <asm/arch/hardware.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+unsigned int external_clk[ext_clk_count] = {
+ [sys_clk] = 100000000,
+ [alt_core_clk] = 100000000,
+ [pa_clk] = 100000000,
+ [ddr3_clk] = 100000000,
+ [mcm_clk] = 312500000,
+ [pcie_clk] = 100000000,
+ [sgmii_clk] = 156250000,
+ [xgmii_clk] = 156250000,
+ [usb_clk] = 100000000,
+};
+
+static struct pll_init_data pll_config[] = {
+ CORE_PLL_1200,
+ PASS_PLL_1000,
+};
+
+#if defined(CONFIG_BOARD_EARLY_INIT_F)
+int board_early_init_f(void)
+{
+ init_plls(ARRAY_SIZE(pll_config), pll_config);
+ return 0;
+}
+#endif
diff --git a/board/ti/ks2_evm/board_k2hk.c b/board/ti/ks2_evm/board_k2hk.c
new file mode 100644
index 0000000..a369d6b
--- /dev/null
+++ b/board/ti/ks2_evm/board_k2hk.c
@@ -0,0 +1,81 @@
+/*
+ * K2HK EVM : Board initialization
+ *
+ * (C) Copyright 2012-2014
+ * Texas Instruments Incorporated, <www.ti.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/arch/hardware.h>
+#include <asm/arch/emac_defs.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+unsigned int external_clk[ext_clk_count] = {
+ [sys_clk] = 122880000,
+ [alt_core_clk] = 125000000,
+ [pa_clk] = 122880000,
+ [tetris_clk] = 125000000,
+ [ddr3a_clk] = 100000000,
+ [ddr3b_clk] = 100000000,
+ [mcm_clk] = 312500000,
+ [pcie_clk] = 100000000,
+ [sgmii_srio_clk] = 156250000,
+ [xgmii_clk] = 156250000,
+ [usb_clk] = 100000000,
+ [rp1_clk] = 123456789
+};
+
+static struct pll_init_data pll_config[] = {
+ CORE_PLL_1228,
+ PASS_PLL_983,
+ TETRIS_PLL_1200,
+};
+
+#ifdef CONFIG_DRIVER_TI_KEYSTONE_NET
+struct eth_priv_t eth_priv_cfg[] = {
+ {
+ .int_name = "K2HK_EMAC",
+ .rx_flow = 22,
+ .phy_addr = 0,
+ .slave_port = 1,
+ .sgmii_link_type = SGMII_LINK_MAC_PHY,
+ },
+ {
+ .int_name = "K2HK_EMAC1",
+ .rx_flow = 23,
+ .phy_addr = 1,
+ .slave_port = 2,
+ .sgmii_link_type = SGMII_LINK_MAC_PHY,
+ },
+ {
+ .int_name = "K2HK_EMAC2",
+ .rx_flow = 24,
+ .phy_addr = 2,
+ .slave_port = 3,
+ .sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
+ },
+ {
+ .int_name = "K2HK_EMAC3",
+ .rx_flow = 25,
+ .phy_addr = 3,
+ .slave_port = 4,
+ .sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
+ },
+};
+
+int get_num_eth_ports(void)
+{
+ return sizeof(eth_priv_cfg) / sizeof(struct eth_priv_t);
+}
+#endif
+
+#ifdef CONFIG_BOARD_EARLY_INIT_F
+int board_early_init_f(void)
+{
+ init_plls(ARRAY_SIZE(pll_config), pll_config);
+ return 0;
+}
+#endif
diff --git a/board/ti/ks2_evm/ddr3_cfg.c b/board/ti/ks2_evm/ddr3_cfg.c
new file mode 100644
index 0000000..f7da9f2
--- /dev/null
+++ b/board/ti/ks2_evm/ddr3_cfg.c
@@ -0,0 +1,170 @@
+/*
+ * Keystone2: DDR3 configuration
+ *
+ * (C) Copyright 2012-2014
+ * Texas Instruments Incorporated, <www.ti.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+
+#include <i2c.h>
+#include <asm/arch/ddr3.h>
+#include <asm/arch/hardware.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/* DDR3 PHY configuration data with 1600M rate, 8GB size */
+struct ddr3_phy_config ddr3phy_1600_8g = {
+ .pllcr = 0x0001C000ul,
+ .pgcr1_mask = (IODDRM_MASK | ZCKSEL_MASK),
+ .pgcr1_val = ((1 << 2) | (1 << 7) | (1 << 23)),
+ .ptr0 = 0x42C21590ul,
+ .ptr1 = 0xD05612C0ul,
+ .ptr2 = 0, /* not set in gel */
+ .ptr3 = 0x0D861A80ul,
+ .ptr4 = 0x0C827100ul,
+ .dcr_mask = (PDQ_MASK | MPRDQ_MASK | BYTEMASK_MASK),
+ .dcr_val = ((1 << 10)),
+ .dtpr0 = 0xA19DBB66ul,
+ .dtpr1 = 0x32868300ul,
+ .dtpr2 = 0x50035200ul,
+ .mr0 = 0x00001C70ul,
+ .mr1 = 0x00000006ul,
+ .mr2 = 0x00000018ul,
+ .dtcr = 0x730035C7ul,
+ .pgcr2 = 0x00F07A12ul,
+ .zq0cr1 = 0x0000005Dul,
+ .zq1cr1 = 0x0000005Bul,
+ .zq2cr1 = 0x0000005Bul,
+ .pir_v1 = 0x00000033ul,
+ .pir_v2 = 0x0000FF81ul,
+};
+
+/* DDR3 EMIF configuration data with 1600M rate, 8GB size */
+struct ddr3_emif_config ddr3_1600_8g = {
+ .sdcfg = 0x6200CE6Aul,
+ .sdtim1 = 0x16709C55ul,
+ .sdtim2 = 0x00001D4Aul,
+ .sdtim3 = 0x435DFF54ul,
+ .sdtim4 = 0x553F0CFFul,
+ .zqcfg = 0xF0073200ul,
+ .sdrfc = 0x00001869ul,
+};
+
+#ifdef CONFIG_K2HK_EVM
+/* DDR3 PHY configuration data with 1333M rate, and 2GB size */
+struct ddr3_phy_config ddr3phy_1333_2g = {
+ .pllcr = 0x0005C000ul,
+ .pgcr1_mask = (IODDRM_MASK | ZCKSEL_MASK),
+ .pgcr1_val = ((1 << 2) | (1 << 7) | (1 << 23)),
+ .ptr0 = 0x42C21590ul,
+ .ptr1 = 0xD05612C0ul,
+ .ptr2 = 0, /* not set in gel */
+ .ptr3 = 0x0B4515C2ul,
+ .ptr4 = 0x0A6E08B4ul,
+ .dcr_mask = (PDQ_MASK | MPRDQ_MASK | BYTEMASK_MASK),
+ .dcr_val = ((1 << 10)),
+ .dtpr0 = 0x8558AA55ul,
+ .dtpr1 = 0x32857280ul,
+ .dtpr2 = 0x5002C200ul,
+ .mr0 = 0x00001A60ul,
+ .mr1 = 0x00000006ul,
+ .mr2 = 0x00000010ul,
+ .dtcr = 0x710035C7ul,
+ .pgcr2 = 0x00F065B8ul,
+ .zq0cr1 = 0x0000005Dul,
+ .zq1cr1 = 0x0000005Bul,
+ .zq2cr1 = 0x0000005Bul,
+ .pir_v1 = 0x00000033ul,
+ .pir_v2 = 0x0000FF81ul,
+};
+
+/* DDR3 EMIF configuration data with 1333M rate, and 2GB size */
+struct ddr3_emif_config ddr3_1333_2g = {
+ .sdcfg = 0x62008C62ul,
+ .sdtim1 = 0x125C8044ul,
+ .sdtim2 = 0x00001D29ul,
+ .sdtim3 = 0x32CDFF43ul,
+ .sdtim4 = 0x543F0ADFul,
+ .zqcfg = 0x70073200ul,
+ .sdrfc = 0x00001457ul,
+};
+#endif
+
+#ifdef CONFIG_K2E_EVM
+/* DDR3 PHY configuration data with 1600M rate, and 4GB size */
+struct ddr3_phy_config ddr3phy_1600_4g = {
+ .pllcr = 0x0001C000ul,
+ .pgcr1_mask = (IODDRM_MASK | ZCKSEL_MASK),
+ .pgcr1_val = ((1 << 2) | (1 << 7) | (1 << 23)),
+ .ptr0 = 0x42C21590ul,
+ .ptr1 = 0xD05612C0ul,
+ .ptr2 = 0, /* not set in gel */
+ .ptr3 = 0x08861A80ul,
+ .ptr4 = 0x0C827100ul,
+ .dcr_mask = (PDQ_MASK | MPRDQ_MASK | BYTEMASK_MASK),
+ .dcr_val = ((1 << 10)),
+ .dtpr0 = 0x9D9CBB66ul,
+ .dtpr1 = 0x12840300ul,
+ .dtpr2 = 0x5002D200ul,
+ .mr0 = 0x00001C70ul,
+ .mr1 = 0x00000006ul,
+ .mr2 = 0x00000018ul,
+ .dtcr = 0x710035C7ul,
+ .pgcr2 = 0x00F07A12ul,
+ .zq0cr1 = 0x0001005Dul,
+ .zq1cr1 = 0x0001005Bul,
+ .zq2cr1 = 0x0001005Bul,
+ .pir_v1 = 0x00000033ul,
+ .pir_v2 = 0x0000FF81ul,
+};
+
+/* DDR3 EMIF configuration data with 1600M rate, and 4GB size */
+struct ddr3_emif_config ddr3_1600_4g = {
+ .sdcfg = 0x6200CE62ul,
+ .sdtim1 = 0x166C9855ul,
+ .sdtim2 = 0x00001D4Aul,
+ .sdtim3 = 0x421DFF53ul,
+ .sdtim4 = 0x543F07FFul,
+ .zqcfg = 0x70073200ul,
+ .sdrfc = 0x00001869ul,
+};
+#endif
+
+int ddr3_get_dimm_params(char *dimm_name)
+{
+ int ret;
+ int old_bus;
+ u8 spd_params[256];
+
+ i2c_init(CONFIG_SYS_DAVINCI_I2C_SPEED, CONFIG_SYS_DAVINCI_I2C_SLAVE);
+
+ old_bus = i2c_get_bus_num();
+ i2c_set_bus_num(1);
+
+ ret = i2c_read(0x53, 0, 1, spd_params, 256);
+
+ i2c_set_bus_num(old_bus);
+
+ dimm_name[0] = '\0';
+
+ if (ret) {
+ puts("Cannot read DIMM params\n");
+ return 1;
+ }
+
+ /*
+ * We need to convert spd data to dimm parameters
+ * and to DDR3 EMIF and PHY regirsters values.
+ * For now we just return DIMM type string value.
+ * Caller may use this value to choose appropriate
+ * a pre-set DDR3 configuration
+ */
+
+ strncpy(dimm_name, (char *)&spd_params[0x80], 18);
+ dimm_name[18] = '\0';
+
+ return 0;
+}
diff --git a/board/ti/ks2_evm/ddr3_cfg.h b/board/ti/ks2_evm/ddr3_cfg.h
new file mode 100644
index 0000000..15fcf52
--- /dev/null
+++ b/board/ti/ks2_evm/ddr3_cfg.h
@@ -0,0 +1,24 @@
+/*
+ * Keystone2: DDR3 configuration
+ *
+ * (C) Copyright 2012-2014
+ * Texas Instruments Incorporated, <www.ti.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef __DDR3_CFG_H
+#define __DDR3_CFG_H
+
+extern struct ddr3_phy_config ddr3phy_1600_8g;
+extern struct ddr3_emif_config ddr3_1600_8g;
+
+extern struct ddr3_phy_config ddr3phy_1333_2g;
+extern struct ddr3_emif_config ddr3_1333_2g;
+
+extern struct ddr3_phy_config ddr3phy_1600_4g;
+extern struct ddr3_emif_config ddr3_1600_4g;
+
+int ddr3_get_dimm_params(char *dimm_name);
+
+#endif /* __DDR3_CFG_H */
diff --git a/board/ti/ks2_evm/ddr3_k2e.c b/board/ti/ks2_evm/ddr3_k2e.c
new file mode 100644
index 0000000..40fd966
--- /dev/null
+++ b/board/ti/ks2_evm/ddr3_k2e.c
@@ -0,0 +1,55 @@
+/*
+ * Keystone2: DDR3 initialization
+ *
+ * (C) Copyright 2014
+ * Texas Instruments Incorporated, <www.ti.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include "ddr3_cfg.h"
+#include <asm/arch/ddr3.h>
+
+static int ddr3_size;
+static struct pll_init_data ddr3_400 = DDR3_PLL_400;
+
+void ddr3_init(void)
+{
+ char dimm_name[32];
+
+ if (~(readl(KS2_PLL_CNTRL_BASE + KS2_RSTCTRL_RSTYPE) & 0x1))
+ init_pll(&ddr3_400);
+
+ ddr3_get_dimm_params(dimm_name);
+
+ printf("Detected SO-DIMM [%s]\n", dimm_name);
+
+ /* Reset DDR3 PHY after PLL enabled */
+ ddr3_reset_ddrphy();
+
+ if (!strcmp(dimm_name, "18KSF1G72HZ-1G6E2 ")) {
+ /* 8G SO-DIMM */
+ ddr3_size = 8;
+ printf("DRAM: 8 GiB\n");
+ ddr3phy_1600_8g.zq0cr1 |= 0x10000;
+ ddr3phy_1600_8g.zq1cr1 |= 0x10000;
+ ddr3phy_1600_8g.zq2cr1 |= 0x10000;
+ ddr3_init_ddrphy(KS2_DDR3A_DDRPHYC, &ddr3phy_1600_8g);
+ ddr3_init_ddremif(KS2_DDR3A_EMIF_CTRL_BASE, &ddr3_1600_8g);
+ } else if (!strcmp(dimm_name, "18KSF51272HZ-1G6K2")) {
+ /* 4G SO-DIMM */
+ ddr3_size = 4;
+ printf("DRAM: 4 GiB\n");
+ ddr3_init_ddrphy(KS2_DDR3A_DDRPHYC, &ddr3phy_1600_4g);
+ ddr3_init_ddremif(KS2_DDR3A_EMIF_CTRL_BASE, &ddr3_1600_4g);
+ }
+}
+
+/**
+ * ddr3_get_size - return ddr3 size in GiB
+ */
+int ddr3_get_size(void)
+{
+ return ddr3_size;
+}
diff --git a/board/ti/ks2_evm/ddr3_k2hk.c b/board/ti/ks2_evm/ddr3_k2hk.c
new file mode 100644
index 0000000..21a5a0a
--- /dev/null
+++ b/board/ti/ks2_evm/ddr3_k2hk.c
@@ -0,0 +1,84 @@
+/*
+ * Keystone2: DDR3 initialization
+ *
+ * (C) Copyright 2012-2014
+ * Texas Instruments Incorporated, <www.ti.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include "ddr3_cfg.h"
+#include <asm/arch/ddr3.h>
+#include <asm/arch/hardware.h>
+
+struct pll_init_data ddr3a_333 = DDR3_PLL_333(A);
+struct pll_init_data ddr3a_400 = DDR3_PLL_400(A);
+
+void ddr3_init(void)
+{
+ char dimm_name[32];
+
+ ddr3_get_dimm_params(dimm_name);
+
+ printf("Detected SO-DIMM [%s]\n", dimm_name);
+
+ if (!strcmp(dimm_name, "18KSF1G72HZ-1G6E2 ")) {
+ init_pll(&ddr3a_400);
+ if (cpu_revision() > 0) {
+ if (cpu_revision() > 1) {
+ /* PG 2.0 */
+ /* Reset DDR3A PHY after PLL enabled */
+ ddr3_reset_ddrphy();
+ ddr3phy_1600_8g.zq0cr1 |= 0x10000;
+ ddr3phy_1600_8g.zq1cr1 |= 0x10000;
+ ddr3phy_1600_8g.zq2cr1 |= 0x10000;
+ ddr3_init_ddrphy(KS2_DDR3A_DDRPHYC,
+ &ddr3phy_1600_8g);
+ } else {
+ /* PG 1.1 */
+ ddr3_init_ddrphy(KS2_DDR3A_DDRPHYC,
+ &ddr3phy_1600_8g);
+ }
+
+ ddr3_init_ddremif(KS2_DDR3A_EMIF_CTRL_BASE,
+ &ddr3_1600_8g);
+ printf("DRAM: Capacity 8 GiB (includes reported below)\n");
+ } else {
+ ddr3_init_ddrphy(KS2_DDR3A_DDRPHYC, &ddr3phy_1600_8g);
+ ddr3_1600_8g.sdcfg |= 0x1000;
+ ddr3_init_ddremif(KS2_DDR3A_EMIF_CTRL_BASE,
+ &ddr3_1600_8g);
+ printf("DRAM: Capacity 4 GiB (includes reported below)\n");
+ }
+ } else if (!strcmp(dimm_name, "SQR-SD3T-2G1333SED")) {
+ init_pll(&ddr3a_333);
+ if (cpu_revision() > 0) {
+ if (cpu_revision() > 1) {
+ /* PG 2.0 */
+ /* Reset DDR3A PHY after PLL enabled */
+ ddr3_reset_ddrphy();
+ ddr3phy_1333_2g.zq0cr1 |= 0x10000;
+ ddr3phy_1333_2g.zq1cr1 |= 0x10000;
+ ddr3phy_1333_2g.zq2cr1 |= 0x10000;
+ ddr3_init_ddrphy(KS2_DDR3A_DDRPHYC,
+ &ddr3phy_1333_2g);
+ } else {
+ /* PG 1.1 */
+ ddr3_init_ddrphy(KS2_DDR3A_DDRPHYC,
+ &ddr3phy_1333_2g);
+ }
+ ddr3_init_ddremif(KS2_DDR3A_EMIF_CTRL_BASE,
+ &ddr3_1333_2g);
+ } else {
+ ddr3_init_ddrphy(KS2_DDR3A_DDRPHYC, &ddr3phy_1333_2g);
+ ddr3_1333_2g.sdcfg |= 0x1000;
+ ddr3_init_ddremif(KS2_DDR3A_EMIF_CTRL_BASE,
+ &ddr3_1333_2g);
+ }
+ } else {
+ printf("Unknown SO-DIMM. Cannot configure DDR3\n");
+ while (1)
+ ;
+ }
+}
diff --git a/board/ti/omap5912osk/Kconfig b/board/ti/omap5912osk/Kconfig
new file mode 100644
index 0000000..9f7493a
--- /dev/null
+++ b/board/ti/omap5912osk/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_OMAP5912OSK
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "omap5912osk"
+
+config SYS_VENDOR
+ string
+ default "ti"
+
+config SYS_SOC
+ string
+ default "omap"
+
+config SYS_CONFIG_NAME
+ string
+ default "omap5912osk"
+
+endif
diff --git a/board/ti/omap5912osk/MAINTAINERS b/board/ti/omap5912osk/MAINTAINERS
new file mode 100644
index 0000000..43ffb9b
--- /dev/null
+++ b/board/ti/omap5912osk/MAINTAINERS
@@ -0,0 +1,6 @@
+OMAP5912OSK BOARD
+M: Rishi Bhattacharya <rishi@ti.com>
+S: Maintained
+F: board/ti/omap5912osk/
+F: include/configs/omap5912osk.h
+F: configs/omap5912osk_defconfig
diff --git a/board/ti/omap5_uevm/Kconfig b/board/ti/omap5_uevm/Kconfig
new file mode 100644
index 0000000..7c7d5dc
--- /dev/null
+++ b/board/ti/omap5_uevm/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_OMAP5_UEVM
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "omap5_uevm"
+
+config SYS_VENDOR
+ string
+ default "ti"
+
+config SYS_SOC
+ string
+ default "omap5"
+
+config SYS_CONFIG_NAME
+ string
+ default "omap5_uevm"
+
+endif
diff --git a/board/ti/omap5_uevm/MAINTAINERS b/board/ti/omap5_uevm/MAINTAINERS
new file mode 100644
index 0000000..280ea2f
--- /dev/null
+++ b/board/ti/omap5_uevm/MAINTAINERS
@@ -0,0 +1,6 @@
+OMAP5_UEVM BOARD
+M: Lokesh Vutla <lokeshvutla@ti.com>
+S: Maintained
+F: board/ti/omap5_uevm/
+F: include/configs/omap5_uevm.h
+F: configs/omap5_uevm_defconfig
diff --git a/board/ti/panda/Kconfig b/board/ti/panda/Kconfig
new file mode 100644
index 0000000..be1307d
--- /dev/null
+++ b/board/ti/panda/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_OMAP4_PANDA
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "panda"
+
+config SYS_VENDOR
+ string
+ default "ti"
+
+config SYS_SOC
+ string
+ default "omap4"
+
+config SYS_CONFIG_NAME
+ string
+ default "omap4_panda"
+
+endif
diff --git a/board/ti/panda/MAINTAINERS b/board/ti/panda/MAINTAINERS
new file mode 100644
index 0000000..2142368
--- /dev/null
+++ b/board/ti/panda/MAINTAINERS
@@ -0,0 +1,6 @@
+PANDA BOARD
+M: Lokesh Vutla <lokeshvutla@ti.com>
+S: Maintained
+F: board/ti/panda/
+F: include/configs/omap4_panda.h
+F: configs/omap4_panda_defconfig
diff --git a/board/ti/sdp3430/Kconfig b/board/ti/sdp3430/Kconfig
new file mode 100644
index 0000000..81989b7
--- /dev/null
+++ b/board/ti/sdp3430/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_OMAP3_SDP3430
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "sdp3430"
+
+config SYS_VENDOR
+ string
+ default "ti"
+
+config SYS_SOC
+ string
+ default "omap3"
+
+config SYS_CONFIG_NAME
+ string
+ default "omap3_sdp3430"
+
+endif
diff --git a/board/ti/sdp3430/MAINTAINERS b/board/ti/sdp3430/MAINTAINERS
new file mode 100644
index 0000000..943c196
--- /dev/null
+++ b/board/ti/sdp3430/MAINTAINERS
@@ -0,0 +1,6 @@
+SDP3430 BOARD
+M: Nishanth Menon <nm@ti.com>
+S: Maintained
+F: board/ti/sdp3430/
+F: include/configs/omap3_sdp3430.h
+F: configs/omap3_sdp3430_defconfig
diff --git a/board/ti/sdp4430/Kconfig b/board/ti/sdp4430/Kconfig
new file mode 100644
index 0000000..140e1f1
--- /dev/null
+++ b/board/ti/sdp4430/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_OMAP4_SDP4430
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "sdp4430"
+
+config SYS_VENDOR
+ string
+ default "ti"
+
+config SYS_SOC
+ string
+ default "omap4"
+
+config SYS_CONFIG_NAME
+ string
+ default "omap4_sdp4430"
+
+endif
diff --git a/board/ti/sdp4430/MAINTAINERS b/board/ti/sdp4430/MAINTAINERS
new file mode 100644
index 0000000..ac4d0cc
--- /dev/null
+++ b/board/ti/sdp4430/MAINTAINERS
@@ -0,0 +1,6 @@
+SDP4430 BOARD
+M: Lokesh Vutla <lokeshvutla@ti.com>
+S: Maintained
+F: board/ti/sdp4430/
+F: include/configs/omap4_sdp4430.h
+F: configs/omap4_sdp4430_defconfig
diff --git a/board/ti/ti814x/Kconfig b/board/ti/ti814x/Kconfig
new file mode 100644
index 0000000..4d4f52c
--- /dev/null
+++ b/board/ti/ti814x/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_TI814X_EVM
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "ti814x"
+
+config SYS_VENDOR
+ string
+ default "ti"
+
+config SYS_SOC
+ string
+ default "am33xx"
+
+config SYS_CONFIG_NAME
+ string
+ default "ti814x_evm"
+
+endif
diff --git a/board/ti/ti814x/MAINTAINERS b/board/ti/ti814x/MAINTAINERS
new file mode 100644
index 0000000..e39b253
--- /dev/null
+++ b/board/ti/ti814x/MAINTAINERS
@@ -0,0 +1,6 @@
+TI814X BOARD
+M: Matt Porter <matt.porter@linaro.org>
+S: Maintained
+F: board/ti/ti814x/
+F: include/configs/ti814x_evm.h
+F: configs/ti814x_evm_defconfig
diff --git a/board/ti/ti816x/Kconfig b/board/ti/ti816x/Kconfig
new file mode 100644
index 0000000..5821172
--- /dev/null
+++ b/board/ti/ti816x/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_TI816X_EVM
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "ti816x"
+
+config SYS_VENDOR
+ string
+ default "ti"
+
+config SYS_SOC
+ string
+ default "am33xx"
+
+config SYS_CONFIG_NAME
+ string
+ default "ti816x_evm"
+
+endif
diff --git a/board/ti/ti816x/MAINTAINERS b/board/ti/ti816x/MAINTAINERS
new file mode 100644
index 0000000..8bf6122
--- /dev/null
+++ b/board/ti/ti816x/MAINTAINERS
@@ -0,0 +1,6 @@
+TI816X BOARD
+M: -
+S: Maintained
+F: board/ti/ti816x/
+F: include/configs/ti816x_evm.h
+F: configs/ti816x_evm_defconfig
diff --git a/board/ti/tnetv107xevm/Kconfig b/board/ti/tnetv107xevm/Kconfig
new file mode 100644
index 0000000..9cffd7c
--- /dev/null
+++ b/board/ti/tnetv107xevm/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_TNETV107X_EVM
+
+config SYS_CPU
+ string
+ default "arm1176"
+
+config SYS_BOARD
+ string
+ default "tnetv107xevm"
+
+config SYS_VENDOR
+ string
+ default "ti"
+
+config SYS_SOC
+ string
+ default "tnetv107x"
+
+config SYS_CONFIG_NAME
+ string
+ default "tnetv107x_evm"
+
+endif
diff --git a/board/ti/tnetv107xevm/MAINTAINERS b/board/ti/tnetv107xevm/MAINTAINERS
new file mode 100644
index 0000000..76ccfdc
--- /dev/null
+++ b/board/ti/tnetv107xevm/MAINTAINERS
@@ -0,0 +1,6 @@
+TNETV107XEVM BOARD
+M: Chan-Taek Park <c-park@ti.com>
+S: Orphan (since 2014-06)
+F: board/ti/tnetv107xevm/
+F: include/configs/tnetv107x_evm.h
+F: configs/tnetv107x_evm_defconfig
diff --git a/board/timll/devkit3250/Kconfig b/board/timll/devkit3250/Kconfig
new file mode 100644
index 0000000..4caee60
--- /dev/null
+++ b/board/timll/devkit3250/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_DEVKIT3250
+
+config SYS_CPU
+ string
+ default "arm926ejs"
+
+config SYS_BOARD
+ string
+ default "devkit3250"
+
+config SYS_VENDOR
+ string
+ default "timll"
+
+config SYS_SOC
+ string
+ default "lpc32xx"
+
+config SYS_CONFIG_NAME
+ string
+ default "devkit3250"
+
+endif
diff --git a/board/timll/devkit3250/MAINTAINERS b/board/timll/devkit3250/MAINTAINERS
new file mode 100644
index 0000000..cb93563
--- /dev/null
+++ b/board/timll/devkit3250/MAINTAINERS
@@ -0,0 +1,6 @@
+DEVKIT3250 BOARD
+M: Vladimir Zapolskiy <vz@mleia.com>
+S: Maintained
+F: board/timll/devkit3250/
+F: include/configs/devkit3250.h
+F: configs/devkit3250_defconfig
diff --git a/board/timll/devkit8000/Kconfig b/board/timll/devkit8000/Kconfig
new file mode 100644
index 0000000..d9c920c
--- /dev/null
+++ b/board/timll/devkit8000/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_DEVKIT8000
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "devkit8000"
+
+config SYS_VENDOR
+ string
+ default "timll"
+
+config SYS_SOC
+ string
+ default "omap3"
+
+config SYS_CONFIG_NAME
+ string
+ default "devkit8000"
+
+endif
diff --git a/board/timll/devkit8000/MAINTAINERS b/board/timll/devkit8000/MAINTAINERS
new file mode 100644
index 0000000..c490757
--- /dev/null
+++ b/board/timll/devkit8000/MAINTAINERS
@@ -0,0 +1,6 @@
+DEVKIT8000 BOARD
+M: Thomas Weber <weber@corscience.de>
+S: Maintained
+F: board/timll/devkit8000/
+F: include/configs/devkit8000.h
+F: configs/devkit8000_defconfig
diff --git a/board/toradex/colibri_pxa270/Kconfig b/board/toradex/colibri_pxa270/Kconfig
new file mode 100644
index 0000000..9367c88
--- /dev/null
+++ b/board/toradex/colibri_pxa270/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_COLIBRI_PXA270
+
+config SYS_CPU
+ string
+ default "pxa"
+
+config SYS_BOARD
+ string
+ default "colibri_pxa270"
+
+config SYS_VENDOR
+ string
+ default "toradex"
+
+config SYS_CONFIG_NAME
+ string
+ default "colibri_pxa270"
+
+endif
diff --git a/board/toradex/colibri_pxa270/MAINTAINERS b/board/toradex/colibri_pxa270/MAINTAINERS
new file mode 100644
index 0000000..b378d7b
--- /dev/null
+++ b/board/toradex/colibri_pxa270/MAINTAINERS
@@ -0,0 +1,6 @@
+COLIBRI_PXA270 BOARD
+M: Marek Vasut <marek.vasut@gmail.com>
+S: Maintained
+F: board/toradex/colibri_pxa270/
+F: include/configs/colibri_pxa270.h
+F: configs/colibri_pxa270_defconfig
diff --git a/board/toradex/colibri_t20_iris/Kconfig b/board/toradex/colibri_t20_iris/Kconfig
new file mode 100644
index 0000000..334b7e0
--- /dev/null
+++ b/board/toradex/colibri_t20_iris/Kconfig
@@ -0,0 +1,24 @@
+if TARGET_COLIBRI_T20_IRIS
+
+config SYS_CPU
+ string
+ default "arm720t" if SPL_BUILD
+ default "armv7" if !SPL_BUILD
+
+config SYS_BOARD
+ string
+ default "colibri_t20_iris"
+
+config SYS_VENDOR
+ string
+ default "toradex"
+
+config SYS_SOC
+ string
+ default "tegra20"
+
+config SYS_CONFIG_NAME
+ string
+ default "colibri_t20_iris"
+
+endif
diff --git a/board/toradex/colibri_t20_iris/MAINTAINERS b/board/toradex/colibri_t20_iris/MAINTAINERS
new file mode 100644
index 0000000..c68955b
--- /dev/null
+++ b/board/toradex/colibri_t20_iris/MAINTAINERS
@@ -0,0 +1,6 @@
+COLIBRI_T20_IRIS BOARD
+M: Lucas Stach <dev@lynxeye.de>
+S: Maintained
+F: board/toradex/colibri_t20_iris/
+F: include/configs/colibri_t20_iris.h
+F: configs/colibri_t20_iris_defconfig
diff --git a/board/total5200/Kconfig b/board/total5200/Kconfig
new file mode 100644
index 0000000..774eb98
--- /dev/null
+++ b/board/total5200/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_TOTAL5200
+
+config SYS_BOARD
+ string
+ default "total5200"
+
+config SYS_CONFIG_NAME
+ string
+ default "Total5200"
+
+endif
diff --git a/board/total5200/MAINTAINERS b/board/total5200/MAINTAINERS
new file mode 100644
index 0000000..983b96d
--- /dev/null
+++ b/board/total5200/MAINTAINERS
@@ -0,0 +1,9 @@
+TOTAL5200 BOARD
+M: -
+S: Maintained
+F: board/total5200/
+F: include/configs/Total5200.h
+F: configs/Total5200_defconfig
+F: configs/Total5200_lowboot_defconfig
+F: configs/Total5200_Rev2_defconfig
+F: configs/Total5200_Rev2_lowboot_defconfig
diff --git a/board/tqc/tqm5200/Kconfig b/board/tqc/tqm5200/Kconfig
new file mode 100644
index 0000000..c692196
--- /dev/null
+++ b/board/tqc/tqm5200/Kconfig
@@ -0,0 +1,63 @@
+if TARGET_AEV
+
+config SYS_BOARD
+ string
+ default "tqm5200"
+
+config SYS_VENDOR
+ string
+ default "tqc"
+
+config SYS_CONFIG_NAME
+ string
+ default "aev"
+
+endif
+
+if TARGET_CHARON
+
+config SYS_BOARD
+ string
+ default "tqm5200"
+
+config SYS_VENDOR
+ string
+ default "tqc"
+
+config SYS_CONFIG_NAME
+ string
+ default "charon"
+
+endif
+
+if TARGET_TB5200
+
+config SYS_BOARD
+ string
+ default "tqm5200"
+
+config SYS_VENDOR
+ string
+ default "tqc"
+
+config SYS_CONFIG_NAME
+ string
+ default "TB5200"
+
+endif
+
+if TARGET_TQM5200
+
+config SYS_BOARD
+ string
+ default "tqm5200"
+
+config SYS_VENDOR
+ string
+ default "tqc"
+
+config SYS_CONFIG_NAME
+ string
+ default "TQM5200"
+
+endif
diff --git a/board/tqc/tqm5200/MAINTAINERS b/board/tqc/tqm5200/MAINTAINERS
new file mode 100644
index 0000000..581ef95
--- /dev/null
+++ b/board/tqc/tqm5200/MAINTAINERS
@@ -0,0 +1,26 @@
+TQM5200 BOARD
+M: -
+S: Maintained
+F: board/tqc/tqm5200/
+F: include/configs/aev.h
+F: configs/aev_defconfig
+F: include/configs/TQM5200.h
+F: configs/cam5200_defconfig
+F: configs/cam5200_niosflash_defconfig
+F: configs/fo300_defconfig
+F: configs/MiniFAP_defconfig
+F: include/configs/TB5200.h
+F: configs/TB5200_defconfig
+F: configs/TB5200_B_defconfig
+F: configs/TQM5200_defconfig
+F: configs/TQM5200_B_defconfig
+F: configs/TQM5200_B_HIGHBOOT_defconfig
+F: configs/TQM5200_STK100_defconfig
+F: configs/TQM5200S_defconfig
+F: configs/TQM5200S_HIGHBOOT_defconfig
+
+CHARON BOARD
+M: Heiko Schocher <hs@denx.de>
+S: Maintained
+F: include/configs/charon.h
+F: configs/charon_defconfig
diff --git a/board/tqc/tqm8260/Kconfig b/board/tqc/tqm8260/Kconfig
new file mode 100644
index 0000000..0cf80dd
--- /dev/null
+++ b/board/tqc/tqm8260/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_TQM8260
+
+config SYS_BOARD
+ string
+ default "tqm8260"
+
+config SYS_VENDOR
+ string
+ default "tqc"
+
+config SYS_CONFIG_NAME
+ string
+ default "TQM8260"
+
+endif
diff --git a/board/tqc/tqm8260/MAINTAINERS b/board/tqc/tqm8260/MAINTAINERS
new file mode 100644
index 0000000..266910f
--- /dev/null
+++ b/board/tqc/tqm8260/MAINTAINERS
@@ -0,0 +1,16 @@
+TQM8260 BOARD
+M: Wolfgang Denk <wd@denx.de>
+S: Maintained
+F: board/tqc/tqm8260/
+F: include/configs/TQM8260.h
+F: configs/TQM8255_AA_defconfig
+F: configs/TQM8260_AA_defconfig
+F: configs/TQM8260_AB_defconfig
+F: configs/TQM8260_AC_defconfig
+F: configs/TQM8260_AD_defconfig
+F: configs/TQM8260_AE_defconfig
+F: configs/TQM8260_AF_defconfig
+F: configs/TQM8260_AG_defconfig
+F: configs/TQM8260_AH_defconfig
+F: configs/TQM8260_AI_defconfig
+F: configs/TQM8265_AA_defconfig
diff --git a/board/tqc/tqm8272/Kconfig b/board/tqc/tqm8272/Kconfig
new file mode 100644
index 0000000..9be43d3
--- /dev/null
+++ b/board/tqc/tqm8272/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_TQM8272
+
+config SYS_BOARD
+ string
+ default "tqm8272"
+
+config SYS_VENDOR
+ string
+ default "tqc"
+
+config SYS_CONFIG_NAME
+ string
+ default "TQM8272"
+
+endif
diff --git a/board/tqc/tqm8272/MAINTAINERS b/board/tqc/tqm8272/MAINTAINERS
new file mode 100644
index 0000000..a660de1
--- /dev/null
+++ b/board/tqc/tqm8272/MAINTAINERS
@@ -0,0 +1,6 @@
+TQM8272 BOARD
+M: -
+S: Maintained
+F: board/tqc/tqm8272/
+F: include/configs/TQM8272.h
+F: configs/TQM8272_defconfig
diff --git a/board/tqc/tqm834x/Kconfig b/board/tqc/tqm834x/Kconfig
new file mode 100644
index 0000000..cd2e817
--- /dev/null
+++ b/board/tqc/tqm834x/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_TQM834X
+
+config SYS_BOARD
+ string
+ default "tqm834x"
+
+config SYS_VENDOR
+ string
+ default "tqc"
+
+config SYS_CONFIG_NAME
+ string
+ default "TQM834x"
+
+endif
diff --git a/board/tqc/tqm834x/MAINTAINERS b/board/tqc/tqm834x/MAINTAINERS
new file mode 100644
index 0000000..10c14f3
--- /dev/null
+++ b/board/tqc/tqm834x/MAINTAINERS
@@ -0,0 +1,6 @@
+TQM834X BOARD
+M: -
+S: Maintained
+F: board/tqc/tqm834x/
+F: include/configs/TQM834x.h
+F: configs/TQM834x_defconfig
diff --git a/board/tqc/tqm8xx/Kconfig b/board/tqc/tqm8xx/Kconfig
new file mode 100644
index 0000000..5700d22
--- /dev/null
+++ b/board/tqc/tqm8xx/Kconfig
@@ -0,0 +1,287 @@
+if TARGET_FPS850L
+
+config SYS_BOARD
+ string
+ default "tqm8xx"
+
+config SYS_VENDOR
+ string
+ default "tqc"
+
+config SYS_CONFIG_NAME
+ string
+ default "FPS850L"
+
+endif
+
+if TARGET_FPS860L
+
+config SYS_BOARD
+ string
+ default "tqm8xx"
+
+config SYS_VENDOR
+ string
+ default "tqc"
+
+config SYS_CONFIG_NAME
+ string
+ default "FPS860L"
+
+endif
+
+if TARGET_NSCU
+
+config SYS_BOARD
+ string
+ default "tqm8xx"
+
+config SYS_VENDOR
+ string
+ default "tqc"
+
+config SYS_CONFIG_NAME
+ string
+ default "NSCU"
+
+endif
+
+if TARGET_SM850
+
+config SYS_BOARD
+ string
+ default "tqm8xx"
+
+config SYS_VENDOR
+ string
+ default "tqc"
+
+config SYS_CONFIG_NAME
+ string
+ default "SM850"
+
+endif
+
+if TARGET_TK885D
+
+config SYS_BOARD
+ string
+ default "tqm8xx"
+
+config SYS_VENDOR
+ string
+ default "tqc"
+
+config SYS_CONFIG_NAME
+ string
+ default "TK885D"
+
+endif
+
+if TARGET_TQM823L
+
+config SYS_BOARD
+ string
+ default "tqm8xx"
+
+config SYS_VENDOR
+ string
+ default "tqc"
+
+config SYS_CONFIG_NAME
+ string
+ default "TQM823L"
+
+endif
+
+if TARGET_TQM823M
+
+config SYS_BOARD
+ string
+ default "tqm8xx"
+
+config SYS_VENDOR
+ string
+ default "tqc"
+
+config SYS_CONFIG_NAME
+ string
+ default "TQM823M"
+
+endif
+
+if TARGET_TQM850L
+
+config SYS_BOARD
+ string
+ default "tqm8xx"
+
+config SYS_VENDOR
+ string
+ default "tqc"
+
+config SYS_CONFIG_NAME
+ string
+ default "TQM850L"
+
+endif
+
+if TARGET_TQM850M
+
+config SYS_BOARD
+ string
+ default "tqm8xx"
+
+config SYS_VENDOR
+ string
+ default "tqc"
+
+config SYS_CONFIG_NAME
+ string
+ default "TQM850M"
+
+endif
+
+if TARGET_TQM855L
+
+config SYS_BOARD
+ string
+ default "tqm8xx"
+
+config SYS_VENDOR
+ string
+ default "tqc"
+
+config SYS_CONFIG_NAME
+ string
+ default "TQM855L"
+
+endif
+
+if TARGET_TQM855M
+
+config SYS_BOARD
+ string
+ default "tqm8xx"
+
+config SYS_VENDOR
+ string
+ default "tqc"
+
+config SYS_CONFIG_NAME
+ string
+ default "TQM855M"
+
+endif
+
+if TARGET_TQM860L
+
+config SYS_BOARD
+ string
+ default "tqm8xx"
+
+config SYS_VENDOR
+ string
+ default "tqc"
+
+config SYS_CONFIG_NAME
+ string
+ default "TQM860L"
+
+endif
+
+if TARGET_TQM860M
+
+config SYS_BOARD
+ string
+ default "tqm8xx"
+
+config SYS_VENDOR
+ string
+ default "tqc"
+
+config SYS_CONFIG_NAME
+ string
+ default "TQM860M"
+
+endif
+
+if TARGET_TQM862L
+
+config SYS_BOARD
+ string
+ default "tqm8xx"
+
+config SYS_VENDOR
+ string
+ default "tqc"
+
+config SYS_CONFIG_NAME
+ string
+ default "TQM862L"
+
+endif
+
+if TARGET_TQM862M
+
+config SYS_BOARD
+ string
+ default "tqm8xx"
+
+config SYS_VENDOR
+ string
+ default "tqc"
+
+config SYS_CONFIG_NAME
+ string
+ default "TQM862M"
+
+endif
+
+if TARGET_TQM866M
+
+config SYS_BOARD
+ string
+ default "tqm8xx"
+
+config SYS_VENDOR
+ string
+ default "tqc"
+
+config SYS_CONFIG_NAME
+ string
+ default "TQM866M"
+
+endif
+
+if TARGET_TQM885D
+
+config SYS_BOARD
+ string
+ default "tqm8xx"
+
+config SYS_VENDOR
+ string
+ default "tqc"
+
+config SYS_CONFIG_NAME
+ string
+ default "TQM885D"
+
+endif
+
+if TARGET_VIRTLAB2
+
+config SYS_BOARD
+ string
+ default "tqm8xx"
+
+config SYS_VENDOR
+ string
+ default "tqc"
+
+config SYS_CONFIG_NAME
+ string
+ default "virtlab2"
+
+endif
diff --git a/board/tqc/tqm8xx/MAINTAINERS b/board/tqc/tqm8xx/MAINTAINERS
new file mode 100644
index 0000000..161fa68
--- /dev/null
+++ b/board/tqc/tqm8xx/MAINTAINERS
@@ -0,0 +1,47 @@
+TQM8XX BOARD
+M: Wolfgang Denk <wd@denx.de>
+S: Maintained
+F: board/tqc/tqm8xx/
+F: include/configs/FPS850L.h
+F: configs/FPS850L_defconfig
+F: include/configs/FPS860L.h
+F: configs/FPS860L_defconfig
+F: include/configs/SM850.h
+F: configs/SM850_defconfig
+F: include/configs/TQM823L.h
+F: configs/TQM823L_defconfig
+F: configs/TQM823L_LCD_defconfig
+F: include/configs/TQM823M.h
+F: configs/TQM823M_defconfig
+F: include/configs/TQM850L.h
+F: configs/TQM850L_defconfig
+F: include/configs/TQM850M.h
+F: configs/TQM850M_defconfig
+F: include/configs/TQM855L.h
+F: configs/TQM855L_defconfig
+F: include/configs/TQM855M.h
+F: configs/TQM855M_defconfig
+F: include/configs/TQM860L.h
+F: configs/TQM860L_defconfig
+F: include/configs/TQM860M.h
+F: configs/TQM860M_defconfig
+F: include/configs/TQM862L.h
+F: configs/TQM862L_defconfig
+F: include/configs/TQM862M.h
+F: configs/TQM862M_defconfig
+F: include/configs/TQM866M.h
+F: configs/TQM866M_defconfig
+F: include/configs/TQM885D.h
+F: configs/TQM885D_defconfig
+F: configs/TTTech_defconfig
+F: include/configs/virtlab2.h
+F: configs/virtlab2_defconfig
+F: configs/wtk_defconfig
+
+NSCU BOARD
+M: -
+S: Maintained
+F: include/configs/NSCU.h
+F: configs/NSCU_defconfig
+F: include/configs/TK885D.h
+F: configs/TK885D_defconfig
diff --git a/board/trizepsiv/Kconfig b/board/trizepsiv/Kconfig
new file mode 100644
index 0000000..ddd2ce3
--- /dev/null
+++ b/board/trizepsiv/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_TRIZEPSIV
+
+config SYS_CPU
+ string
+ default "pxa"
+
+config SYS_BOARD
+ string
+ default "trizepsiv"
+
+config SYS_CONFIG_NAME
+ string
+ default "trizepsiv"
+
+endif
diff --git a/board/trizepsiv/MAINTAINERS b/board/trizepsiv/MAINTAINERS
new file mode 100644
index 0000000..ba48c2e
--- /dev/null
+++ b/board/trizepsiv/MAINTAINERS
@@ -0,0 +1,7 @@
+TRIZEPSIV BOARD
+M: Stefano Babic <sbabic@denx.de>
+S: Maintained
+F: board/trizepsiv/
+F: include/configs/trizepsiv.h
+F: configs/polaris_defconfig
+F: configs/trizepsiv_defconfig
diff --git a/board/ttcontrol/vision2/Kconfig b/board/ttcontrol/vision2/Kconfig
new file mode 100644
index 0000000..3b18bea
--- /dev/null
+++ b/board/ttcontrol/vision2/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_VISION2
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "vision2"
+
+config SYS_VENDOR
+ string
+ default "ttcontrol"
+
+config SYS_SOC
+ string
+ default "mx5"
+
+config SYS_CONFIG_NAME
+ string
+ default "vision2"
+
+endif
diff --git a/board/ttcontrol/vision2/MAINTAINERS b/board/ttcontrol/vision2/MAINTAINERS
new file mode 100644
index 0000000..cfc9903
--- /dev/null
+++ b/board/ttcontrol/vision2/MAINTAINERS
@@ -0,0 +1,6 @@
+VISION2 BOARD
+M: Stefano Babic <sbabic@denx.de>
+S: Maintained
+F: board/ttcontrol/vision2/
+F: include/configs/vision2.h
+F: configs/vision2_defconfig
diff --git a/board/udoo/Kconfig b/board/udoo/Kconfig
new file mode 100644
index 0000000..69dbce0
--- /dev/null
+++ b/board/udoo/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_UDOO
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "udoo"
+
+config SYS_SOC
+ string
+ default "mx6"
+
+config SYS_CONFIG_NAME
+ string
+ default "udoo"
+
+endif
diff --git a/board/udoo/MAINTAINERS b/board/udoo/MAINTAINERS
new file mode 100644
index 0000000..ee8b61e
--- /dev/null
+++ b/board/udoo/MAINTAINERS
@@ -0,0 +1,6 @@
+UDOO BOARD
+M: Fabio Estevam <fabio.estevam@freescale.com>
+S: Maintained
+F: board/udoo/
+F: include/configs/udoo.h
+F: configs/udoo_quad_defconfig
diff --git a/board/utx8245/Kconfig b/board/utx8245/Kconfig
new file mode 100644
index 0000000..3dd264b
--- /dev/null
+++ b/board/utx8245/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_UTX8245
+
+config SYS_BOARD
+ string
+ default "utx8245"
+
+config SYS_CONFIG_NAME
+ string
+ default "utx8245"
+
+endif
diff --git a/board/utx8245/MAINTAINERS b/board/utx8245/MAINTAINERS
new file mode 100644
index 0000000..bed69c8
--- /dev/null
+++ b/board/utx8245/MAINTAINERS
@@ -0,0 +1,6 @@
+UTX8245 BOARD
+M: Greg Allen <gallen@arlut.utexas.edu>
+S: Maintained
+F: board/utx8245/
+F: include/configs/utx8245.h
+F: configs/utx8245_defconfig
diff --git a/board/v38b/Kconfig b/board/v38b/Kconfig
new file mode 100644
index 0000000..f473d89
--- /dev/null
+++ b/board/v38b/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_V38B
+
+config SYS_BOARD
+ string
+ default "v38b"
+
+config SYS_CONFIG_NAME
+ string
+ default "v38b"
+
+endif
diff --git a/board/v38b/MAINTAINERS b/board/v38b/MAINTAINERS
new file mode 100644
index 0000000..1b12d0b
--- /dev/null
+++ b/board/v38b/MAINTAINERS
@@ -0,0 +1,6 @@
+V38B BOARD
+M: -
+S: Maintained
+F: board/v38b/
+F: include/configs/v38b.h
+F: configs/v38b_defconfig
diff --git a/board/ve8313/Kconfig b/board/ve8313/Kconfig
new file mode 100644
index 0000000..ed9efbf
--- /dev/null
+++ b/board/ve8313/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_VE8313
+
+config SYS_BOARD
+ string
+ default "ve8313"
+
+config SYS_CONFIG_NAME
+ string
+ default "ve8313"
+
+endif
diff --git a/board/ve8313/MAINTAINERS b/board/ve8313/MAINTAINERS
new file mode 100644
index 0000000..e3ca332
--- /dev/null
+++ b/board/ve8313/MAINTAINERS
@@ -0,0 +1,6 @@
+VE8313 BOARD
+M: Heiko Schocher <hs@denx.de>
+S: Maintained
+F: board/ve8313/
+F: include/configs/ve8313.h
+F: configs/ve8313_defconfig
diff --git a/board/vpac270/Kconfig b/board/vpac270/Kconfig
new file mode 100644
index 0000000..e9170b0
--- /dev/null
+++ b/board/vpac270/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_VPAC270
+
+config SYS_CPU
+ string
+ default "pxa"
+
+config SYS_BOARD
+ string
+ default "vpac270"
+
+config SYS_CONFIG_NAME
+ string
+ default "vpac270"
+
+endif
diff --git a/board/vpac270/MAINTAINERS b/board/vpac270/MAINTAINERS
new file mode 100644
index 0000000..1c62765
--- /dev/null
+++ b/board/vpac270/MAINTAINERS
@@ -0,0 +1,8 @@
+VPAC270 BOARD
+M: Marek Vasut <marek.vasut@gmail.com>
+S: Maintained
+F: board/vpac270/
+F: include/configs/vpac270.h
+F: configs/vpac270_nor_128_defconfig
+F: configs/vpac270_nor_256_defconfig
+F: configs/vpac270_ond_256_defconfig
diff --git a/board/w7o/Kconfig b/board/w7o/Kconfig
new file mode 100644
index 0000000..c0e879a
--- /dev/null
+++ b/board/w7o/Kconfig
@@ -0,0 +1,23 @@
+if TARGET_W7OLMC
+
+config SYS_BOARD
+ string
+ default "w7o"
+
+config SYS_CONFIG_NAME
+ string
+ default "W7OLMC"
+
+endif
+
+if TARGET_W7OLMG
+
+config SYS_BOARD
+ string
+ default "w7o"
+
+config SYS_CONFIG_NAME
+ string
+ default "W7OLMG"
+
+endif
diff --git a/board/w7o/MAINTAINERS b/board/w7o/MAINTAINERS
new file mode 100644
index 0000000..bfedee5
--- /dev/null
+++ b/board/w7o/MAINTAINERS
@@ -0,0 +1,8 @@
+W7O BOARD
+M: Erik Theisen <etheisen@mindspring.com>
+S: Maintained
+F: board/w7o/
+F: include/configs/W7OLMC.h
+F: configs/W7OLMC_defconfig
+F: include/configs/W7OLMG.h
+F: configs/W7OLMG_defconfig
diff --git a/board/wandboard/Kconfig b/board/wandboard/Kconfig
new file mode 100644
index 0000000..a323afa
--- /dev/null
+++ b/board/wandboard/Kconfig
@@ -0,0 +1,19 @@
+if TARGET_WANDBOARD
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "wandboard"
+
+config SYS_SOC
+ string
+ default "mx6"
+
+config SYS_CONFIG_NAME
+ string
+ default "wandboard"
+
+endif
diff --git a/board/wandboard/MAINTAINERS b/board/wandboard/MAINTAINERS
new file mode 100644
index 0000000..b986980
--- /dev/null
+++ b/board/wandboard/MAINTAINERS
@@ -0,0 +1,8 @@
+WANDBOARD BOARD
+M: Fabio Estevam <fabio.estevam@freescale.com>
+S: Maintained
+F: board/wandboard/
+F: include/configs/wandboard.h
+F: configs/wandboard_dl_defconfig
+F: configs/wandboard_quad_defconfig
+F: configs/wandboard_solo_defconfig
diff --git a/board/woodburn/Kconfig b/board/woodburn/Kconfig
new file mode 100644
index 0000000..1aca934
--- /dev/null
+++ b/board/woodburn/Kconfig
@@ -0,0 +1,39 @@
+if TARGET_WOODBURN
+
+config SYS_CPU
+ string
+ default "arm1136"
+
+config SYS_BOARD
+ string
+ default "woodburn"
+
+config SYS_SOC
+ string
+ default "mx35"
+
+config SYS_CONFIG_NAME
+ string
+ default "woodburn"
+
+endif
+
+if TARGET_WOODBURN_SD
+
+config SYS_CPU
+ string
+ default "arm1136"
+
+config SYS_BOARD
+ string
+ default "woodburn"
+
+config SYS_SOC
+ string
+ default "mx35"
+
+config SYS_CONFIG_NAME
+ string
+ default "woodburn_sd"
+
+endif
diff --git a/board/woodburn/MAINTAINERS b/board/woodburn/MAINTAINERS
new file mode 100644
index 0000000..715f2ca
--- /dev/null
+++ b/board/woodburn/MAINTAINERS
@@ -0,0 +1,12 @@
+WOODBURN BOARD
+M: Stefano Babic <sbabic@denx.de>
+S: Maintained
+F: board/woodburn/
+F: include/configs/woodburn.h
+F: configs/woodburn_defconfig
+
+WOODBURN_SD BOARD
+M: -
+S: Maintained
+F: include/configs/woodburn_sd.h
+F: configs/woodburn_sd_defconfig
diff --git a/board/xaeniax/Kconfig b/board/xaeniax/Kconfig
new file mode 100644
index 0000000..9b41435
--- /dev/null
+++ b/board/xaeniax/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_XAENIAX
+
+config SYS_CPU
+ string
+ default "pxa"
+
+config SYS_BOARD
+ string
+ default "xaeniax"
+
+config SYS_CONFIG_NAME
+ string
+ default "xaeniax"
+
+endif
diff --git a/board/xaeniax/MAINTAINERS b/board/xaeniax/MAINTAINERS
new file mode 100644
index 0000000..f2fa4bf
--- /dev/null
+++ b/board/xaeniax/MAINTAINERS
@@ -0,0 +1,6 @@
+XAENIAX BOARD
+M: -
+S: Maintained
+F: board/xaeniax/
+F: include/configs/xaeniax.h
+F: configs/xaeniax_defconfig
diff --git a/board/xes/xpedite1000/Kconfig b/board/xes/xpedite1000/Kconfig
new file mode 100644
index 0000000..115439a
--- /dev/null
+++ b/board/xes/xpedite1000/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_XPEDITE1000
+
+config SYS_BOARD
+ string
+ default "xpedite1000"
+
+config SYS_VENDOR
+ string
+ default "xes"
+
+config SYS_CONFIG_NAME
+ string
+ default "xpedite1000"
+
+endif
diff --git a/board/xes/xpedite1000/MAINTAINERS b/board/xes/xpedite1000/MAINTAINERS
new file mode 100644
index 0000000..055ce6a
--- /dev/null
+++ b/board/xes/xpedite1000/MAINTAINERS
@@ -0,0 +1,6 @@
+XPEDITE1000 BOARD
+M: Peter Tyser <ptyser@xes-inc.com>
+S: Maintained
+F: board/xes/xpedite1000/
+F: include/configs/xpedite1000.h
+F: configs/xpedite1000_defconfig
diff --git a/board/xes/xpedite517x/Kconfig b/board/xes/xpedite517x/Kconfig
new file mode 100644
index 0000000..b938746
--- /dev/null
+++ b/board/xes/xpedite517x/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_XPEDITE517X
+
+config SYS_BOARD
+ string
+ default "xpedite517x"
+
+config SYS_VENDOR
+ string
+ default "xes"
+
+config SYS_CONFIG_NAME
+ string
+ default "xpedite517x"
+
+endif
diff --git a/board/xes/xpedite517x/MAINTAINERS b/board/xes/xpedite517x/MAINTAINERS
new file mode 100644
index 0000000..c74fdf4
--- /dev/null
+++ b/board/xes/xpedite517x/MAINTAINERS
@@ -0,0 +1,6 @@
+XPEDITE517X BOARD
+M: -
+S: Maintained
+F: board/xes/xpedite517x/
+F: include/configs/xpedite517x.h
+F: configs/xpedite517x_defconfig
diff --git a/board/xes/xpedite520x/Kconfig b/board/xes/xpedite520x/Kconfig
new file mode 100644
index 0000000..e524ff1
--- /dev/null
+++ b/board/xes/xpedite520x/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_XPEDITE520X
+
+config SYS_BOARD
+ string
+ default "xpedite520x"
+
+config SYS_VENDOR
+ string
+ default "xes"
+
+config SYS_CONFIG_NAME
+ string
+ default "xpedite520x"
+
+endif
diff --git a/board/xes/xpedite520x/MAINTAINERS b/board/xes/xpedite520x/MAINTAINERS
new file mode 100644
index 0000000..7f9bf9a
--- /dev/null
+++ b/board/xes/xpedite520x/MAINTAINERS
@@ -0,0 +1,6 @@
+XPEDITE520X BOARD
+M: -
+S: Maintained
+F: board/xes/xpedite520x/
+F: include/configs/xpedite520x.h
+F: configs/xpedite520x_defconfig
diff --git a/board/xes/xpedite537x/Kconfig b/board/xes/xpedite537x/Kconfig
new file mode 100644
index 0000000..cab2ab3
--- /dev/null
+++ b/board/xes/xpedite537x/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_XPEDITE537X
+
+config SYS_BOARD
+ string
+ default "xpedite537x"
+
+config SYS_VENDOR
+ string
+ default "xes"
+
+config SYS_CONFIG_NAME
+ string
+ default "xpedite537x"
+
+endif
diff --git a/board/xes/xpedite537x/MAINTAINERS b/board/xes/xpedite537x/MAINTAINERS
new file mode 100644
index 0000000..a13dcf1
--- /dev/null
+++ b/board/xes/xpedite537x/MAINTAINERS
@@ -0,0 +1,6 @@
+XPEDITE537X BOARD
+M: -
+S: Maintained
+F: board/xes/xpedite537x/
+F: include/configs/xpedite537x.h
+F: configs/xpedite537x_defconfig
diff --git a/board/xes/xpedite550x/Kconfig b/board/xes/xpedite550x/Kconfig
new file mode 100644
index 0000000..fa11719
--- /dev/null
+++ b/board/xes/xpedite550x/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_XPEDITE550X
+
+config SYS_BOARD
+ string
+ default "xpedite550x"
+
+config SYS_VENDOR
+ string
+ default "xes"
+
+config SYS_CONFIG_NAME
+ string
+ default "xpedite550x"
+
+endif
diff --git a/board/xes/xpedite550x/MAINTAINERS b/board/xes/xpedite550x/MAINTAINERS
new file mode 100644
index 0000000..12d321e
--- /dev/null
+++ b/board/xes/xpedite550x/MAINTAINERS
@@ -0,0 +1,6 @@
+XPEDITE550X BOARD
+M: -
+S: Maintained
+F: board/xes/xpedite550x/
+F: include/configs/xpedite550x.h
+F: configs/xpedite550x_defconfig
diff --git a/board/xilinx/microblaze-generic/Kconfig b/board/xilinx/microblaze-generic/Kconfig
new file mode 100644
index 0000000..b9cb334
--- /dev/null
+++ b/board/xilinx/microblaze-generic/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_MICROBLAZE_GENERIC
+
+config SYS_BOARD
+ string
+ default "microblaze-generic"
+
+config SYS_VENDOR
+ string
+ default "xilinx"
+
+config SYS_CONFIG_NAME
+ string
+ default "microblaze-generic"
+
+endif
diff --git a/board/xilinx/microblaze-generic/MAINTAINERS b/board/xilinx/microblaze-generic/MAINTAINERS
new file mode 100644
index 0000000..6796d4d
--- /dev/null
+++ b/board/xilinx/microblaze-generic/MAINTAINERS
@@ -0,0 +1,6 @@
+MICROBLAZE-GENERIC BOARD
+M: Michal Simek <monstr@monstr.eu>
+S: Maintained
+F: board/xilinx/microblaze-generic/
+F: include/configs/microblaze-generic.h
+F: configs/microblaze-generic_defconfig
diff --git a/board/xilinx/ml507/Kconfig b/board/xilinx/ml507/Kconfig
new file mode 100644
index 0000000..6f3483d
--- /dev/null
+++ b/board/xilinx/ml507/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_ML507
+
+config SYS_BOARD
+ string
+ default "ml507"
+
+config SYS_VENDOR
+ string
+ default "xilinx"
+
+config SYS_CONFIG_NAME
+ string
+ default "ml507"
+
+endif
diff --git a/board/xilinx/ml507/MAINTAINERS b/board/xilinx/ml507/MAINTAINERS
new file mode 100644
index 0000000..8b40f44
--- /dev/null
+++ b/board/xilinx/ml507/MAINTAINERS
@@ -0,0 +1,7 @@
+ML507 BOARD
+M: Ricardo Ribalda <ricardo.ribalda@uam.es>
+S: Maintained
+F: board/xilinx/ml507/
+F: include/configs/ml507.h
+F: configs/ml507_defconfig
+F: configs/ml507_flash_defconfig
diff --git a/board/xilinx/ppc405-generic/Kconfig b/board/xilinx/ppc405-generic/Kconfig
new file mode 100644
index 0000000..98411c7
--- /dev/null
+++ b/board/xilinx/ppc405-generic/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_XILINX_PPC405_GENERIC
+
+config SYS_BOARD
+ string
+ default "ppc405-generic"
+
+config SYS_VENDOR
+ string
+ default "xilinx"
+
+config SYS_CONFIG_NAME
+ string
+ default "xilinx-ppc405-generic"
+
+endif
diff --git a/board/xilinx/ppc405-generic/MAINTAINERS b/board/xilinx/ppc405-generic/MAINTAINERS
new file mode 100644
index 0000000..2b0c98d
--- /dev/null
+++ b/board/xilinx/ppc405-generic/MAINTAINERS
@@ -0,0 +1,7 @@
+PPC405-GENERIC BOARD
+M: Ricardo Ribalda <ricardo.ribalda@uam.es>
+S: Maintained
+F: board/xilinx/ppc405-generic/
+F: include/configs/xilinx-ppc405-generic.h
+F: configs/xilinx-ppc405-generic_defconfig
+F: configs/xilinx-ppc405-generic_flash_defconfig
diff --git a/board/xilinx/ppc440-generic/Kconfig b/board/xilinx/ppc440-generic/Kconfig
new file mode 100644
index 0000000..37abe63
--- /dev/null
+++ b/board/xilinx/ppc440-generic/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_XILINX_PPC440_GENERIC
+
+config SYS_BOARD
+ string
+ default "ppc440-generic"
+
+config SYS_VENDOR
+ string
+ default "xilinx"
+
+config SYS_CONFIG_NAME
+ string
+ default "xilinx-ppc440-generic"
+
+endif
diff --git a/board/xilinx/ppc440-generic/MAINTAINERS b/board/xilinx/ppc440-generic/MAINTAINERS
new file mode 100644
index 0000000..2d0b11a
--- /dev/null
+++ b/board/xilinx/ppc440-generic/MAINTAINERS
@@ -0,0 +1,7 @@
+PPC440-GENERIC BOARD
+M: Ricardo Ribalda <ricardo.ribalda@uam.es>
+S: Maintained
+F: board/xilinx/ppc440-generic/
+F: include/configs/xilinx-ppc440-generic.h
+F: configs/xilinx-ppc440-generic_defconfig
+F: configs/xilinx-ppc440-generic_flash_defconfig
diff --git a/board/xilinx/zynq/Kconfig b/board/xilinx/zynq/Kconfig
new file mode 100644
index 0000000..3b72a5f
--- /dev/null
+++ b/board/xilinx/zynq/Kconfig
@@ -0,0 +1,95 @@
+if TARGET_ZYNQ_MICROZED
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "zynq"
+
+config SYS_VENDOR
+ string
+ default "xilinx"
+
+config SYS_SOC
+ string
+ default "zynq"
+
+config SYS_CONFIG_NAME
+ string
+ default "zynq_microzed"
+
+endif
+
+if TARGET_ZYNQ_ZC70X
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "zynq"
+
+config SYS_VENDOR
+ string
+ default "xilinx"
+
+config SYS_SOC
+ string
+ default "zynq"
+
+config SYS_CONFIG_NAME
+ string
+ default "zynq_zc70x"
+
+endif
+
+if TARGET_ZYNQ_ZC770
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "zynq"
+
+config SYS_VENDOR
+ string
+ default "xilinx"
+
+config SYS_SOC
+ string
+ default "zynq"
+
+config SYS_CONFIG_NAME
+ string
+ default "zynq_zc770"
+
+endif
+
+if TARGET_ZYNQ_ZED
+
+config SYS_CPU
+ string
+ default "armv7"
+
+config SYS_BOARD
+ string
+ default "zynq"
+
+config SYS_VENDOR
+ string
+ default "xilinx"
+
+config SYS_SOC
+ string
+ default "zynq"
+
+config SYS_CONFIG_NAME
+ string
+ default "zynq_zed"
+
+endif
diff --git a/board/xilinx/zynq/MAINTAINERS b/board/xilinx/zynq/MAINTAINERS
new file mode 100644
index 0000000..e167816
--- /dev/null
+++ b/board/xilinx/zynq/MAINTAINERS
@@ -0,0 +1,15 @@
+ZYNQ BOARD
+M: Michal Simek <monstr@monstr.eu>
+M: Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
+S: Maintained
+F: board/xilinx/zynq/
+F: include/configs/zynq_microzed.h
+F: configs/zynq_microzed_defconfig
+F: include/configs/zynq_zc70x.h
+F: configs/zynq_zc70x_defconfig
+F: include/configs/zynq_zc770.h
+F: configs/zynq_zc770_xm010_defconfig
+F: configs/zynq_zc770_xm012_defconfig
+F: configs/zynq_zc770_xm013_defconfig
+F: include/configs/zynq_zed.h
+F: configs/zynq_zed_defconfig
diff --git a/board/xilinx/zynq/Makefile b/board/xilinx/zynq/Makefile
index fd93f63..71c0c35 100644
--- a/board/xilinx/zynq/Makefile
+++ b/board/xilinx/zynq/Makefile
@@ -10,3 +10,6 @@ obj-y := board.o
# Please copy ps7_init.c/h from hw project to this directory
obj-$(CONFIG_SPL_BUILD) += \
$(if $(wildcard $(srctree)/$(src)/ps7_init.c), ps7_init.o)
+
+# Suppress "warning: function declaration isn't a prototype"
+CFLAGS_REMOVE_ps7_init.o := -Wstrict-prototypes
diff --git a/board/zeus/Kconfig b/board/zeus/Kconfig
new file mode 100644
index 0000000..5678694
--- /dev/null
+++ b/board/zeus/Kconfig
@@ -0,0 +1,11 @@
+if TARGET_ZEUS
+
+config SYS_BOARD
+ string
+ default "zeus"
+
+config SYS_CONFIG_NAME
+ string
+ default "zeus"
+
+endif
diff --git a/board/zeus/MAINTAINERS b/board/zeus/MAINTAINERS
new file mode 100644
index 0000000..3118710
--- /dev/null
+++ b/board/zeus/MAINTAINERS
@@ -0,0 +1,6 @@
+ZEUS BOARD
+M: Stefan Roese <sr@denx.de>
+S: Maintained
+F: board/zeus/
+F: include/configs/zeus.h
+F: configs/zeus_defconfig
diff --git a/board/zipitz2/Kconfig b/board/zipitz2/Kconfig
new file mode 100644
index 0000000..702edbf
--- /dev/null
+++ b/board/zipitz2/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_ZIPITZ2
+
+config SYS_CPU
+ string
+ default "pxa"
+
+config SYS_BOARD
+ string
+ default "zipitz2"
+
+config SYS_CONFIG_NAME
+ string
+ default "zipitz2"
+
+endif
diff --git a/board/zipitz2/MAINTAINERS b/board/zipitz2/MAINTAINERS
new file mode 100644
index 0000000..55b0f64
--- /dev/null
+++ b/board/zipitz2/MAINTAINERS
@@ -0,0 +1,6 @@
+ZIPITZ2 BOARD
+M: Marek Vasut <marek.vasut@gmail.com>
+S: Maintained
+F: board/zipitz2/
+F: include/configs/zipitz2.h
+F: configs/zipitz2_defconfig
diff --git a/boards.cfg b/boards.cfg
deleted file mode 100644
index 110dd9d..0000000
--- a/boards.cfg
+++ /dev/null
@@ -1,1219 +0,0 @@
-#
-# List of boards
-#
-# Syntax:
-# white-space separated list of entries;
-# each entry has the fields documented below.
-#
-# Unused fields can be specified as "-", or omitted if they
-# are the last field on the line.
-#
-# Lines starting with '#' are comments.
-# Blank lines are ignored.
-#
-# The CPU field takes the form:
-# cpu[:spl_cpu]
-# If spl_cpu is specified the make variable CPU will be set to this
-# during the SPL build.
-#
-# The options field takes the form:
-# <board config name>[:comma separated config options]
-# Each config option has the form (value defaults to "1"):
-# option[=value]
-# So if you have:
-# FOO:HAS_BAR,BAZ=64
-# The file include/configs/FOO.h will be used, and these defines created:
-# #define CONFIG_HAS_BAR 1
-# #define CONFIG_BAZ 64
-#
-# The maintainers field lists the e-mail addresses of the board's
-# maintainers, separated by colons. NOTE: there are spaces in this field!
-# For any board without permanent maintainer, please contact
-# Wolfgang Denk <wd@denx.de>
-# And Cc: the <u-boot@lists.denx.de> mailing list.
-
-# The list should be ordered according to the C locale.
-#
-# To keep the list formatted and sorted, script tools/reformat.py is available.
-# It can be used from a shell:
-# tools/reformat.py -i -d '-' -s 8 <boards.cfg >boards0.cfg && mv boards0.cfg boards.cfg
-# It can directly be invoked from vim:
-# :%!tools/reformat.py -i -d '-' -s 8
-#
-# Status, Arch, CPU:SPLCPU, SoC, Vendor, Board name, Target, Options, Maintainers
-###########################################################################################################
-
-Active aarch64 armv8 - armltd vexpress64 vexpress_aemv8a vexpress_aemv8a:ARM64 David Feng <fenghua@phytium.com.cn>
-Active aarch64 armv8 - armltd vexpress64 vexpress_aemv8a_semi vexpress_aemv8a:ARM64,SEMIHOSTING,BASE_FVP Steve Rae <srae@broadcom.com>
-Active aarch64 armv8 fsl-lsch3 freescale ls2085a ls2085a_emu ls2085a_emu:ARM64,EMU York Sun <yorksun@freescale.com>
-Active aarch64 armv8 fsl-lsch3 freescale ls2085a ls2085a_emu_D4 ls2085a_emu:ARM64,EMU,SYS_FSL_DDR4 York Sun <yorksun@freescale.com>
-Active aarch64 armv8 fsl-lsch3 freescale ls2085a ls2085a_simu ls2085a_simu:ARM64,SIMU York Sun <yorksun@freescale.com>
-Active arc arc700 - abilis tb100 tb100 - Alexey Brodkin <abrodkin@synopsys.com>
-Active arc arc700 - synopsys - arcangel4 - Alexey Brodkin <abrodkin@synopsys.com>
-Active arc arc700 - synopsys - arcangel4-be - Alexey Brodkin <abrodkin@synopsys.com>
-Active arc arc700 - synopsys axs101 axs101 - Alexey Brodkin <abrodkin@synopsys.com>
-Active arm arm1136 - armltd integrator integratorcp_cm1136 integratorcp:CM1136 Linus Walleij <linus.walleij@linaro.org>
-Active arm arm1136 mx31 - imx31_phycore imx31_phycore - -
-Active arm arm1136 mx31 davedenx qong qong - Wolfgang Denk <wd@denx.de>
-Active arm arm1136 mx31 freescale mx31pdk mx31pdk - Fabio Estevam <fabio.estevam@freescale.com>
-Active arm arm1136 mx31 hale tt01 tt01 - Helmut Raiger <helmut.raiger@hale.at>
-Active arm arm1136 mx31 logicpd imx31_litekit imx31_litekit - -
-Active arm arm1136 mx35 - woodburn woodburn - Stefano Babic <sbabic@denx.de>
-Active arm arm1136 mx35 - woodburn woodburn_sd woodburn_sd:IMX_CONFIG=board/woodburn/imximage.cfg -
-Active arm arm1136 mx35 CarMediaLab flea3 flea3 - Stefano Babic <sbabic@denx.de>
-Active arm arm1136 mx35 freescale mx35pdk mx35pdk - Stefano Babic <sbabic@denx.de>
-Active arm arm1176 bcm2835 raspberrypi rpi_b rpi_b - Stephen Warren <swarren@wwwdotorg.org>
-Active arm arm720t - armltd integrator integratorap_cm720t integratorap:CM720T Linus Walleij <linus.walleij@linaro.org>
-Active arm arm920t - armltd integrator integratorap_cm920t integratorap:CM920T Linus Walleij <linus.walleij@linaro.org>
-Active arm arm920t - armltd integrator integratorcp_cm920t integratorcp:CM920T Linus Walleij <linus.walleij@linaro.org>
-Active arm arm920t a320 faraday a320evb a320evb - Po-Yu Chuang <ratbert@faraday-tech.com>
-Active arm arm920t at91 atmel at91rm9200ek at91rm9200ek - Andreas Bießmann <andreas.devel@gmail.com>
-Active arm arm920t at91 atmel at91rm9200ek at91rm9200ek_ram at91rm9200ek:RAMBOOT Andreas Bießmann <andreas.devel@gmail.com>
-Active arm arm920t at91 BuS eb_cpux9k2 eb_cpux9k2 - Jens Scharsig <esw@bus-elektronik.de>
-Active arm arm920t at91 BuS eb_cpux9k2 eb_cpux9k2_ram eb_cpux9k2:RAMBOOT Jens Scharsig <esw@bus-elektronik.de>
-Active arm arm920t at91 eukrea cpuat91 cpuat91 - Eric Benard <eric@eukrea.com>
-Active arm arm920t at91 eukrea cpuat91 cpuat91_ram cpuat91:RAMBOOT Eric Benard <eric@eukrea.com>
-Active arm arm920t ep93xx cirrus edb93xx edb9315a edb93xx:MK_edb9315a Sergey Kostanbaev <sergey.kostanbaev@fairwaves.ru>
-Active arm arm920t imx - scb9328 scb9328 - Torsten Koschorrek <koschorrek@synertronixx.de>
-Active arm arm920t ks8695 - cm4008 cm4008 - Greg Ungerer <greg.ungerer@opengear.com>
-Active arm arm920t ks8695 - cm41xx cm41xx - -
-Active arm arm920t s3c24x0 mpl vcma9 VCMA9 - David Müller <d.mueller@elsoft.ch>
-Active arm arm920t s3c24x0 samsung smdk2410 smdk2410 - David Müller <d.mueller@elsoft.ch>
-Active arm arm926ejs - armltd integrator integratorap_cm926ejs integratorap:CM926EJ_S Linus Walleij <linus.walleij@linaro.org>
-Active arm arm926ejs - armltd integrator integratorcp_cm926ejs integratorcp:CM924EJ_S Linus Walleij <linus.walleij@linaro.org>
-Active arm arm926ejs armada100 Marvell aspenite aspenite - Prafulla Wadaskar <prafulla@marvell.com>
-Active arm arm926ejs armada100 Marvell gplugd gplugd - Ajay Bhargav <ajay.bhargav@einfochips.com>
-Active arm arm926ejs at91 - afeb9260 afeb9260 - Sergey Lapin <slapin@ossfans.org>
-Active arm arm926ejs at91 atmel at91sam9260ek at91sam9260ek_dataflash_cs0 at91sam9260ek:AT91SAM9260,SYS_USE_DATAFLASH_CS0 Stelian Pop <stelian@popies.net>
-Active arm arm926ejs at91 atmel at91sam9260ek at91sam9260ek_dataflash_cs1 at91sam9260ek:AT91SAM9260,SYS_USE_DATAFLASH_CS1 Stelian Pop <stelian@popies.net>
-Active arm arm926ejs at91 atmel at91sam9260ek at91sam9260ek_nandflash at91sam9260ek:AT91SAM9260,SYS_USE_NANDFLASH Stelian Pop <stelian@popies.net>
-Active arm arm926ejs at91 atmel at91sam9260ek at91sam9g20ek_2mmc_nandflash at91sam9260ek:AT91SAM9G20,AT91SAM9G20EK_2MMC,SYS_USE_NANDFLASH Stelian Pop <stelian@popies.net>
-Active arm arm926ejs at91 atmel at91sam9260ek at91sam9g20ek_dataflash_cs0 at91sam9260ek:AT91SAM9G20,SYS_USE_DATAFLASH_CS0 Stelian Pop <stelian@popies.net>
-Active arm arm926ejs at91 atmel at91sam9260ek at91sam9g20ek_dataflash_cs1 at91sam9260ek:AT91SAM9G20,SYS_USE_DATAFLASH_CS1 Stelian Pop <stelian@popies.net>
-Active arm arm926ejs at91 atmel at91sam9260ek at91sam9g20ek_mmc at91sam9260ek:AT91SAM9G20,SYS_USE_MMC Stelian Pop <stelian@popies.net>
-Active arm arm926ejs at91 atmel at91sam9260ek at91sam9g20ek_nandflash at91sam9260ek:AT91SAM9G20,SYS_USE_NANDFLASH Stelian Pop <stelian@popies.net>
-Active arm arm926ejs at91 atmel at91sam9260ek at91sam9xeek_dataflash_cs0 at91sam9260ek:AT91SAM9XE,SYS_USE_DATAFLASH_CS0 Stelian Pop <stelian@popies.net>
-Active arm arm926ejs at91 atmel at91sam9260ek at91sam9xeek_dataflash_cs1 at91sam9260ek:AT91SAM9XE,SYS_USE_DATAFLASH_CS1 Stelian Pop <stelian@popies.net>
-Active arm arm926ejs at91 atmel at91sam9260ek at91sam9xeek_nandflash at91sam9260ek:AT91SAM9XE,SYS_USE_NANDFLASH Stelian Pop <stelian@popies.net>
-Active arm arm926ejs at91 atmel at91sam9261ek at91sam9261ek_dataflash_cs0 at91sam9261ek:AT91SAM9261,SYS_USE_DATAFLASH_CS0 Stelian Pop <stelian@popies.net>
-Active arm arm926ejs at91 atmel at91sam9261ek at91sam9261ek_dataflash_cs3 at91sam9261ek:AT91SAM9261,SYS_USE_DATAFLASH_CS3 Stelian Pop <stelian@popies.net>
-Active arm arm926ejs at91 atmel at91sam9261ek at91sam9261ek_nandflash at91sam9261ek:AT91SAM9261,SYS_USE_NANDFLASH Stelian Pop <stelian@popies.net>
-Active arm arm926ejs at91 atmel at91sam9261ek at91sam9g10ek_dataflash_cs0 at91sam9261ek:AT91SAM9G10,SYS_USE_DATAFLASH_CS0 Stelian Pop <stelian@popies.net>
-Active arm arm926ejs at91 atmel at91sam9261ek at91sam9g10ek_dataflash_cs3 at91sam9261ek:AT91SAM9G10,SYS_USE_DATAFLASH_CS3 Stelian Pop <stelian@popies.net>
-Active arm arm926ejs at91 atmel at91sam9261ek at91sam9g10ek_nandflash at91sam9261ek:AT91SAM9G10,SYS_USE_NANDFLASH Stelian Pop <stelian@popies.net>
-Active arm arm926ejs at91 atmel at91sam9263ek at91sam9263ek_dataflash at91sam9263ek:AT91SAM9263,SYS_USE_DATAFLASH Stelian Pop <stelian@popies.net>
-Active arm arm926ejs at91 atmel at91sam9263ek at91sam9263ek_dataflash_cs0 at91sam9263ek:AT91SAM9263,SYS_USE_DATAFLASH Stelian Pop <stelian@popies.net>
-Active arm arm926ejs at91 atmel at91sam9263ek at91sam9263ek_nandflash at91sam9263ek:AT91SAM9263,SYS_USE_NANDFLASH Stelian Pop <stelian@popies.net>
-Active arm arm926ejs at91 atmel at91sam9263ek at91sam9263ek_norflash at91sam9263ek:AT91SAM9263,SYS_USE_NORFLASH Stelian Pop <stelian@popies.net>
-Active arm arm926ejs at91 atmel at91sam9263ek at91sam9263ek_norflash_boot at91sam9263ek:AT91SAM9263,SYS_USE_BOOT_NORFLASH Stelian Pop <stelian@popies.net>
-Active arm arm926ejs at91 atmel at91sam9m10g45ek at91sam9m10g45ek_mmc at91sam9m10g45ek:AT91SAM9M10G45,SYS_USE_MMC Bo Shen<voice.shen@atmel.com>
-Active arm arm926ejs at91 atmel at91sam9m10g45ek at91sam9m10g45ek_nandflash at91sam9m10g45ek:AT91SAM9M10G45,SYS_USE_NANDFLASH Bo Shen<voice.shen@atmel.com>
-Active arm arm926ejs at91 atmel at91sam9n12ek at91sam9n12ek_mmc at91sam9n12ek:AT91SAM9N12,SYS_USE_MMC Josh Wu <josh.wu@atmel.com>
-Active arm arm926ejs at91 atmel at91sam9n12ek at91sam9n12ek_nandflash at91sam9n12ek:AT91SAM9N12,SYS_USE_NANDFLASH Josh Wu <josh.wu@atmel.com>
-Active arm arm926ejs at91 atmel at91sam9n12ek at91sam9n12ek_spiflash at91sam9n12ek:AT91SAM9N12,SYS_USE_SPIFLASH Josh Wu <josh.wu@atmel.com>
-Active arm arm926ejs at91 atmel at91sam9rlek at91sam9rlek_dataflash at91sam9rlek:AT91SAM9RL,SYS_USE_DATAFLASH Stelian Pop <stelian@popies.net>
-Active arm arm926ejs at91 atmel at91sam9rlek at91sam9rlek_nandflash at91sam9rlek:AT91SAM9RL,SYS_USE_NANDFLASH Stelian Pop <stelian@popies.net>
-Active arm arm926ejs at91 atmel at91sam9x5ek at91sam9x5ek_dataflash at91sam9x5ek:AT91SAM9X5,SYS_USE_DATAFLASH Bo Shen <voice.shen@atmel.com>
-Active arm arm926ejs at91 atmel at91sam9x5ek at91sam9x5ek_mmc at91sam9x5ek:AT91SAM9X5,SYS_USE_MMC Bo Shen <voice.shen@atmel.com>
-Active arm arm926ejs at91 atmel at91sam9x5ek at91sam9x5ek_nandflash at91sam9x5ek:AT91SAM9X5,SYS_USE_NANDFLASH Bo Shen <voice.shen@atmel.com>
-Active arm arm926ejs at91 atmel at91sam9x5ek at91sam9x5ek_spiflash at91sam9x5ek:AT91SAM9X5,SYS_USE_SPIFLASH Bo Shen <voice.shen@atmel.com>
-Active arm arm926ejs at91 bluewater snapper9260 snapper9260 snapper9260:AT91SAM9260 Ryan Mallon <ryan@bluewatersys.com>
-Active arm arm926ejs at91 bluewater snapper9260 snapper9g20 snapper9260:AT91SAM9G20 Ryan Mallon <ryan@bluewatersys.com>
-Active arm arm926ejs at91 BuS vl_ma2sc vl_ma2sc - Jens Scharsig <esw@bus-elektronik.de>
-Active arm arm926ejs at91 BuS vl_ma2sc vl_ma2sc_ram vl_ma2sc:RAMLOAD Jens Scharsig <esw@bus-elektronik.de>
-Active arm arm926ejs at91 calao usb_a9263 usb_a9263_dataflash usb_a9263:AT91SAM9263,SYS_USE_DATAFLASH Mateusz Kulikowski <mateusz.kulikowski@gmail.com>
-Active arm arm926ejs at91 egnite ethernut5 ethernut5 ethernut5:AT91SAM9XE egnite GmbH <info@egnite.de>
-Active arm arm926ejs at91 emk top9000 top9000eval_xe top9000:EVAL9000 Reinhard Meyer <reinhard.meyer@emk-elektronik.de>
-Active arm arm926ejs at91 emk top9000 top9000su_xe top9000:SU9000 Reinhard Meyer <reinhard.meyer@emk-elektronik.de>
-Active arm arm926ejs at91 esd meesc meesc meesc:AT91SAM9263,SYS_USE_NANDFLASH Daniel Gorsulowski <daniel.gorsulowski@esd.eu>
-Active arm arm926ejs at91 esd meesc meesc_dataflash meesc:AT91SAM9263,SYS_USE_DATAFLASH Daniel Gorsulowski <daniel.gorsulowski@esd.eu>
-Active arm arm926ejs at91 esd otc570 otc570 otc570:AT91SAM9263,SYS_USE_NANDFLASH Daniel Gorsulowski <daniel.gorsulowski@esd.eu>
-Active arm arm926ejs at91 esd otc570 otc570_dataflash otc570:AT91SAM9263,SYS_USE_DATAFLASH Daniel Gorsulowski <daniel.gorsulowski@esd.eu>
-Active arm arm926ejs at91 eukrea cpu9260 cpu9260 cpu9260:CPU9260 Eric Benard <eric@eukrea.com>
-Active arm arm926ejs at91 eukrea cpu9260 cpu9260_128M cpu9260:CPU9260,CPU9260_128M Eric Benard <eric@eukrea.com>
-Active arm arm926ejs at91 eukrea cpu9260 cpu9260_nand cpu9260:CPU9260,NANDBOOT Eric Benard <eric@eukrea.com>
-Active arm arm926ejs at91 eukrea cpu9260 cpu9260_nand_128M cpu9260:CPU9260,CPU9260_128M,NANDBOOT Eric Benard <eric@eukrea.com>
-Active arm arm926ejs at91 eukrea cpu9260 cpu9G20 cpu9260:CPU9G20 Eric Benard <eric@eukrea.com>
-Active arm arm926ejs at91 eukrea cpu9260 cpu9G20_128M cpu9260:CPU9G20,CPU9G20_128M Eric Benard <eric@eukrea.com>
-Active arm arm926ejs at91 eukrea cpu9260 cpu9G20_nand cpu9260:CPU9G20,NANDBOOT Eric Benard <eric@eukrea.com>
-Active arm arm926ejs at91 eukrea cpu9260 cpu9G20_nand_128M cpu9260:CPU9G20,CPU9G20_128M,NANDBOOT Eric Benard <eric@eukrea.com>
-Active arm arm926ejs at91 ronetix pm9261 pm9261 pm9261:AT91SAM9261 Ilko Iliev <iliev@ronetix.at>
-Active arm arm926ejs at91 ronetix pm9263 pm9263 pm9263:AT91SAM9263 Ilko Iliev <iliev@ronetix.at>
-Active arm arm926ejs at91 ronetix pm9g45 pm9g45 pm9g45:AT91SAM9G45 Ilko Iliev <iliev@ronetix.at>
-Active arm arm926ejs at91 siemens corvus corvus corvus:AT91SAM9M10G45,SYS_USE_NANDFLASH Heiko Schocher <hs@denx.de>
-Active arm arm926ejs at91 siemens taurus axm taurus:AT91SAM9G20,MACH_TYPE=2068,BOARD_AXM Heiko Schocher <hs@denx.de>
-Active arm arm926ejs at91 siemens taurus taurus taurus:AT91SAM9G20,MACH_TYPE=2067,BOARD_TAURUS Heiko Schocher <hs@denx.de>
-Active arm arm926ejs at91 taskit stamp9g20 portuxg20 stamp9g20:AT91SAM9G20,PORTUXG20 Markus Hubig <mhubig@imko.de>
-Active arm arm926ejs at91 taskit stamp9g20 stamp9g20 stamp9g20:AT91SAM9G20 Markus Hubig <mhubig@imko.de>
-Active arm arm926ejs davinci ait cam_enc_4xx cam_enc_4xx - Heiko Schocher <hs@denx.de>
-Active arm arm926ejs davinci Barix ipam390 ipam390 - Heiko Schocher <hs@denx.de>
-Active arm arm926ejs davinci davinci da8xxevm da830evm - Nick Thompson <nick.thompson@gefanuc.com>
-Active arm arm926ejs davinci davinci da8xxevm da850_am18xxevm da850evm:DA850_AM18X_EVM,MAC_ADDR_IN_EEPROM,SYS_I2C_EEPROM_ADDR_LEN=2,SYS_I2C_EEPROM_ADDR=0x50 Sudhakar Rajashekhara <sudhakar.raj@ti.com>
-Active arm arm926ejs davinci davinci da8xxevm da850evm da850evm:MAC_ADDR_IN_SPIFLASH Sudhakar Rajashekhara <sudhakar.raj@ti.com>
-Active arm arm926ejs davinci davinci da8xxevm da850evm_direct_nor da850evm:MAC_ADDR_IN_SPIFLASH,USE_NOR,DIRECT_NOR_BOOT Sudhakar Rajashekhara <sudhakar.raj@ti.com>
-Active arm arm926ejs davinci davinci da8xxevm hawkboard - Syed Mohammed Khasim <sm.khasim@gmail.com>:Sughosh Ganu <urwithsughosh@gmail.com>
-Active arm arm926ejs davinci davinci da8xxevm hawkboard_uart hawkboard:UART_U_BOOT Syed Mohammed Khasim <sm.khasim@gmail.com>:Sughosh Ganu <urwithsughosh@gmail.com>
-Active arm arm926ejs davinci davinci dm355evm davinci_dm355evm - Sandeep Paulraj <s-paulraj@ti.com>
-Active arm arm926ejs davinci davinci dm355leopard davinci_dm355leopard - Sandeep Paulraj <s-paulraj@ti.com>
-Active arm arm926ejs davinci davinci dm365evm davinci_dm365evm - Sandeep Paulraj <s-paulraj@ti.com>
-Active arm arm926ejs davinci davinci dm6467evm davinci_dm6467evm davinci_dm6467evm:REFCLK_FREQ=27000000 Sandeep Paulraj <s-paulraj@ti.com>
-Active arm arm926ejs davinci davinci dm6467evm davinci_dm6467Tevm davinci_dm6467evm:DAVINCI_DM6467TEVM,REFCLK_FREQ=33000000 Sandeep Paulraj <s-paulraj@ti.com>
-Active arm arm926ejs davinci davinci dvevm davinci_dvevm - -
-Active arm arm926ejs davinci davinci ea20 ea20 - Stefano Babic <sbabic@denx.de>
-Active arm arm926ejs davinci davinci schmoogie davinci_schmoogie - -
-Active arm arm926ejs davinci davinci sffsdr davinci_sffsdr - -
-Active arm arm926ejs davinci davinci sonata davinci_sonata - -
-Active arm arm926ejs davinci enbw enbw_cmc enbw_cmc - Heiko Schocher <hs@denx.de>
-Active arm arm926ejs davinci omicron calimain calimain - Manfred Rudigier <manfred.rudigier@omicron.at>:Christian Riesch <christian.riesch@omicron.at>
-Active arm arm926ejs kirkwood buffalo lsxl lschlv2 lsxl:LSCHLV2 Michael Walle <michael@walle.cc>
-Active arm arm926ejs kirkwood buffalo lsxl lsxhl lsxl:LSXHL Michael Walle <michael@walle.cc>
-Active arm arm926ejs kirkwood cloudengines pogo_e02 pogo_e02 - Dave Purdy <david.c.purdy@gmail.com>
-Active arm arm926ejs kirkwood d-link dns325 dns325 - Stefan Herbrechtsmeier <stefan@code.herbrechtsmeier.net>
-Active arm arm926ejs kirkwood iomega iconnect iconnect - Luka Perkov <luka@openwrt.org>
-Active arm arm926ejs kirkwood karo tk71 tk71 - -
-Active arm arm926ejs kirkwood keymile km_arm km_kirkwood km_kirkwood:KM_KIRKWOOD Valentin Longchamp <valentin.longchamp@keymile.com>
-Active arm arm926ejs kirkwood keymile km_arm km_kirkwood_128m16 km_kirkwood:KM_KIRKWOOD_128M16 Valentin Longchamp <valentin.longchamp@keymile.com>
-Active arm arm926ejs kirkwood keymile km_arm km_kirkwood_pci km_kirkwood:KM_KIRKWOOD_PCI Valentin Longchamp <valentin.longchamp@keymile.com>
-Active arm arm926ejs kirkwood keymile km_arm kmcoge5un km_kirkwood:KM_COGE5UN Valentin Longchamp <valentin.longchamp@keymile.com>
-Active arm arm926ejs kirkwood keymile km_arm kmnusa km_kirkwood:KM_NUSA Valentin Longchamp <valentin.longchamp@keymile.com>
-Active arm arm926ejs kirkwood keymile km_arm kmsugp1 km_kirkwood:KM_SUGP1 Valentin Longchamp <valentin.longchamp@keymile.com>
-Active arm arm926ejs kirkwood keymile km_arm kmsuv31 km_kirkwood:KM_SUV31 Valentin Longchamp <valentin.longchamp@keymile.com>
-Active arm arm926ejs kirkwood keymile km_arm mgcoge3un km_kirkwood:KM_MGCOGE3UN Valentin Longchamp <valentin.longchamp@keymile.com>
-Active arm arm926ejs kirkwood keymile km_arm portl2 km_kirkwood:KM_PORTL2 Valentin Longchamp <valentin.longchamp@keymile.com>
-Active arm arm926ejs kirkwood LaCie net2big_v2 d2net_v2 lacie_kw:D2NET_V2 -
-Active arm arm926ejs kirkwood LaCie net2big_v2 net2big_v2 lacie_kw:NET2BIG_V2 Simon Guinot <simon.guinot@sequanux.org>
-Active arm arm926ejs kirkwood LaCie netspace_v2 inetspace_v2 lacie_kw:INETSPACE_V2 Simon Guinot <simon.guinot@sequanux.org>
-Active arm arm926ejs kirkwood LaCie netspace_v2 netspace_lite_v2 lacie_kw:NETSPACE_LITE_V2 -
-Active arm arm926ejs kirkwood LaCie netspace_v2 netspace_max_v2 lacie_kw:NETSPACE_MAX_V2 Simon Guinot <simon.guinot@sequanux.org>
-Active arm arm926ejs kirkwood LaCie netspace_v2 netspace_mini_v2 lacie_kw:NETSPACE_MINI_V2 -
-Active arm arm926ejs kirkwood LaCie netspace_v2 netspace_v2 lacie_kw:NETSPACE_V2 Simon Guinot <simon.guinot@sequanux.org>
-Active arm arm926ejs kirkwood LaCie wireless_space wireless_space - -
-Active arm arm926ejs kirkwood Marvell dreamplug dreamplug - Jason Cooper <u-boot@lakedaemon.net>
-Active arm arm926ejs kirkwood Marvell guruplug guruplug - Siddarth Gore <gores@marvell.com>
-Active arm arm926ejs kirkwood Marvell mv88f6281gtw_ge mv88f6281gtw_ge - Prafulla Wadaskar <prafulla@marvell.com>
-Active arm arm926ejs kirkwood Marvell openrd openrd_base openrd:BOARD_IS_OPENRD_BASE Prafulla Wadaskar <prafulla@marvell.com>
-Active arm arm926ejs kirkwood Marvell openrd openrd_client openrd:BOARD_IS_OPENRD_CLIENT -
-Active arm arm926ejs kirkwood Marvell openrd openrd_ultimate openrd:BOARD_IS_OPENRD_ULTIMATE -
-Active arm arm926ejs kirkwood Marvell rd6281a rd6281a - Prafulla Wadaskar <prafulla@marvell.com>
-Active arm arm926ejs kirkwood Marvell sheevaplug sheevaplug - Prafulla Wadaskar <prafulla@marvell.com>
-Active arm arm926ejs kirkwood raidsonic ib62x0 ib62x0 - Luka Perkov <luka@openwrt.org>
-Active arm arm926ejs kirkwood Seagate dockstar dockstar - Eric Cooper <ecc@cmu.edu>
-Active arm arm926ejs kirkwood Seagate goflexhome goflexhome - Suriyan Ramasami <suriyan.r@gmail.com>
-Active arm arm926ejs lpc32xx timll devkit3250 devkit3250 - Vladimir Zapolskiy <vz@mleia.com>
-Active arm arm926ejs mb86r0x syteco jadecpu jadecpu - Matthias Weisser <weisserm@arcor.de>
-Active arm arm926ejs mx25 freescale mx25pdk mx25pdk mx25pdk:IMX_CONFIG=board/freescale/mx25pdk/imximage.cfg Fabio Estevam <fabio.estevam@freescale.com>
-Active arm arm926ejs mx25 karo tx25 tx25 - John Rigby <jcrigby@gmail.com>
-Active arm arm926ejs mx25 syteco zmx25 zmx25 - Matthias Weisser <weisserm@arcor.de>
-Active arm arm926ejs mx27 armadeus apf27 apf27 - Philippe Reynes <tremyfr@yahoo.fr>:Eric Jarrige <eric.jarrige@armadeus.org>
-Active arm arm926ejs mx27 logicpd imx27lite imx27lite - Wolfgang Denk <wd@denx.de>
-Active arm arm926ejs mx27 logicpd imx27lite magnesium - Heiko Schocher <hs@denx.de>
-Active arm arm926ejs mxs bluegiga apx4devkit apx4devkit - Lauri Hintsala <lauri.hintsala@bluegiga.com>
-Active arm arm926ejs mxs creative xfi3 xfi3 - Marek Vasut <marek.vasut@gmail.com>
-Active arm arm926ejs mxs denx m28evk m28evk - Marek Vasut <marek.vasut@gmail.com>
-Active arm arm926ejs mxs freescale mx23evk mx23evk - Otavio Salvador <otavio@ossystems.com.br>
-Active arm arm926ejs mxs freescale mx28evk mx28evk mx28evk:ENV_IS_IN_MMC Fabio Estevam <fabio.estevam@freescale.com>
-Active arm arm926ejs mxs freescale mx28evk mx28evk_auart_console mx28evk:MXS_AUART,MXS_AUART_BASE=MXS_UARTAPP3_BASE,ENV_IS_IN_MMC Fabio Estevam <fabio.estevam@freescale.com>
-Active arm arm926ejs mxs freescale mx28evk mx28evk_nand mx28evk:ENV_IS_IN_NAND Fabio Estevam <fabio.estevam@freescale.com>
-Active arm arm926ejs mxs freescale mx28evk mx28evk_spi mx28evk:ENV_IS_IN_SPI_FLASH Fabio Estevam <fabio.estevam@freescale.com>
-Active arm arm926ejs mxs olimex mx23_olinuxino mx23_olinuxino - Marek Vasut <marek.vasut@gmail.com>
-Active arm arm926ejs mxs ppcag bg0900 bg0900 - Marek Vasut <marex@denx.de>
-Active arm arm926ejs mxs sandisk sansa_fuze_plus sansa_fuze_plus - Marek Vasut <marek.vasut@gmail.com>
-Active arm arm926ejs mxs schulercontrol sc_sps_1 sc_sps_1 - Marek Vasut <marek.vasut@gmail.com>
-Active arm arm926ejs nomadik st nhk8815 nhk8815 - Nomadik Linux Team <STN_WMM_nomadik_linux@list.st.com>:Alessandro Rubini <rubini@unipv.it>
-Active arm arm926ejs nomadik st nhk8815 nhk8815_onenand nhk8815:BOOT_ONENAND Nomadik Linux Team <STN_WMM_nomadik_linux@list.st.com>:Alessandro Rubini <rubini@unipv.it>
-Active arm arm926ejs omap ti omap5912osk omap5912osk - Rishi Bhattacharya <rishi@ti.com>
-Active arm arm926ejs orion5x LaCie edminiv2 edminiv2 - Albert ARIBAUD <albert.u.boot@aribaud.net>
-Active arm arm926ejs pantheon Marvell dkb dkb - Lei Wen <leiwen@marvell.com>
-Active arm arm926ejs spear spear spear300 spear300 spear3xx_evb:spear300 Vipin Kumar <vipin.kumar@st.com>
-Active arm arm926ejs spear spear spear300 spear300_nand spear3xx_evb:spear300,nand -
-Active arm arm926ejs spear spear spear300 spear300_usbtty spear3xx_evb:spear300,usbtty -
-Active arm arm926ejs spear spear spear300 spear300_usbtty_nand spear3xx_evb:spear300,usbtty,nand -
-Active arm arm926ejs spear spear spear310 spear310 spear3xx_evb:spear310 Vipin Kumar <vipin.kumar@st.com>
-Active arm arm926ejs spear spear spear310 spear310_nand spear3xx_evb:spear310,nand -
-Active arm arm926ejs spear spear spear310 spear310_pnor spear3xx_evb:spear310,FLASH_PNOR -
-Active arm arm926ejs spear spear spear310 spear310_usbtty spear3xx_evb:spear310,usbtty -
-Active arm arm926ejs spear spear spear310 spear310_usbtty_nand spear3xx_evb:spear310,usbtty,nand -
-Active arm arm926ejs spear spear spear310 spear310_usbtty_pnor spear3xx_evb:spear310,usbtty,FLASH_PNOR -
-Active arm arm926ejs spear spear spear320 spear320 spear3xx_evb:spear320 Vipin Kumar <vipin.kumar@st.com>
-Active arm arm926ejs spear spear spear320 spear320_nand spear3xx_evb:spear320,nand -
-Active arm arm926ejs spear spear spear320 spear320_pnor spear3xx_evb:spear320,FLASH_PNOR -
-Active arm arm926ejs spear spear spear320 spear320_usbtty spear3xx_evb:spear320,usbtty -
-Active arm arm926ejs spear spear spear320 spear320_usbtty_nand spear3xx_evb:spear320,usbtty,nand -
-Active arm arm926ejs spear spear spear320 spear320_usbtty_pnor spear3xx_evb:spear320,usbtty,FLASH_PNOR -
-Active arm arm926ejs spear spear spear600 spear600 spear6xx_evb:spear600 Vipin Kumar <vipin.kumar@st.com>
-Active arm arm926ejs spear spear spear600 spear600_nand spear6xx_evb:spear600,nand -
-Active arm arm926ejs spear spear spear600 spear600_usbtty spear6xx_evb:spear600,usbtty -
-Active arm arm926ejs spear spear spear600 spear600_usbtty_nand spear6xx_evb:spear600,usbtty,nand -
-Active arm arm926ejs spear spear x600 x600 - Stefan Roese <sr@denx.de>
-Active arm arm926ejs versatile armltd versatile versatileab versatile:ARCH_VERSATILE_AB -
-Active arm arm926ejs versatile armltd versatile versatilepb versatile:ARCH_VERSATILE_PB -
-Active arm arm926ejs versatile armltd versatile versatileqemu versatile:ARCH_VERSATILE_QEMU,ARCH_VERSATILE_PB -
-Active arm arm946es - armltd integrator integratorap_cm946es integratorap:CM946ES Linus Walleij <linus.walleij@linaro.org>
-Active arm arm946es - armltd integrator integratorcp_cm946es integratorcp:CM946ES Linus Walleij <linus.walleij@linaro.org>
-Active arm armv7 - armltd vexpress vexpress_ca15_tc2 - -
-Active arm armv7 - armltd vexpress vexpress_ca5x2 - Matt Waddel <matt.waddel@linaro.org>
-Active arm armv7 - armltd vexpress vexpress_ca9x4 - Matt Waddel <matt.waddel@linaro.org>
-Active arm armv7 am33xx BuR kwb kwb kwb:SERIAL1,CONS_INDEX=1 Hannes Petermaier <hannes.petermaier@br-automation.com>
-Active arm armv7 am33xx BuR tseries tseries_mmc tseries:SERIAL1,CONS_INDEX=1,EMMC_BOOT Hannes Petermaier <hannes.petermaier@br-automation.com>
-Active arm armv7 am33xx BuR tseries tseries_nand tseries:SERIAL1,CONS_INDEX=1,NAND Hannes Petermaier <hannes.petermaier@br-automation.com>
-Active arm armv7 am33xx BuR tseries tseries_spi tseries:SERIAL1,CONS_INDEX=1,SPI_BOOT,EMMC_BOOT Hannes Petermaier <hannes.petermaier@br-automation.com>
-Active arm armv7 am33xx compulab cm_t335 cm_t335 - Igor Grinberg <grinberg@compulab.co.il>
-Active arm armv7 am33xx gumstix pepper pepper - Ash Charles <ash@gumstix.com>
-Active arm armv7 am33xx isee igep0033 am335x_igep0033 - Enric Balletbo i Serra <eballetbo@iseebcn.com>
-Active arm armv7 am33xx phytec pcm051 pcm051_rev1 pcm051:REV1 Lars Poeschel <poeschel@lemonage.de>
-Active arm armv7 am33xx phytec pcm051 pcm051_rev3 pcm051:REV3 Lars Poeschel <poeschel@lemonage.de>
-Active arm armv7 am33xx siemens draco draco - Roger Meier <r.meier@siemens.com>
-Active arm armv7 am33xx siemens draco dxr2 - Roger Meier <r.meier@siemens.com>
-Active arm armv7 am33xx siemens pxm2 pxm2 - Roger Meier <r.meier@siemens.com>
-Active arm armv7 am33xx siemens rut rut - Roger Meier <r.meier@siemens.com>
-Active arm armv7 am33xx silica pengwyn pengwyn - Lothar Felten <lothar.felten@gmail.com>
-Active arm armv7 am33xx ti am335x am335x_boneblack am335x_evm:SERIAL1,CONS_INDEX=1,EMMC_BOOT Tom Rini <trini@ti.com>
-Active arm armv7 am33xx ti am335x am335x_boneblack_vboot am335x_evm:SERIAL1,CONS_INDEX=1,EMMC_BOOT,ENABLE_VBOOT Tom Rini <trini@ti.com>
-Active arm armv7 am33xx ti am335x am335x_evm am335x_evm:SERIAL1,CONS_INDEX=1,NAND Tom Rini <trini@ti.com>
-Active arm armv7 am33xx ti am335x am335x_evm_nor am335x_evm:SERIAL1,CONS_INDEX=1,NAND,NOR Tom Rini <trini@ti.com>
-Active arm armv7 am33xx ti am335x am335x_evm_norboot am335x_evm:SERIAL1,CONS_INDEX=1,NOR,NOR_BOOT Tom Rini <trini@ti.com>
-Active arm armv7 am33xx ti am335x am335x_evm_spiboot am335x_evm:SERIAL1,CONS_INDEX=1,SPI_BOOT Tom Rini <trini@ti.com>
-Active arm armv7 am33xx ti am335x am335x_evm_uart1 am335x_evm:SERIAL2,CONS_INDEX=2,NAND Tom Rini <trini@ti.com>
-Active arm armv7 am33xx ti am335x am335x_evm_uart2 am335x_evm:SERIAL3,CONS_INDEX=3,NAND Tom Rini <trini@ti.com>
-Active arm armv7 am33xx ti am335x am335x_evm_uart3 am335x_evm:SERIAL4,CONS_INDEX=4,NAND Tom Rini <trini@ti.com>
-Active arm armv7 am33xx ti am335x am335x_evm_uart4 am335x_evm:SERIAL5,CONS_INDEX=5,NAND Tom Rini <trini@ti.com>
-Active arm armv7 am33xx ti am335x am335x_evm_uart5 am335x_evm:SERIAL6,CONS_INDEX=6,NAND Tom Rini <trini@ti.com>
-Active arm armv7 am33xx ti am335x am335x_evm_usbspl am335x_evm:SERIAL1,CONS_INDEX=1,NAND,SPL_USBETH_SUPPORT Tom Rini <trini@ti.com>
-Active arm armv7 am33xx ti am43xx am43xx_evm am43xx_evm:SERIAL1,CONS_INDEX=1 Lokesh Vutla <lokeshvutla@ti.com>
-Active arm armv7 am33xx ti am43xx am43xx_evm_qspiboot am43xx_evm:SERIAL1,CONS_INDEX=1,QSPI,QSPI_BOOT Lokesh Vutla <lokeshvutla@ti.com>
-Active arm armv7 am33xx ti ti814x ti814x_evm - Matt Porter <matt.porter@linaro.org>
-Active arm armv7 am33xx ti ti816x ti816x_evm - -
-Active arm armv7 at91 atmel sama5d3_xplained sama5d3_xplained_mmc sama5d3_xplained:SAMA5D3,SYS_USE_MMC Bo Shen <voice.shen@atmel.com>
-Active arm armv7 at91 atmel sama5d3_xplained sama5d3_xplained_nandflash sama5d3_xplained:SAMA5D3,SYS_USE_NANDFLASH Bo Shen <voice.shen@atmel.com>
-Active arm armv7 at91 atmel sama5d3xek sama5d3xek_mmc sama5d3xek:SAMA5D3,SYS_USE_MMC Bo Shen <voice.shen@atmel.com>
-Active arm armv7 at91 atmel sama5d3xek sama5d3xek_nandflash sama5d3xek:SAMA5D3,SYS_USE_NANDFLASH Bo Shen <voice.shen@atmel.com>
-Active arm armv7 at91 atmel sama5d3xek sama5d3xek_spiflash sama5d3xek:SAMA5D3,SYS_USE_SERIALFLASH Bo Shen <voice.shen@atmel.com>
-Active arm armv7 bcm281xx broadcom bcm28155_ap bcm28155_ap bcm28155_ap Tim Kryger <tim.kryger@linaro.org>
-Active arm armv7 exynos samsung arndale arndale - Inderpal Singh <inderpal.singh@linaro.org>
-Active arm armv7 exynos samsung origen origen - Chander Kashyap <k.chander@samsung.com>
-Active arm armv7 exynos samsung smdk5250 smdk5250 - Chander Kashyap <k.chander@samsung.com>
-Active arm armv7 exynos samsung smdk5250 snow - Rajeshwari Shinde <rajeshwari.s@samsung.com>
-Active arm armv7 exynos samsung smdk5420 peach-pit - Akshay Saraswat <akshay.s@samsung.com>
-Active arm armv7 exynos samsung smdk5420 smdk5420 - Rajeshwari Shinde <rajeshwari.s@samsung.com>
-Active arm armv7 exynos samsung smdkv310 smdkv310 - Chander Kashyap <k.chander@samsung.com>
-Active arm armv7 exynos samsung trats trats - Lukasz Majewski <l.majewski@samsung.com>
-Active arm armv7 exynos samsung trats2 trats2 - Piotr Wilczek <p.wilczek@samsung.com>
-Active arm armv7 exynos samsung universal_c210 s5pc210_universal - Przemyslaw Marczak <p.marczak@samsung.com>
-Active arm armv7 highbank - highbank highbank - Rob Herring <robh@kernel.org>
-Active arm armv7 keystone ti k2hk_evm k2hk_evm - Vitaly Andrianov <vitalya@ti.com>
-Active arm armv7 mx5 denx m53evk m53evk m53evk:IMX_CONFIG=board/denx/m53evk/imximage.cfg Marek Vasut <marek.vasut@gmail.com>
-Active arm armv7 mx5 esg ima3-mx53 ima3-mx53 ima3-mx53:IMX_CONFIG=board/esg/ima3-mx53/imximage.cfg -
-Active arm armv7 mx5 freescale mx51evk mx51evk mx51evk:IMX_CONFIG=board/freescale/mx51evk/imximage.cfg Stefano Babic <sbabic@denx.de>
-Active arm armv7 mx5 freescale mx53ard mx53ard mx53ard:IMX_CONFIG=board/freescale/mx53ard/imximage_dd3.cfg Fabio Estevam <fabio.estevam@freescale.com>
-Active arm armv7 mx5 freescale mx53evk mx53evk mx53evk:IMX_CONFIG=board/freescale/mx53evk/imximage.cfg Jason Liu <r64343@freescale.com>
-Active arm armv7 mx5 freescale mx53loco mx53loco mx53loco:IMX_CONFIG=board/freescale/mx53loco/imximage.cfg Jason Liu <r64343@freescale.com>
-Active arm armv7 mx5 freescale mx53smd mx53smd mx53smd:IMX_CONFIG=board/freescale/mx53smd/imximage.cfg Fabio Estevam <fabio.estevam@freescale.com>
-Active arm armv7 mx5 genesi mx51_efikamx mx51_efikamx mx51_efikamx:MACH_TYPE=MACH_TYPE_MX51_EFIKAMX,IMX_CONFIG=board/genesi/mx51_efikamx/imximage_mx.cfg -
-Active arm armv7 mx5 genesi mx51_efikamx mx51_efikasb mx51_efikamx:MACH_TYPE=MACH_TYPE_MX51_EFIKASB,IMX_CONFIG=board/genesi/mx51_efikamx/imximage_sb.cfg -
-Active arm armv7 mx5 ttcontrol vision2 vision2 vision2:IMX_CONFIG=board/ttcontrol/vision2/imximage_hynix.cfg Stefano Babic <sbabic@denx.de>
-Active arm armv7 mx6 - udoo udoo_quad udoo:IMX_CONFIG=board/udoo/udoo.cfg,MX6Q,DDR_MB=1024 Fabio Estevam <fabio.estevam@freescale.com>
-Active arm armv7 mx6 - wandboard wandboard_dl wandboard:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6dl.cfg,MX6DL,DDR_MB=1024 Fabio Estevam <fabio.estevam@freescale.com>
-Active arm armv7 mx6 - wandboard wandboard_quad wandboard:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q2g.cfg,MX6Q,DDR_MB=2048 Fabio Estevam <fabio.estevam@freescale.com>
-Active arm armv7 mx6 - wandboard wandboard_solo wandboard:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6s.cfg,MX6S,DDR_MB=512 Fabio Estevam <fabio.estevam@freescale.com>
-Active arm armv7 mx6 barco titanium titanium titanium:IMX_CONFIG=board/barco/titanium/imximage.cfg Stefan Roese <sr@denx.de>
-Active arm armv7 mx6 boundary nitrogen6x mx6qsabrelite nitrogen6x:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q.cfg,MX6Q,DDR_MB=1024,SABRELITE Eric Nelson <eric.nelson@boundarydevices.com>
-Active arm armv7 mx6 boundary nitrogen6x nitrogen6dl nitrogen6x:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6dl.cfg,MX6DL,DDR_MB=1024 Eric Nelson <eric.nelson@boundarydevices.com>
-Active arm armv7 mx6 boundary nitrogen6x nitrogen6dl2g nitrogen6x:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6dl2g.cfg,MX6DL,DDR_MB=2048 Eric Nelson <eric.nelson@boundarydevices.com>
-Active arm armv7 mx6 boundary nitrogen6x nitrogen6q nitrogen6x:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q.cfg,MX6Q,DDR_MB=1024 Eric Nelson <eric.nelson@boundarydevices.com>
-Active arm armv7 mx6 boundary nitrogen6x nitrogen6q2g nitrogen6x:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q2g.cfg,MX6Q,DDR_MB=2048 Eric Nelson <eric.nelson@boundarydevices.com>
-Active arm armv7 mx6 boundary nitrogen6x nitrogen6s nitrogen6x:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6s.cfg,MX6S,DDR_MB=512 Eric Nelson <eric.nelson@boundarydevices.com>
-Active arm armv7 mx6 boundary nitrogen6x nitrogen6s1g nitrogen6x:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6s1g.cfg,MX6S,DDR_MB=1024 Eric Nelson <eric.nelson@boundarydevices.com>
-Active arm armv7 mx6 embest mx6boards marsboard embestmx6boards:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q.cfg,MX6Q,DDR_MB=1024,ENV_IS_IN_SPI_FLASH Eric Bénard <eric@eukrea.com>
-Active arm armv7 mx6 embest mx6boards riotboard embestmx6boards:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6s1g.cfg,MX6S,DDR_MB=1024,ENV_IS_IN_MMC Eric Bénard <eric@eukrea.com>
-Active arm armv7 mx6 freescale mx6qarm2 mx6qarm2 mx6qarm2:IMX_CONFIG=board/freescale/mx6qarm2/imximage.cfg Jason Liu <r64343@freescale.com>
-Active arm armv7 mx6 freescale mx6qsabreauto mx6dlsabreauto mx6qsabreauto:IMX_CONFIG=board/freescale/mx6qsabreauto/mx6dl.cfg,MX6DL Fabio Estevam <fabio.estevam@freescale.com>
-Active arm armv7 mx6 freescale mx6qsabreauto mx6qsabreauto mx6qsabreauto:IMX_CONFIG=board/freescale/mx6qsabreauto/imximage.cfg,MX6Q Fabio Estevam <fabio.estevam@freescale.com>
-Active arm armv7 mx6 freescale mx6sabresd mx6dlsabresd mx6sabresd:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6dl.cfg,MX6DL Fabio Estevam <fabio.estevam@freescale.com>
-Active arm armv7 mx6 freescale mx6sabresd mx6qsabresd mx6sabresd:IMX_CONFIG=board/freescale/imx/ddr/mx6q_4x_mt41j128.cfg,MX6Q Fabio Estevam <fabio.estevam@freescale.com>
-Active arm armv7 mx6 freescale mx6slevk mx6slevk mx6slevk:IMX_CONFIG=board/freescale/mx6slevk/imximage.cfg,MX6SL Fabio Estevam <fabio.estevam@freescale.com>
-Active arm armv7 mx6 gateworks gw_ventana gwventana gw_ventana:IMX_CONFIG=board/gateworks/gw_ventana/gw_ventana.cfg,MX6QDL,SPL Tim Harvey <tharvey@gateworks.com>
-Active arm armv7 mx6 solidrun hummingboard hummingboard_solo hummingboard:IMX_CONFIG=board/solidrun/hummingboard/solo.cfg,MX6S,DDR_MB=512 Jon Nettleton <jon.nettleton@gmail.com>
-Active arm armv7 omap3 - overo omap3_overo - Steve Sakoman <sakoman@gmail.com>
-Active arm armv7 omap3 - pandora omap3_pandora - Grazvydas Ignotas <notasas@gmail.com>
-Active arm armv7 omap3 8dtech eco5pk eco5pk - Raphael Assenat <raph@8d.com>
-Active arm armv7 omap3 comelit dig297 dig297 - Luca Ceresoli <luca.ceresoli@comelit.it>
-Active arm armv7 omap3 compulab cm_t35 cm_t35 - Igor Grinberg <grinberg@compulab.co.il>
-Active arm armv7 omap3 corscience tricorder tricorder - Thomas Weber <weber@corscience.de>
-Active arm armv7 omap3 corscience tricorder tricorder_flash tricorder:FLASHCARD Thomas Weber <weber@corscience.de>
-Active arm armv7 omap3 htkw mcx mcx - Ilya Yanok <yanok@emcraft.com>
-Active arm armv7 omap3 isee igep00x0 igep0020 omap3_igep00x0:MACH_TYPE=MACH_TYPE_IGEP0020,BOOT_ONENAND Enric Balletbo i Serra <eballetbo@iseebcn.com>
-Active arm armv7 omap3 isee igep00x0 igep0020_nand omap3_igep00x0:MACH_TYPE=MACH_TYPE_IGEP0020,BOOT_NAND -
-Active arm armv7 omap3 isee igep00x0 igep0030 omap3_igep00x0:MACH_TYPE=MACH_TYPE_IGEP0030,BOOT_ONENAND Enric Balletbo i Serra <eballetbo@iseebcn.com>
-Active arm armv7 omap3 isee igep00x0 igep0030_nand omap3_igep00x0:MACH_TYPE=MACH_TYPE_IGEP0030,BOOT_NAND -
-Active arm armv7 omap3 isee igep00x0 igep0032 omap3_igep00x0:MACH_TYPE=MACH_TYPE_IGEP0032,BOOT_ONENAND Enric Balletbo i Serra <eballetbo@iseebcn.com>
-Active arm armv7 omap3 logicpd am3517evm am3517_evm - Vaibhav Hiremath <hvaibhav@ti.com>
-Active arm armv7 omap3 logicpd omap3som omap3_logic - Peter Barada <peter.barada@logicpd.com>
-Active arm armv7 omap3 logicpd zoom1 omap3_zoom1 - Nishanth Menon <nm@ti.com>
-Active arm armv7 omap3 matrix_vision mvblx omap3_mvblx - Michael Jones <michael.jones@matrix-vision.de>
-Active arm armv7 omap3 nokia rx51 nokia_rx51 - Pali Rohár <pali.rohar@gmail.com>
-Active arm armv7 omap3 technexion tao3530 omap3_ha tao3530:SYS_BOARD_OMAP3_HA Stefan Roese <sr@denx.de>
-Active arm armv7 omap3 technexion tao3530 tao3530 - Tapani Utriainen <linuxfae@technexion.com>
-Active arm armv7 omap3 technexion twister twister - Stefano Babic <sbabic@denx.de>
-Active arm armv7 omap3 teejet mt_ventoux mt_ventoux - Stefano Babic <sbabic@denx.de>
-Active arm armv7 omap3 ti am3517crane am3517_crane - Nagendra T S <nagendra@mistralsolutions.com>
-Active arm armv7 omap3 ti beagle omap3_beagle omap3_beagle:NAND Tom Rini <trini@ti.com>
-Active arm armv7 omap3 ti evm omap3_evm - Tom Rini <trini@ti.com>
-Active arm armv7 omap3 ti evm omap3_evm_quick_mmc - -
-Active arm armv7 omap3 ti evm omap3_evm_quick_nand - -
-Active arm armv7 omap3 ti sdp3430 omap3_sdp3430 - Nishanth Menon <nm@ti.com>
-Active arm armv7 omap3 timll devkit8000 devkit8000 - Thomas Weber <weber@corscience.de>
-Active arm armv7 omap4 gumstix duovero duovero - Ash Charles <ash@gumstix.com>
-Active arm armv7 omap4 ti panda omap4_panda - Lokesh Vutla <lokeshvutla@ti.com>
-Active arm armv7 omap4 ti sdp4430 omap4_sdp4430 - Lokesh Vutla <lokeshvutla@ti.com>
-Active arm armv7 omap5 compulab cm_t54 cm_t54 - Dmitry Lifshitz <lifshitz@compulab.co.il>
-Active arm armv7 omap5 ti dra7xx dra7xx_evm dra7xx_evm:CONS_INDEX=1 Lokesh Vutla <lokeshvutla@ti.com>
-Active arm armv7 omap5 ti dra7xx dra7xx_evm_qspiboot dra7xx_evm:CONS_INDEX=1,QSPI_BOOT Lokesh Vutla <lokeshvutla@ti.com>
-Active arm armv7 omap5 ti dra7xx dra7xx_evm_uart3 dra7xx_evm:CONS_INDEX=3,SPL_YMODEM_SUPPORT Lokesh Vutla <lokeshvutla@ti.com>
-Active arm armv7 omap5 ti omap5_uevm omap5_uevm - Lokesh Vutla <lokeshvutla@ti.com>
-Active arm armv7 rmobile atmark-techno armadillo-800eva armadillo-800eva - Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
-Active arm armv7 rmobile kmc kzm9g kzm9g - Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>:Tetsuyuki Kobayashi <koba@kmckk.co.jp>
-Active arm armv7 rmobile renesas koelsch koelsch - Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
-Active arm armv7 rmobile renesas lager lager - Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
-Active arm armv7 s5pc1xx samsung goni s5p_goni - Robert Baldyga <r.baldyga@samsung.com>
-Active arm armv7 s5pc1xx samsung smdkc100 smdkc100 - Minkyu Kang <mk7.kang@samsung.com>
-Active arm armv7 socfpga altera socfpga socfpga_cyclone5 - -
-Active arm armv7 sunxi - sunxi Cubietruck sun7i:CUBIETRUCK,SPL,SUNXI_GMAC,RGMII -
-Active arm armv7 sunxi - sunxi Cubietruck_FEL sun7i:CUBIETRUCK,SPL_FEL,SUNXI_GMAC,RGMII -
-Active arm armv7 u8500 st-ericsson snowball snowball - Mathieu Poirier <mathieu.poirier@linaro.org>
-Active arm armv7 u8500 st-ericsson u8500 u8500_href - -
-Active arm armv7 vf610 freescale vf610twr vf610twr vf610twr:IMX_CONFIG=board/freescale/vf610twr/imximage.cfg Alison Wang <b18965@freescale.com>
-Active arm armv7 zynq xilinx zynq zynq_microzed - Michal Simek <monstr@monstr.eu>:Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
-Active arm armv7 zynq xilinx zynq zynq_zc70x - Michal Simek <monstr@monstr.eu>:Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
-Active arm armv7 zynq xilinx zynq zynq_zc770_xm010 zynq_zc770:ZC770_XM010 Michal Simek <monstr@monstr.eu>:Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
-Active arm armv7 zynq xilinx zynq zynq_zc770_xm012 zynq_zc770:ZC770_XM012 Michal Simek <monstr@monstr.eu>:Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
-Active arm armv7 zynq xilinx zynq zynq_zc770_xm013 zynq_zc770:ZC770_XM013 Michal Simek <monstr@monstr.eu>:Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
-Active arm armv7 zynq xilinx zynq zynq_zed - Michal Simek <monstr@monstr.eu>:Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
-Active arm armv7:arm720t tegra114 nvidia dalmore dalmore - Tom Warren <twarren@nvidia.com>
-Active arm armv7:arm720t tegra124 nvidia jetson-tk1 jetson-tk1 jetson-tk1:BOARD_JETSON_TK1= Stephen Warren <swarren@nvidia.com>
-Active arm armv7:arm720t tegra124 nvidia venice2 venice2 - Tom Warren <twarren@nvidia.com>
-Active arm armv7:arm720t tegra20 avionic-design medcom-wide medcom-wide - Alban Bedel <alban.bedel@avionic-design.de>
-Active arm armv7:arm720t tegra20 avionic-design plutux plutux - Alban Bedel <alban.bedel@avionic-design.de>
-Active arm armv7:arm720t tegra20 avionic-design tec tec - Alban Bedel <alban.bedel@avionic-design.de>
-Active arm armv7:arm720t tegra20 compal paz00 paz00 - Tom Warren <twarren@nvidia.com>:Stephen Warren <swarren@nvidia.com>
-Active arm armv7:arm720t tegra20 compulab trimslice trimslice - Tom Warren <twarren@nvidia.com>:Stephen Warren <swarren@nvidia.com>
-Active arm armv7:arm720t tegra20 nvidia harmony harmony - Tom Warren <twarren@nvidia.com>
-Active arm armv7:arm720t tegra20 nvidia seaboard seaboard - Tom Warren <twarren@nvidia.com>
-Active arm armv7:arm720t tegra20 nvidia ventana ventana - Tom Warren <twarren@nvidia.com>:Stephen Warren <swarren@nvidia.com>
-Active arm armv7:arm720t tegra20 nvidia whistler whistler - Tom Warren <twarren@nvidia.com>:Stephen Warren <swarren@nvidia.com>
-Active arm armv7:arm720t tegra20 toradex colibri_t20_iris colibri_t20_iris - Lucas Stach <dev@lynxeye.de>
-Active arm armv7:arm720t tegra30 avionic-design tec-ng tec-ng - Alban Bedel <alban.bedel@avionic-design.de>
-Active arm armv7:arm720t tegra30 nvidia beaver beaver - Tom Warren <twarren@nvidia.com>:Stephen Warren <swarren@nvidia.com>
-Active arm armv7:arm720t tegra30 nvidia cardhu cardhu - Tom Warren <twarren@nvidia.com>
-Active arm pxa - - balloon3 balloon3 - Marek Vasut <marek.vasut@gmail.com>
-Active arm pxa - - h2200 h2200 - Lukasz Dalek <luk0104@gmail.com>
-Active arm pxa - - palmld palmld - Marek Vasut <marek.vasut@gmail.com>
-Active arm pxa - - palmtc palmtc - Marek Vasut <marek.vasut@gmail.com>
-Active arm pxa - - pxa255_idp pxa255_idp - Cliff Brake <cliff.brake@gmail.com>
-Active arm pxa - - trizepsiv polaris trizepsiv:POLARIS Stefano Babic <sbabic@denx.de>
-Active arm pxa - - trizepsiv trizepsiv - Stefano Babic <sbabic@denx.de>
-Active arm pxa - - vpac270 vpac270_nor_128 vpac270:NOR,RAM_128M Marek Vasut <marek.vasut@gmail.com>
-Active arm pxa - - vpac270 vpac270_nor_256 vpac270:NOR,RAM_256M Marek Vasut <marek.vasut@gmail.com>
-Active arm pxa - - vpac270 vpac270_ond_256 vpac270:ONENAND,RAM_256M Marek Vasut <marek.vasut@gmail.com>
-Active arm pxa - - xaeniax xaeniax - -
-Active arm pxa - - zipitz2 zipitz2 - Marek Vasut <marek.vasut@gmail.com>
-Active arm pxa - icpdas lp8x4x lp8x4x - Sergey Yanovich <ynvich@gmail.com>
-Active arm pxa - toradex colibri_pxa270 colibri_pxa270 - Marek Vasut <marek.vasut@gmail.com>
-Active arm sa1100 - - jornada jornada - Kristoffer Ericson <kristoffer.ericson@gmail.com>
-Active avr32 - at32ap700x atmel atngw100mkii atngw100mkii - Andreas Bießmann <andreas.devel@googlemail.com>
-Active avr32 - at32ap700x in-circuit grasshopper grasshopper - Andreas Bießmann <andreas.devel@googlemail.com>
-Active avr32 - at32ap700x mimc mimc200 mimc200 - Mark Jackson <mpfj@mimc.co.uk>
-Active avr32 - at32ap700x miromico hammerhead hammerhead - Alex Raimondi <alex.raimondi@miromico.ch>
-Active blackfin - - - bct-brettl2 bct-brettl2 - Peter Meerwald <devel@bct-electronic.com>
-Active blackfin - - - bf506f-ezkit bf506f-ezkit - Sonic Zhang <sonic.adi@gmail.com>
-Active blackfin - - - bf518f-ezbrd bf518f-ezbrd - Sonic Zhang <sonic.adi@gmail.com>
-Active blackfin - - - bf525-ucr2 bf525-ucr2 - Haitao Zhang <hzhang@ucrobotics.com>:Chong Huang <chuang@ucrobotics.com>
-Active blackfin - - - bf526-ezbrd bf526-ezbrd - Sonic Zhang <sonic.adi@gmail.com>
-Active blackfin - - - bf527-ad7160-eval bf527-ad7160-eval - Sonic Zhang <sonic.adi@gmail.com>
-Active blackfin - - - bf527-ezkit bf527-ezkit - Sonic Zhang <sonic.adi@gmail.com>
-Active blackfin - - - bf527-ezkit bf527-ezkit-v2 bf527-ezkit:BF527_EZKIT_REV_2_1 Sonic Zhang <sonic.adi@gmail.com>
-Active blackfin - - - bf527-sdp bf527-sdp - Sonic Zhang <sonic.adi@gmail.com>
-Active blackfin - - - bf533-ezkit bf533-ezkit - Sonic Zhang <sonic.adi@gmail.com>
-Active blackfin - - - bf533-stamp bf533-stamp - Sonic Zhang <sonic.adi@gmail.com>
-Active blackfin - - - bf537-minotaur bf537-minotaur - Martin Strubel <strubel@section5.ch>
-Active blackfin - - - bf537-pnav bf537-pnav - Sonic Zhang <sonic.adi@gmail.com>
-Active blackfin - - - bf537-srv1 bf537-srv1 - Martin Strubel <strubel@section5.ch>
-Active blackfin - - - bf537-stamp bf537-stamp - Sonic Zhang <sonic.adi@gmail.com>
-Active blackfin - - - bf538f-ezkit bf538f-ezkit - Sonic Zhang <sonic.adi@gmail.com>
-Active blackfin - - - bf548-ezkit bf548-ezkit - Sonic Zhang <sonic.adi@gmail.com>
-Active blackfin - - - bf561-acvilon bf561-acvilon - Valentin Yakovenkov <yakovenkov@niistt.ru>
-Active blackfin - - - bf561-ezkit bf561-ezkit - Sonic Zhang <sonic.adi@gmail.com>
-Active blackfin - - - bf609-ezkit bf609-ezkit - Sonic Zhang <sonic.adi@gmail.com>
-Active blackfin - - - blackstamp blackstamp - Wojtek Skulski <skulski@pas.rochester.edu>:Wojtek Skulski <info@skutek.com>:Benjamin Matthews <mben12@gmail.com>
-Active blackfin - - - blackvme blackvme - Wojtek Skulski <skulski@pas.rochester.edu>:Wojtek Skulski <info@skutek.com>:Benjamin Matthews <mben12@gmail.com>
-Active blackfin - - - br4 br4 - Dimitar Penev <dpn@switchfin.org>
-Active blackfin - - - dnp5370 dnp5370 - M.Hasewinkel (MHA) <info@ssv-embedded.de>
-Active blackfin - - - ibf-dsp561 ibf-dsp561 - I-SYST Micromodule <support@i-syst.com>
-Active blackfin - - - pr1 pr1 - Dimitar Penev <dpn@switchfin.org>
-Active m68k mcf5227x - freescale m52277evb M52277EVB M52277EVB:SYS_SPANSION_BOOT,SYS_TEXT_BASE=0x00000000 TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active m68k mcf5227x - freescale m52277evb M52277EVB_stmicro M52277EVB:CF_SBF,SYS_STMICRO_BOOT,SYS_TEXT_BASE=0x43E00000 TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active m68k mcf523x - freescale m5235evb M5235EVB M5235EVB:SYS_TEXT_BASE=0xFFE00000 TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active m68k mcf523x - freescale m5235evb M5235EVB_Flash32 M5235EVB:NORFLASH_PS32BIT,SYS_TEXT_BASE=0xFFC00000 TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active m68k mcf52x2 - - cobra5272 cobra5272 - -
-Active m68k mcf52x2 - BuS eb_cpu5282 eb_cpu5282 eb_cpu5282:SYS_TEXT_BASE=0xFF000000,SYS_MONITOR_BASE=0xFF000400 Jens Scharsig <esw@bus-elektronik.de>
-Active m68k mcf52x2 - BuS eb_cpu5282 eb_cpu5282_internal eb_cpu5282:SYS_TEXT_BASE=0xF0000000,SYS_MONITOR_BASE=0xF0000418 Jens Scharsig <esw@bus-elektronik.de>
-Active m68k mcf52x2 - esd tasreg TASREG - Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active m68k mcf52x2 - freescale m5208evbe M5208EVBE - -
-Active m68k mcf52x2 - freescale m5249evb M5249EVB - -
-Active m68k mcf52x2 - freescale m5253demo M5253DEMO - TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active m68k mcf52x2 - freescale m5272c3 M5272C3 - -
-Active m68k mcf52x2 - freescale m5275evb M5275EVB - -
-Active m68k mcf52x2 - freescale m5282evb M5282EVB - -
-Active m68k mcf532x - astro mcf5373l astro_mcf5373l - Wolfgang Wegner <w.wegner@astro-kom.de>
-Active m68k mcf532x - freescale m53017evb M53017EVB - TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active m68k mcf532x - freescale m5329evb M5329AFEE M5329EVB:NANDFLASH_SIZE=0 TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active m68k mcf532x - freescale m5329evb M5329BFEE M5329EVB:NANDFLASH_SIZE=16 TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active m68k mcf532x - freescale m5373evb M5373EVB M5373EVB:NANDFLASH_SIZE=16 TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active m68k mcf5445x - freescale m54418twr M54418TWR M54418TWR:CF_SBF,SYS_SERIAL_BOOT,SYS_TEXT_BASE=0x47E00000,SYS_INPUT_CLKSRC=50000000 -
-Active m68k mcf5445x - freescale m54418twr M54418TWR_nand_mii M54418TWR:SYS_NAND_BOOT,SYS_TEXT_BASE=0x47E00000,SYS_INPUT_CLKSRC=25000000 -
-Active m68k mcf5445x - freescale m54418twr M54418TWR_nand_rmii M54418TWR:SYS_NAND_BOOT,SYS_TEXT_BASE=0x47E00000,SYS_INPUT_CLKSRC=50000000 -
-Active m68k mcf5445x - freescale m54418twr M54418TWR_nand_rmii_lowfreq M54418TWR:SYS_NAND_BOOT,LOW_MCFCLK,SYS_TEXT_BASE=0x47E00000,SYS_INPUT_CLKSRC=50000000 -
-Active m68k mcf5445x - freescale m54418twr M54418TWR_serial_mii M54418TWR:CF_SBF,SYS_SERIAL_BOOT,SYS_TEXT_BASE=0x47E00000,SYS_INPUT_CLKSRC=25000000 -
-Active m68k mcf5445x - freescale m54418twr M54418TWR_serial_rmii M54418TWR:CF_SBF,SYS_SERIAL_BOOT,SYS_TEXT_BASE=0x47E00000,SYS_INPUT_CLKSRC=50000000 -
-Active m68k mcf5445x - freescale m54451evb M54451EVB M54451EVB:SYS_TEXT_BASE=0x00000000,SYS_INPUT_CLKSRC=24000000 -
-Active m68k mcf5445x - freescale m54451evb M54451EVB_stmicro M54451EVB:CF_SBF,SYS_STMICRO_BOOT,SYS_TEXT_BASE=0x47e00000,SYS_INPUT_CLKSRC=24000000 -
-Active m68k mcf5445x - freescale m54455evb M54455EVB M54455EVB:SYS_ATMEL_BOOT,SYS_TEXT_BASE=0x04000000,SYS_INPUT_CLKSRC=33333333 TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active m68k mcf5445x - freescale m54455evb M54455EVB_a66 M54455EVB:SYS_ATMEL_BOOT,SYS_TEXT_BASE=0x04000000,SYS_INPUT_CLKSRC=66666666 TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active m68k mcf5445x - freescale m54455evb M54455EVB_i66 M54455EVB:SYS_INTEL_BOOT,SYS_TEXT_BASE=0x00000000,SYS_INPUT_CLKSRC=66666666 TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active m68k mcf5445x - freescale m54455evb M54455EVB_intel M54455EVB:SYS_INTEL_BOOT,SYS_TEXT_BASE=0x00000000,SYS_INPUT_CLKSRC=33333333 TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active m68k mcf5445x - freescale m54455evb M54455EVB_stm33 M54455EVB:SYS_STMICRO_BOOT,CF_SBF,SYS_TEXT_BASE=0x4FE00000,SYS_INPUT_CLKSRC=33333333 TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active m68k mcf547x_8x - freescale m547xevb M5475AFE M5475EVB:SYS_BUSCLK=133333333,SYS_BOOTSZ=2,SYS_DRAMSZ=64 TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active m68k mcf547x_8x - freescale m547xevb M5475BFE M5475EVB:SYS_BUSCLK=133333333,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_NOR1SZ=16 TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active m68k mcf547x_8x - freescale m547xevb M5475CFE M5475EVB:SYS_BUSCLK=133333333,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_NOR1SZ=16,SYS_VIDEO,SYS_USBCTRL TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active m68k mcf547x_8x - freescale m547xevb M5475DFE M5475EVB:SYS_BUSCLK=133333333,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_USBCTRL TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active m68k mcf547x_8x - freescale m547xevb M5475EFE M5475EVB:SYS_BUSCLK=133333333,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_VIDEO,SYS_USBCTRL TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active m68k mcf547x_8x - freescale m547xevb M5475FFE M5475EVB:SYS_BUSCLK=133333333,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_NOR1SZ=32,SYS_VIDEO,SYS_USBCTRL,SYS_DRAMSZ1=64 TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active m68k mcf547x_8x - freescale m547xevb M5475GFE M5475EVB:SYS_BUSCLK=133333333,SYS_BOOTSZ=4,SYS_DRAMSZ=64 TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active m68k mcf547x_8x - freescale m548xevb M5485AFE M5485EVB:SYS_BUSCLK=100000000,SYS_BOOTSZ=2,SYS_DRAMSZ=64 TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active m68k mcf547x_8x - freescale m548xevb M5485BFE M5485EVB:SYS_BUSCLK=100000000,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_NOR1SZ=16 TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active m68k mcf547x_8x - freescale m548xevb M5485CFE M5485EVB:SYS_BUSCLK=100000000,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_NOR1SZ=16,SYS_VIDEO,SYS_USBCTRL TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active m68k mcf547x_8x - freescale m548xevb M5485DFE M5485EVB:SYS_BUSCLK=100000000,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_USBCTRL TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active m68k mcf547x_8x - freescale m548xevb M5485EFE M5485EVB:SYS_BUSCLK=100000000,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_VIDEO,SYS_USBCTRL TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active m68k mcf547x_8x - freescale m548xevb M5485FFE M5485EVB:SYS_BUSCLK=100000000,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_NOR1SZ=32,SYS_VIDEO,SYS_USBCTRL,SYS_DRAMSZ1=64 TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active m68k mcf547x_8x - freescale m548xevb M5485GFE M5485EVB:SYS_BUSCLK=100000000,SYS_BOOTSZ=4,SYS_DRAMSZ=64 TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active m68k mcf547x_8x - freescale m548xevb M5485HFE M5485EVB:SYS_BUSCLK=100000000,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_NOR1SZ=16,SYS_VIDEO TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active microblaze - - xilinx microblaze-generic microblaze-generic - Michal Simek <monstr@monstr.eu>
-Active mips mips32 - - qemu-mips qemu_mips qemu-mips:SYS_BIG_ENDIAN Vlad Lungu <vlad.lungu@windriver.com>
-Active mips mips32 - - qemu-mips qemu_mipsel qemu-mips:SYS_LITTLE_ENDIAN -
-Active mips mips32 - imgtec malta malta malta:SYS_BIG_ENDIAN Paul Burton <paul.burton@imgtec.com>
-Active mips mips32 - imgtec malta maltael malta:SYS_LITTLE_ENDIAN Paul Burton <paul.burton@imgtec.com>
-Active mips mips32 - micronas vct vct_platinum vct:VCT_PLATINUM -
-Active mips mips32 - micronas vct vct_platinum_onenand vct:VCT_PLATINUM,VCT_ONENAND -
-Active mips mips32 - micronas vct vct_platinum_onenand_small vct:VCT_PLATINUM,VCT_ONENAND,VCT_SMALL_IMAGE -
-Active mips mips32 - micronas vct vct_platinum_small vct:VCT_PLATINUM,VCT_SMALL_IMAGE -
-Active mips mips32 - micronas vct vct_platinumavc vct:VCT_PLATINUMAVC -
-Active mips mips32 - micronas vct vct_platinumavc_onenand vct:VCT_PLATINUMAVC,VCT_ONENAND -
-Active mips mips32 - micronas vct vct_platinumavc_onenand_small vct:VCT_PLATINUMAVC,VCT_ONENAND,VCT_SMALL_IMAGE -
-Active mips mips32 - micronas vct vct_platinumavc_small vct:VCT_PLATINUMAVC,VCT_SMALL_IMAGE -
-Active mips mips32 - micronas vct vct_premium vct:VCT_PREMIUM -
-Active mips mips32 - micronas vct vct_premium_onenand vct:VCT_PREMIUM,VCT_ONENAND -
-Active mips mips32 - micronas vct vct_premium_onenand_small vct:VCT_PREMIUM,VCT_ONENAND,VCT_SMALL_IMAGE -
-Active mips mips32 - micronas vct vct_premium_small vct:VCT_PREMIUM,VCT_SMALL_IMAGE -
-Active mips mips32 au1x00 - dbau1x00 dbau1000 dbau1x00:DBAU1000 Thomas Lange <thomas@corelatus.se>
-Active mips mips32 au1x00 - dbau1x00 dbau1100 dbau1x00:DBAU1100 Thomas Lange <thomas@corelatus.se>
-Active mips mips32 au1x00 - dbau1x00 dbau1500 dbau1x00:DBAU1500 Thomas Lange <thomas@corelatus.se>
-Active mips mips32 au1x00 - dbau1x00 dbau1550 dbau1x00:DBAU1550 Thomas Lange <thomas@corelatus.se>
-Active mips mips32 au1x00 - dbau1x00 dbau1550_el dbau1x00:DBAU1550,SYS_LITTLE_ENDIAN Thomas Lange <thomas@corelatus.se>
-Active mips mips32 au1x00 - pb1x00 pb1000 pb1x00:PB1000 -
-Active mips mips64 - - qemu-mips qemu_mips64 qemu-mips64:SYS_BIG_ENDIAN -
-Active mips mips64 - - qemu-mips qemu_mips64el qemu-mips64:SYS_LITTLE_ENDIAN -
-Active nds32 n1213 ag101 AndesTech adp-ag101 adp-ag101 - Andes <uboot@andestech.com>
-Active nds32 n1213 ag101 AndesTech adp-ag101p adp-ag101p - Andes <uboot@andestech.com>
-Active nds32 n1213 ag102 AndesTech adp-ag102 adp-ag102 - Andes <uboot@andestech.com>
-Active nios2 - - altera nios2-generic nios2-generic - Scott McNutt <smcnutt@psyent.com>
-Active nios2 - - psyent pci5441 PCI5441 - Scott McNutt <smcnutt@psyent.com>
-Active nios2 - - psyent pk1c20 PK1C20 - Scott McNutt <smcnutt@psyent.com>
-Active openrisc - - openrisc openrisc-generic openrisc-generic - Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>
-Active powerpc 74xx_7xx - - evb64260 P3G4 - Wolfgang Denk <wd@denx.de>
-Active powerpc 74xx_7xx - - ppmc7xx ppmc7xx - -
-Active powerpc 74xx_7xx - eltec elppc ELPPC - -
-Active powerpc 74xx_7xx - esd cpci750 CPCI750 - Reinhard Arlt <reinhard.arlt@esd-electronics.com>
-Active powerpc 74xx_7xx - freescale mpc7448hpc2 mpc7448hpc2 - Roy Zang <tie-fei.zang@freescale.com>
-Active powerpc 74xx_7xx - Marvell db64360 DB64360 - -
-Active powerpc 74xx_7xx - Marvell db64460 DB64460 - -
-Active powerpc 74xx_7xx - prodrive p3mx p3m7448 p3mx:P3M7448 Stefan Roese <sr@denx.de>
-Active powerpc 74xx_7xx - prodrive p3mx p3m750 p3mx:P3M750 Stefan Roese <sr@denx.de>
-Active powerpc mpc512x - - pdm360ng pdm360ng - Michael Weiss <michael.weiss@ifm.com>
-Active powerpc mpc512x - davedenx aria aria - Wolfgang Denk <wd@denx.de>
-Active powerpc mpc512x - esd mecp5123 mecp5123 - Reinhard Arlt <reinhard.arlt@esd-electronics.com>
-Active powerpc mpc512x - freescale mpc5121ads mpc5121ads - -
-Active powerpc mpc512x - freescale mpc5121ads mpc5121ads_rev2 mpc5121ads:MPC5121ADS_REV2 -
-Active powerpc mpc512x - ifm ac14xx ac14xx - Anatolij Gustschin <agust@denx.de>
-Active powerpc mpc5xx - - cmi cmi_mpc5xx - -
-Active powerpc mpc5xx - mpl pati PATI - -
-Active powerpc mpc5xxx - - a3m071 a3m071 - Stefan Roese <sr@denx.de>
-Active powerpc mpc5xxx - - a3m071 a4m2k a3m071:A4M2K Stefan Roese <sr@denx.de>
-Active powerpc mpc5xxx - - a4m072 a4m072 - Sergei Poselenov <sposelenov@emcraft.com>
-Active powerpc mpc5xxx - - bc3450 BC3450 - -
-Active powerpc mpc5xxx - - canmb canmb - -
-Active powerpc mpc5xxx - - cm5200 cm5200 - -
-Active powerpc mpc5xxx - - icecube icecube_5200 IceCube Wolfgang Denk <wd@denx.de>
-Active powerpc mpc5xxx - - icecube icecube_5200_DDR IceCube:MPC5200_DDR -
-Active powerpc mpc5xxx - - icecube icecube_5200_DDR_LOWBOOT IceCube:SYS_TEXT_BASE=0xFF800000,MPC5200_DDR -
-Active powerpc mpc5xxx - - icecube icecube_5200_DDR_LOWBOOT08 IceCube:SYS_TEXT_BASE=0xFF800000,MPC5200_DDR -
-Active powerpc mpc5xxx - - icecube icecube_5200_LOWBOOT IceCube:SYS_TEXT_BASE=0xFF000000 -
-Active powerpc mpc5xxx - - icecube icecube_5200_LOWBOOT08 IceCube:SYS_TEXT_BASE=0xFF800000 -
-Active powerpc mpc5xxx - - icecube Lite5200 IceCube -
-Active powerpc mpc5xxx - - icecube Lite5200_LOWBOOT IceCube:SYS_TEXT_BASE=0xFF000000 -
-Active powerpc mpc5xxx - - icecube Lite5200_LOWBOOT08 IceCube:SYS_TEXT_BASE=0xFF800000 -
-Active powerpc mpc5xxx - - icecube lite5200b IceCube:MPC5200_DDR,LITE5200B -
-Active powerpc mpc5xxx - - icecube lite5200b_LOWBOOT IceCube:MPC5200_DDR,LITE5200B,SYS_TEXT_BASE=0xFF000000 -
-Active powerpc mpc5xxx - - icecube lite5200b_PM IceCube:MPC5200_DDR,LITE5200B,LITE5200B_PM -
-Active powerpc mpc5xxx - - inka4x0 inka4x0 - Detlev Zundel <dzu@denx.de>
-Active powerpc mpc5xxx - - ipek01 ipek01 - Wolfgang Grandegger <wg@denx.de>
-Active powerpc mpc5xxx - - jupiter jupiter - Heiko Schocher <hs@denx.de>
-Active powerpc mpc5xxx - - mcc200 mcc200 - -
-Active powerpc mpc5xxx - - mcc200 mcc200_COM12 mcc200:CONSOLE_COM12 -
-Active powerpc mpc5xxx - - mcc200 mcc200_COM12_highboot mcc200:CONSOLE_COM12,SYS_TEXT_BASE=0xFFF00000 -
-Active powerpc mpc5xxx - - mcc200 mcc200_COM12_highboot_SDRAM mcc200:CONSOLE_COM12,SYS_TEXT_BASE=0xFFF00000,MCC200_SDRAM -
-Active powerpc mpc5xxx - - mcc200 mcc200_COM12_SDRAM mcc200:CONSOLE_COM12,MCC200_SDRAM -
-Active powerpc mpc5xxx - - mcc200 mcc200_highboot mcc200:SYS_TEXT_BASE=0xFFF00000 -
-Active powerpc mpc5xxx - - mcc200 mcc200_highboot_SDRAM mcc200:SYS_TEXT_BASE=0xFFF00000,MCC200_SDRAM -
-Active powerpc mpc5xxx - - mcc200 mcc200_SDRAM mcc200:MCC200_SDRAM -
-Active powerpc mpc5xxx - - mcc200 prs200 mcc200:PRS200,MCC200_SDRAM -
-Active powerpc mpc5xxx - - mcc200 prs200_DDR mcc200:PRS200 -
-Active powerpc mpc5xxx - - mcc200 prs200_highboot mcc200:PRS200,SYS_TEXT_BASE=0xFFF00000,MCC200_SDRAM -
-Active powerpc mpc5xxx - - mcc200 prs200_highboot_DDR mcc200:PRS200,SYS_TEXT_BASE=0xFFF00000 -
-Active powerpc mpc5xxx - - motionpro motionpro - -
-Active powerpc mpc5xxx - - munices munices - -
-Active powerpc mpc5xxx - - pm520 PM520 - Josef Wagner <Wagner@Microsys.de>
-Active powerpc mpc5xxx - - pm520 PM520_DDR PM520:MPC5200_DDR Josef Wagner <Wagner@Microsys.de>
-Active powerpc mpc5xxx - - pm520 PM520_ROMBOOT PM520:BOOT_ROM Josef Wagner <Wagner@Microsys.de>
-Active powerpc mpc5xxx - - pm520 PM520_ROMBOOT_DDR PM520:MPC5200_DDR,BOOT_ROM Josef Wagner <Wagner@Microsys.de>
-Active powerpc mpc5xxx - - total5200 Total5200 Total5200:TOTAL5200_REV=1 -
-Active powerpc mpc5xxx - - total5200 Total5200_lowboot Total5200:TOTAL5200_REV=1,SYS_TEXT_BASE=0xFE000000 -
-Active powerpc mpc5xxx - - total5200 Total5200_Rev2 Total5200:TOTAL5200_REV=2 -
-Active powerpc mpc5xxx - - total5200 Total5200_Rev2_lowboot Total5200:TOTAL5200_REV=2,SYS_TEXT_BASE=0xFE000000 -
-Active powerpc mpc5xxx - - v38b v38b - -
-Active powerpc mpc5xxx - emk top5200 EVAL5200 TOP5200:EVAL5200 Reinhard Meyer <reinhard.meyer@emk-elektronik.de>
-Active powerpc mpc5xxx - emk top5200 MINI5200 TOP5200:MINI5200 Reinhard Meyer <reinhard.meyer@emk-elektronik.de>
-Active powerpc mpc5xxx - emk top5200 TOP5200 TOP5200:TOP5200 Reinhard Meyer <reinhard.meyer@emk-elektronik.de>
-Active powerpc mpc5xxx - esd cpci5200 cpci5200 - Reinhard Arlt <reinhard.arlt@esd-electronics.com>
-Active powerpc mpc5xxx - esd mecp5200 mecp5200 - Reinhard Arlt <reinhard.arlt@esd-electronics.com>
-Active powerpc mpc5xxx - esd pf5200 pf5200 - Reinhard Arlt <reinhard.arlt@esd-electronics.com>
-Active powerpc mpc5xxx - ifm o2dnt2 O2D o2d Anatolij Gustschin <agust@denx.de>
-Active powerpc mpc5xxx - ifm o2dnt2 O2D300 o2d300 Anatolij Gustschin <agust@denx.de>
-Active powerpc mpc5xxx - ifm o2dnt2 O2DNT2 o2dnt2 Anatolij Gustschin <agust@denx.de>
-Active powerpc mpc5xxx - ifm o2dnt2 O2DNT2_RAMBOOT o2dnt2:SYS_TEXT_BASE=0x00100000 Anatolij Gustschin <agust@denx.de>
-Active powerpc mpc5xxx - ifm o2dnt2 O2I o2i Anatolij Gustschin <agust@denx.de>
-Active powerpc mpc5xxx - ifm o2dnt2 O2MNT o2mnt Anatolij Gustschin <agust@denx.de>
-Active powerpc mpc5xxx - ifm o2dnt2 O2MNT_O2M110 o2mnt:IFM_SENSOR_TYPE="O2M110" Anatolij Gustschin <agust@denx.de>
-Active powerpc mpc5xxx - ifm o2dnt2 O2MNT_O2M112 o2mnt:IFM_SENSOR_TYPE="O2M112" Anatolij Gustschin <agust@denx.de>
-Active powerpc mpc5xxx - ifm o2dnt2 O2MNT_O2M113 o2mnt:IFM_SENSOR_TYPE="O2M113" Anatolij Gustschin <agust@denx.de>
-Active powerpc mpc5xxx - ifm o2dnt2 O3DNT o3dnt Anatolij Gustschin <agust@denx.de>
-Active powerpc mpc5xxx - intercontrol digsy_mtc digsy_mtc - Werner Pfister <Pfister_Werner@intercontrol.de>
-Active powerpc mpc5xxx - intercontrol digsy_mtc digsy_mtc_RAMBOOT digsy_mtc:SYS_TEXT_BASE=0x00100000 Werner Pfister <Pfister_Werner@intercontrol.de>
-Active powerpc mpc5xxx - intercontrol digsy_mtc digsy_mtc_rev5 digsy_mtc:DIGSY_REV5 Werner Pfister <Pfister_Werner@intercontrol.de>
-Active powerpc mpc5xxx - intercontrol digsy_mtc digsy_mtc_rev5_RAMBOOT digsy_mtc:SYS_TEXT_BASE=0x00100000,DIGSY_REV5 Werner Pfister <Pfister_Werner@intercontrol.de>
-Active powerpc mpc5xxx - manroland hmi1001 hmi1001 - -
-Active powerpc mpc5xxx - manroland mucmc52 mucmc52 - Heiko Schocher <hs@denx.de>
-Active powerpc mpc5xxx - manroland uc101 uc101 - Heiko Schocher <hs@denx.de>
-Active powerpc mpc5xxx - phytec pcm030 pcm030 - Jon Smirl <jonsmirl@gmail.com>
-Active powerpc mpc5xxx - phytec pcm030 pcm030_LOWBOOT pcm030:SYS_TEXT_BASE=0xFF000000 Jon Smirl <jonsmirl@gmail.com>
-Active powerpc mpc5xxx - tqc tqm5200 aev - -
-Active powerpc mpc5xxx - tqc tqm5200 cam5200 TQM5200:CAM5200,TQM5200S,TQM5200_B -
-Active powerpc mpc5xxx - tqc tqm5200 cam5200_niosflash TQM5200:CAM5200,TQM5200S,TQM5200_B,CAM5200_NIOSFLASH -
-Active powerpc mpc5xxx - tqc tqm5200 charon - Heiko Schocher <hs@denx.de>
-Active powerpc mpc5xxx - tqc tqm5200 fo300 TQM5200:FO300 -
-Active powerpc mpc5xxx - tqc tqm5200 MiniFAP TQM5200:MINIFAP -
-Active powerpc mpc5xxx - tqc tqm5200 TB5200 - -
-Active powerpc mpc5xxx - tqc tqm5200 TB5200_B TB5200:TQM5200_B -
-Active powerpc mpc5xxx - tqc tqm5200 TQM5200 - -
-Active powerpc mpc5xxx - tqc tqm5200 TQM5200_B TQM5200:TQM5200_B -
-Active powerpc mpc5xxx - tqc tqm5200 TQM5200_B_HIGHBOOT TQM5200:TQM5200_B,SYS_TEXT_BASE=0xFFF00000 -
-Active powerpc mpc5xxx - tqc tqm5200 TQM5200_STK100 TQM5200:STK52XX_REV100 -
-Active powerpc mpc5xxx - tqc tqm5200 TQM5200S TQM5200:TQM5200_B,TQM5200S -
-Active powerpc mpc5xxx - tqc tqm5200 TQM5200S_HIGHBOOT TQM5200:TQM5200_B,TQM5200S,SYS_TEXT_BASE=0xFFF00000 -
-Active powerpc mpc824x - - a3000 A3000 - -
-Active powerpc mpc824x - - cpc45 CPC45 - Josef Wagner <Wagner@Microsys.de>
-Active powerpc mpc824x - - cpc45 CPC45_ROMBOOT CPC45:BOOT_ROM Josef Wagner <Wagner@Microsys.de>
-Active powerpc mpc824x - - cu824 CU824 - Wolfgang Denk <wd@denx.de>
-Active powerpc mpc824x - - eXalion eXalion - Torsten Demke <torsten.demke@fci.com>
-Active powerpc mpc824x - - mvblue MVBLUE - -
-Active powerpc mpc824x - - sandpoint Sandpoint8240 - Wolfgang Denk <wd@denx.de>
-Active powerpc mpc824x - - utx8245 utx8245 - Greg Allen <gallen@arlut.utexas.edu>
-Active powerpc mpc8260 - - atc atc - Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8260 - - cogent cogent_mpc8260 - Murray Jensen <Murray.Jensen@csiro.au>
-Active powerpc mpc8260 - - cpu86 CPU86 - Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8260 - - cpu86 CPU86_ROMBOOT CPU86:BOOT_ROM Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8260 - - cpu87 CPU87 - -
-Active powerpc mpc8260 - - cpu87 CPU87_ROMBOOT CPU87:BOOT_ROM -
-Active powerpc mpc8260 - - ep82xxm ep82xxm - -
-Active powerpc mpc8260 - - gw8260 gw8260 - Oliver Brown <obrown@adventnetworks.com>
-Active powerpc mpc8260 - - hymod hymod - Murray Jensen <Murray.Jensen@csiro.au>
-Active powerpc mpc8260 - - iphase4539 IPHASE4539 - Wolfgang Grandegger <wg@denx.de>
-Active powerpc mpc8260 - - muas3001 muas3001 - Heiko Schocher <hs@denx.de>
-Active powerpc mpc8260 - - muas3001 muas3001_dev muas3001:MUAS_DEV_BOARD Heiko Schocher <hs@denx.de>
-Active powerpc mpc8260 - - pm826 PM825 PM826:PCI,SYS_TEXT_BASE=0xFF000000 Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8260 - - pm826 PM825_BIGFLASH PM826:PCI,FLASH_32MB,SYS_TEXT_BASE=0x40000000 Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8260 - - pm826 PM825_ROMBOOT PM826:PCI,BOOT_ROM,SYS_TEXT_BASE=0xFF800000 Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8260 - - pm826 PM825_ROMBOOT_BIGFLASH PM826:PCI,BOOT_ROM,FLASH_32MB,SYS_TEXT_BASE=0xFF800000 Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8260 - - pm826 PM826 PM826:SYS_TEXT_BASE=0xFF000000 Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8260 - - pm826 PM826_BIGFLASH PM826:FLASH_32MB,SYS_TEXT_BASE=0x40000000 Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8260 - - pm826 PM826_ROMBOOT PM826:BOOT_ROM,SYS_TEXT_BASE=0xFF800000 Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8260 - - pm826 PM826_ROMBOOT_BIGFLASH PM826:BOOT_ROM,FLASH_32MB,SYS_TEXT_BASE=0xFF800000 Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8260 - - pm828 PM828 - -
-Active powerpc mpc8260 - - pm828 PM828_PCI PM828:PCI -
-Active powerpc mpc8260 - - pm828 PM828_ROMBOOT PM828:BOOT_ROM,SYS_TEXT_BASE=0xFF800000 -
-Active powerpc mpc8260 - - pm828 PM828_ROMBOOT_PCI PM828:PCI,BOOT_ROM,SYS_TEXT_BASE=0xFF800000 -
-Active powerpc mpc8260 - freescale mpc8266ads MPC8266ADS - Rune Torgersen <runet@innovsys.com>
-Active powerpc mpc8260 - funkwerk vovpn-gw VoVPN-GW_66MHz VoVPN-GW:CLKIN_66MHz -
-Active powerpc mpc8260 - ids ids8247 IDS8247 - Heiko Schocher <hs@denx.de>
-Active powerpc mpc8260 - keymile km82xx mgcoge km82xx:MGCOGE Holger Brunck <holger.brunck@keymile.com>
-Active powerpc mpc8260 - keymile km82xx mgcoge3ne km82xx:MGCOGE3NE Holger Brunck <holger.brunck@keymile.com>
-Active powerpc mpc8260 - tqc tqm8260 TQM8255_AA TQM8260:MPC8255,300MHz Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8260 - tqc tqm8260 TQM8260_AA TQM8260:MPC8260,200MHz Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8260 - tqc tqm8260 TQM8260_AB TQM8260:MPC8260,200MHz,L2_CACHE,BUSMODE_60x Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8260 - tqc tqm8260 TQM8260_AC TQM8260:MPC8260,200MHz,L2_CACHE,BUSMODE_60x Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8260 - tqc tqm8260 TQM8260_AD TQM8260:MPC8260,300MHz,BUSMODE_60x Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8260 - tqc tqm8260 TQM8260_AE TQM8260:MPC8260,266MHz Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8260 - tqc tqm8260 TQM8260_AF TQM8260:MPC8260,300MHz,BUSMODE_60x Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8260 - tqc tqm8260 TQM8260_AG TQM8260:MPC8260,300MHz Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8260 - tqc tqm8260 TQM8260_AH TQM8260:MPC8260,300MHz,L2_CACHE,BUSMODE_60x Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8260 - tqc tqm8260 TQM8260_AI TQM8260:MPC8260,300MHz,BUSMODE_60x Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8260 - tqc tqm8260 TQM8265_AA TQM8260:MPC8265,300MHz,BUSMODE_60x Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8260 - tqc tqm8272 TQM8272 - -
-Active powerpc mpc83xx - - mpc8308_p1m mpc8308_p1m - Ilya Yanok <yanok@emcraft.com>
-Active powerpc mpc83xx - - sbc8349 sbc8349 - Paul Gortmaker <paul.gortmaker@windriver.com>
-Active powerpc mpc83xx - - sbc8349 sbc8349_PCI_33 sbc8349:PCI,PCI_33M Paul Gortmaker <paul.gortmaker@windriver.com>
-Active powerpc mpc83xx - - sbc8349 sbc8349_PCI_66 sbc8349:PCI,PCI_66M Paul Gortmaker <paul.gortmaker@windriver.com>
-Active powerpc mpc83xx - - ve8313 ve8313 - Heiko Schocher <hs@denx.de>
-Active powerpc mpc83xx - esd vme8349 caddy2 vme8349:CADDY2 Reinhard Arlt <reinhard.arlt@esd-electronics.com>
-Active powerpc mpc83xx - esd vme8349 vme8349 - Reinhard Arlt <reinhard.arlt@esd-electronics.com>
-Active powerpc mpc83xx - freescale mpc8308rdb MPC8308RDB - Ilya Yanok <yanok@emcraft.com>
-Active powerpc mpc83xx - freescale mpc8313erdb MPC8313ERDB_33 MPC8313ERDB:SYS_33MHZ -
-Active powerpc mpc83xx - freescale mpc8313erdb MPC8313ERDB_66 MPC8313ERDB:SYS_66MHZ -
-Active powerpc mpc83xx - freescale mpc8313erdb MPC8313ERDB_NAND_33 MPC8313ERDB:SYS_33MHZ,NAND -
-Active powerpc mpc83xx - freescale mpc8313erdb MPC8313ERDB_NAND_66 MPC8313ERDB:SYS_66MHZ,NAND -
-Active powerpc mpc83xx - freescale mpc8315erdb MPC8315ERDB - Dave Liu <daveliu@freescale.com>
-Active powerpc mpc83xx - freescale mpc8323erdb MPC8323ERDB - Michael Barkowski <michael.barkowski@freescale.com>
-Active powerpc mpc83xx - freescale mpc832xemds MPC832XEMDS - Dave Liu <daveliu@freescale.com>
-Active powerpc mpc83xx - freescale mpc832xemds MPC832XEMDS_ATM MPC832XEMDS:PQ_MDS_PIB=1,PQ_MDS_PIB_ATM=1 Dave Liu <daveliu@freescale.com>
-Active powerpc mpc83xx - freescale mpc832xemds MPC832XEMDS_HOST_33 MPC832XEMDS:PCI,PCI_33M,PQ_MDS_PIB=1 Dave Liu <daveliu@freescale.com>
-Active powerpc mpc83xx - freescale mpc832xemds MPC832XEMDS_HOST_66 MPC832XEMDS:PCI,PCI_66M,PQ_MDS_PIB=1 Dave Liu <daveliu@freescale.com>
-Active powerpc mpc83xx - freescale mpc832xemds MPC832XEMDS_SLAVE MPC832XEMDS:PCI,PCISLAVE Dave Liu <daveliu@freescale.com>
-Active powerpc mpc83xx - freescale mpc8349emds MPC8349EMDS - Kim Phillips <kim.phillips@freescale.com>
-Active powerpc mpc83xx - freescale mpc8349itx MPC8349ITX MPC8349ITX:MPC8349ITX -
-Active powerpc mpc83xx - freescale mpc8349itx MPC8349ITX_LOWBOOT MPC8349ITX:MPC8349ITX,SYS_TEXT_BASE=0xFE000000 -
-Active powerpc mpc83xx - freescale mpc8349itx MPC8349ITXGP MPC8349ITX:MPC8349ITXGP,SYS_TEXT_BASE=0xFE000000 -
-Active powerpc mpc83xx - freescale mpc8360emds MPC8360EMDS_33 MPC8360EMDS:CLKIN_33MHZ Dave Liu <daveliu@freescale.com>
-Active powerpc mpc83xx - freescale mpc8360emds MPC8360EMDS_33_ATM MPC8360EMDS:CLKIN_33MHZ,PQ_MDS_PIB=1,PQ_MDS_PIB_ATM=1 Dave Liu <daveliu@freescale.com>
-Active powerpc mpc83xx - freescale mpc8360emds MPC8360EMDS_33_HOST_33 MPC8360EMDS:CLKIN_33MHZ,PCI,PCI_33M,PQ_MDS_PIB=1 Dave Liu <daveliu@freescale.com>
-Active powerpc mpc83xx - freescale mpc8360emds MPC8360EMDS_33_HOST_66 MPC8360EMDS:CLKIN_33MHZ,PCI,PCI_66M,PQ_MDS_PIB=1 Dave Liu <daveliu@freescale.com>
-Active powerpc mpc83xx - freescale mpc8360emds MPC8360EMDS_33_SLAVE MPC8360EMDS:CLKIN_33MHZ,PCI,PCISLAVE Dave Liu <daveliu@freescale.com>
-Active powerpc mpc83xx - freescale mpc8360emds MPC8360EMDS_66 MPC8360EMDS:CLKIN_66MHZ Dave Liu <daveliu@freescale.com>
-Active powerpc mpc83xx - freescale mpc8360emds MPC8360EMDS_66_ATM MPC8360EMDS:CLKIN_66MHZ,PQ_MDS_PIB=1,PQ_MDS_PIB_ATM=1 Dave Liu <daveliu@freescale.com>
-Active powerpc mpc83xx - freescale mpc8360emds MPC8360EMDS_66_HOST_33 MPC8360EMDS:CLKIN_66MHZ,PCI,PCI_33M,PQ_MDS_PIB=1 Dave Liu <daveliu@freescale.com>
-Active powerpc mpc83xx - freescale mpc8360emds MPC8360EMDS_66_HOST_66 MPC8360EMDS:CLKIN_66MHZ,PCI,PCI_66M,PQ_MDS_PIB=1 Dave Liu <daveliu@freescale.com>
-Active powerpc mpc83xx - freescale mpc8360emds MPC8360EMDS_66_SLAVE MPC8360EMDS:CLKIN_66MHZ,PCI,PCISLAVE Dave Liu <daveliu@freescale.com>
-Active powerpc mpc83xx - freescale mpc837xemds MPC837XEMDS - Dave Liu <daveliu@freescale.com>
-Active powerpc mpc83xx - freescale mpc837xemds MPC837XEMDS_HOST MPC837XEMDS:PCI Dave Liu <daveliu@freescale.com>
-Active powerpc mpc83xx - ids ids8313 ids8313 ids8313:SYS_TEXT_BASE=0xFFF00000 Heiko Schocher <hs@denx.de>
-Active powerpc mpc83xx - keymile km83xx kmcoge5ne km8360:KMCOGE5NE Holger Brunck <holger.brunck@keymile.com>
-Active powerpc mpc83xx - keymile km83xx kmeter1 km8360:KMETER1 Holger Brunck <holger.brunck@keymile.com>
-Active powerpc mpc83xx - keymile km83xx kmopti2 tuxx1:KMOPTI2 Holger Brunck <holger.brunck@keymile.com>
-Active powerpc mpc83xx - keymile km83xx kmsupx5 tuxx1:KMSUPX5 Heiko Schocher <hs@denx.de>
-Active powerpc mpc83xx - keymile km83xx kmvect1 suvd3:KMVECT1 Holger Brunck <holger.brunck@keymile.com>
-Active powerpc mpc83xx - keymile km83xx suvd3 suvd3:SUVD3 Holger Brunck <holger.brunck@keymile.com>
-Active powerpc mpc83xx - keymile km83xx tuge1 tuxx1:TUGE1 Holger Brunck <holger.brunck@keymile.com>
-Active powerpc mpc83xx - keymile km83xx tuxx1 tuxx1:TUXX1 Holger Brunck <holger.brunck@keymile.com>
-Active powerpc mpc83xx - tqc tqm834x TQM834x - -
-Active powerpc mpc85xx - - sbc8548 sbc8548 - Paul Gortmaker <paul.gortmaker@windriver.com>
-Active powerpc mpc85xx - - sbc8548 sbc8548_PCI_33 sbc8548:PCI,33 Paul Gortmaker <paul.gortmaker@windriver.com>
-Active powerpc mpc85xx - - sbc8548 sbc8548_PCI_33_PCIE sbc8548:PCI,33,PCIE Paul Gortmaker <paul.gortmaker@windriver.com>
-Active powerpc mpc85xx - - sbc8548 sbc8548_PCI_66 sbc8548:PCI,66 Paul Gortmaker <paul.gortmaker@windriver.com>
-Active powerpc mpc85xx - - sbc8548 sbc8548_PCI_66_PCIE sbc8548:PCI,66,PCIE Paul Gortmaker <paul.gortmaker@windriver.com>
-Active powerpc mpc85xx - - socrates socrates - -
-Active powerpc mpc85xx - freescale b4860qds B4420QDS B4860QDS:PPC_B4420 -
-Active powerpc mpc85xx - freescale b4860qds B4420QDS_NAND B4860QDS:PPC_B4420,RAMBOOT_PBL,SPL_FSL_PBL,NAND -
-Active powerpc mpc85xx - freescale b4860qds B4420QDS_SPIFLASH B4860QDS:PPC_B4420,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000 -
-Active powerpc mpc85xx - freescale b4860qds B4860QDS B4860QDS:PPC_B4860 -
-Active powerpc mpc85xx - freescale b4860qds B4860QDS_NAND B4860QDS:PPC_B4860,RAMBOOT_PBL,SPL_FSL_PBL,NAND -
-Active powerpc mpc85xx - freescale b4860qds B4860QDS_SECURE_BOOT B4860QDS:PPC_B4860,SECURE_BOOT Aneesh Bansal <aneesh.bansal@freescale.com>
-Active powerpc mpc85xx - freescale b4860qds B4860QDS_SPIFLASH B4860QDS:PPC_B4860,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000 -
-Active powerpc mpc85xx - freescale b4860qds B4860QDS_SRIO_PCIE_BOOT B4860QDS:PPC_B4860,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000 -
-Active powerpc mpc85xx - freescale bsc9131rdb BSC9131RDB_NAND BSC9131RDB:BSC9131RDB,NAND Poonam Aggrwal <poonam.aggrwal@freescale.com>
-Active powerpc mpc85xx - freescale bsc9131rdb BSC9131RDB_NAND_SYSCLK100 BSC9131RDB:BSC9131RDB,NAND,SYS_CLK_100 Poonam Aggrwal <poonam.aggrwal@freescale.com>
-Active powerpc mpc85xx - freescale bsc9131rdb BSC9131RDB_SPIFLASH BSC9131RDB:BSC9131RDB,SPIFLASH Poonam Aggrwal <poonam.aggrwal@freescale.com>
-Active powerpc mpc85xx - freescale bsc9131rdb BSC9131RDB_SPIFLASH_SYSCLK100 BSC9131RDB:BSC9131RDB,SPIFLASH,SYS_CLK_100 Poonam Aggrwal <poonam.aggrwal@freescale.com>
-Active powerpc mpc85xx - freescale bsc9132qds BSC9132QDS_NAND_DDRCLK100 BSC9132QDS:BSC9132QDS,NAND,SYS_CLK_100_DDR_100 Naveen Burmi <NaveenBurmi@freescale.com>
-Active powerpc mpc85xx - freescale bsc9132qds BSC9132QDS_NAND_DDRCLK100_SECURE BSC9132QDS:BSC9132QDS,NAND_SECBOOT,SYS_CLK_100_DDR_100,SECURE_BOOT Aneesh Bansal <aneesh.bansal@freescale.com>
-Active powerpc mpc85xx - freescale bsc9132qds BSC9132QDS_NAND_DDRCLK133 BSC9132QDS:BSC9132QDS,NAND,SYS_CLK_100_DDR_133 Naveen Burmi <NaveenBurmi@freescale.com>
-Active powerpc mpc85xx - freescale bsc9132qds BSC9132QDS_NAND_DDRCLK133_SECURE BSC9132QDS:BSC9132QDS,NAND_SECBOOT,SYS_CLK_100_DDR_133,SECURE_BOOT Aneesh Bansal <aneesh.bansal@freescale.com>
-Active powerpc mpc85xx - freescale bsc9132qds BSC9132QDS_NOR_DDRCLK100 BSC9132QDS:BSC9132QDS,SYS_CLK_100_DDR_100 Naveen Burmi <NaveenBurmi@freescale.com>
-Active powerpc mpc85xx - freescale bsc9132qds BSC9132QDS_NOR_DDRCLK100_SECURE BSC9132QDS:BSC9132QDS,SYS_CLK_100_DDR_100,SECURE_BOOT Aneesh Bansal <aneesh.bansal@freescale.com>
-Active powerpc mpc85xx - freescale bsc9132qds BSC9132QDS_NOR_DDRCLK133 BSC9132QDS:BSC9132QDS,SYS_CLK_100_DDR_133 Naveen Burmi <NaveenBurmi@freescale.com>
-Active powerpc mpc85xx - freescale bsc9132qds BSC9132QDS_NOR_DDRCLK133_SECURE BSC9132QDS:BSC9132QDS,SYS_CLK_100_DDR_133,SECURE_BOOT Aneesh Bansal <aneesh.bansal@freescale.com>
-Active powerpc mpc85xx - freescale bsc9132qds BSC9132QDS_SDCARD_DDRCLK100 BSC9132QDS:BSC9132QDS,SDCARD,SYS_CLK_100_DDR_100 Naveen Burmi <NaveenBurmi@freescale.com>
-Active powerpc mpc85xx - freescale bsc9132qds BSC9132QDS_SDCARD_DDRCLK100_SECURE BSC9132QDS:BSC9132QDS,SDCARD,SYS_CLK_100_DDR_100,SECURE_BOOT Aneesh Bansal <aneesh.bansal@freescale.com>
-Active powerpc mpc85xx - freescale bsc9132qds BSC9132QDS_SDCARD_DDRCLK133 BSC9132QDS:BSC9132QDS,SDCARD,SYS_CLK_100_DDR_133 Naveen Burmi <NaveenBurmi@freescale.com>
-Active powerpc mpc85xx - freescale bsc9132qds BSC9132QDS_SDCARD_DDRCLK133_SECURE BSC9132QDS:BSC9132QDS,SDCARD,SYS_CLK_100_DDR_133,SECURE_BOOT Aneesh Bansal <aneesh.bansal@freescale.com>
-Active powerpc mpc85xx - freescale bsc9132qds BSC9132QDS_SPIFLASH_DDRCLK100 BSC9132QDS:BSC9132QDS,SPIFLASH,SYS_CLK_100_DDR_100 Naveen Burmi <NaveenBurmi@freescale.com>
-Active powerpc mpc85xx - freescale bsc9132qds BSC9132QDS_SPIFLASH_DDRCLK100_SECURE BSC9132QDS:BSC9132QDS,SPIFLASH,SYS_CLK_100_DDR_100,SECURE_BOOT Aneesh Bansal <aneesh.bansal@freescale.com>
-Active powerpc mpc85xx - freescale bsc9132qds BSC9132QDS_SPIFLASH_DDRCLK133 BSC9132QDS:BSC9132QDS,SPIFLASH,SYS_CLK_100_DDR_133 Naveen Burmi <NaveenBurmi@freescale.com>
-Active powerpc mpc85xx - freescale bsc9132qds BSC9132QDS_SPIFLASH_DDRCLK133_SECURE BSC9132QDS:BSC9132QDS,SPIFLASH,SYS_CLK_100_DDR_133,SECURE_BOOT Aneesh Bansal <aneesh.bansal@freescale.com>
-Active powerpc mpc85xx - freescale c29xpcie C29XPCIE C29XPCIE:C29XPCIE,36BIT Po Liu <po.liu@freescale.com>
-Active powerpc mpc85xx - freescale c29xpcie C29XPCIE_NAND C29XPCIE:C29XPCIE,36BIT,NAND Po Liu <po.liu@freescale.com>
-Active powerpc mpc85xx - freescale c29xpcie C29XPCIE_SPIFLASH C29XPCIE:C29XPCIE,36BIT,SPIFLASH Po Liu <po.liu@freescale.com>
-Active powerpc mpc85xx - freescale corenet_ds P3041DS - -
-Active powerpc mpc85xx - freescale corenet_ds P3041DS_NAND P3041DS:RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000 -
-Active powerpc mpc85xx - freescale corenet_ds P3041DS_SDCARD P3041DS:RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000 -
-Active powerpc mpc85xx - freescale corenet_ds P3041DS_SECURE_BOOT P3041DS:SECURE_BOOT -
-Active powerpc mpc85xx - freescale corenet_ds P3041DS_SPIFLASH P3041DS:RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000 -
-Active powerpc mpc85xx - freescale corenet_ds P3041DS_SRIO_PCIE_BOOT P3041DS:SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000 -
-Active powerpc mpc85xx - freescale corenet_ds P4080DS - -
-Active powerpc mpc85xx - freescale corenet_ds P4080DS_SDCARD P4080DS:RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000 -
-Active powerpc mpc85xx - freescale corenet_ds P4080DS_SECURE_BOOT P4080DS:SECURE_BOOT -
-Active powerpc mpc85xx - freescale corenet_ds P4080DS_SPIFLASH P4080DS:RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000 -
-Active powerpc mpc85xx - freescale corenet_ds P4080DS_SRIO_PCIE_BOOT P4080DS:SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000 -
-Active powerpc mpc85xx - freescale corenet_ds P5020DS - -
-Active powerpc mpc85xx - freescale corenet_ds P5020DS_NAND P5020DS:RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000 -
-Active powerpc mpc85xx - freescale corenet_ds P5020DS_SDCARD P5020DS:RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000 -
-Active powerpc mpc85xx - freescale corenet_ds P5020DS_SECURE_BOOT P5020DS:SECURE_BOOT -
-Active powerpc mpc85xx - freescale corenet_ds P5020DS_SPIFLASH P5020DS:RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000 -
-Active powerpc mpc85xx - freescale corenet_ds P5020DS_SRIO_PCIE_BOOT P5020DS:SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000 -
-Active powerpc mpc85xx - freescale corenet_ds P5040DS - -
-Active powerpc mpc85xx - freescale corenet_ds P5040DS_NAND P5040DS:RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000 -
-Active powerpc mpc85xx - freescale corenet_ds P5040DS_SDCARD P5040DS:RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000 -
-Active powerpc mpc85xx - freescale corenet_ds P5040DS_SPIFLASH P5040DS:RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000 -
-Active powerpc mpc85xx - freescale mpc8536ds MPC8536DS - -
-Active powerpc mpc85xx - freescale mpc8536ds MPC8536DS_36BIT MPC8536DS:36BIT -
-Active powerpc mpc85xx - freescale mpc8536ds MPC8536DS_SDCARD MPC8536DS:SDCARD -
-Active powerpc mpc85xx - freescale mpc8536ds MPC8536DS_SPIFLASH MPC8536DS:SPIFLASH -
-Active powerpc mpc85xx - freescale mpc8544ds MPC8544DS - -
-Active powerpc mpc85xx - freescale mpc8548cds MPC8548CDS - -
-Active powerpc mpc85xx - freescale mpc8548cds MPC8548CDS_36BIT MPC8548CDS:36BIT -
-Active powerpc mpc85xx - freescale mpc8548cds MPC8548CDS_legacy MPC8548CDS:LEGACY -
-Active powerpc mpc85xx - freescale mpc8568mds MPC8568MDS - -
-Active powerpc mpc85xx - freescale mpc8569mds MPC8569MDS - -
-Active powerpc mpc85xx - freescale mpc8569mds MPC8569MDS_ATM MPC8569MDS:ATM -
-Active powerpc mpc85xx - freescale mpc8572ds MPC8572DS - York Sun <yorksun@freescale.com>
-Active powerpc mpc85xx - freescale mpc8572ds MPC8572DS_36BIT MPC8572DS:36BIT York Sun <yorksun@freescale.com>
-Active powerpc mpc85xx - freescale p1010rdb P1010RDB-PA_36BIT_NAND P1010RDB:P1010RDB_PA,36BIT,NAND -
-Active powerpc mpc85xx - freescale p1010rdb P1010RDB-PA_36BIT_NAND_SECBOOT P1010RDB:P1010RDB_PA,36BIT,NAND_SECBOOT,SECURE_BOOT -
-Active powerpc mpc85xx - freescale p1010rdb P1010RDB-PA_36BIT_NOR P1010RDB:P1010RDB_PA,36BIT -
-Active powerpc mpc85xx - freescale p1010rdb P1010RDB-PA_36BIT_NOR_SECBOOT P1010RDB:P1010RDB_PA,36BIT,SECURE_BOOT -
-Active powerpc mpc85xx - freescale p1010rdb P1010RDB-PA_36BIT_SDCARD P1010RDB:P1010RDB_PA,36BIT,SDCARD -
-Active powerpc mpc85xx - freescale p1010rdb P1010RDB-PA_36BIT_SPIFLASH P1010RDB:P1010RDB_PA,36BIT,SPIFLASH -
-Active powerpc mpc85xx - freescale p1010rdb P1010RDB-PA_36BIT_SPIFLASH_SECBOOT P1010RDB:P1010RDB_PA,36BIT,SPIFLASH,SECURE_BOOT -
-Active powerpc mpc85xx - freescale p1010rdb P1010RDB-PA_NAND P1010RDB:P1010RDB_PA,NAND -
-Active powerpc mpc85xx - freescale p1010rdb P1010RDB-PA_NAND_SECBOOT P1010RDB:P1010RDB_PA,NAND_SECBOOT,SECURE_BOOT -
-Active powerpc mpc85xx - freescale p1010rdb P1010RDB-PA_NOR P1010RDB:P1010RDB_PA -
-Active powerpc mpc85xx - freescale p1010rdb P1010RDB-PA_NOR_SECBOOT P1010RDB:P1010RDB_PA,SECURE_BOOT -
-Active powerpc mpc85xx - freescale p1010rdb P1010RDB-PA_SDCARD P1010RDB:P1010RDB_PA,SDCARD -
-Active powerpc mpc85xx - freescale p1010rdb P1010RDB-PA_SPIFLASH P1010RDB:P1010RDB_PA,SPIFLASH -
-Active powerpc mpc85xx - freescale p1010rdb P1010RDB-PA_SPIFLASH_SECBOOT P1010RDB:P1010RDB_PA,SPIFLASH,SECURE_BOOT -
-Active powerpc mpc85xx - freescale p1010rdb P1010RDB-PB_36BIT_NAND P1010RDB:P1010RDB_PB,36BIT,NAND -
-Active powerpc mpc85xx - freescale p1010rdb P1010RDB-PB_36BIT_NAND_SECBOOT P1010RDB:P1010RDB_PB,36BIT,NAND_SECBOOT,SECURE_BOOT -
-Active powerpc mpc85xx - freescale p1010rdb P1010RDB-PB_36BIT_NOR P1010RDB:P1010RDB_PB,36BIT -
-Active powerpc mpc85xx - freescale p1010rdb P1010RDB-PB_36BIT_NOR_SECBOOT P1010RDB:P1010RDB_PB,36BIT,SECURE_BOOT -
-Active powerpc mpc85xx - freescale p1010rdb P1010RDB-PB_36BIT_SDCARD P1010RDB:P1010RDB_PB,36BIT,SDCARD -
-Active powerpc mpc85xx - freescale p1010rdb P1010RDB-PB_36BIT_SPIFLASH P1010RDB:P1010RDB_PB,36BIT,SPIFLASH -
-Active powerpc mpc85xx - freescale p1010rdb P1010RDB-PB_36BIT_SPIFLASH_SECBOOT P1010RDB:P1010RDB_PB,36BIT,SPIFLASH,SECURE_BOOT -
-Active powerpc mpc85xx - freescale p1010rdb P1010RDB-PB_NAND P1010RDB:P1010RDB_PB,NAND -
-Active powerpc mpc85xx - freescale p1010rdb P1010RDB-PB_NAND_SECBOOT P1010RDB:P1010RDB_PB,NAND_SECBOOT,SECURE_BOOT -
-Active powerpc mpc85xx - freescale p1010rdb P1010RDB-PB_NOR P1010RDB:P1010RDB_PB -
-Active powerpc mpc85xx - freescale p1010rdb P1010RDB-PB_NOR_SECBOOT P1010RDB:P1010RDB_PB,SECURE_BOOT -
-Active powerpc mpc85xx - freescale p1010rdb P1010RDB-PB_SDCARD P1010RDB:P1010RDB_PB,SDCARD -
-Active powerpc mpc85xx - freescale p1010rdb P1010RDB-PB_SPIFLASH P1010RDB:P1010RDB_PB,SPIFLASH -
-Active powerpc mpc85xx - freescale p1010rdb P1010RDB-PB_SPIFLASH_SECBOOT P1010RDB:P1010RDB_PB,SPIFLASH,SECURE_BOOT -
-Active powerpc mpc85xx - freescale p1022ds P1022DS - Timur Tabi <timur@freescale.com>
-Active powerpc mpc85xx - freescale p1022ds P1022DS_36BIT P1022DS:36BIT Timur Tabi <timur@freescale.com>
-Active powerpc mpc85xx - freescale p1022ds P1022DS_36BIT_NAND P1022DS:36BIT,NAND Timur Tabi <timur@freescale.com>
-Active powerpc mpc85xx - freescale p1022ds P1022DS_36BIT_SDCARD P1022DS:36BIT,SDCARD Timur Tabi <timur@freescale.com>
-Active powerpc mpc85xx - freescale p1022ds P1022DS_36BIT_SPIFLASH P1022DS:36BIT,SPIFLASH Timur Tabi <timur@freescale.com>
-Active powerpc mpc85xx - freescale p1022ds P1022DS_NAND P1022DS:NAND Timur Tabi <timur@freescale.com>
-Active powerpc mpc85xx - freescale p1022ds P1022DS_SDCARD P1022DS:SDCARD Timur Tabi <timur@freescale.com>
-Active powerpc mpc85xx - freescale p1022ds P1022DS_SPIFLASH P1022DS:SPIFLASH Timur Tabi <timur@freescale.com>
-Active powerpc mpc85xx - freescale p1023rdb P1023RDB - -
-Active powerpc mpc85xx - freescale p1_p2_rdb P1011RDB P1_P2_RDB:P1011RDB -
-Active powerpc mpc85xx - freescale p1_p2_rdb P1011RDB_36BIT P1_P2_RDB:P1011RDB,36BIT -
-Active powerpc mpc85xx - freescale p1_p2_rdb P1011RDB_36BIT_SDCARD P1_P2_RDB:P1011RDB,36BIT,SDCARD -
-Active powerpc mpc85xx - freescale p1_p2_rdb P1011RDB_36BIT_SPIFLASH P1_P2_RDB:P1011RDB,36BIT,SPIFLASH -
-Active powerpc mpc85xx - freescale p1_p2_rdb P1011RDB_NAND P1_P2_RDB:P1011RDB,NAND -
-Active powerpc mpc85xx - freescale p1_p2_rdb P1011RDB_SDCARD P1_P2_RDB:P1011RDB,SDCARD -
-Active powerpc mpc85xx - freescale p1_p2_rdb P1011RDB_SPIFLASH P1_P2_RDB:P1011RDB,SPIFLASH -
-Active powerpc mpc85xx - freescale p1_p2_rdb P1020RDB P1_P2_RDB:P1020RDB -
-Active powerpc mpc85xx - freescale p1_p2_rdb P1020RDB_36BIT P1_P2_RDB:P1020RDB,36BIT -
-Active powerpc mpc85xx - freescale p1_p2_rdb P1020RDB_36BIT_SDCARD P1_P2_RDB:P1020RDB,36BIT,SDCARD -
-Active powerpc mpc85xx - freescale p1_p2_rdb P1020RDB_36BIT_SPIFLASH P1_P2_RDB:P1020RDB,36BIT,SPIFLASH -
-Active powerpc mpc85xx - freescale p1_p2_rdb P1020RDB_NAND P1_P2_RDB:P1020RDB,NAND -
-Active powerpc mpc85xx - freescale p1_p2_rdb P1020RDB_SDCARD P1_P2_RDB:P1020RDB,SDCARD -
-Active powerpc mpc85xx - freescale p1_p2_rdb P1020RDB_SPIFLASH P1_P2_RDB:P1020RDB,SPIFLASH -
-Active powerpc mpc85xx - freescale p1_p2_rdb P2010RDB P1_P2_RDB:P2010RDB -
-Active powerpc mpc85xx - freescale p1_p2_rdb P2010RDB_36BIT P1_P2_RDB:P2010RDB,36BIT -
-Active powerpc mpc85xx - freescale p1_p2_rdb P2010RDB_36BIT_SDCARD P1_P2_RDB:P2010RDB,36BIT,SDCARD -
-Active powerpc mpc85xx - freescale p1_p2_rdb P2010RDB_36BIT_SPIFLASH P1_P2_RDB:P2010RDB,36BIT,SPIFLASH -
-Active powerpc mpc85xx - freescale p1_p2_rdb P2010RDB_NAND P1_P2_RDB:P2010RDB,NAND -
-Active powerpc mpc85xx - freescale p1_p2_rdb P2010RDB_SDCARD P1_P2_RDB:P2010RDB,SDCARD -
-Active powerpc mpc85xx - freescale p1_p2_rdb P2010RDB_SPIFLASH P1_P2_RDB:P2010RDB,SPIFLASH -
-Active powerpc mpc85xx - freescale p1_p2_rdb P2020RDB P1_P2_RDB:P2020RDB Poonam Aggrwal <poonam.aggrwal@freescale.com>
-Active powerpc mpc85xx - freescale p1_p2_rdb P2020RDB_36BIT P1_P2_RDB:P2020RDB,36BIT -
-Active powerpc mpc85xx - freescale p1_p2_rdb P2020RDB_36BIT_SDCARD P1_P2_RDB:P2020RDB,36BIT,SDCARD -
-Active powerpc mpc85xx - freescale p1_p2_rdb P2020RDB_36BIT_SPIFLASH P1_P2_RDB:P2020RDB,36BIT,SPIFLASH -
-Active powerpc mpc85xx - freescale p1_p2_rdb P2020RDB_NAND P1_P2_RDB:P2020RDB,NAND -
-Active powerpc mpc85xx - freescale p1_p2_rdb P2020RDB_SDCARD P1_P2_RDB:P2020RDB,SDCARD -
-Active powerpc mpc85xx - freescale p1_p2_rdb P2020RDB_SPIFLASH P1_P2_RDB:P2020RDB,SPIFLASH -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1020MBG-PC p1_p2_rdb_pc:P1020MBG -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1020MBG-PC_36BIT p1_p2_rdb_pc:P1020MBG,36BIT -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1020MBG-PC_36BIT_SDCARD p1_p2_rdb_pc:P1020MBG,SDCARD,36BIT -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1020MBG-PC_SDCARD p1_p2_rdb_pc:P1020MBG,SDCARD -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1020RDB-PC p1_p2_rdb_pc:P1020RDB_PC -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1020RDB-PC_36BIT p1_p2_rdb_pc:P1020RDB_PC,36BIT -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1020RDB-PC_36BIT_NAND p1_p2_rdb_pc:P1020RDB_PC,36BIT,NAND -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1020RDB-PC_36BIT_SDCARD p1_p2_rdb_pc:P1020RDB_PC,36BIT,SDCARD -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1020RDB-PC_36BIT_SPIFLASH p1_p2_rdb_pc:P1020RDB_PC,36BIT,SPIFLASH -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1020RDB-PC_NAND p1_p2_rdb_pc:P1020RDB_PC,NAND -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1020RDB-PC_SDCARD p1_p2_rdb_pc:P1020RDB_PC,SDCARD -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1020RDB-PC_SPIFLASH p1_p2_rdb_pc:P1020RDB_PC,SPIFLASH -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1020RDB-PD p1_p2_rdb_pc:P1020RDB_PD -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1020RDB-PD_NAND p1_p2_rdb_pc:P1020RDB_PD,NAND -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1020RDB-PD_SDCARD p1_p2_rdb_pc:P1020RDB_PD,SDCARD -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1020RDB-PD_SPIFLASH p1_p2_rdb_pc:P1020RDB_PD,SPIFLASH -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1020UTM-PC p1_p2_rdb_pc:P1020UTM -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1020UTM-PC_36BIT p1_p2_rdb_pc:P1020UTM,36BIT -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1020UTM-PC_36BIT_SDCARD p1_p2_rdb_pc:P1020UTM,36BIT,SDCARD -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1020UTM-PC_SDCARD p1_p2_rdb_pc:P1020UTM,SDCARD -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1021RDB-PC p1_p2_rdb_pc:P1021RDB -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1021RDB-PC_36BIT p1_p2_rdb_pc:P1021RDB,36BIT -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1021RDB-PC_36BIT_NAND p1_p2_rdb_pc:P1021RDB,36BIT,NAND -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1021RDB-PC_36BIT_SDCARD p1_p2_rdb_pc:P1021RDB,36BIT,SDCARD -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1021RDB-PC_36BIT_SPIFLASH p1_p2_rdb_pc:P1021RDB,36BIT,SPIFLASH -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1021RDB-PC_NAND p1_p2_rdb_pc:P1021RDB,NAND -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1021RDB-PC_SDCARD p1_p2_rdb_pc:P1021RDB,SDCARD -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1021RDB-PC_SPIFLASH p1_p2_rdb_pc:P1021RDB,SPIFLASH -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1024RDB p1_p2_rdb_pc:P1024RDB -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1024RDB_36BIT p1_p2_rdb_pc:P1024RDB,36BIT -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1024RDB_NAND p1_p2_rdb_pc:P1024RDB,NAND -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1024RDB_SDCARD p1_p2_rdb_pc:P1024RDB,SDCARD -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1024RDB_SPIFLASH p1_p2_rdb_pc:P1024RDB,SPIFLASH -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1025RDB p1_p2_rdb_pc:P1025RDB -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1025RDB_36BIT p1_p2_rdb_pc:P1025RDB,36BIT -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1025RDB_NAND p1_p2_rdb_pc:P1025RDB,NAND -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1025RDB_SDCARD p1_p2_rdb_pc:P1025RDB,SDCARD -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P1025RDB_SPIFLASH p1_p2_rdb_pc:P1025RDB,SPIFLASH -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P2020RDB-PC p1_p2_rdb_pc:P2020RDB -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P2020RDB-PC_36BIT p1_p2_rdb_pc:P2020RDB,36BIT -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P2020RDB-PC_36BIT_NAND p1_p2_rdb_pc:P2020RDB,36BIT,NAND -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P2020RDB-PC_36BIT_SDCARD p1_p2_rdb_pc:P2020RDB,36BIT,SDCARD -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P2020RDB-PC_36BIT_SPIFLASH p1_p2_rdb_pc:P2020RDB,36BIT,SPIFLASH -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P2020RDB-PC_NAND p1_p2_rdb_pc:P2020RDB,NAND -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P2020RDB-PC_SDCARD p1_p2_rdb_pc:P2020RDB,SDCARD -
-Active powerpc mpc85xx - freescale p1_p2_rdb_pc P2020RDB-PC_SPIFLASH p1_p2_rdb_pc:P2020RDB,SPIFLASH -
-Active powerpc mpc85xx - freescale p1_twr TWR-P1025 p1_twr:TWR_P1025 -
-Active powerpc mpc85xx - freescale p2020come P2020COME_SDCARD P2020COME:SDCARD Ira W. Snyder <iws@ovro.caltech.edu>
-Active powerpc mpc85xx - freescale p2020come P2020COME_SPIFLASH P2020COME:SPIFLASH Ira W. Snyder <iws@ovro.caltech.edu>
-Active powerpc mpc85xx - freescale p2020ds P2020DS - -
-Active powerpc mpc85xx - freescale p2020ds P2020DS_36BIT P2020DS:36BIT -
-Active powerpc mpc85xx - freescale p2020ds P2020DS_DDR2 P2020DS:DDR2 -
-Active powerpc mpc85xx - freescale p2020ds P2020DS_SDCARD P2020DS:SDCARD -
-Active powerpc mpc85xx - freescale p2020ds P2020DS_SPIFLASH P2020DS:SPIFLASH -
-Active powerpc mpc85xx - freescale p2041rdb P2041RDB - -
-Active powerpc mpc85xx - freescale p2041rdb P2041RDB_NAND P2041RDB:RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000 -
-Active powerpc mpc85xx - freescale p2041rdb P2041RDB_SDCARD P2041RDB:RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000 -
-Active powerpc mpc85xx - freescale p2041rdb P2041RDB_SECURE_BOOT P2041RDB:SECURE_BOOT -
-Active powerpc mpc85xx - freescale p2041rdb P2041RDB_SPIFLASH P2041RDB:RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000 -
-Active powerpc mpc85xx - freescale p2041rdb P2041RDB_SRIO_PCIE_BOOT P2041RDB:SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000 -
-Active powerpc mpc85xx - freescale qemu-ppce500 qemu-ppce500 - Alexander Graf <agraf@suse.de>
-Active powerpc mpc85xx - freescale t1040qds T1040QDS T1040QDS:PPC_T1040 Poonam Aggrwal <poonam.aggrwal@freescale.com>
-Active powerpc mpc85xx - freescale t1040qds T1040QDS_D4 T1040QDS:PPC_T1040,SYS_FSL_DDR4 Poonam Aggrwal <poonam.aggrwal@freescale.com>
-Active powerpc mpc85xx - freescale t1040qds T1040QDS_SECURE_BOOT T1040QDS:PPC_T1040,SECURE_BOOT Aneesh Bansal <aneesh.bansal@freescale.com>
-Active powerpc mpc85xx - freescale t104xrdb T1040RDB T104xRDB:PPC_T1040,T1040RDB Priyanka Jain <Priyanka.Jain@freescale.com>
-Active powerpc mpc85xx - freescale t104xrdb T1040RDB_NAND T104xRDB:PPC_T1040,T1040RDB,RAMBOOT_PBL,SPL_FSL_PBL,NAND Priyanka Jain <Priyanka.Jain@freescale.com>
-Active powerpc mpc85xx - freescale t104xrdb T1040RDB_SDCARD T104xRDB:PPC_T1040,T1040RDB,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD -
-Active powerpc mpc85xx - freescale t104xrdb T1040RDB_SECURE_BOOT T104xRDB:PPC_T1040,SECURE_BOOT,T1040RDB Aneesh Bansal <aneesh.bansal@freescale.com>
-Active powerpc mpc85xx - freescale t104xrdb T1040RDB_SPIFLASH T104xRDB:PPC_T1040,T1040RDB,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH Priyanka Jain <Priyanka.Jain@freescale.com>
-Active powerpc mpc85xx - freescale t104xrdb T1042RDB_PI T104xRDB:PPC_T1042,T1042RDB_PI Priyanka Jain <Priyanka.Jain@freescale.com>
-Active powerpc mpc85xx - freescale t104xrdb T1042RDB_PI_NAND T104xRDB:PPC_T1042,T1042RDB_PI,RAMBOOT_PBL,SPL_FSL_PBL,NAND Priyanka Jain <Priyanka.Jain@freescale.com>
-Active powerpc mpc85xx - freescale t104xrdb T1042RDB_PI_SDCARD T104xRDB:PPC_T1042,T1042RDB_PI,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD -
-Active powerpc mpc85xx - freescale t104xrdb T1042RDB_PI_SPIFLASH T104xRDB:PPC_T1042,T1042RDB_PI,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH Priyanka Jain <Priyanka.Jain@freescale.com>
-Active powerpc mpc85xx - freescale t208xqds T2080QDS T208xQDS:PPC_T2080 -
-Active powerpc mpc85xx - freescale t208xqds T2080QDS_NAND T208xQDS:PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,NAND -
-Active powerpc mpc85xx - freescale t208xqds T2080QDS_SDCARD T208xQDS:PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD -
-Active powerpc mpc85xx - freescale t208xqds T2080QDS_SECURE_BOOT T208xQDS:PPC_T2080,SECURE_BOOT Aneesh Bansal <aneesh.bansal@freescale.com>
-Active powerpc mpc85xx - freescale t208xqds T2080QDS_SPIFLASH T208xQDS:PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH -
-Active powerpc mpc85xx - freescale t208xqds T2080QDS_SRIO_PCIE_BOOT T208xQDS:PPC_T2080,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000 -
-Active powerpc mpc85xx - freescale t208xqds T2081QDS T208xQDS:PPC_T2081 -
-Active powerpc mpc85xx - freescale t208xqds T2081QDS_NAND T208xQDS:PPC_T2081,RAMBOOT_PBL,SPL_FSL_PBL,NAND -
-Active powerpc mpc85xx - freescale t208xqds T2081QDS_SDCARD T208xQDS:PPC_T2081,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD -
-Active powerpc mpc85xx - freescale t208xqds T2081QDS_SPIFLASH T208xQDS:PPC_T2081,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH -
-Active powerpc mpc85xx - freescale t208xqds T2081QDS_SRIO_PCIE_BOOT T208xQDS:PPC_T2081,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000 -
-Active powerpc mpc85xx - freescale t208xrdb T2080RDB T208xRDB:PPC_T2080 -
-Active powerpc mpc85xx - freescale t208xrdb T2080RDB_NAND T208xRDB:PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,NAND -
-Active powerpc mpc85xx - freescale t208xrdb T2080RDB_SDCARD T208xRDB:PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD -
-Active powerpc mpc85xx - freescale t208xrdb T2080RDB_SECURE_BOOT T208xRDB:PPC_T2080,SECURE_BOOT Aneesh Bansal <aneesh.bansal@freescale.com>
-Active powerpc mpc85xx - freescale t208xrdb T2080RDB_SPIFLASH T208xRDB:PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH -
-Active powerpc mpc85xx - freescale t208xrdb T2080RDB_SRIO_PCIE_BOOT T208xRDB:PPC_T2080,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000 -
-Active powerpc mpc85xx - freescale t4qds T4160QDS T4240QDS:PPC_T4160 -
-Active powerpc mpc85xx - freescale t4qds T4160QDS_NAND T4240QDS:PPC_T4160,RAMBOOT_PBL,SPL_FSL_PBL,NAND -
-Active powerpc mpc85xx - freescale t4qds T4160QDS_SDCARD T4240QDS:PPC_T4160,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD -
-Active powerpc mpc85xx - freescale t4qds T4160QDS_SECURE_BOOT T4240QDS:PPC_T4160,SECURE_BOOT Aneesh Bansal <aneesh.bansal@freescale.com>
-Active powerpc mpc85xx - freescale t4qds T4160QDS_SPIFLASH T4240QDS:PPC_T4160,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000 -
-Active powerpc mpc85xx - freescale t4qds T4240EMU T4240EMU:PPC_T4240 York Sun <yorksun@freescale.com>
-Active powerpc mpc85xx - freescale t4qds T4240QDS T4240QDS:PPC_T4240 -
-Active powerpc mpc85xx - freescale t4qds T4240QDS_NAND T4240QDS:PPC_T4240,RAMBOOT_PBL,SPL_FSL_PBL,NAND -
-Active powerpc mpc85xx - freescale t4qds T4240QDS_SDCARD T4240QDS:PPC_T4240,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD -
-Active powerpc mpc85xx - freescale t4qds T4240QDS_SECURE_BOOT T4240QDS:PPC_T4240,SECURE_BOOT Aneesh Bansal <aneesh.bansal@freescale.com>
-Active powerpc mpc85xx - freescale t4qds T4240QDS_SPIFLASH T4240QDS:PPC_T4240,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000 -
-Active powerpc mpc85xx - freescale t4qds T4240QDS_SRIO_PCIE_BOOT T4240QDS:PPC_T4240,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000 -
-Active powerpc mpc85xx - freescale t4rdb T4160RDB T4240RDB:PPC_T4160 Chunhe Lan <Chunhe.Lan@freescale.com>
-Active powerpc mpc85xx - freescale t4rdb T4240RDB T4240RDB:PPC_T4240 Chunhe Lan <Chunhe.Lan@freescale.com>
-Active powerpc mpc85xx - gdsys p1022 controlcenterd_36BIT_SDCARD controlcenterd:36BIT,SDCARD Dirk Eibach <eibach@gdsys.de>
-Active powerpc mpc85xx - gdsys p1022 controlcenterd_36BIT_SDCARD_DEVELOP controlcenterd:36BIT,SDCARD,DEVELOP Dirk Eibach <eibach@gdsys.de>
-Active powerpc mpc85xx - gdsys p1022 controlcenterd_TRAILBLAZER controlcenterd:TRAILBLAZER,SPIFLASH Dirk Eibach <eibach@gdsys.de>
-Active powerpc mpc85xx - gdsys p1022 controlcenterd_TRAILBLAZER_DEVELOP controlcenterd:TRAILBLAZER,SPIFLASH,DEVELOP Dirk Eibach <eibach@gdsys.de>
-Active powerpc mpc85xx - keymile kmp204x kmcoge4 kmp204x:KMCOGE4 Valentin Longchamp <valentin.longchamp@keymile.com>
-Active powerpc mpc85xx - keymile kmp204x kmlion1 kmp204x:KMLION1 Valentin Longchamp <valentin.longchamp@keymile.com>
-Active powerpc mpc85xx - xes xpedite520x xpedite520x - -
-Active powerpc mpc85xx - xes xpedite537x xpedite537x - -
-Active powerpc mpc85xx - xes xpedite550x xpedite550x - -
-Active powerpc mpc86xx - - sbc8641d sbc8641d - Paul Gortmaker <paul.gortmaker@windriver.com>
-Active powerpc mpc86xx - freescale mpc8610hpcd MPC8610HPCD - -
-Active powerpc mpc86xx - xes xpedite517x xpedite517x - -
-Active powerpc mpc8xx - - cogent cogent_mpc8xx - Murray Jensen <Murray.Jensen@csiro.au>
-Active powerpc mpc8xx - - esteem192e ESTEEM192E - Conn Clark <clark@esteem.com>
-Active powerpc mpc8xx - - hermes hermes - Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - - icu862 ICU862 - Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - - icu862 ICU862_100MHz ICU862:100MHz Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - - ip860 IP860 - Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - - ivm IVML24 IVML24:IVML24_16M Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - - ivm IVML24_128 IVML24:IVML24_32M Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - - ivm IVML24_256 IVML24:IVML24_64M Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - - ivm IVMS8 IVMS8:IVMS8_16M Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - - ivm IVMS8_128 IVMS8:IVMS8_32M Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - - ivm IVMS8_256 IVMS8:IVMS8_64M Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - - lwmon lwmon - Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - - netvia NETVIA NETVIA:NETVIA_VERSION=1 Pantelis Antoniou <panto@intracom.gr>
-Active powerpc mpc8xx - - netvia NETVIA_V2 NETVIA:NETVIA_VERSION=2 Pantelis Antoniou <panto@intracom.gr>
-Active powerpc mpc8xx - - r360mpi R360MPI - Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - - RRvision RRvision - Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - - RRvision RRvision_LCD RRvision:LCD,SHARP_LQ104V7DS01 Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - - spd8xx SPD823TS - Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - eltec mhpc MHPC - Frank Gottschling <fgottschling@eltec.de>
-Active powerpc mpc8xx - emk top860 TOP860 - Reinhard Meyer <reinhard.meyer@emk-elektronik.de>
-Active powerpc mpc8xx - kup kup4k KUP4K - Klaus Heydeck <heydeck@kieback-peter.de>
-Active powerpc mpc8xx - kup kup4x KUP4X - Klaus Heydeck <heydeck@kieback-peter.de>
-Active powerpc mpc8xx - LEOX elpt860 ELPT860 - The LEOX team <team@leox.org>
-Active powerpc mpc8xx - manroland uc100 uc100 - Stefan Roese <sr@denx.de>
-Active powerpc mpc8xx - tqc tqm8xx FPS850L - Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - tqc tqm8xx FPS860L - Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - tqc tqm8xx NSCU - -
-Active powerpc mpc8xx - tqc tqm8xx SM850 - Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - tqc tqm8xx TK885D - -
-Active powerpc mpc8xx - tqc tqm8xx TQM823L - Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - tqc tqm8xx TQM823L_LCD TQM823L:LCD,NEC_NL6448BC20 Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - tqc tqm8xx TQM823M - Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - tqc tqm8xx TQM850L - Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - tqc tqm8xx TQM850M - Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - tqc tqm8xx TQM855L - Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - tqc tqm8xx TQM855M - Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - tqc tqm8xx TQM860L - Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - tqc tqm8xx TQM860M - Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - tqc tqm8xx TQM862L - Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - tqc tqm8xx TQM862M - Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - tqc tqm8xx TQM866M - Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - tqc tqm8xx TQM885D - Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - tqc tqm8xx TTTech TQM823L:LCD,SHARP_LQ104V7DS01 Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - tqc tqm8xx virtlab2 - Wolfgang Denk <wd@denx.de>
-Active powerpc mpc8xx - tqc tqm8xx wtk TQM823L:LCD,SHARP_LQ065T9DR51U Wolfgang Denk <wd@denx.de>
-Active powerpc ppc4xx - - csb272 csb272 - Tolunay Orkun <torkun@nextio.com>
-Active powerpc ppc4xx - - csb472 csb472 - Tolunay Orkun <torkun@nextio.com>
-Active powerpc ppc4xx - - g2000 G2000 - Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active powerpc ppc4xx - - jse JSE - Stephen Williams <steve@icarus.com>
-Active powerpc ppc4xx - - korat korat - Larry Johnson <lrj@acm.org>
-Active powerpc ppc4xx - - korat korat_perm korat:KORAT_PERMANENT Larry Johnson <lrj@acm.org>
-Active powerpc ppc4xx - - lwmon5 lcd4_lwmon5 lwmon5:LCD4_LWMON5 Stefan Roese <sr@denx.de>
-Active powerpc ppc4xx - - lwmon5 lwmon5 - Stefan Roese <sr@denx.de>
-Active powerpc ppc4xx - - pcs440ep pcs440ep - Stefan Roese <sr@denx.de>
-Active powerpc ppc4xx - - sbc405 sbc405 - -
-Active powerpc ppc4xx - - sc3 sc3 - Heiko Schocher <hs@denx.de>
-Active powerpc ppc4xx - - t3corp t3corp - Stefan Roese <sr@denx.de>
-Active powerpc ppc4xx - - w7o W7OLMC - Erik Theisen <etheisen@mindspring.com>
-Active powerpc ppc4xx - - w7o W7OLMG - Erik Theisen <etheisen@mindspring.com>
-Active powerpc ppc4xx - - zeus zeus - Stefan Roese <sr@denx.de>
-Active powerpc ppc4xx - amcc acadia acadia - Stefan Roese <sr@denx.de>
-Active powerpc ppc4xx - amcc bamboo bamboo - Stefan Roese <sr@denx.de>
-Active powerpc ppc4xx - amcc bubinga bubinga - -
-Active powerpc ppc4xx - amcc canyonlands arches canyonlands:ARCHES Stefan Roese <sr@denx.de>
-Active powerpc ppc4xx - amcc canyonlands canyonlands canyonlands:CANYONLANDS Stefan Roese <sr@denx.de>
-Active powerpc ppc4xx - amcc canyonlands glacier canyonlands:GLACIER Stefan Roese <sr@denx.de>
-Active powerpc ppc4xx - amcc ebony ebony - Stefan Roese <sr@denx.de>
-Active powerpc ppc4xx - amcc katmai katmai - Stefan Roese <sr@denx.de>
-Active powerpc ppc4xx - amcc kilauea haleakala kilauea:HALEAKALA Stefan Roese <sr@denx.de>
-Active powerpc ppc4xx - amcc kilauea kilauea kilauea:KILAUEA Stefan Roese <sr@denx.de>
-Active powerpc ppc4xx - amcc luan luan - John Otken <jotken@softadvances.com>
-Active powerpc ppc4xx - amcc makalu makalu - Stefan Roese <sr@denx.de>
-Active powerpc ppc4xx - amcc ocotea ocotea - Stefan Roese <sr@denx.de>
-Active powerpc ppc4xx - amcc redwood redwood - Feng Kan <fkan@amcc.com>
-Active powerpc ppc4xx - amcc sequoia rainier sequoia:RAINIER Stefan Roese <sr@denx.de>
-Active powerpc ppc4xx - amcc sequoia rainier_ramboot sequoia:RAINIER,SYS_RAMBOOT,SYS_TEXT_BASE=0x01000000,SYS_LDSCRIPT=board/amcc/sequoia/u-boot-ram.lds Stefan Roese <sr@denx.de>
-Active powerpc ppc4xx - amcc sequoia sequoia sequoia:SEQUOIA Stefan Roese <sr@denx.de>
-Active powerpc ppc4xx - amcc sequoia sequoia_ramboot sequoia:SEQUOIA,SYS_RAMBOOT,SYS_TEXT_BASE=0x01000000,SYS_LDSCRIPT=board/amcc/sequoia/u-boot-ram.lds Stefan Roese <sr@denx.de>
-Active powerpc ppc4xx - amcc taihu taihu - John Otken <jotken@softadvances.com>
-Active powerpc ppc4xx - amcc taishan taishan - Stefan Roese <sr@denx.de>
-Active powerpc ppc4xx - amcc walnut sycamore walnut Stefan Roese <sr@denx.de>
-Active powerpc ppc4xx - amcc walnut walnut - Stefan Roese <sr@denx.de>
-Active powerpc ppc4xx - amcc yosemite yellowstone yosemite:YELLOWSTONE Stefan Roese <sr@denx.de>
-Active powerpc ppc4xx - amcc yosemite yosemite yosemite:YOSEMITE Stefan Roese <sr@denx.de>
-Active powerpc ppc4xx - amcc yucca yucca - -
-Active powerpc ppc4xx - avnet fx12mm fx12mm fx12mm:SYS_TEXT_BASE=0x04000000,RESET_VECTOR_ADDRESS=0x04100000,INIT_TLB=board/xilinx/ppc405-generic/init.o Georg Schardt <schardt@team-ctech.de>
-Active powerpc ppc4xx - avnet fx12mm fx12mm_flash fx12mm:SYS_TEXT_BASE=0xF7F60000,RESET_VECTOR_ADDRESS=0xF7FFFFFC,INIT_TLB=board/xilinx/ppc405-generic/init.o Georg Schardt <schardt@team-ctech.de>
-Active powerpc ppc4xx - avnet v5fx30teval v5fx30teval v5fx30teval:SYS_TEXT_BASE=0x04000000,RESET_VECTOR_ADDRESS=0x04100000,BOOT_FROM_XMD=1,INIT_TLB=board/xilinx/ppc440-generic/init.o Ricardo Ribalda <ricardo.ribalda@uam.es>
-Active powerpc ppc4xx - avnet v5fx30teval v5fx30teval_flash v5fx30teval:SYS_TEXT_BASE=0xF7F60000,RESET_VECTOR_ADDRESS=0xF7FFFFFC,INIT_TLB=board/xilinx/ppc440-generic/init.o Ricardo Ribalda <ricardo.ribalda@uam.es>
-Active powerpc ppc4xx - dave PPChameleonEVB CATcenter CATcenter:PPCHAMELEON_MODULE_MODEL=1 -
-Active powerpc ppc4xx - dave PPChameleonEVB CATcenter_25 CATcenter:PPCHAMELEON_MODULE_MODEL=1,PPCHAMELEON_CLK_25 -
-Active powerpc ppc4xx - dave PPChameleonEVB CATcenter_33 CATcenter:PPCHAMELEON_MODULE_MODEL=1,PPCHAMELEON_CLK_33 -
-Active powerpc ppc4xx - dave PPChameleonEVB PPChameleonEVB - Andrea "llandre" Marson <andrea.marson@dave-tech.it>
-Active powerpc ppc4xx - dave PPChameleonEVB PPChameleonEVB_BA_25 PPChameleonEVB:PPCHAMELEON_MODULE_MODEL=0,PPCHAMELEON_CLK_25 Andrea "llandre" Marson <andrea.marson@dave-tech.it>
-Active powerpc ppc4xx - dave PPChameleonEVB PPChameleonEVB_BA_33 PPChameleonEVB:PPCHAMELEON_MODULE_MODEL=0,PPCHAMELEON_CLK_33 Andrea "llandre" Marson <andrea.marson@dave-tech.it>
-Active powerpc ppc4xx - dave PPChameleonEVB PPChameleonEVB_HI_25 PPChameleonEVB:PPCHAMELEON_MODULE_MODEL=2,PPCHAMELEON_CLK_25 Andrea "llandre" Marson <andrea.marson@dave-tech.it>
-Active powerpc ppc4xx - dave PPChameleonEVB PPChameleonEVB_HI_33 PPChameleonEVB:PPCHAMELEON_MODULE_MODEL=2,PPCHAMELEON_CLK_33 Andrea "llandre" Marson <andrea.marson@dave-tech.it>
-Active powerpc ppc4xx - dave PPChameleonEVB PPChameleonEVB_ME_25 PPChameleonEVB:PPCHAMELEON_MODULE_MODEL=1,PPCHAMELEON_CLK_25 Andrea "llandre" Marson <andrea.marson@dave-tech.it>
-Active powerpc ppc4xx - dave PPChameleonEVB PPChameleonEVB_ME_33 PPChameleonEVB:PPCHAMELEON_MODULE_MODEL=1,PPCHAMELEON_CLK_33 Andrea "llandre" Marson <andrea.marson@dave-tech.it>
-Active powerpc ppc4xx - esd apc405 APC405 - Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active powerpc ppc4xx - esd ar405 AR405 - Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active powerpc ppc4xx - esd ash405 ASH405 - Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active powerpc ppc4xx - esd cms700 CMS700 - Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active powerpc ppc4xx - esd cpci2dp CPCI2DP - Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active powerpc ppc4xx - esd cpci405 CPCI405 - Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active powerpc ppc4xx - esd cpci405 CPCI4052 - Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active powerpc ppc4xx - esd cpci405 CPCI405AB - Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active powerpc ppc4xx - esd cpci405 CPCI405DT - Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active powerpc ppc4xx - esd cpciiser4 CPCIISER4 - Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active powerpc ppc4xx - esd dp405 DP405 - Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active powerpc ppc4xx - esd du405 DU405 - Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active powerpc ppc4xx - esd du440 DU440 - Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active powerpc ppc4xx - esd hh405 HH405 - Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active powerpc ppc4xx - esd hub405 HUB405 - Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active powerpc ppc4xx - esd ocrtc OCRTC - Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active powerpc ppc4xx - esd pci405 PCI405 - Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active powerpc ppc4xx - esd plu405 PLU405 - Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active powerpc ppc4xx - esd pmc405 PMC405 - Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active powerpc ppc4xx - esd pmc405de PMC405DE - Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active powerpc ppc4xx - esd pmc440 PMC440 - Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active powerpc ppc4xx - esd voh405 VOH405 - Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active powerpc ppc4xx - esd vom405 VOM405 - Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active powerpc ppc4xx - esd wuh405 WUH405 - Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active powerpc ppc4xx - gdsys 405ep dlvision-10g - Dirk Eibach <eibach@gdsys.de>
-Active powerpc ppc4xx - gdsys 405ep io - Dirk Eibach <eibach@gdsys.de>
-Active powerpc ppc4xx - gdsys 405ep iocon - Dirk Eibach <eibach@gdsys.de>
-Active powerpc ppc4xx - gdsys 405ep neo - Dirk Eibach <eibach@gdsys.de>
-Active powerpc ppc4xx - gdsys 405ex io64 - Dirk Eibach <eibach@gdsys.de>
-Active powerpc ppc4xx - gdsys dlvision dlvision - Dirk Eibach <eibach@gdsys.de>
-Active powerpc ppc4xx - gdsys gdppc440etx gdppc440etx - Dirk Eibach <eibach@gdsys.de>
-Active powerpc ppc4xx - gdsys intip devconcenter intip:DEVCONCENTER Dirk Eibach <eibach@gdsys.de>
-Active powerpc ppc4xx - gdsys intip intip intip:INTIB Dirk Eibach <eibach@gdsys.de>
-Active powerpc ppc4xx - mosaixtech icon icon - Stefan Roese <sr@denx.de>
-Active powerpc ppc4xx - mpl mip405 MIP405 - Denis Peter <d.peter@mpl.ch>
-Active powerpc ppc4xx - mpl mip405 MIP405T MIP405:MIP405T Denis Peter <d.peter@mpl.ch>
-Active powerpc ppc4xx - mpl pip405 PIP405 - Denis Peter <d.peter@mpl.ch>
-Active powerpc ppc4xx - prodrive alpr alpr - Stefan Roese <sr@denx.de>
-Active powerpc ppc4xx - prodrive p3p440 p3p440 - Stefan Roese <sr@denx.de>
-Active powerpc ppc4xx - xes xpedite1000 xpedite1000 - Peter Tyser <ptyser@xes-inc.com>
-Active powerpc ppc4xx - xilinx ml507 ml507 ml507:SYS_TEXT_BASE=0x04000000,RESET_VECTOR_ADDRESS=0x04100000,BOOT_FROM_XMD=1,INIT_TLB=board/xilinx/ppc440-generic/init.o Ricardo Ribalda <ricardo.ribalda@uam.es>
-Active powerpc ppc4xx - xilinx ml507 ml507_flash ml507:SYS_TEXT_BASE=0xF7F60000,RESET_VECTOR_ADDRESS=0xF7FFFFFC,INIT_TLB=board/xilinx/ppc440-generic/init.o Ricardo Ribalda <ricardo.ribalda@uam.es>
-Active powerpc ppc4xx - xilinx ppc405-generic xilinx-ppc405-generic xilinx-ppc405-generic:SYS_TEXT_BASE=0x04000000,RESET_VECTOR_ADDRESS=0x04100000 Ricardo Ribalda <ricardo.ribalda@uam.es>
-Active powerpc ppc4xx - xilinx ppc405-generic xilinx-ppc405-generic_flash xilinx-ppc405-generic:SYS_TEXT_BASE=0xF7F60000,RESET_VECTOR_ADDRESS=0xF7FFFFFC Ricardo Ribalda <ricardo.ribalda@uam.es>
-Active powerpc ppc4xx - xilinx ppc440-generic xilinx-ppc440-generic xilinx-ppc440-generic:SYS_TEXT_BASE=0x04000000,RESET_VECTOR_ADDRESS=0x04100000,BOOT_FROM_XMD=1 Ricardo Ribalda <ricardo.ribalda@uam.es>
-Active powerpc ppc4xx - xilinx ppc440-generic xilinx-ppc440-generic_flash xilinx-ppc440-generic:SYS_TEXT_BASE=0xF7F60000,RESET_VECTOR_ADDRESS=0xF7FFFFFC Ricardo Ribalda <ricardo.ribalda@uam.es>
-Active sandbox - - - sandbox sandbox - Simon Glass <sjg@chromium.org>
-Active sh sh2 - renesas rsk7203 rsk7203 - Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
-Active sh sh2 - renesas rsk7264 rsk7264 - Phil Edworthy <phil.edworthy@renesas.com>
-Active sh sh2 - renesas rsk7269 rsk7269 - -
-Active sh sh3 - - mpr2 mpr2 - Mark Jonas <mark.jonas@de.bosch.com>
-Active sh sh3 - - ms7720se ms7720se - Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
-Active sh sh3 - - shmin shmin - Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
-Active sh sh4 - - espt espt - -
-Active sh sh4 - - ms7722se ms7722se - Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
-Active sh sh4 - - ms7750se ms7750se - Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
-Active sh sh4 - alphaproject ap_sh4a_4a ap_sh4a_4a - Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
-Active sh sh4 - renesas ap325rxa ap325rxa - Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
-Active sh sh4 - renesas ecovec ecovec - Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
-Active sh sh4 - renesas MigoR MigoR - -
-Active sh sh4 - renesas r0p7734 r0p7734 - Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
-Active sh sh4 - renesas r2dplus r2dplus - Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
-Active sh sh4 - renesas r7780mp r7780mp - Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
-Active sh sh4 - renesas sh7752evb sh7752evb - -
-Active sh sh4 - renesas sh7753evb sh7753evb - -
-Active sh sh4 - renesas sh7757lcr sh7757lcr - -
-Active sh sh4 - renesas sh7763rdp sh7763rdp - Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
-Active sh sh4 - renesas sh7785lcr sh7785lcr - -
-Active sh sh4 - renesas sh7785lcr sh7785lcr_32bit sh7785lcr:SH_32BIT=1 -
-Active sparc leon2 - gaisler grsim_leon2 grsim_leon2 - -
-Active sparc leon3 - gaisler gr_cpci_ax2000 gr_cpci_ax2000 - -
-Active sparc leon3 - gaisler gr_ep2s60 gr_ep2s60 - -
-Active sparc leon3 - gaisler gr_xc3s_1500 gr_xc3s_1500 - -
-Active sparc leon3 - gaisler grsim grsim - -
-Active x86 - coreboot chromebook-x86 coreboot coreboot-x86 coreboot:SYS_TEXT_BASE=0x01110000 Simon Glass <sjg@chromium.org>
-# The following were moved to "Orphan" in June, 2014
-Orphan arm arm1176 tnetv107x ti tnetv107xevm tnetv107x_evm - Chan-Taek Park <c-park@ti.com>
-Orphan arm arm926ejs at91 calao sbc35_a9g20 sbc35_a9g20_eeprom sbc35_a9g20:AT91SAM9G20,SYS_USE_EEPROM Albin Tonnerre <albin.tonnerre@free-electrons.com>
-Orphan arm arm926ejs at91 calao sbc35_a9g20 sbc35_a9g20_nandflash sbc35_a9g20:AT91SAM9G20,SYS_USE_NANDFLASH Albin Tonnerre <albin.tonnerre@free-electrons.com>
-Orphan arm arm926ejs at91 calao tny_a9260 tny_a9260_eeprom tny_a9260:AT91SAM9260,SYS_USE_EEPROM Albin Tonnerre <albin.tonnerre@free-electrons.com>
-Orphan arm arm926ejs at91 calao tny_a9260 tny_a9260_nandflash tny_a9260:AT91SAM9260,SYS_USE_NANDFLASH Albin Tonnerre <albin.tonnerre@free-electrons.com>
-Orphan arm arm926ejs at91 calao tny_a9260 tny_a9g20_eeprom tny_a9260:AT91SAM9G20,SYS_USE_EEPROM Albin Tonnerre <albin.tonnerre@free-electrons.com>
-Orphan arm arm926ejs at91 calao tny_a9260 tny_a9g20_nandflash tny_a9260:AT91SAM9G20,SYS_USE_NANDFLASH Albin Tonnerre <albin.tonnerre@free-electrons.com>
-Orphan arm armv7 mx6 congatec cgtqmx6eval cgtqmx6qeval cgtqmx6eval:IMX_CONFIG=board/freescale/imx/ddr/mx6q_4x_mt41j128.cfg,MX6Q Leo Sartre <lsartre@adeneo-embedded.com>
-Orphan arm pxa - - palmtreo680 palmtreo680 - Mike Dunn <mikedunn@newsguy.com>
-Orphan avr32 - at32ap700x atmel atngw100 atngw100 - Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
-Orphan avr32 - at32ap700x atmel atstk1000 atstk1002 - Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
-Orphan avr32 - at32ap700x atmel atstk1000 atstk1003 - Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
-Orphan avr32 - at32ap700x atmel atstk1000 atstk1004 - Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
-Orphan avr32 - at32ap700x atmel atstk1000 atstk1006 - Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
-Orphan avr32 - at32ap700x earthlcd favr-32-ezkit favr-32-ezkit - Hans-Christian Egtvedt <hans-christian.egtvedt@atmel.com>
-Orphan blackfin - - - ip04 ip04 - Brent Kandetzki <brentk@teleco.com>
-Orphan m68k mcf52x2 - freescale m5253evbe M5253EVBE - Hayden Fraser <Hayden.Fraser@freescale.com>
-Orphan powerpc mpc5xxx - - galaxy5200 galaxy5200 galaxy5200:galaxy5200 Eric Millbrandt <emillbrandt@dekaresearch.com>
-Orphan powerpc mpc5xxx - - galaxy5200 galaxy5200_LOWBOOT galaxy5200:galaxy5200_LOWBOOT Eric Millbrandt <emillbrandt@dekaresearch.com>
-Orphan powerpc mpc8260 - - ep8260 ep8260 - Frank Panno <fpanno@delphintech.com>
-Orphan powerpc mpc8260 - - sacsng sacsng - Jerry Van Baren <gerald.vanbaren@smiths-aerospace.com>
-Orphan powerpc mpc83xx - freescale mpc837xerdb MPC837XERDB - Joe D'Abbraccio <ljd015@freescale.com>
-Orphan powerpc mpc85xx - exmeritus hww1u1a HWW1U1A - Kyle Moffett <Kyle.D.Moffett@boeing.com>
-Orphan powerpc mpc85xx - freescale mpc8540ads MPC8540ADS - Kumar Gala <kumar.gala@freescale.com>
-Orphan powerpc mpc85xx - freescale mpc8541cds MPC8541CDS - Kumar Gala <kumar.gala@freescale.com>
-Orphan powerpc mpc85xx - freescale mpc8541cds MPC8541CDS_legacy MPC8541CDS:LEGACY Kumar Gala <kumar.gala@freescale.com>
-Orphan powerpc mpc85xx - freescale mpc8555cds MPC8555CDS - Kumar Gala <kumar.gala@freescale.com>
-Orphan powerpc mpc85xx - freescale mpc8555cds MPC8555CDS_legacy MPC8555CDS:LEGACY Kumar Gala <kumar.gala@freescale.com>
-Orphan powerpc mpc85xx - freescale mpc8560ads MPC8560ADS - Kumar Gala <kumar.gala@freescale.com>
-Orphan powerpc mpc85xx - stx stxgp3 stxgp3 - Dan Malek <dan@embeddedalley.com>
-Orphan powerpc mpc85xx - stx stxssa stxssa - Dan Malek <dan@embeddedalley.com>
-Orphan powerpc mpc85xx - stx stxssa stxssa_4M stxssa:STXSSA_4M Dan Malek <dan@embeddedalley.com>
-Orphan powerpc mpc86xx - freescale mpc8641hpcn MPC8641HPCN - Kumar Gala <kumar.gala@freescale.com>
-Orphan powerpc mpc86xx - freescale mpc8641hpcn MPC8641HPCN_36BIT MPC8641HPCN:PHYS_64BIT Kumar Gala <kumar.gala@freescale.com>
-Orphan powerpc mpc8xx - - flagadm FLAGADM - Kári Davíðsson <kd@flaga.is>
-Orphan powerpc mpc8xx - - gen860t GEN860T - Keith Outwater <Keith_Outwater@mvis.com>
-Orphan powerpc mpc8xx - - gen860t GEN860T_SC GEN860T:SC Keith Outwater <Keith_Outwater@mvis.com>
-Orphan powerpc mpc8xx - - sixnet SXNI855T - Dave Ellis <DGE@sixnetio.com>
-Orphan powerpc mpc8xx - - svm_sc8xx svm_sc8xx - John Zhan <zhanz@sinovee.com>
-Orphan powerpc mpc8xx - stx stxxtc stxxtc - Dan Malek <dan@embeddedalley.com>
-# The following were moved to "Orphan" in April, 2014
-Orphan powerpc 74xx_7xx - - evb64260 ZUMA - Nye Liu <nyet@zumanetworks.com>
-Orphan powerpc mpc824x - - musenki MUSENKI - Jim Thompson <jim@musenki.com>
-Orphan powerpc mpc824x - - sandpoint Sandpoint8245 - Jim Thompson <jim@musenki.com>
-Orphan powerpc mpc8260 - - ppmc8260 ppmc8260 - Brad Kemp <Brad.Kemp@seranoa.com>
-# The following were moved to "Orphan" in March, 2014
-Orphan blackfin - - - cm-bf527 cm-bf527 - Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
-Orphan blackfin - - - cm-bf533 cm-bf533 - Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
-Orphan blackfin - - - cm-bf537e cm-bf537e - Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
-Orphan blackfin - - - cm-bf537u cm-bf537u - Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
-Orphan blackfin - - - cm-bf548 cm-bf548 - Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
-Orphan blackfin - - - cm-bf561 cm-bf561 - Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
-Orphan blackfin - - - tcm-bf518 tcm-bf518 - Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
-Orphan blackfin - - - tcm-bf537 tcm-bf537 - Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
-Orphan powerpc mpc5xxx - matrix_vision mvbc_p MVBC_P MVBC_P:MVBC_P Andre Schwarz <andre.schwarz@matrix-vision.de>
-Orphan powerpc mpc5xxx - matrix_vision mvsmr MVSMR - Andre Schwarz <andre.schwarz@matrix-vision.de>
-Orphan powerpc mpc83xx - freescale mpc8360erdk MPC8360ERDK - Anton Vorontsov <avorontsov@ru.mvista.com>
-Orphan powerpc mpc83xx - freescale mpc8360erdk MPC8360ERDK_33 MPC8360ERDK:CLKIN_33MHZ Anton Vorontsov <avorontsov@ru.mvista.com>
-Orphan powerpc mpc83xx - matrix_vision mergerbox MERGERBOX - Andre Schwarz <andre.schwarz@matrix-vision.de>
-Orphan powerpc mpc83xx - matrix_vision mvblm7 MVBLM7 - Andre Schwarz <andre.schwarz@matrix-vision.de>
-Orphan powerpc ppc4xx - amcc bluestone bluestone - Tirumala Marri <tmarri@apm.com>
-Orphan powerpc ppc4xx - cray L1 CRAYL1 - David Updegraff <dave@cray.com>
-Orphan powerpc ppc4xx - sandburst karef KAREF - Travis Sawyer <travis.sawyer@sandburst.com>
-Orphan powerpc ppc4xx - sandburst metrobox METROBOX - Travis Sawyer <travis.sawyer@sandburst.com>
-# The following were move to "Orphan" in September, 2013
-Orphan arm arm1136 mx31 - imx31_phycore imx31_phycore_eet imx31_phycore:IMX31_PHYCORE_EET (resigned) Guennadi Liakhovetski <g.liakhovetski@gmx.de>
-Orphan arm arm1136 mx31 freescale mx31ads mx31ads - (resigned) Guennadi Liakhovetski <g.liakhovetski@gmx.de>
diff --git a/common/board_f.c b/common/board_f.c
index bdab38e..6203d85 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -14,6 +14,7 @@
#include <linux/compiler.h>
#include <version.h>
#include <environment.h>
+#include <dm.h>
#include <fdtdec.h>
#include <fs.h>
#if defined(CONFIG_CMD_IDE)
@@ -53,6 +54,7 @@
#ifdef CONFIG_SANDBOX
#include <asm/state.h>
#endif
+#include <dm/root.h>
#include <linux/compiler.h>
/*
@@ -767,6 +769,30 @@ static int mark_bootstage(void)
return 0;
}
+static int initf_malloc(void)
+{
+#ifdef CONFIG_SYS_MALLOC_F_LEN
+ assert(gd->malloc_base); /* Set up by crt0.S */
+ gd->malloc_limit = gd->malloc_base + CONFIG_SYS_MALLOC_F_LEN;
+ gd->malloc_ptr = 0;
+#endif
+
+ return 0;
+}
+
+static int initf_dm(void)
+{
+#if defined(CONFIG_DM) && defined(CONFIG_SYS_MALLOC_F_LEN)
+ int ret;
+
+ ret = dm_init_and_scan(true);
+ if (ret)
+ return ret;
+#endif
+
+ return 0;
+}
+
static init_fnc_t init_sequence_f[] = {
#ifdef CONFIG_SANDBOX
setup_ram_buf,
@@ -824,6 +850,8 @@ static init_fnc_t init_sequence_f[] = {
sdram_adjust_866,
init_timebase,
#endif
+ initf_malloc,
+ initf_dm,
init_baud_rate, /* initialze baudrate settings */
serial_init, /* serial communications setup */
console_init_f, /* stage 1 init of console */
diff --git a/common/board_r.c b/common/board_r.c
index 4479acb..8e7a3ac 100644
--- a/common/board_r.c
+++ b/common/board_r.c
@@ -259,6 +259,10 @@ static int initr_malloc(void)
{
ulong malloc_start;
+#ifdef CONFIG_SYS_MALLOC_F_LEN
+ debug("Pre-reloc malloc() used %#lx bytes (%ld KB)\n", gd->malloc_ptr,
+ gd->malloc_ptr / 1024);
+#endif
/* The malloc area is immediately below the monitor copy in DRAM */
malloc_start = gd->relocaddr - TOTAL_MALLOC_LEN;
mem_malloc_init((ulong)map_sysmem(malloc_start, TOTAL_MALLOC_LEN),
@@ -269,27 +273,10 @@ static int initr_malloc(void)
#ifdef CONFIG_DM
static int initr_dm(void)
{
- int ret;
-
- ret = dm_init();
- if (ret) {
- debug("dm_init() failed: %d\n", ret);
- return ret;
- }
- ret = dm_scan_platdata();
- if (ret) {
- debug("dm_scan_platdata() failed: %d\n", ret);
- return ret;
- }
-#ifdef CONFIG_OF_CONTROL
- ret = dm_scan_fdt(gd->fdt_blob);
- if (ret) {
- debug("dm_scan_fdt() failed: %d\n", ret);
- return ret;
- }
-#endif
-
- return 0;
+ /* Save the pre-reloc driver model and start a new one */
+ gd->dm_root_f = gd->dm_root;
+ gd->dm_root = NULL;
+ return dm_init_and_scan(false);
}
#endif
diff --git a/common/cmd_log.c b/common/cmd_log.c
index 38d0f5e..873ee40 100644
--- a/common/cmd_log.c
+++ b/common/cmd_log.c
@@ -33,8 +33,8 @@
DECLARE_GLOBAL_DATA_PTR;
/* Local prototypes */
-static void logbuff_putc(const char c);
-static void logbuff_puts(const char *s);
+static void logbuff_putc(struct stdio_dev *dev, const char c);
+static void logbuff_puts(struct stdio_dev *dev, const char *s);
static int logbuff_printk(const char *line);
static char buf[1024];
@@ -143,7 +143,7 @@ int drv_logbuff_init(void)
return (rc == 0) ? 1 : rc;
}
-static void logbuff_putc(const char c)
+static void logbuff_putc(struct stdio_dev *dev, const char c)
{
char buf[2];
buf[0] = c;
@@ -151,7 +151,7 @@ static void logbuff_putc(const char c)
logbuff_printk(buf);
}
-static void logbuff_puts(const char *s)
+static void logbuff_puts(struct stdio_dev *dev, const char *s)
{
logbuff_printk (s);
}
@@ -181,6 +181,7 @@ void logbuff_log(char *msg)
*/
int do_log(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
+ struct stdio_dev *sdev = NULL;
char *s;
unsigned long i, start, size;
@@ -188,7 +189,7 @@ int do_log(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
/* Log concatenation of all arguments separated by spaces */
for (i = 2; i < argc; i++) {
logbuff_printk(argv[i]);
- logbuff_putc((i < argc - 1) ? ' ' : '\n');
+ logbuff_putc(sdev, (i < argc - 1) ? ' ' : '\n');
}
return 0;
}
diff --git a/common/console.c b/common/console.c
index 5453726..898da39 100644
--- a/common/console.c
+++ b/common/console.c
@@ -109,7 +109,7 @@ static int console_setfile(int file, struct stdio_dev * dev)
case stderr:
/* Start new device */
if (dev->start) {
- error = dev->start();
+ error = dev->start(dev);
/* If it's not started dont use it */
if (error < 0)
break;
@@ -159,7 +159,7 @@ static int console_getc(int file)
unsigned char ret;
/* This is never called with testcdev == NULL */
- ret = tstcdev->getc();
+ ret = tstcdev->getc(tstcdev);
tstcdev = NULL;
return ret;
}
@@ -173,7 +173,7 @@ static int console_tstc(int file)
for (i = 0; i < cd_count[file]; i++) {
dev = console_devices[file][i];
if (dev->tstc != NULL) {
- ret = dev->tstc();
+ ret = dev->tstc(dev);
if (ret > 0) {
tstcdev = dev;
disable_ctrlc(0);
@@ -194,7 +194,7 @@ static void console_putc(int file, const char c)
for (i = 0; i < cd_count[file]; i++) {
dev = console_devices[file][i];
if (dev->putc != NULL)
- dev->putc(c);
+ dev->putc(dev, c);
}
}
@@ -206,7 +206,7 @@ static void console_puts(int file, const char *s)
for (i = 0; i < cd_count[file]; i++) {
dev = console_devices[file][i];
if (dev->puts != NULL)
- dev->puts(s);
+ dev->puts(dev, s);
}
}
@@ -222,22 +222,22 @@ static inline void console_doenv(int file, struct stdio_dev *dev)
#else
static inline int console_getc(int file)
{
- return stdio_devices[file]->getc();
+ return stdio_devices[file]->getc(stdio_devices[file]);
}
static inline int console_tstc(int file)
{
- return stdio_devices[file]->tstc();
+ return stdio_devices[file]->tstc(stdio_devices[file]);
}
static inline void console_putc(int file, const char c)
{
- stdio_devices[file]->putc(c);
+ stdio_devices[file]->putc(stdio_devices[file], c);
}
static inline void console_puts(int file, const char *s)
{
- stdio_devices[file]->puts(s);
+ stdio_devices[file]->puts(stdio_devices[file], s);
}
static inline void console_printdevs(int file)
@@ -417,7 +417,7 @@ static inline void print_pre_console_buffer(void) {}
void putc(const char c)
{
#ifdef CONFIG_SANDBOX
- if (!gd) {
+ if (!gd || !(gd->flags & GD_FLG_SERIAL_READY)) {
os_putc(c);
return;
}
@@ -447,7 +447,7 @@ void putc(const char c)
void puts(const char *s)
{
#ifdef CONFIG_SANDBOX
- if (!gd) {
+ if (!gd || !(gd->flags & GD_FLG_SERIAL_READY)) {
os_puts(s);
return;
}
@@ -504,7 +504,7 @@ int vprintf(const char *fmt, va_list args)
uint i;
char printbuffer[CONFIG_SYS_PBSIZE];
-#ifndef CONFIG_PRE_CONSOLE_BUFFER
+#if defined(CONFIG_PRE_CONSOLE_BUFFER) && !defined(CONFIG_SANDBOX)
if (!gd->have_console)
return 0;
#endif
diff --git a/common/dlmalloc.c b/common/dlmalloc.c
index 3c70d5d..f987339 100644
--- a/common/dlmalloc.c
+++ b/common/dlmalloc.c
@@ -1,5 +1,9 @@
#include <common.h>
+#ifdef CONFIG_SANDBOX
+#define DEBUG
+#endif
+
#if 0 /* Moved to malloc.h */
/* ---------- To make a malloc.h, start cutting here ------------ */
@@ -220,7 +224,7 @@
*/
-
+
/* Preliminaries */
@@ -930,6 +934,8 @@ struct mallinfo mALLINFo();
#endif /* 0 */ /* Moved to malloc.h */
#include <malloc.h>
+#include <asm/io.h>
+
#ifdef DEBUG
#if __STD_C
static void malloc_update_mallinfo (void);
@@ -1132,7 +1138,7 @@ gAllocatedSize))
#endif
-
+
/*
Type declarations
@@ -1272,7 +1278,7 @@ nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
serviced via calls to mmap, and then later released via munmap.
*/
-
+
/* sizes, alignments */
#define SIZE_SZ (sizeof(INTERNAL_SIZE_T))
@@ -1297,7 +1303,7 @@ nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
#define aligned_OK(m) (((unsigned long)((m)) & (MALLOC_ALIGN_MASK)) == 0)
-
+
/*
Physical chunk operations
@@ -1332,7 +1338,7 @@ nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
#define chunk_at_offset(p, s) ((mchunkptr)(((char*)(p)) + (s)))
-
+
/*
Dealing with use bits
@@ -1371,7 +1377,7 @@ nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
(((mchunkptr)(((char*)(p)) + (s)))->size &= ~(PREV_INUSE))
-
+
/*
Dealing with size fields
@@ -1394,7 +1400,7 @@ nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
#define set_foot(p, s) (((mchunkptr)((char*)(p) + (s)))->prev_size = (s))
-
+
/*
@@ -1566,7 +1572,7 @@ void mem_malloc_init(ulong start, ulong size)
#define is_small_request(nb) (nb < MAX_SMALLBIN_SIZE - SMALLBIN_WIDTH)
-
+
/*
To help compensate for the large number of bins, a one-level index
@@ -1590,7 +1596,7 @@ void mem_malloc_init(ulong start, ulong size)
#define clear_binblock(ii) (binblocks_w = (mbinptr)(binblocks_r & ~(idx2binblock(ii))))
-
+
/* Other static bookkeeping data */
@@ -1628,7 +1634,7 @@ static unsigned int max_n_mmaps = 0;
static unsigned long max_mmapped_mem = 0;
#endif
-
+
/*
Debugging support
@@ -1769,7 +1775,7 @@ static void do_check_malloced_chunk(p, s) mchunkptr p; INTERNAL_SIZE_T s;
#define check_malloced_chunk(P,N)
#endif
-
+
/*
Macro-based internal utilities
@@ -1841,7 +1847,7 @@ static void do_check_malloced_chunk(p, s) mchunkptr p; INTERNAL_SIZE_T s;
(last_remainder->fd = last_remainder->bk = last_remainder)
-
+
/* Routines dealing with mmap(). */
@@ -1972,7 +1978,7 @@ static mchunkptr mremap_chunk(p, new_size) mchunkptr p; size_t new_size;
#endif /* HAVE_MMAP */
-
+
/*
Extend the top-most chunk by obtaining memory from system.
@@ -2089,7 +2095,7 @@ static void malloc_extend_top(nb) INTERNAL_SIZE_T nb;
}
-
+
/* Main public routines */
@@ -2174,6 +2180,20 @@ Void_t* mALLOc(bytes) size_t bytes;
INTERNAL_SIZE_T nb;
+#ifdef CONFIG_SYS_MALLOC_F_LEN
+ if (!(gd->flags & GD_FLG_RELOC)) {
+ ulong new_ptr;
+ void *ptr;
+
+ new_ptr = gd->malloc_ptr + bytes;
+ if (new_ptr > gd->malloc_limit)
+ panic("Out of pre-reloc memory");
+ ptr = map_sysmem(gd->malloc_base + gd->malloc_ptr, bytes);
+ gd->malloc_ptr = ALIGN(new_ptr, sizeof(new_ptr));
+ return ptr;
+ }
+#endif
+
/* check if mem_malloc_init() was run */
if ((mem_malloc_start == 0) && (mem_malloc_end == 0)) {
/* not initialized yet */
@@ -2396,7 +2416,7 @@ Void_t* mALLOc(bytes) size_t bytes;
}
-
+
/*
@@ -2437,6 +2457,12 @@ void fREe(mem) Void_t* mem;
mchunkptr fwd; /* misc temp for linking */
int islr; /* track whether merging with last_remainder */
+#ifdef CONFIG_SYS_MALLOC_F_LEN
+ /* free() is a no-op - all the memory will be freed on relocation */
+ if (!(gd->flags & GD_FLG_RELOC))
+ return;
+#endif
+
if (mem == NULL) /* free(0) has no effect */
return;
@@ -2513,7 +2539,7 @@ void fREe(mem) Void_t* mem;
}
-
+
/*
@@ -2588,6 +2614,13 @@ Void_t* rEALLOc(oldmem, bytes) Void_t* oldmem; size_t bytes;
/* realloc of null is supposed to be same as malloc */
if (oldmem == NULL) return mALLOc(bytes);
+#ifdef CONFIG_SYS_MALLOC_F_LEN
+ if (!(gd->flags & GD_FLG_RELOC)) {
+ /* This is harder to support and should not be needed */
+ panic("pre-reloc realloc() is not supported");
+ }
+#endif
+
newp = oldp = mem2chunk(oldmem);
newsize = oldsize = chunksize(oldp);
@@ -2750,7 +2783,7 @@ Void_t* rEALLOc(oldmem, bytes) Void_t* oldmem; size_t bytes;
}
-
+
/*
@@ -2868,7 +2901,7 @@ Void_t* mEMALIGn(alignment, bytes) size_t alignment; size_t bytes;
}
-
+
/*
@@ -2933,6 +2966,12 @@ Void_t* cALLOc(n, elem_size) size_t n; size_t elem_size;
return NULL;
else
{
+#ifdef CONFIG_SYS_MALLOC_F_LEN
+ if (!(gd->flags & GD_FLG_RELOC)) {
+ MALLOC_ZERO(mem, sz);
+ return mem;
+ }
+#endif
p = mem2chunk(mem);
/* Two optional cases in which clearing not necessary */
@@ -2975,7 +3014,7 @@ void cfree(mem) Void_t *mem;
}
#endif
-
+
/*
@@ -3056,7 +3095,7 @@ int malloc_trim(pad) size_t pad;
}
}
-
+
/*
malloc_usable_size:
@@ -3092,7 +3131,7 @@ size_t malloc_usable_size(mem) Void_t* mem;
}
-
+
/* Utility to update current_mallinfo for malloc_stats and mallinfo() */
@@ -3136,7 +3175,7 @@ static void malloc_update_mallinfo()
}
#endif /* DEBUG */
-
+
/*
@@ -3183,7 +3222,7 @@ struct mallinfo mALLINFo()
#endif /* DEBUG */
-
+
/*
mallopt:
diff --git a/common/env_mmc.c b/common/env_mmc.c
index 7da10e6..a7621a8 100644
--- a/common/env_mmc.c
+++ b/common/env_mmc.c
@@ -62,16 +62,36 @@ int env_init(void)
return 0;
}
-static int init_mmc_for_env(struct mmc *mmc)
-{
#ifdef CONFIG_SYS_MMC_ENV_PART
+__weak uint mmc_get_env_part(struct mmc *mmc)
+{
+ return CONFIG_SYS_MMC_ENV_PART;
+}
+
+static int mmc_set_env_part(struct mmc *mmc)
+{
+ uint part = mmc_get_env_part(mmc);
int dev = CONFIG_SYS_MMC_ENV_DEV;
+ int ret = 0;
#ifdef CONFIG_SPL_BUILD
dev = 0;
#endif
+
+ if (part != mmc->part_num) {
+ ret = mmc_switch_part(dev, part);
+ if (ret)
+ puts("MMC partition switch failed\n");
+ }
+
+ return ret;
+}
+#else
+static inline int mmc_set_env_part(struct mmc *mmc) {return 0; };
#endif
+static int init_mmc_for_env(struct mmc *mmc)
+{
if (!mmc) {
puts("No MMC card found\n");
return -1;
@@ -82,16 +102,7 @@ static int init_mmc_for_env(struct mmc *mmc)
return -1;
}
-#ifdef CONFIG_SYS_MMC_ENV_PART
- if (CONFIG_SYS_MMC_ENV_PART != mmc->part_num) {
- if (mmc_switch_part(dev, CONFIG_SYS_MMC_ENV_PART)) {
- puts("MMC partition switch failed\n");
- return -1;
- }
- }
-#endif
-
- return 0;
+ return mmc_set_env_part(mmc);
}
static void fini_mmc_for_env(struct mmc *mmc)
diff --git a/common/image-fdt.c b/common/image-fdt.c
index 9fc7481..db6e395 100644
--- a/common/image-fdt.c
+++ b/common/image-fdt.c
@@ -450,7 +450,7 @@ __weak int ft_verify_fdt(void *fdt)
return 1;
}
-__weak int arch_fixup_memory_node(void *blob)
+__weak int arch_fixup_fdt(void *blob)
{
return 0;
}
@@ -467,7 +467,10 @@ int image_setup_libfdt(bootm_headers_t *images, void *blob,
puts(" - must RESET the board to recover.\n");
return -1;
}
- arch_fixup_memory_node(blob);
+ if (arch_fixup_fdt(blob) < 0) {
+ puts("ERROR: arch specific fdt fixup failed");
+ return -1;
+ }
if (IMAGE_OF_BOARD_SETUP)
ft_board_setup(blob, gd->bd);
fdt_fixup_ethernet(blob);
@@ -492,7 +495,7 @@ int image_setup_libfdt(bootm_headers_t *images, void *blob,
if (!ft_verify_fdt(blob))
return -1;
-#ifdef CONFIG_SOC_K2HK
+#if defined(CONFIG_SOC_KEYSTONE)
if (IMAGE_OF_BOARD_SETUP)
ft_board_setup_ex(blob, gd->bd);
#endif
diff --git a/common/lcd.c b/common/lcd.c
index 19b86b7..feb913a 100644
--- a/common/lcd.c
+++ b/common/lcd.c
@@ -214,6 +214,11 @@ static inline void console_newline(void)
/*----------------------------------------------------------------------*/
+static void lcd_stub_putc(struct stdio_dev *dev, const char c)
+{
+ lcd_putc(c);
+}
+
void lcd_putc(const char c)
{
if (!lcd_is_enabled) {
@@ -253,6 +258,11 @@ void lcd_putc(const char c)
/*----------------------------------------------------------------------*/
+static void lcd_stub_puts(struct stdio_dev *dev, const char *s)
+{
+ lcd_puts(s);
+}
+
void lcd_puts(const char *s)
{
if (!lcd_is_enabled) {
@@ -426,8 +436,8 @@ int drv_lcd_init(void)
strcpy(lcddev.name, "lcd");
lcddev.ext = 0; /* No extensions */
lcddev.flags = DEV_FLAGS_OUTPUT; /* Output only */
- lcddev.putc = lcd_putc; /* 'putc' function */
- lcddev.puts = lcd_puts; /* 'puts' function */
+ lcddev.putc = lcd_stub_putc; /* 'putc' function */
+ lcddev.puts = lcd_stub_puts; /* 'puts' function */
rc = stdio_register(&lcddev);
diff --git a/common/stdio.c b/common/stdio.c
index 844f98c..692ca7f 100644
--- a/common/stdio.c
+++ b/common/stdio.c
@@ -11,6 +11,7 @@
#include <config.h>
#include <common.h>
+#include <errno.h>
#include <stdarg.h>
#include <malloc.h>
#include <stdio_dev.h>
@@ -35,23 +36,43 @@ char *stdio_names[MAX_FILES] = { "stdin", "stdout", "stderr" };
#ifdef CONFIG_SYS_DEVICE_NULLDEV
-void nulldev_putc(const char c)
+void nulldev_putc(struct stdio_dev *dev, const char c)
{
/* nulldev is empty! */
}
-void nulldev_puts(const char *s)
+void nulldev_puts(struct stdio_dev *dev, const char *s)
{
/* nulldev is empty! */
}
-int nulldev_input(void)
+int nulldev_input(struct stdio_dev *dev)
{
/* nulldev is empty! */
return 0;
}
#endif
+void stdio_serial_putc(struct stdio_dev *dev, const char c)
+{
+ serial_putc(c);
+}
+
+void stdio_serial_puts(struct stdio_dev *dev, const char *s)
+{
+ serial_puts(s);
+}
+
+int stdio_serial_getc(struct stdio_dev *dev)
+{
+ return serial_getc();
+}
+
+int stdio_serial_tstc(struct stdio_dev *dev)
+{
+ return serial_tstc();
+}
+
/**************************************************************************
* SYSTEM DRIVERS
**************************************************************************
@@ -65,10 +86,10 @@ static void drv_system_init (void)
strcpy (dev.name, "serial");
dev.flags = DEV_FLAGS_OUTPUT | DEV_FLAGS_INPUT | DEV_FLAGS_SYSTEM;
- dev.putc = serial_putc;
- dev.puts = serial_puts;
- dev.getc = serial_getc;
- dev.tstc = serial_tstc;
+ dev.putc = stdio_serial_putc;
+ dev.puts = stdio_serial_puts;
+ dev.getc = stdio_serial_getc;
+ dev.tstc = stdio_serial_tstc;
stdio_register (&dev);
#ifdef CONFIG_SYS_DEVICE_NULLDEV
@@ -128,32 +149,35 @@ struct stdio_dev* stdio_clone(struct stdio_dev *dev)
return _dev;
}
-int stdio_register (struct stdio_dev * dev)
+int stdio_register_dev(struct stdio_dev *dev, struct stdio_dev **devp)
{
struct stdio_dev *_dev;
_dev = stdio_clone(dev);
if(!_dev)
- return -1;
+ return -ENODEV;
list_add_tail(&(_dev->list), &(devs.list));
+ if (devp)
+ *devp = _dev;
+
return 0;
}
+int stdio_register(struct stdio_dev *dev)
+{
+ return stdio_register_dev(dev, NULL);
+}
+
/* deregister the device "devname".
* returns 0 if success, -1 if device is assigned and 1 if devname not found
*/
#ifdef CONFIG_SYS_STDIO_DEREGISTER
-int stdio_deregister(const char *devname)
+int stdio_deregister_dev(struct stdio_dev *dev)
{
int l;
struct list_head *pos;
- struct stdio_dev *dev;
char temp_names[3][16];
- dev = stdio_get_by_name(devname);
-
- if(!dev) /* device not found */
- return -1;
/* get stdio devices (ListRemoveItem changes the dev list) */
for (l=0 ; l< MAX_FILES; l++) {
if (stdio_devices[l] == dev) {
@@ -177,6 +201,18 @@ int stdio_deregister(const char *devname)
}
return 0;
}
+
+int stdio_deregister(const char *devname)
+{
+ struct stdio_dev *dev;
+
+ dev = stdio_get_by_name(devname);
+
+ if (!dev) /* device not found */
+ return -ENODEV;
+
+ return stdio_deregister_dev(dev);
+}
#endif /* CONFIG_SYS_STDIO_DEREGISTER */
int stdio_init (void)
diff --git a/common/usb_kbd.c b/common/usb_kbd.c
index 0b77c16..c34fd5c 100644
--- a/common/usb_kbd.c
+++ b/common/usb_kbd.c
@@ -360,7 +360,7 @@ static inline void usb_kbd_poll_for_event(struct usb_device *dev)
}
/* test if a character is in the queue */
-static int usb_kbd_testc(void)
+static int usb_kbd_testc(struct stdio_dev *sdev)
{
struct stdio_dev *dev;
struct usb_device *usb_kbd_dev;
@@ -386,7 +386,7 @@ static int usb_kbd_testc(void)
}
/* gets the character from the queue */
-static int usb_kbd_getc(void)
+static int usb_kbd_getc(struct stdio_dev *sdev)
{
struct stdio_dev *dev;
struct usb_device *usb_kbd_dev;
@@ -522,8 +522,6 @@ int drv_usb_kbd_init(void)
memset(&usb_kbd_dev, 0, sizeof(struct stdio_dev));
strcpy(usb_kbd_dev.name, DEVNAME);
usb_kbd_dev.flags = DEV_FLAGS_INPUT | DEV_FLAGS_SYSTEM;
- usb_kbd_dev.putc = NULL;
- usb_kbd_dev.puts = NULL;
usb_kbd_dev.getc = usb_kbd_getc;
usb_kbd_dev.tstc = usb_kbd_testc;
usb_kbd_dev.priv = (void *)dev;
diff --git a/config.mk b/config.mk
index bd74732..b4bf6f9 100644
--- a/config.mk
+++ b/config.mk
@@ -20,6 +20,16 @@ LDFLAGS_FINAL :=
OBJCOPYFLAGS :=
#########################################################################
+ARCH := $(CONFIG_SYS_ARCH:"%"=%)
+CPU := $(CONFIG_SYS_CPU:"%"=%)
+BOARD := $(CONFIG_SYS_BOARD:"%"=%)
+ifneq ($(CONFIG_SYS_VENDOR),)
+VENDOR := $(CONFIG_SYS_VENDOR:"%"=%)
+endif
+ifneq ($(CONFIG_SYS_SOC),)
+SOC := $(CONFIG_SYS_SOC:"%"=%)
+endif
+
# Some architecture config.mk files need to know what CPUDIR is set to,
# so calculate CPUDIR before including ARCH/SOC/CPU config.mk files.
# Check if arch/$ARCH/cpu/$CPU exists, otherwise assume arch/$ARCH/cpu contains
diff --git a/configs/A13-OLinuXinoM_defconfig b/configs/A13-OLinuXinoM_defconfig
new file mode 100644
index 0000000..1731200
--- /dev/null
+++ b/configs/A13-OLinuXinoM_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="A13_OLINUXINOM,SPL,CONS_INDEX=2"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SUN5I=y
diff --git a/configs/A3000_defconfig b/configs/A3000_defconfig
new file mode 100644
index 0000000..e1923de
--- /dev/null
+++ b/configs/A3000_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC824X=y
+CONFIG_TARGET_A3000=y
diff --git a/configs/APC405_defconfig b/configs/APC405_defconfig
new file mode 100644
index 0000000..d9da49b
--- /dev/null
+++ b/configs/APC405_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_APC405=y
diff --git a/configs/AR405_defconfig b/configs/AR405_defconfig
new file mode 100644
index 0000000..be65ab7
--- /dev/null
+++ b/configs/AR405_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_AR405=y
diff --git a/configs/ASH405_defconfig b/configs/ASH405_defconfig
new file mode 100644
index 0000000..ee094cb
--- /dev/null
+++ b/configs/ASH405_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_ASH405=y
diff --git a/configs/B4420QDS_NAND_defconfig b/configs/B4420QDS_NAND_defconfig
new file mode 100644
index 0000000..5367e9b
--- /dev/null
+++ b/configs/B4420QDS_NAND_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="PPC_B4420,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_B4860QDS=y
diff --git a/configs/B4420QDS_SPIFLASH_defconfig b/configs/B4420QDS_SPIFLASH_defconfig
new file mode 100644
index 0000000..d62a068
--- /dev/null
+++ b/configs/B4420QDS_SPIFLASH_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_B4420,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_B4860QDS=y
diff --git a/configs/B4420QDS_defconfig b/configs/B4420QDS_defconfig
new file mode 100644
index 0000000..dc77f70
--- /dev/null
+++ b/configs/B4420QDS_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_B4420"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_B4860QDS=y
diff --git a/configs/B4860QDS_NAND_defconfig b/configs/B4860QDS_NAND_defconfig
new file mode 100644
index 0000000..05cf734
--- /dev/null
+++ b/configs/B4860QDS_NAND_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="PPC_B4860,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_B4860QDS=y
diff --git a/configs/B4860QDS_SECURE_BOOT_defconfig b/configs/B4860QDS_SECURE_BOOT_defconfig
new file mode 100644
index 0000000..f73a2ae
--- /dev/null
+++ b/configs/B4860QDS_SECURE_BOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_B4860,SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_B4860QDS=y
diff --git a/configs/B4860QDS_SPIFLASH_defconfig b/configs/B4860QDS_SPIFLASH_defconfig
new file mode 100644
index 0000000..235d3ea
--- /dev/null
+++ b/configs/B4860QDS_SPIFLASH_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_B4860,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_B4860QDS=y
diff --git a/configs/B4860QDS_SRIO_PCIE_BOOT_defconfig b/configs/B4860QDS_SRIO_PCIE_BOOT_defconfig
new file mode 100644
index 0000000..dda1944
--- /dev/null
+++ b/configs/B4860QDS_SRIO_PCIE_BOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_B4860,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_B4860QDS=y
diff --git a/configs/B4860QDS_defconfig b/configs/B4860QDS_defconfig
new file mode 100644
index 0000000..15b3dfb
--- /dev/null
+++ b/configs/B4860QDS_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_B4860"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_B4860QDS=y
diff --git a/configs/BC3450_defconfig b/configs/BC3450_defconfig
new file mode 100644
index 0000000..ecb46e9
--- /dev/null
+++ b/configs/BC3450_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_BC3450=y
diff --git a/configs/BSC9131RDB_NAND_SYSCLK100_defconfig b/configs/BSC9131RDB_NAND_SYSCLK100_defconfig
new file mode 100644
index 0000000..1adc2b8
--- /dev/null
+++ b/configs/BSC9131RDB_NAND_SYSCLK100_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="BSC9131RDB,NAND,SYS_CLK_100"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_BSC9131RDB=y
diff --git a/configs/BSC9131RDB_NAND_defconfig b/configs/BSC9131RDB_NAND_defconfig
new file mode 100644
index 0000000..502fa31
--- /dev/null
+++ b/configs/BSC9131RDB_NAND_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="BSC9131RDB,NAND"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_BSC9131RDB=y
diff --git a/configs/BSC9131RDB_SPIFLASH_SYSCLK100_defconfig b/configs/BSC9131RDB_SPIFLASH_SYSCLK100_defconfig
new file mode 100644
index 0000000..895ae12
--- /dev/null
+++ b/configs/BSC9131RDB_SPIFLASH_SYSCLK100_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="BSC9131RDB,SPIFLASH,SYS_CLK_100"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_BSC9131RDB=y
diff --git a/configs/BSC9131RDB_SPIFLASH_defconfig b/configs/BSC9131RDB_SPIFLASH_defconfig
new file mode 100644
index 0000000..8961976
--- /dev/null
+++ b/configs/BSC9131RDB_SPIFLASH_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="BSC9131RDB,SPIFLASH"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_BSC9131RDB=y
diff --git a/configs/BSC9132QDS_NAND_DDRCLK100_SECURE_defconfig b/configs/BSC9132QDS_NAND_DDRCLK100_SECURE_defconfig
new file mode 100644
index 0000000..8aef0d6
--- /dev/null
+++ b/configs/BSC9132QDS_NAND_DDRCLK100_SECURE_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,NAND_SECBOOT,SYS_CLK_100_DDR_100,SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_BSC9132QDS=y
diff --git a/configs/BSC9132QDS_NAND_DDRCLK100_defconfig b/configs/BSC9132QDS_NAND_DDRCLK100_defconfig
new file mode 100644
index 0000000..3c3b46e
--- /dev/null
+++ b/configs/BSC9132QDS_NAND_DDRCLK100_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,NAND,SYS_CLK_100_DDR_100"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_BSC9132QDS=y
diff --git a/configs/BSC9132QDS_NAND_DDRCLK133_SECURE_defconfig b/configs/BSC9132QDS_NAND_DDRCLK133_SECURE_defconfig
new file mode 100644
index 0000000..ac31fad
--- /dev/null
+++ b/configs/BSC9132QDS_NAND_DDRCLK133_SECURE_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,NAND_SECBOOT,SYS_CLK_100_DDR_133,SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_BSC9132QDS=y
diff --git a/configs/BSC9132QDS_NAND_DDRCLK133_defconfig b/configs/BSC9132QDS_NAND_DDRCLK133_defconfig
new file mode 100644
index 0000000..d2e7391
--- /dev/null
+++ b/configs/BSC9132QDS_NAND_DDRCLK133_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,NAND,SYS_CLK_100_DDR_133"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_BSC9132QDS=y
diff --git a/configs/BSC9132QDS_NOR_DDRCLK100_SECURE_defconfig b/configs/BSC9132QDS_NOR_DDRCLK100_SECURE_defconfig
new file mode 100644
index 0000000..b26f6e0
--- /dev/null
+++ b/configs/BSC9132QDS_NOR_DDRCLK100_SECURE_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SYS_CLK_100_DDR_100,SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_BSC9132QDS=y
diff --git a/configs/BSC9132QDS_NOR_DDRCLK100_defconfig b/configs/BSC9132QDS_NOR_DDRCLK100_defconfig
new file mode 100644
index 0000000..7eaa32d
--- /dev/null
+++ b/configs/BSC9132QDS_NOR_DDRCLK100_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SYS_CLK_100_DDR_100"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_BSC9132QDS=y
diff --git a/configs/BSC9132QDS_NOR_DDRCLK133_SECURE_defconfig b/configs/BSC9132QDS_NOR_DDRCLK133_SECURE_defconfig
new file mode 100644
index 0000000..13d7794
--- /dev/null
+++ b/configs/BSC9132QDS_NOR_DDRCLK133_SECURE_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SYS_CLK_100_DDR_133,SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_BSC9132QDS=y
diff --git a/configs/BSC9132QDS_NOR_DDRCLK133_defconfig b/configs/BSC9132QDS_NOR_DDRCLK133_defconfig
new file mode 100644
index 0000000..7e205c5
--- /dev/null
+++ b/configs/BSC9132QDS_NOR_DDRCLK133_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SYS_CLK_100_DDR_133"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_BSC9132QDS=y
diff --git a/configs/BSC9132QDS_SDCARD_DDRCLK100_SECURE_defconfig b/configs/BSC9132QDS_SDCARD_DDRCLK100_SECURE_defconfig
new file mode 100644
index 0000000..8e5585a
--- /dev/null
+++ b/configs/BSC9132QDS_SDCARD_DDRCLK100_SECURE_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SDCARD,SYS_CLK_100_DDR_100,SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_BSC9132QDS=y
diff --git a/configs/BSC9132QDS_SDCARD_DDRCLK100_defconfig b/configs/BSC9132QDS_SDCARD_DDRCLK100_defconfig
new file mode 100644
index 0000000..6a7920f
--- /dev/null
+++ b/configs/BSC9132QDS_SDCARD_DDRCLK100_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SDCARD,SYS_CLK_100_DDR_100"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_BSC9132QDS=y
diff --git a/configs/BSC9132QDS_SDCARD_DDRCLK133_SECURE_defconfig b/configs/BSC9132QDS_SDCARD_DDRCLK133_SECURE_defconfig
new file mode 100644
index 0000000..920cf6c
--- /dev/null
+++ b/configs/BSC9132QDS_SDCARD_DDRCLK133_SECURE_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SDCARD,SYS_CLK_100_DDR_133,SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_BSC9132QDS=y
diff --git a/configs/BSC9132QDS_SDCARD_DDRCLK133_defconfig b/configs/BSC9132QDS_SDCARD_DDRCLK133_defconfig
new file mode 100644
index 0000000..95a35f2
--- /dev/null
+++ b/configs/BSC9132QDS_SDCARD_DDRCLK133_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SDCARD,SYS_CLK_100_DDR_133"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_BSC9132QDS=y
diff --git a/configs/BSC9132QDS_SPIFLASH_DDRCLK100_SECURE_defconfig b/configs/BSC9132QDS_SPIFLASH_DDRCLK100_SECURE_defconfig
new file mode 100644
index 0000000..c55b5a7
--- /dev/null
+++ b/configs/BSC9132QDS_SPIFLASH_DDRCLK100_SECURE_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SPIFLASH,SYS_CLK_100_DDR_100,SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_BSC9132QDS=y
diff --git a/configs/BSC9132QDS_SPIFLASH_DDRCLK100_defconfig b/configs/BSC9132QDS_SPIFLASH_DDRCLK100_defconfig
new file mode 100644
index 0000000..85e4701
--- /dev/null
+++ b/configs/BSC9132QDS_SPIFLASH_DDRCLK100_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SPIFLASH,SYS_CLK_100_DDR_100"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_BSC9132QDS=y
diff --git a/configs/BSC9132QDS_SPIFLASH_DDRCLK133_SECURE_defconfig b/configs/BSC9132QDS_SPIFLASH_DDRCLK133_SECURE_defconfig
new file mode 100644
index 0000000..7eb3727
--- /dev/null
+++ b/configs/BSC9132QDS_SPIFLASH_DDRCLK133_SECURE_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SPIFLASH,SYS_CLK_100_DDR_133,SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_BSC9132QDS=y
diff --git a/configs/BSC9132QDS_SPIFLASH_DDRCLK133_defconfig b/configs/BSC9132QDS_SPIFLASH_DDRCLK133_defconfig
new file mode 100644
index 0000000..b8e4e7d
--- /dev/null
+++ b/configs/BSC9132QDS_SPIFLASH_DDRCLK133_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SPIFLASH,SYS_CLK_100_DDR_133"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_BSC9132QDS=y
diff --git a/configs/C29XPCIE_NAND_defconfig b/configs/C29XPCIE_NAND_defconfig
new file mode 100644
index 0000000..c932579
--- /dev/null
+++ b/configs/C29XPCIE_NAND_defconfig
@@ -0,0 +1,6 @@
+CONFIG_SPL=y
+CONFIG_TPL=y
+CONFIG_SYS_EXTRA_OPTIONS="C29XPCIE,36BIT,NAND"
++ST:CONFIG_PPC=y
++ST:CONFIG_MPC85xx=y
++ST:CONFIG_TARGET_C29XPCIE=y
diff --git a/configs/C29XPCIE_SPIFLASH_defconfig b/configs/C29XPCIE_SPIFLASH_defconfig
new file mode 100644
index 0000000..2185d9d
--- /dev/null
+++ b/configs/C29XPCIE_SPIFLASH_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="C29XPCIE,36BIT,SPIFLASH"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_C29XPCIE=y
diff --git a/configs/C29XPCIE_defconfig b/configs/C29XPCIE_defconfig
new file mode 100644
index 0000000..2ee3305
--- /dev/null
+++ b/configs/C29XPCIE_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="C29XPCIE,36BIT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_C29XPCIE=y
diff --git a/configs/CATcenter_25_defconfig b/configs/CATcenter_25_defconfig
new file mode 100644
index 0000000..1a8903c
--- /dev/null
+++ b/configs/CATcenter_25_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPCHAMELEON_MODULE_MODEL=1,PPCHAMELEON_CLK_25"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_CATCENTER=y
diff --git a/configs/CATcenter_33_defconfig b/configs/CATcenter_33_defconfig
new file mode 100644
index 0000000..4b0eb8d
--- /dev/null
+++ b/configs/CATcenter_33_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPCHAMELEON_MODULE_MODEL=1,PPCHAMELEON_CLK_33"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_CATCENTER=y
diff --git a/configs/CATcenter_defconfig b/configs/CATcenter_defconfig
new file mode 100644
index 0000000..53e00ad
--- /dev/null
+++ b/configs/CATcenter_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPCHAMELEON_MODULE_MODEL=1"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_CATCENTER=y
diff --git a/configs/CMS700_defconfig b/configs/CMS700_defconfig
new file mode 100644
index 0000000..dd21223
--- /dev/null
+++ b/configs/CMS700_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_CMS700=y
diff --git a/configs/CPC45_ROMBOOT_defconfig b/configs/CPC45_ROMBOOT_defconfig
new file mode 100644
index 0000000..4aae7f6
--- /dev/null
+++ b/configs/CPC45_ROMBOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="BOOT_ROM"
+CONFIG_PPC=y
+CONFIG_MPC824X=y
+CONFIG_TARGET_CPC45=y
diff --git a/configs/CPC45_defconfig b/configs/CPC45_defconfig
new file mode 100644
index 0000000..77ae66c
--- /dev/null
+++ b/configs/CPC45_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC824X=y
+CONFIG_TARGET_CPC45=y
diff --git a/configs/CPCI2DP_defconfig b/configs/CPCI2DP_defconfig
new file mode 100644
index 0000000..23631e9
--- /dev/null
+++ b/configs/CPCI2DP_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_CPCI2DP=y
diff --git a/configs/CPCI4052_defconfig b/configs/CPCI4052_defconfig
new file mode 100644
index 0000000..5d30b79
--- /dev/null
+++ b/configs/CPCI4052_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_CPCI4052=y
diff --git a/configs/CPCI405AB_defconfig b/configs/CPCI405AB_defconfig
new file mode 100644
index 0000000..6550fd1
--- /dev/null
+++ b/configs/CPCI405AB_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_CPCI405AB=y
diff --git a/configs/CPCI405DT_defconfig b/configs/CPCI405DT_defconfig
new file mode 100644
index 0000000..b61f65c
--- /dev/null
+++ b/configs/CPCI405DT_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_CPCI405DT=y
diff --git a/configs/CPCI405_defconfig b/configs/CPCI405_defconfig
new file mode 100644
index 0000000..1638e2b
--- /dev/null
+++ b/configs/CPCI405_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_CPCI405=y
diff --git a/configs/CPCI750_defconfig b/configs/CPCI750_defconfig
new file mode 100644
index 0000000..abdd4d2
--- /dev/null
+++ b/configs/CPCI750_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_74xx_7xx=y
+CONFIG_TARGET_CPCI750=y
diff --git a/configs/CPCIISER4_defconfig b/configs/CPCIISER4_defconfig
new file mode 100644
index 0000000..2a7566d
--- /dev/null
+++ b/configs/CPCIISER4_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_CPCIISER4=y
diff --git a/configs/CPU86_ROMBOOT_defconfig b/configs/CPU86_ROMBOOT_defconfig
new file mode 100644
index 0000000..41aa7df
--- /dev/null
+++ b/configs/CPU86_ROMBOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="BOOT_ROM"
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_CPU86=y
diff --git a/configs/CPU86_defconfig b/configs/CPU86_defconfig
new file mode 100644
index 0000000..f0a4049
--- /dev/null
+++ b/configs/CPU86_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_CPU86=y
diff --git a/configs/CPU87_ROMBOOT_defconfig b/configs/CPU87_ROMBOOT_defconfig
new file mode 100644
index 0000000..ba13b40
--- /dev/null
+++ b/configs/CPU87_ROMBOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="BOOT_ROM"
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_CPU87=y
diff --git a/configs/CPU87_defconfig b/configs/CPU87_defconfig
new file mode 100644
index 0000000..86a5737
--- /dev/null
+++ b/configs/CPU87_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_CPU87=y
diff --git a/configs/CRAYL1_defconfig b/configs/CRAYL1_defconfig
new file mode 100644
index 0000000..ad6cbac
--- /dev/null
+++ b/configs/CRAYL1_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_CRAYL1=y
diff --git a/configs/CU824_defconfig b/configs/CU824_defconfig
new file mode 100644
index 0000000..0f22188
--- /dev/null
+++ b/configs/CU824_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC824X=y
+CONFIG_TARGET_CU824=y
diff --git a/configs/Cubieboard2_FEL_defconfig b/configs/Cubieboard2_FEL_defconfig
new file mode 100644
index 0000000..08f3159
--- /dev/null
+++ b/configs/Cubieboard2_FEL_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="CUBIEBOARD2,SPL_FEL,SUNXI_GMAC"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SUN7I=y
diff --git a/configs/Cubieboard2_defconfig b/configs/Cubieboard2_defconfig
new file mode 100644
index 0000000..122dac9
--- /dev/null
+++ b/configs/Cubieboard2_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="CUBIEBOARD2,SPL,SUNXI_GMAC"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SUN7I=y
diff --git a/configs/Cubieboard_defconfig b/configs/Cubieboard_defconfig
new file mode 100644
index 0000000..29bf836
--- /dev/null
+++ b/configs/Cubieboard_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="CUBIEBOARD,SPL,AXP209_POWER,SUNXI_EMAC"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SUN4I=y
diff --git a/configs/Cubietruck_FEL_defconfig b/configs/Cubietruck_FEL_defconfig
new file mode 100644
index 0000000..b95c5fa
--- /dev/null
+++ b/configs/Cubietruck_FEL_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="CUBIETRUCK,SPL_FEL,AXP209_POWER,SUNXI_GMAC,RGMII"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SUN7I=y
diff --git a/configs/Cubietruck_defconfig b/configs/Cubietruck_defconfig
new file mode 100644
index 0000000..4c1e9a3
--- /dev/null
+++ b/configs/Cubietruck_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="CUBIETRUCK,SPL,AXP209_POWER,SUNXI_GMAC,RGMII"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SUN7I=y
diff --git a/configs/DB64360_defconfig b/configs/DB64360_defconfig
new file mode 100644
index 0000000..358b096
--- /dev/null
+++ b/configs/DB64360_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_74xx_7xx=y
+CONFIG_TARGET_DB64360=y
diff --git a/configs/DB64460_defconfig b/configs/DB64460_defconfig
new file mode 100644
index 0000000..4ff2fad
--- /dev/null
+++ b/configs/DB64460_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_74xx_7xx=y
+CONFIG_TARGET_DB64460=y
diff --git a/configs/DP405_defconfig b/configs/DP405_defconfig
new file mode 100644
index 0000000..4d48276
--- /dev/null
+++ b/configs/DP405_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_DP405=y
diff --git a/configs/DU405_defconfig b/configs/DU405_defconfig
new file mode 100644
index 0000000..fdfe41b
--- /dev/null
+++ b/configs/DU405_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_DU405=y
diff --git a/configs/DU440_defconfig b/configs/DU440_defconfig
new file mode 100644
index 0000000..59891fe
--- /dev/null
+++ b/configs/DU440_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_DU440=y
diff --git a/configs/ELPPC_defconfig b/configs/ELPPC_defconfig
new file mode 100644
index 0000000..c4694ef
--- /dev/null
+++ b/configs/ELPPC_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_74xx_7xx=y
+CONFIG_TARGET_ELPPC=y
diff --git a/configs/ELPT860_defconfig b/configs/ELPT860_defconfig
new file mode 100644
index 0000000..d02b313
--- /dev/null
+++ b/configs/ELPT860_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_ELPT860=y
diff --git a/configs/ESTEEM192E_defconfig b/configs/ESTEEM192E_defconfig
new file mode 100644
index 0000000..e6279b8
--- /dev/null
+++ b/configs/ESTEEM192E_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_ESTEEM192E=y
diff --git a/configs/EVAL5200_defconfig b/configs/EVAL5200_defconfig
new file mode 100644
index 0000000..6a272d2
--- /dev/null
+++ b/configs/EVAL5200_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="EVAL5200"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_TOP5200=y
diff --git a/configs/FLAGADM_defconfig b/configs/FLAGADM_defconfig
new file mode 100644
index 0000000..6113797
--- /dev/null
+++ b/configs/FLAGADM_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_FLAGADM=y
diff --git a/configs/FPS850L_defconfig b/configs/FPS850L_defconfig
new file mode 100644
index 0000000..e72ccdd
--- /dev/null
+++ b/configs/FPS850L_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_FPS850L=y
diff --git a/configs/FPS860L_defconfig b/configs/FPS860L_defconfig
new file mode 100644
index 0000000..643da6a
--- /dev/null
+++ b/configs/FPS860L_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_FPS860L=y
diff --git a/configs/G2000_defconfig b/configs/G2000_defconfig
new file mode 100644
index 0000000..a01bc0f
--- /dev/null
+++ b/configs/G2000_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_G2000=y
diff --git a/configs/GEN860T_SC_defconfig b/configs/GEN860T_SC_defconfig
new file mode 100644
index 0000000..ff624db
--- /dev/null
+++ b/configs/GEN860T_SC_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SC"
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_GEN860T=y
diff --git a/configs/GEN860T_defconfig b/configs/GEN860T_defconfig
new file mode 100644
index 0000000..e672623
--- /dev/null
+++ b/configs/GEN860T_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_GEN860T=y
diff --git a/configs/HH405_defconfig b/configs/HH405_defconfig
new file mode 100644
index 0000000..1571f32
--- /dev/null
+++ b/configs/HH405_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_HH405=y
diff --git a/configs/HUB405_defconfig b/configs/HUB405_defconfig
new file mode 100644
index 0000000..a39712e
--- /dev/null
+++ b/configs/HUB405_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_HUB405=y
diff --git a/configs/HWW1U1A_defconfig b/configs/HWW1U1A_defconfig
new file mode 100644
index 0000000..8947be2
--- /dev/null
+++ b/configs/HWW1U1A_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_HWW1U1A=y
diff --git a/configs/ICU862_100MHz_defconfig b/configs/ICU862_100MHz_defconfig
new file mode 100644
index 0000000..72f0dfa
--- /dev/null
+++ b/configs/ICU862_100MHz_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="100MHz"
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_ICU862=y
diff --git a/configs/ICU862_defconfig b/configs/ICU862_defconfig
new file mode 100644
index 0000000..b58ea05
--- /dev/null
+++ b/configs/ICU862_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_ICU862=y
diff --git a/configs/IDS8247_defconfig b/configs/IDS8247_defconfig
new file mode 100644
index 0000000..b4dd23f
--- /dev/null
+++ b/configs/IDS8247_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_IDS8247=y
diff --git a/configs/IP860_defconfig b/configs/IP860_defconfig
new file mode 100644
index 0000000..feb243d
--- /dev/null
+++ b/configs/IP860_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_IP860=y
diff --git a/configs/IPHASE4539_defconfig b/configs/IPHASE4539_defconfig
new file mode 100644
index 0000000..d49ea52
--- /dev/null
+++ b/configs/IPHASE4539_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_IPHASE4539=y
diff --git a/configs/IVML24_128_defconfig b/configs/IVML24_128_defconfig
new file mode 100644
index 0000000..f0850f6
--- /dev/null
+++ b/configs/IVML24_128_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="IVML24_32M"
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_IVML24=y
diff --git a/configs/IVML24_256_defconfig b/configs/IVML24_256_defconfig
new file mode 100644
index 0000000..9c241c2
--- /dev/null
+++ b/configs/IVML24_256_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="IVML24_64M"
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_IVML24=y
diff --git a/configs/IVML24_defconfig b/configs/IVML24_defconfig
new file mode 100644
index 0000000..0f85d43
--- /dev/null
+++ b/configs/IVML24_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="IVML24_16M"
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_IVML24=y
diff --git a/configs/IVMS8_128_defconfig b/configs/IVMS8_128_defconfig
new file mode 100644
index 0000000..685d76f
--- /dev/null
+++ b/configs/IVMS8_128_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="IVMS8_32M"
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_IVMS8=y
diff --git a/configs/IVMS8_256_defconfig b/configs/IVMS8_256_defconfig
new file mode 100644
index 0000000..63435d2
--- /dev/null
+++ b/configs/IVMS8_256_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="IVMS8_64M"
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_IVMS8=y
diff --git a/configs/IVMS8_defconfig b/configs/IVMS8_defconfig
new file mode 100644
index 0000000..3f4087b
--- /dev/null
+++ b/configs/IVMS8_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="IVMS8_16M"
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_IVMS8=y
diff --git a/configs/JSE_defconfig b/configs/JSE_defconfig
new file mode 100644
index 0000000..14c9c2f
--- /dev/null
+++ b/configs/JSE_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_JSE=y
diff --git a/configs/KAREF_defconfig b/configs/KAREF_defconfig
new file mode 100644
index 0000000..fcca3c9
--- /dev/null
+++ b/configs/KAREF_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_KAREF=y
diff --git a/configs/KUP4K_defconfig b/configs/KUP4K_defconfig
new file mode 100644
index 0000000..8e9e26d
--- /dev/null
+++ b/configs/KUP4K_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_KUP4K=y
diff --git a/configs/KUP4X_defconfig b/configs/KUP4X_defconfig
new file mode 100644
index 0000000..29520c9
--- /dev/null
+++ b/configs/KUP4X_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_KUP4X=y
diff --git a/configs/Lite5200_LOWBOOT08_defconfig b/configs/Lite5200_LOWBOOT08_defconfig
new file mode 100644
index 0000000..9f0cbd8
--- /dev/null
+++ b/configs/Lite5200_LOWBOOT08_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0xFF800000"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_ICECUBE=y
diff --git a/configs/Lite5200_LOWBOOT_defconfig b/configs/Lite5200_LOWBOOT_defconfig
new file mode 100644
index 0000000..ff1552f
--- /dev/null
+++ b/configs/Lite5200_LOWBOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0xFF000000"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_ICECUBE=y
diff --git a/configs/Lite5200_defconfig b/configs/Lite5200_defconfig
new file mode 100644
index 0000000..49fdb3b
--- /dev/null
+++ b/configs/Lite5200_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_ICECUBE=y
diff --git a/configs/M5208EVBE_defconfig b/configs/M5208EVBE_defconfig
new file mode 100644
index 0000000..c727683
--- /dev/null
+++ b/configs/M5208EVBE_defconfig
@@ -0,0 +1,2 @@
+CONFIG_M68K=y
+CONFIG_TARGET_M5208EVBE=y
diff --git a/configs/M52277EVB_defconfig b/configs/M52277EVB_defconfig
new file mode 100644
index 0000000..bcf2359
--- /dev/null
+++ b/configs/M52277EVB_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_SPANSION_BOOT,SYS_TEXT_BASE=0x00000000"
+CONFIG_M68K=y
+CONFIG_TARGET_M52277EVB=y
diff --git a/configs/M52277EVB_stmicro_defconfig b/configs/M52277EVB_stmicro_defconfig
new file mode 100644
index 0000000..0e49bc3
--- /dev/null
+++ b/configs/M52277EVB_stmicro_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="CF_SBF,SYS_STMICRO_BOOT,SYS_TEXT_BASE=0x43E00000"
+CONFIG_M68K=y
+CONFIG_TARGET_M52277EVB=y
diff --git a/configs/M5235EVB_Flash32_defconfig b/configs/M5235EVB_Flash32_defconfig
new file mode 100644
index 0000000..e6facec
--- /dev/null
+++ b/configs/M5235EVB_Flash32_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="NORFLASH_PS32BIT,SYS_TEXT_BASE=0xFFC00000"
+CONFIG_M68K=y
+CONFIG_TARGET_M5235EVB=y
diff --git a/configs/M5235EVB_defconfig b/configs/M5235EVB_defconfig
new file mode 100644
index 0000000..04b11ec
--- /dev/null
+++ b/configs/M5235EVB_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0xFFE00000"
+CONFIG_M68K=y
+CONFIG_TARGET_M5235EVB=y
diff --git a/configs/M5249EVB_defconfig b/configs/M5249EVB_defconfig
new file mode 100644
index 0000000..fb29274
--- /dev/null
+++ b/configs/M5249EVB_defconfig
@@ -0,0 +1,2 @@
+CONFIG_M68K=y
+CONFIG_TARGET_M5249EVB=y
diff --git a/configs/M5253DEMO_defconfig b/configs/M5253DEMO_defconfig
new file mode 100644
index 0000000..68cad2f
--- /dev/null
+++ b/configs/M5253DEMO_defconfig
@@ -0,0 +1,2 @@
+CONFIG_M68K=y
+CONFIG_TARGET_M5253DEMO=y
diff --git a/configs/M5253EVBE_defconfig b/configs/M5253EVBE_defconfig
new file mode 100644
index 0000000..5c562fe
--- /dev/null
+++ b/configs/M5253EVBE_defconfig
@@ -0,0 +1,2 @@
+CONFIG_M68K=y
+CONFIG_TARGET_M5253EVBE=y
diff --git a/configs/M5272C3_defconfig b/configs/M5272C3_defconfig
new file mode 100644
index 0000000..fdb872a
--- /dev/null
+++ b/configs/M5272C3_defconfig
@@ -0,0 +1,2 @@
+CONFIG_M68K=y
+CONFIG_TARGET_M5272C3=y
diff --git a/configs/M5275EVB_defconfig b/configs/M5275EVB_defconfig
new file mode 100644
index 0000000..1e33649
--- /dev/null
+++ b/configs/M5275EVB_defconfig
@@ -0,0 +1,2 @@
+CONFIG_M68K=y
+CONFIG_TARGET_M5275EVB=y
diff --git a/configs/M5282EVB_defconfig b/configs/M5282EVB_defconfig
new file mode 100644
index 0000000..66d742f
--- /dev/null
+++ b/configs/M5282EVB_defconfig
@@ -0,0 +1,2 @@
+CONFIG_M68K=y
+CONFIG_TARGET_M5282EVB=y
diff --git a/configs/M53017EVB_defconfig b/configs/M53017EVB_defconfig
new file mode 100644
index 0000000..d83e638
--- /dev/null
+++ b/configs/M53017EVB_defconfig
@@ -0,0 +1,2 @@
+CONFIG_M68K=y
+CONFIG_TARGET_M53017EVB=y
diff --git a/configs/M5329AFEE_defconfig b/configs/M5329AFEE_defconfig
new file mode 100644
index 0000000..048d3a9
--- /dev/null
+++ b/configs/M5329AFEE_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="NANDFLASH_SIZE=0"
+CONFIG_M68K=y
+CONFIG_TARGET_M5329EVB=y
diff --git a/configs/M5329BFEE_defconfig b/configs/M5329BFEE_defconfig
new file mode 100644
index 0000000..01e3d6a
--- /dev/null
+++ b/configs/M5329BFEE_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="NANDFLASH_SIZE=16"
+CONFIG_M68K=y
+CONFIG_TARGET_M5329EVB=y
diff --git a/configs/M5373EVB_defconfig b/configs/M5373EVB_defconfig
new file mode 100644
index 0000000..51a7b81
--- /dev/null
+++ b/configs/M5373EVB_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="NANDFLASH_SIZE=16"
+CONFIG_M68K=y
+CONFIG_TARGET_M5373EVB=y
diff --git a/configs/M54418TWR_defconfig b/configs/M54418TWR_defconfig
new file mode 100644
index 0000000..8f18bbe
--- /dev/null
+++ b/configs/M54418TWR_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="CF_SBF,SYS_SERIAL_BOOT,SYS_TEXT_BASE=0x47E00000,SYS_INPUT_CLKSRC=50000000"
+CONFIG_M68K=y
+CONFIG_TARGET_M54418TWR=y
diff --git a/configs/M54418TWR_nand_mii_defconfig b/configs/M54418TWR_nand_mii_defconfig
new file mode 100644
index 0000000..4b1c6c9
--- /dev/null
+++ b/configs/M54418TWR_nand_mii_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_NAND_BOOT,SYS_TEXT_BASE=0x47E00000,SYS_INPUT_CLKSRC=25000000"
+CONFIG_M68K=y
+CONFIG_TARGET_M54418TWR=y
diff --git a/configs/M54418TWR_nand_rmii_defconfig b/configs/M54418TWR_nand_rmii_defconfig
new file mode 100644
index 0000000..72cc83c
--- /dev/null
+++ b/configs/M54418TWR_nand_rmii_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_NAND_BOOT,SYS_TEXT_BASE=0x47E00000,SYS_INPUT_CLKSRC=50000000"
+CONFIG_M68K=y
+CONFIG_TARGET_M54418TWR=y
diff --git a/configs/M54418TWR_nand_rmii_lowfreq_defconfig b/configs/M54418TWR_nand_rmii_lowfreq_defconfig
new file mode 100644
index 0000000..0bc929f
--- /dev/null
+++ b/configs/M54418TWR_nand_rmii_lowfreq_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_NAND_BOOT,LOW_MCFCLK,SYS_TEXT_BASE=0x47E00000,SYS_INPUT_CLKSRC=50000000"
+CONFIG_M68K=y
+CONFIG_TARGET_M54418TWR=y
diff --git a/configs/M54418TWR_serial_mii_defconfig b/configs/M54418TWR_serial_mii_defconfig
new file mode 100644
index 0000000..93fe401
--- /dev/null
+++ b/configs/M54418TWR_serial_mii_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="CF_SBF,SYS_SERIAL_BOOT,SYS_TEXT_BASE=0x47E00000,SYS_INPUT_CLKSRC=25000000"
+CONFIG_M68K=y
+CONFIG_TARGET_M54418TWR=y
diff --git a/configs/M54418TWR_serial_rmii_defconfig b/configs/M54418TWR_serial_rmii_defconfig
new file mode 100644
index 0000000..8f18bbe
--- /dev/null
+++ b/configs/M54418TWR_serial_rmii_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="CF_SBF,SYS_SERIAL_BOOT,SYS_TEXT_BASE=0x47E00000,SYS_INPUT_CLKSRC=50000000"
+CONFIG_M68K=y
+CONFIG_TARGET_M54418TWR=y
diff --git a/configs/M54451EVB_defconfig b/configs/M54451EVB_defconfig
new file mode 100644
index 0000000..af02731
--- /dev/null
+++ b/configs/M54451EVB_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0x00000000,SYS_INPUT_CLKSRC=24000000"
+CONFIG_M68K=y
+CONFIG_TARGET_M54451EVB=y
diff --git a/configs/M54451EVB_stmicro_defconfig b/configs/M54451EVB_stmicro_defconfig
new file mode 100644
index 0000000..4a3c87f
--- /dev/null
+++ b/configs/M54451EVB_stmicro_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="CF_SBF,SYS_STMICRO_BOOT,SYS_TEXT_BASE=0x47e00000,SYS_INPUT_CLKSRC=24000000"
+CONFIG_M68K=y
+CONFIG_TARGET_M54451EVB=y
diff --git a/configs/M54455EVB_a66_defconfig b/configs/M54455EVB_a66_defconfig
new file mode 100644
index 0000000..b05a12e
--- /dev/null
+++ b/configs/M54455EVB_a66_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_ATMEL_BOOT,SYS_TEXT_BASE=0x04000000,SYS_INPUT_CLKSRC=66666666"
+CONFIG_M68K=y
+CONFIG_TARGET_M54455EVB=y
diff --git a/configs/M54455EVB_defconfig b/configs/M54455EVB_defconfig
new file mode 100644
index 0000000..ffd3407
--- /dev/null
+++ b/configs/M54455EVB_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_ATMEL_BOOT,SYS_TEXT_BASE=0x04000000,SYS_INPUT_CLKSRC=33333333"
+CONFIG_M68K=y
+CONFIG_TARGET_M54455EVB=y
diff --git a/configs/M54455EVB_i66_defconfig b/configs/M54455EVB_i66_defconfig
new file mode 100644
index 0000000..90cf787
--- /dev/null
+++ b/configs/M54455EVB_i66_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_INTEL_BOOT,SYS_TEXT_BASE=0x00000000,SYS_INPUT_CLKSRC=66666666"
+CONFIG_M68K=y
+CONFIG_TARGET_M54455EVB=y
diff --git a/configs/M54455EVB_intel_defconfig b/configs/M54455EVB_intel_defconfig
new file mode 100644
index 0000000..a3d69db
--- /dev/null
+++ b/configs/M54455EVB_intel_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_INTEL_BOOT,SYS_TEXT_BASE=0x00000000,SYS_INPUT_CLKSRC=33333333"
+CONFIG_M68K=y
+CONFIG_TARGET_M54455EVB=y
diff --git a/configs/M54455EVB_stm33_defconfig b/configs/M54455EVB_stm33_defconfig
new file mode 100644
index 0000000..cf33d0f
--- /dev/null
+++ b/configs/M54455EVB_stm33_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_STMICRO_BOOT,CF_SBF,SYS_TEXT_BASE=0x4FE00000,SYS_INPUT_CLKSRC=33333333"
+CONFIG_M68K=y
+CONFIG_TARGET_M54455EVB=y
diff --git a/configs/M5475AFE_defconfig b/configs/M5475AFE_defconfig
new file mode 100644
index 0000000..28fd0ec
--- /dev/null
+++ b/configs/M5475AFE_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_BUSCLK=133333333,SYS_BOOTSZ=2,SYS_DRAMSZ=64"
+CONFIG_M68K=y
+CONFIG_TARGET_M5475EVB=y
diff --git a/configs/M5475BFE_defconfig b/configs/M5475BFE_defconfig
new file mode 100644
index 0000000..329f3e3
--- /dev/null
+++ b/configs/M5475BFE_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_BUSCLK=133333333,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_NOR1SZ=16"
+CONFIG_M68K=y
+CONFIG_TARGET_M5475EVB=y
diff --git a/configs/M5475CFE_defconfig b/configs/M5475CFE_defconfig
new file mode 100644
index 0000000..8dd75db
--- /dev/null
+++ b/configs/M5475CFE_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_BUSCLK=133333333,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_NOR1SZ=16,SYS_VIDEO,SYS_USBCTRL"
+CONFIG_M68K=y
+CONFIG_TARGET_M5475EVB=y
diff --git a/configs/M5475DFE_defconfig b/configs/M5475DFE_defconfig
new file mode 100644
index 0000000..a6288da
--- /dev/null
+++ b/configs/M5475DFE_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_BUSCLK=133333333,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_USBCTRL"
+CONFIG_M68K=y
+CONFIG_TARGET_M5475EVB=y
diff --git a/configs/M5475EFE_defconfig b/configs/M5475EFE_defconfig
new file mode 100644
index 0000000..19640a2
--- /dev/null
+++ b/configs/M5475EFE_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_BUSCLK=133333333,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_VIDEO,SYS_USBCTRL"
+CONFIG_M68K=y
+CONFIG_TARGET_M5475EVB=y
diff --git a/configs/M5475FFE_defconfig b/configs/M5475FFE_defconfig
new file mode 100644
index 0000000..0201d38
--- /dev/null
+++ b/configs/M5475FFE_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_BUSCLK=133333333,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_NOR1SZ=32,SYS_VIDEO,SYS_USBCTRL,SYS_DRAMSZ1=64"
+CONFIG_M68K=y
+CONFIG_TARGET_M5475EVB=y
diff --git a/configs/M5475GFE_defconfig b/configs/M5475GFE_defconfig
new file mode 100644
index 0000000..b876868
--- /dev/null
+++ b/configs/M5475GFE_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_BUSCLK=133333333,SYS_BOOTSZ=4,SYS_DRAMSZ=64"
+CONFIG_M68K=y
+CONFIG_TARGET_M5475EVB=y
diff --git a/configs/M5485AFE_defconfig b/configs/M5485AFE_defconfig
new file mode 100644
index 0000000..612218d
--- /dev/null
+++ b/configs/M5485AFE_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_BUSCLK=100000000,SYS_BOOTSZ=2,SYS_DRAMSZ=64"
+CONFIG_M68K=y
+CONFIG_TARGET_M5485EVB=y
diff --git a/configs/M5485BFE_defconfig b/configs/M5485BFE_defconfig
new file mode 100644
index 0000000..697feb0
--- /dev/null
+++ b/configs/M5485BFE_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_BUSCLK=100000000,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_NOR1SZ=16"
+CONFIG_M68K=y
+CONFIG_TARGET_M5485EVB=y
diff --git a/configs/M5485CFE_defconfig b/configs/M5485CFE_defconfig
new file mode 100644
index 0000000..46c0d08
--- /dev/null
+++ b/configs/M5485CFE_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_BUSCLK=100000000,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_NOR1SZ=16,SYS_VIDEO,SYS_USBCTRL"
+CONFIG_M68K=y
+CONFIG_TARGET_M5485EVB=y
diff --git a/configs/M5485DFE_defconfig b/configs/M5485DFE_defconfig
new file mode 100644
index 0000000..ad6248d
--- /dev/null
+++ b/configs/M5485DFE_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_BUSCLK=100000000,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_USBCTRL"
+CONFIG_M68K=y
+CONFIG_TARGET_M5485EVB=y
diff --git a/configs/M5485EFE_defconfig b/configs/M5485EFE_defconfig
new file mode 100644
index 0000000..5f27496
--- /dev/null
+++ b/configs/M5485EFE_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_BUSCLK=100000000,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_VIDEO,SYS_USBCTRL"
+CONFIG_M68K=y
+CONFIG_TARGET_M5485EVB=y
diff --git a/configs/M5485FFE_defconfig b/configs/M5485FFE_defconfig
new file mode 100644
index 0000000..b1da743
--- /dev/null
+++ b/configs/M5485FFE_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_BUSCLK=100000000,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_NOR1SZ=32,SYS_VIDEO,SYS_USBCTRL,SYS_DRAMSZ1=64"
+CONFIG_M68K=y
+CONFIG_TARGET_M5485EVB=y
diff --git a/configs/M5485GFE_defconfig b/configs/M5485GFE_defconfig
new file mode 100644
index 0000000..578d24a
--- /dev/null
+++ b/configs/M5485GFE_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_BUSCLK=100000000,SYS_BOOTSZ=4,SYS_DRAMSZ=64"
+CONFIG_M68K=y
+CONFIG_TARGET_M5485EVB=y
diff --git a/configs/M5485HFE_defconfig b/configs/M5485HFE_defconfig
new file mode 100644
index 0000000..c632055
--- /dev/null
+++ b/configs/M5485HFE_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_BUSCLK=100000000,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_NOR1SZ=16,SYS_VIDEO"
+CONFIG_M68K=y
+CONFIG_TARGET_M5485EVB=y
diff --git a/configs/MERGERBOX_defconfig b/configs/MERGERBOX_defconfig
new file mode 100644
index 0000000..34a527e
--- /dev/null
+++ b/configs/MERGERBOX_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MERGERBOX=y
diff --git a/configs/METROBOX_defconfig b/configs/METROBOX_defconfig
new file mode 100644
index 0000000..14b471a
--- /dev/null
+++ b/configs/METROBOX_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_METROBOX=y
diff --git a/configs/MHPC_defconfig b/configs/MHPC_defconfig
new file mode 100644
index 0000000..b05d3c4
--- /dev/null
+++ b/configs/MHPC_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_MHPC=y
diff --git a/configs/MINI5200_defconfig b/configs/MINI5200_defconfig
new file mode 100644
index 0000000..dfe853e
--- /dev/null
+++ b/configs/MINI5200_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="MINI5200"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_TOP5200=y
diff --git a/configs/MIP405T_defconfig b/configs/MIP405T_defconfig
new file mode 100644
index 0000000..304d890
--- /dev/null
+++ b/configs/MIP405T_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="MIP405T"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_MIP405=y
diff --git a/configs/MIP405_defconfig b/configs/MIP405_defconfig
new file mode 100644
index 0000000..57004e8
--- /dev/null
+++ b/configs/MIP405_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_MIP405=y
diff --git a/configs/MPC8266ADS_defconfig b/configs/MPC8266ADS_defconfig
new file mode 100644
index 0000000..485c842
--- /dev/null
+++ b/configs/MPC8266ADS_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_MPC8266ADS=y
diff --git a/configs/MPC8308RDB_defconfig b/configs/MPC8308RDB_defconfig
new file mode 100644
index 0000000..64717ec
--- /dev/null
+++ b/configs/MPC8308RDB_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MPC8308RDB=y
diff --git a/configs/MPC8313ERDB_33_defconfig b/configs/MPC8313ERDB_33_defconfig
new file mode 100644
index 0000000..ca6c304
--- /dev/null
+++ b/configs/MPC8313ERDB_33_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_33MHZ"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MPC8313ERDB=y
diff --git a/configs/MPC8313ERDB_66_defconfig b/configs/MPC8313ERDB_66_defconfig
new file mode 100644
index 0000000..974bdf9
--- /dev/null
+++ b/configs/MPC8313ERDB_66_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_66MHZ"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MPC8313ERDB=y
diff --git a/configs/MPC8313ERDB_NAND_33_defconfig b/configs/MPC8313ERDB_NAND_33_defconfig
new file mode 100644
index 0000000..3a55931
--- /dev/null
+++ b/configs/MPC8313ERDB_NAND_33_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="SYS_33MHZ,NAND"
++S:CONFIG_PPC=y
++S:CONFIG_MPC83xx=y
++S:CONFIG_TARGET_MPC8313ERDB=y
diff --git a/configs/MPC8313ERDB_NAND_66_defconfig b/configs/MPC8313ERDB_NAND_66_defconfig
new file mode 100644
index 0000000..180316b
--- /dev/null
+++ b/configs/MPC8313ERDB_NAND_66_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="SYS_66MHZ,NAND"
++S:CONFIG_PPC=y
++S:CONFIG_MPC83xx=y
++S:CONFIG_TARGET_MPC8313ERDB=y
diff --git a/configs/MPC8315ERDB_defconfig b/configs/MPC8315ERDB_defconfig
new file mode 100644
index 0000000..ebebbed
--- /dev/null
+++ b/configs/MPC8315ERDB_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MPC8315ERDB=y
diff --git a/configs/MPC8323ERDB_defconfig b/configs/MPC8323ERDB_defconfig
new file mode 100644
index 0000000..7c03842
--- /dev/null
+++ b/configs/MPC8323ERDB_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MPC8323ERDB=y
diff --git a/configs/MPC832XEMDS_ATM_defconfig b/configs/MPC832XEMDS_ATM_defconfig
new file mode 100644
index 0000000..e1ba08d
--- /dev/null
+++ b/configs/MPC832XEMDS_ATM_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PQ_MDS_PIB=1,PQ_MDS_PIB_ATM=1"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MPC832XEMDS=y
diff --git a/configs/MPC832XEMDS_HOST_33_defconfig b/configs/MPC832XEMDS_HOST_33_defconfig
new file mode 100644
index 0000000..55df0f6
--- /dev/null
+++ b/configs/MPC832XEMDS_HOST_33_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PCI,PCI_33M,PQ_MDS_PIB=1"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MPC832XEMDS=y
diff --git a/configs/MPC832XEMDS_HOST_66_defconfig b/configs/MPC832XEMDS_HOST_66_defconfig
new file mode 100644
index 0000000..1ceee68
--- /dev/null
+++ b/configs/MPC832XEMDS_HOST_66_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PCI,PCI_66M,PQ_MDS_PIB=1"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MPC832XEMDS=y
diff --git a/configs/MPC832XEMDS_SLAVE_defconfig b/configs/MPC832XEMDS_SLAVE_defconfig
new file mode 100644
index 0000000..ef67be5
--- /dev/null
+++ b/configs/MPC832XEMDS_SLAVE_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PCI,PCISLAVE"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MPC832XEMDS=y
diff --git a/configs/MPC832XEMDS_defconfig b/configs/MPC832XEMDS_defconfig
new file mode 100644
index 0000000..0398472
--- /dev/null
+++ b/configs/MPC832XEMDS_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MPC832XEMDS=y
diff --git a/configs/MPC8349EMDS_defconfig b/configs/MPC8349EMDS_defconfig
new file mode 100644
index 0000000..f6af218
--- /dev/null
+++ b/configs/MPC8349EMDS_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MPC8349EMDS=y
diff --git a/configs/MPC8349ITXGP_defconfig b/configs/MPC8349ITXGP_defconfig
new file mode 100644
index 0000000..f853309
--- /dev/null
+++ b/configs/MPC8349ITXGP_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="MPC8349ITXGP,SYS_TEXT_BASE=0xFE000000"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MPC8349ITX=y
diff --git a/configs/MPC8349ITX_LOWBOOT_defconfig b/configs/MPC8349ITX_LOWBOOT_defconfig
new file mode 100644
index 0000000..5321801
--- /dev/null
+++ b/configs/MPC8349ITX_LOWBOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="MPC8349ITX,SYS_TEXT_BASE=0xFE000000"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MPC8349ITX=y
diff --git a/configs/MPC8349ITX_defconfig b/configs/MPC8349ITX_defconfig
new file mode 100644
index 0000000..83f25ae
--- /dev/null
+++ b/configs/MPC8349ITX_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="MPC8349ITX"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MPC8349ITX=y
diff --git a/configs/MPC8360EMDS_33_ATM_defconfig b/configs/MPC8360EMDS_33_ATM_defconfig
new file mode 100644
index 0000000..dc325b1
--- /dev/null
+++ b/configs/MPC8360EMDS_33_ATM_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="CLKIN_33MHZ,PQ_MDS_PIB=1,PQ_MDS_PIB_ATM=1"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MPC8360EMDS=y
diff --git a/configs/MPC8360EMDS_33_HOST_33_defconfig b/configs/MPC8360EMDS_33_HOST_33_defconfig
new file mode 100644
index 0000000..fba273d
--- /dev/null
+++ b/configs/MPC8360EMDS_33_HOST_33_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="CLKIN_33MHZ,PCI,PCI_33M,PQ_MDS_PIB=1"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MPC8360EMDS=y
diff --git a/configs/MPC8360EMDS_33_HOST_66_defconfig b/configs/MPC8360EMDS_33_HOST_66_defconfig
new file mode 100644
index 0000000..e0cf6da
--- /dev/null
+++ b/configs/MPC8360EMDS_33_HOST_66_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="CLKIN_33MHZ,PCI,PCI_66M,PQ_MDS_PIB=1"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MPC8360EMDS=y
diff --git a/configs/MPC8360EMDS_33_SLAVE_defconfig b/configs/MPC8360EMDS_33_SLAVE_defconfig
new file mode 100644
index 0000000..c3f74fc
--- /dev/null
+++ b/configs/MPC8360EMDS_33_SLAVE_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="CLKIN_33MHZ,PCI,PCISLAVE"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MPC8360EMDS=y
diff --git a/configs/MPC8360EMDS_33_defconfig b/configs/MPC8360EMDS_33_defconfig
new file mode 100644
index 0000000..60c6ddb
--- /dev/null
+++ b/configs/MPC8360EMDS_33_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="CLKIN_33MHZ"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MPC8360EMDS=y
diff --git a/configs/MPC8360EMDS_66_ATM_defconfig b/configs/MPC8360EMDS_66_ATM_defconfig
new file mode 100644
index 0000000..16f12fb
--- /dev/null
+++ b/configs/MPC8360EMDS_66_ATM_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="CLKIN_66MHZ,PQ_MDS_PIB=1,PQ_MDS_PIB_ATM=1"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MPC8360EMDS=y
diff --git a/configs/MPC8360EMDS_66_HOST_33_defconfig b/configs/MPC8360EMDS_66_HOST_33_defconfig
new file mode 100644
index 0000000..797a584
--- /dev/null
+++ b/configs/MPC8360EMDS_66_HOST_33_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="CLKIN_66MHZ,PCI,PCI_33M,PQ_MDS_PIB=1"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MPC8360EMDS=y
diff --git a/configs/MPC8360EMDS_66_HOST_66_defconfig b/configs/MPC8360EMDS_66_HOST_66_defconfig
new file mode 100644
index 0000000..a887c29
--- /dev/null
+++ b/configs/MPC8360EMDS_66_HOST_66_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="CLKIN_66MHZ,PCI,PCI_66M,PQ_MDS_PIB=1"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MPC8360EMDS=y
diff --git a/configs/MPC8360EMDS_66_SLAVE_defconfig b/configs/MPC8360EMDS_66_SLAVE_defconfig
new file mode 100644
index 0000000..4442c61
--- /dev/null
+++ b/configs/MPC8360EMDS_66_SLAVE_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="CLKIN_66MHZ,PCI,PCISLAVE"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MPC8360EMDS=y
diff --git a/configs/MPC8360EMDS_66_defconfig b/configs/MPC8360EMDS_66_defconfig
new file mode 100644
index 0000000..fce95dd
--- /dev/null
+++ b/configs/MPC8360EMDS_66_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="CLKIN_66MHZ"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MPC8360EMDS=y
diff --git a/configs/MPC8360ERDK_33_defconfig b/configs/MPC8360ERDK_33_defconfig
new file mode 100644
index 0000000..91c47b7
--- /dev/null
+++ b/configs/MPC8360ERDK_33_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="CLKIN_33MHZ"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MPC8360ERDK=y
diff --git a/configs/MPC8360ERDK_defconfig b/configs/MPC8360ERDK_defconfig
new file mode 100644
index 0000000..7e9fa59
--- /dev/null
+++ b/configs/MPC8360ERDK_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MPC8360ERDK=y
diff --git a/configs/MPC837XEMDS_HOST_defconfig b/configs/MPC837XEMDS_HOST_defconfig
new file mode 100644
index 0000000..d3be43a
--- /dev/null
+++ b/configs/MPC837XEMDS_HOST_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PCI"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MPC837XEMDS=y
diff --git a/configs/MPC837XEMDS_defconfig b/configs/MPC837XEMDS_defconfig
new file mode 100644
index 0000000..d3b7c1d
--- /dev/null
+++ b/configs/MPC837XEMDS_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MPC837XEMDS=y
diff --git a/configs/MPC837XERDB_defconfig b/configs/MPC837XERDB_defconfig
new file mode 100644
index 0000000..bb4411a
--- /dev/null
+++ b/configs/MPC837XERDB_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MPC837XERDB=y
diff --git a/configs/MPC8536DS_36BIT_defconfig b/configs/MPC8536DS_36BIT_defconfig
new file mode 100644
index 0000000..45dc91a
--- /dev/null
+++ b/configs/MPC8536DS_36BIT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="36BIT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_MPC8536DS=y
diff --git a/configs/MPC8536DS_SDCARD_defconfig b/configs/MPC8536DS_SDCARD_defconfig
new file mode 100644
index 0000000..4a9f0cd
--- /dev/null
+++ b/configs/MPC8536DS_SDCARD_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SDCARD"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_MPC8536DS=y
diff --git a/configs/MPC8536DS_SPIFLASH_defconfig b/configs/MPC8536DS_SPIFLASH_defconfig
new file mode 100644
index 0000000..2d357e8
--- /dev/null
+++ b/configs/MPC8536DS_SPIFLASH_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SPIFLASH"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_MPC8536DS=y
diff --git a/configs/MPC8536DS_defconfig b/configs/MPC8536DS_defconfig
new file mode 100644
index 0000000..62edc91
--- /dev/null
+++ b/configs/MPC8536DS_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_MPC8536DS=y
diff --git a/configs/MPC8540ADS_defconfig b/configs/MPC8540ADS_defconfig
new file mode 100644
index 0000000..41af349
--- /dev/null
+++ b/configs/MPC8540ADS_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_MPC8540ADS=y
diff --git a/configs/MPC8541CDS_defconfig b/configs/MPC8541CDS_defconfig
new file mode 100644
index 0000000..bc9c246
--- /dev/null
+++ b/configs/MPC8541CDS_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_MPC8541CDS=y
diff --git a/configs/MPC8541CDS_legacy_defconfig b/configs/MPC8541CDS_legacy_defconfig
new file mode 100644
index 0000000..502fbfc
--- /dev/null
+++ b/configs/MPC8541CDS_legacy_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="LEGACY"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_MPC8541CDS=y
diff --git a/configs/MPC8544DS_defconfig b/configs/MPC8544DS_defconfig
new file mode 100644
index 0000000..faeaa94
--- /dev/null
+++ b/configs/MPC8544DS_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_MPC8544DS=y
diff --git a/configs/MPC8548CDS_36BIT_defconfig b/configs/MPC8548CDS_36BIT_defconfig
new file mode 100644
index 0000000..438ea85
--- /dev/null
+++ b/configs/MPC8548CDS_36BIT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="36BIT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_MPC8548CDS=y
diff --git a/configs/MPC8548CDS_defconfig b/configs/MPC8548CDS_defconfig
new file mode 100644
index 0000000..ba52e94
--- /dev/null
+++ b/configs/MPC8548CDS_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_MPC8548CDS=y
diff --git a/configs/MPC8548CDS_legacy_defconfig b/configs/MPC8548CDS_legacy_defconfig
new file mode 100644
index 0000000..e027b2f
--- /dev/null
+++ b/configs/MPC8548CDS_legacy_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="LEGACY"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_MPC8548CDS=y
diff --git a/configs/MPC8555CDS_defconfig b/configs/MPC8555CDS_defconfig
new file mode 100644
index 0000000..3bdbb0c
--- /dev/null
+++ b/configs/MPC8555CDS_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_MPC8555CDS=y
diff --git a/configs/MPC8555CDS_legacy_defconfig b/configs/MPC8555CDS_legacy_defconfig
new file mode 100644
index 0000000..3040905
--- /dev/null
+++ b/configs/MPC8555CDS_legacy_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="LEGACY"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_MPC8555CDS=y
diff --git a/configs/MPC8560ADS_defconfig b/configs/MPC8560ADS_defconfig
new file mode 100644
index 0000000..aa84d28
--- /dev/null
+++ b/configs/MPC8560ADS_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_MPC8560ADS=y
diff --git a/configs/MPC8568MDS_defconfig b/configs/MPC8568MDS_defconfig
new file mode 100644
index 0000000..ac0ec8c
--- /dev/null
+++ b/configs/MPC8568MDS_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_MPC8568MDS=y
diff --git a/configs/MPC8569MDS_ATM_defconfig b/configs/MPC8569MDS_ATM_defconfig
new file mode 100644
index 0000000..5730180
--- /dev/null
+++ b/configs/MPC8569MDS_ATM_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="ATM"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_MPC8569MDS=y
diff --git a/configs/MPC8569MDS_defconfig b/configs/MPC8569MDS_defconfig
new file mode 100644
index 0000000..81fb82a
--- /dev/null
+++ b/configs/MPC8569MDS_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_MPC8569MDS=y
diff --git a/configs/MPC8572DS_36BIT_defconfig b/configs/MPC8572DS_36BIT_defconfig
new file mode 100644
index 0000000..9a26a59
--- /dev/null
+++ b/configs/MPC8572DS_36BIT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="36BIT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_MPC8572DS=y
diff --git a/configs/MPC8572DS_defconfig b/configs/MPC8572DS_defconfig
new file mode 100644
index 0000000..dde9eb2
--- /dev/null
+++ b/configs/MPC8572DS_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_MPC8572DS=y
diff --git a/configs/MPC8610HPCD_defconfig b/configs/MPC8610HPCD_defconfig
new file mode 100644
index 0000000..f4e8951
--- /dev/null
+++ b/configs/MPC8610HPCD_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC86xx=y
+CONFIG_TARGET_MPC8610HPCD=y
diff --git a/configs/MPC8641HPCN_36BIT_defconfig b/configs/MPC8641HPCN_36BIT_defconfig
new file mode 100644
index 0000000..525fa06
--- /dev/null
+++ b/configs/MPC8641HPCN_36BIT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PHYS_64BIT"
+CONFIG_PPC=y
+CONFIG_MPC86xx=y
+CONFIG_TARGET_MPC8641HPCN=y
diff --git a/configs/MPC8641HPCN_defconfig b/configs/MPC8641HPCN_defconfig
new file mode 100644
index 0000000..6c117d5
--- /dev/null
+++ b/configs/MPC8641HPCN_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC86xx=y
+CONFIG_TARGET_MPC8641HPCN=y
diff --git a/configs/MUSENKI_defconfig b/configs/MUSENKI_defconfig
new file mode 100644
index 0000000..586364c
--- /dev/null
+++ b/configs/MUSENKI_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC824X=y
+CONFIG_TARGET_MUSENKI=y
diff --git a/configs/MVBC_P_defconfig b/configs/MVBC_P_defconfig
new file mode 100644
index 0000000..b0351fd
--- /dev/null
+++ b/configs/MVBC_P_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="MVBC_P"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_MVBC_P=y
diff --git a/configs/MVBLM7_defconfig b/configs/MVBLM7_defconfig
new file mode 100644
index 0000000..cc81b5c
--- /dev/null
+++ b/configs/MVBLM7_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MVBLM7=y
diff --git a/configs/MVBLUE_defconfig b/configs/MVBLUE_defconfig
new file mode 100644
index 0000000..f979983
--- /dev/null
+++ b/configs/MVBLUE_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC824X=y
+CONFIG_TARGET_MVBLUE=y
diff --git a/configs/MVSMR_defconfig b/configs/MVSMR_defconfig
new file mode 100644
index 0000000..a84c173
--- /dev/null
+++ b/configs/MVSMR_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_MVSMR=y
diff --git a/configs/MigoR_defconfig b/configs/MigoR_defconfig
new file mode 100644
index 0000000..dd79ff5
--- /dev/null
+++ b/configs/MigoR_defconfig
@@ -0,0 +1,2 @@
+CONFIG_SH=y
+CONFIG_TARGET_MIGOR=y
diff --git a/configs/MiniFAP_defconfig b/configs/MiniFAP_defconfig
new file mode 100644
index 0000000..8eccf26
--- /dev/null
+++ b/configs/MiniFAP_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="MINIFAP"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_TQM5200=y
diff --git a/configs/NETVIA_V2_defconfig b/configs/NETVIA_V2_defconfig
new file mode 100644
index 0000000..2715910
--- /dev/null
+++ b/configs/NETVIA_V2_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="NETVIA_VERSION=2"
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_NETVIA=y
diff --git a/configs/NETVIA_defconfig b/configs/NETVIA_defconfig
new file mode 100644
index 0000000..27c8f2b
--- /dev/null
+++ b/configs/NETVIA_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="NETVIA_VERSION=1"
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_NETVIA=y
diff --git a/configs/NSCU_defconfig b/configs/NSCU_defconfig
new file mode 100644
index 0000000..be96cbd
--- /dev/null
+++ b/configs/NSCU_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_NSCU=y
diff --git a/configs/O2D300_defconfig b/configs/O2D300_defconfig
new file mode 100644
index 0000000..c63b5da
--- /dev/null
+++ b/configs/O2D300_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_O2D300=y
diff --git a/configs/O2DNT2_RAMBOOT_defconfig b/configs/O2DNT2_RAMBOOT_defconfig
new file mode 100644
index 0000000..49e60ab
--- /dev/null
+++ b/configs/O2DNT2_RAMBOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0x00100000"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_O2DNT2=y
diff --git a/configs/O2DNT2_defconfig b/configs/O2DNT2_defconfig
new file mode 100644
index 0000000..9df3b88
--- /dev/null
+++ b/configs/O2DNT2_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_O2DNT2=y
diff --git a/configs/O2D_defconfig b/configs/O2D_defconfig
new file mode 100644
index 0000000..f2d3663
--- /dev/null
+++ b/configs/O2D_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_O2D=y
diff --git a/configs/O2I_defconfig b/configs/O2I_defconfig
new file mode 100644
index 0000000..84db574
--- /dev/null
+++ b/configs/O2I_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_O2I=y
diff --git a/configs/O2MNT_O2M110_defconfig b/configs/O2MNT_O2M110_defconfig
new file mode 100644
index 0000000..12428de
--- /dev/null
+++ b/configs/O2MNT_O2M110_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="IFM_SENSOR_TYPE=\"O2M110\""
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_O2MNT=y
diff --git a/configs/O2MNT_O2M112_defconfig b/configs/O2MNT_O2M112_defconfig
new file mode 100644
index 0000000..a56329a
--- /dev/null
+++ b/configs/O2MNT_O2M112_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="IFM_SENSOR_TYPE=\"O2M112\""
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_O2MNT=y
diff --git a/configs/O2MNT_O2M113_defconfig b/configs/O2MNT_O2M113_defconfig
new file mode 100644
index 0000000..03f54ca
--- /dev/null
+++ b/configs/O2MNT_O2M113_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="IFM_SENSOR_TYPE=\"O2M113\""
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_O2MNT=y
diff --git a/configs/O2MNT_defconfig b/configs/O2MNT_defconfig
new file mode 100644
index 0000000..23c4dc3
--- /dev/null
+++ b/configs/O2MNT_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_O2MNT=y
diff --git a/configs/O3DNT_defconfig b/configs/O3DNT_defconfig
new file mode 100644
index 0000000..1f28a43
--- /dev/null
+++ b/configs/O3DNT_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_O3DNT=y
diff --git a/configs/OCRTC_defconfig b/configs/OCRTC_defconfig
new file mode 100644
index 0000000..f2fd0c5
--- /dev/null
+++ b/configs/OCRTC_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_OCRTC=y
diff --git a/configs/P1010RDB-PA_36BIT_NAND_SECBOOT_defconfig b/configs/P1010RDB-PA_36BIT_NAND_SECBOOT_defconfig
new file mode 100644
index 0000000..c441d9f
--- /dev/null
+++ b/configs/P1010RDB-PA_36BIT_NAND_SECBOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,36BIT,NAND_SECBOOT,SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1010RDB=y
diff --git a/configs/P1010RDB-PA_36BIT_NAND_defconfig b/configs/P1010RDB-PA_36BIT_NAND_defconfig
new file mode 100644
index 0000000..b13024d
--- /dev/null
+++ b/configs/P1010RDB-PA_36BIT_NAND_defconfig
@@ -0,0 +1,6 @@
+CONFIG_SPL=y
+CONFIG_TPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,36BIT,NAND"
++ST:CONFIG_PPC=y
++ST:CONFIG_MPC85xx=y
++ST:CONFIG_TARGET_P1010RDB=y
diff --git a/configs/P1010RDB-PA_36BIT_NOR_SECBOOT_defconfig b/configs/P1010RDB-PA_36BIT_NOR_SECBOOT_defconfig
new file mode 100644
index 0000000..197141a
--- /dev/null
+++ b/configs/P1010RDB-PA_36BIT_NOR_SECBOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,36BIT,SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1010RDB=y
diff --git a/configs/P1010RDB-PA_36BIT_NOR_defconfig b/configs/P1010RDB-PA_36BIT_NOR_defconfig
new file mode 100644
index 0000000..8739428
--- /dev/null
+++ b/configs/P1010RDB-PA_36BIT_NOR_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,36BIT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1010RDB=y
diff --git a/configs/P1010RDB-PA_36BIT_SDCARD_defconfig b/configs/P1010RDB-PA_36BIT_SDCARD_defconfig
new file mode 100644
index 0000000..944d52f
--- /dev/null
+++ b/configs/P1010RDB-PA_36BIT_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,36BIT,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1010RDB=y
diff --git a/configs/P1010RDB-PA_36BIT_SPIFLASH_SECBOOT_defconfig b/configs/P1010RDB-PA_36BIT_SPIFLASH_SECBOOT_defconfig
new file mode 100644
index 0000000..2dae76c
--- /dev/null
+++ b/configs/P1010RDB-PA_36BIT_SPIFLASH_SECBOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,36BIT,SPIFLASH,SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1010RDB=y
diff --git a/configs/P1010RDB-PA_36BIT_SPIFLASH_defconfig b/configs/P1010RDB-PA_36BIT_SPIFLASH_defconfig
new file mode 100644
index 0000000..7cb82ef
--- /dev/null
+++ b/configs/P1010RDB-PA_36BIT_SPIFLASH_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,36BIT,SPIFLASH"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1010RDB=y
diff --git a/configs/P1010RDB-PA_NAND_SECBOOT_defconfig b/configs/P1010RDB-PA_NAND_SECBOOT_defconfig
new file mode 100644
index 0000000..c3c30fa
--- /dev/null
+++ b/configs/P1010RDB-PA_NAND_SECBOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,NAND_SECBOOT,SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1010RDB=y
diff --git a/configs/P1010RDB-PA_NAND_defconfig b/configs/P1010RDB-PA_NAND_defconfig
new file mode 100644
index 0000000..fdf0777
--- /dev/null
+++ b/configs/P1010RDB-PA_NAND_defconfig
@@ -0,0 +1,6 @@
+CONFIG_SPL=y
+CONFIG_TPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,NAND"
++ST:CONFIG_PPC=y
++ST:CONFIG_MPC85xx=y
++ST:CONFIG_TARGET_P1010RDB=y
diff --git a/configs/P1010RDB-PA_NOR_SECBOOT_defconfig b/configs/P1010RDB-PA_NOR_SECBOOT_defconfig
new file mode 100644
index 0000000..9769a2f
--- /dev/null
+++ b/configs/P1010RDB-PA_NOR_SECBOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1010RDB=y
diff --git a/configs/P1010RDB-PA_NOR_defconfig b/configs/P1010RDB-PA_NOR_defconfig
new file mode 100644
index 0000000..8935503
--- /dev/null
+++ b/configs/P1010RDB-PA_NOR_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1010RDB=y
diff --git a/configs/P1010RDB-PA_SDCARD_defconfig b/configs/P1010RDB-PA_SDCARD_defconfig
new file mode 100644
index 0000000..8d6ab18
--- /dev/null
+++ b/configs/P1010RDB-PA_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1010RDB=y
diff --git a/configs/P1010RDB-PA_SPIFLASH_SECBOOT_defconfig b/configs/P1010RDB-PA_SPIFLASH_SECBOOT_defconfig
new file mode 100644
index 0000000..76499d9
--- /dev/null
+++ b/configs/P1010RDB-PA_SPIFLASH_SECBOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,SPIFLASH,SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1010RDB=y
diff --git a/configs/P1010RDB-PA_SPIFLASH_defconfig b/configs/P1010RDB-PA_SPIFLASH_defconfig
new file mode 100644
index 0000000..869b1a4
--- /dev/null
+++ b/configs/P1010RDB-PA_SPIFLASH_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,SPIFLASH"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1010RDB=y
diff --git a/configs/P1010RDB-PB_36BIT_NAND_SECBOOT_defconfig b/configs/P1010RDB-PB_36BIT_NAND_SECBOOT_defconfig
new file mode 100644
index 0000000..be6fe06
--- /dev/null
+++ b/configs/P1010RDB-PB_36BIT_NAND_SECBOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,36BIT,NAND_SECBOOT,SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1010RDB=y
diff --git a/configs/P1010RDB-PB_36BIT_NAND_defconfig b/configs/P1010RDB-PB_36BIT_NAND_defconfig
new file mode 100644
index 0000000..dd5277d
--- /dev/null
+++ b/configs/P1010RDB-PB_36BIT_NAND_defconfig
@@ -0,0 +1,6 @@
+CONFIG_SPL=y
+CONFIG_TPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,36BIT,NAND"
++ST:CONFIG_PPC=y
++ST:CONFIG_MPC85xx=y
++ST:CONFIG_TARGET_P1010RDB=y
diff --git a/configs/P1010RDB-PB_36BIT_NOR_SECBOOT_defconfig b/configs/P1010RDB-PB_36BIT_NOR_SECBOOT_defconfig
new file mode 100644
index 0000000..90e278d3
--- /dev/null
+++ b/configs/P1010RDB-PB_36BIT_NOR_SECBOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,36BIT,SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1010RDB=y
diff --git a/configs/P1010RDB-PB_36BIT_NOR_defconfig b/configs/P1010RDB-PB_36BIT_NOR_defconfig
new file mode 100644
index 0000000..ac23218
--- /dev/null
+++ b/configs/P1010RDB-PB_36BIT_NOR_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,36BIT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1010RDB=y
diff --git a/configs/P1010RDB-PB_36BIT_SDCARD_defconfig b/configs/P1010RDB-PB_36BIT_SDCARD_defconfig
new file mode 100644
index 0000000..f1900fe
--- /dev/null
+++ b/configs/P1010RDB-PB_36BIT_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,36BIT,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1010RDB=y
diff --git a/configs/P1010RDB-PB_36BIT_SPIFLASH_SECBOOT_defconfig b/configs/P1010RDB-PB_36BIT_SPIFLASH_SECBOOT_defconfig
new file mode 100644
index 0000000..e2a379d
--- /dev/null
+++ b/configs/P1010RDB-PB_36BIT_SPIFLASH_SECBOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,36BIT,SPIFLASH,SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1010RDB=y
diff --git a/configs/P1010RDB-PB_36BIT_SPIFLASH_defconfig b/configs/P1010RDB-PB_36BIT_SPIFLASH_defconfig
new file mode 100644
index 0000000..1b24dba
--- /dev/null
+++ b/configs/P1010RDB-PB_36BIT_SPIFLASH_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,36BIT,SPIFLASH"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1010RDB=y
diff --git a/configs/P1010RDB-PB_NAND_SECBOOT_defconfig b/configs/P1010RDB-PB_NAND_SECBOOT_defconfig
new file mode 100644
index 0000000..de34914
--- /dev/null
+++ b/configs/P1010RDB-PB_NAND_SECBOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,NAND_SECBOOT,SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1010RDB=y
diff --git a/configs/P1010RDB-PB_NAND_defconfig b/configs/P1010RDB-PB_NAND_defconfig
new file mode 100644
index 0000000..0125164
--- /dev/null
+++ b/configs/P1010RDB-PB_NAND_defconfig
@@ -0,0 +1,6 @@
+CONFIG_SPL=y
+CONFIG_TPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,NAND"
++ST:CONFIG_PPC=y
++ST:CONFIG_MPC85xx=y
++ST:CONFIG_TARGET_P1010RDB=y
diff --git a/configs/P1010RDB-PB_NOR_SECBOOT_defconfig b/configs/P1010RDB-PB_NOR_SECBOOT_defconfig
new file mode 100644
index 0000000..78221af
--- /dev/null
+++ b/configs/P1010RDB-PB_NOR_SECBOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1010RDB=y
diff --git a/configs/P1010RDB-PB_NOR_defconfig b/configs/P1010RDB-PB_NOR_defconfig
new file mode 100644
index 0000000..a2386c7
--- /dev/null
+++ b/configs/P1010RDB-PB_NOR_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1010RDB=y
diff --git a/configs/P1010RDB-PB_SDCARD_defconfig b/configs/P1010RDB-PB_SDCARD_defconfig
new file mode 100644
index 0000000..dcb0847
--- /dev/null
+++ b/configs/P1010RDB-PB_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1010RDB=y
diff --git a/configs/P1010RDB-PB_SPIFLASH_SECBOOT_defconfig b/configs/P1010RDB-PB_SPIFLASH_SECBOOT_defconfig
new file mode 100644
index 0000000..1cba920
--- /dev/null
+++ b/configs/P1010RDB-PB_SPIFLASH_SECBOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,SPIFLASH,SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1010RDB=y
diff --git a/configs/P1010RDB-PB_SPIFLASH_defconfig b/configs/P1010RDB-PB_SPIFLASH_defconfig
new file mode 100644
index 0000000..23dc027
--- /dev/null
+++ b/configs/P1010RDB-PB_SPIFLASH_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,SPIFLASH"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1010RDB=y
diff --git a/configs/P1011RDB_36BIT_SDCARD_defconfig b/configs/P1011RDB_36BIT_SDCARD_defconfig
new file mode 100644
index 0000000..7205bef
--- /dev/null
+++ b/configs/P1011RDB_36BIT_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1011RDB,36BIT,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB=y
diff --git a/configs/P1011RDB_36BIT_SPIFLASH_defconfig b/configs/P1011RDB_36BIT_SPIFLASH_defconfig
new file mode 100644
index 0000000..8b3806e
--- /dev/null
+++ b/configs/P1011RDB_36BIT_SPIFLASH_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1011RDB,36BIT,SPIFLASH"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB=y
diff --git a/configs/P1011RDB_36BIT_defconfig b/configs/P1011RDB_36BIT_defconfig
new file mode 100644
index 0000000..c47f2e2
--- /dev/null
+++ b/configs/P1011RDB_36BIT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1011RDB,36BIT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1_P2_RDB=y
diff --git a/configs/P1011RDB_NAND_defconfig b/configs/P1011RDB_NAND_defconfig
new file mode 100644
index 0000000..aac0190
--- /dev/null
+++ b/configs/P1011RDB_NAND_defconfig
@@ -0,0 +1,6 @@
+CONFIG_SPL=y
+CONFIG_TPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1011RDB,NAND"
++ST:CONFIG_PPC=y
++ST:CONFIG_MPC85xx=y
++ST:CONFIG_TARGET_P1_P2_RDB=y
diff --git a/configs/P1011RDB_SDCARD_defconfig b/configs/P1011RDB_SDCARD_defconfig
new file mode 100644
index 0000000..16e872f
--- /dev/null
+++ b/configs/P1011RDB_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1011RDB,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB=y
diff --git a/configs/P1011RDB_SPIFLASH_defconfig b/configs/P1011RDB_SPIFLASH_defconfig
new file mode 100644
index 0000000..d14820f
--- /dev/null
+++ b/configs/P1011RDB_SPIFLASH_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1011RDB,SPIFLASH"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB=y
diff --git a/configs/P1011RDB_defconfig b/configs/P1011RDB_defconfig
new file mode 100644
index 0000000..d14868a
--- /dev/null
+++ b/configs/P1011RDB_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1011RDB"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1_P2_RDB=y
diff --git a/configs/P1020MBG-PC_36BIT_SDCARD_defconfig b/configs/P1020MBG-PC_36BIT_SDCARD_defconfig
new file mode 100644
index 0000000..e2b625e
--- /dev/null
+++ b/configs/P1020MBG-PC_36BIT_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1020MBG,SDCARD,36BIT"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1020MBG-PC_36BIT_defconfig b/configs/P1020MBG-PC_36BIT_defconfig
new file mode 100644
index 0000000..503ee0c
--- /dev/null
+++ b/configs/P1020MBG-PC_36BIT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1020MBG,36BIT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1020MBG-PC_SDCARD_defconfig b/configs/P1020MBG-PC_SDCARD_defconfig
new file mode 100644
index 0000000..d34d3c8
--- /dev/null
+++ b/configs/P1020MBG-PC_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1020MBG,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1020MBG-PC_defconfig b/configs/P1020MBG-PC_defconfig
new file mode 100644
index 0000000..cee84ef
--- /dev/null
+++ b/configs/P1020MBG-PC_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1020MBG"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1020RDB-PC_36BIT_NAND_defconfig b/configs/P1020RDB-PC_36BIT_NAND_defconfig
new file mode 100644
index 0000000..c01de3a
--- /dev/null
+++ b/configs/P1020RDB-PC_36BIT_NAND_defconfig
@@ -0,0 +1,6 @@
+CONFIG_SPL=y
+CONFIG_TPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PC,36BIT,NAND"
++ST:CONFIG_PPC=y
++ST:CONFIG_MPC85xx=y
++ST:CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1020RDB-PC_36BIT_SDCARD_defconfig b/configs/P1020RDB-PC_36BIT_SDCARD_defconfig
new file mode 100644
index 0000000..81593e1
--- /dev/null
+++ b/configs/P1020RDB-PC_36BIT_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PC,36BIT,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1020RDB-PC_36BIT_SPIFLASH_defconfig b/configs/P1020RDB-PC_36BIT_SPIFLASH_defconfig
new file mode 100644
index 0000000..93c0c71
--- /dev/null
+++ b/configs/P1020RDB-PC_36BIT_SPIFLASH_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PC,36BIT,SPIFLASH"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1020RDB-PC_36BIT_defconfig b/configs/P1020RDB-PC_36BIT_defconfig
new file mode 100644
index 0000000..2120a09
--- /dev/null
+++ b/configs/P1020RDB-PC_36BIT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PC,36BIT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1020RDB-PC_NAND_defconfig b/configs/P1020RDB-PC_NAND_defconfig
new file mode 100644
index 0000000..521398d
--- /dev/null
+++ b/configs/P1020RDB-PC_NAND_defconfig
@@ -0,0 +1,6 @@
+CONFIG_SPL=y
+CONFIG_TPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PC,NAND"
++ST:CONFIG_PPC=y
++ST:CONFIG_MPC85xx=y
++ST:CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1020RDB-PC_SDCARD_defconfig b/configs/P1020RDB-PC_SDCARD_defconfig
new file mode 100644
index 0000000..4e3ed60
--- /dev/null
+++ b/configs/P1020RDB-PC_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PC,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1020RDB-PC_SPIFLASH_defconfig b/configs/P1020RDB-PC_SPIFLASH_defconfig
new file mode 100644
index 0000000..d4642c4
--- /dev/null
+++ b/configs/P1020RDB-PC_SPIFLASH_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PC,SPIFLASH"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1020RDB-PC_defconfig b/configs/P1020RDB-PC_defconfig
new file mode 100644
index 0000000..a19a59f
--- /dev/null
+++ b/configs/P1020RDB-PC_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PC"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1020RDB-PD_NAND_defconfig b/configs/P1020RDB-PD_NAND_defconfig
new file mode 100644
index 0000000..199b3f2
--- /dev/null
+++ b/configs/P1020RDB-PD_NAND_defconfig
@@ -0,0 +1,6 @@
+CONFIG_SPL=y
+CONFIG_TPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PD,NAND"
++ST:CONFIG_PPC=y
++ST:CONFIG_MPC85xx=y
++ST:CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1020RDB-PD_SDCARD_defconfig b/configs/P1020RDB-PD_SDCARD_defconfig
new file mode 100644
index 0000000..a5edd3b
--- /dev/null
+++ b/configs/P1020RDB-PD_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PD,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1020RDB-PD_SPIFLASH_defconfig b/configs/P1020RDB-PD_SPIFLASH_defconfig
new file mode 100644
index 0000000..789b1bd
--- /dev/null
+++ b/configs/P1020RDB-PD_SPIFLASH_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PD,SPIFLASH"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1020RDB-PD_defconfig b/configs/P1020RDB-PD_defconfig
new file mode 100644
index 0000000..61f7a02
--- /dev/null
+++ b/configs/P1020RDB-PD_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PD"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1020RDB_36BIT_SDCARD_defconfig b/configs/P1020RDB_36BIT_SDCARD_defconfig
new file mode 100644
index 0000000..a18563e
--- /dev/null
+++ b/configs/P1020RDB_36BIT_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1020RDB,36BIT,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB=y
diff --git a/configs/P1020RDB_36BIT_SPIFLASH_defconfig b/configs/P1020RDB_36BIT_SPIFLASH_defconfig
new file mode 100644
index 0000000..aa145fc
--- /dev/null
+++ b/configs/P1020RDB_36BIT_SPIFLASH_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1020RDB,36BIT,SPIFLASH"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB=y
diff --git a/configs/P1020RDB_36BIT_defconfig b/configs/P1020RDB_36BIT_defconfig
new file mode 100644
index 0000000..844651f
--- /dev/null
+++ b/configs/P1020RDB_36BIT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1020RDB,36BIT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1_P2_RDB=y
diff --git a/configs/P1020RDB_NAND_defconfig b/configs/P1020RDB_NAND_defconfig
new file mode 100644
index 0000000..441241b
--- /dev/null
+++ b/configs/P1020RDB_NAND_defconfig
@@ -0,0 +1,6 @@
+CONFIG_SPL=y
+CONFIG_TPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1020RDB,NAND"
++ST:CONFIG_PPC=y
++ST:CONFIG_MPC85xx=y
++ST:CONFIG_TARGET_P1_P2_RDB=y
diff --git a/configs/P1020RDB_SDCARD_defconfig b/configs/P1020RDB_SDCARD_defconfig
new file mode 100644
index 0000000..1349bea
--- /dev/null
+++ b/configs/P1020RDB_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1020RDB,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB=y
diff --git a/configs/P1020RDB_SPIFLASH_defconfig b/configs/P1020RDB_SPIFLASH_defconfig
new file mode 100644
index 0000000..7eb8696
--- /dev/null
+++ b/configs/P1020RDB_SPIFLASH_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1020RDB,SPIFLASH"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB=y
diff --git a/configs/P1020RDB_defconfig b/configs/P1020RDB_defconfig
new file mode 100644
index 0000000..fc58ac9
--- /dev/null
+++ b/configs/P1020RDB_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1020RDB"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1_P2_RDB=y
diff --git a/configs/P1020UTM-PC_36BIT_SDCARD_defconfig b/configs/P1020UTM-PC_36BIT_SDCARD_defconfig
new file mode 100644
index 0000000..7f393f4
--- /dev/null
+++ b/configs/P1020UTM-PC_36BIT_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1020UTM,36BIT,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1020UTM-PC_36BIT_defconfig b/configs/P1020UTM-PC_36BIT_defconfig
new file mode 100644
index 0000000..6892cc2
--- /dev/null
+++ b/configs/P1020UTM-PC_36BIT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1020UTM,36BIT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1020UTM-PC_SDCARD_defconfig b/configs/P1020UTM-PC_SDCARD_defconfig
new file mode 100644
index 0000000..3757de3
--- /dev/null
+++ b/configs/P1020UTM-PC_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1020UTM,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1020UTM-PC_defconfig b/configs/P1020UTM-PC_defconfig
new file mode 100644
index 0000000..4c28014
--- /dev/null
+++ b/configs/P1020UTM-PC_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1020UTM"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1021RDB-PC_36BIT_NAND_defconfig b/configs/P1021RDB-PC_36BIT_NAND_defconfig
new file mode 100644
index 0000000..285a0c4
--- /dev/null
+++ b/configs/P1021RDB-PC_36BIT_NAND_defconfig
@@ -0,0 +1,6 @@
+CONFIG_SPL=y
+CONFIG_TPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1021RDB,36BIT,NAND"
++ST:CONFIG_PPC=y
++ST:CONFIG_MPC85xx=y
++ST:CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1021RDB-PC_36BIT_SDCARD_defconfig b/configs/P1021RDB-PC_36BIT_SDCARD_defconfig
new file mode 100644
index 0000000..0f9b175
--- /dev/null
+++ b/configs/P1021RDB-PC_36BIT_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1021RDB,36BIT,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1021RDB-PC_36BIT_SPIFLASH_defconfig b/configs/P1021RDB-PC_36BIT_SPIFLASH_defconfig
new file mode 100644
index 0000000..e2345dd
--- /dev/null
+++ b/configs/P1021RDB-PC_36BIT_SPIFLASH_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1021RDB,36BIT,SPIFLASH"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1021RDB-PC_36BIT_defconfig b/configs/P1021RDB-PC_36BIT_defconfig
new file mode 100644
index 0000000..eae7d2d
--- /dev/null
+++ b/configs/P1021RDB-PC_36BIT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1021RDB,36BIT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1021RDB-PC_NAND_defconfig b/configs/P1021RDB-PC_NAND_defconfig
new file mode 100644
index 0000000..da4b17d
--- /dev/null
+++ b/configs/P1021RDB-PC_NAND_defconfig
@@ -0,0 +1,6 @@
+CONFIG_SPL=y
+CONFIG_TPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1021RDB,NAND"
++ST:CONFIG_PPC=y
++ST:CONFIG_MPC85xx=y
++ST:CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1021RDB-PC_SDCARD_defconfig b/configs/P1021RDB-PC_SDCARD_defconfig
new file mode 100644
index 0000000..ec729d8
--- /dev/null
+++ b/configs/P1021RDB-PC_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1021RDB,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1021RDB-PC_SPIFLASH_defconfig b/configs/P1021RDB-PC_SPIFLASH_defconfig
new file mode 100644
index 0000000..98a3e23
--- /dev/null
+++ b/configs/P1021RDB-PC_SPIFLASH_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1021RDB,SPIFLASH"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1021RDB-PC_defconfig b/configs/P1021RDB-PC_defconfig
new file mode 100644
index 0000000..7557da2
--- /dev/null
+++ b/configs/P1021RDB-PC_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1021RDB"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1022DS_36BIT_NAND_defconfig b/configs/P1022DS_36BIT_NAND_defconfig
new file mode 100644
index 0000000..d482617
--- /dev/null
+++ b/configs/P1022DS_36BIT_NAND_defconfig
@@ -0,0 +1,6 @@
+CONFIG_SPL=y
+CONFIG_TPL=y
+CONFIG_SYS_EXTRA_OPTIONS="36BIT,NAND"
++ST:CONFIG_PPC=y
++ST:CONFIG_MPC85xx=y
++ST:CONFIG_TARGET_P1022DS=y
diff --git a/configs/P1022DS_36BIT_SDCARD_defconfig b/configs/P1022DS_36BIT_SDCARD_defconfig
new file mode 100644
index 0000000..3f2a46c
--- /dev/null
+++ b/configs/P1022DS_36BIT_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="36BIT,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1022DS=y
diff --git a/configs/P1022DS_36BIT_SPIFLASH_defconfig b/configs/P1022DS_36BIT_SPIFLASH_defconfig
new file mode 100644
index 0000000..47a39ee
--- /dev/null
+++ b/configs/P1022DS_36BIT_SPIFLASH_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="36BIT,SPIFLASH"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1022DS=y
diff --git a/configs/P1022DS_36BIT_defconfig b/configs/P1022DS_36BIT_defconfig
new file mode 100644
index 0000000..f2ff2d0
--- /dev/null
+++ b/configs/P1022DS_36BIT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="36BIT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1022DS=y
diff --git a/configs/P1022DS_NAND_defconfig b/configs/P1022DS_NAND_defconfig
new file mode 100644
index 0000000..071280b
--- /dev/null
+++ b/configs/P1022DS_NAND_defconfig
@@ -0,0 +1,6 @@
+CONFIG_SPL=y
+CONFIG_TPL=y
+CONFIG_SYS_EXTRA_OPTIONS="NAND"
++ST:CONFIG_PPC=y
++ST:CONFIG_MPC85xx=y
++ST:CONFIG_TARGET_P1022DS=y
diff --git a/configs/P1022DS_SDCARD_defconfig b/configs/P1022DS_SDCARD_defconfig
new file mode 100644
index 0000000..47f21ea
--- /dev/null
+++ b/configs/P1022DS_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1022DS=y
diff --git a/configs/P1022DS_SPIFLASH_defconfig b/configs/P1022DS_SPIFLASH_defconfig
new file mode 100644
index 0000000..a866f24
--- /dev/null
+++ b/configs/P1022DS_SPIFLASH_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="SPIFLASH"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1022DS=y
diff --git a/configs/P1022DS_defconfig b/configs/P1022DS_defconfig
new file mode 100644
index 0000000..d2953a4
--- /dev/null
+++ b/configs/P1022DS_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1022DS=y
diff --git a/configs/P1023RDB_defconfig b/configs/P1023RDB_defconfig
new file mode 100644
index 0000000..fc15e4b
--- /dev/null
+++ b/configs/P1023RDB_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1023RDB=y
diff --git a/configs/P1024RDB_36BIT_defconfig b/configs/P1024RDB_36BIT_defconfig
new file mode 100644
index 0000000..687277f
--- /dev/null
+++ b/configs/P1024RDB_36BIT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1024RDB,36BIT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1024RDB_NAND_defconfig b/configs/P1024RDB_NAND_defconfig
new file mode 100644
index 0000000..be42014
--- /dev/null
+++ b/configs/P1024RDB_NAND_defconfig
@@ -0,0 +1,6 @@
+CONFIG_SPL=y
+CONFIG_TPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1024RDB,NAND"
++ST:CONFIG_PPC=y
++ST:CONFIG_MPC85xx=y
++ST:CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1024RDB_SDCARD_defconfig b/configs/P1024RDB_SDCARD_defconfig
new file mode 100644
index 0000000..88504bf
--- /dev/null
+++ b/configs/P1024RDB_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1024RDB,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1024RDB_SPIFLASH_defconfig b/configs/P1024RDB_SPIFLASH_defconfig
new file mode 100644
index 0000000..5def942
--- /dev/null
+++ b/configs/P1024RDB_SPIFLASH_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1024RDB,SPIFLASH"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1024RDB_defconfig b/configs/P1024RDB_defconfig
new file mode 100644
index 0000000..89e88f2
--- /dev/null
+++ b/configs/P1024RDB_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1024RDB"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1025RDB_36BIT_defconfig b/configs/P1025RDB_36BIT_defconfig
new file mode 100644
index 0000000..6903fec
--- /dev/null
+++ b/configs/P1025RDB_36BIT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1025RDB,36BIT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1025RDB_NAND_defconfig b/configs/P1025RDB_NAND_defconfig
new file mode 100644
index 0000000..f07388a
--- /dev/null
+++ b/configs/P1025RDB_NAND_defconfig
@@ -0,0 +1,6 @@
+CONFIG_SPL=y
+CONFIG_TPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1025RDB,NAND"
++ST:CONFIG_PPC=y
++ST:CONFIG_MPC85xx=y
++ST:CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1025RDB_SDCARD_defconfig b/configs/P1025RDB_SDCARD_defconfig
new file mode 100644
index 0000000..1791ec4
--- /dev/null
+++ b/configs/P1025RDB_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1025RDB,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1025RDB_SPIFLASH_defconfig b/configs/P1025RDB_SPIFLASH_defconfig
new file mode 100644
index 0000000..774bbfe
--- /dev/null
+++ b/configs/P1025RDB_SPIFLASH_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P1025RDB,SPIFLASH"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P1025RDB_defconfig b/configs/P1025RDB_defconfig
new file mode 100644
index 0000000..589e174
--- /dev/null
+++ b/configs/P1025RDB_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P1025RDB"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P2010RDB_36BIT_SDCARD_defconfig b/configs/P2010RDB_36BIT_SDCARD_defconfig
new file mode 100644
index 0000000..1381e8e
--- /dev/null
+++ b/configs/P2010RDB_36BIT_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P2010RDB,36BIT,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB=y
diff --git a/configs/P2010RDB_36BIT_SPIFLASH_defconfig b/configs/P2010RDB_36BIT_SPIFLASH_defconfig
new file mode 100644
index 0000000..53ebca1
--- /dev/null
+++ b/configs/P2010RDB_36BIT_SPIFLASH_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P2010RDB,36BIT,SPIFLASH"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB=y
diff --git a/configs/P2010RDB_36BIT_defconfig b/configs/P2010RDB_36BIT_defconfig
new file mode 100644
index 0000000..de29dcb
--- /dev/null
+++ b/configs/P2010RDB_36BIT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P2010RDB,36BIT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1_P2_RDB=y
diff --git a/configs/P2010RDB_NAND_defconfig b/configs/P2010RDB_NAND_defconfig
new file mode 100644
index 0000000..bc91a67
--- /dev/null
+++ b/configs/P2010RDB_NAND_defconfig
@@ -0,0 +1,6 @@
+CONFIG_SPL=y
+CONFIG_TPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P2010RDB,NAND"
++ST:CONFIG_PPC=y
++ST:CONFIG_MPC85xx=y
++ST:CONFIG_TARGET_P1_P2_RDB=y
diff --git a/configs/P2010RDB_SDCARD_defconfig b/configs/P2010RDB_SDCARD_defconfig
new file mode 100644
index 0000000..fd4ade7
--- /dev/null
+++ b/configs/P2010RDB_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P2010RDB,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB=y
diff --git a/configs/P2010RDB_SPIFLASH_defconfig b/configs/P2010RDB_SPIFLASH_defconfig
new file mode 100644
index 0000000..9631864
--- /dev/null
+++ b/configs/P2010RDB_SPIFLASH_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P2010RDB,SPIFLASH"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB=y
diff --git a/configs/P2010RDB_defconfig b/configs/P2010RDB_defconfig
new file mode 100644
index 0000000..3b3352a
--- /dev/null
+++ b/configs/P2010RDB_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P2010RDB"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1_P2_RDB=y
diff --git a/configs/P2020COME_SDCARD_defconfig b/configs/P2020COME_SDCARD_defconfig
new file mode 100644
index 0000000..c186fcb
--- /dev/null
+++ b/configs/P2020COME_SDCARD_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SDCARD"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P2020COME=y
diff --git a/configs/P2020COME_SPIFLASH_defconfig b/configs/P2020COME_SPIFLASH_defconfig
new file mode 100644
index 0000000..17ce136
--- /dev/null
+++ b/configs/P2020COME_SPIFLASH_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SPIFLASH"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P2020COME=y
diff --git a/configs/P2020DS_36BIT_defconfig b/configs/P2020DS_36BIT_defconfig
new file mode 100644
index 0000000..359c446
--- /dev/null
+++ b/configs/P2020DS_36BIT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="36BIT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P2020DS=y
diff --git a/configs/P2020DS_DDR2_defconfig b/configs/P2020DS_DDR2_defconfig
new file mode 100644
index 0000000..00b6731
--- /dev/null
+++ b/configs/P2020DS_DDR2_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="DDR2"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P2020DS=y
diff --git a/configs/P2020DS_SDCARD_defconfig b/configs/P2020DS_SDCARD_defconfig
new file mode 100644
index 0000000..89aef3a
--- /dev/null
+++ b/configs/P2020DS_SDCARD_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SDCARD"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P2020DS=y
diff --git a/configs/P2020DS_SPIFLASH_defconfig b/configs/P2020DS_SPIFLASH_defconfig
new file mode 100644
index 0000000..503328c
--- /dev/null
+++ b/configs/P2020DS_SPIFLASH_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SPIFLASH"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P2020DS=y
diff --git a/configs/P2020DS_defconfig b/configs/P2020DS_defconfig
new file mode 100644
index 0000000..f2ac6d9
--- /dev/null
+++ b/configs/P2020DS_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P2020DS=y
diff --git a/configs/P2020RDB-PC_36BIT_NAND_defconfig b/configs/P2020RDB-PC_36BIT_NAND_defconfig
new file mode 100644
index 0000000..cdfe13d
--- /dev/null
+++ b/configs/P2020RDB-PC_36BIT_NAND_defconfig
@@ -0,0 +1,6 @@
+CONFIG_SPL=y
+CONFIG_TPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P2020RDB,36BIT,NAND"
++ST:CONFIG_PPC=y
++ST:CONFIG_MPC85xx=y
++ST:CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P2020RDB-PC_36BIT_SDCARD_defconfig b/configs/P2020RDB-PC_36BIT_SDCARD_defconfig
new file mode 100644
index 0000000..a98ce43
--- /dev/null
+++ b/configs/P2020RDB-PC_36BIT_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P2020RDB,36BIT,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P2020RDB-PC_36BIT_SPIFLASH_defconfig b/configs/P2020RDB-PC_36BIT_SPIFLASH_defconfig
new file mode 100644
index 0000000..14e53ba
--- /dev/null
+++ b/configs/P2020RDB-PC_36BIT_SPIFLASH_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P2020RDB,36BIT,SPIFLASH"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P2020RDB-PC_36BIT_defconfig b/configs/P2020RDB-PC_36BIT_defconfig
new file mode 100644
index 0000000..8f0c994
--- /dev/null
+++ b/configs/P2020RDB-PC_36BIT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P2020RDB,36BIT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P2020RDB-PC_NAND_defconfig b/configs/P2020RDB-PC_NAND_defconfig
new file mode 100644
index 0000000..10b208a
--- /dev/null
+++ b/configs/P2020RDB-PC_NAND_defconfig
@@ -0,0 +1,6 @@
+CONFIG_SPL=y
+CONFIG_TPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P2020RDB,NAND"
++ST:CONFIG_PPC=y
++ST:CONFIG_MPC85xx=y
++ST:CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P2020RDB-PC_SDCARD_defconfig b/configs/P2020RDB-PC_SDCARD_defconfig
new file mode 100644
index 0000000..6cb0e6e
--- /dev/null
+++ b/configs/P2020RDB-PC_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P2020RDB,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P2020RDB-PC_SPIFLASH_defconfig b/configs/P2020RDB-PC_SPIFLASH_defconfig
new file mode 100644
index 0000000..769eb37
--- /dev/null
+++ b/configs/P2020RDB-PC_SPIFLASH_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P2020RDB,SPIFLASH"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P2020RDB-PC_defconfig b/configs/P2020RDB-PC_defconfig
new file mode 100644
index 0000000..3e46572
--- /dev/null
+++ b/configs/P2020RDB-PC_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P2020RDB"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1_P2_RDB_PC=y
diff --git a/configs/P2020RDB_36BIT_SDCARD_defconfig b/configs/P2020RDB_36BIT_SDCARD_defconfig
new file mode 100644
index 0000000..43cc2e3
--- /dev/null
+++ b/configs/P2020RDB_36BIT_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P2020RDB,36BIT,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB=y
diff --git a/configs/P2020RDB_36BIT_SPIFLASH_defconfig b/configs/P2020RDB_36BIT_SPIFLASH_defconfig
new file mode 100644
index 0000000..f1199b6
--- /dev/null
+++ b/configs/P2020RDB_36BIT_SPIFLASH_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P2020RDB,36BIT,SPIFLASH"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB=y
diff --git a/configs/P2020RDB_36BIT_defconfig b/configs/P2020RDB_36BIT_defconfig
new file mode 100644
index 0000000..87490fd
--- /dev/null
+++ b/configs/P2020RDB_36BIT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P2020RDB,36BIT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1_P2_RDB=y
diff --git a/configs/P2020RDB_NAND_defconfig b/configs/P2020RDB_NAND_defconfig
new file mode 100644
index 0000000..70ee084
--- /dev/null
+++ b/configs/P2020RDB_NAND_defconfig
@@ -0,0 +1,6 @@
+CONFIG_SPL=y
+CONFIG_TPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P2020RDB,NAND"
++ST:CONFIG_PPC=y
++ST:CONFIG_MPC85xx=y
++ST:CONFIG_TARGET_P1_P2_RDB=y
diff --git a/configs/P2020RDB_SDCARD_defconfig b/configs/P2020RDB_SDCARD_defconfig
new file mode 100644
index 0000000..2bf5773
--- /dev/null
+++ b/configs/P2020RDB_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P2020RDB,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB=y
diff --git a/configs/P2020RDB_SPIFLASH_defconfig b/configs/P2020RDB_SPIFLASH_defconfig
new file mode 100644
index 0000000..290ebd2
--- /dev/null
+++ b/configs/P2020RDB_SPIFLASH_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="P2020RDB,SPIFLASH"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_P1_P2_RDB=y
diff --git a/configs/P2020RDB_defconfig b/configs/P2020RDB_defconfig
new file mode 100644
index 0000000..cc39735
--- /dev/null
+++ b/configs/P2020RDB_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P2020RDB"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1_P2_RDB=y
diff --git a/configs/P2041RDB_NAND_defconfig b/configs/P2041RDB_NAND_defconfig
new file mode 100644
index 0000000..4a4e076
--- /dev/null
+++ b/configs/P2041RDB_NAND_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P2041RDB=y
diff --git a/configs/P2041RDB_SDCARD_defconfig b/configs/P2041RDB_SDCARD_defconfig
new file mode 100644
index 0000000..af06581
--- /dev/null
+++ b/configs/P2041RDB_SDCARD_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P2041RDB=y
diff --git a/configs/P2041RDB_SECURE_BOOT_defconfig b/configs/P2041RDB_SECURE_BOOT_defconfig
new file mode 100644
index 0000000..c49dcbf
--- /dev/null
+++ b/configs/P2041RDB_SECURE_BOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P2041RDB=y
diff --git a/configs/P2041RDB_SPIFLASH_defconfig b/configs/P2041RDB_SPIFLASH_defconfig
new file mode 100644
index 0000000..ecba89a
--- /dev/null
+++ b/configs/P2041RDB_SPIFLASH_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P2041RDB=y
diff --git a/configs/P2041RDB_SRIO_PCIE_BOOT_defconfig b/configs/P2041RDB_SRIO_PCIE_BOOT_defconfig
new file mode 100644
index 0000000..53bd271
--- /dev/null
+++ b/configs/P2041RDB_SRIO_PCIE_BOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P2041RDB=y
diff --git a/configs/P2041RDB_defconfig b/configs/P2041RDB_defconfig
new file mode 100644
index 0000000..802b38d
--- /dev/null
+++ b/configs/P2041RDB_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P2041RDB=y
diff --git a/configs/P3041DS_NAND_defconfig b/configs/P3041DS_NAND_defconfig
new file mode 100644
index 0000000..5934048
--- /dev/null
+++ b/configs/P3041DS_NAND_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P3041DS=y
diff --git a/configs/P3041DS_SDCARD_defconfig b/configs/P3041DS_SDCARD_defconfig
new file mode 100644
index 0000000..dacadaa
--- /dev/null
+++ b/configs/P3041DS_SDCARD_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P3041DS=y
diff --git a/configs/P3041DS_SECURE_BOOT_defconfig b/configs/P3041DS_SECURE_BOOT_defconfig
new file mode 100644
index 0000000..9850956
--- /dev/null
+++ b/configs/P3041DS_SECURE_BOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P3041DS=y
diff --git a/configs/P3041DS_SPIFLASH_defconfig b/configs/P3041DS_SPIFLASH_defconfig
new file mode 100644
index 0000000..0a71926
--- /dev/null
+++ b/configs/P3041DS_SPIFLASH_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P3041DS=y
diff --git a/configs/P3041DS_SRIO_PCIE_BOOT_defconfig b/configs/P3041DS_SRIO_PCIE_BOOT_defconfig
new file mode 100644
index 0000000..5c14324
--- /dev/null
+++ b/configs/P3041DS_SRIO_PCIE_BOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P3041DS=y
diff --git a/configs/P3041DS_defconfig b/configs/P3041DS_defconfig
new file mode 100644
index 0000000..3277650
--- /dev/null
+++ b/configs/P3041DS_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P3041DS=y
diff --git a/configs/P3G4_defconfig b/configs/P3G4_defconfig
new file mode 100644
index 0000000..3d219ef
--- /dev/null
+++ b/configs/P3G4_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_74xx_7xx=y
+CONFIG_TARGET_P3G4=y
diff --git a/configs/P4080DS_SDCARD_defconfig b/configs/P4080DS_SDCARD_defconfig
new file mode 100644
index 0000000..99fbbf2
--- /dev/null
+++ b/configs/P4080DS_SDCARD_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P4080DS=y
diff --git a/configs/P4080DS_SECURE_BOOT_defconfig b/configs/P4080DS_SECURE_BOOT_defconfig
new file mode 100644
index 0000000..bae1da2
--- /dev/null
+++ b/configs/P4080DS_SECURE_BOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P4080DS=y
diff --git a/configs/P4080DS_SPIFLASH_defconfig b/configs/P4080DS_SPIFLASH_defconfig
new file mode 100644
index 0000000..855319d
--- /dev/null
+++ b/configs/P4080DS_SPIFLASH_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P4080DS=y
diff --git a/configs/P4080DS_SRIO_PCIE_BOOT_defconfig b/configs/P4080DS_SRIO_PCIE_BOOT_defconfig
new file mode 100644
index 0000000..6240d73
--- /dev/null
+++ b/configs/P4080DS_SRIO_PCIE_BOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P4080DS=y
diff --git a/configs/P4080DS_defconfig b/configs/P4080DS_defconfig
new file mode 100644
index 0000000..9b5fc89
--- /dev/null
+++ b/configs/P4080DS_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P4080DS=y
diff --git a/configs/P5020DS_NAND_defconfig b/configs/P5020DS_NAND_defconfig
new file mode 100644
index 0000000..6fe8446
--- /dev/null
+++ b/configs/P5020DS_NAND_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P5020DS=y
diff --git a/configs/P5020DS_SDCARD_defconfig b/configs/P5020DS_SDCARD_defconfig
new file mode 100644
index 0000000..e19aa6e
--- /dev/null
+++ b/configs/P5020DS_SDCARD_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P5020DS=y
diff --git a/configs/P5020DS_SECURE_BOOT_defconfig b/configs/P5020DS_SECURE_BOOT_defconfig
new file mode 100644
index 0000000..30871d9
--- /dev/null
+++ b/configs/P5020DS_SECURE_BOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P5020DS=y
diff --git a/configs/P5020DS_SPIFLASH_defconfig b/configs/P5020DS_SPIFLASH_defconfig
new file mode 100644
index 0000000..dbcc056
--- /dev/null
+++ b/configs/P5020DS_SPIFLASH_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P5020DS=y
diff --git a/configs/P5020DS_SRIO_PCIE_BOOT_defconfig b/configs/P5020DS_SRIO_PCIE_BOOT_defconfig
new file mode 100644
index 0000000..dc191f7
--- /dev/null
+++ b/configs/P5020DS_SRIO_PCIE_BOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P5020DS=y
diff --git a/configs/P5020DS_defconfig b/configs/P5020DS_defconfig
new file mode 100644
index 0000000..d1c5c72
--- /dev/null
+++ b/configs/P5020DS_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P5020DS=y
diff --git a/configs/P5040DS_NAND_defconfig b/configs/P5040DS_NAND_defconfig
new file mode 100644
index 0000000..de3cd06
--- /dev/null
+++ b/configs/P5040DS_NAND_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P5040DS=y
diff --git a/configs/P5040DS_SDCARD_defconfig b/configs/P5040DS_SDCARD_defconfig
new file mode 100644
index 0000000..f0ef285
--- /dev/null
+++ b/configs/P5040DS_SDCARD_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P5040DS=y
diff --git a/configs/P5040DS_SPIFLASH_defconfig b/configs/P5040DS_SPIFLASH_defconfig
new file mode 100644
index 0000000..a2922f5
--- /dev/null
+++ b/configs/P5040DS_SPIFLASH_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P5040DS=y
diff --git a/configs/P5040DS_defconfig b/configs/P5040DS_defconfig
new file mode 100644
index 0000000..38f3d58
--- /dev/null
+++ b/configs/P5040DS_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P5040DS=y
diff --git a/configs/PATI_defconfig b/configs/PATI_defconfig
new file mode 100644
index 0000000..14ca871
--- /dev/null
+++ b/configs/PATI_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_5xx=y
+CONFIG_TARGET_PATI=y
diff --git a/configs/PCI405_defconfig b/configs/PCI405_defconfig
new file mode 100644
index 0000000..48f19fe
--- /dev/null
+++ b/configs/PCI405_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_PCI405=y
diff --git a/configs/PCI5441_defconfig b/configs/PCI5441_defconfig
new file mode 100644
index 0000000..a4bfdb4
--- /dev/null
+++ b/configs/PCI5441_defconfig
@@ -0,0 +1,2 @@
+CONFIG_NIOS2=y
+CONFIG_TARGET_PCI5441=y
diff --git a/configs/PIP405_defconfig b/configs/PIP405_defconfig
new file mode 100644
index 0000000..38b3acb
--- /dev/null
+++ b/configs/PIP405_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_PIP405=y
diff --git a/configs/PK1C20_defconfig b/configs/PK1C20_defconfig
new file mode 100644
index 0000000..bb2513a
--- /dev/null
+++ b/configs/PK1C20_defconfig
@@ -0,0 +1,2 @@
+CONFIG_NIOS2=y
+CONFIG_TARGET_PK1C20=y
diff --git a/configs/PLU405_defconfig b/configs/PLU405_defconfig
new file mode 100644
index 0000000..15477c4
--- /dev/null
+++ b/configs/PLU405_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_PLU405=y
diff --git a/configs/PM520_DDR_defconfig b/configs/PM520_DDR_defconfig
new file mode 100644
index 0000000..6d6a59d
--- /dev/null
+++ b/configs/PM520_DDR_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="MPC5200_DDR"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_PM520=y
diff --git a/configs/PM520_ROMBOOT_DDR_defconfig b/configs/PM520_ROMBOOT_DDR_defconfig
new file mode 100644
index 0000000..f5a40d9
--- /dev/null
+++ b/configs/PM520_ROMBOOT_DDR_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="MPC5200_DDR,BOOT_ROM"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_PM520=y
diff --git a/configs/PM520_ROMBOOT_defconfig b/configs/PM520_ROMBOOT_defconfig
new file mode 100644
index 0000000..d9f9ea0
--- /dev/null
+++ b/configs/PM520_ROMBOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="BOOT_ROM"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_PM520=y
diff --git a/configs/PM520_defconfig b/configs/PM520_defconfig
new file mode 100644
index 0000000..2737a8c
--- /dev/null
+++ b/configs/PM520_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_PM520=y
diff --git a/configs/PM825_BIGFLASH_defconfig b/configs/PM825_BIGFLASH_defconfig
new file mode 100644
index 0000000..75efcdd
--- /dev/null
+++ b/configs/PM825_BIGFLASH_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PCI,FLASH_32MB,SYS_TEXT_BASE=0x40000000"
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_PM826=y
diff --git a/configs/PM825_ROMBOOT_BIGFLASH_defconfig b/configs/PM825_ROMBOOT_BIGFLASH_defconfig
new file mode 100644
index 0000000..28ff17f
--- /dev/null
+++ b/configs/PM825_ROMBOOT_BIGFLASH_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PCI,BOOT_ROM,FLASH_32MB,SYS_TEXT_BASE=0xFF800000"
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_PM826=y
diff --git a/configs/PM825_ROMBOOT_defconfig b/configs/PM825_ROMBOOT_defconfig
new file mode 100644
index 0000000..f5233fa
--- /dev/null
+++ b/configs/PM825_ROMBOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PCI,BOOT_ROM,SYS_TEXT_BASE=0xFF800000"
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_PM826=y
diff --git a/configs/PM825_defconfig b/configs/PM825_defconfig
new file mode 100644
index 0000000..459cdba
--- /dev/null
+++ b/configs/PM825_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PCI,SYS_TEXT_BASE=0xFF000000"
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_PM826=y
diff --git a/configs/PM826_BIGFLASH_defconfig b/configs/PM826_BIGFLASH_defconfig
new file mode 100644
index 0000000..0acf9d2
--- /dev/null
+++ b/configs/PM826_BIGFLASH_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="FLASH_32MB,SYS_TEXT_BASE=0x40000000"
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_PM826=y
diff --git a/configs/PM826_ROMBOOT_BIGFLASH_defconfig b/configs/PM826_ROMBOOT_BIGFLASH_defconfig
new file mode 100644
index 0000000..af8d4c9
--- /dev/null
+++ b/configs/PM826_ROMBOOT_BIGFLASH_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="BOOT_ROM,FLASH_32MB,SYS_TEXT_BASE=0xFF800000"
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_PM826=y
diff --git a/configs/PM826_ROMBOOT_defconfig b/configs/PM826_ROMBOOT_defconfig
new file mode 100644
index 0000000..7d3e1c3
--- /dev/null
+++ b/configs/PM826_ROMBOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="BOOT_ROM,SYS_TEXT_BASE=0xFF800000"
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_PM826=y
diff --git a/configs/PM826_defconfig b/configs/PM826_defconfig
new file mode 100644
index 0000000..b2f9d34
--- /dev/null
+++ b/configs/PM826_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0xFF000000"
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_PM826=y
diff --git a/configs/PM828_PCI_defconfig b/configs/PM828_PCI_defconfig
new file mode 100644
index 0000000..9b68562
--- /dev/null
+++ b/configs/PM828_PCI_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PCI"
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_PM828=y
diff --git a/configs/PM828_ROMBOOT_PCI_defconfig b/configs/PM828_ROMBOOT_PCI_defconfig
new file mode 100644
index 0000000..8120058
--- /dev/null
+++ b/configs/PM828_ROMBOOT_PCI_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PCI,BOOT_ROM,SYS_TEXT_BASE=0xFF800000"
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_PM828=y
diff --git a/configs/PM828_ROMBOOT_defconfig b/configs/PM828_ROMBOOT_defconfig
new file mode 100644
index 0000000..7c8980e
--- /dev/null
+++ b/configs/PM828_ROMBOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="BOOT_ROM,SYS_TEXT_BASE=0xFF800000"
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_PM828=y
diff --git a/configs/PM828_defconfig b/configs/PM828_defconfig
new file mode 100644
index 0000000..15887ca
--- /dev/null
+++ b/configs/PM828_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_PM828=y
diff --git a/configs/PMC405DE_defconfig b/configs/PMC405DE_defconfig
new file mode 100644
index 0000000..78c5d39
--- /dev/null
+++ b/configs/PMC405DE_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_PMC405DE=y
diff --git a/configs/PMC405_defconfig b/configs/PMC405_defconfig
new file mode 100644
index 0000000..d82117c
--- /dev/null
+++ b/configs/PMC405_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_PMC405=y
diff --git a/configs/PMC440_defconfig b/configs/PMC440_defconfig
new file mode 100644
index 0000000..27869ac
--- /dev/null
+++ b/configs/PMC440_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_PMC440=y
diff --git a/configs/PPChameleonEVB_BA_25_defconfig b/configs/PPChameleonEVB_BA_25_defconfig
new file mode 100644
index 0000000..e367299
--- /dev/null
+++ b/configs/PPChameleonEVB_BA_25_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPCHAMELEON_MODULE_MODEL=0,PPCHAMELEON_CLK_25"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_PPCHAMELEONEVB=y
diff --git a/configs/PPChameleonEVB_BA_33_defconfig b/configs/PPChameleonEVB_BA_33_defconfig
new file mode 100644
index 0000000..f4041c9
--- /dev/null
+++ b/configs/PPChameleonEVB_BA_33_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPCHAMELEON_MODULE_MODEL=0,PPCHAMELEON_CLK_33"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_PPCHAMELEONEVB=y
diff --git a/configs/PPChameleonEVB_HI_25_defconfig b/configs/PPChameleonEVB_HI_25_defconfig
new file mode 100644
index 0000000..a9de221
--- /dev/null
+++ b/configs/PPChameleonEVB_HI_25_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPCHAMELEON_MODULE_MODEL=2,PPCHAMELEON_CLK_25"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_PPCHAMELEONEVB=y
diff --git a/configs/PPChameleonEVB_HI_33_defconfig b/configs/PPChameleonEVB_HI_33_defconfig
new file mode 100644
index 0000000..882262b
--- /dev/null
+++ b/configs/PPChameleonEVB_HI_33_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPCHAMELEON_MODULE_MODEL=2,PPCHAMELEON_CLK_33"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_PPCHAMELEONEVB=y
diff --git a/configs/PPChameleonEVB_ME_25_defconfig b/configs/PPChameleonEVB_ME_25_defconfig
new file mode 100644
index 0000000..f9a0440
--- /dev/null
+++ b/configs/PPChameleonEVB_ME_25_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPCHAMELEON_MODULE_MODEL=1,PPCHAMELEON_CLK_25"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_PPCHAMELEONEVB=y
diff --git a/configs/PPChameleonEVB_ME_33_defconfig b/configs/PPChameleonEVB_ME_33_defconfig
new file mode 100644
index 0000000..8ee09b8
--- /dev/null
+++ b/configs/PPChameleonEVB_ME_33_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPCHAMELEON_MODULE_MODEL=1,PPCHAMELEON_CLK_33"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_PPCHAMELEONEVB=y
diff --git a/configs/PPChameleonEVB_defconfig b/configs/PPChameleonEVB_defconfig
new file mode 100644
index 0000000..2d83330
--- /dev/null
+++ b/configs/PPChameleonEVB_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_PPCHAMELEONEVB=y
diff --git a/configs/R360MPI_defconfig b/configs/R360MPI_defconfig
new file mode 100644
index 0000000..290f694
--- /dev/null
+++ b/configs/R360MPI_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_R360MPI=y
diff --git a/configs/RRvision_LCD_defconfig b/configs/RRvision_LCD_defconfig
new file mode 100644
index 0000000..4d61187
--- /dev/null
+++ b/configs/RRvision_LCD_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="LCD,SHARP_LQ104V7DS01"
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_RRVISION=y
diff --git a/configs/RRvision_defconfig b/configs/RRvision_defconfig
new file mode 100644
index 0000000..bdb4d7a
--- /dev/null
+++ b/configs/RRvision_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_RRVISION=y
diff --git a/configs/SM850_defconfig b/configs/SM850_defconfig
new file mode 100644
index 0000000..6a50316
--- /dev/null
+++ b/configs/SM850_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_SM850=y
diff --git a/configs/SPD823TS_defconfig b/configs/SPD823TS_defconfig
new file mode 100644
index 0000000..1b218c6
--- /dev/null
+++ b/configs/SPD823TS_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_SPD823TS=y
diff --git a/configs/SXNI855T_defconfig b/configs/SXNI855T_defconfig
new file mode 100644
index 0000000..a4c900a
--- /dev/null
+++ b/configs/SXNI855T_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_SXNI855T=y
diff --git a/configs/Sandpoint8240_defconfig b/configs/Sandpoint8240_defconfig
new file mode 100644
index 0000000..332e4c0
--- /dev/null
+++ b/configs/Sandpoint8240_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC824X=y
+CONFIG_TARGET_SANDPOINT8240=y
diff --git a/configs/Sandpoint8245_defconfig b/configs/Sandpoint8245_defconfig
new file mode 100644
index 0000000..b36757c
--- /dev/null
+++ b/configs/Sandpoint8245_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC824X=y
+CONFIG_TARGET_SANDPOINT8245=y
diff --git a/configs/T1040QDS_D4_defconfig b/configs/T1040QDS_D4_defconfig
new file mode 100644
index 0000000..0684cb0
--- /dev/null
+++ b/configs/T1040QDS_D4_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,SYS_FSL_DDR4"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_T1040QDS=y
diff --git a/configs/T1040QDS_SECURE_BOOT_defconfig b/configs/T1040QDS_SECURE_BOOT_defconfig
new file mode 100644
index 0000000..f3f61eb
--- /dev/null
+++ b/configs/T1040QDS_SECURE_BOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_T1040QDS=y
diff --git a/configs/T1040QDS_defconfig b/configs/T1040QDS_defconfig
new file mode 100644
index 0000000..b8e1a3d
--- /dev/null
+++ b/configs/T1040QDS_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_T1040QDS=y
diff --git a/configs/T1040RDB_NAND_defconfig b/configs/T1040RDB_NAND_defconfig
new file mode 100644
index 0000000..5fe34d8
--- /dev/null
+++ b/configs/T1040RDB_NAND_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,T1040RDB,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_T104XRDB=y
diff --git a/configs/T1040RDB_SDCARD_defconfig b/configs/T1040RDB_SDCARD_defconfig
new file mode 100644
index 0000000..08c3730
--- /dev/null
+++ b/configs/T1040RDB_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,T1040RDB,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_T104XRDB=y
diff --git a/configs/T1040RDB_SECURE_BOOT_defconfig b/configs/T1040RDB_SECURE_BOOT_defconfig
new file mode 100644
index 0000000..0b5ddaf
--- /dev/null
+++ b/configs/T1040RDB_SECURE_BOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,SECURE_BOOT,T1040RDB"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_T104XRDB=y
diff --git a/configs/T1040RDB_SPIFLASH_defconfig b/configs/T1040RDB_SPIFLASH_defconfig
new file mode 100644
index 0000000..1a61703
--- /dev/null
+++ b/configs/T1040RDB_SPIFLASH_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,T1040RDB,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_T104XRDB=y
diff --git a/configs/T1040RDB_defconfig b/configs/T1040RDB_defconfig
new file mode 100644
index 0000000..072eab0
--- /dev/null
+++ b/configs/T1040RDB_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,T1040RDB"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_T104XRDB=y
diff --git a/configs/T1042RDB_PI_NAND_defconfig b/configs/T1042RDB_PI_NAND_defconfig
new file mode 100644
index 0000000..d1a1665
--- /dev/null
+++ b/configs/T1042RDB_PI_NAND_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T1042,T1042RDB_PI,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_T104XRDB=y
diff --git a/configs/T1042RDB_PI_SDCARD_defconfig b/configs/T1042RDB_PI_SDCARD_defconfig
new file mode 100644
index 0000000..2bf123d
--- /dev/null
+++ b/configs/T1042RDB_PI_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T1042,T1042RDB_PI,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_T104XRDB=y
diff --git a/configs/T1042RDB_PI_SPIFLASH_defconfig b/configs/T1042RDB_PI_SPIFLASH_defconfig
new file mode 100644
index 0000000..30d6d2d
--- /dev/null
+++ b/configs/T1042RDB_PI_SPIFLASH_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T1042,T1042RDB_PI,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_T104XRDB=y
diff --git a/configs/T1042RDB_PI_defconfig b/configs/T1042RDB_PI_defconfig
new file mode 100644
index 0000000..f8f6334
--- /dev/null
+++ b/configs/T1042RDB_PI_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T1042,T1042RDB_PI"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_T104XRDB=y
diff --git a/configs/T2080QDS_NAND_defconfig b/configs/T2080QDS_NAND_defconfig
new file mode 100644
index 0000000..b75195a
--- /dev/null
+++ b/configs/T2080QDS_NAND_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_T208XQDS=y
diff --git a/configs/T2080QDS_SDCARD_defconfig b/configs/T2080QDS_SDCARD_defconfig
new file mode 100644
index 0000000..6ed65dd
--- /dev/null
+++ b/configs/T2080QDS_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_T208XQDS=y
diff --git a/configs/T2080QDS_SECURE_BOOT_defconfig b/configs/T2080QDS_SECURE_BOOT_defconfig
new file mode 100644
index 0000000..4f7d709
--- /dev/null
+++ b/configs/T2080QDS_SECURE_BOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_T208XQDS=y
diff --git a/configs/T2080QDS_SPIFLASH_defconfig b/configs/T2080QDS_SPIFLASH_defconfig
new file mode 100644
index 0000000..a3b58d3
--- /dev/null
+++ b/configs/T2080QDS_SPIFLASH_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_T208XQDS=y
diff --git a/configs/T2080QDS_SRIO_PCIE_BOOT_defconfig b/configs/T2080QDS_SRIO_PCIE_BOOT_defconfig
new file mode 100644
index 0000000..1055486
--- /dev/null
+++ b/configs/T2080QDS_SRIO_PCIE_BOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_T208XQDS=y
diff --git a/configs/T2080QDS_defconfig b/configs/T2080QDS_defconfig
new file mode 100644
index 0000000..180d155
--- /dev/null
+++ b/configs/T2080QDS_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_T208XQDS=y
diff --git a/configs/T2080RDB_NAND_defconfig b/configs/T2080RDB_NAND_defconfig
new file mode 100644
index 0000000..7c48f8f
--- /dev/null
+++ b/configs/T2080RDB_NAND_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_T208XRDB=y
diff --git a/configs/T2080RDB_SDCARD_defconfig b/configs/T2080RDB_SDCARD_defconfig
new file mode 100644
index 0000000..31ca9a7
--- /dev/null
+++ b/configs/T2080RDB_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_T208XRDB=y
diff --git a/configs/T2080RDB_SECURE_BOOT_defconfig b/configs/T2080RDB_SECURE_BOOT_defconfig
new file mode 100644
index 0000000..cee5370
--- /dev/null
+++ b/configs/T2080RDB_SECURE_BOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_T208XRDB=y
diff --git a/configs/T2080RDB_SPIFLASH_defconfig b/configs/T2080RDB_SPIFLASH_defconfig
new file mode 100644
index 0000000..bdddeae
--- /dev/null
+++ b/configs/T2080RDB_SPIFLASH_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_T208XRDB=y
diff --git a/configs/T2080RDB_SRIO_PCIE_BOOT_defconfig b/configs/T2080RDB_SRIO_PCIE_BOOT_defconfig
new file mode 100644
index 0000000..9bdf533
--- /dev/null
+++ b/configs/T2080RDB_SRIO_PCIE_BOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_T208XRDB=y
diff --git a/configs/T2080RDB_defconfig b/configs/T2080RDB_defconfig
new file mode 100644
index 0000000..f6ade16
--- /dev/null
+++ b/configs/T2080RDB_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_T208XRDB=y
diff --git a/configs/T2081QDS_NAND_defconfig b/configs/T2081QDS_NAND_defconfig
new file mode 100644
index 0000000..d3558c5
--- /dev/null
+++ b/configs/T2081QDS_NAND_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T2081,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_T208XQDS=y
diff --git a/configs/T2081QDS_SDCARD_defconfig b/configs/T2081QDS_SDCARD_defconfig
new file mode 100644
index 0000000..fc13d2c
--- /dev/null
+++ b/configs/T2081QDS_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T2081,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_T208XQDS=y
diff --git a/configs/T2081QDS_SPIFLASH_defconfig b/configs/T2081QDS_SPIFLASH_defconfig
new file mode 100644
index 0000000..e5ea3dc
--- /dev/null
+++ b/configs/T2081QDS_SPIFLASH_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T2081,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_T208XQDS=y
diff --git a/configs/T2081QDS_SRIO_PCIE_BOOT_defconfig b/configs/T2081QDS_SRIO_PCIE_BOOT_defconfig
new file mode 100644
index 0000000..407af92
--- /dev/null
+++ b/configs/T2081QDS_SRIO_PCIE_BOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T2081,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_T208XQDS=y
diff --git a/configs/T2081QDS_defconfig b/configs/T2081QDS_defconfig
new file mode 100644
index 0000000..93480a6
--- /dev/null
+++ b/configs/T2081QDS_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T2081"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_T208XQDS=y
diff --git a/configs/T4160QDS_NAND_defconfig b/configs/T4160QDS_NAND_defconfig
new file mode 100644
index 0000000..0a18424
--- /dev/null
+++ b/configs/T4160QDS_NAND_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T4160,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_T4240QDS=y
diff --git a/configs/T4160QDS_SDCARD_defconfig b/configs/T4160QDS_SDCARD_defconfig
new file mode 100644
index 0000000..de1b2c4
--- /dev/null
+++ b/configs/T4160QDS_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T4160,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_T4240QDS=y
diff --git a/configs/T4160QDS_SECURE_BOOT_defconfig b/configs/T4160QDS_SECURE_BOOT_defconfig
new file mode 100644
index 0000000..9fc209f
--- /dev/null
+++ b/configs/T4160QDS_SECURE_BOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T4160,SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_T4240QDS=y
diff --git a/configs/T4160QDS_SPIFLASH_defconfig b/configs/T4160QDS_SPIFLASH_defconfig
new file mode 100644
index 0000000..6146b00
--- /dev/null
+++ b/configs/T4160QDS_SPIFLASH_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T4160,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_T4240QDS=y
diff --git a/configs/T4160QDS_defconfig b/configs/T4160QDS_defconfig
new file mode 100644
index 0000000..749f445
--- /dev/null
+++ b/configs/T4160QDS_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T4160"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_T4240QDS=y
diff --git a/configs/T4160RDB_defconfig b/configs/T4160RDB_defconfig
new file mode 100644
index 0000000..34bd914
--- /dev/null
+++ b/configs/T4160RDB_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T4160"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_T4240RDB=y
diff --git a/configs/T4240EMU_defconfig b/configs/T4240EMU_defconfig
new file mode 100644
index 0000000..e95151b
--- /dev/null
+++ b/configs/T4240EMU_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T4240"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_T4240EMU=y
diff --git a/configs/T4240QDS_NAND_defconfig b/configs/T4240QDS_NAND_defconfig
new file mode 100644
index 0000000..65978eb
--- /dev/null
+++ b/configs/T4240QDS_NAND_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T4240,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_T4240QDS=y
diff --git a/configs/T4240QDS_SDCARD_defconfig b/configs/T4240QDS_SDCARD_defconfig
new file mode 100644
index 0000000..4db1b80
--- /dev/null
+++ b/configs/T4240QDS_SDCARD_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T4240,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
++S:CONFIG_PPC=y
++S:CONFIG_MPC85xx=y
++S:CONFIG_TARGET_T4240QDS=y
diff --git a/configs/T4240QDS_SECURE_BOOT_defconfig b/configs/T4240QDS_SECURE_BOOT_defconfig
new file mode 100644
index 0000000..9cc7775
--- /dev/null
+++ b/configs/T4240QDS_SECURE_BOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T4240,SECURE_BOOT"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_T4240QDS=y
diff --git a/configs/T4240QDS_SPIFLASH_defconfig b/configs/T4240QDS_SPIFLASH_defconfig
new file mode 100644
index 0000000..14dc48a
--- /dev/null
+++ b/configs/T4240QDS_SPIFLASH_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T4240,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_T4240QDS=y
diff --git a/configs/T4240QDS_SRIO_PCIE_BOOT_defconfig b/configs/T4240QDS_SRIO_PCIE_BOOT_defconfig
new file mode 100644
index 0000000..7c10655
--- /dev/null
+++ b/configs/T4240QDS_SRIO_PCIE_BOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T4240,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_T4240QDS=y
diff --git a/configs/T4240QDS_defconfig b/configs/T4240QDS_defconfig
new file mode 100644
index 0000000..80889e0
--- /dev/null
+++ b/configs/T4240QDS_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T4240"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_T4240QDS=y
diff --git a/configs/T4240RDB_defconfig b/configs/T4240RDB_defconfig
new file mode 100644
index 0000000..37b1b55
--- /dev/null
+++ b/configs/T4240RDB_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T4240"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_T4240RDB=y
diff --git a/configs/TASREG_defconfig b/configs/TASREG_defconfig
new file mode 100644
index 0000000..2bb0421
--- /dev/null
+++ b/configs/TASREG_defconfig
@@ -0,0 +1,2 @@
+CONFIG_M68K=y
+CONFIG_TARGET_TASREG=y
diff --git a/configs/TB5200_B_defconfig b/configs/TB5200_B_defconfig
new file mode 100644
index 0000000..00d06c9
--- /dev/null
+++ b/configs/TB5200_B_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="TQM5200_B"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_TB5200=y
diff --git a/configs/TB5200_defconfig b/configs/TB5200_defconfig
new file mode 100644
index 0000000..13d8e2d
--- /dev/null
+++ b/configs/TB5200_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_TB5200=y
diff --git a/configs/TK885D_defconfig b/configs/TK885D_defconfig
new file mode 100644
index 0000000..01bc6dc
--- /dev/null
+++ b/configs/TK885D_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_TK885D=y
diff --git a/configs/TOP5200_defconfig b/configs/TOP5200_defconfig
new file mode 100644
index 0000000..86eed7f
--- /dev/null
+++ b/configs/TOP5200_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="TOP5200"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_TOP5200=y
diff --git a/configs/TOP860_defconfig b/configs/TOP860_defconfig
new file mode 100644
index 0000000..9fcc6f6
--- /dev/null
+++ b/configs/TOP860_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_TOP860=y
diff --git a/configs/TQM5200S_HIGHBOOT_defconfig b/configs/TQM5200S_HIGHBOOT_defconfig
new file mode 100644
index 0000000..f54377e
--- /dev/null
+++ b/configs/TQM5200S_HIGHBOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="TQM5200_B,TQM5200S,SYS_TEXT_BASE=0xFFF00000"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_TQM5200=y
diff --git a/configs/TQM5200S_defconfig b/configs/TQM5200S_defconfig
new file mode 100644
index 0000000..5d976ce
--- /dev/null
+++ b/configs/TQM5200S_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="TQM5200_B,TQM5200S"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_TQM5200=y
diff --git a/configs/TQM5200_B_HIGHBOOT_defconfig b/configs/TQM5200_B_HIGHBOOT_defconfig
new file mode 100644
index 0000000..61c120a
--- /dev/null
+++ b/configs/TQM5200_B_HIGHBOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="TQM5200_B,SYS_TEXT_BASE=0xFFF00000"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_TQM5200=y
diff --git a/configs/TQM5200_B_defconfig b/configs/TQM5200_B_defconfig
new file mode 100644
index 0000000..ddc5d2c
--- /dev/null
+++ b/configs/TQM5200_B_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="TQM5200_B"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_TQM5200=y
diff --git a/configs/TQM5200_STK100_defconfig b/configs/TQM5200_STK100_defconfig
new file mode 100644
index 0000000..9c198c6
--- /dev/null
+++ b/configs/TQM5200_STK100_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="STK52XX_REV100"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_TQM5200=y
diff --git a/configs/TQM5200_defconfig b/configs/TQM5200_defconfig
new file mode 100644
index 0000000..1fe9682
--- /dev/null
+++ b/configs/TQM5200_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_TQM5200=y
diff --git a/configs/TQM823L_LCD_defconfig b/configs/TQM823L_LCD_defconfig
new file mode 100644
index 0000000..cacd3e2
--- /dev/null
+++ b/configs/TQM823L_LCD_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="LCD,NEC_NL6448BC20"
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_TQM823L=y
diff --git a/configs/TQM823L_defconfig b/configs/TQM823L_defconfig
new file mode 100644
index 0000000..5678bf2
--- /dev/null
+++ b/configs/TQM823L_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_TQM823L=y
diff --git a/configs/TQM823M_defconfig b/configs/TQM823M_defconfig
new file mode 100644
index 0000000..974bc91
--- /dev/null
+++ b/configs/TQM823M_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_TQM823M=y
diff --git a/configs/TQM8255_AA_defconfig b/configs/TQM8255_AA_defconfig
new file mode 100644
index 0000000..a9f9f01
--- /dev/null
+++ b/configs/TQM8255_AA_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="MPC8255,300MHz"
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_TQM8260=y
diff --git a/configs/TQM8260_AA_defconfig b/configs/TQM8260_AA_defconfig
new file mode 100644
index 0000000..b762fe4
--- /dev/null
+++ b/configs/TQM8260_AA_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="MPC8260,200MHz"
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_TQM8260=y
diff --git a/configs/TQM8260_AB_defconfig b/configs/TQM8260_AB_defconfig
new file mode 100644
index 0000000..6ff8d17
--- /dev/null
+++ b/configs/TQM8260_AB_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="MPC8260,200MHz,L2_CACHE,BUSMODE_60x"
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_TQM8260=y
diff --git a/configs/TQM8260_AC_defconfig b/configs/TQM8260_AC_defconfig
new file mode 100644
index 0000000..6ff8d17
--- /dev/null
+++ b/configs/TQM8260_AC_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="MPC8260,200MHz,L2_CACHE,BUSMODE_60x"
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_TQM8260=y
diff --git a/configs/TQM8260_AD_defconfig b/configs/TQM8260_AD_defconfig
new file mode 100644
index 0000000..3f406a4
--- /dev/null
+++ b/configs/TQM8260_AD_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="MPC8260,300MHz,BUSMODE_60x"
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_TQM8260=y
diff --git a/configs/TQM8260_AE_defconfig b/configs/TQM8260_AE_defconfig
new file mode 100644
index 0000000..1077b19
--- /dev/null
+++ b/configs/TQM8260_AE_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="MPC8260,266MHz"
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_TQM8260=y
diff --git a/configs/TQM8260_AF_defconfig b/configs/TQM8260_AF_defconfig
new file mode 100644
index 0000000..3f406a4
--- /dev/null
+++ b/configs/TQM8260_AF_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="MPC8260,300MHz,BUSMODE_60x"
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_TQM8260=y
diff --git a/configs/TQM8260_AG_defconfig b/configs/TQM8260_AG_defconfig
new file mode 100644
index 0000000..b0d67fa
--- /dev/null
+++ b/configs/TQM8260_AG_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="MPC8260,300MHz"
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_TQM8260=y
diff --git a/configs/TQM8260_AH_defconfig b/configs/TQM8260_AH_defconfig
new file mode 100644
index 0000000..65c73e8
--- /dev/null
+++ b/configs/TQM8260_AH_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="MPC8260,300MHz,L2_CACHE,BUSMODE_60x"
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_TQM8260=y
diff --git a/configs/TQM8260_AI_defconfig b/configs/TQM8260_AI_defconfig
new file mode 100644
index 0000000..3f406a4
--- /dev/null
+++ b/configs/TQM8260_AI_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="MPC8260,300MHz,BUSMODE_60x"
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_TQM8260=y
diff --git a/configs/TQM8265_AA_defconfig b/configs/TQM8265_AA_defconfig
new file mode 100644
index 0000000..d8806c4
--- /dev/null
+++ b/configs/TQM8265_AA_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="MPC8265,300MHz,BUSMODE_60x"
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_TQM8260=y
diff --git a/configs/TQM8272_defconfig b/configs/TQM8272_defconfig
new file mode 100644
index 0000000..0070baf
--- /dev/null
+++ b/configs/TQM8272_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_TQM8272=y
diff --git a/configs/TQM834x_defconfig b/configs/TQM834x_defconfig
new file mode 100644
index 0000000..2cf89b4
--- /dev/null
+++ b/configs/TQM834x_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_TQM834X=y
diff --git a/configs/TQM850L_defconfig b/configs/TQM850L_defconfig
new file mode 100644
index 0000000..f3d5f4d
--- /dev/null
+++ b/configs/TQM850L_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_TQM850L=y
diff --git a/configs/TQM850M_defconfig b/configs/TQM850M_defconfig
new file mode 100644
index 0000000..6052ada
--- /dev/null
+++ b/configs/TQM850M_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_TQM850M=y
diff --git a/configs/TQM855L_defconfig b/configs/TQM855L_defconfig
new file mode 100644
index 0000000..b7d5891
--- /dev/null
+++ b/configs/TQM855L_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_TQM855L=y
diff --git a/configs/TQM855M_defconfig b/configs/TQM855M_defconfig
new file mode 100644
index 0000000..367a709
--- /dev/null
+++ b/configs/TQM855M_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_TQM855M=y
diff --git a/configs/TQM860L_defconfig b/configs/TQM860L_defconfig
new file mode 100644
index 0000000..0a215a7
--- /dev/null
+++ b/configs/TQM860L_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_TQM860L=y
diff --git a/configs/TQM860M_defconfig b/configs/TQM860M_defconfig
new file mode 100644
index 0000000..5c9a4f1
--- /dev/null
+++ b/configs/TQM860M_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_TQM860M=y
diff --git a/configs/TQM862L_defconfig b/configs/TQM862L_defconfig
new file mode 100644
index 0000000..24a290e
--- /dev/null
+++ b/configs/TQM862L_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_TQM862L=y
diff --git a/configs/TQM862M_defconfig b/configs/TQM862M_defconfig
new file mode 100644
index 0000000..ca8dba1
--- /dev/null
+++ b/configs/TQM862M_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_TQM862M=y
diff --git a/configs/TQM866M_defconfig b/configs/TQM866M_defconfig
new file mode 100644
index 0000000..bcf039a
--- /dev/null
+++ b/configs/TQM866M_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_TQM866M=y
diff --git a/configs/TQM885D_defconfig b/configs/TQM885D_defconfig
new file mode 100644
index 0000000..6a0268a
--- /dev/null
+++ b/configs/TQM885D_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_TQM885D=y
diff --git a/configs/TTTech_defconfig b/configs/TTTech_defconfig
new file mode 100644
index 0000000..be99da3
--- /dev/null
+++ b/configs/TTTech_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="LCD,SHARP_LQ104V7DS01"
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_TQM823L=y
diff --git a/configs/TWR-P1025_defconfig b/configs/TWR-P1025_defconfig
new file mode 100644
index 0000000..95d758e
--- /dev/null
+++ b/configs/TWR-P1025_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="TWR_P1025"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_P1_TWR=y
diff --git a/configs/Total5200_Rev2_defconfig b/configs/Total5200_Rev2_defconfig
new file mode 100644
index 0000000..9f27734
--- /dev/null
+++ b/configs/Total5200_Rev2_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="TOTAL5200_REV=2"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_TOTAL5200=y
diff --git a/configs/Total5200_Rev2_lowboot_defconfig b/configs/Total5200_Rev2_lowboot_defconfig
new file mode 100644
index 0000000..15b27b3
--- /dev/null
+++ b/configs/Total5200_Rev2_lowboot_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="TOTAL5200_REV=2,SYS_TEXT_BASE=0xFE000000"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_TOTAL5200=y
diff --git a/configs/Total5200_defconfig b/configs/Total5200_defconfig
new file mode 100644
index 0000000..5aaae49
--- /dev/null
+++ b/configs/Total5200_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="TOTAL5200_REV=1"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_TOTAL5200=y
diff --git a/configs/Total5200_lowboot_defconfig b/configs/Total5200_lowboot_defconfig
new file mode 100644
index 0000000..4c9195e
--- /dev/null
+++ b/configs/Total5200_lowboot_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="TOTAL5200_REV=1,SYS_TEXT_BASE=0xFE000000"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_TOTAL5200=y
diff --git a/configs/VCMA9_defconfig b/configs/VCMA9_defconfig
new file mode 100644
index 0000000..6aa8de0
--- /dev/null
+++ b/configs/VCMA9_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_VCMA9=y
diff --git a/configs/VOH405_defconfig b/configs/VOH405_defconfig
new file mode 100644
index 0000000..1fbe91a
--- /dev/null
+++ b/configs/VOH405_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_VOH405=y
diff --git a/configs/VOM405_defconfig b/configs/VOM405_defconfig
new file mode 100644
index 0000000..b65515f
--- /dev/null
+++ b/configs/VOM405_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_VOM405=y
diff --git a/configs/VoVPN-GW_66MHz_defconfig b/configs/VoVPN-GW_66MHz_defconfig
new file mode 100644
index 0000000..4eb931e
--- /dev/null
+++ b/configs/VoVPN-GW_66MHz_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="CLKIN_66MHz"
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_VOVPN_GW=y
diff --git a/configs/W7OLMC_defconfig b/configs/W7OLMC_defconfig
new file mode 100644
index 0000000..573427b
--- /dev/null
+++ b/configs/W7OLMC_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_W7OLMC=y
diff --git a/configs/W7OLMG_defconfig b/configs/W7OLMG_defconfig
new file mode 100644
index 0000000..7410124
--- /dev/null
+++ b/configs/W7OLMG_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_W7OLMG=y
diff --git a/configs/WUH405_defconfig b/configs/WUH405_defconfig
new file mode 100644
index 0000000..dadea20
--- /dev/null
+++ b/configs/WUH405_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_WUH405=y
diff --git a/configs/ZUMA_defconfig b/configs/ZUMA_defconfig
new file mode 100644
index 0000000..536f8bb
--- /dev/null
+++ b/configs/ZUMA_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_74xx_7xx=y
+CONFIG_TARGET_ZUMA=y
diff --git a/configs/a320evb_defconfig b/configs/a320evb_defconfig
new file mode 100644
index 0000000..5ebf5e6
--- /dev/null
+++ b/configs/a320evb_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_A320EVB=y
diff --git a/configs/a3m071_defconfig b/configs/a3m071_defconfig
new file mode 100644
index 0000000..16218c0
--- /dev/null
+++ b/configs/a3m071_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
++S:CONFIG_PPC=y
++S:CONFIG_MPC5xxx=y
++S:CONFIG_TARGET_A3M071=y
diff --git a/configs/a4m072_defconfig b/configs/a4m072_defconfig
new file mode 100644
index 0000000..ddc8d3f
--- /dev/null
+++ b/configs/a4m072_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_A4M072=y
diff --git a/configs/a4m2k_defconfig b/configs/a4m2k_defconfig
new file mode 100644
index 0000000..15f04f9
--- /dev/null
+++ b/configs/a4m2k_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="A4M2K"
++S:CONFIG_PPC=y
++S:CONFIG_MPC5xxx=y
++S:CONFIG_TARGET_A3M071=y
diff --git a/configs/ac14xx_defconfig b/configs/ac14xx_defconfig
new file mode 100644
index 0000000..3796632
--- /dev/null
+++ b/configs/ac14xx_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC512X=y
+CONFIG_TARGET_AC14XX=y
diff --git a/configs/acadia_defconfig b/configs/acadia_defconfig
new file mode 100644
index 0000000..26221ce
--- /dev/null
+++ b/configs/acadia_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_ACADIA=y
diff --git a/configs/adp-ag101_defconfig b/configs/adp-ag101_defconfig
new file mode 100644
index 0000000..2891154
--- /dev/null
+++ b/configs/adp-ag101_defconfig
@@ -0,0 +1,2 @@
+CONFIG_NDS32=y
+CONFIG_TARGET_ADP_AG101=y
diff --git a/configs/adp-ag101p_defconfig b/configs/adp-ag101p_defconfig
new file mode 100644
index 0000000..0a7a64c
--- /dev/null
+++ b/configs/adp-ag101p_defconfig
@@ -0,0 +1,2 @@
+CONFIG_NDS32=y
+CONFIG_TARGET_ADP_AG101P=y
diff --git a/configs/adp-ag102_defconfig b/configs/adp-ag102_defconfig
new file mode 100644
index 0000000..03f2241
--- /dev/null
+++ b/configs/adp-ag102_defconfig
@@ -0,0 +1,2 @@
+CONFIG_NDS32=y
+CONFIG_TARGET_ADP_AG102=y
diff --git a/configs/aev_defconfig b/configs/aev_defconfig
new file mode 100644
index 0000000..b2a9589
--- /dev/null
+++ b/configs/aev_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_AEV=y
diff --git a/configs/afeb9260_defconfig b/configs/afeb9260_defconfig
new file mode 100644
index 0000000..2616d2d
--- /dev/null
+++ b/configs/afeb9260_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_AFEB9260=y
diff --git a/configs/alpr_defconfig b/configs/alpr_defconfig
new file mode 100644
index 0000000..9f613c8
--- /dev/null
+++ b/configs/alpr_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_ALPR=y
diff --git a/configs/alt_defconfig b/configs/alt_defconfig
new file mode 100644
index 0000000..11a1c89
--- /dev/null
+++ b/configs/alt_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_ALT=y
diff --git a/configs/am335x_boneblack_defconfig b/configs/am335x_boneblack_defconfig
new file mode 100644
index 0000000..38450c0
--- /dev/null
+++ b/configs/am335x_boneblack_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1,EMMC_BOOT"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_AM335X_EVM=y
diff --git a/configs/am335x_boneblack_vboot_defconfig b/configs/am335x_boneblack_vboot_defconfig
new file mode 100644
index 0000000..00317c4
--- /dev/null
+++ b/configs/am335x_boneblack_vboot_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1,EMMC_BOOT,ENABLE_VBOOT"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_AM335X_EVM=y
diff --git a/configs/am335x_evm_defconfig b/configs/am335x_evm_defconfig
new file mode 100644
index 0000000..7710dc0
--- /dev/null
+++ b/configs/am335x_evm_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1,NAND"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_AM335X_EVM=y
diff --git a/configs/am335x_evm_nor_defconfig b/configs/am335x_evm_nor_defconfig
new file mode 100644
index 0000000..fecec5e
--- /dev/null
+++ b/configs/am335x_evm_nor_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1,NAND,NOR"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_AM335X_EVM=y
diff --git a/configs/am335x_evm_norboot_defconfig b/configs/am335x_evm_norboot_defconfig
new file mode 100644
index 0000000..6005c22
--- /dev/null
+++ b/configs/am335x_evm_norboot_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1,NOR,NOR_BOOT"
+CONFIG_ARM=y
+CONFIG_TARGET_AM335X_EVM=y
diff --git a/configs/am335x_evm_spiboot_defconfig b/configs/am335x_evm_spiboot_defconfig
new file mode 100644
index 0000000..389d1d8
--- /dev/null
+++ b/configs/am335x_evm_spiboot_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1,SPI_BOOT"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_AM335X_EVM=y
diff --git a/configs/am335x_evm_uart1_defconfig b/configs/am335x_evm_uart1_defconfig
new file mode 100644
index 0000000..14e8879
--- /dev/null
+++ b/configs/am335x_evm_uart1_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="SERIAL2,CONS_INDEX=2,NAND"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_AM335X_EVM=y
diff --git a/configs/am335x_evm_uart2_defconfig b/configs/am335x_evm_uart2_defconfig
new file mode 100644
index 0000000..706ced9
--- /dev/null
+++ b/configs/am335x_evm_uart2_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="SERIAL3,CONS_INDEX=3,NAND"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_AM335X_EVM=y
diff --git a/configs/am335x_evm_uart3_defconfig b/configs/am335x_evm_uart3_defconfig
new file mode 100644
index 0000000..4706868
--- /dev/null
+++ b/configs/am335x_evm_uart3_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="SERIAL4,CONS_INDEX=4,NAND"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_AM335X_EVM=y
diff --git a/configs/am335x_evm_uart4_defconfig b/configs/am335x_evm_uart4_defconfig
new file mode 100644
index 0000000..8ab7769
--- /dev/null
+++ b/configs/am335x_evm_uart4_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="SERIAL5,CONS_INDEX=5,NAND"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_AM335X_EVM=y
diff --git a/configs/am335x_evm_uart5_defconfig b/configs/am335x_evm_uart5_defconfig
new file mode 100644
index 0000000..ea3b761
--- /dev/null
+++ b/configs/am335x_evm_uart5_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="SERIAL6,CONS_INDEX=6,NAND"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_AM335X_EVM=y
diff --git a/configs/am335x_evm_usbspl_defconfig b/configs/am335x_evm_usbspl_defconfig
new file mode 100644
index 0000000..b6b30c6
--- /dev/null
+++ b/configs/am335x_evm_usbspl_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1,NAND,SPL_USBETH_SUPPORT"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_AM335X_EVM=y
diff --git a/configs/am335x_igep0033_defconfig b/configs/am335x_igep0033_defconfig
new file mode 100644
index 0000000..23f0a32
--- /dev/null
+++ b/configs/am335x_igep0033_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_AM335X_IGEP0033=y
diff --git a/configs/am3517_crane_defconfig b/configs/am3517_crane_defconfig
new file mode 100644
index 0000000..ec93224
--- /dev/null
+++ b/configs/am3517_crane_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_AM3517_CRANE=y
diff --git a/configs/am3517_evm_defconfig b/configs/am3517_evm_defconfig
new file mode 100644
index 0000000..1fab6c1
--- /dev/null
+++ b/configs/am3517_evm_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_AM3517_EVM=y
diff --git a/configs/am43xx_evm_defconfig b/configs/am43xx_evm_defconfig
new file mode 100644
index 0000000..369f2a4
--- /dev/null
+++ b/configs/am43xx_evm_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_AM43XX_EVM=y
diff --git a/configs/am43xx_evm_qspiboot_defconfig b/configs/am43xx_evm_qspiboot_defconfig
new file mode 100644
index 0000000..281a215
--- /dev/null
+++ b/configs/am43xx_evm_qspiboot_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1,QSPI,QSPI_BOOT"
+CONFIG_ARM=y
+CONFIG_TARGET_AM43XX_EVM=y
diff --git a/configs/ap325rxa_defconfig b/configs/ap325rxa_defconfig
new file mode 100644
index 0000000..ae2039c
--- /dev/null
+++ b/configs/ap325rxa_defconfig
@@ -0,0 +1,2 @@
+CONFIG_SH=y
+CONFIG_TARGET_AP325RXA=y
diff --git a/configs/ap_sh4a_4a_defconfig b/configs/ap_sh4a_4a_defconfig
new file mode 100644
index 0000000..f76329b
--- /dev/null
+++ b/configs/ap_sh4a_4a_defconfig
@@ -0,0 +1,2 @@
+CONFIG_SH=y
+CONFIG_TARGET_AP_SH4A_4A=y
diff --git a/configs/apf27_defconfig b/configs/apf27_defconfig
new file mode 100644
index 0000000..67effa1
--- /dev/null
+++ b/configs/apf27_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_APF27=y
diff --git a/configs/apx4devkit_defconfig b/configs/apx4devkit_defconfig
new file mode 100644
index 0000000..a47d630
--- /dev/null
+++ b/configs/apx4devkit_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_APX4DEVKIT=y
diff --git a/configs/arcangel4-be_defconfig b/configs/arcangel4-be_defconfig
new file mode 100644
index 0000000..867fb1f
--- /dev/null
+++ b/configs/arcangel4-be_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARC=y
+CONFIG_TARGET_ARCANGEL4_BE=y
diff --git a/configs/arcangel4_defconfig b/configs/arcangel4_defconfig
new file mode 100644
index 0000000..82b583e
--- /dev/null
+++ b/configs/arcangel4_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARC=y
+CONFIG_TARGET_ARCANGEL4=y
diff --git a/configs/arches_defconfig b/configs/arches_defconfig
new file mode 100644
index 0000000..18d0a14
--- /dev/null
+++ b/configs/arches_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="ARCHES"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_CANYONLANDS=y
diff --git a/configs/aria_defconfig b/configs/aria_defconfig
new file mode 100644
index 0000000..f7ebfa6
--- /dev/null
+++ b/configs/aria_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC512X=y
+CONFIG_TARGET_ARIA=y
diff --git a/configs/armadillo-800eva_defconfig b/configs/armadillo-800eva_defconfig
new file mode 100644
index 0000000..081c88a
--- /dev/null
+++ b/configs/armadillo-800eva_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_ARMADILLO_800EVA=y
diff --git a/configs/arndale_defconfig b/configs/arndale_defconfig
new file mode 100644
index 0000000..7cc4307
--- /dev/null
+++ b/configs/arndale_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_ARNDALE=y
diff --git a/configs/aspenite_defconfig b/configs/aspenite_defconfig
new file mode 100644
index 0000000..0b341d6
--- /dev/null
+++ b/configs/aspenite_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_ASPENITE=y
diff --git a/configs/astro_mcf5373l_defconfig b/configs/astro_mcf5373l_defconfig
new file mode 100644
index 0000000..6807aee
--- /dev/null
+++ b/configs/astro_mcf5373l_defconfig
@@ -0,0 +1,2 @@
+CONFIG_M68K=y
+CONFIG_TARGET_ASTRO_MCF5373L=y
diff --git a/configs/at91rm9200ek_defconfig b/configs/at91rm9200ek_defconfig
new file mode 100644
index 0000000..95b5c27
--- /dev/null
+++ b/configs/at91rm9200ek_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_AT91RM9200EK=y
diff --git a/configs/at91rm9200ek_ram_defconfig b/configs/at91rm9200ek_ram_defconfig
new file mode 100644
index 0000000..5039ebc
--- /dev/null
+++ b/configs/at91rm9200ek_ram_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91RM9200EK=y
diff --git a/configs/at91sam9260ek_dataflash_cs0_defconfig b/configs/at91sam9260ek_dataflash_cs0_defconfig
new file mode 100644
index 0000000..7f929c8
--- /dev/null
+++ b/configs/at91sam9260ek_dataflash_cs0_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9260,SYS_USE_DATAFLASH_CS0"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9260EK=y
diff --git a/configs/at91sam9260ek_dataflash_cs1_defconfig b/configs/at91sam9260ek_dataflash_cs1_defconfig
new file mode 100644
index 0000000..e2c32bf
--- /dev/null
+++ b/configs/at91sam9260ek_dataflash_cs1_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9260,SYS_USE_DATAFLASH_CS1"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9260EK=y
diff --git a/configs/at91sam9260ek_nandflash_defconfig b/configs/at91sam9260ek_nandflash_defconfig
new file mode 100644
index 0000000..1168cac
--- /dev/null
+++ b/configs/at91sam9260ek_nandflash_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9260,SYS_USE_NANDFLASH"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9260EK=y
diff --git a/configs/at91sam9261ek_dataflash_cs0_defconfig b/configs/at91sam9261ek_dataflash_cs0_defconfig
new file mode 100644
index 0000000..486eeb2
--- /dev/null
+++ b/configs/at91sam9261ek_dataflash_cs0_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9261,SYS_USE_DATAFLASH_CS0"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9261EK=y
diff --git a/configs/at91sam9261ek_dataflash_cs3_defconfig b/configs/at91sam9261ek_dataflash_cs3_defconfig
new file mode 100644
index 0000000..5f42a90
--- /dev/null
+++ b/configs/at91sam9261ek_dataflash_cs3_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9261,SYS_USE_DATAFLASH_CS3"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9261EK=y
diff --git a/configs/at91sam9261ek_nandflash_defconfig b/configs/at91sam9261ek_nandflash_defconfig
new file mode 100644
index 0000000..4d7aa90
--- /dev/null
+++ b/configs/at91sam9261ek_nandflash_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9261,SYS_USE_NANDFLASH"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9261EK=y
diff --git a/configs/at91sam9263ek_dataflash_cs0_defconfig b/configs/at91sam9263ek_dataflash_cs0_defconfig
new file mode 100644
index 0000000..4dce54e
--- /dev/null
+++ b/configs/at91sam9263ek_dataflash_cs0_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9263,SYS_USE_DATAFLASH"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9263EK=y
diff --git a/configs/at91sam9263ek_dataflash_defconfig b/configs/at91sam9263ek_dataflash_defconfig
new file mode 100644
index 0000000..4dce54e
--- /dev/null
+++ b/configs/at91sam9263ek_dataflash_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9263,SYS_USE_DATAFLASH"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9263EK=y
diff --git a/configs/at91sam9263ek_nandflash_defconfig b/configs/at91sam9263ek_nandflash_defconfig
new file mode 100644
index 0000000..6f60daa
--- /dev/null
+++ b/configs/at91sam9263ek_nandflash_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9263,SYS_USE_NANDFLASH"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9263EK=y
diff --git a/configs/at91sam9263ek_norflash_boot_defconfig b/configs/at91sam9263ek_norflash_boot_defconfig
new file mode 100644
index 0000000..944c14d
--- /dev/null
+++ b/configs/at91sam9263ek_norflash_boot_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9263,SYS_USE_BOOT_NORFLASH"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9263EK=y
diff --git a/configs/at91sam9263ek_norflash_defconfig b/configs/at91sam9263ek_norflash_defconfig
new file mode 100644
index 0000000..b54ef7f
--- /dev/null
+++ b/configs/at91sam9263ek_norflash_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9263,SYS_USE_NORFLASH"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9263EK=y
diff --git a/configs/at91sam9g10ek_dataflash_cs0_defconfig b/configs/at91sam9g10ek_dataflash_cs0_defconfig
new file mode 100644
index 0000000..132102d
--- /dev/null
+++ b/configs/at91sam9g10ek_dataflash_cs0_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G10,SYS_USE_DATAFLASH_CS0"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9261EK=y
diff --git a/configs/at91sam9g10ek_dataflash_cs3_defconfig b/configs/at91sam9g10ek_dataflash_cs3_defconfig
new file mode 100644
index 0000000..3dd3f9a
--- /dev/null
+++ b/configs/at91sam9g10ek_dataflash_cs3_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G10,SYS_USE_DATAFLASH_CS3"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9261EK=y
diff --git a/configs/at91sam9g10ek_nandflash_defconfig b/configs/at91sam9g10ek_nandflash_defconfig
new file mode 100644
index 0000000..a2bd6df
--- /dev/null
+++ b/configs/at91sam9g10ek_nandflash_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G10,SYS_USE_NANDFLASH"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9261EK=y
diff --git a/configs/at91sam9g20ek_2mmc_nandflash_defconfig b/configs/at91sam9g20ek_2mmc_nandflash_defconfig
new file mode 100644
index 0000000..1a4c505
--- /dev/null
+++ b/configs/at91sam9g20ek_2mmc_nandflash_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20,AT91SAM9G20EK_2MMC,SYS_USE_NANDFLASH"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9260EK=y
diff --git a/configs/at91sam9g20ek_dataflash_cs0_defconfig b/configs/at91sam9g20ek_dataflash_cs0_defconfig
new file mode 100644
index 0000000..cf35782
--- /dev/null
+++ b/configs/at91sam9g20ek_dataflash_cs0_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20,SYS_USE_DATAFLASH_CS0"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9260EK=y
diff --git a/configs/at91sam9g20ek_dataflash_cs1_defconfig b/configs/at91sam9g20ek_dataflash_cs1_defconfig
new file mode 100644
index 0000000..1377ad9
--- /dev/null
+++ b/configs/at91sam9g20ek_dataflash_cs1_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20,SYS_USE_DATAFLASH_CS1"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9260EK=y
diff --git a/configs/at91sam9g20ek_mmc_defconfig b/configs/at91sam9g20ek_mmc_defconfig
new file mode 100644
index 0000000..8cca2e5
--- /dev/null
+++ b/configs/at91sam9g20ek_mmc_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20,SYS_USE_MMC"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9260EK=y
diff --git a/configs/at91sam9g20ek_nandflash_defconfig b/configs/at91sam9g20ek_nandflash_defconfig
new file mode 100644
index 0000000..cfe9127
--- /dev/null
+++ b/configs/at91sam9g20ek_nandflash_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20,SYS_USE_NANDFLASH"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9260EK=y
diff --git a/configs/at91sam9m10g45ek_mmc_defconfig b/configs/at91sam9m10g45ek_mmc_defconfig
new file mode 100644
index 0000000..1681bc8
--- /dev/null
+++ b/configs/at91sam9m10g45ek_mmc_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9M10G45,SYS_USE_MMC"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9M10G45EK=y
diff --git a/configs/at91sam9m10g45ek_nandflash_defconfig b/configs/at91sam9m10g45ek_nandflash_defconfig
new file mode 100644
index 0000000..61ae56e
--- /dev/null
+++ b/configs/at91sam9m10g45ek_nandflash_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9M10G45,SYS_USE_NANDFLASH"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9M10G45EK=y
diff --git a/configs/at91sam9n12ek_mmc_defconfig b/configs/at91sam9n12ek_mmc_defconfig
new file mode 100644
index 0000000..71d1658
--- /dev/null
+++ b/configs/at91sam9n12ek_mmc_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9N12,SYS_USE_MMC"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9N12EK=y
diff --git a/configs/at91sam9n12ek_nandflash_defconfig b/configs/at91sam9n12ek_nandflash_defconfig
new file mode 100644
index 0000000..6f677b1
--- /dev/null
+++ b/configs/at91sam9n12ek_nandflash_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9N12,SYS_USE_NANDFLASH"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9N12EK=y
diff --git a/configs/at91sam9n12ek_spiflash_defconfig b/configs/at91sam9n12ek_spiflash_defconfig
new file mode 100644
index 0000000..7e898f0
--- /dev/null
+++ b/configs/at91sam9n12ek_spiflash_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9N12,SYS_USE_SPIFLASH"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9N12EK=y
diff --git a/configs/at91sam9rlek_dataflash_defconfig b/configs/at91sam9rlek_dataflash_defconfig
new file mode 100644
index 0000000..90516e0
--- /dev/null
+++ b/configs/at91sam9rlek_dataflash_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9RL,SYS_USE_DATAFLASH"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9RLEK=y
diff --git a/configs/at91sam9rlek_nandflash_defconfig b/configs/at91sam9rlek_nandflash_defconfig
new file mode 100644
index 0000000..0e2edfd
--- /dev/null
+++ b/configs/at91sam9rlek_nandflash_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9RL,SYS_USE_NANDFLASH"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9RLEK=y
diff --git a/configs/at91sam9x5ek_dataflash_defconfig b/configs/at91sam9x5ek_dataflash_defconfig
new file mode 100644
index 0000000..d00eed5
--- /dev/null
+++ b/configs/at91sam9x5ek_dataflash_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9X5,SYS_USE_DATAFLASH"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9X5EK=y
diff --git a/configs/at91sam9x5ek_mmc_defconfig b/configs/at91sam9x5ek_mmc_defconfig
new file mode 100644
index 0000000..64f7af9
--- /dev/null
+++ b/configs/at91sam9x5ek_mmc_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9X5,SYS_USE_MMC"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9X5EK=y
diff --git a/configs/at91sam9x5ek_nandflash_defconfig b/configs/at91sam9x5ek_nandflash_defconfig
new file mode 100644
index 0000000..47cd1e0
--- /dev/null
+++ b/configs/at91sam9x5ek_nandflash_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9X5,SYS_USE_NANDFLASH"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9X5EK=y
diff --git a/configs/at91sam9x5ek_spiflash_defconfig b/configs/at91sam9x5ek_spiflash_defconfig
new file mode 100644
index 0000000..1b7391e
--- /dev/null
+++ b/configs/at91sam9x5ek_spiflash_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9X5,SYS_USE_SPIFLASH"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9X5EK=y
diff --git a/configs/at91sam9xeek_dataflash_cs0_defconfig b/configs/at91sam9xeek_dataflash_cs0_defconfig
new file mode 100644
index 0000000..ccbccd4
--- /dev/null
+++ b/configs/at91sam9xeek_dataflash_cs0_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9XE,SYS_USE_DATAFLASH_CS0"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9260EK=y
diff --git a/configs/at91sam9xeek_dataflash_cs1_defconfig b/configs/at91sam9xeek_dataflash_cs1_defconfig
new file mode 100644
index 0000000..e8f4cc3
--- /dev/null
+++ b/configs/at91sam9xeek_dataflash_cs1_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9XE,SYS_USE_DATAFLASH_CS1"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9260EK=y
diff --git a/configs/at91sam9xeek_nandflash_defconfig b/configs/at91sam9xeek_nandflash_defconfig
new file mode 100644
index 0000000..49c5d78
--- /dev/null
+++ b/configs/at91sam9xeek_nandflash_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9XE,SYS_USE_NANDFLASH"
+CONFIG_ARM=y
+CONFIG_TARGET_AT91SAM9260EK=y
diff --git a/configs/atc_defconfig b/configs/atc_defconfig
new file mode 100644
index 0000000..967be47
--- /dev/null
+++ b/configs/atc_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_ATC=y
diff --git a/configs/atngw100_defconfig b/configs/atngw100_defconfig
new file mode 100644
index 0000000..cd79990
--- /dev/null
+++ b/configs/atngw100_defconfig
@@ -0,0 +1,2 @@
+CONFIG_AVR32=y
+CONFIG_TARGET_ATNGW100=y
diff --git a/configs/atngw100mkii_defconfig b/configs/atngw100mkii_defconfig
new file mode 100644
index 0000000..88b1de2
--- /dev/null
+++ b/configs/atngw100mkii_defconfig
@@ -0,0 +1,2 @@
+CONFIG_AVR32=y
+CONFIG_TARGET_ATNGW100MKII=y
diff --git a/configs/atstk1002_defconfig b/configs/atstk1002_defconfig
new file mode 100644
index 0000000..d6e9a77
--- /dev/null
+++ b/configs/atstk1002_defconfig
@@ -0,0 +1,2 @@
+CONFIG_AVR32=y
+CONFIG_TARGET_ATSTK1002=y
diff --git a/configs/atstk1003_defconfig b/configs/atstk1003_defconfig
new file mode 100644
index 0000000..b704532
--- /dev/null
+++ b/configs/atstk1003_defconfig
@@ -0,0 +1,2 @@
+CONFIG_AVR32=y
+CONFIG_TARGET_ATSTK1003=y
diff --git a/configs/atstk1004_defconfig b/configs/atstk1004_defconfig
new file mode 100644
index 0000000..7650254
--- /dev/null
+++ b/configs/atstk1004_defconfig
@@ -0,0 +1,2 @@
+CONFIG_AVR32=y
+CONFIG_TARGET_ATSTK1004=y
diff --git a/configs/atstk1006_defconfig b/configs/atstk1006_defconfig
new file mode 100644
index 0000000..54beb0b
--- /dev/null
+++ b/configs/atstk1006_defconfig
@@ -0,0 +1,2 @@
+CONFIG_AVR32=y
+CONFIG_TARGET_ATSTK1006=y
diff --git a/configs/axm_defconfig b/configs/axm_defconfig
new file mode 100644
index 0000000..c0e8da2
--- /dev/null
+++ b/configs/axm_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20,MACH_TYPE=2068,BOARD_AXM"
+CONFIG_ARM=y
+CONFIG_TARGET_TAURUS=y
diff --git a/configs/axs101_defconfig b/configs/axs101_defconfig
new file mode 100644
index 0000000..bfa314e
--- /dev/null
+++ b/configs/axs101_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARC=y
+CONFIG_TARGET_AXS101=y
diff --git a/configs/balloon3_defconfig b/configs/balloon3_defconfig
new file mode 100644
index 0000000..a1f4adb
--- /dev/null
+++ b/configs/balloon3_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_BALLOON3=y
diff --git a/configs/bamboo_defconfig b/configs/bamboo_defconfig
new file mode 100644
index 0000000..1d66807
--- /dev/null
+++ b/configs/bamboo_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_BAMBOO=y
diff --git a/configs/bcm28155_ap_defconfig b/configs/bcm28155_ap_defconfig
new file mode 100644
index 0000000..0a1c592
--- /dev/null
+++ b/configs/bcm28155_ap_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_BCM28155_AP=y
diff --git a/configs/bct-brettl2_defconfig b/configs/bct-brettl2_defconfig
new file mode 100644
index 0000000..3676306
--- /dev/null
+++ b/configs/bct-brettl2_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_BCT_BRETTL2=y
diff --git a/configs/beaver_defconfig b/configs/beaver_defconfig
new file mode 100644
index 0000000..0e70f25
--- /dev/null
+++ b/configs/beaver_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_BEAVER=y
diff --git a/configs/bf506f-ezkit_defconfig b/configs/bf506f-ezkit_defconfig
new file mode 100644
index 0000000..f81f412
--- /dev/null
+++ b/configs/bf506f-ezkit_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_BF506F_EZKIT=y
diff --git a/configs/bf518f-ezbrd_defconfig b/configs/bf518f-ezbrd_defconfig
new file mode 100644
index 0000000..a93eed0
--- /dev/null
+++ b/configs/bf518f-ezbrd_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_BF518F_EZBRD=y
diff --git a/configs/bf525-ucr2_defconfig b/configs/bf525-ucr2_defconfig
new file mode 100644
index 0000000..692e006
--- /dev/null
+++ b/configs/bf525-ucr2_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_BF525_UCR2=y
diff --git a/configs/bf526-ezbrd_defconfig b/configs/bf526-ezbrd_defconfig
new file mode 100644
index 0000000..4a45223
--- /dev/null
+++ b/configs/bf526-ezbrd_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_BF526_EZBRD=y
diff --git a/configs/bf527-ad7160-eval_defconfig b/configs/bf527-ad7160-eval_defconfig
new file mode 100644
index 0000000..d9db715
--- /dev/null
+++ b/configs/bf527-ad7160-eval_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_BF527_AD7160_EVAL=y
diff --git a/configs/bf527-ezkit-v2_defconfig b/configs/bf527-ezkit-v2_defconfig
new file mode 100644
index 0000000..aedbb96
--- /dev/null
+++ b/configs/bf527-ezkit-v2_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="BF527_EZKIT_REV_2_1"
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_BF527_EZKIT=y
diff --git a/configs/bf527-ezkit_defconfig b/configs/bf527-ezkit_defconfig
new file mode 100644
index 0000000..3ed77a6
--- /dev/null
+++ b/configs/bf527-ezkit_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_BF527_EZKIT=y
diff --git a/configs/bf527-sdp_defconfig b/configs/bf527-sdp_defconfig
new file mode 100644
index 0000000..0f8c28c
--- /dev/null
+++ b/configs/bf527-sdp_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_BF527_SDP=y
diff --git a/configs/bf533-ezkit_defconfig b/configs/bf533-ezkit_defconfig
new file mode 100644
index 0000000..217d4c3
--- /dev/null
+++ b/configs/bf533-ezkit_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_BF533_EZKIT=y
diff --git a/configs/bf533-stamp_defconfig b/configs/bf533-stamp_defconfig
new file mode 100644
index 0000000..a99b3c7
--- /dev/null
+++ b/configs/bf533-stamp_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_BF533_STAMP=y
diff --git a/configs/bf537-minotaur_defconfig b/configs/bf537-minotaur_defconfig
new file mode 100644
index 0000000..e76118f
--- /dev/null
+++ b/configs/bf537-minotaur_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_BF537_MINOTAUR=y
diff --git a/configs/bf537-pnav_defconfig b/configs/bf537-pnav_defconfig
new file mode 100644
index 0000000..ba5eaaa
--- /dev/null
+++ b/configs/bf537-pnav_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_BF537_PNAV=y
diff --git a/configs/bf537-srv1_defconfig b/configs/bf537-srv1_defconfig
new file mode 100644
index 0000000..61ac0e7
--- /dev/null
+++ b/configs/bf537-srv1_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_BF537_SRV1=y
diff --git a/configs/bf537-stamp_defconfig b/configs/bf537-stamp_defconfig
new file mode 100644
index 0000000..d9daf7e
--- /dev/null
+++ b/configs/bf537-stamp_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_BF537_STAMP=y
diff --git a/configs/bf538f-ezkit_defconfig b/configs/bf538f-ezkit_defconfig
new file mode 100644
index 0000000..0507cb2
--- /dev/null
+++ b/configs/bf538f-ezkit_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_BF538F_EZKIT=y
diff --git a/configs/bf548-ezkit_defconfig b/configs/bf548-ezkit_defconfig
new file mode 100644
index 0000000..7bb4064
--- /dev/null
+++ b/configs/bf548-ezkit_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_BF548_EZKIT=y
diff --git a/configs/bf561-acvilon_defconfig b/configs/bf561-acvilon_defconfig
new file mode 100644
index 0000000..ba8a418
--- /dev/null
+++ b/configs/bf561-acvilon_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_BF561_ACVILON=y
diff --git a/configs/bf561-ezkit_defconfig b/configs/bf561-ezkit_defconfig
new file mode 100644
index 0000000..7ceb1d9
--- /dev/null
+++ b/configs/bf561-ezkit_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_BF561_EZKIT=y
diff --git a/configs/bf609-ezkit_defconfig b/configs/bf609-ezkit_defconfig
new file mode 100644
index 0000000..2bfb6a5
--- /dev/null
+++ b/configs/bf609-ezkit_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_BF609_EZKIT=y
diff --git a/configs/bg0900_defconfig b/configs/bg0900_defconfig
new file mode 100644
index 0000000..b8c8352
--- /dev/null
+++ b/configs/bg0900_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_BG0900=y
diff --git a/configs/blackstamp_defconfig b/configs/blackstamp_defconfig
new file mode 100644
index 0000000..d531ffc
--- /dev/null
+++ b/configs/blackstamp_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_BLACKSTAMP=y
diff --git a/configs/blackvme_defconfig b/configs/blackvme_defconfig
new file mode 100644
index 0000000..1ec2fa9
--- /dev/null
+++ b/configs/blackvme_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_BLACKVME=y
diff --git a/configs/bluestone_defconfig b/configs/bluestone_defconfig
new file mode 100644
index 0000000..8f83a43
--- /dev/null
+++ b/configs/bluestone_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_BLUESTONE=y
diff --git a/configs/br4_defconfig b/configs/br4_defconfig
new file mode 100644
index 0000000..9d91933
--- /dev/null
+++ b/configs/br4_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_BR4=y
diff --git a/configs/bubinga_defconfig b/configs/bubinga_defconfig
new file mode 100644
index 0000000..65ea4d1
--- /dev/null
+++ b/configs/bubinga_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_BUBINGA=y
diff --git a/configs/caddy2_defconfig b/configs/caddy2_defconfig
new file mode 100644
index 0000000..6e4a389
--- /dev/null
+++ b/configs/caddy2_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="CADDY2"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_VME8349=y
diff --git a/configs/calimain_defconfig b/configs/calimain_defconfig
new file mode 100644
index 0000000..a808ddf
--- /dev/null
+++ b/configs/calimain_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_CALIMAIN=y
diff --git a/configs/cam5200_defconfig b/configs/cam5200_defconfig
new file mode 100644
index 0000000..d3de17b
--- /dev/null
+++ b/configs/cam5200_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="CAM5200,TQM5200S,TQM5200_B"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_TQM5200=y
diff --git a/configs/cam5200_niosflash_defconfig b/configs/cam5200_niosflash_defconfig
new file mode 100644
index 0000000..a375e13
--- /dev/null
+++ b/configs/cam5200_niosflash_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="CAM5200,TQM5200S,TQM5200_B,CAM5200_NIOSFLASH"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_TQM5200=y
diff --git a/configs/cam_enc_4xx_defconfig b/configs/cam_enc_4xx_defconfig
new file mode 100644
index 0000000..1417d83
--- /dev/null
+++ b/configs/cam_enc_4xx_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_CAM_ENC_4XX=y
diff --git a/configs/canmb_defconfig b/configs/canmb_defconfig
new file mode 100644
index 0000000..86ffbd2
--- /dev/null
+++ b/configs/canmb_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_CANMB=y
diff --git a/configs/canyonlands_defconfig b/configs/canyonlands_defconfig
new file mode 100644
index 0000000..09b9ab9
--- /dev/null
+++ b/configs/canyonlands_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="CANYONLANDS"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_CANYONLANDS=y
diff --git a/configs/cardhu_defconfig b/configs/cardhu_defconfig
new file mode 100644
index 0000000..564ad5a
--- /dev/null
+++ b/configs/cardhu_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_CARDHU=y
diff --git a/configs/cgtqmx6qeval_defconfig b/configs/cgtqmx6qeval_defconfig
new file mode 100644
index 0000000..6699381
--- /dev/null
+++ b/configs/cgtqmx6qeval_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/imx/ddr/mx6q_4x_mt41j128.cfg,MX6Q"
+CONFIG_ARM=y
+CONFIG_TARGET_CGTQMX6EVAL=y
diff --git a/configs/charon_defconfig b/configs/charon_defconfig
new file mode 100644
index 0000000..1dd3f5d
--- /dev/null
+++ b/configs/charon_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_CHARON=y
diff --git a/configs/cm-bf527_defconfig b/configs/cm-bf527_defconfig
new file mode 100644
index 0000000..cb5110c
--- /dev/null
+++ b/configs/cm-bf527_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_CM_BF527=y
diff --git a/configs/cm-bf533_defconfig b/configs/cm-bf533_defconfig
new file mode 100644
index 0000000..aa38d0e
--- /dev/null
+++ b/configs/cm-bf533_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_CM_BF533=y
diff --git a/configs/cm-bf537e_defconfig b/configs/cm-bf537e_defconfig
new file mode 100644
index 0000000..b9deaae
--- /dev/null
+++ b/configs/cm-bf537e_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_CM_BF537E=y
diff --git a/configs/cm-bf537u_defconfig b/configs/cm-bf537u_defconfig
new file mode 100644
index 0000000..16f7ae1
--- /dev/null
+++ b/configs/cm-bf537u_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_CM_BF537U=y
diff --git a/configs/cm-bf548_defconfig b/configs/cm-bf548_defconfig
new file mode 100644
index 0000000..e60306a
--- /dev/null
+++ b/configs/cm-bf548_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_CM_BF548=y
diff --git a/configs/cm-bf561_defconfig b/configs/cm-bf561_defconfig
new file mode 100644
index 0000000..1b9301c
--- /dev/null
+++ b/configs/cm-bf561_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_CM_BF561=y
diff --git a/configs/cm4008_defconfig b/configs/cm4008_defconfig
new file mode 100644
index 0000000..487589d
--- /dev/null
+++ b/configs/cm4008_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_CM4008=y
diff --git a/configs/cm41xx_defconfig b/configs/cm41xx_defconfig
new file mode 100644
index 0000000..15e9362
--- /dev/null
+++ b/configs/cm41xx_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_CM41XX=y
diff --git a/configs/cm5200_defconfig b/configs/cm5200_defconfig
new file mode 100644
index 0000000..8f5dd3c
--- /dev/null
+++ b/configs/cm5200_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_CM5200=y
diff --git a/configs/cm_t335_defconfig b/configs/cm_t335_defconfig
new file mode 100644
index 0000000..5ff4f9c
--- /dev/null
+++ b/configs/cm_t335_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_CM_T335=y
diff --git a/configs/cm_t35_defconfig b/configs/cm_t35_defconfig
new file mode 100644
index 0000000..00b0590
--- /dev/null
+++ b/configs/cm_t35_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_CM_T35=y
diff --git a/configs/cm_t54_defconfig b/configs/cm_t54_defconfig
new file mode 100644
index 0000000..b48a171
--- /dev/null
+++ b/configs/cm_t54_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_CM_T54=y
diff --git a/configs/cmi_mpc5xx_defconfig b/configs/cmi_mpc5xx_defconfig
new file mode 100644
index 0000000..5c855b1
--- /dev/null
+++ b/configs/cmi_mpc5xx_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_5xx=y
+CONFIG_TARGET_CMI_MPC5XX=y
diff --git a/configs/cobra5272_defconfig b/configs/cobra5272_defconfig
new file mode 100644
index 0000000..dc1552d
--- /dev/null
+++ b/configs/cobra5272_defconfig
@@ -0,0 +1,2 @@
+CONFIG_M68K=y
+CONFIG_TARGET_COBRA5272=y
diff --git a/configs/cogent_mpc8260_defconfig b/configs/cogent_mpc8260_defconfig
new file mode 100644
index 0000000..dc297f1
--- /dev/null
+++ b/configs/cogent_mpc8260_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_COGENT_MPC8260=y
diff --git a/configs/cogent_mpc8xx_defconfig b/configs/cogent_mpc8xx_defconfig
new file mode 100644
index 0000000..2fe7a5a
--- /dev/null
+++ b/configs/cogent_mpc8xx_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_COGENT_MPC8XX=y
diff --git a/configs/colibri_pxa270_defconfig b/configs/colibri_pxa270_defconfig
new file mode 100644
index 0000000..c8faf0b
--- /dev/null
+++ b/configs/colibri_pxa270_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_COLIBRI_PXA270=y
diff --git a/configs/colibri_t20_iris_defconfig b/configs/colibri_t20_iris_defconfig
new file mode 100644
index 0000000..8ff2464
--- /dev/null
+++ b/configs/colibri_t20_iris_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_COLIBRI_T20_IRIS=y
diff --git a/configs/controlcenterd_36BIT_SDCARD_DEVELOP_defconfig b/configs/controlcenterd_36BIT_SDCARD_DEVELOP_defconfig
new file mode 100644
index 0000000..661e85c
--- /dev/null
+++ b/configs/controlcenterd_36BIT_SDCARD_DEVELOP_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="36BIT,SDCARD,DEVELOP"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_CONTROLCENTERD=y
diff --git a/configs/controlcenterd_36BIT_SDCARD_defconfig b/configs/controlcenterd_36BIT_SDCARD_defconfig
new file mode 100644
index 0000000..76ab9d3
--- /dev/null
+++ b/configs/controlcenterd_36BIT_SDCARD_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="36BIT,SDCARD"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_CONTROLCENTERD=y
diff --git a/configs/controlcenterd_TRAILBLAZER_DEVELOP_defconfig b/configs/controlcenterd_TRAILBLAZER_DEVELOP_defconfig
new file mode 100644
index 0000000..be1a371
--- /dev/null
+++ b/configs/controlcenterd_TRAILBLAZER_DEVELOP_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="TRAILBLAZER,SPIFLASH,DEVELOP"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_CONTROLCENTERD=y
diff --git a/configs/controlcenterd_TRAILBLAZER_defconfig b/configs/controlcenterd_TRAILBLAZER_defconfig
new file mode 100644
index 0000000..ab548a6
--- /dev/null
+++ b/configs/controlcenterd_TRAILBLAZER_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="TRAILBLAZER,SPIFLASH"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_CONTROLCENTERD=y
diff --git a/configs/coreboot-x86_defconfig b/configs/coreboot-x86_defconfig
new file mode 100644
index 0000000..a06c527
--- /dev/null
+++ b/configs/coreboot-x86_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0x01110000"
+CONFIG_X86=y
+CONFIG_TARGET_COREBOOT=y
diff --git a/configs/corvus_defconfig b/configs/corvus_defconfig
new file mode 100644
index 0000000..3fc8edb
--- /dev/null
+++ b/configs/corvus_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9M10G45,SYS_USE_NANDFLASH"
+CONFIG_ARM=y
+CONFIG_TARGET_CORVUS=y
diff --git a/configs/cpci5200_defconfig b/configs/cpci5200_defconfig
new file mode 100644
index 0000000..bdbf4fc
--- /dev/null
+++ b/configs/cpci5200_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_CPCI5200=y
diff --git a/configs/cpu9260_128M_defconfig b/configs/cpu9260_128M_defconfig
new file mode 100644
index 0000000..86fc6bd
--- /dev/null
+++ b/configs/cpu9260_128M_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="CPU9260,CPU9260_128M"
+CONFIG_ARM=y
+CONFIG_TARGET_CPU9260=y
diff --git a/configs/cpu9260_defconfig b/configs/cpu9260_defconfig
new file mode 100644
index 0000000..10299e3
--- /dev/null
+++ b/configs/cpu9260_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="CPU9260"
+CONFIG_ARM=y
+CONFIG_TARGET_CPU9260=y
diff --git a/configs/cpu9260_nand_128M_defconfig b/configs/cpu9260_nand_128M_defconfig
new file mode 100644
index 0000000..e582a15
--- /dev/null
+++ b/configs/cpu9260_nand_128M_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="CPU9260,CPU9260_128M,NANDBOOT"
+CONFIG_ARM=y
+CONFIG_TARGET_CPU9260=y
diff --git a/configs/cpu9260_nand_defconfig b/configs/cpu9260_nand_defconfig
new file mode 100644
index 0000000..40988cd
--- /dev/null
+++ b/configs/cpu9260_nand_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="CPU9260,NANDBOOT"
+CONFIG_ARM=y
+CONFIG_TARGET_CPU9260=y
diff --git a/configs/cpu9G20_128M_defconfig b/configs/cpu9G20_128M_defconfig
new file mode 100644
index 0000000..4c28d25
--- /dev/null
+++ b/configs/cpu9G20_128M_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="CPU9G20,CPU9G20_128M"
+CONFIG_ARM=y
+CONFIG_TARGET_CPU9260=y
diff --git a/configs/cpu9G20_defconfig b/configs/cpu9G20_defconfig
new file mode 100644
index 0000000..468b2c8
--- /dev/null
+++ b/configs/cpu9G20_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="CPU9G20"
+CONFIG_ARM=y
+CONFIG_TARGET_CPU9260=y
diff --git a/configs/cpu9G20_nand_128M_defconfig b/configs/cpu9G20_nand_128M_defconfig
new file mode 100644
index 0000000..a74df9d
--- /dev/null
+++ b/configs/cpu9G20_nand_128M_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="CPU9G20,CPU9G20_128M,NANDBOOT"
+CONFIG_ARM=y
+CONFIG_TARGET_CPU9260=y
diff --git a/configs/cpu9G20_nand_defconfig b/configs/cpu9G20_nand_defconfig
new file mode 100644
index 0000000..11cc276
--- /dev/null
+++ b/configs/cpu9G20_nand_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="CPU9G20,NANDBOOT"
+CONFIG_ARM=y
+CONFIG_TARGET_CPU9260=y
diff --git a/configs/cpuat91_defconfig b/configs/cpuat91_defconfig
new file mode 100644
index 0000000..d25bd3a
--- /dev/null
+++ b/configs/cpuat91_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_CPUAT91=y
diff --git a/configs/cpuat91_ram_defconfig b/configs/cpuat91_ram_defconfig
new file mode 100644
index 0000000..f5b722d
--- /dev/null
+++ b/configs/cpuat91_ram_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT"
+CONFIG_ARM=y
+CONFIG_TARGET_CPUAT91=y
diff --git a/configs/csb272_defconfig b/configs/csb272_defconfig
new file mode 100644
index 0000000..8ccd645
--- /dev/null
+++ b/configs/csb272_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_CSB272=y
diff --git a/configs/csb472_defconfig b/configs/csb472_defconfig
new file mode 100644
index 0000000..81a0cf1
--- /dev/null
+++ b/configs/csb472_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_CSB472=y
diff --git a/configs/d2net_v2_defconfig b/configs/d2net_v2_defconfig
new file mode 100644
index 0000000..e53aed7
--- /dev/null
+++ b/configs/d2net_v2_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="D2NET_V2"
+CONFIG_ARM=y
+CONFIG_TARGET_NET2BIG_V2=y
diff --git a/configs/da830evm_defconfig b/configs/da830evm_defconfig
new file mode 100644
index 0000000..49e74c3
--- /dev/null
+++ b/configs/da830evm_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_DA830EVM=y
diff --git a/configs/da850_am18xxevm_defconfig b/configs/da850_am18xxevm_defconfig
new file mode 100644
index 0000000..af419ce
--- /dev/null
+++ b/configs/da850_am18xxevm_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="DA850_AM18X_EVM,MAC_ADDR_IN_EEPROM,SYS_I2C_EEPROM_ADDR_LEN=2,SYS_I2C_EEPROM_ADDR=0x50"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_DA850EVM=y
diff --git a/configs/da850evm_defconfig b/configs/da850evm_defconfig
new file mode 100644
index 0000000..7517e92
--- /dev/null
+++ b/configs/da850evm_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="MAC_ADDR_IN_SPIFLASH"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_DA850EVM=y
diff --git a/configs/da850evm_direct_nor_defconfig b/configs/da850evm_direct_nor_defconfig
new file mode 100644
index 0000000..edc604a
--- /dev/null
+++ b/configs/da850evm_direct_nor_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="MAC_ADDR_IN_SPIFLASH,USE_NOR,DIRECT_NOR_BOOT"
+CONFIG_ARM=y
+CONFIG_TARGET_DA850EVM=y
diff --git a/configs/dalmore_defconfig b/configs/dalmore_defconfig
new file mode 100644
index 0000000..288b238
--- /dev/null
+++ b/configs/dalmore_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_DALMORE=y
diff --git a/configs/davinci_dm355evm_defconfig b/configs/davinci_dm355evm_defconfig
new file mode 100644
index 0000000..ef0b854
--- /dev/null
+++ b/configs/davinci_dm355evm_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_DAVINCI_DM355EVM=y
diff --git a/configs/davinci_dm355leopard_defconfig b/configs/davinci_dm355leopard_defconfig
new file mode 100644
index 0000000..22da9f3
--- /dev/null
+++ b/configs/davinci_dm355leopard_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_DAVINCI_DM355LEOPARD=y
diff --git a/configs/davinci_dm365evm_defconfig b/configs/davinci_dm365evm_defconfig
new file mode 100644
index 0000000..dfae0b2
--- /dev/null
+++ b/configs/davinci_dm365evm_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_DAVINCI_DM365EVM=y
diff --git a/configs/davinci_dm6467Tevm_defconfig b/configs/davinci_dm6467Tevm_defconfig
new file mode 100644
index 0000000..e2c2de4
--- /dev/null
+++ b/configs/davinci_dm6467Tevm_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="DAVINCI_DM6467TEVM,REFCLK_FREQ=33000000"
+CONFIG_ARM=y
+CONFIG_TARGET_DAVINCI_DM6467EVM=y
diff --git a/configs/davinci_dm6467evm_defconfig b/configs/davinci_dm6467evm_defconfig
new file mode 100644
index 0000000..abd3491
--- /dev/null
+++ b/configs/davinci_dm6467evm_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="REFCLK_FREQ=27000000"
+CONFIG_ARM=y
+CONFIG_TARGET_DAVINCI_DM6467EVM=y
diff --git a/configs/davinci_dvevm_defconfig b/configs/davinci_dvevm_defconfig
new file mode 100644
index 0000000..eb53692
--- /dev/null
+++ b/configs/davinci_dvevm_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_DAVINCI_DVEVM=y
diff --git a/configs/davinci_schmoogie_defconfig b/configs/davinci_schmoogie_defconfig
new file mode 100644
index 0000000..bc166ab
--- /dev/null
+++ b/configs/davinci_schmoogie_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_DAVINCI_SCHMOOGIE=y
diff --git a/configs/davinci_sffsdr_defconfig b/configs/davinci_sffsdr_defconfig
new file mode 100644
index 0000000..ea9cf88
--- /dev/null
+++ b/configs/davinci_sffsdr_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_DAVINCI_SFFSDR=y
diff --git a/configs/davinci_sonata_defconfig b/configs/davinci_sonata_defconfig
new file mode 100644
index 0000000..2c9cd4f
--- /dev/null
+++ b/configs/davinci_sonata_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_DAVINCI_SONATA=y
diff --git a/configs/dbau1000_defconfig b/configs/dbau1000_defconfig
new file mode 100644
index 0000000..7c95629
--- /dev/null
+++ b/configs/dbau1000_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="DBAU1000"
+CONFIG_MIPS=y
+CONFIG_TARGET_DBAU1X00=y
diff --git a/configs/dbau1100_defconfig b/configs/dbau1100_defconfig
new file mode 100644
index 0000000..506f5da
--- /dev/null
+++ b/configs/dbau1100_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="DBAU1100"
+CONFIG_MIPS=y
+CONFIG_TARGET_DBAU1X00=y
diff --git a/configs/dbau1500_defconfig b/configs/dbau1500_defconfig
new file mode 100644
index 0000000..5a02a78
--- /dev/null
+++ b/configs/dbau1500_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="DBAU1500"
+CONFIG_MIPS=y
+CONFIG_TARGET_DBAU1X00=y
diff --git a/configs/dbau1550_defconfig b/configs/dbau1550_defconfig
new file mode 100644
index 0000000..9015023
--- /dev/null
+++ b/configs/dbau1550_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="DBAU1550"
+CONFIG_MIPS=y
+CONFIG_TARGET_DBAU1X00=y
diff --git a/configs/dbau1550_el_defconfig b/configs/dbau1550_el_defconfig
new file mode 100644
index 0000000..53b35ce
--- /dev/null
+++ b/configs/dbau1550_el_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="DBAU1550,SYS_LITTLE_ENDIAN"
+CONFIG_MIPS=y
+CONFIG_TARGET_DBAU1X00=y
diff --git a/configs/devconcenter_defconfig b/configs/devconcenter_defconfig
new file mode 100644
index 0000000..7f82d7d
--- /dev/null
+++ b/configs/devconcenter_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="DEVCONCENTER"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_INTIP=y
diff --git a/configs/devkit3250_defconfig b/configs/devkit3250_defconfig
new file mode 100644
index 0000000..ba990bc
--- /dev/null
+++ b/configs/devkit3250_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_DEVKIT3250=y
diff --git a/configs/devkit8000_defconfig b/configs/devkit8000_defconfig
new file mode 100644
index 0000000..7c5d222
--- /dev/null
+++ b/configs/devkit8000_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_DEVKIT8000=y
diff --git a/configs/dig297_defconfig b/configs/dig297_defconfig
new file mode 100644
index 0000000..9309ac2
--- /dev/null
+++ b/configs/dig297_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_DIG297=y
diff --git a/configs/digsy_mtc_RAMBOOT_defconfig b/configs/digsy_mtc_RAMBOOT_defconfig
new file mode 100644
index 0000000..a1e765b
--- /dev/null
+++ b/configs/digsy_mtc_RAMBOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0x00100000"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_DIGSY_MTC=y
diff --git a/configs/digsy_mtc_defconfig b/configs/digsy_mtc_defconfig
new file mode 100644
index 0000000..666c5c8
--- /dev/null
+++ b/configs/digsy_mtc_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_DIGSY_MTC=y
diff --git a/configs/digsy_mtc_rev5_RAMBOOT_defconfig b/configs/digsy_mtc_rev5_RAMBOOT_defconfig
new file mode 100644
index 0000000..d356174
--- /dev/null
+++ b/configs/digsy_mtc_rev5_RAMBOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0x00100000,DIGSY_REV5"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_DIGSY_MTC=y
diff --git a/configs/digsy_mtc_rev5_defconfig b/configs/digsy_mtc_rev5_defconfig
new file mode 100644
index 0000000..f66f86f
--- /dev/null
+++ b/configs/digsy_mtc_rev5_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="DIGSY_REV5"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_DIGSY_MTC=y
diff --git a/configs/dkb_defconfig b/configs/dkb_defconfig
new file mode 100644
index 0000000..0be9578
--- /dev/null
+++ b/configs/dkb_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_DKB=y
diff --git a/configs/dlvision-10g_defconfig b/configs/dlvision-10g_defconfig
new file mode 100644
index 0000000..1d2a571
--- /dev/null
+++ b/configs/dlvision-10g_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_DLVISION_10G=y
diff --git a/configs/dlvision_defconfig b/configs/dlvision_defconfig
new file mode 100644
index 0000000..c0317dc
--- /dev/null
+++ b/configs/dlvision_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_DLVISION=y
diff --git a/configs/dnp5370_defconfig b/configs/dnp5370_defconfig
new file mode 100644
index 0000000..0c00087
--- /dev/null
+++ b/configs/dnp5370_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_DNP5370=y
diff --git a/configs/dns325_defconfig b/configs/dns325_defconfig
new file mode 100644
index 0000000..6a18d2a
--- /dev/null
+++ b/configs/dns325_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_DNS325=y
diff --git a/configs/dockstar_defconfig b/configs/dockstar_defconfig
new file mode 100644
index 0000000..528669e
--- /dev/null
+++ b/configs/dockstar_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_DOCKSTAR=y
diff --git a/configs/dra7xx_evm_defconfig b/configs/dra7xx_evm_defconfig
new file mode 100644
index 0000000..82cffd7
--- /dev/null
+++ b/configs/dra7xx_evm_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=1"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_DRA7XX_EVM=y
diff --git a/configs/dra7xx_evm_qspiboot_defconfig b/configs/dra7xx_evm_qspiboot_defconfig
new file mode 100644
index 0000000..be09f40
--- /dev/null
+++ b/configs/dra7xx_evm_qspiboot_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=1,QSPI_BOOT"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_DRA7XX_EVM=y
diff --git a/configs/dra7xx_evm_uart3_defconfig b/configs/dra7xx_evm_uart3_defconfig
new file mode 100644
index 0000000..e0d1e45
--- /dev/null
+++ b/configs/dra7xx_evm_uart3_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=3,SPL_YMODEM_SUPPORT"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_DRA7XX_EVM=y
diff --git a/configs/draco_defconfig b/configs/draco_defconfig
new file mode 100644
index 0000000..18def0b
--- /dev/null
+++ b/configs/draco_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_DRACO=y
diff --git a/configs/dreamplug_defconfig b/configs/dreamplug_defconfig
new file mode 100644
index 0000000..49de210
--- /dev/null
+++ b/configs/dreamplug_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_DREAMPLUG=y
diff --git a/configs/duovero_defconfig b/configs/duovero_defconfig
new file mode 100644
index 0000000..b56092a
--- /dev/null
+++ b/configs/duovero_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_DUOVERO=y
diff --git a/configs/dxr2_defconfig b/configs/dxr2_defconfig
new file mode 100644
index 0000000..15f1181
--- /dev/null
+++ b/configs/dxr2_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_DXR2=y
diff --git a/configs/eXalion_defconfig b/configs/eXalion_defconfig
new file mode 100644
index 0000000..9d7e090
--- /dev/null
+++ b/configs/eXalion_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC824X=y
+CONFIG_TARGET_EXALION=y
diff --git a/configs/ea20_defconfig b/configs/ea20_defconfig
new file mode 100644
index 0000000..562849d
--- /dev/null
+++ b/configs/ea20_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_EA20=y
diff --git a/configs/eb_cpu5282_defconfig b/configs/eb_cpu5282_defconfig
new file mode 100644
index 0000000..f69aa53
--- /dev/null
+++ b/configs/eb_cpu5282_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0xFF000000,SYS_MONITOR_BASE=0xFF000400"
+CONFIG_M68K=y
+CONFIG_TARGET_EB_CPU5282=y
diff --git a/configs/eb_cpu5282_internal_defconfig b/configs/eb_cpu5282_internal_defconfig
new file mode 100644
index 0000000..b590f25
--- /dev/null
+++ b/configs/eb_cpu5282_internal_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0xF0000000,SYS_MONITOR_BASE=0xF0000418"
+CONFIG_M68K=y
+CONFIG_TARGET_EB_CPU5282=y
diff --git a/configs/eb_cpux9k2_defconfig b/configs/eb_cpux9k2_defconfig
new file mode 100644
index 0000000..5f0ab44
--- /dev/null
+++ b/configs/eb_cpux9k2_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_EB_CPUX9K2=y
diff --git a/configs/eb_cpux9k2_ram_defconfig b/configs/eb_cpux9k2_ram_defconfig
new file mode 100644
index 0000000..c6e8b71
--- /dev/null
+++ b/configs/eb_cpux9k2_ram_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT"
+CONFIG_ARM=y
+CONFIG_TARGET_EB_CPUX9K2=y
diff --git a/configs/ebony_defconfig b/configs/ebony_defconfig
new file mode 100644
index 0000000..db93555
--- /dev/null
+++ b/configs/ebony_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_EBONY=y
diff --git a/configs/eco5pk_defconfig b/configs/eco5pk_defconfig
new file mode 100644
index 0000000..79f3d5a
--- /dev/null
+++ b/configs/eco5pk_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_ECO5PK=y
diff --git a/configs/ecovec_defconfig b/configs/ecovec_defconfig
new file mode 100644
index 0000000..57771e4
--- /dev/null
+++ b/configs/ecovec_defconfig
@@ -0,0 +1,2 @@
+CONFIG_SH=y
+CONFIG_TARGET_ECOVEC=y
diff --git a/configs/edb9315a_defconfig b/configs/edb9315a_defconfig
new file mode 100644
index 0000000..e92daf6
--- /dev/null
+++ b/configs/edb9315a_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="MK_edb9315a"
+CONFIG_ARM=y
+CONFIG_TARGET_EDB93XX=y
diff --git a/configs/edminiv2_defconfig b/configs/edminiv2_defconfig
new file mode 100644
index 0000000..82aa684
--- /dev/null
+++ b/configs/edminiv2_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_EDMINIV2=y
diff --git a/configs/enbw_cmc_defconfig b/configs/enbw_cmc_defconfig
new file mode 100644
index 0000000..7fe405a
--- /dev/null
+++ b/configs/enbw_cmc_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_ENBW_CMC=y
diff --git a/configs/ep8260_defconfig b/configs/ep8260_defconfig
new file mode 100644
index 0000000..1cce900
--- /dev/null
+++ b/configs/ep8260_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_EP8260=y
diff --git a/configs/ep82xxm_defconfig b/configs/ep82xxm_defconfig
new file mode 100644
index 0000000..0842d2d
--- /dev/null
+++ b/configs/ep82xxm_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_EP82XXM=y
diff --git a/configs/espt_defconfig b/configs/espt_defconfig
new file mode 100644
index 0000000..a50781d
--- /dev/null
+++ b/configs/espt_defconfig
@@ -0,0 +1,2 @@
+CONFIG_SH=y
+CONFIG_TARGET_ESPT=y
diff --git a/configs/ethernut5_defconfig b/configs/ethernut5_defconfig
new file mode 100644
index 0000000..5be495c
--- /dev/null
+++ b/configs/ethernut5_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9XE"
+CONFIG_ARM=y
+CONFIG_TARGET_ETHERNUT5=y
diff --git a/configs/favr-32-ezkit_defconfig b/configs/favr-32-ezkit_defconfig
new file mode 100644
index 0000000..941e028
--- /dev/null
+++ b/configs/favr-32-ezkit_defconfig
@@ -0,0 +1,2 @@
+CONFIG_AVR32=y
+CONFIG_TARGET_FAVR_32_EZKIT=y
diff --git a/configs/flea3_defconfig b/configs/flea3_defconfig
new file mode 100644
index 0000000..ac112cd
--- /dev/null
+++ b/configs/flea3_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_FLEA3=y
diff --git a/configs/fo300_defconfig b/configs/fo300_defconfig
new file mode 100644
index 0000000..6492b4b
--- /dev/null
+++ b/configs/fo300_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="FO300"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_TQM5200=y
diff --git a/configs/fx12mm_defconfig b/configs/fx12mm_defconfig
new file mode 100644
index 0000000..9900a54
--- /dev/null
+++ b/configs/fx12mm_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0x04000000,RESET_VECTOR_ADDRESS=0x04100000,INIT_TLB=board/xilinx/ppc405-generic/init.o"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_FX12MM=y
diff --git a/configs/fx12mm_flash_defconfig b/configs/fx12mm_flash_defconfig
new file mode 100644
index 0000000..5a0587f
--- /dev/null
+++ b/configs/fx12mm_flash_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0xF7F60000,RESET_VECTOR_ADDRESS=0xF7FFFFFC,INIT_TLB=board/xilinx/ppc405-generic/init.o"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_FX12MM=y
diff --git a/configs/galaxy5200_LOWBOOT_defconfig b/configs/galaxy5200_LOWBOOT_defconfig
new file mode 100644
index 0000000..4f193f5
--- /dev/null
+++ b/configs/galaxy5200_LOWBOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="galaxy5200_LOWBOOT"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_GALAXY5200=y
diff --git a/configs/galaxy5200_defconfig b/configs/galaxy5200_defconfig
new file mode 100644
index 0000000..0fdf643
--- /dev/null
+++ b/configs/galaxy5200_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="galaxy5200"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_GALAXY5200=y
diff --git a/configs/gdppc440etx_defconfig b/configs/gdppc440etx_defconfig
new file mode 100644
index 0000000..1097b9c
--- /dev/null
+++ b/configs/gdppc440etx_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_GDPPC440ETX=y
diff --git a/configs/glacier_defconfig b/configs/glacier_defconfig
new file mode 100644
index 0000000..2a66bfb
--- /dev/null
+++ b/configs/glacier_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="GLACIER"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_CANYONLANDS=y
diff --git a/configs/goflexhome_defconfig b/configs/goflexhome_defconfig
new file mode 100644
index 0000000..10fde53
--- /dev/null
+++ b/configs/goflexhome_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_GOFLEXHOME=y
diff --git a/configs/gplugd_defconfig b/configs/gplugd_defconfig
new file mode 100644
index 0000000..ec8f45c
--- /dev/null
+++ b/configs/gplugd_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_GPLUGD=y
diff --git a/configs/gr_cpci_ax2000_defconfig b/configs/gr_cpci_ax2000_defconfig
new file mode 100644
index 0000000..6eb02ad
--- /dev/null
+++ b/configs/gr_cpci_ax2000_defconfig
@@ -0,0 +1,2 @@
+CONFIG_SPARC=y
+CONFIG_TARGET_GR_CPCI_AX2000=y
diff --git a/configs/gr_ep2s60_defconfig b/configs/gr_ep2s60_defconfig
new file mode 100644
index 0000000..6e1eb83
--- /dev/null
+++ b/configs/gr_ep2s60_defconfig
@@ -0,0 +1,2 @@
+CONFIG_SPARC=y
+CONFIG_TARGET_GR_EP2S60=y
diff --git a/configs/gr_xc3s_1500_defconfig b/configs/gr_xc3s_1500_defconfig
new file mode 100644
index 0000000..da846db
--- /dev/null
+++ b/configs/gr_xc3s_1500_defconfig
@@ -0,0 +1,2 @@
+CONFIG_SPARC=y
+CONFIG_TARGET_GR_XC3S_1500=y
diff --git a/configs/grasshopper_defconfig b/configs/grasshopper_defconfig
new file mode 100644
index 0000000..72013e7
--- /dev/null
+++ b/configs/grasshopper_defconfig
@@ -0,0 +1,2 @@
+CONFIG_AVR32=y
+CONFIG_TARGET_GRASSHOPPER=y
diff --git a/configs/grsim_defconfig b/configs/grsim_defconfig
new file mode 100644
index 0000000..2a7e8e7
--- /dev/null
+++ b/configs/grsim_defconfig
@@ -0,0 +1,2 @@
+CONFIG_SPARC=y
+CONFIG_TARGET_GRSIM=y
diff --git a/configs/grsim_leon2_defconfig b/configs/grsim_leon2_defconfig
new file mode 100644
index 0000000..e91eb96
--- /dev/null
+++ b/configs/grsim_leon2_defconfig
@@ -0,0 +1,2 @@
+CONFIG_SPARC=y
+CONFIG_TARGET_GRSIM_LEON2=y
diff --git a/configs/guruplug_defconfig b/configs/guruplug_defconfig
new file mode 100644
index 0000000..f5be577
--- /dev/null
+++ b/configs/guruplug_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_GURUPLUG=y
diff --git a/configs/gw8260_defconfig b/configs/gw8260_defconfig
new file mode 100644
index 0000000..a59ec3a
--- /dev/null
+++ b/configs/gw8260_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_GW8260=y
diff --git a/configs/gwventana_defconfig b/configs/gwventana_defconfig
new file mode 100644
index 0000000..11aaab5
--- /dev/null
+++ b/configs/gwventana_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/gateworks/gw_ventana/gw_ventana.cfg,MX6QDL,SPL"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_GW_VENTANA=y
diff --git a/configs/h2200_defconfig b/configs/h2200_defconfig
new file mode 100644
index 0000000..7040c09
--- /dev/null
+++ b/configs/h2200_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_H2200=y
diff --git a/configs/haleakala_defconfig b/configs/haleakala_defconfig
new file mode 100644
index 0000000..7e63116
--- /dev/null
+++ b/configs/haleakala_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="HALEAKALA"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_KILAUEA=y
diff --git a/configs/hammerhead_defconfig b/configs/hammerhead_defconfig
new file mode 100644
index 0000000..0d69cc6
--- /dev/null
+++ b/configs/hammerhead_defconfig
@@ -0,0 +1,2 @@
+CONFIG_AVR32=y
+CONFIG_TARGET_HAMMERHEAD=y
diff --git a/configs/harmony_defconfig b/configs/harmony_defconfig
new file mode 100644
index 0000000..d25ea5c
--- /dev/null
+++ b/configs/harmony_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_HARMONY=y
diff --git a/configs/hawkboard_defconfig b/configs/hawkboard_defconfig
new file mode 100644
index 0000000..9945fe5
--- /dev/null
+++ b/configs/hawkboard_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_HAWKBOARD=y
diff --git a/configs/hawkboard_uart_defconfig b/configs/hawkboard_uart_defconfig
new file mode 100644
index 0000000..b4db291
--- /dev/null
+++ b/configs/hawkboard_uart_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="UART_U_BOOT"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_HAWKBOARD=y
diff --git a/configs/hermes_defconfig b/configs/hermes_defconfig
new file mode 100644
index 0000000..a923a61
--- /dev/null
+++ b/configs/hermes_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_HERMES=y
diff --git a/configs/highbank_defconfig b/configs/highbank_defconfig
new file mode 100644
index 0000000..23fd52d
--- /dev/null
+++ b/configs/highbank_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_HIGHBANK=y
diff --git a/configs/hmi1001_defconfig b/configs/hmi1001_defconfig
new file mode 100644
index 0000000..a351dbe
--- /dev/null
+++ b/configs/hmi1001_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_HMI1001=y
diff --git a/configs/hummingboard_solo_defconfig b/configs/hummingboard_solo_defconfig
new file mode 100644
index 0000000..600fa00
--- /dev/null
+++ b/configs/hummingboard_solo_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/solidrun/hummingboard/solo.cfg,MX6S,DDR_MB=512"
+CONFIG_ARM=y
+CONFIG_TARGET_HUMMINGBOARD=y
diff --git a/configs/hymod_defconfig b/configs/hymod_defconfig
new file mode 100644
index 0000000..a6dc1d8
--- /dev/null
+++ b/configs/hymod_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_HYMOD=y
diff --git a/configs/ib62x0_defconfig b/configs/ib62x0_defconfig
new file mode 100644
index 0000000..d92217e
--- /dev/null
+++ b/configs/ib62x0_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_IB62X0=y
diff --git a/configs/ibf-dsp561_defconfig b/configs/ibf-dsp561_defconfig
new file mode 100644
index 0000000..41a5c65
--- /dev/null
+++ b/configs/ibf-dsp561_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_IBF_DSP561=y
diff --git a/configs/icecube_5200_DDR_LOWBOOT08_defconfig b/configs/icecube_5200_DDR_LOWBOOT08_defconfig
new file mode 100644
index 0000000..79f8598
--- /dev/null
+++ b/configs/icecube_5200_DDR_LOWBOOT08_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0xFF800000,MPC5200_DDR"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_ICECUBE=y
diff --git a/configs/icecube_5200_DDR_LOWBOOT_defconfig b/configs/icecube_5200_DDR_LOWBOOT_defconfig
new file mode 100644
index 0000000..79f8598
--- /dev/null
+++ b/configs/icecube_5200_DDR_LOWBOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0xFF800000,MPC5200_DDR"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_ICECUBE=y
diff --git a/configs/icecube_5200_DDR_defconfig b/configs/icecube_5200_DDR_defconfig
new file mode 100644
index 0000000..19d9637
--- /dev/null
+++ b/configs/icecube_5200_DDR_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="MPC5200_DDR"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_ICECUBE=y
diff --git a/configs/icecube_5200_LOWBOOT08_defconfig b/configs/icecube_5200_LOWBOOT08_defconfig
new file mode 100644
index 0000000..9f0cbd8
--- /dev/null
+++ b/configs/icecube_5200_LOWBOOT08_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0xFF800000"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_ICECUBE=y
diff --git a/configs/icecube_5200_LOWBOOT_defconfig b/configs/icecube_5200_LOWBOOT_defconfig
new file mode 100644
index 0000000..ff1552f
--- /dev/null
+++ b/configs/icecube_5200_LOWBOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0xFF000000"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_ICECUBE=y
diff --git a/configs/icecube_5200_defconfig b/configs/icecube_5200_defconfig
new file mode 100644
index 0000000..49fdb3b
--- /dev/null
+++ b/configs/icecube_5200_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_ICECUBE=y
diff --git a/configs/icon_defconfig b/configs/icon_defconfig
new file mode 100644
index 0000000..771a093
--- /dev/null
+++ b/configs/icon_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_ICON=y
diff --git a/configs/iconnect_defconfig b/configs/iconnect_defconfig
new file mode 100644
index 0000000..ab83fa6
--- /dev/null
+++ b/configs/iconnect_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_ICONNECT=y
diff --git a/configs/ids8313_defconfig b/configs/ids8313_defconfig
new file mode 100644
index 0000000..1c665aa
--- /dev/null
+++ b/configs/ids8313_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0xFFF00000"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_IDS8313=y
diff --git a/configs/igep0020_defconfig b/configs/igep0020_defconfig
new file mode 100644
index 0000000..e99f773
--- /dev/null
+++ b/configs/igep0020_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0020,BOOT_ONENAND"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_OMAP3_IGEP00X0=y
diff --git a/configs/igep0020_nand_defconfig b/configs/igep0020_nand_defconfig
new file mode 100644
index 0000000..baa4a0a
--- /dev/null
+++ b/configs/igep0020_nand_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0020,BOOT_NAND"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_OMAP3_IGEP00X0=y
diff --git a/configs/igep0030_defconfig b/configs/igep0030_defconfig
new file mode 100644
index 0000000..5f404eb
--- /dev/null
+++ b/configs/igep0030_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0030,BOOT_ONENAND"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_OMAP3_IGEP00X0=y
diff --git a/configs/igep0030_nand_defconfig b/configs/igep0030_nand_defconfig
new file mode 100644
index 0000000..a43dfec
--- /dev/null
+++ b/configs/igep0030_nand_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0030,BOOT_NAND"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_OMAP3_IGEP00X0=y
diff --git a/configs/igep0032_defconfig b/configs/igep0032_defconfig
new file mode 100644
index 0000000..c0d019c
--- /dev/null
+++ b/configs/igep0032_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0032,BOOT_ONENAND"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_OMAP3_IGEP00X0=y
diff --git a/configs/ima3-mx53_defconfig b/configs/ima3-mx53_defconfig
new file mode 100644
index 0000000..c7a9f68
--- /dev/null
+++ b/configs/ima3-mx53_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/esg/ima3-mx53/imximage.cfg"
+CONFIG_ARM=y
+CONFIG_TARGET_IMA3_MX53=y
diff --git a/configs/imx27lite_defconfig b/configs/imx27lite_defconfig
new file mode 100644
index 0000000..03803c6
--- /dev/null
+++ b/configs/imx27lite_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_IMX27LITE=y
diff --git a/configs/imx31_litekit_defconfig b/configs/imx31_litekit_defconfig
new file mode 100644
index 0000000..cd41c0e
--- /dev/null
+++ b/configs/imx31_litekit_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_IMX31_LITEKIT=y
diff --git a/configs/imx31_phycore_defconfig b/configs/imx31_phycore_defconfig
new file mode 100644
index 0000000..563de57
--- /dev/null
+++ b/configs/imx31_phycore_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_IMX31_PHYCORE=y
diff --git a/configs/imx31_phycore_eet_defconfig b/configs/imx31_phycore_eet_defconfig
new file mode 100644
index 0000000..9531952
--- /dev/null
+++ b/configs/imx31_phycore_eet_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX31_PHYCORE_EET"
+CONFIG_ARM=y
+CONFIG_TARGET_IMX31_PHYCORE=y
diff --git a/configs/inetspace_v2_defconfig b/configs/inetspace_v2_defconfig
new file mode 100644
index 0000000..26d9932
--- /dev/null
+++ b/configs/inetspace_v2_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="INETSPACE_V2"
+CONFIG_ARM=y
+CONFIG_TARGET_NETSPACE_V2=y
diff --git a/configs/inka4x0_defconfig b/configs/inka4x0_defconfig
new file mode 100644
index 0000000..6581b0a
--- /dev/null
+++ b/configs/inka4x0_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_INKA4X0=y
diff --git a/configs/integratorap_cm720t_defconfig b/configs/integratorap_cm720t_defconfig
new file mode 100644
index 0000000..0bb7b08
--- /dev/null
+++ b/configs/integratorap_cm720t_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="CM720T"
+CONFIG_ARM=y
+CONFIG_TARGET_INTEGRATORAP_CM720T=y
diff --git a/configs/integratorap_cm920t_defconfig b/configs/integratorap_cm920t_defconfig
new file mode 100644
index 0000000..fb925d5
--- /dev/null
+++ b/configs/integratorap_cm920t_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="CM920T"
+CONFIG_ARM=y
+CONFIG_TARGET_INTEGRATORAP_CM920T=y
diff --git a/configs/integratorap_cm926ejs_defconfig b/configs/integratorap_cm926ejs_defconfig
new file mode 100644
index 0000000..308a1e6
--- /dev/null
+++ b/configs/integratorap_cm926ejs_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="CM926EJ_S"
+CONFIG_ARM=y
+CONFIG_TARGET_INTEGRATORAP_CM926EJS=y
diff --git a/configs/integratorap_cm946es_defconfig b/configs/integratorap_cm946es_defconfig
new file mode 100644
index 0000000..d1b9db5
--- /dev/null
+++ b/configs/integratorap_cm946es_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="CM946ES"
+CONFIG_ARM=y
+CONFIG_TARGET_INTEGRATORAP_CM946ES=y
diff --git a/configs/integratorcp_cm1136_defconfig b/configs/integratorcp_cm1136_defconfig
new file mode 100644
index 0000000..3feb656
--- /dev/null
+++ b/configs/integratorcp_cm1136_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="CM1136"
+CONFIG_ARM=y
+CONFIG_TARGET_INTEGRATORCP_CM1136=y
diff --git a/configs/integratorcp_cm920t_defconfig b/configs/integratorcp_cm920t_defconfig
new file mode 100644
index 0000000..f304bbe
--- /dev/null
+++ b/configs/integratorcp_cm920t_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="CM920T"
+CONFIG_ARM=y
+CONFIG_TARGET_INTEGRATORCP_CM920T=y
diff --git a/configs/integratorcp_cm926ejs_defconfig b/configs/integratorcp_cm926ejs_defconfig
new file mode 100644
index 0000000..a8d762b
--- /dev/null
+++ b/configs/integratorcp_cm926ejs_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="CM924EJ_S"
+CONFIG_ARM=y
+CONFIG_TARGET_INTEGRATORCP_CM926EJS=y
diff --git a/configs/integratorcp_cm946es_defconfig b/configs/integratorcp_cm946es_defconfig
new file mode 100644
index 0000000..2e67dbc
--- /dev/null
+++ b/configs/integratorcp_cm946es_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="CM946ES"
+CONFIG_ARM=y
+CONFIG_TARGET_INTEGRATORCP_CM946ES=y
diff --git a/configs/intip_defconfig b/configs/intip_defconfig
new file mode 100644
index 0000000..d6af774
--- /dev/null
+++ b/configs/intip_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="INTIB"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_INTIP=y
diff --git a/configs/io64_defconfig b/configs/io64_defconfig
new file mode 100644
index 0000000..1111e54
--- /dev/null
+++ b/configs/io64_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_IO64=y
diff --git a/configs/io_defconfig b/configs/io_defconfig
new file mode 100644
index 0000000..959af75
--- /dev/null
+++ b/configs/io_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_IO=y
diff --git a/configs/iocon_defconfig b/configs/iocon_defconfig
new file mode 100644
index 0000000..6dc8887
--- /dev/null
+++ b/configs/iocon_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_IOCON=y
diff --git a/configs/ip04_defconfig b/configs/ip04_defconfig
new file mode 100644
index 0000000..4f9895a
--- /dev/null
+++ b/configs/ip04_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_IP04=y
diff --git a/configs/ipam390_defconfig b/configs/ipam390_defconfig
new file mode 100644
index 0000000..6e95951
--- /dev/null
+++ b/configs/ipam390_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_IPAM390=y
diff --git a/configs/ipek01_defconfig b/configs/ipek01_defconfig
new file mode 100644
index 0000000..83cf557
--- /dev/null
+++ b/configs/ipek01_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_IPEK01=y
diff --git a/configs/jadecpu_defconfig b/configs/jadecpu_defconfig
new file mode 100644
index 0000000..4348e0e
--- /dev/null
+++ b/configs/jadecpu_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_JADECPU=y
diff --git a/configs/jetson-tk1_defconfig b/configs/jetson-tk1_defconfig
new file mode 100644
index 0000000..9ce97c9
--- /dev/null
+++ b/configs/jetson-tk1_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="BOARD_JETSON_TK1="
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_JETSON_TK1=y
diff --git a/configs/jornada_defconfig b/configs/jornada_defconfig
new file mode 100644
index 0000000..ad1c338
--- /dev/null
+++ b/configs/jornada_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_JORNADA=y
diff --git a/configs/jupiter_defconfig b/configs/jupiter_defconfig
new file mode 100644
index 0000000..dac4f1a
--- /dev/null
+++ b/configs/jupiter_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_JUPITER=y
diff --git a/configs/k2e_evm_defconfig b/configs/k2e_evm_defconfig
new file mode 100644
index 0000000..c210ad5
--- /dev/null
+++ b/configs/k2e_evm_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_K2E_EVM=y
diff --git a/configs/k2hk_evm_defconfig b/configs/k2hk_evm_defconfig
new file mode 100644
index 0000000..caa763a
--- /dev/null
+++ b/configs/k2hk_evm_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_K2HK_EVM=y
diff --git a/configs/katmai_defconfig b/configs/katmai_defconfig
new file mode 100644
index 0000000..8492314
--- /dev/null
+++ b/configs/katmai_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_KATMAI=y
diff --git a/configs/kilauea_defconfig b/configs/kilauea_defconfig
new file mode 100644
index 0000000..28021d9
--- /dev/null
+++ b/configs/kilauea_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="KILAUEA"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_KILAUEA=y
diff --git a/configs/km_kirkwood_128m16_defconfig b/configs/km_kirkwood_128m16_defconfig
new file mode 100644
index 0000000..c51fbf3
--- /dev/null
+++ b/configs/km_kirkwood_128m16_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="KM_KIRKWOOD_128M16"
+CONFIG_ARM=y
+CONFIG_TARGET_KM_KIRKWOOD=y
diff --git a/configs/km_kirkwood_defconfig b/configs/km_kirkwood_defconfig
new file mode 100644
index 0000000..4f554f7
--- /dev/null
+++ b/configs/km_kirkwood_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="KM_KIRKWOOD"
+CONFIG_ARM=y
+CONFIG_TARGET_KM_KIRKWOOD=y
diff --git a/configs/km_kirkwood_pci_defconfig b/configs/km_kirkwood_pci_defconfig
new file mode 100644
index 0000000..abb42c9
--- /dev/null
+++ b/configs/km_kirkwood_pci_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="KM_KIRKWOOD_PCI"
+CONFIG_ARM=y
+CONFIG_TARGET_KM_KIRKWOOD=y
diff --git a/configs/kmcoge4_defconfig b/configs/kmcoge4_defconfig
new file mode 100644
index 0000000..22a005c
--- /dev/null
+++ b/configs/kmcoge4_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="KMCOGE4"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_KMP204X=y
diff --git a/configs/kmcoge5ne_defconfig b/configs/kmcoge5ne_defconfig
new file mode 100644
index 0000000..80c1f75
--- /dev/null
+++ b/configs/kmcoge5ne_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="KMCOGE5NE"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_KM8360=y
diff --git a/configs/kmcoge5un_defconfig b/configs/kmcoge5un_defconfig
new file mode 100644
index 0000000..0378277
--- /dev/null
+++ b/configs/kmcoge5un_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="KM_COGE5UN"
+CONFIG_ARM=y
+CONFIG_TARGET_KM_KIRKWOOD=y
diff --git a/configs/kmeter1_defconfig b/configs/kmeter1_defconfig
new file mode 100644
index 0000000..f87e347
--- /dev/null
+++ b/configs/kmeter1_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="KMETER1"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_KM8360=y
diff --git a/configs/kmlion1_defconfig b/configs/kmlion1_defconfig
new file mode 100644
index 0000000..82c1924
--- /dev/null
+++ b/configs/kmlion1_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="KMLION1"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_KMP204X=y
diff --git a/configs/kmnusa_defconfig b/configs/kmnusa_defconfig
new file mode 100644
index 0000000..46ddbcd
--- /dev/null
+++ b/configs/kmnusa_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="KM_NUSA"
+CONFIG_ARM=y
+CONFIG_TARGET_KM_KIRKWOOD=y
diff --git a/configs/kmopti2_defconfig b/configs/kmopti2_defconfig
new file mode 100644
index 0000000..8195184
--- /dev/null
+++ b/configs/kmopti2_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="KMOPTI2"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_TUXX1=y
diff --git a/configs/kmsugp1_defconfig b/configs/kmsugp1_defconfig
new file mode 100644
index 0000000..183b365
--- /dev/null
+++ b/configs/kmsugp1_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="KM_SUGP1"
+CONFIG_ARM=y
+CONFIG_TARGET_KM_KIRKWOOD=y
diff --git a/configs/kmsupx5_defconfig b/configs/kmsupx5_defconfig
new file mode 100644
index 0000000..99a9a9b
--- /dev/null
+++ b/configs/kmsupx5_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="KMSUPX5"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_TUXX1=y
diff --git a/configs/kmsuv31_defconfig b/configs/kmsuv31_defconfig
new file mode 100644
index 0000000..9434ef0
--- /dev/null
+++ b/configs/kmsuv31_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="KM_SUV31"
+CONFIG_ARM=y
+CONFIG_TARGET_KM_KIRKWOOD=y
diff --git a/configs/kmvect1_defconfig b/configs/kmvect1_defconfig
new file mode 100644
index 0000000..dd9c2f2
--- /dev/null
+++ b/configs/kmvect1_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="KMVECT1"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_SUVD3=y
diff --git a/configs/koelsch_defconfig b/configs/koelsch_defconfig
new file mode 100644
index 0000000..d63a286
--- /dev/null
+++ b/configs/koelsch_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_KOELSCH=y
diff --git a/configs/korat_defconfig b/configs/korat_defconfig
new file mode 100644
index 0000000..d363aab
--- /dev/null
+++ b/configs/korat_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_KORAT=y
diff --git a/configs/korat_perm_defconfig b/configs/korat_perm_defconfig
new file mode 100644
index 0000000..8c6b4c4
--- /dev/null
+++ b/configs/korat_perm_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="KORAT_PERMANENT"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_KORAT=y
diff --git a/configs/kwb_defconfig b/configs/kwb_defconfig
new file mode 100644
index 0000000..5082ff7
--- /dev/null
+++ b/configs/kwb_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_KWB=y
diff --git a/configs/kzm9g_defconfig b/configs/kzm9g_defconfig
new file mode 100644
index 0000000..aaddf82
--- /dev/null
+++ b/configs/kzm9g_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_KZM9G=y
diff --git a/configs/lager_defconfig b/configs/lager_defconfig
new file mode 100644
index 0000000..bf1be72
--- /dev/null
+++ b/configs/lager_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_LAGER=y
diff --git a/configs/lcd4_lwmon5_defconfig b/configs/lcd4_lwmon5_defconfig
new file mode 100644
index 0000000..1541733
--- /dev/null
+++ b/configs/lcd4_lwmon5_defconfig
@@ -0,0 +1,5 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="LCD4_LWMON5"
++S:CONFIG_PPC=y
++S:CONFIG_4xx=y
++S:CONFIG_TARGET_LWMON5=y
diff --git a/configs/lite5200b_LOWBOOT_defconfig b/configs/lite5200b_LOWBOOT_defconfig
new file mode 100644
index 0000000..9ceb834
--- /dev/null
+++ b/configs/lite5200b_LOWBOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="MPC5200_DDR,LITE5200B,SYS_TEXT_BASE=0xFF000000"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_ICECUBE=y
diff --git a/configs/lite5200b_PM_defconfig b/configs/lite5200b_PM_defconfig
new file mode 100644
index 0000000..35b2aa3
--- /dev/null
+++ b/configs/lite5200b_PM_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="MPC5200_DDR,LITE5200B,LITE5200B_PM"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_ICECUBE=y
diff --git a/configs/lite5200b_defconfig b/configs/lite5200b_defconfig
new file mode 100644
index 0000000..c7d4030
--- /dev/null
+++ b/configs/lite5200b_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="MPC5200_DDR,LITE5200B"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_ICECUBE=y
diff --git a/configs/lp8x4x_defconfig b/configs/lp8x4x_defconfig
new file mode 100644
index 0000000..2fc2cbc
--- /dev/null
+++ b/configs/lp8x4x_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_LP8X4X=y
diff --git a/configs/ls2085a_emu_D4_defconfig b/configs/ls2085a_emu_D4_defconfig
new file mode 100644
index 0000000..f2f6882
--- /dev/null
+++ b/configs/ls2085a_emu_D4_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="ARM64,EMU,SYS_FSL_DDR4"
+CONFIG_ARM=y
+CONFIG_TARGET_LS2085A_EMU=y
diff --git a/configs/ls2085a_emu_defconfig b/configs/ls2085a_emu_defconfig
new file mode 100644
index 0000000..51ffa56
--- /dev/null
+++ b/configs/ls2085a_emu_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="ARM64,EMU"
+CONFIG_ARM=y
+CONFIG_TARGET_LS2085A_EMU=y
diff --git a/configs/ls2085a_simu_defconfig b/configs/ls2085a_simu_defconfig
new file mode 100644
index 0000000..efa8e74
--- /dev/null
+++ b/configs/ls2085a_simu_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="ARM64,SIMU"
+CONFIG_ARM=y
+CONFIG_TARGET_LS2085A_SIMU=y
diff --git a/configs/lschlv2_defconfig b/configs/lschlv2_defconfig
new file mode 100644
index 0000000..330b4d7
--- /dev/null
+++ b/configs/lschlv2_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="LSCHLV2"
+CONFIG_ARM=y
+CONFIG_TARGET_LSXL=y
diff --git a/configs/lsxhl_defconfig b/configs/lsxhl_defconfig
new file mode 100644
index 0000000..e8cdf8a
--- /dev/null
+++ b/configs/lsxhl_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="LSXHL"
+CONFIG_ARM=y
+CONFIG_TARGET_LSXL=y
diff --git a/configs/luan_defconfig b/configs/luan_defconfig
new file mode 100644
index 0000000..d42b4a9
--- /dev/null
+++ b/configs/luan_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_LUAN=y
diff --git a/configs/lwmon5_defconfig b/configs/lwmon5_defconfig
new file mode 100644
index 0000000..1ae2109
--- /dev/null
+++ b/configs/lwmon5_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_LWMON5=y
diff --git a/configs/lwmon_defconfig b/configs/lwmon_defconfig
new file mode 100644
index 0000000..128ff5f
--- /dev/null
+++ b/configs/lwmon_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_LWMON=y
diff --git a/configs/m28evk_defconfig b/configs/m28evk_defconfig
new file mode 100644
index 0000000..e7af817
--- /dev/null
+++ b/configs/m28evk_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_M28EVK=y
diff --git a/configs/m53evk_defconfig b/configs/m53evk_defconfig
new file mode 100644
index 0000000..65a6470
--- /dev/null
+++ b/configs/m53evk_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/denx/m53evk/imximage.cfg"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_M53EVK=y
diff --git a/configs/magnesium_defconfig b/configs/magnesium_defconfig
new file mode 100644
index 0000000..d45cfd7
--- /dev/null
+++ b/configs/magnesium_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_MAGNESIUM=y
diff --git a/configs/makalu_defconfig b/configs/makalu_defconfig
new file mode 100644
index 0000000..ed9b82d
--- /dev/null
+++ b/configs/makalu_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_MAKALU=y
diff --git a/configs/malta_defconfig b/configs/malta_defconfig
new file mode 100644
index 0000000..f3788b6
--- /dev/null
+++ b/configs/malta_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_BIG_ENDIAN"
+CONFIG_MIPS=y
+CONFIG_TARGET_MALTA=y
diff --git a/configs/maltael_defconfig b/configs/maltael_defconfig
new file mode 100644
index 0000000..97d0e89
--- /dev/null
+++ b/configs/maltael_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_LITTLE_ENDIAN"
+CONFIG_MIPS=y
+CONFIG_TARGET_MALTA=y
diff --git a/configs/marsboard_defconfig b/configs/marsboard_defconfig
new file mode 100644
index 0000000..d5c9f08
--- /dev/null
+++ b/configs/marsboard_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q.cfg,MX6Q,DDR_MB=1024,ENV_IS_IN_SPI_FLASH"
+CONFIG_ARM=y
+CONFIG_TARGET_EMBESTMX6BOARDS=y
diff --git a/configs/mcc200_COM12_SDRAM_defconfig b/configs/mcc200_COM12_SDRAM_defconfig
new file mode 100644
index 0000000..be6dbd7
--- /dev/null
+++ b/configs/mcc200_COM12_SDRAM_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="CONSOLE_COM12,MCC200_SDRAM"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_MCC200=y
diff --git a/configs/mcc200_COM12_defconfig b/configs/mcc200_COM12_defconfig
new file mode 100644
index 0000000..6ed8635
--- /dev/null
+++ b/configs/mcc200_COM12_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="CONSOLE_COM12"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_MCC200=y
diff --git a/configs/mcc200_COM12_highboot_SDRAM_defconfig b/configs/mcc200_COM12_highboot_SDRAM_defconfig
new file mode 100644
index 0000000..5f93702
--- /dev/null
+++ b/configs/mcc200_COM12_highboot_SDRAM_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="CONSOLE_COM12,SYS_TEXT_BASE=0xFFF00000,MCC200_SDRAM"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_MCC200=y
diff --git a/configs/mcc200_COM12_highboot_defconfig b/configs/mcc200_COM12_highboot_defconfig
new file mode 100644
index 0000000..7abb0a4
--- /dev/null
+++ b/configs/mcc200_COM12_highboot_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="CONSOLE_COM12,SYS_TEXT_BASE=0xFFF00000"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_MCC200=y
diff --git a/configs/mcc200_SDRAM_defconfig b/configs/mcc200_SDRAM_defconfig
new file mode 100644
index 0000000..37761b5
--- /dev/null
+++ b/configs/mcc200_SDRAM_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="MCC200_SDRAM"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_MCC200=y
diff --git a/configs/mcc200_defconfig b/configs/mcc200_defconfig
new file mode 100644
index 0000000..b6aafec
--- /dev/null
+++ b/configs/mcc200_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_MCC200=y
diff --git a/configs/mcc200_highboot_SDRAM_defconfig b/configs/mcc200_highboot_SDRAM_defconfig
new file mode 100644
index 0000000..94d33e5
--- /dev/null
+++ b/configs/mcc200_highboot_SDRAM_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0xFFF00000,MCC200_SDRAM"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_MCC200=y
diff --git a/configs/mcc200_highboot_defconfig b/configs/mcc200_highboot_defconfig
new file mode 100644
index 0000000..f863dd9
--- /dev/null
+++ b/configs/mcc200_highboot_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0xFFF00000"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_MCC200=y
diff --git a/configs/mcx_defconfig b/configs/mcx_defconfig
new file mode 100644
index 0000000..a700c88
--- /dev/null
+++ b/configs/mcx_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_MCX=y
diff --git a/configs/mecp5123_defconfig b/configs/mecp5123_defconfig
new file mode 100644
index 0000000..3b0a0a0
--- /dev/null
+++ b/configs/mecp5123_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC512X=y
+CONFIG_TARGET_MECP5123=y
diff --git a/configs/mecp5200_defconfig b/configs/mecp5200_defconfig
new file mode 100644
index 0000000..a30e224
--- /dev/null
+++ b/configs/mecp5200_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_MECP5200=y
diff --git a/configs/medcom-wide_defconfig b/configs/medcom-wide_defconfig
new file mode 100644
index 0000000..ddf3437
--- /dev/null
+++ b/configs/medcom-wide_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_MEDCOM_WIDE=y
diff --git a/configs/meesc_dataflash_defconfig b/configs/meesc_dataflash_defconfig
new file mode 100644
index 0000000..fa737ef
--- /dev/null
+++ b/configs/meesc_dataflash_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9263,SYS_USE_DATAFLASH"
+CONFIG_ARM=y
+CONFIG_TARGET_MEESC=y
diff --git a/configs/meesc_defconfig b/configs/meesc_defconfig
new file mode 100644
index 0000000..f58efbb
--- /dev/null
+++ b/configs/meesc_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9263,SYS_USE_NANDFLASH"
+CONFIG_ARM=y
+CONFIG_TARGET_MEESC=y
diff --git a/configs/mgcoge3ne_defconfig b/configs/mgcoge3ne_defconfig
new file mode 100644
index 0000000..e2eb06f
--- /dev/null
+++ b/configs/mgcoge3ne_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="MGCOGE3NE"
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_KM82XX=y
diff --git a/configs/mgcoge3un_defconfig b/configs/mgcoge3un_defconfig
new file mode 100644
index 0000000..bc1e2ba
--- /dev/null
+++ b/configs/mgcoge3un_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="KM_MGCOGE3UN"
+CONFIG_ARM=y
+CONFIG_TARGET_KM_KIRKWOOD=y
diff --git a/configs/mgcoge_defconfig b/configs/mgcoge_defconfig
new file mode 100644
index 0000000..d2d4673
--- /dev/null
+++ b/configs/mgcoge_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="MGCOGE"
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_KM82XX=y
diff --git a/configs/microblaze-generic_defconfig b/configs/microblaze-generic_defconfig
new file mode 100644
index 0000000..7f23786
--- /dev/null
+++ b/configs/microblaze-generic_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_MICROBLAZE=y
++S:CONFIG_TARGET_MICROBLAZE_GENERIC=y
diff --git a/configs/mimc200_defconfig b/configs/mimc200_defconfig
new file mode 100644
index 0000000..f6edbc7
--- /dev/null
+++ b/configs/mimc200_defconfig
@@ -0,0 +1,2 @@
+CONFIG_AVR32=y
+CONFIG_TARGET_MIMC200=y
diff --git a/configs/ml507_defconfig b/configs/ml507_defconfig
new file mode 100644
index 0000000..009972a
--- /dev/null
+++ b/configs/ml507_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0x04000000,RESET_VECTOR_ADDRESS=0x04100000,BOOT_FROM_XMD=1,INIT_TLB=board/xilinx/ppc440-generic/init.o"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_ML507=y
diff --git a/configs/ml507_flash_defconfig b/configs/ml507_flash_defconfig
new file mode 100644
index 0000000..a9658b6
--- /dev/null
+++ b/configs/ml507_flash_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0xF7F60000,RESET_VECTOR_ADDRESS=0xF7FFFFFC,INIT_TLB=board/xilinx/ppc440-generic/init.o"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_ML507=y
diff --git a/configs/motionpro_defconfig b/configs/motionpro_defconfig
new file mode 100644
index 0000000..535cb84
--- /dev/null
+++ b/configs/motionpro_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_MOTIONPRO=y
diff --git a/configs/mpc5121ads_defconfig b/configs/mpc5121ads_defconfig
new file mode 100644
index 0000000..4d76470
--- /dev/null
+++ b/configs/mpc5121ads_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC512X=y
+CONFIG_TARGET_MPC5121ADS=y
diff --git a/configs/mpc5121ads_rev2_defconfig b/configs/mpc5121ads_rev2_defconfig
new file mode 100644
index 0000000..9a89611
--- /dev/null
+++ b/configs/mpc5121ads_rev2_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="MPC5121ADS_REV2"
+CONFIG_PPC=y
+CONFIG_MPC512X=y
+CONFIG_TARGET_MPC5121ADS=y
diff --git a/configs/mpc7448hpc2_defconfig b/configs/mpc7448hpc2_defconfig
new file mode 100644
index 0000000..f2777dc
--- /dev/null
+++ b/configs/mpc7448hpc2_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_74xx_7xx=y
+CONFIG_TARGET_MPC7448HPC2=y
diff --git a/configs/mpc8308_p1m_defconfig b/configs/mpc8308_p1m_defconfig
new file mode 100644
index 0000000..2b8fc4e
--- /dev/null
+++ b/configs/mpc8308_p1m_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_MPC8308_P1M=y
diff --git a/configs/mpr2_defconfig b/configs/mpr2_defconfig
new file mode 100644
index 0000000..c8be987
--- /dev/null
+++ b/configs/mpr2_defconfig
@@ -0,0 +1,2 @@
+CONFIG_SH=y
+CONFIG_TARGET_MPR2=y
diff --git a/configs/ms7720se_defconfig b/configs/ms7720se_defconfig
new file mode 100644
index 0000000..0e3f834
--- /dev/null
+++ b/configs/ms7720se_defconfig
@@ -0,0 +1,2 @@
+CONFIG_SH=y
+CONFIG_TARGET_MS7720SE=y
diff --git a/configs/ms7722se_defconfig b/configs/ms7722se_defconfig
new file mode 100644
index 0000000..4acb509
--- /dev/null
+++ b/configs/ms7722se_defconfig
@@ -0,0 +1,2 @@
+CONFIG_SH=y
+CONFIG_TARGET_MS7722SE=y
diff --git a/configs/ms7750se_defconfig b/configs/ms7750se_defconfig
new file mode 100644
index 0000000..c23e4c9
--- /dev/null
+++ b/configs/ms7750se_defconfig
@@ -0,0 +1,2 @@
+CONFIG_SH=y
+CONFIG_TARGET_MS7750SE=y
diff --git a/configs/mt_ventoux_defconfig b/configs/mt_ventoux_defconfig
new file mode 100644
index 0000000..0fcad87
--- /dev/null
+++ b/configs/mt_ventoux_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_MT_VENTOUX=y
diff --git a/configs/muas3001_defconfig b/configs/muas3001_defconfig
new file mode 100644
index 0000000..e1056bd
--- /dev/null
+++ b/configs/muas3001_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_MUAS3001=y
diff --git a/configs/muas3001_dev_defconfig b/configs/muas3001_dev_defconfig
new file mode 100644
index 0000000..a62019c
--- /dev/null
+++ b/configs/muas3001_dev_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="MUAS_DEV_BOARD"
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_MUAS3001=y
diff --git a/configs/mucmc52_defconfig b/configs/mucmc52_defconfig
new file mode 100644
index 0000000..1e49695
--- /dev/null
+++ b/configs/mucmc52_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_MUCMC52=y
diff --git a/configs/munices_defconfig b/configs/munices_defconfig
new file mode 100644
index 0000000..cc9f75e
--- /dev/null
+++ b/configs/munices_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_MUNICES=y
diff --git a/configs/mv88f6281gtw_ge_defconfig b/configs/mv88f6281gtw_ge_defconfig
new file mode 100644
index 0000000..4e26879
--- /dev/null
+++ b/configs/mv88f6281gtw_ge_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_MV88F6281GTW_GE=y
diff --git a/configs/mx23_olinuxino_defconfig b/configs/mx23_olinuxino_defconfig
new file mode 100644
index 0000000..03d5066
--- /dev/null
+++ b/configs/mx23_olinuxino_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_MX23_OLINUXINO=y
diff --git a/configs/mx23evk_defconfig b/configs/mx23evk_defconfig
new file mode 100644
index 0000000..963cec3
--- /dev/null
+++ b/configs/mx23evk_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_MX23EVK=y
diff --git a/configs/mx25pdk_defconfig b/configs/mx25pdk_defconfig
new file mode 100644
index 0000000..f676da6
--- /dev/null
+++ b/configs/mx25pdk_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx25pdk/imximage.cfg"
+CONFIG_ARM=y
+CONFIG_TARGET_MX25PDK=y
diff --git a/configs/mx28evk_auart_console_defconfig b/configs/mx28evk_auart_console_defconfig
new file mode 100644
index 0000000..7986880
--- /dev/null
+++ b/configs/mx28evk_auart_console_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="MXS_AUART,MXS_AUART_BASE=MXS_UARTAPP3_BASE,ENV_IS_IN_MMC"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_MX28EVK=y
diff --git a/configs/mx28evk_defconfig b/configs/mx28evk_defconfig
new file mode 100644
index 0000000..e006209
--- /dev/null
+++ b/configs/mx28evk_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="ENV_IS_IN_MMC"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_MX28EVK=y
diff --git a/configs/mx28evk_nand_defconfig b/configs/mx28evk_nand_defconfig
new file mode 100644
index 0000000..ab42316
--- /dev/null
+++ b/configs/mx28evk_nand_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="ENV_IS_IN_NAND"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_MX28EVK=y
diff --git a/configs/mx28evk_spi_defconfig b/configs/mx28evk_spi_defconfig
new file mode 100644
index 0000000..df992fa
--- /dev/null
+++ b/configs/mx28evk_spi_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="ENV_IS_IN_SPI_FLASH"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_MX28EVK=y
diff --git a/configs/mx31ads_defconfig b/configs/mx31ads_defconfig
new file mode 100644
index 0000000..5105a9a
--- /dev/null
+++ b/configs/mx31ads_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_MX31ADS=y
diff --git a/configs/mx31pdk_defconfig b/configs/mx31pdk_defconfig
new file mode 100644
index 0000000..26cd87e
--- /dev/null
+++ b/configs/mx31pdk_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_MX31PDK=y
diff --git a/configs/mx35pdk_defconfig b/configs/mx35pdk_defconfig
new file mode 100644
index 0000000..3d79fe1
--- /dev/null
+++ b/configs/mx35pdk_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_MX35PDK=y
diff --git a/configs/mx51_efikamx_defconfig b/configs/mx51_efikamx_defconfig
new file mode 100644
index 0000000..a804b5a
--- /dev/null
+++ b/configs/mx51_efikamx_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_MX51_EFIKAMX,IMX_CONFIG=board/genesi/mx51_efikamx/imximage_mx.cfg"
+CONFIG_ARM=y
+CONFIG_TARGET_MX51_EFIKAMX=y
diff --git a/configs/mx51_efikasb_defconfig b/configs/mx51_efikasb_defconfig
new file mode 100644
index 0000000..b07762f
--- /dev/null
+++ b/configs/mx51_efikasb_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_MX51_EFIKASB,IMX_CONFIG=board/genesi/mx51_efikamx/imximage_sb.cfg"
+CONFIG_ARM=y
+CONFIG_TARGET_MX51_EFIKAMX=y
diff --git a/configs/mx51evk_defconfig b/configs/mx51evk_defconfig
new file mode 100644
index 0000000..890aa76
--- /dev/null
+++ b/configs/mx51evk_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx51evk/imximage.cfg"
+CONFIG_ARM=y
+CONFIG_TARGET_MX51EVK=y
diff --git a/configs/mx53ard_defconfig b/configs/mx53ard_defconfig
new file mode 100644
index 0000000..e5cb895
--- /dev/null
+++ b/configs/mx53ard_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx53ard/imximage_dd3.cfg"
+CONFIG_ARM=y
+CONFIG_TARGET_MX53ARD=y
diff --git a/configs/mx53evk_defconfig b/configs/mx53evk_defconfig
new file mode 100644
index 0000000..570241f
--- /dev/null
+++ b/configs/mx53evk_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx53evk/imximage.cfg"
+CONFIG_ARM=y
+CONFIG_TARGET_MX53EVK=y
diff --git a/configs/mx53loco_defconfig b/configs/mx53loco_defconfig
new file mode 100644
index 0000000..92a67fb
--- /dev/null
+++ b/configs/mx53loco_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx53loco/imximage.cfg"
+CONFIG_ARM=y
+CONFIG_TARGET_MX53LOCO=y
diff --git a/configs/mx53smd_defconfig b/configs/mx53smd_defconfig
new file mode 100644
index 0000000..97cb931
--- /dev/null
+++ b/configs/mx53smd_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx53smd/imximage.cfg"
+CONFIG_ARM=y
+CONFIG_TARGET_MX53SMD=y
diff --git a/configs/mx6dlsabreauto_defconfig b/configs/mx6dlsabreauto_defconfig
new file mode 100644
index 0000000..b649935
--- /dev/null
+++ b/configs/mx6dlsabreauto_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6qsabreauto/mx6dl.cfg,MX6DL"
+CONFIG_ARM=y
+CONFIG_TARGET_MX6QSABREAUTO=y
diff --git a/configs/mx6dlsabresd_defconfig b/configs/mx6dlsabresd_defconfig
new file mode 100644
index 0000000..9ce960e
--- /dev/null
+++ b/configs/mx6dlsabresd_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6dl.cfg,MX6DL"
+CONFIG_ARM=y
+CONFIG_TARGET_MX6SABRESD=y
diff --git a/configs/mx6qarm2_defconfig b/configs/mx6qarm2_defconfig
new file mode 100644
index 0000000..bdcc672
--- /dev/null
+++ b/configs/mx6qarm2_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6qarm2/imximage.cfg"
+CONFIG_ARM=y
+CONFIG_TARGET_MX6QARM2=y
diff --git a/configs/mx6qsabreauto_defconfig b/configs/mx6qsabreauto_defconfig
new file mode 100644
index 0000000..7d86700
--- /dev/null
+++ b/configs/mx6qsabreauto_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6qsabreauto/imximage.cfg,MX6Q"
+CONFIG_ARM=y
+CONFIG_TARGET_MX6QSABREAUTO=y
diff --git a/configs/mx6qsabrelite_defconfig b/configs/mx6qsabrelite_defconfig
new file mode 100644
index 0000000..dfa9c2e
--- /dev/null
+++ b/configs/mx6qsabrelite_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q.cfg,MX6Q,DDR_MB=1024,SABRELITE"
+CONFIG_ARM=y
+CONFIG_TARGET_NITROGEN6X=y
diff --git a/configs/mx6qsabresd_defconfig b/configs/mx6qsabresd_defconfig
new file mode 100644
index 0000000..dc8e254
--- /dev/null
+++ b/configs/mx6qsabresd_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/imx/ddr/mx6q_4x_mt41j128.cfg,MX6Q"
+CONFIG_ARM=y
+CONFIG_TARGET_MX6SABRESD=y
diff --git a/configs/mx6slevk_defconfig b/configs/mx6slevk_defconfig
new file mode 100644
index 0000000..fb8c4de
--- /dev/null
+++ b/configs/mx6slevk_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6slevk/imximage.cfg,MX6SL"
+CONFIG_ARM=y
+CONFIG_TARGET_MX6SLEVK=y
diff --git a/configs/neo_defconfig b/configs/neo_defconfig
new file mode 100644
index 0000000..2a19247
--- /dev/null
+++ b/configs/neo_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_NEO=y
diff --git a/configs/net2big_v2_defconfig b/configs/net2big_v2_defconfig
new file mode 100644
index 0000000..bffea60
--- /dev/null
+++ b/configs/net2big_v2_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="NET2BIG_V2"
+CONFIG_ARM=y
+CONFIG_TARGET_NET2BIG_V2=y
diff --git a/configs/netspace_lite_v2_defconfig b/configs/netspace_lite_v2_defconfig
new file mode 100644
index 0000000..b262152
--- /dev/null
+++ b/configs/netspace_lite_v2_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="NETSPACE_LITE_V2"
+CONFIG_ARM=y
+CONFIG_TARGET_NETSPACE_V2=y
diff --git a/configs/netspace_max_v2_defconfig b/configs/netspace_max_v2_defconfig
new file mode 100644
index 0000000..4fc84fc
--- /dev/null
+++ b/configs/netspace_max_v2_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="NETSPACE_MAX_V2"
+CONFIG_ARM=y
+CONFIG_TARGET_NETSPACE_V2=y
diff --git a/configs/netspace_mini_v2_defconfig b/configs/netspace_mini_v2_defconfig
new file mode 100644
index 0000000..631a31b
--- /dev/null
+++ b/configs/netspace_mini_v2_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="NETSPACE_MINI_V2"
+CONFIG_ARM=y
+CONFIG_TARGET_NETSPACE_V2=y
diff --git a/configs/netspace_v2_defconfig b/configs/netspace_v2_defconfig
new file mode 100644
index 0000000..dd77bfe
--- /dev/null
+++ b/configs/netspace_v2_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="NETSPACE_V2"
+CONFIG_ARM=y
+CONFIG_TARGET_NETSPACE_V2=y
diff --git a/configs/nhk8815_defconfig b/configs/nhk8815_defconfig
new file mode 100644
index 0000000..3d20199
--- /dev/null
+++ b/configs/nhk8815_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_NHK8815=y
diff --git a/configs/nhk8815_onenand_defconfig b/configs/nhk8815_onenand_defconfig
new file mode 100644
index 0000000..860ae92
--- /dev/null
+++ b/configs/nhk8815_onenand_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="BOOT_ONENAND"
+CONFIG_ARM=y
+CONFIG_TARGET_NHK8815=y
diff --git a/configs/nios2-generic_defconfig b/configs/nios2-generic_defconfig
new file mode 100644
index 0000000..f6da884
--- /dev/null
+++ b/configs/nios2-generic_defconfig
@@ -0,0 +1,2 @@
+CONFIG_NIOS2=y
+CONFIG_TARGET_NIOS2_GENERIC=y
diff --git a/configs/nitrogen6dl2g_defconfig b/configs/nitrogen6dl2g_defconfig
new file mode 100644
index 0000000..ce9343a
--- /dev/null
+++ b/configs/nitrogen6dl2g_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6dl2g.cfg,MX6DL,DDR_MB=2048"
+CONFIG_ARM=y
+CONFIG_TARGET_NITROGEN6X=y
diff --git a/configs/nitrogen6dl_defconfig b/configs/nitrogen6dl_defconfig
new file mode 100644
index 0000000..15dd549
--- /dev/null
+++ b/configs/nitrogen6dl_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6dl.cfg,MX6DL,DDR_MB=1024"
+CONFIG_ARM=y
+CONFIG_TARGET_NITROGEN6X=y
diff --git a/configs/nitrogen6q2g_defconfig b/configs/nitrogen6q2g_defconfig
new file mode 100644
index 0000000..12d9516
--- /dev/null
+++ b/configs/nitrogen6q2g_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q2g.cfg,MX6Q,DDR_MB=2048"
+CONFIG_ARM=y
+CONFIG_TARGET_NITROGEN6X=y
diff --git a/configs/nitrogen6q_defconfig b/configs/nitrogen6q_defconfig
new file mode 100644
index 0000000..b282dc3
--- /dev/null
+++ b/configs/nitrogen6q_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q.cfg,MX6Q,DDR_MB=1024"
+CONFIG_ARM=y
+CONFIG_TARGET_NITROGEN6X=y
diff --git a/configs/nitrogen6s1g_defconfig b/configs/nitrogen6s1g_defconfig
new file mode 100644
index 0000000..d1a4f15
--- /dev/null
+++ b/configs/nitrogen6s1g_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6s1g.cfg,MX6S,DDR_MB=1024"
+CONFIG_ARM=y
+CONFIG_TARGET_NITROGEN6X=y
diff --git a/configs/nitrogen6s_defconfig b/configs/nitrogen6s_defconfig
new file mode 100644
index 0000000..73a206f
--- /dev/null
+++ b/configs/nitrogen6s_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6s.cfg,MX6S,DDR_MB=512"
+CONFIG_ARM=y
+CONFIG_TARGET_NITROGEN6X=y
diff --git a/configs/nokia_rx51_defconfig b/configs/nokia_rx51_defconfig
new file mode 100644
index 0000000..055a602
--- /dev/null
+++ b/configs/nokia_rx51_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_NOKIA_RX51=y
diff --git a/configs/ocotea_defconfig b/configs/ocotea_defconfig
new file mode 100644
index 0000000..34518cd
--- /dev/null
+++ b/configs/ocotea_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_OCOTEA=y
diff --git a/configs/omap3_beagle_defconfig b/configs/omap3_beagle_defconfig
new file mode 100644
index 0000000..a37ca60
--- /dev/null
+++ b/configs/omap3_beagle_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="NAND"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_OMAP3_BEAGLE=y
diff --git a/configs/omap3_evm_defconfig b/configs/omap3_evm_defconfig
new file mode 100644
index 0000000..284abe1
--- /dev/null
+++ b/configs/omap3_evm_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_OMAP3_EVM=y
diff --git a/configs/omap3_evm_quick_mmc_defconfig b/configs/omap3_evm_quick_mmc_defconfig
new file mode 100644
index 0000000..5bafeac
--- /dev/null
+++ b/configs/omap3_evm_quick_mmc_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_OMAP3_EVM_QUICK_MMC=y
diff --git a/configs/omap3_evm_quick_nand_defconfig b/configs/omap3_evm_quick_nand_defconfig
new file mode 100644
index 0000000..501e46f
--- /dev/null
+++ b/configs/omap3_evm_quick_nand_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_OMAP3_EVM_QUICK_NAND=y
diff --git a/configs/omap3_ha_defconfig b/configs/omap3_ha_defconfig
new file mode 100644
index 0000000..a183fe7
--- /dev/null
+++ b/configs/omap3_ha_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="SYS_BOARD_OMAP3_HA"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_TAO3530=y
diff --git a/configs/omap3_logic_defconfig b/configs/omap3_logic_defconfig
new file mode 100644
index 0000000..6278554
--- /dev/null
+++ b/configs/omap3_logic_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_OMAP3_LOGIC=y
diff --git a/configs/omap3_mvblx_defconfig b/configs/omap3_mvblx_defconfig
new file mode 100644
index 0000000..b7ddcc8
--- /dev/null
+++ b/configs/omap3_mvblx_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_OMAP3_MVBLX=y
diff --git a/configs/omap3_overo_defconfig b/configs/omap3_overo_defconfig
new file mode 100644
index 0000000..dca3237
--- /dev/null
+++ b/configs/omap3_overo_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_OMAP3_OVERO=y
diff --git a/configs/omap3_pandora_defconfig b/configs/omap3_pandora_defconfig
new file mode 100644
index 0000000..54dab48
--- /dev/null
+++ b/configs/omap3_pandora_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_OMAP3_PANDORA=y
diff --git a/configs/omap3_sdp3430_defconfig b/configs/omap3_sdp3430_defconfig
new file mode 100644
index 0000000..9672956
--- /dev/null
+++ b/configs/omap3_sdp3430_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_OMAP3_SDP3430=y
diff --git a/configs/omap3_zoom1_defconfig b/configs/omap3_zoom1_defconfig
new file mode 100644
index 0000000..f4c8ed9
--- /dev/null
+++ b/configs/omap3_zoom1_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_OMAP3_ZOOM1=y
diff --git a/configs/omap4_panda_defconfig b/configs/omap4_panda_defconfig
new file mode 100644
index 0000000..1498d17
--- /dev/null
+++ b/configs/omap4_panda_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_OMAP4_PANDA=y
diff --git a/configs/omap4_sdp4430_defconfig b/configs/omap4_sdp4430_defconfig
new file mode 100644
index 0000000..faac317
--- /dev/null
+++ b/configs/omap4_sdp4430_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_OMAP4_SDP4430=y
diff --git a/configs/omap5912osk_defconfig b/configs/omap5912osk_defconfig
new file mode 100644
index 0000000..5aeb097
--- /dev/null
+++ b/configs/omap5912osk_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_OMAP5912OSK=y
diff --git a/configs/omap5_uevm_defconfig b/configs/omap5_uevm_defconfig
new file mode 100644
index 0000000..7a19ce9
--- /dev/null
+++ b/configs/omap5_uevm_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_OMAP5_UEVM=y
diff --git a/configs/openrd_base_defconfig b/configs/openrd_base_defconfig
new file mode 100644
index 0000000..25f777e
--- /dev/null
+++ b/configs/openrd_base_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="BOARD_IS_OPENRD_BASE"
+CONFIG_ARM=y
+CONFIG_TARGET_OPENRD=y
diff --git a/configs/openrd_client_defconfig b/configs/openrd_client_defconfig
new file mode 100644
index 0000000..ba71851
--- /dev/null
+++ b/configs/openrd_client_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="BOARD_IS_OPENRD_CLIENT"
+CONFIG_ARM=y
+CONFIG_TARGET_OPENRD=y
diff --git a/configs/openrd_ultimate_defconfig b/configs/openrd_ultimate_defconfig
new file mode 100644
index 0000000..8651f92
--- /dev/null
+++ b/configs/openrd_ultimate_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="BOARD_IS_OPENRD_ULTIMATE"
+CONFIG_ARM=y
+CONFIG_TARGET_OPENRD=y
diff --git a/configs/openrisc-generic_defconfig b/configs/openrisc-generic_defconfig
new file mode 100644
index 0000000..e422974
--- /dev/null
+++ b/configs/openrisc-generic_defconfig
@@ -0,0 +1,2 @@
+CONFIG_OPENRISC=y
+CONFIG_TARGET_OPENRISC_GENERIC=y
diff --git a/configs/origen_defconfig b/configs/origen_defconfig
new file mode 100644
index 0000000..e0d10d3
--- /dev/null
+++ b/configs/origen_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_ORIGEN=y
diff --git a/configs/otc570_dataflash_defconfig b/configs/otc570_dataflash_defconfig
new file mode 100644
index 0000000..992d6b6
--- /dev/null
+++ b/configs/otc570_dataflash_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9263,SYS_USE_DATAFLASH"
+CONFIG_ARM=y
+CONFIG_TARGET_OTC570=y
diff --git a/configs/otc570_defconfig b/configs/otc570_defconfig
new file mode 100644
index 0000000..65295cb
--- /dev/null
+++ b/configs/otc570_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9263,SYS_USE_NANDFLASH"
+CONFIG_ARM=y
+CONFIG_TARGET_OTC570=y
diff --git a/configs/p3m7448_defconfig b/configs/p3m7448_defconfig
new file mode 100644
index 0000000..9b03689
--- /dev/null
+++ b/configs/p3m7448_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P3M7448"
+CONFIG_PPC=y
+CONFIG_74xx_7xx=y
+CONFIG_TARGET_P3MX=y
diff --git a/configs/p3m750_defconfig b/configs/p3m750_defconfig
new file mode 100644
index 0000000..e5377eb
--- /dev/null
+++ b/configs/p3m750_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="P3M750"
+CONFIG_PPC=y
+CONFIG_74xx_7xx=y
+CONFIG_TARGET_P3MX=y
diff --git a/configs/p3p440_defconfig b/configs/p3p440_defconfig
new file mode 100644
index 0000000..0511b14
--- /dev/null
+++ b/configs/p3p440_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_P3P440=y
diff --git a/configs/palmld_defconfig b/configs/palmld_defconfig
new file mode 100644
index 0000000..599acc3
--- /dev/null
+++ b/configs/palmld_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_PALMLD=y
diff --git a/configs/palmtc_defconfig b/configs/palmtc_defconfig
new file mode 100644
index 0000000..91cb76d
--- /dev/null
+++ b/configs/palmtc_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_PALMTC=y
diff --git a/configs/palmtreo680_defconfig b/configs/palmtreo680_defconfig
new file mode 100644
index 0000000..84c4c16
--- /dev/null
+++ b/configs/palmtreo680_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_PALMTREO680=y
diff --git a/configs/paz00_defconfig b/configs/paz00_defconfig
new file mode 100644
index 0000000..61a536e
--- /dev/null
+++ b/configs/paz00_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_PAZ00=y
diff --git a/configs/pb1000_defconfig b/configs/pb1000_defconfig
new file mode 100644
index 0000000..e226358
--- /dev/null
+++ b/configs/pb1000_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="PB1000"
+CONFIG_MIPS=y
+CONFIG_TARGET_PB1X00=y
diff --git a/configs/pcm030_LOWBOOT_defconfig b/configs/pcm030_LOWBOOT_defconfig
new file mode 100644
index 0000000..72ecf8f
--- /dev/null
+++ b/configs/pcm030_LOWBOOT_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0xFF000000"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_PCM030=y
diff --git a/configs/pcm030_defconfig b/configs/pcm030_defconfig
new file mode 100644
index 0000000..3283517
--- /dev/null
+++ b/configs/pcm030_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_PCM030=y
diff --git a/configs/pcm051_rev1_defconfig b/configs/pcm051_rev1_defconfig
new file mode 100644
index 0000000..8b27682
--- /dev/null
+++ b/configs/pcm051_rev1_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="REV1"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_PCM051=y
diff --git a/configs/pcm051_rev3_defconfig b/configs/pcm051_rev3_defconfig
new file mode 100644
index 0000000..27ad6ff
--- /dev/null
+++ b/configs/pcm051_rev3_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="REV3"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_PCM051=y
diff --git a/configs/pcs440ep_defconfig b/configs/pcs440ep_defconfig
new file mode 100644
index 0000000..299bf8a
--- /dev/null
+++ b/configs/pcs440ep_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_PCS440EP=y
diff --git a/configs/pdm360ng_defconfig b/configs/pdm360ng_defconfig
new file mode 100644
index 0000000..4e3d704
--- /dev/null
+++ b/configs/pdm360ng_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC512X=y
+CONFIG_TARGET_PDM360NG=y
diff --git a/configs/peach-pit_defconfig b/configs/peach-pit_defconfig
new file mode 100644
index 0000000..68ba794
--- /dev/null
+++ b/configs/peach-pit_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_PEACH_PIT=y
diff --git a/configs/pengwyn_defconfig b/configs/pengwyn_defconfig
new file mode 100644
index 0000000..1b9aa68
--- /dev/null
+++ b/configs/pengwyn_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_PENGWYN=y
diff --git a/configs/pepper_defconfig b/configs/pepper_defconfig
new file mode 100644
index 0000000..22c7bb4
--- /dev/null
+++ b/configs/pepper_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_PEPPER=y
diff --git a/configs/pf5200_defconfig b/configs/pf5200_defconfig
new file mode 100644
index 0000000..fe926a0
--- /dev/null
+++ b/configs/pf5200_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_PF5200=y
diff --git a/configs/plutux_defconfig b/configs/plutux_defconfig
new file mode 100644
index 0000000..672b66c
--- /dev/null
+++ b/configs/plutux_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_PLUTUX=y
diff --git a/configs/pm9261_defconfig b/configs/pm9261_defconfig
new file mode 100644
index 0000000..b8a0248
--- /dev/null
+++ b/configs/pm9261_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9261"
+CONFIG_ARM=y
+CONFIG_TARGET_PM9261=y
diff --git a/configs/pm9263_defconfig b/configs/pm9263_defconfig
new file mode 100644
index 0000000..3a5029a
--- /dev/null
+++ b/configs/pm9263_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9263"
+CONFIG_ARM=y
+CONFIG_TARGET_PM9263=y
diff --git a/configs/pm9g45_defconfig b/configs/pm9g45_defconfig
new file mode 100644
index 0000000..89297e0
--- /dev/null
+++ b/configs/pm9g45_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G45"
+CONFIG_ARM=y
+CONFIG_TARGET_PM9G45=y
diff --git a/configs/pogo_e02_defconfig b/configs/pogo_e02_defconfig
new file mode 100644
index 0000000..41637e0
--- /dev/null
+++ b/configs/pogo_e02_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_POGO_E02=y
diff --git a/configs/polaris_defconfig b/configs/polaris_defconfig
new file mode 100644
index 0000000..f510a53
--- /dev/null
+++ b/configs/polaris_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="POLARIS"
+CONFIG_ARM=y
+CONFIG_TARGET_TRIZEPSIV=y
diff --git a/configs/portl2_defconfig b/configs/portl2_defconfig
new file mode 100644
index 0000000..6df18e9
--- /dev/null
+++ b/configs/portl2_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="KM_PORTL2"
+CONFIG_ARM=y
+CONFIG_TARGET_KM_KIRKWOOD=y
diff --git a/configs/portuxg20_defconfig b/configs/portuxg20_defconfig
new file mode 100644
index 0000000..b1634e9
--- /dev/null
+++ b/configs/portuxg20_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20,PORTUXG20"
+CONFIG_ARM=y
+CONFIG_TARGET_STAMP9G20=y
diff --git a/configs/ppmc7xx_defconfig b/configs/ppmc7xx_defconfig
new file mode 100644
index 0000000..feefe49
--- /dev/null
+++ b/configs/ppmc7xx_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_74xx_7xx=y
+CONFIG_TARGET_PPMC7XX=y
diff --git a/configs/ppmc8260_defconfig b/configs/ppmc8260_defconfig
new file mode 100644
index 0000000..e8eb4f7
--- /dev/null
+++ b/configs/ppmc8260_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_PPMC8260=y
diff --git a/configs/pr1_defconfig b/configs/pr1_defconfig
new file mode 100644
index 0000000..a8784c1
--- /dev/null
+++ b/configs/pr1_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_PR1=y
diff --git a/configs/prs200_DDR_defconfig b/configs/prs200_DDR_defconfig
new file mode 100644
index 0000000..541fb99
--- /dev/null
+++ b/configs/prs200_DDR_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PRS200"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_MCC200=y
diff --git a/configs/prs200_defconfig b/configs/prs200_defconfig
new file mode 100644
index 0000000..a094a08
--- /dev/null
+++ b/configs/prs200_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PRS200,MCC200_SDRAM"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_MCC200=y
diff --git a/configs/prs200_highboot_DDR_defconfig b/configs/prs200_highboot_DDR_defconfig
new file mode 100644
index 0000000..b8eb8d4
--- /dev/null
+++ b/configs/prs200_highboot_DDR_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PRS200,SYS_TEXT_BASE=0xFFF00000"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_MCC200=y
diff --git a/configs/prs200_highboot_defconfig b/configs/prs200_highboot_defconfig
new file mode 100644
index 0000000..8d68cc0
--- /dev/null
+++ b/configs/prs200_highboot_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PRS200,SYS_TEXT_BASE=0xFFF00000,MCC200_SDRAM"
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_MCC200=y
diff --git a/configs/pxa255_idp_defconfig b/configs/pxa255_idp_defconfig
new file mode 100644
index 0000000..251d6c4
--- /dev/null
+++ b/configs/pxa255_idp_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_PXA255_IDP=y
diff --git a/configs/pxm2_defconfig b/configs/pxm2_defconfig
new file mode 100644
index 0000000..e0d9031
--- /dev/null
+++ b/configs/pxm2_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_PXM2=y
diff --git a/configs/qemu-ppce500_defconfig b/configs/qemu-ppce500_defconfig
new file mode 100644
index 0000000..2b8f707
--- /dev/null
+++ b/configs/qemu-ppce500_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_QEMU_PPCE500=y
diff --git a/configs/qemu_mips64_defconfig b/configs/qemu_mips64_defconfig
new file mode 100644
index 0000000..2948355
--- /dev/null
+++ b/configs/qemu_mips64_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_BIG_ENDIAN"
+CONFIG_MIPS=y
+CONFIG_TARGET_QEMU_MIPS64=y
diff --git a/configs/qemu_mips64el_defconfig b/configs/qemu_mips64el_defconfig
new file mode 100644
index 0000000..13a039f
--- /dev/null
+++ b/configs/qemu_mips64el_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_LITTLE_ENDIAN"
+CONFIG_MIPS=y
+CONFIG_TARGET_QEMU_MIPS64=y
diff --git a/configs/qemu_mips_defconfig b/configs/qemu_mips_defconfig
new file mode 100644
index 0000000..6b2c029
--- /dev/null
+++ b/configs/qemu_mips_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_BIG_ENDIAN"
+CONFIG_MIPS=y
+CONFIG_TARGET_QEMU_MIPS=y
diff --git a/configs/qemu_mipsel_defconfig b/configs/qemu_mipsel_defconfig
new file mode 100644
index 0000000..57c8701
--- /dev/null
+++ b/configs/qemu_mipsel_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_LITTLE_ENDIAN"
+CONFIG_MIPS=y
+CONFIG_TARGET_QEMU_MIPS=y
diff --git a/configs/qong_defconfig b/configs/qong_defconfig
new file mode 100644
index 0000000..fddd836
--- /dev/null
+++ b/configs/qong_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_QONG=y
diff --git a/configs/r0p7734_defconfig b/configs/r0p7734_defconfig
new file mode 100644
index 0000000..2b2d2cd
--- /dev/null
+++ b/configs/r0p7734_defconfig
@@ -0,0 +1,2 @@
+CONFIG_SH=y
+CONFIG_TARGET_R0P7734=y
diff --git a/configs/r2dplus_defconfig b/configs/r2dplus_defconfig
new file mode 100644
index 0000000..87de323
--- /dev/null
+++ b/configs/r2dplus_defconfig
@@ -0,0 +1,2 @@
+CONFIG_SH=y
+CONFIG_TARGET_R2DPLUS=y
diff --git a/configs/r7-tv-dongle_defconfig b/configs/r7-tv-dongle_defconfig
new file mode 100644
index 0000000..62e8c56
--- /dev/null
+++ b/configs/r7-tv-dongle_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="R7DONGLE,SPL,AXP152_POWER"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SUN5I=y
diff --git a/configs/r7780mp_defconfig b/configs/r7780mp_defconfig
new file mode 100644
index 0000000..7e201f5
--- /dev/null
+++ b/configs/r7780mp_defconfig
@@ -0,0 +1,2 @@
+CONFIG_SH=y
+CONFIG_TARGET_R7780MP=y
diff --git a/configs/rainier_defconfig b/configs/rainier_defconfig
new file mode 100644
index 0000000..666cb18
--- /dev/null
+++ b/configs/rainier_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="RAINIER"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_SEQUOIA=y
diff --git a/configs/rainier_ramboot_defconfig b/configs/rainier_ramboot_defconfig
new file mode 100644
index 0000000..2ecb1cf
--- /dev/null
+++ b/configs/rainier_ramboot_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="RAINIER,SYS_RAMBOOT,SYS_TEXT_BASE=0x01000000,SYS_LDSCRIPT=board/amcc/sequoia/u-boot-ram.lds"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_SEQUOIA=y
diff --git a/configs/rd6281a_defconfig b/configs/rd6281a_defconfig
new file mode 100644
index 0000000..d9c3e39
--- /dev/null
+++ b/configs/rd6281a_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_RD6281A=y
diff --git a/configs/redwood_defconfig b/configs/redwood_defconfig
new file mode 100644
index 0000000..ad87d0e
--- /dev/null
+++ b/configs/redwood_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_REDWOOD=y
diff --git a/configs/riotboard_defconfig b/configs/riotboard_defconfig
new file mode 100644
index 0000000..5296bde
--- /dev/null
+++ b/configs/riotboard_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6s1g.cfg,MX6S,DDR_MB=1024,ENV_IS_IN_MMC"
+CONFIG_ARM=y
+CONFIG_TARGET_EMBESTMX6BOARDS=y
diff --git a/configs/rpi_b_defconfig b/configs/rpi_b_defconfig
new file mode 100644
index 0000000..9a4705e
--- /dev/null
+++ b/configs/rpi_b_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_RPI_B=y
diff --git a/configs/rsk7203_defconfig b/configs/rsk7203_defconfig
new file mode 100644
index 0000000..44c0bc8
--- /dev/null
+++ b/configs/rsk7203_defconfig
@@ -0,0 +1,2 @@
+CONFIG_SH=y
+CONFIG_TARGET_RSK7203=y
diff --git a/configs/rsk7264_defconfig b/configs/rsk7264_defconfig
new file mode 100644
index 0000000..aedc333
--- /dev/null
+++ b/configs/rsk7264_defconfig
@@ -0,0 +1,2 @@
+CONFIG_SH=y
+CONFIG_TARGET_RSK7264=y
diff --git a/configs/rsk7269_defconfig b/configs/rsk7269_defconfig
new file mode 100644
index 0000000..25fdf80
--- /dev/null
+++ b/configs/rsk7269_defconfig
@@ -0,0 +1,2 @@
+CONFIG_SH=y
+CONFIG_TARGET_RSK7269=y
diff --git a/configs/rut_defconfig b/configs/rut_defconfig
new file mode 100644
index 0000000..0568655
--- /dev/null
+++ b/configs/rut_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_RUT=y
diff --git a/configs/s5p_goni_defconfig b/configs/s5p_goni_defconfig
new file mode 100644
index 0000000..c0c3509
--- /dev/null
+++ b/configs/s5p_goni_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_S5P_GONI=y
diff --git a/configs/s5pc210_universal_defconfig b/configs/s5pc210_universal_defconfig
new file mode 100644
index 0000000..572df1d
--- /dev/null
+++ b/configs/s5pc210_universal_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_S5PC210_UNIVERSAL=y
diff --git a/configs/sacsng_defconfig b/configs/sacsng_defconfig
new file mode 100644
index 0000000..91cca23
--- /dev/null
+++ b/configs/sacsng_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_SACSNG=y
diff --git a/configs/sama5d3_xplained_mmc_defconfig b/configs/sama5d3_xplained_mmc_defconfig
new file mode 100644
index 0000000..a7d791f
--- /dev/null
+++ b/configs/sama5d3_xplained_mmc_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="SAMA5D3,SYS_USE_MMC"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SAMA5D3_XPLAINED=y
diff --git a/configs/sama5d3_xplained_nandflash_defconfig b/configs/sama5d3_xplained_nandflash_defconfig
new file mode 100644
index 0000000..b972860
--- /dev/null
+++ b/configs/sama5d3_xplained_nandflash_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="SAMA5D3,SYS_USE_NANDFLASH"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SAMA5D3_XPLAINED=y
diff --git a/configs/sama5d3xek_mmc_defconfig b/configs/sama5d3xek_mmc_defconfig
new file mode 100644
index 0000000..3f8d997
--- /dev/null
+++ b/configs/sama5d3xek_mmc_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="SAMA5D3,SYS_USE_MMC"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SAMA5D3XEK=y
diff --git a/configs/sama5d3xek_nandflash_defconfig b/configs/sama5d3xek_nandflash_defconfig
new file mode 100644
index 0000000..7a92417
--- /dev/null
+++ b/configs/sama5d3xek_nandflash_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="SAMA5D3,SYS_USE_NANDFLASH"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SAMA5D3XEK=y
diff --git a/configs/sama5d3xek_spiflash_defconfig b/configs/sama5d3xek_spiflash_defconfig
new file mode 100644
index 0000000..c83a7ab
--- /dev/null
+++ b/configs/sama5d3xek_spiflash_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="SAMA5D3,SYS_USE_SERIALFLASH"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SAMA5D3XEK=y
diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/configs/sandbox_defconfig
diff --git a/configs/sansa_fuze_plus_defconfig b/configs/sansa_fuze_plus_defconfig
new file mode 100644
index 0000000..b6b0fc7
--- /dev/null
+++ b/configs/sansa_fuze_plus_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SANSA_FUZE_PLUS=y
diff --git a/configs/sbc35_a9g20_eeprom_defconfig b/configs/sbc35_a9g20_eeprom_defconfig
new file mode 100644
index 0000000..aa9cd3e
--- /dev/null
+++ b/configs/sbc35_a9g20_eeprom_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20,SYS_USE_EEPROM"
+CONFIG_ARM=y
+CONFIG_TARGET_SBC35_A9G20=y
diff --git a/configs/sbc35_a9g20_nandflash_defconfig b/configs/sbc35_a9g20_nandflash_defconfig
new file mode 100644
index 0000000..fba9f31
--- /dev/null
+++ b/configs/sbc35_a9g20_nandflash_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20,SYS_USE_NANDFLASH"
+CONFIG_ARM=y
+CONFIG_TARGET_SBC35_A9G20=y
diff --git a/configs/sbc405_defconfig b/configs/sbc405_defconfig
new file mode 100644
index 0000000..b34cbb7
--- /dev/null
+++ b/configs/sbc405_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_SBC405=y
diff --git a/configs/sbc8349_PCI_33_defconfig b/configs/sbc8349_PCI_33_defconfig
new file mode 100644
index 0000000..f7aaa7d
--- /dev/null
+++ b/configs/sbc8349_PCI_33_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PCI,PCI_33M"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_SBC8349=y
diff --git a/configs/sbc8349_PCI_66_defconfig b/configs/sbc8349_PCI_66_defconfig
new file mode 100644
index 0000000..2e1171f
--- /dev/null
+++ b/configs/sbc8349_PCI_66_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PCI,PCI_66M"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_SBC8349=y
diff --git a/configs/sbc8349_defconfig b/configs/sbc8349_defconfig
new file mode 100644
index 0000000..f1808e8
--- /dev/null
+++ b/configs/sbc8349_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_SBC8349=y
diff --git a/configs/sbc8548_PCI_33_PCIE_defconfig b/configs/sbc8548_PCI_33_PCIE_defconfig
new file mode 100644
index 0000000..ae4f63f
--- /dev/null
+++ b/configs/sbc8548_PCI_33_PCIE_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PCI,33,PCIE"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_SBC8548=y
diff --git a/configs/sbc8548_PCI_33_defconfig b/configs/sbc8548_PCI_33_defconfig
new file mode 100644
index 0000000..b79b993
--- /dev/null
+++ b/configs/sbc8548_PCI_33_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PCI,33"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_SBC8548=y
diff --git a/configs/sbc8548_PCI_66_PCIE_defconfig b/configs/sbc8548_PCI_66_PCIE_defconfig
new file mode 100644
index 0000000..661fd0f
--- /dev/null
+++ b/configs/sbc8548_PCI_66_PCIE_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PCI,66,PCIE"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_SBC8548=y
diff --git a/configs/sbc8548_PCI_66_defconfig b/configs/sbc8548_PCI_66_defconfig
new file mode 100644
index 0000000..8cc95e5
--- /dev/null
+++ b/configs/sbc8548_PCI_66_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="PCI,66"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_SBC8548=y
diff --git a/configs/sbc8548_defconfig b/configs/sbc8548_defconfig
new file mode 100644
index 0000000..b74f7bc
--- /dev/null
+++ b/configs/sbc8548_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_SBC8548=y
diff --git a/configs/sbc8641d_defconfig b/configs/sbc8641d_defconfig
new file mode 100644
index 0000000..6b89473
--- /dev/null
+++ b/configs/sbc8641d_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC86xx=y
+CONFIG_TARGET_SBC8641D=y
diff --git a/configs/sc3_defconfig b/configs/sc3_defconfig
new file mode 100644
index 0000000..e77b04c
--- /dev/null
+++ b/configs/sc3_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_SC3=y
diff --git a/configs/sc_sps_1_defconfig b/configs/sc_sps_1_defconfig
new file mode 100644
index 0000000..75e0fc8
--- /dev/null
+++ b/configs/sc_sps_1_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SC_SPS_1=y
diff --git a/configs/scb9328_defconfig b/configs/scb9328_defconfig
new file mode 100644
index 0000000..048caeb
--- /dev/null
+++ b/configs/scb9328_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_SCB9328=y
diff --git a/configs/seaboard_defconfig b/configs/seaboard_defconfig
new file mode 100644
index 0000000..c0f078b
--- /dev/null
+++ b/configs/seaboard_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SEABOARD=y
diff --git a/configs/sequoia_defconfig b/configs/sequoia_defconfig
new file mode 100644
index 0000000..678c2bb
--- /dev/null
+++ b/configs/sequoia_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SEQUOIA"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_SEQUOIA=y
diff --git a/configs/sequoia_ramboot_defconfig b/configs/sequoia_ramboot_defconfig
new file mode 100644
index 0000000..0d0c6c1
--- /dev/null
+++ b/configs/sequoia_ramboot_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SEQUOIA,SYS_RAMBOOT,SYS_TEXT_BASE=0x01000000,SYS_LDSCRIPT=board/amcc/sequoia/u-boot-ram.lds"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_SEQUOIA=y
diff --git a/configs/sh7752evb_defconfig b/configs/sh7752evb_defconfig
new file mode 100644
index 0000000..124154c
--- /dev/null
+++ b/configs/sh7752evb_defconfig
@@ -0,0 +1,2 @@
+CONFIG_SH=y
+CONFIG_TARGET_SH7752EVB=y
diff --git a/configs/sh7753evb_defconfig b/configs/sh7753evb_defconfig
new file mode 100644
index 0000000..9ff4121
--- /dev/null
+++ b/configs/sh7753evb_defconfig
@@ -0,0 +1,2 @@
+CONFIG_SH=y
+CONFIG_TARGET_SH7753EVB=y
diff --git a/configs/sh7757lcr_defconfig b/configs/sh7757lcr_defconfig
new file mode 100644
index 0000000..3066d97
--- /dev/null
+++ b/configs/sh7757lcr_defconfig
@@ -0,0 +1,2 @@
+CONFIG_SH=y
+CONFIG_TARGET_SH7757LCR=y
diff --git a/configs/sh7763rdp_defconfig b/configs/sh7763rdp_defconfig
new file mode 100644
index 0000000..8857e8a
--- /dev/null
+++ b/configs/sh7763rdp_defconfig
@@ -0,0 +1,2 @@
+CONFIG_SH=y
+CONFIG_TARGET_SH7763RDP=y
diff --git a/configs/sh7785lcr_32bit_defconfig b/configs/sh7785lcr_32bit_defconfig
new file mode 100644
index 0000000..7cf93b4
--- /dev/null
+++ b/configs/sh7785lcr_32bit_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SH_32BIT=1"
+CONFIG_SH=y
+CONFIG_TARGET_SH7785LCR=y
diff --git a/configs/sh7785lcr_defconfig b/configs/sh7785lcr_defconfig
new file mode 100644
index 0000000..31d2c38
--- /dev/null
+++ b/configs/sh7785lcr_defconfig
@@ -0,0 +1,2 @@
+CONFIG_SH=y
+CONFIG_TARGET_SH7785LCR=y
diff --git a/configs/sheevaplug_defconfig b/configs/sheevaplug_defconfig
new file mode 100644
index 0000000..9e4b9c9
--- /dev/null
+++ b/configs/sheevaplug_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_SHEEVAPLUG=y
diff --git a/configs/shmin_defconfig b/configs/shmin_defconfig
new file mode 100644
index 0000000..74c3550
--- /dev/null
+++ b/configs/shmin_defconfig
@@ -0,0 +1,2 @@
+CONFIG_SH=y
+CONFIG_TARGET_SHMIN=y
diff --git a/configs/smdk2410_defconfig b/configs/smdk2410_defconfig
new file mode 100644
index 0000000..fec4ba6
--- /dev/null
+++ b/configs/smdk2410_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_SMDK2410=y
diff --git a/configs/smdk5250_defconfig b/configs/smdk5250_defconfig
new file mode 100644
index 0000000..a35e4fc
--- /dev/null
+++ b/configs/smdk5250_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SMDK5250=y
diff --git a/configs/smdk5420_defconfig b/configs/smdk5420_defconfig
new file mode 100644
index 0000000..12933f0
--- /dev/null
+++ b/configs/smdk5420_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SMDK5420=y
diff --git a/configs/smdkc100_defconfig b/configs/smdkc100_defconfig
new file mode 100644
index 0000000..7455235
--- /dev/null
+++ b/configs/smdkc100_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_SMDKC100=y
diff --git a/configs/smdkv310_defconfig b/configs/smdkv310_defconfig
new file mode 100644
index 0000000..d87986a
--- /dev/null
+++ b/configs/smdkv310_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SMDKV310=y
diff --git a/configs/snapper9260_defconfig b/configs/snapper9260_defconfig
new file mode 100644
index 0000000..7055e2a
--- /dev/null
+++ b/configs/snapper9260_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9260"
+CONFIG_ARM=y
+CONFIG_TARGET_SNAPPER9260=y
diff --git a/configs/snapper9g20_defconfig b/configs/snapper9g20_defconfig
new file mode 100644
index 0000000..2faae15
--- /dev/null
+++ b/configs/snapper9g20_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20"
+CONFIG_ARM=y
+CONFIG_TARGET_SNAPPER9260=y
diff --git a/configs/snow_defconfig b/configs/snow_defconfig
new file mode 100644
index 0000000..44c4701
--- /dev/null
+++ b/configs/snow_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SNOW=y
diff --git a/configs/snowball_defconfig b/configs/snowball_defconfig
new file mode 100644
index 0000000..19100c2
--- /dev/null
+++ b/configs/snowball_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_SNOWBALL=y
diff --git a/configs/socfpga_cyclone5_defconfig b/configs/socfpga_cyclone5_defconfig
new file mode 100644
index 0000000..4b2ede4
--- /dev/null
+++ b/configs/socfpga_cyclone5_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SOCFPGA_CYCLONE5=y
diff --git a/configs/socrates_defconfig b/configs/socrates_defconfig
new file mode 100644
index 0000000..d7ed82b
--- /dev/null
+++ b/configs/socrates_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_SOCRATES=y
diff --git a/configs/spear300_defconfig b/configs/spear300_defconfig
new file mode 100644
index 0000000..25a08df
--- /dev/null
+++ b/configs/spear300_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="spear300"
+CONFIG_ARM=y
+CONFIG_TARGET_SPEAR300=y
diff --git a/configs/spear300_nand_defconfig b/configs/spear300_nand_defconfig
new file mode 100644
index 0000000..a4b70e8
--- /dev/null
+++ b/configs/spear300_nand_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="spear300,nand"
+CONFIG_ARM=y
+CONFIG_TARGET_SPEAR300=y
diff --git a/configs/spear300_usbtty_defconfig b/configs/spear300_usbtty_defconfig
new file mode 100644
index 0000000..d750cf4
--- /dev/null
+++ b/configs/spear300_usbtty_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="spear300,usbtty"
+CONFIG_ARM=y
+CONFIG_TARGET_SPEAR300=y
diff --git a/configs/spear300_usbtty_nand_defconfig b/configs/spear300_usbtty_nand_defconfig
new file mode 100644
index 0000000..8bafdb5
--- /dev/null
+++ b/configs/spear300_usbtty_nand_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="spear300,usbtty,nand"
+CONFIG_ARM=y
+CONFIG_TARGET_SPEAR300=y
diff --git a/configs/spear310_defconfig b/configs/spear310_defconfig
new file mode 100644
index 0000000..8a9ec85
--- /dev/null
+++ b/configs/spear310_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="spear310"
+CONFIG_ARM=y
+CONFIG_TARGET_SPEAR310=y
diff --git a/configs/spear310_nand_defconfig b/configs/spear310_nand_defconfig
new file mode 100644
index 0000000..1439ac5
--- /dev/null
+++ b/configs/spear310_nand_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="spear310,nand"
+CONFIG_ARM=y
+CONFIG_TARGET_SPEAR310=y
diff --git a/configs/spear310_pnor_defconfig b/configs/spear310_pnor_defconfig
new file mode 100644
index 0000000..19604b3
--- /dev/null
+++ b/configs/spear310_pnor_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="spear310,FLASH_PNOR"
+CONFIG_ARM=y
+CONFIG_TARGET_SPEAR310=y
diff --git a/configs/spear310_usbtty_defconfig b/configs/spear310_usbtty_defconfig
new file mode 100644
index 0000000..6342a56
--- /dev/null
+++ b/configs/spear310_usbtty_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="spear310,usbtty"
+CONFIG_ARM=y
+CONFIG_TARGET_SPEAR310=y
diff --git a/configs/spear310_usbtty_nand_defconfig b/configs/spear310_usbtty_nand_defconfig
new file mode 100644
index 0000000..5b9f1f6
--- /dev/null
+++ b/configs/spear310_usbtty_nand_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="spear310,usbtty,nand"
+CONFIG_ARM=y
+CONFIG_TARGET_SPEAR310=y
diff --git a/configs/spear310_usbtty_pnor_defconfig b/configs/spear310_usbtty_pnor_defconfig
new file mode 100644
index 0000000..0567936
--- /dev/null
+++ b/configs/spear310_usbtty_pnor_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="spear310,usbtty,FLASH_PNOR"
+CONFIG_ARM=y
+CONFIG_TARGET_SPEAR310=y
diff --git a/configs/spear320_defconfig b/configs/spear320_defconfig
new file mode 100644
index 0000000..3d91bb1
--- /dev/null
+++ b/configs/spear320_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="spear320"
+CONFIG_ARM=y
+CONFIG_TARGET_SPEAR320=y
diff --git a/configs/spear320_nand_defconfig b/configs/spear320_nand_defconfig
new file mode 100644
index 0000000..fd0f908
--- /dev/null
+++ b/configs/spear320_nand_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="spear320,nand"
+CONFIG_ARM=y
+CONFIG_TARGET_SPEAR320=y
diff --git a/configs/spear320_pnor_defconfig b/configs/spear320_pnor_defconfig
new file mode 100644
index 0000000..6cce316
--- /dev/null
+++ b/configs/spear320_pnor_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="spear320,FLASH_PNOR"
+CONFIG_ARM=y
+CONFIG_TARGET_SPEAR320=y
diff --git a/configs/spear320_usbtty_defconfig b/configs/spear320_usbtty_defconfig
new file mode 100644
index 0000000..7ad3d84
--- /dev/null
+++ b/configs/spear320_usbtty_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="spear320,usbtty"
+CONFIG_ARM=y
+CONFIG_TARGET_SPEAR320=y
diff --git a/configs/spear320_usbtty_nand_defconfig b/configs/spear320_usbtty_nand_defconfig
new file mode 100644
index 0000000..a5ad90b
--- /dev/null
+++ b/configs/spear320_usbtty_nand_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="spear320,usbtty,nand"
+CONFIG_ARM=y
+CONFIG_TARGET_SPEAR320=y
diff --git a/configs/spear320_usbtty_pnor_defconfig b/configs/spear320_usbtty_pnor_defconfig
new file mode 100644
index 0000000..6b110ef
--- /dev/null
+++ b/configs/spear320_usbtty_pnor_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="spear320,usbtty,FLASH_PNOR"
+CONFIG_ARM=y
+CONFIG_TARGET_SPEAR320=y
diff --git a/configs/spear600_defconfig b/configs/spear600_defconfig
new file mode 100644
index 0000000..f1cb0aa
--- /dev/null
+++ b/configs/spear600_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="spear600"
+CONFIG_ARM=y
+CONFIG_TARGET_SPEAR600=y
diff --git a/configs/spear600_nand_defconfig b/configs/spear600_nand_defconfig
new file mode 100644
index 0000000..172c187
--- /dev/null
+++ b/configs/spear600_nand_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="spear600,nand"
+CONFIG_ARM=y
+CONFIG_TARGET_SPEAR600=y
diff --git a/configs/spear600_usbtty_defconfig b/configs/spear600_usbtty_defconfig
new file mode 100644
index 0000000..cf8b0ec
--- /dev/null
+++ b/configs/spear600_usbtty_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="spear600,usbtty"
+CONFIG_ARM=y
+CONFIG_TARGET_SPEAR600=y
diff --git a/configs/spear600_usbtty_nand_defconfig b/configs/spear600_usbtty_nand_defconfig
new file mode 100644
index 0000000..8bd2f07
--- /dev/null
+++ b/configs/spear600_usbtty_nand_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="spear600,usbtty,nand"
+CONFIG_ARM=y
+CONFIG_TARGET_SPEAR600=y
diff --git a/configs/stamp9g20_defconfig b/configs/stamp9g20_defconfig
new file mode 100644
index 0000000..8c0f874
--- /dev/null
+++ b/configs/stamp9g20_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20"
+CONFIG_ARM=y
+CONFIG_TARGET_STAMP9G20=y
diff --git a/configs/stxgp3_defconfig b/configs/stxgp3_defconfig
new file mode 100644
index 0000000..b7537df
--- /dev/null
+++ b/configs/stxgp3_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_STXGP3=y
diff --git a/configs/stxssa_4M_defconfig b/configs/stxssa_4M_defconfig
new file mode 100644
index 0000000..1ffe9f9
--- /dev/null
+++ b/configs/stxssa_4M_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="STXSSA_4M"
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_STXSSA=y
diff --git a/configs/stxssa_defconfig b/configs/stxssa_defconfig
new file mode 100644
index 0000000..f1701f2
--- /dev/null
+++ b/configs/stxssa_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_STXSSA=y
diff --git a/configs/stxxtc_defconfig b/configs/stxxtc_defconfig
new file mode 100644
index 0000000..d0642e4
--- /dev/null
+++ b/configs/stxxtc_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_STXXTC=y
diff --git a/configs/suvd3_defconfig b/configs/suvd3_defconfig
new file mode 100644
index 0000000..0407c87
--- /dev/null
+++ b/configs/suvd3_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SUVD3"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_SUVD3=y
diff --git a/configs/svm_sc8xx_defconfig b/configs/svm_sc8xx_defconfig
new file mode 100644
index 0000000..9f0d343
--- /dev/null
+++ b/configs/svm_sc8xx_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_SVM_SC8XX=y
diff --git a/configs/sycamore_defconfig b/configs/sycamore_defconfig
new file mode 100644
index 0000000..844e67f
--- /dev/null
+++ b/configs/sycamore_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_WALNUT=y
diff --git a/configs/t3corp_defconfig b/configs/t3corp_defconfig
new file mode 100644
index 0000000..c61508a
--- /dev/null
+++ b/configs/t3corp_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_T3CORP=y
diff --git a/configs/taihu_defconfig b/configs/taihu_defconfig
new file mode 100644
index 0000000..ac83725
--- /dev/null
+++ b/configs/taihu_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_TAIHU=y
diff --git a/configs/taishan_defconfig b/configs/taishan_defconfig
new file mode 100644
index 0000000..e956c6f
--- /dev/null
+++ b/configs/taishan_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_TAISHAN=y
diff --git a/configs/tao3530_defconfig b/configs/tao3530_defconfig
new file mode 100644
index 0000000..d8b57b1
--- /dev/null
+++ b/configs/tao3530_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_TAO3530=y
diff --git a/configs/taurus_defconfig b/configs/taurus_defconfig
new file mode 100644
index 0000000..9870048
--- /dev/null
+++ b/configs/taurus_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20,MACH_TYPE=2067,BOARD_TAURUS"
+CONFIG_ARM=y
+CONFIG_TARGET_TAURUS=y
diff --git a/configs/tb100_defconfig b/configs/tb100_defconfig
new file mode 100644
index 0000000..9669dc0
--- /dev/null
+++ b/configs/tb100_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARC=y
+CONFIG_TARGET_TB100=y
diff --git a/configs/tcm-bf518_defconfig b/configs/tcm-bf518_defconfig
new file mode 100644
index 0000000..a9d5da0
--- /dev/null
+++ b/configs/tcm-bf518_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_TCM_BF518=y
diff --git a/configs/tcm-bf537_defconfig b/configs/tcm-bf537_defconfig
new file mode 100644
index 0000000..fe9de13
--- /dev/null
+++ b/configs/tcm-bf537_defconfig
@@ -0,0 +1,2 @@
+CONFIG_BLACKFIN=y
+CONFIG_TARGET_TCM_BF537=y
diff --git a/configs/tec-ng_defconfig b/configs/tec-ng_defconfig
new file mode 100644
index 0000000..2360d25
--- /dev/null
+++ b/configs/tec-ng_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_TEC_NG=y
diff --git a/configs/tec_defconfig b/configs/tec_defconfig
new file mode 100644
index 0000000..1aaa9d1
--- /dev/null
+++ b/configs/tec_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_TEC=y
diff --git a/configs/ti814x_evm_defconfig b/configs/ti814x_evm_defconfig
new file mode 100644
index 0000000..0170655
--- /dev/null
+++ b/configs/ti814x_evm_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_TI814X_EVM=y
diff --git a/configs/ti816x_evm_defconfig b/configs/ti816x_evm_defconfig
new file mode 100644
index 0000000..abb6c5e
--- /dev/null
+++ b/configs/ti816x_evm_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_TI816X_EVM=y
diff --git a/configs/titanium_defconfig b/configs/titanium_defconfig
new file mode 100644
index 0000000..96f7f79
--- /dev/null
+++ b/configs/titanium_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/barco/titanium/imximage.cfg"
+CONFIG_ARM=y
+CONFIG_TARGET_TITANIUM=y
diff --git a/configs/tk71_defconfig b/configs/tk71_defconfig
new file mode 100644
index 0000000..ffff874
--- /dev/null
+++ b/configs/tk71_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_TK71=y
diff --git a/configs/tnetv107x_evm_defconfig b/configs/tnetv107x_evm_defconfig
new file mode 100644
index 0000000..b0915d2
--- /dev/null
+++ b/configs/tnetv107x_evm_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_TNETV107X_EVM=y
diff --git a/configs/tny_a9260_eeprom_defconfig b/configs/tny_a9260_eeprom_defconfig
new file mode 100644
index 0000000..a662669
--- /dev/null
+++ b/configs/tny_a9260_eeprom_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9260,SYS_USE_EEPROM"
+CONFIG_ARM=y
+CONFIG_TARGET_TNY_A9260=y
diff --git a/configs/tny_a9260_nandflash_defconfig b/configs/tny_a9260_nandflash_defconfig
new file mode 100644
index 0000000..41fd9c1
--- /dev/null
+++ b/configs/tny_a9260_nandflash_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9260,SYS_USE_NANDFLASH"
+CONFIG_ARM=y
+CONFIG_TARGET_TNY_A9260=y
diff --git a/configs/tny_a9g20_eeprom_defconfig b/configs/tny_a9g20_eeprom_defconfig
new file mode 100644
index 0000000..a2eb60e
--- /dev/null
+++ b/configs/tny_a9g20_eeprom_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20,SYS_USE_EEPROM"
+CONFIG_ARM=y
+CONFIG_TARGET_TNY_A9260=y
diff --git a/configs/tny_a9g20_nandflash_defconfig b/configs/tny_a9g20_nandflash_defconfig
new file mode 100644
index 0000000..60ebfa2
--- /dev/null
+++ b/configs/tny_a9g20_nandflash_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20,SYS_USE_NANDFLASH"
+CONFIG_ARM=y
+CONFIG_TARGET_TNY_A9260=y
diff --git a/configs/top9000eval_xe_defconfig b/configs/top9000eval_xe_defconfig
new file mode 100644
index 0000000..7ea51f5
--- /dev/null
+++ b/configs/top9000eval_xe_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="EVAL9000"
+CONFIG_ARM=y
+CONFIG_TARGET_TOP9000=y
diff --git a/configs/top9000su_xe_defconfig b/configs/top9000su_xe_defconfig
new file mode 100644
index 0000000..bf6b6f1
--- /dev/null
+++ b/configs/top9000su_xe_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="SU9000"
+CONFIG_ARM=y
+CONFIG_TARGET_TOP9000=y
diff --git a/configs/trats2_defconfig b/configs/trats2_defconfig
new file mode 100644
index 0000000..0a53f09
--- /dev/null
+++ b/configs/trats2_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_TRATS2=y
diff --git a/configs/trats_defconfig b/configs/trats_defconfig
new file mode 100644
index 0000000..93b94c0
--- /dev/null
+++ b/configs/trats_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_TRATS=y
diff --git a/configs/tricorder_defconfig b/configs/tricorder_defconfig
new file mode 100644
index 0000000..80c2df4
--- /dev/null
+++ b/configs/tricorder_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_TRICORDER=y
diff --git a/configs/tricorder_flash_defconfig b/configs/tricorder_flash_defconfig
new file mode 100644
index 0000000..6715e71
--- /dev/null
+++ b/configs/tricorder_flash_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="FLASHCARD"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_TRICORDER=y
diff --git a/configs/trimslice_defconfig b/configs/trimslice_defconfig
new file mode 100644
index 0000000..c096c65
--- /dev/null
+++ b/configs/trimslice_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_TRIMSLICE=y
diff --git a/configs/trizepsiv_defconfig b/configs/trizepsiv_defconfig
new file mode 100644
index 0000000..444d3bb
--- /dev/null
+++ b/configs/trizepsiv_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_TRIZEPSIV=y
diff --git a/configs/tseries_mmc_defconfig b/configs/tseries_mmc_defconfig
new file mode 100644
index 0000000..ea70705
--- /dev/null
+++ b/configs/tseries_mmc_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1,EMMC_BOOT"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_TSERIES=y
diff --git a/configs/tseries_nand_defconfig b/configs/tseries_nand_defconfig
new file mode 100644
index 0000000..599d52c
--- /dev/null
+++ b/configs/tseries_nand_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1,NAND"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_TSERIES=y
diff --git a/configs/tseries_spi_defconfig b/configs/tseries_spi_defconfig
new file mode 100644
index 0000000..7e57020
--- /dev/null
+++ b/configs/tseries_spi_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1,SPI_BOOT,EMMC_BOOT"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_TSERIES=y
diff --git a/configs/tt01_defconfig b/configs/tt01_defconfig
new file mode 100644
index 0000000..a0e6664
--- /dev/null
+++ b/configs/tt01_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_TT01=y
diff --git a/configs/tuge1_defconfig b/configs/tuge1_defconfig
new file mode 100644
index 0000000..c1c9c43
--- /dev/null
+++ b/configs/tuge1_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="TUGE1"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_TUXX1=y
diff --git a/configs/tuxx1_defconfig b/configs/tuxx1_defconfig
new file mode 100644
index 0000000..ecea63f
--- /dev/null
+++ b/configs/tuxx1_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="TUXX1"
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_TUXX1=y
diff --git a/configs/twister_defconfig b/configs/twister_defconfig
new file mode 100644
index 0000000..27e8364
--- /dev/null
+++ b/configs/twister_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_TWISTER=y
diff --git a/configs/tx25_defconfig b/configs/tx25_defconfig
new file mode 100644
index 0000000..0cbc4ee
--- /dev/null
+++ b/configs/tx25_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_TX25=y
diff --git a/configs/u8500_href_defconfig b/configs/u8500_href_defconfig
new file mode 100644
index 0000000..fef179f
--- /dev/null
+++ b/configs/u8500_href_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_U8500_HREF=y
diff --git a/configs/uc100_defconfig b/configs/uc100_defconfig
new file mode 100644
index 0000000..76eeb11
--- /dev/null
+++ b/configs/uc100_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_UC100=y
diff --git a/configs/uc101_defconfig b/configs/uc101_defconfig
new file mode 100644
index 0000000..b365bff
--- /dev/null
+++ b/configs/uc101_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_UC101=y
diff --git a/configs/udoo_quad_defconfig b/configs/udoo_quad_defconfig
new file mode 100644
index 0000000..860a310
--- /dev/null
+++ b/configs/udoo_quad_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/udoo/udoo.cfg,MX6Q,DDR_MB=1024"
+CONFIG_ARM=y
+CONFIG_TARGET_UDOO=y
diff --git a/configs/usb_a9263_dataflash_defconfig b/configs/usb_a9263_dataflash_defconfig
new file mode 100644
index 0000000..8c0ac11
--- /dev/null
+++ b/configs/usb_a9263_dataflash_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9263,SYS_USE_DATAFLASH"
+CONFIG_ARM=y
+CONFIG_TARGET_USB_A9263=y
diff --git a/configs/utx8245_defconfig b/configs/utx8245_defconfig
new file mode 100644
index 0000000..c2107cc
--- /dev/null
+++ b/configs/utx8245_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC824X=y
+CONFIG_TARGET_UTX8245=y
diff --git a/configs/v38b_defconfig b/configs/v38b_defconfig
new file mode 100644
index 0000000..811354c
--- /dev/null
+++ b/configs/v38b_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_V38B=y
diff --git a/configs/v5fx30teval_defconfig b/configs/v5fx30teval_defconfig
new file mode 100644
index 0000000..bb58153
--- /dev/null
+++ b/configs/v5fx30teval_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0x04000000,RESET_VECTOR_ADDRESS=0x04100000,BOOT_FROM_XMD=1,INIT_TLB=board/xilinx/ppc440-generic/init.o"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_V5FX30TEVAL=y
diff --git a/configs/v5fx30teval_flash_defconfig b/configs/v5fx30teval_flash_defconfig
new file mode 100644
index 0000000..1c6ec89
--- /dev/null
+++ b/configs/v5fx30teval_flash_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0xF7F60000,RESET_VECTOR_ADDRESS=0xF7FFFFFC,INIT_TLB=board/xilinx/ppc440-generic/init.o"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_V5FX30TEVAL=y
diff --git a/configs/vct_platinum_defconfig b/configs/vct_platinum_defconfig
new file mode 100644
index 0000000..9ff8b68
--- /dev/null
+++ b/configs/vct_platinum_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="VCT_PLATINUM"
+CONFIG_MIPS=y
+CONFIG_TARGET_VCT=y
diff --git a/configs/vct_platinum_onenand_defconfig b/configs/vct_platinum_onenand_defconfig
new file mode 100644
index 0000000..f33c97d
--- /dev/null
+++ b/configs/vct_platinum_onenand_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="VCT_PLATINUM,VCT_ONENAND"
+CONFIG_MIPS=y
+CONFIG_TARGET_VCT=y
diff --git a/configs/vct_platinum_onenand_small_defconfig b/configs/vct_platinum_onenand_small_defconfig
new file mode 100644
index 0000000..f7b3a91
--- /dev/null
+++ b/configs/vct_platinum_onenand_small_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="VCT_PLATINUM,VCT_ONENAND,VCT_SMALL_IMAGE"
+CONFIG_MIPS=y
+CONFIG_TARGET_VCT=y
diff --git a/configs/vct_platinum_small_defconfig b/configs/vct_platinum_small_defconfig
new file mode 100644
index 0000000..15eef48
--- /dev/null
+++ b/configs/vct_platinum_small_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="VCT_PLATINUM,VCT_SMALL_IMAGE"
+CONFIG_MIPS=y
+CONFIG_TARGET_VCT=y
diff --git a/configs/vct_platinumavc_defconfig b/configs/vct_platinumavc_defconfig
new file mode 100644
index 0000000..8aaac56
--- /dev/null
+++ b/configs/vct_platinumavc_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="VCT_PLATINUMAVC"
+CONFIG_MIPS=y
+CONFIG_TARGET_VCT=y
diff --git a/configs/vct_platinumavc_onenand_defconfig b/configs/vct_platinumavc_onenand_defconfig
new file mode 100644
index 0000000..926c6e4
--- /dev/null
+++ b/configs/vct_platinumavc_onenand_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="VCT_PLATINUMAVC,VCT_ONENAND"
+CONFIG_MIPS=y
+CONFIG_TARGET_VCT=y
diff --git a/configs/vct_platinumavc_onenand_small_defconfig b/configs/vct_platinumavc_onenand_small_defconfig
new file mode 100644
index 0000000..e0e8e44
--- /dev/null
+++ b/configs/vct_platinumavc_onenand_small_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="VCT_PLATINUMAVC,VCT_ONENAND,VCT_SMALL_IMAGE"
+CONFIG_MIPS=y
+CONFIG_TARGET_VCT=y
diff --git a/configs/vct_platinumavc_small_defconfig b/configs/vct_platinumavc_small_defconfig
new file mode 100644
index 0000000..d8209d1
--- /dev/null
+++ b/configs/vct_platinumavc_small_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="VCT_PLATINUMAVC,VCT_SMALL_IMAGE"
+CONFIG_MIPS=y
+CONFIG_TARGET_VCT=y
diff --git a/configs/vct_premium_defconfig b/configs/vct_premium_defconfig
new file mode 100644
index 0000000..0e16ff9
--- /dev/null
+++ b/configs/vct_premium_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="VCT_PREMIUM"
+CONFIG_MIPS=y
+CONFIG_TARGET_VCT=y
diff --git a/configs/vct_premium_onenand_defconfig b/configs/vct_premium_onenand_defconfig
new file mode 100644
index 0000000..29734b8
--- /dev/null
+++ b/configs/vct_premium_onenand_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="VCT_PREMIUM,VCT_ONENAND"
+CONFIG_MIPS=y
+CONFIG_TARGET_VCT=y
diff --git a/configs/vct_premium_onenand_small_defconfig b/configs/vct_premium_onenand_small_defconfig
new file mode 100644
index 0000000..220f875
--- /dev/null
+++ b/configs/vct_premium_onenand_small_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="VCT_PREMIUM,VCT_ONENAND,VCT_SMALL_IMAGE"
+CONFIG_MIPS=y
+CONFIG_TARGET_VCT=y
diff --git a/configs/vct_premium_small_defconfig b/configs/vct_premium_small_defconfig
new file mode 100644
index 0000000..5335472
--- /dev/null
+++ b/configs/vct_premium_small_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="VCT_PREMIUM,VCT_SMALL_IMAGE"
+CONFIG_MIPS=y
+CONFIG_TARGET_VCT=y
diff --git a/configs/ve8313_defconfig b/configs/ve8313_defconfig
new file mode 100644
index 0000000..462c482
--- /dev/null
+++ b/configs/ve8313_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_VE8313=y
diff --git a/configs/venice2_defconfig b/configs/venice2_defconfig
new file mode 100644
index 0000000..2bfa91d
--- /dev/null
+++ b/configs/venice2_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_VENICE2=y
diff --git a/configs/ventana_defconfig b/configs/ventana_defconfig
new file mode 100644
index 0000000..75fca96
--- /dev/null
+++ b/configs/ventana_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_VENTANA=y
diff --git a/configs/versatileab_defconfig b/configs/versatileab_defconfig
new file mode 100644
index 0000000..9d64dd0
--- /dev/null
+++ b/configs/versatileab_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="ARCH_VERSATILE_AB"
+CONFIG_ARM=y
+CONFIG_TARGET_VERSATILEAB=y
diff --git a/configs/versatilepb_defconfig b/configs/versatilepb_defconfig
new file mode 100644
index 0000000..fadaf93
--- /dev/null
+++ b/configs/versatilepb_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="ARCH_VERSATILE_PB"
+CONFIG_ARM=y
+CONFIG_TARGET_VERSATILEPB=y
diff --git a/configs/versatileqemu_defconfig b/configs/versatileqemu_defconfig
new file mode 100644
index 0000000..9d24558
--- /dev/null
+++ b/configs/versatileqemu_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="ARCH_VERSATILE_QEMU,ARCH_VERSATILE_PB"
+CONFIG_ARM=y
+CONFIG_TARGET_VERSATILEQEMU=y
diff --git a/configs/vexpress_aemv8a_defconfig b/configs/vexpress_aemv8a_defconfig
new file mode 100644
index 0000000..a335abc
--- /dev/null
+++ b/configs/vexpress_aemv8a_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="ARM64"
+CONFIG_ARM=y
+CONFIG_TARGET_VEXPRESS_AEMV8A=y
diff --git a/configs/vexpress_aemv8a_semi_defconfig b/configs/vexpress_aemv8a_semi_defconfig
new file mode 100644
index 0000000..e6dd8e7
--- /dev/null
+++ b/configs/vexpress_aemv8a_semi_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="ARM64,SEMIHOSTING,BASE_FVP"
+CONFIG_ARM=y
+CONFIG_TARGET_VEXPRESS_AEMV8A_SEMI=y
diff --git a/configs/vexpress_ca15_tc2_defconfig b/configs/vexpress_ca15_tc2_defconfig
new file mode 100644
index 0000000..ee5b351
--- /dev/null
+++ b/configs/vexpress_ca15_tc2_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_VEXPRESS_CA15_TC2=y
diff --git a/configs/vexpress_ca5x2_defconfig b/configs/vexpress_ca5x2_defconfig
new file mode 100644
index 0000000..fafed03
--- /dev/null
+++ b/configs/vexpress_ca5x2_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_VEXPRESS_CA5X2=y
diff --git a/configs/vexpress_ca9x4_defconfig b/configs/vexpress_ca9x4_defconfig
new file mode 100644
index 0000000..1ff2ebf
--- /dev/null
+++ b/configs/vexpress_ca9x4_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_VEXPRESS_CA9X4=y
diff --git a/configs/vf610twr_defconfig b/configs/vf610twr_defconfig
new file mode 100644
index 0000000..10e6432
--- /dev/null
+++ b/configs/vf610twr_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/vf610twr/imximage.cfg"
+CONFIG_ARM=y
+CONFIG_TARGET_VF610TWR=y
diff --git a/configs/virtlab2_defconfig b/configs/virtlab2_defconfig
new file mode 100644
index 0000000..3eb3993
--- /dev/null
+++ b/configs/virtlab2_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_VIRTLAB2=y
diff --git a/configs/vision2_defconfig b/configs/vision2_defconfig
new file mode 100644
index 0000000..430dbc0
--- /dev/null
+++ b/configs/vision2_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/ttcontrol/vision2/imximage_hynix.cfg"
+CONFIG_ARM=y
+CONFIG_TARGET_VISION2=y
diff --git a/configs/vl_ma2sc_defconfig b/configs/vl_ma2sc_defconfig
new file mode 100644
index 0000000..39cd725
--- /dev/null
+++ b/configs/vl_ma2sc_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_VL_MA2SC=y
diff --git a/configs/vl_ma2sc_ram_defconfig b/configs/vl_ma2sc_ram_defconfig
new file mode 100644
index 0000000..70a07ab
--- /dev/null
+++ b/configs/vl_ma2sc_ram_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="RAMLOAD"
+CONFIG_ARM=y
+CONFIG_TARGET_VL_MA2SC=y
diff --git a/configs/vme8349_defconfig b/configs/vme8349_defconfig
new file mode 100644
index 0000000..8df2cfd
--- /dev/null
+++ b/configs/vme8349_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC83xx=y
+CONFIG_TARGET_VME8349=y
diff --git a/configs/vpac270_nor_128_defconfig b/configs/vpac270_nor_128_defconfig
new file mode 100644
index 0000000..74609ab
--- /dev/null
+++ b/configs/vpac270_nor_128_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="NOR,RAM_128M"
+CONFIG_ARM=y
+CONFIG_TARGET_VPAC270=y
diff --git a/configs/vpac270_nor_256_defconfig b/configs/vpac270_nor_256_defconfig
new file mode 100644
index 0000000..d6163ef
--- /dev/null
+++ b/configs/vpac270_nor_256_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="NOR,RAM_256M"
+CONFIG_ARM=y
+CONFIG_TARGET_VPAC270=y
diff --git a/configs/vpac270_ond_256_defconfig b/configs/vpac270_ond_256_defconfig
new file mode 100644
index 0000000..2a536a5
--- /dev/null
+++ b/configs/vpac270_ond_256_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="ONENAND,RAM_256M"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_VPAC270=y
diff --git a/configs/walnut_defconfig b/configs/walnut_defconfig
new file mode 100644
index 0000000..844e67f
--- /dev/null
+++ b/configs/walnut_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_WALNUT=y
diff --git a/configs/wandboard_dl_defconfig b/configs/wandboard_dl_defconfig
new file mode 100644
index 0000000..5a1f7f5
--- /dev/null
+++ b/configs/wandboard_dl_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6dl.cfg,MX6DL,DDR_MB=1024"
+CONFIG_ARM=y
+CONFIG_TARGET_WANDBOARD=y
diff --git a/configs/wandboard_quad_defconfig b/configs/wandboard_quad_defconfig
new file mode 100644
index 0000000..d940848
--- /dev/null
+++ b/configs/wandboard_quad_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q2g.cfg,MX6Q,DDR_MB=2048"
+CONFIG_ARM=y
+CONFIG_TARGET_WANDBOARD=y
diff --git a/configs/wandboard_solo_defconfig b/configs/wandboard_solo_defconfig
new file mode 100644
index 0000000..66aa5d3
--- /dev/null
+++ b/configs/wandboard_solo_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6s.cfg,MX6S,DDR_MB=512"
+CONFIG_ARM=y
+CONFIG_TARGET_WANDBOARD=y
diff --git a/configs/whistler_defconfig b/configs/whistler_defconfig
new file mode 100644
index 0000000..cdc2c90
--- /dev/null
+++ b/configs/whistler_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_WHISTLER=y
diff --git a/configs/wireless_space_defconfig b/configs/wireless_space_defconfig
new file mode 100644
index 0000000..6c78548
--- /dev/null
+++ b/configs/wireless_space_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_WIRELESS_SPACE=y
diff --git a/configs/woodburn_defconfig b/configs/woodburn_defconfig
new file mode 100644
index 0000000..9f96bd9
--- /dev/null
+++ b/configs/woodburn_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_WOODBURN=y
diff --git a/configs/woodburn_sd_defconfig b/configs/woodburn_sd_defconfig
new file mode 100644
index 0000000..d3dcb3c
--- /dev/null
+++ b/configs/woodburn_sd_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/woodburn/imximage.cfg"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_WOODBURN_SD=y
diff --git a/configs/wtk_defconfig b/configs/wtk_defconfig
new file mode 100644
index 0000000..2ccddc1
--- /dev/null
+++ b/configs/wtk_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="LCD,SHARP_LQ065T9DR51U"
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_TQM823L=y
diff --git a/configs/x600_defconfig b/configs/x600_defconfig
new file mode 100644
index 0000000..cb66890
--- /dev/null
+++ b/configs/x600_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_X600=y
diff --git a/configs/xaeniax_defconfig b/configs/xaeniax_defconfig
new file mode 100644
index 0000000..52e301c
--- /dev/null
+++ b/configs/xaeniax_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_XAENIAX=y
diff --git a/configs/xfi3_defconfig b/configs/xfi3_defconfig
new file mode 100644
index 0000000..737db40
--- /dev/null
+++ b/configs/xfi3_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_XFI3=y
diff --git a/configs/xilinx-ppc405-generic_defconfig b/configs/xilinx-ppc405-generic_defconfig
new file mode 100644
index 0000000..691412c
--- /dev/null
+++ b/configs/xilinx-ppc405-generic_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0x04000000,RESET_VECTOR_ADDRESS=0x04100000"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_XILINX_PPC405_GENERIC=y
diff --git a/configs/xilinx-ppc405-generic_flash_defconfig b/configs/xilinx-ppc405-generic_flash_defconfig
new file mode 100644
index 0000000..317b63d
--- /dev/null
+++ b/configs/xilinx-ppc405-generic_flash_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0xF7F60000,RESET_VECTOR_ADDRESS=0xF7FFFFFC"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_XILINX_PPC405_GENERIC=y
diff --git a/configs/xilinx-ppc440-generic_defconfig b/configs/xilinx-ppc440-generic_defconfig
new file mode 100644
index 0000000..31ce75b
--- /dev/null
+++ b/configs/xilinx-ppc440-generic_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0x04000000,RESET_VECTOR_ADDRESS=0x04100000,BOOT_FROM_XMD=1"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_XILINX_PPC440_GENERIC=y
diff --git a/configs/xilinx-ppc440-generic_flash_defconfig b/configs/xilinx-ppc440-generic_flash_defconfig
new file mode 100644
index 0000000..635926f
--- /dev/null
+++ b/configs/xilinx-ppc440-generic_flash_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0xF7F60000,RESET_VECTOR_ADDRESS=0xF7FFFFFC"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_XILINX_PPC440_GENERIC=y
diff --git a/configs/xpedite1000_defconfig b/configs/xpedite1000_defconfig
new file mode 100644
index 0000000..635da26
--- /dev/null
+++ b/configs/xpedite1000_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_XPEDITE1000=y
diff --git a/configs/xpedite517x_defconfig b/configs/xpedite517x_defconfig
new file mode 100644
index 0000000..b8513c1
--- /dev/null
+++ b/configs/xpedite517x_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC86xx=y
+CONFIG_TARGET_XPEDITE517X=y
diff --git a/configs/xpedite520x_defconfig b/configs/xpedite520x_defconfig
new file mode 100644
index 0000000..d5f526d
--- /dev/null
+++ b/configs/xpedite520x_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_XPEDITE520X=y
diff --git a/configs/xpedite537x_defconfig b/configs/xpedite537x_defconfig
new file mode 100644
index 0000000..8001dd1
--- /dev/null
+++ b/configs/xpedite537x_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_XPEDITE537X=y
diff --git a/configs/xpedite550x_defconfig b/configs/xpedite550x_defconfig
new file mode 100644
index 0000000..dc33ca9
--- /dev/null
+++ b/configs/xpedite550x_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_XPEDITE550X=y
diff --git a/configs/yellowstone_defconfig b/configs/yellowstone_defconfig
new file mode 100644
index 0000000..843095b
--- /dev/null
+++ b/configs/yellowstone_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="YELLOWSTONE"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_YOSEMITE=y
diff --git a/configs/yosemite_defconfig b/configs/yosemite_defconfig
new file mode 100644
index 0000000..d5eea68
--- /dev/null
+++ b/configs/yosemite_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SYS_EXTRA_OPTIONS="YOSEMITE"
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_YOSEMITE=y
diff --git a/configs/yucca_defconfig b/configs/yucca_defconfig
new file mode 100644
index 0000000..6c8e20a
--- /dev/null
+++ b/configs/yucca_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_YUCCA=y
diff --git a/configs/zeus_defconfig b/configs/zeus_defconfig
new file mode 100644
index 0000000..546f10a
--- /dev/null
+++ b/configs/zeus_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_ZEUS=y
diff --git a/configs/zipitz2_defconfig b/configs/zipitz2_defconfig
new file mode 100644
index 0000000..8d921a0
--- /dev/null
+++ b/configs/zipitz2_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_ZIPITZ2=y
diff --git a/configs/zmx25_defconfig b/configs/zmx25_defconfig
new file mode 100644
index 0000000..80a66d0
--- /dev/null
+++ b/configs/zmx25_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_ZMX25=y
diff --git a/configs/zynq_microzed_defconfig b/configs/zynq_microzed_defconfig
new file mode 100644
index 0000000..14024d0
--- /dev/null
+++ b/configs/zynq_microzed_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_ZYNQ_MICROZED=y
diff --git a/configs/zynq_zc70x_defconfig b/configs/zynq_zc70x_defconfig
new file mode 100644
index 0000000..d2e79a5
--- /dev/null
+++ b/configs/zynq_zc70x_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_ZYNQ_ZC70X=y
diff --git a/configs/zynq_zc770_xm010_defconfig b/configs/zynq_zc770_xm010_defconfig
new file mode 100644
index 0000000..e9f9c4b
--- /dev/null
+++ b/configs/zynq_zc770_xm010_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="ZC770_XM010"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_ZYNQ_ZC770=y
diff --git a/configs/zynq_zc770_xm012_defconfig b/configs/zynq_zc770_xm012_defconfig
new file mode 100644
index 0000000..78f1fe6
--- /dev/null
+++ b/configs/zynq_zc770_xm012_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="ZC770_XM012"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_ZYNQ_ZC770=y
diff --git a/configs/zynq_zc770_xm013_defconfig b/configs/zynq_zc770_xm013_defconfig
new file mode 100644
index 0000000..d96e8ff
--- /dev/null
+++ b/configs/zynq_zc770_xm013_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="ZC770_XM013"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_ZYNQ_ZC770=y
diff --git a/configs/zynq_zed_defconfig b/configs/zynq_zed_defconfig
new file mode 100644
index 0000000..abf7e82
--- /dev/null
+++ b/configs/zynq_zed_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_ZYNQ_ZED=y
diff --git a/doc/README.SPL b/doc/README.SPL
index 57a39a4..2b4b0b8 100644
--- a/doc/README.SPL
+++ b/doc/README.SPL
@@ -40,7 +40,7 @@ COBJS-$(CONFIG_SPL_BUILD) += foo.o
The building of SPL images can be with:
-#define CONFIG_SPL
+#define CONFIG_SPL 1
Because SPL images normally have a different text base, one has to be
configured by defining CONFIG_SPL_TEXT_BASE. The linker script has to be
diff --git a/doc/README.nand b/doc/README.nand
index 70cf768..e29188f 100644
--- a/doc/README.nand
+++ b/doc/README.nand
@@ -89,6 +89,10 @@ Commands:
Configuration Options:
+ CONFIG_SYS_NAND_U_BOOT_OFFS
+ NAND Offset from where SPL will read u-boot image. This is the starting
+ address of u-boot MTD partition in NAND.
+
CONFIG_CMD_NAND
Enables NAND support and commmands.
@@ -226,6 +230,14 @@ Platform specific options
detection. However ECC calculation on such plaforms would still be
done by GPMC controller.
+ CONFIG_SPL_NAND_AM33XX_BCH
+ Enables SPL-NAND driver (am335x_spl_bch.c) which supports ELM based
+ hardware ECC correction. This is useful for platforms which have ELM
+ hardware engine and use NAND boot mode.
+ Some legacy platforms like OMAP3xx do not have in-built ELM h/w engine,
+ so those platforms should use CONFIG_SPL_NAND_SIMPLE for enabling
+ SPL-NAND driver with software ECC correction support.
+
CONFIG_NAND_OMAP_ECCSCHEME
On OMAP platforms, this CONFIG specifies NAND ECC scheme.
It can take following values:
diff --git a/doc/driver-model/README.txt b/doc/driver-model/README.txt
index 22c3fcb..f9b68be 100644
--- a/doc/driver-model/README.txt
+++ b/doc/driver-model/README.txt
@@ -95,26 +95,37 @@ are provided in test/dm. To run them, try:
You should see something like this:
<...U-Boot banner...>
- Running 12 driver model tests
+ Running 21 driver model tests
Test: dm_test_autobind
Test: dm_test_autoprobe
+ Test: dm_test_bus_children
+ Device 'd-test': seq 3 is in use by 'b-test'
+ Device 'c-test@0': seq 0 is in use by 'a-test'
+ Device 'c-test@1': seq 1 is in use by 'd-test'
+ Test: dm_test_bus_children_funcs
+ Test: dm_test_bus_parent_data
+ Test: dm_test_bus_parent_ops
Test: dm_test_children
Test: dm_test_fdt
+ Device 'd-test': seq 3 is in use by 'b-test'
+ Test: dm_test_fdt_offset
+ Test: dm_test_fdt_pre_reloc
+ Test: dm_test_fdt_uclass_seq
+ Device 'd-test': seq 3 is in use by 'b-test'
+ Device 'a-test': seq 0 is in use by 'd-test'
Test: dm_test_gpio
sandbox_gpio: sb_gpio_get_value: error: offset 4 not reserved
Test: dm_test_leak
- Warning: Please add '#define DEBUG' to the top of common/dlmalloc.c
- Warning: Please add '#define DEBUG' to the top of common/dlmalloc.c
Test: dm_test_lifecycle
Test: dm_test_operations
Test: dm_test_ordering
Test: dm_test_platdata
+ Test: dm_test_pre_reloc
Test: dm_test_remove
Test: dm_test_uclass
+ Test: dm_test_uclass_before_ready
Failures: 0
-(You can add '#define DEBUG' as suggested to check for memory leaks)
-
What is going on?
-----------------
@@ -341,6 +352,145 @@ numbering comes from include/dm/uclass.h. To add a new uclass, add to the
end of the enum there, then declare your uclass as above.
+Device Sequence Numbers
+-----------------------
+
+U-Boot numbers devices from 0 in many situations, such as in the command
+line for I2C and SPI buses, and the device names for serial ports (serial0,
+serial1, ...). Driver model supports this numbering and permits devices
+to be locating by their 'sequence'.
+
+Sequence numbers start from 0 but gaps are permitted. For example, a board
+may have I2C buses 0, 1, 4, 5 but no 2 or 3. The choice of how devices are
+numbered is up to a particular board, and may be set by the SoC in some
+cases. While it might be tempting to automatically renumber the devices
+where there are gaps in the sequence, this can lead to confusion and is
+not the way that U-Boot works.
+
+Each device can request a sequence number. If none is required then the
+device will be automatically allocated the next available sequence number.
+
+To specify the sequence number in the device tree an alias is typically
+used.
+
+aliases {
+ serial2 = "/serial@22230000";
+};
+
+This indicates that in the uclass called "serial", the named node
+("/serial@22230000") will be given sequence number 2. Any command or driver
+which requests serial device 2 will obtain this device.
+
+Some devices represent buses where the devices on the bus are numbered or
+addressed. For example, SPI typically numbers its slaves from 0, and I2C
+uses a 7-bit address. In these cases the 'reg' property of the subnode is
+used, for example:
+
+{
+ aliases {
+ spi2 = "/spi@22300000";
+ };
+
+ spi@22300000 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ spi-flash@0 {
+ reg = <0>;
+ ...
+ }
+ eeprom@1 {
+ reg = <1>;
+ };
+ };
+
+In this case we have a SPI bus with two slaves at 0 and 1. The SPI bus
+itself is numbered 2. So we might access the SPI flash with:
+
+ sf probe 2:0
+
+and the eeprom with
+
+ sspi 2:1 32 ef
+
+These commands simply need to look up the 2nd device in the SPI uclass to
+find the right SPI bus. Then, they look at the children of that bus for the
+right sequence number (0 or 1 in this case).
+
+Typically the alias method is used for top-level nodes and the 'reg' method
+is used only for buses.
+
+Device sequence numbers are resolved when a device is probed. Before then
+the sequence number is only a request which may or may not be honoured,
+depending on what other devices have been probed. However the numbering is
+entirely under the control of the board author so a conflict is generally
+an error.
+
+
+Bus Drivers
+-----------
+
+A common use of driver model is to implement a bus, a device which provides
+access to other devices. Example of buses include SPI and I2C. Typically
+the bus provides some sort of transport or translation that makes it
+possible to talk to the devices on the bus.
+
+Driver model provides a few useful features to help with implementing
+buses. Firstly, a bus can request that its children store some 'parent
+data' which can be used to keep track of child state. Secondly, the bus can
+define methods which are called when a child is probed or removed. This is
+similar to the methods the uclass driver provides.
+
+Here an explanation of how a bus fits with a uclass may be useful. Consider
+a USB bus with several devices attached to it, each from a different (made
+up) uclass:
+
+ xhci_usb (UCLASS_USB)
+ eth (UCLASS_ETHERNET)
+ camera (UCLASS_CAMERA)
+ flash (UCLASS_FLASH_STORAGE)
+
+Each of the devices is connected to a different address on the USB bus.
+The bus device wants to store this address and some other information such
+as the bus speed for each device.
+
+To achieve this, the bus device can use dev->parent_priv in each of its
+three children. This can be auto-allocated if the bus driver has a non-zero
+value for per_child_auto_alloc_size. If not, then the bus device can
+allocate the space itself before the child device is probed.
+
+Also the bus driver can define the child_pre_probe() and child_post_remove()
+methods to allow it to do some processing before the child is activated or
+after it is deactivated.
+
+Note that the information that controls this behaviour is in the bus's
+driver, not the child's. In fact it is possible that child has no knowledge
+that it is connected to a bus. The same child device may even be used on two
+different bus types. As an example. the 'flash' device shown above may also
+be connected on a SATA bus or standalone with no bus:
+
+ xhci_usb (UCLASS_USB)
+ flash (UCLASS_FLASH_STORAGE) - parent data/methods defined by USB bus
+
+ sata (UCLASS_SATA)
+ flash (UCLASS_FLASH_STORAGE) - parent data/methods defined by SATA bus
+
+ flash (UCLASS_FLASH_STORAGE) - no parent data/methods (not on a bus)
+
+Above you can see that the driver for xhci_usb/sata controls the child's
+bus methods. In the third example the device is not on a bus, and therefore
+will not have these methods at all. Consider the case where the flash
+device defines child methods. These would be used for *its* children, and
+would be quite separate from the methods defined by the driver for the bus
+that the flash device is connetced to. The act of attaching a device to a
+parent device which is a bus, causes the device to start behaving like a
+bus device, regardless of its own views on the matter.
+
+The uclass for the device can also contain data private to that uclass.
+But note that each device on the bus may be a memeber of a different
+uclass, and this data has nothing to do with the child data for each child
+on the bus.
+
+
Driver Lifecycle
----------------
@@ -406,12 +556,23 @@ steps (see device_probe()):
stored in the device, but it is uclass data. owned by the uclass driver.
It is possible for the device to access it.
- d. All parent devices are probed. It is not possible to activate a device
+ d. If the device's immediate parent specifies a per_child_auto_alloc_size
+ then this space is allocated. This is intended for use by the parent
+ device to keep track of things related to the child. For example a USB
+ flash stick attached to a USB host controller would likely use this
+ space. The controller can hold information about the USB state of each
+ of its children.
+
+ e. All parent devices are probed. It is not possible to activate a device
unless its predecessors (all the way up to the root device) are activated.
This means (for example) that an I2C driver will require that its bus
be activated.
- e. If the driver provides an ofdata_to_platdata() method, then this is
+ f. The device's sequence number is assigned, either the requested one
+ (assuming no conflicts) or the next available one if there is a conflict
+ or nothing particular is requested.
+
+ g. If the driver provides an ofdata_to_platdata() method, then this is
called to convert the device tree data into platform data. This should
do various calls like fdtdec_get_int(gd->fdt_blob, dev->of_offset, ...)
to access the node and store the resulting information into dev->platdata.
@@ -427,7 +588,7 @@ steps (see device_probe()):
data, one day it is possible that U-Boot will cache platformat data for
devices which are regularly de/activated).
- f. The device's probe() method is called. This should do anything that
+ h. The device's probe() method is called. This should do anything that
is required by the device to get it going. This could include checking
that the hardware is actually present, setting up clocks for the
hardware and setting up hardware registers to initial values. The code
@@ -442,9 +603,9 @@ steps (see device_probe()):
allocate the priv space here yourself. The same applies also to
platdata_auto_alloc_size. Remember to free them in the remove() method.
- g. The device is marked 'activated'
+ i. The device is marked 'activated'
- h. The uclass's post_probe() method is called, if one exists. This may
+ j. The uclass's post_probe() method is called, if one exists. This may
cause the uclass to do some housekeeping to record the device as
activated and 'known' by the uclass.
@@ -475,7 +636,8 @@ remove it. This performs the probe steps in reverse:
to be sure that no hardware is running, it should be enough to remove
all devices.
- d. The device memory is freed (platform data, private data, uclass data).
+ d. The device memory is freed (platform data, private data, uclass data,
+ parent data).
Note: Because the platform data for a U_BOOT_DEVICE() is defined with a
static pointer, it is not de-allocated during the remove() method. For
@@ -490,7 +652,14 @@ remove it. This performs the probe steps in reverse:
or preferably ofdata_to_platdata()) and the deallocation in remove()
are the responsibility of the driver author.
- e. The device is marked inactive. Note that it is still bound, so the
+ e. The device sequence number is set to -1, meaning that it no longer
+ has an allocated sequence. If the device is later reactivated and that
+ sequence number is still free, it may well receive the name sequence
+ number again. But from this point, the sequence number previously used
+ by this device will no longer exist (think of SPI bus 2 being removed
+ and bus 2 is no longer available for use).
+
+ f. The device is marked inactive. Note that it is still bound, so the
device structure itself is not freed at this point. Should the device be
activated again, then the cycle starts again at step 2 above.
@@ -538,26 +707,35 @@ dealing with this might not be worth it.
- Implemented a GPIO system, trying to keep it simple
+Pre-Relocation Support
+----------------------
+
+For pre-relocation we simply call the driver model init function. Only
+drivers marked with DM_FLAG_PRE_RELOC or the device tree
+'u-boot,dm-pre-reloc' flag are initialised prior to relocation. This helps
+to reduce the driver model overhead.
+
+Then post relocation we throw that away and re-init driver model again.
+For drivers which require some sort of continuity between pre- and
+post-relocation devices, we can provide access to the pre-relocation
+device pointers, but this is not currently implemented (the root device
+pointer is saved but not made available through the driver model API).
+
+
Things to punt for later
------------------------
- SPL support - this will have to be present before many drivers can be
converted, but it seems like we can add it once we are happy with the
core implementation.
-- Pre-relocation support - similar story
-That is not to say that no thinking has gone into these - in fact there
+That is not to say that no thinking has gone into this - in fact there
is quite a lot there. However, getting these right is non-trivial and
there is a high cost associated with going down the wrong path.
For SPL, it may be possible to fit in a simplified driver model with only
bind and probe methods, to reduce size.
-For pre-relocation we can simply call the driver model init function. Then
-post relocation we throw that away and re-init driver model again. For drivers
-which require some sort of continuity between pre- and post-relocation
-devices, we can provide access to the pre-relocation device pointers.
-
Uclasses are statically numbered at compile time. It would be possible to
change this to dynamic numbering, but then we would require some sort of
lookup service, perhaps searching by name. This is slightly less efficient
diff --git a/drivers/core/device.c b/drivers/core/device.c
index c73c339..166b073 100644
--- a/drivers/core/device.c
+++ b/drivers/core/device.c
@@ -10,6 +10,7 @@
*/
#include <common.h>
+#include <fdtdec.h>
#include <malloc.h>
#include <dm/device.h>
#include <dm/device-internal.h>
@@ -21,6 +22,8 @@
#include <linux/err.h>
#include <linux/list.h>
+DECLARE_GLOBAL_DATA_PTR;
+
/**
* device_chld_unbind() - Unbind all device's children from the device
*
@@ -95,6 +98,21 @@ int device_bind(struct udevice *parent, struct driver *drv, const char *name,
dev->parent = parent;
dev->driver = drv;
dev->uclass = uc;
+
+ /*
+ * For some devices, such as a SPI or I2C bus, the 'reg' property
+ * is a reasonable indicator of the sequence number. But if there is
+ * an alias, we use that in preference. In any case, this is just
+ * a 'requested' sequence, and will be resolved (and ->seq updated)
+ * when the device is probed.
+ */
+ dev->req_seq = fdtdec_get_int(gd->fdt_blob, of_offset, "reg", -1);
+ dev->seq = -1;
+ if (uc->uc_drv->name && of_offset != -1) {
+ fdtdec_get_alias_seq(gd->fdt_blob, uc->uc_drv->name, of_offset,
+ &dev->req_seq);
+ }
+
if (!dev->platdata && drv->platdata_auto_alloc_size)
dev->flags |= DM_FLAG_ALLOC_PDATA;
@@ -129,14 +147,16 @@ fail_bind:
return ret;
}
-int device_bind_by_name(struct udevice *parent, const struct driver_info *info,
- struct udevice **devp)
+int device_bind_by_name(struct udevice *parent, bool pre_reloc_only,
+ const struct driver_info *info, struct udevice **devp)
{
struct driver *drv;
drv = lists_driver_lookup_name(info->name);
if (!drv)
return -ENOENT;
+ if (pre_reloc_only && !(drv->flags & DM_FLAG_PRE_RELOC))
+ return -EPERM;
return device_bind(parent, drv, info->name, (void *)info->platdata,
-1, devp);
@@ -198,6 +218,13 @@ static void device_free(struct udevice *dev)
free(dev->uclass_priv);
dev->uclass_priv = NULL;
}
+ if (dev->parent) {
+ size = dev->parent->driver->per_child_auto_alloc_size;
+ if (size) {
+ free(dev->parent_priv);
+ dev->parent_priv = NULL;
+ }
+ }
}
int device_probe(struct udevice *dev)
@@ -205,6 +232,7 @@ int device_probe(struct udevice *dev)
struct driver *drv;
int size = 0;
int ret;
+ int seq;
if (!dev)
return -EINVAL;
@@ -242,11 +270,33 @@ int device_probe(struct udevice *dev)
/* Ensure all parents are probed */
if (dev->parent) {
+ size = dev->parent->driver->per_child_auto_alloc_size;
+ if (size) {
+ dev->parent_priv = calloc(1, size);
+ if (!dev->parent_priv) {
+ ret = -ENOMEM;
+ goto fail;
+ }
+ }
+
ret = device_probe(dev->parent);
if (ret)
goto fail;
}
+ seq = uclass_resolve_seq(dev);
+ if (seq < 0) {
+ ret = seq;
+ goto fail;
+ }
+ dev->seq = seq;
+
+ if (dev->parent && dev->parent->driver->child_pre_probe) {
+ ret = dev->parent->driver->child_pre_probe(dev);
+ if (ret)
+ goto fail;
+ }
+
if (drv->ofdata_to_platdata && dev->of_offset >= 0) {
ret = drv->ofdata_to_platdata(dev);
if (ret)
@@ -274,6 +324,7 @@ fail_uclass:
__func__, dev->name);
}
fail:
+ dev->seq = -1;
device_free(dev);
return ret;
@@ -307,11 +358,20 @@ int device_remove(struct udevice *dev)
goto err_remove;
}
+ if (dev->parent && dev->parent->driver->child_post_remove) {
+ ret = dev->parent->driver->child_post_remove(dev);
+ if (ret) {
+ dm_warn("%s: Device '%s' failed child_post_remove()",
+ __func__, dev->name);
+ }
+ }
+
device_free(dev);
+ dev->seq = -1;
dev->flags &= ~DM_FLAG_ACTIVATED;
- return 0;
+ return ret;
err_remove:
/* We can't put the children back */
@@ -346,3 +406,106 @@ void *dev_get_priv(struct udevice *dev)
return dev->priv;
}
+
+void *dev_get_parentdata(struct udevice *dev)
+{
+ if (!dev) {
+ dm_warn("%s: null device", __func__);
+ return NULL;
+ }
+
+ return dev->parent_priv;
+}
+
+static int device_get_device_tail(struct udevice *dev, int ret,
+ struct udevice **devp)
+{
+ if (ret)
+ return ret;
+
+ ret = device_probe(dev);
+ if (ret)
+ return ret;
+
+ *devp = dev;
+
+ return 0;
+}
+
+int device_get_child(struct udevice *parent, int index, struct udevice **devp)
+{
+ struct udevice *dev;
+
+ list_for_each_entry(dev, &parent->child_head, sibling_node) {
+ if (!index--)
+ return device_get_device_tail(dev, 0, devp);
+ }
+
+ return -ENODEV;
+}
+
+int device_find_child_by_seq(struct udevice *parent, int seq_or_req_seq,
+ bool find_req_seq, struct udevice **devp)
+{
+ struct udevice *dev;
+
+ *devp = NULL;
+ if (seq_or_req_seq == -1)
+ return -ENODEV;
+
+ list_for_each_entry(dev, &parent->child_head, sibling_node) {
+ if ((find_req_seq ? dev->req_seq : dev->seq) ==
+ seq_or_req_seq) {
+ *devp = dev;
+ return 0;
+ }
+ }
+
+ return -ENODEV;
+}
+
+int device_get_child_by_seq(struct udevice *parent, int seq,
+ struct udevice **devp)
+{
+ struct udevice *dev;
+ int ret;
+
+ *devp = NULL;
+ ret = device_find_child_by_seq(parent, seq, false, &dev);
+ if (ret == -ENODEV) {
+ /*
+ * We didn't find it in probed devices. See if there is one
+ * that will request this seq if probed.
+ */
+ ret = device_find_child_by_seq(parent, seq, true, &dev);
+ }
+ return device_get_device_tail(dev, ret, devp);
+}
+
+int device_find_child_by_of_offset(struct udevice *parent, int of_offset,
+ struct udevice **devp)
+{
+ struct udevice *dev;
+
+ *devp = NULL;
+
+ list_for_each_entry(dev, &parent->child_head, sibling_node) {
+ if (dev->of_offset == of_offset) {
+ *devp = dev;
+ return 0;
+ }
+ }
+
+ return -ENODEV;
+}
+
+int device_get_child_by_of_offset(struct udevice *parent, int seq,
+ struct udevice **devp)
+{
+ struct udevice *dev;
+ int ret;
+
+ *devp = NULL;
+ ret = device_find_child_by_of_offset(parent, seq, &dev);
+ return device_get_device_tail(dev, ret, devp);
+}
diff --git a/drivers/core/lists.c b/drivers/core/lists.c
index 87164a5..0f08bfd 100644
--- a/drivers/core/lists.c
+++ b/drivers/core/lists.c
@@ -62,7 +62,7 @@ struct uclass_driver *lists_uclass_lookup(enum uclass_id id)
return NULL;
}
-int lists_bind_drivers(struct udevice *parent)
+int lists_bind_drivers(struct udevice *parent, bool pre_reloc_only)
{
struct driver_info *info =
ll_entry_start(struct driver_info, driver_info);
@@ -73,8 +73,8 @@ int lists_bind_drivers(struct udevice *parent)
int ret;
for (entry = info; entry != info + n_ents; entry++) {
- ret = device_bind_by_name(parent, entry, &dev);
- if (ret) {
+ ret = device_bind_by_name(parent, pre_reloc_only, entry, &dev);
+ if (ret && ret != -EPERM) {
dm_warn("No match for driver '%s'\n", entry->name);
if (!result || ret != -ENOENT)
result = ret;
@@ -124,16 +124,19 @@ int lists_bind_fdt(struct udevice *parent, const void *blob, int offset)
const int n_ents = ll_entry_count(struct driver, driver);
struct driver *entry;
struct udevice *dev;
+ bool found = false;
const char *name;
int result = 0;
- int ret;
+ int ret = 0;
dm_dbg("bind node %s\n", fdt_get_name(blob, offset, NULL));
for (entry = driver; entry != driver + n_ents; entry++) {
ret = driver_check_compatible(blob, offset, entry->of_match);
+ name = fdt_get_name(blob, offset, NULL);
if (ret == -ENOENT) {
continue;
} else if (ret == -ENODEV) {
+ dm_dbg("Device '%s' has no compatible string\n", name);
break;
} else if (ret) {
dm_warn("Device tree error at offset %d\n", offset);
@@ -142,14 +145,21 @@ int lists_bind_fdt(struct udevice *parent, const void *blob, int offset)
break;
}
- name = fdt_get_name(blob, offset, NULL);
dm_dbg(" - found match at '%s'\n", entry->name);
ret = device_bind(parent, entry, name, NULL, offset, &dev);
if (ret) {
- dm_warn("No match for driver '%s'\n", entry->name);
+ dm_warn("Error binding driver '%s'\n", entry->name);
if (!result || ret != -ENOENT)
result = ret;
+ } else {
+ found = true;
}
+ break;
+ }
+
+ if (!found && !result && ret != -ENODEV) {
+ dm_dbg("No match for node '%s'\n",
+ fdt_get_name(blob, offset, NULL));
}
return result;
diff --git a/drivers/core/root.c b/drivers/core/root.c
index 11e0879..393dd98 100644
--- a/drivers/core/root.c
+++ b/drivers/core/root.c
@@ -46,18 +46,29 @@ int dm_init(void)
}
INIT_LIST_HEAD(&DM_UCLASS_ROOT_NON_CONST);
- ret = device_bind_by_name(NULL, &root_info, &DM_ROOT_NON_CONST);
+ ret = device_bind_by_name(NULL, false, &root_info, &DM_ROOT_NON_CONST);
if (ret)
return ret;
+ ret = device_probe(DM_ROOT_NON_CONST);
+ if (ret)
+ return ret;
+
+ return 0;
+}
+
+int dm_uninit(void)
+{
+ device_remove(dm_root());
+ device_unbind(dm_root());
return 0;
}
-int dm_scan_platdata(void)
+int dm_scan_platdata(bool pre_reloc_only)
{
int ret;
- ret = lists_bind_drivers(DM_ROOT_NON_CONST);
+ ret = lists_bind_drivers(DM_ROOT_NON_CONST, pre_reloc_only);
if (ret == -ENOENT) {
dm_warn("Some drivers were not found\n");
ret = 0;
@@ -69,27 +80,66 @@ int dm_scan_platdata(void)
}
#ifdef CONFIG_OF_CONTROL
-int dm_scan_fdt(const void *blob)
+int dm_scan_fdt_node(struct udevice *parent, const void *blob, int offset,
+ bool pre_reloc_only)
{
- int offset = 0;
int ret = 0, err;
- int depth = 0;
- do {
- offset = fdt_next_node(blob, offset, &depth);
- if (offset > 0 && depth == 1) {
- err = lists_bind_fdt(gd->dm_root, blob, offset);
- if (err && !ret)
- ret = err;
- }
- } while (offset > 0);
+ for (offset = fdt_first_subnode(blob, offset);
+ offset > 0;
+ offset = fdt_next_subnode(blob, offset)) {
+ if (pre_reloc_only &&
+ !fdt_getprop(blob, offset, "u-boot,dm-pre-reloc", NULL))
+ continue;
+ err = lists_bind_fdt(parent, blob, offset);
+ if (err && !ret)
+ ret = err;
+ }
if (ret)
dm_warn("Some drivers failed to bind\n");
return ret;
}
+
+int dm_scan_fdt(const void *blob, bool pre_reloc_only)
+{
+ return dm_scan_fdt_node(gd->dm_root, blob, 0, pre_reloc_only);
+}
+#endif
+
+__weak int dm_scan_other(bool pre_reloc_only)
+{
+ return 0;
+}
+
+int dm_init_and_scan(bool pre_reloc_only)
+{
+ int ret;
+
+ ret = dm_init();
+ if (ret) {
+ debug("dm_init() failed: %d\n", ret);
+ return ret;
+ }
+ ret = dm_scan_platdata(pre_reloc_only);
+ if (ret) {
+ debug("dm_scan_platdata() failed: %d\n", ret);
+ return ret;
+ }
+#ifdef CONFIG_OF_CONTROL
+ ret = dm_scan_fdt(gd->fdt_blob, pre_reloc_only);
+ if (ret) {
+ debug("dm_scan_fdt() failed: %d\n", ret);
+ return ret;
+ }
#endif
+ ret = dm_scan_other(pre_reloc_only);
+ if (ret)
+ return ret;
+
+ return 0;
+}
/* This is the root driver - all drivers are children of this */
U_BOOT_DRIVER(root_driver) = {
diff --git a/drivers/core/uclass.c b/drivers/core/uclass.c
index 34723ec..61ca17e 100644
--- a/drivers/core/uclass.c
+++ b/drivers/core/uclass.c
@@ -23,6 +23,8 @@ struct uclass *uclass_find(enum uclass_id key)
{
struct uclass *uc;
+ if (!gd->dm_root)
+ return NULL;
/*
* TODO(sjg@chromium.org): Optimise this, perhaps moving the found
* node to the start of the list, or creating a linear array mapping
@@ -158,13 +160,72 @@ int uclass_find_device(enum uclass_id id, int index, struct udevice **devp)
return -ENODEV;
}
-int uclass_get_device(enum uclass_id id, int index, struct udevice **devp)
+int uclass_find_device_by_seq(enum uclass_id id, int seq_or_req_seq,
+ bool find_req_seq, struct udevice **devp)
{
+ struct uclass *uc;
struct udevice *dev;
int ret;
*devp = NULL;
- ret = uclass_find_device(id, index, &dev);
+ debug("%s: %d %d\n", __func__, find_req_seq, seq_or_req_seq);
+ if (seq_or_req_seq == -1)
+ return -ENODEV;
+ ret = uclass_get(id, &uc);
+ if (ret)
+ return ret;
+
+ list_for_each_entry(dev, &uc->dev_head, uclass_node) {
+ debug(" - %d %d\n", dev->req_seq, dev->seq);
+ if ((find_req_seq ? dev->req_seq : dev->seq) ==
+ seq_or_req_seq) {
+ *devp = dev;
+ debug(" - found\n");
+ return 0;
+ }
+ }
+ debug(" - not found\n");
+
+ return -ENODEV;
+}
+
+static int uclass_find_device_by_of_offset(enum uclass_id id, int node,
+ struct udevice **devp)
+{
+ struct uclass *uc;
+ struct udevice *dev;
+ int ret;
+
+ *devp = NULL;
+ if (node < 0)
+ return -ENODEV;
+ ret = uclass_get(id, &uc);
+ if (ret)
+ return ret;
+
+ list_for_each_entry(dev, &uc->dev_head, uclass_node) {
+ if (dev->of_offset == node) {
+ *devp = dev;
+ return 0;
+ }
+ }
+
+ return -ENODEV;
+}
+
+/**
+ * uclass_get_device_tail() - handle the end of a get_device call
+ *
+ * This handles returning an error or probing a device as needed.
+ *
+ * @dev: Device that needs to be probed
+ * @ret: Error to return. If non-zero then the device is not probed
+ * @devp: Returns the value of 'dev' if there is no error
+ * @return ret, if non-zero, else the result of the device_probe() call
+ */
+static int uclass_get_device_tail(struct udevice *dev, int ret,
+ struct udevice **devp)
+{
if (ret)
return ret;
@@ -177,6 +238,44 @@ int uclass_get_device(enum uclass_id id, int index, struct udevice **devp)
return 0;
}
+int uclass_get_device(enum uclass_id id, int index, struct udevice **devp)
+{
+ struct udevice *dev;
+ int ret;
+
+ *devp = NULL;
+ ret = uclass_find_device(id, index, &dev);
+ return uclass_get_device_tail(dev, ret, devp);
+}
+
+int uclass_get_device_by_seq(enum uclass_id id, int seq, struct udevice **devp)
+{
+ struct udevice *dev;
+ int ret;
+
+ *devp = NULL;
+ ret = uclass_find_device_by_seq(id, seq, false, &dev);
+ if (ret == -ENODEV) {
+ /*
+ * We didn't find it in probed devices. See if there is one
+ * that will request this seq if probed.
+ */
+ ret = uclass_find_device_by_seq(id, seq, true, &dev);
+ }
+ return uclass_get_device_tail(dev, ret, devp);
+}
+
+int uclass_get_device_by_of_offset(enum uclass_id id, int node,
+ struct udevice **devp)
+{
+ struct udevice *dev;
+ int ret;
+
+ *devp = NULL;
+ ret = uclass_find_device_by_of_offset(id, node, &dev);
+ return uclass_get_device_tail(dev, ret, devp);
+}
+
int uclass_first_device(enum uclass_id id, struct udevice **devp)
{
struct uclass *uc;
@@ -254,6 +353,37 @@ int uclass_unbind_device(struct udevice *dev)
return 0;
}
+int uclass_resolve_seq(struct udevice *dev)
+{
+ struct udevice *dup;
+ int seq;
+ int ret;
+
+ assert(dev->seq == -1);
+ ret = uclass_find_device_by_seq(dev->uclass->uc_drv->id, dev->req_seq,
+ false, &dup);
+ if (!ret) {
+ dm_warn("Device '%s': seq %d is in use by '%s'\n",
+ dev->name, dev->req_seq, dup->name);
+ } else if (ret == -ENODEV) {
+ /* Our requested sequence number is available */
+ if (dev->req_seq != -1)
+ return dev->req_seq;
+ } else {
+ return ret;
+ }
+
+ for (seq = 0; seq < DM_MAX_SEQ; seq++) {
+ ret = uclass_find_device_by_seq(dev->uclass->uc_drv->id, seq,
+ false, &dup);
+ if (ret == -ENODEV)
+ break;
+ if (ret)
+ return ret;
+ }
+ return seq;
+}
+
int uclass_post_probe_device(struct udevice *dev)
{
struct uclass_driver *uc_drv = dev->uclass->uc_drv;
@@ -281,6 +411,7 @@ int uclass_pre_remove_device(struct udevice *dev)
free(dev->uclass_priv);
dev->uclass_priv = NULL;
}
+ dev->seq = -1;
return 0;
}
diff --git a/drivers/demo/demo-uclass.c b/drivers/demo/demo-uclass.c
index 636fd88..f6510d6 100644
--- a/drivers/demo/demo-uclass.c
+++ b/drivers/demo/demo-uclass.c
@@ -19,6 +19,7 @@
DECLARE_GLOBAL_DATA_PTR;
UCLASS_DRIVER(demo) = {
+ .name = "demo",
.id = UCLASS_DEMO,
};
diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile
index 4e001e1..aa11f15 100644
--- a/drivers/gpio/Makefile
+++ b/drivers/gpio/Makefile
@@ -5,7 +5,9 @@
# SPDX-License-Identifier: GPL-2.0+
#
+ifndef CONFIG_SPL_BUILD
obj-$(CONFIG_DM_GPIO) += gpio-uclass.o
+endif
obj-$(CONFIG_AT91_GPIO) += at91_gpio.o
obj-$(CONFIG_INTEL_ICH6_GPIO) += intel_ich6_gpio.o
@@ -34,3 +36,4 @@ obj-$(CONFIG_XILINX_GPIO) += xilinx_gpio.o
obj-$(CONFIG_ADI_GPIO2) += adi_gpio2.o
obj-$(CONFIG_TCA642X) += tca642x.o
oby-$(CONFIG_SX151X) += sx151x.o
+obj-$(CONFIG_SUNXI_GPIO) += sunxi_gpio.o
diff --git a/drivers/gpio/sunxi_gpio.c b/drivers/gpio/sunxi_gpio.c
new file mode 100644
index 0000000..0c50a8f
--- /dev/null
+++ b/drivers/gpio/sunxi_gpio.c
@@ -0,0 +1,102 @@
+/*
+ * (C) Copyright 2012 Henrik Nordstrom <henrik@henriknordstrom.net>
+ *
+ * Based on earlier arch/arm/cpu/armv7/sunxi/gpio.c:
+ *
+ * (C) Copyright 2007-2011
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * Tom Cubie <tangliang@allwinnertech.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/gpio.h>
+
+static int sunxi_gpio_output(u32 pin, u32 val)
+{
+ u32 dat;
+ u32 bank = GPIO_BANK(pin);
+ u32 num = GPIO_NUM(pin);
+ struct sunxi_gpio *pio = BANK_TO_GPIO(bank);
+
+ dat = readl(&pio->dat);
+ if (val)
+ dat |= 0x1 << num;
+ else
+ dat &= ~(0x1 << num);
+
+ writel(dat, &pio->dat);
+
+ return 0;
+}
+
+static int sunxi_gpio_input(u32 pin)
+{
+ u32 dat;
+ u32 bank = GPIO_BANK(pin);
+ u32 num = GPIO_NUM(pin);
+ struct sunxi_gpio *pio = BANK_TO_GPIO(bank);
+
+ dat = readl(&pio->dat);
+ dat >>= num;
+
+ return dat & 0x1;
+}
+
+int gpio_request(unsigned gpio, const char *label)
+{
+ return 0;
+}
+
+int gpio_free(unsigned gpio)
+{
+ return 0;
+}
+
+int gpio_direction_input(unsigned gpio)
+{
+ sunxi_gpio_set_cfgpin(gpio, SUNXI_GPIO_INPUT);
+
+ return sunxi_gpio_input(gpio);
+}
+
+int gpio_direction_output(unsigned gpio, int value)
+{
+ sunxi_gpio_set_cfgpin(gpio, SUNXI_GPIO_OUTPUT);
+
+ return sunxi_gpio_output(gpio, value);
+}
+
+int gpio_get_value(unsigned gpio)
+{
+ return sunxi_gpio_input(gpio);
+}
+
+int gpio_set_value(unsigned gpio, int value)
+{
+ return sunxi_gpio_output(gpio, value);
+}
+
+int sunxi_name_to_gpio(const char *name)
+{
+ int group = 0;
+ int groupsize = 9 * 32;
+ long pin;
+ char *eptr;
+ if (*name == 'P' || *name == 'p')
+ name++;
+ if (*name >= 'A') {
+ group = *name - (*name > 'a' ? 'a' : 'A');
+ groupsize = 32;
+ name++;
+ }
+
+ pin = simple_strtol(name, &eptr, 10);
+ if (!*name || *eptr)
+ return -1;
+ if (pin < 0 || pin > groupsize || group >= 9)
+ return -1;
+ return group * 32 + pin;
+}
diff --git a/drivers/i2c/Makefile b/drivers/i2c/Makefile
index 96bd45d..416ea4f 100644
--- a/drivers/i2c/Makefile
+++ b/drivers/i2c/Makefile
@@ -7,7 +7,6 @@
obj-$(CONFIG_BFIN_TWI_I2C) += bfin-twi_i2c.o
obj-$(CONFIG_DW_I2C) += designware_i2c.o
-obj-$(CONFIG_I2C_MVTWSI) += mvtwsi.o
obj-$(CONFIG_I2C_MV) += mv_i2c.o
obj-$(CONFIG_I2C_MXS) += mxs_i2c.o
obj-$(CONFIG_PCA9564_I2C) += pca9564_i2c.o
@@ -20,6 +19,7 @@ obj-$(CONFIG_SYS_I2C_FSL) += fsl_i2c.o
obj-$(CONFIG_SYS_I2C_FTI2C010) += fti2c010.o
obj-$(CONFIG_SYS_I2C_IHS) += ihs_i2c.o
obj-$(CONFIG_SYS_I2C_KONA) += kona_i2c.o
+obj-$(CONFIG_SYS_I2C_MVTWSI) += mvtwsi.o
obj-$(CONFIG_SYS_I2C_MXC) += mxc_i2c.o
obj-$(CONFIG_SYS_I2C_OMAP24XX) += omap24xx_i2c.o
obj-$(CONFIG_SYS_I2C_OMAP34XX) += omap24xx_i2c.o
diff --git a/drivers/i2c/mvtwsi.c b/drivers/i2c/mvtwsi.c
index 5ba0e03..ab3ffa0 100644
--- a/drivers/i2c/mvtwsi.c
+++ b/drivers/i2c/mvtwsi.c
@@ -22,6 +22,8 @@
#include <asm/arch/orion5x.h>
#elif defined(CONFIG_KIRKWOOD)
#include <asm/arch/kirkwood.h>
+#elif defined(CONFIG_SUNXI)
+#include <asm/arch/i2c.h>
#else
#error Driver mvtwsi not supported by SoC or board
#endif
@@ -30,6 +32,20 @@
* TWSI register structure
*/
+#ifdef CONFIG_SUNXI
+
+struct mvtwsi_registers {
+ u32 slave_address;
+ u32 xtnd_slave_addr;
+ u32 data;
+ u32 control;
+ u32 status;
+ u32 baudrate;
+ u32 soft_reset;
+};
+
+#else
+
struct mvtwsi_registers {
u32 slave_address;
u32 data;
@@ -43,6 +59,8 @@ struct mvtwsi_registers {
u32 soft_reset;
};
+#endif
+
/*
* Control register fields
*/
@@ -220,11 +238,10 @@ static int twsi_stop(int status)
/*
* Reset controller.
- * Called at end of i2c_init unsuccessful i2c transactions.
* Controller reset also resets the baud rate and slave address, so
- * re-establish them.
+ * they must be re-established afterwards.
*/
-static void twsi_reset(u8 baud_rate, u8 slave_address)
+static void twsi_reset(struct i2c_adapter *adap)
{
/* ensure controller will be enabled by any twsi*() function */
twsi_control_flags = MVTWSI_CONTROL_TWSIEN;
@@ -232,23 +249,17 @@ static void twsi_reset(u8 baud_rate, u8 slave_address)
writel(0, &twsi->soft_reset);
/* wait 2 ms -- this is what the Marvell LSP does */
udelay(20000);
- /* set baud rate */
- writel(baud_rate, &twsi->baudrate);
- /* set slave address even though we don't use it */
- writel(slave_address, &twsi->slave_address);
- writel(0, &twsi->xtnd_slave_addr);
- /* assert STOP but don't care for the result */
- (void) twsi_stop(0);
}
/*
* I2C init called by cmd_i2c when doing 'i2c reset'.
* Sets baud to the highest possible value not exceeding requested one.
*/
-void i2c_init(int requested_speed, int slaveadd)
+static unsigned int twsi_i2c_set_bus_speed(struct i2c_adapter *adap,
+ unsigned int requested_speed)
{
- int tmp_speed, highest_speed, n, m;
- int baud = 0x44; /* baudrate at controller reset */
+ unsigned int tmp_speed, highest_speed, n, m;
+ unsigned int baud = 0x44; /* baudrate at controller reset */
/* use actual speed to collect progressively higher values */
highest_speed = 0;
@@ -263,8 +274,21 @@ void i2c_init(int requested_speed, int slaveadd)
}
}
}
+ writel(baud, &twsi->baudrate);
+ return 0;
+}
+
+static void twsi_i2c_init(struct i2c_adapter *adap, int speed, int slaveadd)
+{
/* reset controller */
- twsi_reset(baud, slaveadd);
+ twsi_reset(adap);
+ /* set speed */
+ twsi_i2c_set_bus_speed(adap, speed);
+ /* set slave address even though we don't use it */
+ writel(slaveadd, &twsi->slave_address);
+ writel(0, &twsi->xtnd_slave_addr);
+ /* assert STOP but don't care for the result */
+ (void) twsi_stop(0);
}
/*
@@ -294,7 +318,7 @@ static int i2c_begin(int expected_start_status, u8 addr)
* I2C probe called by cmd_i2c when doing 'i2c probe'.
* Begin read, nak data byte, end.
*/
-int i2c_probe(uchar chip)
+static int twsi_i2c_probe(struct i2c_adapter *adap, uchar chip)
{
u8 dummy_byte;
int status;
@@ -320,12 +344,13 @@ int i2c_probe(uchar chip)
* cmd_eeprom, so we have to choose here, and for the moment that'll be
* a repeated start without a preceding stop.
*/
-int i2c_read(u8 dev, uint addr, int alen, u8 *data, int length)
+static int twsi_i2c_read(struct i2c_adapter *adap, uchar chip, uint addr,
+ int alen, uchar *data, int length)
{
int status;
/* begin i2c write to send the address bytes */
- status = i2c_begin(MVTWSI_STATUS_START, (dev << 1));
+ status = i2c_begin(MVTWSI_STATUS_START, (chip << 1));
/* send addr bytes */
while ((status == 0) && alen--)
status = twsi_send(addr >> (8*alen),
@@ -333,7 +358,7 @@ int i2c_read(u8 dev, uint addr, int alen, u8 *data, int length)
/* begin i2c read to receive eeprom data bytes */
if (status == 0)
status = i2c_begin(
- MVTWSI_STATUS_REPEATED_START, (dev << 1) | 1);
+ MVTWSI_STATUS_REPEATED_START, (chip << 1) | 1);
/* prepare ACK if at least one byte must be received */
if (length > 0)
twsi_control_flags |= MVTWSI_CONTROL_ACK;
@@ -355,12 +380,13 @@ int i2c_read(u8 dev, uint addr, int alen, u8 *data, int length)
* I2C write called by cmd_i2c when doing 'i2c write' and by cmd_eeprom.c
* Begin write, send address byte(s), send data bytes, end.
*/
-int i2c_write(u8 dev, uint addr, int alen, u8 *data, int length)
+static int twsi_i2c_write(struct i2c_adapter *adap, uchar chip, uint addr,
+ int alen, uchar *data, int length)
{
int status;
/* begin i2c write to send the eeprom adress bytes then data bytes */
- status = i2c_begin(MVTWSI_STATUS_START, (dev << 1));
+ status = i2c_begin(MVTWSI_STATUS_START, (chip << 1));
/* send addr bytes */
while ((status == 0) && alen--)
status = twsi_send(addr >> (8*alen),
@@ -374,21 +400,7 @@ int i2c_write(u8 dev, uint addr, int alen, u8 *data, int length)
return status;
}
-/*
- * Bus set routine: we only support bus 0.
- */
-int i2c_set_bus_num(unsigned int bus)
-{
- if (bus > 0) {
- return -1;
- }
- return 0;
-}
-
-/*
- * Bus get routine: hard-return bus 0.
- */
-unsigned int i2c_get_bus_num(void)
-{
- return 0;
-}
+U_BOOT_I2C_ADAP_COMPLETE(twsi0, twsi_i2c_init, twsi_i2c_probe,
+ twsi_i2c_read, twsi_i2c_write,
+ twsi_i2c_set_bus_speed,
+ CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE, 0)
diff --git a/drivers/input/cros_ec_keyb.c b/drivers/input/cros_ec_keyb.c
index a2501e0..47502b1 100644
--- a/drivers/input/cros_ec_keyb.c
+++ b/drivers/input/cros_ec_keyb.c
@@ -93,7 +93,7 @@ static int check_for_keys(struct keyb *config,
*
* @return 0 if no keys available, 1 if keys are available
*/
-static int kbd_tstc(void)
+static int kbd_tstc(struct stdio_dev *dev)
{
/* Just get input to do this for us */
return config.inited ? input_tstc(&config.input) : 0;
@@ -104,7 +104,7 @@ static int kbd_tstc(void)
*
* @return ASCII key code, or 0 if no key, or -1 if error
*/
-static int kbd_getc(void)
+static int kbd_getc(struct stdio_dev *dev)
{
/* Just get input to do this for us */
return config.inited ? input_getc(&config.input) : 0;
@@ -214,7 +214,7 @@ static int cros_ec_keyb_decode_fdt(const void *blob, int node,
*
* @return 0 if ok, -1 on error
*/
-static int cros_ec_init_keyboard(void)
+static int cros_ec_init_keyboard(struct stdio_dev *dev)
{
const void *blob = gd->fdt_blob;
int node;
diff --git a/drivers/input/i8042.c b/drivers/input/i8042.c
index 35fa0bb..ca1604c 100644
--- a/drivers/input/i8042.c
+++ b/drivers/input/i8042.c
@@ -398,7 +398,7 @@ int i8042_kbd_init(void)
* i8042_tstc - test if keyboard input is available
* option: cursor blinking if called in a loop
*/
-int i8042_tstc(void)
+int i8042_tstc(struct stdio_dev *dev)
{
unsigned char scan_code = 0;
@@ -432,7 +432,7 @@ int i8042_tstc(void)
* i8042_getc - wait till keyboard input is available
* option: turn on/off cursor while waiting
*/
-int i8042_getc(void)
+int i8042_getc(struct stdio_dev *dev)
{
int ret_chr;
unsigned char scan_code;
diff --git a/drivers/input/keyboard.c b/drivers/input/keyboard.c
index 614592e..be0f333 100644
--- a/drivers/input/keyboard.c
+++ b/drivers/input/keyboard.c
@@ -70,7 +70,7 @@ static void kbd_put_queue(char data)
}
/* test if a character is in the queue */
-static int kbd_testc(void)
+static int kbd_testc(struct stdio_dev *dev)
{
#if defined(CONFIG_MPC5xxx) || defined(CONFIG_MPC8540) || defined(CONFIG_MPC8541) || defined(CONFIG_MPC8555)
/* no ISR is used, so received chars must be polled */
@@ -83,7 +83,7 @@ static int kbd_testc(void)
}
/* gets the character from the queue */
-static int kbd_getc(void)
+static int kbd_getc(struct stdio_dev *dev)
{
char c;
while(in_pointer==out_pointer) {
@@ -275,8 +275,6 @@ int kbd_init (void)
memset (&kbddev, 0, sizeof(kbddev));
strcpy(kbddev.name, DEVNAME);
kbddev.flags = DEV_FLAGS_INPUT | DEV_FLAGS_SYSTEM;
- kbddev.putc = NULL ;
- kbddev.puts = NULL ;
kbddev.getc = kbd_getc ;
kbddev.tstc = kbd_testc ;
diff --git a/drivers/input/tegra-kbc.c b/drivers/input/tegra-kbc.c
index f137f93..7e36db0 100644
--- a/drivers/input/tegra-kbc.c
+++ b/drivers/input/tegra-kbc.c
@@ -194,7 +194,7 @@ int tegra_kbc_check(struct input_config *input)
*
* @return 0 if no keys available, 1 if keys are available
*/
-static int kbd_tstc(void)
+static int kbd_tstc(struct stdio_dev *dev)
{
/* Just get input to do this for us */
return input_tstc(&config.input);
@@ -207,7 +207,7 @@ static int kbd_tstc(void)
*
* @return ASCII key code, or 0 if no key, or -1 if error
*/
-static int kbd_getc(void)
+static int kbd_getc(struct stdio_dev *dev)
{
/* Just get input to do this for us */
return input_getc(&config.input);
@@ -289,7 +289,7 @@ static void tegra_kbc_open(void)
*
* @return 0 if ok, -ve on error
*/
-static int init_tegra_keyboard(void)
+static int init_tegra_keyboard(struct stdio_dev *dev)
{
/* check if already created */
if (config.created)
diff --git a/drivers/misc/cbmem_console.c b/drivers/misc/cbmem_console.c
index 80a84fd..5f85ccf 100644
--- a/drivers/misc/cbmem_console.c
+++ b/drivers/misc/cbmem_console.c
@@ -31,7 +31,7 @@ struct cbmem_console {
static struct cbmem_console *cbmem_console_p;
-void cbmemc_putc(char data)
+void cbmemc_putc(struct stdio_dev *dev, char data)
{
int cursor;
@@ -40,12 +40,12 @@ void cbmemc_putc(char data)
cbmem_console_p->buffer_body[cursor] = data;
}
-void cbmemc_puts(const char *str)
+void cbmemc_puts(struct stdio_dev *dev, const char *str)
{
char c;
while ((c = *str++) != 0)
- cbmemc_putc(c);
+ cbmemc_putc(dev, c);
}
int cbmemc_init(void)
diff --git a/drivers/mmc/Makefile b/drivers/mmc/Makefile
index 34febf5..464cee1 100644
--- a/drivers/mmc/Makefile
+++ b/drivers/mmc/Makefile
@@ -22,6 +22,7 @@ obj-$(CONFIG_PXA_MMC_GENERIC) += pxa_mmc_gen.o
obj-$(CONFIG_SDHCI) += sdhci.o
obj-$(CONFIG_BCM2835_SDHCI) += bcm2835_sdhci.o
obj-$(CONFIG_KONA_SDHCI) += kona_sdhci.o
+obj-$(CONFIG_S3C_SDI) += s3c_sdi.o
obj-$(CONFIG_S5P_SDHCI) += s5p_sdhci.o
obj-$(CONFIG_SH_MMCIF) += sh_mmcif.o
obj-$(CONFIG_SPEAR_SDHCI) += spear_sdhci.o
@@ -37,3 +38,4 @@ obj-$(CONFIG_SPL_MMC_BOOT) += fsl_esdhc_spl.o
else
obj-$(CONFIG_GENERIC_MMC) += mmc_write.o
endif
+obj-$(CONFIG_MVEBU_MMC) += mvebu_mmc.o
diff --git a/drivers/mmc/bcm2835_sdhci.c b/drivers/mmc/bcm2835_sdhci.c
index 54cfabf..82079d6 100644
--- a/drivers/mmc/bcm2835_sdhci.c
+++ b/drivers/mmc/bcm2835_sdhci.c
@@ -179,7 +179,7 @@ int bcm2835_sdhci_init(u32 regbase, u32 emmc_freq)
host->name = "bcm2835_sdhci";
host->ioaddr = (void *)regbase;
host->quirks = SDHCI_QUIRK_BROKEN_VOLTAGE | SDHCI_QUIRK_BROKEN_R1B |
- SDHCI_QUIRK_WAIT_SEND_CMD;
+ SDHCI_QUIRK_WAIT_SEND_CMD | SDHCI_QUIRK_NO_HISPD_BIT;
host->voltages = MMC_VDD_32_33 | MMC_VDD_33_34 | MMC_VDD_165_195;
host->ops = &bcm2835_ops;
diff --git a/drivers/mmc/dw_mmc.c b/drivers/mmc/dw_mmc.c
index 5bf36a0..0df30bc 100644
--- a/drivers/mmc/dw_mmc.c
+++ b/drivers/mmc/dw_mmc.c
@@ -245,7 +245,10 @@ static int dwmci_setup_bus(struct dwmci_host *host, u32 freq)
return -EINVAL;
}
- div = DIV_ROUND_UP(sclk, 2 * freq);
+ if (sclk == freq)
+ div = 0; /* bypass mode */
+ else
+ div = DIV_ROUND_UP(sclk, 2 * freq);
dwmci_writel(host, DWMCI_CLKENA, 0);
dwmci_writel(host, DWMCI_CLKSRC, 0);
diff --git a/drivers/mmc/gen_atmel_mci.c b/drivers/mmc/gen_atmel_mci.c
index a57a9b1..45bcffb 100644
--- a/drivers/mmc/gen_atmel_mci.c
+++ b/drivers/mmc/gen_atmel_mci.c
@@ -58,30 +58,61 @@ static void mci_set_mode(struct mmc *mmc, u32 hz, u32 blklen)
atmel_mci_t *mci = mmc->priv;
u32 bus_hz = get_mci_clk_rate();
u32 clkdiv = 255;
+ unsigned int version = atmel_mci_get_version(mci);
+ u32 clkodd = 0;
+ u32 mr;
debug("mci: bus_hz is %u, setting clock %u Hz, block size %u\n",
bus_hz, hz, blklen);
if (hz > 0) {
- /* find lowest clkdiv yielding a rate <= than requested */
- for (clkdiv=0; clkdiv<255; clkdiv++) {
- if ((bus_hz / (clkdiv+1) / 2) <= hz)
- break;
+ if (version >= 0x500) {
+ clkdiv = DIV_ROUND_UP(bus_hz, hz) - 2;
+ if (clkdiv > 511)
+ clkdiv = 511;
+
+ clkodd = clkdiv & 1;
+ clkdiv >>= 1;
+
+ printf("mci: setting clock %u Hz, block size %u\n",
+ bus_hz / (clkdiv * 2 + clkodd + 2), blklen);
+ } else {
+ /* find clkdiv yielding a rate <= than requested */
+ for (clkdiv = 0; clkdiv < 255; clkdiv++) {
+ if ((bus_hz / (clkdiv + 1) / 2) <= hz)
+ break;
+ }
+ printf("mci: setting clock %u Hz, block size %u\n",
+ (bus_hz / (clkdiv + 1)) / 2, blklen);
+
}
}
- printf("mci: setting clock %u Hz, block size %u\n",
- (bus_hz / (clkdiv+1)) / 2, blklen);
blklen &= 0xfffc;
- /* On some platforms RDPROOF and WRPROOF are ignored */
- writel((MMCI_BF(CLKDIV, clkdiv)
- | MMCI_BF(BLKLEN, blklen)
- | MMCI_BIT(RDPROOF)
- | MMCI_BIT(WRPROOF)), &mci->mr);
+
+ mr = MMCI_BF(CLKDIV, clkdiv);
+
+ /* MCI IP version >= 0x200 has R/WPROOF */
+ if (version >= 0x200)
+ mr |= MMCI_BIT(RDPROOF) | MMCI_BIT(WRPROOF);
+
/*
- * On some new platforms BLKLEN in mci->mr is ignored.
- * Should use the BLKLEN in the block register.
+ * MCI IP version >= 0x500 use bit 16 as clkodd.
+ * MCI IP version < 0x500 use upper 16 bits for blklen.
*/
- writel(MMCI_BF(BLKLEN, blklen), &mci->blkr);
+ if (version >= 0x500)
+ mr |= MMCI_BF(CLKODD, clkodd);
+ else
+ mr |= MMCI_BF(BLKLEN, blklen);
+
+ writel(mr, &mci->mr);
+
+ /* MCI IP version >= 0x200 has blkr */
+ if (version >= 0x200)
+ writel(MMCI_BF(BLKLEN, blklen), &mci->blkr);
+
+ if (mmc->card_caps & mmc->cfg->host_caps & MMC_MODE_HS)
+ writel(MMCI_BIT(HSMODE), &mci->cfg);
+
initialized = 1;
}
@@ -376,8 +407,10 @@ int atmel_mci_init(void *regs)
/* need to be able to pass these in on a board by board basis */
cfg->voltages = MMC_VDD_32_33 | MMC_VDD_33_34;
version = atmel_mci_get_version(mci);
- if ((version & 0xf00) >= 0x300)
+ if ((version & 0xf00) >= 0x300) {
cfg->host_caps = MMC_MODE_8BIT;
+ cfg->host_caps |= MMC_MODE_HS | MMC_MODE_HS_52MHz;
+ }
cfg->host_caps |= MMC_MODE_4BIT;
diff --git a/drivers/mmc/mvebu_mmc.c b/drivers/mmc/mvebu_mmc.c
new file mode 100644
index 0000000..9759198
--- /dev/null
+++ b/drivers/mmc/mvebu_mmc.c
@@ -0,0 +1,361 @@
+/*
+ * Marvell MMC/SD/SDIO driver
+ *
+ * (C) Copyright 2012
+ * Marvell Semiconductor <www.marvell.com>
+ * Written-by: Maen Suleiman, Gerald Kerma
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <malloc.h>
+#include <part.h>
+#include <mmc.h>
+#include <asm/io.h>
+#include <asm/arch/cpu.h>
+#include <asm/arch/kirkwood.h>
+#include <mvebu_mmc.h>
+
+#define DRIVER_NAME "MVEBU_MMC"
+
+static void mvebu_mmc_write(u32 offs, u32 val)
+{
+ writel(val, CONFIG_SYS_MMC_BASE + (offs));
+}
+
+static u32 mvebu_mmc_read(u32 offs)
+{
+ return readl(CONFIG_SYS_MMC_BASE + (offs));
+}
+
+static int mvebu_mmc_setup_data(struct mmc_data *data)
+{
+ u32 ctrl_reg;
+
+ debug("%s, data %s : blocks=%d blksz=%d\n", DRIVER_NAME,
+ (data->flags & MMC_DATA_READ) ? "read" : "write",
+ data->blocks, data->blocksize);
+
+ /* default to maximum timeout */
+ ctrl_reg = mvebu_mmc_read(SDIO_HOST_CTRL);
+ ctrl_reg |= SDIO_HOST_CTRL_TMOUT(SDIO_HOST_CTRL_TMOUT_MAX);
+ mvebu_mmc_write(SDIO_HOST_CTRL, ctrl_reg);
+
+ if (data->flags & MMC_DATA_READ) {
+ mvebu_mmc_write(SDIO_SYS_ADDR_LOW, (u32)data->dest & 0xffff);
+ mvebu_mmc_write(SDIO_SYS_ADDR_HI, (u32)data->dest >> 16);
+ } else {
+ mvebu_mmc_write(SDIO_SYS_ADDR_LOW, (u32)data->src & 0xffff);
+ mvebu_mmc_write(SDIO_SYS_ADDR_HI, (u32)data->src >> 16);
+ }
+
+ mvebu_mmc_write(SDIO_BLK_COUNT, data->blocks);
+ mvebu_mmc_write(SDIO_BLK_SIZE, data->blocksize);
+
+ return 0;
+}
+
+static int mvebu_mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
+ struct mmc_data *data)
+{
+ int timeout = 10;
+ ushort waittype = 0;
+ ushort resptype = 0;
+ ushort xfertype = 0;
+ ushort resp_indx = 0;
+
+ debug("cmdidx [0x%x] resp_type[0x%x] cmdarg[0x%x]\n",
+ cmd->cmdidx, cmd->resp_type, cmd->cmdarg);
+
+ udelay(10*1000);
+
+ debug("%s: cmd %d (hw state 0x%04x)\n", DRIVER_NAME,
+ cmd->cmdidx, mvebu_mmc_read(SDIO_HW_STATE));
+
+ /* Checking if card is busy */
+ while ((mvebu_mmc_read(SDIO_HW_STATE) & CARD_BUSY)) {
+ if (timeout == 0) {
+ printf("%s: card busy!\n", DRIVER_NAME);
+ return -1;
+ }
+ timeout--;
+ udelay(1000);
+ }
+
+ /* Set up for a data transfer if we have one */
+ if (data) {
+ int err = mvebu_mmc_setup_data(data);
+
+ if (err)
+ return err;
+ }
+
+ resptype = SDIO_CMD_INDEX(cmd->cmdidx);
+
+ /* Analyzing resptype/xfertype/waittype for the command */
+ if (cmd->resp_type & MMC_RSP_BUSY)
+ resptype |= SDIO_CMD_RSP_48BUSY;
+ else if (cmd->resp_type & MMC_RSP_136)
+ resptype |= SDIO_CMD_RSP_136;
+ else if (cmd->resp_type & MMC_RSP_PRESENT)
+ resptype |= SDIO_CMD_RSP_48;
+ else
+ resptype |= SDIO_CMD_RSP_NONE;
+
+ if (cmd->resp_type & MMC_RSP_CRC)
+ resptype |= SDIO_CMD_CHECK_CMDCRC;
+
+ if (cmd->resp_type & MMC_RSP_OPCODE)
+ resptype |= SDIO_CMD_INDX_CHECK;
+
+ if (cmd->resp_type & MMC_RSP_PRESENT) {
+ resptype |= SDIO_UNEXPECTED_RESP;
+ waittype |= SDIO_NOR_UNEXP_RSP;
+ }
+
+ if (data) {
+ resptype |= SDIO_CMD_DATA_PRESENT | SDIO_CMD_CHECK_DATACRC16;
+ xfertype |= SDIO_XFER_MODE_HW_WR_DATA_EN;
+ if (data->flags & MMC_DATA_READ) {
+ xfertype |= SDIO_XFER_MODE_TO_HOST;
+ waittype = SDIO_NOR_DMA_INI;
+ } else {
+ waittype |= SDIO_NOR_XFER_DONE;
+ }
+ } else {
+ waittype |= SDIO_NOR_CMD_DONE;
+ }
+
+ /* Setting cmd arguments */
+ mvebu_mmc_write(SDIO_ARG_LOW, cmd->cmdarg & 0xffff);
+ mvebu_mmc_write(SDIO_ARG_HI, cmd->cmdarg >> 16);
+
+ /* Setting Xfer mode */
+ mvebu_mmc_write(SDIO_XFER_MODE, xfertype);
+
+ mvebu_mmc_write(SDIO_NOR_INTR_STATUS, ~SDIO_NOR_CARD_INT);
+ mvebu_mmc_write(SDIO_ERR_INTR_STATUS, SDIO_POLL_MASK);
+
+ /* Sending command */
+ mvebu_mmc_write(SDIO_CMD, resptype);
+
+ mvebu_mmc_write(SDIO_NOR_INTR_EN, SDIO_POLL_MASK);
+ mvebu_mmc_write(SDIO_ERR_INTR_EN, SDIO_POLL_MASK);
+
+ /* Waiting for completion */
+ timeout = 1000000;
+
+ while (!((mvebu_mmc_read(SDIO_NOR_INTR_STATUS)) & waittype)) {
+ if (mvebu_mmc_read(SDIO_NOR_INTR_STATUS) & SDIO_NOR_ERROR) {
+ debug("%s: error! cmdidx : %d, err reg: %04x\n",
+ DRIVER_NAME, cmd->cmdidx,
+ mvebu_mmc_read(SDIO_ERR_INTR_STATUS));
+ if (mvebu_mmc_read(SDIO_ERR_INTR_STATUS) &
+ (SDIO_ERR_CMD_TIMEOUT | SDIO_ERR_DATA_TIMEOUT))
+ return TIMEOUT;
+ return COMM_ERR;
+ }
+
+ timeout--;
+ udelay(1);
+ if (timeout <= 0) {
+ printf("%s: command timed out\n", DRIVER_NAME);
+ return TIMEOUT;
+ }
+ }
+
+ /* Handling response */
+ if (cmd->resp_type & MMC_RSP_136) {
+ uint response[8];
+
+ for (resp_indx = 0; resp_indx < 8; resp_indx++)
+ response[resp_indx]
+ = mvebu_mmc_read(SDIO_RSP(resp_indx));
+
+ cmd->response[0] = ((response[0] & 0x03ff) << 22) |
+ ((response[1] & 0xffff) << 6) |
+ ((response[2] & 0xfc00) >> 10);
+ cmd->response[1] = ((response[2] & 0x03ff) << 22) |
+ ((response[3] & 0xffff) << 6) |
+ ((response[4] & 0xfc00) >> 10);
+ cmd->response[2] = ((response[4] & 0x03ff) << 22) |
+ ((response[5] & 0xffff) << 6) |
+ ((response[6] & 0xfc00) >> 10);
+ cmd->response[3] = ((response[6] & 0x03ff) << 22) |
+ ((response[7] & 0x3fff) << 8);
+ } else if (cmd->resp_type & MMC_RSP_PRESENT) {
+ uint response[3];
+
+ for (resp_indx = 0; resp_indx < 3; resp_indx++)
+ response[resp_indx]
+ = mvebu_mmc_read(SDIO_RSP(resp_indx));
+
+ cmd->response[0] = ((response[2] & 0x003f) << (8 - 8)) |
+ ((response[1] & 0xffff) << (14 - 8)) |
+ ((response[0] & 0x03ff) << (30 - 8));
+ cmd->response[1] = ((response[0] & 0xfc00) >> 10);
+ cmd->response[2] = 0;
+ cmd->response[3] = 0;
+ }
+
+ debug("%s: resp[0x%x] ", DRIVER_NAME, cmd->resp_type);
+ debug("[0x%x] ", cmd->response[0]);
+ debug("[0x%x] ", cmd->response[1]);
+ debug("[0x%x] ", cmd->response[2]);
+ debug("[0x%x] ", cmd->response[3]);
+ debug("\n");
+
+ return 0;
+}
+
+static void mvebu_mmc_power_up(void)
+{
+ debug("%s: power up\n", DRIVER_NAME);
+
+ /* disable interrupts */
+ mvebu_mmc_write(SDIO_NOR_INTR_EN, 0);
+ mvebu_mmc_write(SDIO_ERR_INTR_EN, 0);
+
+ /* SW reset */
+ mvebu_mmc_write(SDIO_SW_RESET, SDIO_SW_RESET_NOW);
+
+ mvebu_mmc_write(SDIO_XFER_MODE, 0);
+
+ /* enable status */
+ mvebu_mmc_write(SDIO_NOR_STATUS_EN, SDIO_POLL_MASK);
+ mvebu_mmc_write(SDIO_ERR_STATUS_EN, SDIO_POLL_MASK);
+
+ /* enable interrupts status */
+ mvebu_mmc_write(SDIO_NOR_INTR_STATUS, SDIO_POLL_MASK);
+ mvebu_mmc_write(SDIO_ERR_INTR_STATUS, SDIO_POLL_MASK);
+}
+
+static void mvebu_mmc_set_clk(unsigned int clock)
+{
+ unsigned int m;
+
+ if (clock == 0) {
+ debug("%s: clock off\n", DRIVER_NAME);
+ mvebu_mmc_write(SDIO_XFER_MODE, SDIO_XFER_MODE_STOP_CLK);
+ mvebu_mmc_write(SDIO_CLK_DIV, MVEBU_MMC_BASE_DIV_MAX);
+ } else {
+ m = MVEBU_MMC_BASE_FAST_CLOCK/(2*clock) - 1;
+ if (m > MVEBU_MMC_BASE_DIV_MAX)
+ m = MVEBU_MMC_BASE_DIV_MAX;
+ mvebu_mmc_write(SDIO_CLK_DIV, m & MVEBU_MMC_BASE_DIV_MAX);
+ }
+
+ udelay(10*1000);
+}
+
+static void mvebu_mmc_set_bus(unsigned int bus)
+{
+ u32 ctrl_reg = 0;
+
+ ctrl_reg = mvebu_mmc_read(SDIO_HOST_CTRL);
+ ctrl_reg &= ~SDIO_HOST_CTRL_DATA_WIDTH_4_BITS;
+
+ switch (bus) {
+ case 4:
+ ctrl_reg |= SDIO_HOST_CTRL_DATA_WIDTH_4_BITS;
+ break;
+ case 1:
+ default:
+ ctrl_reg |= SDIO_HOST_CTRL_DATA_WIDTH_1_BIT;
+ }
+
+ /* default transfer mode */
+ ctrl_reg |= SDIO_HOST_CTRL_BIG_ENDIAN;
+ ctrl_reg &= ~SDIO_HOST_CTRL_LSB_FIRST;
+
+ /* default to maximum timeout */
+ ctrl_reg |= SDIO_HOST_CTRL_TMOUT(SDIO_HOST_CTRL_TMOUT_MAX);
+
+ ctrl_reg |= SDIO_HOST_CTRL_PUSH_PULL_EN;
+
+ ctrl_reg |= SDIO_HOST_CTRL_CARD_TYPE_MEM_ONLY;
+
+ debug("%s: ctrl 0x%04x: %s %s %s\n", DRIVER_NAME, ctrl_reg,
+ (ctrl_reg & SDIO_HOST_CTRL_PUSH_PULL_EN) ?
+ "push-pull" : "open-drain",
+ (ctrl_reg & SDIO_HOST_CTRL_DATA_WIDTH_4_BITS) ?
+ "4bit-width" : "1bit-width",
+ (ctrl_reg & SDIO_HOST_CTRL_HI_SPEED_EN) ?
+ "high-speed" : "");
+
+ mvebu_mmc_write(SDIO_HOST_CTRL, ctrl_reg);
+ udelay(10*1000);
+}
+
+static void mvebu_mmc_set_ios(struct mmc *mmc)
+{
+ debug("%s: bus[%d] clock[%d]\n", DRIVER_NAME,
+ mmc->bus_width, mmc->clock);
+ mvebu_mmc_set_bus(mmc->bus_width);
+ mvebu_mmc_set_clk(mmc->clock);
+}
+
+static int mvebu_mmc_initialize(struct mmc *mmc)
+{
+ debug("%s: mvebu_mmc_initialize", DRIVER_NAME);
+
+ /*
+ * Setting host parameters
+ * Initial Host Ctrl : Timeout : max , Normal Speed mode,
+ * 4-bit data mode, Big Endian, SD memory Card, Push_pull CMD Line
+ */
+ mvebu_mmc_write(SDIO_HOST_CTRL,
+ SDIO_HOST_CTRL_TMOUT(SDIO_HOST_CTRL_TMOUT_MAX) |
+ SDIO_HOST_CTRL_DATA_WIDTH_4_BITS |
+ SDIO_HOST_CTRL_BIG_ENDIAN |
+ SDIO_HOST_CTRL_PUSH_PULL_EN |
+ SDIO_HOST_CTRL_CARD_TYPE_MEM_ONLY);
+
+ mvebu_mmc_write(SDIO_CLK_CTRL, 0);
+
+ /* enable status */
+ mvebu_mmc_write(SDIO_NOR_STATUS_EN, SDIO_POLL_MASK);
+ mvebu_mmc_write(SDIO_ERR_STATUS_EN, SDIO_POLL_MASK);
+
+ /* disable interrupts */
+ mvebu_mmc_write(SDIO_NOR_INTR_EN, 0);
+ mvebu_mmc_write(SDIO_ERR_INTR_EN, 0);
+
+ /* SW reset */
+ mvebu_mmc_write(SDIO_SW_RESET, SDIO_SW_RESET_NOW);
+
+ udelay(10*1000);
+
+ return 0;
+}
+
+static const struct mmc_ops mvebu_mmc_ops = {
+ .send_cmd = mvebu_mmc_send_cmd,
+ .set_ios = mvebu_mmc_set_ios,
+ .init = mvebu_mmc_initialize,
+};
+
+static struct mmc_config mvebu_mmc_cfg = {
+ .name = DRIVER_NAME,
+ .ops = &mvebu_mmc_ops,
+ .f_min = MVEBU_MMC_BASE_FAST_CLOCK / MVEBU_MMC_BASE_DIV_MAX,
+ .f_max = MVEBU_MMC_CLOCKRATE_MAX,
+ .voltages = MMC_VDD_32_33 | MMC_VDD_33_34,
+ .host_caps = MMC_MODE_4BIT | MMC_MODE_HS,
+ .part_type = PART_TYPE_DOS,
+ .b_max = CONFIG_SYS_MMC_MAX_BLK_COUNT,
+};
+
+int mvebu_mmc_init(bd_t *bis)
+{
+ struct mmc *mmc;
+
+ mvebu_mmc_power_up();
+
+ mmc = mmc_create(&mvebu_mmc_cfg, bis);
+ if (mmc == NULL)
+ return -1;
+
+ return 0;
+}
diff --git a/drivers/mmc/s3c_sdi.c b/drivers/mmc/s3c_sdi.c
new file mode 100644
index 0000000..1b5b705
--- /dev/null
+++ b/drivers/mmc/s3c_sdi.c
@@ -0,0 +1,321 @@
+/*
+ * S3C24xx SD/MMC driver
+ *
+ * Based on OpenMoko S3C24xx driver by Harald Welte <laforge@openmoko.org>
+ *
+ * Copyright (C) 2014 Marek Vasut <marex@denx.de>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <malloc.h>
+#include <mmc.h>
+#include <errno.h>
+#include <asm/arch/s3c24x0_cpu.h>
+#include <asm/io.h>
+#include <asm/unaligned.h>
+
+#define S3C2440_SDICON_SDRESET (1 << 8)
+#define S3C2410_SDICON_FIFORESET (1 << 1)
+#define S3C2410_SDICON_CLOCKTYPE (1 << 0)
+
+#define S3C2410_SDICMDCON_LONGRSP (1 << 10)
+#define S3C2410_SDICMDCON_WAITRSP (1 << 9)
+#define S3C2410_SDICMDCON_CMDSTART (1 << 8)
+#define S3C2410_SDICMDCON_SENDERHOST (1 << 6)
+#define S3C2410_SDICMDCON_INDEX 0x3f
+
+#define S3C2410_SDICMDSTAT_CRCFAIL (1 << 12)
+#define S3C2410_SDICMDSTAT_CMDSENT (1 << 11)
+#define S3C2410_SDICMDSTAT_CMDTIMEOUT (1 << 10)
+#define S3C2410_SDICMDSTAT_RSPFIN (1 << 9)
+
+#define S3C2440_SDIDCON_DS_WORD (2 << 22)
+#define S3C2410_SDIDCON_TXAFTERRESP (1 << 20)
+#define S3C2410_SDIDCON_RXAFTERCMD (1 << 19)
+#define S3C2410_SDIDCON_BLOCKMODE (1 << 17)
+#define S3C2410_SDIDCON_WIDEBUS (1 << 16)
+#define S3C2440_SDIDCON_DATSTART (1 << 14)
+#define S3C2410_SDIDCON_XFER_RXSTART (2 << 12)
+#define S3C2410_SDIDCON_XFER_TXSTART (3 << 12)
+#define S3C2410_SDIDCON_BLKNUM 0x7ff
+
+#define S3C2410_SDIDSTA_FIFOFAIL (1 << 8)
+#define S3C2410_SDIDSTA_CRCFAIL (1 << 7)
+#define S3C2410_SDIDSTA_RXCRCFAIL (1 << 6)
+#define S3C2410_SDIDSTA_DATATIMEOUT (1 << 5)
+#define S3C2410_SDIDSTA_XFERFINISH (1 << 4)
+
+#define S3C2410_SDIFSTA_TFHALF (1 << 11)
+#define S3C2410_SDIFSTA_COUNTMASK 0x7f
+
+/*
+ * WARNING: We only support one SD IP block.
+ * NOTE: It's not likely there will ever exist an S3C24xx with two,
+ * at least not in this universe all right.
+ */
+static int wide_bus;
+
+static int
+s3cmmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data)
+{
+ struct s3c24x0_sdi *sdi_regs = s3c24x0_get_base_sdi();
+ uint32_t sdiccon, sdicsta, sdidcon, sdidsta, sdidat, sdifsta;
+ uint32_t sdicsta_wait_bit = S3C2410_SDICMDSTAT_CMDSENT;
+ unsigned int timeout = 100000;
+ int ret = 0, xfer_len, data_offset = 0;
+ const uint32_t sdidsta_err_mask = S3C2410_SDIDSTA_FIFOFAIL |
+ S3C2410_SDIDSTA_CRCFAIL | S3C2410_SDIDSTA_RXCRCFAIL |
+ S3C2410_SDIDSTA_DATATIMEOUT;
+
+
+ writel(0xffffffff, &sdi_regs->sdicsta);
+ writel(0xffffffff, &sdi_regs->sdidsta);
+ writel(0xffffffff, &sdi_regs->sdifsta);
+
+ /* Set up data transfer (if applicable). */
+ if (data) {
+ writel(data->blocksize, &sdi_regs->sdibsize);
+
+ sdidcon = data->blocks & S3C2410_SDIDCON_BLKNUM;
+ sdidcon |= S3C2410_SDIDCON_BLOCKMODE;
+#if defined(CONFIG_S3C2440)
+ sdidcon |= S3C2440_SDIDCON_DS_WORD | S3C2440_SDIDCON_DATSTART;
+#endif
+ if (wide_bus)
+ sdidcon |= S3C2410_SDIDCON_WIDEBUS;
+
+ if (data->flags & MMC_DATA_READ) {
+ sdidcon |= S3C2410_SDIDCON_RXAFTERCMD;
+ sdidcon |= S3C2410_SDIDCON_XFER_RXSTART;
+ } else {
+ sdidcon |= S3C2410_SDIDCON_TXAFTERRESP;
+ sdidcon |= S3C2410_SDIDCON_XFER_TXSTART;
+ }
+
+ writel(sdidcon, &sdi_regs->sdidcon);
+ }
+
+ /* Write CMD arg. */
+ writel(cmd->cmdarg, &sdi_regs->sdicarg);
+
+ /* Write CMD index. */
+ sdiccon = cmd->cmdidx & S3C2410_SDICMDCON_INDEX;
+ sdiccon |= S3C2410_SDICMDCON_SENDERHOST;
+ sdiccon |= S3C2410_SDICMDCON_CMDSTART;
+
+ /* Command with short response. */
+ if (cmd->resp_type & MMC_RSP_PRESENT) {
+ sdiccon |= S3C2410_SDICMDCON_WAITRSP;
+ sdicsta_wait_bit = S3C2410_SDICMDSTAT_RSPFIN;
+ }
+
+ /* Command with long response. */
+ if (cmd->resp_type & MMC_RSP_136)
+ sdiccon |= S3C2410_SDICMDCON_LONGRSP;
+
+ /* Start the command. */
+ writel(sdiccon, &sdi_regs->sdiccon);
+
+ /* Wait for the command to complete or for response. */
+ for (timeout = 100000; timeout; timeout--) {
+ sdicsta = readl(&sdi_regs->sdicsta);
+ if (sdicsta & sdicsta_wait_bit)
+ break;
+
+ if (sdicsta & S3C2410_SDICMDSTAT_CMDTIMEOUT)
+ timeout = 1;
+ }
+
+ /* Clean the status bits. */
+ setbits_le32(&sdi_regs->sdicsta, 0xf << 9);
+
+ if (!timeout) {
+ puts("S3C SDI: Command timed out!\n");
+ ret = TIMEOUT;
+ goto error;
+ }
+
+ /* Read out the response. */
+ if (cmd->resp_type & MMC_RSP_136) {
+ cmd->response[0] = readl(&sdi_regs->sdirsp0);
+ cmd->response[1] = readl(&sdi_regs->sdirsp1);
+ cmd->response[2] = readl(&sdi_regs->sdirsp2);
+ cmd->response[3] = readl(&sdi_regs->sdirsp3);
+ } else {
+ cmd->response[0] = readl(&sdi_regs->sdirsp0);
+ }
+
+ /* If there are no data, we're done. */
+ if (!data)
+ return 0;
+
+ xfer_len = data->blocksize * data->blocks;
+
+ while (xfer_len > 0) {
+ sdidsta = readl(&sdi_regs->sdidsta);
+ sdifsta = readl(&sdi_regs->sdifsta);
+
+ if (sdidsta & sdidsta_err_mask) {
+ printf("S3C SDI: Data error (sdta=0x%08x)\n", sdidsta);
+ ret = -EIO;
+ goto error;
+ }
+
+ if (data->flags & MMC_DATA_READ) {
+ if ((sdifsta & S3C2410_SDIFSTA_COUNTMASK) < 4)
+ continue;
+ sdidat = readl(&sdi_regs->sdidat);
+ put_unaligned_le32(sdidat, data->dest + data_offset);
+ } else { /* Write */
+ /* TX FIFO half full. */
+ if (!(sdifsta & S3C2410_SDIFSTA_TFHALF))
+ continue;
+
+ /* TX FIFO is below 32b full, write. */
+ sdidat = get_unaligned_le32(data->src + data_offset);
+ writel(sdidat, &sdi_regs->sdidat);
+ }
+ data_offset += 4;
+ xfer_len -= 4;
+ }
+
+ /* Wait for the command to complete or for response. */
+ for (timeout = 100000; timeout; timeout--) {
+ sdidsta = readl(&sdi_regs->sdidsta);
+ if (sdidsta & S3C2410_SDIDSTA_XFERFINISH)
+ break;
+
+ if (sdidsta & S3C2410_SDIDSTA_DATATIMEOUT)
+ timeout = 1;
+ }
+
+ /* Clear status bits. */
+ writel(0x6f8, &sdi_regs->sdidsta);
+
+ if (!timeout) {
+ puts("S3C SDI: Command timed out!\n");
+ ret = TIMEOUT;
+ goto error;
+ }
+
+ writel(0, &sdi_regs->sdidcon);
+
+ return 0;
+error:
+ return ret;
+}
+
+static void s3cmmc_set_ios(struct mmc *mmc)
+{
+ struct s3c24x0_sdi *sdi_regs = s3c24x0_get_base_sdi();
+ uint32_t divider = 0;
+
+ wide_bus = (mmc->bus_width == 4);
+
+ if (!mmc->clock)
+ return;
+
+ divider = DIV_ROUND_UP(get_PCLK(), mmc->clock);
+ if (divider)
+ divider--;
+
+ writel(divider, &sdi_regs->sdipre);
+ mdelay(125);
+}
+
+static int s3cmmc_init(struct mmc *mmc)
+{
+ struct s3c24x0_clock_power *clk_power = s3c24x0_get_base_clock_power();
+ struct s3c24x0_sdi *sdi_regs = s3c24x0_get_base_sdi();
+
+ /* Start the clock. */
+ setbits_le32(&clk_power->clkcon, 1 << 9);
+
+#if defined(CONFIG_S3C2440)
+ writel(S3C2440_SDICON_SDRESET, &sdi_regs->sdicon);
+ mdelay(10);
+ writel(0x7fffff, &sdi_regs->sdidtimer);
+#else
+ writel(0xffff, &sdi_regs->sdidtimer);
+#endif
+ writel(MMC_MAX_BLOCK_LEN, &sdi_regs->sdibsize);
+ writel(0x0, &sdi_regs->sdiimsk);
+
+ writel(S3C2410_SDICON_FIFORESET | S3C2410_SDICON_CLOCKTYPE,
+ &sdi_regs->sdicon);
+
+ mdelay(125);
+
+ return 0;
+}
+
+struct s3cmmc_priv {
+ struct mmc_config cfg;
+ int (*getcd)(struct mmc *);
+ int (*getwp)(struct mmc *);
+};
+
+static int s3cmmc_getcd(struct mmc *mmc)
+{
+ struct s3cmmc_priv *priv = mmc->priv;
+ if (priv->getcd)
+ return priv->getcd(mmc);
+ else
+ return 0;
+}
+
+static int s3cmmc_getwp(struct mmc *mmc)
+{
+ struct s3cmmc_priv *priv = mmc->priv;
+ if (priv->getwp)
+ return priv->getwp(mmc);
+ else
+ return 0;
+}
+
+static const struct mmc_ops s3cmmc_ops = {
+ .send_cmd = s3cmmc_send_cmd,
+ .set_ios = s3cmmc_set_ios,
+ .init = s3cmmc_init,
+ .getcd = s3cmmc_getcd,
+ .getwp = s3cmmc_getwp,
+};
+
+int s3cmmc_initialize(bd_t *bis, int (*getcd)(struct mmc *),
+ int (*getwp)(struct mmc *))
+{
+ struct s3cmmc_priv *priv;
+ struct mmc *mmc;
+ struct mmc_config *cfg;
+
+ priv = calloc(1, sizeof(*priv));
+ if (!priv)
+ return -ENOMEM;
+ cfg = &priv->cfg;
+
+ cfg->name = "S3C MMC";
+ cfg->ops = &s3cmmc_ops;
+ cfg->voltages = MMC_VDD_32_33 | MMC_VDD_33_34;
+ cfg->host_caps = MMC_MODE_4BIT | MMC_MODE_HC | MMC_MODE_HS;
+ cfg->f_min = 400000;
+ cfg->f_max = get_PCLK() / 2;
+ cfg->b_max = 0x80;
+
+#if defined(CONFIG_S3C2410)
+ /*
+ * S3C2410 has some bug that prevents reliable
+ * operation at higher speed
+ */
+ cfg->f_max /= 2;
+#endif
+
+ mmc = mmc_create(cfg, priv);
+ if (!mmc) {
+ free(priv);
+ return -ENOMEM;
+ }
+
+ return 0;
+}
diff --git a/drivers/mmc/sunxi_mmc.c b/drivers/mmc/sunxi_mmc.c
index eb7b115..d4e574f 100644
--- a/drivers/mmc/sunxi_mmc.c
+++ b/drivers/mmc/sunxi_mmc.c
@@ -16,28 +16,6 @@
#include <asm/arch/cpu.h>
#include <asm/arch/mmc.h>
-struct sunxi_mmc_des {
- u32 reserved1_1:1;
- u32 dic:1; /* disable interrupt on completion */
- u32 last_des:1; /* 1-this data buffer is the last buffer */
- u32 first_des:1; /* 1-data buffer is the first buffer,
- 0-data buffer contained in the next
- descriptor is 1st buffer */
- u32 des_chain:1; /* 1-the 2nd address in the descriptor is the
- next descriptor address */
- u32 end_of_ring:1; /* 1-last descriptor flag when using dual
- data buffer in descriptor */
- u32 reserved1_2:24;
- u32 card_err_sum:1; /* transfer error flag */
- u32 own:1; /* des owner:1-idma owns it, 0-host owns it */
-#define SDXC_DES_NUM_SHIFT 16
-#define SDXC_DES_BUFFER_MAX_LEN (1 << SDXC_DES_NUM_SHIFT)
- u32 data_buf1_sz:16;
- u32 data_buf2_sz:16;
- u32 buf_addr_ptr1;
- u32 buf_addr_ptr2;
-};
-
struct sunxi_mmc_host {
unsigned mmc_no;
uint32_t *mclkreg;
@@ -189,6 +167,7 @@ static int mmc_core_init(struct mmc *mmc)
/* Reset controller */
writel(SUNXI_MMC_GCTRL_RESET, &mmchost->reg->gctrl);
+ udelay(1000);
return 0;
}
@@ -204,6 +183,9 @@ static int mmc_trans_data_by_cpu(struct mmc *mmc, struct mmc_data *data)
unsigned timeout_msecs = 2000;
unsigned *buff = (unsigned int *)(reading ? data->dest : data->src);
+ /* Always read / write data through the CPU */
+ setbits_le32(&mmchost->reg->gctrl, SUNXI_MMC_GCTRL_ACCESS_BY_AHB);
+
for (i = 0; i < (byte_cnt >> 2); i++) {
while (readl(&mmchost->reg->status) & status_bit) {
if (!timeout_msecs--)
@@ -220,85 +202,6 @@ static int mmc_trans_data_by_cpu(struct mmc *mmc, struct mmc_data *data)
return 0;
}
-static int mmc_trans_data_by_dma(struct mmc *mmc, struct mmc_data *data)
-{
- struct sunxi_mmc_host *mmchost = mmc->priv;
- unsigned byte_cnt = data->blocksize * data->blocks;
- unsigned char *buff;
- unsigned des_idx = 0;
- unsigned buff_frag_num =
- (byte_cnt + SDXC_DES_BUFFER_MAX_LEN - 1) >> SDXC_DES_NUM_SHIFT;
- unsigned remain;
- unsigned i, rval;
- ALLOC_CACHE_ALIGN_BUFFER(struct sunxi_mmc_des, pdes, buff_frag_num);
-
- buff = data->flags & MMC_DATA_READ ?
- (unsigned char *)data->dest : (unsigned char *)data->src;
- remain = byte_cnt & (SDXC_DES_BUFFER_MAX_LEN - 1);
-
- flush_cache((unsigned long)buff, (unsigned long)byte_cnt);
- for (i = 0; i < buff_frag_num; i++, des_idx++) {
- memset((void *)&pdes[des_idx], 0, sizeof(struct sunxi_mmc_des));
- pdes[des_idx].des_chain = 1;
- pdes[des_idx].own = 1;
- pdes[des_idx].dic = 1;
- if (buff_frag_num > 1 && i != buff_frag_num - 1)
- pdes[des_idx].data_buf1_sz = 0; /* 0 == max_len */
- else
- pdes[des_idx].data_buf1_sz = remain;
-
- pdes[des_idx].buf_addr_ptr1 =
- (u32) buff + i * SDXC_DES_BUFFER_MAX_LEN;
- if (i == 0)
- pdes[des_idx].first_des = 1;
-
- if (i == buff_frag_num - 1) {
- pdes[des_idx].dic = 0;
- pdes[des_idx].last_des = 1;
- pdes[des_idx].end_of_ring = 1;
- pdes[des_idx].buf_addr_ptr2 = 0;
- } else {
- pdes[des_idx].buf_addr_ptr2 = (u32)&pdes[des_idx + 1];
- }
- }
- flush_cache((unsigned long)pdes,
- sizeof(struct sunxi_mmc_des) * (des_idx + 1));
-
- rval = readl(&mmchost->reg->gctrl);
- /* Enable DMA */
- writel(rval | SUNXI_MMC_GCTRL_DMA_RESET | SUNXI_MMC_GCTRL_DMA_ENABLE,
- &mmchost->reg->gctrl);
- /* Reset iDMA */
- writel(SUNXI_MMC_IDMAC_RESET, &mmchost->reg->dmac);
- /* Enable iDMA */
- writel(SUNXI_MMC_IDMAC_FIXBURST | SUNXI_MMC_IDMAC_ENABLE,
- &mmchost->reg->dmac);
- rval = readl(&mmchost->reg->idie) &
- ~(SUNXI_MMC_IDIE_TXIRQ|SUNXI_MMC_IDIE_RXIRQ);
- if (data->flags & MMC_DATA_WRITE)
- rval |= SUNXI_MMC_IDIE_TXIRQ;
- else
- rval |= SUNXI_MMC_IDIE_RXIRQ;
- writel(rval, &mmchost->reg->idie);
- writel((u32) pdes, &mmchost->reg->dlba);
- writel((0x2 << 28) | (0x7 << 16) | (0x01 << 3),
- &mmchost->reg->ftrglevel);
-
- return 0;
-}
-
-static void mmc_enable_dma_accesses(struct mmc *mmc, int dma)
-{
- struct sunxi_mmc_host *mmchost = mmc->priv;
-
- unsigned int gctrl = readl(&mmchost->reg->gctrl);
- if (dma)
- gctrl &= ~SUNXI_MMC_GCTRL_ACCESS_BY_AHB;
- else
- gctrl |= SUNXI_MMC_GCTRL_ACCESS_BY_AHB;
- writel(gctrl, &mmchost->reg->gctrl);
-}
-
static int mmc_rint_wait(struct mmc *mmc, unsigned int timeout_msecs,
unsigned int done_bit, const char *what)
{
@@ -327,7 +230,6 @@ static int mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
unsigned int timeout_msecs;
int error = 0;
unsigned int status = 0;
- unsigned int usedma = 0;
unsigned int bytecnt = 0;
if (mmchost->fatal_err)
@@ -378,20 +280,8 @@ static int mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
bytecnt = data->blocksize * data->blocks;
debug("trans data %d bytes\n", bytecnt);
-#if defined(CONFIG_MMC_SUNXI_USE_DMA) && !defined(CONFIG_SPL_BUILD)
- if (bytecnt > 64) {
-#else
- if (0) {
-#endif
- usedma = 1;
- mmc_enable_dma_accesses(mmc, 1);
- ret = mmc_trans_data_by_dma(mmc, data);
- writel(cmdval | cmd->cmdidx, &mmchost->reg->cmd);
- } else {
- mmc_enable_dma_accesses(mmc, 0);
- writel(cmdval | cmd->cmdidx, &mmchost->reg->cmd);
- ret = mmc_trans_data_by_cpu(mmc, data);
- }
+ writel(cmdval | cmd->cmdidx, &mmchost->reg->cmd);
+ ret = mmc_trans_data_by_cpu(mmc, data);
if (ret) {
error = readl(&mmchost->reg->rint) & \
SUNXI_MMC_RINT_INTERRUPT_ERROR_BIT;
@@ -405,7 +295,7 @@ static int mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
goto out;
if (data) {
- timeout_msecs = usedma ? 120 * bytecnt : 120;
+ timeout_msecs = 120;
debug("cacl timeout %x msec\n", timeout_msecs);
error = mmc_rint_wait(mmc, timeout_msecs,
data->blocks > 1 ?
@@ -442,23 +332,6 @@ static int mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
debug("mmc resp 0x%08x\n", cmd->response[0]);
}
out:
- if (data && usedma) {
- /* IDMASTAREG
- * IDST[0] : idma tx int
- * IDST[1] : idma rx int
- * IDST[2] : idma fatal bus error
- * IDST[4] : idma descriptor invalid
- * IDST[5] : idma error summary
- * IDST[8] : idma normal interrupt sumary
- * IDST[9] : idma abnormal interrupt sumary
- */
- status = readl(&mmchost->reg->idst);
- writel(status, &mmchost->reg->idst);
- writel(0, &mmchost->reg->idie);
- writel(0, &mmchost->reg->dmac);
- writel(readl(&mmchost->reg->gctrl) & ~SUNXI_MMC_GCTRL_DMA_ENABLE,
- &mmchost->reg->gctrl);
- }
if (error < 0) {
writel(SUNXI_MMC_GCTRL_RESET, &mmchost->reg->gctrl);
mmc_update_clk(mmc);
diff --git a/drivers/mtd/nand/davinci_nand.c b/drivers/mtd/nand/davinci_nand.c
index 5d42509..a079b1e 100644
--- a/drivers/mtd/nand/davinci_nand.c
+++ b/drivers/mtd/nand/davinci_nand.c
@@ -305,6 +305,189 @@ static struct nand_ecclayout nand_davinci_4bit_layout_oobfirst = {
#endif
};
+#if defined CONFIG_KEYSTONE_RBL_NAND
+#if defined(CONFIG_SYS_NAND_PAGE_2K)
+static struct nand_ecclayout nand_keystone_rbl_4bit_layout_oobfirst = {
+ .eccbytes = 40,
+ .eccpos = {
+ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+ },
+ .oobfree = {
+ {.offset = 2, .length = 4, },
+ {.offset = 16, .length = 6, },
+ {.offset = 32, .length = 6, },
+ {.offset = 48, .length = 6, },
+ },
+#elif defined(CONFIG_SYS_NAND_PAGE_4K)
+ .eccbytes = 80,
+ .eccpos = {
+ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+ 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
+ },
+ .oobfree = {
+ {.offset = 2, .length = 4, },
+ {.offset = 16, .length = 6, },
+ {.offset = 32, .length = 6, },
+ {.offset = 48, .length = 6, },
+ {.offset = 64, .length = 6, },
+ {.offset = 80, .length = 6, },
+ {.offset = 96, .length = 6, },
+ {.offset = 112, .length = 6, },
+ },
+#endif
+};
+
+#ifdef CONFIG_SYS_NAND_PAGE_2K
+#define CONFIG_KEYSTONE_NAND_MAX_RBL_PAGE CONFIG_KEYSTONE_NAND_MAX_RBL_SIZE >> 11
+#elif defined(CONFIG_SYS_NAND_PAGE_4K)
+#define CONFIG_KEYSTONE_NAND_MAX_RBL_PAGE CONFIG_KEYSTONE_NAND_MAX_RBL_SIZE >> 12
+#endif
+
+/**
+ * nand_davinci_write_page - write one page
+ * @mtd: MTD device structure
+ * @chip: NAND chip descriptor
+ * @buf: the data to write
+ * @oob_required: must write chip->oob_poi to OOB
+ * @page: page number to write
+ * @cached: cached programming
+ * @raw: use _raw version of write_page
+ */
+static int nand_davinci_write_page(struct mtd_info *mtd, struct nand_chip *chip,
+ const uint8_t *buf, int oob_required,
+ int page, int cached, int raw)
+{
+ int status;
+ int ret = 0;
+ struct nand_ecclayout *saved_ecc_layout;
+
+ /* save current ECC layout and assign Keystone RBL ECC layout */
+ if (page < CONFIG_KEYSTONE_NAND_MAX_RBL_PAGE) {
+ saved_ecc_layout = chip->ecc.layout;
+ chip->ecc.layout = &nand_keystone_rbl_4bit_layout_oobfirst;
+ mtd->oobavail = chip->ecc.layout->oobavail;
+ }
+
+ chip->cmdfunc(mtd, NAND_CMD_SEQIN, 0x00, page);
+
+ if (unlikely(raw))
+ status = chip->ecc.write_page_raw(mtd, chip, buf, oob_required);
+ else
+ status = chip->ecc.write_page(mtd, chip, buf, oob_required);
+
+ if (status < 0) {
+ ret = status;
+ goto err;
+ }
+
+ chip->cmdfunc(mtd, NAND_CMD_PAGEPROG, -1, -1);
+ status = chip->waitfunc(mtd, chip);
+
+ /*
+ * See if operation failed and additional status checks are
+ * available.
+ */
+ if ((status & NAND_STATUS_FAIL) && (chip->errstat))
+ status = chip->errstat(mtd, chip, FL_WRITING, status, page);
+
+ if (status & NAND_STATUS_FAIL) {
+ ret = -EIO;
+ goto err;
+ }
+
+#ifdef CONFIG_MTD_NAND_VERIFY_WRITE
+ /* Send command to read back the data */
+ chip->cmdfunc(mtd, NAND_CMD_READ0, 0, page);
+
+ if (chip->verify_buf(mtd, buf, mtd->writesize)) {
+ ret = -EIO;
+ goto err;
+ }
+
+ /* Make sure the next page prog is preceded by a status read */
+ chip->cmdfunc(mtd, NAND_CMD_STATUS, -1, -1);
+#endif
+err:
+ /* restore ECC layout */
+ if (page < CONFIG_KEYSTONE_NAND_MAX_RBL_PAGE) {
+ chip->ecc.layout = saved_ecc_layout;
+ mtd->oobavail = saved_ecc_layout->oobavail;
+ }
+
+ return ret;
+}
+
+/**
+ * nand_davinci_read_page_hwecc - hardware ECC based page read function
+ * @mtd: mtd info structure
+ * @chip: nand chip info structure
+ * @buf: buffer to store read data
+ * @oob_required: caller requires OOB data read to chip->oob_poi
+ * @page: page number to read
+ *
+ * Not for syndrome calculating ECC controllers which need a special oob layout.
+ */
+static int nand_davinci_read_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip,
+ uint8_t *buf, int oob_required, int page)
+{
+ int i, eccsize = chip->ecc.size;
+ int eccbytes = chip->ecc.bytes;
+ int eccsteps = chip->ecc.steps;
+ uint32_t *eccpos;
+ uint8_t *p = buf;
+ uint8_t *ecc_code = chip->buffers->ecccode;
+ uint8_t *ecc_calc = chip->buffers->ecccalc;
+ struct nand_ecclayout *saved_ecc_layout = chip->ecc.layout;
+
+ /* save current ECC layout and assign Keystone RBL ECC layout */
+ if (page < CONFIG_KEYSTONE_NAND_MAX_RBL_PAGE) {
+ chip->ecc.layout = &nand_keystone_rbl_4bit_layout_oobfirst;
+ mtd->oobavail = chip->ecc.layout->oobavail;
+ }
+
+ eccpos = chip->ecc.layout->eccpos;
+
+ /* Read the OOB area first */
+ chip->cmdfunc(mtd, NAND_CMD_READOOB, 0, page);
+ chip->read_buf(mtd, chip->oob_poi, mtd->oobsize);
+ chip->cmdfunc(mtd, NAND_CMD_READ0, 0, page);
+
+ for (i = 0; i < chip->ecc.total; i++)
+ ecc_code[i] = chip->oob_poi[eccpos[i]];
+
+ for (i = 0; eccsteps; eccsteps--, i += eccbytes, p += eccsize) {
+ int stat;
+
+ chip->ecc.hwctl(mtd, NAND_ECC_READ);
+ chip->read_buf(mtd, p, eccsize);
+ chip->ecc.calculate(mtd, p, &ecc_calc[i]);
+
+ stat = chip->ecc.correct(mtd, p, &ecc_code[i], NULL);
+ if (stat < 0)
+ mtd->ecc_stats.failed++;
+ else
+ mtd->ecc_stats.corrected += stat;
+ }
+
+ /* restore ECC layout */
+ if (page < CONFIG_KEYSTONE_NAND_MAX_RBL_PAGE) {
+ chip->ecc.layout = saved_ecc_layout;
+ mtd->oobavail = saved_ecc_layout->oobavail;
+ }
+
+ return 0;
+}
+#endif /* CONFIG_KEYSTONE_RBL_NAND */
+
static void nand_davinci_4bit_enable_hwecc(struct mtd_info *mtd, int mode)
{
u32 val;
@@ -604,6 +787,19 @@ static void nand_flash_init(void)
void davinci_nand_init(struct nand_chip *nand)
{
+#if defined CONFIG_KEYSTONE_RBL_NAND
+ int i;
+ struct nand_ecclayout *layout;
+
+ layout = &nand_keystone_rbl_4bit_layout_oobfirst;
+ layout->oobavail = 0;
+ for (i = 0; layout->oobfree[i].length &&
+ i < ARRAY_SIZE(layout->oobfree); i++)
+ layout->oobavail += layout->oobfree[i].length;
+
+ nand->write_page = nand_davinci_write_page;
+ nand->ecc.read_page = nand_davinci_read_page_hwecc;
+#endif
nand->chip_delay = 0;
#ifdef CONFIG_SYS_NAND_USE_FLASH_BBT
nand->bbt_options |= NAND_BBT_USE_FLASH;
diff --git a/drivers/net/Makefile b/drivers/net/Makefile
index 6226cb2..7cc6b6f 100644
--- a/drivers/net/Makefile
+++ b/drivers/net/Makefile
@@ -20,6 +20,7 @@ obj-$(CONFIG_DNET) += dnet.o
obj-$(CONFIG_E1000) += e1000.o
obj-$(CONFIG_E1000_SPI) += e1000_spi.o
obj-$(CONFIG_EEPRO100) += eepro100.o
+obj-$(CONFIG_SUNXI_EMAC) += sunxi_emac.o
obj-$(CONFIG_ENC28J60) += enc28j60.o
obj-$(CONFIG_EP93XX) += ep93xx_eth.o
obj-$(CONFIG_ETHOC) += ethoc.o
@@ -51,7 +52,6 @@ obj-$(CONFIG_RTL8169) += rtl8169.o
obj-$(CONFIG_SH_ETHER) += sh_eth.o
obj-$(CONFIG_SMC91111) += smc91111.o
obj-$(CONFIG_SMC911X) += smc911x.o
-obj-$(CONFIG_SUNXI_WEMAC) += sunxi_wemac.o
obj-$(CONFIG_DRIVER_TI_EMAC) += davinci_emac.o
obj-$(CONFIG_TSEC_ENET) += tsec.o fsl_mdio.o
obj-$(CONFIG_DRIVER_TI_CPSW) += cpsw.o
diff --git a/drivers/net/cpsw.c b/drivers/net/cpsw.c
index bd5fba2..8ec5161 100644
--- a/drivers/net/cpsw.c
+++ b/drivers/net/cpsw.c
@@ -211,6 +211,8 @@ struct cpdma_chan {
#define chan_read(chan, fld) __raw_readl((chan)->fld)
#define chan_read_ptr(chan, fld) ((void *)__raw_readl((chan)->fld))
+#define for_active_slave(slave, priv) \
+ slave = (priv)->slaves + (priv)->data.active_slave; if (slave)
#define for_each_slave(slave, priv) \
for (slave = (priv)->slaves; slave != (priv)->slaves + \
(priv)->data.slaves; slave++)
@@ -609,7 +611,7 @@ static int cpsw_update_link(struct cpsw_priv *priv)
int link = 0;
struct cpsw_slave *slave;
- for_each_slave(slave, priv)
+ for_active_slave(slave, priv)
cpsw_slave_update_link(slave, priv, &link);
priv->mdio_link = readl(&mdio_regs->link);
return link;
@@ -785,7 +787,7 @@ static int cpsw_init(struct eth_device *dev, bd_t *bis)
ALE_SECURE);
cpsw_ale_add_mcast(priv, NetBcastAddr, 1 << priv->host_port);
- for_each_slave(slave, priv)
+ for_active_slave(slave, priv)
cpsw_slave_init(slave, priv);
cpsw_update_link(priv);
@@ -1013,7 +1015,7 @@ int cpsw_register(struct cpsw_platform_data *data)
cpsw_mdio_init(dev->name, data->mdio_base, data->mdio_div);
priv->bus = miiphy_get_dev_by_name(dev->name);
- for_each_slave(slave, priv)
+ for_active_slave(slave, priv)
cpsw_phy_init(dev, slave);
return 1;
diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c
index 65c747e..623f749 100644
--- a/drivers/net/netconsole.c
+++ b/drivers/net/netconsole.c
@@ -215,7 +215,7 @@ static void nc_send_packet(const char *buf, int len)
}
}
-static int nc_start(void)
+static int nc_start(struct stdio_dev *dev)
{
int retval;
@@ -235,7 +235,7 @@ static int nc_start(void)
return 0;
}
-static void nc_putc(char c)
+static void nc_putc(struct stdio_dev *dev, char c)
{
if (output_recursion)
return;
@@ -246,7 +246,7 @@ static void nc_putc(char c)
output_recursion = 0;
}
-static void nc_puts(const char *s)
+static void nc_puts(struct stdio_dev *dev, const char *s)
{
int len;
@@ -265,7 +265,7 @@ static void nc_puts(const char *s)
output_recursion = 0;
}
-static int nc_getc(void)
+static int nc_getc(struct stdio_dev *dev)
{
uchar c;
@@ -286,7 +286,7 @@ static int nc_getc(void)
return c;
}
-static int nc_tstc(void)
+static int nc_tstc(struct stdio_dev *dev)
{
struct eth_device *eth;
diff --git a/drivers/net/sh_eth.c b/drivers/net/sh_eth.c
index 81e8ddb..451c33e 100644
--- a/drivers/net/sh_eth.c
+++ b/drivers/net/sh_eth.c
@@ -413,7 +413,8 @@ static int sh_eth_config(struct sh_eth_dev *eth, bd_t *bd)
#if defined(CONFIG_CPU_SH7734) || defined(CONFIG_R8A7740)
sh_eth_write(eth, CONFIG_SH_ETHER_SH7734_MII, RMII_MII);
-#elif defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791)
+#elif defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791) || \
+ defined(CONFIG_R8A7794)
sh_eth_write(eth, sh_eth_read(eth, RMIIMR) | 0x1, RMIIMR);
#endif
/* Configure phy */
@@ -439,7 +440,7 @@ static int sh_eth_config(struct sh_eth_dev *eth, bd_t *bd)
#elif defined(CONFIG_CPU_SH7757) || defined(CONFIG_CPU_SH7752)
sh_eth_write(eth, 1, RTRATE);
#elif defined(CONFIG_CPU_SH7724) || defined(CONFIG_R8A7790) || \
- defined(CONFIG_R8A7791)
+ defined(CONFIG_R8A7791) || defined(CONFIG_R8A7794)
val = ECMR_RTM;
#endif
} else if (phy->speed == 10) {
diff --git a/drivers/net/sh_eth.h b/drivers/net/sh_eth.h
index d0d9aaa..e325a39 100644
--- a/drivers/net/sh_eth.h
+++ b/drivers/net/sh_eth.h
@@ -358,7 +358,8 @@ static const u16 sh_eth_offset_fast_sh4[SH_ETH_MAX_REGISTER_OFFSET] = {
#elif defined(CONFIG_R8A7740)
#define SH_ETH_TYPE_GETHER
#define BASE_IO_ADDR 0xE9A00000
-#elif defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791)
+#elif defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791) || \
+ defined(CONFIG_R8A7794)
#define SH_ETH_TYPE_ETHER
#define BASE_IO_ADDR 0xEE700200
#elif defined(CONFIG_R7S72100)
@@ -569,7 +570,8 @@ enum FELIC_MODE_BIT {
ECMR_PRM = 0x00000001,
#ifdef CONFIG_CPU_SH7724
ECMR_RTM = 0x00000010,
-#elif defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791)
+#elif defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791) || \
+ defined(CONFIG_R8A7794)
ECMR_RTM = 0x00000004,
#endif
diff --git a/drivers/net/sunxi_wemac.c b/drivers/net/sunxi_emac.c
index 699a381..5a06d68 100644
--- a/drivers/net/sunxi_wemac.c
+++ b/drivers/net/sunxi_emac.c
@@ -1,5 +1,5 @@
/*
- * sunxi_wemac.c -- Allwinner A10 ethernet driver
+ * sunxi_emac.c -- Allwinner A10 ethernet driver
*
* (C) Copyright 2012, Stefan Roese <sr@denx.de>
*
@@ -7,16 +7,16 @@
*/
#include <common.h>
+#include <linux/err.h>
#include <malloc.h>
-#include <net.h>
#include <miiphy.h>
-#include <linux/err.h>
+#include <net.h>
#include <asm/io.h>
#include <asm/arch/clock.h>
#include <asm/arch/gpio.h>
/* EMAC register */
-struct wemac_regs {
+struct emac_regs {
u32 ctl; /* 0x00 */
u32 tx_mode; /* 0x04 */
u32 tx_flow; /* 0x08 */
@@ -27,7 +27,7 @@ struct wemac_regs {
u32 tx_pl1; /* 0x1c */
u32 tx_sta; /* 0x20 */
u32 tx_io_data; /* 0x24 */
- u32 tx_io_data1; /* 0x28 */
+ u32 tx_io_data1;/* 0x28 */
u32 tx_tsvl0; /* 0x2c */
u32 tx_tsvh0; /* 0x30 */
u32 tx_tsvl1; /* 0x34 */
@@ -141,33 +141,33 @@ struct sunxi_sramc_regs {
#define EMAC_MAC_IPGT 0x15
-#define EMAC_MAC_NBTB_IPG1 0xC
+#define EMAC_MAC_NBTB_IPG1 0xc
#define EMAC_MAC_NBTB_IPG2 0x12
#define EMAC_MAC_CW 0x37
-#define EMAC_MAC_RM 0xF
+#define EMAC_MAC_RM 0xf
#define EMAC_MAC_MFL 0x0600
/* Receive status */
-#define EMAC_CRCERR (1 << 4)
-#define EMAC_LENERR (3 << 5)
+#define EMAC_CRCERR (0x1 << 4)
+#define EMAC_LENERR (0x3 << 5)
#define DMA_CPU_TRRESHOLD 2000
-struct wemac_eth_dev {
+struct emac_eth_dev {
u32 speed;
u32 duplex;
u32 phy_configured;
int link_printed;
};
-struct wemac_rxhdr {
+struct emac_rxhdr {
s16 rx_len;
u16 rx_status;
};
-static void wemac_inblk_32bit(void *reg, void *data, int count)
+static void emac_inblk_32bit(void *reg, void *data, int count)
{
int cnt = (count + 3) >> 2;
@@ -181,7 +181,7 @@ static void wemac_inblk_32bit(void *reg, void *data, int count)
}
}
-static void wemac_outblk_32bit(void *reg, void *data, int count)
+static void emac_outblk_32bit(void *reg, void *data, int count)
{
int cnt = (count + 3) >> 2;
@@ -194,14 +194,12 @@ static void wemac_outblk_32bit(void *reg, void *data, int count)
}
}
-/*
- * Read a word from phyxcer
- */
-static int wemac_phy_read(const char *devname, unsigned char addr,
+/* Read a word from phyxcer */
+static int emac_phy_read(const char *devname, unsigned char addr,
unsigned char reg, unsigned short *value)
{
struct eth_device *dev = eth_get_dev_by_name(devname);
- struct wemac_regs *regs = (struct wemac_regs *)dev->iobase;
+ struct emac_regs *regs = (struct emac_regs *)dev->iobase;
/* issue the phy address and reg */
writel(addr << 8 | reg, &regs->mac_madr);
@@ -221,14 +219,12 @@ static int wemac_phy_read(const char *devname, unsigned char addr,
return 0;
}
-/*
- * Write a word to phyxcer
- */
-static int wemac_phy_write(const char *devname, unsigned char addr,
+/* Write a word to phyxcer */
+static int emac_phy_write(const char *devname, unsigned char addr,
unsigned char reg, unsigned short value)
{
struct eth_device *dev = eth_get_dev_by_name(devname);
- struct wemac_regs *regs = (struct wemac_regs *)dev->iobase;
+ struct emac_regs *regs = (struct emac_regs *)dev->iobase;
/* issue the phy address and reg */
writel(addr << 8 | reg, &regs->mac_madr);
@@ -250,7 +246,7 @@ static int wemac_phy_write(const char *devname, unsigned char addr,
static void emac_setup(struct eth_device *dev)
{
- struct wemac_regs *regs = (struct wemac_regs *)dev->iobase;
+ struct emac_regs *regs = (struct emac_regs *)dev->iobase;
u32 reg_val;
u16 phy_val;
u32 duplex_flag;
@@ -266,7 +262,7 @@ static void emac_setup(struct eth_device *dev)
writel(EMAC_MAC_CTL0_SETUP, &regs->mac_ctl0);
/* Set MAC CTL1 */
- wemac_phy_read(dev->name, 1, 0, &phy_val);
+ emac_phy_read(dev->name, 1, 0, &phy_val);
debug("PHY SETUP, reg 0 value: %x\n", phy_val);
duplex_flag = !!(phy_val & (1 << 8));
@@ -288,9 +284,9 @@ static void emac_setup(struct eth_device *dev)
writel(EMAC_MAC_MFL, &regs->mac_maxf);
}
-static void wemac_reset(struct eth_device *dev)
+static void emac_reset(struct eth_device *dev)
{
- struct wemac_regs *regs = (struct wemac_regs *)dev->iobase;
+ struct emac_regs *regs = (struct emac_regs *)dev->iobase;
debug("resetting device\n");
@@ -302,10 +298,10 @@ static void wemac_reset(struct eth_device *dev)
udelay(200);
}
-static int sunxi_wemac_eth_init(struct eth_device *dev, bd_t *bd)
+static int sunxi_emac_eth_init(struct eth_device *dev, bd_t *bd)
{
- struct wemac_regs *regs = (struct wemac_regs *)dev->iobase;
- struct wemac_eth_dev *priv = dev->priv;
+ struct emac_regs *regs = (struct emac_regs *)dev->iobase;
+ struct emac_eth_dev *priv = dev->priv;
u16 phy_reg;
/* Init EMAC */
@@ -317,10 +313,7 @@ static int sunxi_wemac_eth_init(struct eth_device *dev, bd_t *bd)
/* Init MAC */
/* Soft reset MAC */
- clrbits_le32(&regs->mac_ctl0, 1 << 15);
-
- /* Set MII clock */
- clrsetbits_le32(&regs->mac_mcfg, 0xf << 2, 0xd << 2);
+ clrbits_le32(&regs->mac_ctl0, 0x1 << 15);
/* Clear RX counter */
writel(0x0, &regs->rx_fbc);
@@ -336,14 +329,14 @@ static int sunxi_wemac_eth_init(struct eth_device *dev, bd_t *bd)
mdelay(1);
- wemac_reset(dev);
+ emac_reset(dev);
/* PHY POWER UP */
- wemac_phy_read(dev->name, 1, 0, &phy_reg);
- wemac_phy_write(dev->name, 1, 0, phy_reg & (~(1 << 11)));
+ emac_phy_read(dev->name, 1, 0, &phy_reg);
+ emac_phy_write(dev->name, 1, 0, phy_reg & (~(0x1 << 11)));
mdelay(1);
- wemac_phy_read(dev->name, 1, 0, &phy_reg);
+ emac_phy_read(dev->name, 1, 0, &phy_reg);
priv->speed = miiphy_speed(dev->name, 0);
priv->duplex = miiphy_duplex(dev->name, 0);
@@ -357,11 +350,11 @@ static int sunxi_wemac_eth_init(struct eth_device *dev, bd_t *bd)
/* Set EMAC SPEED depend on PHY */
clrsetbits_le32(&regs->mac_supp, 1 << 8,
- ((phy_reg & (1 << 13)) >> 13) << 8);
+ ((phy_reg & (0x1 << 13)) >> 13) << 8);
/* Set duplex depend on phy */
clrsetbits_le32(&regs->mac_ctl1, 1 << 0,
- ((phy_reg & (1 << 8)) >> 8) << 0);
+ ((phy_reg & (0x1 << 8)) >> 8) << 0);
/* Enable RX/TX */
setbits_le32(&regs->ctl, 0x7);
@@ -369,15 +362,15 @@ static int sunxi_wemac_eth_init(struct eth_device *dev, bd_t *bd)
return 0;
}
-static void sunxi_wemac_eth_halt(struct eth_device *dev)
+static void sunxi_emac_eth_halt(struct eth_device *dev)
{
/* Nothing to do here */
}
-static int sunxi_wemac_eth_recv(struct eth_device *dev)
+static int sunxi_emac_eth_recv(struct eth_device *dev)
{
- struct wemac_regs *regs = (struct wemac_regs *)dev->iobase;
- struct wemac_rxhdr rxhdr;
+ struct emac_regs *regs = (struct emac_regs *)dev->iobase;
+ struct emac_rxhdr rxhdr;
u32 rxcount;
u32 reg_val;
int rx_len;
@@ -386,8 +379,7 @@ static int sunxi_wemac_eth_recv(struct eth_device *dev)
/* Check packet ready or not */
- /*
- * Race warning: The first packet might arrive with
+ /* Race warning: The first packet might arrive with
* the interrupts disabled, but the second will fix
*/
rxcount = readl(&regs->rx_fbc);
@@ -401,26 +393,25 @@ static int sunxi_wemac_eth_recv(struct eth_device *dev)
reg_val = readl(&regs->rx_io_data);
if (reg_val != 0x0143414d) {
/* Disable RX */
- clrbits_le32(&regs->ctl, 1 << 2);
+ clrbits_le32(&regs->ctl, 0x1 << 2);
/* Flush RX FIFO */
- setbits_le32(&regs->rx_ctl, 1 << 3);
- while (readl(&regs->rx_ctl) & (1 << 3))
+ setbits_le32(&regs->rx_ctl, 0x1 << 3);
+ while (readl(&regs->rx_ctl) & (0x1 << 3))
;
/* Enable RX */
- setbits_le32(&regs->ctl, 1 << 2);
+ setbits_le32(&regs->ctl, 0x1 << 2);
return 0;
}
- /*
- * A packet ready now
+ /* A packet ready now
* Get status/length
*/
good_packet = 1;
- wemac_inblk_32bit(&regs->rx_io_data, &rxhdr, sizeof(rxhdr));
+ emac_inblk_32bit(&regs->rx_io_data, &rxhdr, sizeof(rxhdr));
rx_len = rxhdr.rx_len;
rx_status = rxhdr.rx_status;
@@ -440,13 +431,13 @@ static int sunxi_wemac_eth_recv(struct eth_device *dev)
printf("length error\n");
}
- /* Move data from WEMAC */
+ /* Move data from EMAC */
if (good_packet) {
if (rx_len > DMA_CPU_TRRESHOLD) {
printf("Received packet is too big (len=%d)\n", rx_len);
} else {
- wemac_inblk_32bit((void *)&regs->rx_io_data,
- NetRxPackets[0], rx_len);
+ emac_inblk_32bit((void *)&regs->rx_io_data,
+ NetRxPackets[0], rx_len);
/* Pass to upper layer */
NetReceive(NetRxPackets[0], rx_len);
@@ -457,15 +448,15 @@ static int sunxi_wemac_eth_recv(struct eth_device *dev)
return 0;
}
-static int sunxi_wemac_eth_send(struct eth_device *dev, void *packet, int len)
+static int sunxi_emac_eth_send(struct eth_device *dev, void *packet, int len)
{
- struct wemac_regs *regs = (struct wemac_regs *)dev->iobase;
+ struct emac_regs *regs = (struct emac_regs *)dev->iobase;
/* Select channel 0 */
writel(0, &regs->tx_ins);
/* Write packet */
- wemac_outblk_32bit((void *)&regs->tx_io_data, packet, len);
+ emac_outblk_32bit((void *)&regs->tx_io_data, packet, len);
/* Set TX len */
writel(len, &regs->tx_pl0);
@@ -476,50 +467,55 @@ static int sunxi_wemac_eth_send(struct eth_device *dev, void *packet, int len)
return 0;
}
-int sunxi_wemac_initialize(void)
+int sunxi_emac_initialize(void)
{
struct sunxi_ccm_reg *const ccm =
(struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
struct sunxi_sramc_regs *sram =
(struct sunxi_sramc_regs *)SUNXI_SRAMC_BASE;
+ struct emac_regs *regs =
+ (struct emac_regs *)SUNXI_EMAC_BASE;
struct eth_device *dev;
- struct wemac_eth_dev *priv;
+ struct emac_eth_dev *priv;
int pin;
dev = malloc(sizeof(*dev));
if (dev == NULL)
return -ENOMEM;
- priv = (struct wemac_eth_dev *)malloc(sizeof(struct wemac_eth_dev));
+ priv = (struct emac_eth_dev *)malloc(sizeof(struct emac_eth_dev));
if (!priv) {
free(dev);
return -ENOMEM;
}
memset(dev, 0, sizeof(*dev));
- memset(priv, 0, sizeof(struct wemac_eth_dev));
+ memset(priv, 0, sizeof(struct emac_eth_dev));
/* Map SRAM to EMAC */
setbits_le32(&sram->ctrl1, 0x5 << 2);
/* Configure pin mux settings for MII Ethernet */
for (pin = SUNXI_GPA(0); pin <= SUNXI_GPA(17); pin++)
- sunxi_gpio_set_cfgpin(pin, 2);
+ sunxi_gpio_set_cfgpin(pin, SUNXI_GPA0_EMAC);
/* Set up clock gating */
- setbits_le32(&ccm->ahb_gate0, 1 << AHB_GATE_OFFSET_EMAC);
+ setbits_le32(&ccm->ahb_gate0, 0x1 << AHB_GATE_OFFSET_EMAC);
+
+ /* Set MII clock */
+ clrsetbits_le32(&regs->mac_mcfg, 0xf << 2, 0xd << 2);
- dev->iobase = SUNXI_EMAC_BASE;
+ dev->iobase = (int)regs;
dev->priv = priv;
- dev->init = sunxi_wemac_eth_init;
- dev->halt = sunxi_wemac_eth_halt;
- dev->send = sunxi_wemac_eth_send;
- dev->recv = sunxi_wemac_eth_recv;
- strcpy(dev->name, "wemac");
+ dev->init = sunxi_emac_eth_init;
+ dev->halt = sunxi_emac_eth_halt;
+ dev->send = sunxi_emac_eth_send;
+ dev->recv = sunxi_emac_eth_recv;
+ strcpy(dev->name, "emac");
eth_register(dev);
- miiphy_register(dev->name, wemac_phy_read, wemac_phy_write);
+ miiphy_register(dev->name, emac_phy_read, emac_phy_write);
return 0;
}
diff --git a/drivers/power/Makefile b/drivers/power/Makefile
index 53ff97d..dc64e4d 100644
--- a/drivers/power/Makefile
+++ b/drivers/power/Makefile
@@ -5,6 +5,8 @@
# SPDX-License-Identifier: GPL-2.0+
#
+obj-$(CONFIG_AXP152_POWER) += axp152.o
+obj-$(CONFIG_AXP209_POWER) += axp209.o
obj-$(CONFIG_EXYNOS_TMU) += exynos-tmu.o
obj-$(CONFIG_FTPMU010_POWER) += ftpmu010.o
obj-$(CONFIG_TPS6586X_POWER) += tps6586x.o
diff --git a/drivers/power/axp152.c b/drivers/power/axp152.c
new file mode 100644
index 0000000..fa4ea05
--- /dev/null
+++ b/drivers/power/axp152.c
@@ -0,0 +1,97 @@
+/*
+ * (C) Copyright 2012
+ * Henrik Nordstrom <henrik@henriknordstrom.net>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+#include <common.h>
+#include <i2c.h>
+#include <axp152.h>
+
+enum axp152_reg {
+ AXP152_CHIP_VERSION = 0x3,
+ AXP152_DCDC2_VOLTAGE = 0x23,
+ AXP152_DCDC3_VOLTAGE = 0x27,
+ AXP152_DCDC4_VOLTAGE = 0x2B,
+ AXP152_LDO2_VOLTAGE = 0x2A,
+ AXP152_SHUTDOWN = 0x32,
+};
+
+#define AXP152_POWEROFF (1 << 7)
+
+static int axp152_write(enum axp152_reg reg, u8 val)
+{
+ return i2c_write(0x30, reg, 1, &val, 1);
+}
+
+static int axp152_read(enum axp152_reg reg, u8 *val)
+{
+ return i2c_read(0x30, reg, 1, val, 1);
+}
+
+static u8 axp152_mvolt_to_target(int mvolt, int min, int max, int div)
+{
+ if (mvolt < min)
+ mvolt = min;
+ else if (mvolt > max)
+ mvolt = max;
+
+ return (mvolt - min) / div;
+}
+
+int axp152_set_dcdc2(int mvolt)
+{
+ int rc;
+ u8 current, target;
+
+ target = axp152_mvolt_to_target(mvolt, 700, 2275, 25);
+
+ /* Do we really need to be this gentle? It has built-in voltage slope */
+ while ((rc = axp152_read(AXP152_DCDC2_VOLTAGE, &current)) == 0 &&
+ current != target) {
+ if (current < target)
+ current++;
+ else
+ current--;
+ rc = axp152_write(AXP152_DCDC2_VOLTAGE, current);
+ if (rc)
+ break;
+ }
+ return rc;
+}
+
+int axp152_set_dcdc3(int mvolt)
+{
+ u8 target = axp152_mvolt_to_target(mvolt, 700, 3500, 25);
+
+ return axp152_write(AXP152_DCDC3_VOLTAGE, target);
+}
+
+int axp152_set_dcdc4(int mvolt)
+{
+ u8 target = axp152_mvolt_to_target(mvolt, 700, 3500, 25);
+
+ return axp152_write(AXP152_DCDC4_VOLTAGE, target);
+}
+
+int axp152_set_ldo2(int mvolt)
+{
+ u8 target = axp152_mvolt_to_target(mvolt, 700, 3500, 100);
+
+ return axp152_write(AXP152_LDO2_VOLTAGE, target);
+}
+
+int axp152_init(void)
+{
+ u8 ver;
+ int rc;
+
+ rc = axp152_read(AXP152_CHIP_VERSION, &ver);
+ if (rc)
+ return rc;
+
+ if (ver != 0x05)
+ return -1;
+
+ return 0;
+}
diff --git a/drivers/power/axp209.c b/drivers/power/axp209.c
new file mode 100644
index 0000000..9798e5b
--- /dev/null
+++ b/drivers/power/axp209.c
@@ -0,0 +1,167 @@
+/*
+ * (C) Copyright 2012
+ * Henrik Nordstrom <henrik@henriknordstrom.net>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <i2c.h>
+#include <axp209.h>
+
+enum axp209_reg {
+ AXP209_POWER_STATUS = 0x00,
+ AXP209_CHIP_VERSION = 0x03,
+ AXP209_DCDC2_VOLTAGE = 0x23,
+ AXP209_DCDC3_VOLTAGE = 0x27,
+ AXP209_LDO24_VOLTAGE = 0x28,
+ AXP209_LDO3_VOLTAGE = 0x29,
+ AXP209_IRQ_STATUS5 = 0x4c,
+ AXP209_SHUTDOWN = 0x32,
+};
+
+#define AXP209_POWER_STATUS_ON_BY_DC (1 << 0)
+
+#define AXP209_IRQ5_PEK_UP (1 << 6)
+#define AXP209_IRQ5_PEK_DOWN (1 << 5)
+
+#define AXP209_POWEROFF (1 << 7)
+
+static int axp209_write(enum axp209_reg reg, u8 val)
+{
+ return i2c_write(0x34, reg, 1, &val, 1);
+}
+
+static int axp209_read(enum axp209_reg reg, u8 *val)
+{
+ return i2c_read(0x34, reg, 1, val, 1);
+}
+
+static u8 axp209_mvolt_to_cfg(int mvolt, int min, int max, int div)
+{
+ if (mvolt < min)
+ mvolt = min;
+ else if (mvolt > max)
+ mvolt = max;
+
+ return (mvolt - min) / div;
+}
+
+int axp209_set_dcdc2(int mvolt)
+{
+ int rc;
+ u8 cfg, current;
+
+ cfg = axp209_mvolt_to_cfg(mvolt, 700, 2275, 25);
+
+ /* Do we really need to be this gentle? It has built-in voltage slope */
+ while ((rc = axp209_read(AXP209_DCDC2_VOLTAGE, &current)) == 0 &&
+ current != cfg) {
+ if (current < cfg)
+ current++;
+ else
+ current--;
+
+ rc = axp209_write(AXP209_DCDC2_VOLTAGE, current);
+ if (rc)
+ break;
+ }
+
+ return rc;
+}
+
+int axp209_set_dcdc3(int mvolt)
+{
+ u8 cfg = axp209_mvolt_to_cfg(mvolt, 700, 3500, 25);
+
+ return axp209_write(AXP209_DCDC3_VOLTAGE, cfg);
+}
+
+int axp209_set_ldo2(int mvolt)
+{
+ int rc;
+ u8 cfg, reg;
+
+ cfg = axp209_mvolt_to_cfg(mvolt, 1800, 3300, 100);
+
+ rc = axp209_read(AXP209_LDO24_VOLTAGE, &reg);
+ if (rc)
+ return rc;
+
+ /* LDO2 configuration is in upper 4 bits */
+ reg = (reg & 0x0f) | (cfg << 4);
+ return axp209_write(AXP209_LDO24_VOLTAGE, reg);
+}
+
+int axp209_set_ldo3(int mvolt)
+{
+ u8 cfg;
+
+ if (mvolt == -1)
+ cfg = 0x80; /* determined by LDO3IN pin */
+ else
+ cfg = axp209_mvolt_to_cfg(mvolt, 700, 2275, 25);
+
+ return axp209_write(AXP209_LDO3_VOLTAGE, cfg);
+}
+
+int axp209_set_ldo4(int mvolt)
+{
+ int rc;
+ static const int vindex[] = {
+ 1250, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000, 2500,
+ 2700, 2800, 3000, 3100, 3200, 3300
+ };
+ u8 cfg, reg;
+
+ /* Translate mvolt to register cfg value, requested <= selected */
+ for (cfg = 15; vindex[cfg] > mvolt && cfg > 0; cfg--);
+
+ rc = axp209_read(AXP209_LDO24_VOLTAGE, &reg);
+ if (rc)
+ return rc;
+
+ /* LDO4 configuration is in lower 4 bits */
+ reg = (reg & 0xf0) | (cfg << 0);
+ return axp209_write(AXP209_LDO24_VOLTAGE, reg);
+}
+
+int axp209_init(void)
+{
+ u8 ver;
+ int rc;
+
+ rc = axp209_read(AXP209_CHIP_VERSION, &ver);
+ if (rc)
+ return rc;
+
+ /* Low 4 bits is chip version */
+ ver &= 0x0f;
+
+ if (ver != 0x1)
+ return -1;
+
+ return 0;
+}
+
+int axp209_poweron_by_dc(void)
+{
+ u8 v;
+
+ if (axp209_read(AXP209_POWER_STATUS, &v))
+ return 0;
+
+ return (v & AXP209_POWER_STATUS_ON_BY_DC);
+}
+
+int axp209_power_button(void)
+{
+ u8 v;
+
+ if (axp209_read(AXP209_IRQ_STATUS5, &v))
+ return 0;
+
+ axp209_write(AXP209_IRQ_STATUS5, AXP209_IRQ5_PEK_DOWN);
+
+ return v & AXP209_IRQ5_PEK_DOWN;
+}
diff --git a/drivers/power/pmic/pmic_tps65218.c b/drivers/power/pmic/pmic_tps65218.c
index 0952456..dbc7a73 100644
--- a/drivers/power/pmic/pmic_tps65218.c
+++ b/drivers/power/pmic/pmic_tps65218.c
@@ -7,6 +7,8 @@
#include <common.h>
#include <i2c.h>
+#include <asm/errno.h>
+#include <power/pmic.h>
#include <power/tps65218.h>
/**
@@ -95,3 +97,23 @@ int tps65218_voltage_update(uchar dc_cntrl_reg, uchar volt_sel)
return 0;
}
+
+int power_tps65218_init(unsigned char bus)
+{
+ static const char name[] = "TPS65218_PMIC";
+ struct pmic *p = pmic_alloc();
+
+ if (!p) {
+ printf("%s: POWER allocation error!\n", __func__);
+ return -ENOMEM;
+ }
+
+ p->name = name;
+ p->interface = PMIC_I2C;
+ p->number_of_regs = TPS65218_PMIC_NUM_OF_REGS;
+ p->hw.i2c.addr = TPS65218_CHIP_PM;
+ p->hw.i2c.tx_num = 1;
+ p->bus = bus;
+
+ return 0;
+}
diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c
index f26979d..8e7052d 100644
--- a/drivers/serial/ns16550.c
+++ b/drivers/serial/ns16550.c
@@ -30,7 +30,7 @@
#define serial_in(y) readb(y)
#endif
-#if defined(CONFIG_K2HK_EVM)
+#if defined(CONFIG_SOC_KEYSTONE)
#define UART_REG_VAL_PWREMU_MGMT_UART_DISABLE 0
#define UART_REG_VAL_PWREMU_MGMT_UART_ENABLE ((1 << 14) | (1 << 13) | (1 << 0))
#undef UART_MCRVAL
@@ -88,7 +88,7 @@ void NS16550_init(NS16550_t com_port, int baud_divisor)
/* /16 is proper to hit 115200 with 48MHz */
serial_out(0, &com_port->mdr1);
#endif /* CONFIG_OMAP */
-#if defined(CONFIG_K2HK_EVM)
+#if defined(CONFIG_SOC_KEYSTONE)
serial_out(UART_REG_VAL_PWREMU_MGMT_UART_ENABLE, &com_port->regC);
#endif
}
diff --git a/drivers/serial/serial.c b/drivers/serial/serial.c
index fd61a5e..d2eb752 100644
--- a/drivers/serial/serial.c
+++ b/drivers/serial/serial.c
@@ -254,6 +254,48 @@ void serial_initialize(void)
serial_assign(default_serial_console()->name);
}
+int serial_stub_start(struct stdio_dev *sdev)
+{
+ struct serial_device *dev = sdev->priv;
+
+ return dev->start();
+}
+
+int serial_stub_stop(struct stdio_dev *sdev)
+{
+ struct serial_device *dev = sdev->priv;
+
+ return dev->stop();
+}
+
+void serial_stub_putc(struct stdio_dev *sdev, const char ch)
+{
+ struct serial_device *dev = sdev->priv;
+
+ dev->putc(ch);
+}
+
+void serial_stub_puts(struct stdio_dev *sdev, const char *str)
+{
+ struct serial_device *dev = sdev->priv;
+
+ dev->puts(str);
+}
+
+int serial_stub_getc(struct stdio_dev *sdev)
+{
+ struct serial_device *dev = sdev->priv;
+
+ return dev->getc();
+}
+
+int serial_stub_tstc(struct stdio_dev *sdev)
+{
+ struct serial_device *dev = sdev->priv;
+
+ return dev->tstc();
+}
+
/**
* serial_stdio_init() - Register serial ports with STDIO core
*
@@ -272,12 +314,12 @@ void serial_stdio_init(void)
strcpy(dev.name, s->name);
dev.flags = DEV_FLAGS_OUTPUT | DEV_FLAGS_INPUT;
- dev.start = s->start;
- dev.stop = s->stop;
- dev.putc = s->putc;
- dev.puts = s->puts;
- dev.getc = s->getc;
- dev.tstc = s->tstc;
+ dev.start = serial_stub_start;
+ dev.stop = serial_stub_stop;
+ dev.putc = serial_stub_putc;
+ dev.puts = serial_stub_puts;
+ dev.getc = serial_stub_getc;
+ dev.tstc = serial_stub_tstc;
stdio_register(&dev);
@@ -376,6 +418,7 @@ static struct serial_device *get_current(void)
*/
int serial_init(void)
{
+ gd->flags |= GD_FLG_SERIAL_READY;
return get_current()->start();
}
diff --git a/drivers/serial/serial_sh.h b/drivers/serial/serial_sh.h
index f5e9854..341997c 100644
--- a/drivers/serial/serial_sh.h
+++ b/drivers/serial/serial_sh.h
@@ -226,7 +226,8 @@ struct uart_port {
# define SCSPTR3 0xffc60020 /* 16 bit SCIF */
# define SCIF_ORER 0x0001 /* Overrun error bit */
# define SCSCR_INIT(port) 0x38 /* TIE=0,RIE=0,TE=1,RE=1,REIE=1 */
-#elif defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791)
+#elif defined(CONFIG_R8A7790) || defined(CONFIG_R8A7791) || \
+ defined(CONFIG_R8A7794)
# define SCIF_ORER 0x0001
# define SCSCR_INIT(port) 0x32 /* TIE=0,RIE=0,TE=1,RE=1,REIE=0, */
#else
diff --git a/drivers/serial/usbtty.c b/drivers/serial/usbtty.c
index 6b912ef..b030526 100644
--- a/drivers/serial/usbtty.c
+++ b/drivers/serial/usbtty.c
@@ -389,7 +389,7 @@ static void str2wide (char *str, u16 * wide)
* Test whether a character is in the RX buffer
*/
-int usbtty_tstc (void)
+int usbtty_tstc(struct stdio_dev *dev)
{
struct usb_endpoint_instance *endpoint =
&endpoint_instance[rx_endpoint];
@@ -409,7 +409,7 @@ int usbtty_tstc (void)
* written into its argument c.
*/
-int usbtty_getc (void)
+int usbtty_getc(struct stdio_dev *dev)
{
char c;
struct usb_endpoint_instance *endpoint =
@@ -429,7 +429,7 @@ int usbtty_getc (void)
/*
* Output a single byte to the usb client port.
*/
-void usbtty_putc (const char c)
+void usbtty_putc(struct stdio_dev *dev, const char c)
{
if (!usbtty_configured ())
return;
@@ -484,7 +484,7 @@ static void __usbtty_puts (const char *str, int len)
}
}
-void usbtty_puts (const char *str)
+void usbtty_puts(struct stdio_dev *dev, const char *str)
{
int n;
int len;
diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c
index b52e9ed..9231927 100644
--- a/drivers/video/cfb_console.c
+++ b/drivers/video/cfb_console.c
@@ -944,7 +944,7 @@ static void parse_putc(const char c)
CURSOR_SET;
}
-void video_putc(const char c)
+void video_putc(struct stdio_dev *dev, const char c)
{
#ifdef CONFIG_CFB_CONSOLE_ANSI
int i;
@@ -1158,12 +1158,12 @@ void video_putc(const char c)
flush_cache(VIDEO_FB_ADRS, VIDEO_SIZE);
}
-void video_puts(const char *s)
+void video_puts(struct stdio_dev *dev, const char *s)
{
int count = strlen(s);
while (count--)
- video_putc(*s++);
+ video_putc(dev, *s++);
}
/*
@@ -2279,8 +2279,6 @@ int drv_video_init(void)
console_dev.flags = DEV_FLAGS_OUTPUT | DEV_FLAGS_SYSTEM;
console_dev.putc = video_putc; /* 'putc' function */
console_dev.puts = video_puts; /* 'puts' function */
- console_dev.tstc = NULL; /* 'tstc' function */
- console_dev.getc = NULL; /* 'getc' function */
#if !defined(CONFIG_VGA_AS_SINGLE_DEVICE)
/* Also init console device */
diff --git a/include/.gitignore b/include/.gitignore
index bf142fc..8e41a95 100644
--- a/include/.gitignore
+++ b/include/.gitignore
@@ -2,4 +2,3 @@
/bmp_logo.h
/bmp_logo_data.h
/config.h
-/config.mk
diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h
index 2850ed8..74df210 100644
--- a/include/asm-generic/global_data.h
+++ b/include/asm-generic/global_data.h
@@ -65,7 +65,8 @@ typedef struct global_data {
struct global_data *new_gd; /* relocated global data */
#ifdef CONFIG_DM
- struct udevice *dm_root;/* Root instance for Driver Model */
+ struct udevice *dm_root; /* Root instance for Driver Model */
+ struct udevice *dm_root_f; /* Pre-relocation root instance */
struct list_head uclass_root; /* Head of core tree */
#endif
@@ -85,6 +86,11 @@ typedef struct global_data {
#endif
unsigned long timebase_h;
unsigned long timebase_l;
+#ifdef CONFIG_SYS_MALLOC_F_LEN
+ unsigned long malloc_base; /* base address of early malloc() */
+ unsigned long malloc_limit; /* limit address */
+ unsigned long malloc_ptr; /* current address */
+#endif
struct arch_global_data arch; /* architecture-specific data */
} gd_t;
#endif
@@ -100,5 +106,6 @@ typedef struct global_data {
#define GD_FLG_LOGINIT 0x00020 /* Log Buffer has been initialized */
#define GD_FLG_DISABLE_CONSOLE 0x00040 /* Disable console (in & out) */
#define GD_FLG_ENV_READY 0x00080 /* Env. imported into hash table */
+#define GD_FLG_SERIAL_READY 0x00100 /* Pre-reloc serial console ready */
#endif /* __ASM_GENERIC_GBL_DATA_H */
diff --git a/include/atmel_mci.h b/include/atmel_mci.h
index 090574d..de24148 100644
--- a/include/atmel_mci.h
+++ b/include/atmel_mci.h
@@ -36,7 +36,9 @@ typedef struct atmel_mci {
u32 ier; /* 0x44 */
u32 idr; /* 0x48 */
u32 imr; /* 0x4c */
- u32 reserved[43];
+ u32 dma; /* 0x50 */
+ u32 cfg; /* 0x54 */
+ u32 reserved[41];
u32 version;
} atmel_mci_t;
@@ -67,6 +69,10 @@ typedef struct atmel_mci {
#define MMCI_PDCPADV_SIZE 1
#define MMCI_PDCMODE_OFFSET 15
#define MMCI_PDCMODE_SIZE 1
+/* MCI IP version >= 0x500, MR bit 16 used for CLKODD */
+#define MMCI_CLKODD_OFFSET 16
+#define MMCI_CLKODD_SIZE 1
+/* MCI IP version < 0x200, MR higher 16bits for BLKLEN */
#define MMCI_BLKLEN_OFFSET 16
#define MMCI_BLKLEN_SIZE 16
@@ -185,6 +191,16 @@ typedef struct atmel_mci {
#define MMCI_TRTYP_MULTI_BLOCK 1
#define MMCI_TRTYP_STREAM 2
+/* Bitfields in CFG */
+#define MMCI_FIFOMODE_OFFSET 0
+#define MMCI_FIFOMODE_SIZE 1
+#define MMCI_FERRCTRL_OFFSET 4
+#define MMCI_FERRCTRL_SIZE 1
+#define MMCI_HSMODE_OFFSET 8
+#define MMCI_HSMODE_SIZE 1
+#define MMCI_LSYNC_OFFSET 12
+#define MMCI_LSYNC_SIZE 1
+
/* Bit manipulation macros */
#define MMCI_BIT(name) \
(1 << MMCI_##name##_OFFSET)
diff --git a/include/axp152.h b/include/axp152.h
new file mode 100644
index 0000000..3e5ccbd
--- /dev/null
+++ b/include/axp152.h
@@ -0,0 +1,10 @@
+/*
+ * (C) Copyright 2012 Henrik Nordstrom <henrik@henriknordstrom.net>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+int axp152_set_dcdc2(int mvolt);
+int axp152_set_dcdc3(int mvolt);
+int axp152_set_dcdc4(int mvolt);
+int axp152_set_ldo2(int mvolt);
+int axp152_init(void);
diff --git a/include/axp209.h b/include/axp209.h
new file mode 100644
index 0000000..21efce6
--- /dev/null
+++ b/include/axp209.h
@@ -0,0 +1,14 @@
+/*
+ * (C) Copyright 2012 Henrik Nordstrom <henrik@henriknordstrom.net>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+extern int axp209_set_dcdc2(int mvolt);
+extern int axp209_set_dcdc3(int mvolt);
+extern int axp209_set_ldo2(int mvolt);
+extern int axp209_set_ldo3(int mvolt);
+extern int axp209_set_ldo4(int mvolt);
+extern int axp209_init(void);
+extern int axp209_poweron_by_dc(void);
+extern int axp209_power_button(void);
diff --git a/include/common.h b/include/common.h
index 82c0a5a..1d6cb48 100644
--- a/include/common.h
+++ b/include/common.h
@@ -318,14 +318,14 @@ int arch_early_init_r(void);
void board_show_dram(ulong size);
/**
- * arch_fixup_memory_node() - Write arch-specific memory information to fdt
+ * arch_fixup_fdt() - Write arch-specific information to fdt
*
- * Defined in arch/$(ARCH)/lib/bootm.c
+ * Defined in arch/$(ARCH)/lib/bootm-fdt.c
*
* @blob: FDT blob to write to
* @return 0 if ok, or -ve FDT_ERR_... on failure
*/
-int arch_fixup_memory_node(void *blob);
+int arch_fixup_fdt(void *blob);
/* common/flash.c */
void flash_perror (int);
@@ -639,6 +639,11 @@ void serial_puts (const char *);
int serial_getc (void);
int serial_tstc (void);
+/* These versions take a stdio_dev pointer */
+struct stdio_dev;
+int serial_stub_getc(struct stdio_dev *sdev);
+int serial_stub_tstc(struct stdio_dev *sdev);
+
void _serial_setbrg (const int);
void _serial_putc (const char, const int);
void _serial_putc_raw(const char, const int);
diff --git a/include/configs/B4860QDS.h b/include/configs/B4860QDS.h
index 43c9df0..953d06b 100644
--- a/include/configs/B4860QDS.h
+++ b/include/configs/B4860QDS.h
@@ -23,7 +23,6 @@
#define CONFIG_RAMBOOT_TEXT_BASE CONFIG_SYS_TEXT_BASE
#define CONFIG_RESET_VECTOR_ADDRESS 0xfffffffc
#else
-#define CONFIG_SPL
#define CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT
#define CONFIG_SPL_ENV_SUPPORT
#define CONFIG_SPL_SERIAL_SUPPORT
diff --git a/include/configs/BSC9131RDB.h b/include/configs/BSC9131RDB.h
index 5a316c8..56a3e94 100644
--- a/include/configs/BSC9131RDB.h
+++ b/include/configs/BSC9131RDB.h
@@ -25,7 +25,6 @@
#endif
#ifdef CONFIG_NAND
-#define CONFIG_SPL
#define CONFIG_SPL_INIT_MINIMAL
#define CONFIG_SPL_SERIAL_SUPPORT
#define CONFIG_SPL_NAND_SUPPORT
diff --git a/include/configs/BSC9132QDS.h b/include/configs/BSC9132QDS.h
index 49c16af..aeded6d 100644
--- a/include/configs/BSC9132QDS.h
+++ b/include/configs/BSC9132QDS.h
@@ -41,7 +41,6 @@
#endif
#ifdef CONFIG_NAND
-#define CONFIG_SPL
#define CONFIG_SPL_INIT_MINIMAL
#define CONFIG_SPL_SERIAL_SUPPORT
#define CONFIG_SPL_NAND_SUPPORT
diff --git a/include/configs/C29XPCIE.h b/include/configs/C29XPCIE.h
index 0dd1560..715616d 100644
--- a/include/configs/C29XPCIE.h
+++ b/include/configs/C29XPCIE.h
@@ -24,8 +24,6 @@
#endif
#ifdef CONFIG_NAND
-#define CONFIG_SPL
-#define CONFIG_TPL
#ifdef CONFIG_TPL_BUILD
#define CONFIG_SPL_NAND_BOOT
#define CONFIG_SPL_FLUSH_IMAGE
diff --git a/include/configs/ELPPC.h b/include/configs/ELPPC.h
index 0ffbd41..debfc36 100644
--- a/include/configs/ELPPC.h
+++ b/include/configs/ELPPC.h
@@ -234,8 +234,8 @@
#define CONFIG_VIDEO
#define CONFIG_CFB_CONSOLE
#define VIDEO_KBD_INIT_FCT (simple_strtol (getenv("console"), NULL, 10))
-#define VIDEO_TSTC_FCT serial_tstc
-#define VIDEO_GETC_FCT serial_getc
+#define VIDEO_TSTC_FCT serial_stub_tstc
+#define VIDEO_GETC_FCT serial_stub_getc
#define CONFIG_VIDEO_SMI_LYNXEM
#define CONFIG_VIDEO_LOGO
diff --git a/include/configs/MHPC.h b/include/configs/MHPC.h
index 6314b53..d45be0f 100644
--- a/include/configs/MHPC.h
+++ b/include/configs/MHPC.h
@@ -96,8 +96,8 @@
#define CONFIG_VIDEO_LOGO
#define VIDEO_KBD_INIT_FCT 0 /* no KBD dev on MHPC - use serial */
-#define VIDEO_TSTC_FCT serial_tstc
-#define VIDEO_GETC_FCT serial_getc
+#define VIDEO_TSTC_FCT serial_stub_tstc
+#define VIDEO_GETC_FCT serial_stub_getc
#define CONFIG_BR0_WORKAROUND 1
diff --git a/include/configs/MPC8313ERDB.h b/include/configs/MPC8313ERDB.h
index 69b2cb1..dd81229 100644
--- a/include/configs/MPC8313ERDB.h
+++ b/include/configs/MPC8313ERDB.h
@@ -19,7 +19,6 @@
#define CONFIG_MPC8313ERDB 1
#ifdef CONFIG_NAND
-#define CONFIG_SPL
#define CONFIG_SPL_INIT_MINIMAL
#define CONFIG_SPL_SERIAL_SUPPORT
#define CONFIG_SPL_NAND_SUPPORT
diff --git a/include/configs/P1010RDB.h b/include/configs/P1010RDB.h
index 50529bf..a373990 100644
--- a/include/configs/P1010RDB.h
+++ b/include/configs/P1010RDB.h
@@ -21,7 +21,6 @@
#define CONFIG_NAND_FSL_IFC
#ifdef CONFIG_SDCARD
-#define CONFIG_SPL
#define CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT
#define CONFIG_SPL_DRIVERS_MISC_SUPPORT
#define CONFIG_SPL_ENV_SUPPORT
@@ -56,7 +55,6 @@
#define CONFIG_SYS_TEXT_BASE 0x11000000
#define CONFIG_RESET_VECTOR_ADDRESS 0x1107fffc
#else
-#define CONFIG_SPL
#define CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT
#define CONFIG_SPL_DRIVERS_MISC_SUPPORT
#define CONFIG_SPL_ENV_SUPPORT
@@ -88,7 +86,6 @@
#endif
#ifdef CONFIG_NAND
-#define CONFIG_SPL
#ifdef CONFIG_SECURE_BOOT
#define CONFIG_SPL_INIT_MINIMAL
#define CONFIG_SPL_SERIAL_SUPPORT
@@ -108,7 +105,6 @@
#define CONFIG_SYS_NAND_U_BOOT_OFFS 0
#define CONFIG_SYS_LDSCRIPT "arch/powerpc/cpu/mpc85xx/u-boot-nand.lds"
#else
-#define CONFIG_TPL
#ifdef CONFIG_TPL_BUILD
#define CONFIG_SPL_NAND_BOOT
#define CONFIG_SPL_FLUSH_IMAGE
diff --git a/include/configs/P1022DS.h b/include/configs/P1022DS.h
index 959cdf6..54e2569 100644
--- a/include/configs/P1022DS.h
+++ b/include/configs/P1022DS.h
@@ -16,7 +16,6 @@
#endif
#ifdef CONFIG_SDCARD
-#define CONFIG_SPL
#define CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT
#define CONFIG_SPL_ENV_SUPPORT
#define CONFIG_SPL_SERIAL_SUPPORT
@@ -45,7 +44,6 @@
#endif
#ifdef CONFIG_SPIFLASH
-#define CONFIG_SPL
#define CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT
#define CONFIG_SPL_ENV_SUPPORT
#define CONFIG_SPL_SERIAL_SUPPORT
@@ -79,8 +77,6 @@
#define CONFIG_SYS_NAND_MAX_OOBFREE 5
#ifdef CONFIG_NAND
-#define CONFIG_SPL
-#define CONFIG_TPL
#ifdef CONFIG_TPL_BUILD
#define CONFIG_SPL_NAND_BOOT
#define CONFIG_SPL_FLUSH_IMAGE
diff --git a/include/configs/P1_P2_RDB.h b/include/configs/P1_P2_RDB.h
index 110ba5f..c75638a 100644
--- a/include/configs/P1_P2_RDB.h
+++ b/include/configs/P1_P2_RDB.h
@@ -36,7 +36,6 @@
#endif
#ifdef CONFIG_SDCARD
-#define CONFIG_SPL
#define CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT
#define CONFIG_SPL_ENV_SUPPORT
#define CONFIG_SPL_SERIAL_SUPPORT
@@ -64,7 +63,6 @@
#endif
#ifdef CONFIG_SPIFLASH
-#define CONFIG_SPL
#define CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT
#define CONFIG_SPL_ENV_SUPPORT
#define CONFIG_SPL_SERIAL_SUPPORT
@@ -93,8 +91,6 @@
#endif
#ifdef CONFIG_NAND
-#define CONFIG_SPL
-#define CONFIG_TPL
#ifdef CONFIG_TPL_BUILD
#define CONFIG_SPL_NAND_BOOT
#define CONFIG_SPL_FLUSH_IMAGE
diff --git a/include/configs/T104xRDB.h b/include/configs/T104xRDB.h
index c96f03c..c4bf0d6 100644
--- a/include/configs/T104xRDB.h
+++ b/include/configs/T104xRDB.h
@@ -22,7 +22,6 @@
#define CONFIG_SYS_FSL_PBL_RCW $(SRCTREE)/board/freescale/t104xrdb/t1042_rcw.cfg
#endif
-#define CONFIG_SPL
#define CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT
#define CONFIG_SPL_ENV_SUPPORT
#define CONFIG_SPL_SERIAL_SUPPORT
diff --git a/include/configs/T208xQDS.h b/include/configs/T208xQDS.h
index 784310a..395472b 100644
--- a/include/configs/T208xQDS.h
+++ b/include/configs/T208xQDS.h
@@ -55,7 +55,6 @@
#define CONFIG_SYS_FSL_PBL_RCW board/freescale/t208xqds/t2081_rcw.cfg
#endif
-#define CONFIG_SPL
#define CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT
#define CONFIG_SPL_ENV_SUPPORT
#define CONFIG_SPL_SERIAL_SUPPORT
diff --git a/include/configs/T208xRDB.h b/include/configs/T208xRDB.h
index deeabae..e5936c7 100644
--- a/include/configs/T208xRDB.h
+++ b/include/configs/T208xRDB.h
@@ -44,7 +44,6 @@
#define CONFIG_SYS_FSL_PBL_PBI board/freescale/t208xrdb/t2080_pbi.cfg
#define CONFIG_SYS_FSL_PBL_RCW board/freescale/t208xrdb/t2080_rcw.cfg
-#define CONFIG_SPL
#define CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT
#define CONFIG_SPL_ENV_SUPPORT
#define CONFIG_SPL_SERIAL_SUPPORT
diff --git a/include/configs/T4240QDS.h b/include/configs/T4240QDS.h
index efdb68b..ca97247 100644
--- a/include/configs/T4240QDS.h
+++ b/include/configs/T4240QDS.h
@@ -25,7 +25,6 @@
#define CONFIG_RAMBOOT_TEXT_BASE CONFIG_SYS_TEXT_BASE
#define CONFIG_RESET_VECTOR_ADDRESS 0xfffffffc
#else
-#define CONFIG_SPL
#define CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT
#define CONFIG_SPL_ENV_SUPPORT
#define CONFIG_SPL_SERIAL_SUPPORT
diff --git a/include/configs/a3m071.h b/include/configs/a3m071.h
index 205adfd..a4050f3 100644
--- a/include/configs/a3m071.h
+++ b/include/configs/a3m071.h
@@ -412,7 +412,6 @@
/*
* SPL related defines
*/
-#define CONFIG_SPL
#define CONFIG_SPL_FRAMEWORK
#define CONFIG_SPL_BOARD_INIT
#define CONFIG_SPL_NOR_SUPPORT
diff --git a/include/configs/alt.h b/include/configs/alt.h
new file mode 100644
index 0000000..9eec4bc
--- /dev/null
+++ b/include/configs/alt.h
@@ -0,0 +1,166 @@
+/*
+ * include/configs/alt.h
+ * This file is alt board configuration.
+ *
+ * Copyright (C) 2014 Renesas Electronics Corporation
+ *
+ * SPDX-License-Identifier: GPL-2.0
+ */
+
+#ifndef __ALT_H
+#define __ALT_H
+
+#undef DEBUG
+#define CONFIG_ARMV7
+#define CONFIG_R8A7794
+#define CONFIG_RMOBILE
+#define CONFIG_RMOBILE_BOARD_STRING "Alt"
+#define CONFIG_SH_GPIO_PFC
+
+#include <asm/arch/rmobile.h>
+
+#define CONFIG_CMD_EDITENV
+#define CONFIG_CMD_SAVEENV
+#define CONFIG_CMD_MEMORY
+#define CONFIG_CMD_DFL
+#define CONFIG_CMD_SDRAM
+#define CONFIG_CMD_RUN
+#define CONFIG_CMD_LOADS
+#define CONFIG_CMD_NET
+#define CONFIG_CMD_MII
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_DHCP
+#define CONFIG_CMD_NFS
+#define CONFIG_CMD_BOOTZ
+#define CONFIG_CMD_SF
+#define CONFIG_CMD_SPI
+
+#define CONFIG_SYS_TEXT_BASE 0xE6304000
+#define CONFIG_SYS_THUMB_BUILD
+#define CONFIG_SYS_GENERIC_BOARD
+
+#define CONFIG_CMDLINE_TAG
+#define CONFIG_SETUP_MEMORY_TAGS
+#define CONFIG_INITRD_TAG
+#define CONFIG_CMDLINE_EDITING
+
+#define CONFIG_OF_LIBFDT
+#define BOARD_LATE_INIT
+
+#define CONFIG_BAUDRATE 38400
+#define CONFIG_BOOTDELAY 3
+#define CONFIG_BOOTARGS ""
+
+#define CONFIG_VERSION_VARIABLE
+#undef CONFIG_SHOW_BOOT_PROGRESS
+
+#define CONFIG_ARCH_CPU_INIT
+#define CONFIG_DISPLAY_CPUINFO
+#define CONFIG_DISPLAY_BOARDINFO
+#define CONFIG_BOARD_EARLY_INIT_F
+#define CONFIG_TMU_TIMER
+
+#define CONFIG_SYS_INIT_SP_ADDR 0xE633FFFC
+#define STACK_AREA_SIZE 0xC000
+#define LOW_LEVEL_MERAM_STACK \
+ (CONFIG_SYS_INIT_SP_ADDR + STACK_AREA_SIZE - 4)
+
+/* MEMORY */
+#define ALT_SDRAM_BASE 0x40000000
+#define ALT_SDRAM_SIZE (1024u * 1024 * 1024)
+#define ALT_UBOOT_SDRAM_SIZE (512 * 1024 * 1024)
+
+#define CONFIG_SYS_LONGHELP
+#define CONFIG_SYS_CBSIZE 256
+#define CONFIG_SYS_PBSIZE 256
+#define CONFIG_SYS_MAXARGS 16
+#define CONFIG_SYS_BARGSIZE 512
+#define CONFIG_SYS_BAUDRATE_TABLE { 38400, 115200 }
+
+/* SCIF */
+#define CONFIG_SCIF_CONSOLE
+#define CONFIG_CONS_SCIF2
+#undef CONFIG_SYS_CONSOLE_INFO_QUIET
+#undef CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE
+#undef CONFIG_SYS_CONSOLE_ENV_OVERWRITE
+
+#define CONFIG_SYS_MEMTEST_START (ALT_SDRAM_BASE)
+#define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_MEMTEST_START + \
+ 504 * 1024 * 1024)
+#undef CONFIG_SYS_ALT_MEMTEST
+#undef CONFIG_SYS_MEMTEST_SCRATCH
+#undef CONFIG_SYS_LOADS_BAUD_CHANGE
+
+#define CONFIG_SYS_SDRAM_BASE (ALT_SDRAM_BASE)
+#define CONFIG_SYS_SDRAM_SIZE (ALT_UBOOT_SDRAM_SIZE)
+#define CONFIG_SYS_LOAD_ADDR (CONFIG_SYS_SDRAM_BASE + 0x7fc0)
+#define CONFIG_NR_DRAM_BANKS 1
+
+#define CONFIG_SYS_MONITOR_BASE 0x00000000
+#define CONFIG_SYS_MONITOR_LEN (256 * 1024)
+#define CONFIG_SYS_MALLOC_LEN (1 * 1024 * 1024)
+#define CONFIG_SYS_BOOTMAPSZ (8 * 1024 * 1024)
+
+/* FLASH */
+#define CONFIG_SPI
+#define CONFIG_SPI_FLASH_BAR
+#define CONFIG_SH_QSPI
+#define CONFIG_SPI_FLASH
+#define CONFIG_SPI_FLASH_SPANSION
+#define CONFIG_SPI_FLASH_QUAD
+#define CONFIG_SYS_NO_FLASH
+
+/* ENV setting */
+#define CONFIG_ENV_IS_IN_SPI_FLASH
+#define CONFIG_ENV_SECT_SIZE (256 * 1024)
+#define CONFIG_ENV_ADDR 0xC0000
+#define CONFIG_ENV_OFFSET (CONFIG_ENV_ADDR)
+#define CONFIG_ENV_SIZE (CONFIG_ENV_SECT_SIZE)
+
+#define CONFIG_EXTRA_ENV_SETTINGS \
+ "bootm_low=0x40e00000\0" \
+ "bootm_size=0x100000\0" \
+
+/* SH Ether */
+#define CONFIG_NET_MULTI
+#define CONFIG_SH_ETHER
+#define CONFIG_SH_ETHER_USE_PORT 0
+#define CONFIG_SH_ETHER_PHY_ADDR 0x1
+#define CONFIG_SH_ETHER_PHY_MODE PHY_INTERFACE_MODE_RMII
+#define CONFIG_SH_ETHER_CACHE_WRITEBACK
+#define CONFIG_SH_ETHER_CACHE_INVALIDATE
+#define CONFIG_SH_ETHER_ALIGNE_SIZE 64
+#define CONFIG_PHYLIB
+#define CONFIG_PHY_MICREL
+#define CONFIG_BITBANGMII
+#define CONFIG_BITBANGMII_MULTI
+
+/* Board Clock */
+#define RMOBILE_XTAL_CLK 20000000u
+#define CONFIG_SYS_CLK_FREQ RMOBILE_XTAL_CLK
+#define CONFIG_SH_TMU_CLK_FREQ (CONFIG_SYS_CLK_FREQ / 2) /* EXT / 2 */
+#define CONFIG_PLL1_CLK_FREQ (CONFIG_SYS_CLK_FREQ * 156 / 2)
+#define CONFIG_P_CLK_FREQ (CONFIG_PLL1_CLK_FREQ / 24)
+#define CONFIG_SH_SCIF_CLK_FREQ CONFIG_P_CLK_FREQ
+
+#define CONFIG_SYS_TMU_CLK_DIV 4
+
+/* i2c */
+#define CONFIG_CMD_I2C
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_SH
+#define CONFIG_SYS_I2C_SLAVE 0x7F
+#define CONFIG_SYS_I2C_SH_NUM_CONTROLLERS 3
+#define CONFIG_SYS_I2C_SH_BASE0 0xE6500000
+#define CONFIG_SYS_I2C_SH_SPEED0 400000
+#define CONFIG_SYS_I2C_SH_BASE1 0xE6510000
+#define CONFIG_SYS_I2C_SH_SPEED1 400000
+#define CONFIG_SYS_I2C_SH_BASE2 0xE60B0000
+#define CONFIG_SYS_I2C_SH_SPEED2 400000
+#define CONFIG_SH_I2C_DATA_HIGH 4
+#define CONFIG_SH_I2C_DATA_LOW 5
+#define CONFIG_SH_I2C_CLOCK 10000000
+
+#define CONFIG_SYS_I2C_POWERIC_ADDR 0x58 /* da9063 */
+
+#endif /* __ALT_H */
diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h
index 34d27c6..35ae0e6 100644
--- a/include/configs/am335x_evm.h
+++ b/include/configs/am335x_evm.h
@@ -254,6 +254,11 @@
#define CONFIG_NAND_OMAP_ECCSCHEME OMAP_ECC_BCH8_CODE_HW
#define CONFIG_SYS_NAND_U_BOOT_START CONFIG_SYS_TEXT_BASE
#define CONFIG_SYS_NAND_U_BOOT_OFFS 0x80000
+#ifdef CONFIG_SPL_OS_BOOT
+#define CONFIG_CMD_SPL_NAND_OFS 0x00080000 /* os parameters */
+#define CONFIG_SYS_NAND_SPL_KERNEL_OFFS 0x00200000 /* kernel offset */
+#define CONFIG_CMD_SPL_WRITE_SIZE 0x2000
+#endif
#endif
#endif
@@ -453,6 +458,7 @@
#define CONFIG_SYS_MAX_FLASH_BANKS 1
#define CONFIG_SYS_FLASH_BASE (0x08000000)
#define CONFIG_SYS_FLASH_CFI_WIDTH FLASH_CFI_16BIT
+#define CONFIG_SYS_FLASH_SIZE 0x01000000
#define CONFIG_SYS_MONITOR_BASE CONFIG_SYS_FLASH_BASE
/* Reduce SPL size by removing unlikey targets */
#ifdef CONFIG_NOR_BOOT
diff --git a/include/configs/am335x_igep0033.h b/include/configs/am335x_igep0033.h
index c17327f..dcded0a 100644
--- a/include/configs/am335x_igep0033.h
+++ b/include/configs/am335x_igep0033.h
@@ -211,7 +211,6 @@
#undef CONFIG_USE_IRQ
/* Defines for SPL */
-#define CONFIG_SPL
#define CONFIG_SPL_FRAMEWORK
/*
* Place the image at the start of the ROM defined image space.
diff --git a/include/configs/am3517_crane.h b/include/configs/am3517_crane.h
index ad4cbd8..898ed2e 100644
--- a/include/configs/am3517_crane.h
+++ b/include/configs/am3517_crane.h
@@ -252,17 +252,12 @@
*/
/* **** PISMO SUPPORT *** */
-
-/* Configure the PISMO */
-#define PISMO1_NAND_SIZE GPMC_SIZE_128M
-#define PISMO1_ONEN_SIZE GPMC_SIZE_128M
-
#define CONFIG_SYS_MAX_FLASH_SECT 520 /* max number of sectors */
/* on one chip */
#define CONFIG_SYS_MAX_FLASH_BANKS 2 /* max number of flash banks */
#define CONFIG_SYS_MONITOR_LEN (256 << 10) /* Reserve 2 sectors */
-#define CONFIG_SYS_FLASH_BASE PISMO1_NAND_BASE
+#define CONFIG_SYS_FLASH_BASE NAND_BASE
/* Monitor at start of flash */
#define CONFIG_SYS_MONITOR_BASE CONFIG_SYS_FLASH_BASE
@@ -298,7 +293,6 @@
GENERATED_GBL_DATA_SIZE)
/* Defines for SPL */
-#define CONFIG_SPL
#define CONFIG_SPL_FRAMEWORK
#define CONFIG_SPL_BOARD_INIT
#define CONFIG_SPL_NAND_SIMPLE
diff --git a/include/configs/am3517_evm.h b/include/configs/am3517_evm.h
index 0102ff5..1e2d55b 100644
--- a/include/configs/am3517_evm.h
+++ b/include/configs/am3517_evm.h
@@ -259,18 +259,13 @@
*/
/* **** PISMO SUPPORT *** */
-
-/* Configure the PISMO */
-#define PISMO1_NAND_SIZE GPMC_SIZE_128M
-#define PISMO1_ONEN_SIZE GPMC_SIZE_128M
-
#define CONFIG_SYS_MAX_FLASH_SECT 520 /* max number of sectors */
/* on one chip */
#define CONFIG_SYS_MAX_FLASH_BANKS 2 /* max number of flash banks */
#define CONFIG_SYS_MONITOR_LEN (256 << 10) /* Reserve 2 sectors */
#if defined(CONFIG_CMD_NAND)
-#define CONFIG_SYS_FLASH_BASE PISMO1_NAND_BASE
+#define CONFIG_SYS_FLASH_BASE NAND_BASE
#endif
/* Monitor at start of flash */
@@ -307,7 +302,6 @@
GENERATED_GBL_DATA_SIZE)
/* Defines for SPL */
-#define CONFIG_SPL
#define CONFIG_SPL_FRAMEWORK
#define CONFIG_SPL_BOARD_INIT
#define CONFIG_SPL_NAND_SIMPLE
diff --git a/include/configs/am43xx_evm.h b/include/configs/am43xx_evm.h
index 974ce98..e262040 100644
--- a/include/configs/am43xx_evm.h
+++ b/include/configs/am43xx_evm.h
@@ -33,6 +33,8 @@
#define CONFIG_SYS_I2C_MULTI_EEPROMS
/* Power */
+#define CONFIG_POWER
+#define CONFIG_POWER_I2C
#define CONFIG_POWER_TPS65218
/* SPL defines. */
diff --git a/include/configs/apf27.h b/include/configs/apf27.h
index b10c48c..4424c30 100644
--- a/include/configs/apf27.h
+++ b/include/configs/apf27.h
@@ -37,7 +37,6 @@
/*
* SPL
*/
-#define CONFIG_SPL
#define CONFIG_SPL_TARGET "u-boot-with-spl.bin"
#define CONFIG_SPL_LDSCRIPT "arch/$(ARCH)/cpu/u-boot-spl.lds"
#define CONFIG_SPL_MAX_SIZE 2048
diff --git a/include/configs/arndale.h b/include/configs/arndale.h
index 370db82..64b54ab 100644
--- a/include/configs/arndale.h
+++ b/include/configs/arndale.h
@@ -121,7 +121,6 @@
/* MMC SPL */
#define CONFIG_EXYNOS_SPL
-#define CONFIG_SPL
#define COPY_BL2_FNPTR_ADDR 0x02020030
#define CONFIG_SPL_LIBCOMMON_SUPPORT
diff --git a/include/configs/bur_am335x_common.h b/include/configs/bur_am335x_common.h
index 5a37536..3f889f8 100644
--- a/include/configs/bur_am335x_common.h
+++ b/include/configs/bur_am335x_common.h
@@ -164,7 +164,6 @@
* under common/spl/. Given our generally common memory map, we set a
* number of related defaults and sizes here.
*/
-#define CONFIG_SPL
#define CONFIG_SPL_FRAMEWORK
/*
* Place the image at the start of the ROM defined image space.
diff --git a/include/configs/cam_enc_4xx.h b/include/configs/cam_enc_4xx.h
index d1a8ff2..5f30279 100644
--- a/include/configs/cam_enc_4xx.h
+++ b/include/configs/cam_enc_4xx.h
@@ -199,7 +199,6 @@
#define CONFIG_SYS_NAND_BLOCK_SIZE 0x20000
/* Defines for SPL */
-#define CONFIG_SPL
#define CONFIG_SPL_FRAMEWORK
#define CONFIG_SPL_BOARD_INIT
#define CONFIG_SPL_LIBGENERIC_SUPPORT
diff --git a/include/configs/cm_t335.h b/include/configs/cm_t335.h
index 4d1dd28..a3e6452 100644
--- a/include/configs/cm_t335.h
+++ b/include/configs/cm_t335.h
@@ -150,6 +150,11 @@
#define CONFIG_ENV_OFFSET 0x300000 /* environment starts here */
#define CONFIG_SYS_ENV_SECT_SIZE (128 << 10) /* 128 KiB */
#define CONFIG_SYS_NAND_ONFI_DETECTION
+#ifdef CONFIG_SPL_OS_BOOT
+#define CONFIG_CMD_SPL_NAND_OFS 0x400000 /* un-assigned: (using dtb) */
+#define CONFIG_SYS_NAND_SPL_KERNEL_OFFS 0x500000
+#define CONFIG_CMD_SPL_WRITE_SIZE 0x2000
+#endif
/* GPIO pin + bank to pin ID mapping */
#define GPIO_PIN(_bank, _pin) ((_bank << 5) + _pin)
diff --git a/include/configs/cm_t35.h b/include/configs/cm_t35.h
index 5c484ef..c63608c 100644
--- a/include/configs/cm_t35.h
+++ b/include/configs/cm_t35.h
@@ -258,9 +258,6 @@
*/
/* **** PISMO SUPPORT *** */
-/* Configure the PISMO */
-#define PISMO1_NAND_SIZE GPMC_SIZE_128M
-
/* Monitor at start of flash */
#define CONFIG_SYS_MONITOR_BASE CONFIG_SYS_FLASH_BASE
#define CONFIG_SYS_MONITOR_LEN (256 << 10) /* Reserve 2 sectors */
@@ -319,7 +316,6 @@
#define CONFIG_OMAP3_SPI
/* Defines for SPL */
-#define CONFIG_SPL
#define CONFIG_SPL_FRAMEWORK
#define CONFIG_SPL_NAND_SIMPLE
diff --git a/include/configs/controlcenterd.h b/include/configs/controlcenterd.h
index ec3145f..7eaaf69 100644
--- a/include/configs/controlcenterd.h
+++ b/include/configs/controlcenterd.h
@@ -45,6 +45,8 @@
#define CONFIG_CONTROLCENTERD
#define CONFIG_MP /* support multiple processors */
+#define CONFIG_SYS_GENERIC_BOARD
+
#define CONFIG_SYS_NO_FLASH
#define CONFIG_ENABLE_36BIT_PHYS
#define CONFIG_FSL_LAW /* Use common FSL init code */
diff --git a/include/configs/da850evm.h b/include/configs/da850evm.h
index b279409..1252d7a 100644
--- a/include/configs/da850evm.h
+++ b/include/configs/da850evm.h
@@ -368,7 +368,6 @@
#ifndef CONFIG_DIRECT_NOR_BOOT
/* defines for SPL */
-#define CONFIG_SPL
#define CONFIG_SPL_FRAMEWORK
#define CONFIG_SPL_BOARD_INIT
#define CONFIG_SYS_SPL_MALLOC_START (CONFIG_SYS_TEXT_BASE - \
diff --git a/include/configs/devkit8000.h b/include/configs/devkit8000.h
index 5308790..69c51bc 100644
--- a/include/configs/devkit8000.h
+++ b/include/configs/devkit8000.h
@@ -262,8 +262,6 @@
#define PHYS_SDRAM_2 OMAP34XX_SDRC_CS1
/* NAND and environment organization */
-#define PISMO1_NAND_SIZE GPMC_SIZE_128M
-
#define CONFIG_SYS_MONITOR_LEN (256 << 10) /* Reserve 2 sectors */
#define CONFIG_ENV_IS_IN_NAND 1
@@ -283,7 +281,6 @@
#define CONFIG_SYS_SRAM_SIZE 0x10000
/* Defines for SPL */
-#define CONFIG_SPL
#define CONFIG_SPL_FRAMEWORK
#define CONFIG_SPL_NAND_SIMPLE
diff --git a/include/configs/dig297.h b/include/configs/dig297.h
index ce205e9..7e47c56 100644
--- a/include/configs/dig297.h
+++ b/include/configs/dig297.h
@@ -251,10 +251,6 @@
*/
/* **** PISMO SUPPORT *** */
-
-/* Configure the PISMO */
-#define PISMO1_NAND_SIZE GPMC_SIZE_128M
-
#define CONFIG_SYS_MONITOR_LEN (256 << 10) /* Reserve 2 sectors */
#define CONFIG_SYS_FLASH_BASE boot_flash_base
diff --git a/include/configs/dlvision-10g.h b/include/configs/dlvision-10g.h
index 6153a40..d9bd564 100644
--- a/include/configs/dlvision-10g.h
+++ b/include/configs/dlvision-10g.h
@@ -24,6 +24,7 @@
#define CONFIG_BOARD_EARLY_INIT_R
#define CONFIG_MISC_INIT_R
#define CONFIG_LAST_STAGE_INIT
+#define CONFIG_SYS_GENERIC_BOARD
#define CONFIG_SYS_CLK_FREQ 33333333 /* external frequency to pll */
diff --git a/include/configs/dlvision.h b/include/configs/dlvision.h
index 1e86c55..af0d602 100644
--- a/include/configs/dlvision.h
+++ b/include/configs/dlvision.h
@@ -22,6 +22,7 @@
#define CONFIG_BOARD_EARLY_INIT_F /* call board_early_init_f */
#define CONFIG_MISC_INIT_R /* call misc_init_r */
+#define CONFIG_SYS_GENERIC_BOARD
#define CONFIG_SYS_CLK_FREQ 33333333 /* external frequency to pll */
diff --git a/include/configs/edminiv2.h b/include/configs/edminiv2.h
index 8b9f66a..77717a8 100644
--- a/include/configs/edminiv2.h
+++ b/include/configs/edminiv2.h
@@ -187,7 +187,8 @@
* I2C related stuff
*/
#ifdef CONFIG_CMD_I2C
-#define CONFIG_I2C_MVTWSI
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_MVTWSI
#define CONFIG_I2C_MVTWSI_BASE ORION5X_TWSI_BASE
#define CONFIG_SYS_I2C_SLAVE 0x0
#define CONFIG_SYS_I2C_SPEED 100000
diff --git a/include/configs/exynos5-dt.h b/include/configs/exynos5-dt.h
index e36a031..a7c6292 100644
--- a/include/configs/exynos5-dt.h
+++ b/include/configs/exynos5-dt.h
@@ -136,7 +136,6 @@
#define CONFIG_TPM_TIS_I2C_SLAVE_ADDR 0x20
/* MMC SPL */
-#define CONFIG_SPL
#define COPY_BL2_FNPTR_ADDR 0x02020030
#define CONFIG_SPL_LIBCOMMON_SUPPORT
diff --git a/include/configs/gdppc440etx.h b/include/configs/gdppc440etx.h
index 6810b3b..12fd75d 100644
--- a/include/configs/gdppc440etx.h
+++ b/include/configs/gdppc440etx.h
@@ -32,6 +32,7 @@
#define CONFIG_BOARD_EARLY_INIT_F 1 /* call board_early_init_f*/
#define CONFIG_MISC_INIT_R 1 /* call misc_init_r() */
+#define CONFIG_SYS_GENERIC_BOARD
#undef CONFIG_ZERO_BOOTDELAY_CHECK /* ignore keypress on bootdelay==0 */
#define CONFIG_AUTOBOOT_KEYED /* use key strings to stop autoboot */
diff --git a/include/configs/hawkboard.h b/include/configs/hawkboard.h
index 73e1624..8188c7b 100644
--- a/include/configs/hawkboard.h
+++ b/include/configs/hawkboard.h
@@ -46,7 +46,6 @@
#endif
/* Spl */
-#define CONFIG_SPL
#define CONFIG_SPL_FRAMEWORK
#define CONFIG_SPL_BOARD_INIT
#define CONFIG_SPL_NAND_SUPPORT
diff --git a/include/configs/intip.h b/include/configs/intip.h
index b56b3aa..928eb5b 100644
--- a/include/configs/intip.h
+++ b/include/configs/intip.h
@@ -45,6 +45,7 @@
#define CONFIG_BOARD_EARLY_INIT_F 1 /* Call board_early_init_f */
#define CONFIG_BOARD_EARLY_INIT_R 1 /* Call board_early_init_r */
#define CONFIG_MISC_INIT_R 1 /* Call misc_init_r */
+#define CONFIG_SYS_GENERIC_BOARD
#define CONFIG_BOARD_TYPES 1 /* support board types */
#define CONFIG_FIT
#define CFG_ALT_MEMTEST
diff --git a/include/configs/io.h b/include/configs/io.h
index 8e32c25..d4ae0ad 100644
--- a/include/configs/io.h
+++ b/include/configs/io.h
@@ -24,6 +24,7 @@
#define CONFIG_BOARD_EARLY_INIT_R
#define CONFIG_MISC_INIT_R
#define CONFIG_LAST_STAGE_INIT
+#define CONFIG_SYS_GENERIC_BOARD
#define CONFIG_SYS_CLK_FREQ 33333333 /* external frequency to pll */
diff --git a/include/configs/io64.h b/include/configs/io64.h
index 6915b20..2a9ff37 100644
--- a/include/configs/io64.h
+++ b/include/configs/io64.h
@@ -43,6 +43,7 @@
#define CONFIG_BOARD_EARLY_INIT_R
#define CONFIG_MISC_INIT_R
#define CONFIG_LAST_STAGE_INIT
+#define CONFIG_SYS_GENERIC_BOARD
#undef CONFIG_ZERO_BOOTDELAY_CHECK /* ignore keypress on bootdelay==0 */
#define CONFIG_AUTOBOOT_KEYED /* use key strings to stop autoboot */
diff --git a/include/configs/iocon.h b/include/configs/iocon.h
index ae05bcb..38d473d 100644
--- a/include/configs/iocon.h
+++ b/include/configs/iocon.h
@@ -23,6 +23,7 @@
#define CONFIG_BOARD_EARLY_INIT_F
#define CONFIG_BOARD_EARLY_INIT_R
#define CONFIG_LAST_STAGE_INIT
+#define CONFIG_SYS_GENERIC_BOARD
#define CONFIG_SYS_CLK_FREQ 33333333 /* external frequency to pll */
diff --git a/include/configs/ipam390.h b/include/configs/ipam390.h
index fdd5680..98e819b 100644
--- a/include/configs/ipam390.h
+++ b/include/configs/ipam390.h
@@ -298,7 +298,6 @@
"-(rootfs)"
/* defines for SPL */
-#define CONFIG_SPL
#define CONFIG_SPL_FRAMEWORK
#define CONFIG_SPL_BOARD_INIT
#define CONFIG_SYS_SPL_MALLOC_START (CONFIG_SYS_TEXT_BASE - \
diff --git a/include/configs/jadecpu.h b/include/configs/jadecpu.h
index b34e342..759e112 100644
--- a/include/configs/jadecpu.h
+++ b/include/configs/jadecpu.h
@@ -87,8 +87,8 @@
#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE (800*480 + 256*4 + 10*1024)
#define VIDEO_FB_16BPP_WORD_SWAP
#define VIDEO_KBD_INIT_FCT 0
-#define VIDEO_TSTC_FCT serial_tstc
-#define VIDEO_GETC_FCT serial_getc
+#define VIDEO_TSTC_FCT serial_stub_tstc
+#define VIDEO_GETC_FCT serial_stub_getc
/*
* BOOTP options
diff --git a/include/configs/k2e_evm.h b/include/configs/k2e_evm.h
new file mode 100644
index 0000000..3502d10
--- /dev/null
+++ b/include/configs/k2e_evm.h
@@ -0,0 +1,37 @@
+/*
+ * Configuration header file for TI's k2e-evm
+ *
+ * (C) Copyright 2012-2014
+ * Texas Instruments Incorporated, <www.ti.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef __CONFIG_K2E_EVM_H
+#define __CONFIG_K2E_EVM_H
+
+/* Platform type */
+#define CONFIG_SOC_K2E
+#define CONFIG_K2E_EVM
+
+/* U-Boot general configuration */
+#define CONFIG_SYS_PROMPT "K2E EVM # "
+
+#define KS2_ARGS_UBI "args_ubi=setenv bootargs ${bootargs} rootfstype=ubifs "\
+ "root=ubi0:rootfs rootflags=sync rw ubi.mtd=2,2048\0"
+
+#define KS2_FDT_NAME "name_fdt=k2e-evm.dtb\0"
+#define KS2_ADDR_MON "addr_mon=0x0c140000\0"
+#define KS2_NAME_MON "name_mon=skern-k2e-evm.bin\0"
+#define NAME_UBOOT "name_uboot=u-boot-spi-k2e-evm.gph\0"
+#define NAME_UBI "name_ubi=k2e-evm-ubifs.ubi\0"
+
+#include <configs/ks2_evm.h>
+
+/* SPL SPI Loader Configuration */
+#define CONFIG_SPL_TEXT_BASE 0x0c100000
+
+/* NAND Configuration */
+#define CONFIG_SYS_NAND_PAGE_2K
+
+#endif /* __CONFIG_K2E_EVM_H */
diff --git a/include/configs/k2hk_evm.h b/include/configs/k2hk_evm.h
index 858329f..8aa616d 100644
--- a/include/configs/k2hk_evm.h
+++ b/include/configs/k2hk_evm.h
@@ -14,252 +14,27 @@
#define CONFIG_SOC_K2HK
#define CONFIG_K2HK_EVM
-/* U-Boot Build Configuration */
-#define CONFIG_SKIP_LOWLEVEL_INIT /* U-Boot is a 2nd stage loader */
-#define CONFIG_SYS_NO_FLASH /* that is, no *NOR* flash */
-#define CONFIG_SYS_CONSOLE_INFO_QUIET
-#define CONFIG_BOARD_EARLY_INIT_F
-#define CONFIG_SYS_THUMB_BUILD
-
-/* SoC Configuration */
-#define CONFIG_ARMV7
-#define CONFIG_ARCH_CPU_INIT
-#define CONFIG_SYS_ARCH_TIMER
-#define CONFIG_SYS_HZ 1000
-#define CONFIG_SYS_TEXT_BASE 0x0c001000
-#define CONFIG_SPL_TARGET "u-boot-spi.gph"
-#define CONFIG_SYS_DCACHE_OFF
-
-/* Memory Configuration */
-#define CONFIG_NR_DRAM_BANKS 2
-#define CONFIG_SYS_SDRAM_BASE 0x80000000
-#define CONFIG_SYS_LPAE_SDRAM_BASE 0x800000000
-#define CONFIG_MAX_RAM_BANK_SIZE (2 << 30) /* 2GB */
-#define CONFIG_STACKSIZE (512 << 10) /* 512 KiB */
-#define CONFIG_SYS_MALLOC_LEN (4 << 20) /* 4 MiB */
-#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_TEXT_BASE - \
- GENERATED_GBL_DATA_SIZE)
-
-/* SPL SPI Loader Configuration */
-#define CONFIG_SPL_TEXT_BASE 0x0c200000
-#define CONFIG_SPL_PAD_TO 65536
-#define CONFIG_SPL_MAX_SIZE (CONFIG_SPL_PAD_TO - 8)
-#define CONFIG_SPL_BSS_START_ADDR (CONFIG_SPL_TEXT_BASE + \
- CONFIG_SPL_MAX_SIZE)
-#define CONFIG_SPL_BSS_MAX_SIZE (32 * 1024)
-#define CONFIG_SYS_SPL_MALLOC_START (CONFIG_SPL_BSS_START_ADDR + \
- CONFIG_SPL_BSS_MAX_SIZE)
-#define CONFIG_SYS_SPL_MALLOC_SIZE (32 * 1024)
-#define CONFIG_SPL_STACK_SIZE (8 * 1024)
-#define CONFIG_SPL_STACK (CONFIG_SYS_SPL_MALLOC_START + \
- CONFIG_SYS_SPL_MALLOC_SIZE + \
- CONFIG_SPL_STACK_SIZE - 4)
-#define CONFIG_SPL_LIBCOMMON_SUPPORT
-#define CONFIG_SPL_LIBGENERIC_SUPPORT
-#define CONFIG_SPL_SERIAL_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
-#define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_BOARD_INIT
-#define CONFIG_SPL_SPI_LOAD
-#define CONFIG_SPL_SPI_BUS 0
-#define CONFIG_SPL_SPI_CS 0
-#define CONFIG_SYS_SPI_U_BOOT_OFFS CONFIG_SPL_PAD_TO
-#define CONFIG_SPL_FRAMEWORK
-
-/* UART Configuration */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_MEM32
-#define CONFIG_SYS_NS16550_REG_SIZE -4
-#define CONFIG_SYS_NS16550_COM1 KS2_UART0_BASE
-#define CONFIG_SYS_NS16550_COM2 KS2_UART1_BASE
-#define CONFIG_SYS_NS16550_CLK clk_get_rate(K2HK_CLK1_6)
-#define CONFIG_CONS_INDEX 1
-#define CONFIG_BAUDRATE 115200
-
-/* SPI Configuration */
-#define CONFIG_SPI
-#define CONFIG_SPI_FLASH
-#define CONFIG_SPI_FLASH_STMICRO
-#define CONFIG_DAVINCI_SPI
-#define CONFIG_SYS_SPI0
-#define CONFIG_SYS_SPI_BASE K2HK_SPI_BASE
-#define CONFIG_SYS_SPI0_NUM_CS 4
-#define CONFIG_SYS_SPI1
-#define CONFIG_SYS_SPI1_BASE K2HK_SPI1_BASE
-#define CONFIG_SYS_SPI1_NUM_CS 4
-#define CONFIG_SYS_SPI2
-#define CONFIG_SYS_SPI2_NUM_CS 4
-#define CONFIG_SYS_SPI2_BASE K2HK_SPI2_BASE
-#define CONFIG_CMD_SPI
-#define CONFIG_SYS_SPI_CLK clk_get_rate(K2HK_LPSC_EMIF25_SPI)
-#define CONFIG_SF_DEFAULT_SPEED 30000000
-#define CONFIG_ENV_SPI_MAX_HZ CONFIG_SF_DEFAULT_SPEED
+/* U-Boot general configuration */
+#define CONFIG_SYS_PROMPT "K2HK EVM # "
-/* I2C Configuration */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_DAVINCI
-#define CONFIG_SYS_DAVINCI_I2C_SPEED 100000
-#define CONFIG_SYS_DAVINCI_I2C_SLAVE 0x10 /* SMBus host address */
-#define CONFIG_SYS_DAVINCI_I2C_SPEED1 100000
-#define CONFIG_SYS_DAVINCI_I2C_SLAVE1 0x10 /* SMBus host address */
-#define CONFIG_SYS_DAVINCI_I2C_SPEED2 100000
-#define CONFIG_SYS_DAVINCI_I2C_SLAVE2 0x10 /* SMBus host address */
-#define I2C_BUS_MAX 3
+#define KS2_ARGS_UBI "args_ubi=setenv bootargs ${bootargs} rootfstype=ubifs "\
+ "root=ubi0:rootfs rootflags=sync rw ubi.mtd=2,2048\0"
-/* EEPROM definitions */
-#define CONFIG_SYS_I2C_MULTI_EEPROMS
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2
-#define CONFIG_SYS_I2C_EEPROM_ADDR 0x50
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 6
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS 20
-#define CONFIG_ENV_EEPROM_IS_ON_I2C
+#define KS2_FDT_NAME "name_fdt=k2hk-evm.dtb\0"
+#define KS2_ADDR_MON "addr_mon=0x0c5f0000\0"
+#define KS2_NAME_MON "name_mon=skern-k2hk-evm.bin\0"
+#define NAME_UBOOT "name_uboot=u-boot-spi-k2hk-evm.gph\0"
+#define NAME_UBI "name_ubi=k2hk-evm-ubifs.ubi\0"
-/* Network Configuration */
-#define CONFIG_DRIVER_TI_KEYSTONE_NET
-#define CONFIG_MII
-#define CONFIG_BOOTP_DEFAULT
-#define CONFIG_BOOTP_DNS
-#define CONFIG_BOOTP_DNS2
-#define CONFIG_BOOTP_SEND_HOSTNAME
-#define CONFIG_NET_RETRY_COUNT 32
-#define CONFIG_NET_MULTI
-#define CONFIG_GET_LINK_STATUS_ATTEMPTS 5
-#define CONFIG_SYS_SGMII_REFCLK_MHZ 312
-#define CONFIG_SYS_SGMII_LINERATE_MHZ 1250
-#define CONFIG_SYS_SGMII_RATESCALE 2
+#include <configs/ks2_evm.h>
-/* AEMIF */
-#define CONFIG_TI_AEMIF
-#define CONFIG_AEMIF_CNTRL_BASE KS2_AEMIF_CNTRL_BASE
+/* SPL SPI Loader Configuration */
+#define CONFIG_SPL_TEXT_BASE 0x0c200000
/* NAND Configuration */
-#define CONFIG_NAND_DAVINCI
-#define CONFIG_CMD_NAND_ECCLAYOUT
-#define CONFIG_SYS_NAND_CS 2
-#define CONFIG_SYS_NAND_USE_FLASH_BBT
-#define CONFIG_SYS_NAND_4BIT_HW_ECC_OOBFIRST
#define CONFIG_SYS_NAND_PAGE_2K
-#define CONFIG_SYS_NAND_MASK_CLE 0x4000
-#define CONFIG_SYS_NAND_MASK_ALE 0x2000
-
-#define CONFIG_SYS_NAND_LARGEPAGE
-#define CONFIG_SYS_NAND_BASE_LIST { 0x30000000, }
-#define CONFIG_SYS_MAX_NAND_DEVICE 1
-#define CONFIG_SYS_NAND_MAX_CHIPS 1
-#define CONFIG_SYS_NAND_NO_SUBPAGE_WRITE
-#define CONFIG_ENV_SIZE (256 << 10) /* 256 KiB */
-#define CONFIG_ENV_IS_IN_NAND
-#define CONFIG_ENV_OFFSET 0x100000
-#define CONFIG_MTD_PARTITIONS
-#define CONFIG_MTD_DEVICE
-#define CONFIG_RBTREE
-#define CONFIG_LZO
-#define MTDPARTS_DEFAULT "mtdparts=davinci_nand.0:" \
- "1024k(bootloader)ro,512k(params)ro," \
- "-(ubifs)"
-/* U-Boot command configuration */
-#include <config_cmd_default.h>
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_SAVES
-#define CONFIG_CMD_MTDPARTS
-#define CONFIG_CMD_NAND
-#define CONFIG_CMD_UBI
-#define CONFIG_CMD_UBIFS
-#define CONFIG_CMD_SF
-#define CONFIG_CMD_EEPROM
-
-/* U-Boot general configuration */
-#define CONFIG_SYS_GENERIC_BOARD
-#define CONFIG_SYS_PROMPT "K2HK EVM # "
-#define CONFIG_SYS_CBSIZE 1024
-#define CONFIG_SYS_PBSIZE 2048
-#define CONFIG_SYS_MAXARGS 16
-#define CONFIG_SYS_HUSH_PARSER
-#define CONFIG_SYS_LONGHELP
-#define CONFIG_CRC32_VERIFY
-#define CONFIG_MX_CYCLIC
-#define CONFIG_CMDLINE_EDITING
-#define CONFIG_VERSION_VARIABLE
-#define CONFIG_TIMESTAMP
-#define CONFIG_BOOTDELAY 3
-#define CONFIG_BOOTFILE "uImage"
-#define CONFIG_EXTRA_ENV_SETTINGS \
- "boot=ramfs\0" \
- "tftp_root=/\0" \
- "nfs_root=/export\0" \
- "mem_lpae=1\0" \
- "mem_reserve=512M\0" \
- "addr_fdt=0x87000000\0" \
- "addr_kern=0x88000000\0" \
- "addr_mon=0x0c5f0000\0" \
- "addr_uboot=0x87000000\0" \
- "addr_fs=0x82000000\0" \
- "addr_ubi=0x82000000\0" \
- "fdt_high=0xffffffff\0" \
- "name_fdt=uImage-k2hk-evm.dtb\0" \
- "name_fs=arago-console-image.cpio.gz\0" \
- "name_kern=uImage-keystone-evm.bin\0" \
- "name_mon=skern-keystone-evm.bin\0" \
- "name_uboot=u-boot-spi-keystone-evm.gph\0" \
- "name_ubi=keystone-evm-ubifs.ubi\0" \
- "run_mon=mon_install ${addr_mon}\0" \
- "run_kern=bootm ${addr_kern} - ${addr_fdt}\0" \
- "init_net=run args_all args_net\0" \
- "init_ubi=run args_all args_ubi; " \
- "ubi part ubifs; ubifsmount boot\0" \
- "get_fdt_net=dhcp ${addr_fdt} ${tftp_root}/${name_fdt}\0" \
- "get_fdt_ubi=ubifsload ${addr_fdt} ${name_fdt}\0" \
- "get_kern_net=dhcp ${addr_kern} ${tftp_root}/${name_kern}\0" \
- "get_kern_ubi=ubifsload ${addr_kern} ${name_kern}\0" \
- "get_mon_net=dhcp ${addr_mon} ${tftp_root}/${name_mon}\0" \
- "get_mon_ubi=ubifsload ${addr_mon} ${name_mon}\0" \
- "get_uboot_net=dhcp ${addr_uboot} ${tftp_root}/${name_uboot}\0" \
- "burn_uboot=sf probe; sf erase 0 0x100000; " \
- "sf write ${addr_uboot} 0 ${filesize}\0" \
- "args_all=setenv bootargs console=ttyS0,115200n8 rootwait=1\0" \
- "args_ubi=setenv bootargs ${bootargs} rootfstype=ubifs " \
- "root=ubi0:rootfs rootflags=sync rw ubi.mtd=2,2048\0" \
- "args_net=setenv bootargs ${bootargs} rootfstype=nfs " \
- "root=/dev/nfs rw nfsroot=${serverip}:${nfs_root}," \
- "${nfs_options} ip=dhcp\0" \
- "nfs_options=v3,tcp,rsize=4096,wsize=4096\0" \
- "get_fdt_ramfs=dhcp ${addr_fdt} ${tftp_root}/${name_fdt}\0" \
- "get_kern_ramfs=dhcp ${addr_kern} ${tftp_root}/${name_kern}\0" \
- "get_mon_ramfs=dhcp ${addr_mon} ${tftp_root}/${name_mon}\0" \
- "get_fs_ramfs=dhcp ${addr_fs} ${tftp_root}/${name_fs}\0" \
- "get_ubi_net=dhcp ${addr_ubi} ${tftp_root}/${name_ubi}\0" \
- "burn_ubi=nand erase.part ubifs; " \
- "nand write ${addr_ubi} ubifs ${filesize}\0" \
- "init_ramfs=run args_all args_ramfs get_fs_ramfs\0" \
- "args_ramfs=setenv bootargs ${bootargs} earlyprintk " \
- "rdinit=/sbin/init rw root=/dev/ram0 " \
- "initrd=0x802000000,9M\0" \
- "no_post=1\0" \
- "mtdparts=mtdparts=davinci_nand.0:" \
- "1024k(bootloader)ro,512k(params)ro,522752k(ubifs)\0"
-#define CONFIG_BOOTCOMMAND \
- "run init_${boot} get_fdt_${boot} get_mon_${boot} " \
- "get_kern_${boot} run_mon run_kern"
-#define CONFIG_BOOTARGS \
-
-/* Linux interfacing */
-#define CONFIG_CMDLINE_TAG
-#define CONFIG_SETUP_MEMORY_TAGS
-#define CONFIG_OF_LIBFDT 1
-#define CONFIG_OF_BOARD_SETUP
-#define CONFIG_SYS_BARGSIZE 1024
-#define CONFIG_SYS_LOAD_ADDR (CONFIG_SYS_SDRAM_BASE + 0x08000000)
-
-#define CONFIG_SUPPORT_RAW_INITRD
-
-/* we may include files below only after all above definitions */
-#include <asm/arch/hardware.h>
-#include <asm/arch/clock.h>
-#define CONFIG_SYS_HZ_CLOCK clk_get_rate(K2HK_CLK1_6)
+/* Network */
+#define CONFIG_DRIVER_TI_KEYSTONE_NET
#endif /* __CONFIG_K2HK_EVM_H */
diff --git a/include/configs/ks2_evm.h b/include/configs/ks2_evm.h
new file mode 100644
index 0000000..43db581
--- /dev/null
+++ b/include/configs/ks2_evm.h
@@ -0,0 +1,275 @@
+/*
+ * Common configuration header file for all Keystone II EVM platforms
+ *
+ * (C) Copyright 2012-2014
+ * Texas Instruments Incorporated, <www.ti.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef __CONFIG_KS2_EVM_H
+#define __CONFIG_KS2_EVM_H
+
+#define CONFIG_SOC_KEYSTONE
+
+/* U-Boot Build Configuration */
+#define CONFIG_SKIP_LOWLEVEL_INIT /* U-Boot is a 2nd stage loader */
+#define CONFIG_SYS_NO_FLASH /* that is, no *NOR* flash */
+#define CONFIG_SYS_CONSOLE_INFO_QUIET
+#define CONFIG_BOARD_EARLY_INIT_F
+#define CONFIG_SYS_THUMB_BUILD
+
+/* SoC Configuration */
+#define CONFIG_ARMV7
+#define CONFIG_ARCH_CPU_INIT
+#define CONFIG_SYS_ARCH_TIMER
+#define CONFIG_SYS_HZ 1000
+#define CONFIG_SYS_TEXT_BASE 0x0c001000
+#define CONFIG_SPL_TARGET "u-boot-spi.gph"
+#define CONFIG_SYS_DCACHE_OFF
+
+/* Memory Configuration */
+#define CONFIG_NR_DRAM_BANKS 2
+#define CONFIG_SYS_SDRAM_BASE 0x80000000
+#define CONFIG_SYS_LPAE_SDRAM_BASE 0x800000000
+#define CONFIG_MAX_RAM_BANK_SIZE (2 << 30) /* 2GB */
+#define CONFIG_STACKSIZE (512 << 10) /* 512 KiB */
+#define CONFIG_SYS_MALLOC_LEN (4 << 20) /* 4 MiB */
+#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_TEXT_BASE - \
+ GENERATED_GBL_DATA_SIZE)
+
+/* SPL SPI Loader Configuration */
+#define CONFIG_SPL_PAD_TO 65536
+#define CONFIG_SPL_MAX_SIZE (CONFIG_SPL_PAD_TO - 8)
+#define CONFIG_SPL_BSS_START_ADDR (CONFIG_SPL_TEXT_BASE + \
+ CONFIG_SPL_MAX_SIZE)
+#define CONFIG_SPL_BSS_MAX_SIZE (32 * 1024)
+#define CONFIG_SYS_SPL_MALLOC_START (CONFIG_SPL_BSS_START_ADDR + \
+ CONFIG_SPL_BSS_MAX_SIZE)
+#define CONFIG_SYS_SPL_MALLOC_SIZE (32 * 1024)
+#define CONFIG_SPL_STACK_SIZE (8 * 1024)
+#define CONFIG_SPL_STACK (CONFIG_SYS_SPL_MALLOC_START + \
+ CONFIG_SYS_SPL_MALLOC_SIZE + \
+ CONFIG_SPL_STACK_SIZE - 4)
+#define CONFIG_SPL_LIBCOMMON_SUPPORT
+#define CONFIG_SPL_LIBGENERIC_SUPPORT
+#define CONFIG_SPL_SERIAL_SUPPORT
+#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_SUPPORT
+#define CONFIG_SPL_BOARD_INIT
+#define CONFIG_SPL_SPI_LOAD
+#define CONFIG_SPL_SPI_BUS 0
+#define CONFIG_SPL_SPI_CS 0
+#define CONFIG_SYS_SPI_U_BOOT_OFFS CONFIG_SPL_PAD_TO
+#define CONFIG_SPL_FRAMEWORK
+
+/* UART Configuration */
+#define CONFIG_SYS_NS16550
+#define CONFIG_SYS_NS16550_SERIAL
+#define CONFIG_SYS_NS16550_MEM32
+#define CONFIG_SYS_NS16550_REG_SIZE -4
+#define CONFIG_SYS_NS16550_COM1 KS2_UART0_BASE
+#define CONFIG_SYS_NS16550_COM2 KS2_UART1_BASE
+#define CONFIG_SYS_NS16550_CLK clk_get_rate(KS2_CLK1_6)
+#define CONFIG_CONS_INDEX 1
+#define CONFIG_BAUDRATE 115200
+
+/* SPI Configuration */
+#define CONFIG_SPI
+#define CONFIG_SPI_FLASH
+#define CONFIG_SPI_FLASH_STMICRO
+#define CONFIG_DAVINCI_SPI
+#define CONFIG_CMD_SPI
+#define CONFIG_SYS_SPI_CLK clk_get_rate(KS2_CLK1_6)
+#define CONFIG_SF_DEFAULT_SPEED 30000000
+#define CONFIG_ENV_SPI_MAX_HZ CONFIG_SF_DEFAULT_SPEED
+#define CONFIG_SYS_SPI0
+#define CONFIG_SYS_SPI_BASE KS2_SPI0_BASE
+#define CONFIG_SYS_SPI0_NUM_CS 4
+#define CONFIG_SYS_SPI1
+#define CONFIG_SYS_SPI1_BASE KS2_SPI1_BASE
+#define CONFIG_SYS_SPI1_NUM_CS 4
+#define CONFIG_SYS_SPI2
+#define CONFIG_SYS_SPI2_BASE KS2_SPI2_BASE
+#define CONFIG_SYS_SPI2_NUM_CS 4
+
+/* Network Configuration */
+#define CONFIG_MII
+#define CONFIG_BOOTP_DEFAULT
+#define CONFIG_BOOTP_DNS
+#define CONFIG_BOOTP_DNS2
+#define CONFIG_BOOTP_SEND_HOSTNAME
+#define CONFIG_NET_RETRY_COUNT 32
+#define CONFIG_NET_MULTI
+#define CONFIG_GET_LINK_STATUS_ATTEMPTS 5
+#define CONFIG_SYS_SGMII_REFCLK_MHZ 312
+#define CONFIG_SYS_SGMII_LINERATE_MHZ 1250
+#define CONFIG_SYS_SGMII_RATESCALE 2
+
+/* AEMIF */
+#define CONFIG_TI_AEMIF
+#define CONFIG_AEMIF_CNTRL_BASE KS2_AEMIF_CNTRL_BASE
+
+/* I2C Configuration */
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_DAVINCI
+#define CONFIG_SYS_DAVINCI_I2C_SPEED 100000
+#define CONFIG_SYS_DAVINCI_I2C_SLAVE 0x10 /* SMBus host address */
+#define CONFIG_SYS_DAVINCI_I2C_SPEED1 100000
+#define CONFIG_SYS_DAVINCI_I2C_SLAVE1 0x10 /* SMBus host address */
+#define CONFIG_SYS_DAVINCI_I2C_SPEED2 100000
+#define CONFIG_SYS_DAVINCI_I2C_SLAVE2 0x10 /* SMBus host address */
+#define I2C_BUS_MAX 3
+
+/* EEPROM definitions */
+#define CONFIG_SYS_I2C_MULTI_EEPROMS
+#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2
+#define CONFIG_SYS_I2C_EEPROM_ADDR 0x50
+#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 6
+#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS 20
+#define CONFIG_ENV_EEPROM_IS_ON_I2C
+
+/* NAND Configuration */
+#define CONFIG_NAND_DAVINCI
+#define CONFIG_KEYSTONE_RBL_NAND
+#define CONFIG_KEYSTONE_NAND_MAX_RBL_SIZE CONFIG_ENV_OFFSET
+#define CONFIG_SYS_NAND_MASK_CLE 0x4000
+#define CONFIG_SYS_NAND_MASK_ALE 0x2000
+#define CONFIG_SYS_NAND_CS 2
+#define CONFIG_SYS_NAND_USE_FLASH_BBT
+#define CONFIG_SYS_NAND_4BIT_HW_ECC_OOBFIRST
+
+#define CONFIG_SYS_NAND_LARGEPAGE
+#define CONFIG_SYS_NAND_BASE_LIST { 0x30000000, }
+#define CONFIG_SYS_MAX_NAND_DEVICE 1
+#define CONFIG_SYS_NAND_MAX_CHIPS 1
+#define CONFIG_SYS_NAND_NO_SUBPAGE_WRITE
+#define CONFIG_ENV_SIZE (256 << 10) /* 256 KiB */
+#define CONFIG_ENV_IS_IN_NAND
+#define CONFIG_ENV_OFFSET 0x100000
+#define CONFIG_MTD_PARTITIONS
+#define CONFIG_MTD_DEVICE
+#define CONFIG_RBTREE
+#define CONFIG_LZO
+#define MTDIDS_DEFAULT "nand0=davinci_nand.0"
+#define MTDPARTS_DEFAULT "mtdparts=davinci_nand.0:" \
+ "1024k(bootloader)ro,512k(params)ro," \
+ "-(ubifs)"
+
+/* U-Boot command configuration */
+#include <config_cmd_default.h>
+#define CONFIG_CMD_ASKENV
+#define CONFIG_CMD_DHCP
+#define CONFIG_CMD_I2C
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_SAVES
+#define CONFIG_CMD_MTDPARTS
+#define CONFIG_CMD_NAND
+#define CONFIG_CMD_UBI
+#define CONFIG_CMD_UBIFS
+#define CONFIG_CMD_SF
+#define CONFIG_CMD_EEPROM
+
+/* U-Boot general configuration */
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_SYS_CBSIZE 1024
+#define CONFIG_SYS_PBSIZE 2048
+#define CONFIG_SYS_MAXARGS 16
+#define CONFIG_SYS_HUSH_PARSER
+#define CONFIG_SYS_LONGHELP
+#define CONFIG_CRC32_VERIFY
+#define CONFIG_MX_CYCLIC
+#define CONFIG_CMDLINE_EDITING
+#define CONFIG_VERSION_VARIABLE
+#define CONFIG_TIMESTAMP
+
+/* EDMA3 */
+#define CONFIG_TI_EDMA3
+
+#define CONFIG_BOOTDELAY 3
+#define CONFIG_BOOTFILE "uImage"
+#define CONFIG_EXTRA_ENV_SETTINGS \
+ "boot=ramfs\0" \
+ "tftp_root=/\0" \
+ "nfs_root=/export\0" \
+ "mem_lpae=1\0" \
+ "mem_reserve=512M\0" \
+ "addr_fdt=0x87000000\0" \
+ "addr_kern=0x88000000\0" \
+ KS2_ADDR_MON \
+ "addr_uboot=0x87000000\0" \
+ "addr_fs=0x82000000\0" \
+ "addr_ubi=0x82000000\0" \
+ "addr_secdb_key=0xc000000\0" \
+ "fdt_high=0xffffffff\0" \
+ KS2_FDT_NAME \
+ "name_fs=arago-console-image.cpio.gz\0" \
+ "name_kern=uImage\0" \
+ KS2_NAME_MON \
+ NAME_UBOOT \
+ NAME_UBI \
+ "run_mon=mon_install ${addr_mon}\0" \
+ "run_kern=bootm ${addr_kern} - ${addr_fdt}\0" \
+ "init_net=run args_all args_net\0" \
+ "init_ubi=run args_all args_ubi; " \
+ "ubi part ubifs; ubifsmount boot;" \
+ "ubifsload ${addr_secdb_key} securedb.key.bin;\0" \
+ "get_fdt_net=dhcp ${addr_fdt} ${tftp_root}/${name_fdt}\0" \
+ "get_fdt_ubi=ubifsload ${addr_fdt} ${name_fdt}\0" \
+ "get_kern_net=dhcp ${addr_kern} ${tftp_root}/${name_kern}\0" \
+ "get_kern_ubi=ubifsload ${addr_kern} ${name_kern}\0" \
+ "get_mon_net=dhcp ${addr_mon} ${tftp_root}/${name_mon}\0" \
+ "get_mon_ubi=ubifsload ${addr_mon} ${name_mon}\0" \
+ "get_uboot_net=dhcp ${addr_uboot} ${tftp_root}/${name_uboot}\0" \
+ "burn_uboot_spi=sf probe; sf erase 0 0x100000; " \
+ "sf write ${addr_uboot} 0 ${filesize}\0" \
+ "burn_uboot_nand=nand erase 0 0x100000; " \
+ "nand write ${addr_uboot} 0 ${filesize}\0" \
+ "args_all=setenv bootargs console=ttyS0,115200n8 rootwait=1\0" \
+ KS2_ARGS_UBI \
+ "args_net=setenv bootargs ${bootargs} rootfstype=nfs " \
+ "root=/dev/nfs rw nfsroot=${serverip}:${nfs_root}," \
+ "${nfs_options} ip=dhcp\0" \
+ "nfs_options=v3,tcp,rsize=4096,wsize=4096\0" \
+ "get_fdt_ramfs=dhcp ${addr_fdt} ${tftp_root}/${name_fdt}\0" \
+ "get_kern_ramfs=dhcp ${addr_kern} ${tftp_root}/${name_kern}\0" \
+ "get_mon_ramfs=dhcp ${addr_mon} ${tftp_root}/${name_mon}\0" \
+ "get_fs_ramfs=dhcp ${addr_fs} ${tftp_root}/${name_fs}\0" \
+ "get_ubi_net=dhcp ${addr_ubi} ${tftp_root}/${name_ubi}\0" \
+ "burn_ubi=nand erase.part ubifs; " \
+ "nand write ${addr_ubi} ubifs ${filesize}\0" \
+ "init_ramfs=run args_all args_ramfs get_fs_ramfs\0" \
+ "args_ramfs=setenv bootargs ${bootargs} " \
+ "rdinit=/sbin/init rw root=/dev/ram0 " \
+ "initrd=0x802000000,9M\0" \
+ "no_post=1\0" \
+ "mtdparts=mtdparts=davinci_nand.0:" \
+ "1024k(bootloader)ro,512k(params)ro,-(ubifs)\0"
+
+#define CONFIG_BOOTCOMMAND \
+ "run init_${boot} get_fdt_${boot} get_mon_${boot} " \
+ "get_kern_${boot} run_mon run_kern"
+
+#define CONFIG_BOOTARGS \
+
+/* Linux interfacing */
+#define CONFIG_CMDLINE_TAG
+#define CONFIG_SETUP_MEMORY_TAGS
+#define CONFIG_OF_LIBFDT 1
+#define CONFIG_OF_BOARD_SETUP
+#define CONFIG_SYS_BARGSIZE 1024
+#define CONFIG_SYS_LOAD_ADDR (CONFIG_SYS_SDRAM_BASE + 0x08000000)
+#define CONFIG_LINUX_BOOT_PARAM_ADDR (CONFIG_SYS_SDRAM_BASE + 0x100)
+
+#define CONFIG_SUPPORT_RAW_INITRD
+
+/* we may include files below only after all above definitions */
+#include <asm/arch/hardware.h>
+#include <asm/arch/clock.h>
+#define CONFIG_SYS_HZ_CLOCK clk_get_rate(KS2_CLK1_6)
+
+/* Maximum memory size for relocated U-boot at the end of the DDR3 memory
+ which is NOT applicable for DDR ECC test */
+#define CONFIG_MAX_UBOOT_MEM_SIZE (4 << 20) /* 4 MiB */
+
+#endif /* __CONFIG_KS2_EVM_H */
diff --git a/include/configs/lwmon5.h b/include/configs/lwmon5.h
index 07ddfc4..58e7295 100644
--- a/include/configs/lwmon5.h
+++ b/include/configs/lwmon5.h
@@ -665,7 +665,6 @@
* SPL related defines
*/
#ifdef CONFIG_LCD4_LWMON5
-#define CONFIG_SPL
#define CONFIG_SPL_FRAMEWORK
#define CONFIG_SPL_BOARD_INIT
#define CONFIG_SPL_NOR_SUPPORT
diff --git a/include/configs/m53evk.h b/include/configs/m53evk.h
index 97196c6..6e5200d 100644
--- a/include/configs/m53evk.h
+++ b/include/configs/m53evk.h
@@ -252,7 +252,6 @@
/*
* NAND SPL
*/
-#define CONFIG_SPL
#define CONFIG_SPL_FRAMEWORK
#define CONFIG_SPL_TARGET "u-boot-with-nand-spl.imx"
#define CONFIG_SPL_BOARD_INIT
diff --git a/include/configs/mcx.h b/include/configs/mcx.h
index 47244c0..dff895a 100644
--- a/include/configs/mcx.h
+++ b/include/configs/mcx.h
@@ -316,10 +316,6 @@
*/
/* **** PISMO SUPPORT *** */
-
-/* Configure the PISMO */
-#define PISMO1_NAND_SIZE GPMC_SIZE_128M
-
#define CONFIG_NAND_OMAP_GPMC
#define CONFIG_ENV_IS_IN_NAND
#define SMNAND_ENV_OFFSET 0x180000 /* environment starts here */
@@ -348,7 +344,6 @@
GENERATED_GBL_DATA_SIZE)
/* Defines for SPL */
-#define CONFIG_SPL
#define CONFIG_SPL_FRAMEWORK
#define CONFIG_SPL_BOARD_INIT
#define CONFIG_SPL_NAND_SIMPLE
diff --git a/include/configs/microblaze-generic.h b/include/configs/microblaze-generic.h
index 06b7e94..1a82a57 100644
--- a/include/configs/microblaze-generic.h
+++ b/include/configs/microblaze-generic.h
@@ -12,7 +12,6 @@
#include "../board/xilinx/microblaze-generic/xparameters.h"
/* MicroBlaze CPU */
-#define CONFIG_MICROBLAZE 1
#define MICROBLAZE_V5 1
/* Open Firmware DTS */
@@ -448,7 +447,6 @@
#endif
/* SPL part */
-#define CONFIG_SPL
#define CONFIG_CMD_SPL
#define CONFIG_SPL_FRAMEWORK
#define CONFIG_SPL_LIBCOMMON_SUPPORT
diff --git a/include/configs/mx31pdk.h b/include/configs/mx31pdk.h
index f223788..f796a41 100644
--- a/include/configs/mx31pdk.h
+++ b/include/configs/mx31pdk.h
@@ -29,7 +29,6 @@
#define CONFIG_MACH_TYPE MACH_TYPE_MX31_3DS
-#define CONFIG_SPL
#define CONFIG_SPL_TARGET "u-boot-with-spl.bin"
#define CONFIG_SPL_LDSCRIPT "arch/$(ARCH)/cpu/u-boot-spl.lds"
#define CONFIG_SPL_MAX_SIZE 2048
diff --git a/include/configs/mxs.h b/include/configs/mxs.h
index 8bce28f..5f4e48e 100644
--- a/include/configs/mxs.h
+++ b/include/configs/mxs.h
@@ -50,7 +50,6 @@
#define CONFIG_ARCH_MISC_INIT
/* SPL */
-#define CONFIG_SPL
#define CONFIG_SPL_NO_CPU_SUPPORT_CODE
#define CONFIG_SPL_START_S_PATH "arch/arm/cpu/arm926ejs/mxs"
#define CONFIG_SPL_LDSCRIPT "arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds"
diff --git a/include/configs/neo.h b/include/configs/neo.h
index 4937730..09300ca 100644
--- a/include/configs/neo.h
+++ b/include/configs/neo.h
@@ -25,6 +25,7 @@
#define CONFIG_BOARD_EARLY_INIT_R
#define CONFIG_MISC_INIT_R
#define CONFIG_LAST_STAGE_INIT
+#define CONFIG_SYS_GENERIC_BOARD
#define CONFIG_SYS_CLK_FREQ 33333333 /* external frequency to pll */
diff --git a/include/configs/nokia_rx51.h b/include/configs/nokia_rx51.h
index e0c0fac..43c1617 100644
--- a/include/configs/nokia_rx51.h
+++ b/include/configs/nokia_rx51.h
@@ -220,8 +220,6 @@
#ifdef ONENAND_SUPPORT
-#define PISMO1_NAND_SIZE GPMC_SIZE_128M
-#define PISMO1_ONEN_SIZE GPMC_SIZE_128M
#define CONFIG_SYS_ONENAND_BASE ONENAND_MAP
#define CONFIG_MTD_DEVICE
#define CONFIG_MTD_PARTITIONS
@@ -263,9 +261,10 @@
#define VIDEO_TSTC_FCT rx51_kp_tstc
#define VIDEO_GETC_FCT rx51_kp_getc
#ifndef __ASSEMBLY__
+struct stdio_dev;
int rx51_kp_init(void);
-int rx51_kp_tstc(void);
-int rx51_kp_getc(void);
+int rx51_kp_tstc(struct stdio_dev *sdev);
+int rx51_kp_getc(struct stdio_dev *sdev);
#endif
#ifndef MTDPARTS_DEFAULT
diff --git a/include/configs/omap3_beagle.h b/include/configs/omap3_beagle.h
index 9ba031d..644e97f 100644
--- a/include/configs/omap3_beagle.h
+++ b/include/configs/omap3_beagle.h
@@ -266,13 +266,8 @@
*/
/* **** PISMO SUPPORT *** */
-
-/* Configure the PISMO */
-#define PISMO1_NAND_SIZE GPMC_SIZE_128M
-#define PISMO1_ONEN_SIZE GPMC_SIZE_128M
-
#if defined(CONFIG_CMD_NAND)
-#define CONFIG_SYS_FLASH_BASE PISMO1_NAND_BASE
+#define CONFIG_SYS_FLASH_BASE NAND_BASE
#endif
/* Monitor at start of flash */
@@ -309,5 +304,11 @@
#define CONFIG_SYS_NAND_ECCBYTES 3
#define CONFIG_NAND_OMAP_ECCSCHEME OMAP_ECC_HAM1_CODE_HW
#define CONFIG_SYS_NAND_U_BOOT_OFFS 0x80000
+/* NAND: SPL falcon mode configs */
+#ifdef CONFIG_SPL_OS_BOOT
+#define CONFIG_CMD_SPL_NAND_OFS 0x240000
+#define CONFIG_SYS_NAND_SPL_KERNEL_OFFS 0x280000
+#define CONFIG_CMD_SPL_WRITE_SIZE 0x2000
+#endif
#endif /* __CONFIG_H */
diff --git a/include/configs/omap3_evm_common.h b/include/configs/omap3_evm_common.h
index ae4ce63..eef4230 100644
--- a/include/configs/omap3_evm_common.h
+++ b/include/configs/omap3_evm_common.h
@@ -95,9 +95,6 @@
/*
* PISMO support
*/
-#define PISMO1_NAND_SIZE GPMC_SIZE_128M
-#define PISMO1_ONEN_SIZE GPMC_SIZE_128M
-
/* Monitor at start of flash - Reserve 2 sectors */
#define CONFIG_SYS_MONITOR_BASE CONFIG_SYS_FLASH_BASE
@@ -205,12 +202,12 @@
* NAND / OneNAND
*/
#if defined(CONFIG_CMD_NAND)
-#define CONFIG_SYS_FLASH_BASE PISMO1_NAND_BASE
+#define CONFIG_SYS_FLASH_BASE NAND_BASE
#define CONFIG_NAND_OMAP_GPMC
#define CONFIG_ENV_OFFSET SMNAND_ENV_OFFSET
#elif defined(CONFIG_CMD_ONENAND)
-#define CONFIG_SYS_FLASH_BASE PISMO1_ONEN_BASE
+#define CONFIG_SYS_FLASH_BASE ONENAND_MAP
#define CONFIG_SYS_ONENAND_BASE ONENAND_MAP
#endif
@@ -260,7 +257,6 @@
#define CONFIG_SYS_CACHELINE_SIZE 64
/* Defines for SPL */
-#define CONFIG_SPL
#define CONFIG_SPL_FRAMEWORK
#define CONFIG_SPL_TEXT_BASE 0x40200800
#define CONFIG_SPL_MAX_SIZE (54 * 1024) /* 8 KB for stack */
diff --git a/include/configs/omap3_igep00x0.h b/include/configs/omap3_igep00x0.h
index 79daabd..006c9a9 100644
--- a/include/configs/omap3_igep00x0.h
+++ b/include/configs/omap3_igep00x0.h
@@ -146,8 +146,6 @@
*/
#ifdef CONFIG_BOOT_ONENAND
-#define PISMO1_ONEN_SIZE GPMC_SIZE_128M /* Configure the PISMO */
-
#define CONFIG_SYS_ONENAND_BASE ONENAND_MAP
#define ONENAND_ENV_OFFSET 0x260000 /* environment starts here */
@@ -158,7 +156,6 @@
#endif
#ifdef CONFIG_NAND
-#define PISMO1_NAND_SIZE GPMC_SIZE_128M /* Configure the PISMO */
#define CONFIG_ENV_OFFSET 0x260000 /* environment starts here */
#define CONFIG_ENV_IS_IN_NAND 1
#define CONFIG_ENV_SIZE (512 << 10) /* Total Size Environment */
@@ -199,6 +196,13 @@
#define CONFIG_SYS_NAND_ECCSIZE 512
#define CONFIG_SYS_NAND_ECCBYTES 3
#define CONFIG_NAND_OMAP_ECCSCHEME OMAP_ECC_HAM1_CODE_HW
+#define CONFIG_SYS_NAND_U_BOOT_OFFS 0x80000
+/* NAND: SPL falcon mode configs */
+#ifdef CONFIG_SPL_OS_BOOT
+#define CONFIG_CMD_SPL_NAND_OFS 0x240000
+#define CONFIG_SYS_NAND_SPL_KERNEL_OFFS 0x280000
+#define CONFIG_CMD_SPL_WRITE_SIZE 0x2000
+#endif
#endif
#endif /* __IGEP00X0_H */
diff --git a/include/configs/omap3_logic.h b/include/configs/omap3_logic.h
index 8dcbba3..717c935 100644
--- a/include/configs/omap3_logic.h
+++ b/include/configs/omap3_logic.h
@@ -277,16 +277,12 @@
*/
/* **** PISMO SUPPORT *** */
-
-/* Configure the PISMO */
-#define PISMO1_NAND_SIZE GPMC_SIZE_128M
-
#define CONFIG_SYS_MONITOR_LEN (256 << 10) /* Reserve 2 sectors */
#if defined(CONFIG_CMD_NAND)
-#define CONFIG_SYS_FLASH_BASE PISMO1_NAND_BASE
+#define CONFIG_SYS_FLASH_BASE NAND_BASE
#elif defined(CONFIG_CMD_ONENAND)
-#define CONFIG_SYS_FLASH_BASE PISMO1_ONEN_BASE
+#define CONFIG_SYS_FLASH_BASE ONENAND_MAP
#endif
/* Monitor at start of flash */
diff --git a/include/configs/omap3_overo.h b/include/configs/omap3_overo.h
index f7483a0..e66f306 100644
--- a/include/configs/omap3_overo.h
+++ b/include/configs/omap3_overo.h
@@ -173,12 +173,8 @@
0x01F00000) /* 31MB */
/* FLASH and environment organization */
-/* Configure the PISMO */
-#define PISMO1_NAND_SIZE GPMC_SIZE_128M
-#define PISMO1_ONEN_SIZE GPMC_SIZE_128M
-
#if defined(CONFIG_NAND)
-#define CONFIG_SYS_FLASH_BASE PISMO1_NAND_BASE
+#define CONFIG_SYS_FLASH_BASE NAND_BASE
#endif
/* Monitor at start of flash */
@@ -220,5 +216,11 @@
#define CONFIG_NAND_OMAP_ECCSCHEME OMAP_ECC_HAM1_CODE_HW
#define CONFIG_SYS_NAND_U_BOOT_START CONFIG_SYS_TEXT_BASE
#define CONFIG_SYS_NAND_U_BOOT_OFFS 0x80000
+/* NAND: SPL falcon mode configs */
+#ifdef CONFIG_SPL_OS_BOOT
+#define CONFIG_CMD_SPL_NAND_OFS 0x240000
+#define CONFIG_SYS_NAND_SPL_KERNEL_OFFS 0x280000
+#define CONFIG_CMD_SPL_WRITE_SIZE 0x2000
+#endif
#endif /* __CONFIG_H */
diff --git a/include/configs/omap3_pandora.h b/include/configs/omap3_pandora.h
index da67787..c22c1fc 100644
--- a/include/configs/omap3_pandora.h
+++ b/include/configs/omap3_pandora.h
@@ -220,15 +220,10 @@
*/
/* **** PISMO SUPPORT *** */
-
-/* Configure the PISMO */
-#define PISMO1_NAND_SIZE GPMC_SIZE_128M
-#define PISMO1_ONEN_SIZE GPMC_SIZE_128M
-
#define CONFIG_SYS_MONITOR_LEN (256 << 10) /* Reserve 2 sectors */
#if defined(CONFIG_CMD_NAND)
-#define CONFIG_SYS_FLASH_BASE PISMO1_NAND_BASE
+#define CONFIG_SYS_FLASH_BASE NAND_BASE
#endif
/* Monitor at start of flash */
diff --git a/include/configs/omap3_zoom1.h b/include/configs/omap3_zoom1.h
index 3efe4cf..c5d742c 100644
--- a/include/configs/omap3_zoom1.h
+++ b/include/configs/omap3_zoom1.h
@@ -26,7 +26,6 @@
#include <configs/ti_omap3_common.h>
/* Remove SPL boot option - we do not support that on LDP yet */
-#undef CONFIG_SPL
#undef CONFIG_SPL_FRAMEWORK
#undef CONFIG_SPL_OS_BOOT
@@ -70,6 +69,12 @@
"4m(kernel),-(fs)"
#if defined(CONFIG_CMD_NAND)
+/* NAND: SPL falcon mode configs */
+#ifdef CONFIG_SPL_OS_BOOT
+#define CONFIG_CMD_SPL_NAND_OFS 0x240000
+#define CONFIG_SYS_NAND_SPL_KERNEL_OFFS 0x280000
+#define CONFIG_CMD_SPL_WRITE_SIZE 0x2000
+#endif
#define CONFIG_CMD_NAND_LOCK_UNLOCK /* Enable lock/unlock support */
#endif
@@ -165,13 +170,8 @@
*/
/* **** PISMO SUPPORT *** */
-
-/* Configure the PISMO */
-#define PISMO1_NAND_SIZE GPMC_SIZE_128M
-#define PISMO1_ONEN_SIZE GPMC_SIZE_128M
-
#if defined(CONFIG_CMD_NAND)
-#define CONFIG_SYS_FLASH_BASE PISMO1_NAND_BASE
+#define CONFIG_SYS_FLASH_BASE NAND_BASE
#endif
/* Monitor at start of flash */
diff --git a/include/configs/openrd.h b/include/configs/openrd.h
index 8fab6e6..3eb408f 100644
--- a/include/configs/openrd.h
+++ b/include/configs/openrd.h
@@ -49,6 +49,7 @@
#define CONFIG_CMD_DHCP
#define CONFIG_CMD_ENV
#define CONFIG_CMD_MII
+#define CONFIG_CMD_MMC
#define CONFIG_CMD_NAND
#define CONFIG_CMD_PING
#define CONFIG_CMD_USB
@@ -123,4 +124,11 @@
#define CONFIG_SYS_ATA_IDE1_OFFSET MV_SATA_PORT1_OFFSET
#endif /*CONFIG_MVSATA_IDE*/
+#ifdef CONFIG_CMD_MMC
+#define CONFIG_MMC
+#define CONFIG_GENERIC_MMC
+#define CONFIG_MVEBU_MMC
+#define CONFIG_SYS_MMC_BASE KW_SDIO_BASE
+#endif /* CONFIG_CMD_MMC */
+
#endif /* _CONFIG_OPENRD_BASE_H */
diff --git a/include/configs/origen.h b/include/configs/origen.h
index 8258338..5d24916 100644
--- a/include/configs/origen.h
+++ b/include/configs/origen.h
@@ -65,7 +65,6 @@
#undef CONFIG_CMD_NFS
/* MMC SPL */
-#define CONFIG_SPL
#define COPY_BL2_FNPTR_ADDR 0x02020030
#define CONFIG_SPL_TEXT_BASE 0x02021410
diff --git a/include/configs/p1_p2_rdb_pc.h b/include/configs/p1_p2_rdb_pc.h
index 185df77..9b58950 100644
--- a/include/configs/p1_p2_rdb_pc.h
+++ b/include/configs/p1_p2_rdb_pc.h
@@ -148,7 +148,6 @@
#endif
#ifdef CONFIG_SDCARD
-#define CONFIG_SPL
#define CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT
#define CONFIG_SPL_ENV_SUPPORT
#define CONFIG_SPL_SERIAL_SUPPORT
@@ -177,7 +176,6 @@
#endif
#ifdef CONFIG_SPIFLASH
-#define CONFIG_SPL
#define CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT
#define CONFIG_SPL_ENV_SUPPORT
#define CONFIG_SPL_SERIAL_SUPPORT
@@ -207,8 +205,6 @@
#endif
#ifdef CONFIG_NAND
-#define CONFIG_SPL
-#define CONFIG_TPL
#ifdef CONFIG_TPL_BUILD
#define CONFIG_SPL_NAND_BOOT
#define CONFIG_SPL_FLUSH_IMAGE
diff --git a/include/configs/palmtreo680.h b/include/configs/palmtreo680.h
index 3662663..6490be5 100644
--- a/include/configs/palmtreo680.h
+++ b/include/configs/palmtreo680.h
@@ -205,7 +205,6 @@
/*
* SPL
*/
-#define CONFIG_SPL
#define CONFIG_SPL_TEXT_BASE 0xa1700000 /* IPL loads SPL here */
#define CONFIG_SPL_STACK 0x5c040000 /* end of internal SRAM */
#define CONFIG_SPL_NAND_SUPPORT /* build libnand for spl */
diff --git a/include/configs/pcm051.h b/include/configs/pcm051.h
index 9af3efd..dcf5537 100644
--- a/include/configs/pcm051.h
+++ b/include/configs/pcm051.h
@@ -197,7 +197,6 @@
#define CONFIG_ENV_IS_NOWHERE
/* Defines for SPL */
-#define CONFIG_SPL
#define CONFIG_SPL_FRAMEWORK
#define CONFIG_SPL_BOARD_INIT
/*
diff --git a/include/configs/pengwyn.h b/include/configs/pengwyn.h
index 8510405..4684ad6 100644
--- a/include/configs/pengwyn.h
+++ b/include/configs/pengwyn.h
@@ -159,6 +159,12 @@
#define CONFIG_ENV_IS_IN_NAND
#define CONFIG_ENV_OFFSET 0x260000 /* environment starts here */
#define CONFIG_SYS_ENV_SECT_SIZE (128 << 10) /* 128 KiB */
+/* NAND: SPL falcon mode configs */
+#ifdef CONFIG_SPL_OS_BOOT
+#define CONFIG_CMD_SPL_NAND_OFS 0x240000 /* un-assigned */
+#define CONFIG_SYS_NAND_SPL_KERNEL_OFFS 0x280000
+#define CONFIG_CMD_SPL_WRITE_SIZE 0x2000
+#endif
/*
* USB configuration. We enable MUSB support, both for host and for
diff --git a/include/configs/sama5d3_xplained.h b/include/configs/sama5d3_xplained.h
index f72ab0b..0dfb7e7 100644
--- a/include/configs/sama5d3_xplained.h
+++ b/include/configs/sama5d3_xplained.h
@@ -209,7 +209,6 @@
#define CONFIG_SYS_MALLOC_LEN (4 * 1024 * 1024)
/* SPL */
-#define CONFIG_SPL
#define CONFIG_SPL_FRAMEWORK
#define CONFIG_SPL_TEXT_BASE 0x300000
#define CONFIG_SPL_MAX_SIZE 0x10000
diff --git a/include/configs/sama5d3xek.h b/include/configs/sama5d3xek.h
index da27180..56c2454 100644
--- a/include/configs/sama5d3xek.h
+++ b/include/configs/sama5d3xek.h
@@ -244,7 +244,6 @@
#define CONFIG_SYS_MALLOC_LEN (1024 * 1024)
/* SPL */
-#define CONFIG_SPL
#define CONFIG_SPL_FRAMEWORK
#define CONFIG_SPL_TEXT_BASE 0x300000
#define CONFIG_SPL_MAX_SIZE 0x10000
diff --git a/include/configs/sandbox.h b/include/configs/sandbox.h
index 12b69d9..bf2d25c 100644
--- a/include/configs/sandbox.h
+++ b/include/configs/sandbox.h
@@ -68,8 +68,10 @@
#define CONFIG_EFI_PARTITION
/*
- * Size of malloc() pool, although we don't actually use this yet.
+ * Size of malloc() pool, before and after relocation
*/
+#define CONFIG_SYS_MALLOC_F_LEN (1 << 10)
+#define CONFIG_MALLOC_F_ADDR 0x0010000
#define CONFIG_SYS_MALLOC_LEN (32 << 20) /* 32MB */
#define CONFIG_SYS_HUSH_PARSER
diff --git a/include/configs/sheevaplug.h b/include/configs/sheevaplug.h
index ecc93bc..3d6ff09 100644
--- a/include/configs/sheevaplug.h
+++ b/include/configs/sheevaplug.h
@@ -31,6 +31,7 @@
#define CONFIG_CMD_DHCP
#define CONFIG_CMD_ENV
#define CONFIG_CMD_MII
+#define CONFIG_CMD_MMC
#define CONFIG_CMD_NAND
#define CONFIG_CMD_PING
#define CONFIG_CMD_USB
@@ -82,6 +83,16 @@
#endif /* CONFIG_CMD_NET */
/*
+ * SDIO/MMC Card Configuration
+ */
+#ifdef CONFIG_CMD_MMC
+#define CONFIG_MMC
+#define CONFIG_GENERIC_MMC
+#define CONFIG_MVEBU_MMC
+#define CONFIG_SYS_MMC_BASE KW_SDIO_BASE
+#endif /* CONFIG_CMD_MMC */
+
+/*
* File system
*/
#define CONFIG_CMD_EXT2
diff --git a/include/configs/siemens-am33x-common.h b/include/configs/siemens-am33x-common.h
index 53816a6..b8fb77e 100644
--- a/include/configs/siemens-am33x-common.h
+++ b/include/configs/siemens-am33x-common.h
@@ -139,7 +139,6 @@
#define CONFIG_SYS_I2C_OMAP24XX
/* Defines for SPL */
-#define CONFIG_SPL
#define CONFIG_SPL_FRAMEWORK
#define CONFIG_SPL_TEXT_BASE 0x402F0400
#define CONFIG_SPL_MAX_SIZE (101 * 1024)
diff --git a/include/configs/smdkv310.h b/include/configs/smdkv310.h
index 34adfaf..048c178 100644
--- a/include/configs/smdkv310.h
+++ b/include/configs/smdkv310.h
@@ -76,7 +76,6 @@
#define CONFIG_ZERO_BOOTDELAY_CHECK
/* MMC SPL */
-#define CONFIG_SPL
#define CONFIG_SKIP_LOWLEVEL_INIT
#define COPY_BL2_FNPTR_ADDR 0x00002488
diff --git a/include/configs/socfpga_cyclone5.h b/include/configs/socfpga_cyclone5.h
index 262e744..27c2be9 100644
--- a/include/configs/socfpga_cyclone5.h
+++ b/include/configs/socfpga_cyclone5.h
@@ -223,7 +223,6 @@
*/
/* Enable building of SPL globally */
-#define CONFIG_SPL
#define CONFIG_SPL_FRAMEWORK
/* TEXT_BASE for linking the SPL binary */
diff --git a/include/configs/sun4i.h b/include/configs/sun4i.h
new file mode 100644
index 0000000..037f995
--- /dev/null
+++ b/include/configs/sun4i.h
@@ -0,0 +1,24 @@
+/*
+ * (C) Copyright 2012-2013 Henrik Nordstrom <henrik@henriknordstrom.net>
+ *
+ * Configuration settings for the Allwinner A10 (sun4i) CPU
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+/*
+ * A10 specific configuration
+ */
+#define CONFIG_SUN4I /* sun4i SoC generation */
+#define CONFIG_CLK_FULL_SPEED 1008000000
+
+#define CONFIG_SYS_PROMPT "sun4i# "
+
+/*
+ * Include common sunxi configuration where most the settings are
+ */
+#include <configs/sunxi-common.h>
+
+#endif /* __CONFIG_H */
diff --git a/include/configs/sun5i.h b/include/configs/sun5i.h
new file mode 100644
index 0000000..c6138b7
--- /dev/null
+++ b/include/configs/sun5i.h
@@ -0,0 +1,24 @@
+/*
+ * (C) Copyright 2012-2013 Henrik Nordstrom <henrik@henriknordstrom.net>
+ *
+ * Configuration settings for the Allwinner A13 (sun5i) CPU
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+/*
+ * High Level Configuration Options
+ */
+#define CONFIG_SUN5I /* sun5i SoC generation */
+#define CONFIG_CLK_FULL_SPEED 1008000000
+
+#define CONFIG_SYS_PROMPT "sun5i# "
+
+/*
+ * Include common sunxi configuration where most the settings are
+ */
+#include <configs/sunxi-common.h>
+
+#endif /* __CONFIG_H */
diff --git a/include/configs/sun7i.h b/include/configs/sun7i.h
index 9b693f7..d9be104 100644
--- a/include/configs/sun7i.h
+++ b/include/configs/sun7i.h
@@ -13,6 +13,7 @@
* A20 specific configuration
*/
#define CONFIG_SUN7I /* sun7i SoC generation */
+#define CONFIG_CLK_FULL_SPEED 912000000
#define CONFIG_SYS_PROMPT "sun7i# "
diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
index 5d72d62..8ab6429 100644
--- a/include/configs/sunxi-common.h
+++ b/include/configs/sunxi-common.h
@@ -70,7 +70,6 @@
#define CONFIG_CMD_MMC
#define CONFIG_MMC_SUNXI
#define CONFIG_MMC_SUNXI_SLOT 0
-#define CONFIG_MMC_SUNXI_USE_DMA
#define CONFIG_ENV_IS_IN_MMC
#define CONFIG_SYS_MMC_ENV_DEV 0 /* first detected MMC controller */
@@ -128,7 +127,6 @@
#ifdef CONFIG_SPL_FEL
-#define CONFIG_SPL
#define CONFIG_SPL_LDSCRIPT "arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds"
#define CONFIG_SPL_START_S_PATH "arch/arm/cpu/armv7/sunxi"
#define CONFIG_SPL_TEXT_BASE 0x2000
@@ -162,7 +160,31 @@
#undef CONFIG_CMD_NET
#undef CONFIG_CMD_NFS
+/* I2C */
+#define CONFIG_SPL_I2C_SUPPORT
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_MVTWSI
+#define CONFIG_SYS_I2C_SPEED 400000
+#define CONFIG_SYS_I2C_SLAVE 0x7f
+#define CONFIG_CMD_I2C
+
+/* PMU */
+#if defined CONFIG_AXP152_POWER || defined CONFIG_AXP209_POWER || defined CONFIG_AXP221_POWER
+#define CONFIG_SPL_POWER_SUPPORT
+#endif
+
+#ifndef CONFIG_CONS_INDEX
#define CONFIG_CONS_INDEX 1 /* UART0 */
+#endif
+
+/* GPIO */
+#define CONFIG_SUNXI_GPIO
+#define CONFIG_CMD_GPIO
+
+/* Ethernet support */
+#ifdef CONFIG_SUNXI_EMAC
+#define CONFIG_MII /* MII PHY management */
+#endif
#ifdef CONFIG_SUNXI_GMAC
#define CONFIG_DESIGNWARE_ETH /* GMAC can use designware driver */
@@ -188,6 +210,8 @@
#define CONFIG_ENV_IS_NOWHERE
#endif
+#define CONFIG_MISC_INIT_R
+
#ifndef CONFIG_SPL_BUILD
#include <config_distro_defaults.h>
#endif
diff --git a/include/configs/tam3517-common.h b/include/configs/tam3517-common.h
index 0c2f0f1..e1fc754 100644
--- a/include/configs/tam3517-common.h
+++ b/include/configs/tam3517-common.h
@@ -181,10 +181,6 @@
*/
/* **** PISMO SUPPORT *** */
-
-/* Configure the PISMO */
-#define PISMO1_NAND_SIZE GPMC_SIZE_128M
-
#define CONFIG_NAND
#define CONFIG_NAND_OMAP_GPMC
#define CONFIG_ENV_IS_IN_NAND
@@ -219,7 +215,6 @@
#define CONFIG_NET_RETRY_COUNT 10
/* Defines for SPL */
-#define CONFIG_SPL
#define CONFIG_SPL_FRAMEWORK
#define CONFIG_SPL_BOARD_INIT
#define CONFIG_SPL_CONSOLE
diff --git a/include/configs/tao3530.h b/include/configs/tao3530.h
index 1b0fee9..174bfe5 100644
--- a/include/configs/tao3530.h
+++ b/include/configs/tao3530.h
@@ -22,6 +22,7 @@
#define CONFIG_OMAP_GPIO
#define CONFIG_OMAP_COMMON
+#define CONFIG_SYS_GENERIC_BOARD
#define MACH_TYPE_OMAP3_TAO3530 2836
@@ -253,13 +254,8 @@
*/
/* **** PISMO SUPPORT *** */
-
-/* Configure the PISMO */
-#define PISMO1_NAND_SIZE GPMC_SIZE_128M
-#define PISMO1_ONEN_SIZE GPMC_SIZE_128M
-
#define CONFIG_SYS_MONITOR_LEN (256 << 10) /* Reserve 2 sectors */
-#define CONFIG_SYS_FLASH_BASE PISMO1_NAND_BASE
+#define CONFIG_SYS_FLASH_BASE NAND_BASE
/* Monitor at start of flash */
#define CONFIG_SYS_MONITOR_BASE CONFIG_SYS_FLASH_BASE
@@ -305,7 +301,6 @@
#define CONGIG_CMD_STORAGE
/* Defines for SPL */
-#define CONFIG_SPL
#define CONFIG_SPL_FRAMEWORK
#define CONFIG_SPL_NAND_SIMPLE
diff --git a/include/configs/tegra-common.h b/include/configs/tegra-common.h
index 3b88a83..717cd61 100644
--- a/include/configs/tegra-common.h
+++ b/include/configs/tegra-common.h
@@ -131,7 +131,6 @@
#define CONFIG_CMD_ENTERRCM
/* Defines for SPL */
-#define CONFIG_SPL
#define CONFIG_SPL_FRAMEWORK
#define CONFIG_SPL_RAM_DEVICE
#define CONFIG_SPL_BOARD_INIT
diff --git a/include/configs/ti814x_evm.h b/include/configs/ti814x_evm.h
index b51400c..a55bde2 100644
--- a/include/configs/ti814x_evm.h
+++ b/include/configs/ti814x_evm.h
@@ -168,7 +168,6 @@
#define CONFIG_ENV_IS_NOWHERE
/* Defines for SPL */
-#define CONFIG_SPL
#define CONFIG_SPL_FRAMEWORK
#define CONFIG_SPL_TEXT_BASE 0x40300000
#define CONFIG_SPL_MAX_SIZE ((128 - 18) * 1024)
diff --git a/include/configs/ti816x_evm.h b/include/configs/ti816x_evm.h
index b8c0d54..e86c364 100644
--- a/include/configs/ti816x_evm.h
+++ b/include/configs/ti816x_evm.h
@@ -134,7 +134,6 @@
/* SPL */
/* Defines for SPL */
-#define CONFIG_SPL
#define CONFIG_SPL_FRAMEWORK
#define CONFIG_SPL_TEXT_BASE 0x40400000
#define CONFIG_SPL_MAX_SIZE ((128 - 18) * 1024)
diff --git a/include/configs/ti_armv7_common.h b/include/configs/ti_armv7_common.h
index 6e0bf09..26ac251 100644
--- a/include/configs/ti_armv7_common.h
+++ b/include/configs/ti_armv7_common.h
@@ -198,7 +198,6 @@
*/
#if !defined(CONFIG_NOR_BOOT) && \
!(defined(CONFIG_QSPI_BOOT) && defined(CONFIG_AM43XX))
-#define CONFIG_SPL
#define CONFIG_SPL_FRAMEWORK
#define CONFIG_SPL_OS_BOOT
@@ -243,13 +242,6 @@
#define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR 0x80 /* address 0x10000 */
#define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS 0x80 /* 64KiB */
-/* NAND */
-#ifdef CONFIG_NAND
-#define CONFIG_CMD_SPL_NAND_OFS 0x240000 /* end of u-boot */
-#define CONFIG_SYS_NAND_SPL_KERNEL_OFFS 0x280000
-#define CONFIG_CMD_SPL_WRITE_SIZE 0x2000
-#endif
-
/* spl export command */
#define CONFIG_CMD_SPL
#endif
@@ -275,7 +267,6 @@
#define CONFIG_SPL_NAND_ECC
#define CONFIG_SPL_MTD_SUPPORT
#define CONFIG_SYS_NAND_U_BOOT_START CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_NAND_U_BOOT_OFFS 0x80000
#endif
#endif /* !CONFIG_NOR_BOOT */
diff --git a/include/configs/tricorder.h b/include/configs/tricorder.h
index 80985a2..cc0d172 100644
--- a/include/configs/tricorder.h
+++ b/include/configs/tricorder.h
@@ -35,6 +35,8 @@
#include <asm/arch/cpu.h> /* get chip and board defs */
#include <asm/arch/omap3.h>
+#define CONFIG_SYS_GENERIC_BOARD
+
/* Display CPU and Board information */
#define CONFIG_DISPLAY_CPUINFO
#define CONFIG_DISPLAY_BOARDINFO
@@ -315,8 +317,6 @@
#define PHYS_SDRAM_2 OMAP34XX_SDRC_CS1
/* NAND and environment organization */
-#define PISMO1_NAND_SIZE GPMC_SIZE_128M
-
#define CONFIG_SYS_MONITOR_LEN (256 << 10) /* Reserve 2 sectors */
#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM_1
@@ -331,7 +331,6 @@
#define CONFIG_SYS_SRAM_SIZE 0x10000
/* Defines for SPL */
-#define CONFIG_SPL
#define CONFIG_SPL_FRAMEWORK
#define CONFIG_SPL_NAND_SIMPLE
diff --git a/include/configs/tx25.h b/include/configs/tx25.h
index 5ac6e64..118f5ba 100644
--- a/include/configs/tx25.h
+++ b/include/configs/tx25.h
@@ -21,7 +21,6 @@
#define CONFIG_SYS_MONITOR_LEN (256 << 10) /* 256 kB for U-Boot */
-#define CONFIG_SPL
#define CONFIG_SPL_TARGET "u-boot-with-spl.bin"
#define CONFIG_SPL_LDSCRIPT "arch/$(ARCH)/cpu/u-boot-spl.lds"
#define CONFIG_SPL_MAX_SIZE 2048
diff --git a/include/configs/vpac270.h b/include/configs/vpac270.h
index c6d4763..2fb91a8 100644
--- a/include/configs/vpac270.h
+++ b/include/configs/vpac270.h
@@ -17,7 +17,6 @@
#define CONFIG_SYS_TEXT_BASE 0xa0000000
#ifdef CONFIG_ONENAND
-#define CONFIG_SPL
#define CONFIG_SPL_ONENAND_SUPPORT
#define CONFIG_SPL_ONENAND_LOAD_ADDR 0x2000
#define CONFIG_SPL_ONENAND_LOAD_SIZE \
diff --git a/include/configs/woodburn_sd.h b/include/configs/woodburn_sd.h
index 437472f..25bfeef 100644
--- a/include/configs/woodburn_sd.h
+++ b/include/configs/woodburn_sd.h
@@ -20,7 +20,6 @@
/*
* SPL
*/
-#define CONFIG_SPL
#define CONFIG_SPL_FRAMEWORK
#define CONFIG_SPL_LDSCRIPT "arch/arm/cpu/arm1136/u-boot-spl.lds"
#define CONFIG_SPL_LIBCOMMON_SUPPORT
diff --git a/include/configs/x600.h b/include/configs/x600.h
index eae85d6..71373e9 100644
--- a/include/configs/x600.h
+++ b/include/configs/x600.h
@@ -274,7 +274,6 @@
/*
* SPL related defines
*/
-#define CONFIG_SPL
#define CONFIG_SPL_TEXT_BASE 0xd2800b00
#define CONFIG_SPL_START_S_PATH "arch/arm/cpu/arm926ejs/spear"
#define CONFIG_SPL_LDSCRIPT "arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds"
diff --git a/include/configs/zynq-common.h b/include/configs/zynq-common.h
index fa252c0..d57e9d5 100644
--- a/include/configs/zynq-common.h
+++ b/include/configs/zynq-common.h
@@ -257,7 +257,6 @@
#define CONFIG_CMD_TFTPPUT
/* SPL part */
-#define CONFIG_SPL
#define CONFIG_CMD_SPL
#define CONFIG_SPL_FRAMEWORK
#define CONFIG_SPL_LIBCOMMON_SUPPORT
@@ -339,4 +338,6 @@
#define CONFIG_SYS_UBOOT_START CONFIG_SYS_TEXT_BASE
+#define CONFIG_SYS_GENERIC_BOARD
+
#endif /* __CONFIG_ZYNQ_COMMON_H */
diff --git a/include/cpsw.h b/include/cpsw.h
index a73843d..547b40c 100644
--- a/include/cpsw.h
+++ b/include/cpsw.h
@@ -44,6 +44,7 @@ struct cpsw_platform_data {
struct cpsw_slave_data *slave_data;
void (*control)(int enabled);
u32 host_port_num;
+ u32 active_slave;
u8 version;
};
diff --git a/include/dm/device-internal.h b/include/dm/device-internal.h
index 26e5cf5..7005d03 100644
--- a/include/dm/device-internal.h
+++ b/include/dm/device-internal.h
@@ -45,12 +45,14 @@ int device_bind(struct udevice *parent, struct driver *drv,
* tree.
*
* @parent: Pointer to device's parent
+ * @pre_reloc_only: If true, bind the driver only if its DM_INIT_F flag is set.
+ * If false bind the driver always.
* @info: Name and platdata for this device
* @devp: Returns a pointer to the bound device
* @return 0 if OK, -ve on error
*/
-int device_bind_by_name(struct udevice *parent, const struct driver_info *info,
- struct udevice **devp);
+int device_bind_by_name(struct udevice *parent, bool pre_reloc_only,
+ const struct driver_info *info, struct udevice **devp);
/**
* device_probe() - Probe a device, activating it
diff --git a/include/dm/device.h b/include/dm/device.h
index ae75a3f..c8a4072 100644
--- a/include/dm/device.h
+++ b/include/dm/device.h
@@ -23,6 +23,9 @@ struct driver_info;
/* DM is responsible for allocating and freeing platdata */
#define DM_FLAG_ALLOC_PDATA (1 << 1)
+/* DM should init this device prior to relocation */
+#define DM_FLAG_PRE_RELOC (1 << 2)
+
/**
* struct udevice - An instance of a driver
*
@@ -48,10 +51,13 @@ struct driver_info;
* @priv: Private data for this device
* @uclass: Pointer to uclass for this device
* @uclass_priv: The uclass's private data for this device
+ * @parent_priv: The parent's private data for this device
* @uclass_node: Used by uclass to link its devices
* @child_head: List of children of this device
* @sibling_node: Next device in list of all devices
* @flags: Flags for this device DM_FLAG_...
+ * @req_seq: Requested sequence number for this device (-1 = any)
+ * @seq: Allocated sequence number for this device (-1 = none)
*/
struct udevice {
struct driver *driver;
@@ -62,12 +68,18 @@ struct udevice {
void *priv;
struct uclass *uclass;
void *uclass_priv;
+ void *parent_priv;
struct list_head uclass_node;
struct list_head child_head;
struct list_head sibling_node;
uint32_t flags;
+ int req_seq;
+ int seq;
};
+/* Maximum sequence number supported */
+#define DM_MAX_SEQ 999
+
/* Returns the operations for a device */
#define device_get_ops(dev) (dev->driver->ops)
@@ -106,6 +118,10 @@ struct udevice_id {
* @remove: Called to remove a device, i.e. de-activate it
* @unbind: Called to unbind a device from its driver
* @ofdata_to_platdata: Called before probe to decode device tree data
+ * @child_pre_probe: Called before a child device is probed. The device has
+ * memory allocated but it has not yet been probed.
+ * @child_post_remove: Called after a child device is removed. The device
+ * has memory allocated but its device_remove() method has been called.
* @priv_auto_alloc_size: If non-zero this is the size of the private data
* to be allocated in the device's ->priv pointer. If zero, then the driver
* is responsible for allocating any data required.
@@ -114,9 +130,13 @@ struct udevice_id {
* This is typically only useful for device-tree-aware drivers (those with
* an of_match), since drivers which use platdata will have the data
* provided in the U_BOOT_DEVICE() instantiation.
- * ops: Driver-specific operations. This is typically a list of function
+ * @per_child_auto_alloc_size: Each device can hold private data owned by
+ * its parent. If required this will be automatically allocated if this
+ * value is non-zero.
+ * @ops: Driver-specific operations. This is typically a list of function
* pointers defined by the driver, to implement driver functions required by
* the uclass.
+ * @flags: driver flags - see DM_FLAGS_...
*/
struct driver {
char *name;
@@ -127,9 +147,13 @@ struct driver {
int (*remove)(struct udevice *dev);
int (*unbind)(struct udevice *dev);
int (*ofdata_to_platdata)(struct udevice *dev);
+ int (*child_pre_probe)(struct udevice *dev);
+ int (*child_post_remove)(struct udevice *dev);
int priv_auto_alloc_size;
int platdata_auto_alloc_size;
+ int per_child_auto_alloc_size;
const void *ops; /* driver-specific operations */
+ uint32_t flags;
};
/* Declare a new U-Boot driver */
@@ -147,6 +171,20 @@ struct driver {
void *dev_get_platdata(struct udevice *dev);
/**
+ * dev_get_parentdata() - Get the parent data for a device
+ *
+ * The parent data is data stored in the device but owned by the parent.
+ * For example, a USB device may have parent data which contains information
+ * about how to talk to the device over USB.
+ *
+ * This checks that dev is not NULL, but no other checks for now
+ *
+ * @dev Device to check
+ * @return parent data, or NULL if none
+ */
+void *dev_get_parentdata(struct udevice *dev);
+
+/**
* dev_get_priv() - Get the private data for a device
*
* This checks that dev is not NULL, but no other checks for now
@@ -156,4 +194,84 @@ void *dev_get_platdata(struct udevice *dev);
*/
void *dev_get_priv(struct udevice *dev);
+/**
+ * device_get_child() - Get the child of a device by index
+ *
+ * Returns the numbered child, 0 being the first. This does not use
+ * sequence numbers, only the natural order.
+ *
+ * @dev: Parent device to check
+ * @index: Child index
+ * @devp: Returns pointer to device
+ */
+int device_get_child(struct udevice *parent, int index, struct udevice **devp);
+
+/**
+ * device_find_child_by_seq() - Find a child device based on a sequence
+ *
+ * This searches for a device with the given seq or req_seq.
+ *
+ * For seq, if an active device has this sequence it will be returned.
+ * If there is no such device then this will return -ENODEV.
+ *
+ * For req_seq, if a device (whether activated or not) has this req_seq
+ * value, that device will be returned. This is a strong indication that
+ * the device will receive that sequence when activated.
+ *
+ * @parent: Parent device
+ * @seq_or_req_seq: Sequence number to find (0=first)
+ * @find_req_seq: true to find req_seq, false to find seq
+ * @devp: Returns pointer to device (there is only one per for each seq).
+ * Set to NULL if none is found
+ * @return 0 if OK, -ve on error
+ */
+int device_find_child_by_seq(struct udevice *parent, int seq_or_req_seq,
+ bool find_req_seq, struct udevice **devp);
+
+/**
+ * device_get_child_by_seq() - Get a child device based on a sequence
+ *
+ * If an active device has this sequence it will be returned. If there is no
+ * such device then this will check for a device that is requesting this
+ * sequence.
+ *
+ * The device is probed to activate it ready for use.
+ *
+ * @parent: Parent device
+ * @seq: Sequence number to find (0=first)
+ * @devp: Returns pointer to device (there is only one per for each seq)
+ * Set to NULL if none is found
+ * @return 0 if OK, -ve on error
+ */
+int device_get_child_by_seq(struct udevice *parent, int seq,
+ struct udevice **devp);
+
+/**
+ * device_find_child_by_of_offset() - Find a child device based on FDT offset
+ *
+ * Locates a child device by its device tree offset.
+ *
+ * @parent: Parent device
+ * @of_offset: Device tree offset to find
+ * @devp: Returns pointer to device if found, otherwise this is set to NULL
+ * @return 0 if OK, -ve on error
+ */
+int device_find_child_by_of_offset(struct udevice *parent, int of_offset,
+ struct udevice **devp);
+
+/**
+ * device_get_child_by_of_offset() - Get a child device based on FDT offset
+ *
+ * Locates a child device by its device tree offset.
+ *
+ * The device is probed to activate it ready for use.
+ *
+ * @parent: Parent device
+ * @of_offset: Device tree offset to find
+ * @devp: Returns pointer to device if found, otherwise this is set to NULL
+ * @return 0 if OK, -ve on error
+ */
+int device_get_child_by_of_offset(struct udevice *parent, int seq,
+ struct udevice **devp);
+
#endif
diff --git a/include/dm/lists.h b/include/dm/lists.h
index 49d87e6..87a3af5 100644
--- a/include/dm/lists.h
+++ b/include/dm/lists.h
@@ -42,7 +42,7 @@ struct uclass_driver *lists_uclass_lookup(enum uclass_id id);
* @early_only: If true, bind only drivers with the DM_INIT_F flag. If false
* bind all drivers.
*/
-int lists_bind_drivers(struct udevice *parent);
+int lists_bind_drivers(struct udevice *parent, bool pre_reloc_only);
/**
* lists_bind_fdt() - bind a device tree node
diff --git a/include/dm/platdata.h b/include/dm/platdata.h
index 0ef3353..2bc8b14 100644
--- a/include/dm/platdata.h
+++ b/include/dm/platdata.h
@@ -11,9 +11,15 @@
#ifndef _DM_PLATDATA_H
#define _DM_PLATDATA_H
+/**
+ * struct driver_info - Information required to instantiate a device
+ *
+ * @name: Device name
+ * @platdata: Driver-specific platform data
+ */
struct driver_info {
- const char *name;
- const void *platdata;
+ const char *name;
+ const void *platdata;
};
#define U_BOOT_DEVICE(__name) \
diff --git a/include/dm/root.h b/include/dm/root.h
index a4826a6..c7f0c1d 100644
--- a/include/dm/root.h
+++ b/include/dm/root.h
@@ -26,19 +26,66 @@ struct udevice *dm_root(void);
*
* This scans all available platdata and creates drivers for each
*
+ * @pre_reloc_only: If true, bind only drivers with the DM_FLAG_PRE_RELOC
+ * flag. If false bind all drivers.
* @return 0 if OK, -ve on error
*/
-int dm_scan_platdata(void);
+int dm_scan_platdata(bool pre_reloc_only);
/**
* dm_scan_fdt() - Scan the device tree and bind drivers
*
- * This scans the device tree and creates a driver for each node
+ * This scans the device tree and creates a driver for each node. Only
+ * the top-level subnodes are examined.
*
* @blob: Pointer to device tree blob
+ * @pre_reloc_only: If true, bind only drivers with the DM_FLAG_PRE_RELOC
+ * flag. If false bind all drivers.
* @return 0 if OK, -ve on error
*/
-int dm_scan_fdt(const void *blob);
+int dm_scan_fdt(const void *blob, bool pre_reloc_only);
+
+/**
+ * dm_scan_fdt_node() - Scan the device tree and bind drivers for a node
+ *
+ * This scans the subnodes of a device tree node and and creates a driver
+ * for each one.
+ *
+ * @parent: Parent device for the devices that will be created
+ * @blob: Pointer to device tree blob
+ * @offset: Offset of node to scan
+ * @pre_reloc_only: If true, bind only drivers with the DM_FLAG_PRE_RELOC
+ * flag. If false bind all drivers.
+ * @return 0 if OK, -ve on error
+ */
+int dm_scan_fdt_node(struct udevice *parent, const void *blob, int offset,
+ bool pre_reloc_only);
+
+/**
+ * dm_scan_other() - Scan for other devices
+ *
+ * Some devices may not be visible to Driver Model. This weak function can
+ * be provided by boards which wish to create their own devices
+ * programmaticaly. They should do this by calling device_bind() on each
+ * device.
+ *
+ * @pre_reloc_only: If true, bind only drivers with the DM_FLAG_PRE_RELOC
+ * flag. If false bind all drivers.
+ */
+int dm_scan_other(bool pre_reloc_only);
+
+/**
+ * dm_init_and_scan() - Initialise Driver Model structures and scan for devices
+ *
+ * This function initialises the roots of the driver tree and uclass trees,
+ * then scans and binds available devices from platform data and the FDT.
+ * This calls dm_init() to set up Driver Model structures.
+ *
+ * @pre_reloc_only: If true, bind only drivers with the DM_FLAG_PRE_RELOC
+ * flag. If false bind all drivers.
+ * @return 0 if OK, -ve on error
+ */
+int dm_init_and_scan(bool pre_reloc_only);
/**
* dm_init() - Initialise Driver Model structures
@@ -50,4 +97,12 @@ int dm_scan_fdt(const void *blob);
*/
int dm_init(void);
+/**
+ * dm_uninit - Uninitialise Driver Model structures
+ *
+ * All devices will be removed and unbound
+ * @return 0 if OK, -ve on error
+ */
+int dm_uninit(void);
+
#endif
diff --git a/include/dm/test.h b/include/dm/test.h
index 409f1a3..235d728 100644
--- a/include/dm/test.h
+++ b/include/dm/test.h
@@ -82,6 +82,17 @@ struct dm_test_uclass_priv {
int total_add;
};
+/**
+ * struct dm_test_parent_data - parent's information on each child
+ *
+ * @sum: Test value used to check parent data works correctly
+ * @flag: Used to track calling of parent operations
+ */
+struct dm_test_parent_data {
+ int sum;
+ int flag;
+};
+
/*
* Operation counts for the test driver, used to check that each method is
* called correctly
@@ -100,6 +111,7 @@ extern struct dm_test_state global_test_state;
* @fail_count: Number of tests that failed
* @force_fail_alloc: Force all memory allocs to fail
* @skip_post_probe: Skip uclass post-probe processing
+ * @removed: Used to keep track of a device that was removed
*/
struct dm_test_state {
struct udevice *root;
@@ -107,6 +119,7 @@ struct dm_test_state {
int fail_count;
int force_fail_alloc;
int skip_post_probe;
+ struct udevice *removed;
};
/* Test flags for each test */
@@ -156,6 +169,15 @@ int dm_check_operations(struct dm_test_state *dms, struct udevice *dev,
uint32_t base, struct dm_test_priv *priv);
/**
+ * dm_check_devices() - check the devices respond to operations correctly
+ *
+ * @dms: Overall test state
+ * @num_devices: Number of test devices to check
+ * @return 0 if OK, -ve on error
+ */
+int dm_check_devices(struct dm_test_state *dms, int num_devices);
+
+/**
* dm_test_main() - Run all the tests
*
* This runs all available driver model tests
diff --git a/include/dm/uclass-id.h b/include/dm/uclass-id.h
index f0e691c..dd95fca 100644
--- a/include/dm/uclass-id.h
+++ b/include/dm/uclass-id.h
@@ -17,9 +17,10 @@ enum uclass_id {
UCLASS_DEMO,
UCLASS_TEST,
UCLASS_TEST_FDT,
+ UCLASS_TEST_BUS,
/* U-Boot uclasses start here */
- UCLASS_GPIO,
+ UCLASS_GPIO, /* Bank of general-purpose I/O pins */
UCLASS_COUNT,
UCLASS_INVALID = -1,
diff --git a/include/dm/uclass-internal.h b/include/dm/uclass-internal.h
index 1434db3..f718f37 100644
--- a/include/dm/uclass-internal.h
+++ b/include/dm/uclass-internal.h
@@ -82,4 +82,27 @@ struct uclass *uclass_find(enum uclass_id key);
*/
int uclass_destroy(struct uclass *uc);
+/**
+ * uclass_find_device_by_seq() - Find uclass device based on ID and sequence
+ *
+ * This searches for a device with the given seq or req_seq.
+ *
+ * For seq, if an active device has this sequence it will be returned.
+ * If there is no such device then this will return -ENODEV.
+ *
+ * For req_seq, if a device (whether activated or not) has this req_seq
+ * value, that device will be returned. This is a strong indication that
+ * the device will receive that sequence when activated.
+ *
+ * The device is NOT probed, it is merely returned.
+ *
+ * @id: ID to look up
+ * @seq_or_req_seq: Sequence number to find (0=first)
+ * @find_req_seq: true to find req_seq, false to find seq
+ * @devp: Returns pointer to device (there is only one per for each seq)
+ * @return 0 if OK, -ve on error
+ */
+int uclass_find_device_by_seq(enum uclass_id id, int seq_or_req_seq,
+ bool find_req_seq, struct udevice **devp);
+
#endif
diff --git a/include/dm/uclass.h b/include/dm/uclass.h
index afd9923..8d09ecf 100644
--- a/include/dm/uclass.h
+++ b/include/dm/uclass.h
@@ -98,7 +98,7 @@ int uclass_get(enum uclass_id key, struct uclass **ucp);
*
* The device is probed to activate it ready for use.
*
- * id: ID to look up
+ * @id: ID to look up
* @index: Device number within that uclass (0=first)
* @devp: Returns pointer to device (there is only one per for each ID)
* @return 0 if OK, -ve on error
@@ -106,6 +106,38 @@ int uclass_get(enum uclass_id key, struct uclass **ucp);
int uclass_get_device(enum uclass_id id, int index, struct udevice **devp);
/**
+ * uclass_get_device_by_seq() - Get a uclass device based on an ID and sequence
+ *
+ * If an active device has this sequence it will be returned. If there is no
+ * such device then this will check for a device that is requesting this
+ * sequence.
+ *
+ * The device is probed to activate it ready for use.
+ *
+ * @id: ID to look up
+ * @seq: Sequence number to find (0=first)
+ * @devp: Returns pointer to device (there is only one for each seq)
+ * @return 0 if OK, -ve on error
+ */
+int uclass_get_device_by_seq(enum uclass_id id, int seq, struct udevice **devp);
+
+/**
+ * uclass_get_device_by_of_offset() - Get a uclass device by device tree node
+ *
+ * This searches the devices in the uclass for one attached to the given
+ * device tree node.
+ *
+ * The device is probed to activate it ready for use.
+ *
+ * @id: ID to look up
+ * @node: Device tree offset to search for (if -ve then -ENODEV is returned)
+ * @devp: Returns pointer to device (there is only one for each node)
+ * @return 0 if OK, -ve on error
+ */
+int uclass_get_device_by_of_offset(enum uclass_id id, int node,
+ struct udevice **devp);
+
+/**
* uclass_first_device() - Get the first device in a uclass
*
* @id: Uclass ID to look up
@@ -124,6 +156,21 @@ int uclass_first_device(enum uclass_id id, struct udevice **devp);
int uclass_next_device(struct udevice **devp);
/**
+ * uclass_resolve_seq() - Resolve a device's sequence number
+ *
+ * On entry dev->seq is -1, and dev->req_seq may be -1 (to allocate a
+ * sequence number automatically, or >= 0 to select a particular number.
+ * If the requested sequence number is in use, then this device will
+ * be allocated another one.
+ *
+ * Note that the device's seq value is not changed by this function.
+ *
+ * @dev: Device for which to allocate sequence number
+ * @return sequence number allocated, or -ve on error
+ */
+int uclass_resolve_seq(struct udevice *dev);
+
+/**
* uclass_foreach_dev() - Helper function to iteration through devices
*
* This creates a for() loop which works through the available devices in
diff --git a/include/environment.h b/include/environment.h
index 08679ae..1fdbdad 100644
--- a/include/environment.h
+++ b/include/environment.h
@@ -180,6 +180,15 @@ extern unsigned char env_get_char_spec(int);
extern void env_reloc(void);
#endif
+#ifdef CONFIG_ENV_IS_IN_MMC
+#include <mmc.h>
+
+extern int mmc_get_env_addr(struct mmc *mmc, int copy, u32 *env_addr);
+# ifdef CONFIG_SYS_MMC_ENV_PART
+extern uint mmc_get_env_part(struct mmc *mmc);
+# endif
+#endif
+
#ifndef DO_DEPS_ONLY
#include <env_attr.h>
diff --git a/include/fdtdec.h b/include/fdtdec.h
index a7e6ee7..856e6cf 100644
--- a/include/fdtdec.h
+++ b/include/fdtdec.h
@@ -345,6 +345,35 @@ int fdtdec_find_aliases_for_id(const void *blob, const char *name,
int fdtdec_add_aliases_for_id(const void *blob, const char *name,
enum fdt_compat_id id, int *node_list, int maxcount);
+/**
+ * Get the alias sequence number of a node
+ *
+ * This works out whether a node is pointed to by an alias, and if so, the
+ * sequence number of that alias. Aliases are of the form <base><num> where
+ * <num> is the sequence number. For example spi2 would be sequence number
+ * 2.
+ *
+ * @param blob Device tree blob (if NULL, then error is returned)
+ * @param base Base name for alias (before the underscore)
+ * @param node Node to look up
+ * @param seqp This is set to the sequence number if one is found,
+ * but otherwise the value is left alone
+ * @return 0 if a sequence was found, -ve if not
+ */
+int fdtdec_get_alias_seq(const void *blob, const char *base, int node,
+ int *seqp);
+
+/**
+ * Get the offset of the given alias node
+ *
+ * This looks up an alias in /aliases then finds the offset of that node.
+ *
+ * @param blob Device tree blob (if NULL, then error is returned)
+ * @param name Alias name, e.g. "console"
+ * @return Node offset referred to by that alias, or -ve FDT_ERR_...
+ */
+int fdtdec_get_alias_node(const void *blob, const char *name);
+
/*
* Get the name for a compatible ID
*
diff --git a/include/i8042.h b/include/i8042.h
index 9630619..58c85ec 100644
--- a/include/i8042.h
+++ b/include/i8042.h
@@ -72,8 +72,10 @@ void i8042_flush(void);
*/
int i8042_disable(void);
+struct stdio_dev;
+
int i8042_kbd_init(void);
-int i8042_tstc(void);
-int i8042_getc(void);
+int i8042_tstc(struct stdio_dev *dev);
+int i8042_getc(struct stdio_dev *dev);
#endif /* _I8042_H_ */
diff --git a/include/linux/kconfig.h b/include/linux/kconfig.h
new file mode 100644
index 0000000..be342b9
--- /dev/null
+++ b/include/linux/kconfig.h
@@ -0,0 +1,46 @@
+#ifndef __LINUX_KCONFIG_H
+#define __LINUX_KCONFIG_H
+
+#include <generated/autoconf.h>
+
+/*
+ * Helper macros to use CONFIG_ options in C/CPP expressions. Note that
+ * these only work with boolean and tristate options.
+ */
+
+/*
+ * Getting something that works in C and CPP for an arg that may or may
+ * not be defined is tricky. Here, if we have "#define CONFIG_BOOGER 1"
+ * we match on the placeholder define, insert the "0," for arg1 and generate
+ * the triplet (0, 1, 0). Then the last step cherry picks the 2nd arg (a one).
+ * When CONFIG_BOOGER is not defined, we generate a (... 1, 0) pair, and when
+ * the last step cherry picks the 2nd arg, we get a zero.
+ */
+#define __ARG_PLACEHOLDER_1 0,
+#define config_enabled(cfg) _config_enabled(cfg)
+#define _config_enabled(value) __config_enabled(__ARG_PLACEHOLDER_##value)
+#define __config_enabled(arg1_or_junk) ___config_enabled(arg1_or_junk 1, 0)
+#define ___config_enabled(__ignored, val, ...) val
+
+/*
+ * IS_ENABLED(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y' or 'm',
+ * 0 otherwise.
+ *
+ */
+#define IS_ENABLED(option) \
+ (config_enabled(option) || config_enabled(option##_MODULE))
+
+/*
+ * IS_BUILTIN(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y', 0
+ * otherwise. For boolean options, this is equivalent to
+ * IS_ENABLED(CONFIG_FOO).
+ */
+#define IS_BUILTIN(option) config_enabled(option)
+
+/*
+ * IS_MODULE(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'm', 0
+ * otherwise.
+ */
+#define IS_MODULE(option) config_enabled(option##_MODULE)
+
+#endif /* __LINUX_KCONFIG_H */
diff --git a/include/mvebu_mmc.h b/include/mvebu_mmc.h
new file mode 100644
index 0000000..28d98fe
--- /dev/null
+++ b/include/mvebu_mmc.h
@@ -0,0 +1,278 @@
+/*
+ * Marvell MMC/SD/SDIO driver
+ *
+ * (C) Copyright 2012
+ * Marvell Semiconductor <www.marvell.com>
+ * Written-by: Maen Suleiman, Gerald Kerma
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef __MVEBU_MMC_H__
+#define __MVEBU_MMC_H__
+
+/* needed for the mmc_cfg definition */
+#include <mmc.h>
+
+#define MMC_BLOCK_SIZE 512
+
+/*
+ * Clock rates
+ */
+
+#define MVEBU_MMC_CLOCKRATE_MAX 50000000
+#define MVEBU_MMC_BASE_DIV_MAX 0x7ff
+#define MVEBU_MMC_BASE_FAST_CLOCK CONFIG_SYS_TCLK
+#define MVEBU_MMC_BASE_FAST_CLK_100 100000000
+#define MVEBU_MMC_BASE_FAST_CLK_200 200000000
+
+/* SDIO register */
+#define SDIO_SYS_ADDR_LOW 0x000
+#define SDIO_SYS_ADDR_HI 0x004
+#define SDIO_BLK_SIZE 0x008
+#define SDIO_BLK_COUNT 0x00c
+#define SDIO_ARG_LOW 0x010
+#define SDIO_ARG_HI 0x014
+#define SDIO_XFER_MODE 0x018
+#define SDIO_CMD 0x01c
+#define SDIO_RSP(i) (0x020 + ((i)<<2))
+#define SDIO_RSP0 0x020
+#define SDIO_RSP1 0x024
+#define SDIO_RSP2 0x028
+#define SDIO_RSP3 0x02c
+#define SDIO_RSP4 0x030
+#define SDIO_RSP5 0x034
+#define SDIO_RSP6 0x038
+#define SDIO_RSP7 0x03c
+#define SDIO_BUF_DATA_PORT 0x040
+#define SDIO_RSVED 0x044
+#define SDIO_HW_STATE 0x048
+#define SDIO_PRESENT_STATE0 0x048
+#define SDIO_PRESENT_STATE1 0x04c
+#define SDIO_HOST_CTRL 0x050
+#define SDIO_BLK_GAP_CTRL 0x054
+#define SDIO_CLK_CTRL 0x058
+#define SDIO_SW_RESET 0x05c
+#define SDIO_NOR_INTR_STATUS 0x060
+#define SDIO_ERR_INTR_STATUS 0x064
+#define SDIO_NOR_STATUS_EN 0x068
+#define SDIO_ERR_STATUS_EN 0x06c
+#define SDIO_NOR_INTR_EN 0x070
+#define SDIO_ERR_INTR_EN 0x074
+#define SDIO_AUTOCMD12_ERR_STATUS 0x078
+#define SDIO_CURR_BYTE_LEFT 0x07c
+#define SDIO_CURR_BLK_LEFT 0x080
+#define SDIO_AUTOCMD12_ARG_LOW 0x084
+#define SDIO_AUTOCMD12_ARG_HI 0x088
+#define SDIO_AUTOCMD12_INDEX 0x08c
+#define SDIO_AUTO_RSP(i) (0x090 + ((i)<<2))
+#define SDIO_AUTO_RSP0 0x090
+#define SDIO_AUTO_RSP1 0x094
+#define SDIO_AUTO_RSP2 0x098
+#define SDIO_CLK_DIV 0x128
+
+#define WINDOW_CTRL(i) (0x108 + ((i) << 3))
+#define WINDOW_BASE(i) (0x10c + ((i) << 3))
+
+/* SDIO_PRESENT_STATE */
+#define CARD_BUSY (1 << 1)
+#define CMD_INHIBIT (1 << 0)
+#define CMD_TXACTIVE (1 << 8)
+#define CMD_RXACTIVE (1 << 9)
+#define CMD_AUTOCMD12ACTIVE (1 << 14)
+#define CMD_BUS_BUSY (CMD_AUTOCMD12ACTIVE | \
+ CMD_RXACTIVE | \
+ CMD_TXACTIVE | \
+ CMD_INHIBIT | \
+ CARD_BUSY)
+
+/*
+ * SDIO_CMD
+ */
+
+#define SDIO_CMD_RSP_NONE (0 << 0)
+#define SDIO_CMD_RSP_136 (1 << 0)
+#define SDIO_CMD_RSP_48 (2 << 0)
+#define SDIO_CMD_RSP_48BUSY (3 << 0)
+
+#define SDIO_CMD_CHECK_DATACRC16 (1 << 2)
+#define SDIO_CMD_CHECK_CMDCRC (1 << 3)
+#define SDIO_CMD_INDX_CHECK (1 << 4)
+#define SDIO_CMD_DATA_PRESENT (1 << 5)
+#define SDIO_UNEXPECTED_RESP (1 << 7)
+
+#define SDIO_CMD_INDEX(x) ((x) << 8)
+
+/*
+ * SDIO_XFER_MODE
+ */
+
+#define SDIO_XFER_MODE_STOP_CLK (1 << 5)
+#define SDIO_XFER_MODE_HW_WR_DATA_EN (1 << 1)
+#define SDIO_XFER_MODE_AUTO_CMD12 (1 << 2)
+#define SDIO_XFER_MODE_INT_CHK_EN (1 << 3)
+#define SDIO_XFER_MODE_TO_HOST (1 << 4)
+#define SDIO_XFER_MODE_DMA (0 << 6)
+
+/*
+ * SDIO_HOST_CTRL
+ */
+
+#define SDIO_HOST_CTRL_PUSH_PULL_EN (1 << 0)
+
+#define SDIO_HOST_CTRL_CARD_TYPE_MEM_ONLY (0 << 1)
+#define SDIO_HOST_CTRL_CARD_TYPE_IO_ONLY (1 << 1)
+#define SDIO_HOST_CTRL_CARD_TYPE_IO_MEM_COMBO (2 << 1)
+#define SDIO_HOST_CTRL_CARD_TYPE_IO_MMC (3 << 1)
+#define SDIO_HOST_CTRL_CARD_TYPE_MASK (3 << 1)
+
+#define SDIO_HOST_CTRL_BIG_ENDIAN (1 << 3)
+#define SDIO_HOST_CTRL_LSB_FIRST (1 << 4)
+#define SDIO_HOST_CTRL_DATA_WIDTH_1_BIT (0 << 9)
+#define SDIO_HOST_CTRL_DATA_WIDTH_4_BITS (1 << 9)
+#define SDIO_HOST_CTRL_HI_SPEED_EN (1 << 10)
+
+#define SDIO_HOST_CTRL_TMOUT_MAX 0xf
+#define SDIO_HOST_CTRL_TMOUT_MASK (0xf << 11)
+#define SDIO_HOST_CTRL_TMOUT(x) ((x) << 11)
+#define SDIO_HOST_CTRL_TMOUT_EN (1 << 15)
+
+/*
+ * SDIO_SW_RESET
+ */
+
+#define SDIO_SW_RESET_NOW (1 << 8)
+
+/*
+ * Normal interrupt status bits
+ */
+
+#define SDIO_NOR_ERROR (1 << 15)
+#define SDIO_NOR_UNEXP_RSP (1 << 14)
+#define SDIO_NOR_AUTOCMD12_DONE (1 << 13)
+#define SDIO_NOR_SUSPEND_ON (1 << 12)
+#define SDIO_NOR_LMB_FF_8W_AVAIL (1 << 11)
+#define SDIO_NOR_LMB_FF_8W_FILLED (1 << 10)
+#define SDIO_NOR_READ_WAIT_ON (1 << 9)
+#define SDIO_NOR_CARD_INT (1 << 8)
+#define SDIO_NOR_READ_READY (1 << 5)
+#define SDIO_NOR_WRITE_READY (1 << 4)
+#define SDIO_NOR_DMA_INI (1 << 3)
+#define SDIO_NOR_BLK_GAP_EVT (1 << 2)
+#define SDIO_NOR_XFER_DONE (1 << 1)
+#define SDIO_NOR_CMD_DONE (1 << 0)
+
+/*
+ * Error status bits
+ */
+
+#define SDIO_ERR_CRC_STATUS (1 << 14)
+#define SDIO_ERR_CRC_STARTBIT (1 << 13)
+#define SDIO_ERR_CRC_ENDBIT (1 << 12)
+#define SDIO_ERR_RESP_TBIT (1 << 11)
+#define SDIO_ERR_XFER_SIZE (1 << 10)
+#define SDIO_ERR_CMD_STARTBIT (1 << 9)
+#define SDIO_ERR_AUTOCMD12 (1 << 8)
+#define SDIO_ERR_DATA_ENDBIT (1 << 6)
+#define SDIO_ERR_DATA_CRC (1 << 5)
+#define SDIO_ERR_DATA_TIMEOUT (1 << 4)
+#define SDIO_ERR_CMD_INDEX (1 << 3)
+#define SDIO_ERR_CMD_ENDBIT (1 << 2)
+#define SDIO_ERR_CMD_CRC (1 << 1)
+#define SDIO_ERR_CMD_TIMEOUT (1 << 0)
+/* enable all for polling */
+#define SDIO_POLL_MASK 0xffff
+
+/*
+ * CMD12 error status bits
+ */
+
+#define SDIO_AUTOCMD12_ERR_NOTEXE (1 << 0)
+#define SDIO_AUTOCMD12_ERR_TIMEOUT (1 << 1)
+#define SDIO_AUTOCMD12_ERR_CRC (1 << 2)
+#define SDIO_AUTOCMD12_ERR_ENDBIT (1 << 3)
+#define SDIO_AUTOCMD12_ERR_INDEX (1 << 4)
+#define SDIO_AUTOCMD12_ERR_RESP_T_BIT (1 << 5)
+#define SDIO_AUTOCMD12_ERR_RESP_STARTBIT (1 << 6)
+
+#define MMC_RSP_PRESENT (1 << 0)
+/* 136 bit response */
+#define MMC_RSP_136 (1 << 1)
+/* expect valid crc */
+#define MMC_RSP_CRC (1 << 2)
+/* card may send busy */
+#define MMC_RSP_BUSY (1 << 3)
+/* response contains opcode */
+#define MMC_RSP_OPCODE (1 << 4)
+
+#define MMC_BUSMODE_OPENDRAIN 1
+#define MMC_BUSMODE_PUSHPULL 2
+
+#define MMC_BUS_WIDTH_1 0
+#define MMC_BUS_WIDTH_4 2
+#define MMC_BUS_WIDTH_8 3
+
+/* Can the host do 4 bit transfers */
+#define MMC_CAP_4_BIT_DATA (1 << 0)
+/* Can do MMC high-speed timing */
+#define MMC_CAP_MMC_HIGHSPEED (1 << 1)
+/* Can do SD high-speed timing */
+#define MMC_CAP_SD_HIGHSPEED (1 << 2)
+/* Can signal pending SDIO IRQs */
+#define MMC_CAP_SDIO_IRQ (1 << 3)
+/* Talks only SPI protocols */
+#define MMC_CAP_SPI (1 << 4)
+/* Needs polling for card-detection */
+#define MMC_CAP_NEEDS_POLL (1 << 5)
+/* Can the host do 8 bit transfers */
+#define MMC_CAP_8_BIT_DATA (1 << 6)
+
+/* Nonremovable e.g. eMMC */
+#define MMC_CAP_NONREMOVABLE (1 << 8)
+/* Waits while card is busy */
+#define MMC_CAP_WAIT_WHILE_BUSY (1 << 9)
+/* Allow erase/trim commands */
+#define MMC_CAP_ERASE (1 << 10)
+/* can support DDR mode at 1.8V */
+#define MMC_CAP_1_8V_DDR (1 << 11)
+/* can support DDR mode at 1.2V */
+#define MMC_CAP_1_2V_DDR (1 << 12)
+/* Can power off after boot */
+#define MMC_CAP_POWER_OFF_CARD (1 << 13)
+/* CMD14/CMD19 bus width ok */
+#define MMC_CAP_BUS_WIDTH_TEST (1 << 14)
+/* Host supports UHS SDR12 mode */
+#define MMC_CAP_UHS_SDR12 (1 << 15)
+/* Host supports UHS SDR25 mode */
+#define MMC_CAP_UHS_SDR25 (1 << 16)
+/* Host supports UHS SDR50 mode */
+#define MMC_CAP_UHS_SDR50 (1 << 17)
+/* Host supports UHS SDR104 mode */
+#define MMC_CAP_UHS_SDR104 (1 << 18)
+/* Host supports UHS DDR50 mode */
+#define MMC_CAP_UHS_DDR50 (1 << 19)
+/* Host supports Driver Type A */
+#define MMC_CAP_DRIVER_TYPE_A (1 << 23)
+/* Host supports Driver Type C */
+#define MMC_CAP_DRIVER_TYPE_C (1 << 24)
+/* Host supports Driver Type D */
+#define MMC_CAP_DRIVER_TYPE_D (1 << 25)
+/* CMD23 supported. */
+#define MMC_CAP_CMD23 (1 << 30)
+/* Hardware reset */
+#define MMC_CAP_HW_RESET (1 << 31)
+
+struct mvebu_mmc_cfg {
+ u32 mvebu_mmc_base;
+ u32 mvebu_mmc_clk;
+ u8 max_bus_width;
+ struct mmc_config cfg;
+};
+
+/*
+ * Functions prototypes
+ */
+
+int mvebu_mmc_init(bd_t *bis);
+
+#endif /* __MVEBU_MMC_H__ */
diff --git a/include/netdev.h b/include/netdev.h
index 63481ec..e45dd7a 100644
--- a/include/netdev.h
+++ b/include/netdev.h
@@ -78,8 +78,8 @@ int sh_eth_initialize(bd_t *bis);
int skge_initialize(bd_t *bis);
int smc91111_initialize(u8 dev_num, int base_addr);
int smc911x_initialize(u8 dev_num, int base_addr);
+int sunxi_emac_initialize(bd_t *bis);
int sunxi_gmac_initialize(bd_t *bis);
-int sunxi_wemac_initialize(bd_t *bis);
int tsi108_eth_initialize(bd_t *bis);
int uec_standard_init(bd_t *bis);
int uli526x_initialize(bd_t *bis);
diff --git a/include/power/pmic.h b/include/power/pmic.h
index a62e6c9..afbc5aa 100644
--- a/include/power/pmic.h
+++ b/include/power/pmic.h
@@ -79,6 +79,7 @@ struct pmic {
};
int pmic_init(unsigned char bus);
+int power_init_board(void);
int pmic_dialog_init(unsigned char bus);
int check_reg(struct pmic *p, u32 reg);
struct pmic *pmic_alloc(void);
diff --git a/include/power/tps65218.h b/include/power/tps65218.h
index 67aa2f8..f8f33b8 100644
--- a/include/power/tps65218.h
+++ b/include/power/tps65218.h
@@ -60,4 +60,5 @@ enum {
int tps65218_reg_write(uchar prot_level, uchar dest_reg, uchar dest_val,
uchar mask);
int tps65218_voltage_update(uchar dc_cntrl_reg, uchar volt_sel);
+int power_tps65218_init(unsigned char bus);
#endif /* __POWER_TPS65218_H__ */
diff --git a/include/stdio_dev.h b/include/stdio_dev.h
index e6dc12a..a7d0825 100644
--- a/include/stdio_dev.h
+++ b/include/stdio_dev.h
@@ -27,18 +27,21 @@ struct stdio_dev {
/* GENERAL functions */
- int (*start) (void); /* To start the device */
- int (*stop) (void); /* To stop the device */
+ int (*start)(struct stdio_dev *dev); /* To start the device */
+ int (*stop)(struct stdio_dev *dev); /* To stop the device */
/* OUTPUT functions */
- void (*putc) (const char c); /* To put a char */
- void (*puts) (const char *s); /* To put a string (accelerator) */
+ /* To put a char */
+ void (*putc)(struct stdio_dev *dev, const char c);
+ /* To put a string (accelerator) */
+ void (*puts)(struct stdio_dev *dev, const char *s);
/* INPUT functions */
- int (*tstc) (void); /* To test if a char is ready... */
- int (*getc) (void); /* To get that char */
+ /* To test if a char is ready... */
+ int (*tstc)(struct stdio_dev *dev);
+ int (*getc)(struct stdio_dev *dev); /* To get that char */
/* Other functions */
@@ -74,10 +77,12 @@ extern char *stdio_names[MAX_FILES];
* PROTOTYPES
*/
int stdio_register (struct stdio_dev * dev);
+int stdio_register_dev(struct stdio_dev *dev, struct stdio_dev **devp);
int stdio_init (void);
void stdio_print_current_devices(void);
#ifdef CONFIG_SYS_STDIO_DEREGISTER
int stdio_deregister(const char *devname);
+int stdio_deregister_dev(struct stdio_dev *dev);
#endif
struct list_head* stdio_get_list(void);
struct stdio_dev* stdio_get_by_name(const char* name);
diff --git a/include/video.h b/include/video.h
index 0ff857b..673aa2e 100644
--- a/include/video.h
+++ b/include/video.h
@@ -11,9 +11,11 @@
/* Video functions */
-int video_init (void *videobase);
-void video_putc (const char c);
-void video_puts (const char *s);
+struct stdio_dev;
+
+int video_init(void *videobase);
+void video_putc(struct stdio_dev *dev, const char c);
+void video_puts(struct stdio_dev *dev, const char *s);
/**
* Display a BMP format bitmap on the screen
diff --git a/lib/asm-offsets.c b/lib/asm-offsets.c
index 6ea7b03..129bc3e 100644
--- a/lib/asm-offsets.c
+++ b/lib/asm-offsets.c
@@ -28,6 +28,9 @@ int main(void)
DEFINE(GD_SIZE, sizeof(struct global_data));
DEFINE(GD_BD, offsetof(struct global_data, bd));
+#ifdef CONFIG_SYS_MALLOC_F_LEN
+ DEFINE(GD_MALLOC_BASE, offsetof(struct global_data, malloc_base));
+#endif
#if defined(CONFIG_ARM)
diff --git a/lib/fdtdec.c b/lib/fdtdec.c
index aaa6620..eb5aa20 100644
--- a/lib/fdtdec.c
+++ b/lib/fdtdec.c
@@ -5,9 +5,11 @@
#ifndef USE_HOSTCC
#include <common.h>
+#include <errno.h>
#include <serial.h>
#include <libfdt.h>
#include <fdtdec.h>
+#include <linux/ctype.h>
#include <asm/gpio.h>
@@ -319,6 +321,65 @@ int fdtdec_add_aliases_for_id(const void *blob, const char *name,
return num_found;
}
+int fdtdec_get_alias_seq(const void *blob, const char *base, int offset,
+ int *seqp)
+{
+ int base_len = strlen(base);
+ const char *find_name;
+ int find_namelen;
+ int prop_offset;
+ int aliases;
+
+ find_name = fdt_get_name(blob, offset, &find_namelen);
+ debug("Looking for '%s' at %d, name %s\n", base, offset, find_name);
+
+ aliases = fdt_path_offset(blob, "/aliases");
+ for (prop_offset = fdt_first_property_offset(blob, aliases);
+ prop_offset > 0;
+ prop_offset = fdt_next_property_offset(blob, prop_offset)) {
+ const char *prop;
+ const char *name;
+ const char *slash;
+ const char *p;
+ int len;
+
+ prop = fdt_getprop_by_offset(blob, prop_offset, &name, &len);
+ debug(" - %s, %s\n", name, prop);
+ if (len < find_namelen || *prop != '/' || prop[len - 1] ||
+ strncmp(name, base, base_len))
+ continue;
+
+ slash = strrchr(prop, '/');
+ if (strcmp(slash + 1, find_name))
+ continue;
+ for (p = name; *p; p++) {
+ if (isdigit(*p)) {
+ *seqp = simple_strtoul(p, NULL, 10);
+ debug("Found seq %d\n", *seqp);
+ return 0;
+ }
+ }
+ }
+
+ debug("Not found\n");
+ return -ENOENT;
+}
+
+int fdtdec_get_alias_node(const void *blob, const char *name)
+{
+ const char *prop;
+ int alias_node;
+ int len;
+
+ if (!blob)
+ return -FDT_ERR_NOTFOUND;
+ alias_node = fdt_path_offset(blob, "/aliases");
+ prop = fdt_getprop(blob, alias_node, name, &len);
+ if (!prop)
+ return -FDT_ERR_NOTFOUND;
+ return fdt_path_offset(blob, prop);
+}
+
int fdtdec_check_fdt(void)
{
/*
diff --git a/mkconfig b/mkconfig
deleted file mode 100755
index 84f5a77..0000000
--- a/mkconfig
+++ /dev/null
@@ -1,186 +0,0 @@
-#!/bin/sh -e
-
-# Script to create header files and links to configure
-# U-Boot for a specific board.
-#
-# Parameters: Target Architecture CPU Board [VENDOR] [SOC]
-#
-# (C) 2002-2013 DENX Software Engineering, Wolfgang Denk <wd@denx.de>
-#
-# SPDX-License-Identifier: GPL-2.0+
-#
-
-APPEND=no # Default: Create new config file
-BOARD_NAME="" # Name to print in make output
-TARGETS=""
-
-arch=""
-cpu=""
-board=""
-vendor=""
-soc=""
-options=""
-
-if [ \( $# -eq 2 \) -a \( "$1" = "-A" \) ] ; then
- # Automatic mode
- line=`awk '($0 !~ /^#/ && $7 ~ /^'"$2"'$/) { print $1, $2, $3, $4, $5, $6, $7, $8 }' $srctree/boards.cfg`
- if [ -z "$line" ] ; then
- echo "make: *** No rule to make target \`$2_config'. Stop." >&2
- exit 1
- fi
-
- set ${line}
- # add default board name if needed
- [ $# = 3 ] && set ${line} ${1}
-fi
-
-while [ $# -gt 0 ] ; do
- case "$1" in
- --) shift ; break ;;
- -a) shift ; APPEND=yes ;;
- -n) shift ; BOARD_NAME="${7%_config}" ; shift ;;
- -t) shift ; TARGETS="`echo $1 | sed 's:_: :g'` ${TARGETS}" ; shift ;;
- *) break ;;
- esac
-done
-
-[ $# -lt 7 ] && exit 1
-[ $# -gt 8 ] && exit 1
-
-# Strip all options and/or _config suffixes
-CONFIG_NAME="${7%_config}"
-
-[ "${BOARD_NAME}" ] || BOARD_NAME="${7%_config}"
-
-arch="$2"
-cpu=`echo $3 | awk 'BEGIN {FS = ":"} ; {print $1}'`
-spl_cpu=`echo $3 | awk 'BEGIN {FS = ":"} ; {print $2}'`
-
-if [ "$cpu" = "-" ] ; then
- cpu=
-fi
-
-[ "$6" != "-" ] && board="$6"
-[ "$5" != "-" ] && vendor="$5"
-[ "$4" != "-" ] && soc="$4"
-[ $# -gt 7 ] && [ "$8" != "-" ] && {
- # check if we have a board config name in the options field
- # the options field mave have a board config name and a list
- # of options, both separated by a colon (':'); the options are
- # separated by commas (',').
- #
- # Check for board name
- tmp="${8%:*}"
- if [ "$tmp" ] ; then
- CONFIG_NAME="$tmp"
- fi
- # Check if we only have a colon...
- if [ "${tmp}" != "$8" ] ; then
- options=${8#*:}
- TARGETS="`echo ${options} | sed 's:,: :g'` ${TARGETS}"
- fi
-}
-
-if [ "${ARCH}" -a "${ARCH}" != "${arch}" ]; then
- echo "Failed: \$ARCH=${ARCH}, should be '${arch}' for ${BOARD_NAME}" 1>&2
- exit 1
-fi
-
-#
-# Test above needed aarch64, now we need arm
-#
-if [ "${arch}" = "aarch64" ]; then
- arch="arm"
-fi
-
-if [ "$options" ] ; then
- echo "Configuring for ${BOARD_NAME} - Board: ${CONFIG_NAME}, Options: ${options}"
-else
- echo "Configuring for ${BOARD_NAME} board..."
-fi
-
-#
-# Create link to architecture specific headers
-#
-if [ -n "$KBUILD_SRC" ] ; then
- mkdir -p ${objtree}/include
- LNPREFIX=${srctree}/arch/${arch}/include/asm/
- cd ${objtree}/include
- mkdir -p asm
-else
- cd arch/${arch}/include
-fi
-
-rm -f asm/arch
-
-if [ "${soc}" ] ; then
- ln -s ${LNPREFIX}arch-${soc} asm/arch
-elif [ "${cpu}" ] ; then
- ln -s ${LNPREFIX}arch-${cpu} asm/arch
-fi
-
-if [ -z "$KBUILD_SRC" ] ; then
- cd ${srctree}/include
-fi
-
-#
-# Create include file for Make
-#
-( echo "ARCH = ${arch}"
- if [ ! -z "$spl_cpu" ] ; then
- echo 'ifeq ($(CONFIG_SPL_BUILD),y)'
- echo "CPU = ${spl_cpu}"
- echo "else"
- echo "CPU = ${cpu}"
- echo "endif"
- else
- echo "CPU = ${cpu}"
- fi
- echo "BOARD = ${board}"
-
- [ "${vendor}" ] && echo "VENDOR = ${vendor}"
- [ "${soc}" ] && echo "SOC = ${soc}"
- exit 0 ) > config.mk
-
-# Assign board directory to BOARDIR variable
-if [ -z "${vendor}" ] ; then
- BOARDDIR=${board}
-else
- BOARDDIR=${vendor}/${board}
-fi
-
-#
-# Create board specific header file
-#
-if [ "$APPEND" = "yes" ] # Append to existing config file
-then
- echo >> config.h
-else
- > config.h # Create new config file
-fi
-echo "/* Automatically generated - do not edit */" >>config.h
-
-for i in ${TARGETS} ; do
- i="`echo ${i} | sed '/=/ {s/=/ /;q; } ; { s/$/ 1/; }'`"
- echo "#define CONFIG_${i}" >>config.h ;
-done
-
-echo "#define CONFIG_SYS_ARCH \"${arch}\"" >> config.h
-echo "#define CONFIG_SYS_CPU \"${cpu}\"" >> config.h
-echo "#define CONFIG_SYS_BOARD \"${board}\"" >> config.h
-
-[ "${vendor}" ] && echo "#define CONFIG_SYS_VENDOR \"${vendor}\"" >> config.h
-
-[ "${soc}" ] && echo "#define CONFIG_SYS_SOC \"${soc}\"" >> config.h
-
-[ "${board}" ] && echo "#define CONFIG_BOARDDIR board/$BOARDDIR" >> config.h
-cat << EOF >> config.h
-#include <config_cmd_defaults.h>
-#include <config_defaults.h>
-#include <configs/${CONFIG_NAME}.h>
-#include <asm/config.h>
-#include <config_fallbacks.h>
-#include <config_uncmd_spl.h>
-EOF
-
-exit 0
diff --git a/scripts/Makefile b/scripts/Makefile
index 68c998e..efe25bf 100644
--- a/scripts/Makefile
+++ b/scripts/Makefile
@@ -13,4 +13,4 @@ build_docproc: $(obj)/docproc
@:
# Let clean descend into subdirs
-subdir- += basic
+subdir- += basic kconfig
diff --git a/scripts/Makefile.autoconf b/scripts/Makefile.autoconf
new file mode 100644
index 0000000..44c3997
--- /dev/null
+++ b/scripts/Makefile.autoconf
@@ -0,0 +1,100 @@
+# This helper makefile is used for creating
+# - symbolic links (arch/$ARCH/include/asm/arch
+# - include/autoconf.mk, {spl,tpl}/include/autoconf.mk
+# - include/config.h
+#
+# When our migration to Kconfig is done
+# (= When we move all CONFIGs from header files to Kconfig)
+# this makefile can be deleted.
+
+# obj is "include" or "spl/include" or "tpl/include"
+# for non-SPL, SPL, TPL, respectively
+include $(obj)/config/auto.conf
+
+include scripts/Kbuild.include
+
+# Need to define CC and CPP again here in case the top Makefile did not
+# include config.mk. Some architectures expect CROSS_COMPILE to be defined
+# in arch/$(ARCH)/config.mk
+CC = $(CROSS_COMPILE)gcc
+CPP = $(CC) -E
+
+include config.mk
+
+UBOOTINCLUDE := \
+ -I$(obj) \
+ -Iinclude \
+ $(if $(KBUILD_SRC), -I$(srctree)/include) \
+ -I$(srctree)/arch/$(ARCH)/include \
+ -include $(srctree)/include/linux/kconfig.h
+
+c_flags := $(KBUILD_CFLAGS) $(KBUILD_CPPFLAGS) $(PLATFORM_CPPFLAGS) \
+ $(UBOOTINCLUDE) $(NOSTDINC_FLAGS)
+
+quiet_cmd_autoconf_dep = GEN $@
+ cmd_autoconf_dep = $(CC) -x c -DDO_DEPS_ONLY -M -MP $(c_flags) \
+ -MQ include/config/auto.conf $(srctree)/include/common.h > $@ || { \
+ rm $@; false; \
+ }
+include/autoconf.mk.dep: FORCE
+ $(call cmd,autoconf_dep)
+
+# We are migrating from board headers to Kconfig little by little.
+# In the interim, we use both of
+# - include/config/auto.conf (generated by Kconfig)
+# - include/autoconf.mk (used in the U-Boot conventional configuration)
+# The following rule creates autoconf.mk
+# include/config/auto.conf is grepped in order to avoid duplication of the
+# same CONFIG macros
+quiet_cmd_autoconf = GEN $@
+ cmd_autoconf = \
+ $(CPP) $(c_flags) -DDO_DEPS_ONLY -dM $(srctree)/include/common.h > $@.tmp && { \
+ sed -n -f $(srctree)/tools/scripts/define2mk.sed $@.tmp | \
+ while read line; do \
+ if ! grep -q "$${line%=*}=" $(obj)/config/auto.conf; then \
+ echo "$$line"; \
+ fi \
+ done > $@; \
+ rm $@.tmp; \
+ } || { \
+ rm $@.tmp; false; \
+ }
+
+$(obj)/autoconf.mk: FORCE
+ $(call cmd,autoconf)
+
+include/autoconf.mk include/autoconf.mk.dep: include/config.h
+
+# include/config.h
+# Prior to Kconfig, it was generated by mkconfig. Now it is created here.
+define filechk_config_h
+ (echo "/* Automatically generated - do not edit */"; \
+ for i in $$(echo $(CONFIG_SYS_EXTRA_OPTIONS) | sed 's/,/ /g'); do \
+ echo \#define CONFIG_$$i \
+ | sed '/=/ {s/=/ /;q; } ; { s/$$/ 1/; }'; \
+ done; \
+ echo \#define CONFIG_BOARDDIR board/$(if $(VENDOR),$(VENDOR)/)$(BOARD);\
+ echo \#include \<config_cmd_defaults.h\>; \
+ echo \#include \<config_defaults.h\>; \
+ echo \#include \<configs/$(CONFIG_SYS_CONFIG_NAME).h\>; \
+ echo \#include \<asm/config.h\>; \
+ echo \#include \<config_fallbacks.h\>; \
+ echo \#include \<config_uncmd_spl.h\>; )
+endef
+
+include/config.h: scripts/Makefile.autoconf create_symlink FORCE
+ $(call filechk,config_h)
+
+# symbolic links
+PHONY += create_symlink
+create_symlink:
+ifneq ($(KBUILD_SRC),)
+ $(Q)mkdir -p include/asm
+endif
+ $(Q)ln -fsn $(srctree)/arch/$(ARCH)/include/asm/arch-$(if $(SOC),$(SOC),$(CPU)) \
+ $(if $(KBUILD_SRC),,arch/$(ARCH)/)include/asm/arch
+
+PHONY += FORCE
+FORCE:
+
+.PHONY: $(PHONY)
diff --git a/scripts/Makefile.build b/scripts/Makefile.build
index 04c6f7d..baeaabe 100644
--- a/scripts/Makefile.build
+++ b/scripts/Makefile.build
@@ -3,14 +3,14 @@
# ==========================================================================
# Modified for U-Boot
-ifeq ($(CONFIG_TPL_BUILD),y)
- src := $(patsubst tpl/%,%,$(obj))
-else
- ifeq ($(CONFIG_SPL_BUILD),y)
- src := $(patsubst spl/%,%,$(obj))
- else
- src := $(obj)
- endif
+prefix := tpl
+src := $(patsubst $(prefix)/%,%,$(obj))
+ifeq ($(obj),$(src))
+prefix := spl
+src := $(patsubst $(prefix)/%,%,$(obj))
+ifeq ($(obj),$(src))
+prefix := .
+endif
endif
PHONY := __build
@@ -40,18 +40,9 @@ subdir-asflags-y :=
subdir-ccflags-y :=
# Read auto.conf if it exists, otherwise ignore
--include include/config/auto.conf
-
-# Added for U-Boot: Load U-Boot configuration
-ifeq ($(CONFIG_TPL_BUILD),y)
- -include include/tpl-autoconf.mk
-else
- ifeq ($(CONFIG_SPL_BUILD),y)
- -include include/spl-autoconf.mk
- else
- -include include/autoconf.mk
- endif
-endif
+# Modified for U-Boot
+-include $(prefix)/include/config/auto.conf
+-include $(prefix)/include/autoconf.mk
include scripts/Kbuild.include
diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
index bf677aa..88c01d1 100644
--- a/scripts/Makefile.spl
+++ b/scripts/Makefile.spl
@@ -21,13 +21,10 @@ _dummy := $(shell [ -d $(obj) ] || mkdir -p $(obj))
include $(srctree)/scripts/Kbuild.include
-CONFIG_SPL_BUILD := y
-export CONFIG_SPL_BUILD
+UBOOTINCLUDE := -I$(obj)/include $(UBOOTINCLUDE)
-KBUILD_CPPFLAGS += -DCONFIG_SPL_BUILD
-ifeq ($(CONFIG_TPL_BUILD),y)
-KBUILD_CPPFLAGS += -DCONFIG_TPL_BUILD
-endif
+-include $(obj)/include/config/auto.conf
+-include $(obj)/include/autoconf.mk
ifeq ($(CONFIG_TPL_BUILD),y)
export CONFIG_TPL_BUILD
@@ -36,14 +33,6 @@ else
SPL_BIN := u-boot-spl
endif
-include include/config.mk
-
-ifeq ($(CONFIG_TPL_BUILD),y)
- -include include/tpl-autoconf.mk
-else
- -include include/spl-autoconf.mk
-endif
-
include $(srctree)/config.mk
# Enable garbage collection of un-used sections for SPL
@@ -53,20 +42,6 @@ LDFLAGS_FINAL += --gc-sections
# FIX ME
cpp_flags := $(KBUILD_CPPFLAGS) $(PLATFORM_CPPFLAGS) $(UBOOTINCLUDE) \
$(NOSTDINC_FLAGS)
-c_flags := $(KBUILD_CFLAGS) $(cpp_flags)
-
-# Auto-generate the spl-autoconf.mk file (which is included by all makefiles for SPL)
-quiet_cmd_autoconf = GEN $@
- cmd_autoconf = \
- $(CPP) $(c_flags) -DDO_DEPS_ONLY -dM $(srctree)/include/common.h > $@.tmp && \
- sed -n -f $(srctree)/tools/scripts/define2mk.sed $@.tmp > $@; \
- rm $@.tmp
-
-include/tpl-autoconf.mk: include/config.h
- $(call cmd,autoconf)
-
-include/spl-autoconf.mk: include/config.h
- $(call cmd,autoconf)
HAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(srctree)/board/$(VENDOR)/common/Makefile),y,n)
diff --git a/scripts/basic/fixdep.c b/scripts/basic/fixdep.c
index b304068..1a41723 100644
--- a/scripts/basic/fixdep.c
+++ b/scripts/basic/fixdep.c
@@ -221,7 +221,11 @@ static void use_config(const char *m, int slen)
define_config(m, slen, hash);
- printf(" $(wildcard include/config/");
+ /* printf(" $(wildcard include/config/"); */
+ /* modified for U-Boot */
+ printf(" $(wildcard %sinclude/config/",
+ strncmp(depfile, "spl/", 4) ?
+ (strncmp(depfile, "tpl/", 4) ? "" : "tpl/") : "spl/");
for (i = 0; i < slen; i++) {
c = m[i];
if (c == '_')
diff --git a/scripts/kconfig/.gitignore b/scripts/kconfig/.gitignore
new file mode 100644
index 0000000..be603c4
--- /dev/null
+++ b/scripts/kconfig/.gitignore
@@ -0,0 +1,22 @@
+#
+# Generated files
+#
+config*
+*.lex.c
+*.tab.c
+*.tab.h
+zconf.hash.c
+*.moc
+gconf.glade.h
+*.pot
+*.mo
+
+#
+# configuration programs
+#
+conf
+mconf
+nconf
+qconf
+gconf
+kxgettext
diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile
new file mode 100644
index 0000000..9c4d241
--- /dev/null
+++ b/scripts/kconfig/Makefile
@@ -0,0 +1,321 @@
+# ===========================================================================
+# Kernel configuration targets
+# These targets are used from top-level makefile
+
+PHONY += oldconfig xconfig gconfig menuconfig config silentoldconfig update-po-config \
+ localmodconfig localyesconfig
+
+ifdef KBUILD_KCONFIG
+Kconfig := $(KBUILD_KCONFIG)
+else
+Kconfig := Kconfig
+endif
+
+# We need this, in case the user has it in its environment
+unexport CONFIG_
+
+xconfig: $(obj)/qconf
+ $< $(Kconfig)
+
+gconfig: $(obj)/gconf
+ $< $(Kconfig)
+
+menuconfig: $(obj)/mconf
+ $< $(Kconfig)
+
+config: $(obj)/conf
+ $< --oldaskconfig $(Kconfig)
+
+nconfig: $(obj)/nconf
+ $< $(Kconfig)
+
+oldconfig: $(obj)/conf
+ $< --$@ $(Kconfig)
+
+silentoldconfig: $(obj)/conf
+ $(Q)mkdir -p include/config include/generated
+ $< --$@ $(Kconfig)
+
+localyesconfig localmodconfig: $(obj)/streamline_config.pl $(obj)/conf
+ $(Q)mkdir -p include/config include/generated
+ $(Q)perl $< --$@ $(srctree) $(Kconfig) > .tmp.config
+ $(Q)if [ -f .config ]; then \
+ cmp -s .tmp.config .config || \
+ (mv -f .config .config.old.1; \
+ mv -f .tmp.config .config; \
+ $(obj)/conf --silentoldconfig $(Kconfig); \
+ mv -f .config.old.1 .config.old) \
+ else \
+ mv -f .tmp.config .config; \
+ $(obj)/conf --silentoldconfig $(Kconfig); \
+ fi
+ $(Q)rm -f .tmp.config
+
+# Create new linux.pot file
+# Adjust charset to UTF-8 in .po file to accept UTF-8 in Kconfig files
+update-po-config: $(obj)/kxgettext $(obj)/gconf.glade.h
+ $(Q)echo " GEN config.pot"
+ $(Q)xgettext --default-domain=linux \
+ --add-comments --keyword=_ --keyword=N_ \
+ --from-code=UTF-8 \
+ --files-from=$(srctree)/scripts/kconfig/POTFILES.in \
+ --directory=$(srctree) --directory=$(objtree) \
+ --output $(obj)/config.pot
+ $(Q)sed -i s/CHARSET/UTF-8/ $(obj)/config.pot
+ $(Q)(for i in `ls $(srctree)/arch/*/Kconfig \
+ $(srctree)/arch/*/um/Kconfig`; \
+ do \
+ echo " GEN $$i"; \
+ $(obj)/kxgettext $$i \
+ >> $(obj)/config.pot; \
+ done )
+ $(Q)echo " GEN linux.pot"
+ $(Q)msguniq --sort-by-file --to-code=UTF-8 $(obj)/config.pot \
+ --output $(obj)/linux.pot
+ $(Q)rm -f $(obj)/config.pot
+
+PHONY += allnoconfig allyesconfig allmodconfig alldefconfig randconfig
+
+allnoconfig allyesconfig allmodconfig alldefconfig randconfig: $(obj)/conf
+ $< --$@ $(Kconfig)
+
+PHONY += listnewconfig olddefconfig oldnoconfig savedefconfig defconfig
+
+listnewconfig olddefconfig: $(obj)/conf
+ $< --$@ $(Kconfig)
+
+# oldnoconfig is an alias of olddefconfig, because people already are dependent
+# on its behavior(sets new symbols to their default value but not 'n') with the
+# counter-intuitive name.
+oldnoconfig: $(obj)/conf
+ $< --olddefconfig $(Kconfig)
+
+savedefconfig: $(obj)/conf
+ $< --$@=defconfig $(Kconfig)
+
+defconfig: $(obj)/conf
+ifeq ($(KBUILD_DEFCONFIG),)
+ $< --defconfig $(Kconfig)
+else
+ @echo "*** Default configuration is based on '$(KBUILD_DEFCONFIG)'"
+ $(Q)$< --defconfig=arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) $(Kconfig)
+endif
+
+%_defconfig: $(obj)/conf
+ $(Q)$< --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig)
+
+# Help text used by make help
+help:
+ @echo ' config - Update current config utilising a line-oriented program'
+ @echo ' nconfig - Update current config utilising a ncurses menu based program'
+ @echo ' menuconfig - Update current config utilising a menu based program'
+ @echo ' xconfig - Update current config utilising a QT based front-end'
+ @echo ' gconfig - Update current config utilising a GTK based front-end'
+ @echo ' oldconfig - Update current config utilising a provided .config as base'
+ @echo ' localmodconfig - Update current config disabling modules not loaded'
+ @echo ' localyesconfig - Update current config converting local mods to core'
+ @echo ' silentoldconfig - Same as oldconfig, but quietly, additionally update deps'
+ @echo ' defconfig - New config with default from ARCH supplied defconfig'
+ @echo ' savedefconfig - Save current config as ./defconfig (minimal config)'
+ @echo ' allnoconfig - New config where all options are answered with no'
+ @echo ' allyesconfig - New config where all options are accepted with yes'
+ @echo ' allmodconfig - New config selecting modules when possible'
+ @echo ' alldefconfig - New config with all symbols set to default'
+ @echo ' randconfig - New config with random answer to all options'
+ @echo ' listnewconfig - List new options'
+ @echo ' olddefconfig - Same as silentoldconfig but sets new symbols to their default value'
+
+# lxdialog stuff
+check-lxdialog := $(srctree)/$(src)/lxdialog/check-lxdialog.sh
+
+# Use recursively expanded variables so we do not call gcc unless
+# we really need to do so. (Do not call gcc as part of make mrproper)
+HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(check-lxdialog) -ccflags) \
+ -DLOCALE
+
+# ===========================================================================
+# Shared Makefile for the various kconfig executables:
+# conf: Used for defconfig, oldconfig and related targets
+# nconf: Used for the nconfig target.
+# Utilizes ncurses
+# mconf: Used for the menuconfig target
+# Utilizes the lxdialog package
+# qconf: Used for the xconfig target
+# Based on QT which needs to be installed to compile it
+# gconf: Used for the gconfig target
+# Based on GTK which needs to be installed to compile it
+# object files used by all kconfig flavours
+
+lxdialog := lxdialog/checklist.o lxdialog/util.o lxdialog/inputbox.o
+lxdialog += lxdialog/textbox.o lxdialog/yesno.o lxdialog/menubox.o
+
+conf-objs := conf.o zconf.tab.o
+mconf-objs := mconf.o zconf.tab.o $(lxdialog)
+nconf-objs := nconf.o zconf.tab.o nconf.gui.o
+kxgettext-objs := kxgettext.o zconf.tab.o
+qconf-cxxobjs := qconf.o
+qconf-objs := zconf.tab.o
+gconf-objs := gconf.o zconf.tab.o
+
+hostprogs-y := conf
+
+ifeq ($(MAKECMDGOALS),nconfig)
+ hostprogs-y += nconf
+endif
+
+ifeq ($(MAKECMDGOALS),menuconfig)
+ hostprogs-y += mconf
+endif
+
+ifeq ($(MAKECMDGOALS),update-po-config)
+ hostprogs-y += kxgettext
+endif
+
+ifeq ($(MAKECMDGOALS),xconfig)
+ qconf-target := 1
+endif
+ifeq ($(MAKECMDGOALS),gconfig)
+ gconf-target := 1
+endif
+
+
+ifeq ($(qconf-target),1)
+ hostprogs-y += qconf
+endif
+
+ifeq ($(gconf-target),1)
+ hostprogs-y += gconf
+endif
+
+clean-files := qconf.moc .tmp_qtcheck .tmp_gtkcheck
+clean-files += zconf.tab.c zconf.lex.c zconf.hash.c gconf.glade.h
+clean-files += mconf qconf gconf nconf
+clean-files += config.pot linux.pot
+
+# Check that we have the required ncurses stuff installed for lxdialog (menuconfig)
+PHONY += $(obj)/dochecklxdialog
+$(addprefix $(obj)/,$(lxdialog)): $(obj)/dochecklxdialog
+$(obj)/dochecklxdialog:
+ $(Q)$(CONFIG_SHELL) $(check-lxdialog) -check $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTLOADLIBES_mconf)
+
+always := dochecklxdialog
+
+# Add environment specific flags
+HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(srctree)/$(src)/check.sh $(HOSTCC) $(HOSTCFLAGS))
+
+# generated files seem to need this to find local include files
+HOSTCFLAGS_zconf.lex.o := -I$(src)
+HOSTCFLAGS_zconf.tab.o := -I$(src)
+
+LEX_PREFIX_zconf := zconf
+YACC_PREFIX_zconf := zconf
+
+HOSTLOADLIBES_qconf = $(KC_QT_LIBS)
+HOSTCXXFLAGS_qconf.o = $(KC_QT_CFLAGS)
+
+HOSTLOADLIBES_gconf = `pkg-config --libs gtk+-2.0 gmodule-2.0 libglade-2.0`
+HOSTCFLAGS_gconf.o = `pkg-config --cflags gtk+-2.0 gmodule-2.0 libglade-2.0` \
+ -Wno-missing-prototypes
+
+HOSTLOADLIBES_mconf = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags $(HOSTCC))
+
+HOSTLOADLIBES_nconf = $(shell \
+ pkg-config --libs menu panel ncurses 2>/dev/null \
+ || echo "-lmenu -lpanel -lncurses" )
+$(obj)/qconf.o: $(obj)/.tmp_qtcheck
+
+ifeq ($(qconf-target),1)
+$(obj)/.tmp_qtcheck: $(src)/Makefile
+-include $(obj)/.tmp_qtcheck
+
+# QT needs some extra effort...
+$(obj)/.tmp_qtcheck:
+ @set -e; echo " CHECK qt"; dir=""; pkg=""; \
+ if ! pkg-config --exists QtCore 2> /dev/null; then \
+ echo "* Unable to find the QT4 tool qmake. Trying to use QT3"; \
+ pkg-config --exists qt 2> /dev/null && pkg=qt; \
+ pkg-config --exists qt-mt 2> /dev/null && pkg=qt-mt; \
+ if [ -n "$$pkg" ]; then \
+ cflags="\$$(shell pkg-config $$pkg --cflags)"; \
+ libs="\$$(shell pkg-config $$pkg --libs)"; \
+ moc="\$$(shell pkg-config $$pkg --variable=prefix)/bin/moc"; \
+ dir="$$(pkg-config $$pkg --variable=prefix)"; \
+ else \
+ for d in $$QTDIR /usr/share/qt* /usr/lib/qt*; do \
+ if [ -f $$d/include/qconfig.h ]; then dir=$$d; break; fi; \
+ done; \
+ if [ -z "$$dir" ]; then \
+ echo >&2 "*"; \
+ echo >&2 "* Unable to find any QT installation. Please make sure that"; \
+ echo >&2 "* the QT4 or QT3 development package is correctly installed and"; \
+ echo >&2 "* either qmake can be found or install pkg-config or set"; \
+ echo >&2 "* the QTDIR environment variable to the correct location."; \
+ echo >&2 "*"; \
+ false; \
+ fi; \
+ libpath=$$dir/lib; lib=qt; osdir=""; \
+ $(HOSTCXX) -print-multi-os-directory > /dev/null 2>&1 && \
+ osdir=x$$($(HOSTCXX) -print-multi-os-directory); \
+ test -d $$libpath/$$osdir && libpath=$$libpath/$$osdir; \
+ test -f $$libpath/libqt-mt.so && lib=qt-mt; \
+ cflags="-I$$dir/include"; \
+ libs="-L$$libpath -Wl,-rpath,$$libpath -l$$lib"; \
+ moc="$$dir/bin/moc"; \
+ fi; \
+ if [ ! -x $$dir/bin/moc -a -x /usr/bin/moc ]; then \
+ echo "*"; \
+ echo "* Unable to find $$dir/bin/moc, using /usr/bin/moc instead."; \
+ echo "*"; \
+ moc="/usr/bin/moc"; \
+ fi; \
+ else \
+ cflags="\$$(shell pkg-config QtCore QtGui Qt3Support --cflags)"; \
+ libs="\$$(shell pkg-config QtCore QtGui Qt3Support --libs)"; \
+ moc="\$$(shell pkg-config QtCore --variable=moc_location)"; \
+ [ -n "$$moc" ] || moc="\$$(shell pkg-config QtCore --variable=prefix)/bin/moc"; \
+ fi; \
+ echo "KC_QT_CFLAGS=$$cflags" > $@; \
+ echo "KC_QT_LIBS=$$libs" >> $@; \
+ echo "KC_QT_MOC=$$moc" >> $@
+endif
+
+$(obj)/gconf.o: $(obj)/.tmp_gtkcheck
+
+ifeq ($(gconf-target),1)
+-include $(obj)/.tmp_gtkcheck
+
+# GTK needs some extra effort, too...
+$(obj)/.tmp_gtkcheck:
+ @if `pkg-config --exists gtk+-2.0 gmodule-2.0 libglade-2.0`; then \
+ if `pkg-config --atleast-version=2.0.0 gtk+-2.0`; then \
+ touch $@; \
+ else \
+ echo >&2 "*"; \
+ echo >&2 "* GTK+ is present but version >= 2.0.0 is required."; \
+ echo >&2 "*"; \
+ false; \
+ fi \
+ else \
+ echo >&2 "*"; \
+ echo >&2 "* Unable to find the GTK+ installation. Please make sure that"; \
+ echo >&2 "* the GTK+ 2.0 development package is correctly installed..."; \
+ echo >&2 "* You need gtk+-2.0, glib-2.0 and libglade-2.0."; \
+ echo >&2 "*"; \
+ false; \
+ fi
+endif
+
+$(obj)/zconf.tab.o: $(obj)/zconf.lex.c $(obj)/zconf.hash.c
+
+$(obj)/qconf.o: $(obj)/qconf.moc
+
+quiet_cmd_moc = MOC $@
+ cmd_moc = $(KC_QT_MOC) -i $< -o $@
+
+$(obj)/%.moc: $(src)/%.h $(obj)/.tmp_qtcheck
+ $(call cmd,moc)
+
+# Extract gconf menu items for I18N support
+$(obj)/gconf.glade.h: $(obj)/gconf.glade
+ $(Q)intltool-extract --type=gettext/glade --srcdir=$(srctree) \
+ $(obj)/gconf.glade
diff --git a/scripts/kconfig/POTFILES.in b/scripts/kconfig/POTFILES.in
new file mode 100644
index 0000000..9674573
--- /dev/null
+++ b/scripts/kconfig/POTFILES.in
@@ -0,0 +1,12 @@
+scripts/kconfig/lxdialog/checklist.c
+scripts/kconfig/lxdialog/inputbox.c
+scripts/kconfig/lxdialog/menubox.c
+scripts/kconfig/lxdialog/textbox.c
+scripts/kconfig/lxdialog/util.c
+scripts/kconfig/lxdialog/yesno.c
+scripts/kconfig/mconf.c
+scripts/kconfig/conf.c
+scripts/kconfig/confdata.c
+scripts/kconfig/gconf.c
+scripts/kconfig/gconf.glade.h
+scripts/kconfig/qconf.cc
diff --git a/scripts/kconfig/check.sh b/scripts/kconfig/check.sh
new file mode 100755
index 0000000..55b79ba
--- /dev/null
+++ b/scripts/kconfig/check.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+# Needed for systems without gettext
+$* -x c -o /dev/null - > /dev/null 2>&1 << EOF
+#include <libintl.h>
+int main()
+{
+ gettext("");
+ return 0;
+}
+EOF
+if [ ! "$?" -eq "0" ]; then
+ echo -DKBUILD_NO_NLS;
+fi
diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c
new file mode 100644
index 0000000..fef75fc
--- /dev/null
+++ b/scripts/kconfig/conf.c
@@ -0,0 +1,718 @@
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <locale.h>
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <unistd.h>
+#include <getopt.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <errno.h>
+
+#include "lkc.h"
+
+static void conf(struct menu *menu);
+static void check_conf(struct menu *menu);
+static void xfgets(char *str, int size, FILE *in);
+
+enum input_mode {
+ oldaskconfig,
+ silentoldconfig,
+ oldconfig,
+ allnoconfig,
+ allyesconfig,
+ allmodconfig,
+ alldefconfig,
+ randconfig,
+ defconfig,
+ savedefconfig,
+ listnewconfig,
+ olddefconfig,
+} input_mode = oldaskconfig;
+
+static int indent = 1;
+static int tty_stdio;
+static int valid_stdin = 1;
+static int sync_kconfig;
+static int conf_cnt;
+static char line[128];
+static struct menu *rootEntry;
+
+static void print_help(struct menu *menu)
+{
+ struct gstr help = str_new();
+
+ menu_get_ext_help(menu, &help);
+
+ printf("\n%s\n", str_get(&help));
+ str_free(&help);
+}
+
+static void strip(char *str)
+{
+ char *p = str;
+ int l;
+
+ while ((isspace(*p)))
+ p++;
+ l = strlen(p);
+ if (p != str)
+ memmove(str, p, l + 1);
+ if (!l)
+ return;
+ p = str + l - 1;
+ while ((isspace(*p)))
+ *p-- = 0;
+}
+
+static void check_stdin(void)
+{
+ if (!valid_stdin) {
+ printf(_("aborted!\n\n"));
+ printf(_("Console input/output is redirected. "));
+ printf(_("Run 'make oldconfig' to update configuration.\n\n"));
+ exit(1);
+ }
+}
+
+static int conf_askvalue(struct symbol *sym, const char *def)
+{
+ enum symbol_type type = sym_get_type(sym);
+
+ if (!sym_has_value(sym))
+ printf(_("(NEW) "));
+
+ line[0] = '\n';
+ line[1] = 0;
+
+ if (!sym_is_changable(sym)) {
+ printf("%s\n", def);
+ line[0] = '\n';
+ line[1] = 0;
+ return 0;
+ }
+
+ switch (input_mode) {
+ case oldconfig:
+ case silentoldconfig:
+ if (sym_has_value(sym)) {
+ printf("%s\n", def);
+ return 0;
+ }
+ check_stdin();
+ /* fall through */
+ case oldaskconfig:
+ fflush(stdout);
+ xfgets(line, 128, stdin);
+ if (!tty_stdio)
+ printf("\n");
+ return 1;
+ default:
+ break;
+ }
+
+ switch (type) {
+ case S_INT:
+ case S_HEX:
+ case S_STRING:
+ printf("%s\n", def);
+ return 1;
+ default:
+ ;
+ }
+ printf("%s", line);
+ return 1;
+}
+
+static int conf_string(struct menu *menu)
+{
+ struct symbol *sym = menu->sym;
+ const char *def;
+
+ while (1) {
+ printf("%*s%s ", indent - 1, "", _(menu->prompt->text));
+ printf("(%s) ", sym->name);
+ def = sym_get_string_value(sym);
+ if (sym_get_string_value(sym))
+ printf("[%s] ", def);
+ if (!conf_askvalue(sym, def))
+ return 0;
+ switch (line[0]) {
+ case '\n':
+ break;
+ case '?':
+ /* print help */
+ if (line[1] == '\n') {
+ print_help(menu);
+ def = NULL;
+ break;
+ }
+ /* fall through */
+ default:
+ line[strlen(line)-1] = 0;
+ def = line;
+ }
+ if (def && sym_set_string_value(sym, def))
+ return 0;
+ }
+}
+
+static int conf_sym(struct menu *menu)
+{
+ struct symbol *sym = menu->sym;
+ tristate oldval, newval;
+
+ while (1) {
+ printf("%*s%s ", indent - 1, "", _(menu->prompt->text));
+ if (sym->name)
+ printf("(%s) ", sym->name);
+ putchar('[');
+ oldval = sym_get_tristate_value(sym);
+ switch (oldval) {
+ case no:
+ putchar('N');
+ break;
+ case mod:
+ putchar('M');
+ break;
+ case yes:
+ putchar('Y');
+ break;
+ }
+ if (oldval != no && sym_tristate_within_range(sym, no))
+ printf("/n");
+ if (oldval != mod && sym_tristate_within_range(sym, mod))
+ printf("/m");
+ if (oldval != yes && sym_tristate_within_range(sym, yes))
+ printf("/y");
+ if (menu_has_help(menu))
+ printf("/?");
+ printf("] ");
+ if (!conf_askvalue(sym, sym_get_string_value(sym)))
+ return 0;
+ strip(line);
+
+ switch (line[0]) {
+ case 'n':
+ case 'N':
+ newval = no;
+ if (!line[1] || !strcmp(&line[1], "o"))
+ break;
+ continue;
+ case 'm':
+ case 'M':
+ newval = mod;
+ if (!line[1])
+ break;
+ continue;
+ case 'y':
+ case 'Y':
+ newval = yes;
+ if (!line[1] || !strcmp(&line[1], "es"))
+ break;
+ continue;
+ case 0:
+ newval = oldval;
+ break;
+ case '?':
+ goto help;
+ default:
+ continue;
+ }
+ if (sym_set_tristate_value(sym, newval))
+ return 0;
+help:
+ print_help(menu);
+ }
+}
+
+static int conf_choice(struct menu *menu)
+{
+ struct symbol *sym, *def_sym;
+ struct menu *child;
+ bool is_new;
+
+ sym = menu->sym;
+ is_new = !sym_has_value(sym);
+ if (sym_is_changable(sym)) {
+ conf_sym(menu);
+ sym_calc_value(sym);
+ switch (sym_get_tristate_value(sym)) {
+ case no:
+ return 1;
+ case mod:
+ return 0;
+ case yes:
+ break;
+ }
+ } else {
+ switch (sym_get_tristate_value(sym)) {
+ case no:
+ return 1;
+ case mod:
+ printf("%*s%s\n", indent - 1, "", _(menu_get_prompt(menu)));
+ return 0;
+ case yes:
+ break;
+ }
+ }
+
+ while (1) {
+ int cnt, def;
+
+ printf("%*s%s\n", indent - 1, "", _(menu_get_prompt(menu)));
+ def_sym = sym_get_choice_value(sym);
+ cnt = def = 0;
+ line[0] = 0;
+ for (child = menu->list; child; child = child->next) {
+ if (!menu_is_visible(child))
+ continue;
+ if (!child->sym) {
+ printf("%*c %s\n", indent, '*', _(menu_get_prompt(child)));
+ continue;
+ }
+ cnt++;
+ if (child->sym == def_sym) {
+ def = cnt;
+ printf("%*c", indent, '>');
+ } else
+ printf("%*c", indent, ' ');
+ printf(" %d. %s", cnt, _(menu_get_prompt(child)));
+ if (child->sym->name)
+ printf(" (%s)", child->sym->name);
+ if (!sym_has_value(child->sym))
+ printf(_(" (NEW)"));
+ printf("\n");
+ }
+ printf(_("%*schoice"), indent - 1, "");
+ if (cnt == 1) {
+ printf("[1]: 1\n");
+ goto conf_childs;
+ }
+ printf("[1-%d", cnt);
+ if (menu_has_help(menu))
+ printf("?");
+ printf("]: ");
+ switch (input_mode) {
+ case oldconfig:
+ case silentoldconfig:
+ if (!is_new) {
+ cnt = def;
+ printf("%d\n", cnt);
+ break;
+ }
+ check_stdin();
+ /* fall through */
+ case oldaskconfig:
+ fflush(stdout);
+ xfgets(line, 128, stdin);
+ strip(line);
+ if (line[0] == '?') {
+ print_help(menu);
+ continue;
+ }
+ if (!line[0])
+ cnt = def;
+ else if (isdigit(line[0]))
+ cnt = atoi(line);
+ else
+ continue;
+ break;
+ default:
+ break;
+ }
+
+ conf_childs:
+ for (child = menu->list; child; child = child->next) {
+ if (!child->sym || !menu_is_visible(child))
+ continue;
+ if (!--cnt)
+ break;
+ }
+ if (!child)
+ continue;
+ if (line[0] && line[strlen(line) - 1] == '?') {
+ print_help(child);
+ continue;
+ }
+ sym_set_choice_value(sym, child->sym);
+ for (child = child->list; child; child = child->next) {
+ indent += 2;
+ conf(child);
+ indent -= 2;
+ }
+ return 1;
+ }
+}
+
+static void conf(struct menu *menu)
+{
+ struct symbol *sym;
+ struct property *prop;
+ struct menu *child;
+
+ if (!menu_is_visible(menu))
+ return;
+
+ sym = menu->sym;
+ prop = menu->prompt;
+ if (prop) {
+ const char *prompt;
+
+ switch (prop->type) {
+ case P_MENU:
+ if ((input_mode == silentoldconfig ||
+ input_mode == listnewconfig ||
+ input_mode == olddefconfig) &&
+ rootEntry != menu) {
+ check_conf(menu);
+ return;
+ }
+ /* fall through */
+ case P_COMMENT:
+ prompt = menu_get_prompt(menu);
+ if (prompt)
+ printf("%*c\n%*c %s\n%*c\n",
+ indent, '*',
+ indent, '*', _(prompt),
+ indent, '*');
+ default:
+ ;
+ }
+ }
+
+ if (!sym)
+ goto conf_childs;
+
+ if (sym_is_choice(sym)) {
+ conf_choice(menu);
+ if (sym->curr.tri != mod)
+ return;
+ goto conf_childs;
+ }
+
+ switch (sym->type) {
+ case S_INT:
+ case S_HEX:
+ case S_STRING:
+ conf_string(menu);
+ break;
+ default:
+ conf_sym(menu);
+ break;
+ }
+
+conf_childs:
+ if (sym)
+ indent += 2;
+ for (child = menu->list; child; child = child->next)
+ conf(child);
+ if (sym)
+ indent -= 2;
+}
+
+static void check_conf(struct menu *menu)
+{
+ struct symbol *sym;
+ struct menu *child;
+
+ if (!menu_is_visible(menu))
+ return;
+
+ sym = menu->sym;
+ if (sym && !sym_has_value(sym)) {
+ if (sym_is_changable(sym) ||
+ (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)) {
+ if (input_mode == listnewconfig) {
+ if (sym->name && !sym_is_choice_value(sym)) {
+ printf("%s%s\n", CONFIG_, sym->name);
+ }
+ } else if (input_mode != olddefconfig) {
+ if (!conf_cnt++)
+ printf(_("*\n* Restart config...\n*\n"));
+ rootEntry = menu_get_parent_menu(menu);
+ conf(rootEntry);
+ }
+ }
+ }
+
+ for (child = menu->list; child; child = child->next)
+ check_conf(child);
+}
+
+static struct option long_opts[] = {
+ {"oldaskconfig", no_argument, NULL, oldaskconfig},
+ {"oldconfig", no_argument, NULL, oldconfig},
+ {"silentoldconfig", no_argument, NULL, silentoldconfig},
+ {"defconfig", optional_argument, NULL, defconfig},
+ {"savedefconfig", required_argument, NULL, savedefconfig},
+ {"allnoconfig", no_argument, NULL, allnoconfig},
+ {"allyesconfig", no_argument, NULL, allyesconfig},
+ {"allmodconfig", no_argument, NULL, allmodconfig},
+ {"alldefconfig", no_argument, NULL, alldefconfig},
+ {"randconfig", no_argument, NULL, randconfig},
+ {"listnewconfig", no_argument, NULL, listnewconfig},
+ {"olddefconfig", no_argument, NULL, olddefconfig},
+ /*
+ * oldnoconfig is an alias of olddefconfig, because people already
+ * are dependent on its behavior(sets new symbols to their default
+ * value but not 'n') with the counter-intuitive name.
+ */
+ {"oldnoconfig", no_argument, NULL, olddefconfig},
+ {NULL, 0, NULL, 0}
+};
+
+static void conf_usage(const char *progname)
+{
+
+ printf("Usage: %s [option] <kconfig-file>\n", progname);
+ printf("[option] is _one_ of the following:\n");
+ printf(" --listnewconfig List new options\n");
+ printf(" --oldaskconfig Start a new configuration using a line-oriented program\n");
+ printf(" --oldconfig Update a configuration using a provided .config as base\n");
+ printf(" --silentoldconfig Same as oldconfig, but quietly, additionally update deps\n");
+ printf(" --olddefconfig Same as silentoldconfig but sets new symbols to their default value\n");
+ printf(" --oldnoconfig An alias of olddefconfig\n");
+ printf(" --defconfig <file> New config with default defined in <file>\n");
+ printf(" --savedefconfig <file> Save the minimal current configuration to <file>\n");
+ printf(" --allnoconfig New config where all options are answered with no\n");
+ printf(" --allyesconfig New config where all options are answered with yes\n");
+ printf(" --allmodconfig New config where all options are answered with mod\n");
+ printf(" --alldefconfig New config with all symbols set to default\n");
+ printf(" --randconfig New config with random answer to all options\n");
+}
+
+int main(int ac, char **av)
+{
+ const char *progname = av[0];
+ int opt;
+ const char *name, *defconfig_file = NULL /* gcc uninit */;
+ struct stat tmpstat;
+
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
+ tty_stdio = isatty(0) && isatty(1) && isatty(2);
+
+ while ((opt = getopt_long(ac, av, "", long_opts, NULL)) != -1) {
+ input_mode = (enum input_mode)opt;
+ switch (opt) {
+ case silentoldconfig:
+ sync_kconfig = 1;
+ break;
+ case defconfig:
+ case savedefconfig:
+ defconfig_file = optarg;
+ break;
+ case randconfig:
+ {
+ struct timeval now;
+ unsigned int seed;
+ char *seed_env;
+
+ /*
+ * Use microseconds derived seed,
+ * compensate for systems where it may be zero
+ */
+ gettimeofday(&now, NULL);
+ seed = (unsigned int)((now.tv_sec + 1) * (now.tv_usec + 1));
+
+ seed_env = getenv("KCONFIG_SEED");
+ if( seed_env && *seed_env ) {
+ char *endp;
+ int tmp = (int)strtol(seed_env, &endp, 0);
+ if (*endp == '\0') {
+ seed = tmp;
+ }
+ }
+ fprintf( stderr, "KCONFIG_SEED=0x%X\n", seed );
+ srand(seed);
+ break;
+ }
+ case oldaskconfig:
+ case oldconfig:
+ case allnoconfig:
+ case allyesconfig:
+ case allmodconfig:
+ case alldefconfig:
+ case listnewconfig:
+ case olddefconfig:
+ break;
+ case '?':
+ conf_usage(progname);
+ exit(1);
+ break;
+ }
+ }
+ if (ac == optind) {
+ printf(_("%s: Kconfig file missing\n"), av[0]);
+ conf_usage(progname);
+ exit(1);
+ }
+ name = av[optind];
+ conf_parse(name);
+ //zconfdump(stdout);
+ if (sync_kconfig) {
+ name = conf_get_configname();
+ if (stat(name, &tmpstat)) {
+ fprintf(stderr, _("***\n"
+ "*** Configuration file \"%s\" not found!\n"
+ "***\n"
+ "*** Please run some configurator (e.g. \"make oldconfig\" or\n"
+ "*** \"make menuconfig\" or \"make xconfig\").\n"
+ "***\n"), name);
+ exit(1);
+ }
+ }
+
+ switch (input_mode) {
+ case defconfig:
+ if (!defconfig_file)
+ defconfig_file = conf_get_default_confname();
+ if (conf_read(defconfig_file)) {
+ printf(_("***\n"
+ "*** Can't find default configuration \"%s\"!\n"
+ "***\n"), defconfig_file);
+ exit(1);
+ }
+ break;
+ case savedefconfig:
+ case silentoldconfig:
+ case oldaskconfig:
+ case oldconfig:
+ case listnewconfig:
+ case olddefconfig:
+ conf_read(NULL);
+ break;
+ case allnoconfig:
+ case allyesconfig:
+ case allmodconfig:
+ case alldefconfig:
+ case randconfig:
+ name = getenv("KCONFIG_ALLCONFIG");
+ if (!name)
+ break;
+ if ((strcmp(name, "") != 0) && (strcmp(name, "1") != 0)) {
+ if (conf_read_simple(name, S_DEF_USER)) {
+ fprintf(stderr,
+ _("*** Can't read seed configuration \"%s\"!\n"),
+ name);
+ exit(1);
+ }
+ break;
+ }
+ switch (input_mode) {
+ case allnoconfig: name = "allno.config"; break;
+ case allyesconfig: name = "allyes.config"; break;
+ case allmodconfig: name = "allmod.config"; break;
+ case alldefconfig: name = "alldef.config"; break;
+ case randconfig: name = "allrandom.config"; break;
+ default: break;
+ }
+ if (conf_read_simple(name, S_DEF_USER) &&
+ conf_read_simple("all.config", S_DEF_USER)) {
+ fprintf(stderr,
+ _("*** KCONFIG_ALLCONFIG set, but no \"%s\" or \"all.config\" file found\n"),
+ name);
+ exit(1);
+ }
+ break;
+ default:
+ break;
+ }
+
+ if (sync_kconfig) {
+ if (conf_get_changed()) {
+ name = getenv("KCONFIG_NOSILENTUPDATE");
+ if (name && *name) {
+ fprintf(stderr,
+ _("\n*** The configuration requires explicit update.\n\n"));
+ return 1;
+ }
+ }
+ valid_stdin = tty_stdio;
+ }
+
+ switch (input_mode) {
+ case allnoconfig:
+ conf_set_all_new_symbols(def_no);
+ break;
+ case allyesconfig:
+ conf_set_all_new_symbols(def_yes);
+ break;
+ case allmodconfig:
+ conf_set_all_new_symbols(def_mod);
+ break;
+ case alldefconfig:
+ conf_set_all_new_symbols(def_default);
+ break;
+ case randconfig:
+ /* Really nothing to do in this loop */
+ while (conf_set_all_new_symbols(def_random)) ;
+ break;
+ case defconfig:
+ conf_set_all_new_symbols(def_default);
+ break;
+ case savedefconfig:
+ break;
+ case oldaskconfig:
+ rootEntry = &rootmenu;
+ conf(&rootmenu);
+ input_mode = silentoldconfig;
+ /* fall through */
+ case oldconfig:
+ case listnewconfig:
+ case olddefconfig:
+ case silentoldconfig:
+ /* Update until a loop caused no more changes */
+ do {
+ conf_cnt = 0;
+ check_conf(&rootmenu);
+ } while (conf_cnt &&
+ (input_mode != listnewconfig &&
+ input_mode != olddefconfig));
+ break;
+ }
+
+ if (sync_kconfig) {
+ /* silentoldconfig is used during the build so we shall update autoconf.
+ * All other commands are only used to generate a config.
+ */
+ if (conf_get_changed() && conf_write(NULL)) {
+ fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
+ exit(1);
+ }
+ if (conf_write_autoconf()) {
+ fprintf(stderr, _("\n*** Error during update of the configuration.\n\n"));
+ return 1;
+ }
+ } else if (input_mode == savedefconfig) {
+ if (conf_write_defconfig(defconfig_file)) {
+ fprintf(stderr, _("n*** Error while saving defconfig to: %s\n\n"),
+ defconfig_file);
+ return 1;
+ }
+ } else if (input_mode != listnewconfig) {
+ if (conf_write(NULL)) {
+ fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
+ exit(1);
+ }
+ }
+ return 0;
+}
+
+/*
+ * Helper function to facilitate fgets() by Jean Sacren.
+ */
+void xfgets(char *str, int size, FILE *in)
+{
+ if (fgets(str, size, in) == NULL)
+ fprintf(stderr, "\nError in reading or end of file.\n");
+}
diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
new file mode 100644
index 0000000..ae6ce66
--- /dev/null
+++ b/scripts/kconfig/confdata.c
@@ -0,0 +1,1250 @@
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <sys/stat.h>
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <unistd.h>
+
+#include "lkc.h"
+
+static void conf_warning(const char *fmt, ...)
+ __attribute__ ((format (printf, 1, 2)));
+
+static void conf_message(const char *fmt, ...)
+ __attribute__ ((format (printf, 1, 2)));
+
+static const char *conf_filename;
+static int conf_lineno, conf_warnings, conf_unsaved;
+
+const char conf_defname[] = "arch/$ARCH/defconfig";
+
+static void conf_warning(const char *fmt, ...)
+{
+ va_list ap;
+ va_start(ap, fmt);
+ fprintf(stderr, "%s:%d:warning: ", conf_filename, conf_lineno);
+ vfprintf(stderr, fmt, ap);
+ fprintf(stderr, "\n");
+ va_end(ap);
+ conf_warnings++;
+}
+
+static void conf_default_message_callback(const char *fmt, va_list ap)
+{
+ printf("#\n# ");
+ vprintf(fmt, ap);
+ printf("\n#\n");
+}
+
+static void (*conf_message_callback) (const char *fmt, va_list ap) =
+ conf_default_message_callback;
+void conf_set_message_callback(void (*fn) (const char *fmt, va_list ap))
+{
+ conf_message_callback = fn;
+}
+
+static void conf_message(const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ if (conf_message_callback)
+ conf_message_callback(fmt, ap);
+}
+
+const char *conf_get_configname(void)
+{
+ char *name = getenv("KCONFIG_CONFIG");
+
+ return name ? name : ".config";
+}
+
+const char *conf_get_autoconfig_name(void)
+{
+ char *name = getenv("KCONFIG_AUTOCONFIG");
+
+ return name ? name : "include/config/auto.conf";
+}
+
+static char *conf_expand_value(const char *in)
+{
+ struct symbol *sym;
+ const char *src;
+ static char res_value[SYMBOL_MAXLENGTH];
+ char *dst, name[SYMBOL_MAXLENGTH];
+
+ res_value[0] = 0;
+ dst = name;
+ while ((src = strchr(in, '$'))) {
+ strncat(res_value, in, src - in);
+ src++;
+ dst = name;
+ while (isalnum(*src) || *src == '_')
+ *dst++ = *src++;
+ *dst = 0;
+ sym = sym_lookup(name, 0);
+ sym_calc_value(sym);
+ strcat(res_value, sym_get_string_value(sym));
+ in = src;
+ }
+ strcat(res_value, in);
+
+ return res_value;
+}
+
+char *conf_get_default_confname(void)
+{
+ struct stat buf;
+ static char fullname[PATH_MAX+1];
+ char *env, *name;
+
+ name = conf_expand_value(conf_defname);
+ env = getenv(SRCTREE);
+ if (env) {
+ sprintf(fullname, "%s/%s", env, name);
+ if (!stat(fullname, &buf))
+ return fullname;
+ }
+ return name;
+}
+
+static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p)
+{
+ char *p2;
+
+ switch (sym->type) {
+ case S_TRISTATE:
+ if (p[0] == 'm') {
+ sym->def[def].tri = mod;
+ sym->flags |= def_flags;
+ break;
+ }
+ /* fall through */
+ case S_BOOLEAN:
+ if (p[0] == 'y') {
+ sym->def[def].tri = yes;
+ sym->flags |= def_flags;
+ break;
+ }
+ if (p[0] == 'n') {
+ sym->def[def].tri = no;
+ sym->flags |= def_flags;
+ break;
+ }
+ if (def != S_DEF_AUTO)
+ conf_warning("symbol value '%s' invalid for %s",
+ p, sym->name);
+ return 1;
+ case S_OTHER:
+ if (*p != '"') {
+ for (p2 = p; *p2 && !isspace(*p2); p2++)
+ ;
+ sym->type = S_STRING;
+ goto done;
+ }
+ /* fall through */
+ case S_STRING:
+ if (*p++ != '"')
+ break;
+ for (p2 = p; (p2 = strpbrk(p2, "\"\\")); p2++) {
+ if (*p2 == '"') {
+ *p2 = 0;
+ break;
+ }
+ memmove(p2, p2 + 1, strlen(p2));
+ }
+ if (!p2) {
+ if (def != S_DEF_AUTO)
+ conf_warning("invalid string found");
+ return 1;
+ }
+ /* fall through */
+ case S_INT:
+ case S_HEX:
+ done:
+ if (sym_string_valid(sym, p)) {
+ sym->def[def].val = strdup(p);
+ sym->flags |= def_flags;
+ } else {
+ if (def != S_DEF_AUTO)
+ conf_warning("symbol value '%s' invalid for %s",
+ p, sym->name);
+ return 1;
+ }
+ break;
+ default:
+ ;
+ }
+ return 0;
+}
+
+#define LINE_GROWTH 16
+static int add_byte(int c, char **lineptr, size_t slen, size_t *n)
+{
+ char *nline;
+ size_t new_size = slen + 1;
+ if (new_size > *n) {
+ new_size += LINE_GROWTH - 1;
+ new_size *= 2;
+ nline = realloc(*lineptr, new_size);
+ if (!nline)
+ return -1;
+
+ *lineptr = nline;
+ *n = new_size;
+ }
+
+ (*lineptr)[slen] = c;
+
+ return 0;
+}
+
+static ssize_t compat_getline(char **lineptr, size_t *n, FILE *stream)
+{
+ char *line = *lineptr;
+ size_t slen = 0;
+
+ for (;;) {
+ int c = getc(stream);
+
+ switch (c) {
+ case '\n':
+ if (add_byte(c, &line, slen, n) < 0)
+ goto e_out;
+ slen++;
+ /* fall through */
+ case EOF:
+ if (add_byte('\0', &line, slen, n) < 0)
+ goto e_out;
+ *lineptr = line;
+ if (slen == 0)
+ return -1;
+ return slen;
+ default:
+ if (add_byte(c, &line, slen, n) < 0)
+ goto e_out;
+ slen++;
+ }
+ }
+
+e_out:
+ line[slen-1] = '\0';
+ *lineptr = line;
+ return -1;
+}
+
+int conf_read_simple(const char *name, int def)
+{
+ FILE *in = NULL;
+ char *line = NULL;
+ size_t line_asize = 0;
+ char *p, *p2;
+ struct symbol *sym;
+ int i, def_flags;
+
+ if (name) {
+ in = zconf_fopen(name);
+ } else {
+ struct property *prop;
+
+ name = conf_get_configname();
+ in = zconf_fopen(name);
+ if (in)
+ goto load;
+ sym_add_change_count(1);
+ if (!sym_defconfig_list) {
+ if (modules_sym)
+ sym_calc_value(modules_sym);
+ return 1;
+ }
+
+ for_all_defaults(sym_defconfig_list, prop) {
+ if (expr_calc_value(prop->visible.expr) == no ||
+ prop->expr->type != E_SYMBOL)
+ continue;
+ name = conf_expand_value(prop->expr->left.sym->name);
+ in = zconf_fopen(name);
+ if (in) {
+ conf_message(_("using defaults found in %s"),
+ name);
+ goto load;
+ }
+ }
+ }
+ if (!in)
+ return 1;
+
+load:
+ conf_filename = name;
+ conf_lineno = 0;
+ conf_warnings = 0;
+ conf_unsaved = 0;
+
+ def_flags = SYMBOL_DEF << def;
+ for_all_symbols(i, sym) {
+ sym->flags |= SYMBOL_CHANGED;
+ sym->flags &= ~(def_flags|SYMBOL_VALID);
+ if (sym_is_choice(sym))
+ sym->flags |= def_flags;
+ switch (sym->type) {
+ case S_INT:
+ case S_HEX:
+ case S_STRING:
+ if (sym->def[def].val)
+ free(sym->def[def].val);
+ /* fall through */
+ default:
+ sym->def[def].val = NULL;
+ sym->def[def].tri = no;
+ }
+ }
+
+ while (compat_getline(&line, &line_asize, in) != -1) {
+ conf_lineno++;
+ sym = NULL;
+ if (line[0] == '#') {
+ if (memcmp(line + 2, CONFIG_, strlen(CONFIG_)))
+ continue;
+ p = strchr(line + 2 + strlen(CONFIG_), ' ');
+ if (!p)
+ continue;
+ *p++ = 0;
+ if (strncmp(p, "is not set", 10))
+ continue;
+ if (def == S_DEF_USER) {
+ sym = sym_find(line + 2 + strlen(CONFIG_));
+ if (!sym) {
+ sym_add_change_count(1);
+ goto setsym;
+ }
+ } else {
+ sym = sym_lookup(line + 2 + strlen(CONFIG_), 0);
+ if (sym->type == S_UNKNOWN)
+ sym->type = S_BOOLEAN;
+ }
+ if (sym->flags & def_flags) {
+ conf_warning("override: reassigning to symbol %s", sym->name);
+ }
+ switch (sym->type) {
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ sym->def[def].tri = no;
+ sym->flags |= def_flags;
+ break;
+ default:
+ ;
+ }
+ } else if (memcmp(line, CONFIG_, strlen(CONFIG_)) == 0) {
+ p = strchr(line + strlen(CONFIG_), '=');
+ if (!p)
+ continue;
+ *p++ = 0;
+ p2 = strchr(p, '\n');
+ if (p2) {
+ *p2-- = 0;
+ if (*p2 == '\r')
+ *p2 = 0;
+ }
+ if (def == S_DEF_USER) {
+ sym = sym_find(line + strlen(CONFIG_));
+ if (!sym) {
+ sym_add_change_count(1);
+ goto setsym;
+ }
+ } else {
+ sym = sym_lookup(line + strlen(CONFIG_), 0);
+ if (sym->type == S_UNKNOWN)
+ sym->type = S_OTHER;
+ }
+ if (sym->flags & def_flags) {
+ conf_warning("override: reassigning to symbol %s", sym->name);
+ }
+ if (conf_set_sym_val(sym, def, def_flags, p))
+ continue;
+ } else {
+ if (line[0] != '\r' && line[0] != '\n')
+ conf_warning("unexpected data");
+ continue;
+ }
+setsym:
+ if (sym && sym_is_choice_value(sym)) {
+ struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym));
+ switch (sym->def[def].tri) {
+ case no:
+ break;
+ case mod:
+ if (cs->def[def].tri == yes) {
+ conf_warning("%s creates inconsistent choice state", sym->name);
+ cs->flags &= ~def_flags;
+ }
+ break;
+ case yes:
+ if (cs->def[def].tri != no)
+ conf_warning("override: %s changes choice state", sym->name);
+ cs->def[def].val = sym;
+ break;
+ }
+ cs->def[def].tri = EXPR_OR(cs->def[def].tri, sym->def[def].tri);
+ }
+ }
+ free(line);
+ fclose(in);
+
+ if (modules_sym)
+ sym_calc_value(modules_sym);
+ return 0;
+}
+
+int conf_read(const char *name)
+{
+ struct symbol *sym;
+ int i;
+
+ sym_set_change_count(0);
+
+ if (conf_read_simple(name, S_DEF_USER))
+ return 1;
+
+ for_all_symbols(i, sym) {
+ sym_calc_value(sym);
+ if (sym_is_choice(sym) || (sym->flags & SYMBOL_AUTO))
+ continue;
+ if (sym_has_value(sym) && (sym->flags & SYMBOL_WRITE)) {
+ /* check that calculated value agrees with saved value */
+ switch (sym->type) {
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ if (sym->def[S_DEF_USER].tri != sym_get_tristate_value(sym))
+ break;
+ if (!sym_is_choice(sym))
+ continue;
+ /* fall through */
+ default:
+ if (!strcmp(sym->curr.val, sym->def[S_DEF_USER].val))
+ continue;
+ break;
+ }
+ } else if (!sym_has_value(sym) && !(sym->flags & SYMBOL_WRITE))
+ /* no previous value and not saved */
+ continue;
+ conf_unsaved++;
+ /* maybe print value in verbose mode... */
+ }
+
+ for_all_symbols(i, sym) {
+ if (sym_has_value(sym) && !sym_is_choice_value(sym)) {
+ /* Reset values of generates values, so they'll appear
+ * as new, if they should become visible, but that
+ * doesn't quite work if the Kconfig and the saved
+ * configuration disagree.
+ */
+ if (sym->visible == no && !conf_unsaved)
+ sym->flags &= ~SYMBOL_DEF_USER;
+ switch (sym->type) {
+ case S_STRING:
+ case S_INT:
+ case S_HEX:
+ /* Reset a string value if it's out of range */
+ if (sym_string_within_range(sym, sym->def[S_DEF_USER].val))
+ break;
+ sym->flags &= ~(SYMBOL_VALID|SYMBOL_DEF_USER);
+ conf_unsaved++;
+ break;
+ default:
+ break;
+ }
+ }
+ }
+
+ sym_add_change_count(conf_warnings || conf_unsaved);
+
+ return 0;
+}
+
+/*
+ * Kconfig configuration printer
+ *
+ * This printer is used when generating the resulting configuration after
+ * kconfig invocation and `defconfig' files. Unset symbol might be omitted by
+ * passing a non-NULL argument to the printer.
+ *
+ */
+static void
+kconfig_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg)
+{
+
+ switch (sym->type) {
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ if (*value == 'n') {
+ bool skip_unset = (arg != NULL);
+
+ if (!skip_unset)
+ fprintf(fp, "# %s%s is not set\n",
+ CONFIG_, sym->name);
+ return;
+ }
+ break;
+ default:
+ break;
+ }
+
+ fprintf(fp, "%s%s=%s\n", CONFIG_, sym->name, value);
+}
+
+static void
+kconfig_print_comment(FILE *fp, const char *value, void *arg)
+{
+ const char *p = value;
+ size_t l;
+
+ for (;;) {
+ l = strcspn(p, "\n");
+ fprintf(fp, "#");
+ if (l) {
+ fprintf(fp, " ");
+ xfwrite(p, l, 1, fp);
+ p += l;
+ }
+ fprintf(fp, "\n");
+ if (*p++ == '\0')
+ break;
+ }
+}
+
+static struct conf_printer kconfig_printer_cb =
+{
+ .print_symbol = kconfig_print_symbol,
+ .print_comment = kconfig_print_comment,
+};
+
+/*
+ * Header printer
+ *
+ * This printer is used when generating the `include/generated/autoconf.h' file.
+ */
+static void
+header_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg)
+{
+
+ switch (sym->type) {
+ case S_BOOLEAN:
+ case S_TRISTATE: {
+ const char *suffix = "";
+
+ switch (*value) {
+ case 'n':
+ break;
+ case 'm':
+ suffix = "_MODULE";
+ /* fall through */
+ default:
+ fprintf(fp, "#define %s%s%s 1\n",
+ CONFIG_, sym->name, suffix);
+ }
+ break;
+ }
+ case S_HEX: {
+ const char *prefix = "";
+
+ if (value[0] != '0' || (value[1] != 'x' && value[1] != 'X'))
+ prefix = "0x";
+ fprintf(fp, "#define %s%s %s%s\n",
+ CONFIG_, sym->name, prefix, value);
+ break;
+ }
+ case S_STRING:
+ case S_INT:
+ fprintf(fp, "#define %s%s %s\n",
+ CONFIG_, sym->name, value);
+ break;
+ default:
+ break;
+ }
+
+}
+
+static void
+header_print_comment(FILE *fp, const char *value, void *arg)
+{
+ const char *p = value;
+ size_t l;
+
+ fprintf(fp, "/*\n");
+ for (;;) {
+ l = strcspn(p, "\n");
+ fprintf(fp, " *");
+ if (l) {
+ fprintf(fp, " ");
+ xfwrite(p, l, 1, fp);
+ p += l;
+ }
+ fprintf(fp, "\n");
+ if (*p++ == '\0')
+ break;
+ }
+ fprintf(fp, " */\n");
+}
+
+static struct conf_printer header_printer_cb =
+{
+ .print_symbol = header_print_symbol,
+ .print_comment = header_print_comment,
+};
+
+/*
+ * Tristate printer
+ *
+ * This printer is used when generating the `include/config/tristate.conf' file.
+ */
+static void
+tristate_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg)
+{
+
+ if (sym->type == S_TRISTATE && *value != 'n')
+ fprintf(fp, "%s%s=%c\n", CONFIG_, sym->name, (char)toupper(*value));
+}
+
+static struct conf_printer tristate_printer_cb =
+{
+ .print_symbol = tristate_print_symbol,
+ .print_comment = kconfig_print_comment,
+};
+
+static void conf_write_symbol(FILE *fp, struct symbol *sym,
+ struct conf_printer *printer, void *printer_arg)
+{
+ const char *str;
+
+ switch (sym->type) {
+ case S_OTHER:
+ case S_UNKNOWN:
+ break;
+ case S_STRING:
+ str = sym_get_string_value(sym);
+ str = sym_escape_string_value(str);
+ printer->print_symbol(fp, sym, str, printer_arg);
+ free((void *)str);
+ break;
+ default:
+ str = sym_get_string_value(sym);
+ printer->print_symbol(fp, sym, str, printer_arg);
+ }
+}
+
+static void
+conf_write_heading(FILE *fp, struct conf_printer *printer, void *printer_arg)
+{
+ char buf[256];
+
+ snprintf(buf, sizeof(buf),
+ "\n"
+ "Automatically generated file; DO NOT EDIT.\n"
+ "%s\n",
+ rootmenu.prompt->text);
+
+ printer->print_comment(fp, buf, printer_arg);
+}
+
+/*
+ * Write out a minimal config.
+ * All values that has default values are skipped as this is redundant.
+ */
+int conf_write_defconfig(const char *filename)
+{
+ struct symbol *sym;
+ struct menu *menu;
+ FILE *out;
+
+ out = fopen(filename, "w");
+ if (!out)
+ return 1;
+
+ sym_clear_all_valid();
+
+ /* Traverse all menus to find all relevant symbols */
+ menu = rootmenu.list;
+
+ while (menu != NULL)
+ {
+ sym = menu->sym;
+ if (sym == NULL) {
+ if (!menu_is_visible(menu))
+ goto next_menu;
+ } else if (!sym_is_choice(sym)) {
+ sym_calc_value(sym);
+ if (!(sym->flags & SYMBOL_WRITE))
+ goto next_menu;
+ sym->flags &= ~SYMBOL_WRITE;
+ /* If we cannot change the symbol - skip */
+ if (!sym_is_changable(sym))
+ goto next_menu;
+ /* If symbol equals to default value - skip */
+ if (strcmp(sym_get_string_value(sym), sym_get_string_default(sym)) == 0)
+ goto next_menu;
+
+ /*
+ * If symbol is a choice value and equals to the
+ * default for a choice - skip.
+ * But only if value is bool and equal to "y" and
+ * choice is not "optional".
+ * (If choice is "optional" then all values can be "n")
+ */
+ if (sym_is_choice_value(sym)) {
+ struct symbol *cs;
+ struct symbol *ds;
+
+ cs = prop_get_symbol(sym_get_choice_prop(sym));
+ ds = sym_choice_default(cs);
+ if (!sym_is_optional(cs) && sym == ds) {
+ if ((sym->type == S_BOOLEAN) &&
+ sym_get_tristate_value(sym) == yes)
+ goto next_menu;
+ }
+ }
+ conf_write_symbol(out, sym, &kconfig_printer_cb, NULL);
+ }
+next_menu:
+ if (menu->list != NULL) {
+ menu = menu->list;
+ }
+ else if (menu->next != NULL) {
+ menu = menu->next;
+ } else {
+ while ((menu = menu->parent)) {
+ if (menu->next != NULL) {
+ menu = menu->next;
+ break;
+ }
+ }
+ }
+ }
+ fclose(out);
+ return 0;
+}
+
+int conf_write(const char *name)
+{
+ FILE *out;
+ struct symbol *sym;
+ struct menu *menu;
+ const char *basename;
+ const char *str;
+ char dirname[PATH_MAX+1], tmpname[PATH_MAX+1], newname[PATH_MAX+1];
+ char *env;
+
+ dirname[0] = 0;
+ if (name && name[0]) {
+ struct stat st;
+ char *slash;
+
+ if (!stat(name, &st) && S_ISDIR(st.st_mode)) {
+ strcpy(dirname, name);
+ strcat(dirname, "/");
+ basename = conf_get_configname();
+ } else if ((slash = strrchr(name, '/'))) {
+ int size = slash - name + 1;
+ memcpy(dirname, name, size);
+ dirname[size] = 0;
+ if (slash[1])
+ basename = slash + 1;
+ else
+ basename = conf_get_configname();
+ } else
+ basename = name;
+ } else
+ basename = conf_get_configname();
+
+ sprintf(newname, "%s%s", dirname, basename);
+ env = getenv("KCONFIG_OVERWRITECONFIG");
+ if (!env || !*env) {
+ sprintf(tmpname, "%s.tmpconfig.%d", dirname, (int)getpid());
+ out = fopen(tmpname, "w");
+ } else {
+ *tmpname = 0;
+ out = fopen(newname, "w");
+ }
+ if (!out)
+ return 1;
+
+ conf_write_heading(out, &kconfig_printer_cb, NULL);
+
+ if (!conf_get_changed())
+ sym_clear_all_valid();
+
+ menu = rootmenu.list;
+ while (menu) {
+ sym = menu->sym;
+ if (!sym) {
+ if (!menu_is_visible(menu))
+ goto next;
+ str = menu_get_prompt(menu);
+ fprintf(out, "\n"
+ "#\n"
+ "# %s\n"
+ "#\n", str);
+ } else if (!(sym->flags & SYMBOL_CHOICE)) {
+ sym_calc_value(sym);
+ if (!(sym->flags & SYMBOL_WRITE))
+ goto next;
+ sym->flags &= ~SYMBOL_WRITE;
+
+ conf_write_symbol(out, sym, &kconfig_printer_cb, NULL);
+ }
+
+next:
+ if (menu->list) {
+ menu = menu->list;
+ continue;
+ }
+ if (menu->next)
+ menu = menu->next;
+ else while ((menu = menu->parent)) {
+ if (menu->next) {
+ menu = menu->next;
+ break;
+ }
+ }
+ }
+ fclose(out);
+
+ if (*tmpname) {
+ strcat(dirname, basename);
+ strcat(dirname, ".old");
+ rename(newname, dirname);
+ if (rename(tmpname, newname))
+ return 1;
+ }
+
+ conf_message(_("configuration written to %s"), newname);
+
+ sym_set_change_count(0);
+
+ return 0;
+}
+
+static int conf_split_config(void)
+{
+ const char *name;
+ char path[PATH_MAX+1];
+ char *s, *d, c;
+ struct symbol *sym;
+ struct stat sb;
+ int res, i, fd;
+
+ name = conf_get_autoconfig_name();
+ conf_read_simple(name, S_DEF_AUTO);
+
+ if (chdir("include/config"))
+ return 1;
+
+ res = 0;
+ for_all_symbols(i, sym) {
+ sym_calc_value(sym);
+ if ((sym->flags & SYMBOL_AUTO) || !sym->name)
+ continue;
+ if (sym->flags & SYMBOL_WRITE) {
+ if (sym->flags & SYMBOL_DEF_AUTO) {
+ /*
+ * symbol has old and new value,
+ * so compare them...
+ */
+ switch (sym->type) {
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ if (sym_get_tristate_value(sym) ==
+ sym->def[S_DEF_AUTO].tri)
+ continue;
+ break;
+ case S_STRING:
+ case S_HEX:
+ case S_INT:
+ if (!strcmp(sym_get_string_value(sym),
+ sym->def[S_DEF_AUTO].val))
+ continue;
+ break;
+ default:
+ break;
+ }
+ } else {
+ /*
+ * If there is no old value, only 'no' (unset)
+ * is allowed as new value.
+ */
+ switch (sym->type) {
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ if (sym_get_tristate_value(sym) == no)
+ continue;
+ break;
+ default:
+ break;
+ }
+ }
+ } else if (!(sym->flags & SYMBOL_DEF_AUTO))
+ /* There is neither an old nor a new value. */
+ continue;
+ /* else
+ * There is an old value, but no new value ('no' (unset)
+ * isn't saved in auto.conf, so the old value is always
+ * different from 'no').
+ */
+
+ /* Replace all '_' and append ".h" */
+ s = sym->name;
+ d = path;
+ while ((c = *s++)) {
+ c = tolower(c);
+ *d++ = (c == '_') ? '/' : c;
+ }
+ strcpy(d, ".h");
+
+ /* Assume directory path already exists. */
+ fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644);
+ if (fd == -1) {
+ if (errno != ENOENT) {
+ res = 1;
+ break;
+ }
+ /*
+ * Create directory components,
+ * unless they exist already.
+ */
+ d = path;
+ while ((d = strchr(d, '/'))) {
+ *d = 0;
+ if (stat(path, &sb) && mkdir(path, 0755)) {
+ res = 1;
+ goto out;
+ }
+ *d++ = '/';
+ }
+ /* Try it again. */
+ fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644);
+ if (fd == -1) {
+ res = 1;
+ break;
+ }
+ }
+ close(fd);
+ }
+out:
+ if (chdir("../.."))
+ return 1;
+
+ return res;
+}
+
+int conf_write_autoconf(void)
+{
+ struct symbol *sym;
+ const char *name;
+ FILE *out, *tristate, *out_h;
+ int i;
+
+ /*
+ * Added for U-Boot SPL/TPL
+ */
+ name = getenv("KCONFIG_OBJDIR");
+ if (name && name[0])
+ if (chdir(name))
+ return 1;
+
+ sym_clear_all_valid();
+
+ file_write_dep("include/config/auto.conf.cmd");
+
+ if (conf_split_config())
+ return 1;
+
+ out = fopen(".tmpconfig", "w");
+ if (!out)
+ return 1;
+
+ tristate = fopen(".tmpconfig_tristate", "w");
+ if (!tristate) {
+ fclose(out);
+ return 1;
+ }
+
+ out_h = fopen(".tmpconfig.h", "w");
+ if (!out_h) {
+ fclose(out);
+ fclose(tristate);
+ return 1;
+ }
+
+ conf_write_heading(out, &kconfig_printer_cb, NULL);
+
+ conf_write_heading(tristate, &tristate_printer_cb, NULL);
+
+ conf_write_heading(out_h, &header_printer_cb, NULL);
+
+ for_all_symbols(i, sym) {
+ sym_calc_value(sym);
+ if (!(sym->flags & SYMBOL_WRITE) || !sym->name)
+ continue;
+
+ /* write symbol to auto.conf, tristate and header files */
+ conf_write_symbol(out, sym, &kconfig_printer_cb, (void *)1);
+
+ conf_write_symbol(tristate, sym, &tristate_printer_cb, (void *)1);
+
+ conf_write_symbol(out_h, sym, &header_printer_cb, NULL);
+ }
+ fclose(out);
+ fclose(tristate);
+ fclose(out_h);
+
+ name = getenv("KCONFIG_AUTOHEADER");
+ if (!name)
+ name = "include/generated/autoconf.h";
+ if (rename(".tmpconfig.h", name))
+ return 1;
+ name = getenv("KCONFIG_TRISTATE");
+ if (!name)
+ name = "include/config/tristate.conf";
+ if (rename(".tmpconfig_tristate", name))
+ return 1;
+ name = conf_get_autoconfig_name();
+ /*
+ * This must be the last step, kbuild has a dependency on auto.conf
+ * and this marks the successful completion of the previous steps.
+ */
+ if (rename(".tmpconfig", name))
+ return 1;
+
+ return 0;
+}
+
+static int sym_change_count;
+static void (*conf_changed_callback)(void);
+
+void sym_set_change_count(int count)
+{
+ int _sym_change_count = sym_change_count;
+ sym_change_count = count;
+ if (conf_changed_callback &&
+ (bool)_sym_change_count != (bool)count)
+ conf_changed_callback();
+}
+
+void sym_add_change_count(int count)
+{
+ sym_set_change_count(count + sym_change_count);
+}
+
+bool conf_get_changed(void)
+{
+ return sym_change_count;
+}
+
+void conf_set_changed_callback(void (*fn)(void))
+{
+ conf_changed_callback = fn;
+}
+
+static bool randomize_choice_values(struct symbol *csym)
+{
+ struct property *prop;
+ struct symbol *sym;
+ struct expr *e;
+ int cnt, def;
+
+ /*
+ * If choice is mod then we may have more items selected
+ * and if no then no-one.
+ * In both cases stop.
+ */
+ if (csym->curr.tri != yes)
+ return false;
+
+ prop = sym_get_choice_prop(csym);
+
+ /* count entries in choice block */
+ cnt = 0;
+ expr_list_for_each_sym(prop->expr, e, sym)
+ cnt++;
+
+ /*
+ * find a random value and set it to yes,
+ * set the rest to no so we have only one set
+ */
+ def = (rand() % cnt);
+
+ cnt = 0;
+ expr_list_for_each_sym(prop->expr, e, sym) {
+ if (def == cnt++) {
+ sym->def[S_DEF_USER].tri = yes;
+ csym->def[S_DEF_USER].val = sym;
+ }
+ else {
+ sym->def[S_DEF_USER].tri = no;
+ }
+ sym->flags |= SYMBOL_DEF_USER;
+ /* clear VALID to get value calculated */
+ sym->flags &= ~SYMBOL_VALID;
+ }
+ csym->flags |= SYMBOL_DEF_USER;
+ /* clear VALID to get value calculated */
+ csym->flags &= ~(SYMBOL_VALID);
+
+ return true;
+}
+
+void set_all_choice_values(struct symbol *csym)
+{
+ struct property *prop;
+ struct symbol *sym;
+ struct expr *e;
+
+ prop = sym_get_choice_prop(csym);
+
+ /*
+ * Set all non-assinged choice values to no
+ */
+ expr_list_for_each_sym(prop->expr, e, sym) {
+ if (!sym_has_value(sym))
+ sym->def[S_DEF_USER].tri = no;
+ }
+ csym->flags |= SYMBOL_DEF_USER;
+ /* clear VALID to get value calculated */
+ csym->flags &= ~(SYMBOL_VALID | SYMBOL_NEED_SET_CHOICE_VALUES);
+}
+
+bool conf_set_all_new_symbols(enum conf_def_mode mode)
+{
+ struct symbol *sym, *csym;
+ int i, cnt, pby, pty, ptm; /* pby: probability of boolean = y
+ * pty: probability of tristate = y
+ * ptm: probability of tristate = m
+ */
+
+ pby = 50; pty = ptm = 33; /* can't go as the default in switch-case
+ * below, otherwise gcc whines about
+ * -Wmaybe-uninitialized */
+ if (mode == def_random) {
+ int n, p[3];
+ char *env = getenv("KCONFIG_PROBABILITY");
+ n = 0;
+ while( env && *env ) {
+ char *endp;
+ int tmp = strtol( env, &endp, 10 );
+ if( tmp >= 0 && tmp <= 100 ) {
+ p[n++] = tmp;
+ } else {
+ errno = ERANGE;
+ perror( "KCONFIG_PROBABILITY" );
+ exit( 1 );
+ }
+ env = (*endp == ':') ? endp+1 : endp;
+ if( n >=3 ) {
+ break;
+ }
+ }
+ switch( n ) {
+ case 1:
+ pby = p[0]; ptm = pby/2; pty = pby-ptm;
+ break;
+ case 2:
+ pty = p[0]; ptm = p[1]; pby = pty + ptm;
+ break;
+ case 3:
+ pby = p[0]; pty = p[1]; ptm = p[2];
+ break;
+ }
+
+ if( pty+ptm > 100 ) {
+ errno = ERANGE;
+ perror( "KCONFIG_PROBABILITY" );
+ exit( 1 );
+ }
+ }
+ bool has_changed = false;
+
+ for_all_symbols(i, sym) {
+ if (sym_has_value(sym) || (sym->flags & SYMBOL_VALID))
+ continue;
+ switch (sym_get_type(sym)) {
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ has_changed = true;
+ switch (mode) {
+ case def_yes:
+ sym->def[S_DEF_USER].tri = yes;
+ break;
+ case def_mod:
+ sym->def[S_DEF_USER].tri = mod;
+ break;
+ case def_no:
+ if (sym->flags & SYMBOL_ALLNOCONFIG_Y)
+ sym->def[S_DEF_USER].tri = yes;
+ else
+ sym->def[S_DEF_USER].tri = no;
+ break;
+ case def_random:
+ sym->def[S_DEF_USER].tri = no;
+ cnt = rand() % 100;
+ if (sym->type == S_TRISTATE) {
+ if (cnt < pty)
+ sym->def[S_DEF_USER].tri = yes;
+ else if (cnt < (pty+ptm))
+ sym->def[S_DEF_USER].tri = mod;
+ } else if (cnt < pby)
+ sym->def[S_DEF_USER].tri = yes;
+ break;
+ default:
+ continue;
+ }
+ if (!(sym_is_choice(sym) && mode == def_random))
+ sym->flags |= SYMBOL_DEF_USER;
+ break;
+ default:
+ break;
+ }
+
+ }
+
+ sym_clear_all_valid();
+
+ /*
+ * We have different type of choice blocks.
+ * If curr.tri equals to mod then we can select several
+ * choice symbols in one block.
+ * In this case we do nothing.
+ * If curr.tri equals yes then only one symbol can be
+ * selected in a choice block and we set it to yes,
+ * and the rest to no.
+ */
+ if (mode != def_random) {
+ for_all_symbols(i, csym) {
+ if ((sym_is_choice(csym) && !sym_has_value(csym)) ||
+ sym_is_choice_value(csym))
+ csym->flags |= SYMBOL_NEED_SET_CHOICE_VALUES;
+ }
+ }
+
+ for_all_symbols(i, csym) {
+ if (sym_has_value(csym) || !sym_is_choice(csym))
+ continue;
+
+ sym_calc_value(csym);
+ if (mode == def_random)
+ has_changed = randomize_choice_values(csym);
+ else {
+ set_all_choice_values(csym);
+ has_changed = true;
+ }
+ }
+
+ return has_changed;
+}
diff --git a/scripts/kconfig/expr.c b/scripts/kconfig/expr.c
new file mode 100644
index 0000000..d662652
--- /dev/null
+++ b/scripts/kconfig/expr.c
@@ -0,0 +1,1168 @@
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "lkc.h"
+
+#define DEBUG_EXPR 0
+
+struct expr *expr_alloc_symbol(struct symbol *sym)
+{
+ struct expr *e = xcalloc(1, sizeof(*e));
+ e->type = E_SYMBOL;
+ e->left.sym = sym;
+ return e;
+}
+
+struct expr *expr_alloc_one(enum expr_type type, struct expr *ce)
+{
+ struct expr *e = xcalloc(1, sizeof(*e));
+ e->type = type;
+ e->left.expr = ce;
+ return e;
+}
+
+struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2)
+{
+ struct expr *e = xcalloc(1, sizeof(*e));
+ e->type = type;
+ e->left.expr = e1;
+ e->right.expr = e2;
+ return e;
+}
+
+struct expr *expr_alloc_comp(enum expr_type type, struct symbol *s1, struct symbol *s2)
+{
+ struct expr *e = xcalloc(1, sizeof(*e));
+ e->type = type;
+ e->left.sym = s1;
+ e->right.sym = s2;
+ return e;
+}
+
+struct expr *expr_alloc_and(struct expr *e1, struct expr *e2)
+{
+ if (!e1)
+ return e2;
+ return e2 ? expr_alloc_two(E_AND, e1, e2) : e1;
+}
+
+struct expr *expr_alloc_or(struct expr *e1, struct expr *e2)
+{
+ if (!e1)
+ return e2;
+ return e2 ? expr_alloc_two(E_OR, e1, e2) : e1;
+}
+
+struct expr *expr_copy(const struct expr *org)
+{
+ struct expr *e;
+
+ if (!org)
+ return NULL;
+
+ e = xmalloc(sizeof(*org));
+ memcpy(e, org, sizeof(*org));
+ switch (org->type) {
+ case E_SYMBOL:
+ e->left = org->left;
+ break;
+ case E_NOT:
+ e->left.expr = expr_copy(org->left.expr);
+ break;
+ case E_EQUAL:
+ case E_UNEQUAL:
+ e->left.sym = org->left.sym;
+ e->right.sym = org->right.sym;
+ break;
+ case E_AND:
+ case E_OR:
+ case E_LIST:
+ e->left.expr = expr_copy(org->left.expr);
+ e->right.expr = expr_copy(org->right.expr);
+ break;
+ default:
+ printf("can't copy type %d\n", e->type);
+ free(e);
+ e = NULL;
+ break;
+ }
+
+ return e;
+}
+
+void expr_free(struct expr *e)
+{
+ if (!e)
+ return;
+
+ switch (e->type) {
+ case E_SYMBOL:
+ break;
+ case E_NOT:
+ expr_free(e->left.expr);
+ return;
+ case E_EQUAL:
+ case E_UNEQUAL:
+ break;
+ case E_OR:
+ case E_AND:
+ expr_free(e->left.expr);
+ expr_free(e->right.expr);
+ break;
+ default:
+ printf("how to free type %d?\n", e->type);
+ break;
+ }
+ free(e);
+}
+
+static int trans_count;
+
+#define e1 (*ep1)
+#define e2 (*ep2)
+
+static void __expr_eliminate_eq(enum expr_type type, struct expr **ep1, struct expr **ep2)
+{
+ if (e1->type == type) {
+ __expr_eliminate_eq(type, &e1->left.expr, &e2);
+ __expr_eliminate_eq(type, &e1->right.expr, &e2);
+ return;
+ }
+ if (e2->type == type) {
+ __expr_eliminate_eq(type, &e1, &e2->left.expr);
+ __expr_eliminate_eq(type, &e1, &e2->right.expr);
+ return;
+ }
+ if (e1->type == E_SYMBOL && e2->type == E_SYMBOL &&
+ e1->left.sym == e2->left.sym &&
+ (e1->left.sym == &symbol_yes || e1->left.sym == &symbol_no))
+ return;
+ if (!expr_eq(e1, e2))
+ return;
+ trans_count++;
+ expr_free(e1); expr_free(e2);
+ switch (type) {
+ case E_OR:
+ e1 = expr_alloc_symbol(&symbol_no);
+ e2 = expr_alloc_symbol(&symbol_no);
+ break;
+ case E_AND:
+ e1 = expr_alloc_symbol(&symbol_yes);
+ e2 = expr_alloc_symbol(&symbol_yes);
+ break;
+ default:
+ ;
+ }
+}
+
+void expr_eliminate_eq(struct expr **ep1, struct expr **ep2)
+{
+ if (!e1 || !e2)
+ return;
+ switch (e1->type) {
+ case E_OR:
+ case E_AND:
+ __expr_eliminate_eq(e1->type, ep1, ep2);
+ default:
+ ;
+ }
+ if (e1->type != e2->type) switch (e2->type) {
+ case E_OR:
+ case E_AND:
+ __expr_eliminate_eq(e2->type, ep1, ep2);
+ default:
+ ;
+ }
+ e1 = expr_eliminate_yn(e1);
+ e2 = expr_eliminate_yn(e2);
+}
+
+#undef e1
+#undef e2
+
+int expr_eq(struct expr *e1, struct expr *e2)
+{
+ int res, old_count;
+
+ if (e1->type != e2->type)
+ return 0;
+ switch (e1->type) {
+ case E_EQUAL:
+ case E_UNEQUAL:
+ return e1->left.sym == e2->left.sym && e1->right.sym == e2->right.sym;
+ case E_SYMBOL:
+ return e1->left.sym == e2->left.sym;
+ case E_NOT:
+ return expr_eq(e1->left.expr, e2->left.expr);
+ case E_AND:
+ case E_OR:
+ e1 = expr_copy(e1);
+ e2 = expr_copy(e2);
+ old_count = trans_count;
+ expr_eliminate_eq(&e1, &e2);
+ res = (e1->type == E_SYMBOL && e2->type == E_SYMBOL &&
+ e1->left.sym == e2->left.sym);
+ expr_free(e1);
+ expr_free(e2);
+ trans_count = old_count;
+ return res;
+ case E_LIST:
+ case E_RANGE:
+ case E_NONE:
+ /* panic */;
+ }
+
+ if (DEBUG_EXPR) {
+ expr_fprint(e1, stdout);
+ printf(" = ");
+ expr_fprint(e2, stdout);
+ printf(" ?\n");
+ }
+
+ return 0;
+}
+
+struct expr *expr_eliminate_yn(struct expr *e)
+{
+ struct expr *tmp;
+
+ if (e) switch (e->type) {
+ case E_AND:
+ e->left.expr = expr_eliminate_yn(e->left.expr);
+ e->right.expr = expr_eliminate_yn(e->right.expr);
+ if (e->left.expr->type == E_SYMBOL) {
+ if (e->left.expr->left.sym == &symbol_no) {
+ expr_free(e->left.expr);
+ expr_free(e->right.expr);
+ e->type = E_SYMBOL;
+ e->left.sym = &symbol_no;
+ e->right.expr = NULL;
+ return e;
+ } else if (e->left.expr->left.sym == &symbol_yes) {
+ free(e->left.expr);
+ tmp = e->right.expr;
+ *e = *(e->right.expr);
+ free(tmp);
+ return e;
+ }
+ }
+ if (e->right.expr->type == E_SYMBOL) {
+ if (e->right.expr->left.sym == &symbol_no) {
+ expr_free(e->left.expr);
+ expr_free(e->right.expr);
+ e->type = E_SYMBOL;
+ e->left.sym = &symbol_no;
+ e->right.expr = NULL;
+ return e;
+ } else if (e->right.expr->left.sym == &symbol_yes) {
+ free(e->right.expr);
+ tmp = e->left.expr;
+ *e = *(e->left.expr);
+ free(tmp);
+ return e;
+ }
+ }
+ break;
+ case E_OR:
+ e->left.expr = expr_eliminate_yn(e->left.expr);
+ e->right.expr = expr_eliminate_yn(e->right.expr);
+ if (e->left.expr->type == E_SYMBOL) {
+ if (e->left.expr->left.sym == &symbol_no) {
+ free(e->left.expr);
+ tmp = e->right.expr;
+ *e = *(e->right.expr);
+ free(tmp);
+ return e;
+ } else if (e->left.expr->left.sym == &symbol_yes) {
+ expr_free(e->left.expr);
+ expr_free(e->right.expr);
+ e->type = E_SYMBOL;
+ e->left.sym = &symbol_yes;
+ e->right.expr = NULL;
+ return e;
+ }
+ }
+ if (e->right.expr->type == E_SYMBOL) {
+ if (e->right.expr->left.sym == &symbol_no) {
+ free(e->right.expr);
+ tmp = e->left.expr;
+ *e = *(e->left.expr);
+ free(tmp);
+ return e;
+ } else if (e->right.expr->left.sym == &symbol_yes) {
+ expr_free(e->left.expr);
+ expr_free(e->right.expr);
+ e->type = E_SYMBOL;
+ e->left.sym = &symbol_yes;
+ e->right.expr = NULL;
+ return e;
+ }
+ }
+ break;
+ default:
+ ;
+ }
+ return e;
+}
+
+/*
+ * bool FOO!=n => FOO
+ */
+struct expr *expr_trans_bool(struct expr *e)
+{
+ if (!e)
+ return NULL;
+ switch (e->type) {
+ case E_AND:
+ case E_OR:
+ case E_NOT:
+ e->left.expr = expr_trans_bool(e->left.expr);
+ e->right.expr = expr_trans_bool(e->right.expr);
+ break;
+ case E_UNEQUAL:
+ // FOO!=n -> FOO
+ if (e->left.sym->type == S_TRISTATE) {
+ if (e->right.sym == &symbol_no) {
+ e->type = E_SYMBOL;
+ e->right.sym = NULL;
+ }
+ }
+ break;
+ default:
+ ;
+ }
+ return e;
+}
+
+/*
+ * e1 || e2 -> ?
+ */
+static struct expr *expr_join_or(struct expr *e1, struct expr *e2)
+{
+ struct expr *tmp;
+ struct symbol *sym1, *sym2;
+
+ if (expr_eq(e1, e2))
+ return expr_copy(e1);
+ if (e1->type != E_EQUAL && e1->type != E_UNEQUAL && e1->type != E_SYMBOL && e1->type != E_NOT)
+ return NULL;
+ if (e2->type != E_EQUAL && e2->type != E_UNEQUAL && e2->type != E_SYMBOL && e2->type != E_NOT)
+ return NULL;
+ if (e1->type == E_NOT) {
+ tmp = e1->left.expr;
+ if (tmp->type != E_EQUAL && tmp->type != E_UNEQUAL && tmp->type != E_SYMBOL)
+ return NULL;
+ sym1 = tmp->left.sym;
+ } else
+ sym1 = e1->left.sym;
+ if (e2->type == E_NOT) {
+ if (e2->left.expr->type != E_SYMBOL)
+ return NULL;
+ sym2 = e2->left.expr->left.sym;
+ } else
+ sym2 = e2->left.sym;
+ if (sym1 != sym2)
+ return NULL;
+ if (sym1->type != S_BOOLEAN && sym1->type != S_TRISTATE)
+ return NULL;
+ if (sym1->type == S_TRISTATE) {
+ if (e1->type == E_EQUAL && e2->type == E_EQUAL &&
+ ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) ||
+ (e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes))) {
+ // (a='y') || (a='m') -> (a!='n')
+ return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_no);
+ }
+ if (e1->type == E_EQUAL && e2->type == E_EQUAL &&
+ ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) ||
+ (e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes))) {
+ // (a='y') || (a='n') -> (a!='m')
+ return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_mod);
+ }
+ if (e1->type == E_EQUAL && e2->type == E_EQUAL &&
+ ((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) ||
+ (e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod))) {
+ // (a='m') || (a='n') -> (a!='y')
+ return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_yes);
+ }
+ }
+ if (sym1->type == S_BOOLEAN && sym1 == sym2) {
+ if ((e1->type == E_NOT && e1->left.expr->type == E_SYMBOL && e2->type == E_SYMBOL) ||
+ (e2->type == E_NOT && e2->left.expr->type == E_SYMBOL && e1->type == E_SYMBOL))
+ return expr_alloc_symbol(&symbol_yes);
+ }
+
+ if (DEBUG_EXPR) {
+ printf("optimize (");
+ expr_fprint(e1, stdout);
+ printf(") || (");
+ expr_fprint(e2, stdout);
+ printf(")?\n");
+ }
+ return NULL;
+}
+
+static struct expr *expr_join_and(struct expr *e1, struct expr *e2)
+{
+ struct expr *tmp;
+ struct symbol *sym1, *sym2;
+
+ if (expr_eq(e1, e2))
+ return expr_copy(e1);
+ if (e1->type != E_EQUAL && e1->type != E_UNEQUAL && e1->type != E_SYMBOL && e1->type != E_NOT)
+ return NULL;
+ if (e2->type != E_EQUAL && e2->type != E_UNEQUAL && e2->type != E_SYMBOL && e2->type != E_NOT)
+ return NULL;
+ if (e1->type == E_NOT) {
+ tmp = e1->left.expr;
+ if (tmp->type != E_EQUAL && tmp->type != E_UNEQUAL && tmp->type != E_SYMBOL)
+ return NULL;
+ sym1 = tmp->left.sym;
+ } else
+ sym1 = e1->left.sym;
+ if (e2->type == E_NOT) {
+ if (e2->left.expr->type != E_SYMBOL)
+ return NULL;
+ sym2 = e2->left.expr->left.sym;
+ } else
+ sym2 = e2->left.sym;
+ if (sym1 != sym2)
+ return NULL;
+ if (sym1->type != S_BOOLEAN && sym1->type != S_TRISTATE)
+ return NULL;
+
+ if ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_yes) ||
+ (e2->type == E_SYMBOL && e1->type == E_EQUAL && e1->right.sym == &symbol_yes))
+ // (a) && (a='y') -> (a='y')
+ return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes);
+
+ if ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_no) ||
+ (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_no))
+ // (a) && (a!='n') -> (a)
+ return expr_alloc_symbol(sym1);
+
+ if ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_mod) ||
+ (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_mod))
+ // (a) && (a!='m') -> (a='y')
+ return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes);
+
+ if (sym1->type == S_TRISTATE) {
+ if (e1->type == E_EQUAL && e2->type == E_UNEQUAL) {
+ // (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b'
+ sym2 = e1->right.sym;
+ if ((e2->right.sym->flags & SYMBOL_CONST) && (sym2->flags & SYMBOL_CONST))
+ return sym2 != e2->right.sym ? expr_alloc_comp(E_EQUAL, sym1, sym2)
+ : expr_alloc_symbol(&symbol_no);
+ }
+ if (e1->type == E_UNEQUAL && e2->type == E_EQUAL) {
+ // (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b'
+ sym2 = e2->right.sym;
+ if ((e1->right.sym->flags & SYMBOL_CONST) && (sym2->flags & SYMBOL_CONST))
+ return sym2 != e1->right.sym ? expr_alloc_comp(E_EQUAL, sym1, sym2)
+ : expr_alloc_symbol(&symbol_no);
+ }
+ if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL &&
+ ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) ||
+ (e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes)))
+ // (a!='y') && (a!='n') -> (a='m')
+ return expr_alloc_comp(E_EQUAL, sym1, &symbol_mod);
+
+ if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL &&
+ ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) ||
+ (e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes)))
+ // (a!='y') && (a!='m') -> (a='n')
+ return expr_alloc_comp(E_EQUAL, sym1, &symbol_no);
+
+ if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL &&
+ ((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) ||
+ (e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod)))
+ // (a!='m') && (a!='n') -> (a='m')
+ return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes);
+
+ if ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_mod) ||
+ (e2->type == E_SYMBOL && e1->type == E_EQUAL && e1->right.sym == &symbol_mod) ||
+ (e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_yes) ||
+ (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_yes))
+ return NULL;
+ }
+
+ if (DEBUG_EXPR) {
+ printf("optimize (");
+ expr_fprint(e1, stdout);
+ printf(") && (");
+ expr_fprint(e2, stdout);
+ printf(")?\n");
+ }
+ return NULL;
+}
+
+static void expr_eliminate_dups1(enum expr_type type, struct expr **ep1, struct expr **ep2)
+{
+#define e1 (*ep1)
+#define e2 (*ep2)
+ struct expr *tmp;
+
+ if (e1->type == type) {
+ expr_eliminate_dups1(type, &e1->left.expr, &e2);
+ expr_eliminate_dups1(type, &e1->right.expr, &e2);
+ return;
+ }
+ if (e2->type == type) {
+ expr_eliminate_dups1(type, &e1, &e2->left.expr);
+ expr_eliminate_dups1(type, &e1, &e2->right.expr);
+ return;
+ }
+ if (e1 == e2)
+ return;
+
+ switch (e1->type) {
+ case E_OR: case E_AND:
+ expr_eliminate_dups1(e1->type, &e1, &e1);
+ default:
+ ;
+ }
+
+ switch (type) {
+ case E_OR:
+ tmp = expr_join_or(e1, e2);
+ if (tmp) {
+ expr_free(e1); expr_free(e2);
+ e1 = expr_alloc_symbol(&symbol_no);
+ e2 = tmp;
+ trans_count++;
+ }
+ break;
+ case E_AND:
+ tmp = expr_join_and(e1, e2);
+ if (tmp) {
+ expr_free(e1); expr_free(e2);
+ e1 = expr_alloc_symbol(&symbol_yes);
+ e2 = tmp;
+ trans_count++;
+ }
+ break;
+ default:
+ ;
+ }
+#undef e1
+#undef e2
+}
+
+static void expr_eliminate_dups2(enum expr_type type, struct expr **ep1, struct expr **ep2)
+{
+#define e1 (*ep1)
+#define e2 (*ep2)
+ struct expr *tmp, *tmp1, *tmp2;
+
+ if (e1->type == type) {
+ expr_eliminate_dups2(type, &e1->left.expr, &e2);
+ expr_eliminate_dups2(type, &e1->right.expr, &e2);
+ return;
+ }
+ if (e2->type == type) {
+ expr_eliminate_dups2(type, &e1, &e2->left.expr);
+ expr_eliminate_dups2(type, &e1, &e2->right.expr);
+ }
+ if (e1 == e2)
+ return;
+
+ switch (e1->type) {
+ case E_OR:
+ expr_eliminate_dups2(e1->type, &e1, &e1);
+ // (FOO || BAR) && (!FOO && !BAR) -> n
+ tmp1 = expr_transform(expr_alloc_one(E_NOT, expr_copy(e1)));
+ tmp2 = expr_copy(e2);
+ tmp = expr_extract_eq_and(&tmp1, &tmp2);
+ if (expr_is_yes(tmp1)) {
+ expr_free(e1);
+ e1 = expr_alloc_symbol(&symbol_no);
+ trans_count++;
+ }
+ expr_free(tmp2);
+ expr_free(tmp1);
+ expr_free(tmp);
+ break;
+ case E_AND:
+ expr_eliminate_dups2(e1->type, &e1, &e1);
+ // (FOO && BAR) || (!FOO || !BAR) -> y
+ tmp1 = expr_transform(expr_alloc_one(E_NOT, expr_copy(e1)));
+ tmp2 = expr_copy(e2);
+ tmp = expr_extract_eq_or(&tmp1, &tmp2);
+ if (expr_is_no(tmp1)) {
+ expr_free(e1);
+ e1 = expr_alloc_symbol(&symbol_yes);
+ trans_count++;
+ }
+ expr_free(tmp2);
+ expr_free(tmp1);
+ expr_free(tmp);
+ break;
+ default:
+ ;
+ }
+#undef e1
+#undef e2
+}
+
+struct expr *expr_eliminate_dups(struct expr *e)
+{
+ int oldcount;
+ if (!e)
+ return e;
+
+ oldcount = trans_count;
+ while (1) {
+ trans_count = 0;
+ switch (e->type) {
+ case E_OR: case E_AND:
+ expr_eliminate_dups1(e->type, &e, &e);
+ expr_eliminate_dups2(e->type, &e, &e);
+ default:
+ ;
+ }
+ if (!trans_count)
+ break;
+ e = expr_eliminate_yn(e);
+ }
+ trans_count = oldcount;
+ return e;
+}
+
+struct expr *expr_transform(struct expr *e)
+{
+ struct expr *tmp;
+
+ if (!e)
+ return NULL;
+ switch (e->type) {
+ case E_EQUAL:
+ case E_UNEQUAL:
+ case E_SYMBOL:
+ case E_LIST:
+ break;
+ default:
+ e->left.expr = expr_transform(e->left.expr);
+ e->right.expr = expr_transform(e->right.expr);
+ }
+
+ switch (e->type) {
+ case E_EQUAL:
+ if (e->left.sym->type != S_BOOLEAN)
+ break;
+ if (e->right.sym == &symbol_no) {
+ e->type = E_NOT;
+ e->left.expr = expr_alloc_symbol(e->left.sym);
+ e->right.sym = NULL;
+ break;
+ }
+ if (e->right.sym == &symbol_mod) {
+ printf("boolean symbol %s tested for 'm'? test forced to 'n'\n", e->left.sym->name);
+ e->type = E_SYMBOL;
+ e->left.sym = &symbol_no;
+ e->right.sym = NULL;
+ break;
+ }
+ if (e->right.sym == &symbol_yes) {
+ e->type = E_SYMBOL;
+ e->right.sym = NULL;
+ break;
+ }
+ break;
+ case E_UNEQUAL:
+ if (e->left.sym->type != S_BOOLEAN)
+ break;
+ if (e->right.sym == &symbol_no) {
+ e->type = E_SYMBOL;
+ e->right.sym = NULL;
+ break;
+ }
+ if (e->right.sym == &symbol_mod) {
+ printf("boolean symbol %s tested for 'm'? test forced to 'y'\n", e->left.sym->name);
+ e->type = E_SYMBOL;
+ e->left.sym = &symbol_yes;
+ e->right.sym = NULL;
+ break;
+ }
+ if (e->right.sym == &symbol_yes) {
+ e->type = E_NOT;
+ e->left.expr = expr_alloc_symbol(e->left.sym);
+ e->right.sym = NULL;
+ break;
+ }
+ break;
+ case E_NOT:
+ switch (e->left.expr->type) {
+ case E_NOT:
+ // !!a -> a
+ tmp = e->left.expr->left.expr;
+ free(e->left.expr);
+ free(e);
+ e = tmp;
+ e = expr_transform(e);
+ break;
+ case E_EQUAL:
+ case E_UNEQUAL:
+ // !a='x' -> a!='x'
+ tmp = e->left.expr;
+ free(e);
+ e = tmp;
+ e->type = e->type == E_EQUAL ? E_UNEQUAL : E_EQUAL;
+ break;
+ case E_OR:
+ // !(a || b) -> !a && !b
+ tmp = e->left.expr;
+ e->type = E_AND;
+ e->right.expr = expr_alloc_one(E_NOT, tmp->right.expr);
+ tmp->type = E_NOT;
+ tmp->right.expr = NULL;
+ e = expr_transform(e);
+ break;
+ case E_AND:
+ // !(a && b) -> !a || !b
+ tmp = e->left.expr;
+ e->type = E_OR;
+ e->right.expr = expr_alloc_one(E_NOT, tmp->right.expr);
+ tmp->type = E_NOT;
+ tmp->right.expr = NULL;
+ e = expr_transform(e);
+ break;
+ case E_SYMBOL:
+ if (e->left.expr->left.sym == &symbol_yes) {
+ // !'y' -> 'n'
+ tmp = e->left.expr;
+ free(e);
+ e = tmp;
+ e->type = E_SYMBOL;
+ e->left.sym = &symbol_no;
+ break;
+ }
+ if (e->left.expr->left.sym == &symbol_mod) {
+ // !'m' -> 'm'
+ tmp = e->left.expr;
+ free(e);
+ e = tmp;
+ e->type = E_SYMBOL;
+ e->left.sym = &symbol_mod;
+ break;
+ }
+ if (e->left.expr->left.sym == &symbol_no) {
+ // !'n' -> 'y'
+ tmp = e->left.expr;
+ free(e);
+ e = tmp;
+ e->type = E_SYMBOL;
+ e->left.sym = &symbol_yes;
+ break;
+ }
+ break;
+ default:
+ ;
+ }
+ break;
+ default:
+ ;
+ }
+ return e;
+}
+
+int expr_contains_symbol(struct expr *dep, struct symbol *sym)
+{
+ if (!dep)
+ return 0;
+
+ switch (dep->type) {
+ case E_AND:
+ case E_OR:
+ return expr_contains_symbol(dep->left.expr, sym) ||
+ expr_contains_symbol(dep->right.expr, sym);
+ case E_SYMBOL:
+ return dep->left.sym == sym;
+ case E_EQUAL:
+ case E_UNEQUAL:
+ return dep->left.sym == sym ||
+ dep->right.sym == sym;
+ case E_NOT:
+ return expr_contains_symbol(dep->left.expr, sym);
+ default:
+ ;
+ }
+ return 0;
+}
+
+bool expr_depends_symbol(struct expr *dep, struct symbol *sym)
+{
+ if (!dep)
+ return false;
+
+ switch (dep->type) {
+ case E_AND:
+ return expr_depends_symbol(dep->left.expr, sym) ||
+ expr_depends_symbol(dep->right.expr, sym);
+ case E_SYMBOL:
+ return dep->left.sym == sym;
+ case E_EQUAL:
+ if (dep->left.sym == sym) {
+ if (dep->right.sym == &symbol_yes || dep->right.sym == &symbol_mod)
+ return true;
+ }
+ break;
+ case E_UNEQUAL:
+ if (dep->left.sym == sym) {
+ if (dep->right.sym == &symbol_no)
+ return true;
+ }
+ break;
+ default:
+ ;
+ }
+ return false;
+}
+
+struct expr *expr_extract_eq_and(struct expr **ep1, struct expr **ep2)
+{
+ struct expr *tmp = NULL;
+ expr_extract_eq(E_AND, &tmp, ep1, ep2);
+ if (tmp) {
+ *ep1 = expr_eliminate_yn(*ep1);
+ *ep2 = expr_eliminate_yn(*ep2);
+ }
+ return tmp;
+}
+
+struct expr *expr_extract_eq_or(struct expr **ep1, struct expr **ep2)
+{
+ struct expr *tmp = NULL;
+ expr_extract_eq(E_OR, &tmp, ep1, ep2);
+ if (tmp) {
+ *ep1 = expr_eliminate_yn(*ep1);
+ *ep2 = expr_eliminate_yn(*ep2);
+ }
+ return tmp;
+}
+
+void expr_extract_eq(enum expr_type type, struct expr **ep, struct expr **ep1, struct expr **ep2)
+{
+#define e1 (*ep1)
+#define e2 (*ep2)
+ if (e1->type == type) {
+ expr_extract_eq(type, ep, &e1->left.expr, &e2);
+ expr_extract_eq(type, ep, &e1->right.expr, &e2);
+ return;
+ }
+ if (e2->type == type) {
+ expr_extract_eq(type, ep, ep1, &e2->left.expr);
+ expr_extract_eq(type, ep, ep1, &e2->right.expr);
+ return;
+ }
+ if (expr_eq(e1, e2)) {
+ *ep = *ep ? expr_alloc_two(type, *ep, e1) : e1;
+ expr_free(e2);
+ if (type == E_AND) {
+ e1 = expr_alloc_symbol(&symbol_yes);
+ e2 = expr_alloc_symbol(&symbol_yes);
+ } else if (type == E_OR) {
+ e1 = expr_alloc_symbol(&symbol_no);
+ e2 = expr_alloc_symbol(&symbol_no);
+ }
+ }
+#undef e1
+#undef e2
+}
+
+struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symbol *sym)
+{
+ struct expr *e1, *e2;
+
+ if (!e) {
+ e = expr_alloc_symbol(sym);
+ if (type == E_UNEQUAL)
+ e = expr_alloc_one(E_NOT, e);
+ return e;
+ }
+ switch (e->type) {
+ case E_AND:
+ e1 = expr_trans_compare(e->left.expr, E_EQUAL, sym);
+ e2 = expr_trans_compare(e->right.expr, E_EQUAL, sym);
+ if (sym == &symbol_yes)
+ e = expr_alloc_two(E_AND, e1, e2);
+ if (sym == &symbol_no)
+ e = expr_alloc_two(E_OR, e1, e2);
+ if (type == E_UNEQUAL)
+ e = expr_alloc_one(E_NOT, e);
+ return e;
+ case E_OR:
+ e1 = expr_trans_compare(e->left.expr, E_EQUAL, sym);
+ e2 = expr_trans_compare(e->right.expr, E_EQUAL, sym);
+ if (sym == &symbol_yes)
+ e = expr_alloc_two(E_OR, e1, e2);
+ if (sym == &symbol_no)
+ e = expr_alloc_two(E_AND, e1, e2);
+ if (type == E_UNEQUAL)
+ e = expr_alloc_one(E_NOT, e);
+ return e;
+ case E_NOT:
+ return expr_trans_compare(e->left.expr, type == E_EQUAL ? E_UNEQUAL : E_EQUAL, sym);
+ case E_UNEQUAL:
+ case E_EQUAL:
+ if (type == E_EQUAL) {
+ if (sym == &symbol_yes)
+ return expr_copy(e);
+ if (sym == &symbol_mod)
+ return expr_alloc_symbol(&symbol_no);
+ if (sym == &symbol_no)
+ return expr_alloc_one(E_NOT, expr_copy(e));
+ } else {
+ if (sym == &symbol_yes)
+ return expr_alloc_one(E_NOT, expr_copy(e));
+ if (sym == &symbol_mod)
+ return expr_alloc_symbol(&symbol_yes);
+ if (sym == &symbol_no)
+ return expr_copy(e);
+ }
+ break;
+ case E_SYMBOL:
+ return expr_alloc_comp(type, e->left.sym, sym);
+ case E_LIST:
+ case E_RANGE:
+ case E_NONE:
+ /* panic */;
+ }
+ return NULL;
+}
+
+tristate expr_calc_value(struct expr *e)
+{
+ tristate val1, val2;
+ const char *str1, *str2;
+
+ if (!e)
+ return yes;
+
+ switch (e->type) {
+ case E_SYMBOL:
+ sym_calc_value(e->left.sym);
+ return e->left.sym->curr.tri;
+ case E_AND:
+ val1 = expr_calc_value(e->left.expr);
+ val2 = expr_calc_value(e->right.expr);
+ return EXPR_AND(val1, val2);
+ case E_OR:
+ val1 = expr_calc_value(e->left.expr);
+ val2 = expr_calc_value(e->right.expr);
+ return EXPR_OR(val1, val2);
+ case E_NOT:
+ val1 = expr_calc_value(e->left.expr);
+ return EXPR_NOT(val1);
+ case E_EQUAL:
+ sym_calc_value(e->left.sym);
+ sym_calc_value(e->right.sym);
+ str1 = sym_get_string_value(e->left.sym);
+ str2 = sym_get_string_value(e->right.sym);
+ return !strcmp(str1, str2) ? yes : no;
+ case E_UNEQUAL:
+ sym_calc_value(e->left.sym);
+ sym_calc_value(e->right.sym);
+ str1 = sym_get_string_value(e->left.sym);
+ str2 = sym_get_string_value(e->right.sym);
+ return !strcmp(str1, str2) ? no : yes;
+ default:
+ printf("expr_calc_value: %d?\n", e->type);
+ return no;
+ }
+}
+
+int expr_compare_type(enum expr_type t1, enum expr_type t2)
+{
+#if 0
+ return 1;
+#else
+ if (t1 == t2)
+ return 0;
+ switch (t1) {
+ case E_EQUAL:
+ case E_UNEQUAL:
+ if (t2 == E_NOT)
+ return 1;
+ case E_NOT:
+ if (t2 == E_AND)
+ return 1;
+ case E_AND:
+ if (t2 == E_OR)
+ return 1;
+ case E_OR:
+ if (t2 == E_LIST)
+ return 1;
+ case E_LIST:
+ if (t2 == 0)
+ return 1;
+ default:
+ return -1;
+ }
+ printf("[%dgt%d?]", t1, t2);
+ return 0;
+#endif
+}
+
+static inline struct expr *
+expr_get_leftmost_symbol(const struct expr *e)
+{
+
+ if (e == NULL)
+ return NULL;
+
+ while (e->type != E_SYMBOL)
+ e = e->left.expr;
+
+ return expr_copy(e);
+}
+
+/*
+ * Given expression `e1' and `e2', returns the leaf of the longest
+ * sub-expression of `e1' not containing 'e2.
+ */
+struct expr *expr_simplify_unmet_dep(struct expr *e1, struct expr *e2)
+{
+ struct expr *ret;
+
+ switch (e1->type) {
+ case E_OR:
+ return expr_alloc_and(
+ expr_simplify_unmet_dep(e1->left.expr, e2),
+ expr_simplify_unmet_dep(e1->right.expr, e2));
+ case E_AND: {
+ struct expr *e;
+ e = expr_alloc_and(expr_copy(e1), expr_copy(e2));
+ e = expr_eliminate_dups(e);
+ ret = (!expr_eq(e, e1)) ? e1 : NULL;
+ expr_free(e);
+ break;
+ }
+ default:
+ ret = e1;
+ break;
+ }
+
+ return expr_get_leftmost_symbol(ret);
+}
+
+void expr_print(struct expr *e, void (*fn)(void *, struct symbol *, const char *), void *data, int prevtoken)
+{
+ if (!e) {
+ fn(data, NULL, "y");
+ return;
+ }
+
+ if (expr_compare_type(prevtoken, e->type) > 0)
+ fn(data, NULL, "(");
+ switch (e->type) {
+ case E_SYMBOL:
+ if (e->left.sym->name)
+ fn(data, e->left.sym, e->left.sym->name);
+ else
+ fn(data, NULL, "<choice>");
+ break;
+ case E_NOT:
+ fn(data, NULL, "!");
+ expr_print(e->left.expr, fn, data, E_NOT);
+ break;
+ case E_EQUAL:
+ if (e->left.sym->name)
+ fn(data, e->left.sym, e->left.sym->name);
+ else
+ fn(data, NULL, "<choice>");
+ fn(data, NULL, "=");
+ fn(data, e->right.sym, e->right.sym->name);
+ break;
+ case E_UNEQUAL:
+ if (e->left.sym->name)
+ fn(data, e->left.sym, e->left.sym->name);
+ else
+ fn(data, NULL, "<choice>");
+ fn(data, NULL, "!=");
+ fn(data, e->right.sym, e->right.sym->name);
+ break;
+ case E_OR:
+ expr_print(e->left.expr, fn, data, E_OR);
+ fn(data, NULL, " || ");
+ expr_print(e->right.expr, fn, data, E_OR);
+ break;
+ case E_AND:
+ expr_print(e->left.expr, fn, data, E_AND);
+ fn(data, NULL, " && ");
+ expr_print(e->right.expr, fn, data, E_AND);
+ break;
+ case E_LIST:
+ fn(data, e->right.sym, e->right.sym->name);
+ if (e->left.expr) {
+ fn(data, NULL, " ^ ");
+ expr_print(e->left.expr, fn, data, E_LIST);
+ }
+ break;
+ case E_RANGE:
+ fn(data, NULL, "[");
+ fn(data, e->left.sym, e->left.sym->name);
+ fn(data, NULL, " ");
+ fn(data, e->right.sym, e->right.sym->name);
+ fn(data, NULL, "]");
+ break;
+ default:
+ {
+ char buf[32];
+ sprintf(buf, "<unknown type %d>", e->type);
+ fn(data, NULL, buf);
+ break;
+ }
+ }
+ if (expr_compare_type(prevtoken, e->type) > 0)
+ fn(data, NULL, ")");
+}
+
+static void expr_print_file_helper(void *data, struct symbol *sym, const char *str)
+{
+ xfwrite(str, strlen(str), 1, data);
+}
+
+void expr_fprint(struct expr *e, FILE *out)
+{
+ expr_print(e, expr_print_file_helper, out, E_NONE);
+}
+
+static void expr_print_gstr_helper(void *data, struct symbol *sym, const char *str)
+{
+ struct gstr *gs = (struct gstr*)data;
+ const char *sym_str = NULL;
+
+ if (sym)
+ sym_str = sym_get_string_value(sym);
+
+ if (gs->max_width) {
+ unsigned extra_length = strlen(str);
+ const char *last_cr = strrchr(gs->s, '\n');
+ unsigned last_line_length;
+
+ if (sym_str)
+ extra_length += 4 + strlen(sym_str);
+
+ if (!last_cr)
+ last_cr = gs->s;
+
+ last_line_length = strlen(gs->s) - (last_cr - gs->s);
+
+ if ((last_line_length + extra_length) > gs->max_width)
+ str_append(gs, "\\\n");
+ }
+
+ str_append(gs, str);
+ if (sym && sym->type != S_UNKNOWN)
+ str_printf(gs, " [=%s]", sym_str);
+}
+
+void expr_gstr_print(struct expr *e, struct gstr *gs)
+{
+ expr_print(e, expr_print_gstr_helper, gs, E_NONE);
+}
diff --git a/scripts/kconfig/expr.h b/scripts/kconfig/expr.h
new file mode 100644
index 0000000..412ea8a
--- /dev/null
+++ b/scripts/kconfig/expr.h
@@ -0,0 +1,241 @@
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#ifndef EXPR_H
+#define EXPR_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <assert.h>
+#include <stdio.h>
+#include "list.h"
+#ifndef __cplusplus
+#include <stdbool.h>
+#endif
+
+struct file {
+ struct file *next;
+ struct file *parent;
+ const char *name;
+ int lineno;
+};
+
+typedef enum tristate {
+ no, mod, yes
+} tristate;
+
+enum expr_type {
+ E_NONE, E_OR, E_AND, E_NOT, E_EQUAL, E_UNEQUAL, E_LIST, E_SYMBOL, E_RANGE
+};
+
+union expr_data {
+ struct expr *expr;
+ struct symbol *sym;
+};
+
+struct expr {
+ enum expr_type type;
+ union expr_data left, right;
+};
+
+#define EXPR_OR(dep1, dep2) (((dep1)>(dep2))?(dep1):(dep2))
+#define EXPR_AND(dep1, dep2) (((dep1)<(dep2))?(dep1):(dep2))
+#define EXPR_NOT(dep) (2-(dep))
+
+#define expr_list_for_each_sym(l, e, s) \
+ for (e = (l); e && (s = e->right.sym); e = e->left.expr)
+
+struct expr_value {
+ struct expr *expr;
+ tristate tri;
+};
+
+struct symbol_value {
+ void *val;
+ tristate tri;
+};
+
+enum symbol_type {
+ S_UNKNOWN, S_BOOLEAN, S_TRISTATE, S_INT, S_HEX, S_STRING, S_OTHER
+};
+
+/* enum values are used as index to symbol.def[] */
+enum {
+ S_DEF_USER, /* main user value */
+ S_DEF_AUTO, /* values read from auto.conf */
+ S_DEF_DEF3, /* Reserved for UI usage */
+ S_DEF_DEF4, /* Reserved for UI usage */
+ S_DEF_COUNT
+};
+
+struct symbol {
+ struct symbol *next;
+ char *name;
+ enum symbol_type type;
+ struct symbol_value curr;
+ struct symbol_value def[S_DEF_COUNT];
+ tristate visible;
+ int flags;
+ struct property *prop;
+ struct expr_value dir_dep;
+ struct expr_value rev_dep;
+};
+
+#define for_all_symbols(i, sym) for (i = 0; i < SYMBOL_HASHSIZE; i++) for (sym = symbol_hash[i]; sym; sym = sym->next) if (sym->type != S_OTHER)
+
+#define SYMBOL_CONST 0x0001 /* symbol is const */
+#define SYMBOL_CHECK 0x0008 /* used during dependency checking */
+#define SYMBOL_CHOICE 0x0010 /* start of a choice block (null name) */
+#define SYMBOL_CHOICEVAL 0x0020 /* used as a value in a choice block */
+#define SYMBOL_VALID 0x0080 /* set when symbol.curr is calculated */
+#define SYMBOL_OPTIONAL 0x0100 /* choice is optional - values can be 'n' */
+#define SYMBOL_WRITE 0x0200 /* write symbol to file (KCONFIG_CONFIG) */
+#define SYMBOL_CHANGED 0x0400 /* ? */
+#define SYMBOL_AUTO 0x1000 /* value from environment variable */
+#define SYMBOL_CHECKED 0x2000 /* used during dependency checking */
+#define SYMBOL_WARNED 0x8000 /* warning has been issued */
+
+/* Set when symbol.def[] is used */
+#define SYMBOL_DEF 0x10000 /* First bit of SYMBOL_DEF */
+#define SYMBOL_DEF_USER 0x10000 /* symbol.def[S_DEF_USER] is valid */
+#define SYMBOL_DEF_AUTO 0x20000 /* symbol.def[S_DEF_AUTO] is valid */
+#define SYMBOL_DEF3 0x40000 /* symbol.def[S_DEF_3] is valid */
+#define SYMBOL_DEF4 0x80000 /* symbol.def[S_DEF_4] is valid */
+
+/* choice values need to be set before calculating this symbol value */
+#define SYMBOL_NEED_SET_CHOICE_VALUES 0x100000
+
+/* Set symbol to y if allnoconfig; used for symbols that hide others */
+#define SYMBOL_ALLNOCONFIG_Y 0x200000
+
+#define SYMBOL_MAXLENGTH 256
+#define SYMBOL_HASHSIZE 9973
+
+/* A property represent the config options that can be associated
+ * with a config "symbol".
+ * Sample:
+ * config FOO
+ * default y
+ * prompt "foo prompt"
+ * select BAR
+ * config BAZ
+ * int "BAZ Value"
+ * range 1..255
+ */
+enum prop_type {
+ P_UNKNOWN,
+ P_PROMPT, /* prompt "foo prompt" or "BAZ Value" */
+ P_COMMENT, /* text associated with a comment */
+ P_MENU, /* prompt associated with a menuconfig option */
+ P_DEFAULT, /* default y */
+ P_CHOICE, /* choice value */
+ P_SELECT, /* select BAR */
+ P_RANGE, /* range 7..100 (for a symbol) */
+ P_ENV, /* value from environment variable */
+ P_SYMBOL, /* where a symbol is defined */
+};
+
+struct property {
+ struct property *next; /* next property - null if last */
+ struct symbol *sym; /* the symbol for which the property is associated */
+ enum prop_type type; /* type of property */
+ const char *text; /* the prompt value - P_PROMPT, P_MENU, P_COMMENT */
+ struct expr_value visible;
+ struct expr *expr; /* the optional conditional part of the property */
+ struct menu *menu; /* the menu the property are associated with
+ * valid for: P_SELECT, P_RANGE, P_CHOICE,
+ * P_PROMPT, P_DEFAULT, P_MENU, P_COMMENT */
+ struct file *file; /* what file was this property defined */
+ int lineno; /* what lineno was this property defined */
+};
+
+#define for_all_properties(sym, st, tok) \
+ for (st = sym->prop; st; st = st->next) \
+ if (st->type == (tok))
+#define for_all_defaults(sym, st) for_all_properties(sym, st, P_DEFAULT)
+#define for_all_choices(sym, st) for_all_properties(sym, st, P_CHOICE)
+#define for_all_prompts(sym, st) \
+ for (st = sym->prop; st; st = st->next) \
+ if (st->text)
+
+struct menu {
+ struct menu *next;
+ struct menu *parent;
+ struct menu *list;
+ struct symbol *sym;
+ struct property *prompt;
+ struct expr *visibility;
+ struct expr *dep;
+ unsigned int flags;
+ char *help;
+ struct file *file;
+ int lineno;
+ void *data;
+};
+
+#define MENU_CHANGED 0x0001
+#define MENU_ROOT 0x0002
+
+struct jump_key {
+ struct list_head entries;
+ size_t offset;
+ struct menu *target;
+ int index;
+};
+
+#define JUMP_NB 9
+
+extern struct file *file_list;
+extern struct file *current_file;
+struct file *lookup_file(const char *name);
+
+extern struct symbol symbol_yes, symbol_no, symbol_mod;
+extern struct symbol *modules_sym;
+extern struct symbol *sym_defconfig_list;
+extern int cdebug;
+struct expr *expr_alloc_symbol(struct symbol *sym);
+struct expr *expr_alloc_one(enum expr_type type, struct expr *ce);
+struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2);
+struct expr *expr_alloc_comp(enum expr_type type, struct symbol *s1, struct symbol *s2);
+struct expr *expr_alloc_and(struct expr *e1, struct expr *e2);
+struct expr *expr_alloc_or(struct expr *e1, struct expr *e2);
+struct expr *expr_copy(const struct expr *org);
+void expr_free(struct expr *e);
+int expr_eq(struct expr *e1, struct expr *e2);
+void expr_eliminate_eq(struct expr **ep1, struct expr **ep2);
+tristate expr_calc_value(struct expr *e);
+struct expr *expr_eliminate_yn(struct expr *e);
+struct expr *expr_trans_bool(struct expr *e);
+struct expr *expr_eliminate_dups(struct expr *e);
+struct expr *expr_transform(struct expr *e);
+int expr_contains_symbol(struct expr *dep, struct symbol *sym);
+bool expr_depends_symbol(struct expr *dep, struct symbol *sym);
+struct expr *expr_extract_eq_and(struct expr **ep1, struct expr **ep2);
+struct expr *expr_extract_eq_or(struct expr **ep1, struct expr **ep2);
+void expr_extract_eq(enum expr_type type, struct expr **ep, struct expr **ep1, struct expr **ep2);
+struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symbol *sym);
+struct expr *expr_simplify_unmet_dep(struct expr *e1, struct expr *e2);
+
+void expr_fprint(struct expr *e, FILE *out);
+struct gstr; /* forward */
+void expr_gstr_print(struct expr *e, struct gstr *gs);
+
+static inline int expr_is_yes(struct expr *e)
+{
+ return !e || (e->type == E_SYMBOL && e->left.sym == &symbol_yes);
+}
+
+static inline int expr_is_no(struct expr *e)
+{
+ return e && (e->type == E_SYMBOL && e->left.sym == &symbol_no);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* EXPR_H */
diff --git a/scripts/kconfig/gconf.c b/scripts/kconfig/gconf.c
new file mode 100644
index 0000000..d0a35b2
--- /dev/null
+++ b/scripts/kconfig/gconf.c
@@ -0,0 +1,1542 @@
+/* Hey EMACS -*- linux-c -*- */
+/*
+ *
+ * Copyright (C) 2002-2003 Romain Lievin <roms@tilp.info>
+ * Released under the terms of the GNU GPL v2.0.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdlib.h>
+#include "lkc.h"
+#include "images.c"
+
+#include <glade/glade.h>
+#include <gtk/gtk.h>
+#include <glib.h>
+#include <gdk/gdkkeysyms.h>
+
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <time.h>
+
+//#define DEBUG
+
+enum {
+ SINGLE_VIEW, SPLIT_VIEW, FULL_VIEW
+};
+
+enum {
+ OPT_NORMAL, OPT_ALL, OPT_PROMPT
+};
+
+static gint view_mode = FULL_VIEW;
+static gboolean show_name = TRUE;
+static gboolean show_range = TRUE;
+static gboolean show_value = TRUE;
+static gboolean resizeable = FALSE;
+static int opt_mode = OPT_NORMAL;
+
+GtkWidget *main_wnd = NULL;
+GtkWidget *tree1_w = NULL; // left frame
+GtkWidget *tree2_w = NULL; // right frame
+GtkWidget *text_w = NULL;
+GtkWidget *hpaned = NULL;
+GtkWidget *vpaned = NULL;
+GtkWidget *back_btn = NULL;
+GtkWidget *save_btn = NULL;
+GtkWidget *save_menu_item = NULL;
+
+GtkTextTag *tag1, *tag2;
+GdkColor color;
+
+GtkTreeStore *tree1, *tree2, *tree;
+GtkTreeModel *model1, *model2;
+static GtkTreeIter *parents[256];
+static gint indent;
+
+static struct menu *current; // current node for SINGLE view
+static struct menu *browsed; // browsed node for SPLIT view
+
+enum {
+ COL_OPTION, COL_NAME, COL_NO, COL_MOD, COL_YES, COL_VALUE,
+ COL_MENU, COL_COLOR, COL_EDIT, COL_PIXBUF,
+ COL_PIXVIS, COL_BTNVIS, COL_BTNACT, COL_BTNINC, COL_BTNRAD,
+ COL_NUMBER
+};
+
+static void display_list(void);
+static void display_tree(struct menu *menu);
+static void display_tree_part(void);
+static void update_tree(struct menu *src, GtkTreeIter * dst);
+static void set_node(GtkTreeIter * node, struct menu *menu, gchar ** row);
+static gchar **fill_row(struct menu *menu);
+static void conf_changed(void);
+
+/* Helping/Debugging Functions */
+
+const char *dbg_sym_flags(int val)
+{
+ static char buf[256];
+
+ bzero(buf, 256);
+
+ if (val & SYMBOL_CONST)
+ strcat(buf, "const/");
+ if (val & SYMBOL_CHECK)
+ strcat(buf, "check/");
+ if (val & SYMBOL_CHOICE)
+ strcat(buf, "choice/");
+ if (val & SYMBOL_CHOICEVAL)
+ strcat(buf, "choiceval/");
+ if (val & SYMBOL_VALID)
+ strcat(buf, "valid/");
+ if (val & SYMBOL_OPTIONAL)
+ strcat(buf, "optional/");
+ if (val & SYMBOL_WRITE)
+ strcat(buf, "write/");
+ if (val & SYMBOL_CHANGED)
+ strcat(buf, "changed/");
+ if (val & SYMBOL_AUTO)
+ strcat(buf, "auto/");
+
+ buf[strlen(buf) - 1] = '\0';
+
+ return buf;
+}
+
+void replace_button_icon(GladeXML * xml, GdkDrawable * window,
+ GtkStyle * style, gchar * btn_name, gchar ** xpm)
+{
+ GdkPixmap *pixmap;
+ GdkBitmap *mask;
+ GtkToolButton *button;
+ GtkWidget *image;
+
+ pixmap = gdk_pixmap_create_from_xpm_d(window, &mask,
+ &style->bg[GTK_STATE_NORMAL],
+ xpm);
+
+ button = GTK_TOOL_BUTTON(glade_xml_get_widget(xml, btn_name));
+ image = gtk_image_new_from_pixmap(pixmap, mask);
+ gtk_widget_show(image);
+ gtk_tool_button_set_icon_widget(button, image);
+}
+
+/* Main Window Initialization */
+void init_main_window(const gchar * glade_file)
+{
+ GladeXML *xml;
+ GtkWidget *widget;
+ GtkTextBuffer *txtbuf;
+ GtkStyle *style;
+
+ xml = glade_xml_new(glade_file, "window1", NULL);
+ if (!xml)
+ g_error(_("GUI loading failed !\n"));
+ glade_xml_signal_autoconnect(xml);
+
+ main_wnd = glade_xml_get_widget(xml, "window1");
+ hpaned = glade_xml_get_widget(xml, "hpaned1");
+ vpaned = glade_xml_get_widget(xml, "vpaned1");
+ tree1_w = glade_xml_get_widget(xml, "treeview1");
+ tree2_w = glade_xml_get_widget(xml, "treeview2");
+ text_w = glade_xml_get_widget(xml, "textview3");
+
+ back_btn = glade_xml_get_widget(xml, "button1");
+ gtk_widget_set_sensitive(back_btn, FALSE);
+
+ widget = glade_xml_get_widget(xml, "show_name1");
+ gtk_check_menu_item_set_active((GtkCheckMenuItem *) widget,
+ show_name);
+
+ widget = glade_xml_get_widget(xml, "show_range1");
+ gtk_check_menu_item_set_active((GtkCheckMenuItem *) widget,
+ show_range);
+
+ widget = glade_xml_get_widget(xml, "show_data1");
+ gtk_check_menu_item_set_active((GtkCheckMenuItem *) widget,
+ show_value);
+
+ save_btn = glade_xml_get_widget(xml, "button3");
+ save_menu_item = glade_xml_get_widget(xml, "save1");
+ conf_set_changed_callback(conf_changed);
+
+ style = gtk_widget_get_style(main_wnd);
+ widget = glade_xml_get_widget(xml, "toolbar1");
+
+#if 0 /* Use stock Gtk icons instead */
+ replace_button_icon(xml, main_wnd->window, style,
+ "button1", (gchar **) xpm_back);
+ replace_button_icon(xml, main_wnd->window, style,
+ "button2", (gchar **) xpm_load);
+ replace_button_icon(xml, main_wnd->window, style,
+ "button3", (gchar **) xpm_save);
+#endif
+ replace_button_icon(xml, main_wnd->window, style,
+ "button4", (gchar **) xpm_single_view);
+ replace_button_icon(xml, main_wnd->window, style,
+ "button5", (gchar **) xpm_split_view);
+ replace_button_icon(xml, main_wnd->window, style,
+ "button6", (gchar **) xpm_tree_view);
+
+#if 0
+ switch (view_mode) {
+ case SINGLE_VIEW:
+ widget = glade_xml_get_widget(xml, "button4");
+ g_signal_emit_by_name(widget, "clicked");
+ break;
+ case SPLIT_VIEW:
+ widget = glade_xml_get_widget(xml, "button5");
+ g_signal_emit_by_name(widget, "clicked");
+ break;
+ case FULL_VIEW:
+ widget = glade_xml_get_widget(xml, "button6");
+ g_signal_emit_by_name(widget, "clicked");
+ break;
+ }
+#endif
+ txtbuf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_w));
+ tag1 = gtk_text_buffer_create_tag(txtbuf, "mytag1",
+ "foreground", "red",
+ "weight", PANGO_WEIGHT_BOLD,
+ NULL);
+ tag2 = gtk_text_buffer_create_tag(txtbuf, "mytag2",
+ /*"style", PANGO_STYLE_OBLIQUE, */
+ NULL);
+
+ gtk_window_set_title(GTK_WINDOW(main_wnd), rootmenu.prompt->text);
+
+ gtk_widget_show(main_wnd);
+}
+
+void init_tree_model(void)
+{
+ gint i;
+
+ tree = tree2 = gtk_tree_store_new(COL_NUMBER,
+ G_TYPE_STRING, G_TYPE_STRING,
+ G_TYPE_STRING, G_TYPE_STRING,
+ G_TYPE_STRING, G_TYPE_STRING,
+ G_TYPE_POINTER, GDK_TYPE_COLOR,
+ G_TYPE_BOOLEAN, GDK_TYPE_PIXBUF,
+ G_TYPE_BOOLEAN, G_TYPE_BOOLEAN,
+ G_TYPE_BOOLEAN, G_TYPE_BOOLEAN,
+ G_TYPE_BOOLEAN);
+ model2 = GTK_TREE_MODEL(tree2);
+
+ for (parents[0] = NULL, i = 1; i < 256; i++)
+ parents[i] = (GtkTreeIter *) g_malloc(sizeof(GtkTreeIter));
+
+ tree1 = gtk_tree_store_new(COL_NUMBER,
+ G_TYPE_STRING, G_TYPE_STRING,
+ G_TYPE_STRING, G_TYPE_STRING,
+ G_TYPE_STRING, G_TYPE_STRING,
+ G_TYPE_POINTER, GDK_TYPE_COLOR,
+ G_TYPE_BOOLEAN, GDK_TYPE_PIXBUF,
+ G_TYPE_BOOLEAN, G_TYPE_BOOLEAN,
+ G_TYPE_BOOLEAN, G_TYPE_BOOLEAN,
+ G_TYPE_BOOLEAN);
+ model1 = GTK_TREE_MODEL(tree1);
+}
+
+void init_left_tree(void)
+{
+ GtkTreeView *view = GTK_TREE_VIEW(tree1_w);
+ GtkCellRenderer *renderer;
+ GtkTreeSelection *sel;
+ GtkTreeViewColumn *column;
+
+ gtk_tree_view_set_model(view, model1);
+ gtk_tree_view_set_headers_visible(view, TRUE);
+ gtk_tree_view_set_rules_hint(view, TRUE);
+
+ column = gtk_tree_view_column_new();
+ gtk_tree_view_append_column(view, column);
+ gtk_tree_view_column_set_title(column, _("Options"));
+
+ renderer = gtk_cell_renderer_toggle_new();
+ gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column),
+ renderer, FALSE);
+ gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column),
+ renderer,
+ "active", COL_BTNACT,
+ "inconsistent", COL_BTNINC,
+ "visible", COL_BTNVIS,
+ "radio", COL_BTNRAD, NULL);
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column),
+ renderer, FALSE);
+ gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column),
+ renderer,
+ "text", COL_OPTION,
+ "foreground-gdk",
+ COL_COLOR, NULL);
+
+ sel = gtk_tree_view_get_selection(view);
+ gtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE);
+ gtk_widget_realize(tree1_w);
+}
+
+static void renderer_edited(GtkCellRendererText * cell,
+ const gchar * path_string,
+ const gchar * new_text, gpointer user_data);
+
+void init_right_tree(void)
+{
+ GtkTreeView *view = GTK_TREE_VIEW(tree2_w);
+ GtkCellRenderer *renderer;
+ GtkTreeSelection *sel;
+ GtkTreeViewColumn *column;
+ gint i;
+
+ gtk_tree_view_set_model(view, model2);
+ gtk_tree_view_set_headers_visible(view, TRUE);
+ gtk_tree_view_set_rules_hint(view, TRUE);
+
+ column = gtk_tree_view_column_new();
+ gtk_tree_view_append_column(view, column);
+ gtk_tree_view_column_set_title(column, _("Options"));
+
+ renderer = gtk_cell_renderer_pixbuf_new();
+ gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column),
+ renderer, FALSE);
+ gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column),
+ renderer,
+ "pixbuf", COL_PIXBUF,
+ "visible", COL_PIXVIS, NULL);
+ renderer = gtk_cell_renderer_toggle_new();
+ gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column),
+ renderer, FALSE);
+ gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column),
+ renderer,
+ "active", COL_BTNACT,
+ "inconsistent", COL_BTNINC,
+ "visible", COL_BTNVIS,
+ "radio", COL_BTNRAD, NULL);
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column),
+ renderer, FALSE);
+ gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column),
+ renderer,
+ "text", COL_OPTION,
+ "foreground-gdk",
+ COL_COLOR, NULL);
+
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_insert_column_with_attributes(view, -1,
+ _("Name"), renderer,
+ "text", COL_NAME,
+ "foreground-gdk",
+ COL_COLOR, NULL);
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_insert_column_with_attributes(view, -1,
+ "N", renderer,
+ "text", COL_NO,
+ "foreground-gdk",
+ COL_COLOR, NULL);
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_insert_column_with_attributes(view, -1,
+ "M", renderer,
+ "text", COL_MOD,
+ "foreground-gdk",
+ COL_COLOR, NULL);
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_insert_column_with_attributes(view, -1,
+ "Y", renderer,
+ "text", COL_YES,
+ "foreground-gdk",
+ COL_COLOR, NULL);
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_insert_column_with_attributes(view, -1,
+ _("Value"), renderer,
+ "text", COL_VALUE,
+ "editable",
+ COL_EDIT,
+ "foreground-gdk",
+ COL_COLOR, NULL);
+ g_signal_connect(G_OBJECT(renderer), "edited",
+ G_CALLBACK(renderer_edited), NULL);
+
+ column = gtk_tree_view_get_column(view, COL_NAME);
+ gtk_tree_view_column_set_visible(column, show_name);
+ column = gtk_tree_view_get_column(view, COL_NO);
+ gtk_tree_view_column_set_visible(column, show_range);
+ column = gtk_tree_view_get_column(view, COL_MOD);
+ gtk_tree_view_column_set_visible(column, show_range);
+ column = gtk_tree_view_get_column(view, COL_YES);
+ gtk_tree_view_column_set_visible(column, show_range);
+ column = gtk_tree_view_get_column(view, COL_VALUE);
+ gtk_tree_view_column_set_visible(column, show_value);
+
+ if (resizeable) {
+ for (i = 0; i < COL_VALUE; i++) {
+ column = gtk_tree_view_get_column(view, i);
+ gtk_tree_view_column_set_resizable(column, TRUE);
+ }
+ }
+
+ sel = gtk_tree_view_get_selection(view);
+ gtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE);
+}
+
+
+/* Utility Functions */
+
+
+static void text_insert_help(struct menu *menu)
+{
+ GtkTextBuffer *buffer;
+ GtkTextIter start, end;
+ const char *prompt = _(menu_get_prompt(menu));
+ struct gstr help = str_new();
+
+ menu_get_ext_help(menu, &help);
+
+ buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_w));
+ gtk_text_buffer_get_bounds(buffer, &start, &end);
+ gtk_text_buffer_delete(buffer, &start, &end);
+ gtk_text_view_set_left_margin(GTK_TEXT_VIEW(text_w), 15);
+
+ gtk_text_buffer_get_end_iter(buffer, &end);
+ gtk_text_buffer_insert_with_tags(buffer, &end, prompt, -1, tag1,
+ NULL);
+ gtk_text_buffer_insert_at_cursor(buffer, "\n\n", 2);
+ gtk_text_buffer_get_end_iter(buffer, &end);
+ gtk_text_buffer_insert_with_tags(buffer, &end, str_get(&help), -1, tag2,
+ NULL);
+ str_free(&help);
+}
+
+
+static void text_insert_msg(const char *title, const char *message)
+{
+ GtkTextBuffer *buffer;
+ GtkTextIter start, end;
+ const char *msg = message;
+
+ buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_w));
+ gtk_text_buffer_get_bounds(buffer, &start, &end);
+ gtk_text_buffer_delete(buffer, &start, &end);
+ gtk_text_view_set_left_margin(GTK_TEXT_VIEW(text_w), 15);
+
+ gtk_text_buffer_get_end_iter(buffer, &end);
+ gtk_text_buffer_insert_with_tags(buffer, &end, title, -1, tag1,
+ NULL);
+ gtk_text_buffer_insert_at_cursor(buffer, "\n\n", 2);
+ gtk_text_buffer_get_end_iter(buffer, &end);
+ gtk_text_buffer_insert_with_tags(buffer, &end, msg, -1, tag2,
+ NULL);
+}
+
+
+/* Main Windows Callbacks */
+
+void on_save_activate(GtkMenuItem * menuitem, gpointer user_data);
+gboolean on_window1_delete_event(GtkWidget * widget, GdkEvent * event,
+ gpointer user_data)
+{
+ GtkWidget *dialog, *label;
+ gint result;
+
+ if (!conf_get_changed())
+ return FALSE;
+
+ dialog = gtk_dialog_new_with_buttons(_("Warning !"),
+ GTK_WINDOW(main_wnd),
+ (GtkDialogFlags)
+ (GTK_DIALOG_MODAL |
+ GTK_DIALOG_DESTROY_WITH_PARENT),
+ GTK_STOCK_OK,
+ GTK_RESPONSE_YES,
+ GTK_STOCK_NO,
+ GTK_RESPONSE_NO,
+ GTK_STOCK_CANCEL,
+ GTK_RESPONSE_CANCEL, NULL);
+ gtk_dialog_set_default_response(GTK_DIALOG(dialog),
+ GTK_RESPONSE_CANCEL);
+
+ label = gtk_label_new(_("\nSave configuration ?\n"));
+ gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), label);
+ gtk_widget_show(label);
+
+ result = gtk_dialog_run(GTK_DIALOG(dialog));
+ switch (result) {
+ case GTK_RESPONSE_YES:
+ on_save_activate(NULL, NULL);
+ return FALSE;
+ case GTK_RESPONSE_NO:
+ return FALSE;
+ case GTK_RESPONSE_CANCEL:
+ case GTK_RESPONSE_DELETE_EVENT:
+ default:
+ gtk_widget_destroy(dialog);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
+void on_window1_destroy(GtkObject * object, gpointer user_data)
+{
+ gtk_main_quit();
+}
+
+
+void
+on_window1_size_request(GtkWidget * widget,
+ GtkRequisition * requisition, gpointer user_data)
+{
+ static gint old_h;
+ gint w, h;
+
+ if (widget->window == NULL)
+ gtk_window_get_default_size(GTK_WINDOW(main_wnd), &w, &h);
+ else
+ gdk_window_get_size(widget->window, &w, &h);
+
+ if (h == old_h)
+ return;
+ old_h = h;
+
+ gtk_paned_set_position(GTK_PANED(vpaned), 2 * h / 3);
+}
+
+
+/* Menu & Toolbar Callbacks */
+
+
+static void
+load_filename(GtkFileSelection * file_selector, gpointer user_data)
+{
+ const gchar *fn;
+
+ fn = gtk_file_selection_get_filename(GTK_FILE_SELECTION
+ (user_data));
+
+ if (conf_read(fn))
+ text_insert_msg(_("Error"), _("Unable to load configuration !"));
+ else
+ display_tree(&rootmenu);
+}
+
+void on_load1_activate(GtkMenuItem * menuitem, gpointer user_data)
+{
+ GtkWidget *fs;
+
+ fs = gtk_file_selection_new(_("Load file..."));
+ g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(fs)->ok_button),
+ "clicked",
+ G_CALLBACK(load_filename), (gpointer) fs);
+ g_signal_connect_swapped(GTK_OBJECT
+ (GTK_FILE_SELECTION(fs)->ok_button),
+ "clicked", G_CALLBACK(gtk_widget_destroy),
+ (gpointer) fs);
+ g_signal_connect_swapped(GTK_OBJECT
+ (GTK_FILE_SELECTION(fs)->cancel_button),
+ "clicked", G_CALLBACK(gtk_widget_destroy),
+ (gpointer) fs);
+ gtk_widget_show(fs);
+}
+
+
+void on_save_activate(GtkMenuItem * menuitem, gpointer user_data)
+{
+ if (conf_write(NULL))
+ text_insert_msg(_("Error"), _("Unable to save configuration !"));
+}
+
+
+static void
+store_filename(GtkFileSelection * file_selector, gpointer user_data)
+{
+ const gchar *fn;
+
+ fn = gtk_file_selection_get_filename(GTK_FILE_SELECTION
+ (user_data));
+
+ if (conf_write(fn))
+ text_insert_msg(_("Error"), _("Unable to save configuration !"));
+
+ gtk_widget_destroy(GTK_WIDGET(user_data));
+}
+
+void on_save_as1_activate(GtkMenuItem * menuitem, gpointer user_data)
+{
+ GtkWidget *fs;
+
+ fs = gtk_file_selection_new(_("Save file as..."));
+ g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(fs)->ok_button),
+ "clicked",
+ G_CALLBACK(store_filename), (gpointer) fs);
+ g_signal_connect_swapped(GTK_OBJECT
+ (GTK_FILE_SELECTION(fs)->ok_button),
+ "clicked", G_CALLBACK(gtk_widget_destroy),
+ (gpointer) fs);
+ g_signal_connect_swapped(GTK_OBJECT
+ (GTK_FILE_SELECTION(fs)->cancel_button),
+ "clicked", G_CALLBACK(gtk_widget_destroy),
+ (gpointer) fs);
+ gtk_widget_show(fs);
+}
+
+
+void on_quit1_activate(GtkMenuItem * menuitem, gpointer user_data)
+{
+ if (!on_window1_delete_event(NULL, NULL, NULL))
+ gtk_widget_destroy(GTK_WIDGET(main_wnd));
+}
+
+
+void on_show_name1_activate(GtkMenuItem * menuitem, gpointer user_data)
+{
+ GtkTreeViewColumn *col;
+
+ show_name = GTK_CHECK_MENU_ITEM(menuitem)->active;
+ col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_NAME);
+ if (col)
+ gtk_tree_view_column_set_visible(col, show_name);
+}
+
+
+void on_show_range1_activate(GtkMenuItem * menuitem, gpointer user_data)
+{
+ GtkTreeViewColumn *col;
+
+ show_range = GTK_CHECK_MENU_ITEM(menuitem)->active;
+ col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_NO);
+ if (col)
+ gtk_tree_view_column_set_visible(col, show_range);
+ col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_MOD);
+ if (col)
+ gtk_tree_view_column_set_visible(col, show_range);
+ col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_YES);
+ if (col)
+ gtk_tree_view_column_set_visible(col, show_range);
+
+}
+
+
+void on_show_data1_activate(GtkMenuItem * menuitem, gpointer user_data)
+{
+ GtkTreeViewColumn *col;
+
+ show_value = GTK_CHECK_MENU_ITEM(menuitem)->active;
+ col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_VALUE);
+ if (col)
+ gtk_tree_view_column_set_visible(col, show_value);
+}
+
+
+void
+on_set_option_mode1_activate(GtkMenuItem *menuitem, gpointer user_data)
+{
+ opt_mode = OPT_NORMAL;
+ gtk_tree_store_clear(tree2);
+ display_tree(&rootmenu); /* instead of update_tree to speed-up */
+}
+
+
+void
+on_set_option_mode2_activate(GtkMenuItem *menuitem, gpointer user_data)
+{
+ opt_mode = OPT_ALL;
+ gtk_tree_store_clear(tree2);
+ display_tree(&rootmenu); /* instead of update_tree to speed-up */
+}
+
+
+void
+on_set_option_mode3_activate(GtkMenuItem *menuitem, gpointer user_data)
+{
+ opt_mode = OPT_PROMPT;
+ gtk_tree_store_clear(tree2);
+ display_tree(&rootmenu); /* instead of update_tree to speed-up */
+}
+
+
+void on_introduction1_activate(GtkMenuItem * menuitem, gpointer user_data)
+{
+ GtkWidget *dialog;
+ const gchar *intro_text = _(
+ "Welcome to gkc, the GTK+ graphical configuration tool\n"
+ "For each option, a blank box indicates the feature is disabled, a\n"
+ "check indicates it is enabled, and a dot indicates that it is to\n"
+ "be compiled as a module. Clicking on the box will cycle through the three states.\n"
+ "\n"
+ "If you do not see an option (e.g., a device driver) that you\n"
+ "believe should be present, try turning on Show All Options\n"
+ "under the Options menu.\n"
+ "Although there is no cross reference yet to help you figure out\n"
+ "what other options must be enabled to support the option you\n"
+ "are interested in, you can still view the help of a grayed-out\n"
+ "option.\n"
+ "\n"
+ "Toggling Show Debug Info under the Options menu will show \n"
+ "the dependencies, which you can then match by examining other options.");
+
+ dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd),
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_INFO,
+ GTK_BUTTONS_CLOSE, "%s", intro_text);
+ g_signal_connect_swapped(GTK_OBJECT(dialog), "response",
+ G_CALLBACK(gtk_widget_destroy),
+ GTK_OBJECT(dialog));
+ gtk_widget_show_all(dialog);
+}
+
+
+void on_about1_activate(GtkMenuItem * menuitem, gpointer user_data)
+{
+ GtkWidget *dialog;
+ const gchar *about_text =
+ _("gkc is copyright (c) 2002 Romain Lievin <roms@lpg.ticalc.org>.\n"
+ "Based on the source code from Roman Zippel.\n");
+
+ dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd),
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_INFO,
+ GTK_BUTTONS_CLOSE, "%s", about_text);
+ g_signal_connect_swapped(GTK_OBJECT(dialog), "response",
+ G_CALLBACK(gtk_widget_destroy),
+ GTK_OBJECT(dialog));
+ gtk_widget_show_all(dialog);
+}
+
+
+void on_license1_activate(GtkMenuItem * menuitem, gpointer user_data)
+{
+ GtkWidget *dialog;
+ const gchar *license_text =
+ _("gkc is released under the terms of the GNU GPL v2.\n"
+ "For more information, please see the source code or\n"
+ "visit http://www.fsf.org/licenses/licenses.html\n");
+
+ dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd),
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_INFO,
+ GTK_BUTTONS_CLOSE, "%s", license_text);
+ g_signal_connect_swapped(GTK_OBJECT(dialog), "response",
+ G_CALLBACK(gtk_widget_destroy),
+ GTK_OBJECT(dialog));
+ gtk_widget_show_all(dialog);
+}
+
+
+void on_back_clicked(GtkButton * button, gpointer user_data)
+{
+ enum prop_type ptype;
+
+ current = current->parent;
+ ptype = current->prompt ? current->prompt->type : P_UNKNOWN;
+ if (ptype != P_MENU)
+ current = current->parent;
+ display_tree_part();
+
+ if (current == &rootmenu)
+ gtk_widget_set_sensitive(back_btn, FALSE);
+}
+
+
+void on_load_clicked(GtkButton * button, gpointer user_data)
+{
+ on_load1_activate(NULL, user_data);
+}
+
+
+void on_single_clicked(GtkButton * button, gpointer user_data)
+{
+ view_mode = SINGLE_VIEW;
+ gtk_widget_hide(tree1_w);
+ current = &rootmenu;
+ display_tree_part();
+}
+
+
+void on_split_clicked(GtkButton * button, gpointer user_data)
+{
+ gint w, h;
+ view_mode = SPLIT_VIEW;
+ gtk_widget_show(tree1_w);
+ gtk_window_get_default_size(GTK_WINDOW(main_wnd), &w, &h);
+ gtk_paned_set_position(GTK_PANED(hpaned), w / 2);
+ if (tree2)
+ gtk_tree_store_clear(tree2);
+ display_list();
+
+ /* Disable back btn, like in full mode. */
+ gtk_widget_set_sensitive(back_btn, FALSE);
+}
+
+
+void on_full_clicked(GtkButton * button, gpointer user_data)
+{
+ view_mode = FULL_VIEW;
+ gtk_widget_hide(tree1_w);
+ if (tree2)
+ gtk_tree_store_clear(tree2);
+ display_tree(&rootmenu);
+ gtk_widget_set_sensitive(back_btn, FALSE);
+}
+
+
+void on_collapse_clicked(GtkButton * button, gpointer user_data)
+{
+ gtk_tree_view_collapse_all(GTK_TREE_VIEW(tree2_w));
+}
+
+
+void on_expand_clicked(GtkButton * button, gpointer user_data)
+{
+ gtk_tree_view_expand_all(GTK_TREE_VIEW(tree2_w));
+}
+
+
+/* CTree Callbacks */
+
+/* Change hex/int/string value in the cell */
+static void renderer_edited(GtkCellRendererText * cell,
+ const gchar * path_string,
+ const gchar * new_text, gpointer user_data)
+{
+ GtkTreePath *path = gtk_tree_path_new_from_string(path_string);
+ GtkTreeIter iter;
+ const char *old_def, *new_def;
+ struct menu *menu;
+ struct symbol *sym;
+
+ if (!gtk_tree_model_get_iter(model2, &iter, path))
+ return;
+
+ gtk_tree_model_get(model2, &iter, COL_MENU, &menu, -1);
+ sym = menu->sym;
+
+ gtk_tree_model_get(model2, &iter, COL_VALUE, &old_def, -1);
+ new_def = new_text;
+
+ sym_set_string_value(sym, new_def);
+
+ update_tree(&rootmenu, NULL);
+
+ gtk_tree_path_free(path);
+}
+
+/* Change the value of a symbol and update the tree */
+static void change_sym_value(struct menu *menu, gint col)
+{
+ struct symbol *sym = menu->sym;
+ tristate newval;
+
+ if (!sym)
+ return;
+
+ if (col == COL_NO)
+ newval = no;
+ else if (col == COL_MOD)
+ newval = mod;
+ else if (col == COL_YES)
+ newval = yes;
+ else
+ return;
+
+ switch (sym_get_type(sym)) {
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ if (!sym_tristate_within_range(sym, newval))
+ newval = yes;
+ sym_set_tristate_value(sym, newval);
+ if (view_mode == FULL_VIEW)
+ update_tree(&rootmenu, NULL);
+ else if (view_mode == SPLIT_VIEW) {
+ update_tree(browsed, NULL);
+ display_list();
+ }
+ else if (view_mode == SINGLE_VIEW)
+ display_tree_part(); //fixme: keep exp/coll
+ break;
+ case S_INT:
+ case S_HEX:
+ case S_STRING:
+ default:
+ break;
+ }
+}
+
+static void toggle_sym_value(struct menu *menu)
+{
+ if (!menu->sym)
+ return;
+
+ sym_toggle_tristate_value(menu->sym);
+ if (view_mode == FULL_VIEW)
+ update_tree(&rootmenu, NULL);
+ else if (view_mode == SPLIT_VIEW) {
+ update_tree(browsed, NULL);
+ display_list();
+ }
+ else if (view_mode == SINGLE_VIEW)
+ display_tree_part(); //fixme: keep exp/coll
+}
+
+static gint column2index(GtkTreeViewColumn * column)
+{
+ gint i;
+
+ for (i = 0; i < COL_NUMBER; i++) {
+ GtkTreeViewColumn *col;
+
+ col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), i);
+ if (col == column)
+ return i;
+ }
+
+ return -1;
+}
+
+
+/* User click: update choice (full) or goes down (single) */
+gboolean
+on_treeview2_button_press_event(GtkWidget * widget,
+ GdkEventButton * event, gpointer user_data)
+{
+ GtkTreeView *view = GTK_TREE_VIEW(widget);
+ GtkTreePath *path;
+ GtkTreeViewColumn *column;
+ GtkTreeIter iter;
+ struct menu *menu;
+ gint col;
+
+#if GTK_CHECK_VERSION(2,1,4) // bug in ctree with earlier version of GTK
+ gint tx = (gint) event->x;
+ gint ty = (gint) event->y;
+ gint cx, cy;
+
+ gtk_tree_view_get_path_at_pos(view, tx, ty, &path, &column, &cx,
+ &cy);
+#else
+ gtk_tree_view_get_cursor(view, &path, &column);
+#endif
+ if (path == NULL)
+ return FALSE;
+
+ if (!gtk_tree_model_get_iter(model2, &iter, path))
+ return FALSE;
+ gtk_tree_model_get(model2, &iter, COL_MENU, &menu, -1);
+
+ col = column2index(column);
+ if (event->type == GDK_2BUTTON_PRESS) {
+ enum prop_type ptype;
+ ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN;
+
+ if (ptype == P_MENU && view_mode != FULL_VIEW && col == COL_OPTION) {
+ // goes down into menu
+ current = menu;
+ display_tree_part();
+ gtk_widget_set_sensitive(back_btn, TRUE);
+ } else if ((col == COL_OPTION)) {
+ toggle_sym_value(menu);
+ gtk_tree_view_expand_row(view, path, TRUE);
+ }
+ } else {
+ if (col == COL_VALUE) {
+ toggle_sym_value(menu);
+ gtk_tree_view_expand_row(view, path, TRUE);
+ } else if (col == COL_NO || col == COL_MOD
+ || col == COL_YES) {
+ change_sym_value(menu, col);
+ gtk_tree_view_expand_row(view, path, TRUE);
+ }
+ }
+
+ return FALSE;
+}
+
+/* Key pressed: update choice */
+gboolean
+on_treeview2_key_press_event(GtkWidget * widget,
+ GdkEventKey * event, gpointer user_data)
+{
+ GtkTreeView *view = GTK_TREE_VIEW(widget);
+ GtkTreePath *path;
+ GtkTreeViewColumn *column;
+ GtkTreeIter iter;
+ struct menu *menu;
+ gint col;
+
+ gtk_tree_view_get_cursor(view, &path, &column);
+ if (path == NULL)
+ return FALSE;
+
+ if (event->keyval == GDK_space) {
+ if (gtk_tree_view_row_expanded(view, path))
+ gtk_tree_view_collapse_row(view, path);
+ else
+ gtk_tree_view_expand_row(view, path, FALSE);
+ return TRUE;
+ }
+ if (event->keyval == GDK_KP_Enter) {
+ }
+ if (widget == tree1_w)
+ return FALSE;
+
+ gtk_tree_model_get_iter(model2, &iter, path);
+ gtk_tree_model_get(model2, &iter, COL_MENU, &menu, -1);
+
+ if (!strcasecmp(event->string, "n"))
+ col = COL_NO;
+ else if (!strcasecmp(event->string, "m"))
+ col = COL_MOD;
+ else if (!strcasecmp(event->string, "y"))
+ col = COL_YES;
+ else
+ col = -1;
+ change_sym_value(menu, col);
+
+ return FALSE;
+}
+
+
+/* Row selection changed: update help */
+void
+on_treeview2_cursor_changed(GtkTreeView * treeview, gpointer user_data)
+{
+ GtkTreeSelection *selection;
+ GtkTreeIter iter;
+ struct menu *menu;
+
+ selection = gtk_tree_view_get_selection(treeview);
+ if (gtk_tree_selection_get_selected(selection, &model2, &iter)) {
+ gtk_tree_model_get(model2, &iter, COL_MENU, &menu, -1);
+ text_insert_help(menu);
+ }
+}
+
+
+/* User click: display sub-tree in the right frame. */
+gboolean
+on_treeview1_button_press_event(GtkWidget * widget,
+ GdkEventButton * event, gpointer user_data)
+{
+ GtkTreeView *view = GTK_TREE_VIEW(widget);
+ GtkTreePath *path;
+ GtkTreeViewColumn *column;
+ GtkTreeIter iter;
+ struct menu *menu;
+
+ gint tx = (gint) event->x;
+ gint ty = (gint) event->y;
+ gint cx, cy;
+
+ gtk_tree_view_get_path_at_pos(view, tx, ty, &path, &column, &cx,
+ &cy);
+ if (path == NULL)
+ return FALSE;
+
+ gtk_tree_model_get_iter(model1, &iter, path);
+ gtk_tree_model_get(model1, &iter, COL_MENU, &menu, -1);
+
+ if (event->type == GDK_2BUTTON_PRESS) {
+ toggle_sym_value(menu);
+ current = menu;
+ display_tree_part();
+ } else {
+ browsed = menu;
+ display_tree_part();
+ }
+
+ gtk_widget_realize(tree2_w);
+ gtk_tree_view_set_cursor(view, path, NULL, FALSE);
+ gtk_widget_grab_focus(tree2_w);
+
+ return FALSE;
+}
+
+
+/* Fill a row of strings */
+static gchar **fill_row(struct menu *menu)
+{
+ static gchar *row[COL_NUMBER];
+ struct symbol *sym = menu->sym;
+ const char *def;
+ int stype;
+ tristate val;
+ enum prop_type ptype;
+ int i;
+
+ for (i = COL_OPTION; i <= COL_COLOR; i++)
+ g_free(row[i]);
+ bzero(row, sizeof(row));
+
+ row[COL_OPTION] =
+ g_strdup_printf("%s %s", _(menu_get_prompt(menu)),
+ sym && !sym_has_value(sym) ? "(NEW)" : "");
+
+ if (opt_mode == OPT_ALL && !menu_is_visible(menu))
+ row[COL_COLOR] = g_strdup("DarkGray");
+ else if (opt_mode == OPT_PROMPT &&
+ menu_has_prompt(menu) && !menu_is_visible(menu))
+ row[COL_COLOR] = g_strdup("DarkGray");
+ else
+ row[COL_COLOR] = g_strdup("Black");
+
+ ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN;
+ switch (ptype) {
+ case P_MENU:
+ row[COL_PIXBUF] = (gchar *) xpm_menu;
+ if (view_mode == SINGLE_VIEW)
+ row[COL_PIXVIS] = GINT_TO_POINTER(TRUE);
+ row[COL_BTNVIS] = GINT_TO_POINTER(FALSE);
+ break;
+ case P_COMMENT:
+ row[COL_PIXBUF] = (gchar *) xpm_void;
+ row[COL_PIXVIS] = GINT_TO_POINTER(FALSE);
+ row[COL_BTNVIS] = GINT_TO_POINTER(FALSE);
+ break;
+ default:
+ row[COL_PIXBUF] = (gchar *) xpm_void;
+ row[COL_PIXVIS] = GINT_TO_POINTER(FALSE);
+ row[COL_BTNVIS] = GINT_TO_POINTER(TRUE);
+ break;
+ }
+
+ if (!sym)
+ return row;
+ row[COL_NAME] = g_strdup(sym->name);
+
+ sym_calc_value(sym);
+ sym->flags &= ~SYMBOL_CHANGED;
+
+ if (sym_is_choice(sym)) { // parse childs for getting final value
+ struct menu *child;
+ struct symbol *def_sym = sym_get_choice_value(sym);
+ struct menu *def_menu = NULL;
+
+ row[COL_BTNVIS] = GINT_TO_POINTER(FALSE);
+
+ for (child = menu->list; child; child = child->next) {
+ if (menu_is_visible(child)
+ && child->sym == def_sym)
+ def_menu = child;
+ }
+
+ if (def_menu)
+ row[COL_VALUE] =
+ g_strdup(_(menu_get_prompt(def_menu)));
+ }
+ if (sym->flags & SYMBOL_CHOICEVAL)
+ row[COL_BTNRAD] = GINT_TO_POINTER(TRUE);
+
+ stype = sym_get_type(sym);
+ switch (stype) {
+ case S_BOOLEAN:
+ if (GPOINTER_TO_INT(row[COL_PIXVIS]) == FALSE)
+ row[COL_BTNVIS] = GINT_TO_POINTER(TRUE);
+ if (sym_is_choice(sym))
+ break;
+ /* fall through */
+ case S_TRISTATE:
+ val = sym_get_tristate_value(sym);
+ switch (val) {
+ case no:
+ row[COL_NO] = g_strdup("N");
+ row[COL_VALUE] = g_strdup("N");
+ row[COL_BTNACT] = GINT_TO_POINTER(FALSE);
+ row[COL_BTNINC] = GINT_TO_POINTER(FALSE);
+ break;
+ case mod:
+ row[COL_MOD] = g_strdup("M");
+ row[COL_VALUE] = g_strdup("M");
+ row[COL_BTNINC] = GINT_TO_POINTER(TRUE);
+ break;
+ case yes:
+ row[COL_YES] = g_strdup("Y");
+ row[COL_VALUE] = g_strdup("Y");
+ row[COL_BTNACT] = GINT_TO_POINTER(TRUE);
+ row[COL_BTNINC] = GINT_TO_POINTER(FALSE);
+ break;
+ }
+
+ if (val != no && sym_tristate_within_range(sym, no))
+ row[COL_NO] = g_strdup("_");
+ if (val != mod && sym_tristate_within_range(sym, mod))
+ row[COL_MOD] = g_strdup("_");
+ if (val != yes && sym_tristate_within_range(sym, yes))
+ row[COL_YES] = g_strdup("_");
+ break;
+ case S_INT:
+ case S_HEX:
+ case S_STRING:
+ def = sym_get_string_value(sym);
+ row[COL_VALUE] = g_strdup(def);
+ row[COL_EDIT] = GINT_TO_POINTER(TRUE);
+ row[COL_BTNVIS] = GINT_TO_POINTER(FALSE);
+ break;
+ }
+
+ return row;
+}
+
+
+/* Set the node content with a row of strings */
+static void set_node(GtkTreeIter * node, struct menu *menu, gchar ** row)
+{
+ GdkColor color;
+ gboolean success;
+ GdkPixbuf *pix;
+
+ pix = gdk_pixbuf_new_from_xpm_data((const char **)
+ row[COL_PIXBUF]);
+
+ gdk_color_parse(row[COL_COLOR], &color);
+ gdk_colormap_alloc_colors(gdk_colormap_get_system(), &color, 1,
+ FALSE, FALSE, &success);
+
+ gtk_tree_store_set(tree, node,
+ COL_OPTION, row[COL_OPTION],
+ COL_NAME, row[COL_NAME],
+ COL_NO, row[COL_NO],
+ COL_MOD, row[COL_MOD],
+ COL_YES, row[COL_YES],
+ COL_VALUE, row[COL_VALUE],
+ COL_MENU, (gpointer) menu,
+ COL_COLOR, &color,
+ COL_EDIT, GPOINTER_TO_INT(row[COL_EDIT]),
+ COL_PIXBUF, pix,
+ COL_PIXVIS, GPOINTER_TO_INT(row[COL_PIXVIS]),
+ COL_BTNVIS, GPOINTER_TO_INT(row[COL_BTNVIS]),
+ COL_BTNACT, GPOINTER_TO_INT(row[COL_BTNACT]),
+ COL_BTNINC, GPOINTER_TO_INT(row[COL_BTNINC]),
+ COL_BTNRAD, GPOINTER_TO_INT(row[COL_BTNRAD]),
+ -1);
+
+ g_object_unref(pix);
+}
+
+
+/* Add a node to the tree */
+static void place_node(struct menu *menu, char **row)
+{
+ GtkTreeIter *parent = parents[indent - 1];
+ GtkTreeIter *node = parents[indent];
+
+ gtk_tree_store_append(tree, node, parent);
+ set_node(node, menu, row);
+}
+
+
+/* Find a node in the GTK+ tree */
+static GtkTreeIter found;
+
+/*
+ * Find a menu in the GtkTree starting at parent.
+ */
+GtkTreeIter *gtktree_iter_find_node(GtkTreeIter * parent,
+ struct menu *tofind)
+{
+ GtkTreeIter iter;
+ GtkTreeIter *child = &iter;
+ gboolean valid;
+ GtkTreeIter *ret;
+
+ valid = gtk_tree_model_iter_children(model2, child, parent);
+ while (valid) {
+ struct menu *menu;
+
+ gtk_tree_model_get(model2, child, 6, &menu, -1);
+
+ if (menu == tofind) {
+ memcpy(&found, child, sizeof(GtkTreeIter));
+ return &found;
+ }
+
+ ret = gtktree_iter_find_node(child, tofind);
+ if (ret)
+ return ret;
+
+ valid = gtk_tree_model_iter_next(model2, child);
+ }
+
+ return NULL;
+}
+
+
+/*
+ * Update the tree by adding/removing entries
+ * Does not change other nodes
+ */
+static void update_tree(struct menu *src, GtkTreeIter * dst)
+{
+ struct menu *child1;
+ GtkTreeIter iter, tmp;
+ GtkTreeIter *child2 = &iter;
+ gboolean valid;
+ GtkTreeIter *sibling;
+ struct symbol *sym;
+ struct menu *menu1, *menu2;
+
+ if (src == &rootmenu)
+ indent = 1;
+
+ valid = gtk_tree_model_iter_children(model2, child2, dst);
+ for (child1 = src->list; child1; child1 = child1->next) {
+
+ sym = child1->sym;
+
+ reparse:
+ menu1 = child1;
+ if (valid)
+ gtk_tree_model_get(model2, child2, COL_MENU,
+ &menu2, -1);
+ else
+ menu2 = NULL; // force adding of a first child
+
+#ifdef DEBUG
+ printf("%*c%s | %s\n", indent, ' ',
+ menu1 ? menu_get_prompt(menu1) : "nil",
+ menu2 ? menu_get_prompt(menu2) : "nil");
+#endif
+
+ if ((opt_mode == OPT_NORMAL && !menu_is_visible(child1)) ||
+ (opt_mode == OPT_PROMPT && !menu_has_prompt(child1)) ||
+ (opt_mode == OPT_ALL && !menu_get_prompt(child1))) {
+
+ /* remove node */
+ if (gtktree_iter_find_node(dst, menu1) != NULL) {
+ memcpy(&tmp, child2, sizeof(GtkTreeIter));
+ valid = gtk_tree_model_iter_next(model2,
+ child2);
+ gtk_tree_store_remove(tree2, &tmp);
+ if (!valid)
+ return; /* next parent */
+ else
+ goto reparse; /* next child */
+ } else
+ continue;
+ }
+
+ if (menu1 != menu2) {
+ if (gtktree_iter_find_node(dst, menu1) == NULL) { // add node
+ if (!valid && !menu2)
+ sibling = NULL;
+ else
+ sibling = child2;
+ gtk_tree_store_insert_before(tree2,
+ child2,
+ dst, sibling);
+ set_node(child2, menu1, fill_row(menu1));
+ if (menu2 == NULL)
+ valid = TRUE;
+ } else { // remove node
+ memcpy(&tmp, child2, sizeof(GtkTreeIter));
+ valid = gtk_tree_model_iter_next(model2,
+ child2);
+ gtk_tree_store_remove(tree2, &tmp);
+ if (!valid)
+ return; // next parent
+ else
+ goto reparse; // next child
+ }
+ } else if (sym && (sym->flags & SYMBOL_CHANGED)) {
+ set_node(child2, menu1, fill_row(menu1));
+ }
+
+ indent++;
+ update_tree(child1, child2);
+ indent--;
+
+ valid = gtk_tree_model_iter_next(model2, child2);
+ }
+}
+
+
+/* Display the whole tree (single/split/full view) */
+static void display_tree(struct menu *menu)
+{
+ struct symbol *sym;
+ struct property *prop;
+ struct menu *child;
+ enum prop_type ptype;
+
+ if (menu == &rootmenu) {
+ indent = 1;
+ current = &rootmenu;
+ }
+
+ for (child = menu->list; child; child = child->next) {
+ prop = child->prompt;
+ sym = child->sym;
+ ptype = prop ? prop->type : P_UNKNOWN;
+
+ if (sym)
+ sym->flags &= ~SYMBOL_CHANGED;
+
+ if ((view_mode == SPLIT_VIEW)
+ && !(child->flags & MENU_ROOT) && (tree == tree1))
+ continue;
+
+ if ((view_mode == SPLIT_VIEW) && (child->flags & MENU_ROOT)
+ && (tree == tree2))
+ continue;
+
+ if ((opt_mode == OPT_NORMAL && menu_is_visible(child)) ||
+ (opt_mode == OPT_PROMPT && menu_has_prompt(child)) ||
+ (opt_mode == OPT_ALL && menu_get_prompt(child)))
+ place_node(child, fill_row(child));
+#ifdef DEBUG
+ printf("%*c%s: ", indent, ' ', menu_get_prompt(child));
+ printf("%s", child->flags & MENU_ROOT ? "rootmenu | " : "");
+ printf("%s", prop_get_type_name(ptype));
+ printf(" | ");
+ if (sym) {
+ printf("%s", sym_type_name(sym->type));
+ printf(" | ");
+ printf("%s", dbg_sym_flags(sym->flags));
+ printf("\n");
+ } else
+ printf("\n");
+#endif
+ if ((view_mode != FULL_VIEW) && (ptype == P_MENU)
+ && (tree == tree2))
+ continue;
+/*
+ if (((menu != &rootmenu) && !(menu->flags & MENU_ROOT))
+ || (view_mode == FULL_VIEW)
+ || (view_mode == SPLIT_VIEW))*/
+
+ /* Change paned position if the view is not in 'split mode' */
+ if (view_mode == SINGLE_VIEW || view_mode == FULL_VIEW) {
+ gtk_paned_set_position(GTK_PANED(hpaned), 0);
+ }
+
+ if (((view_mode == SINGLE_VIEW) && (menu->flags & MENU_ROOT))
+ || (view_mode == FULL_VIEW)
+ || (view_mode == SPLIT_VIEW)) {
+ indent++;
+ display_tree(child);
+ indent--;
+ }
+ }
+}
+
+/* Display a part of the tree starting at current node (single/split view) */
+static void display_tree_part(void)
+{
+ if (tree2)
+ gtk_tree_store_clear(tree2);
+ if (view_mode == SINGLE_VIEW)
+ display_tree(current);
+ else if (view_mode == SPLIT_VIEW)
+ display_tree(browsed);
+ gtk_tree_view_expand_all(GTK_TREE_VIEW(tree2_w));
+}
+
+/* Display the list in the left frame (split view) */
+static void display_list(void)
+{
+ if (tree1)
+ gtk_tree_store_clear(tree1);
+
+ tree = tree1;
+ display_tree(&rootmenu);
+ gtk_tree_view_expand_all(GTK_TREE_VIEW(tree1_w));
+ tree = tree2;
+}
+
+void fixup_rootmenu(struct menu *menu)
+{
+ struct menu *child;
+ static int menu_cnt = 0;
+
+ menu->flags |= MENU_ROOT;
+ for (child = menu->list; child; child = child->next) {
+ if (child->prompt && child->prompt->type == P_MENU) {
+ menu_cnt++;
+ fixup_rootmenu(child);
+ menu_cnt--;
+ } else if (!menu_cnt)
+ fixup_rootmenu(child);
+ }
+}
+
+
+/* Main */
+int main(int ac, char *av[])
+{
+ const char *name;
+ char *env;
+ gchar *glade_file;
+
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ bind_textdomain_codeset(PACKAGE, "UTF-8");
+ textdomain(PACKAGE);
+
+ /* GTK stuffs */
+ gtk_set_locale();
+ gtk_init(&ac, &av);
+ glade_init();
+
+ //add_pixmap_directory (PACKAGE_DATA_DIR "/" PACKAGE "/pixmaps");
+ //add_pixmap_directory (PACKAGE_SOURCE_DIR "/pixmaps");
+
+ /* Determine GUI path */
+ env = getenv(SRCTREE);
+ if (env)
+ glade_file = g_strconcat(env, "/scripts/kconfig/gconf.glade", NULL);
+ else if (av[0][0] == '/')
+ glade_file = g_strconcat(av[0], ".glade", NULL);
+ else
+ glade_file = g_strconcat(g_get_current_dir(), "/", av[0], ".glade", NULL);
+
+ /* Conf stuffs */
+ if (ac > 1 && av[1][0] == '-') {
+ switch (av[1][1]) {
+ case 'a':
+ //showAll = 1;
+ break;
+ case 'h':
+ case '?':
+ printf("%s <config>\n", av[0]);
+ exit(0);
+ }
+ name = av[2];
+ } else
+ name = av[1];
+
+ conf_parse(name);
+ fixup_rootmenu(&rootmenu);
+ conf_read(NULL);
+
+ /* Load the interface and connect signals */
+ init_main_window(glade_file);
+ init_tree_model();
+ init_left_tree();
+ init_right_tree();
+
+ switch (view_mode) {
+ case SINGLE_VIEW:
+ display_tree_part();
+ break;
+ case SPLIT_VIEW:
+ display_list();
+ break;
+ case FULL_VIEW:
+ display_tree(&rootmenu);
+ break;
+ }
+
+ gtk_main();
+
+ return 0;
+}
+
+static void conf_changed(void)
+{
+ bool changed = conf_get_changed();
+ gtk_widget_set_sensitive(save_btn, changed);
+ gtk_widget_set_sensitive(save_menu_item, changed);
+}
diff --git a/scripts/kconfig/gconf.glade b/scripts/kconfig/gconf.glade
new file mode 100644
index 0000000..aa483cb
--- /dev/null
+++ b/scripts/kconfig/gconf.glade
@@ -0,0 +1,661 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+
+<glade-interface>
+
+<widget class="GtkWindow" id="window1">
+ <property name="visible">True</property>
+ <property name="title" translatable="yes">Gtk Kernel Configurator</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="default_width">640</property>
+ <property name="default_height">480</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <signal name="destroy" handler="on_window1_destroy" object="window1"/>
+ <signal name="size_request" handler="on_window1_size_request" object="vpaned1" last_modification_time="Fri, 11 Jan 2002 16:17:11 GMT"/>
+ <signal name="delete_event" handler="on_window1_delete_event" object="window1" last_modification_time="Sun, 09 Mar 2003 19:42:46 GMT"/>
+
+ <child>
+ <widget class="GtkVBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkMenuBar" id="menubar1">
+ <property name="visible">True</property>
+
+ <child>
+ <widget class="GtkMenuItem" id="file1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_File</property>
+ <property name="use_underline">True</property>
+
+ <child>
+ <widget class="GtkMenu" id="file1_menu">
+
+ <child>
+ <widget class="GtkImageMenuItem" id="load1">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Load a config file</property>
+ <property name="label" translatable="yes">_Load</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_load1_activate"/>
+ <accelerator key="L" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image39">
+ <property name="visible">True</property>
+ <property name="stock">gtk-open</property>
+ <property name="icon_size">1</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkImageMenuItem" id="save1">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Save the config in .config</property>
+ <property name="label" translatable="yes">_Save</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_save_activate"/>
+ <accelerator key="S" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image40">
+ <property name="visible">True</property>
+ <property name="stock">gtk-save</property>
+ <property name="icon_size">1</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkImageMenuItem" id="save_as1">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Save the config in a file</property>
+ <property name="label" translatable="yes">Save _as</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_save_as1_activate"/>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image41">
+ <property name="visible">True</property>
+ <property name="stock">gtk-save-as</property>
+ <property name="icon_size">1</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkSeparatorMenuItem" id="separator1">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkImageMenuItem" id="quit1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Quit</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_quit1_activate"/>
+ <accelerator key="Q" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image42">
+ <property name="visible">True</property>
+ <property name="stock">gtk-quit</property>
+ <property name="icon_size">1</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkMenuItem" id="options1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Options</property>
+ <property name="use_underline">True</property>
+
+ <child>
+ <widget class="GtkMenu" id="options1_menu">
+
+ <child>
+ <widget class="GtkCheckMenuItem" id="show_name1">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Show name</property>
+ <property name="label" translatable="yes">Show _name</property>
+ <property name="use_underline">True</property>
+ <property name="active">False</property>
+ <signal name="activate" handler="on_show_name1_activate"/>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkCheckMenuItem" id="show_range1">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Show range (Y/M/N)</property>
+ <property name="label" translatable="yes">Show _range</property>
+ <property name="use_underline">True</property>
+ <property name="active">False</property>
+ <signal name="activate" handler="on_show_range1_activate"/>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkCheckMenuItem" id="show_data1">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Show value of the option</property>
+ <property name="label" translatable="yes">Show _data</property>
+ <property name="use_underline">True</property>
+ <property name="active">False</property>
+ <signal name="activate" handler="on_show_data1_activate"/>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkSeparatorMenuItem" id="separator2">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkRadioMenuItem" id="set_option_mode1">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Show normal options</property>
+ <property name="label" translatable="yes">Show normal options</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <signal name="activate" handler="on_set_option_mode1_activate"/>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkRadioMenuItem" id="set_option_mode2">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Show all options</property>
+ <property name="label" translatable="yes">Show all _options</property>
+ <property name="use_underline">True</property>
+ <property name="active">False</property>
+ <property name="group">set_option_mode1</property>
+ <signal name="activate" handler="on_set_option_mode2_activate"/>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkRadioMenuItem" id="set_option_mode3">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Show all options with prompts</property>
+ <property name="label" translatable="yes">Show all prompt options</property>
+ <property name="use_underline">True</property>
+ <property name="active">False</property>
+ <property name="group">set_option_mode1</property>
+ <signal name="activate" handler="on_set_option_mode3_activate"/>
+ </widget>
+ </child>
+
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkMenuItem" id="help1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Help</property>
+ <property name="use_underline">True</property>
+
+ <child>
+ <widget class="GtkMenu" id="help1_menu">
+
+ <child>
+ <widget class="GtkImageMenuItem" id="introduction1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Introduction</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_introduction1_activate" last_modification_time="Fri, 15 Nov 2002 20:26:30 GMT"/>
+ <accelerator key="I" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image43">
+ <property name="visible">True</property>
+ <property name="stock">gtk-dialog-question</property>
+ <property name="icon_size">1</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkImageMenuItem" id="about1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_About</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_about1_activate" last_modification_time="Fri, 15 Nov 2002 20:26:30 GMT"/>
+ <accelerator key="A" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image44">
+ <property name="visible">True</property>
+ <property name="stock">gtk-properties</property>
+ <property name="icon_size">1</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkImageMenuItem" id="license1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_License</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_license1_activate" last_modification_time="Fri, 15 Nov 2002 20:26:30 GMT"/>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image45">
+ <property name="visible">True</property>
+ <property name="stock">gtk-justify-fill</property>
+ <property name="icon_size">1</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHandleBox" id="handlebox1">
+ <property name="visible">True</property>
+ <property name="shadow_type">GTK_SHADOW_OUT</property>
+ <property name="handle_position">GTK_POS_LEFT</property>
+ <property name="snap_edge">GTK_POS_TOP</property>
+
+ <child>
+ <widget class="GtkToolbar" id="toolbar1">
+ <property name="visible">True</property>
+ <property name="orientation">GTK_ORIENTATION_HORIZONTAL</property>
+ <property name="toolbar_style">GTK_TOOLBAR_BOTH</property>
+ <property name="tooltips">True</property>
+ <property name="show_arrow">True</property>
+
+ <child>
+ <widget class="GtkToolButton" id="button1">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Goes up of one level (single view)</property>
+ <property name="label" translatable="yes">Back</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-undo</property>
+ <property name="visible_horizontal">True</property>
+ <property name="visible_vertical">True</property>
+ <property name="is_important">False</property>
+ <signal name="clicked" handler="on_back_clicked"/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkToolItem" id="toolitem1">
+ <property name="visible">True</property>
+ <property name="visible_horizontal">True</property>
+ <property name="visible_vertical">True</property>
+ <property name="is_important">False</property>
+
+ <child>
+ <widget class="GtkVSeparator" id="vseparator1">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkToolButton" id="button2">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Load a config file</property>
+ <property name="label" translatable="yes">Load</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-open</property>
+ <property name="visible_horizontal">True</property>
+ <property name="visible_vertical">True</property>
+ <property name="is_important">False</property>
+ <signal name="clicked" handler="on_load_clicked"/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkToolButton" id="button3">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Save a config file</property>
+ <property name="label" translatable="yes">Save</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-save</property>
+ <property name="visible_horizontal">True</property>
+ <property name="visible_vertical">True</property>
+ <property name="is_important">False</property>
+ <signal name="clicked" handler="on_save_activate"/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkToolItem" id="toolitem2">
+ <property name="visible">True</property>
+ <property name="visible_horizontal">True</property>
+ <property name="visible_vertical">True</property>
+ <property name="is_important">False</property>
+
+ <child>
+ <widget class="GtkVSeparator" id="vseparator2">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkToolButton" id="button4">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Single view</property>
+ <property name="label" translatable="yes">Single</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-missing-image</property>
+ <property name="visible_horizontal">True</property>
+ <property name="visible_vertical">True</property>
+ <property name="is_important">False</property>
+ <signal name="clicked" handler="on_single_clicked" last_modification_time="Sun, 12 Jan 2003 14:28:39 GMT"/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkToolButton" id="button5">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Split view</property>
+ <property name="label" translatable="yes">Split</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-missing-image</property>
+ <property name="visible_horizontal">True</property>
+ <property name="visible_vertical">True</property>
+ <property name="is_important">False</property>
+ <signal name="clicked" handler="on_split_clicked" last_modification_time="Sun, 12 Jan 2003 14:28:45 GMT"/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkToolButton" id="button6">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Full view</property>
+ <property name="label" translatable="yes">Full</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-missing-image</property>
+ <property name="visible_horizontal">True</property>
+ <property name="visible_vertical">True</property>
+ <property name="is_important">False</property>
+ <signal name="clicked" handler="on_full_clicked" last_modification_time="Sun, 12 Jan 2003 14:28:50 GMT"/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkToolItem" id="toolitem3">
+ <property name="visible">True</property>
+ <property name="visible_horizontal">True</property>
+ <property name="visible_vertical">True</property>
+ <property name="is_important">False</property>
+
+ <child>
+ <widget class="GtkVSeparator" id="vseparator3">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkToolButton" id="button7">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Collapse the whole tree in the right frame</property>
+ <property name="label" translatable="yes">Collapse</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-remove</property>
+ <property name="visible_horizontal">True</property>
+ <property name="visible_vertical">True</property>
+ <property name="is_important">False</property>
+ <signal name="clicked" handler="on_collapse_clicked"/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkToolButton" id="button8">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Expand the whole tree in the right frame</property>
+ <property name="label" translatable="yes">Expand</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-add</property>
+ <property name="visible_horizontal">True</property>
+ <property name="visible_vertical">True</property>
+ <property name="is_important">False</property>
+ <signal name="clicked" handler="on_expand_clicked"/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHPaned" id="hpaned1">
+ <property name="width_request">1</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="position">0</property>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="visible">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <widget class="GtkTreeView" id="treeview1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">True</property>
+ <property name="rules_hint">False</property>
+ <property name="reorderable">False</property>
+ <property name="enable_search">False</property>
+ <signal name="cursor_changed" handler="on_treeview2_cursor_changed" last_modification_time="Sun, 12 Jan 2003 15:58:22 GMT"/>
+ <signal name="button_press_event" handler="on_treeview1_button_press_event" last_modification_time="Sun, 12 Jan 2003 16:03:52 GMT"/>
+ <signal name="key_press_event" handler="on_treeview2_key_press_event" last_modification_time="Sun, 12 Jan 2003 16:11:44 GMT"/>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="shrink">True</property>
+ <property name="resize">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVPaned" id="vpaned1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="position">0</property>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow2">
+ <property name="visible">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <widget class="GtkTreeView" id="treeview2">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="has_focus">True</property>
+ <property name="headers_visible">True</property>
+ <property name="rules_hint">False</property>
+ <property name="reorderable">False</property>
+ <property name="enable_search">False</property>
+ <signal name="cursor_changed" handler="on_treeview2_cursor_changed" last_modification_time="Sun, 12 Jan 2003 15:57:55 GMT"/>
+ <signal name="button_press_event" handler="on_treeview2_button_press_event" last_modification_time="Sun, 12 Jan 2003 15:57:58 GMT"/>
+ <signal name="key_press_event" handler="on_treeview2_key_press_event" last_modification_time="Sun, 12 Jan 2003 15:58:01 GMT"/>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="shrink">True</property>
+ <property name="resize">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow3">
+ <property name="visible">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <widget class="GtkTextView" id="textview3">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">False</property>
+ <property name="overwrite">False</property>
+ <property name="accepts_tab">True</property>
+ <property name="justification">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap_mode">GTK_WRAP_WORD</property>
+ <property name="cursor_visible">True</property>
+ <property name="pixels_above_lines">0</property>
+ <property name="pixels_below_lines">0</property>
+ <property name="pixels_inside_wrap">0</property>
+ <property name="left_margin">0</property>
+ <property name="right_margin">0</property>
+ <property name="indent">0</property>
+ <property name="text" translatable="yes">Sorry, no help available for this option yet.</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="shrink">True</property>
+ <property name="resize">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="shrink">True</property>
+ <property name="resize">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/scripts/kconfig/images.c b/scripts/kconfig/images.c
new file mode 100644
index 0000000..d4f84bd
--- /dev/null
+++ b/scripts/kconfig/images.c
@@ -0,0 +1,326 @@
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+static const char *xpm_load[] = {
+"22 22 5 1",
+". c None",
+"# c #000000",
+"c c #838100",
+"a c #ffff00",
+"b c #ffffff",
+"......................",
+"......................",
+"......................",
+"............####....#.",
+"...........#....##.##.",
+"..................###.",
+".................####.",
+".####...........#####.",
+"#abab##########.......",
+"#babababababab#.......",
+"#ababababababa#.......",
+"#babababababab#.......",
+"#ababab###############",
+"#babab##cccccccccccc##",
+"#abab##cccccccccccc##.",
+"#bab##cccccccccccc##..",
+"#ab##cccccccccccc##...",
+"#b##cccccccccccc##....",
+"###cccccccccccc##.....",
+"##cccccccccccc##......",
+"###############.......",
+"......................"};
+
+static const char *xpm_save[] = {
+"22 22 5 1",
+". c None",
+"# c #000000",
+"a c #838100",
+"b c #c5c2c5",
+"c c #cdb6d5",
+"......................",
+".####################.",
+".#aa#bbbbbbbbbbbb#bb#.",
+".#aa#bbbbbbbbbbbb#bb#.",
+".#aa#bbbbbbbbbcbb####.",
+".#aa#bbbccbbbbbbb#aa#.",
+".#aa#bbbccbbbbbbb#aa#.",
+".#aa#bbbbbbbbbbbb#aa#.",
+".#aa#bbbbbbbbbbbb#aa#.",
+".#aa#bbbbbbbbbbbb#aa#.",
+".#aa#bbbbbbbbbbbb#aa#.",
+".#aaa############aaa#.",
+".#aaaaaaaaaaaaaaaaaa#.",
+".#aaaaaaaaaaaaaaaaaa#.",
+".#aaa#############aa#.",
+".#aaa#########bbb#aa#.",
+".#aaa#########bbb#aa#.",
+".#aaa#########bbb#aa#.",
+".#aaa#########bbb#aa#.",
+".#aaa#########bbb#aa#.",
+"..##################..",
+"......................"};
+
+static const char *xpm_back[] = {
+"22 22 3 1",
+". c None",
+"# c #000083",
+"a c #838183",
+"......................",
+"......................",
+"......................",
+"......................",
+"......................",
+"...........######a....",
+"..#......##########...",
+"..##...####......##a..",
+"..###.###.........##..",
+"..######..........##..",
+"..#####...........##..",
+"..######..........##..",
+"..#######.........##..",
+"..########.......##a..",
+"...............a###...",
+"...............###....",
+"......................",
+"......................",
+"......................",
+"......................",
+"......................",
+"......................"};
+
+static const char *xpm_tree_view[] = {
+"22 22 2 1",
+". c None",
+"# c #000000",
+"......................",
+"......................",
+"......#...............",
+"......#...............",
+"......#...............",
+"......#...............",
+"......#...............",
+"......########........",
+"......#...............",
+"......#...............",
+"......#...............",
+"......#...............",
+"......#...............",
+"......########........",
+"......#...............",
+"......#...............",
+"......#...............",
+"......#...............",
+"......#...............",
+"......########........",
+"......................",
+"......................"};
+
+static const char *xpm_single_view[] = {
+"22 22 2 1",
+". c None",
+"# c #000000",
+"......................",
+"......................",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"......................",
+"......................"};
+
+static const char *xpm_split_view[] = {
+"22 22 2 1",
+". c None",
+"# c #000000",
+"......................",
+"......................",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......................",
+"......................"};
+
+static const char *xpm_symbol_no[] = {
+"12 12 2 1",
+" c white",
+". c black",
+" ",
+" .......... ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" .......... ",
+" "};
+
+static const char *xpm_symbol_mod[] = {
+"12 12 2 1",
+" c white",
+". c black",
+" ",
+" .......... ",
+" . . ",
+" . . ",
+" . .. . ",
+" . .... . ",
+" . .... . ",
+" . .. . ",
+" . . ",
+" . . ",
+" .......... ",
+" "};
+
+static const char *xpm_symbol_yes[] = {
+"12 12 2 1",
+" c white",
+". c black",
+" ",
+" .......... ",
+" . . ",
+" . . ",
+" . . . ",
+" . .. . ",
+" . . .. . ",
+" . .... . ",
+" . .. . ",
+" . . ",
+" .......... ",
+" "};
+
+static const char *xpm_choice_no[] = {
+"12 12 2 1",
+" c white",
+". c black",
+" ",
+" .... ",
+" .. .. ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" .. .. ",
+" .... ",
+" "};
+
+static const char *xpm_choice_yes[] = {
+"12 12 2 1",
+" c white",
+". c black",
+" ",
+" .... ",
+" .. .. ",
+" . . ",
+" . .. . ",
+" . .... . ",
+" . .... . ",
+" . .. . ",
+" . . ",
+" .. .. ",
+" .... ",
+" "};
+
+static const char *xpm_menu[] = {
+"12 12 2 1",
+" c white",
+". c black",
+" ",
+" .......... ",
+" . . ",
+" . .. . ",
+" . .... . ",
+" . ...... . ",
+" . ...... . ",
+" . .... . ",
+" . .. . ",
+" . . ",
+" .......... ",
+" "};
+
+static const char *xpm_menu_inv[] = {
+"12 12 2 1",
+" c white",
+". c black",
+" ",
+" .......... ",
+" .......... ",
+" .. ...... ",
+" .. .... ",
+" .. .. ",
+" .. .. ",
+" .. .... ",
+" .. ...... ",
+" .......... ",
+" .......... ",
+" "};
+
+static const char *xpm_menuback[] = {
+"12 12 2 1",
+" c white",
+". c black",
+" ",
+" .......... ",
+" . . ",
+" . .. . ",
+" . .... . ",
+" . ...... . ",
+" . ...... . ",
+" . .... . ",
+" . .. . ",
+" . . ",
+" .......... ",
+" "};
+
+static const char *xpm_void[] = {
+"12 12 2 1",
+" c white",
+". c black",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" "};
diff --git a/scripts/kconfig/kxgettext.c b/scripts/kconfig/kxgettext.c
new file mode 100644
index 0000000..2858738
--- /dev/null
+++ b/scripts/kconfig/kxgettext.c
@@ -0,0 +1,235 @@
+/*
+ * Arnaldo Carvalho de Melo <acme@conectiva.com.br>, 2005
+ *
+ * Released under the terms of the GNU GPL v2.0
+ */
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "lkc.h"
+
+static char *escape(const char* text, char *bf, int len)
+{
+ char *bfp = bf;
+ int multiline = strchr(text, '\n') != NULL;
+ int eol = 0;
+ int textlen = strlen(text);
+
+ if ((textlen > 0) && (text[textlen-1] == '\n'))
+ eol = 1;
+
+ *bfp++ = '"';
+ --len;
+
+ if (multiline) {
+ *bfp++ = '"';
+ *bfp++ = '\n';
+ *bfp++ = '"';
+ len -= 3;
+ }
+
+ while (*text != '\0' && len > 1) {
+ if (*text == '"')
+ *bfp++ = '\\';
+ else if (*text == '\n') {
+ *bfp++ = '\\';
+ *bfp++ = 'n';
+ *bfp++ = '"';
+ *bfp++ = '\n';
+ *bfp++ = '"';
+ len -= 5;
+ ++text;
+ goto next;
+ }
+ else if (*text == '\\') {
+ *bfp++ = '\\';
+ len--;
+ }
+ *bfp++ = *text++;
+next:
+ --len;
+ }
+
+ if (multiline && eol)
+ bfp -= 3;
+
+ *bfp++ = '"';
+ *bfp = '\0';
+
+ return bf;
+}
+
+struct file_line {
+ struct file_line *next;
+ const char *file;
+ int lineno;
+};
+
+static struct file_line *file_line__new(const char *file, int lineno)
+{
+ struct file_line *self = malloc(sizeof(*self));
+
+ if (self == NULL)
+ goto out;
+
+ self->file = file;
+ self->lineno = lineno;
+ self->next = NULL;
+out:
+ return self;
+}
+
+struct message {
+ const char *msg;
+ const char *option;
+ struct message *next;
+ struct file_line *files;
+};
+
+static struct message *message__list;
+
+static struct message *message__new(const char *msg, char *option,
+ const char *file, int lineno)
+{
+ struct message *self = malloc(sizeof(*self));
+
+ if (self == NULL)
+ goto out;
+
+ self->files = file_line__new(file, lineno);
+ if (self->files == NULL)
+ goto out_fail;
+
+ self->msg = strdup(msg);
+ if (self->msg == NULL)
+ goto out_fail_msg;
+
+ self->option = option;
+ self->next = NULL;
+out:
+ return self;
+out_fail_msg:
+ free(self->files);
+out_fail:
+ free(self);
+ self = NULL;
+ goto out;
+}
+
+static struct message *mesage__find(const char *msg)
+{
+ struct message *m = message__list;
+
+ while (m != NULL) {
+ if (strcmp(m->msg, msg) == 0)
+ break;
+ m = m->next;
+ }
+
+ return m;
+}
+
+static int message__add_file_line(struct message *self, const char *file,
+ int lineno)
+{
+ int rc = -1;
+ struct file_line *fl = file_line__new(file, lineno);
+
+ if (fl == NULL)
+ goto out;
+
+ fl->next = self->files;
+ self->files = fl;
+ rc = 0;
+out:
+ return rc;
+}
+
+static int message__add(const char *msg, char *option, const char *file,
+ int lineno)
+{
+ int rc = 0;
+ char bf[16384];
+ char *escaped = escape(msg, bf, sizeof(bf));
+ struct message *m = mesage__find(escaped);
+
+ if (m != NULL)
+ rc = message__add_file_line(m, file, lineno);
+ else {
+ m = message__new(escaped, option, file, lineno);
+
+ if (m != NULL) {
+ m->next = message__list;
+ message__list = m;
+ } else
+ rc = -1;
+ }
+ return rc;
+}
+
+static void menu_build_message_list(struct menu *menu)
+{
+ struct menu *child;
+
+ message__add(menu_get_prompt(menu), NULL,
+ menu->file == NULL ? "Root Menu" : menu->file->name,
+ menu->lineno);
+
+ if (menu->sym != NULL && menu_has_help(menu))
+ message__add(menu_get_help(menu), menu->sym->name,
+ menu->file == NULL ? "Root Menu" : menu->file->name,
+ menu->lineno);
+
+ for (child = menu->list; child != NULL; child = child->next)
+ if (child->prompt != NULL)
+ menu_build_message_list(child);
+}
+
+static void message__print_file_lineno(struct message *self)
+{
+ struct file_line *fl = self->files;
+
+ putchar('\n');
+ if (self->option != NULL)
+ printf("# %s:00000\n", self->option);
+
+ printf("#: %s:%d", fl->file, fl->lineno);
+ fl = fl->next;
+
+ while (fl != NULL) {
+ printf(", %s:%d", fl->file, fl->lineno);
+ fl = fl->next;
+ }
+
+ putchar('\n');
+}
+
+static void message__print_gettext_msgid_msgstr(struct message *self)
+{
+ message__print_file_lineno(self);
+
+ printf("msgid %s\n"
+ "msgstr \"\"\n", self->msg);
+}
+
+static void menu__xgettext(void)
+{
+ struct message *m = message__list;
+
+ while (m != NULL) {
+ /* skip empty lines ("") */
+ if (strlen(m->msg) > sizeof("\"\""))
+ message__print_gettext_msgid_msgstr(m);
+ m = m->next;
+ }
+}
+
+int main(int ac, char **av)
+{
+ conf_parse(av[1]);
+
+ menu_build_message_list(menu_get_root_menu(NULL));
+ menu__xgettext();
+ return 0;
+}
diff --git a/scripts/kconfig/list.h b/scripts/kconfig/list.h
new file mode 100644
index 0000000..685d80e
--- /dev/null
+++ b/scripts/kconfig/list.h
@@ -0,0 +1,131 @@
+#ifndef LIST_H
+#define LIST_H
+
+/*
+ * Copied from include/linux/...
+ */
+
+#undef offsetof
+#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
+
+/**
+ * container_of - cast a member of a structure out to the containing structure
+ * @ptr: the pointer to the member.
+ * @type: the type of the container struct this is embedded in.
+ * @member: the name of the member within the struct.
+ *
+ */
+#define container_of(ptr, type, member) ({ \
+ const typeof( ((type *)0)->member ) *__mptr = (ptr); \
+ (type *)( (char *)__mptr - offsetof(type,member) );})
+
+
+struct list_head {
+ struct list_head *next, *prev;
+};
+
+
+#define LIST_HEAD_INIT(name) { &(name), &(name) }
+
+#define LIST_HEAD(name) \
+ struct list_head name = LIST_HEAD_INIT(name)
+
+/**
+ * list_entry - get the struct for this entry
+ * @ptr: the &struct list_head pointer.
+ * @type: the type of the struct this is embedded in.
+ * @member: the name of the list_struct within the struct.
+ */
+#define list_entry(ptr, type, member) \
+ container_of(ptr, type, member)
+
+/**
+ * list_for_each_entry - iterate over list of given type
+ * @pos: the type * to use as a loop cursor.
+ * @head: the head for your list.
+ * @member: the name of the list_struct within the struct.
+ */
+#define list_for_each_entry(pos, head, member) \
+ for (pos = list_entry((head)->next, typeof(*pos), member); \
+ &pos->member != (head); \
+ pos = list_entry(pos->member.next, typeof(*pos), member))
+
+/**
+ * list_for_each_entry_safe - iterate over list of given type safe against removal of list entry
+ * @pos: the type * to use as a loop cursor.
+ * @n: another type * to use as temporary storage
+ * @head: the head for your list.
+ * @member: the name of the list_struct within the struct.
+ */
+#define list_for_each_entry_safe(pos, n, head, member) \
+ for (pos = list_entry((head)->next, typeof(*pos), member), \
+ n = list_entry(pos->member.next, typeof(*pos), member); \
+ &pos->member != (head); \
+ pos = n, n = list_entry(n->member.next, typeof(*n), member))
+
+/**
+ * list_empty - tests whether a list is empty
+ * @head: the list to test.
+ */
+static inline int list_empty(const struct list_head *head)
+{
+ return head->next == head;
+}
+
+/*
+ * Insert a new entry between two known consecutive entries.
+ *
+ * This is only for internal list manipulation where we know
+ * the prev/next entries already!
+ */
+static inline void __list_add(struct list_head *_new,
+ struct list_head *prev,
+ struct list_head *next)
+{
+ next->prev = _new;
+ _new->next = next;
+ _new->prev = prev;
+ prev->next = _new;
+}
+
+/**
+ * list_add_tail - add a new entry
+ * @new: new entry to be added
+ * @head: list head to add it before
+ *
+ * Insert a new entry before the specified head.
+ * This is useful for implementing queues.
+ */
+static inline void list_add_tail(struct list_head *_new, struct list_head *head)
+{
+ __list_add(_new, head->prev, head);
+}
+
+/*
+ * Delete a list entry by making the prev/next entries
+ * point to each other.
+ *
+ * This is only for internal list manipulation where we know
+ * the prev/next entries already!
+ */
+static inline void __list_del(struct list_head *prev, struct list_head *next)
+{
+ next->prev = prev;
+ prev->next = next;
+}
+
+#define LIST_POISON1 ((void *) 0x00100100)
+#define LIST_POISON2 ((void *) 0x00200200)
+/**
+ * list_del - deletes entry from list.
+ * @entry: the element to delete from the list.
+ * Note: list_empty() on entry does not return true after this, the entry is
+ * in an undefined state.
+ */
+static inline void list_del(struct list_head *entry)
+{
+ __list_del(entry->prev, entry->next);
+ entry->next = (struct list_head*)LIST_POISON1;
+ entry->prev = (struct list_head*)LIST_POISON2;
+}
+#endif
diff --git a/scripts/kconfig/lkc.h b/scripts/kconfig/lkc.h
new file mode 100644
index 0000000..d5daa7a
--- /dev/null
+++ b/scripts/kconfig/lkc.h
@@ -0,0 +1,200 @@
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#ifndef LKC_H
+#define LKC_H
+
+#include "expr.h"
+
+#ifndef KBUILD_NO_NLS
+# include <libintl.h>
+#else
+static inline const char *gettext(const char *txt) { return txt; }
+static inline void textdomain(const char *domainname) {}
+static inline void bindtextdomain(const char *name, const char *dir) {}
+static inline char *bind_textdomain_codeset(const char *dn, char *c) { return c; }
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define P(name,type,arg) extern type name arg
+#include "lkc_proto.h"
+#undef P
+
+#define SRCTREE "srctree"
+
+#ifndef PACKAGE
+#define PACKAGE "linux"
+#endif
+
+#define LOCALEDIR "/usr/share/locale"
+
+#define _(text) gettext(text)
+#define N_(text) (text)
+
+#ifndef CONFIG_
+#define CONFIG_ "CONFIG_"
+#endif
+static inline const char *CONFIG_prefix(void)
+{
+ return getenv( "CONFIG_" ) ?: CONFIG_;
+}
+#undef CONFIG_
+#define CONFIG_ CONFIG_prefix()
+
+#define TF_COMMAND 0x0001
+#define TF_PARAM 0x0002
+#define TF_OPTION 0x0004
+
+enum conf_def_mode {
+ def_default,
+ def_yes,
+ def_mod,
+ def_no,
+ def_random
+};
+
+#define T_OPT_MODULES 1
+#define T_OPT_DEFCONFIG_LIST 2
+#define T_OPT_ENV 3
+#define T_OPT_ALLNOCONFIG_Y 4
+
+struct kconf_id {
+ int name;
+ int token;
+ unsigned int flags;
+ enum symbol_type stype;
+};
+
+extern int zconfdebug;
+
+int zconfparse(void);
+void zconfdump(FILE *out);
+void zconf_starthelp(void);
+FILE *zconf_fopen(const char *name);
+void zconf_initscan(const char *name);
+void zconf_nextfile(const char *name);
+int zconf_lineno(void);
+const char *zconf_curname(void);
+
+/* confdata.c */
+const char *conf_get_configname(void);
+const char *conf_get_autoconfig_name(void);
+char *conf_get_default_confname(void);
+void sym_set_change_count(int count);
+void sym_add_change_count(int count);
+bool conf_set_all_new_symbols(enum conf_def_mode mode);
+void set_all_choice_values(struct symbol *csym);
+
+struct conf_printer {
+ void (*print_symbol)(FILE *, struct symbol *, const char *, void *);
+ void (*print_comment)(FILE *, const char *, void *);
+};
+
+/* confdata.c and expr.c */
+static inline void xfwrite(const void *str, size_t len, size_t count, FILE *out)
+{
+ assert(len != 0);
+
+ if (fwrite(str, len, count, out) != count)
+ fprintf(stderr, "Error in writing or end of file.\n");
+}
+
+/* menu.c */
+void _menu_init(void);
+void menu_warn(struct menu *menu, const char *fmt, ...);
+struct menu *menu_add_menu(void);
+void menu_end_menu(void);
+void menu_add_entry(struct symbol *sym);
+void menu_end_entry(void);
+void menu_add_dep(struct expr *dep);
+void menu_add_visibility(struct expr *dep);
+struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep);
+struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep);
+void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep);
+void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep);
+void menu_add_option(int token, char *arg);
+void menu_finalize(struct menu *parent);
+void menu_set_type(int type);
+
+/* util.c */
+struct file *file_lookup(const char *name);
+int file_write_dep(const char *name);
+void *xmalloc(size_t size);
+void *xcalloc(size_t nmemb, size_t size);
+
+struct gstr {
+ size_t len;
+ char *s;
+ /*
+ * when max_width is not zero long lines in string s (if any) get
+ * wrapped not to exceed the max_width value
+ */
+ int max_width;
+};
+struct gstr str_new(void);
+struct gstr str_assign(const char *s);
+void str_free(struct gstr *gs);
+void str_append(struct gstr *gs, const char *s);
+void str_printf(struct gstr *gs, const char *fmt, ...);
+const char *str_get(struct gstr *gs);
+
+/* symbol.c */
+extern struct expr *sym_env_list;
+
+void sym_init(void);
+void sym_clear_all_valid(void);
+void sym_set_all_changed(void);
+void sym_set_changed(struct symbol *sym);
+struct symbol *sym_choice_default(struct symbol *sym);
+const char *sym_get_string_default(struct symbol *sym);
+struct symbol *sym_check_deps(struct symbol *sym);
+struct property *prop_alloc(enum prop_type type, struct symbol *sym);
+struct symbol *prop_get_symbol(struct property *prop);
+struct property *sym_get_env_prop(struct symbol *sym);
+
+static inline tristate sym_get_tristate_value(struct symbol *sym)
+{
+ return sym->curr.tri;
+}
+
+
+static inline struct symbol *sym_get_choice_value(struct symbol *sym)
+{
+ return (struct symbol *)sym->curr.val;
+}
+
+static inline bool sym_set_choice_value(struct symbol *ch, struct symbol *chval)
+{
+ return sym_set_tristate_value(chval, yes);
+}
+
+static inline bool sym_is_choice(struct symbol *sym)
+{
+ return sym->flags & SYMBOL_CHOICE ? true : false;
+}
+
+static inline bool sym_is_choice_value(struct symbol *sym)
+{
+ return sym->flags & SYMBOL_CHOICEVAL ? true : false;
+}
+
+static inline bool sym_is_optional(struct symbol *sym)
+{
+ return sym->flags & SYMBOL_OPTIONAL ? true : false;
+}
+
+static inline bool sym_has_value(struct symbol *sym)
+{
+ return sym->flags & SYMBOL_DEF_USER ? true : false;
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* LKC_H */
diff --git a/scripts/kconfig/lkc_proto.h b/scripts/kconfig/lkc_proto.h
new file mode 100644
index 0000000..ecdb965
--- /dev/null
+++ b/scripts/kconfig/lkc_proto.h
@@ -0,0 +1,57 @@
+#include <stdarg.h>
+
+/* confdata.c */
+P(conf_parse,void,(const char *name));
+P(conf_read,int,(const char *name));
+P(conf_read_simple,int,(const char *name, int));
+P(conf_write_defconfig,int,(const char *name));
+P(conf_write,int,(const char *name));
+P(conf_write_autoconf,int,(void));
+P(conf_get_changed,bool,(void));
+P(conf_set_changed_callback, void,(void (*fn)(void)));
+P(conf_set_message_callback, void,(void (*fn)(const char *fmt, va_list ap)));
+
+/* menu.c */
+P(rootmenu,struct menu,);
+
+P(menu_is_empty, bool, (struct menu *menu));
+P(menu_is_visible, bool, (struct menu *menu));
+P(menu_has_prompt, bool, (struct menu *menu));
+P(menu_get_prompt,const char *,(struct menu *menu));
+P(menu_get_root_menu,struct menu *,(struct menu *menu));
+P(menu_get_parent_menu,struct menu *,(struct menu *menu));
+P(menu_has_help,bool,(struct menu *menu));
+P(menu_get_help,const char *,(struct menu *menu));
+P(get_symbol_str, void, (struct gstr *r, struct symbol *sym, struct list_head
+ *head));
+P(get_relations_str, struct gstr, (struct symbol **sym_arr, struct list_head
+ *head));
+P(menu_get_ext_help,void,(struct menu *menu, struct gstr *help));
+
+/* symbol.c */
+P(symbol_hash,struct symbol *,[SYMBOL_HASHSIZE]);
+
+P(sym_lookup,struct symbol *,(const char *name, int flags));
+P(sym_find,struct symbol *,(const char *name));
+P(sym_expand_string_value,const char *,(const char *in));
+P(sym_escape_string_value, const char *,(const char *in));
+P(sym_re_search,struct symbol **,(const char *pattern));
+P(sym_type_name,const char *,(enum symbol_type type));
+P(sym_calc_value,void,(struct symbol *sym));
+P(sym_get_type,enum symbol_type,(struct symbol *sym));
+P(sym_tristate_within_range,bool,(struct symbol *sym,tristate tri));
+P(sym_set_tristate_value,bool,(struct symbol *sym,tristate tri));
+P(sym_toggle_tristate_value,tristate,(struct symbol *sym));
+P(sym_string_valid,bool,(struct symbol *sym, const char *newval));
+P(sym_string_within_range,bool,(struct symbol *sym, const char *str));
+P(sym_set_string_value,bool,(struct symbol *sym, const char *newval));
+P(sym_is_changable,bool,(struct symbol *sym));
+P(sym_get_choice_prop,struct property *,(struct symbol *sym));
+P(sym_get_default_prop,struct property *,(struct symbol *sym));
+P(sym_get_string_value,const char *,(struct symbol *sym));
+
+P(prop_get_type_name,const char *,(enum prop_type type));
+
+/* expr.c */
+P(expr_compare_type,int,(enum expr_type t1, enum expr_type t2));
+P(expr_print,void,(struct expr *e, void (*fn)(void *, struct symbol *, const char *), void *data, int prevtoken));
diff --git a/scripts/kconfig/lxdialog/.gitignore b/scripts/kconfig/lxdialog/.gitignore
new file mode 100644
index 0000000..90b08ff
--- /dev/null
+++ b/scripts/kconfig/lxdialog/.gitignore
@@ -0,0 +1,4 @@
+#
+# Generated files
+#
+lxdialog
diff --git a/scripts/kconfig/lxdialog/BIG.FAT.WARNING b/scripts/kconfig/lxdialog/BIG.FAT.WARNING
new file mode 100644
index 0000000..a8999d8
--- /dev/null
+++ b/scripts/kconfig/lxdialog/BIG.FAT.WARNING
@@ -0,0 +1,4 @@
+This is NOT the official version of dialog. This version has been
+significantly modified from the original. It is for use by the Linux
+kernel configuration script. Please do not bother Savio Lam with
+questions about this program.
diff --git a/scripts/kconfig/lxdialog/check-lxdialog.sh b/scripts/kconfig/lxdialog/check-lxdialog.sh
new file mode 100644
index 0000000..9d2a4c5
--- /dev/null
+++ b/scripts/kconfig/lxdialog/check-lxdialog.sh
@@ -0,0 +1,87 @@
+#!/bin/sh
+# Check ncurses compatibility
+
+# What library to link
+ldflags()
+{
+ pkg-config --libs ncursesw 2>/dev/null && exit
+ pkg-config --libs ncurses 2>/dev/null && exit
+ for ext in so a dll.a dylib ; do
+ for lib in ncursesw ncurses curses ; do
+ $cc -print-file-name=lib${lib}.${ext} | grep -q /
+ if [ $? -eq 0 ]; then
+ echo "-l${lib}"
+ exit
+ fi
+ done
+ done
+ exit 1
+}
+
+# Where is ncurses.h?
+ccflags()
+{
+ if [ -f /usr/include/ncursesw/curses.h ]; then
+ echo '-I/usr/include/ncursesw -DCURSES_LOC="<curses.h>"'
+ echo ' -DNCURSES_WIDECHAR=1'
+ elif [ -f /usr/include/ncurses/ncurses.h ]; then
+ echo '-I/usr/include/ncurses -DCURSES_LOC="<ncurses.h>"'
+ elif [ -f /usr/include/ncurses/curses.h ]; then
+ echo '-I/usr/include/ncurses -DCURSES_LOC="<curses.h>"'
+ elif [ -f /usr/include/ncurses.h ]; then
+ echo '-DCURSES_LOC="<ncurses.h>"'
+ else
+ echo '-DCURSES_LOC="<curses.h>"'
+ fi
+}
+
+# Temp file, try to clean up after us
+tmp=.lxdialog.tmp
+trap "rm -f $tmp" 0 1 2 3 15
+
+# Check if we can link to ncurses
+check() {
+ $cc -x c - -o $tmp 2>/dev/null <<'EOF'
+#include CURSES_LOC
+main() {}
+EOF
+ if [ $? != 0 ]; then
+ echo " *** Unable to find the ncurses libraries or the" 1>&2
+ echo " *** required header files." 1>&2
+ echo " *** 'make menuconfig' requires the ncurses libraries." 1>&2
+ echo " *** " 1>&2
+ echo " *** Install ncurses (ncurses-devel) and try again." 1>&2
+ echo " *** " 1>&2
+ exit 1
+ fi
+}
+
+usage() {
+ printf "Usage: $0 [-check compiler options|-ccflags|-ldflags compiler options]\n"
+}
+
+if [ $# -eq 0 ]; then
+ usage
+ exit 1
+fi
+
+cc=""
+case "$1" in
+ "-check")
+ shift
+ cc="$@"
+ check
+ ;;
+ "-ccflags")
+ ccflags
+ ;;
+ "-ldflags")
+ shift
+ cc="$@"
+ ldflags
+ ;;
+ "*")
+ usage
+ exit 1
+ ;;
+esac
diff --git a/scripts/kconfig/lxdialog/checklist.c b/scripts/kconfig/lxdialog/checklist.c
new file mode 100644
index 0000000..8d016fa
--- /dev/null
+++ b/scripts/kconfig/lxdialog/checklist.c
@@ -0,0 +1,332 @@
+/*
+ * checklist.c -- implements the checklist box
+ *
+ * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
+ * Stuart Herbert - S.Herbert@sheffield.ac.uk: radiolist extension
+ * Alessandro Rubini - rubini@ipvvis.unipv.it: merged the two
+ * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "dialog.h"
+
+static int list_width, check_x, item_x;
+
+/*
+ * Print list item
+ */
+static void print_item(WINDOW * win, int choice, int selected)
+{
+ int i;
+ char *list_item = malloc(list_width + 1);
+
+ strncpy(list_item, item_str(), list_width - item_x);
+ list_item[list_width - item_x] = '\0';
+
+ /* Clear 'residue' of last item */
+ wattrset(win, dlg.menubox.atr);
+ wmove(win, choice, 0);
+ for (i = 0; i < list_width; i++)
+ waddch(win, ' ');
+
+ wmove(win, choice, check_x);
+ wattrset(win, selected ? dlg.check_selected.atr
+ : dlg.check.atr);
+ if (!item_is_tag(':'))
+ wprintw(win, "(%c)", item_is_tag('X') ? 'X' : ' ');
+
+ wattrset(win, selected ? dlg.tag_selected.atr : dlg.tag.atr);
+ mvwaddch(win, choice, item_x, list_item[0]);
+ wattrset(win, selected ? dlg.item_selected.atr : dlg.item.atr);
+ waddstr(win, list_item + 1);
+ if (selected) {
+ wmove(win, choice, check_x + 1);
+ wrefresh(win);
+ }
+ free(list_item);
+}
+
+/*
+ * Print the scroll indicators.
+ */
+static void print_arrows(WINDOW * win, int choice, int item_no, int scroll,
+ int y, int x, int height)
+{
+ wmove(win, y, x);
+
+ if (scroll > 0) {
+ wattrset(win, dlg.uarrow.atr);
+ waddch(win, ACS_UARROW);
+ waddstr(win, "(-)");
+ } else {
+ wattrset(win, dlg.menubox.atr);
+ waddch(win, ACS_HLINE);
+ waddch(win, ACS_HLINE);
+ waddch(win, ACS_HLINE);
+ waddch(win, ACS_HLINE);
+ }
+
+ y = y + height + 1;
+ wmove(win, y, x);
+
+ if ((height < item_no) && (scroll + choice < item_no - 1)) {
+ wattrset(win, dlg.darrow.atr);
+ waddch(win, ACS_DARROW);
+ waddstr(win, "(+)");
+ } else {
+ wattrset(win, dlg.menubox_border.atr);
+ waddch(win, ACS_HLINE);
+ waddch(win, ACS_HLINE);
+ waddch(win, ACS_HLINE);
+ waddch(win, ACS_HLINE);
+ }
+}
+
+/*
+ * Display the termination buttons
+ */
+static void print_buttons(WINDOW * dialog, int height, int width, int selected)
+{
+ int x = width / 2 - 11;
+ int y = height - 2;
+
+ print_button(dialog, gettext("Select"), y, x, selected == 0);
+ print_button(dialog, gettext(" Help "), y, x + 14, selected == 1);
+
+ wmove(dialog, y, x + 1 + 14 * selected);
+ wrefresh(dialog);
+}
+
+/*
+ * Display a dialog box with a list of options that can be turned on or off
+ * in the style of radiolist (only one option turned on at a time).
+ */
+int dialog_checklist(const char *title, const char *prompt, int height,
+ int width, int list_height)
+{
+ int i, x, y, box_x, box_y;
+ int key = 0, button = 0, choice = 0, scroll = 0, max_choice;
+ WINDOW *dialog, *list;
+
+ /* which item to highlight */
+ item_foreach() {
+ if (item_is_tag('X'))
+ choice = item_n();
+ if (item_is_selected()) {
+ choice = item_n();
+ break;
+ }
+ }
+
+do_resize:
+ if (getmaxy(stdscr) < (height + CHECKLIST_HEIGTH_MIN))
+ return -ERRDISPLAYTOOSMALL;
+ if (getmaxx(stdscr) < (width + CHECKLIST_WIDTH_MIN))
+ return -ERRDISPLAYTOOSMALL;
+
+ max_choice = MIN(list_height, item_count());
+
+ /* center dialog box on screen */
+ x = (getmaxx(stdscr) - width) / 2;
+ y = (getmaxy(stdscr) - height) / 2;
+
+ draw_shadow(stdscr, y, x, height, width);
+
+ dialog = newwin(height, width, y, x);
+ keypad(dialog, TRUE);
+
+ draw_box(dialog, 0, 0, height, width,
+ dlg.dialog.atr, dlg.border.atr);
+ wattrset(dialog, dlg.border.atr);
+ mvwaddch(dialog, height - 3, 0, ACS_LTEE);
+ for (i = 0; i < width - 2; i++)
+ waddch(dialog, ACS_HLINE);
+ wattrset(dialog, dlg.dialog.atr);
+ waddch(dialog, ACS_RTEE);
+
+ print_title(dialog, title, width);
+
+ wattrset(dialog, dlg.dialog.atr);
+ print_autowrap(dialog, prompt, width - 2, 1, 3);
+
+ list_width = width - 6;
+ box_y = height - list_height - 5;
+ box_x = (width - list_width) / 2 - 1;
+
+ /* create new window for the list */
+ list = subwin(dialog, list_height, list_width, y + box_y + 1,
+ x + box_x + 1);
+
+ keypad(list, TRUE);
+
+ /* draw a box around the list items */
+ draw_box(dialog, box_y, box_x, list_height + 2, list_width + 2,
+ dlg.menubox_border.atr, dlg.menubox.atr);
+
+ /* Find length of longest item in order to center checklist */
+ check_x = 0;
+ item_foreach()
+ check_x = MAX(check_x, strlen(item_str()) + 4);
+ check_x = MIN(check_x, list_width);
+
+ check_x = (list_width - check_x) / 2;
+ item_x = check_x + 4;
+
+ if (choice >= list_height) {
+ scroll = choice - list_height + 1;
+ choice -= scroll;
+ }
+
+ /* Print the list */
+ for (i = 0; i < max_choice; i++) {
+ item_set(scroll + i);
+ print_item(list, i, i == choice);
+ }
+
+ print_arrows(dialog, choice, item_count(), scroll,
+ box_y, box_x + check_x + 5, list_height);
+
+ print_buttons(dialog, height, width, 0);
+
+ wnoutrefresh(dialog);
+ wnoutrefresh(list);
+ doupdate();
+
+ while (key != KEY_ESC) {
+ key = wgetch(dialog);
+
+ for (i = 0; i < max_choice; i++) {
+ item_set(i + scroll);
+ if (toupper(key) == toupper(item_str()[0]))
+ break;
+ }
+
+ if (i < max_choice || key == KEY_UP || key == KEY_DOWN ||
+ key == '+' || key == '-') {
+ if (key == KEY_UP || key == '-') {
+ if (!choice) {
+ if (!scroll)
+ continue;
+ /* Scroll list down */
+ if (list_height > 1) {
+ /* De-highlight current first item */
+ item_set(scroll);
+ print_item(list, 0, FALSE);
+ scrollok(list, TRUE);
+ wscrl(list, -1);
+ scrollok(list, FALSE);
+ }
+ scroll--;
+ item_set(scroll);
+ print_item(list, 0, TRUE);
+ print_arrows(dialog, choice, item_count(),
+ scroll, box_y, box_x + check_x + 5, list_height);
+
+ wnoutrefresh(dialog);
+ wrefresh(list);
+
+ continue; /* wait for another key press */
+ } else
+ i = choice - 1;
+ } else if (key == KEY_DOWN || key == '+') {
+ if (choice == max_choice - 1) {
+ if (scroll + choice >= item_count() - 1)
+ continue;
+ /* Scroll list up */
+ if (list_height > 1) {
+ /* De-highlight current last item before scrolling up */
+ item_set(scroll + max_choice - 1);
+ print_item(list,
+ max_choice - 1,
+ FALSE);
+ scrollok(list, TRUE);
+ wscrl(list, 1);
+ scrollok(list, FALSE);
+ }
+ scroll++;
+ item_set(scroll + max_choice - 1);
+ print_item(list, max_choice - 1, TRUE);
+
+ print_arrows(dialog, choice, item_count(),
+ scroll, box_y, box_x + check_x + 5, list_height);
+
+ wnoutrefresh(dialog);
+ wrefresh(list);
+
+ continue; /* wait for another key press */
+ } else
+ i = choice + 1;
+ }
+ if (i != choice) {
+ /* De-highlight current item */
+ item_set(scroll + choice);
+ print_item(list, choice, FALSE);
+ /* Highlight new item */
+ choice = i;
+ item_set(scroll + choice);
+ print_item(list, choice, TRUE);
+ wnoutrefresh(dialog);
+ wrefresh(list);
+ }
+ continue; /* wait for another key press */
+ }
+ switch (key) {
+ case 'H':
+ case 'h':
+ case '?':
+ button = 1;
+ /* fall-through */
+ case 'S':
+ case 's':
+ case ' ':
+ case '\n':
+ item_foreach()
+ item_set_selected(0);
+ item_set(scroll + choice);
+ item_set_selected(1);
+ delwin(list);
+ delwin(dialog);
+ return button;
+ case TAB:
+ case KEY_LEFT:
+ case KEY_RIGHT:
+ button = ((key == KEY_LEFT ? --button : ++button) < 0)
+ ? 1 : (button > 1 ? 0 : button);
+
+ print_buttons(dialog, height, width, button);
+ wrefresh(dialog);
+ break;
+ case 'X':
+ case 'x':
+ key = KEY_ESC;
+ break;
+ case KEY_ESC:
+ key = on_key_esc(dialog);
+ break;
+ case KEY_RESIZE:
+ delwin(list);
+ delwin(dialog);
+ on_key_resize();
+ goto do_resize;
+ }
+
+ /* Now, update everything... */
+ doupdate();
+ }
+ delwin(list);
+ delwin(dialog);
+ return key; /* ESC pressed */
+}
diff --git a/scripts/kconfig/lxdialog/dialog.h b/scripts/kconfig/lxdialog/dialog.h
new file mode 100644
index 0000000..b4343d3
--- /dev/null
+++ b/scripts/kconfig/lxdialog/dialog.h
@@ -0,0 +1,257 @@
+/*
+ * dialog.h -- common declarations for all dialog modules
+ *
+ * AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <sys/types.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdbool.h>
+
+#ifndef KBUILD_NO_NLS
+# include <libintl.h>
+#else
+# define gettext(Msgid) ((const char *) (Msgid))
+#endif
+
+#ifdef __sun__
+#define CURS_MACROS
+#endif
+#include CURSES_LOC
+
+/*
+ * Colors in ncurses 1.9.9e do not work properly since foreground and
+ * background colors are OR'd rather than separately masked. This version
+ * of dialog was hacked to work with ncurses 1.9.9e, making it incompatible
+ * with standard curses. The simplest fix (to make this work with standard
+ * curses) uses the wbkgdset() function, not used in the original hack.
+ * Turn it off if we're building with 1.9.9e, since it just confuses things.
+ */
+#if defined(NCURSES_VERSION) && defined(_NEED_WRAP) && !defined(GCC_PRINTFLIKE)
+#define OLD_NCURSES 1
+#undef wbkgdset
+#define wbkgdset(w,p) /*nothing */
+#else
+#define OLD_NCURSES 0
+#endif
+
+#define TR(params) _tracef params
+
+#define KEY_ESC 27
+#define TAB 9
+#define MAX_LEN 2048
+#define BUF_SIZE (10*1024)
+#define MIN(x,y) (x < y ? x : y)
+#define MAX(x,y) (x > y ? x : y)
+
+#ifndef ACS_ULCORNER
+#define ACS_ULCORNER '+'
+#endif
+#ifndef ACS_LLCORNER
+#define ACS_LLCORNER '+'
+#endif
+#ifndef ACS_URCORNER
+#define ACS_URCORNER '+'
+#endif
+#ifndef ACS_LRCORNER
+#define ACS_LRCORNER '+'
+#endif
+#ifndef ACS_HLINE
+#define ACS_HLINE '-'
+#endif
+#ifndef ACS_VLINE
+#define ACS_VLINE '|'
+#endif
+#ifndef ACS_LTEE
+#define ACS_LTEE '+'
+#endif
+#ifndef ACS_RTEE
+#define ACS_RTEE '+'
+#endif
+#ifndef ACS_UARROW
+#define ACS_UARROW '^'
+#endif
+#ifndef ACS_DARROW
+#define ACS_DARROW 'v'
+#endif
+
+/* error return codes */
+#define ERRDISPLAYTOOSMALL (KEY_MAX + 1)
+
+/*
+ * Color definitions
+ */
+struct dialog_color {
+ chtype atr; /* Color attribute */
+ int fg; /* foreground */
+ int bg; /* background */
+ int hl; /* highlight this item */
+};
+
+struct subtitle_list {
+ struct subtitle_list *next;
+ const char *text;
+};
+
+struct dialog_info {
+ const char *backtitle;
+ struct subtitle_list *subtitles;
+ struct dialog_color screen;
+ struct dialog_color shadow;
+ struct dialog_color dialog;
+ struct dialog_color title;
+ struct dialog_color border;
+ struct dialog_color button_active;
+ struct dialog_color button_inactive;
+ struct dialog_color button_key_active;
+ struct dialog_color button_key_inactive;
+ struct dialog_color button_label_active;
+ struct dialog_color button_label_inactive;
+ struct dialog_color inputbox;
+ struct dialog_color inputbox_border;
+ struct dialog_color searchbox;
+ struct dialog_color searchbox_title;
+ struct dialog_color searchbox_border;
+ struct dialog_color position_indicator;
+ struct dialog_color menubox;
+ struct dialog_color menubox_border;
+ struct dialog_color item;
+ struct dialog_color item_selected;
+ struct dialog_color tag;
+ struct dialog_color tag_selected;
+ struct dialog_color tag_key;
+ struct dialog_color tag_key_selected;
+ struct dialog_color check;
+ struct dialog_color check_selected;
+ struct dialog_color uarrow;
+ struct dialog_color darrow;
+};
+
+/*
+ * Global variables
+ */
+extern struct dialog_info dlg;
+extern char dialog_input_result[];
+extern int saved_x, saved_y; /* Needed in signal handler in mconf.c */
+
+/*
+ * Function prototypes
+ */
+
+/* item list as used by checklist and menubox */
+void item_reset(void);
+void item_make(const char *fmt, ...);
+void item_add_str(const char *fmt, ...);
+void item_set_tag(char tag);
+void item_set_data(void *p);
+void item_set_selected(int val);
+int item_activate_selected(void);
+void *item_data(void);
+char item_tag(void);
+
+/* item list manipulation for lxdialog use */
+#define MAXITEMSTR 200
+struct dialog_item {
+ char str[MAXITEMSTR]; /* promtp displayed */
+ char tag;
+ void *data; /* pointer to menu item - used by menubox+checklist */
+ int selected; /* Set to 1 by dialog_*() function if selected. */
+};
+
+/* list of lialog_items */
+struct dialog_list {
+ struct dialog_item node;
+ struct dialog_list *next;
+};
+
+extern struct dialog_list *item_cur;
+extern struct dialog_list item_nil;
+extern struct dialog_list *item_head;
+
+int item_count(void);
+void item_set(int n);
+int item_n(void);
+const char *item_str(void);
+int item_is_selected(void);
+int item_is_tag(char tag);
+#define item_foreach() \
+ for (item_cur = item_head ? item_head: item_cur; \
+ item_cur && (item_cur != &item_nil); item_cur = item_cur->next)
+
+/* generic key handlers */
+int on_key_esc(WINDOW *win);
+int on_key_resize(void);
+
+/* minimum (re)size values */
+#define CHECKLIST_HEIGTH_MIN 6 /* For dialog_checklist() */
+#define CHECKLIST_WIDTH_MIN 6
+#define INPUTBOX_HEIGTH_MIN 2 /* For dialog_inputbox() */
+#define INPUTBOX_WIDTH_MIN 2
+#define MENUBOX_HEIGTH_MIN 15 /* For dialog_menu() */
+#define MENUBOX_WIDTH_MIN 65
+#define TEXTBOX_HEIGTH_MIN 8 /* For dialog_textbox() */
+#define TEXTBOX_WIDTH_MIN 8
+#define YESNO_HEIGTH_MIN 4 /* For dialog_yesno() */
+#define YESNO_WIDTH_MIN 4
+#define WINDOW_HEIGTH_MIN 19 /* For init_dialog() */
+#define WINDOW_WIDTH_MIN 80
+
+int init_dialog(const char *backtitle);
+void set_dialog_backtitle(const char *backtitle);
+void set_dialog_subtitles(struct subtitle_list *subtitles);
+void end_dialog(int x, int y);
+void attr_clear(WINDOW * win, int height, int width, chtype attr);
+void dialog_clear(void);
+void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x);
+void print_button(WINDOW * win, const char *label, int y, int x, int selected);
+void print_title(WINDOW *dialog, const char *title, int width);
+void draw_box(WINDOW * win, int y, int x, int height, int width, chtype box,
+ chtype border);
+void draw_shadow(WINDOW * win, int y, int x, int height, int width);
+
+int first_alpha(const char *string, const char *exempt);
+int dialog_yesno(const char *title, const char *prompt, int height, int width);
+int dialog_msgbox(const char *title, const char *prompt, int height,
+ int width, int pause);
+
+
+typedef void (*update_text_fn)(char *buf, size_t start, size_t end, void
+ *_data);
+int dialog_textbox(const char *title, char *tbuf, int initial_height,
+ int initial_width, int *keys, int *_vscroll, int *_hscroll,
+ update_text_fn update_text, void *data);
+int dialog_menu(const char *title, const char *prompt,
+ const void *selected, int *s_scroll);
+int dialog_checklist(const char *title, const char *prompt, int height,
+ int width, int list_height);
+int dialog_inputbox(const char *title, const char *prompt, int height,
+ int width, const char *init);
+
+/*
+ * This is the base for fictitious keys, which activate
+ * the buttons.
+ *
+ * Mouse-generated keys are the following:
+ * -- the first 32 are used as numbers, in addition to '0'-'9'
+ * -- the lowercase are used to signal mouse-enter events (M_EVENT + 'o')
+ * -- uppercase chars are used to invoke the button (M_EVENT + 'O')
+ */
+#define M_EVENT (KEY_MAX+1)
diff --git a/scripts/kconfig/lxdialog/inputbox.c b/scripts/kconfig/lxdialog/inputbox.c
new file mode 100644
index 0000000..d58de1d
--- /dev/null
+++ b/scripts/kconfig/lxdialog/inputbox.c
@@ -0,0 +1,301 @@
+/*
+ * inputbox.c -- implements the input box
+ *
+ * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
+ * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "dialog.h"
+
+char dialog_input_result[MAX_LEN + 1];
+
+/*
+ * Print the termination buttons
+ */
+static void print_buttons(WINDOW * dialog, int height, int width, int selected)
+{
+ int x = width / 2 - 11;
+ int y = height - 2;
+
+ print_button(dialog, gettext(" Ok "), y, x, selected == 0);
+ print_button(dialog, gettext(" Help "), y, x + 14, selected == 1);
+
+ wmove(dialog, y, x + 1 + 14 * selected);
+ wrefresh(dialog);
+}
+
+/*
+ * Display a dialog box for inputing a string
+ */
+int dialog_inputbox(const char *title, const char *prompt, int height, int width,
+ const char *init)
+{
+ int i, x, y, box_y, box_x, box_width;
+ int input_x = 0, key = 0, button = -1;
+ int show_x, len, pos;
+ char *instr = dialog_input_result;
+ WINDOW *dialog;
+
+ if (!init)
+ instr[0] = '\0';
+ else
+ strcpy(instr, init);
+
+do_resize:
+ if (getmaxy(stdscr) <= (height - INPUTBOX_HEIGTH_MIN))
+ return -ERRDISPLAYTOOSMALL;
+ if (getmaxx(stdscr) <= (width - INPUTBOX_WIDTH_MIN))
+ return -ERRDISPLAYTOOSMALL;
+
+ /* center dialog box on screen */
+ x = (getmaxx(stdscr) - width) / 2;
+ y = (getmaxy(stdscr) - height) / 2;
+
+ draw_shadow(stdscr, y, x, height, width);
+
+ dialog = newwin(height, width, y, x);
+ keypad(dialog, TRUE);
+
+ draw_box(dialog, 0, 0, height, width,
+ dlg.dialog.atr, dlg.border.atr);
+ wattrset(dialog, dlg.border.atr);
+ mvwaddch(dialog, height - 3, 0, ACS_LTEE);
+ for (i = 0; i < width - 2; i++)
+ waddch(dialog, ACS_HLINE);
+ wattrset(dialog, dlg.dialog.atr);
+ waddch(dialog, ACS_RTEE);
+
+ print_title(dialog, title, width);
+
+ wattrset(dialog, dlg.dialog.atr);
+ print_autowrap(dialog, prompt, width - 2, 1, 3);
+
+ /* Draw the input field box */
+ box_width = width - 6;
+ getyx(dialog, y, x);
+ box_y = y + 2;
+ box_x = (width - box_width) / 2;
+ draw_box(dialog, y + 1, box_x - 1, 3, box_width + 2,
+ dlg.dialog.atr, dlg.border.atr);
+
+ print_buttons(dialog, height, width, 0);
+
+ /* Set up the initial value */
+ wmove(dialog, box_y, box_x);
+ wattrset(dialog, dlg.inputbox.atr);
+
+ len = strlen(instr);
+ pos = len;
+
+ if (len >= box_width) {
+ show_x = len - box_width + 1;
+ input_x = box_width - 1;
+ for (i = 0; i < box_width - 1; i++)
+ waddch(dialog, instr[show_x + i]);
+ } else {
+ show_x = 0;
+ input_x = len;
+ waddstr(dialog, instr);
+ }
+
+ wmove(dialog, box_y, box_x + input_x);
+
+ wrefresh(dialog);
+
+ while (key != KEY_ESC) {
+ key = wgetch(dialog);
+
+ if (button == -1) { /* Input box selected */
+ switch (key) {
+ case TAB:
+ case KEY_UP:
+ case KEY_DOWN:
+ break;
+ case KEY_BACKSPACE:
+ case 127:
+ if (pos) {
+ wattrset(dialog, dlg.inputbox.atr);
+ if (input_x == 0) {
+ show_x--;
+ } else
+ input_x--;
+
+ if (pos < len) {
+ for (i = pos - 1; i < len; i++) {
+ instr[i] = instr[i+1];
+ }
+ }
+
+ pos--;
+ len--;
+ instr[len] = '\0';
+ wmove(dialog, box_y, box_x);
+ for (i = 0; i < box_width; i++) {
+ if (!instr[show_x + i]) {
+ waddch(dialog, ' ');
+ break;
+ }
+ waddch(dialog, instr[show_x + i]);
+ }
+ wmove(dialog, box_y, input_x + box_x);
+ wrefresh(dialog);
+ }
+ continue;
+ case KEY_LEFT:
+ if (pos > 0) {
+ if (input_x > 0) {
+ wmove(dialog, box_y, --input_x + box_x);
+ } else if (input_x == 0) {
+ show_x--;
+ wmove(dialog, box_y, box_x);
+ for (i = 0; i < box_width; i++) {
+ if (!instr[show_x + i]) {
+ waddch(dialog, ' ');
+ break;
+ }
+ waddch(dialog, instr[show_x + i]);
+ }
+ wmove(dialog, box_y, box_x);
+ }
+ pos--;
+ }
+ continue;
+ case KEY_RIGHT:
+ if (pos < len) {
+ if (input_x < box_width - 1) {
+ wmove(dialog, box_y, ++input_x + box_x);
+ } else if (input_x == box_width - 1) {
+ show_x++;
+ wmove(dialog, box_y, box_x);
+ for (i = 0; i < box_width; i++) {
+ if (!instr[show_x + i]) {
+ waddch(dialog, ' ');
+ break;
+ }
+ waddch(dialog, instr[show_x + i]);
+ }
+ wmove(dialog, box_y, input_x + box_x);
+ }
+ pos++;
+ }
+ continue;
+ default:
+ if (key < 0x100 && isprint(key)) {
+ if (len < MAX_LEN) {
+ wattrset(dialog, dlg.inputbox.atr);
+ if (pos < len) {
+ for (i = len; i > pos; i--)
+ instr[i] = instr[i-1];
+ instr[pos] = key;
+ } else {
+ instr[len] = key;
+ }
+ pos++;
+ len++;
+ instr[len] = '\0';
+
+ if (input_x == box_width - 1) {
+ show_x++;
+ } else {
+ input_x++;
+ }
+
+ wmove(dialog, box_y, box_x);
+ for (i = 0; i < box_width; i++) {
+ if (!instr[show_x + i]) {
+ waddch(dialog, ' ');
+ break;
+ }
+ waddch(dialog, instr[show_x + i]);
+ }
+ wmove(dialog, box_y, input_x + box_x);
+ wrefresh(dialog);
+ } else
+ flash(); /* Alarm user about overflow */
+ continue;
+ }
+ }
+ }
+ switch (key) {
+ case 'O':
+ case 'o':
+ delwin(dialog);
+ return 0;
+ case 'H':
+ case 'h':
+ delwin(dialog);
+ return 1;
+ case KEY_UP:
+ case KEY_LEFT:
+ switch (button) {
+ case -1:
+ button = 1; /* Indicates "Help" button is selected */
+ print_buttons(dialog, height, width, 1);
+ break;
+ case 0:
+ button = -1; /* Indicates input box is selected */
+ print_buttons(dialog, height, width, 0);
+ wmove(dialog, box_y, box_x + input_x);
+ wrefresh(dialog);
+ break;
+ case 1:
+ button = 0; /* Indicates "OK" button is selected */
+ print_buttons(dialog, height, width, 0);
+ break;
+ }
+ break;
+ case TAB:
+ case KEY_DOWN:
+ case KEY_RIGHT:
+ switch (button) {
+ case -1:
+ button = 0; /* Indicates "OK" button is selected */
+ print_buttons(dialog, height, width, 0);
+ break;
+ case 0:
+ button = 1; /* Indicates "Help" button is selected */
+ print_buttons(dialog, height, width, 1);
+ break;
+ case 1:
+ button = -1; /* Indicates input box is selected */
+ print_buttons(dialog, height, width, 0);
+ wmove(dialog, box_y, box_x + input_x);
+ wrefresh(dialog);
+ break;
+ }
+ break;
+ case ' ':
+ case '\n':
+ delwin(dialog);
+ return (button == -1 ? 0 : button);
+ case 'X':
+ case 'x':
+ key = KEY_ESC;
+ break;
+ case KEY_ESC:
+ key = on_key_esc(dialog);
+ break;
+ case KEY_RESIZE:
+ delwin(dialog);
+ on_key_resize();
+ goto do_resize;
+ }
+ }
+
+ delwin(dialog);
+ return KEY_ESC; /* ESC pressed */
+}
diff --git a/scripts/kconfig/lxdialog/menubox.c b/scripts/kconfig/lxdialog/menubox.c
new file mode 100644
index 0000000..11ae9ad
--- /dev/null
+++ b/scripts/kconfig/lxdialog/menubox.c
@@ -0,0 +1,437 @@
+/*
+ * menubox.c -- implements the menu box
+ *
+ * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
+ * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcapw@cfw.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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/*
+ * Changes by Clifford Wolf (god@clifford.at)
+ *
+ * [ 1998-06-13 ]
+ *
+ * *) A bugfix for the Page-Down problem
+ *
+ * *) Formerly when I used Page Down and Page Up, the cursor would be set
+ * to the first position in the menu box. Now lxdialog is a bit
+ * smarter and works more like other menu systems (just have a look at
+ * it).
+ *
+ * *) Formerly if I selected something my scrolling would be broken because
+ * lxdialog is re-invoked by the Menuconfig shell script, can't
+ * remember the last scrolling position, and just sets it so that the
+ * cursor is at the bottom of the box. Now it writes the temporary file
+ * lxdialog.scrltmp which contains this information. The file is
+ * deleted by lxdialog if the user leaves a submenu or enters a new
+ * one, but it would be nice if Menuconfig could make another "rm -f"
+ * just to be sure. Just try it out - you will recognise a difference!
+ *
+ * [ 1998-06-14 ]
+ *
+ * *) Now lxdialog is crash-safe against broken "lxdialog.scrltmp" files
+ * and menus change their size on the fly.
+ *
+ * *) If for some reason the last scrolling position is not saved by
+ * lxdialog, it sets the scrolling so that the selected item is in the
+ * middle of the menu box, not at the bottom.
+ *
+ * 02 January 1999, Michael Elizabeth Chastain (mec@shout.net)
+ * Reset 'scroll' to 0 if the value from lxdialog.scrltmp is bogus.
+ * This fixes a bug in Menuconfig where using ' ' to descend into menus
+ * would leave mis-synchronized lxdialog.scrltmp files lying around,
+ * fscanf would read in 'scroll', and eventually that value would get used.
+ */
+
+#include "dialog.h"
+
+static int menu_width, item_x;
+
+/*
+ * Print menu item
+ */
+static void do_print_item(WINDOW * win, const char *item, int line_y,
+ int selected, int hotkey)
+{
+ int j;
+ char *menu_item = malloc(menu_width + 1);
+
+ strncpy(menu_item, item, menu_width - item_x);
+ menu_item[menu_width - item_x] = '\0';
+ j = first_alpha(menu_item, "YyNnMmHh");
+
+ /* Clear 'residue' of last item */
+ wattrset(win, dlg.menubox.atr);
+ wmove(win, line_y, 0);
+#if OLD_NCURSES
+ {
+ int i;
+ for (i = 0; i < menu_width; i++)
+ waddch(win, ' ');
+ }
+#else
+ wclrtoeol(win);
+#endif
+ wattrset(win, selected ? dlg.item_selected.atr : dlg.item.atr);
+ mvwaddstr(win, line_y, item_x, menu_item);
+ if (hotkey) {
+ wattrset(win, selected ? dlg.tag_key_selected.atr
+ : dlg.tag_key.atr);
+ mvwaddch(win, line_y, item_x + j, menu_item[j]);
+ }
+ if (selected) {
+ wmove(win, line_y, item_x + 1);
+ }
+ free(menu_item);
+ wrefresh(win);
+}
+
+#define print_item(index, choice, selected) \
+do { \
+ item_set(index); \
+ do_print_item(menu, item_str(), choice, selected, !item_is_tag(':')); \
+} while (0)
+
+/*
+ * Print the scroll indicators.
+ */
+static void print_arrows(WINDOW * win, int item_no, int scroll, int y, int x,
+ int height)
+{
+ int cur_y, cur_x;
+
+ getyx(win, cur_y, cur_x);
+
+ wmove(win, y, x);
+
+ if (scroll > 0) {
+ wattrset(win, dlg.uarrow.atr);
+ waddch(win, ACS_UARROW);
+ waddstr(win, "(-)");
+ } else {
+ wattrset(win, dlg.menubox.atr);
+ waddch(win, ACS_HLINE);
+ waddch(win, ACS_HLINE);
+ waddch(win, ACS_HLINE);
+ waddch(win, ACS_HLINE);
+ }
+
+ y = y + height + 1;
+ wmove(win, y, x);
+ wrefresh(win);
+
+ if ((height < item_no) && (scroll + height < item_no)) {
+ wattrset(win, dlg.darrow.atr);
+ waddch(win, ACS_DARROW);
+ waddstr(win, "(+)");
+ } else {
+ wattrset(win, dlg.menubox_border.atr);
+ waddch(win, ACS_HLINE);
+ waddch(win, ACS_HLINE);
+ waddch(win, ACS_HLINE);
+ waddch(win, ACS_HLINE);
+ }
+
+ wmove(win, cur_y, cur_x);
+ wrefresh(win);
+}
+
+/*
+ * Display the termination buttons.
+ */
+static void print_buttons(WINDOW * win, int height, int width, int selected)
+{
+ int x = width / 2 - 28;
+ int y = height - 2;
+
+ print_button(win, gettext("Select"), y, x, selected == 0);
+ print_button(win, gettext(" Exit "), y, x + 12, selected == 1);
+ print_button(win, gettext(" Help "), y, x + 24, selected == 2);
+ print_button(win, gettext(" Save "), y, x + 36, selected == 3);
+ print_button(win, gettext(" Load "), y, x + 48, selected == 4);
+
+ wmove(win, y, x + 1 + 12 * selected);
+ wrefresh(win);
+}
+
+/* scroll up n lines (n may be negative) */
+static void do_scroll(WINDOW *win, int *scroll, int n)
+{
+ /* Scroll menu up */
+ scrollok(win, TRUE);
+ wscrl(win, n);
+ scrollok(win, FALSE);
+ *scroll = *scroll + n;
+ wrefresh(win);
+}
+
+/*
+ * Display a menu for choosing among a number of options
+ */
+int dialog_menu(const char *title, const char *prompt,
+ const void *selected, int *s_scroll)
+{
+ int i, j, x, y, box_x, box_y;
+ int height, width, menu_height;
+ int key = 0, button = 0, scroll = 0, choice = 0;
+ int first_item = 0, max_choice;
+ WINDOW *dialog, *menu;
+
+do_resize:
+ height = getmaxy(stdscr);
+ width = getmaxx(stdscr);
+ if (height < MENUBOX_HEIGTH_MIN || width < MENUBOX_WIDTH_MIN)
+ return -ERRDISPLAYTOOSMALL;
+
+ height -= 4;
+ width -= 5;
+ menu_height = height - 10;
+
+ max_choice = MIN(menu_height, item_count());
+
+ /* center dialog box on screen */
+ x = (getmaxx(stdscr) - width) / 2;
+ y = (getmaxy(stdscr) - height) / 2;
+
+ draw_shadow(stdscr, y, x, height, width);
+
+ dialog = newwin(height, width, y, x);
+ keypad(dialog, TRUE);
+
+ draw_box(dialog, 0, 0, height, width,
+ dlg.dialog.atr, dlg.border.atr);
+ wattrset(dialog, dlg.border.atr);
+ mvwaddch(dialog, height - 3, 0, ACS_LTEE);
+ for (i = 0; i < width - 2; i++)
+ waddch(dialog, ACS_HLINE);
+ wattrset(dialog, dlg.dialog.atr);
+ wbkgdset(dialog, dlg.dialog.atr & A_COLOR);
+ waddch(dialog, ACS_RTEE);
+
+ print_title(dialog, title, width);
+
+ wattrset(dialog, dlg.dialog.atr);
+ print_autowrap(dialog, prompt, width - 2, 1, 3);
+
+ menu_width = width - 6;
+ box_y = height - menu_height - 5;
+ box_x = (width - menu_width) / 2 - 1;
+
+ /* create new window for the menu */
+ menu = subwin(dialog, menu_height, menu_width,
+ y + box_y + 1, x + box_x + 1);
+ keypad(menu, TRUE);
+
+ /* draw a box around the menu items */
+ draw_box(dialog, box_y, box_x, menu_height + 2, menu_width + 2,
+ dlg.menubox_border.atr, dlg.menubox.atr);
+
+ if (menu_width >= 80)
+ item_x = (menu_width - 70) / 2;
+ else
+ item_x = 4;
+
+ /* Set choice to default item */
+ item_foreach()
+ if (selected && (selected == item_data()))
+ choice = item_n();
+ /* get the saved scroll info */
+ scroll = *s_scroll;
+ if ((scroll <= choice) && (scroll + max_choice > choice) &&
+ (scroll >= 0) && (scroll + max_choice <= item_count())) {
+ first_item = scroll;
+ choice = choice - scroll;
+ } else {
+ scroll = 0;
+ }
+ if ((choice >= max_choice)) {
+ if (choice >= item_count() - max_choice / 2)
+ scroll = first_item = item_count() - max_choice;
+ else
+ scroll = first_item = choice - max_choice / 2;
+ choice = choice - scroll;
+ }
+
+ /* Print the menu */
+ for (i = 0; i < max_choice; i++) {
+ print_item(first_item + i, i, i == choice);
+ }
+
+ wnoutrefresh(menu);
+
+ print_arrows(dialog, item_count(), scroll,
+ box_y, box_x + item_x + 1, menu_height);
+
+ print_buttons(dialog, height, width, 0);
+ wmove(menu, choice, item_x + 1);
+ wrefresh(menu);
+
+ while (key != KEY_ESC) {
+ key = wgetch(menu);
+
+ if (key < 256 && isalpha(key))
+ key = tolower(key);
+
+ if (strchr("ynmh", key))
+ i = max_choice;
+ else {
+ for (i = choice + 1; i < max_choice; i++) {
+ item_set(scroll + i);
+ j = first_alpha(item_str(), "YyNnMmHh");
+ if (key == tolower(item_str()[j]))
+ break;
+ }
+ if (i == max_choice)
+ for (i = 0; i < max_choice; i++) {
+ item_set(scroll + i);
+ j = first_alpha(item_str(), "YyNnMmHh");
+ if (key == tolower(item_str()[j]))
+ break;
+ }
+ }
+
+ if (item_count() != 0 &&
+ (i < max_choice ||
+ key == KEY_UP || key == KEY_DOWN ||
+ key == '-' || key == '+' ||
+ key == KEY_PPAGE || key == KEY_NPAGE)) {
+ /* Remove highligt of current item */
+ print_item(scroll + choice, choice, FALSE);
+
+ if (key == KEY_UP || key == '-') {
+ if (choice < 2 && scroll) {
+ /* Scroll menu down */
+ do_scroll(menu, &scroll, -1);
+
+ print_item(scroll, 0, FALSE);
+ } else
+ choice = MAX(choice - 1, 0);
+
+ } else if (key == KEY_DOWN || key == '+') {
+ print_item(scroll+choice, choice, FALSE);
+
+ if ((choice > max_choice - 3) &&
+ (scroll + max_choice < item_count())) {
+ /* Scroll menu up */
+ do_scroll(menu, &scroll, 1);
+
+ print_item(scroll+max_choice - 1,
+ max_choice - 1, FALSE);
+ } else
+ choice = MIN(choice + 1, max_choice - 1);
+
+ } else if (key == KEY_PPAGE) {
+ scrollok(menu, TRUE);
+ for (i = 0; (i < max_choice); i++) {
+ if (scroll > 0) {
+ do_scroll(menu, &scroll, -1);
+ print_item(scroll, 0, FALSE);
+ } else {
+ if (choice > 0)
+ choice--;
+ }
+ }
+
+ } else if (key == KEY_NPAGE) {
+ for (i = 0; (i < max_choice); i++) {
+ if (scroll + max_choice < item_count()) {
+ do_scroll(menu, &scroll, 1);
+ print_item(scroll+max_choice-1,
+ max_choice - 1, FALSE);
+ } else {
+ if (choice + 1 < max_choice)
+ choice++;
+ }
+ }
+ } else
+ choice = i;
+
+ print_item(scroll + choice, choice, TRUE);
+
+ print_arrows(dialog, item_count(), scroll,
+ box_y, box_x + item_x + 1, menu_height);
+
+ wnoutrefresh(dialog);
+ wrefresh(menu);
+
+ continue; /* wait for another key press */
+ }
+
+ switch (key) {
+ case KEY_LEFT:
+ case TAB:
+ case KEY_RIGHT:
+ button = ((key == KEY_LEFT ? --button : ++button) < 0)
+ ? 4 : (button > 4 ? 0 : button);
+
+ print_buttons(dialog, height, width, button);
+ wrefresh(menu);
+ break;
+ case ' ':
+ case 's':
+ case 'y':
+ case 'n':
+ case 'm':
+ case '/':
+ case 'h':
+ case '?':
+ case 'z':
+ case '\n':
+ /* save scroll info */
+ *s_scroll = scroll;
+ delwin(menu);
+ delwin(dialog);
+ item_set(scroll + choice);
+ item_set_selected(1);
+ switch (key) {
+ case 'h':
+ case '?':
+ return 2;
+ case 's':
+ case 'y':
+ return 5;
+ case 'n':
+ return 6;
+ case 'm':
+ return 7;
+ case ' ':
+ return 8;
+ case '/':
+ return 9;
+ case 'z':
+ return 10;
+ case '\n':
+ return button;
+ }
+ return 0;
+ case 'e':
+ case 'x':
+ key = KEY_ESC;
+ break;
+ case KEY_ESC:
+ key = on_key_esc(menu);
+ break;
+ case KEY_RESIZE:
+ on_key_resize();
+ delwin(menu);
+ delwin(dialog);
+ goto do_resize;
+ }
+ }
+ delwin(menu);
+ delwin(dialog);
+ return key; /* ESC pressed */
+}
diff --git a/scripts/kconfig/lxdialog/textbox.c b/scripts/kconfig/lxdialog/textbox.c
new file mode 100644
index 0000000..1773319
--- /dev/null
+++ b/scripts/kconfig/lxdialog/textbox.c
@@ -0,0 +1,408 @@
+/*
+ * textbox.c -- implements the text box
+ *
+ * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
+ * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "dialog.h"
+
+static void back_lines(int n);
+static void print_page(WINDOW *win, int height, int width, update_text_fn
+ update_text, void *data);
+static void print_line(WINDOW *win, int row, int width);
+static char *get_line(void);
+static void print_position(WINDOW * win);
+
+static int hscroll;
+static int begin_reached, end_reached, page_length;
+static char *buf;
+static char *page;
+
+/*
+ * refresh window content
+ */
+static void refresh_text_box(WINDOW *dialog, WINDOW *box, int boxh, int boxw,
+ int cur_y, int cur_x, update_text_fn update_text,
+ void *data)
+{
+ print_page(box, boxh, boxw, update_text, data);
+ print_position(dialog);
+ wmove(dialog, cur_y, cur_x); /* Restore cursor position */
+ wrefresh(dialog);
+}
+
+
+/*
+ * Display text from a file in a dialog box.
+ *
+ * keys is a null-terminated array
+ * update_text() may not add or remove any '\n' or '\0' in tbuf
+ */
+int dialog_textbox(const char *title, char *tbuf, int initial_height,
+ int initial_width, int *keys, int *_vscroll, int *_hscroll,
+ update_text_fn update_text, void *data)
+{
+ int i, x, y, cur_x, cur_y, key = 0;
+ int height, width, boxh, boxw;
+ WINDOW *dialog, *box;
+ bool done = false;
+
+ begin_reached = 1;
+ end_reached = 0;
+ page_length = 0;
+ hscroll = 0;
+ buf = tbuf;
+ page = buf; /* page is pointer to start of page to be displayed */
+
+ if (_vscroll && *_vscroll) {
+ begin_reached = 0;
+
+ for (i = 0; i < *_vscroll; i++)
+ get_line();
+ }
+ if (_hscroll)
+ hscroll = *_hscroll;
+
+do_resize:
+ getmaxyx(stdscr, height, width);
+ if (height < TEXTBOX_HEIGTH_MIN || width < TEXTBOX_WIDTH_MIN)
+ return -ERRDISPLAYTOOSMALL;
+ if (initial_height != 0)
+ height = initial_height;
+ else
+ if (height > 4)
+ height -= 4;
+ else
+ height = 0;
+ if (initial_width != 0)
+ width = initial_width;
+ else
+ if (width > 5)
+ width -= 5;
+ else
+ width = 0;
+
+ /* center dialog box on screen */
+ x = (getmaxx(stdscr) - width) / 2;
+ y = (getmaxy(stdscr) - height) / 2;
+
+ draw_shadow(stdscr, y, x, height, width);
+
+ dialog = newwin(height, width, y, x);
+ keypad(dialog, TRUE);
+
+ /* Create window for box region, used for scrolling text */
+ boxh = height - 4;
+ boxw = width - 2;
+ box = subwin(dialog, boxh, boxw, y + 1, x + 1);
+ wattrset(box, dlg.dialog.atr);
+ wbkgdset(box, dlg.dialog.atr & A_COLOR);
+
+ keypad(box, TRUE);
+
+ /* register the new window, along with its borders */
+ draw_box(dialog, 0, 0, height, width,
+ dlg.dialog.atr, dlg.border.atr);
+
+ wattrset(dialog, dlg.border.atr);
+ mvwaddch(dialog, height - 3, 0, ACS_LTEE);
+ for (i = 0; i < width - 2; i++)
+ waddch(dialog, ACS_HLINE);
+ wattrset(dialog, dlg.dialog.atr);
+ wbkgdset(dialog, dlg.dialog.atr & A_COLOR);
+ waddch(dialog, ACS_RTEE);
+
+ print_title(dialog, title, width);
+
+ print_button(dialog, gettext(" Exit "), height - 2, width / 2 - 4, TRUE);
+ wnoutrefresh(dialog);
+ getyx(dialog, cur_y, cur_x); /* Save cursor position */
+
+ /* Print first page of text */
+ attr_clear(box, boxh, boxw, dlg.dialog.atr);
+ refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x, update_text,
+ data);
+
+ while (!done) {
+ key = wgetch(dialog);
+ switch (key) {
+ case 'E': /* Exit */
+ case 'e':
+ case 'X':
+ case 'x':
+ case 'q':
+ case '\n':
+ done = true;
+ break;
+ case 'g': /* First page */
+ case KEY_HOME:
+ if (!begin_reached) {
+ begin_reached = 1;
+ page = buf;
+ refresh_text_box(dialog, box, boxh, boxw,
+ cur_y, cur_x, update_text,
+ data);
+ }
+ break;
+ case 'G': /* Last page */
+ case KEY_END:
+
+ end_reached = 1;
+ /* point to last char in buf */
+ page = buf + strlen(buf);
+ back_lines(boxh);
+ refresh_text_box(dialog, box, boxh, boxw, cur_y,
+ cur_x, update_text, data);
+ break;
+ case 'K': /* Previous line */
+ case 'k':
+ case KEY_UP:
+ if (begin_reached)
+ break;
+
+ back_lines(page_length + 1);
+ refresh_text_box(dialog, box, boxh, boxw, cur_y,
+ cur_x, update_text, data);
+ break;
+ case 'B': /* Previous page */
+ case 'b':
+ case 'u':
+ case KEY_PPAGE:
+ if (begin_reached)
+ break;
+ back_lines(page_length + boxh);
+ refresh_text_box(dialog, box, boxh, boxw, cur_y,
+ cur_x, update_text, data);
+ break;
+ case 'J': /* Next line */
+ case 'j':
+ case KEY_DOWN:
+ if (end_reached)
+ break;
+
+ back_lines(page_length - 1);
+ refresh_text_box(dialog, box, boxh, boxw, cur_y,
+ cur_x, update_text, data);
+ break;
+ case KEY_NPAGE: /* Next page */
+ case ' ':
+ case 'd':
+ if (end_reached)
+ break;
+
+ begin_reached = 0;
+ refresh_text_box(dialog, box, boxh, boxw, cur_y,
+ cur_x, update_text, data);
+ break;
+ case '0': /* Beginning of line */
+ case 'H': /* Scroll left */
+ case 'h':
+ case KEY_LEFT:
+ if (hscroll <= 0)
+ break;
+
+ if (key == '0')
+ hscroll = 0;
+ else
+ hscroll--;
+ /* Reprint current page to scroll horizontally */
+ back_lines(page_length);
+ refresh_text_box(dialog, box, boxh, boxw, cur_y,
+ cur_x, update_text, data);
+ break;
+ case 'L': /* Scroll right */
+ case 'l':
+ case KEY_RIGHT:
+ if (hscroll >= MAX_LEN)
+ break;
+ hscroll++;
+ /* Reprint current page to scroll horizontally */
+ back_lines(page_length);
+ refresh_text_box(dialog, box, boxh, boxw, cur_y,
+ cur_x, update_text, data);
+ break;
+ case KEY_ESC:
+ if (on_key_esc(dialog) == KEY_ESC)
+ done = true;
+ break;
+ case KEY_RESIZE:
+ back_lines(height);
+ delwin(box);
+ delwin(dialog);
+ on_key_resize();
+ goto do_resize;
+ default:
+ for (i = 0; keys[i]; i++) {
+ if (key == keys[i]) {
+ done = true;
+ break;
+ }
+ }
+ }
+ }
+ delwin(box);
+ delwin(dialog);
+ if (_vscroll) {
+ const char *s;
+
+ s = buf;
+ *_vscroll = 0;
+ back_lines(page_length);
+ while (s < page && (s = strchr(s, '\n'))) {
+ (*_vscroll)++;
+ s++;
+ }
+ }
+ if (_hscroll)
+ *_hscroll = hscroll;
+ return key;
+}
+
+/*
+ * Go back 'n' lines in text. Called by dialog_textbox().
+ * 'page' will be updated to point to the desired line in 'buf'.
+ */
+static void back_lines(int n)
+{
+ int i;
+
+ begin_reached = 0;
+ /* Go back 'n' lines */
+ for (i = 0; i < n; i++) {
+ if (*page == '\0') {
+ if (end_reached) {
+ end_reached = 0;
+ continue;
+ }
+ }
+ if (page == buf) {
+ begin_reached = 1;
+ return;
+ }
+ page--;
+ do {
+ if (page == buf) {
+ begin_reached = 1;
+ return;
+ }
+ page--;
+ } while (*page != '\n');
+ page++;
+ }
+}
+
+/*
+ * Print a new page of text.
+ */
+static void print_page(WINDOW *win, int height, int width, update_text_fn
+ update_text, void *data)
+{
+ int i, passed_end = 0;
+
+ if (update_text) {
+ char *end;
+
+ for (i = 0; i < height; i++)
+ get_line();
+ end = page;
+ back_lines(height);
+ update_text(buf, page - buf, end - buf, data);
+ }
+
+ page_length = 0;
+ for (i = 0; i < height; i++) {
+ print_line(win, i, width);
+ if (!passed_end)
+ page_length++;
+ if (end_reached && !passed_end)
+ passed_end = 1;
+ }
+ wnoutrefresh(win);
+}
+
+/*
+ * Print a new line of text.
+ */
+static void print_line(WINDOW * win, int row, int width)
+{
+ char *line;
+
+ line = get_line();
+ line += MIN(strlen(line), hscroll); /* Scroll horizontally */
+ wmove(win, row, 0); /* move cursor to correct line */
+ waddch(win, ' ');
+ waddnstr(win, line, MIN(strlen(line), width - 2));
+
+ /* Clear 'residue' of previous line */
+#if OLD_NCURSES
+ {
+ int x = getcurx(win);
+ int i;
+ for (i = 0; i < width - x; i++)
+ waddch(win, ' ');
+ }
+#else
+ wclrtoeol(win);
+#endif
+}
+
+/*
+ * Return current line of text. Called by dialog_textbox() and print_line().
+ * 'page' should point to start of current line before calling, and will be
+ * updated to point to start of next line.
+ */
+static char *get_line(void)
+{
+ int i = 0;
+ static char line[MAX_LEN + 1];
+
+ end_reached = 0;
+ while (*page != '\n') {
+ if (*page == '\0') {
+ end_reached = 1;
+ break;
+ } else if (i < MAX_LEN)
+ line[i++] = *(page++);
+ else {
+ /* Truncate lines longer than MAX_LEN characters */
+ if (i == MAX_LEN)
+ line[i++] = '\0';
+ page++;
+ }
+ }
+ if (i <= MAX_LEN)
+ line[i] = '\0';
+ if (!end_reached)
+ page++; /* move past '\n' */
+
+ return line;
+}
+
+/*
+ * Print current position
+ */
+static void print_position(WINDOW * win)
+{
+ int percent;
+
+ wattrset(win, dlg.position_indicator.atr);
+ wbkgdset(win, dlg.position_indicator.atr & A_COLOR);
+ percent = (page - buf) * 100 / strlen(buf);
+ wmove(win, getmaxy(win) - 3, getmaxx(win) - 9);
+ wprintw(win, "(%3d%%)", percent);
+}
diff --git a/scripts/kconfig/lxdialog/util.c b/scripts/kconfig/lxdialog/util.c
new file mode 100644
index 0000000..f7abdeb
--- /dev/null
+++ b/scripts/kconfig/lxdialog/util.c
@@ -0,0 +1,713 @@
+/*
+ * util.c
+ *
+ * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
+ * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <stdarg.h>
+
+#include "dialog.h"
+
+/* Needed in signal handler in mconf.c */
+int saved_x, saved_y;
+
+struct dialog_info dlg;
+
+static void set_mono_theme(void)
+{
+ dlg.screen.atr = A_NORMAL;
+ dlg.shadow.atr = A_NORMAL;
+ dlg.dialog.atr = A_NORMAL;
+ dlg.title.atr = A_BOLD;
+ dlg.border.atr = A_NORMAL;
+ dlg.button_active.atr = A_REVERSE;
+ dlg.button_inactive.atr = A_DIM;
+ dlg.button_key_active.atr = A_REVERSE;
+ dlg.button_key_inactive.atr = A_BOLD;
+ dlg.button_label_active.atr = A_REVERSE;
+ dlg.button_label_inactive.atr = A_NORMAL;
+ dlg.inputbox.atr = A_NORMAL;
+ dlg.inputbox_border.atr = A_NORMAL;
+ dlg.searchbox.atr = A_NORMAL;
+ dlg.searchbox_title.atr = A_BOLD;
+ dlg.searchbox_border.atr = A_NORMAL;
+ dlg.position_indicator.atr = A_BOLD;
+ dlg.menubox.atr = A_NORMAL;
+ dlg.menubox_border.atr = A_NORMAL;
+ dlg.item.atr = A_NORMAL;
+ dlg.item_selected.atr = A_REVERSE;
+ dlg.tag.atr = A_BOLD;
+ dlg.tag_selected.atr = A_REVERSE;
+ dlg.tag_key.atr = A_BOLD;
+ dlg.tag_key_selected.atr = A_REVERSE;
+ dlg.check.atr = A_BOLD;
+ dlg.check_selected.atr = A_REVERSE;
+ dlg.uarrow.atr = A_BOLD;
+ dlg.darrow.atr = A_BOLD;
+}
+
+#define DLG_COLOR(dialog, f, b, h) \
+do { \
+ dlg.dialog.fg = (f); \
+ dlg.dialog.bg = (b); \
+ dlg.dialog.hl = (h); \
+} while (0)
+
+static void set_classic_theme(void)
+{
+ DLG_COLOR(screen, COLOR_CYAN, COLOR_BLUE, true);
+ DLG_COLOR(shadow, COLOR_BLACK, COLOR_BLACK, true);
+ DLG_COLOR(dialog, COLOR_BLACK, COLOR_WHITE, false);
+ DLG_COLOR(title, COLOR_YELLOW, COLOR_WHITE, true);
+ DLG_COLOR(border, COLOR_WHITE, COLOR_WHITE, true);
+ DLG_COLOR(button_active, COLOR_WHITE, COLOR_BLUE, true);
+ DLG_COLOR(button_inactive, COLOR_BLACK, COLOR_WHITE, false);
+ DLG_COLOR(button_key_active, COLOR_WHITE, COLOR_BLUE, true);
+ DLG_COLOR(button_key_inactive, COLOR_RED, COLOR_WHITE, false);
+ DLG_COLOR(button_label_active, COLOR_YELLOW, COLOR_BLUE, true);
+ DLG_COLOR(button_label_inactive, COLOR_BLACK, COLOR_WHITE, true);
+ DLG_COLOR(inputbox, COLOR_BLACK, COLOR_WHITE, false);
+ DLG_COLOR(inputbox_border, COLOR_BLACK, COLOR_WHITE, false);
+ DLG_COLOR(searchbox, COLOR_BLACK, COLOR_WHITE, false);
+ DLG_COLOR(searchbox_title, COLOR_YELLOW, COLOR_WHITE, true);
+ DLG_COLOR(searchbox_border, COLOR_WHITE, COLOR_WHITE, true);
+ DLG_COLOR(position_indicator, COLOR_YELLOW, COLOR_WHITE, true);
+ DLG_COLOR(menubox, COLOR_BLACK, COLOR_WHITE, false);
+ DLG_COLOR(menubox_border, COLOR_WHITE, COLOR_WHITE, true);
+ DLG_COLOR(item, COLOR_BLACK, COLOR_WHITE, false);
+ DLG_COLOR(item_selected, COLOR_WHITE, COLOR_BLUE, true);
+ DLG_COLOR(tag, COLOR_YELLOW, COLOR_WHITE, true);
+ DLG_COLOR(tag_selected, COLOR_YELLOW, COLOR_BLUE, true);
+ DLG_COLOR(tag_key, COLOR_YELLOW, COLOR_WHITE, true);
+ DLG_COLOR(tag_key_selected, COLOR_YELLOW, COLOR_BLUE, true);
+ DLG_COLOR(check, COLOR_BLACK, COLOR_WHITE, false);
+ DLG_COLOR(check_selected, COLOR_WHITE, COLOR_BLUE, true);
+ DLG_COLOR(uarrow, COLOR_GREEN, COLOR_WHITE, true);
+ DLG_COLOR(darrow, COLOR_GREEN, COLOR_WHITE, true);
+}
+
+static void set_blackbg_theme(void)
+{
+ DLG_COLOR(screen, COLOR_RED, COLOR_BLACK, true);
+ DLG_COLOR(shadow, COLOR_BLACK, COLOR_BLACK, false);
+ DLG_COLOR(dialog, COLOR_WHITE, COLOR_BLACK, false);
+ DLG_COLOR(title, COLOR_RED, COLOR_BLACK, false);
+ DLG_COLOR(border, COLOR_BLACK, COLOR_BLACK, true);
+
+ DLG_COLOR(button_active, COLOR_YELLOW, COLOR_RED, false);
+ DLG_COLOR(button_inactive, COLOR_YELLOW, COLOR_BLACK, false);
+ DLG_COLOR(button_key_active, COLOR_YELLOW, COLOR_RED, true);
+ DLG_COLOR(button_key_inactive, COLOR_RED, COLOR_BLACK, false);
+ DLG_COLOR(button_label_active, COLOR_WHITE, COLOR_RED, false);
+ DLG_COLOR(button_label_inactive, COLOR_BLACK, COLOR_BLACK, true);
+
+ DLG_COLOR(inputbox, COLOR_YELLOW, COLOR_BLACK, false);
+ DLG_COLOR(inputbox_border, COLOR_YELLOW, COLOR_BLACK, false);
+
+ DLG_COLOR(searchbox, COLOR_YELLOW, COLOR_BLACK, false);
+ DLG_COLOR(searchbox_title, COLOR_YELLOW, COLOR_BLACK, true);
+ DLG_COLOR(searchbox_border, COLOR_BLACK, COLOR_BLACK, true);
+
+ DLG_COLOR(position_indicator, COLOR_RED, COLOR_BLACK, false);
+
+ DLG_COLOR(menubox, COLOR_YELLOW, COLOR_BLACK, false);
+ DLG_COLOR(menubox_border, COLOR_BLACK, COLOR_BLACK, true);
+
+ DLG_COLOR(item, COLOR_WHITE, COLOR_BLACK, false);
+ DLG_COLOR(item_selected, COLOR_WHITE, COLOR_RED, false);
+
+ DLG_COLOR(tag, COLOR_RED, COLOR_BLACK, false);
+ DLG_COLOR(tag_selected, COLOR_YELLOW, COLOR_RED, true);
+ DLG_COLOR(tag_key, COLOR_RED, COLOR_BLACK, false);
+ DLG_COLOR(tag_key_selected, COLOR_YELLOW, COLOR_RED, true);
+
+ DLG_COLOR(check, COLOR_YELLOW, COLOR_BLACK, false);
+ DLG_COLOR(check_selected, COLOR_YELLOW, COLOR_RED, true);
+
+ DLG_COLOR(uarrow, COLOR_RED, COLOR_BLACK, false);
+ DLG_COLOR(darrow, COLOR_RED, COLOR_BLACK, false);
+}
+
+static void set_bluetitle_theme(void)
+{
+ set_classic_theme();
+ DLG_COLOR(title, COLOR_BLUE, COLOR_WHITE, true);
+ DLG_COLOR(button_key_active, COLOR_YELLOW, COLOR_BLUE, true);
+ DLG_COLOR(button_label_active, COLOR_WHITE, COLOR_BLUE, true);
+ DLG_COLOR(searchbox_title, COLOR_BLUE, COLOR_WHITE, true);
+ DLG_COLOR(position_indicator, COLOR_BLUE, COLOR_WHITE, true);
+ DLG_COLOR(tag, COLOR_BLUE, COLOR_WHITE, true);
+ DLG_COLOR(tag_key, COLOR_BLUE, COLOR_WHITE, true);
+
+}
+
+/*
+ * Select color theme
+ */
+static int set_theme(const char *theme)
+{
+ int use_color = 1;
+ if (!theme)
+ set_bluetitle_theme();
+ else if (strcmp(theme, "classic") == 0)
+ set_classic_theme();
+ else if (strcmp(theme, "bluetitle") == 0)
+ set_bluetitle_theme();
+ else if (strcmp(theme, "blackbg") == 0)
+ set_blackbg_theme();
+ else if (strcmp(theme, "mono") == 0)
+ use_color = 0;
+
+ return use_color;
+}
+
+static void init_one_color(struct dialog_color *color)
+{
+ static int pair = 0;
+
+ pair++;
+ init_pair(pair, color->fg, color->bg);
+ if (color->hl)
+ color->atr = A_BOLD | COLOR_PAIR(pair);
+ else
+ color->atr = COLOR_PAIR(pair);
+}
+
+static void init_dialog_colors(void)
+{
+ init_one_color(&dlg.screen);
+ init_one_color(&dlg.shadow);
+ init_one_color(&dlg.dialog);
+ init_one_color(&dlg.title);
+ init_one_color(&dlg.border);
+ init_one_color(&dlg.button_active);
+ init_one_color(&dlg.button_inactive);
+ init_one_color(&dlg.button_key_active);
+ init_one_color(&dlg.button_key_inactive);
+ init_one_color(&dlg.button_label_active);
+ init_one_color(&dlg.button_label_inactive);
+ init_one_color(&dlg.inputbox);
+ init_one_color(&dlg.inputbox_border);
+ init_one_color(&dlg.searchbox);
+ init_one_color(&dlg.searchbox_title);
+ init_one_color(&dlg.searchbox_border);
+ init_one_color(&dlg.position_indicator);
+ init_one_color(&dlg.menubox);
+ init_one_color(&dlg.menubox_border);
+ init_one_color(&dlg.item);
+ init_one_color(&dlg.item_selected);
+ init_one_color(&dlg.tag);
+ init_one_color(&dlg.tag_selected);
+ init_one_color(&dlg.tag_key);
+ init_one_color(&dlg.tag_key_selected);
+ init_one_color(&dlg.check);
+ init_one_color(&dlg.check_selected);
+ init_one_color(&dlg.uarrow);
+ init_one_color(&dlg.darrow);
+}
+
+/*
+ * Setup for color display
+ */
+static void color_setup(const char *theme)
+{
+ int use_color;
+
+ use_color = set_theme(theme);
+ if (use_color && has_colors()) {
+ start_color();
+ init_dialog_colors();
+ } else
+ set_mono_theme();
+}
+
+/*
+ * Set window to attribute 'attr'
+ */
+void attr_clear(WINDOW * win, int height, int width, chtype attr)
+{
+ int i, j;
+
+ wattrset(win, attr);
+ for (i = 0; i < height; i++) {
+ wmove(win, i, 0);
+ for (j = 0; j < width; j++)
+ waddch(win, ' ');
+ }
+ touchwin(win);
+}
+
+void dialog_clear(void)
+{
+ int lines, columns;
+
+ lines = getmaxy(stdscr);
+ columns = getmaxx(stdscr);
+
+ attr_clear(stdscr, lines, columns, dlg.screen.atr);
+ /* Display background title if it exists ... - SLH */
+ if (dlg.backtitle != NULL) {
+ int i, len = 0, skip = 0;
+ struct subtitle_list *pos;
+
+ wattrset(stdscr, dlg.screen.atr);
+ mvwaddstr(stdscr, 0, 1, (char *)dlg.backtitle);
+
+ for (pos = dlg.subtitles; pos != NULL; pos = pos->next) {
+ /* 3 is for the arrow and spaces */
+ len += strlen(pos->text) + 3;
+ }
+
+ wmove(stdscr, 1, 1);
+ if (len > columns - 2) {
+ const char *ellipsis = "[...] ";
+ waddstr(stdscr, ellipsis);
+ skip = len - (columns - 2 - strlen(ellipsis));
+ }
+
+ for (pos = dlg.subtitles; pos != NULL; pos = pos->next) {
+ if (skip == 0)
+ waddch(stdscr, ACS_RARROW);
+ else
+ skip--;
+
+ if (skip == 0)
+ waddch(stdscr, ' ');
+ else
+ skip--;
+
+ if (skip < strlen(pos->text)) {
+ waddstr(stdscr, pos->text + skip);
+ skip = 0;
+ } else
+ skip -= strlen(pos->text);
+
+ if (skip == 0)
+ waddch(stdscr, ' ');
+ else
+ skip--;
+ }
+
+ for (i = len + 1; i < columns - 1; i++)
+ waddch(stdscr, ACS_HLINE);
+ }
+ wnoutrefresh(stdscr);
+}
+
+/*
+ * Do some initialization for dialog
+ */
+int init_dialog(const char *backtitle)
+{
+ int height, width;
+
+ initscr(); /* Init curses */
+
+ /* Get current cursor position for signal handler in mconf.c */
+ getyx(stdscr, saved_y, saved_x);
+
+ getmaxyx(stdscr, height, width);
+ if (height < WINDOW_HEIGTH_MIN || width < WINDOW_WIDTH_MIN) {
+ endwin();
+ return -ERRDISPLAYTOOSMALL;
+ }
+
+ dlg.backtitle = backtitle;
+ color_setup(getenv("MENUCONFIG_COLOR"));
+
+ keypad(stdscr, TRUE);
+ cbreak();
+ noecho();
+ dialog_clear();
+
+ return 0;
+}
+
+void set_dialog_backtitle(const char *backtitle)
+{
+ dlg.backtitle = backtitle;
+}
+
+void set_dialog_subtitles(struct subtitle_list *subtitles)
+{
+ dlg.subtitles = subtitles;
+}
+
+/*
+ * End using dialog functions.
+ */
+void end_dialog(int x, int y)
+{
+ /* move cursor back to original position */
+ move(y, x);
+ refresh();
+ endwin();
+}
+
+/* Print the title of the dialog. Center the title and truncate
+ * tile if wider than dialog (- 2 chars).
+ **/
+void print_title(WINDOW *dialog, const char *title, int width)
+{
+ if (title) {
+ int tlen = MIN(width - 2, strlen(title));
+ wattrset(dialog, dlg.title.atr);
+ mvwaddch(dialog, 0, (width - tlen) / 2 - 1, ' ');
+ mvwaddnstr(dialog, 0, (width - tlen)/2, title, tlen);
+ waddch(dialog, ' ');
+ }
+}
+
+/*
+ * Print a string of text in a window, automatically wrap around to the
+ * next line if the string is too long to fit on one line. Newline
+ * characters '\n' are propperly processed. We start on a new line
+ * if there is no room for at least 4 nonblanks following a double-space.
+ */
+void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x)
+{
+ int newl, cur_x, cur_y;
+ int prompt_len, room, wlen;
+ char tempstr[MAX_LEN + 1], *word, *sp, *sp2, *newline_separator = 0;
+
+ strcpy(tempstr, prompt);
+
+ prompt_len = strlen(tempstr);
+
+ if (prompt_len <= width - x * 2) { /* If prompt is short */
+ wmove(win, y, (width - prompt_len) / 2);
+ waddstr(win, tempstr);
+ } else {
+ cur_x = x;
+ cur_y = y;
+ newl = 1;
+ word = tempstr;
+ while (word && *word) {
+ sp = strpbrk(word, "\n ");
+ if (sp && *sp == '\n')
+ newline_separator = sp;
+
+ if (sp)
+ *sp++ = 0;
+
+ /* Wrap to next line if either the word does not fit,
+ or it is the first word of a new sentence, and it is
+ short, and the next word does not fit. */
+ room = width - cur_x;
+ wlen = strlen(word);
+ if (wlen > room ||
+ (newl && wlen < 4 && sp
+ && wlen + 1 + strlen(sp) > room
+ && (!(sp2 = strpbrk(sp, "\n "))
+ || wlen + 1 + (sp2 - sp) > room))) {
+ cur_y++;
+ cur_x = x;
+ }
+ wmove(win, cur_y, cur_x);
+ waddstr(win, word);
+ getyx(win, cur_y, cur_x);
+
+ /* Move to the next line if the word separator was a newline */
+ if (newline_separator) {
+ cur_y++;
+ cur_x = x;
+ newline_separator = 0;
+ } else
+ cur_x++;
+
+ if (sp && *sp == ' ') {
+ cur_x++; /* double space */
+ while (*++sp == ' ') ;
+ newl = 1;
+ } else
+ newl = 0;
+ word = sp;
+ }
+ }
+}
+
+/*
+ * Print a button
+ */
+void print_button(WINDOW * win, const char *label, int y, int x, int selected)
+{
+ int i, temp;
+
+ wmove(win, y, x);
+ wattrset(win, selected ? dlg.button_active.atr
+ : dlg.button_inactive.atr);
+ waddstr(win, "<");
+ temp = strspn(label, " ");
+ label += temp;
+ wattrset(win, selected ? dlg.button_label_active.atr
+ : dlg.button_label_inactive.atr);
+ for (i = 0; i < temp; i++)
+ waddch(win, ' ');
+ wattrset(win, selected ? dlg.button_key_active.atr
+ : dlg.button_key_inactive.atr);
+ waddch(win, label[0]);
+ wattrset(win, selected ? dlg.button_label_active.atr
+ : dlg.button_label_inactive.atr);
+ waddstr(win, (char *)label + 1);
+ wattrset(win, selected ? dlg.button_active.atr
+ : dlg.button_inactive.atr);
+ waddstr(win, ">");
+ wmove(win, y, x + temp + 1);
+}
+
+/*
+ * Draw a rectangular box with line drawing characters
+ */
+void
+draw_box(WINDOW * win, int y, int x, int height, int width,
+ chtype box, chtype border)
+{
+ int i, j;
+
+ wattrset(win, 0);
+ for (i = 0; i < height; i++) {
+ wmove(win, y + i, x);
+ for (j = 0; j < width; j++)
+ if (!i && !j)
+ waddch(win, border | ACS_ULCORNER);
+ else if (i == height - 1 && !j)
+ waddch(win, border | ACS_LLCORNER);
+ else if (!i && j == width - 1)
+ waddch(win, box | ACS_URCORNER);
+ else if (i == height - 1 && j == width - 1)
+ waddch(win, box | ACS_LRCORNER);
+ else if (!i)
+ waddch(win, border | ACS_HLINE);
+ else if (i == height - 1)
+ waddch(win, box | ACS_HLINE);
+ else if (!j)
+ waddch(win, border | ACS_VLINE);
+ else if (j == width - 1)
+ waddch(win, box | ACS_VLINE);
+ else
+ waddch(win, box | ' ');
+ }
+}
+
+/*
+ * Draw shadows along the right and bottom edge to give a more 3D look
+ * to the boxes
+ */
+void draw_shadow(WINDOW * win, int y, int x, int height, int width)
+{
+ int i;
+
+ if (has_colors()) { /* Whether terminal supports color? */
+ wattrset(win, dlg.shadow.atr);
+ wmove(win, y + height, x + 2);
+ for (i = 0; i < width; i++)
+ waddch(win, winch(win) & A_CHARTEXT);
+ for (i = y + 1; i < y + height + 1; i++) {
+ wmove(win, i, x + width);
+ waddch(win, winch(win) & A_CHARTEXT);
+ waddch(win, winch(win) & A_CHARTEXT);
+ }
+ wnoutrefresh(win);
+ }
+}
+
+/*
+ * Return the position of the first alphabetic character in a string.
+ */
+int first_alpha(const char *string, const char *exempt)
+{
+ int i, in_paren = 0, c;
+
+ for (i = 0; i < strlen(string); i++) {
+ c = tolower(string[i]);
+
+ if (strchr("<[(", c))
+ ++in_paren;
+ if (strchr(">])", c) && in_paren > 0)
+ --in_paren;
+
+ if ((!in_paren) && isalpha(c) && strchr(exempt, c) == 0)
+ return i;
+ }
+
+ return 0;
+}
+
+/*
+ * ncurses uses ESC to detect escaped char sequences. This resutl in
+ * a small timeout before ESC is actually delivered to the application.
+ * lxdialog suggest <ESC> <ESC> which is correctly translated to two
+ * times esc. But then we need to ignore the second esc to avoid stepping
+ * out one menu too much. Filter away all escaped key sequences since
+ * keypad(FALSE) turn off ncurses support for escape sequences - and thats
+ * needed to make notimeout() do as expected.
+ */
+int on_key_esc(WINDOW *win)
+{
+ int key;
+ int key2;
+ int key3;
+
+ nodelay(win, TRUE);
+ keypad(win, FALSE);
+ key = wgetch(win);
+ key2 = wgetch(win);
+ do {
+ key3 = wgetch(win);
+ } while (key3 != ERR);
+ nodelay(win, FALSE);
+ keypad(win, TRUE);
+ if (key == KEY_ESC && key2 == ERR)
+ return KEY_ESC;
+ else if (key != ERR && key != KEY_ESC && key2 == ERR)
+ ungetch(key);
+
+ return -1;
+}
+
+/* redraw screen in new size */
+int on_key_resize(void)
+{
+ dialog_clear();
+ return KEY_RESIZE;
+}
+
+struct dialog_list *item_cur;
+struct dialog_list item_nil;
+struct dialog_list *item_head;
+
+void item_reset(void)
+{
+ struct dialog_list *p, *next;
+
+ for (p = item_head; p; p = next) {
+ next = p->next;
+ free(p);
+ }
+ item_head = NULL;
+ item_cur = &item_nil;
+}
+
+void item_make(const char *fmt, ...)
+{
+ va_list ap;
+ struct dialog_list *p = malloc(sizeof(*p));
+
+ if (item_head)
+ item_cur->next = p;
+ else
+ item_head = p;
+ item_cur = p;
+ memset(p, 0, sizeof(*p));
+
+ va_start(ap, fmt);
+ vsnprintf(item_cur->node.str, sizeof(item_cur->node.str), fmt, ap);
+ va_end(ap);
+}
+
+void item_add_str(const char *fmt, ...)
+{
+ va_list ap;
+ size_t avail;
+
+ avail = sizeof(item_cur->node.str) - strlen(item_cur->node.str);
+
+ va_start(ap, fmt);
+ vsnprintf(item_cur->node.str + strlen(item_cur->node.str),
+ avail, fmt, ap);
+ item_cur->node.str[sizeof(item_cur->node.str) - 1] = '\0';
+ va_end(ap);
+}
+
+void item_set_tag(char tag)
+{
+ item_cur->node.tag = tag;
+}
+void item_set_data(void *ptr)
+{
+ item_cur->node.data = ptr;
+}
+
+void item_set_selected(int val)
+{
+ item_cur->node.selected = val;
+}
+
+int item_activate_selected(void)
+{
+ item_foreach()
+ if (item_is_selected())
+ return 1;
+ return 0;
+}
+
+void *item_data(void)
+{
+ return item_cur->node.data;
+}
+
+char item_tag(void)
+{
+ return item_cur->node.tag;
+}
+
+int item_count(void)
+{
+ int n = 0;
+ struct dialog_list *p;
+
+ for (p = item_head; p; p = p->next)
+ n++;
+ return n;
+}
+
+void item_set(int n)
+{
+ int i = 0;
+ item_foreach()
+ if (i++ == n)
+ return;
+}
+
+int item_n(void)
+{
+ int n = 0;
+ struct dialog_list *p;
+
+ for (p = item_head; p; p = p->next) {
+ if (p == item_cur)
+ return n;
+ n++;
+ }
+ return 0;
+}
+
+const char *item_str(void)
+{
+ return item_cur->node.str;
+}
+
+int item_is_selected(void)
+{
+ return (item_cur->node.selected != 0);
+}
+
+int item_is_tag(char tag)
+{
+ return (item_cur->node.tag == tag);
+}
diff --git a/scripts/kconfig/lxdialog/yesno.c b/scripts/kconfig/lxdialog/yesno.c
new file mode 100644
index 0000000..676fb2f
--- /dev/null
+++ b/scripts/kconfig/lxdialog/yesno.c
@@ -0,0 +1,114 @@
+/*
+ * yesno.c -- implements the yes/no box
+ *
+ * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
+ * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "dialog.h"
+
+/*
+ * Display termination buttons
+ */
+static void print_buttons(WINDOW * dialog, int height, int width, int selected)
+{
+ int x = width / 2 - 10;
+ int y = height - 2;
+
+ print_button(dialog, gettext(" Yes "), y, x, selected == 0);
+ print_button(dialog, gettext(" No "), y, x + 13, selected == 1);
+
+ wmove(dialog, y, x + 1 + 13 * selected);
+ wrefresh(dialog);
+}
+
+/*
+ * Display a dialog box with two buttons - Yes and No
+ */
+int dialog_yesno(const char *title, const char *prompt, int height, int width)
+{
+ int i, x, y, key = 0, button = 0;
+ WINDOW *dialog;
+
+do_resize:
+ if (getmaxy(stdscr) < (height + YESNO_HEIGTH_MIN))
+ return -ERRDISPLAYTOOSMALL;
+ if (getmaxx(stdscr) < (width + YESNO_WIDTH_MIN))
+ return -ERRDISPLAYTOOSMALL;
+
+ /* center dialog box on screen */
+ x = (getmaxx(stdscr) - width) / 2;
+ y = (getmaxy(stdscr) - height) / 2;
+
+ draw_shadow(stdscr, y, x, height, width);
+
+ dialog = newwin(height, width, y, x);
+ keypad(dialog, TRUE);
+
+ draw_box(dialog, 0, 0, height, width,
+ dlg.dialog.atr, dlg.border.atr);
+ wattrset(dialog, dlg.border.atr);
+ mvwaddch(dialog, height - 3, 0, ACS_LTEE);
+ for (i = 0; i < width - 2; i++)
+ waddch(dialog, ACS_HLINE);
+ wattrset(dialog, dlg.dialog.atr);
+ waddch(dialog, ACS_RTEE);
+
+ print_title(dialog, title, width);
+
+ wattrset(dialog, dlg.dialog.atr);
+ print_autowrap(dialog, prompt, width - 2, 1, 3);
+
+ print_buttons(dialog, height, width, 0);
+
+ while (key != KEY_ESC) {
+ key = wgetch(dialog);
+ switch (key) {
+ case 'Y':
+ case 'y':
+ delwin(dialog);
+ return 0;
+ case 'N':
+ case 'n':
+ delwin(dialog);
+ return 1;
+
+ case TAB:
+ case KEY_LEFT:
+ case KEY_RIGHT:
+ button = ((key == KEY_LEFT ? --button : ++button) < 0) ? 1 : (button > 1 ? 0 : button);
+
+ print_buttons(dialog, height, width, button);
+ wrefresh(dialog);
+ break;
+ case ' ':
+ case '\n':
+ delwin(dialog);
+ return button;
+ case KEY_ESC:
+ key = on_key_esc(dialog);
+ break;
+ case KEY_RESIZE:
+ delwin(dialog);
+ on_key_resize();
+ goto do_resize;
+ }
+ }
+
+ delwin(dialog);
+ return key; /* ESC pressed */
+}
diff --git a/scripts/kconfig/mconf.c b/scripts/kconfig/mconf.c
new file mode 100644
index 0000000..14cea74
--- /dev/null
+++ b/scripts/kconfig/mconf.c
@@ -0,0 +1,1036 @@
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ *
+ * Introduced single menu mode (show all sub-menus in one large tree).
+ * 2002-11-06 Petr Baudis <pasky@ucw.cz>
+ *
+ * i18n, 2005, Arnaldo Carvalho de Melo <acme@conectiva.com.br>
+ */
+
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <signal.h>
+#include <unistd.h>
+#include <locale.h>
+
+#include "lkc.h"
+#include "lxdialog/dialog.h"
+
+static const char mconf_readme[] = N_(
+"Overview\n"
+"--------\n"
+"This interface lets you select features and parameters for the build.\n"
+"Features can either be built-in, modularized, or ignored. Parameters\n"
+"must be entered in as decimal or hexadecimal numbers or text.\n"
+"\n"
+"Menu items beginning with following braces represent features that\n"
+" [ ] can be built in or removed\n"
+" < > can be built in, modularized or removed\n"
+" { } can be built in or modularized (selected by other feature)\n"
+" - - are selected by other feature,\n"
+"while *, M or whitespace inside braces means to build in, build as\n"
+"a module or to exclude the feature respectively.\n"
+"\n"
+"To change any of these features, highlight it with the cursor\n"
+"keys and press <Y> to build it in, <M> to make it a module or\n"
+"<N> to remove it. You may also press the <Space Bar> to cycle\n"
+"through the available options (i.e. Y->N->M->Y).\n"
+"\n"
+"Some additional keyboard hints:\n"
+"\n"
+"Menus\n"
+"----------\n"
+"o Use the Up/Down arrow keys (cursor keys) to highlight the item you\n"
+" wish to change or the submenu you wish to select and press <Enter>.\n"
+" Submenus are designated by \"--->\", empty ones by \"----\".\n"
+"\n"
+" Shortcut: Press the option's highlighted letter (hotkey).\n"
+" Pressing a hotkey more than once will sequence\n"
+" through all visible items which use that hotkey.\n"
+"\n"
+" You may also use the <PAGE UP> and <PAGE DOWN> keys to scroll\n"
+" unseen options into view.\n"
+"\n"
+"o To exit a menu use the cursor keys to highlight the <Exit> button\n"
+" and press <ENTER>.\n"
+"\n"
+" Shortcut: Press <ESC><ESC> or <E> or <X> if there is no hotkey\n"
+" using those letters. You may press a single <ESC>, but\n"
+" there is a delayed response which you may find annoying.\n"
+"\n"
+" Also, the <TAB> and cursor keys will cycle between <Select>,\n"
+" <Exit>, <Help>, <Save>, and <Load>.\n"
+"\n"
+"o To get help with an item, use the cursor keys to highlight <Help>\n"
+" and press <ENTER>.\n"
+"\n"
+" Shortcut: Press <H> or <?>.\n"
+"\n"
+"o To toggle the display of hidden options, press <Z>.\n"
+"\n"
+"\n"
+"Radiolists (Choice lists)\n"
+"-----------\n"
+"o Use the cursor keys to select the option you wish to set and press\n"
+" <S> or the <SPACE BAR>.\n"
+"\n"
+" Shortcut: Press the first letter of the option you wish to set then\n"
+" press <S> or <SPACE BAR>.\n"
+"\n"
+"o To see available help for the item, use the cursor keys to highlight\n"
+" <Help> and Press <ENTER>.\n"
+"\n"
+" Shortcut: Press <H> or <?>.\n"
+"\n"
+" Also, the <TAB> and cursor keys will cycle between <Select> and\n"
+" <Help>\n"
+"\n"
+"\n"
+"Data Entry\n"
+"-----------\n"
+"o Enter the requested information and press <ENTER>\n"
+" If you are entering hexadecimal values, it is not necessary to\n"
+" add the '0x' prefix to the entry.\n"
+"\n"
+"o For help, use the <TAB> or cursor keys to highlight the help option\n"
+" and press <ENTER>. You can try <TAB><H> as well.\n"
+"\n"
+"\n"
+"Text Box (Help Window)\n"
+"--------\n"
+"o Use the cursor keys to scroll up/down/left/right. The VI editor\n"
+" keys h,j,k,l function here as do <u>, <d>, <SPACE BAR> and <B> for\n"
+" those who are familiar with less and lynx.\n"
+"\n"
+"o Press <E>, <X>, <q>, <Enter> or <Esc><Esc> to exit.\n"
+"\n"
+"\n"
+"Alternate Configuration Files\n"
+"-----------------------------\n"
+"Menuconfig supports the use of alternate configuration files for\n"
+"those who, for various reasons, find it necessary to switch\n"
+"between different configurations.\n"
+"\n"
+"The <Save> button will let you save the current configuration to\n"
+"a file of your choosing. Use the <Load> button to load a previously\n"
+"saved alternate configuration.\n"
+"\n"
+"Even if you don't use alternate configuration files, but you find\n"
+"during a Menuconfig session that you have completely messed up your\n"
+"settings, you may use the <Load> button to restore your previously\n"
+"saved settings from \".config\" without restarting Menuconfig.\n"
+"\n"
+"Other information\n"
+"-----------------\n"
+"If you use Menuconfig in an XTERM window, make sure you have your\n"
+"$TERM variable set to point to an xterm definition which supports\n"
+"color. Otherwise, Menuconfig will look rather bad. Menuconfig will\n"
+"not display correctly in an RXVT window because rxvt displays only one\n"
+"intensity of color, bright.\n"
+"\n"
+"Menuconfig will display larger menus on screens or xterms which are\n"
+"set to display more than the standard 25 row by 80 column geometry.\n"
+"In order for this to work, the \"stty size\" command must be able to\n"
+"display the screen's current row and column geometry. I STRONGLY\n"
+"RECOMMEND that you make sure you do NOT have the shell variables\n"
+"LINES and COLUMNS exported into your environment. Some distributions\n"
+"export those variables via /etc/profile. Some ncurses programs can\n"
+"become confused when those variables (LINES & COLUMNS) don't reflect\n"
+"the true screen size.\n"
+"\n"
+"Optional personality available\n"
+"------------------------------\n"
+"If you prefer to have all of the options listed in a single menu,\n"
+"rather than the default multimenu hierarchy, run the menuconfig with\n"
+"MENUCONFIG_MODE environment variable set to single_menu. Example:\n"
+"\n"
+"make MENUCONFIG_MODE=single_menu menuconfig\n"
+"\n"
+"<Enter> will then unroll the appropriate category, or enfold it if it\n"
+"is already unrolled.\n"
+"\n"
+"Note that this mode can eventually be a little more CPU expensive\n"
+"(especially with a larger number of unrolled categories) than the\n"
+"default mode.\n"
+"\n"
+"Different color themes available\n"
+"--------------------------------\n"
+"It is possible to select different color themes using the variable\n"
+"MENUCONFIG_COLOR. To select a theme use:\n"
+"\n"
+"make MENUCONFIG_COLOR=<theme> menuconfig\n"
+"\n"
+"Available themes are\n"
+" mono => selects colors suitable for monochrome displays\n"
+" blackbg => selects a color scheme with black background\n"
+" classic => theme with blue background. The classic look\n"
+" bluetitle => an LCD friendly version of classic. (default)\n"
+"\n"),
+menu_instructions[] = N_(
+ "Arrow keys navigate the menu. "
+ "<Enter> selects submenus ---> (or empty submenus ----). "
+ "Highlighted letters are hotkeys. "
+ "Pressing <Y> includes, <N> excludes, <M> modularizes features. "
+ "Press <Esc><Esc> to exit, <?> for Help, </> for Search. "
+ "Legend: [*] built-in [ ] excluded <M> module < > module capable"),
+radiolist_instructions[] = N_(
+ "Use the arrow keys to navigate this window or "
+ "press the hotkey of the item you wish to select "
+ "followed by the <SPACE BAR>. "
+ "Press <?> for additional information about this option."),
+inputbox_instructions_int[] = N_(
+ "Please enter a decimal value. "
+ "Fractions will not be accepted. "
+ "Use the <TAB> key to move from the input field to the buttons below it."),
+inputbox_instructions_hex[] = N_(
+ "Please enter a hexadecimal value. "
+ "Use the <TAB> key to move from the input field to the buttons below it."),
+inputbox_instructions_string[] = N_(
+ "Please enter a string value. "
+ "Use the <TAB> key to move from the input field to the buttons below it."),
+setmod_text[] = N_(
+ "This feature depends on another which has been configured as a module.\n"
+ "As a result, this feature will be built as a module."),
+load_config_text[] = N_(
+ "Enter the name of the configuration file you wish to load. "
+ "Accept the name shown to restore the configuration you "
+ "last retrieved. Leave blank to abort."),
+load_config_help[] = N_(
+ "\n"
+ "For various reasons, one may wish to keep several different\n"
+ "configurations available on a single machine.\n"
+ "\n"
+ "If you have saved a previous configuration in a file other than the\n"
+ "default one, entering its name here will allow you to modify that\n"
+ "configuration.\n"
+ "\n"
+ "If you are uncertain, then you have probably never used alternate\n"
+ "configuration files. You should therefore leave this blank to abort.\n"),
+save_config_text[] = N_(
+ "Enter a filename to which this configuration should be saved "
+ "as an alternate. Leave blank to abort."),
+save_config_help[] = N_(
+ "\n"
+ "For various reasons, one may wish to keep different configurations\n"
+ "available on a single machine.\n"
+ "\n"
+ "Entering a file name here will allow you to later retrieve, modify\n"
+ "and use the current configuration as an alternate to whatever\n"
+ "configuration options you have selected at that time.\n"
+ "\n"
+ "If you are uncertain what all this means then you should probably\n"
+ "leave this blank.\n"),
+search_help[] = N_(
+ "\n"
+ "Search for symbols and display their relations.\n"
+ "Regular expressions are allowed.\n"
+ "Example: search for \"^FOO\"\n"
+ "Result:\n"
+ "-----------------------------------------------------------------\n"
+ "Symbol: FOO [=m]\n"
+ "Type : tristate\n"
+ "Prompt: Foo bus is used to drive the bar HW\n"
+ " Location:\n"
+ " -> Bus options (PCI, PCMCIA, EISA, ISA)\n"
+ " -> PCI support (PCI [=y])\n"
+ "(1) -> PCI access mode (<choice> [=y])\n"
+ " Defined at drivers/pci/Kconfig:47\n"
+ " Depends on: X86_LOCAL_APIC && X86_IO_APIC || IA64\n"
+ " Selects: LIBCRC32\n"
+ " Selected by: BAR [=n]\n"
+ "-----------------------------------------------------------------\n"
+ "o The line 'Type:' shows the type of the configuration option for\n"
+ " this symbol (boolean, tristate, string, ...)\n"
+ "o The line 'Prompt:' shows the text used in the menu structure for\n"
+ " this symbol\n"
+ "o The 'Defined at' line tells at what file / line number the symbol\n"
+ " is defined\n"
+ "o The 'Depends on:' line tells what symbols need to be defined for\n"
+ " this symbol to be visible in the menu (selectable)\n"
+ "o The 'Location:' lines tells where in the menu structure this symbol\n"
+ " is located\n"
+ " A location followed by a [=y] indicates that this is a\n"
+ " selectable menu item - and the current value is displayed inside\n"
+ " brackets.\n"
+ " Press the key in the (#) prefix to jump directly to that\n"
+ " location. You will be returned to the current search results\n"
+ " after exiting this new menu.\n"
+ "o The 'Selects:' line tells what symbols will be automatically\n"
+ " selected if this symbol is selected (y or m)\n"
+ "o The 'Selected by' line tells what symbol has selected this symbol\n"
+ "\n"
+ "Only relevant lines are shown.\n"
+ "\n\n"
+ "Search examples:\n"
+ "Examples: USB => find all symbols containing USB\n"
+ " ^USB => find all symbols starting with USB\n"
+ " USB$ => find all symbols ending with USB\n"
+ "\n");
+
+static int indent;
+static struct menu *current_menu;
+static int child_count;
+static int single_menu_mode;
+static int show_all_options;
+static int save_and_exit;
+
+static void conf(struct menu *menu, struct menu *active_menu);
+static void conf_choice(struct menu *menu);
+static void conf_string(struct menu *menu);
+static void conf_load(void);
+static void conf_save(void);
+static int show_textbox_ext(const char *title, char *text, int r, int c,
+ int *keys, int *vscroll, int *hscroll,
+ update_text_fn update_text, void *data);
+static void show_textbox(const char *title, const char *text, int r, int c);
+static void show_helptext(const char *title, const char *text);
+static void show_help(struct menu *menu);
+
+static char filename[PATH_MAX+1];
+static void set_config_filename(const char *config_filename)
+{
+ static char menu_backtitle[PATH_MAX+128];
+ int size;
+
+ size = snprintf(menu_backtitle, sizeof(menu_backtitle),
+ "%s - %s", config_filename, rootmenu.prompt->text);
+ if (size >= sizeof(menu_backtitle))
+ menu_backtitle[sizeof(menu_backtitle)-1] = '\0';
+ set_dialog_backtitle(menu_backtitle);
+
+ size = snprintf(filename, sizeof(filename), "%s", config_filename);
+ if (size >= sizeof(filename))
+ filename[sizeof(filename)-1] = '\0';
+}
+
+struct subtitle_part {
+ struct list_head entries;
+ const char *text;
+};
+static LIST_HEAD(trail);
+
+static struct subtitle_list *subtitles;
+static void set_subtitle(void)
+{
+ struct subtitle_part *sp;
+ struct subtitle_list *pos, *tmp;
+
+ for (pos = subtitles; pos != NULL; pos = tmp) {
+ tmp = pos->next;
+ free(pos);
+ }
+
+ subtitles = NULL;
+ list_for_each_entry(sp, &trail, entries) {
+ if (sp->text) {
+ if (pos) {
+ pos->next = xcalloc(sizeof(*pos), 1);
+ pos = pos->next;
+ } else {
+ subtitles = pos = xcalloc(sizeof(*pos), 1);
+ }
+ pos->text = sp->text;
+ }
+ }
+
+ set_dialog_subtitles(subtitles);
+}
+
+static void reset_subtitle(void)
+{
+ struct subtitle_list *pos, *tmp;
+
+ for (pos = subtitles; pos != NULL; pos = tmp) {
+ tmp = pos->next;
+ free(pos);
+ }
+ subtitles = NULL;
+ set_dialog_subtitles(subtitles);
+}
+
+struct search_data {
+ struct list_head *head;
+ struct menu **targets;
+ int *keys;
+};
+
+static void update_text(char *buf, size_t start, size_t end, void *_data)
+{
+ struct search_data *data = _data;
+ struct jump_key *pos;
+ int k = 0;
+
+ list_for_each_entry(pos, data->head, entries) {
+ if (pos->offset >= start && pos->offset < end) {
+ char header[4];
+
+ if (k < JUMP_NB) {
+ int key = '0' + (pos->index % JUMP_NB) + 1;
+
+ sprintf(header, "(%c)", key);
+ data->keys[k] = key;
+ data->targets[k] = pos->target;
+ k++;
+ } else {
+ sprintf(header, " ");
+ }
+
+ memcpy(buf + pos->offset, header, sizeof(header) - 1);
+ }
+ }
+ data->keys[k] = 0;
+}
+
+static void search_conf(void)
+{
+ struct symbol **sym_arr;
+ struct gstr res;
+ struct gstr title;
+ char *dialog_input;
+ int dres, vscroll = 0, hscroll = 0;
+ bool again;
+ struct gstr sttext;
+ struct subtitle_part stpart;
+
+ title = str_new();
+ str_printf( &title, _("Enter (sub)string or regexp to search for "
+ "(with or without \"%s\")"), CONFIG_);
+
+again:
+ dialog_clear();
+ dres = dialog_inputbox(_("Search Configuration Parameter"),
+ str_get(&title),
+ 10, 75, "");
+ switch (dres) {
+ case 0:
+ break;
+ case 1:
+ show_helptext(_("Search Configuration"), search_help);
+ goto again;
+ default:
+ str_free(&title);
+ return;
+ }
+
+ /* strip the prefix if necessary */
+ dialog_input = dialog_input_result;
+ if (strncasecmp(dialog_input_result, CONFIG_, strlen(CONFIG_)) == 0)
+ dialog_input += strlen(CONFIG_);
+
+ sttext = str_new();
+ str_printf(&sttext, "Search (%s)", dialog_input_result);
+ stpart.text = str_get(&sttext);
+ list_add_tail(&stpart.entries, &trail);
+
+ sym_arr = sym_re_search(dialog_input);
+ do {
+ LIST_HEAD(head);
+ struct menu *targets[JUMP_NB];
+ int keys[JUMP_NB + 1], i;
+ struct search_data data = {
+ .head = &head,
+ .targets = targets,
+ .keys = keys,
+ };
+ struct jump_key *pos, *tmp;
+
+ res = get_relations_str(sym_arr, &head);
+ set_subtitle();
+ dres = show_textbox_ext(_("Search Results"), (char *)
+ str_get(&res), 0, 0, keys, &vscroll,
+ &hscroll, &update_text, (void *)
+ &data);
+ again = false;
+ for (i = 0; i < JUMP_NB && keys[i]; i++)
+ if (dres == keys[i]) {
+ conf(targets[i]->parent, targets[i]);
+ again = true;
+ }
+ str_free(&res);
+ list_for_each_entry_safe(pos, tmp, &head, entries)
+ free(pos);
+ } while (again);
+ free(sym_arr);
+ str_free(&title);
+ list_del(trail.prev);
+ str_free(&sttext);
+}
+
+static void build_conf(struct menu *menu)
+{
+ struct symbol *sym;
+ struct property *prop;
+ struct menu *child;
+ int type, tmp, doint = 2;
+ tristate val;
+ char ch;
+ bool visible;
+
+ /*
+ * note: menu_is_visible() has side effect that it will
+ * recalc the value of the symbol.
+ */
+ visible = menu_is_visible(menu);
+ if (show_all_options && !menu_has_prompt(menu))
+ return;
+ else if (!show_all_options && !visible)
+ return;
+
+ sym = menu->sym;
+ prop = menu->prompt;
+ if (!sym) {
+ if (prop && menu != current_menu) {
+ const char *prompt = menu_get_prompt(menu);
+ switch (prop->type) {
+ case P_MENU:
+ child_count++;
+ prompt = _(prompt);
+ if (single_menu_mode) {
+ item_make("%s%*c%s",
+ menu->data ? "-->" : "++>",
+ indent + 1, ' ', prompt);
+ } else
+ item_make(" %*c%s %s",
+ indent + 1, ' ', prompt,
+ menu_is_empty(menu) ? "----" : "--->");
+ item_set_tag('m');
+ item_set_data(menu);
+ if (single_menu_mode && menu->data)
+ goto conf_childs;
+ return;
+ case P_COMMENT:
+ if (prompt) {
+ child_count++;
+ item_make(" %*c*** %s ***", indent + 1, ' ', _(prompt));
+ item_set_tag(':');
+ item_set_data(menu);
+ }
+ break;
+ default:
+ if (prompt) {
+ child_count++;
+ item_make("---%*c%s", indent + 1, ' ', _(prompt));
+ item_set_tag(':');
+ item_set_data(menu);
+ }
+ }
+ } else
+ doint = 0;
+ goto conf_childs;
+ }
+
+ type = sym_get_type(sym);
+ if (sym_is_choice(sym)) {
+ struct symbol *def_sym = sym_get_choice_value(sym);
+ struct menu *def_menu = NULL;
+
+ child_count++;
+ for (child = menu->list; child; child = child->next) {
+ if (menu_is_visible(child) && child->sym == def_sym)
+ def_menu = child;
+ }
+
+ val = sym_get_tristate_value(sym);
+ if (sym_is_changable(sym)) {
+ switch (type) {
+ case S_BOOLEAN:
+ item_make("[%c]", val == no ? ' ' : '*');
+ break;
+ case S_TRISTATE:
+ switch (val) {
+ case yes: ch = '*'; break;
+ case mod: ch = 'M'; break;
+ default: ch = ' '; break;
+ }
+ item_make("<%c>", ch);
+ break;
+ }
+ item_set_tag('t');
+ item_set_data(menu);
+ } else {
+ item_make(" ");
+ item_set_tag(def_menu ? 't' : ':');
+ item_set_data(menu);
+ }
+
+ item_add_str("%*c%s", indent + 1, ' ', _(menu_get_prompt(menu)));
+ if (val == yes) {
+ if (def_menu) {
+ item_add_str(" (%s)", _(menu_get_prompt(def_menu)));
+ item_add_str(" --->");
+ if (def_menu->list) {
+ indent += 2;
+ build_conf(def_menu);
+ indent -= 2;
+ }
+ }
+ return;
+ }
+ } else {
+ if (menu == current_menu) {
+ item_make("---%*c%s", indent + 1, ' ', _(menu_get_prompt(menu)));
+ item_set_tag(':');
+ item_set_data(menu);
+ goto conf_childs;
+ }
+ child_count++;
+ val = sym_get_tristate_value(sym);
+ if (sym_is_choice_value(sym) && val == yes) {
+ item_make(" ");
+ item_set_tag(':');
+ item_set_data(menu);
+ } else {
+ switch (type) {
+ case S_BOOLEAN:
+ if (sym_is_changable(sym))
+ item_make("[%c]", val == no ? ' ' : '*');
+ else
+ item_make("-%c-", val == no ? ' ' : '*');
+ item_set_tag('t');
+ item_set_data(menu);
+ break;
+ case S_TRISTATE:
+ switch (val) {
+ case yes: ch = '*'; break;
+ case mod: ch = 'M'; break;
+ default: ch = ' '; break;
+ }
+ if (sym_is_changable(sym)) {
+ if (sym->rev_dep.tri == mod)
+ item_make("{%c}", ch);
+ else
+ item_make("<%c>", ch);
+ } else
+ item_make("-%c-", ch);
+ item_set_tag('t');
+ item_set_data(menu);
+ break;
+ default:
+ tmp = 2 + strlen(sym_get_string_value(sym)); /* () = 2 */
+ item_make("(%s)", sym_get_string_value(sym));
+ tmp = indent - tmp + 4;
+ if (tmp < 0)
+ tmp = 0;
+ item_add_str("%*c%s%s", tmp, ' ', _(menu_get_prompt(menu)),
+ (sym_has_value(sym) || !sym_is_changable(sym)) ?
+ "" : _(" (NEW)"));
+ item_set_tag('s');
+ item_set_data(menu);
+ goto conf_childs;
+ }
+ }
+ item_add_str("%*c%s%s", indent + 1, ' ', _(menu_get_prompt(menu)),
+ (sym_has_value(sym) || !sym_is_changable(sym)) ?
+ "" : _(" (NEW)"));
+ if (menu->prompt->type == P_MENU) {
+ item_add_str(" %s", menu_is_empty(menu) ? "----" : "--->");
+ return;
+ }
+ }
+
+conf_childs:
+ indent += doint;
+ for (child = menu->list; child; child = child->next)
+ build_conf(child);
+ indent -= doint;
+}
+
+static void conf(struct menu *menu, struct menu *active_menu)
+{
+ struct menu *submenu;
+ const char *prompt = menu_get_prompt(menu);
+ struct subtitle_part stpart;
+ struct symbol *sym;
+ int res;
+ int s_scroll = 0;
+
+ if (menu != &rootmenu)
+ stpart.text = menu_get_prompt(menu);
+ else
+ stpart.text = NULL;
+ list_add_tail(&stpart.entries, &trail);
+
+ while (1) {
+ item_reset();
+ current_menu = menu;
+ build_conf(menu);
+ if (!child_count)
+ break;
+ set_subtitle();
+ dialog_clear();
+ res = dialog_menu(prompt ? _(prompt) : _("Main Menu"),
+ _(menu_instructions),
+ active_menu, &s_scroll);
+ if (res == 1 || res == KEY_ESC || res == -ERRDISPLAYTOOSMALL)
+ break;
+ if (item_count() != 0) {
+ if (!item_activate_selected())
+ continue;
+ if (!item_tag())
+ continue;
+ }
+ submenu = item_data();
+ active_menu = item_data();
+ if (submenu)
+ sym = submenu->sym;
+ else
+ sym = NULL;
+
+ switch (res) {
+ case 0:
+ switch (item_tag()) {
+ case 'm':
+ if (single_menu_mode)
+ submenu->data = (void *) (long) !submenu->data;
+ else
+ conf(submenu, NULL);
+ break;
+ case 't':
+ if (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)
+ conf_choice(submenu);
+ else if (submenu->prompt->type == P_MENU)
+ conf(submenu, NULL);
+ break;
+ case 's':
+ conf_string(submenu);
+ break;
+ }
+ break;
+ case 2:
+ if (sym)
+ show_help(submenu);
+ else {
+ reset_subtitle();
+ show_helptext(_("README"), _(mconf_readme));
+ }
+ break;
+ case 3:
+ reset_subtitle();
+ conf_save();
+ break;
+ case 4:
+ reset_subtitle();
+ conf_load();
+ break;
+ case 5:
+ if (item_is_tag('t')) {
+ if (sym_set_tristate_value(sym, yes))
+ break;
+ if (sym_set_tristate_value(sym, mod))
+ show_textbox(NULL, setmod_text, 6, 74);
+ }
+ break;
+ case 6:
+ if (item_is_tag('t'))
+ sym_set_tristate_value(sym, no);
+ break;
+ case 7:
+ if (item_is_tag('t'))
+ sym_set_tristate_value(sym, mod);
+ break;
+ case 8:
+ if (item_is_tag('t'))
+ sym_toggle_tristate_value(sym);
+ else if (item_is_tag('m'))
+ conf(submenu, NULL);
+ break;
+ case 9:
+ search_conf();
+ break;
+ case 10:
+ show_all_options = !show_all_options;
+ break;
+ }
+ }
+
+ list_del(trail.prev);
+}
+
+static int show_textbox_ext(const char *title, char *text, int r, int c, int
+ *keys, int *vscroll, int *hscroll, update_text_fn
+ update_text, void *data)
+{
+ dialog_clear();
+ return dialog_textbox(title, text, r, c, keys, vscroll, hscroll,
+ update_text, data);
+}
+
+static void show_textbox(const char *title, const char *text, int r, int c)
+{
+ show_textbox_ext(title, (char *) text, r, c, (int []) {0}, NULL, NULL,
+ NULL, NULL);
+}
+
+static void show_helptext(const char *title, const char *text)
+{
+ show_textbox(title, text, 0, 0);
+}
+
+static void conf_message_callback(const char *fmt, va_list ap)
+{
+ char buf[PATH_MAX+1];
+
+ vsnprintf(buf, sizeof(buf), fmt, ap);
+ if (save_and_exit)
+ printf("%s", buf);
+ else
+ show_textbox(NULL, buf, 6, 60);
+}
+
+static void show_help(struct menu *menu)
+{
+ struct gstr help = str_new();
+
+ help.max_width = getmaxx(stdscr) - 10;
+ menu_get_ext_help(menu, &help);
+
+ show_helptext(_(menu_get_prompt(menu)), str_get(&help));
+ str_free(&help);
+}
+
+static void conf_choice(struct menu *menu)
+{
+ const char *prompt = _(menu_get_prompt(menu));
+ struct menu *child;
+ struct symbol *active;
+
+ active = sym_get_choice_value(menu->sym);
+ while (1) {
+ int res;
+ int selected;
+ item_reset();
+
+ current_menu = menu;
+ for (child = menu->list; child; child = child->next) {
+ if (!menu_is_visible(child))
+ continue;
+ if (child->sym)
+ item_make("%s", _(menu_get_prompt(child)));
+ else {
+ item_make("*** %s ***", _(menu_get_prompt(child)));
+ item_set_tag(':');
+ }
+ item_set_data(child);
+ if (child->sym == active)
+ item_set_selected(1);
+ if (child->sym == sym_get_choice_value(menu->sym))
+ item_set_tag('X');
+ }
+ dialog_clear();
+ res = dialog_checklist(prompt ? _(prompt) : _("Main Menu"),
+ _(radiolist_instructions),
+ MENUBOX_HEIGTH_MIN,
+ MENUBOX_WIDTH_MIN,
+ CHECKLIST_HEIGTH_MIN);
+ selected = item_activate_selected();
+ switch (res) {
+ case 0:
+ if (selected) {
+ child = item_data();
+ if (!child->sym)
+ break;
+
+ sym_set_tristate_value(child->sym, yes);
+ }
+ return;
+ case 1:
+ if (selected) {
+ child = item_data();
+ show_help(child);
+ active = child->sym;
+ } else
+ show_help(menu);
+ break;
+ case KEY_ESC:
+ return;
+ case -ERRDISPLAYTOOSMALL:
+ return;
+ }
+ }
+}
+
+static void conf_string(struct menu *menu)
+{
+ const char *prompt = menu_get_prompt(menu);
+
+ while (1) {
+ int res;
+ const char *heading;
+
+ switch (sym_get_type(menu->sym)) {
+ case S_INT:
+ heading = _(inputbox_instructions_int);
+ break;
+ case S_HEX:
+ heading = _(inputbox_instructions_hex);
+ break;
+ case S_STRING:
+ heading = _(inputbox_instructions_string);
+ break;
+ default:
+ heading = _("Internal mconf error!");
+ }
+ dialog_clear();
+ res = dialog_inputbox(prompt ? _(prompt) : _("Main Menu"),
+ heading, 10, 75,
+ sym_get_string_value(menu->sym));
+ switch (res) {
+ case 0:
+ if (sym_set_string_value(menu->sym, dialog_input_result))
+ return;
+ show_textbox(NULL, _("You have made an invalid entry."), 5, 43);
+ break;
+ case 1:
+ show_help(menu);
+ break;
+ case KEY_ESC:
+ return;
+ }
+ }
+}
+
+static void conf_load(void)
+{
+
+ while (1) {
+ int res;
+ dialog_clear();
+ res = dialog_inputbox(NULL, load_config_text,
+ 11, 55, filename);
+ switch(res) {
+ case 0:
+ if (!dialog_input_result[0])
+ return;
+ if (!conf_read(dialog_input_result)) {
+ set_config_filename(dialog_input_result);
+ sym_set_change_count(1);
+ return;
+ }
+ show_textbox(NULL, _("File does not exist!"), 5, 38);
+ break;
+ case 1:
+ show_helptext(_("Load Alternate Configuration"), load_config_help);
+ break;
+ case KEY_ESC:
+ return;
+ }
+ }
+}
+
+static void conf_save(void)
+{
+ while (1) {
+ int res;
+ dialog_clear();
+ res = dialog_inputbox(NULL, save_config_text,
+ 11, 55, filename);
+ switch(res) {
+ case 0:
+ if (!dialog_input_result[0])
+ return;
+ if (!conf_write(dialog_input_result)) {
+ set_config_filename(dialog_input_result);
+ return;
+ }
+ show_textbox(NULL, _("Can't create file! Probably a nonexistent directory."), 5, 60);
+ break;
+ case 1:
+ show_helptext(_("Save Alternate Configuration"), save_config_help);
+ break;
+ case KEY_ESC:
+ return;
+ }
+ }
+}
+
+static int handle_exit(void)
+{
+ int res;
+
+ save_and_exit = 1;
+ reset_subtitle();
+ dialog_clear();
+ if (conf_get_changed())
+ res = dialog_yesno(NULL,
+ _("Do you wish to save your new configuration?\n"
+ "(Press <ESC><ESC> to continue kernel configuration.)"),
+ 6, 60);
+ else
+ res = -1;
+
+ end_dialog(saved_x, saved_y);
+
+ switch (res) {
+ case 0:
+ if (conf_write(filename)) {
+ fprintf(stderr, _("\n\n"
+ "Error while writing of the configuration.\n"
+ "Your configuration changes were NOT saved."
+ "\n\n"));
+ return 1;
+ }
+ /* fall through */
+ case -1:
+ printf(_("\n\n"
+ "*** End of the configuration.\n"
+ "*** Execute 'make' to start the build or try 'make help'."
+ "\n\n"));
+ res = 0;
+ break;
+ default:
+ fprintf(stderr, _("\n\n"
+ "Your configuration changes were NOT saved."
+ "\n\n"));
+ if (res != KEY_ESC)
+ res = 0;
+ }
+
+ return res;
+}
+
+static void sig_handler(int signo)
+{
+ exit(handle_exit());
+}
+
+int main(int ac, char **av)
+{
+ char *mode;
+ int res;
+
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
+ signal(SIGINT, sig_handler);
+
+ conf_parse(av[1]);
+ conf_read(NULL);
+
+ mode = getenv("MENUCONFIG_MODE");
+ if (mode) {
+ if (!strcasecmp(mode, "single_menu"))
+ single_menu_mode = 1;
+ }
+
+ if (init_dialog(NULL)) {
+ fprintf(stderr, N_("Your display is too small to run Menuconfig!\n"));
+ fprintf(stderr, N_("It must be at least 19 lines by 80 columns.\n"));
+ return 1;
+ }
+
+ set_config_filename(conf_get_configname());
+ conf_set_message_callback(conf_message_callback);
+ do {
+ conf(&rootmenu, NULL);
+ res = handle_exit();
+ } while (res == KEY_ESC);
+
+ return res;
+}
diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c
new file mode 100644
index 0000000..a26cc5d
--- /dev/null
+++ b/scripts/kconfig/menu.c
@@ -0,0 +1,697 @@
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <ctype.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "lkc.h"
+
+static const char nohelp_text[] = "There is no help available for this option.";
+
+struct menu rootmenu;
+static struct menu **last_entry_ptr;
+
+struct file *file_list;
+struct file *current_file;
+
+void menu_warn(struct menu *menu, const char *fmt, ...)
+{
+ va_list ap;
+ va_start(ap, fmt);
+ fprintf(stderr, "%s:%d:warning: ", menu->file->name, menu->lineno);
+ vfprintf(stderr, fmt, ap);
+ fprintf(stderr, "\n");
+ va_end(ap);
+}
+
+static void prop_warn(struct property *prop, const char *fmt, ...)
+{
+ va_list ap;
+ va_start(ap, fmt);
+ fprintf(stderr, "%s:%d:warning: ", prop->file->name, prop->lineno);
+ vfprintf(stderr, fmt, ap);
+ fprintf(stderr, "\n");
+ va_end(ap);
+}
+
+void _menu_init(void)
+{
+ current_entry = current_menu = &rootmenu;
+ last_entry_ptr = &rootmenu.list;
+}
+
+void menu_add_entry(struct symbol *sym)
+{
+ struct menu *menu;
+
+ menu = xmalloc(sizeof(*menu));
+ memset(menu, 0, sizeof(*menu));
+ menu->sym = sym;
+ menu->parent = current_menu;
+ menu->file = current_file;
+ menu->lineno = zconf_lineno();
+
+ *last_entry_ptr = menu;
+ last_entry_ptr = &menu->next;
+ current_entry = menu;
+ if (sym)
+ menu_add_symbol(P_SYMBOL, sym, NULL);
+}
+
+void menu_end_entry(void)
+{
+}
+
+struct menu *menu_add_menu(void)
+{
+ menu_end_entry();
+ last_entry_ptr = &current_entry->list;
+ return current_menu = current_entry;
+}
+
+void menu_end_menu(void)
+{
+ last_entry_ptr = &current_menu->next;
+ current_menu = current_menu->parent;
+}
+
+static struct expr *menu_check_dep(struct expr *e)
+{
+ if (!e)
+ return e;
+
+ switch (e->type) {
+ case E_NOT:
+ e->left.expr = menu_check_dep(e->left.expr);
+ break;
+ case E_OR:
+ case E_AND:
+ e->left.expr = menu_check_dep(e->left.expr);
+ e->right.expr = menu_check_dep(e->right.expr);
+ break;
+ case E_SYMBOL:
+ /* change 'm' into 'm' && MODULES */
+ if (e->left.sym == &symbol_mod)
+ return expr_alloc_and(e, expr_alloc_symbol(modules_sym));
+ break;
+ default:
+ break;
+ }
+ return e;
+}
+
+void menu_add_dep(struct expr *dep)
+{
+ current_entry->dep = expr_alloc_and(current_entry->dep, menu_check_dep(dep));
+}
+
+void menu_set_type(int type)
+{
+ struct symbol *sym = current_entry->sym;
+
+ if (sym->type == type)
+ return;
+ if (sym->type == S_UNKNOWN) {
+ sym->type = type;
+ return;
+ }
+ menu_warn(current_entry,
+ "ignoring type redefinition of '%s' from '%s' to '%s'",
+ sym->name ? sym->name : "<choice>",
+ sym_type_name(sym->type), sym_type_name(type));
+}
+
+struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep)
+{
+ struct property *prop = prop_alloc(type, current_entry->sym);
+
+ prop->menu = current_entry;
+ prop->expr = expr;
+ prop->visible.expr = menu_check_dep(dep);
+
+ if (prompt) {
+ if (isspace(*prompt)) {
+ prop_warn(prop, "leading whitespace ignored");
+ while (isspace(*prompt))
+ prompt++;
+ }
+ if (current_entry->prompt && current_entry != &rootmenu)
+ prop_warn(prop, "prompt redefined");
+
+ /* Apply all upper menus' visibilities to actual prompts. */
+ if(type == P_PROMPT) {
+ struct menu *menu = current_entry;
+
+ while ((menu = menu->parent) != NULL) {
+ struct expr *dup_expr;
+
+ if (!menu->visibility)
+ continue;
+ /*
+ * Do not add a reference to the
+ * menu's visibility expression but
+ * use a copy of it. Otherwise the
+ * expression reduction functions
+ * will modify expressions that have
+ * multiple references which can
+ * cause unwanted side effects.
+ */
+ dup_expr = expr_copy(menu->visibility);
+
+ prop->visible.expr
+ = expr_alloc_and(prop->visible.expr,
+ dup_expr);
+ }
+ }
+
+ current_entry->prompt = prop;
+ }
+ prop->text = prompt;
+
+ return prop;
+}
+
+struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep)
+{
+ return menu_add_prop(type, prompt, NULL, dep);
+}
+
+void menu_add_visibility(struct expr *expr)
+{
+ current_entry->visibility = expr_alloc_and(current_entry->visibility,
+ expr);
+}
+
+void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep)
+{
+ menu_add_prop(type, NULL, expr, dep);
+}
+
+void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep)
+{
+ menu_add_prop(type, NULL, expr_alloc_symbol(sym), dep);
+}
+
+void menu_add_option(int token, char *arg)
+{
+ switch (token) {
+ case T_OPT_MODULES:
+ if (modules_sym)
+ zconf_error("symbol '%s' redefines option 'modules'"
+ " already defined by symbol '%s'",
+ current_entry->sym->name,
+ modules_sym->name
+ );
+ modules_sym = current_entry->sym;
+ break;
+ case T_OPT_DEFCONFIG_LIST:
+ if (!sym_defconfig_list)
+ sym_defconfig_list = current_entry->sym;
+ else if (sym_defconfig_list != current_entry->sym)
+ zconf_error("trying to redefine defconfig symbol");
+ break;
+ case T_OPT_ENV:
+ prop_add_env(arg);
+ break;
+ case T_OPT_ALLNOCONFIG_Y:
+ current_entry->sym->flags |= SYMBOL_ALLNOCONFIG_Y;
+ break;
+ }
+}
+
+static int menu_validate_number(struct symbol *sym, struct symbol *sym2)
+{
+ return sym2->type == S_INT || sym2->type == S_HEX ||
+ (sym2->type == S_UNKNOWN && sym_string_valid(sym, sym2->name));
+}
+
+static void sym_check_prop(struct symbol *sym)
+{
+ struct property *prop;
+ struct symbol *sym2;
+ for (prop = sym->prop; prop; prop = prop->next) {
+ switch (prop->type) {
+ case P_DEFAULT:
+ if ((sym->type == S_STRING || sym->type == S_INT || sym->type == S_HEX) &&
+ prop->expr->type != E_SYMBOL)
+ prop_warn(prop,
+ "default for config symbol '%s'"
+ " must be a single symbol", sym->name);
+ if (prop->expr->type != E_SYMBOL)
+ break;
+ sym2 = prop_get_symbol(prop);
+ if (sym->type == S_HEX || sym->type == S_INT) {
+ if (!menu_validate_number(sym, sym2))
+ prop_warn(prop,
+ "'%s': number is invalid",
+ sym->name);
+ }
+ break;
+ case P_SELECT:
+ sym2 = prop_get_symbol(prop);
+ if (sym->type != S_BOOLEAN && sym->type != S_TRISTATE)
+ prop_warn(prop,
+ "config symbol '%s' uses select, but is "
+ "not boolean or tristate", sym->name);
+ else if (sym2->type != S_UNKNOWN &&
+ sym2->type != S_BOOLEAN &&
+ sym2->type != S_TRISTATE)
+ prop_warn(prop,
+ "'%s' has wrong type. 'select' only "
+ "accept arguments of boolean and "
+ "tristate type", sym2->name);
+ break;
+ case P_RANGE:
+ if (sym->type != S_INT && sym->type != S_HEX)
+ prop_warn(prop, "range is only allowed "
+ "for int or hex symbols");
+ if (!menu_validate_number(sym, prop->expr->left.sym) ||
+ !menu_validate_number(sym, prop->expr->right.sym))
+ prop_warn(prop, "range is invalid");
+ break;
+ default:
+ ;
+ }
+ }
+}
+
+void menu_finalize(struct menu *parent)
+{
+ struct menu *menu, *last_menu;
+ struct symbol *sym;
+ struct property *prop;
+ struct expr *parentdep, *basedep, *dep, *dep2, **ep;
+
+ sym = parent->sym;
+ if (parent->list) {
+ if (sym && sym_is_choice(sym)) {
+ if (sym->type == S_UNKNOWN) {
+ /* find the first choice value to find out choice type */
+ current_entry = parent;
+ for (menu = parent->list; menu; menu = menu->next) {
+ if (menu->sym && menu->sym->type != S_UNKNOWN) {
+ menu_set_type(menu->sym->type);
+ break;
+ }
+ }
+ }
+ /* set the type of the remaining choice values */
+ for (menu = parent->list; menu; menu = menu->next) {
+ current_entry = menu;
+ if (menu->sym && menu->sym->type == S_UNKNOWN)
+ menu_set_type(sym->type);
+ }
+ parentdep = expr_alloc_symbol(sym);
+ } else if (parent->prompt)
+ parentdep = parent->prompt->visible.expr;
+ else
+ parentdep = parent->dep;
+
+ for (menu = parent->list; menu; menu = menu->next) {
+ basedep = expr_transform(menu->dep);
+ basedep = expr_alloc_and(expr_copy(parentdep), basedep);
+ basedep = expr_eliminate_dups(basedep);
+ menu->dep = basedep;
+ if (menu->sym)
+ prop = menu->sym->prop;
+ else
+ prop = menu->prompt;
+ for (; prop; prop = prop->next) {
+ if (prop->menu != menu)
+ continue;
+ dep = expr_transform(prop->visible.expr);
+ dep = expr_alloc_and(expr_copy(basedep), dep);
+ dep = expr_eliminate_dups(dep);
+ if (menu->sym && menu->sym->type != S_TRISTATE)
+ dep = expr_trans_bool(dep);
+ prop->visible.expr = dep;
+ if (prop->type == P_SELECT) {
+ struct symbol *es = prop_get_symbol(prop);
+ es->rev_dep.expr = expr_alloc_or(es->rev_dep.expr,
+ expr_alloc_and(expr_alloc_symbol(menu->sym), expr_copy(dep)));
+ }
+ }
+ }
+ for (menu = parent->list; menu; menu = menu->next)
+ menu_finalize(menu);
+ } else if (sym) {
+ basedep = parent->prompt ? parent->prompt->visible.expr : NULL;
+ basedep = expr_trans_compare(basedep, E_UNEQUAL, &symbol_no);
+ basedep = expr_eliminate_dups(expr_transform(basedep));
+ last_menu = NULL;
+ for (menu = parent->next; menu; menu = menu->next) {
+ dep = menu->prompt ? menu->prompt->visible.expr : menu->dep;
+ if (!expr_contains_symbol(dep, sym))
+ break;
+ if (expr_depends_symbol(dep, sym))
+ goto next;
+ dep = expr_trans_compare(dep, E_UNEQUAL, &symbol_no);
+ dep = expr_eliminate_dups(expr_transform(dep));
+ dep2 = expr_copy(basedep);
+ expr_eliminate_eq(&dep, &dep2);
+ expr_free(dep);
+ if (!expr_is_yes(dep2)) {
+ expr_free(dep2);
+ break;
+ }
+ expr_free(dep2);
+ next:
+ menu_finalize(menu);
+ menu->parent = parent;
+ last_menu = menu;
+ }
+ if (last_menu) {
+ parent->list = parent->next;
+ parent->next = last_menu->next;
+ last_menu->next = NULL;
+ }
+
+ sym->dir_dep.expr = expr_alloc_or(sym->dir_dep.expr, parent->dep);
+ }
+ for (menu = parent->list; menu; menu = menu->next) {
+ if (sym && sym_is_choice(sym) &&
+ menu->sym && !sym_is_choice_value(menu->sym)) {
+ current_entry = menu;
+ menu->sym->flags |= SYMBOL_CHOICEVAL;
+ if (!menu->prompt)
+ menu_warn(menu, "choice value must have a prompt");
+ for (prop = menu->sym->prop; prop; prop = prop->next) {
+ if (prop->type == P_DEFAULT)
+ prop_warn(prop, "defaults for choice "
+ "values not supported");
+ if (prop->menu == menu)
+ continue;
+ if (prop->type == P_PROMPT &&
+ prop->menu->parent->sym != sym)
+ prop_warn(prop, "choice value used outside its choice group");
+ }
+ /* Non-tristate choice values of tristate choices must
+ * depend on the choice being set to Y. The choice
+ * values' dependencies were propagated to their
+ * properties above, so the change here must be re-
+ * propagated.
+ */
+ if (sym->type == S_TRISTATE && menu->sym->type != S_TRISTATE) {
+ basedep = expr_alloc_comp(E_EQUAL, sym, &symbol_yes);
+ menu->dep = expr_alloc_and(basedep, menu->dep);
+ for (prop = menu->sym->prop; prop; prop = prop->next) {
+ if (prop->menu != menu)
+ continue;
+ prop->visible.expr = expr_alloc_and(expr_copy(basedep),
+ prop->visible.expr);
+ }
+ }
+ menu_add_symbol(P_CHOICE, sym, NULL);
+ prop = sym_get_choice_prop(sym);
+ for (ep = &prop->expr; *ep; ep = &(*ep)->left.expr)
+ ;
+ *ep = expr_alloc_one(E_LIST, NULL);
+ (*ep)->right.sym = menu->sym;
+ }
+ if (menu->list && (!menu->prompt || !menu->prompt->text)) {
+ for (last_menu = menu->list; ; last_menu = last_menu->next) {
+ last_menu->parent = parent;
+ if (!last_menu->next)
+ break;
+ }
+ last_menu->next = menu->next;
+ menu->next = menu->list;
+ menu->list = NULL;
+ }
+ }
+
+ if (sym && !(sym->flags & SYMBOL_WARNED)) {
+ if (sym->type == S_UNKNOWN)
+ menu_warn(parent, "config symbol defined without type");
+
+ if (sym_is_choice(sym) && !parent->prompt)
+ menu_warn(parent, "choice must have a prompt");
+
+ /* Check properties connected to this symbol */
+ sym_check_prop(sym);
+ sym->flags |= SYMBOL_WARNED;
+ }
+
+ if (sym && !sym_is_optional(sym) && parent->prompt) {
+ sym->rev_dep.expr = expr_alloc_or(sym->rev_dep.expr,
+ expr_alloc_and(parent->prompt->visible.expr,
+ expr_alloc_symbol(&symbol_mod)));
+ }
+}
+
+bool menu_has_prompt(struct menu *menu)
+{
+ if (!menu->prompt)
+ return false;
+ return true;
+}
+
+/*
+ * Determine if a menu is empty.
+ * A menu is considered empty if it contains no or only
+ * invisible entries.
+ */
+bool menu_is_empty(struct menu *menu)
+{
+ struct menu *child;
+
+ for (child = menu->list; child; child = child->next) {
+ if (menu_is_visible(child))
+ return(false);
+ }
+ return(true);
+}
+
+bool menu_is_visible(struct menu *menu)
+{
+ struct menu *child;
+ struct symbol *sym;
+ tristate visible;
+
+ if (!menu->prompt)
+ return false;
+
+ if (menu->visibility) {
+ if (expr_calc_value(menu->visibility) == no)
+ return no;
+ }
+
+ sym = menu->sym;
+ if (sym) {
+ sym_calc_value(sym);
+ visible = menu->prompt->visible.tri;
+ } else
+ visible = menu->prompt->visible.tri = expr_calc_value(menu->prompt->visible.expr);
+
+ if (visible != no)
+ return true;
+
+ if (!sym || sym_get_tristate_value(menu->sym) == no)
+ return false;
+
+ for (child = menu->list; child; child = child->next) {
+ if (menu_is_visible(child)) {
+ if (sym)
+ sym->flags |= SYMBOL_DEF_USER;
+ return true;
+ }
+ }
+
+ return false;
+}
+
+const char *menu_get_prompt(struct menu *menu)
+{
+ if (menu->prompt)
+ return menu->prompt->text;
+ else if (menu->sym)
+ return menu->sym->name;
+ return NULL;
+}
+
+struct menu *menu_get_root_menu(struct menu *menu)
+{
+ return &rootmenu;
+}
+
+struct menu *menu_get_parent_menu(struct menu *menu)
+{
+ enum prop_type type;
+
+ for (; menu != &rootmenu; menu = menu->parent) {
+ type = menu->prompt ? menu->prompt->type : 0;
+ if (type == P_MENU)
+ break;
+ }
+ return menu;
+}
+
+bool menu_has_help(struct menu *menu)
+{
+ return menu->help != NULL;
+}
+
+const char *menu_get_help(struct menu *menu)
+{
+ if (menu->help)
+ return menu->help;
+ else
+ return "";
+}
+
+static void get_prompt_str(struct gstr *r, struct property *prop,
+ struct list_head *head)
+{
+ int i, j;
+ struct menu *submenu[8], *menu, *location = NULL;
+ struct jump_key *jump;
+
+ str_printf(r, _("Prompt: %s\n"), _(prop->text));
+ menu = prop->menu->parent;
+ for (i = 0; menu != &rootmenu && i < 8; menu = menu->parent) {
+ bool accessible = menu_is_visible(menu);
+
+ submenu[i++] = menu;
+ if (location == NULL && accessible)
+ location = menu;
+ }
+ if (head && location) {
+ jump = xmalloc(sizeof(struct jump_key));
+
+ if (menu_is_visible(prop->menu)) {
+ /*
+ * There is not enough room to put the hint at the
+ * beginning of the "Prompt" line. Put the hint on the
+ * last "Location" line even when it would belong on
+ * the former.
+ */
+ jump->target = prop->menu;
+ } else
+ jump->target = location;
+
+ if (list_empty(head))
+ jump->index = 0;
+ else
+ jump->index = list_entry(head->prev, struct jump_key,
+ entries)->index + 1;
+
+ list_add_tail(&jump->entries, head);
+ }
+
+ if (i > 0) {
+ str_printf(r, _(" Location:\n"));
+ for (j = 4; --i >= 0; j += 2) {
+ menu = submenu[i];
+ if (head && location && menu == location)
+ jump->offset = strlen(r->s);
+ str_printf(r, "%*c-> %s", j, ' ',
+ _(menu_get_prompt(menu)));
+ if (menu->sym) {
+ str_printf(r, " (%s [=%s])", menu->sym->name ?
+ menu->sym->name : _("<choice>"),
+ sym_get_string_value(menu->sym));
+ }
+ str_append(r, "\n");
+ }
+ }
+}
+
+/*
+ * get property of type P_SYMBOL
+ */
+static struct property *get_symbol_prop(struct symbol *sym)
+{
+ struct property *prop = NULL;
+
+ for_all_properties(sym, prop, P_SYMBOL)
+ break;
+ return prop;
+}
+
+/*
+ * head is optional and may be NULL
+ */
+void get_symbol_str(struct gstr *r, struct symbol *sym,
+ struct list_head *head)
+{
+ bool hit;
+ struct property *prop;
+
+ if (sym && sym->name) {
+ str_printf(r, "Symbol: %s [=%s]\n", sym->name,
+ sym_get_string_value(sym));
+ str_printf(r, "Type : %s\n", sym_type_name(sym->type));
+ if (sym->type == S_INT || sym->type == S_HEX) {
+ prop = sym_get_range_prop(sym);
+ if (prop) {
+ str_printf(r, "Range : ");
+ expr_gstr_print(prop->expr, r);
+ str_append(r, "\n");
+ }
+ }
+ }
+ for_all_prompts(sym, prop)
+ get_prompt_str(r, prop, head);
+
+ prop = get_symbol_prop(sym);
+ if (prop) {
+ str_printf(r, _(" Defined at %s:%d\n"), prop->menu->file->name,
+ prop->menu->lineno);
+ if (!expr_is_yes(prop->visible.expr)) {
+ str_append(r, _(" Depends on: "));
+ expr_gstr_print(prop->visible.expr, r);
+ str_append(r, "\n");
+ }
+ }
+
+ hit = false;
+ for_all_properties(sym, prop, P_SELECT) {
+ if (!hit) {
+ str_append(r, " Selects: ");
+ hit = true;
+ } else
+ str_printf(r, " && ");
+ expr_gstr_print(prop->expr, r);
+ }
+ if (hit)
+ str_append(r, "\n");
+ if (sym->rev_dep.expr) {
+ str_append(r, _(" Selected by: "));
+ expr_gstr_print(sym->rev_dep.expr, r);
+ str_append(r, "\n");
+ }
+ str_append(r, "\n\n");
+}
+
+struct gstr get_relations_str(struct symbol **sym_arr, struct list_head *head)
+{
+ struct symbol *sym;
+ struct gstr res = str_new();
+ int i;
+
+ for (i = 0; sym_arr && (sym = sym_arr[i]); i++)
+ get_symbol_str(&res, sym, head);
+ if (!i)
+ str_append(&res, _("No matches found.\n"));
+ return res;
+}
+
+
+void menu_get_ext_help(struct menu *menu, struct gstr *help)
+{
+ struct symbol *sym = menu->sym;
+ const char *help_text = nohelp_text;
+
+ if (menu_has_help(menu)) {
+ if (sym->name)
+ str_printf(help, "%s%s:\n\n", CONFIG_, sym->name);
+ help_text = menu_get_help(menu);
+ }
+ str_printf(help, "%s\n", _(help_text));
+ if (sym)
+ get_symbol_str(help, sym, NULL);
+}
diff --git a/scripts/kconfig/merge_config.sh b/scripts/kconfig/merge_config.sh
new file mode 100755
index 0000000..81b0c61
--- /dev/null
+++ b/scripts/kconfig/merge_config.sh
@@ -0,0 +1,150 @@
+#!/bin/sh
+# merge_config.sh - Takes a list of config fragment values, and merges
+# them one by one. Provides warnings on overridden values, and specified
+# values that did not make it to the resulting .config file (due to missed
+# dependencies or config symbol removal).
+#
+# Portions reused from kconf_check and generate_cfg:
+# http://git.yoctoproject.org/cgit/cgit.cgi/yocto-kernel-tools/tree/tools/kconf_check
+# http://git.yoctoproject.org/cgit/cgit.cgi/yocto-kernel-tools/tree/tools/generate_cfg
+#
+# Copyright (c) 2009-2010 Wind River Systems, Inc.
+# Copyright 2011 Linaro
+#
+# 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.
+
+clean_up() {
+ rm -f $TMP_FILE
+ exit
+}
+trap clean_up HUP INT TERM
+
+usage() {
+ echo "Usage: $0 [OPTIONS] [CONFIG [...]]"
+ echo " -h display this help text"
+ echo " -m only merge the fragments, do not execute the make command"
+ echo " -n use allnoconfig instead of alldefconfig"
+ echo " -r list redundant entries when merging fragments"
+ echo " -O dir to put generated output files"
+}
+
+MAKE=true
+ALLTARGET=alldefconfig
+WARNREDUN=false
+OUTPUT=.
+
+while true; do
+ case $1 in
+ "-n")
+ ALLTARGET=allnoconfig
+ shift
+ continue
+ ;;
+ "-m")
+ MAKE=false
+ shift
+ continue
+ ;;
+ "-h")
+ usage
+ exit
+ ;;
+ "-r")
+ WARNREDUN=true
+ shift
+ continue
+ ;;
+ "-O")
+ if [ -d $2 ];then
+ OUTPUT=$(echo $2 | sed 's/\/*$//')
+ else
+ echo "output directory $2 does not exist" 1>&2
+ exit 1
+ fi
+ shift 2
+ continue
+ ;;
+ *)
+ break
+ ;;
+ esac
+done
+
+INITFILE=$1
+shift;
+
+MERGE_LIST=$*
+SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(CONFIG_[a-zA-Z0-9_]*\)[= ].*/\2/p"
+TMP_FILE=$(mktemp ./.tmp.config.XXXXXXXXXX)
+
+echo "Using $INITFILE as base"
+cat $INITFILE > $TMP_FILE
+
+# Merge files, printing warnings on overrided values
+for MERGE_FILE in $MERGE_LIST ; do
+ echo "Merging $MERGE_FILE"
+ CFG_LIST=$(sed -n "$SED_CONFIG_EXP" $MERGE_FILE)
+
+ for CFG in $CFG_LIST ; do
+ grep -q -w $CFG $TMP_FILE
+ if [ $? -eq 0 ] ; then
+ PREV_VAL=$(grep -w $CFG $TMP_FILE)
+ NEW_VAL=$(grep -w $CFG $MERGE_FILE)
+ if [ "x$PREV_VAL" != "x$NEW_VAL" ] ; then
+ echo Value of $CFG is redefined by fragment $MERGE_FILE:
+ echo Previous value: $PREV_VAL
+ echo New value: $NEW_VAL
+ echo
+ elif [ "$WARNREDUN" = "true" ]; then
+ echo Value of $CFG is redundant by fragment $MERGE_FILE:
+ fi
+ sed -i "/$CFG[ =]/d" $TMP_FILE
+ fi
+ done
+ cat $MERGE_FILE >> $TMP_FILE
+done
+
+if [ "$MAKE" = "false" ]; then
+ cp $TMP_FILE $OUTPUT/.config
+ echo "#"
+ echo "# merged configuration written to $OUTPUT/.config (needs make)"
+ echo "#"
+ clean_up
+ exit
+fi
+
+# If we have an output dir, setup the O= argument, otherwise leave
+# it blank, since O=. will create an unnecessary ./source softlink
+OUTPUT_ARG=""
+if [ "$OUTPUT" != "." ] ; then
+ OUTPUT_ARG="O=$OUTPUT"
+fi
+
+
+# Use the merged file as the starting point for:
+# alldefconfig: Fills in any missing symbols with Kconfig default
+# allnoconfig: Fills in any missing symbols with # CONFIG_* is not set
+make KCONFIG_ALLCONFIG=$TMP_FILE $OUTPUT_ARG $ALLTARGET
+
+
+# Check all specified config values took (might have missed-dependency issues)
+for CFG in $(sed -n "$SED_CONFIG_EXP" $TMP_FILE); do
+
+ REQUESTED_VAL=$(grep -w -e "$CFG" $TMP_FILE)
+ ACTUAL_VAL=$(grep -w -e "$CFG" $OUTPUT/.config)
+ if [ "x$REQUESTED_VAL" != "x$ACTUAL_VAL" ] ; then
+ echo "Value requested for $CFG not in final .config"
+ echo "Requested value: $REQUESTED_VAL"
+ echo "Actual value: $ACTUAL_VAL"
+ echo ""
+ fi
+done
+
+clean_up
diff --git a/scripts/kconfig/nconf.c b/scripts/kconfig/nconf.c
new file mode 100644
index 0000000..984489e
--- /dev/null
+++ b/scripts/kconfig/nconf.c
@@ -0,0 +1,1556 @@
+/*
+ * Copyright (C) 2008 Nir Tzachar <nir.tzachar@gmail.com?
+ * Released under the terms of the GNU GPL v2.0.
+ *
+ * Derived from menuconfig.
+ *
+ */
+#define _GNU_SOURCE
+#include <string.h>
+#include <stdlib.h>
+
+#include "lkc.h"
+#include "nconf.h"
+#include <ctype.h>
+
+static const char nconf_global_help[] = N_(
+"Help windows\n"
+"------------\n"
+"o Global help: Unless in a data entry window, pressing <F1> will give \n"
+" you the global help window, which you are just reading.\n"
+"\n"
+"o A short version of the global help is available by pressing <F3>.\n"
+"\n"
+"o Local help: To get help related to the current menu entry, use any\n"
+" of <?> <h>, or if in a data entry window then press <F1>.\n"
+"\n"
+"\n"
+"Menu entries\n"
+"------------\n"
+"This interface lets you select features and parameters for the kernel\n"
+"build. Kernel features can either be built-in, modularized, or removed.\n"
+"Parameters must be entered as text or decimal or hexadecimal numbers.\n"
+"\n"
+"Menu entries beginning with following braces represent features that\n"
+" [ ] can be built in or removed\n"
+" < > can be built in, modularized or removed\n"
+" { } can be built in or modularized, are selected by another feature\n"
+" - - are selected by another feature\n"
+" XXX cannot be selected. Symbol Info <F2> tells you why.\n"
+"*, M or whitespace inside braces means to build in, build as a module\n"
+"or to exclude the feature respectively.\n"
+"\n"
+"To change any of these features, highlight it with the movement keys\n"
+"listed below and press <y> to build it in, <m> to make it a module or\n"
+"<n> to remove it. You may press the <Space> key to cycle through the\n"
+"available options.\n"
+"\n"
+"A trailing \"--->\" designates a submenu, a trailing \"----\" an\n"
+"empty submenu.\n"
+"\n"
+"Menu navigation keys\n"
+"----------------------------------------------------------------------\n"
+"Linewise up <Up>\n"
+"Linewise down <Down>\n"
+"Pagewise up <Page Up>\n"
+"Pagewise down <Page Down>\n"
+"First entry <Home>\n"
+"Last entry <End>\n"
+"Enter a submenu <Right> <Enter>\n"
+"Go back to parent menu <Left> <Esc> <F5>\n"
+"Close a help window <Enter> <Esc> <F5>\n"
+"Close entry window, apply <Enter>\n"
+"Close entry window, forget <Esc> <F5>\n"
+"Start incremental, case-insensitive search for STRING in menu entries,\n"
+" no regex support, STRING is displayed in upper left corner\n"
+" </>STRING\n"
+" Remove last character <Backspace>\n"
+" Jump to next hit <Down>\n"
+" Jump to previous hit <Up>\n"
+"Exit menu search mode </> <Esc>\n"
+"Search for configuration variables with or without leading CONFIG_\n"
+" <F8>RegExpr<Enter>\n"
+"Verbose search help <F8><F1>\n"
+"----------------------------------------------------------------------\n"
+"\n"
+"Unless in a data entry window, key <1> may be used instead of <F1>,\n"
+"<2> instead of <F2>, etc.\n"
+"\n"
+"\n"
+"Radiolist (Choice list)\n"
+"-----------------------\n"
+"Use the movement keys listed above to select the option you wish to set\n"
+"and press <Space>.\n"
+"\n"
+"\n"
+"Data entry\n"
+"----------\n"
+"Enter the requested information and press <Enter>. Hexadecimal values\n"
+"may be entered without the \"0x\" prefix.\n"
+"\n"
+"\n"
+"Text Box (Help Window)\n"
+"----------------------\n"
+"Use movement keys as listed in table above.\n"
+"\n"
+"Press any of <Enter> <Esc> <q> <F5> <F9> to exit.\n"
+"\n"
+"\n"
+"Alternate configuration files\n"
+"-----------------------------\n"
+"nconfig supports switching between different configurations.\n"
+"Press <F6> to save your current configuration. Press <F7> and enter\n"
+"a file name to load a previously saved configuration.\n"
+"\n"
+"\n"
+"Terminal configuration\n"
+"----------------------\n"
+"If you use nconfig in a xterm window, make sure your TERM environment\n"
+"variable specifies a terminal configuration which supports at least\n"
+"16 colors. Otherwise nconfig will look rather bad.\n"
+"\n"
+"If the \"stty size\" command reports the current terminalsize correctly,\n"
+"nconfig will adapt to sizes larger than the traditional 80x25 \"standard\"\n"
+"and display longer menus properly.\n"
+"\n"
+"\n"
+"Single menu mode\n"
+"----------------\n"
+"If you prefer to have all of the menu entries listed in a single menu,\n"
+"rather than the default multimenu hierarchy, run nconfig with\n"
+"NCONFIG_MODE environment variable set to single_menu. Example:\n"
+"\n"
+"make NCONFIG_MODE=single_menu nconfig\n"
+"\n"
+"<Enter> will then unfold the appropriate category, or fold it if it\n"
+"is already unfolded. Folded menu entries will be designated by a\n"
+"leading \"++>\" and unfolded entries by a leading \"-->\".\n"
+"\n"
+"Note that this mode can eventually be a little more CPU expensive than\n"
+"the default mode, especially with a larger number of unfolded submenus.\n"
+"\n"),
+menu_no_f_instructions[] = N_(
+"Legend: [*] built-in [ ] excluded <M> module < > module capable.\n"
+"Submenus are designated by a trailing \"--->\", empty ones by \"----\".\n"
+"\n"
+"Use the following keys to navigate the menus:\n"
+"Move up or down with <Up> and <Down>.\n"
+"Enter a submenu with <Enter> or <Right>.\n"
+"Exit a submenu to its parent menu with <Esc> or <Left>.\n"
+"Pressing <y> includes, <n> excludes, <m> modularizes features.\n"
+"Pressing <Space> cycles through the available options.\n"
+"To search for menu entries press </>.\n"
+"<Esc> always leaves the current window.\n"
+"\n"
+"You do not have function keys support.\n"
+"Press <1> instead of <F1>, <2> instead of <F2>, etc.\n"
+"For verbose global help use key <1>.\n"
+"For help related to the current menu entry press <?> or <h>.\n"),
+menu_instructions[] = N_(
+"Legend: [*] built-in [ ] excluded <M> module < > module capable.\n"
+"Submenus are designated by a trailing \"--->\", empty ones by \"----\".\n"
+"\n"
+"Use the following keys to navigate the menus:\n"
+"Move up or down with <Up> or <Down>.\n"
+"Enter a submenu with <Enter> or <Right>.\n"
+"Exit a submenu to its parent menu with <Esc> or <Left>.\n"
+"Pressing <y> includes, <n> excludes, <m> modularizes features.\n"
+"Pressing <Space> cycles through the available options.\n"
+"To search for menu entries press </>.\n"
+"<Esc> always leaves the current window.\n"
+"\n"
+"Pressing <1> may be used instead of <F1>, <2> instead of <F2>, etc.\n"
+"For verbose global help press <F1>.\n"
+"For help related to the current menu entry press <?> or <h>.\n"),
+radiolist_instructions[] = N_(
+"Press <Up>, <Down>, <Home> or <End> to navigate a radiolist, select\n"
+"with <Space>.\n"
+"For help related to the current entry press <?> or <h>.\n"
+"For global help press <F1>.\n"),
+inputbox_instructions_int[] = N_(
+"Please enter a decimal value.\n"
+"Fractions will not be accepted.\n"
+"Press <Enter> to apply, <Esc> to cancel."),
+inputbox_instructions_hex[] = N_(
+"Please enter a hexadecimal value.\n"
+"Press <Enter> to apply, <Esc> to cancel."),
+inputbox_instructions_string[] = N_(
+"Please enter a string value.\n"
+"Press <Enter> to apply, <Esc> to cancel."),
+setmod_text[] = N_(
+"This feature depends on another feature which has been configured as a\n"
+"module. As a result, the current feature will be built as a module too."),
+load_config_text[] = N_(
+"Enter the name of the configuration file you wish to load.\n"
+"Accept the name shown to restore the configuration you last\n"
+"retrieved. Leave empty to abort."),
+load_config_help[] = N_(
+"For various reasons, one may wish to keep several different\n"
+"configurations available on a single machine.\n"
+"\n"
+"If you have saved a previous configuration in a file other than the\n"
+"default one, entering its name here will allow you to load and modify\n"
+"that configuration.\n"
+"\n"
+"Leave empty to abort.\n"),
+save_config_text[] = N_(
+"Enter a filename to which this configuration should be saved\n"
+"as an alternate. Leave empty to abort."),
+save_config_help[] = N_(
+"For various reasons, one may wish to keep several different\n"
+"configurations available on a single machine.\n"
+"\n"
+"Entering a file name here will allow you to later retrieve, modify\n"
+"and use the current configuration as an alternate to whatever\n"
+"configuration options you have selected at that time.\n"
+"\n"
+"Leave empty to abort.\n"),
+search_help[] = N_(
+"Search for symbols (configuration variable names CONFIG_*) and display\n"
+"their relations. Regular expressions are supported.\n"
+"Example: Search for \"^FOO\".\n"
+"Result:\n"
+"-----------------------------------------------------------------\n"
+"Symbol: FOO [ = m]\n"
+"Prompt: Foo bus is used to drive the bar HW\n"
+"Defined at drivers/pci/Kconfig:47\n"
+"Depends on: X86_LOCAL_APIC && X86_IO_APIC || IA64\n"
+"Location:\n"
+" -> Bus options (PCI, PCMCIA, EISA, ISA)\n"
+" -> PCI support (PCI [ = y])\n"
+" -> PCI access mode (<choice> [ = y])\n"
+"Selects: LIBCRC32\n"
+"Selected by: BAR\n"
+"-----------------------------------------------------------------\n"
+"o The line 'Prompt:' shows the text displayed for this symbol in\n"
+" the menu hierarchy.\n"
+"o The 'Defined at' line tells at what file / line number the symbol is\n"
+" defined.\n"
+"o The 'Depends on:' line lists symbols that need to be defined for\n"
+" this symbol to be visible and selectable in the menu.\n"
+"o The 'Location:' lines tell, where in the menu structure this symbol\n"
+" is located. A location followed by a [ = y] indicates that this is\n"
+" a selectable menu item, and the current value is displayed inside\n"
+" brackets.\n"
+"o The 'Selects:' line tells, what symbol will be automatically selected\n"
+" if this symbol is selected (y or m).\n"
+"o The 'Selected by' line tells what symbol has selected this symbol.\n"
+"\n"
+"Only relevant lines are shown.\n"
+"\n\n"
+"Search examples:\n"
+"USB => find all symbols containing USB\n"
+"^USB => find all symbols starting with USB\n"
+"USB$ => find all symbols ending with USB\n"
+"\n");
+
+struct mitem {
+ char str[256];
+ char tag;
+ void *usrptr;
+ int is_visible;
+};
+
+#define MAX_MENU_ITEMS 4096
+static int show_all_items;
+static int indent;
+static struct menu *current_menu;
+static int child_count;
+static int single_menu_mode;
+/* the window in which all information appears */
+static WINDOW *main_window;
+/* the largest size of the menu window */
+static int mwin_max_lines;
+static int mwin_max_cols;
+/* the window in which we show option buttons */
+static MENU *curses_menu;
+static ITEM *curses_menu_items[MAX_MENU_ITEMS];
+static struct mitem k_menu_items[MAX_MENU_ITEMS];
+static int items_num;
+static int global_exit;
+/* the currently selected button */
+const char *current_instructions = menu_instructions;
+
+static char *dialog_input_result;
+static int dialog_input_result_len;
+
+static void conf(struct menu *menu);
+static void conf_choice(struct menu *menu);
+static void conf_string(struct menu *menu);
+static void conf_load(void);
+static void conf_save(void);
+static void show_help(struct menu *menu);
+static int do_exit(void);
+static void setup_windows(void);
+static void search_conf(void);
+
+typedef void (*function_key_handler_t)(int *key, struct menu *menu);
+static void handle_f1(int *key, struct menu *current_item);
+static void handle_f2(int *key, struct menu *current_item);
+static void handle_f3(int *key, struct menu *current_item);
+static void handle_f4(int *key, struct menu *current_item);
+static void handle_f5(int *key, struct menu *current_item);
+static void handle_f6(int *key, struct menu *current_item);
+static void handle_f7(int *key, struct menu *current_item);
+static void handle_f8(int *key, struct menu *current_item);
+static void handle_f9(int *key, struct menu *current_item);
+
+struct function_keys {
+ const char *key_str;
+ const char *func;
+ function_key key;
+ function_key_handler_t handler;
+};
+
+static const int function_keys_num = 9;
+struct function_keys function_keys[] = {
+ {
+ .key_str = "F1",
+ .func = "Help",
+ .key = F_HELP,
+ .handler = handle_f1,
+ },
+ {
+ .key_str = "F2",
+ .func = "SymInfo",
+ .key = F_SYMBOL,
+ .handler = handle_f2,
+ },
+ {
+ .key_str = "F3",
+ .func = "Help 2",
+ .key = F_INSTS,
+ .handler = handle_f3,
+ },
+ {
+ .key_str = "F4",
+ .func = "ShowAll",
+ .key = F_CONF,
+ .handler = handle_f4,
+ },
+ {
+ .key_str = "F5",
+ .func = "Back",
+ .key = F_BACK,
+ .handler = handle_f5,
+ },
+ {
+ .key_str = "F6",
+ .func = "Save",
+ .key = F_SAVE,
+ .handler = handle_f6,
+ },
+ {
+ .key_str = "F7",
+ .func = "Load",
+ .key = F_LOAD,
+ .handler = handle_f7,
+ },
+ {
+ .key_str = "F8",
+ .func = "SymSearch",
+ .key = F_SEARCH,
+ .handler = handle_f8,
+ },
+ {
+ .key_str = "F9",
+ .func = "Exit",
+ .key = F_EXIT,
+ .handler = handle_f9,
+ },
+};
+
+static void print_function_line(void)
+{
+ int i;
+ int offset = 1;
+ const int skip = 1;
+ int lines = getmaxy(stdscr);
+
+ for (i = 0; i < function_keys_num; i++) {
+ (void) wattrset(main_window, attributes[FUNCTION_HIGHLIGHT]);
+ mvwprintw(main_window, lines-3, offset,
+ "%s",
+ function_keys[i].key_str);
+ (void) wattrset(main_window, attributes[FUNCTION_TEXT]);
+ offset += strlen(function_keys[i].key_str);
+ mvwprintw(main_window, lines-3,
+ offset, "%s",
+ function_keys[i].func);
+ offset += strlen(function_keys[i].func) + skip;
+ }
+ (void) wattrset(main_window, attributes[NORMAL]);
+}
+
+/* help */
+static void handle_f1(int *key, struct menu *current_item)
+{
+ show_scroll_win(main_window,
+ _("Global help"), _(nconf_global_help));
+ return;
+}
+
+/* symbole help */
+static void handle_f2(int *key, struct menu *current_item)
+{
+ show_help(current_item);
+ return;
+}
+
+/* instructions */
+static void handle_f3(int *key, struct menu *current_item)
+{
+ show_scroll_win(main_window,
+ _("Short help"),
+ _(current_instructions));
+ return;
+}
+
+/* config */
+static void handle_f4(int *key, struct menu *current_item)
+{
+ int res = btn_dialog(main_window,
+ _("Show all symbols?"),
+ 2,
+ " <Show All> ",
+ "<Don't show all>");
+ if (res == 0)
+ show_all_items = 1;
+ else if (res == 1)
+ show_all_items = 0;
+
+ return;
+}
+
+/* back */
+static void handle_f5(int *key, struct menu *current_item)
+{
+ *key = KEY_LEFT;
+ return;
+}
+
+/* save */
+static void handle_f6(int *key, struct menu *current_item)
+{
+ conf_save();
+ return;
+}
+
+/* load */
+static void handle_f7(int *key, struct menu *current_item)
+{
+ conf_load();
+ return;
+}
+
+/* search */
+static void handle_f8(int *key, struct menu *current_item)
+{
+ search_conf();
+ return;
+}
+
+/* exit */
+static void handle_f9(int *key, struct menu *current_item)
+{
+ do_exit();
+ return;
+}
+
+/* return != 0 to indicate the key was handles */
+static int process_special_keys(int *key, struct menu *menu)
+{
+ int i;
+
+ if (*key == KEY_RESIZE) {
+ setup_windows();
+ return 1;
+ }
+
+ for (i = 0; i < function_keys_num; i++) {
+ if (*key == KEY_F(function_keys[i].key) ||
+ *key == '0' + function_keys[i].key){
+ function_keys[i].handler(key, menu);
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
+static void clean_items(void)
+{
+ int i;
+ for (i = 0; curses_menu_items[i]; i++)
+ free_item(curses_menu_items[i]);
+ bzero(curses_menu_items, sizeof(curses_menu_items));
+ bzero(k_menu_items, sizeof(k_menu_items));
+ items_num = 0;
+}
+
+typedef enum {MATCH_TINKER_PATTERN_UP, MATCH_TINKER_PATTERN_DOWN,
+ FIND_NEXT_MATCH_DOWN, FIND_NEXT_MATCH_UP} match_f;
+
+/* return the index of the matched item, or -1 if no such item exists */
+static int get_mext_match(const char *match_str, match_f flag)
+{
+ int match_start = item_index(current_item(curses_menu));
+ int index;
+
+ if (flag == FIND_NEXT_MATCH_DOWN)
+ ++match_start;
+ else if (flag == FIND_NEXT_MATCH_UP)
+ --match_start;
+
+ index = match_start;
+ index = (index + items_num) % items_num;
+ while (true) {
+ char *str = k_menu_items[index].str;
+ if (strcasestr(str, match_str) != 0)
+ return index;
+ if (flag == FIND_NEXT_MATCH_UP ||
+ flag == MATCH_TINKER_PATTERN_UP)
+ --index;
+ else
+ ++index;
+ index = (index + items_num) % items_num;
+ if (index == match_start)
+ return -1;
+ }
+}
+
+/* Make a new item. */
+static void item_make(struct menu *menu, char tag, const char *fmt, ...)
+{
+ va_list ap;
+
+ if (items_num > MAX_MENU_ITEMS-1)
+ return;
+
+ bzero(&k_menu_items[items_num], sizeof(k_menu_items[0]));
+ k_menu_items[items_num].tag = tag;
+ k_menu_items[items_num].usrptr = menu;
+ if (menu != NULL)
+ k_menu_items[items_num].is_visible =
+ menu_is_visible(menu);
+ else
+ k_menu_items[items_num].is_visible = 1;
+
+ va_start(ap, fmt);
+ vsnprintf(k_menu_items[items_num].str,
+ sizeof(k_menu_items[items_num].str),
+ fmt, ap);
+ va_end(ap);
+
+ if (!k_menu_items[items_num].is_visible)
+ memcpy(k_menu_items[items_num].str, "XXX", 3);
+
+ curses_menu_items[items_num] = new_item(
+ k_menu_items[items_num].str,
+ k_menu_items[items_num].str);
+ set_item_userptr(curses_menu_items[items_num],
+ &k_menu_items[items_num]);
+ /*
+ if (!k_menu_items[items_num].is_visible)
+ item_opts_off(curses_menu_items[items_num], O_SELECTABLE);
+ */
+
+ items_num++;
+ curses_menu_items[items_num] = NULL;
+}
+
+/* very hackish. adds a string to the last item added */
+static void item_add_str(const char *fmt, ...)
+{
+ va_list ap;
+ int index = items_num-1;
+ char new_str[256];
+ char tmp_str[256];
+
+ if (index < 0)
+ return;
+
+ va_start(ap, fmt);
+ vsnprintf(new_str, sizeof(new_str), fmt, ap);
+ va_end(ap);
+ snprintf(tmp_str, sizeof(tmp_str), "%s%s",
+ k_menu_items[index].str, new_str);
+ strncpy(k_menu_items[index].str,
+ tmp_str,
+ sizeof(k_menu_items[index].str));
+
+ free_item(curses_menu_items[index]);
+ curses_menu_items[index] = new_item(
+ k_menu_items[index].str,
+ k_menu_items[index].str);
+ set_item_userptr(curses_menu_items[index],
+ &k_menu_items[index]);
+}
+
+/* get the tag of the currently selected item */
+static char item_tag(void)
+{
+ ITEM *cur;
+ struct mitem *mcur;
+
+ cur = current_item(curses_menu);
+ if (cur == NULL)
+ return 0;
+ mcur = (struct mitem *) item_userptr(cur);
+ return mcur->tag;
+}
+
+static int curses_item_index(void)
+{
+ return item_index(current_item(curses_menu));
+}
+
+static void *item_data(void)
+{
+ ITEM *cur;
+ struct mitem *mcur;
+
+ cur = current_item(curses_menu);
+ if (!cur)
+ return NULL;
+ mcur = (struct mitem *) item_userptr(cur);
+ return mcur->usrptr;
+
+}
+
+static int item_is_tag(char tag)
+{
+ return item_tag() == tag;
+}
+
+static char filename[PATH_MAX+1];
+static char menu_backtitle[PATH_MAX+128];
+static const char *set_config_filename(const char *config_filename)
+{
+ int size;
+
+ size = snprintf(menu_backtitle, sizeof(menu_backtitle),
+ "%s - %s", config_filename, rootmenu.prompt->text);
+ if (size >= sizeof(menu_backtitle))
+ menu_backtitle[sizeof(menu_backtitle)-1] = '\0';
+
+ size = snprintf(filename, sizeof(filename), "%s", config_filename);
+ if (size >= sizeof(filename))
+ filename[sizeof(filename)-1] = '\0';
+ return menu_backtitle;
+}
+
+/* return = 0 means we are successful.
+ * -1 means go on doing what you were doing
+ */
+static int do_exit(void)
+{
+ int res;
+ if (!conf_get_changed()) {
+ global_exit = 1;
+ return 0;
+ }
+ res = btn_dialog(main_window,
+ _("Do you wish to save your new configuration?\n"
+ "<ESC> to cancel and resume nconfig."),
+ 2,
+ " <save> ",
+ "<don't save>");
+ if (res == KEY_EXIT) {
+ global_exit = 0;
+ return -1;
+ }
+
+ /* if we got here, the user really wants to exit */
+ switch (res) {
+ case 0:
+ res = conf_write(filename);
+ if (res)
+ btn_dialog(
+ main_window,
+ _("Error during writing of configuration.\n"
+ "Your configuration changes were NOT saved."),
+ 1,
+ "<OK>");
+ break;
+ default:
+ btn_dialog(
+ main_window,
+ _("Your configuration changes were NOT saved."),
+ 1,
+ "<OK>");
+ break;
+ }
+ global_exit = 1;
+ return 0;
+}
+
+
+static void search_conf(void)
+{
+ struct symbol **sym_arr;
+ struct gstr res;
+ struct gstr title;
+ char *dialog_input;
+ int dres;
+
+ title = str_new();
+ str_printf( &title, _("Enter (sub)string or regexp to search for "
+ "(with or without \"%s\")"), CONFIG_);
+
+again:
+ dres = dialog_inputbox(main_window,
+ _("Search Configuration Parameter"),
+ str_get(&title),
+ "", &dialog_input_result, &dialog_input_result_len);
+ switch (dres) {
+ case 0:
+ break;
+ case 1:
+ show_scroll_win(main_window,
+ _("Search Configuration"), search_help);
+ goto again;
+ default:
+ str_free(&title);
+ return;
+ }
+
+ /* strip the prefix if necessary */
+ dialog_input = dialog_input_result;
+ if (strncasecmp(dialog_input_result, CONFIG_, strlen(CONFIG_)) == 0)
+ dialog_input += strlen(CONFIG_);
+
+ sym_arr = sym_re_search(dialog_input);
+ res = get_relations_str(sym_arr, NULL);
+ free(sym_arr);
+ show_scroll_win(main_window,
+ _("Search Results"), str_get(&res));
+ str_free(&res);
+ str_free(&title);
+}
+
+
+static void build_conf(struct menu *menu)
+{
+ struct symbol *sym;
+ struct property *prop;
+ struct menu *child;
+ int type, tmp, doint = 2;
+ tristate val;
+ char ch;
+
+ if (!menu || (!show_all_items && !menu_is_visible(menu)))
+ return;
+
+ sym = menu->sym;
+ prop = menu->prompt;
+ if (!sym) {
+ if (prop && menu != current_menu) {
+ const char *prompt = menu_get_prompt(menu);
+ enum prop_type ptype;
+ ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN;
+ switch (ptype) {
+ case P_MENU:
+ child_count++;
+ prompt = _(prompt);
+ if (single_menu_mode) {
+ item_make(menu, 'm',
+ "%s%*c%s",
+ menu->data ? "-->" : "++>",
+ indent + 1, ' ', prompt);
+ } else
+ item_make(menu, 'm',
+ " %*c%s %s",
+ indent + 1, ' ', prompt,
+ menu_is_empty(menu) ? "----" : "--->");
+
+ if (single_menu_mode && menu->data)
+ goto conf_childs;
+ return;
+ case P_COMMENT:
+ if (prompt) {
+ child_count++;
+ item_make(menu, ':',
+ " %*c*** %s ***",
+ indent + 1, ' ',
+ _(prompt));
+ }
+ break;
+ default:
+ if (prompt) {
+ child_count++;
+ item_make(menu, ':', "---%*c%s",
+ indent + 1, ' ',
+ _(prompt));
+ }
+ }
+ } else
+ doint = 0;
+ goto conf_childs;
+ }
+
+ type = sym_get_type(sym);
+ if (sym_is_choice(sym)) {
+ struct symbol *def_sym = sym_get_choice_value(sym);
+ struct menu *def_menu = NULL;
+
+ child_count++;
+ for (child = menu->list; child; child = child->next) {
+ if (menu_is_visible(child) && child->sym == def_sym)
+ def_menu = child;
+ }
+
+ val = sym_get_tristate_value(sym);
+ if (sym_is_changable(sym)) {
+ switch (type) {
+ case S_BOOLEAN:
+ item_make(menu, 't', "[%c]",
+ val == no ? ' ' : '*');
+ break;
+ case S_TRISTATE:
+ switch (val) {
+ case yes:
+ ch = '*';
+ break;
+ case mod:
+ ch = 'M';
+ break;
+ default:
+ ch = ' ';
+ break;
+ }
+ item_make(menu, 't', "<%c>", ch);
+ break;
+ }
+ } else {
+ item_make(menu, def_menu ? 't' : ':', " ");
+ }
+
+ item_add_str("%*c%s", indent + 1,
+ ' ', _(menu_get_prompt(menu)));
+ if (val == yes) {
+ if (def_menu) {
+ item_add_str(" (%s)",
+ _(menu_get_prompt(def_menu)));
+ item_add_str(" --->");
+ if (def_menu->list) {
+ indent += 2;
+ build_conf(def_menu);
+ indent -= 2;
+ }
+ }
+ return;
+ }
+ } else {
+ if (menu == current_menu) {
+ item_make(menu, ':',
+ "---%*c%s", indent + 1,
+ ' ', _(menu_get_prompt(menu)));
+ goto conf_childs;
+ }
+ child_count++;
+ val = sym_get_tristate_value(sym);
+ if (sym_is_choice_value(sym) && val == yes) {
+ item_make(menu, ':', " ");
+ } else {
+ switch (type) {
+ case S_BOOLEAN:
+ if (sym_is_changable(sym))
+ item_make(menu, 't', "[%c]",
+ val == no ? ' ' : '*');
+ else
+ item_make(menu, 't', "-%c-",
+ val == no ? ' ' : '*');
+ break;
+ case S_TRISTATE:
+ switch (val) {
+ case yes:
+ ch = '*';
+ break;
+ case mod:
+ ch = 'M';
+ break;
+ default:
+ ch = ' ';
+ break;
+ }
+ if (sym_is_changable(sym)) {
+ if (sym->rev_dep.tri == mod)
+ item_make(menu,
+ 't', "{%c}", ch);
+ else
+ item_make(menu,
+ 't', "<%c>", ch);
+ } else
+ item_make(menu, 't', "-%c-", ch);
+ break;
+ default:
+ tmp = 2 + strlen(sym_get_string_value(sym));
+ item_make(menu, 's', " (%s)",
+ sym_get_string_value(sym));
+ tmp = indent - tmp + 4;
+ if (tmp < 0)
+ tmp = 0;
+ item_add_str("%*c%s%s", tmp, ' ',
+ _(menu_get_prompt(menu)),
+ (sym_has_value(sym) ||
+ !sym_is_changable(sym)) ? "" :
+ _(" (NEW)"));
+ goto conf_childs;
+ }
+ }
+ item_add_str("%*c%s%s", indent + 1, ' ',
+ _(menu_get_prompt(menu)),
+ (sym_has_value(sym) || !sym_is_changable(sym)) ?
+ "" : _(" (NEW)"));
+ if (menu->prompt && menu->prompt->type == P_MENU) {
+ item_add_str(" %s", menu_is_empty(menu) ? "----" : "--->");
+ return;
+ }
+ }
+
+conf_childs:
+ indent += doint;
+ for (child = menu->list; child; child = child->next)
+ build_conf(child);
+ indent -= doint;
+}
+
+static void reset_menu(void)
+{
+ unpost_menu(curses_menu);
+ clean_items();
+}
+
+/* adjust the menu to show this item.
+ * prefer not to scroll the menu if possible*/
+static void center_item(int selected_index, int *last_top_row)
+{
+ int toprow;
+
+ set_top_row(curses_menu, *last_top_row);
+ toprow = top_row(curses_menu);
+ if (selected_index < toprow ||
+ selected_index >= toprow+mwin_max_lines) {
+ toprow = max(selected_index-mwin_max_lines/2, 0);
+ if (toprow >= item_count(curses_menu)-mwin_max_lines)
+ toprow = item_count(curses_menu)-mwin_max_lines;
+ set_top_row(curses_menu, toprow);
+ }
+ set_current_item(curses_menu,
+ curses_menu_items[selected_index]);
+ *last_top_row = toprow;
+ post_menu(curses_menu);
+ refresh_all_windows(main_window);
+}
+
+/* this function assumes reset_menu has been called before */
+static void show_menu(const char *prompt, const char *instructions,
+ int selected_index, int *last_top_row)
+{
+ int maxx, maxy;
+ WINDOW *menu_window;
+
+ current_instructions = instructions;
+
+ clear();
+ (void) wattrset(main_window, attributes[NORMAL]);
+ print_in_middle(stdscr, 1, 0, getmaxx(stdscr),
+ menu_backtitle,
+ attributes[MAIN_HEADING]);
+
+ (void) wattrset(main_window, attributes[MAIN_MENU_BOX]);
+ box(main_window, 0, 0);
+ (void) wattrset(main_window, attributes[MAIN_MENU_HEADING]);
+ mvwprintw(main_window, 0, 3, " %s ", prompt);
+ (void) wattrset(main_window, attributes[NORMAL]);
+
+ set_menu_items(curses_menu, curses_menu_items);
+
+ /* position the menu at the middle of the screen */
+ scale_menu(curses_menu, &maxy, &maxx);
+ maxx = min(maxx, mwin_max_cols-2);
+ maxy = mwin_max_lines;
+ menu_window = derwin(main_window,
+ maxy,
+ maxx,
+ 2,
+ (mwin_max_cols-maxx)/2);
+ keypad(menu_window, TRUE);
+ set_menu_win(curses_menu, menu_window);
+ set_menu_sub(curses_menu, menu_window);
+
+ /* must reassert this after changing items, otherwise returns to a
+ * default of 16
+ */
+ set_menu_format(curses_menu, maxy, 1);
+ center_item(selected_index, last_top_row);
+ set_menu_format(curses_menu, maxy, 1);
+
+ print_function_line();
+
+ /* Post the menu */
+ post_menu(curses_menu);
+ refresh_all_windows(main_window);
+}
+
+static void adj_match_dir(match_f *match_direction)
+{
+ if (*match_direction == FIND_NEXT_MATCH_DOWN)
+ *match_direction =
+ MATCH_TINKER_PATTERN_DOWN;
+ else if (*match_direction == FIND_NEXT_MATCH_UP)
+ *match_direction =
+ MATCH_TINKER_PATTERN_UP;
+ /* else, do no change.. */
+}
+
+struct match_state
+{
+ int in_search;
+ match_f match_direction;
+ char pattern[256];
+};
+
+/* Return 0 means I have handled the key. In such a case, ans should hold the
+ * item to center, or -1 otherwise.
+ * Else return -1 .
+ */
+static int do_match(int key, struct match_state *state, int *ans)
+{
+ char c = (char) key;
+ int terminate_search = 0;
+ *ans = -1;
+ if (key == '/' || (state->in_search && key == 27)) {
+ move(0, 0);
+ refresh();
+ clrtoeol();
+ state->in_search = 1-state->in_search;
+ bzero(state->pattern, sizeof(state->pattern));
+ state->match_direction = MATCH_TINKER_PATTERN_DOWN;
+ return 0;
+ } else if (!state->in_search)
+ return 1;
+
+ if (isalnum(c) || isgraph(c) || c == ' ') {
+ state->pattern[strlen(state->pattern)] = c;
+ state->pattern[strlen(state->pattern)] = '\0';
+ adj_match_dir(&state->match_direction);
+ *ans = get_mext_match(state->pattern,
+ state->match_direction);
+ } else if (key == KEY_DOWN) {
+ state->match_direction = FIND_NEXT_MATCH_DOWN;
+ *ans = get_mext_match(state->pattern,
+ state->match_direction);
+ } else if (key == KEY_UP) {
+ state->match_direction = FIND_NEXT_MATCH_UP;
+ *ans = get_mext_match(state->pattern,
+ state->match_direction);
+ } else if (key == KEY_BACKSPACE || key == 127) {
+ state->pattern[strlen(state->pattern)-1] = '\0';
+ adj_match_dir(&state->match_direction);
+ } else
+ terminate_search = 1;
+
+ if (terminate_search) {
+ state->in_search = 0;
+ bzero(state->pattern, sizeof(state->pattern));
+ move(0, 0);
+ refresh();
+ clrtoeol();
+ return -1;
+ }
+ return 0;
+}
+
+static void conf(struct menu *menu)
+{
+ struct menu *submenu = 0;
+ const char *prompt = menu_get_prompt(menu);
+ struct symbol *sym;
+ int res;
+ int current_index = 0;
+ int last_top_row = 0;
+ struct match_state match_state = {
+ .in_search = 0,
+ .match_direction = MATCH_TINKER_PATTERN_DOWN,
+ .pattern = "",
+ };
+
+ while (!global_exit) {
+ reset_menu();
+ current_menu = menu;
+ build_conf(menu);
+ if (!child_count)
+ break;
+
+ show_menu(prompt ? _(prompt) : _("Main Menu"),
+ _(menu_instructions),
+ current_index, &last_top_row);
+ keypad((menu_win(curses_menu)), TRUE);
+ while (!global_exit) {
+ if (match_state.in_search) {
+ mvprintw(0, 0,
+ "searching: %s", match_state.pattern);
+ clrtoeol();
+ }
+ refresh_all_windows(main_window);
+ res = wgetch(menu_win(curses_menu));
+ if (!res)
+ break;
+ if (do_match(res, &match_state, &current_index) == 0) {
+ if (current_index != -1)
+ center_item(current_index,
+ &last_top_row);
+ continue;
+ }
+ if (process_special_keys(&res,
+ (struct menu *) item_data()))
+ break;
+ switch (res) {
+ case KEY_DOWN:
+ menu_driver(curses_menu, REQ_DOWN_ITEM);
+ break;
+ case KEY_UP:
+ menu_driver(curses_menu, REQ_UP_ITEM);
+ break;
+ case KEY_NPAGE:
+ menu_driver(curses_menu, REQ_SCR_DPAGE);
+ break;
+ case KEY_PPAGE:
+ menu_driver(curses_menu, REQ_SCR_UPAGE);
+ break;
+ case KEY_HOME:
+ menu_driver(curses_menu, REQ_FIRST_ITEM);
+ break;
+ case KEY_END:
+ menu_driver(curses_menu, REQ_LAST_ITEM);
+ break;
+ case 'h':
+ case '?':
+ show_help((struct menu *) item_data());
+ break;
+ }
+ if (res == 10 || res == 27 ||
+ res == 32 || res == 'n' || res == 'y' ||
+ res == KEY_LEFT || res == KEY_RIGHT ||
+ res == 'm')
+ break;
+ refresh_all_windows(main_window);
+ }
+
+ refresh_all_windows(main_window);
+ /* if ESC or left*/
+ if (res == 27 || (menu != &rootmenu && res == KEY_LEFT))
+ break;
+
+ /* remember location in the menu */
+ last_top_row = top_row(curses_menu);
+ current_index = curses_item_index();
+
+ if (!item_tag())
+ continue;
+
+ submenu = (struct menu *) item_data();
+ if (!submenu || !menu_is_visible(submenu))
+ continue;
+ sym = submenu->sym;
+
+ switch (res) {
+ case ' ':
+ if (item_is_tag('t'))
+ sym_toggle_tristate_value(sym);
+ else if (item_is_tag('m'))
+ conf(submenu);
+ break;
+ case KEY_RIGHT:
+ case 10: /* ENTER WAS PRESSED */
+ switch (item_tag()) {
+ case 'm':
+ if (single_menu_mode)
+ submenu->data =
+ (void *) (long) !submenu->data;
+ else
+ conf(submenu);
+ break;
+ case 't':
+ if (sym_is_choice(sym) &&
+ sym_get_tristate_value(sym) == yes)
+ conf_choice(submenu);
+ else if (submenu->prompt &&
+ submenu->prompt->type == P_MENU)
+ conf(submenu);
+ else if (res == 10)
+ sym_toggle_tristate_value(sym);
+ break;
+ case 's':
+ conf_string(submenu);
+ break;
+ }
+ break;
+ case 'y':
+ if (item_is_tag('t')) {
+ if (sym_set_tristate_value(sym, yes))
+ break;
+ if (sym_set_tristate_value(sym, mod))
+ btn_dialog(main_window, setmod_text, 0);
+ }
+ break;
+ case 'n':
+ if (item_is_tag('t'))
+ sym_set_tristate_value(sym, no);
+ break;
+ case 'm':
+ if (item_is_tag('t'))
+ sym_set_tristate_value(sym, mod);
+ break;
+ }
+ }
+}
+
+static void conf_message_callback(const char *fmt, va_list ap)
+{
+ char buf[1024];
+
+ vsnprintf(buf, sizeof(buf), fmt, ap);
+ btn_dialog(main_window, buf, 1, "<OK>");
+}
+
+static void show_help(struct menu *menu)
+{
+ struct gstr help;
+
+ if (!menu)
+ return;
+
+ help = str_new();
+ menu_get_ext_help(menu, &help);
+ show_scroll_win(main_window, _(menu_get_prompt(menu)), str_get(&help));
+ str_free(&help);
+}
+
+static void conf_choice(struct menu *menu)
+{
+ const char *prompt = _(menu_get_prompt(menu));
+ struct menu *child = 0;
+ struct symbol *active;
+ int selected_index = 0;
+ int last_top_row = 0;
+ int res, i = 0;
+ struct match_state match_state = {
+ .in_search = 0,
+ .match_direction = MATCH_TINKER_PATTERN_DOWN,
+ .pattern = "",
+ };
+
+ active = sym_get_choice_value(menu->sym);
+ /* this is mostly duplicated from the conf() function. */
+ while (!global_exit) {
+ reset_menu();
+
+ for (i = 0, child = menu->list; child; child = child->next) {
+ if (!show_all_items && !menu_is_visible(child))
+ continue;
+
+ if (child->sym == sym_get_choice_value(menu->sym))
+ item_make(child, ':', "<X> %s",
+ _(menu_get_prompt(child)));
+ else if (child->sym)
+ item_make(child, ':', " %s",
+ _(menu_get_prompt(child)));
+ else
+ item_make(child, ':', "*** %s ***",
+ _(menu_get_prompt(child)));
+
+ if (child->sym == active){
+ last_top_row = top_row(curses_menu);
+ selected_index = i;
+ }
+ i++;
+ }
+ show_menu(prompt ? _(prompt) : _("Choice Menu"),
+ _(radiolist_instructions),
+ selected_index,
+ &last_top_row);
+ while (!global_exit) {
+ if (match_state.in_search) {
+ mvprintw(0, 0, "searching: %s",
+ match_state.pattern);
+ clrtoeol();
+ }
+ refresh_all_windows(main_window);
+ res = wgetch(menu_win(curses_menu));
+ if (!res)
+ break;
+ if (do_match(res, &match_state, &selected_index) == 0) {
+ if (selected_index != -1)
+ center_item(selected_index,
+ &last_top_row);
+ continue;
+ }
+ if (process_special_keys(
+ &res,
+ (struct menu *) item_data()))
+ break;
+ switch (res) {
+ case KEY_DOWN:
+ menu_driver(curses_menu, REQ_DOWN_ITEM);
+ break;
+ case KEY_UP:
+ menu_driver(curses_menu, REQ_UP_ITEM);
+ break;
+ case KEY_NPAGE:
+ menu_driver(curses_menu, REQ_SCR_DPAGE);
+ break;
+ case KEY_PPAGE:
+ menu_driver(curses_menu, REQ_SCR_UPAGE);
+ break;
+ case KEY_HOME:
+ menu_driver(curses_menu, REQ_FIRST_ITEM);
+ break;
+ case KEY_END:
+ menu_driver(curses_menu, REQ_LAST_ITEM);
+ break;
+ case 'h':
+ case '?':
+ show_help((struct menu *) item_data());
+ break;
+ }
+ if (res == 10 || res == 27 || res == ' ' ||
+ res == KEY_LEFT){
+ break;
+ }
+ refresh_all_windows(main_window);
+ }
+ /* if ESC or left */
+ if (res == 27 || res == KEY_LEFT)
+ break;
+
+ child = item_data();
+ if (!child || !menu_is_visible(child) || !child->sym)
+ continue;
+ switch (res) {
+ case ' ':
+ case 10:
+ case KEY_RIGHT:
+ sym_set_tristate_value(child->sym, yes);
+ return;
+ case 'h':
+ case '?':
+ show_help(child);
+ active = child->sym;
+ break;
+ case KEY_EXIT:
+ return;
+ }
+ }
+}
+
+static void conf_string(struct menu *menu)
+{
+ const char *prompt = menu_get_prompt(menu);
+
+ while (1) {
+ int res;
+ const char *heading;
+
+ switch (sym_get_type(menu->sym)) {
+ case S_INT:
+ heading = _(inputbox_instructions_int);
+ break;
+ case S_HEX:
+ heading = _(inputbox_instructions_hex);
+ break;
+ case S_STRING:
+ heading = _(inputbox_instructions_string);
+ break;
+ default:
+ heading = _("Internal nconf error!");
+ }
+ res = dialog_inputbox(main_window,
+ prompt ? _(prompt) : _("Main Menu"),
+ heading,
+ sym_get_string_value(menu->sym),
+ &dialog_input_result,
+ &dialog_input_result_len);
+ switch (res) {
+ case 0:
+ if (sym_set_string_value(menu->sym,
+ dialog_input_result))
+ return;
+ btn_dialog(main_window,
+ _("You have made an invalid entry."), 0);
+ break;
+ case 1:
+ show_help(menu);
+ break;
+ case KEY_EXIT:
+ return;
+ }
+ }
+}
+
+static void conf_load(void)
+{
+ while (1) {
+ int res;
+ res = dialog_inputbox(main_window,
+ NULL, load_config_text,
+ filename,
+ &dialog_input_result,
+ &dialog_input_result_len);
+ switch (res) {
+ case 0:
+ if (!dialog_input_result[0])
+ return;
+ if (!conf_read(dialog_input_result)) {
+ set_config_filename(dialog_input_result);
+ sym_set_change_count(1);
+ return;
+ }
+ btn_dialog(main_window, _("File does not exist!"), 0);
+ break;
+ case 1:
+ show_scroll_win(main_window,
+ _("Load Alternate Configuration"),
+ load_config_help);
+ break;
+ case KEY_EXIT:
+ return;
+ }
+ }
+}
+
+static void conf_save(void)
+{
+ while (1) {
+ int res;
+ res = dialog_inputbox(main_window,
+ NULL, save_config_text,
+ filename,
+ &dialog_input_result,
+ &dialog_input_result_len);
+ switch (res) {
+ case 0:
+ if (!dialog_input_result[0])
+ return;
+ res = conf_write(dialog_input_result);
+ if (!res) {
+ set_config_filename(dialog_input_result);
+ return;
+ }
+ btn_dialog(main_window, _("Can't create file! "
+ "Probably a nonexistent directory."),
+ 1, "<OK>");
+ break;
+ case 1:
+ show_scroll_win(main_window,
+ _("Save Alternate Configuration"),
+ save_config_help);
+ break;
+ case KEY_EXIT:
+ return;
+ }
+ }
+}
+
+void setup_windows(void)
+{
+ int lines, columns;
+
+ getmaxyx(stdscr, lines, columns);
+
+ if (main_window != NULL)
+ delwin(main_window);
+
+ /* set up the menu and menu window */
+ main_window = newwin(lines-2, columns-2, 2, 1);
+ keypad(main_window, TRUE);
+ mwin_max_lines = lines-7;
+ mwin_max_cols = columns-6;
+
+ /* panels order is from bottom to top */
+ new_panel(main_window);
+}
+
+int main(int ac, char **av)
+{
+ int lines, columns;
+ char *mode;
+
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
+ conf_parse(av[1]);
+ conf_read(NULL);
+
+ mode = getenv("NCONFIG_MODE");
+ if (mode) {
+ if (!strcasecmp(mode, "single_menu"))
+ single_menu_mode = 1;
+ }
+
+ /* Initialize curses */
+ initscr();
+ /* set color theme */
+ set_colors();
+
+ cbreak();
+ noecho();
+ keypad(stdscr, TRUE);
+ curs_set(0);
+
+ getmaxyx(stdscr, lines, columns);
+ if (columns < 75 || lines < 20) {
+ endwin();
+ printf("Your terminal should have at "
+ "least 20 lines and 75 columns\n");
+ return 1;
+ }
+
+ notimeout(stdscr, FALSE);
+#if NCURSES_REENTRANT
+ set_escdelay(1);
+#else
+ ESCDELAY = 1;
+#endif
+
+ /* set btns menu */
+ curses_menu = new_menu(curses_menu_items);
+ menu_opts_off(curses_menu, O_SHOWDESC);
+ menu_opts_on(curses_menu, O_SHOWMATCH);
+ menu_opts_on(curses_menu, O_ONEVALUE);
+ menu_opts_on(curses_menu, O_NONCYCLIC);
+ menu_opts_on(curses_menu, O_IGNORECASE);
+ set_menu_mark(curses_menu, " ");
+ set_menu_fore(curses_menu, attributes[MAIN_MENU_FORE]);
+ set_menu_back(curses_menu, attributes[MAIN_MENU_BACK]);
+ set_menu_grey(curses_menu, attributes[MAIN_MENU_GREY]);
+
+ set_config_filename(conf_get_configname());
+ setup_windows();
+
+ /* check for KEY_FUNC(1) */
+ if (has_key(KEY_F(1)) == FALSE) {
+ show_scroll_win(main_window,
+ _("Instructions"),
+ _(menu_no_f_instructions));
+ }
+
+ conf_set_message_callback(conf_message_callback);
+ /* do the work */
+ while (!global_exit) {
+ conf(&rootmenu);
+ if (!global_exit && do_exit() == 0)
+ break;
+ }
+ /* ok, we are done */
+ unpost_menu(curses_menu);
+ free_menu(curses_menu);
+ delwin(main_window);
+ clear();
+ refresh();
+ endwin();
+ return 0;
+}
diff --git a/scripts/kconfig/nconf.gui.c b/scripts/kconfig/nconf.gui.c
new file mode 100644
index 0000000..8275f0e
--- /dev/null
+++ b/scripts/kconfig/nconf.gui.c
@@ -0,0 +1,656 @@
+/*
+ * Copyright (C) 2008 Nir Tzachar <nir.tzachar@gmail.com?
+ * Released under the terms of the GNU GPL v2.0.
+ *
+ * Derived from menuconfig.
+ *
+ */
+#include "nconf.h"
+
+/* a list of all the different widgets we use */
+attributes_t attributes[ATTR_MAX+1] = {0};
+
+/* available colors:
+ COLOR_BLACK 0
+ COLOR_RED 1
+ COLOR_GREEN 2
+ COLOR_YELLOW 3
+ COLOR_BLUE 4
+ COLOR_MAGENTA 5
+ COLOR_CYAN 6
+ COLOR_WHITE 7
+ */
+static void set_normal_colors(void)
+{
+ init_pair(NORMAL, -1, -1);
+ init_pair(MAIN_HEADING, COLOR_MAGENTA, -1);
+
+ /* FORE is for the selected item */
+ init_pair(MAIN_MENU_FORE, -1, -1);
+ /* BACK for all the rest */
+ init_pair(MAIN_MENU_BACK, -1, -1);
+ init_pair(MAIN_MENU_GREY, -1, -1);
+ init_pair(MAIN_MENU_HEADING, COLOR_GREEN, -1);
+ init_pair(MAIN_MENU_BOX, COLOR_YELLOW, -1);
+
+ init_pair(SCROLLWIN_TEXT, -1, -1);
+ init_pair(SCROLLWIN_HEADING, COLOR_GREEN, -1);
+ init_pair(SCROLLWIN_BOX, COLOR_YELLOW, -1);
+
+ init_pair(DIALOG_TEXT, -1, -1);
+ init_pair(DIALOG_BOX, COLOR_YELLOW, -1);
+ init_pair(DIALOG_MENU_BACK, COLOR_YELLOW, -1);
+ init_pair(DIALOG_MENU_FORE, COLOR_RED, -1);
+
+ init_pair(INPUT_BOX, COLOR_YELLOW, -1);
+ init_pair(INPUT_HEADING, COLOR_GREEN, -1);
+ init_pair(INPUT_TEXT, -1, -1);
+ init_pair(INPUT_FIELD, -1, -1);
+
+ init_pair(FUNCTION_HIGHLIGHT, -1, -1);
+ init_pair(FUNCTION_TEXT, COLOR_YELLOW, -1);
+}
+
+/* available attributes:
+ A_NORMAL Normal display (no highlight)
+ A_STANDOUT Best highlighting mode of the terminal.
+ A_UNDERLINE Underlining
+ A_REVERSE Reverse video
+ A_BLINK Blinking
+ A_DIM Half bright
+ A_BOLD Extra bright or bold
+ A_PROTECT Protected mode
+ A_INVIS Invisible or blank mode
+ A_ALTCHARSET Alternate character set
+ A_CHARTEXT Bit-mask to extract a character
+ COLOR_PAIR(n) Color-pair number n
+ */
+static void normal_color_theme(void)
+{
+ /* automatically add color... */
+#define mkattr(name, attr) do { \
+attributes[name] = attr | COLOR_PAIR(name); } while (0)
+ mkattr(NORMAL, NORMAL);
+ mkattr(MAIN_HEADING, A_BOLD | A_UNDERLINE);
+
+ mkattr(MAIN_MENU_FORE, A_REVERSE);
+ mkattr(MAIN_MENU_BACK, A_NORMAL);
+ mkattr(MAIN_MENU_GREY, A_NORMAL);
+ mkattr(MAIN_MENU_HEADING, A_BOLD);
+ mkattr(MAIN_MENU_BOX, A_NORMAL);
+
+ mkattr(SCROLLWIN_TEXT, A_NORMAL);
+ mkattr(SCROLLWIN_HEADING, A_BOLD);
+ mkattr(SCROLLWIN_BOX, A_BOLD);
+
+ mkattr(DIALOG_TEXT, A_BOLD);
+ mkattr(DIALOG_BOX, A_BOLD);
+ mkattr(DIALOG_MENU_FORE, A_STANDOUT);
+ mkattr(DIALOG_MENU_BACK, A_NORMAL);
+
+ mkattr(INPUT_BOX, A_NORMAL);
+ mkattr(INPUT_HEADING, A_BOLD);
+ mkattr(INPUT_TEXT, A_NORMAL);
+ mkattr(INPUT_FIELD, A_UNDERLINE);
+
+ mkattr(FUNCTION_HIGHLIGHT, A_BOLD);
+ mkattr(FUNCTION_TEXT, A_REVERSE);
+}
+
+static void no_colors_theme(void)
+{
+ /* automatically add highlight, no color */
+#define mkattrn(name, attr) { attributes[name] = attr; }
+
+ mkattrn(NORMAL, NORMAL);
+ mkattrn(MAIN_HEADING, A_BOLD | A_UNDERLINE);
+
+ mkattrn(MAIN_MENU_FORE, A_STANDOUT);
+ mkattrn(MAIN_MENU_BACK, A_NORMAL);
+ mkattrn(MAIN_MENU_GREY, A_NORMAL);
+ mkattrn(MAIN_MENU_HEADING, A_BOLD);
+ mkattrn(MAIN_MENU_BOX, A_NORMAL);
+
+ mkattrn(SCROLLWIN_TEXT, A_NORMAL);
+ mkattrn(SCROLLWIN_HEADING, A_BOLD);
+ mkattrn(SCROLLWIN_BOX, A_BOLD);
+
+ mkattrn(DIALOG_TEXT, A_NORMAL);
+ mkattrn(DIALOG_BOX, A_BOLD);
+ mkattrn(DIALOG_MENU_FORE, A_STANDOUT);
+ mkattrn(DIALOG_MENU_BACK, A_NORMAL);
+
+ mkattrn(INPUT_BOX, A_BOLD);
+ mkattrn(INPUT_HEADING, A_BOLD);
+ mkattrn(INPUT_TEXT, A_NORMAL);
+ mkattrn(INPUT_FIELD, A_UNDERLINE);
+
+ mkattrn(FUNCTION_HIGHLIGHT, A_BOLD);
+ mkattrn(FUNCTION_TEXT, A_REVERSE);
+}
+
+void set_colors()
+{
+ start_color();
+ use_default_colors();
+ set_normal_colors();
+ if (has_colors()) {
+ normal_color_theme();
+ } else {
+ /* give defaults */
+ no_colors_theme();
+ }
+}
+
+
+/* this changes the windows attributes !!! */
+void print_in_middle(WINDOW *win,
+ int starty,
+ int startx,
+ int width,
+ const char *string,
+ chtype color)
+{ int length, x, y;
+ float temp;
+
+
+ if (win == NULL)
+ win = stdscr;
+ getyx(win, y, x);
+ if (startx != 0)
+ x = startx;
+ if (starty != 0)
+ y = starty;
+ if (width == 0)
+ width = 80;
+
+ length = strlen(string);
+ temp = (width - length) / 2;
+ x = startx + (int)temp;
+ (void) wattrset(win, color);
+ mvwprintw(win, y, x, "%s", string);
+ refresh();
+}
+
+int get_line_no(const char *text)
+{
+ int i;
+ int total = 1;
+
+ if (!text)
+ return 0;
+
+ for (i = 0; text[i] != '\0'; i++)
+ if (text[i] == '\n')
+ total++;
+ return total;
+}
+
+const char *get_line(const char *text, int line_no)
+{
+ int i;
+ int lines = 0;
+
+ if (!text)
+ return 0;
+
+ for (i = 0; text[i] != '\0' && lines < line_no; i++)
+ if (text[i] == '\n')
+ lines++;
+ return text+i;
+}
+
+int get_line_length(const char *line)
+{
+ int res = 0;
+ while (*line != '\0' && *line != '\n') {
+ line++;
+ res++;
+ }
+ return res;
+}
+
+/* print all lines to the window. */
+void fill_window(WINDOW *win, const char *text)
+{
+ int x, y;
+ int total_lines = get_line_no(text);
+ int i;
+
+ getmaxyx(win, y, x);
+ /* do not go over end of line */
+ total_lines = min(total_lines, y);
+ for (i = 0; i < total_lines; i++) {
+ char tmp[x+10];
+ const char *line = get_line(text, i);
+ int len = get_line_length(line);
+ strncpy(tmp, line, min(len, x));
+ tmp[len] = '\0';
+ mvwprintw(win, i, 0, "%s", tmp);
+ }
+}
+
+/* get the message, and buttons.
+ * each button must be a char*
+ * return the selected button
+ *
+ * this dialog is used for 2 different things:
+ * 1) show a text box, no buttons.
+ * 2) show a dialog, with horizontal buttons
+ */
+int btn_dialog(WINDOW *main_window, const char *msg, int btn_num, ...)
+{
+ va_list ap;
+ char *btn;
+ int btns_width = 0;
+ int msg_lines = 0;
+ int msg_width = 0;
+ int total_width;
+ int win_rows = 0;
+ WINDOW *win;
+ WINDOW *msg_win;
+ WINDOW *menu_win;
+ MENU *menu;
+ ITEM *btns[btn_num+1];
+ int i, x, y;
+ int res = -1;
+
+
+ va_start(ap, btn_num);
+ for (i = 0; i < btn_num; i++) {
+ btn = va_arg(ap, char *);
+ btns[i] = new_item(btn, "");
+ btns_width += strlen(btn)+1;
+ }
+ va_end(ap);
+ btns[btn_num] = NULL;
+
+ /* find the widest line of msg: */
+ msg_lines = get_line_no(msg);
+ for (i = 0; i < msg_lines; i++) {
+ const char *line = get_line(msg, i);
+ int len = get_line_length(line);
+ if (msg_width < len)
+ msg_width = len;
+ }
+
+ total_width = max(msg_width, btns_width);
+ /* place dialog in middle of screen */
+ y = (getmaxy(stdscr)-(msg_lines+4))/2;
+ x = (getmaxx(stdscr)-(total_width+4))/2;
+
+
+ /* create the windows */
+ if (btn_num > 0)
+ win_rows = msg_lines+4;
+ else
+ win_rows = msg_lines+2;
+
+ win = newwin(win_rows, total_width+4, y, x);
+ keypad(win, TRUE);
+ menu_win = derwin(win, 1, btns_width, win_rows-2,
+ 1+(total_width+2-btns_width)/2);
+ menu = new_menu(btns);
+ msg_win = derwin(win, win_rows-2, msg_width, 1,
+ 1+(total_width+2-msg_width)/2);
+
+ set_menu_fore(menu, attributes[DIALOG_MENU_FORE]);
+ set_menu_back(menu, attributes[DIALOG_MENU_BACK]);
+
+ (void) wattrset(win, attributes[DIALOG_BOX]);
+ box(win, 0, 0);
+
+ /* print message */
+ (void) wattrset(msg_win, attributes[DIALOG_TEXT]);
+ fill_window(msg_win, msg);
+
+ set_menu_win(menu, win);
+ set_menu_sub(menu, menu_win);
+ set_menu_format(menu, 1, btn_num);
+ menu_opts_off(menu, O_SHOWDESC);
+ menu_opts_off(menu, O_SHOWMATCH);
+ menu_opts_on(menu, O_ONEVALUE);
+ menu_opts_on(menu, O_NONCYCLIC);
+ set_menu_mark(menu, "");
+ post_menu(menu);
+
+
+ touchwin(win);
+ refresh_all_windows(main_window);
+ while ((res = wgetch(win))) {
+ switch (res) {
+ case KEY_LEFT:
+ menu_driver(menu, REQ_LEFT_ITEM);
+ break;
+ case KEY_RIGHT:
+ menu_driver(menu, REQ_RIGHT_ITEM);
+ break;
+ case 10: /* ENTER */
+ case 27: /* ESCAPE */
+ case ' ':
+ case KEY_F(F_BACK):
+ case KEY_F(F_EXIT):
+ break;
+ }
+ touchwin(win);
+ refresh_all_windows(main_window);
+
+ if (res == 10 || res == ' ') {
+ res = item_index(current_item(menu));
+ break;
+ } else if (res == 27 || res == KEY_F(F_BACK) ||
+ res == KEY_F(F_EXIT)) {
+ res = KEY_EXIT;
+ break;
+ }
+ }
+
+ unpost_menu(menu);
+ free_menu(menu);
+ for (i = 0; i < btn_num; i++)
+ free_item(btns[i]);
+
+ delwin(win);
+ return res;
+}
+
+int dialog_inputbox(WINDOW *main_window,
+ const char *title, const char *prompt,
+ const char *init, char **resultp, int *result_len)
+{
+ int prompt_lines = 0;
+ int prompt_width = 0;
+ WINDOW *win;
+ WINDOW *prompt_win;
+ WINDOW *form_win;
+ PANEL *panel;
+ int i, x, y;
+ int res = -1;
+ int cursor_position = strlen(init);
+ int cursor_form_win;
+ char *result = *resultp;
+
+ if (strlen(init)+1 > *result_len) {
+ *result_len = strlen(init)+1;
+ *resultp = result = realloc(result, *result_len);
+ }
+
+ /* find the widest line of msg: */
+ prompt_lines = get_line_no(prompt);
+ for (i = 0; i < prompt_lines; i++) {
+ const char *line = get_line(prompt, i);
+ int len = get_line_length(line);
+ prompt_width = max(prompt_width, len);
+ }
+
+ if (title)
+ prompt_width = max(prompt_width, strlen(title));
+
+ /* place dialog in middle of screen */
+ y = (getmaxy(stdscr)-(prompt_lines+4))/2;
+ x = (getmaxx(stdscr)-(prompt_width+4))/2;
+
+ strncpy(result, init, *result_len);
+
+ /* create the windows */
+ win = newwin(prompt_lines+6, prompt_width+7, y, x);
+ prompt_win = derwin(win, prompt_lines+1, prompt_width, 2, 2);
+ form_win = derwin(win, 1, prompt_width, prompt_lines+3, 2);
+ keypad(form_win, TRUE);
+
+ (void) wattrset(form_win, attributes[INPUT_FIELD]);
+
+ (void) wattrset(win, attributes[INPUT_BOX]);
+ box(win, 0, 0);
+ (void) wattrset(win, attributes[INPUT_HEADING]);
+ if (title)
+ mvwprintw(win, 0, 3, "%s", title);
+
+ /* print message */
+ (void) wattrset(prompt_win, attributes[INPUT_TEXT]);
+ fill_window(prompt_win, prompt);
+
+ mvwprintw(form_win, 0, 0, "%*s", prompt_width, " ");
+ cursor_form_win = min(cursor_position, prompt_width-1);
+ mvwprintw(form_win, 0, 0, "%s",
+ result + cursor_position-cursor_form_win);
+
+ /* create panels */
+ panel = new_panel(win);
+
+ /* show the cursor */
+ curs_set(1);
+
+ touchwin(win);
+ refresh_all_windows(main_window);
+ while ((res = wgetch(form_win))) {
+ int len = strlen(result);
+ switch (res) {
+ case 10: /* ENTER */
+ case 27: /* ESCAPE */
+ case KEY_F(F_HELP):
+ case KEY_F(F_EXIT):
+ case KEY_F(F_BACK):
+ break;
+ case 127:
+ case KEY_BACKSPACE:
+ if (cursor_position > 0) {
+ memmove(&result[cursor_position-1],
+ &result[cursor_position],
+ len-cursor_position+1);
+ cursor_position--;
+ cursor_form_win--;
+ len--;
+ }
+ break;
+ case KEY_DC:
+ if (cursor_position >= 0 && cursor_position < len) {
+ memmove(&result[cursor_position],
+ &result[cursor_position+1],
+ len-cursor_position+1);
+ len--;
+ }
+ break;
+ case KEY_UP:
+ case KEY_RIGHT:
+ if (cursor_position < len) {
+ cursor_position++;
+ cursor_form_win++;
+ }
+ break;
+ case KEY_DOWN:
+ case KEY_LEFT:
+ if (cursor_position > 0) {
+ cursor_position--;
+ cursor_form_win--;
+ }
+ break;
+ case KEY_HOME:
+ cursor_position = 0;
+ cursor_form_win = 0;
+ break;
+ case KEY_END:
+ cursor_position = len;
+ cursor_form_win = min(cursor_position, prompt_width-1);
+ break;
+ default:
+ if ((isgraph(res) || isspace(res))) {
+ /* one for new char, one for '\0' */
+ if (len+2 > *result_len) {
+ *result_len = len+2;
+ *resultp = result = realloc(result,
+ *result_len);
+ }
+ /* insert the char at the proper position */
+ memmove(&result[cursor_position+1],
+ &result[cursor_position],
+ len-cursor_position+1);
+ result[cursor_position] = res;
+ cursor_position++;
+ cursor_form_win++;
+ len++;
+ } else {
+ mvprintw(0, 0, "unknown key: %d\n", res);
+ }
+ break;
+ }
+ if (cursor_form_win < 0)
+ cursor_form_win = 0;
+ else if (cursor_form_win > prompt_width-1)
+ cursor_form_win = prompt_width-1;
+
+ wmove(form_win, 0, 0);
+ wclrtoeol(form_win);
+ mvwprintw(form_win, 0, 0, "%*s", prompt_width, " ");
+ mvwprintw(form_win, 0, 0, "%s",
+ result + cursor_position-cursor_form_win);
+ wmove(form_win, 0, cursor_form_win);
+ touchwin(win);
+ refresh_all_windows(main_window);
+
+ if (res == 10) {
+ res = 0;
+ break;
+ } else if (res == 27 || res == KEY_F(F_BACK) ||
+ res == KEY_F(F_EXIT)) {
+ res = KEY_EXIT;
+ break;
+ } else if (res == KEY_F(F_HELP)) {
+ res = 1;
+ break;
+ }
+ }
+
+ /* hide the cursor */
+ curs_set(0);
+ del_panel(panel);
+ delwin(prompt_win);
+ delwin(form_win);
+ delwin(win);
+ return res;
+}
+
+/* refresh all windows in the correct order */
+void refresh_all_windows(WINDOW *main_window)
+{
+ update_panels();
+ touchwin(main_window);
+ refresh();
+}
+
+/* layman's scrollable window... */
+void show_scroll_win(WINDOW *main_window,
+ const char *title,
+ const char *text)
+{
+ int res;
+ int total_lines = get_line_no(text);
+ int x, y, lines, columns;
+ int start_x = 0, start_y = 0;
+ int text_lines = 0, text_cols = 0;
+ int total_cols = 0;
+ int win_cols = 0;
+ int win_lines = 0;
+ int i = 0;
+ WINDOW *win;
+ WINDOW *pad;
+ PANEL *panel;
+
+ getmaxyx(stdscr, lines, columns);
+
+ /* find the widest line of msg: */
+ total_lines = get_line_no(text);
+ for (i = 0; i < total_lines; i++) {
+ const char *line = get_line(text, i);
+ int len = get_line_length(line);
+ total_cols = max(total_cols, len+2);
+ }
+
+ /* create the pad */
+ pad = newpad(total_lines+10, total_cols+10);
+ (void) wattrset(pad, attributes[SCROLLWIN_TEXT]);
+ fill_window(pad, text);
+
+ win_lines = min(total_lines+4, lines-2);
+ win_cols = min(total_cols+2, columns-2);
+ text_lines = max(win_lines-4, 0);
+ text_cols = max(win_cols-2, 0);
+
+ /* place window in middle of screen */
+ y = (lines-win_lines)/2;
+ x = (columns-win_cols)/2;
+
+ win = newwin(win_lines, win_cols, y, x);
+ keypad(win, TRUE);
+ /* show the help in the help window, and show the help panel */
+ (void) wattrset(win, attributes[SCROLLWIN_BOX]);
+ box(win, 0, 0);
+ (void) wattrset(win, attributes[SCROLLWIN_HEADING]);
+ mvwprintw(win, 0, 3, " %s ", title);
+ panel = new_panel(win);
+
+ /* handle scrolling */
+ do {
+
+ copywin(pad, win, start_y, start_x, 2, 2, text_lines,
+ text_cols, 0);
+ print_in_middle(win,
+ text_lines+2,
+ 0,
+ text_cols,
+ "<OK>",
+ attributes[DIALOG_MENU_FORE]);
+ wrefresh(win);
+
+ res = wgetch(win);
+ switch (res) {
+ case KEY_NPAGE:
+ case ' ':
+ case 'd':
+ start_y += text_lines-2;
+ break;
+ case KEY_PPAGE:
+ case 'u':
+ start_y -= text_lines+2;
+ break;
+ case KEY_HOME:
+ start_y = 0;
+ break;
+ case KEY_END:
+ start_y = total_lines-text_lines;
+ break;
+ case KEY_DOWN:
+ case 'j':
+ start_y++;
+ break;
+ case KEY_UP:
+ case 'k':
+ start_y--;
+ break;
+ case KEY_LEFT:
+ case 'h':
+ start_x--;
+ break;
+ case KEY_RIGHT:
+ case 'l':
+ start_x++;
+ break;
+ }
+ if (res == 10 || res == 27 || res == 'q' ||
+ res == KEY_F(F_HELP) || res == KEY_F(F_BACK) ||
+ res == KEY_F(F_EXIT))
+ break;
+ if (start_y < 0)
+ start_y = 0;
+ if (start_y >= total_lines-text_lines)
+ start_y = total_lines-text_lines;
+ if (start_x < 0)
+ start_x = 0;
+ if (start_x >= total_cols-text_cols)
+ start_x = total_cols-text_cols;
+ } while (res);
+
+ del_panel(panel);
+ delwin(win);
+ refresh_all_windows(main_window);
+}
diff --git a/scripts/kconfig/nconf.h b/scripts/kconfig/nconf.h
new file mode 100644
index 0000000..0d52617
--- /dev/null
+++ b/scripts/kconfig/nconf.h
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2008 Nir Tzachar <nir.tzachar@gmail.com?
+ * Released under the terms of the GNU GPL v2.0.
+ *
+ * Derived from menuconfig.
+ *
+ */
+
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <locale.h>
+#include <curses.h>
+#include <menu.h>
+#include <panel.h>
+#include <form.h>
+
+#include <stdio.h>
+#include <time.h>
+#include <sys/time.h>
+
+#include "ncurses.h"
+
+#define max(a, b) ({\
+ typeof(a) _a = a;\
+ typeof(b) _b = b;\
+ _a > _b ? _a : _b; })
+
+#define min(a, b) ({\
+ typeof(a) _a = a;\
+ typeof(b) _b = b;\
+ _a < _b ? _a : _b; })
+
+typedef enum {
+ NORMAL = 1,
+ MAIN_HEADING,
+ MAIN_MENU_BOX,
+ MAIN_MENU_FORE,
+ MAIN_MENU_BACK,
+ MAIN_MENU_GREY,
+ MAIN_MENU_HEADING,
+ SCROLLWIN_TEXT,
+ SCROLLWIN_HEADING,
+ SCROLLWIN_BOX,
+ DIALOG_TEXT,
+ DIALOG_MENU_FORE,
+ DIALOG_MENU_BACK,
+ DIALOG_BOX,
+ INPUT_BOX,
+ INPUT_HEADING,
+ INPUT_TEXT,
+ INPUT_FIELD,
+ FUNCTION_TEXT,
+ FUNCTION_HIGHLIGHT,
+ ATTR_MAX
+} attributes_t;
+extern attributes_t attributes[];
+
+typedef enum {
+ F_HELP = 1,
+ F_SYMBOL = 2,
+ F_INSTS = 3,
+ F_CONF = 4,
+ F_BACK = 5,
+ F_SAVE = 6,
+ F_LOAD = 7,
+ F_SEARCH = 8,
+ F_EXIT = 9,
+} function_key;
+
+void set_colors(void);
+
+/* this changes the windows attributes !!! */
+void print_in_middle(WINDOW *win,
+ int starty,
+ int startx,
+ int width,
+ const char *string,
+ chtype color);
+int get_line_length(const char *line);
+int get_line_no(const char *text);
+const char *get_line(const char *text, int line_no);
+void fill_window(WINDOW *win, const char *text);
+int btn_dialog(WINDOW *main_window, const char *msg, int btn_num, ...);
+int dialog_inputbox(WINDOW *main_window,
+ const char *title, const char *prompt,
+ const char *init, char **resultp, int *result_len);
+void refresh_all_windows(WINDOW *main_window);
+void show_scroll_win(WINDOW *main_window,
+ const char *title,
+ const char *text);
diff --git a/scripts/kconfig/qconf.cc b/scripts/kconfig/qconf.cc
new file mode 100644
index 0000000..9d3b04b
--- /dev/null
+++ b/scripts/kconfig/qconf.cc
@@ -0,0 +1,1795 @@
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <qglobal.h>
+
+#if QT_VERSION < 0x040000
+#include <stddef.h>
+#include <qmainwindow.h>
+#include <qvbox.h>
+#include <qvaluelist.h>
+#include <qtextbrowser.h>
+#include <qaction.h>
+#include <qheader.h>
+#include <qfiledialog.h>
+#include <qdragobject.h>
+#include <qpopupmenu.h>
+#else
+#include <q3mainwindow.h>
+#include <q3vbox.h>
+#include <q3valuelist.h>
+#include <q3textbrowser.h>
+#include <q3action.h>
+#include <q3header.h>
+#include <q3filedialog.h>
+#include <q3dragobject.h>
+#include <q3popupmenu.h>
+#endif
+
+#include <qapplication.h>
+#include <qdesktopwidget.h>
+#include <qtoolbar.h>
+#include <qlayout.h>
+#include <qsplitter.h>
+#include <qlineedit.h>
+#include <qlabel.h>
+#include <qpushbutton.h>
+#include <qmenubar.h>
+#include <qmessagebox.h>
+#include <qregexp.h>
+#include <qevent.h>
+
+#include <stdlib.h>
+
+#include "lkc.h"
+#include "qconf.h"
+
+#include "qconf.moc"
+#include "images.c"
+
+#ifdef _
+# undef _
+# define _ qgettext
+#endif
+
+static QApplication *configApp;
+static ConfigSettings *configSettings;
+
+Q3Action *ConfigMainWindow::saveAction;
+
+static inline QString qgettext(const char* str)
+{
+ return QString::fromLocal8Bit(gettext(str));
+}
+
+static inline QString qgettext(const QString& str)
+{
+ return QString::fromLocal8Bit(gettext(str.latin1()));
+}
+
+ConfigSettings::ConfigSettings()
+ : QSettings("kernel.org", "qconf")
+{
+}
+
+/**
+ * Reads a list of integer values from the application settings.
+ */
+Q3ValueList<int> ConfigSettings::readSizes(const QString& key, bool *ok)
+{
+ Q3ValueList<int> result;
+ QStringList entryList = readListEntry(key, ok);
+ QStringList::Iterator it;
+
+ for (it = entryList.begin(); it != entryList.end(); ++it)
+ result.push_back((*it).toInt());
+
+ return result;
+}
+
+/**
+ * Writes a list of integer values to the application settings.
+ */
+bool ConfigSettings::writeSizes(const QString& key, const Q3ValueList<int>& value)
+{
+ QStringList stringList;
+ Q3ValueList<int>::ConstIterator it;
+
+ for (it = value.begin(); it != value.end(); ++it)
+ stringList.push_back(QString::number(*it));
+ return writeEntry(key, stringList);
+}
+
+
+/*
+ * set the new data
+ * TODO check the value
+ */
+void ConfigItem::okRename(int col)
+{
+ Parent::okRename(col);
+ sym_set_string_value(menu->sym, text(dataColIdx).latin1());
+ listView()->updateList(this);
+}
+
+/*
+ * update the displayed of a menu entry
+ */
+void ConfigItem::updateMenu(void)
+{
+ ConfigList* list;
+ struct symbol* sym;
+ struct property *prop;
+ QString prompt;
+ int type;
+ tristate expr;
+
+ list = listView();
+ if (goParent) {
+ setPixmap(promptColIdx, list->menuBackPix);
+ prompt = "..";
+ goto set_prompt;
+ }
+
+ sym = menu->sym;
+ prop = menu->prompt;
+ prompt = _(menu_get_prompt(menu));
+
+ if (prop) switch (prop->type) {
+ case P_MENU:
+ if (list->mode == singleMode || list->mode == symbolMode) {
+ /* a menuconfig entry is displayed differently
+ * depending whether it's at the view root or a child.
+ */
+ if (sym && list->rootEntry == menu)
+ break;
+ setPixmap(promptColIdx, list->menuPix);
+ } else {
+ if (sym)
+ break;
+ setPixmap(promptColIdx, 0);
+ }
+ goto set_prompt;
+ case P_COMMENT:
+ setPixmap(promptColIdx, 0);
+ goto set_prompt;
+ default:
+ ;
+ }
+ if (!sym)
+ goto set_prompt;
+
+ setText(nameColIdx, QString::fromLocal8Bit(sym->name));
+
+ type = sym_get_type(sym);
+ switch (type) {
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ char ch;
+
+ if (!sym_is_changable(sym) && list->optMode == normalOpt) {
+ setPixmap(promptColIdx, 0);
+ setText(noColIdx, QString::null);
+ setText(modColIdx, QString::null);
+ setText(yesColIdx, QString::null);
+ break;
+ }
+ expr = sym_get_tristate_value(sym);
+ switch (expr) {
+ case yes:
+ if (sym_is_choice_value(sym) && type == S_BOOLEAN)
+ setPixmap(promptColIdx, list->choiceYesPix);
+ else
+ setPixmap(promptColIdx, list->symbolYesPix);
+ setText(yesColIdx, "Y");
+ ch = 'Y';
+ break;
+ case mod:
+ setPixmap(promptColIdx, list->symbolModPix);
+ setText(modColIdx, "M");
+ ch = 'M';
+ break;
+ default:
+ if (sym_is_choice_value(sym) && type == S_BOOLEAN)
+ setPixmap(promptColIdx, list->choiceNoPix);
+ else
+ setPixmap(promptColIdx, list->symbolNoPix);
+ setText(noColIdx, "N");
+ ch = 'N';
+ break;
+ }
+ if (expr != no)
+ setText(noColIdx, sym_tristate_within_range(sym, no) ? "_" : 0);
+ if (expr != mod)
+ setText(modColIdx, sym_tristate_within_range(sym, mod) ? "_" : 0);
+ if (expr != yes)
+ setText(yesColIdx, sym_tristate_within_range(sym, yes) ? "_" : 0);
+
+ setText(dataColIdx, QChar(ch));
+ break;
+ case S_INT:
+ case S_HEX:
+ case S_STRING:
+ const char* data;
+
+ data = sym_get_string_value(sym);
+
+ int i = list->mapIdx(dataColIdx);
+ if (i >= 0)
+ setRenameEnabled(i, TRUE);
+ setText(dataColIdx, data);
+ if (type == S_STRING)
+ prompt = QString("%1: %2").arg(prompt).arg(data);
+ else
+ prompt = QString("(%2) %1").arg(prompt).arg(data);
+ break;
+ }
+ if (!sym_has_value(sym) && visible)
+ prompt += _(" (NEW)");
+set_prompt:
+ setText(promptColIdx, prompt);
+}
+
+void ConfigItem::testUpdateMenu(bool v)
+{
+ ConfigItem* i;
+
+ visible = v;
+ if (!menu)
+ return;
+
+ sym_calc_value(menu->sym);
+ if (menu->flags & MENU_CHANGED) {
+ /* the menu entry changed, so update all list items */
+ menu->flags &= ~MENU_CHANGED;
+ for (i = (ConfigItem*)menu->data; i; i = i->nextItem)
+ i->updateMenu();
+ } else if (listView()->updateAll)
+ updateMenu();
+}
+
+void ConfigItem::paintCell(QPainter* p, const QColorGroup& cg, int column, int width, int align)
+{
+ ConfigList* list = listView();
+
+ if (visible) {
+ if (isSelected() && !list->hasFocus() && list->mode == menuMode)
+ Parent::paintCell(p, list->inactivedColorGroup, column, width, align);
+ else
+ Parent::paintCell(p, cg, column, width, align);
+ } else
+ Parent::paintCell(p, list->disabledColorGroup, column, width, align);
+}
+
+/*
+ * construct a menu entry
+ */
+void ConfigItem::init(void)
+{
+ if (menu) {
+ ConfigList* list = listView();
+ nextItem = (ConfigItem*)menu->data;
+ menu->data = this;
+
+ if (list->mode != fullMode)
+ setOpen(TRUE);
+ sym_calc_value(menu->sym);
+ }
+ updateMenu();
+}
+
+/*
+ * destruct a menu entry
+ */
+ConfigItem::~ConfigItem(void)
+{
+ if (menu) {
+ ConfigItem** ip = (ConfigItem**)&menu->data;
+ for (; *ip; ip = &(*ip)->nextItem) {
+ if (*ip == this) {
+ *ip = nextItem;
+ break;
+ }
+ }
+ }
+}
+
+ConfigLineEdit::ConfigLineEdit(ConfigView* parent)
+ : Parent(parent)
+{
+ connect(this, SIGNAL(lostFocus()), SLOT(hide()));
+}
+
+void ConfigLineEdit::show(ConfigItem* i)
+{
+ item = i;
+ if (sym_get_string_value(item->menu->sym))
+ setText(QString::fromLocal8Bit(sym_get_string_value(item->menu->sym)));
+ else
+ setText(QString::null);
+ Parent::show();
+ setFocus();
+}
+
+void ConfigLineEdit::keyPressEvent(QKeyEvent* e)
+{
+ switch (e->key()) {
+ case Qt::Key_Escape:
+ break;
+ case Qt::Key_Return:
+ case Qt::Key_Enter:
+ sym_set_string_value(item->menu->sym, text().latin1());
+ parent()->updateList(item);
+ break;
+ default:
+ Parent::keyPressEvent(e);
+ return;
+ }
+ e->accept();
+ parent()->list->setFocus();
+ hide();
+}
+
+ConfigList::ConfigList(ConfigView* p, const char *name)
+ : Parent(p, name),
+ updateAll(false),
+ symbolYesPix(xpm_symbol_yes), symbolModPix(xpm_symbol_mod), symbolNoPix(xpm_symbol_no),
+ choiceYesPix(xpm_choice_yes), choiceNoPix(xpm_choice_no),
+ menuPix(xpm_menu), menuInvPix(xpm_menu_inv), menuBackPix(xpm_menuback), voidPix(xpm_void),
+ showName(false), showRange(false), showData(false), optMode(normalOpt),
+ rootEntry(0), headerPopup(0)
+{
+ int i;
+
+ setSorting(-1);
+ setRootIsDecorated(TRUE);
+ disabledColorGroup = palette().active();
+ disabledColorGroup.setColor(QColorGroup::Text, palette().disabled().text());
+ inactivedColorGroup = palette().active();
+ inactivedColorGroup.setColor(QColorGroup::Highlight, palette().disabled().highlight());
+
+ connect(this, SIGNAL(selectionChanged(void)),
+ SLOT(updateSelection(void)));
+
+ if (name) {
+ configSettings->beginGroup(name);
+ showName = configSettings->readBoolEntry("/showName", false);
+ showRange = configSettings->readBoolEntry("/showRange", false);
+ showData = configSettings->readBoolEntry("/showData", false);
+ optMode = (enum optionMode)configSettings->readNumEntry("/optionMode", false);
+ configSettings->endGroup();
+ connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings()));
+ }
+
+ for (i = 0; i < colNr; i++)
+ colMap[i] = colRevMap[i] = -1;
+ addColumn(promptColIdx, _("Option"));
+
+ reinit();
+}
+
+bool ConfigList::menuSkip(struct menu *menu)
+{
+ if (optMode == normalOpt && menu_is_visible(menu))
+ return false;
+ if (optMode == promptOpt && menu_has_prompt(menu))
+ return false;
+ if (optMode == allOpt)
+ return false;
+ return true;
+}
+
+void ConfigList::reinit(void)
+{
+ removeColumn(dataColIdx);
+ removeColumn(yesColIdx);
+ removeColumn(modColIdx);
+ removeColumn(noColIdx);
+ removeColumn(nameColIdx);
+
+ if (showName)
+ addColumn(nameColIdx, _("Name"));
+ if (showRange) {
+ addColumn(noColIdx, "N");
+ addColumn(modColIdx, "M");
+ addColumn(yesColIdx, "Y");
+ }
+ if (showData)
+ addColumn(dataColIdx, _("Value"));
+
+ updateListAll();
+}
+
+void ConfigList::saveSettings(void)
+{
+ if (name()) {
+ configSettings->beginGroup(name());
+ configSettings->writeEntry("/showName", showName);
+ configSettings->writeEntry("/showRange", showRange);
+ configSettings->writeEntry("/showData", showData);
+ configSettings->writeEntry("/optionMode", (int)optMode);
+ configSettings->endGroup();
+ }
+}
+
+ConfigItem* ConfigList::findConfigItem(struct menu *menu)
+{
+ ConfigItem* item = (ConfigItem*)menu->data;
+
+ for (; item; item = item->nextItem) {
+ if (this == item->listView())
+ break;
+ }
+
+ return item;
+}
+
+void ConfigList::updateSelection(void)
+{
+ struct menu *menu;
+ enum prop_type type;
+
+ ConfigItem* item = (ConfigItem*)selectedItem();
+ if (!item)
+ return;
+
+ menu = item->menu;
+ emit menuChanged(menu);
+ if (!menu)
+ return;
+ type = menu->prompt ? menu->prompt->type : P_UNKNOWN;
+ if (mode == menuMode && type == P_MENU)
+ emit menuSelected(menu);
+}
+
+void ConfigList::updateList(ConfigItem* item)
+{
+ ConfigItem* last = 0;
+
+ if (!rootEntry) {
+ if (mode != listMode)
+ goto update;
+ Q3ListViewItemIterator it(this);
+ ConfigItem* item;
+
+ for (; it.current(); ++it) {
+ item = (ConfigItem*)it.current();
+ if (!item->menu)
+ continue;
+ item->testUpdateMenu(menu_is_visible(item->menu));
+ }
+ return;
+ }
+
+ if (rootEntry != &rootmenu && (mode == singleMode ||
+ (mode == symbolMode && rootEntry->parent != &rootmenu))) {
+ item = firstChild();
+ if (!item)
+ item = new ConfigItem(this, 0, true);
+ last = item;
+ }
+ if ((mode == singleMode || (mode == symbolMode && !(rootEntry->flags & MENU_ROOT))) &&
+ rootEntry->sym && rootEntry->prompt) {
+ item = last ? last->nextSibling() : firstChild();
+ if (!item)
+ item = new ConfigItem(this, last, rootEntry, true);
+ else
+ item->testUpdateMenu(true);
+
+ updateMenuList(item, rootEntry);
+ triggerUpdate();
+ return;
+ }
+update:
+ updateMenuList(this, rootEntry);
+ triggerUpdate();
+}
+
+void ConfigList::setValue(ConfigItem* item, tristate val)
+{
+ struct symbol* sym;
+ int type;
+ tristate oldval;
+
+ sym = item->menu ? item->menu->sym : 0;
+ if (!sym)
+ return;
+
+ type = sym_get_type(sym);
+ switch (type) {
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ oldval = sym_get_tristate_value(sym);
+
+ if (!sym_set_tristate_value(sym, val))
+ return;
+ if (oldval == no && item->menu->list)
+ item->setOpen(TRUE);
+ parent()->updateList(item);
+ break;
+ }
+}
+
+void ConfigList::changeValue(ConfigItem* item)
+{
+ struct symbol* sym;
+ struct menu* menu;
+ int type, oldexpr, newexpr;
+
+ menu = item->menu;
+ if (!menu)
+ return;
+ sym = menu->sym;
+ if (!sym) {
+ if (item->menu->list)
+ item->setOpen(!item->isOpen());
+ return;
+ }
+
+ type = sym_get_type(sym);
+ switch (type) {
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ oldexpr = sym_get_tristate_value(sym);
+ newexpr = sym_toggle_tristate_value(sym);
+ if (item->menu->list) {
+ if (oldexpr == newexpr)
+ item->setOpen(!item->isOpen());
+ else if (oldexpr == no)
+ item->setOpen(TRUE);
+ }
+ if (oldexpr != newexpr)
+ parent()->updateList(item);
+ break;
+ case S_INT:
+ case S_HEX:
+ case S_STRING:
+ if (colMap[dataColIdx] >= 0)
+ item->startRename(colMap[dataColIdx]);
+ else
+ parent()->lineEdit->show(item);
+ break;
+ }
+}
+
+void ConfigList::setRootMenu(struct menu *menu)
+{
+ enum prop_type type;
+
+ if (rootEntry == menu)
+ return;
+ type = menu && menu->prompt ? menu->prompt->type : P_UNKNOWN;
+ if (type != P_MENU)
+ return;
+ updateMenuList(this, 0);
+ rootEntry = menu;
+ updateListAll();
+ setSelected(currentItem(), hasFocus());
+ ensureItemVisible(currentItem());
+}
+
+void ConfigList::setParentMenu(void)
+{
+ ConfigItem* item;
+ struct menu *oldroot;
+
+ oldroot = rootEntry;
+ if (rootEntry == &rootmenu)
+ return;
+ setRootMenu(menu_get_parent_menu(rootEntry->parent));
+
+ Q3ListViewItemIterator it(this);
+ for (; (item = (ConfigItem*)it.current()); it++) {
+ if (item->menu == oldroot) {
+ setCurrentItem(item);
+ ensureItemVisible(item);
+ break;
+ }
+ }
+}
+
+/*
+ * update all the children of a menu entry
+ * removes/adds the entries from the parent widget as necessary
+ *
+ * parent: either the menu list widget or a menu entry widget
+ * menu: entry to be updated
+ */
+template <class P>
+void ConfigList::updateMenuList(P* parent, struct menu* menu)
+{
+ struct menu* child;
+ ConfigItem* item;
+ ConfigItem* last;
+ bool visible;
+ enum prop_type type;
+
+ if (!menu) {
+ while ((item = parent->firstChild()))
+ delete item;
+ return;
+ }
+
+ last = parent->firstChild();
+ if (last && !last->goParent)
+ last = 0;
+ for (child = menu->list; child; child = child->next) {
+ item = last ? last->nextSibling() : parent->firstChild();
+ type = child->prompt ? child->prompt->type : P_UNKNOWN;
+
+ switch (mode) {
+ case menuMode:
+ if (!(child->flags & MENU_ROOT))
+ goto hide;
+ break;
+ case symbolMode:
+ if (child->flags & MENU_ROOT)
+ goto hide;
+ break;
+ default:
+ break;
+ }
+
+ visible = menu_is_visible(child);
+ if (!menuSkip(child)) {
+ if (!child->sym && !child->list && !child->prompt)
+ continue;
+ if (!item || item->menu != child)
+ item = new ConfigItem(parent, last, child, visible);
+ else
+ item->testUpdateMenu(visible);
+
+ if (mode == fullMode || mode == menuMode || type != P_MENU)
+ updateMenuList(item, child);
+ else
+ updateMenuList(item, 0);
+ last = item;
+ continue;
+ }
+ hide:
+ if (item && item->menu == child) {
+ last = parent->firstChild();
+ if (last == item)
+ last = 0;
+ else while (last->nextSibling() != item)
+ last = last->nextSibling();
+ delete item;
+ }
+ }
+}
+
+void ConfigList::keyPressEvent(QKeyEvent* ev)
+{
+ Q3ListViewItem* i = currentItem();
+ ConfigItem* item;
+ struct menu *menu;
+ enum prop_type type;
+
+ if (ev->key() == Qt::Key_Escape && mode != fullMode && mode != listMode) {
+ emit parentSelected();
+ ev->accept();
+ return;
+ }
+
+ if (!i) {
+ Parent::keyPressEvent(ev);
+ return;
+ }
+ item = (ConfigItem*)i;
+
+ switch (ev->key()) {
+ case Qt::Key_Return:
+ case Qt::Key_Enter:
+ if (item->goParent) {
+ emit parentSelected();
+ break;
+ }
+ menu = item->menu;
+ if (!menu)
+ break;
+ type = menu->prompt ? menu->prompt->type : P_UNKNOWN;
+ if (type == P_MENU && rootEntry != menu &&
+ mode != fullMode && mode != menuMode) {
+ emit menuSelected(menu);
+ break;
+ }
+ case Qt::Key_Space:
+ changeValue(item);
+ break;
+ case Qt::Key_N:
+ setValue(item, no);
+ break;
+ case Qt::Key_M:
+ setValue(item, mod);
+ break;
+ case Qt::Key_Y:
+ setValue(item, yes);
+ break;
+ default:
+ Parent::keyPressEvent(ev);
+ return;
+ }
+ ev->accept();
+}
+
+void ConfigList::contentsMousePressEvent(QMouseEvent* e)
+{
+ //QPoint p(contentsToViewport(e->pos()));
+ //printf("contentsMousePressEvent: %d,%d\n", p.x(), p.y());
+ Parent::contentsMousePressEvent(e);
+}
+
+void ConfigList::contentsMouseReleaseEvent(QMouseEvent* e)
+{
+ QPoint p(contentsToViewport(e->pos()));
+ ConfigItem* item = (ConfigItem*)itemAt(p);
+ struct menu *menu;
+ enum prop_type ptype;
+ const QPixmap* pm;
+ int idx, x;
+
+ if (!item)
+ goto skip;
+
+ menu = item->menu;
+ x = header()->offset() + p.x();
+ idx = colRevMap[header()->sectionAt(x)];
+ switch (idx) {
+ case promptColIdx:
+ pm = item->pixmap(promptColIdx);
+ if (pm) {
+ int off = header()->sectionPos(0) + itemMargin() +
+ treeStepSize() * (item->depth() + (rootIsDecorated() ? 1 : 0));
+ if (x >= off && x < off + pm->width()) {
+ if (item->goParent) {
+ emit parentSelected();
+ break;
+ } else if (!menu)
+ break;
+ ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN;
+ if (ptype == P_MENU && rootEntry != menu &&
+ mode != fullMode && mode != menuMode)
+ emit menuSelected(menu);
+ else
+ changeValue(item);
+ }
+ }
+ break;
+ case noColIdx:
+ setValue(item, no);
+ break;
+ case modColIdx:
+ setValue(item, mod);
+ break;
+ case yesColIdx:
+ setValue(item, yes);
+ break;
+ case dataColIdx:
+ changeValue(item);
+ break;
+ }
+
+skip:
+ //printf("contentsMouseReleaseEvent: %d,%d\n", p.x(), p.y());
+ Parent::contentsMouseReleaseEvent(e);
+}
+
+void ConfigList::contentsMouseMoveEvent(QMouseEvent* e)
+{
+ //QPoint p(contentsToViewport(e->pos()));
+ //printf("contentsMouseMoveEvent: %d,%d\n", p.x(), p.y());
+ Parent::contentsMouseMoveEvent(e);
+}
+
+void ConfigList::contentsMouseDoubleClickEvent(QMouseEvent* e)
+{
+ QPoint p(contentsToViewport(e->pos()));
+ ConfigItem* item = (ConfigItem*)itemAt(p);
+ struct menu *menu;
+ enum prop_type ptype;
+
+ if (!item)
+ goto skip;
+ if (item->goParent) {
+ emit parentSelected();
+ goto skip;
+ }
+ menu = item->menu;
+ if (!menu)
+ goto skip;
+ ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN;
+ if (ptype == P_MENU && (mode == singleMode || mode == symbolMode))
+ emit menuSelected(menu);
+ else if (menu->sym)
+ changeValue(item);
+
+skip:
+ //printf("contentsMouseDoubleClickEvent: %d,%d\n", p.x(), p.y());
+ Parent::contentsMouseDoubleClickEvent(e);
+}
+
+void ConfigList::focusInEvent(QFocusEvent *e)
+{
+ struct menu *menu = NULL;
+
+ Parent::focusInEvent(e);
+
+ ConfigItem* item = (ConfigItem *)currentItem();
+ if (item) {
+ setSelected(item, TRUE);
+ menu = item->menu;
+ }
+ emit gotFocus(menu);
+}
+
+void ConfigList::contextMenuEvent(QContextMenuEvent *e)
+{
+ if (e->y() <= header()->geometry().bottom()) {
+ if (!headerPopup) {
+ Q3Action *action;
+
+ headerPopup = new Q3PopupMenu(this);
+ action = new Q3Action(NULL, _("Show Name"), 0, this);
+ action->setToggleAction(TRUE);
+ connect(action, SIGNAL(toggled(bool)),
+ parent(), SLOT(setShowName(bool)));
+ connect(parent(), SIGNAL(showNameChanged(bool)),
+ action, SLOT(setOn(bool)));
+ action->setOn(showName);
+ action->addTo(headerPopup);
+ action = new Q3Action(NULL, _("Show Range"), 0, this);
+ action->setToggleAction(TRUE);
+ connect(action, SIGNAL(toggled(bool)),
+ parent(), SLOT(setShowRange(bool)));
+ connect(parent(), SIGNAL(showRangeChanged(bool)),
+ action, SLOT(setOn(bool)));
+ action->setOn(showRange);
+ action->addTo(headerPopup);
+ action = new Q3Action(NULL, _("Show Data"), 0, this);
+ action->setToggleAction(TRUE);
+ connect(action, SIGNAL(toggled(bool)),
+ parent(), SLOT(setShowData(bool)));
+ connect(parent(), SIGNAL(showDataChanged(bool)),
+ action, SLOT(setOn(bool)));
+ action->setOn(showData);
+ action->addTo(headerPopup);
+ }
+ headerPopup->exec(e->globalPos());
+ e->accept();
+ } else
+ e->ignore();
+}
+
+ConfigView*ConfigView::viewList;
+QAction *ConfigView::showNormalAction;
+QAction *ConfigView::showAllAction;
+QAction *ConfigView::showPromptAction;
+
+ConfigView::ConfigView(QWidget* parent, const char *name)
+ : Parent(parent, name)
+{
+ list = new ConfigList(this, name);
+ lineEdit = new ConfigLineEdit(this);
+ lineEdit->hide();
+
+ this->nextView = viewList;
+ viewList = this;
+}
+
+ConfigView::~ConfigView(void)
+{
+ ConfigView** vp;
+
+ for (vp = &viewList; *vp; vp = &(*vp)->nextView) {
+ if (*vp == this) {
+ *vp = nextView;
+ break;
+ }
+ }
+}
+
+void ConfigView::setOptionMode(QAction *act)
+{
+ if (act == showNormalAction)
+ list->optMode = normalOpt;
+ else if (act == showAllAction)
+ list->optMode = allOpt;
+ else
+ list->optMode = promptOpt;
+
+ list->updateListAll();
+}
+
+void ConfigView::setShowName(bool b)
+{
+ if (list->showName != b) {
+ list->showName = b;
+ list->reinit();
+ emit showNameChanged(b);
+ }
+}
+
+void ConfigView::setShowRange(bool b)
+{
+ if (list->showRange != b) {
+ list->showRange = b;
+ list->reinit();
+ emit showRangeChanged(b);
+ }
+}
+
+void ConfigView::setShowData(bool b)
+{
+ if (list->showData != b) {
+ list->showData = b;
+ list->reinit();
+ emit showDataChanged(b);
+ }
+}
+
+void ConfigList::setAllOpen(bool open)
+{
+ Q3ListViewItemIterator it(this);
+
+ for (; it.current(); it++)
+ it.current()->setOpen(open);
+}
+
+void ConfigView::updateList(ConfigItem* item)
+{
+ ConfigView* v;
+
+ for (v = viewList; v; v = v->nextView)
+ v->list->updateList(item);
+}
+
+void ConfigView::updateListAll(void)
+{
+ ConfigView* v;
+
+ for (v = viewList; v; v = v->nextView)
+ v->list->updateListAll();
+}
+
+ConfigInfoView::ConfigInfoView(QWidget* parent, const char *name)
+ : Parent(parent, name), sym(0), _menu(0)
+{
+ if (name) {
+ configSettings->beginGroup(name);
+ _showDebug = configSettings->readBoolEntry("/showDebug", false);
+ configSettings->endGroup();
+ connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings()));
+ }
+}
+
+void ConfigInfoView::saveSettings(void)
+{
+ if (name()) {
+ configSettings->beginGroup(name());
+ configSettings->writeEntry("/showDebug", showDebug());
+ configSettings->endGroup();
+ }
+}
+
+void ConfigInfoView::setShowDebug(bool b)
+{
+ if (_showDebug != b) {
+ _showDebug = b;
+ if (_menu)
+ menuInfo();
+ else if (sym)
+ symbolInfo();
+ emit showDebugChanged(b);
+ }
+}
+
+void ConfigInfoView::setInfo(struct menu *m)
+{
+ if (_menu == m)
+ return;
+ _menu = m;
+ sym = NULL;
+ if (!_menu)
+ clear();
+ else
+ menuInfo();
+}
+
+void ConfigInfoView::symbolInfo(void)
+{
+ QString str;
+
+ str += "<big>Symbol: <b>";
+ str += print_filter(sym->name);
+ str += "</b></big><br><br>value: ";
+ str += print_filter(sym_get_string_value(sym));
+ str += "<br>visibility: ";
+ str += sym->visible == yes ? "y" : sym->visible == mod ? "m" : "n";
+ str += "<br>";
+ str += debug_info(sym);
+
+ setText(str);
+}
+
+void ConfigInfoView::menuInfo(void)
+{
+ struct symbol* sym;
+ QString head, debug, help;
+
+ sym = _menu->sym;
+ if (sym) {
+ if (_menu->prompt) {
+ head += "<big><b>";
+ head += print_filter(_(_menu->prompt->text));
+ head += "</b></big>";
+ if (sym->name) {
+ head += " (";
+ if (showDebug())
+ head += QString().sprintf("<a href=\"s%p\">", sym);
+ head += print_filter(sym->name);
+ if (showDebug())
+ head += "</a>";
+ head += ")";
+ }
+ } else if (sym->name) {
+ head += "<big><b>";
+ if (showDebug())
+ head += QString().sprintf("<a href=\"s%p\">", sym);
+ head += print_filter(sym->name);
+ if (showDebug())
+ head += "</a>";
+ head += "</b></big>";
+ }
+ head += "<br><br>";
+
+ if (showDebug())
+ debug = debug_info(sym);
+
+ struct gstr help_gstr = str_new();
+ menu_get_ext_help(_menu, &help_gstr);
+ help = print_filter(str_get(&help_gstr));
+ str_free(&help_gstr);
+ } else if (_menu->prompt) {
+ head += "<big><b>";
+ head += print_filter(_(_menu->prompt->text));
+ head += "</b></big><br><br>";
+ if (showDebug()) {
+ if (_menu->prompt->visible.expr) {
+ debug += "&nbsp;&nbsp;dep: ";
+ expr_print(_menu->prompt->visible.expr, expr_print_help, &debug, E_NONE);
+ debug += "<br><br>";
+ }
+ }
+ }
+ if (showDebug())
+ debug += QString().sprintf("defined at %s:%d<br><br>", _menu->file->name, _menu->lineno);
+
+ setText(head + debug + help);
+}
+
+QString ConfigInfoView::debug_info(struct symbol *sym)
+{
+ QString debug;
+
+ debug += "type: ";
+ debug += print_filter(sym_type_name(sym->type));
+ if (sym_is_choice(sym))
+ debug += " (choice)";
+ debug += "<br>";
+ if (sym->rev_dep.expr) {
+ debug += "reverse dep: ";
+ expr_print(sym->rev_dep.expr, expr_print_help, &debug, E_NONE);
+ debug += "<br>";
+ }
+ for (struct property *prop = sym->prop; prop; prop = prop->next) {
+ switch (prop->type) {
+ case P_PROMPT:
+ case P_MENU:
+ debug += QString().sprintf("prompt: <a href=\"m%p\">", prop->menu);
+ debug += print_filter(_(prop->text));
+ debug += "</a><br>";
+ break;
+ case P_DEFAULT:
+ case P_SELECT:
+ case P_RANGE:
+ case P_ENV:
+ debug += prop_get_type_name(prop->type);
+ debug += ": ";
+ expr_print(prop->expr, expr_print_help, &debug, E_NONE);
+ debug += "<br>";
+ break;
+ case P_CHOICE:
+ if (sym_is_choice(sym)) {
+ debug += "choice: ";
+ expr_print(prop->expr, expr_print_help, &debug, E_NONE);
+ debug += "<br>";
+ }
+ break;
+ default:
+ debug += "unknown property: ";
+ debug += prop_get_type_name(prop->type);
+ debug += "<br>";
+ }
+ if (prop->visible.expr) {
+ debug += "&nbsp;&nbsp;&nbsp;&nbsp;dep: ";
+ expr_print(prop->visible.expr, expr_print_help, &debug, E_NONE);
+ debug += "<br>";
+ }
+ }
+ debug += "<br>";
+
+ return debug;
+}
+
+QString ConfigInfoView::print_filter(const QString &str)
+{
+ QRegExp re("[<>&\"\\n]");
+ QString res = str;
+ for (int i = 0; (i = res.find(re, i)) >= 0;) {
+ switch (res[i].latin1()) {
+ case '<':
+ res.replace(i, 1, "&lt;");
+ i += 4;
+ break;
+ case '>':
+ res.replace(i, 1, "&gt;");
+ i += 4;
+ break;
+ case '&':
+ res.replace(i, 1, "&amp;");
+ i += 5;
+ break;
+ case '"':
+ res.replace(i, 1, "&quot;");
+ i += 6;
+ break;
+ case '\n':
+ res.replace(i, 1, "<br>");
+ i += 4;
+ break;
+ }
+ }
+ return res;
+}
+
+void ConfigInfoView::expr_print_help(void *data, struct symbol *sym, const char *str)
+{
+ QString* text = reinterpret_cast<QString*>(data);
+ QString str2 = print_filter(str);
+
+ if (sym && sym->name && !(sym->flags & SYMBOL_CONST)) {
+ *text += QString().sprintf("<a href=\"s%p\">", sym);
+ *text += str2;
+ *text += "</a>";
+ } else
+ *text += str2;
+}
+
+Q3PopupMenu* ConfigInfoView::createPopupMenu(const QPoint& pos)
+{
+ Q3PopupMenu* popup = Parent::createPopupMenu(pos);
+ Q3Action* action = new Q3Action(NULL, _("Show Debug Info"), 0, popup);
+ action->setToggleAction(TRUE);
+ connect(action, SIGNAL(toggled(bool)), SLOT(setShowDebug(bool)));
+ connect(this, SIGNAL(showDebugChanged(bool)), action, SLOT(setOn(bool)));
+ action->setOn(showDebug());
+ popup->insertSeparator();
+ action->addTo(popup);
+ return popup;
+}
+
+void ConfigInfoView::contentsContextMenuEvent(QContextMenuEvent *e)
+{
+ Parent::contentsContextMenuEvent(e);
+}
+
+ConfigSearchWindow::ConfigSearchWindow(ConfigMainWindow* parent, const char *name)
+ : Parent(parent, name), result(NULL)
+{
+ setCaption("Search Config");
+
+ QVBoxLayout* layout1 = new QVBoxLayout(this, 11, 6);
+ QHBoxLayout* layout2 = new QHBoxLayout(0, 0, 6);
+ layout2->addWidget(new QLabel(_("Find:"), this));
+ editField = new QLineEdit(this);
+ connect(editField, SIGNAL(returnPressed()), SLOT(search()));
+ layout2->addWidget(editField);
+ searchButton = new QPushButton(_("Search"), this);
+ searchButton->setAutoDefault(FALSE);
+ connect(searchButton, SIGNAL(clicked()), SLOT(search()));
+ layout2->addWidget(searchButton);
+ layout1->addLayout(layout2);
+
+ split = new QSplitter(this);
+ split->setOrientation(Qt::Vertical);
+ list = new ConfigView(split, name);
+ list->list->mode = listMode;
+ info = new ConfigInfoView(split, name);
+ connect(list->list, SIGNAL(menuChanged(struct menu *)),
+ info, SLOT(setInfo(struct menu *)));
+ connect(list->list, SIGNAL(menuChanged(struct menu *)),
+ parent, SLOT(setMenuLink(struct menu *)));
+
+ layout1->addWidget(split);
+
+ if (name) {
+ int x, y, width, height;
+ bool ok;
+
+ configSettings->beginGroup(name);
+ width = configSettings->readNumEntry("/window width", parent->width() / 2);
+ height = configSettings->readNumEntry("/window height", parent->height() / 2);
+ resize(width, height);
+ x = configSettings->readNumEntry("/window x", 0, &ok);
+ if (ok)
+ y = configSettings->readNumEntry("/window y", 0, &ok);
+ if (ok)
+ move(x, y);
+ Q3ValueList<int> sizes = configSettings->readSizes("/split", &ok);
+ if (ok)
+ split->setSizes(sizes);
+ configSettings->endGroup();
+ connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings()));
+ }
+}
+
+void ConfigSearchWindow::saveSettings(void)
+{
+ if (name()) {
+ configSettings->beginGroup(name());
+ configSettings->writeEntry("/window x", pos().x());
+ configSettings->writeEntry("/window y", pos().y());
+ configSettings->writeEntry("/window width", size().width());
+ configSettings->writeEntry("/window height", size().height());
+ configSettings->writeSizes("/split", split->sizes());
+ configSettings->endGroup();
+ }
+}
+
+void ConfigSearchWindow::search(void)
+{
+ struct symbol **p;
+ struct property *prop;
+ ConfigItem *lastItem = NULL;
+
+ free(result);
+ list->list->clear();
+ info->clear();
+
+ result = sym_re_search(editField->text().latin1());
+ if (!result)
+ return;
+ for (p = result; *p; p++) {
+ for_all_prompts((*p), prop)
+ lastItem = new ConfigItem(list->list, lastItem, prop->menu,
+ menu_is_visible(prop->menu));
+ }
+}
+
+/*
+ * Construct the complete config widget
+ */
+ConfigMainWindow::ConfigMainWindow(void)
+ : searchWindow(0)
+{
+ QMenuBar* menu;
+ bool ok;
+ int x, y, width, height;
+ char title[256];
+
+ QDesktopWidget *d = configApp->desktop();
+ snprintf(title, sizeof(title), "%s%s",
+ rootmenu.prompt->text,
+#if QT_VERSION < 0x040000
+ " (Qt3)"
+#else
+ ""
+#endif
+ );
+ setCaption(title);
+
+ width = configSettings->readNumEntry("/window width", d->width() - 64);
+ height = configSettings->readNumEntry("/window height", d->height() - 64);
+ resize(width, height);
+ x = configSettings->readNumEntry("/window x", 0, &ok);
+ if (ok)
+ y = configSettings->readNumEntry("/window y", 0, &ok);
+ if (ok)
+ move(x, y);
+
+ split1 = new QSplitter(this);
+ split1->setOrientation(Qt::Horizontal);
+ setCentralWidget(split1);
+
+ menuView = new ConfigView(split1, "menu");
+ menuList = menuView->list;
+
+ split2 = new QSplitter(split1);
+ split2->setOrientation(Qt::Vertical);
+
+ // create config tree
+ configView = new ConfigView(split2, "config");
+ configList = configView->list;
+
+ helpText = new ConfigInfoView(split2, "help");
+ helpText->setTextFormat(Qt::RichText);
+
+ setTabOrder(configList, helpText);
+ configList->setFocus();
+
+ menu = menuBar();
+ toolBar = new Q3ToolBar("Tools", this);
+
+ backAction = new Q3Action("Back", QPixmap(xpm_back), _("Back"), 0, this);
+ connect(backAction, SIGNAL(activated()), SLOT(goBack()));
+ backAction->setEnabled(FALSE);
+ Q3Action *quitAction = new Q3Action("Quit", _("&Quit"), Qt::CTRL + Qt::Key_Q, this);
+ connect(quitAction, SIGNAL(activated()), SLOT(close()));
+ Q3Action *loadAction = new Q3Action("Load", QPixmap(xpm_load), _("&Load"), Qt::CTRL + Qt::Key_L, this);
+ connect(loadAction, SIGNAL(activated()), SLOT(loadConfig()));
+ saveAction = new Q3Action("Save", QPixmap(xpm_save), _("&Save"), Qt::CTRL + Qt::Key_S, this);
+ connect(saveAction, SIGNAL(activated()), SLOT(saveConfig()));
+ conf_set_changed_callback(conf_changed);
+ // Set saveAction's initial state
+ conf_changed();
+ Q3Action *saveAsAction = new Q3Action("Save As...", _("Save &As..."), 0, this);
+ connect(saveAsAction, SIGNAL(activated()), SLOT(saveConfigAs()));
+ Q3Action *searchAction = new Q3Action("Find", _("&Find"), Qt::CTRL + Qt::Key_F, this);
+ connect(searchAction, SIGNAL(activated()), SLOT(searchConfig()));
+ Q3Action *singleViewAction = new Q3Action("Single View", QPixmap(xpm_single_view), _("Single View"), 0, this);
+ connect(singleViewAction, SIGNAL(activated()), SLOT(showSingleView()));
+ Q3Action *splitViewAction = new Q3Action("Split View", QPixmap(xpm_split_view), _("Split View"), 0, this);
+ connect(splitViewAction, SIGNAL(activated()), SLOT(showSplitView()));
+ Q3Action *fullViewAction = new Q3Action("Full View", QPixmap(xpm_tree_view), _("Full View"), 0, this);
+ connect(fullViewAction, SIGNAL(activated()), SLOT(showFullView()));
+
+ Q3Action *showNameAction = new Q3Action(NULL, _("Show Name"), 0, this);
+ showNameAction->setToggleAction(TRUE);
+ connect(showNameAction, SIGNAL(toggled(bool)), configView, SLOT(setShowName(bool)));
+ connect(configView, SIGNAL(showNameChanged(bool)), showNameAction, SLOT(setOn(bool)));
+ showNameAction->setOn(configView->showName());
+ Q3Action *showRangeAction = new Q3Action(NULL, _("Show Range"), 0, this);
+ showRangeAction->setToggleAction(TRUE);
+ connect(showRangeAction, SIGNAL(toggled(bool)), configView, SLOT(setShowRange(bool)));
+ connect(configView, SIGNAL(showRangeChanged(bool)), showRangeAction, SLOT(setOn(bool)));
+ showRangeAction->setOn(configList->showRange);
+ Q3Action *showDataAction = new Q3Action(NULL, _("Show Data"), 0, this);
+ showDataAction->setToggleAction(TRUE);
+ connect(showDataAction, SIGNAL(toggled(bool)), configView, SLOT(setShowData(bool)));
+ connect(configView, SIGNAL(showDataChanged(bool)), showDataAction, SLOT(setOn(bool)));
+ showDataAction->setOn(configList->showData);
+
+ QActionGroup *optGroup = new QActionGroup(this);
+ optGroup->setExclusive(TRUE);
+ connect(optGroup, SIGNAL(selected(QAction *)), configView,
+ SLOT(setOptionMode(QAction *)));
+ connect(optGroup, SIGNAL(selected(QAction *)), menuView,
+ SLOT(setOptionMode(QAction *)));
+
+#if QT_VERSION >= 0x040000
+ configView->showNormalAction = new QAction(_("Show Normal Options"), optGroup);
+ configView->showAllAction = new QAction(_("Show All Options"), optGroup);
+ configView->showPromptAction = new QAction(_("Show Prompt Options"), optGroup);
+#else
+ configView->showNormalAction = new QAction(_("Show Normal Options"), 0, optGroup);
+ configView->showAllAction = new QAction(_("Show All Options"), 0, optGroup);
+ configView->showPromptAction = new QAction(_("Show Prompt Options"), 0, optGroup);
+#endif
+ configView->showNormalAction->setToggleAction(TRUE);
+ configView->showNormalAction->setOn(configList->optMode == normalOpt);
+ configView->showAllAction->setToggleAction(TRUE);
+ configView->showAllAction->setOn(configList->optMode == allOpt);
+ configView->showPromptAction->setToggleAction(TRUE);
+ configView->showPromptAction->setOn(configList->optMode == promptOpt);
+
+ Q3Action *showDebugAction = new Q3Action(NULL, _("Show Debug Info"), 0, this);
+ showDebugAction->setToggleAction(TRUE);
+ connect(showDebugAction, SIGNAL(toggled(bool)), helpText, SLOT(setShowDebug(bool)));
+ connect(helpText, SIGNAL(showDebugChanged(bool)), showDebugAction, SLOT(setOn(bool)));
+ showDebugAction->setOn(helpText->showDebug());
+
+ Q3Action *showIntroAction = new Q3Action(NULL, _("Introduction"), 0, this);
+ connect(showIntroAction, SIGNAL(activated()), SLOT(showIntro()));
+ Q3Action *showAboutAction = new Q3Action(NULL, _("About"), 0, this);
+ connect(showAboutAction, SIGNAL(activated()), SLOT(showAbout()));
+
+ // init tool bar
+ backAction->addTo(toolBar);
+ toolBar->addSeparator();
+ loadAction->addTo(toolBar);
+ saveAction->addTo(toolBar);
+ toolBar->addSeparator();
+ singleViewAction->addTo(toolBar);
+ splitViewAction->addTo(toolBar);
+ fullViewAction->addTo(toolBar);
+
+ // create config menu
+ Q3PopupMenu* config = new Q3PopupMenu(this);
+ menu->insertItem(_("&File"), config);
+ loadAction->addTo(config);
+ saveAction->addTo(config);
+ saveAsAction->addTo(config);
+ config->insertSeparator();
+ quitAction->addTo(config);
+
+ // create edit menu
+ Q3PopupMenu* editMenu = new Q3PopupMenu(this);
+ menu->insertItem(_("&Edit"), editMenu);
+ searchAction->addTo(editMenu);
+
+ // create options menu
+ Q3PopupMenu* optionMenu = new Q3PopupMenu(this);
+ menu->insertItem(_("&Option"), optionMenu);
+ showNameAction->addTo(optionMenu);
+ showRangeAction->addTo(optionMenu);
+ showDataAction->addTo(optionMenu);
+ optionMenu->insertSeparator();
+ optGroup->addTo(optionMenu);
+ optionMenu->insertSeparator();
+
+ // create help menu
+ Q3PopupMenu* helpMenu = new Q3PopupMenu(this);
+ menu->insertSeparator();
+ menu->insertItem(_("&Help"), helpMenu);
+ showIntroAction->addTo(helpMenu);
+ showAboutAction->addTo(helpMenu);
+
+ connect(configList, SIGNAL(menuChanged(struct menu *)),
+ helpText, SLOT(setInfo(struct menu *)));
+ connect(configList, SIGNAL(menuSelected(struct menu *)),
+ SLOT(changeMenu(struct menu *)));
+ connect(configList, SIGNAL(parentSelected()),
+ SLOT(goBack()));
+ connect(menuList, SIGNAL(menuChanged(struct menu *)),
+ helpText, SLOT(setInfo(struct menu *)));
+ connect(menuList, SIGNAL(menuSelected(struct menu *)),
+ SLOT(changeMenu(struct menu *)));
+
+ connect(configList, SIGNAL(gotFocus(struct menu *)),
+ helpText, SLOT(setInfo(struct menu *)));
+ connect(menuList, SIGNAL(gotFocus(struct menu *)),
+ helpText, SLOT(setInfo(struct menu *)));
+ connect(menuList, SIGNAL(gotFocus(struct menu *)),
+ SLOT(listFocusChanged(void)));
+ connect(helpText, SIGNAL(menuSelected(struct menu *)),
+ SLOT(setMenuLink(struct menu *)));
+
+ QString listMode = configSettings->readEntry("/listMode", "symbol");
+ if (listMode == "single")
+ showSingleView();
+ else if (listMode == "full")
+ showFullView();
+ else /*if (listMode == "split")*/
+ showSplitView();
+
+ // UI setup done, restore splitter positions
+ Q3ValueList<int> sizes = configSettings->readSizes("/split1", &ok);
+ if (ok)
+ split1->setSizes(sizes);
+
+ sizes = configSettings->readSizes("/split2", &ok);
+ if (ok)
+ split2->setSizes(sizes);
+}
+
+void ConfigMainWindow::loadConfig(void)
+{
+ QString s = Q3FileDialog::getOpenFileName(conf_get_configname(), NULL, this);
+ if (s.isNull())
+ return;
+ if (conf_read(QFile::encodeName(s)))
+ QMessageBox::information(this, "qconf", _("Unable to load configuration!"));
+ ConfigView::updateListAll();
+}
+
+bool ConfigMainWindow::saveConfig(void)
+{
+ if (conf_write(NULL)) {
+ QMessageBox::information(this, "qconf", _("Unable to save configuration!"));
+ return false;
+ }
+ return true;
+}
+
+void ConfigMainWindow::saveConfigAs(void)
+{
+ QString s = Q3FileDialog::getSaveFileName(conf_get_configname(), NULL, this);
+ if (s.isNull())
+ return;
+ saveConfig();
+}
+
+void ConfigMainWindow::searchConfig(void)
+{
+ if (!searchWindow)
+ searchWindow = new ConfigSearchWindow(this, "search");
+ searchWindow->show();
+}
+
+void ConfigMainWindow::changeMenu(struct menu *menu)
+{
+ configList->setRootMenu(menu);
+ if (configList->rootEntry->parent == &rootmenu)
+ backAction->setEnabled(FALSE);
+ else
+ backAction->setEnabled(TRUE);
+}
+
+void ConfigMainWindow::setMenuLink(struct menu *menu)
+{
+ struct menu *parent;
+ ConfigList* list = NULL;
+ ConfigItem* item;
+
+ if (configList->menuSkip(menu))
+ return;
+
+ switch (configList->mode) {
+ case singleMode:
+ list = configList;
+ parent = menu_get_parent_menu(menu);
+ if (!parent)
+ return;
+ list->setRootMenu(parent);
+ break;
+ case symbolMode:
+ if (menu->flags & MENU_ROOT) {
+ configList->setRootMenu(menu);
+ configList->clearSelection();
+ list = menuList;
+ } else {
+ list = configList;
+ parent = menu_get_parent_menu(menu->parent);
+ if (!parent)
+ return;
+ item = menuList->findConfigItem(parent);
+ if (item) {
+ menuList->setSelected(item, TRUE);
+ menuList->ensureItemVisible(item);
+ }
+ list->setRootMenu(parent);
+ }
+ break;
+ case fullMode:
+ list = configList;
+ break;
+ default:
+ break;
+ }
+
+ if (list) {
+ item = list->findConfigItem(menu);
+ if (item) {
+ list->setSelected(item, TRUE);
+ list->ensureItemVisible(item);
+ list->setFocus();
+ }
+ }
+}
+
+void ConfigMainWindow::listFocusChanged(void)
+{
+ if (menuList->mode == menuMode)
+ configList->clearSelection();
+}
+
+void ConfigMainWindow::goBack(void)
+{
+ ConfigItem* item;
+
+ configList->setParentMenu();
+ if (configList->rootEntry == &rootmenu)
+ backAction->setEnabled(FALSE);
+ item = (ConfigItem*)menuList->selectedItem();
+ while (item) {
+ if (item->menu == configList->rootEntry) {
+ menuList->setSelected(item, TRUE);
+ break;
+ }
+ item = (ConfigItem*)item->parent();
+ }
+}
+
+void ConfigMainWindow::showSingleView(void)
+{
+ menuView->hide();
+ menuList->setRootMenu(0);
+ configList->mode = singleMode;
+ if (configList->rootEntry == &rootmenu)
+ configList->updateListAll();
+ else
+ configList->setRootMenu(&rootmenu);
+ configList->setAllOpen(TRUE);
+ configList->setFocus();
+}
+
+void ConfigMainWindow::showSplitView(void)
+{
+ configList->mode = symbolMode;
+ if (configList->rootEntry == &rootmenu)
+ configList->updateListAll();
+ else
+ configList->setRootMenu(&rootmenu);
+ configList->setAllOpen(TRUE);
+ configApp->processEvents();
+ menuList->mode = menuMode;
+ menuList->setRootMenu(&rootmenu);
+ menuList->setAllOpen(TRUE);
+ menuView->show();
+ menuList->setFocus();
+}
+
+void ConfigMainWindow::showFullView(void)
+{
+ menuView->hide();
+ menuList->setRootMenu(0);
+ configList->mode = fullMode;
+ if (configList->rootEntry == &rootmenu)
+ configList->updateListAll();
+ else
+ configList->setRootMenu(&rootmenu);
+ configList->setAllOpen(FALSE);
+ configList->setFocus();
+}
+
+/*
+ * ask for saving configuration before quitting
+ * TODO ask only when something changed
+ */
+void ConfigMainWindow::closeEvent(QCloseEvent* e)
+{
+ if (!conf_get_changed()) {
+ e->accept();
+ return;
+ }
+ QMessageBox mb("qconf", _("Save configuration?"), QMessageBox::Warning,
+ QMessageBox::Yes | QMessageBox::Default, QMessageBox::No, QMessageBox::Cancel | QMessageBox::Escape);
+ mb.setButtonText(QMessageBox::Yes, _("&Save Changes"));
+ mb.setButtonText(QMessageBox::No, _("&Discard Changes"));
+ mb.setButtonText(QMessageBox::Cancel, _("Cancel Exit"));
+ switch (mb.exec()) {
+ case QMessageBox::Yes:
+ if (saveConfig())
+ e->accept();
+ else
+ e->ignore();
+ break;
+ case QMessageBox::No:
+ e->accept();
+ break;
+ case QMessageBox::Cancel:
+ e->ignore();
+ break;
+ }
+}
+
+void ConfigMainWindow::showIntro(void)
+{
+ static const QString str = _("Welcome to the qconf graphical configuration tool.\n\n"
+ "For each option, a blank box indicates the feature is disabled, a check\n"
+ "indicates it is enabled, and a dot indicates that it is to be compiled\n"
+ "as a module. Clicking on the box will cycle through the three states.\n\n"
+ "If you do not see an option (e.g., a device driver) that you believe\n"
+ "should be present, try turning on Show All Options under the Options menu.\n"
+ "Although there is no cross reference yet to help you figure out what other\n"
+ "options must be enabled to support the option you are interested in, you can\n"
+ "still view the help of a grayed-out option.\n\n"
+ "Toggling Show Debug Info under the Options menu will show the dependencies,\n"
+ "which you can then match by examining other options.\n\n");
+
+ QMessageBox::information(this, "qconf", str);
+}
+
+void ConfigMainWindow::showAbout(void)
+{
+ static const QString str = _("qconf is Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>.\n\n"
+ "Bug reports and feature request can also be entered at http://bugzilla.kernel.org/\n");
+
+ QMessageBox::information(this, "qconf", str);
+}
+
+void ConfigMainWindow::saveSettings(void)
+{
+ configSettings->writeEntry("/window x", pos().x());
+ configSettings->writeEntry("/window y", pos().y());
+ configSettings->writeEntry("/window width", size().width());
+ configSettings->writeEntry("/window height", size().height());
+
+ QString entry;
+ switch(configList->mode) {
+ case singleMode :
+ entry = "single";
+ break;
+
+ case symbolMode :
+ entry = "split";
+ break;
+
+ case fullMode :
+ entry = "full";
+ break;
+
+ default:
+ break;
+ }
+ configSettings->writeEntry("/listMode", entry);
+
+ configSettings->writeSizes("/split1", split1->sizes());
+ configSettings->writeSizes("/split2", split2->sizes());
+}
+
+void ConfigMainWindow::conf_changed(void)
+{
+ if (saveAction)
+ saveAction->setEnabled(conf_get_changed());
+}
+
+void fixup_rootmenu(struct menu *menu)
+{
+ struct menu *child;
+ static int menu_cnt = 0;
+
+ menu->flags |= MENU_ROOT;
+ for (child = menu->list; child; child = child->next) {
+ if (child->prompt && child->prompt->type == P_MENU) {
+ menu_cnt++;
+ fixup_rootmenu(child);
+ menu_cnt--;
+ } else if (!menu_cnt)
+ fixup_rootmenu(child);
+ }
+}
+
+static const char *progname;
+
+static void usage(void)
+{
+ printf(_("%s <config>\n"), progname);
+ exit(0);
+}
+
+int main(int ac, char** av)
+{
+ ConfigMainWindow* v;
+ const char *name;
+
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
+ progname = av[0];
+ configApp = new QApplication(ac, av);
+ if (ac > 1 && av[1][0] == '-') {
+ switch (av[1][1]) {
+ case 'h':
+ case '?':
+ usage();
+ }
+ name = av[2];
+ } else
+ name = av[1];
+ if (!name)
+ usage();
+
+ conf_parse(name);
+ fixup_rootmenu(&rootmenu);
+ conf_read(NULL);
+ //zconfdump(stdout);
+
+ configSettings = new ConfigSettings();
+ configSettings->beginGroup("/kconfig/qconf");
+ v = new ConfigMainWindow();
+
+ //zconfdump(stdout);
+ configApp->setMainWidget(v);
+ configApp->connect(configApp, SIGNAL(lastWindowClosed()), SLOT(quit()));
+ configApp->connect(configApp, SIGNAL(aboutToQuit()), v, SLOT(saveSettings()));
+ v->show();
+ configApp->exec();
+
+ configSettings->endGroup();
+ delete configSettings;
+
+ return 0;
+}
diff --git a/scripts/kconfig/qconf.h b/scripts/kconfig/qconf.h
new file mode 100644
index 0000000..bde0c6b
--- /dev/null
+++ b/scripts/kconfig/qconf.h
@@ -0,0 +1,338 @@
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#if QT_VERSION < 0x040000
+#include <qlistview.h>
+#else
+#include <q3listview.h>
+#endif
+#include <qsettings.h>
+
+#if QT_VERSION < 0x040000
+#define Q3ValueList QValueList
+#define Q3PopupMenu QPopupMenu
+#define Q3ListView QListView
+#define Q3ListViewItem QListViewItem
+#define Q3VBox QVBox
+#define Q3TextBrowser QTextBrowser
+#define Q3MainWindow QMainWindow
+#define Q3Action QAction
+#define Q3ToolBar QToolBar
+#define Q3ListViewItemIterator QListViewItemIterator
+#define Q3FileDialog QFileDialog
+#endif
+
+class ConfigView;
+class ConfigList;
+class ConfigItem;
+class ConfigLineEdit;
+class ConfigMainWindow;
+
+class ConfigSettings : public QSettings {
+public:
+ ConfigSettings();
+ Q3ValueList<int> readSizes(const QString& key, bool *ok);
+ bool writeSizes(const QString& key, const Q3ValueList<int>& value);
+};
+
+enum colIdx {
+ promptColIdx, nameColIdx, noColIdx, modColIdx, yesColIdx, dataColIdx, colNr
+};
+enum listMode {
+ singleMode, menuMode, symbolMode, fullMode, listMode
+};
+enum optionMode {
+ normalOpt = 0, allOpt, promptOpt
+};
+
+class ConfigList : public Q3ListView {
+ Q_OBJECT
+ typedef class Q3ListView Parent;
+public:
+ ConfigList(ConfigView* p, const char *name = 0);
+ void reinit(void);
+ ConfigView* parent(void) const
+ {
+ return (ConfigView*)Parent::parent();
+ }
+ ConfigItem* findConfigItem(struct menu *);
+
+protected:
+ void keyPressEvent(QKeyEvent *e);
+ void contentsMousePressEvent(QMouseEvent *e);
+ void contentsMouseReleaseEvent(QMouseEvent *e);
+ void contentsMouseMoveEvent(QMouseEvent *e);
+ void contentsMouseDoubleClickEvent(QMouseEvent *e);
+ void focusInEvent(QFocusEvent *e);
+ void contextMenuEvent(QContextMenuEvent *e);
+
+public slots:
+ void setRootMenu(struct menu *menu);
+
+ void updateList(ConfigItem *item);
+ void setValue(ConfigItem* item, tristate val);
+ void changeValue(ConfigItem* item);
+ void updateSelection(void);
+ void saveSettings(void);
+signals:
+ void menuChanged(struct menu *menu);
+ void menuSelected(struct menu *menu);
+ void parentSelected(void);
+ void gotFocus(struct menu *);
+
+public:
+ void updateListAll(void)
+ {
+ updateAll = true;
+ updateList(NULL);
+ updateAll = false;
+ }
+ ConfigList* listView()
+ {
+ return this;
+ }
+ ConfigItem* firstChild() const
+ {
+ return (ConfigItem *)Parent::firstChild();
+ }
+ int mapIdx(colIdx idx)
+ {
+ return colMap[idx];
+ }
+ void addColumn(colIdx idx, const QString& label)
+ {
+ colMap[idx] = Parent::addColumn(label);
+ colRevMap[colMap[idx]] = idx;
+ }
+ void removeColumn(colIdx idx)
+ {
+ int col = colMap[idx];
+ if (col >= 0) {
+ Parent::removeColumn(col);
+ colRevMap[col] = colMap[idx] = -1;
+ }
+ }
+ void setAllOpen(bool open);
+ void setParentMenu(void);
+
+ bool menuSkip(struct menu *);
+
+ template <class P>
+ void updateMenuList(P*, struct menu*);
+
+ bool updateAll;
+
+ QPixmap symbolYesPix, symbolModPix, symbolNoPix;
+ QPixmap choiceYesPix, choiceNoPix;
+ QPixmap menuPix, menuInvPix, menuBackPix, voidPix;
+
+ bool showName, showRange, showData;
+ enum listMode mode;
+ enum optionMode optMode;
+ struct menu *rootEntry;
+ QColorGroup disabledColorGroup;
+ QColorGroup inactivedColorGroup;
+ Q3PopupMenu* headerPopup;
+
+private:
+ int colMap[colNr];
+ int colRevMap[colNr];
+};
+
+class ConfigItem : public Q3ListViewItem {
+ typedef class Q3ListViewItem Parent;
+public:
+ ConfigItem(Q3ListView *parent, ConfigItem *after, struct menu *m, bool v)
+ : Parent(parent, after), menu(m), visible(v), goParent(false)
+ {
+ init();
+ }
+ ConfigItem(ConfigItem *parent, ConfigItem *after, struct menu *m, bool v)
+ : Parent(parent, after), menu(m), visible(v), goParent(false)
+ {
+ init();
+ }
+ ConfigItem(Q3ListView *parent, ConfigItem *after, bool v)
+ : Parent(parent, after), menu(0), visible(v), goParent(true)
+ {
+ init();
+ }
+ ~ConfigItem(void);
+ void init(void);
+ void okRename(int col);
+ void updateMenu(void);
+ void testUpdateMenu(bool v);
+ ConfigList* listView() const
+ {
+ return (ConfigList*)Parent::listView();
+ }
+ ConfigItem* firstChild() const
+ {
+ return (ConfigItem *)Parent::firstChild();
+ }
+ ConfigItem* nextSibling() const
+ {
+ return (ConfigItem *)Parent::nextSibling();
+ }
+ void setText(colIdx idx, const QString& text)
+ {
+ Parent::setText(listView()->mapIdx(idx), text);
+ }
+ QString text(colIdx idx) const
+ {
+ return Parent::text(listView()->mapIdx(idx));
+ }
+ void setPixmap(colIdx idx, const QPixmap& pm)
+ {
+ Parent::setPixmap(listView()->mapIdx(idx), pm);
+ }
+ const QPixmap* pixmap(colIdx idx) const
+ {
+ return Parent::pixmap(listView()->mapIdx(idx));
+ }
+ void paintCell(QPainter* p, const QColorGroup& cg, int column, int width, int align);
+
+ ConfigItem* nextItem;
+ struct menu *menu;
+ bool visible;
+ bool goParent;
+};
+
+class ConfigLineEdit : public QLineEdit {
+ Q_OBJECT
+ typedef class QLineEdit Parent;
+public:
+ ConfigLineEdit(ConfigView* parent);
+ ConfigView* parent(void) const
+ {
+ return (ConfigView*)Parent::parent();
+ }
+ void show(ConfigItem *i);
+ void keyPressEvent(QKeyEvent *e);
+
+public:
+ ConfigItem *item;
+};
+
+class ConfigView : public Q3VBox {
+ Q_OBJECT
+ typedef class Q3VBox Parent;
+public:
+ ConfigView(QWidget* parent, const char *name = 0);
+ ~ConfigView(void);
+ static void updateList(ConfigItem* item);
+ static void updateListAll(void);
+
+ bool showName(void) const { return list->showName; }
+ bool showRange(void) const { return list->showRange; }
+ bool showData(void) const { return list->showData; }
+public slots:
+ void setShowName(bool);
+ void setShowRange(bool);
+ void setShowData(bool);
+ void setOptionMode(QAction *);
+signals:
+ void showNameChanged(bool);
+ void showRangeChanged(bool);
+ void showDataChanged(bool);
+public:
+ ConfigList* list;
+ ConfigLineEdit* lineEdit;
+
+ static ConfigView* viewList;
+ ConfigView* nextView;
+
+ static QAction *showNormalAction;
+ static QAction *showAllAction;
+ static QAction *showPromptAction;
+};
+
+class ConfigInfoView : public Q3TextBrowser {
+ Q_OBJECT
+ typedef class Q3TextBrowser Parent;
+public:
+ ConfigInfoView(QWidget* parent, const char *name = 0);
+ bool showDebug(void) const { return _showDebug; }
+
+public slots:
+ void setInfo(struct menu *menu);
+ void saveSettings(void);
+ void setShowDebug(bool);
+
+signals:
+ void showDebugChanged(bool);
+ void menuSelected(struct menu *);
+
+protected:
+ void symbolInfo(void);
+ void menuInfo(void);
+ QString debug_info(struct symbol *sym);
+ static QString print_filter(const QString &str);
+ static void expr_print_help(void *data, struct symbol *sym, const char *str);
+ Q3PopupMenu* createPopupMenu(const QPoint& pos);
+ void contentsContextMenuEvent(QContextMenuEvent *e);
+
+ struct symbol *sym;
+ struct menu *_menu;
+ bool _showDebug;
+};
+
+class ConfigSearchWindow : public QDialog {
+ Q_OBJECT
+ typedef class QDialog Parent;
+public:
+ ConfigSearchWindow(ConfigMainWindow* parent, const char *name = 0);
+
+public slots:
+ void saveSettings(void);
+ void search(void);
+
+protected:
+ QLineEdit* editField;
+ QPushButton* searchButton;
+ QSplitter* split;
+ ConfigView* list;
+ ConfigInfoView* info;
+
+ struct symbol **result;
+};
+
+class ConfigMainWindow : public Q3MainWindow {
+ Q_OBJECT
+
+ static Q3Action *saveAction;
+ static void conf_changed(void);
+public:
+ ConfigMainWindow(void);
+public slots:
+ void changeMenu(struct menu *);
+ void setMenuLink(struct menu *);
+ void listFocusChanged(void);
+ void goBack(void);
+ void loadConfig(void);
+ bool saveConfig(void);
+ void saveConfigAs(void);
+ void searchConfig(void);
+ void showSingleView(void);
+ void showSplitView(void);
+ void showFullView(void);
+ void showIntro(void);
+ void showAbout(void);
+ void saveSettings(void);
+
+protected:
+ void closeEvent(QCloseEvent *e);
+
+ ConfigSearchWindow *searchWindow;
+ ConfigView *menuView;
+ ConfigList *menuList;
+ ConfigView *configView;
+ ConfigList *configList;
+ ConfigInfoView *helpText;
+ Q3ToolBar *toolBar;
+ Q3Action *backAction;
+ QSplitter* split1;
+ QSplitter* split2;
+};
diff --git a/scripts/kconfig/streamline_config.pl b/scripts/kconfig/streamline_config.pl
new file mode 100644
index 0000000..9cb8522
--- /dev/null
+++ b/scripts/kconfig/streamline_config.pl
@@ -0,0 +1,647 @@
+#!/usr/bin/perl -w
+#
+# Copyright 2005-2009 - Steven Rostedt
+# Licensed under the terms of the GNU GPL License version 2
+#
+# It's simple enough to figure out how this works.
+# If not, then you can ask me at stripconfig@goodmis.org
+#
+# What it does?
+#
+# If you have installed a Linux kernel from a distribution
+# that turns on way too many modules than you need, and
+# you only want the modules you use, then this program
+# is perfect for you.
+#
+# It gives you the ability to turn off all the modules that are
+# not loaded on your system.
+#
+# Howto:
+#
+# 1. Boot up the kernel that you want to stream line the config on.
+# 2. Change directory to the directory holding the source of the
+# kernel that you just booted.
+# 3. Copy the configuraton file to this directory as .config
+# 4. Have all your devices that you need modules for connected and
+# operational (make sure that their corresponding modules are loaded)
+# 5. Run this script redirecting the output to some other file
+# like config_strip.
+# 6. Back up your old config (if you want too).
+# 7. copy the config_strip file to .config
+# 8. Run "make oldconfig"
+#
+# Now your kernel is ready to be built with only the modules that
+# are loaded.
+#
+# Here's what I did with my Debian distribution.
+#
+# cd /usr/src/linux-2.6.10
+# cp /boot/config-2.6.10-1-686-smp .config
+# ~/bin/streamline_config > config_strip
+# mv .config config_sav
+# mv config_strip .config
+# make oldconfig
+#
+use strict;
+use Getopt::Long;
+
+# set the environment variable LOCALMODCONFIG_DEBUG to get
+# debug output.
+my $debugprint = 0;
+$debugprint = 1 if (defined($ENV{LOCALMODCONFIG_DEBUG}));
+
+sub dprint {
+ return if (!$debugprint);
+ print STDERR @_;
+}
+
+my $config = ".config";
+
+my $uname = `uname -r`;
+chomp $uname;
+
+my @searchconfigs = (
+ {
+ "file" => ".config",
+ "exec" => "cat",
+ },
+ {
+ "file" => "/proc/config.gz",
+ "exec" => "zcat",
+ },
+ {
+ "file" => "/boot/config-$uname",
+ "exec" => "cat",
+ },
+ {
+ "file" => "/boot/vmlinuz-$uname",
+ "exec" => "scripts/extract-ikconfig",
+ "test" => "scripts/extract-ikconfig",
+ },
+ {
+ "file" => "vmlinux",
+ "exec" => "scripts/extract-ikconfig",
+ "test" => "scripts/extract-ikconfig",
+ },
+ {
+ "file" => "/lib/modules/$uname/kernel/kernel/configs.ko",
+ "exec" => "scripts/extract-ikconfig",
+ "test" => "scripts/extract-ikconfig",
+ },
+ {
+ "file" => "kernel/configs.ko",
+ "exec" => "scripts/extract-ikconfig",
+ "test" => "scripts/extract-ikconfig",
+ },
+ {
+ "file" => "kernel/configs.o",
+ "exec" => "scripts/extract-ikconfig",
+ "test" => "scripts/extract-ikconfig",
+ },
+);
+
+sub read_config {
+ foreach my $conf (@searchconfigs) {
+ my $file = $conf->{"file"};
+
+ next if ( ! -f "$file");
+
+ if (defined($conf->{"test"})) {
+ `$conf->{"test"} $conf->{"file"} 2>/dev/null`;
+ next if ($?);
+ }
+
+ my $exec = $conf->{"exec"};
+
+ print STDERR "using config: '$file'\n";
+
+ open(my $infile, '-|', "$exec $file") || die "Failed to run $exec $file";
+ my @x = <$infile>;
+ close $infile;
+ return @x;
+ }
+ die "No config file found";
+}
+
+my @config_file = read_config;
+
+# Parse options
+my $localmodconfig = 0;
+my $localyesconfig = 0;
+
+GetOptions("localmodconfig" => \$localmodconfig,
+ "localyesconfig" => \$localyesconfig);
+
+# Get the build source and top level Kconfig file (passed in)
+my $ksource = ($ARGV[0] ? $ARGV[0] : '.');
+my $kconfig = $ARGV[1];
+my $lsmod_file = $ENV{'LSMOD'};
+
+my @makefiles = `find $ksource -name Makefile 2>/dev/null`;
+chomp @makefiles;
+
+my %depends;
+my %selects;
+my %prompts;
+my %objects;
+my $var;
+my $iflevel = 0;
+my @ifdeps;
+
+# prevent recursion
+my %read_kconfigs;
+
+sub read_kconfig {
+ my ($kconfig) = @_;
+
+ my $state = "NONE";
+ my $config;
+
+ my $cont = 0;
+ my $line;
+
+ my $source = "$ksource/$kconfig";
+ my $last_source = "";
+
+ # Check for any environment variables used
+ while ($source =~ /\$(\w+)/ && $last_source ne $source) {
+ my $env = $1;
+ $last_source = $source;
+ $source =~ s/\$$env/$ENV{$env}/;
+ }
+
+ open(my $kinfile, '<', $source) || die "Can't open $kconfig";
+ while (<$kinfile>) {
+ chomp;
+
+ # Make sure that lines ending with \ continue
+ if ($cont) {
+ $_ = $line . " " . $_;
+ }
+
+ if (s/\\$//) {
+ $cont = 1;
+ $line = $_;
+ next;
+ }
+
+ $cont = 0;
+
+ # collect any Kconfig sources
+ if (/^source\s*"(.*)"/) {
+ my $kconfig = $1;
+ # prevent reading twice.
+ if (!defined($read_kconfigs{$kconfig})) {
+ $read_kconfigs{$kconfig} = 1;
+ read_kconfig($kconfig);
+ }
+ next;
+ }
+
+ # configs found
+ if (/^\s*(menu)?config\s+(\S+)\s*$/) {
+ $state = "NEW";
+ $config = $2;
+
+ # Add depends for 'if' nesting
+ for (my $i = 0; $i < $iflevel; $i++) {
+ if ($i) {
+ $depends{$config} .= " " . $ifdeps[$i];
+ } else {
+ $depends{$config} = $ifdeps[$i];
+ }
+ $state = "DEP";
+ }
+
+ # collect the depends for the config
+ } elsif ($state eq "NEW" && /^\s*depends\s+on\s+(.*)$/) {
+ $state = "DEP";
+ $depends{$config} = $1;
+ } elsif ($state eq "DEP" && /^\s*depends\s+on\s+(.*)$/) {
+ $depends{$config} .= " " . $1;
+ } elsif ($state eq "DEP" && /^\s*def(_(bool|tristate)|ault)\s+(\S.*)$/) {
+ my $dep = $3;
+ if ($dep !~ /^\s*(y|m|n)\s*$/) {
+ $dep =~ s/.*\sif\s+//;
+ $depends{$config} .= " " . $dep;
+ dprint "Added default depends $dep to $config\n";
+ }
+
+ # Get the configs that select this config
+ } elsif ($state ne "NONE" && /^\s*select\s+(\S+)/) {
+ my $conf = $1;
+ if (defined($selects{$conf})) {
+ $selects{$conf} .= " " . $config;
+ } else {
+ $selects{$conf} = $config;
+ }
+
+ # configs without prompts must be selected
+ } elsif ($state ne "NONE" && /^\s*tristate\s\S/) {
+ # note if the config has a prompt
+ $prompts{$config} = 1;
+
+ # Check for if statements
+ } elsif (/^if\s+(.*\S)\s*$/) {
+ my $deps = $1;
+ # remove beginning and ending non text
+ $deps =~ s/^[^a-zA-Z0-9_]*//;
+ $deps =~ s/[^a-zA-Z0-9_]*$//;
+
+ my @deps = split /[^a-zA-Z0-9_]+/, $deps;
+
+ $ifdeps[$iflevel++] = join ':', @deps;
+
+ } elsif (/^endif/) {
+
+ $iflevel-- if ($iflevel);
+
+ # stop on "help"
+ } elsif (/^\s*help\s*$/) {
+ $state = "NONE";
+ }
+ }
+ close($kinfile);
+}
+
+if ($kconfig) {
+ read_kconfig($kconfig);
+}
+
+# Makefiles can use variables to define their dependencies
+sub convert_vars {
+ my ($line, %vars) = @_;
+
+ my $process = "";
+
+ while ($line =~ s/^(.*?)(\$\((.*?)\))//) {
+ my $start = $1;
+ my $variable = $2;
+ my $var = $3;
+
+ if (defined($vars{$var})) {
+ $process .= $start . $vars{$var};
+ } else {
+ $process .= $start . $variable;
+ }
+ }
+
+ $process .= $line;
+
+ return $process;
+}
+
+# Read all Makefiles to map the configs to the objects
+foreach my $makefile (@makefiles) {
+
+ my $line = "";
+ my %make_vars;
+
+ open(my $infile, '<', $makefile) || die "Can't open $makefile";
+ while (<$infile>) {
+ # if this line ends with a backslash, continue
+ chomp;
+ if (/^(.*)\\$/) {
+ $line .= $1;
+ next;
+ }
+
+ $line .= $_;
+ $_ = $line;
+ $line = "";
+
+ my $objs;
+
+ # Convert variables in a line (could define configs)
+ $_ = convert_vars($_, %make_vars);
+
+ # collect objects after obj-$(CONFIG_FOO_BAR)
+ if (/obj-\$\((CONFIG_[^\)]*)\)\s*[+:]?=\s*(.*)/) {
+ $var = $1;
+ $objs = $2;
+
+ # check if variables are set
+ } elsif (/^\s*(\S+)\s*[:]?=\s*(.*\S)/) {
+ $make_vars{$1} = $2;
+ }
+ if (defined($objs)) {
+ foreach my $obj (split /\s+/,$objs) {
+ $obj =~ s/-/_/g;
+ if ($obj =~ /(.*)\.o$/) {
+ # Objects may be enabled by more than one config.
+ # Store configs in an array.
+ my @arr;
+
+ if (defined($objects{$1})) {
+ @arr = @{$objects{$1}};
+ }
+
+ $arr[$#arr+1] = $var;
+
+ # The objects have a hash mapping to a reference
+ # of an array of configs.
+ $objects{$1} = \@arr;
+ }
+ }
+ }
+ }
+ close($infile);
+}
+
+my %modules;
+my $linfile;
+
+if (defined($lsmod_file)) {
+ if ( ! -f $lsmod_file) {
+ if ( -f $ENV{'objtree'}."/".$lsmod_file) {
+ $lsmod_file = $ENV{'objtree'}."/".$lsmod_file;
+ } else {
+ die "$lsmod_file not found";
+ }
+ }
+
+ my $otype = ( -x $lsmod_file) ? '-|' : '<';
+ open($linfile, $otype, $lsmod_file);
+
+} else {
+
+ # see what modules are loaded on this system
+ my $lsmod;
+
+ foreach my $dir ( ("/sbin", "/bin", "/usr/sbin", "/usr/bin") ) {
+ if ( -x "$dir/lsmod" ) {
+ $lsmod = "$dir/lsmod";
+ last;
+ }
+}
+ if (!defined($lsmod)) {
+ # try just the path
+ $lsmod = "lsmod";
+ }
+
+ open($linfile, '-|', $lsmod) || die "Can not call lsmod with $lsmod";
+}
+
+while (<$linfile>) {
+ next if (/^Module/); # Skip the first line.
+ if (/^(\S+)/) {
+ $modules{$1} = 1;
+ }
+}
+close ($linfile);
+
+# add to the configs hash all configs that are needed to enable
+# a loaded module. This is a direct obj-${CONFIG_FOO} += bar.o
+# where we know we need bar.o so we add FOO to the list.
+my %configs;
+foreach my $module (keys(%modules)) {
+ if (defined($objects{$module})) {
+ my @arr = @{$objects{$module}};
+ foreach my $conf (@arr) {
+ $configs{$conf} = $module;
+ dprint "$conf added by direct ($module)\n";
+ if ($debugprint) {
+ my $c=$conf;
+ $c =~ s/^CONFIG_//;
+ if (defined($depends{$c})) {
+ dprint " deps = $depends{$c}\n";
+ } else {
+ dprint " no deps\n";
+ }
+ }
+ }
+ } else {
+ # Most likely, someone has a custom (binary?) module loaded.
+ print STDERR "$module config not found!!\n";
+ }
+}
+
+# Read the current config, and see what is enabled. We want to
+# ignore configs that we would not enable anyway.
+
+my %orig_configs;
+my $valid = "A-Za-z_0-9";
+
+foreach my $line (@config_file) {
+ $_ = $line;
+
+ if (/(CONFIG_[$valid]*)=(m|y)/) {
+ $orig_configs{$1} = $2;
+ }
+}
+
+my $repeat = 1;
+
+my $depconfig;
+
+#
+# Note, we do not care about operands (like: &&, ||, !) we want to add any
+# config that is in the depend list of another config. This script does
+# not enable configs that are not already enabled. If we come across a
+# config A that depends on !B, we can still add B to the list of depends
+# to keep on. If A was on in the original config, B would not have been
+# and B would not be turned on by this script.
+#
+sub parse_config_depends
+{
+ my ($p) = @_;
+
+ while ($p =~ /[$valid]/) {
+
+ if ($p =~ /^[^$valid]*([$valid]+)/) {
+ my $conf = "CONFIG_" . $1;
+
+ $p =~ s/^[^$valid]*[$valid]+//;
+
+ # We only need to process if the depend config is a module
+ if (!defined($orig_configs{$conf}) || !$orig_configs{conf} eq "m") {
+ next;
+ }
+
+ if (!defined($configs{$conf})) {
+ # We must make sure that this config has its
+ # dependencies met.
+ $repeat = 1; # do again
+ dprint "$conf selected by depend $depconfig\n";
+ $configs{$conf} = 1;
+ }
+ } else {
+ die "this should never happen";
+ }
+ }
+}
+
+# Select is treated a bit differently than depends. We call this
+# when a config has no prompt and requires another config to be
+# selected. We use to just select all configs that selected this
+# config, but found that that can balloon into enabling hundreds
+# of configs that we do not care about.
+#
+# The idea is we look at all the configs that select it. If one
+# is already in our list of configs to enable, then there's nothing
+# else to do. If there isn't, we pick the first config that was
+# enabled in the orignal config and use that.
+sub parse_config_selects
+{
+ my ($config, $p) = @_;
+
+ my $next_config;
+
+ while ($p =~ /[$valid]/) {
+
+ if ($p =~ /^[^$valid]*([$valid]+)/) {
+ my $conf = "CONFIG_" . $1;
+
+ $p =~ s/^[^$valid]*[$valid]+//;
+
+ # Make sure that this config exists in the current .config file
+ if (!defined($orig_configs{$conf})) {
+ dprint "$conf not set for $config select\n";
+ next;
+ }
+
+ # Check if something other than a module selects this config
+ if (defined($orig_configs{$conf}) && $orig_configs{$conf} ne "m") {
+ dprint "$conf (non module) selects config, we are good\n";
+ # we are good with this
+ return;
+ }
+ if (defined($configs{$conf})) {
+ dprint "$conf selects $config so we are good\n";
+ # A set config selects this config, we are good
+ return;
+ }
+ # Set this config to be selected
+ if (!defined($next_config)) {
+ $next_config = $conf;
+ }
+ } else {
+ die "this should never happen";
+ }
+ }
+
+ # If no possible config selected this, then something happened.
+ if (!defined($next_config)) {
+ print STDERR "WARNING: $config is required, but nothing in the\n";
+ print STDERR " current config selects it.\n";
+ return;
+ }
+
+ # If we are here, then we found no config that is set and
+ # selects this config. Repeat.
+ $repeat = 1;
+ # Make this config need to be selected
+ $configs{$next_config} = 1;
+ dprint "$next_config selected by select $config\n";
+}
+
+my %process_selects;
+
+# loop through all configs, select their dependencies.
+sub loop_depend {
+ $repeat = 1;
+
+ while ($repeat) {
+ $repeat = 0;
+
+ forloop:
+ foreach my $config (keys %configs) {
+
+ # If this config is not a module, we do not need to process it
+ if (defined($orig_configs{$config}) && $orig_configs{$config} ne "m") {
+ next forloop;
+ }
+
+ $config =~ s/^CONFIG_//;
+ $depconfig = $config;
+
+ if (defined($depends{$config})) {
+ # This config has dependencies. Make sure they are also included
+ parse_config_depends $depends{$config};
+ }
+
+ # If the config has no prompt, then we need to check if a config
+ # that is enabled selected it. Or if we need to enable one.
+ if (!defined($prompts{$config}) && defined($selects{$config})) {
+ $process_selects{$config} = 1;
+ }
+ }
+ }
+}
+
+sub loop_select {
+
+ foreach my $config (keys %process_selects) {
+ $config =~ s/^CONFIG_//;
+
+ dprint "Process select $config\n";
+
+ # config has no prompt and must be selected.
+ parse_config_selects $config, $selects{$config};
+ }
+}
+
+while ($repeat) {
+ # Get the first set of configs and their dependencies.
+ loop_depend;
+
+ $repeat = 0;
+
+ # Now we need to see if we have to check selects;
+ loop_select;
+}
+
+my %setconfigs;
+
+# Finally, read the .config file and turn off any module enabled that
+# we could not find a reason to keep enabled.
+foreach my $line (@config_file) {
+ $_ = $line;
+
+ if (/CONFIG_IKCONFIG/) {
+ if (/# CONFIG_IKCONFIG is not set/) {
+ # enable IKCONFIG at least as a module
+ print "CONFIG_IKCONFIG=m\n";
+ # don't ask about PROC
+ print "# CONFIG_IKCONFIG_PROC is not set\n";
+ } else {
+ print;
+ }
+ next;
+ }
+
+ if (/^(CONFIG.*)=(m|y)/) {
+ if (defined($configs{$1})) {
+ if ($localyesconfig) {
+ $setconfigs{$1} = 'y';
+ print "$1=y\n";
+ next;
+ } else {
+ $setconfigs{$1} = $2;
+ }
+ } elsif ($2 eq "m") {
+ print "# $1 is not set\n";
+ next;
+ }
+ }
+ print;
+}
+
+# Integrity check, make sure all modules that we want enabled do
+# indeed have their configs set.
+loop:
+foreach my $module (keys(%modules)) {
+ if (defined($objects{$module})) {
+ my @arr = @{$objects{$module}};
+ foreach my $conf (@arr) {
+ if (defined($setconfigs{$conf})) {
+ next loop;
+ }
+ }
+ print STDERR "module $module did not have configs";
+ foreach my $conf (@arr) {
+ print STDERR " " , $conf;
+ }
+ print STDERR "\n";
+ }
+}
diff --git a/scripts/kconfig/symbol.c b/scripts/kconfig/symbol.c
new file mode 100644
index 0000000..7caabdb
--- /dev/null
+++ b/scripts/kconfig/symbol.c
@@ -0,0 +1,1373 @@
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <ctype.h>
+#include <stdlib.h>
+#include <string.h>
+#include <regex.h>
+#include <sys/utsname.h>
+
+#include "lkc.h"
+
+struct symbol symbol_yes = {
+ .name = "y",
+ .curr = { "y", yes },
+ .flags = SYMBOL_CONST|SYMBOL_VALID,
+}, symbol_mod = {
+ .name = "m",
+ .curr = { "m", mod },
+ .flags = SYMBOL_CONST|SYMBOL_VALID,
+}, symbol_no = {
+ .name = "n",
+ .curr = { "n", no },
+ .flags = SYMBOL_CONST|SYMBOL_VALID,
+}, symbol_empty = {
+ .name = "",
+ .curr = { "", no },
+ .flags = SYMBOL_VALID,
+};
+
+struct symbol *sym_defconfig_list;
+struct symbol *modules_sym;
+tristate modules_val;
+
+struct expr *sym_env_list;
+
+static void sym_add_default(struct symbol *sym, const char *def)
+{
+ struct property *prop = prop_alloc(P_DEFAULT, sym);
+
+ prop->expr = expr_alloc_symbol(sym_lookup(def, SYMBOL_CONST));
+}
+
+void sym_init(void)
+{
+ struct symbol *sym;
+ struct utsname uts;
+ static bool inited = false;
+
+ if (inited)
+ return;
+ inited = true;
+
+ uname(&uts);
+
+ sym = sym_lookup("UNAME_RELEASE", 0);
+ sym->type = S_STRING;
+ sym->flags |= SYMBOL_AUTO;
+ sym_add_default(sym, uts.release);
+}
+
+enum symbol_type sym_get_type(struct symbol *sym)
+{
+ enum symbol_type type = sym->type;
+
+ if (type == S_TRISTATE) {
+ if (sym_is_choice_value(sym) && sym->visible == yes)
+ type = S_BOOLEAN;
+ else if (modules_val == no)
+ type = S_BOOLEAN;
+ }
+ return type;
+}
+
+const char *sym_type_name(enum symbol_type type)
+{
+ switch (type) {
+ case S_BOOLEAN:
+ return "boolean";
+ case S_TRISTATE:
+ return "tristate";
+ case S_INT:
+ return "integer";
+ case S_HEX:
+ return "hex";
+ case S_STRING:
+ return "string";
+ case S_UNKNOWN:
+ return "unknown";
+ case S_OTHER:
+ break;
+ }
+ return "???";
+}
+
+struct property *sym_get_choice_prop(struct symbol *sym)
+{
+ struct property *prop;
+
+ for_all_choices(sym, prop)
+ return prop;
+ return NULL;
+}
+
+struct property *sym_get_env_prop(struct symbol *sym)
+{
+ struct property *prop;
+
+ for_all_properties(sym, prop, P_ENV)
+ return prop;
+ return NULL;
+}
+
+struct property *sym_get_default_prop(struct symbol *sym)
+{
+ struct property *prop;
+
+ for_all_defaults(sym, prop) {
+ prop->visible.tri = expr_calc_value(prop->visible.expr);
+ if (prop->visible.tri != no)
+ return prop;
+ }
+ return NULL;
+}
+
+static struct property *sym_get_range_prop(struct symbol *sym)
+{
+ struct property *prop;
+
+ for_all_properties(sym, prop, P_RANGE) {
+ prop->visible.tri = expr_calc_value(prop->visible.expr);
+ if (prop->visible.tri != no)
+ return prop;
+ }
+ return NULL;
+}
+
+static long long sym_get_range_val(struct symbol *sym, int base)
+{
+ sym_calc_value(sym);
+ switch (sym->type) {
+ case S_INT:
+ base = 10;
+ break;
+ case S_HEX:
+ base = 16;
+ break;
+ default:
+ break;
+ }
+ return strtoll(sym->curr.val, NULL, base);
+}
+
+static void sym_validate_range(struct symbol *sym)
+{
+ struct property *prop;
+ int base;
+ long long val, val2;
+ char str[64];
+
+ switch (sym->type) {
+ case S_INT:
+ base = 10;
+ break;
+ case S_HEX:
+ base = 16;
+ break;
+ default:
+ return;
+ }
+ prop = sym_get_range_prop(sym);
+ if (!prop)
+ return;
+ val = strtoll(sym->curr.val, NULL, base);
+ val2 = sym_get_range_val(prop->expr->left.sym, base);
+ if (val >= val2) {
+ val2 = sym_get_range_val(prop->expr->right.sym, base);
+ if (val <= val2)
+ return;
+ }
+ if (sym->type == S_INT)
+ sprintf(str, "%lld", val2);
+ else
+ sprintf(str, "0x%llx", val2);
+ sym->curr.val = strdup(str);
+}
+
+static void sym_calc_visibility(struct symbol *sym)
+{
+ struct property *prop;
+ tristate tri;
+
+ /* any prompt visible? */
+ tri = no;
+ for_all_prompts(sym, prop) {
+ prop->visible.tri = expr_calc_value(prop->visible.expr);
+ tri = EXPR_OR(tri, prop->visible.tri);
+ }
+ if (tri == mod && (sym->type != S_TRISTATE || modules_val == no))
+ tri = yes;
+ if (sym->visible != tri) {
+ sym->visible = tri;
+ sym_set_changed(sym);
+ }
+ if (sym_is_choice_value(sym))
+ return;
+ /* defaulting to "yes" if no explicit "depends on" are given */
+ tri = yes;
+ if (sym->dir_dep.expr)
+ tri = expr_calc_value(sym->dir_dep.expr);
+ if (tri == mod)
+ tri = yes;
+ if (sym->dir_dep.tri != tri) {
+ sym->dir_dep.tri = tri;
+ sym_set_changed(sym);
+ }
+ tri = no;
+ if (sym->rev_dep.expr)
+ tri = expr_calc_value(sym->rev_dep.expr);
+ if (tri == mod && sym_get_type(sym) == S_BOOLEAN)
+ tri = yes;
+ if (sym->rev_dep.tri != tri) {
+ sym->rev_dep.tri = tri;
+ sym_set_changed(sym);
+ }
+}
+
+/*
+ * Find the default symbol for a choice.
+ * First try the default values for the choice symbol
+ * Next locate the first visible choice value
+ * Return NULL if none was found
+ */
+struct symbol *sym_choice_default(struct symbol *sym)
+{
+ struct symbol *def_sym;
+ struct property *prop;
+ struct expr *e;
+
+ /* any of the defaults visible? */
+ for_all_defaults(sym, prop) {
+ prop->visible.tri = expr_calc_value(prop->visible.expr);
+ if (prop->visible.tri == no)
+ continue;
+ def_sym = prop_get_symbol(prop);
+ if (def_sym->visible != no)
+ return def_sym;
+ }
+
+ /* just get the first visible value */
+ prop = sym_get_choice_prop(sym);
+ expr_list_for_each_sym(prop->expr, e, def_sym)
+ if (def_sym->visible != no)
+ return def_sym;
+
+ /* failed to locate any defaults */
+ return NULL;
+}
+
+static struct symbol *sym_calc_choice(struct symbol *sym)
+{
+ struct symbol *def_sym;
+ struct property *prop;
+ struct expr *e;
+ int flags;
+
+ /* first calculate all choice values' visibilities */
+ flags = sym->flags;
+ prop = sym_get_choice_prop(sym);
+ expr_list_for_each_sym(prop->expr, e, def_sym) {
+ sym_calc_visibility(def_sym);
+ if (def_sym->visible != no)
+ flags &= def_sym->flags;
+ }
+
+ sym->flags &= flags | ~SYMBOL_DEF_USER;
+
+ /* is the user choice visible? */
+ def_sym = sym->def[S_DEF_USER].val;
+ if (def_sym && def_sym->visible != no)
+ return def_sym;
+
+ def_sym = sym_choice_default(sym);
+
+ if (def_sym == NULL)
+ /* no choice? reset tristate value */
+ sym->curr.tri = no;
+
+ return def_sym;
+}
+
+void sym_calc_value(struct symbol *sym)
+{
+ struct symbol_value newval, oldval;
+ struct property *prop;
+ struct expr *e;
+
+ if (!sym)
+ return;
+
+ if (sym->flags & SYMBOL_VALID)
+ return;
+
+ if (sym_is_choice_value(sym) &&
+ sym->flags & SYMBOL_NEED_SET_CHOICE_VALUES) {
+ sym->flags &= ~SYMBOL_NEED_SET_CHOICE_VALUES;
+ prop = sym_get_choice_prop(sym);
+ sym_calc_value(prop_get_symbol(prop));
+ }
+
+ sym->flags |= SYMBOL_VALID;
+
+ oldval = sym->curr;
+
+ switch (sym->type) {
+ case S_INT:
+ case S_HEX:
+ case S_STRING:
+ newval = symbol_empty.curr;
+ break;
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ newval = symbol_no.curr;
+ break;
+ default:
+ sym->curr.val = sym->name;
+ sym->curr.tri = no;
+ return;
+ }
+ if (!sym_is_choice_value(sym))
+ sym->flags &= ~SYMBOL_WRITE;
+
+ sym_calc_visibility(sym);
+
+ /* set default if recursively called */
+ sym->curr = newval;
+
+ switch (sym_get_type(sym)) {
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ if (sym_is_choice_value(sym) && sym->visible == yes) {
+ prop = sym_get_choice_prop(sym);
+ newval.tri = (prop_get_symbol(prop)->curr.val == sym) ? yes : no;
+ } else {
+ if (sym->visible != no) {
+ /* if the symbol is visible use the user value
+ * if available, otherwise try the default value
+ */
+ sym->flags |= SYMBOL_WRITE;
+ if (sym_has_value(sym)) {
+ newval.tri = EXPR_AND(sym->def[S_DEF_USER].tri,
+ sym->visible);
+ goto calc_newval;
+ }
+ }
+ if (sym->rev_dep.tri != no)
+ sym->flags |= SYMBOL_WRITE;
+ if (!sym_is_choice(sym)) {
+ prop = sym_get_default_prop(sym);
+ if (prop) {
+ sym->flags |= SYMBOL_WRITE;
+ newval.tri = EXPR_AND(expr_calc_value(prop->expr),
+ prop->visible.tri);
+ }
+ }
+ calc_newval:
+ if (sym->dir_dep.tri == no && sym->rev_dep.tri != no) {
+ struct expr *e;
+ e = expr_simplify_unmet_dep(sym->rev_dep.expr,
+ sym->dir_dep.expr);
+ fprintf(stderr, "warning: (");
+ expr_fprint(e, stderr);
+ fprintf(stderr, ") selects %s which has unmet direct dependencies (",
+ sym->name);
+ expr_fprint(sym->dir_dep.expr, stderr);
+ fprintf(stderr, ")\n");
+ expr_free(e);
+ }
+ newval.tri = EXPR_OR(newval.tri, sym->rev_dep.tri);
+ }
+ if (newval.tri == mod && sym_get_type(sym) == S_BOOLEAN)
+ newval.tri = yes;
+ break;
+ case S_STRING:
+ case S_HEX:
+ case S_INT:
+ if (sym->visible != no) {
+ sym->flags |= SYMBOL_WRITE;
+ if (sym_has_value(sym)) {
+ newval.val = sym->def[S_DEF_USER].val;
+ break;
+ }
+ }
+ prop = sym_get_default_prop(sym);
+ if (prop) {
+ struct symbol *ds = prop_get_symbol(prop);
+ if (ds) {
+ sym->flags |= SYMBOL_WRITE;
+ sym_calc_value(ds);
+ newval.val = ds->curr.val;
+ }
+ }
+ break;
+ default:
+ ;
+ }
+
+ sym->curr = newval;
+ if (sym_is_choice(sym) && newval.tri == yes)
+ sym->curr.val = sym_calc_choice(sym);
+ sym_validate_range(sym);
+
+ if (memcmp(&oldval, &sym->curr, sizeof(oldval))) {
+ sym_set_changed(sym);
+ if (modules_sym == sym) {
+ sym_set_all_changed();
+ modules_val = modules_sym->curr.tri;
+ }
+ }
+
+ if (sym_is_choice(sym)) {
+ struct symbol *choice_sym;
+
+ prop = sym_get_choice_prop(sym);
+ expr_list_for_each_sym(prop->expr, e, choice_sym) {
+ if ((sym->flags & SYMBOL_WRITE) &&
+ choice_sym->visible != no)
+ choice_sym->flags |= SYMBOL_WRITE;
+ if (sym->flags & SYMBOL_CHANGED)
+ sym_set_changed(choice_sym);
+ }
+ }
+
+ if (sym->flags & SYMBOL_AUTO)
+ sym->flags &= ~SYMBOL_WRITE;
+
+ if (sym->flags & SYMBOL_NEED_SET_CHOICE_VALUES)
+ set_all_choice_values(sym);
+}
+
+void sym_clear_all_valid(void)
+{
+ struct symbol *sym;
+ int i;
+
+ for_all_symbols(i, sym)
+ sym->flags &= ~SYMBOL_VALID;
+ sym_add_change_count(1);
+ if (modules_sym)
+ sym_calc_value(modules_sym);
+}
+
+void sym_set_changed(struct symbol *sym)
+{
+ struct property *prop;
+
+ sym->flags |= SYMBOL_CHANGED;
+ for (prop = sym->prop; prop; prop = prop->next) {
+ if (prop->menu)
+ prop->menu->flags |= MENU_CHANGED;
+ }
+}
+
+void sym_set_all_changed(void)
+{
+ struct symbol *sym;
+ int i;
+
+ for_all_symbols(i, sym)
+ sym_set_changed(sym);
+}
+
+bool sym_tristate_within_range(struct symbol *sym, tristate val)
+{
+ int type = sym_get_type(sym);
+
+ if (sym->visible == no)
+ return false;
+
+ if (type != S_BOOLEAN && type != S_TRISTATE)
+ return false;
+
+ if (type == S_BOOLEAN && val == mod)
+ return false;
+ if (sym->visible <= sym->rev_dep.tri)
+ return false;
+ if (sym_is_choice_value(sym) && sym->visible == yes)
+ return val == yes;
+ return val >= sym->rev_dep.tri && val <= sym->visible;
+}
+
+bool sym_set_tristate_value(struct symbol *sym, tristate val)
+{
+ tristate oldval = sym_get_tristate_value(sym);
+
+ if (oldval != val && !sym_tristate_within_range(sym, val))
+ return false;
+
+ if (!(sym->flags & SYMBOL_DEF_USER)) {
+ sym->flags |= SYMBOL_DEF_USER;
+ sym_set_changed(sym);
+ }
+ /*
+ * setting a choice value also resets the new flag of the choice
+ * symbol and all other choice values.
+ */
+ if (sym_is_choice_value(sym) && val == yes) {
+ struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym));
+ struct property *prop;
+ struct expr *e;
+
+ cs->def[S_DEF_USER].val = sym;
+ cs->flags |= SYMBOL_DEF_USER;
+ prop = sym_get_choice_prop(cs);
+ for (e = prop->expr; e; e = e->left.expr) {
+ if (e->right.sym->visible != no)
+ e->right.sym->flags |= SYMBOL_DEF_USER;
+ }
+ }
+
+ sym->def[S_DEF_USER].tri = val;
+ if (oldval != val)
+ sym_clear_all_valid();
+
+ return true;
+}
+
+tristate sym_toggle_tristate_value(struct symbol *sym)
+{
+ tristate oldval, newval;
+
+ oldval = newval = sym_get_tristate_value(sym);
+ do {
+ switch (newval) {
+ case no:
+ newval = mod;
+ break;
+ case mod:
+ newval = yes;
+ break;
+ case yes:
+ newval = no;
+ break;
+ }
+ if (sym_set_tristate_value(sym, newval))
+ break;
+ } while (oldval != newval);
+ return newval;
+}
+
+bool sym_string_valid(struct symbol *sym, const char *str)
+{
+ signed char ch;
+
+ switch (sym->type) {
+ case S_STRING:
+ return true;
+ case S_INT:
+ ch = *str++;
+ if (ch == '-')
+ ch = *str++;
+ if (!isdigit(ch))
+ return false;
+ if (ch == '0' && *str != 0)
+ return false;
+ while ((ch = *str++)) {
+ if (!isdigit(ch))
+ return false;
+ }
+ return true;
+ case S_HEX:
+ if (str[0] == '0' && (str[1] == 'x' || str[1] == 'X'))
+ str += 2;
+ ch = *str++;
+ do {
+ if (!isxdigit(ch))
+ return false;
+ } while ((ch = *str++));
+ return true;
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ switch (str[0]) {
+ case 'y': case 'Y':
+ case 'm': case 'M':
+ case 'n': case 'N':
+ return true;
+ }
+ return false;
+ default:
+ return false;
+ }
+}
+
+bool sym_string_within_range(struct symbol *sym, const char *str)
+{
+ struct property *prop;
+ long long val;
+
+ switch (sym->type) {
+ case S_STRING:
+ return sym_string_valid(sym, str);
+ case S_INT:
+ if (!sym_string_valid(sym, str))
+ return false;
+ prop = sym_get_range_prop(sym);
+ if (!prop)
+ return true;
+ val = strtoll(str, NULL, 10);
+ return val >= sym_get_range_val(prop->expr->left.sym, 10) &&
+ val <= sym_get_range_val(prop->expr->right.sym, 10);
+ case S_HEX:
+ if (!sym_string_valid(sym, str))
+ return false;
+ prop = sym_get_range_prop(sym);
+ if (!prop)
+ return true;
+ val = strtoll(str, NULL, 16);
+ return val >= sym_get_range_val(prop->expr->left.sym, 16) &&
+ val <= sym_get_range_val(prop->expr->right.sym, 16);
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ switch (str[0]) {
+ case 'y': case 'Y':
+ return sym_tristate_within_range(sym, yes);
+ case 'm': case 'M':
+ return sym_tristate_within_range(sym, mod);
+ case 'n': case 'N':
+ return sym_tristate_within_range(sym, no);
+ }
+ return false;
+ default:
+ return false;
+ }
+}
+
+bool sym_set_string_value(struct symbol *sym, const char *newval)
+{
+ const char *oldval;
+ char *val;
+ int size;
+
+ switch (sym->type) {
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ switch (newval[0]) {
+ case 'y': case 'Y':
+ return sym_set_tristate_value(sym, yes);
+ case 'm': case 'M':
+ return sym_set_tristate_value(sym, mod);
+ case 'n': case 'N':
+ return sym_set_tristate_value(sym, no);
+ }
+ return false;
+ default:
+ ;
+ }
+
+ if (!sym_string_within_range(sym, newval))
+ return false;
+
+ if (!(sym->flags & SYMBOL_DEF_USER)) {
+ sym->flags |= SYMBOL_DEF_USER;
+ sym_set_changed(sym);
+ }
+
+ oldval = sym->def[S_DEF_USER].val;
+ size = strlen(newval) + 1;
+ if (sym->type == S_HEX && (newval[0] != '0' || (newval[1] != 'x' && newval[1] != 'X'))) {
+ size += 2;
+ sym->def[S_DEF_USER].val = val = xmalloc(size);
+ *val++ = '0';
+ *val++ = 'x';
+ } else if (!oldval || strcmp(oldval, newval))
+ sym->def[S_DEF_USER].val = val = xmalloc(size);
+ else
+ return true;
+
+ strcpy(val, newval);
+ free((void *)oldval);
+ sym_clear_all_valid();
+
+ return true;
+}
+
+/*
+ * Find the default value associated to a symbol.
+ * For tristate symbol handle the modules=n case
+ * in which case "m" becomes "y".
+ * If the symbol does not have any default then fallback
+ * to the fixed default values.
+ */
+const char *sym_get_string_default(struct symbol *sym)
+{
+ struct property *prop;
+ struct symbol *ds;
+ const char *str;
+ tristate val;
+
+ sym_calc_visibility(sym);
+ sym_calc_value(modules_sym);
+ val = symbol_no.curr.tri;
+ str = symbol_empty.curr.val;
+
+ /* If symbol has a default value look it up */
+ prop = sym_get_default_prop(sym);
+ if (prop != NULL) {
+ switch (sym->type) {
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ /* The visibility may limit the value from yes => mod */
+ val = EXPR_AND(expr_calc_value(prop->expr), prop->visible.tri);
+ break;
+ default:
+ /*
+ * The following fails to handle the situation
+ * where a default value is further limited by
+ * the valid range.
+ */
+ ds = prop_get_symbol(prop);
+ if (ds != NULL) {
+ sym_calc_value(ds);
+ str = (const char *)ds->curr.val;
+ }
+ }
+ }
+
+ /* Handle select statements */
+ val = EXPR_OR(val, sym->rev_dep.tri);
+
+ /* transpose mod to yes if modules are not enabled */
+ if (val == mod)
+ if (!sym_is_choice_value(sym) && modules_sym->curr.tri == no)
+ val = yes;
+
+ /* transpose mod to yes if type is bool */
+ if (sym->type == S_BOOLEAN && val == mod)
+ val = yes;
+
+ switch (sym->type) {
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ switch (val) {
+ case no: return "n";
+ case mod: return "m";
+ case yes: return "y";
+ }
+ case S_INT:
+ case S_HEX:
+ return str;
+ case S_STRING:
+ return str;
+ case S_OTHER:
+ case S_UNKNOWN:
+ break;
+ }
+ return "";
+}
+
+const char *sym_get_string_value(struct symbol *sym)
+{
+ tristate val;
+
+ switch (sym->type) {
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ val = sym_get_tristate_value(sym);
+ switch (val) {
+ case no:
+ return "n";
+ case mod:
+ sym_calc_value(modules_sym);
+ return (modules_sym->curr.tri == no) ? "n" : "m";
+ case yes:
+ return "y";
+ }
+ break;
+ default:
+ ;
+ }
+ return (const char *)sym->curr.val;
+}
+
+bool sym_is_changable(struct symbol *sym)
+{
+ return sym->visible > sym->rev_dep.tri;
+}
+
+static unsigned strhash(const char *s)
+{
+ /* fnv32 hash */
+ unsigned hash = 2166136261U;
+ for (; *s; s++)
+ hash = (hash ^ *s) * 0x01000193;
+ return hash;
+}
+
+struct symbol *sym_lookup(const char *name, int flags)
+{
+ struct symbol *symbol;
+ char *new_name;
+ int hash;
+
+ if (name) {
+ if (name[0] && !name[1]) {
+ switch (name[0]) {
+ case 'y': return &symbol_yes;
+ case 'm': return &symbol_mod;
+ case 'n': return &symbol_no;
+ }
+ }
+ hash = strhash(name) % SYMBOL_HASHSIZE;
+
+ for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) {
+ if (symbol->name &&
+ !strcmp(symbol->name, name) &&
+ (flags ? symbol->flags & flags
+ : !(symbol->flags & (SYMBOL_CONST|SYMBOL_CHOICE))))
+ return symbol;
+ }
+ new_name = strdup(name);
+ } else {
+ new_name = NULL;
+ hash = 0;
+ }
+
+ symbol = xmalloc(sizeof(*symbol));
+ memset(symbol, 0, sizeof(*symbol));
+ symbol->name = new_name;
+ symbol->type = S_UNKNOWN;
+ symbol->flags |= flags;
+
+ symbol->next = symbol_hash[hash];
+ symbol_hash[hash] = symbol;
+
+ return symbol;
+}
+
+struct symbol *sym_find(const char *name)
+{
+ struct symbol *symbol = NULL;
+ int hash = 0;
+
+ if (!name)
+ return NULL;
+
+ if (name[0] && !name[1]) {
+ switch (name[0]) {
+ case 'y': return &symbol_yes;
+ case 'm': return &symbol_mod;
+ case 'n': return &symbol_no;
+ }
+ }
+ hash = strhash(name) % SYMBOL_HASHSIZE;
+
+ for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) {
+ if (symbol->name &&
+ !strcmp(symbol->name, name) &&
+ !(symbol->flags & SYMBOL_CONST))
+ break;
+ }
+
+ return symbol;
+}
+
+/*
+ * Expand symbol's names embedded in the string given in argument. Symbols'
+ * name to be expanded shall be prefixed by a '$'. Unknown symbol expands to
+ * the empty string.
+ */
+const char *sym_expand_string_value(const char *in)
+{
+ const char *src;
+ char *res;
+ size_t reslen;
+
+ reslen = strlen(in) + 1;
+ res = xmalloc(reslen);
+ res[0] = '\0';
+
+ while ((src = strchr(in, '$'))) {
+ char *p, name[SYMBOL_MAXLENGTH];
+ const char *symval = "";
+ struct symbol *sym;
+ size_t newlen;
+
+ strncat(res, in, src - in);
+ src++;
+
+ p = name;
+ while (isalnum(*src) || *src == '_')
+ *p++ = *src++;
+ *p = '\0';
+
+ sym = sym_find(name);
+ if (sym != NULL) {
+ sym_calc_value(sym);
+ symval = sym_get_string_value(sym);
+ }
+
+ newlen = strlen(res) + strlen(symval) + strlen(src) + 1;
+ if (newlen > reslen) {
+ reslen = newlen;
+ res = realloc(res, reslen);
+ }
+
+ strcat(res, symval);
+ in = src;
+ }
+ strcat(res, in);
+
+ return res;
+}
+
+const char *sym_escape_string_value(const char *in)
+{
+ const char *p;
+ size_t reslen;
+ char *res;
+ size_t l;
+
+ reslen = strlen(in) + strlen("\"\"") + 1;
+
+ p = in;
+ for (;;) {
+ l = strcspn(p, "\"\\");
+ p += l;
+
+ if (p[0] == '\0')
+ break;
+
+ reslen++;
+ p++;
+ }
+
+ res = xmalloc(reslen);
+ res[0] = '\0';
+
+ strcat(res, "\"");
+
+ p = in;
+ for (;;) {
+ l = strcspn(p, "\"\\");
+ strncat(res, p, l);
+ p += l;
+
+ if (p[0] == '\0')
+ break;
+
+ strcat(res, "\\");
+ strncat(res, p++, 1);
+ }
+
+ strcat(res, "\"");
+ return res;
+}
+
+struct sym_match {
+ struct symbol *sym;
+ off_t so, eo;
+};
+
+/* Compare matched symbols as thus:
+ * - first, symbols that match exactly
+ * - then, alphabetical sort
+ */
+static int sym_rel_comp(const void *sym1, const void *sym2)
+{
+ const struct sym_match *s1 = sym1;
+ const struct sym_match *s2 = sym2;
+ int exact1, exact2;
+
+ /* Exact match:
+ * - if matched length on symbol s1 is the length of that symbol,
+ * then this symbol should come first;
+ * - if matched length on symbol s2 is the length of that symbol,
+ * then this symbol should come first.
+ * Note: since the search can be a regexp, both symbols may match
+ * exactly; if this is the case, we can't decide which comes first,
+ * and we fallback to sorting alphabetically.
+ */
+ exact1 = (s1->eo - s1->so) == strlen(s1->sym->name);
+ exact2 = (s2->eo - s2->so) == strlen(s2->sym->name);
+ if (exact1 && !exact2)
+ return -1;
+ if (!exact1 && exact2)
+ return 1;
+
+ /* As a fallback, sort symbols alphabetically */
+ return strcmp(s1->sym->name, s2->sym->name);
+}
+
+struct symbol **sym_re_search(const char *pattern)
+{
+ struct symbol *sym, **sym_arr = NULL;
+ struct sym_match *sym_match_arr = NULL;
+ int i, cnt, size;
+ regex_t re;
+ regmatch_t match[1];
+
+ cnt = size = 0;
+ /* Skip if empty */
+ if (strlen(pattern) == 0)
+ return NULL;
+ if (regcomp(&re, pattern, REG_EXTENDED|REG_ICASE))
+ return NULL;
+
+ for_all_symbols(i, sym) {
+ if (sym->flags & SYMBOL_CONST || !sym->name)
+ continue;
+ if (regexec(&re, sym->name, 1, match, 0))
+ continue;
+ if (cnt >= size) {
+ void *tmp;
+ size += 16;
+ tmp = realloc(sym_match_arr, size * sizeof(struct sym_match));
+ if (!tmp)
+ goto sym_re_search_free;
+ sym_match_arr = tmp;
+ }
+ sym_calc_value(sym);
+ /* As regexec returned 0, we know we have a match, so
+ * we can use match[0].rm_[se]o without further checks
+ */
+ sym_match_arr[cnt].so = match[0].rm_so;
+ sym_match_arr[cnt].eo = match[0].rm_eo;
+ sym_match_arr[cnt++].sym = sym;
+ }
+ if (sym_match_arr) {
+ qsort(sym_match_arr, cnt, sizeof(struct sym_match), sym_rel_comp);
+ sym_arr = malloc((cnt+1) * sizeof(struct symbol));
+ if (!sym_arr)
+ goto sym_re_search_free;
+ for (i = 0; i < cnt; i++)
+ sym_arr[i] = sym_match_arr[i].sym;
+ sym_arr[cnt] = NULL;
+ }
+sym_re_search_free:
+ /* sym_match_arr can be NULL if no match, but free(NULL) is OK */
+ free(sym_match_arr);
+ regfree(&re);
+
+ return sym_arr;
+}
+
+/*
+ * When we check for recursive dependencies we use a stack to save
+ * current state so we can print out relevant info to user.
+ * The entries are located on the call stack so no need to free memory.
+ * Note insert() remove() must always match to properly clear the stack.
+ */
+static struct dep_stack {
+ struct dep_stack *prev, *next;
+ struct symbol *sym;
+ struct property *prop;
+ struct expr *expr;
+} *check_top;
+
+static void dep_stack_insert(struct dep_stack *stack, struct symbol *sym)
+{
+ memset(stack, 0, sizeof(*stack));
+ if (check_top)
+ check_top->next = stack;
+ stack->prev = check_top;
+ stack->sym = sym;
+ check_top = stack;
+}
+
+static void dep_stack_remove(void)
+{
+ check_top = check_top->prev;
+ if (check_top)
+ check_top->next = NULL;
+}
+
+/*
+ * Called when we have detected a recursive dependency.
+ * check_top point to the top of the stact so we use
+ * the ->prev pointer to locate the bottom of the stack.
+ */
+static void sym_check_print_recursive(struct symbol *last_sym)
+{
+ struct dep_stack *stack;
+ struct symbol *sym, *next_sym;
+ struct menu *menu = NULL;
+ struct property *prop;
+ struct dep_stack cv_stack;
+
+ if (sym_is_choice_value(last_sym)) {
+ dep_stack_insert(&cv_stack, last_sym);
+ last_sym = prop_get_symbol(sym_get_choice_prop(last_sym));
+ }
+
+ for (stack = check_top; stack != NULL; stack = stack->prev)
+ if (stack->sym == last_sym)
+ break;
+ if (!stack) {
+ fprintf(stderr, "unexpected recursive dependency error\n");
+ return;
+ }
+
+ for (; stack; stack = stack->next) {
+ sym = stack->sym;
+ next_sym = stack->next ? stack->next->sym : last_sym;
+ prop = stack->prop;
+ if (prop == NULL)
+ prop = stack->sym->prop;
+
+ /* for choice values find the menu entry (used below) */
+ if (sym_is_choice(sym) || sym_is_choice_value(sym)) {
+ for (prop = sym->prop; prop; prop = prop->next) {
+ menu = prop->menu;
+ if (prop->menu)
+ break;
+ }
+ }
+ if (stack->sym == last_sym)
+ fprintf(stderr, "%s:%d:error: recursive dependency detected!\n",
+ prop->file->name, prop->lineno);
+ if (stack->expr) {
+ fprintf(stderr, "%s:%d:\tsymbol %s %s value contains %s\n",
+ prop->file->name, prop->lineno,
+ sym->name ? sym->name : "<choice>",
+ prop_get_type_name(prop->type),
+ next_sym->name ? next_sym->name : "<choice>");
+ } else if (stack->prop) {
+ fprintf(stderr, "%s:%d:\tsymbol %s depends on %s\n",
+ prop->file->name, prop->lineno,
+ sym->name ? sym->name : "<choice>",
+ next_sym->name ? next_sym->name : "<choice>");
+ } else if (sym_is_choice(sym)) {
+ fprintf(stderr, "%s:%d:\tchoice %s contains symbol %s\n",
+ menu->file->name, menu->lineno,
+ sym->name ? sym->name : "<choice>",
+ next_sym->name ? next_sym->name : "<choice>");
+ } else if (sym_is_choice_value(sym)) {
+ fprintf(stderr, "%s:%d:\tsymbol %s is part of choice %s\n",
+ menu->file->name, menu->lineno,
+ sym->name ? sym->name : "<choice>",
+ next_sym->name ? next_sym->name : "<choice>");
+ } else {
+ fprintf(stderr, "%s:%d:\tsymbol %s is selected by %s\n",
+ prop->file->name, prop->lineno,
+ sym->name ? sym->name : "<choice>",
+ next_sym->name ? next_sym->name : "<choice>");
+ }
+ }
+
+ if (check_top == &cv_stack)
+ dep_stack_remove();
+}
+
+static struct symbol *sym_check_expr_deps(struct expr *e)
+{
+ struct symbol *sym;
+
+ if (!e)
+ return NULL;
+ switch (e->type) {
+ case E_OR:
+ case E_AND:
+ sym = sym_check_expr_deps(e->left.expr);
+ if (sym)
+ return sym;
+ return sym_check_expr_deps(e->right.expr);
+ case E_NOT:
+ return sym_check_expr_deps(e->left.expr);
+ case E_EQUAL:
+ case E_UNEQUAL:
+ sym = sym_check_deps(e->left.sym);
+ if (sym)
+ return sym;
+ return sym_check_deps(e->right.sym);
+ case E_SYMBOL:
+ return sym_check_deps(e->left.sym);
+ default:
+ break;
+ }
+ printf("Oops! How to check %d?\n", e->type);
+ return NULL;
+}
+
+/* return NULL when dependencies are OK */
+static struct symbol *sym_check_sym_deps(struct symbol *sym)
+{
+ struct symbol *sym2;
+ struct property *prop;
+ struct dep_stack stack;
+
+ dep_stack_insert(&stack, sym);
+
+ sym2 = sym_check_expr_deps(sym->rev_dep.expr);
+ if (sym2)
+ goto out;
+
+ for (prop = sym->prop; prop; prop = prop->next) {
+ if (prop->type == P_CHOICE || prop->type == P_SELECT)
+ continue;
+ stack.prop = prop;
+ sym2 = sym_check_expr_deps(prop->visible.expr);
+ if (sym2)
+ break;
+ if (prop->type != P_DEFAULT || sym_is_choice(sym))
+ continue;
+ stack.expr = prop->expr;
+ sym2 = sym_check_expr_deps(prop->expr);
+ if (sym2)
+ break;
+ stack.expr = NULL;
+ }
+
+out:
+ dep_stack_remove();
+
+ return sym2;
+}
+
+static struct symbol *sym_check_choice_deps(struct symbol *choice)
+{
+ struct symbol *sym, *sym2;
+ struct property *prop;
+ struct expr *e;
+ struct dep_stack stack;
+
+ dep_stack_insert(&stack, choice);
+
+ prop = sym_get_choice_prop(choice);
+ expr_list_for_each_sym(prop->expr, e, sym)
+ sym->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED);
+
+ choice->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED);
+ sym2 = sym_check_sym_deps(choice);
+ choice->flags &= ~SYMBOL_CHECK;
+ if (sym2)
+ goto out;
+
+ expr_list_for_each_sym(prop->expr, e, sym) {
+ sym2 = sym_check_sym_deps(sym);
+ if (sym2)
+ break;
+ }
+out:
+ expr_list_for_each_sym(prop->expr, e, sym)
+ sym->flags &= ~SYMBOL_CHECK;
+
+ if (sym2 && sym_is_choice_value(sym2) &&
+ prop_get_symbol(sym_get_choice_prop(sym2)) == choice)
+ sym2 = choice;
+
+ dep_stack_remove();
+
+ return sym2;
+}
+
+struct symbol *sym_check_deps(struct symbol *sym)
+{
+ struct symbol *sym2;
+ struct property *prop;
+
+ if (sym->flags & SYMBOL_CHECK) {
+ sym_check_print_recursive(sym);
+ return sym;
+ }
+ if (sym->flags & SYMBOL_CHECKED)
+ return NULL;
+
+ if (sym_is_choice_value(sym)) {
+ struct dep_stack stack;
+
+ /* for choice groups start the check with main choice symbol */
+ dep_stack_insert(&stack, sym);
+ prop = sym_get_choice_prop(sym);
+ sym2 = sym_check_deps(prop_get_symbol(prop));
+ dep_stack_remove();
+ } else if (sym_is_choice(sym)) {
+ sym2 = sym_check_choice_deps(sym);
+ } else {
+ sym->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED);
+ sym2 = sym_check_sym_deps(sym);
+ sym->flags &= ~SYMBOL_CHECK;
+ }
+
+ if (sym2 && sym2 == sym)
+ sym2 = NULL;
+
+ return sym2;
+}
+
+struct property *prop_alloc(enum prop_type type, struct symbol *sym)
+{
+ struct property *prop;
+ struct property **propp;
+
+ prop = xmalloc(sizeof(*prop));
+ memset(prop, 0, sizeof(*prop));
+ prop->type = type;
+ prop->sym = sym;
+ prop->file = current_file;
+ prop->lineno = zconf_lineno();
+
+ /* append property to the prop list of symbol */
+ if (sym) {
+ for (propp = &sym->prop; *propp; propp = &(*propp)->next)
+ ;
+ *propp = prop;
+ }
+
+ return prop;
+}
+
+struct symbol *prop_get_symbol(struct property *prop)
+{
+ if (prop->expr && (prop->expr->type == E_SYMBOL ||
+ prop->expr->type == E_LIST))
+ return prop->expr->left.sym;
+ return NULL;
+}
+
+const char *prop_get_type_name(enum prop_type type)
+{
+ switch (type) {
+ case P_PROMPT:
+ return "prompt";
+ case P_ENV:
+ return "env";
+ case P_COMMENT:
+ return "comment";
+ case P_MENU:
+ return "menu";
+ case P_DEFAULT:
+ return "default";
+ case P_CHOICE:
+ return "choice";
+ case P_SELECT:
+ return "select";
+ case P_RANGE:
+ return "range";
+ case P_SYMBOL:
+ return "symbol";
+ case P_UNKNOWN:
+ break;
+ }
+ return "unknown";
+}
+
+static void prop_add_env(const char *env)
+{
+ struct symbol *sym, *sym2;
+ struct property *prop;
+ char *p;
+
+ sym = current_entry->sym;
+ sym->flags |= SYMBOL_AUTO;
+ for_all_properties(sym, prop, P_ENV) {
+ sym2 = prop_get_symbol(prop);
+ if (strcmp(sym2->name, env))
+ menu_warn(current_entry, "redefining environment symbol from %s",
+ sym2->name);
+ return;
+ }
+
+ prop = prop_alloc(P_ENV, sym);
+ prop->expr = expr_alloc_symbol(sym_lookup(env, SYMBOL_CONST));
+
+ sym_env_list = expr_alloc_one(E_LIST, sym_env_list);
+ sym_env_list->right.sym = sym;
+
+ p = getenv(env);
+ if (p)
+ sym_add_default(sym, p);
+ else
+ menu_warn(current_entry, "environment variable %s undefined", env);
+}
diff --git a/scripts/kconfig/util.c b/scripts/kconfig/util.c
new file mode 100644
index 0000000..94f9c83
--- /dev/null
+++ b/scripts/kconfig/util.c
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2002-2005 Roman Zippel <zippel@linux-m68k.org>
+ * Copyright (C) 2002-2005 Sam Ravnborg <sam@ravnborg.org>
+ *
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include "lkc.h"
+
+/* file already present in list? If not add it */
+struct file *file_lookup(const char *name)
+{
+ struct file *file;
+ const char *file_name = sym_expand_string_value(name);
+
+ for (file = file_list; file; file = file->next) {
+ if (!strcmp(name, file->name)) {
+ free((void *)file_name);
+ return file;
+ }
+ }
+
+ file = xmalloc(sizeof(*file));
+ memset(file, 0, sizeof(*file));
+ file->name = file_name;
+ file->next = file_list;
+ file_list = file;
+ return file;
+}
+
+/* write a dependency file as used by kbuild to track dependencies */
+int file_write_dep(const char *name)
+{
+ struct symbol *sym, *env_sym;
+ struct expr *e;
+ struct file *file;
+ FILE *out;
+
+ if (!name)
+ name = ".kconfig.d";
+ out = fopen("..config.tmp", "w");
+ if (!out)
+ return 1;
+ fprintf(out, "deps_config := \\\n");
+ for (file = file_list; file; file = file->next) {
+ if (file->next)
+ fprintf(out, "\t%s \\\n", file->name);
+ else
+ fprintf(out, "\t%s\n", file->name);
+ }
+ fprintf(out, "\n%s: \\\n"
+ "\t$(deps_config)\n\n", conf_get_autoconfig_name());
+
+ expr_list_for_each_sym(sym_env_list, e, sym) {
+ struct property *prop;
+ const char *value;
+
+ prop = sym_get_env_prop(sym);
+ env_sym = prop_get_symbol(prop);
+ if (!env_sym)
+ continue;
+ value = getenv(env_sym->name);
+ if (!value)
+ value = "";
+ fprintf(out, "ifneq \"$(%s)\" \"%s\"\n", env_sym->name, value);
+ fprintf(out, "%s: FORCE\n", conf_get_autoconfig_name());
+ fprintf(out, "endif\n");
+ }
+
+ fprintf(out, "\n$(deps_config): ;\n");
+ fclose(out);
+ rename("..config.tmp", name);
+ return 0;
+}
+
+
+/* Allocate initial growable string */
+struct gstr str_new(void)
+{
+ struct gstr gs;
+ gs.s = xmalloc(sizeof(char) * 64);
+ gs.len = 64;
+ gs.max_width = 0;
+ strcpy(gs.s, "\0");
+ return gs;
+}
+
+/* Allocate and assign growable string */
+struct gstr str_assign(const char *s)
+{
+ struct gstr gs;
+ gs.s = strdup(s);
+ gs.len = strlen(s) + 1;
+ gs.max_width = 0;
+ return gs;
+}
+
+/* Free storage for growable string */
+void str_free(struct gstr *gs)
+{
+ if (gs->s)
+ free(gs->s);
+ gs->s = NULL;
+ gs->len = 0;
+}
+
+/* Append to growable string */
+void str_append(struct gstr *gs, const char *s)
+{
+ size_t l;
+ if (s) {
+ l = strlen(gs->s) + strlen(s) + 1;
+ if (l > gs->len) {
+ gs->s = realloc(gs->s, l);
+ gs->len = l;
+ }
+ strcat(gs->s, s);
+ }
+}
+
+/* Append printf formatted string to growable string */
+void str_printf(struct gstr *gs, const char *fmt, ...)
+{
+ va_list ap;
+ char s[10000]; /* big enough... */
+ va_start(ap, fmt);
+ vsnprintf(s, sizeof(s), fmt, ap);
+ str_append(gs, s);
+ va_end(ap);
+}
+
+/* Retrieve value of growable string */
+const char *str_get(struct gstr *gs)
+{
+ return gs->s;
+}
+
+void *xmalloc(size_t size)
+{
+ void *p = malloc(size);
+ if (p)
+ return p;
+ fprintf(stderr, "Out of memory.\n");
+ exit(1);
+}
+
+void *xcalloc(size_t nmemb, size_t size)
+{
+ void *p = calloc(nmemb, size);
+ if (p)
+ return p;
+ fprintf(stderr, "Out of memory.\n");
+ exit(1);
+}
diff --git a/scripts/kconfig/zconf.gperf b/scripts/kconfig/zconf.gperf
new file mode 100644
index 0000000..b6ac02d
--- /dev/null
+++ b/scripts/kconfig/zconf.gperf
@@ -0,0 +1,48 @@
+%language=ANSI-C
+%define hash-function-name kconf_id_hash
+%define lookup-function-name kconf_id_lookup
+%define string-pool-name kconf_id_strings
+%compare-strncmp
+%enum
+%pic
+%struct-type
+
+struct kconf_id;
+
+static const struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len);
+
+%%
+mainmenu, T_MAINMENU, TF_COMMAND
+menu, T_MENU, TF_COMMAND
+endmenu, T_ENDMENU, TF_COMMAND
+source, T_SOURCE, TF_COMMAND
+choice, T_CHOICE, TF_COMMAND
+endchoice, T_ENDCHOICE, TF_COMMAND
+comment, T_COMMENT, TF_COMMAND
+config, T_CONFIG, TF_COMMAND
+menuconfig, T_MENUCONFIG, TF_COMMAND
+help, T_HELP, TF_COMMAND
+if, T_IF, TF_COMMAND|TF_PARAM
+endif, T_ENDIF, TF_COMMAND
+depends, T_DEPENDS, TF_COMMAND
+optional, T_OPTIONAL, TF_COMMAND
+default, T_DEFAULT, TF_COMMAND, S_UNKNOWN
+prompt, T_PROMPT, TF_COMMAND
+tristate, T_TYPE, TF_COMMAND, S_TRISTATE
+def_tristate, T_DEFAULT, TF_COMMAND, S_TRISTATE
+bool, T_TYPE, TF_COMMAND, S_BOOLEAN
+boolean, T_TYPE, TF_COMMAND, S_BOOLEAN
+def_bool, T_DEFAULT, TF_COMMAND, S_BOOLEAN
+int, T_TYPE, TF_COMMAND, S_INT
+hex, T_TYPE, TF_COMMAND, S_HEX
+string, T_TYPE, TF_COMMAND, S_STRING
+select, T_SELECT, TF_COMMAND
+range, T_RANGE, TF_COMMAND
+visible, T_VISIBLE, TF_COMMAND
+option, T_OPTION, TF_COMMAND
+on, T_ON, TF_PARAM
+modules, T_OPT_MODULES, TF_OPTION
+defconfig_list, T_OPT_DEFCONFIG_LIST,TF_OPTION
+env, T_OPT_ENV, TF_OPTION
+allnoconfig_y, T_OPT_ALLNOCONFIG_Y,TF_OPTION
+%%
diff --git a/scripts/kconfig/zconf.hash.c_shipped b/scripts/kconfig/zconf.hash.c_shipped
new file mode 100644
index 0000000..c77a8ef
--- /dev/null
+++ b/scripts/kconfig/zconf.hash.c_shipped
@@ -0,0 +1,289 @@
+/* ANSI-C code produced by gperf version 3.0.4 */
+/* Command-line: gperf -t --output-file scripts/kconfig/zconf.hash.c_shipped -a -C -E -g -k '1,3,$' -p -t scripts/kconfig/zconf.gperf */
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+ && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+ && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+ && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+ && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+ && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+ && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+ && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+ && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+ && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+ && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+ && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+ && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+ && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+ && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+ && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+ && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+ && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+ && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+ && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+ && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+ && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646. */
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
+#endif
+
+#line 10 "scripts/kconfig/zconf.gperf"
+struct kconf_id;
+
+static const struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len);
+/* maximum key range = 71, duplicates = 0 */
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static unsigned int
+kconf_id_hash (register const char *str, register unsigned int len)
+{
+ static const unsigned char asso_values[] =
+ {
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 5, 25, 25,
+ 0, 0, 0, 5, 0, 0, 73, 73, 5, 0,
+ 10, 5, 45, 73, 20, 20, 0, 15, 15, 73,
+ 20, 5, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73
+ };
+ register int hval = len;
+
+ switch (hval)
+ {
+ default:
+ hval += asso_values[(unsigned char)str[2]];
+ /*FALLTHROUGH*/
+ case 2:
+ case 1:
+ hval += asso_values[(unsigned char)str[0]];
+ break;
+ }
+ return hval + asso_values[(unsigned char)str[len - 1]];
+}
+
+struct kconf_id_strings_t
+ {
+ char kconf_id_strings_str2[sizeof("if")];
+ char kconf_id_strings_str3[sizeof("int")];
+ char kconf_id_strings_str5[sizeof("endif")];
+ char kconf_id_strings_str7[sizeof("default")];
+ char kconf_id_strings_str8[sizeof("tristate")];
+ char kconf_id_strings_str9[sizeof("endchoice")];
+ char kconf_id_strings_str12[sizeof("def_tristate")];
+ char kconf_id_strings_str13[sizeof("def_bool")];
+ char kconf_id_strings_str14[sizeof("defconfig_list")];
+ char kconf_id_strings_str17[sizeof("on")];
+ char kconf_id_strings_str18[sizeof("optional")];
+ char kconf_id_strings_str21[sizeof("option")];
+ char kconf_id_strings_str22[sizeof("endmenu")];
+ char kconf_id_strings_str23[sizeof("mainmenu")];
+ char kconf_id_strings_str25[sizeof("menuconfig")];
+ char kconf_id_strings_str27[sizeof("modules")];
+ char kconf_id_strings_str28[sizeof("allnoconfig_y")];
+ char kconf_id_strings_str29[sizeof("menu")];
+ char kconf_id_strings_str31[sizeof("select")];
+ char kconf_id_strings_str32[sizeof("comment")];
+ char kconf_id_strings_str33[sizeof("env")];
+ char kconf_id_strings_str35[sizeof("range")];
+ char kconf_id_strings_str36[sizeof("choice")];
+ char kconf_id_strings_str39[sizeof("bool")];
+ char kconf_id_strings_str41[sizeof("source")];
+ char kconf_id_strings_str42[sizeof("visible")];
+ char kconf_id_strings_str43[sizeof("hex")];
+ char kconf_id_strings_str46[sizeof("config")];
+ char kconf_id_strings_str47[sizeof("boolean")];
+ char kconf_id_strings_str51[sizeof("string")];
+ char kconf_id_strings_str54[sizeof("help")];
+ char kconf_id_strings_str56[sizeof("prompt")];
+ char kconf_id_strings_str72[sizeof("depends")];
+ };
+static const struct kconf_id_strings_t kconf_id_strings_contents =
+ {
+ "if",
+ "int",
+ "endif",
+ "default",
+ "tristate",
+ "endchoice",
+ "def_tristate",
+ "def_bool",
+ "defconfig_list",
+ "on",
+ "optional",
+ "option",
+ "endmenu",
+ "mainmenu",
+ "menuconfig",
+ "modules",
+ "allnoconfig_y",
+ "menu",
+ "select",
+ "comment",
+ "env",
+ "range",
+ "choice",
+ "bool",
+ "source",
+ "visible",
+ "hex",
+ "config",
+ "boolean",
+ "string",
+ "help",
+ "prompt",
+ "depends"
+ };
+#define kconf_id_strings ((const char *) &kconf_id_strings_contents)
+#ifdef __GNUC__
+__inline
+#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
+#endif
+const struct kconf_id *
+kconf_id_lookup (register const char *str, register unsigned int len)
+{
+ enum
+ {
+ TOTAL_KEYWORDS = 33,
+ MIN_WORD_LENGTH = 2,
+ MAX_WORD_LENGTH = 14,
+ MIN_HASH_VALUE = 2,
+ MAX_HASH_VALUE = 72
+ };
+
+ static const struct kconf_id wordlist[] =
+ {
+ {-1}, {-1},
+#line 25 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str2, T_IF, TF_COMMAND|TF_PARAM},
+#line 36 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str3, T_TYPE, TF_COMMAND, S_INT},
+ {-1},
+#line 26 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str5, T_ENDIF, TF_COMMAND},
+ {-1},
+#line 29 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str7, T_DEFAULT, TF_COMMAND, S_UNKNOWN},
+#line 31 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str8, T_TYPE, TF_COMMAND, S_TRISTATE},
+#line 20 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str9, T_ENDCHOICE, TF_COMMAND},
+ {-1}, {-1},
+#line 32 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str12, T_DEFAULT, TF_COMMAND, S_TRISTATE},
+#line 35 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str13, T_DEFAULT, TF_COMMAND, S_BOOLEAN},
+#line 45 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str14, T_OPT_DEFCONFIG_LIST,TF_OPTION},
+ {-1}, {-1},
+#line 43 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str17, T_ON, TF_PARAM},
+#line 28 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str18, T_OPTIONAL, TF_COMMAND},
+ {-1}, {-1},
+#line 42 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str21, T_OPTION, TF_COMMAND},
+#line 17 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str22, T_ENDMENU, TF_COMMAND},
+#line 15 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str23, T_MAINMENU, TF_COMMAND},
+ {-1},
+#line 23 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str25, T_MENUCONFIG, TF_COMMAND},
+ {-1},
+#line 44 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str27, T_OPT_MODULES, TF_OPTION},
+#line 47 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str28, T_OPT_ALLNOCONFIG_Y,TF_OPTION},
+#line 16 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str29, T_MENU, TF_COMMAND},
+ {-1},
+#line 39 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str31, T_SELECT, TF_COMMAND},
+#line 21 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str32, T_COMMENT, TF_COMMAND},
+#line 46 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str33, T_OPT_ENV, TF_OPTION},
+ {-1},
+#line 40 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str35, T_RANGE, TF_COMMAND},
+#line 19 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str36, T_CHOICE, TF_COMMAND},
+ {-1}, {-1},
+#line 33 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str39, T_TYPE, TF_COMMAND, S_BOOLEAN},
+ {-1},
+#line 18 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str41, T_SOURCE, TF_COMMAND},
+#line 41 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str42, T_VISIBLE, TF_COMMAND},
+#line 37 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str43, T_TYPE, TF_COMMAND, S_HEX},
+ {-1}, {-1},
+#line 22 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str46, T_CONFIG, TF_COMMAND},
+#line 34 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str47, T_TYPE, TF_COMMAND, S_BOOLEAN},
+ {-1}, {-1}, {-1},
+#line 38 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str51, T_TYPE, TF_COMMAND, S_STRING},
+ {-1}, {-1},
+#line 24 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str54, T_HELP, TF_COMMAND},
+ {-1},
+#line 30 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str56, T_PROMPT, TF_COMMAND},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+#line 27 "scripts/kconfig/zconf.gperf"
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str72, T_DEPENDS, TF_COMMAND}
+ };
+
+ if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+ {
+ register int key = kconf_id_hash (str, len);
+
+ if (key <= MAX_HASH_VALUE && key >= 0)
+ {
+ register int o = wordlist[key].name;
+ if (o >= 0)
+ {
+ register const char *s = o + kconf_id_strings;
+
+ if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
+ return &wordlist[key];
+ }
+ }
+ }
+ return 0;
+}
+#line 48 "scripts/kconfig/zconf.gperf"
+
diff --git a/scripts/kconfig/zconf.l b/scripts/kconfig/zconf.l
new file mode 100644
index 0000000..6c62d93
--- /dev/null
+++ b/scripts/kconfig/zconf.l
@@ -0,0 +1,363 @@
+%option nostdinit noyywrap never-interactive full ecs
+%option 8bit nodefault perf-report perf-report
+%option noinput
+%x COMMAND HELP STRING PARAM
+%{
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "lkc.h"
+
+#define START_STRSIZE 16
+
+static struct {
+ struct file *file;
+ int lineno;
+} current_pos;
+
+static char *text;
+static int text_size, text_asize;
+
+struct buffer {
+ struct buffer *parent;
+ YY_BUFFER_STATE state;
+};
+
+struct buffer *current_buf;
+
+static int last_ts, first_ts;
+
+static void zconf_endhelp(void);
+static void zconf_endfile(void);
+
+static void new_string(void)
+{
+ text = xmalloc(START_STRSIZE);
+ text_asize = START_STRSIZE;
+ text_size = 0;
+ *text = 0;
+}
+
+static void append_string(const char *str, int size)
+{
+ int new_size = text_size + size + 1;
+ if (new_size > text_asize) {
+ new_size += START_STRSIZE - 1;
+ new_size &= -START_STRSIZE;
+ text = realloc(text, new_size);
+ text_asize = new_size;
+ }
+ memcpy(text + text_size, str, size);
+ text_size += size;
+ text[text_size] = 0;
+}
+
+static void alloc_string(const char *str, int size)
+{
+ text = xmalloc(size + 1);
+ memcpy(text, str, size);
+ text[size] = 0;
+}
+%}
+
+n [A-Za-z0-9_]
+
+%%
+ int str = 0;
+ int ts, i;
+
+[ \t]*#.*\n |
+[ \t]*\n {
+ current_file->lineno++;
+ return T_EOL;
+}
+[ \t]*#.*
+
+
+[ \t]+ {
+ BEGIN(COMMAND);
+}
+
+. {
+ unput(yytext[0]);
+ BEGIN(COMMAND);
+}
+
+
+<COMMAND>{
+ {n}+ {
+ const struct kconf_id *id = kconf_id_lookup(yytext, yyleng);
+ BEGIN(PARAM);
+ current_pos.file = current_file;
+ current_pos.lineno = current_file->lineno;
+ if (id && id->flags & TF_COMMAND) {
+ zconflval.id = id;
+ return id->token;
+ }
+ alloc_string(yytext, yyleng);
+ zconflval.string = text;
+ return T_WORD;
+ }
+ .
+ \n {
+ BEGIN(INITIAL);
+ current_file->lineno++;
+ return T_EOL;
+ }
+}
+
+<PARAM>{
+ "&&" return T_AND;
+ "||" return T_OR;
+ "(" return T_OPEN_PAREN;
+ ")" return T_CLOSE_PAREN;
+ "!" return T_NOT;
+ "=" return T_EQUAL;
+ "!=" return T_UNEQUAL;
+ \"|\' {
+ str = yytext[0];
+ new_string();
+ BEGIN(STRING);
+ }
+ \n BEGIN(INITIAL); current_file->lineno++; return T_EOL;
+ --- /* ignore */
+ ({n}|[-/.])+ {
+ const struct kconf_id *id = kconf_id_lookup(yytext, yyleng);
+ if (id && id->flags & TF_PARAM) {
+ zconflval.id = id;
+ return id->token;
+ }
+ alloc_string(yytext, yyleng);
+ zconflval.string = text;
+ return T_WORD;
+ }
+ #.* /* comment */
+ \\\n current_file->lineno++;
+ .
+ <<EOF>> {
+ BEGIN(INITIAL);
+ }
+}
+
+<STRING>{
+ [^'"\\\n]+/\n {
+ append_string(yytext, yyleng);
+ zconflval.string = text;
+ return T_WORD_QUOTE;
+ }
+ [^'"\\\n]+ {
+ append_string(yytext, yyleng);
+ }
+ \\.?/\n {
+ append_string(yytext + 1, yyleng - 1);
+ zconflval.string = text;
+ return T_WORD_QUOTE;
+ }
+ \\.? {
+ append_string(yytext + 1, yyleng - 1);
+ }
+ \'|\" {
+ if (str == yytext[0]) {
+ BEGIN(PARAM);
+ zconflval.string = text;
+ return T_WORD_QUOTE;
+ } else
+ append_string(yytext, 1);
+ }
+ \n {
+ printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno());
+ current_file->lineno++;
+ BEGIN(INITIAL);
+ return T_EOL;
+ }
+ <<EOF>> {
+ BEGIN(INITIAL);
+ }
+}
+
+<HELP>{
+ [ \t]+ {
+ ts = 0;
+ for (i = 0; i < yyleng; i++) {
+ if (yytext[i] == '\t')
+ ts = (ts & ~7) + 8;
+ else
+ ts++;
+ }
+ last_ts = ts;
+ if (first_ts) {
+ if (ts < first_ts) {
+ zconf_endhelp();
+ return T_HELPTEXT;
+ }
+ ts -= first_ts;
+ while (ts > 8) {
+ append_string(" ", 8);
+ ts -= 8;
+ }
+ append_string(" ", ts);
+ }
+ }
+ [ \t]*\n/[^ \t\n] {
+ current_file->lineno++;
+ zconf_endhelp();
+ return T_HELPTEXT;
+ }
+ [ \t]*\n {
+ current_file->lineno++;
+ append_string("\n", 1);
+ }
+ [^ \t\n].* {
+ while (yyleng) {
+ if ((yytext[yyleng-1] != ' ') && (yytext[yyleng-1] != '\t'))
+ break;
+ yyleng--;
+ }
+ append_string(yytext, yyleng);
+ if (!first_ts)
+ first_ts = last_ts;
+ }
+ <<EOF>> {
+ zconf_endhelp();
+ return T_HELPTEXT;
+ }
+}
+
+<<EOF>> {
+ if (current_file) {
+ zconf_endfile();
+ return T_EOL;
+ }
+ fclose(yyin);
+ yyterminate();
+}
+
+%%
+void zconf_starthelp(void)
+{
+ new_string();
+ last_ts = first_ts = 0;
+ BEGIN(HELP);
+}
+
+static void zconf_endhelp(void)
+{
+ zconflval.string = text;
+ BEGIN(INITIAL);
+}
+
+
+/*
+ * Try to open specified file with following names:
+ * ./name
+ * $(srctree)/name
+ * The latter is used when srctree is separate from objtree
+ * when compiling the kernel.
+ * Return NULL if file is not found.
+ */
+FILE *zconf_fopen(const char *name)
+{
+ char *env, fullname[PATH_MAX+1];
+ FILE *f;
+
+ f = fopen(name, "r");
+ if (!f && name != NULL && name[0] != '/') {
+ env = getenv(SRCTREE);
+ if (env) {
+ sprintf(fullname, "%s/%s", env, name);
+ f = fopen(fullname, "r");
+ }
+ }
+ return f;
+}
+
+void zconf_initscan(const char *name)
+{
+ yyin = zconf_fopen(name);
+ if (!yyin) {
+ printf("can't find file %s\n", name);
+ exit(1);
+ }
+
+ current_buf = xmalloc(sizeof(*current_buf));
+ memset(current_buf, 0, sizeof(*current_buf));
+
+ current_file = file_lookup(name);
+ current_file->lineno = 1;
+}
+
+void zconf_nextfile(const char *name)
+{
+ struct file *iter;
+ struct file *file = file_lookup(name);
+ struct buffer *buf = xmalloc(sizeof(*buf));
+ memset(buf, 0, sizeof(*buf));
+
+ current_buf->state = YY_CURRENT_BUFFER;
+ yyin = zconf_fopen(file->name);
+ if (!yyin) {
+ printf("%s:%d: can't open file \"%s\"\n",
+ zconf_curname(), zconf_lineno(), file->name);
+ exit(1);
+ }
+ yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE));
+ buf->parent = current_buf;
+ current_buf = buf;
+
+ for (iter = current_file->parent; iter; iter = iter->parent ) {
+ if (!strcmp(current_file->name,iter->name) ) {
+ printf("%s:%d: recursive inclusion detected. "
+ "Inclusion path:\n current file : '%s'\n",
+ zconf_curname(), zconf_lineno(),
+ zconf_curname());
+ iter = current_file->parent;
+ while (iter && \
+ strcmp(iter->name,current_file->name)) {
+ printf(" included from: '%s:%d'\n",
+ iter->name, iter->lineno-1);
+ iter = iter->parent;
+ }
+ if (iter)
+ printf(" included from: '%s:%d'\n",
+ iter->name, iter->lineno+1);
+ exit(1);
+ }
+ }
+ file->lineno = 1;
+ file->parent = current_file;
+ current_file = file;
+}
+
+static void zconf_endfile(void)
+{
+ struct buffer *parent;
+
+ current_file = current_file->parent;
+
+ parent = current_buf->parent;
+ if (parent) {
+ fclose(yyin);
+ yy_delete_buffer(YY_CURRENT_BUFFER);
+ yy_switch_to_buffer(parent->state);
+ }
+ free(current_buf);
+ current_buf = parent;
+}
+
+int zconf_lineno(void)
+{
+ return current_pos.lineno;
+}
+
+const char *zconf_curname(void)
+{
+ return current_pos.file ? current_pos.file->name : "<none>";
+}
diff --git a/scripts/kconfig/zconf.lex.c_shipped b/scripts/kconfig/zconf.lex.c_shipped
new file mode 100644
index 0000000..349a7f2
--- /dev/null
+++ b/scripts/kconfig/zconf.lex.c_shipped
@@ -0,0 +1,2420 @@
+
+#line 3 "scripts/kconfig/zconf.lex.c_shipped"
+
+#define YY_INT_ALIGNED short int
+
+/* A lexical scanner generated by flex */
+
+#define yy_create_buffer zconf_create_buffer
+#define yy_delete_buffer zconf_delete_buffer
+#define yy_flex_debug zconf_flex_debug
+#define yy_init_buffer zconf_init_buffer
+#define yy_flush_buffer zconf_flush_buffer
+#define yy_load_buffer_state zconf_load_buffer_state
+#define yy_switch_to_buffer zconf_switch_to_buffer
+#define yyin zconfin
+#define yyleng zconfleng
+#define yylex zconflex
+#define yylineno zconflineno
+#define yyout zconfout
+#define yyrestart zconfrestart
+#define yytext zconftext
+#define yywrap zconfwrap
+#define yyalloc zconfalloc
+#define yyrealloc zconfrealloc
+#define yyfree zconffree
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 35
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+/* First, we deal with platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types.
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t;
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+#endif /* ! C99 */
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX (4294967295U)
+#endif
+
+#endif /* ! FLEXINT_H */
+
+#ifdef __cplusplus
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else /* ! __cplusplus */
+
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
+
+#define YY_USE_CONST
+
+#endif /* defined (__STDC__) */
+#endif /* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index. If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* Enter a start condition. This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN (yy_start) = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state. The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START (((yy_start) - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE zconfrestart(zconfin )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#define YY_BUF_SIZE 16384
+#endif
+
+/* The state buf must be large enough to hold one state per character in the main buffer.
+ */
+#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+extern int zconfleng;
+
+extern FILE *zconfin, *zconfout;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+ #define YY_LESS_LINENO(n)
+
+/* Return all but the first "n" matched characters back to the input stream. */
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up zconftext. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ *yy_cp = (yy_hold_char); \
+ YY_RESTORE_YY_MORE_OFFSET \
+ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
+ YY_DO_BEFORE_ACTION; /* set up zconftext again */ \
+ } \
+ while ( 0 )
+
+#define unput(c) yyunput( c, (yytext_ptr) )
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+struct yy_buffer_state
+ {
+ FILE *yy_input_file;
+
+ char *yy_ch_buf; /* input buffer */
+ char *yy_buf_pos; /* current position in input buffer */
+
+ /* Size of input buffer in bytes, not including room for EOB
+ * characters.
+ */
+ yy_size_t yy_buf_size;
+
+ /* Number of characters read into yy_ch_buf, not including EOB
+ * characters.
+ */
+ int yy_n_chars;
+
+ /* Whether we "own" the buffer - i.e., we know we created it,
+ * and can realloc() it to grow it, and should free() it to
+ * delete it.
+ */
+ int yy_is_our_buffer;
+
+ /* Whether this is an "interactive" input source; if so, and
+ * if we're using stdio for input, then we want to use getc()
+ * instead of fread(), to make sure we stop fetching input after
+ * each newline.
+ */
+ int yy_is_interactive;
+
+ /* Whether we're considered to be at the beginning of a line.
+ * If so, '^' rules will be active on the next match, otherwise
+ * not.
+ */
+ int yy_at_bol;
+
+ int yy_bs_lineno; /**< The line count. */
+ int yy_bs_column; /**< The column count. */
+
+ /* Whether to try to fill the input buffer when we reach the
+ * end of it.
+ */
+ int yy_fill_buffer;
+
+ int yy_buffer_status;
+
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+ /* When an EOF's been seen but there's still some text to process
+ * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+ * shouldn't try reading from the input source any more. We might
+ * still have a bunch of tokens to match, though, because of
+ * possible backing-up.
+ *
+ * When we actually see the EOF, we change the status to "new"
+ * (via zconfrestart()), so that the user can continue scanning by
+ * just pointing zconfin at a new input file.
+ */
+#define YY_BUFFER_EOF_PENDING 2
+
+ };
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+/* Stack of input buffers. */
+static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
+static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
+static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ *
+ * Returns the top of the stack, or NULL.
+ */
+#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
+ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
+ : NULL)
+
+/* Same as previous macro, but useful when we know that the buffer stack is not
+ * NULL or when we need an lvalue. For internal use only.
+ */
+#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
+
+/* yy_hold_char holds the character lost when zconftext is formed. */
+static char yy_hold_char;
+static int yy_n_chars; /* number of characters read into yy_ch_buf */
+int zconfleng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 0; /* whether we need to initialize */
+static int yy_start = 0; /* start state number */
+
+/* Flag which is used to allow zconfwrap()'s to do buffer switches
+ * instead of setting up a fresh zconfin. A bit of a hack ...
+ */
+static int yy_did_buffer_switch_on_eof;
+
+void zconfrestart (FILE *input_file );
+void zconf_switch_to_buffer (YY_BUFFER_STATE new_buffer );
+YY_BUFFER_STATE zconf_create_buffer (FILE *file,int size );
+void zconf_delete_buffer (YY_BUFFER_STATE b );
+void zconf_flush_buffer (YY_BUFFER_STATE b );
+void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer );
+void zconfpop_buffer_state (void );
+
+static void zconfensure_buffer_stack (void );
+static void zconf_load_buffer_state (void );
+static void zconf_init_buffer (YY_BUFFER_STATE b,FILE *file );
+
+#define YY_FLUSH_BUFFER zconf_flush_buffer(YY_CURRENT_BUFFER )
+
+YY_BUFFER_STATE zconf_scan_buffer (char *base,yy_size_t size );
+YY_BUFFER_STATE zconf_scan_string (yyconst char *yy_str );
+YY_BUFFER_STATE zconf_scan_bytes (yyconst char *bytes,int len );
+
+void *zconfalloc (yy_size_t );
+void *zconfrealloc (void *,yy_size_t );
+void zconffree (void * );
+
+#define yy_new_buffer zconf_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){ \
+ zconfensure_buffer_stack (); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ zconf_create_buffer(zconfin,YY_BUF_SIZE ); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
+ }
+
+#define yy_set_bol(at_bol) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){\
+ zconfensure_buffer_stack (); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ zconf_create_buffer(zconfin,YY_BUF_SIZE ); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
+ }
+
+#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
+
+/* Begin user sect3 */
+
+#define zconfwrap(n) 1
+#define YY_SKIP_YYWRAP
+
+typedef unsigned char YY_CHAR;
+
+FILE *zconfin = (FILE *) 0, *zconfout = (FILE *) 0;
+
+typedef int yy_state_type;
+
+extern int zconflineno;
+
+int zconflineno = 1;
+
+extern char *zconftext;
+#define yytext_ptr zconftext
+static yyconst flex_int16_t yy_nxt[][17] =
+ {
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0
+ },
+
+ {
+ 11, 12, 13, 14, 12, 12, 15, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12
+ },
+
+ {
+ 11, 12, 13, 14, 12, 12, 15, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12
+ },
+
+ {
+ 11, 16, 16, 17, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 18, 16, 16, 16
+ },
+
+ {
+ 11, 16, 16, 17, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 18, 16, 16, 16
+
+ },
+
+ {
+ 11, 19, 20, 21, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19
+ },
+
+ {
+ 11, 19, 20, 21, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19
+ },
+
+ {
+ 11, 22, 22, 23, 22, 24, 22, 22, 24, 22,
+ 22, 22, 22, 22, 22, 25, 22
+ },
+
+ {
+ 11, 22, 22, 23, 22, 24, 22, 22, 24, 22,
+ 22, 22, 22, 22, 22, 25, 22
+ },
+
+ {
+ 11, 26, 26, 27, 28, 29, 30, 31, 29, 32,
+ 33, 34, 35, 35, 36, 37, 38
+
+ },
+
+ {
+ 11, 26, 26, 27, 28, 29, 30, 31, 29, 32,
+ 33, 34, 35, 35, 36, 37, 38
+ },
+
+ {
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11
+ },
+
+ {
+ 11, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12
+ },
+
+ {
+ 11, -13, 39, 40, -13, -13, 41, -13, -13, -13,
+ -13, -13, -13, -13, -13, -13, -13
+ },
+
+ {
+ 11, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14
+
+ },
+
+ {
+ 11, 42, 42, 43, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42
+ },
+
+ {
+ 11, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16
+ },
+
+ {
+ 11, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17
+ },
+
+ {
+ 11, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, 44, -18, -18, -18
+ },
+
+ {
+ 11, 45, 45, -19, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45
+
+ },
+
+ {
+ 11, -20, 46, 47, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20
+ },
+
+ {
+ 11, 48, -21, -21, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48
+ },
+
+ {
+ 11, 49, 49, 50, 49, -22, 49, 49, -22, 49,
+ 49, 49, 49, 49, 49, -22, 49
+ },
+
+ {
+ 11, -23, -23, -23, -23, -23, -23, -23, -23, -23,
+ -23, -23, -23, -23, -23, -23, -23
+ },
+
+ {
+ 11, -24, -24, -24, -24, -24, -24, -24, -24, -24,
+ -24, -24, -24, -24, -24, -24, -24
+
+ },
+
+ {
+ 11, 51, 51, 52, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51
+ },
+
+ {
+ 11, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26
+ },
+
+ {
+ 11, -27, -27, -27, -27, -27, -27, -27, -27, -27,
+ -27, -27, -27, -27, -27, -27, -27
+ },
+
+ {
+ 11, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, 53, -28, -28
+ },
+
+ {
+ 11, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29
+
+ },
+
+ {
+ 11, 54, 54, -30, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54
+ },
+
+ {
+ 11, -31, -31, -31, -31, -31, -31, 55, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31
+ },
+
+ {
+ 11, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32
+ },
+
+ {
+ 11, -33, -33, -33, -33, -33, -33, -33, -33, -33,
+ -33, -33, -33, -33, -33, -33, -33
+ },
+
+ {
+ 11, -34, -34, -34, -34, -34, -34, -34, -34, -34,
+ -34, 56, 57, 57, -34, -34, -34
+
+ },
+
+ {
+ 11, -35, -35, -35, -35, -35, -35, -35, -35, -35,
+ -35, 57, 57, 57, -35, -35, -35
+ },
+
+ {
+ 11, -36, -36, -36, -36, -36, -36, -36, -36, -36,
+ -36, -36, -36, -36, -36, -36, -36
+ },
+
+ {
+ 11, -37, -37, 58, -37, -37, -37, -37, -37, -37,
+ -37, -37, -37, -37, -37, -37, -37
+ },
+
+ {
+ 11, -38, -38, -38, -38, -38, -38, -38, -38, -38,
+ -38, -38, -38, -38, -38, -38, 59
+ },
+
+ {
+ 11, -39, 39, 40, -39, -39, 41, -39, -39, -39,
+ -39, -39, -39, -39, -39, -39, -39
+
+ },
+
+ {
+ 11, -40, -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40
+ },
+
+ {
+ 11, 42, 42, 43, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42
+ },
+
+ {
+ 11, 42, 42, 43, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42
+ },
+
+ {
+ 11, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+ -43, -43, -43, -43, -43, -43, -43
+ },
+
+ {
+ 11, -44, -44, -44, -44, -44, -44, -44, -44, -44,
+ -44, -44, -44, 44, -44, -44, -44
+
+ },
+
+ {
+ 11, 45, 45, -45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45
+ },
+
+ {
+ 11, -46, 46, 47, -46, -46, -46, -46, -46, -46,
+ -46, -46, -46, -46, -46, -46, -46
+ },
+
+ {
+ 11, 48, -47, -47, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48
+ },
+
+ {
+ 11, -48, -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48
+ },
+
+ {
+ 11, 49, 49, 50, 49, -49, 49, 49, -49, 49,
+ 49, 49, 49, 49, 49, -49, 49
+
+ },
+
+ {
+ 11, -50, -50, -50, -50, -50, -50, -50, -50, -50,
+ -50, -50, -50, -50, -50, -50, -50
+ },
+
+ {
+ 11, -51, -51, 52, -51, -51, -51, -51, -51, -51,
+ -51, -51, -51, -51, -51, -51, -51
+ },
+
+ {
+ 11, -52, -52, -52, -52, -52, -52, -52, -52, -52,
+ -52, -52, -52, -52, -52, -52, -52
+ },
+
+ {
+ 11, -53, -53, -53, -53, -53, -53, -53, -53, -53,
+ -53, -53, -53, -53, -53, -53, -53
+ },
+
+ {
+ 11, 54, 54, -54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54
+
+ },
+
+ {
+ 11, -55, -55, -55, -55, -55, -55, -55, -55, -55,
+ -55, -55, -55, -55, -55, -55, -55
+ },
+
+ {
+ 11, -56, -56, -56, -56, -56, -56, -56, -56, -56,
+ -56, 60, 57, 57, -56, -56, -56
+ },
+
+ {
+ 11, -57, -57, -57, -57, -57, -57, -57, -57, -57,
+ -57, 57, 57, 57, -57, -57, -57
+ },
+
+ {
+ 11, -58, -58, -58, -58, -58, -58, -58, -58, -58,
+ -58, -58, -58, -58, -58, -58, -58
+ },
+
+ {
+ 11, -59, -59, -59, -59, -59, -59, -59, -59, -59,
+ -59, -59, -59, -59, -59, -59, -59
+
+ },
+
+ {
+ 11, -60, -60, -60, -60, -60, -60, -60, -60, -60,
+ -60, 57, 57, 57, -60, -60, -60
+ },
+
+ } ;
+
+static yy_state_type yy_get_previous_state (void );
+static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
+static int yy_get_next_buffer (void );
+static void yy_fatal_error (yyconst char msg[] );
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up zconftext.
+ */
+#define YY_DO_BEFORE_ACTION \
+ (yytext_ptr) = yy_bp; \
+ zconfleng = (size_t) (yy_cp - yy_bp); \
+ (yy_hold_char) = *yy_cp; \
+ *yy_cp = '\0'; \
+ (yy_c_buf_p) = yy_cp;
+
+#define YY_NUM_RULES 33
+#define YY_END_OF_BUFFER 34
+/* This struct is not used in this scanner,
+ but its presence is necessary. */
+struct yy_trans_info
+ {
+ flex_int32_t yy_verify;
+ flex_int32_t yy_nxt;
+ };
+static yyconst flex_int16_t yy_accept[61] =
+ { 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 34, 5, 4, 2, 3, 7, 8, 6, 32, 29,
+ 31, 24, 28, 27, 26, 22, 17, 13, 16, 20,
+ 22, 11, 12, 19, 19, 14, 22, 22, 4, 2,
+ 3, 3, 1, 6, 32, 29, 31, 30, 24, 23,
+ 26, 25, 15, 20, 9, 19, 19, 21, 10, 18
+ } ;
+
+static yyconst flex_int32_t yy_ec[256] =
+ { 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 2, 4, 5, 6, 1, 1, 7, 8, 9,
+ 10, 1, 1, 1, 11, 12, 12, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 1, 1, 1,
+ 14, 1, 1, 1, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 1, 15, 1, 1, 13, 1, 13, 13, 13, 13,
+
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 1, 16, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1
+ } ;
+
+extern int zconf_flex_debug;
+int zconf_flex_debug = 0;
+
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+char *zconftext;
+#define YY_NO_INPUT 1
+
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "lkc.h"
+
+#define START_STRSIZE 16
+
+static struct {
+ struct file *file;
+ int lineno;
+} current_pos;
+
+static char *text;
+static int text_size, text_asize;
+
+struct buffer {
+ struct buffer *parent;
+ YY_BUFFER_STATE state;
+};
+
+struct buffer *current_buf;
+
+static int last_ts, first_ts;
+
+static void zconf_endhelp(void);
+static void zconf_endfile(void);
+
+static void new_string(void)
+{
+ text = xmalloc(START_STRSIZE);
+ text_asize = START_STRSIZE;
+ text_size = 0;
+ *text = 0;
+}
+
+static void append_string(const char *str, int size)
+{
+ int new_size = text_size + size + 1;
+ if (new_size > text_asize) {
+ new_size += START_STRSIZE - 1;
+ new_size &= -START_STRSIZE;
+ text = realloc(text, new_size);
+ text_asize = new_size;
+ }
+ memcpy(text + text_size, str, size);
+ text_size += size;
+ text[text_size] = 0;
+}
+
+static void alloc_string(const char *str, int size)
+{
+ text = xmalloc(size + 1);
+ memcpy(text, str, size);
+ text[size] = 0;
+}
+
+#define INITIAL 0
+#define COMMAND 1
+#define HELP 2
+#define STRING 3
+#define PARAM 4
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#include <unistd.h>
+#endif
+
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+static int yy_init_globals (void );
+
+/* Accessor methods to globals.
+ These are made visible to non-reentrant scanners for convenience. */
+
+int zconflex_destroy (void );
+
+int zconfget_debug (void );
+
+void zconfset_debug (int debug_flag );
+
+YY_EXTRA_TYPE zconfget_extra (void );
+
+void zconfset_extra (YY_EXTRA_TYPE user_defined );
+
+FILE *zconfget_in (void );
+
+void zconfset_in (FILE * in_str );
+
+FILE *zconfget_out (void );
+
+void zconfset_out (FILE * out_str );
+
+int zconfget_leng (void );
+
+char *zconfget_text (void );
+
+int zconfget_lineno (void );
+
+void zconfset_lineno (int line_number );
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int zconfwrap (void );
+#else
+extern int zconfwrap (void );
+#endif
+#endif
+
+ static void yyunput (int c,char *buf_ptr );
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char *,yyconst char *,int );
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * );
+#endif
+
+#ifndef YY_NO_INPUT
+
+#ifdef __cplusplus
+static int yyinput (void );
+#else
+static int input (void );
+#endif
+
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO do { if (fwrite( zconftext, zconfleng, 1, zconfout )) {} } while (0)
+#endif
+
+/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+ errno=0; \
+ while ( (result = read( fileno(zconfin), (char *) buf, max_size )) < 0 ) \
+ { \
+ if( errno != EINTR) \
+ { \
+ YY_FATAL_ERROR( "input in flex scanner failed" ); \
+ break; \
+ } \
+ errno=0; \
+ clearerr(zconfin); \
+ }\
+\
+
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
+#endif
+
+/* end tables serialization structures and prototypes */
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int zconflex (void);
+
+#define YY_DECL int zconflex (void)
+#endif /* !YY_DECL */
+
+/* Code executed at the beginning of each rule, after zconftext and zconfleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+ YY_USER_ACTION
+
+/** The main scanner function which does all the work.
+ */
+YY_DECL
+{
+ register yy_state_type yy_current_state;
+ register char *yy_cp, *yy_bp;
+ register int yy_act;
+
+ int str = 0;
+ int ts, i;
+
+ if ( !(yy_init) )
+ {
+ (yy_init) = 1;
+
+#ifdef YY_USER_INIT
+ YY_USER_INIT;
+#endif
+
+ if ( ! (yy_start) )
+ (yy_start) = 1; /* first start state */
+
+ if ( ! zconfin )
+ zconfin = stdin;
+
+ if ( ! zconfout )
+ zconfout = stdout;
+
+ if ( ! YY_CURRENT_BUFFER ) {
+ zconfensure_buffer_stack ();
+ YY_CURRENT_BUFFER_LVALUE =
+ zconf_create_buffer(zconfin,YY_BUF_SIZE );
+ }
+
+ zconf_load_buffer_state( );
+ }
+
+ while ( 1 ) /* loops until end-of-file is reached */
+ {
+ yy_cp = (yy_c_buf_p);
+
+ /* Support of zconftext. */
+ *yy_cp = (yy_hold_char);
+
+ /* yy_bp points to the position in yy_ch_buf of the start of
+ * the current run.
+ */
+ yy_bp = yy_cp;
+
+ yy_current_state = (yy_start);
+yy_match:
+ while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 )
+ ++yy_cp;
+
+ yy_current_state = -yy_current_state;
+
+yy_find_action:
+ yy_act = yy_accept[yy_current_state];
+
+ YY_DO_BEFORE_ACTION;
+
+do_action: /* This label is used only to access EOF actions. */
+
+ switch ( yy_act )
+ { /* beginning of action switch */
+case 1:
+/* rule 1 can match eol */
+case 2:
+/* rule 2 can match eol */
+YY_RULE_SETUP
+{
+ current_file->lineno++;
+ return T_EOL;
+}
+ YY_BREAK
+case 3:
+YY_RULE_SETUP
+
+ YY_BREAK
+case 4:
+YY_RULE_SETUP
+{
+ BEGIN(COMMAND);
+}
+ YY_BREAK
+case 5:
+YY_RULE_SETUP
+{
+ unput(zconftext[0]);
+ BEGIN(COMMAND);
+}
+ YY_BREAK
+
+case 6:
+YY_RULE_SETUP
+{
+ const struct kconf_id *id = kconf_id_lookup(zconftext, zconfleng);
+ BEGIN(PARAM);
+ current_pos.file = current_file;
+ current_pos.lineno = current_file->lineno;
+ if (id && id->flags & TF_COMMAND) {
+ zconflval.id = id;
+ return id->token;
+ }
+ alloc_string(zconftext, zconfleng);
+ zconflval.string = text;
+ return T_WORD;
+ }
+ YY_BREAK
+case 7:
+YY_RULE_SETUP
+
+ YY_BREAK
+case 8:
+/* rule 8 can match eol */
+YY_RULE_SETUP
+{
+ BEGIN(INITIAL);
+ current_file->lineno++;
+ return T_EOL;
+ }
+ YY_BREAK
+
+case 9:
+YY_RULE_SETUP
+return T_AND;
+ YY_BREAK
+case 10:
+YY_RULE_SETUP
+return T_OR;
+ YY_BREAK
+case 11:
+YY_RULE_SETUP
+return T_OPEN_PAREN;
+ YY_BREAK
+case 12:
+YY_RULE_SETUP
+return T_CLOSE_PAREN;
+ YY_BREAK
+case 13:
+YY_RULE_SETUP
+return T_NOT;
+ YY_BREAK
+case 14:
+YY_RULE_SETUP
+return T_EQUAL;
+ YY_BREAK
+case 15:
+YY_RULE_SETUP
+return T_UNEQUAL;
+ YY_BREAK
+case 16:
+YY_RULE_SETUP
+{
+ str = zconftext[0];
+ new_string();
+ BEGIN(STRING);
+ }
+ YY_BREAK
+case 17:
+/* rule 17 can match eol */
+YY_RULE_SETUP
+BEGIN(INITIAL); current_file->lineno++; return T_EOL;
+ YY_BREAK
+case 18:
+YY_RULE_SETUP
+/* ignore */
+ YY_BREAK
+case 19:
+YY_RULE_SETUP
+{
+ const struct kconf_id *id = kconf_id_lookup(zconftext, zconfleng);
+ if (id && id->flags & TF_PARAM) {
+ zconflval.id = id;
+ return id->token;
+ }
+ alloc_string(zconftext, zconfleng);
+ zconflval.string = text;
+ return T_WORD;
+ }
+ YY_BREAK
+case 20:
+YY_RULE_SETUP
+/* comment */
+ YY_BREAK
+case 21:
+/* rule 21 can match eol */
+YY_RULE_SETUP
+current_file->lineno++;
+ YY_BREAK
+case 22:
+YY_RULE_SETUP
+
+ YY_BREAK
+case YY_STATE_EOF(PARAM):
+{
+ BEGIN(INITIAL);
+ }
+ YY_BREAK
+
+case 23:
+/* rule 23 can match eol */
+*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
+(yy_c_buf_p) = yy_cp -= 1;
+YY_DO_BEFORE_ACTION; /* set up zconftext again */
+YY_RULE_SETUP
+{
+ append_string(zconftext, zconfleng);
+ zconflval.string = text;
+ return T_WORD_QUOTE;
+ }
+ YY_BREAK
+case 24:
+YY_RULE_SETUP
+{
+ append_string(zconftext, zconfleng);
+ }
+ YY_BREAK
+case 25:
+/* rule 25 can match eol */
+*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
+(yy_c_buf_p) = yy_cp -= 1;
+YY_DO_BEFORE_ACTION; /* set up zconftext again */
+YY_RULE_SETUP
+{
+ append_string(zconftext + 1, zconfleng - 1);
+ zconflval.string = text;
+ return T_WORD_QUOTE;
+ }
+ YY_BREAK
+case 26:
+YY_RULE_SETUP
+{
+ append_string(zconftext + 1, zconfleng - 1);
+ }
+ YY_BREAK
+case 27:
+YY_RULE_SETUP
+{
+ if (str == zconftext[0]) {
+ BEGIN(PARAM);
+ zconflval.string = text;
+ return T_WORD_QUOTE;
+ } else
+ append_string(zconftext, 1);
+ }
+ YY_BREAK
+case 28:
+/* rule 28 can match eol */
+YY_RULE_SETUP
+{
+ printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno());
+ current_file->lineno++;
+ BEGIN(INITIAL);
+ return T_EOL;
+ }
+ YY_BREAK
+case YY_STATE_EOF(STRING):
+{
+ BEGIN(INITIAL);
+ }
+ YY_BREAK
+
+case 29:
+YY_RULE_SETUP
+{
+ ts = 0;
+ for (i = 0; i < zconfleng; i++) {
+ if (zconftext[i] == '\t')
+ ts = (ts & ~7) + 8;
+ else
+ ts++;
+ }
+ last_ts = ts;
+ if (first_ts) {
+ if (ts < first_ts) {
+ zconf_endhelp();
+ return T_HELPTEXT;
+ }
+ ts -= first_ts;
+ while (ts > 8) {
+ append_string(" ", 8);
+ ts -= 8;
+ }
+ append_string(" ", ts);
+ }
+ }
+ YY_BREAK
+case 30:
+/* rule 30 can match eol */
+*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
+(yy_c_buf_p) = yy_cp -= 1;
+YY_DO_BEFORE_ACTION; /* set up zconftext again */
+YY_RULE_SETUP
+{
+ current_file->lineno++;
+ zconf_endhelp();
+ return T_HELPTEXT;
+ }
+ YY_BREAK
+case 31:
+/* rule 31 can match eol */
+YY_RULE_SETUP
+{
+ current_file->lineno++;
+ append_string("\n", 1);
+ }
+ YY_BREAK
+case 32:
+YY_RULE_SETUP
+{
+ while (zconfleng) {
+ if ((zconftext[zconfleng-1] != ' ') && (zconftext[zconfleng-1] != '\t'))
+ break;
+ zconfleng--;
+ }
+ append_string(zconftext, zconfleng);
+ if (!first_ts)
+ first_ts = last_ts;
+ }
+ YY_BREAK
+case YY_STATE_EOF(HELP):
+{
+ zconf_endhelp();
+ return T_HELPTEXT;
+ }
+ YY_BREAK
+
+case YY_STATE_EOF(INITIAL):
+case YY_STATE_EOF(COMMAND):
+{
+ if (current_file) {
+ zconf_endfile();
+ return T_EOL;
+ }
+ fclose(zconfin);
+ yyterminate();
+}
+ YY_BREAK
+case 33:
+YY_RULE_SETUP
+YY_FATAL_ERROR( "flex scanner jammed" );
+ YY_BREAK
+
+ case YY_END_OF_BUFFER:
+ {
+ /* Amount of text matched not including the EOB char. */
+ int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
+
+ /* Undo the effects of YY_DO_BEFORE_ACTION. */
+ *yy_cp = (yy_hold_char);
+ YY_RESTORE_YY_MORE_OFFSET
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
+ {
+ /* We're scanning a new file or input source. It's
+ * possible that this happened because the user
+ * just pointed zconfin at a new source and called
+ * zconflex(). If so, then we have to assure
+ * consistency between YY_CURRENT_BUFFER and our
+ * globals. Here is the right place to do so, because
+ * this is the first action (other than possibly a
+ * back-up) that will match for the new input source.
+ */
+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ YY_CURRENT_BUFFER_LVALUE->yy_input_file = zconfin;
+ YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
+ }
+
+ /* Note that here we test for yy_c_buf_p "<=" to the position
+ * of the first EOB in the buffer, since yy_c_buf_p will
+ * already have been incremented past the NUL character
+ * (since all states make transitions on EOB to the
+ * end-of-buffer state). Contrast this with the test
+ * in input().
+ */
+ if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+ { /* This was really a NUL. */
+ yy_state_type yy_next_state;
+
+ (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
+
+ yy_current_state = yy_get_previous_state( );
+
+ /* Okay, we're now positioned to make the NUL
+ * transition. We couldn't have
+ * yy_get_previous_state() go ahead and do it
+ * for us because it doesn't know how to deal
+ * with the possibility of jamming (and we don't
+ * want to build jamming into it because then it
+ * will run more slowly).
+ */
+
+ yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+ yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+
+ if ( yy_next_state )
+ {
+ /* Consume the NUL. */
+ yy_cp = ++(yy_c_buf_p);
+ yy_current_state = yy_next_state;
+ goto yy_match;
+ }
+
+ else
+ {
+ yy_cp = (yy_c_buf_p);
+ goto yy_find_action;
+ }
+ }
+
+ else switch ( yy_get_next_buffer( ) )
+ {
+ case EOB_ACT_END_OF_FILE:
+ {
+ (yy_did_buffer_switch_on_eof) = 0;
+
+ if ( zconfwrap( ) )
+ {
+ /* Note: because we've taken care in
+ * yy_get_next_buffer() to have set up
+ * zconftext, we can now set up
+ * yy_c_buf_p so that if some total
+ * hoser (like flex itself) wants to
+ * call the scanner after we return the
+ * YY_NULL, it'll still work - another
+ * YY_NULL will get returned.
+ */
+ (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
+
+ yy_act = YY_STATE_EOF(YY_START);
+ goto do_action;
+ }
+
+ else
+ {
+ if ( ! (yy_did_buffer_switch_on_eof) )
+ YY_NEW_FILE;
+ }
+ break;
+ }
+
+ case EOB_ACT_CONTINUE_SCAN:
+ (yy_c_buf_p) =
+ (yytext_ptr) + yy_amount_of_matched_text;
+
+ yy_current_state = yy_get_previous_state( );
+
+ yy_cp = (yy_c_buf_p);
+ yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+ goto yy_match;
+
+ case EOB_ACT_LAST_MATCH:
+ (yy_c_buf_p) =
+ &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
+
+ yy_current_state = yy_get_previous_state( );
+
+ yy_cp = (yy_c_buf_p);
+ yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+ goto yy_find_action;
+ }
+ break;
+ }
+
+ default:
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--no action found" );
+ } /* end of action switch */
+ } /* end of scanning one token */
+} /* end of zconflex */
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ * EOB_ACT_LAST_MATCH -
+ * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ * EOB_ACT_END_OF_FILE - end of file
+ */
+static int yy_get_next_buffer (void)
+{
+ register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+ register char *source = (yytext_ptr);
+ register int number_to_move, i;
+ int ret_val;
+
+ if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--end of buffer missed" );
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
+ { /* Don't try to fill the buffer, so this is an EOF. */
+ if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
+ {
+ /* We matched a single character, the EOB, so
+ * treat this as a final EOF.
+ */
+ return EOB_ACT_END_OF_FILE;
+ }
+
+ else
+ {
+ /* We matched some text prior to the EOB, first
+ * process it.
+ */
+ return EOB_ACT_LAST_MATCH;
+ }
+ }
+
+ /* Try to read more data. */
+
+ /* First move last chars to start of buffer. */
+ number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
+
+ for ( i = 0; i < number_to_move; ++i )
+ *(dest++) = *(source++);
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+ /* don't do the read, it's not guaranteed to return an EOF,
+ * just force an EOF
+ */
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
+
+ else
+ {
+ int num_to_read =
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+
+ while ( num_to_read <= 0 )
+ { /* Not enough room in the buffer - grow it. */
+
+ /* just a shorter name for the current buffer */
+ YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
+
+ int yy_c_buf_p_offset =
+ (int) ((yy_c_buf_p) - b->yy_ch_buf);
+
+ if ( b->yy_is_our_buffer )
+ {
+ int new_size = b->yy_buf_size * 2;
+
+ if ( new_size <= 0 )
+ b->yy_buf_size += b->yy_buf_size / 8;
+ else
+ b->yy_buf_size *= 2;
+
+ b->yy_ch_buf = (char *)
+ /* Include room in for 2 EOB chars. */
+ zconfrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 );
+ }
+ else
+ /* Can't grow it, we don't own it. */
+ b->yy_ch_buf = 0;
+
+ if ( ! b->yy_ch_buf )
+ YY_FATAL_ERROR(
+ "fatal error - scanner input buffer overflow" );
+
+ (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+ num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
+ number_to_move - 1;
+
+ }
+
+ if ( num_to_read > YY_READ_BUF_SIZE )
+ num_to_read = YY_READ_BUF_SIZE;
+
+ /* Read in more data. */
+ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
+ (yy_n_chars), (size_t) num_to_read );
+
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ }
+
+ if ( (yy_n_chars) == 0 )
+ {
+ if ( number_to_move == YY_MORE_ADJ )
+ {
+ ret_val = EOB_ACT_END_OF_FILE;
+ zconfrestart(zconfin );
+ }
+
+ else
+ {
+ ret_val = EOB_ACT_LAST_MATCH;
+ YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
+ YY_BUFFER_EOF_PENDING;
+ }
+ }
+
+ else
+ ret_val = EOB_ACT_CONTINUE_SCAN;
+
+ if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+ /* Extend the array by 50%, plus the number we really need. */
+ yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) zconfrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
+ if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
+ }
+
+ (yy_n_chars) += number_to_move;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
+
+ (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
+
+ return ret_val;
+}
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+ static yy_state_type yy_get_previous_state (void)
+{
+ register yy_state_type yy_current_state;
+ register char *yy_cp;
+
+ yy_current_state = (yy_start);
+
+ for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
+ {
+ yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)];
+ }
+
+ return yy_current_state;
+}
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ * next_state = yy_try_NUL_trans( current_state );
+ */
+ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
+{
+ register int yy_is_jam;
+
+ yy_current_state = yy_nxt[yy_current_state][1];
+ yy_is_jam = (yy_current_state <= 0);
+
+ return yy_is_jam ? 0 : yy_current_state;
+}
+
+ static void yyunput (int c, register char * yy_bp )
+{
+ register char *yy_cp;
+
+ yy_cp = (yy_c_buf_p);
+
+ /* undo effects of setting up zconftext */
+ *yy_cp = (yy_hold_char);
+
+ if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+ { /* need to shift things up to make room */
+ /* +2 for EOB chars. */
+ register int number_to_move = (yy_n_chars) + 2;
+ register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
+ register char *source =
+ &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
+
+ while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+ *--dest = *--source;
+
+ yy_cp += (int) (dest - source);
+ yy_bp += (int) (dest - source);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
+
+ if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+ YY_FATAL_ERROR( "flex scanner push-back overflow" );
+ }
+
+ *--yy_cp = (char) c;
+
+ (yytext_ptr) = yy_bp;
+ (yy_hold_char) = *yy_cp;
+ (yy_c_buf_p) = yy_cp;
+}
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+ static int yyinput (void)
+#else
+ static int input (void)
+#endif
+
+{
+ int c;
+
+ *(yy_c_buf_p) = (yy_hold_char);
+
+ if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
+ {
+ /* yy_c_buf_p now points to the character we want to return.
+ * If this occurs *before* the EOB characters, then it's a
+ * valid NUL; if not, then we've hit the end of the buffer.
+ */
+ if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+ /* This was really a NUL. */
+ *(yy_c_buf_p) = '\0';
+
+ else
+ { /* need more input */
+ int offset = (yy_c_buf_p) - (yytext_ptr);
+ ++(yy_c_buf_p);
+
+ switch ( yy_get_next_buffer( ) )
+ {
+ case EOB_ACT_LAST_MATCH:
+ /* This happens because yy_g_n_b()
+ * sees that we've accumulated a
+ * token and flags that we need to
+ * try matching the token before
+ * proceeding. But for input(),
+ * there's no matching to consider.
+ * So convert the EOB_ACT_LAST_MATCH
+ * to EOB_ACT_END_OF_FILE.
+ */
+
+ /* Reset buffer status. */
+ zconfrestart(zconfin );
+
+ /*FALLTHROUGH*/
+
+ case EOB_ACT_END_OF_FILE:
+ {
+ if ( zconfwrap( ) )
+ return EOF;
+
+ if ( ! (yy_did_buffer_switch_on_eof) )
+ YY_NEW_FILE;
+#ifdef __cplusplus
+ return yyinput();
+#else
+ return input();
+#endif
+ }
+
+ case EOB_ACT_CONTINUE_SCAN:
+ (yy_c_buf_p) = (yytext_ptr) + offset;
+ break;
+ }
+ }
+ }
+
+ c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
+ *(yy_c_buf_p) = '\0'; /* preserve zconftext */
+ (yy_hold_char) = *++(yy_c_buf_p);
+
+ return c;
+}
+#endif /* ifndef YY_NO_INPUT */
+
+/** Immediately switch to a different input stream.
+ * @param input_file A readable stream.
+ *
+ * @note This function does not reset the start condition to @c INITIAL .
+ */
+ void zconfrestart (FILE * input_file )
+{
+
+ if ( ! YY_CURRENT_BUFFER ){
+ zconfensure_buffer_stack ();
+ YY_CURRENT_BUFFER_LVALUE =
+ zconf_create_buffer(zconfin,YY_BUF_SIZE );
+ }
+
+ zconf_init_buffer(YY_CURRENT_BUFFER,input_file );
+ zconf_load_buffer_state( );
+}
+
+/** Switch to a different input buffer.
+ * @param new_buffer The new input buffer.
+ *
+ */
+ void zconf_switch_to_buffer (YY_BUFFER_STATE new_buffer )
+{
+
+ /* TODO. We should be able to replace this entire function body
+ * with
+ * zconfpop_buffer_state();
+ * zconfpush_buffer_state(new_buffer);
+ */
+ zconfensure_buffer_stack ();
+ if ( YY_CURRENT_BUFFER == new_buffer )
+ return;
+
+ if ( YY_CURRENT_BUFFER )
+ {
+ /* Flush out information for old buffer. */
+ *(yy_c_buf_p) = (yy_hold_char);
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ }
+
+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
+ zconf_load_buffer_state( );
+
+ /* We don't actually know whether we did this switch during
+ * EOF (zconfwrap()) processing, but the only time this flag
+ * is looked at is after zconfwrap() is called, so it's safe
+ * to go ahead and always set it.
+ */
+ (yy_did_buffer_switch_on_eof) = 1;
+}
+
+static void zconf_load_buffer_state (void)
+{
+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
+ zconfin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+ (yy_hold_char) = *(yy_c_buf_p);
+}
+
+/** Allocate and initialize an input buffer state.
+ * @param file A readable stream.
+ * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
+ *
+ * @return the allocated buffer state.
+ */
+ YY_BUFFER_STATE zconf_create_buffer (FILE * file, int size )
+{
+ YY_BUFFER_STATE b;
+
+ b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state ) );
+ if ( ! b )
+ YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" );
+
+ b->yy_buf_size = size;
+
+ /* yy_ch_buf has to be 2 characters longer than the size given because
+ * we need to put in 2 end-of-buffer characters.
+ */
+ b->yy_ch_buf = (char *) zconfalloc(b->yy_buf_size + 2 );
+ if ( ! b->yy_ch_buf )
+ YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" );
+
+ b->yy_is_our_buffer = 1;
+
+ zconf_init_buffer(b,file );
+
+ return b;
+}
+
+/** Destroy the buffer.
+ * @param b a buffer created with zconf_create_buffer()
+ *
+ */
+ void zconf_delete_buffer (YY_BUFFER_STATE b )
+{
+
+ if ( ! b )
+ return;
+
+ if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
+ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
+
+ if ( b->yy_is_our_buffer )
+ zconffree((void *) b->yy_ch_buf );
+
+ zconffree((void *) b );
+}
+
+/* Initializes or reinitializes a buffer.
+ * This function is sometimes called more than once on the same buffer,
+ * such as during a zconfrestart() or at EOF.
+ */
+ static void zconf_init_buffer (YY_BUFFER_STATE b, FILE * file )
+
+{
+ int oerrno = errno;
+
+ zconf_flush_buffer(b );
+
+ b->yy_input_file = file;
+ b->yy_fill_buffer = 1;
+
+ /* If b is the current buffer, then zconf_init_buffer was _probably_
+ * called from zconfrestart() or through yy_get_next_buffer.
+ * In that case, we don't want to reset the lineno or column.
+ */
+ if (b != YY_CURRENT_BUFFER){
+ b->yy_bs_lineno = 1;
+ b->yy_bs_column = 0;
+ }
+
+ b->yy_is_interactive = 0;
+
+ errno = oerrno;
+}
+
+/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
+ * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
+ *
+ */
+ void zconf_flush_buffer (YY_BUFFER_STATE b )
+{
+ if ( ! b )
+ return;
+
+ b->yy_n_chars = 0;
+
+ /* We always need two end-of-buffer characters. The first causes
+ * a transition to the end-of-buffer state. The second causes
+ * a jam in that state.
+ */
+ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+ b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+ b->yy_buf_pos = &b->yy_ch_buf[0];
+
+ b->yy_at_bol = 1;
+ b->yy_buffer_status = YY_BUFFER_NEW;
+
+ if ( b == YY_CURRENT_BUFFER )
+ zconf_load_buffer_state( );
+}
+
+/** Pushes the new state onto the stack. The new state becomes
+ * the current state. This function will allocate the stack
+ * if necessary.
+ * @param new_buffer The new state.
+ *
+ */
+void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer )
+{
+ if (new_buffer == NULL)
+ return;
+
+ zconfensure_buffer_stack();
+
+ /* This block is copied from zconf_switch_to_buffer. */
+ if ( YY_CURRENT_BUFFER )
+ {
+ /* Flush out information for old buffer. */
+ *(yy_c_buf_p) = (yy_hold_char);
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ }
+
+ /* Only push if top exists. Otherwise, replace top. */
+ if (YY_CURRENT_BUFFER)
+ (yy_buffer_stack_top)++;
+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
+
+ /* copied from zconf_switch_to_buffer. */
+ zconf_load_buffer_state( );
+ (yy_did_buffer_switch_on_eof) = 1;
+}
+
+/** Removes and deletes the top of the stack, if present.
+ * The next element becomes the new top.
+ *
+ */
+void zconfpop_buffer_state (void)
+{
+ if (!YY_CURRENT_BUFFER)
+ return;
+
+ zconf_delete_buffer(YY_CURRENT_BUFFER );
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ if ((yy_buffer_stack_top) > 0)
+ --(yy_buffer_stack_top);
+
+ if (YY_CURRENT_BUFFER) {
+ zconf_load_buffer_state( );
+ (yy_did_buffer_switch_on_eof) = 1;
+ }
+}
+
+/* Allocates the stack if it does not exist.
+ * Guarantees space for at least one push.
+ */
+static void zconfensure_buffer_stack (void)
+{
+ int num_to_alloc;
+
+ if (!(yy_buffer_stack)) {
+
+ /* First allocation is just for 2 elements, since we don't know if this
+ * scanner will even need a stack. We use 2 instead of 1 to avoid an
+ * immediate realloc on the next call.
+ */
+ num_to_alloc = 1;
+ (yy_buffer_stack) = (struct yy_buffer_state**)zconfalloc
+ (num_to_alloc * sizeof(struct yy_buffer_state*)
+ );
+ if ( ! (yy_buffer_stack) )
+ YY_FATAL_ERROR( "out of dynamic memory in zconfensure_buffer_stack()" );
+
+ memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
+
+ (yy_buffer_stack_max) = num_to_alloc;
+ (yy_buffer_stack_top) = 0;
+ return;
+ }
+
+ if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
+
+ /* Increase the buffer to prepare for a possible push. */
+ int grow_size = 8 /* arbitrary grow size */;
+
+ num_to_alloc = (yy_buffer_stack_max) + grow_size;
+ (yy_buffer_stack) = (struct yy_buffer_state**)zconfrealloc
+ ((yy_buffer_stack),
+ num_to_alloc * sizeof(struct yy_buffer_state*)
+ );
+ if ( ! (yy_buffer_stack) )
+ YY_FATAL_ERROR( "out of dynamic memory in zconfensure_buffer_stack()" );
+
+ /* zero only the new slots.*/
+ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
+ (yy_buffer_stack_max) = num_to_alloc;
+ }
+}
+
+/** Setup the input buffer state to scan directly from a user-specified character buffer.
+ * @param base the character buffer
+ * @param size the size in bytes of the character buffer
+ *
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE zconf_scan_buffer (char * base, yy_size_t size )
+{
+ YY_BUFFER_STATE b;
+
+ if ( size < 2 ||
+ base[size-2] != YY_END_OF_BUFFER_CHAR ||
+ base[size-1] != YY_END_OF_BUFFER_CHAR )
+ /* They forgot to leave room for the EOB's. */
+ return 0;
+
+ b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state ) );
+ if ( ! b )
+ YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_buffer()" );
+
+ b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
+ b->yy_buf_pos = b->yy_ch_buf = base;
+ b->yy_is_our_buffer = 0;
+ b->yy_input_file = 0;
+ b->yy_n_chars = b->yy_buf_size;
+ b->yy_is_interactive = 0;
+ b->yy_at_bol = 1;
+ b->yy_fill_buffer = 0;
+ b->yy_buffer_status = YY_BUFFER_NEW;
+
+ zconf_switch_to_buffer(b );
+
+ return b;
+}
+
+/** Setup the input buffer state to scan a string. The next call to zconflex() will
+ * scan from a @e copy of @a str.
+ * @param yystr a NUL-terminated string to scan
+ *
+ * @return the newly allocated buffer state object.
+ * @note If you want to scan bytes that may contain NUL values, then use
+ * zconf_scan_bytes() instead.
+ */
+YY_BUFFER_STATE zconf_scan_string (yyconst char * yystr )
+{
+
+ return zconf_scan_bytes(yystr,strlen(yystr) );
+}
+
+/** Setup the input buffer state to scan the given bytes. The next call to zconflex() will
+ * scan from a @e copy of @a bytes.
+ * @param bytes the byte buffer to scan
+ * @param len the number of bytes in the buffer pointed to by @a bytes.
+ *
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE zconf_scan_bytes (yyconst char * yybytes, int _yybytes_len )
+{
+ YY_BUFFER_STATE b;
+ char *buf;
+ yy_size_t n;
+ int i;
+
+ /* Get memory for full buffer, including space for trailing EOB's. */
+ n = _yybytes_len + 2;
+ buf = (char *) zconfalloc(n );
+ if ( ! buf )
+ YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_bytes()" );
+
+ for ( i = 0; i < _yybytes_len; ++i )
+ buf[i] = yybytes[i];
+
+ buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
+
+ b = zconf_scan_buffer(buf,n );
+ if ( ! b )
+ YY_FATAL_ERROR( "bad buffer in zconf_scan_bytes()" );
+
+ /* It's okay to grow etc. this buffer, and we should throw it
+ * away when we're done.
+ */
+ b->yy_is_our_buffer = 1;
+
+ return b;
+}
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+static void yy_fatal_error (yyconst char* msg )
+{
+ (void) fprintf( stderr, "%s\n", msg );
+ exit( YY_EXIT_FAILURE );
+}
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up zconftext. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ zconftext[zconfleng] = (yy_hold_char); \
+ (yy_c_buf_p) = zconftext + yyless_macro_arg; \
+ (yy_hold_char) = *(yy_c_buf_p); \
+ *(yy_c_buf_p) = '\0'; \
+ zconfleng = yyless_macro_arg; \
+ } \
+ while ( 0 )
+
+/* Accessor methods (get/set functions) to struct members. */
+
+/** Get the current line number.
+ *
+ */
+int zconfget_lineno (void)
+{
+
+ return zconflineno;
+}
+
+/** Get the input stream.
+ *
+ */
+FILE *zconfget_in (void)
+{
+ return zconfin;
+}
+
+/** Get the output stream.
+ *
+ */
+FILE *zconfget_out (void)
+{
+ return zconfout;
+}
+
+/** Get the length of the current token.
+ *
+ */
+int zconfget_leng (void)
+{
+ return zconfleng;
+}
+
+/** Get the current token.
+ *
+ */
+
+char *zconfget_text (void)
+{
+ return zconftext;
+}
+
+/** Set the current line number.
+ * @param line_number
+ *
+ */
+void zconfset_lineno (int line_number )
+{
+
+ zconflineno = line_number;
+}
+
+/** Set the input stream. This does not discard the current
+ * input buffer.
+ * @param in_str A readable stream.
+ *
+ * @see zconf_switch_to_buffer
+ */
+void zconfset_in (FILE * in_str )
+{
+ zconfin = in_str ;
+}
+
+void zconfset_out (FILE * out_str )
+{
+ zconfout = out_str ;
+}
+
+int zconfget_debug (void)
+{
+ return zconf_flex_debug;
+}
+
+void zconfset_debug (int bdebug )
+{
+ zconf_flex_debug = bdebug ;
+}
+
+static int yy_init_globals (void)
+{
+ /* Initialization is the same as for the non-reentrant scanner.
+ * This function is called from zconflex_destroy(), so don't allocate here.
+ */
+
+ (yy_buffer_stack) = 0;
+ (yy_buffer_stack_top) = 0;
+ (yy_buffer_stack_max) = 0;
+ (yy_c_buf_p) = (char *) 0;
+ (yy_init) = 0;
+ (yy_start) = 0;
+
+/* Defined in main.c */
+#ifdef YY_STDINIT
+ zconfin = stdin;
+ zconfout = stdout;
+#else
+ zconfin = (FILE *) 0;
+ zconfout = (FILE *) 0;
+#endif
+
+ /* For future reference: Set errno on error, since we are called by
+ * zconflex_init()
+ */
+ return 0;
+}
+
+/* zconflex_destroy is for both reentrant and non-reentrant scanners. */
+int zconflex_destroy (void)
+{
+
+ /* Pop the buffer stack, destroying each element. */
+ while(YY_CURRENT_BUFFER){
+ zconf_delete_buffer(YY_CURRENT_BUFFER );
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ zconfpop_buffer_state();
+ }
+
+ /* Destroy the stack itself. */
+ zconffree((yy_buffer_stack) );
+ (yy_buffer_stack) = NULL;
+
+ /* Reset the globals. This is important in a non-reentrant scanner so the next time
+ * zconflex() is called, initialization will occur. */
+ yy_init_globals( );
+
+ return 0;
+}
+
+/*
+ * Internal utility routines.
+ */
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
+{
+ register int i;
+ for ( i = 0; i < n; ++i )
+ s1[i] = s2[i];
+}
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * s )
+{
+ register int n;
+ for ( n = 0; s[n]; ++n )
+ ;
+
+ return n;
+}
+#endif
+
+void *zconfalloc (yy_size_t size )
+{
+ return (void *) malloc( size );
+}
+
+void *zconfrealloc (void * ptr, yy_size_t size )
+{
+ /* The cast to (char *) in the following accommodates both
+ * implementations that use char* generic pointers, and those
+ * that use void* generic pointers. It works with the latter
+ * because both ANSI C and C++ allow castless assignment from
+ * any pointer type to void*, and deal with argument conversions
+ * as though doing an assignment.
+ */
+ return (void *) realloc( (char *) ptr, size );
+}
+
+void zconffree (void * ptr )
+{
+ free( (char *) ptr ); /* see zconfrealloc() for (char *) cast */
+}
+
+#define YYTABLES_NAME "yytables"
+
+void zconf_starthelp(void)
+{
+ new_string();
+ last_ts = first_ts = 0;
+ BEGIN(HELP);
+}
+
+static void zconf_endhelp(void)
+{
+ zconflval.string = text;
+ BEGIN(INITIAL);
+}
+
+/*
+ * Try to open specified file with following names:
+ * ./name
+ * $(srctree)/name
+ * The latter is used when srctree is separate from objtree
+ * when compiling the kernel.
+ * Return NULL if file is not found.
+ */
+FILE *zconf_fopen(const char *name)
+{
+ char *env, fullname[PATH_MAX+1];
+ FILE *f;
+
+ f = fopen(name, "r");
+ if (!f && name != NULL && name[0] != '/') {
+ env = getenv(SRCTREE);
+ if (env) {
+ sprintf(fullname, "%s/%s", env, name);
+ f = fopen(fullname, "r");
+ }
+ }
+ return f;
+}
+
+void zconf_initscan(const char *name)
+{
+ zconfin = zconf_fopen(name);
+ if (!zconfin) {
+ printf("can't find file %s\n", name);
+ exit(1);
+ }
+
+ current_buf = xmalloc(sizeof(*current_buf));
+ memset(current_buf, 0, sizeof(*current_buf));
+
+ current_file = file_lookup(name);
+ current_file->lineno = 1;
+}
+
+void zconf_nextfile(const char *name)
+{
+ struct file *iter;
+ struct file *file = file_lookup(name);
+ struct buffer *buf = xmalloc(sizeof(*buf));
+ memset(buf, 0, sizeof(*buf));
+
+ current_buf->state = YY_CURRENT_BUFFER;
+ zconfin = zconf_fopen(file->name);
+ if (!zconfin) {
+ printf("%s:%d: can't open file \"%s\"\n",
+ zconf_curname(), zconf_lineno(), file->name);
+ exit(1);
+ }
+ zconf_switch_to_buffer(zconf_create_buffer(zconfin,YY_BUF_SIZE));
+ buf->parent = current_buf;
+ current_buf = buf;
+
+ for (iter = current_file->parent; iter; iter = iter->parent ) {
+ if (!strcmp(current_file->name,iter->name) ) {
+ printf("%s:%d: recursive inclusion detected. "
+ "Inclusion path:\n current file : '%s'\n",
+ zconf_curname(), zconf_lineno(),
+ zconf_curname());
+ iter = current_file->parent;
+ while (iter && \
+ strcmp(iter->name,current_file->name)) {
+ printf(" included from: '%s:%d'\n",
+ iter->name, iter->lineno-1);
+ iter = iter->parent;
+ }
+ if (iter)
+ printf(" included from: '%s:%d'\n",
+ iter->name, iter->lineno+1);
+ exit(1);
+ }
+ }
+ file->lineno = 1;
+ file->parent = current_file;
+ current_file = file;
+}
+
+static void zconf_endfile(void)
+{
+ struct buffer *parent;
+
+ current_file = current_file->parent;
+
+ parent = current_buf->parent;
+ if (parent) {
+ fclose(zconfin);
+ zconf_delete_buffer(YY_CURRENT_BUFFER);
+ zconf_switch_to_buffer(parent->state);
+ }
+ free(current_buf);
+ current_buf = parent;
+}
+
+int zconf_lineno(void)
+{
+ return current_pos.lineno;
+}
+
+const char *zconf_curname(void)
+{
+ return current_pos.file ? current_pos.file->name : "<none>";
+}
+
diff --git a/scripts/kconfig/zconf.tab.c_shipped b/scripts/kconfig/zconf.tab.c_shipped
new file mode 100644
index 0000000..de5e84e
--- /dev/null
+++ b/scripts/kconfig/zconf.tab.c_shipped
@@ -0,0 +1,2538 @@
+/* A Bison parser, made by GNU Bison 2.5. */
+
+/* Bison implementation for Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, 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 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU 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/>. */
+
+/* As a special exception, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
+
+/* C LALR(1) parser skeleton written by Richard Stallman, by
+ simplifying the original so-called "semantic" parser. */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+ infringing on user name space. This should be done even for local
+ variables, as they might otherwise be expanded by user macros.
+ There are some unavoidable exceptions within include files to
+ define necessary library symbols; they are noted "INFRINGES ON
+ USER NAME SPACE" below. */
+
+/* Identify Bison output. */
+#define YYBISON 1
+
+/* Bison version. */
+#define YYBISON_VERSION "2.5"
+
+/* Skeleton name. */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers. */
+#define YYPURE 0
+
+/* Push parsers. */
+#define YYPUSH 0
+
+/* Pull parsers. */
+#define YYPULL 1
+
+/* Using locations. */
+#define YYLSP_NEEDED 0
+
+/* Substitute the variable and function names. */
+#define yyparse zconfparse
+#define yylex zconflex
+#define yyerror zconferror
+#define yylval zconflval
+#define yychar zconfchar
+#define yydebug zconfdebug
+#define yynerrs zconfnerrs
+
+
+/* Copy the first part of user declarations. */
+
+
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <ctype.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdbool.h>
+
+#include "lkc.h"
+
+#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt)
+
+#define PRINTD 0x0001
+#define DEBUG_PARSE 0x0002
+
+int cdebug = PRINTD;
+
+extern int zconflex(void);
+static void zconfprint(const char *err, ...);
+static void zconf_error(const char *err, ...);
+static void zconferror(const char *err);
+static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken);
+
+struct symbol *symbol_hash[SYMBOL_HASHSIZE];
+
+static struct menu *current_menu, *current_entry;
+
+
+
+
+/* Enabling traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 1
+#endif
+
+/* Enabling verbose error messages. */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* Enabling the token table. */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+
+/* Tokens. */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+ /* Put the tokens into the symbol table, so that GDB and other debuggers
+ know about them. */
+ enum yytokentype {
+ T_MAINMENU = 258,
+ T_MENU = 259,
+ T_ENDMENU = 260,
+ T_SOURCE = 261,
+ T_CHOICE = 262,
+ T_ENDCHOICE = 263,
+ T_COMMENT = 264,
+ T_CONFIG = 265,
+ T_MENUCONFIG = 266,
+ T_HELP = 267,
+ T_HELPTEXT = 268,
+ T_IF = 269,
+ T_ENDIF = 270,
+ T_DEPENDS = 271,
+ T_OPTIONAL = 272,
+ T_PROMPT = 273,
+ T_TYPE = 274,
+ T_DEFAULT = 275,
+ T_SELECT = 276,
+ T_RANGE = 277,
+ T_VISIBLE = 278,
+ T_OPTION = 279,
+ T_ON = 280,
+ T_WORD = 281,
+ T_WORD_QUOTE = 282,
+ T_UNEQUAL = 283,
+ T_CLOSE_PAREN = 284,
+ T_OPEN_PAREN = 285,
+ T_EOL = 286,
+ T_OR = 287,
+ T_AND = 288,
+ T_EQUAL = 289,
+ T_NOT = 290
+ };
+#endif
+
+
+
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef union YYSTYPE
+{
+
+
+ char *string;
+ struct file *file;
+ struct symbol *symbol;
+ struct expr *expr;
+ struct menu *menu;
+ const struct kconf_id *id;
+
+
+
+} YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+#endif
+
+
+/* Copy the second part of user declarations. */
+
+
+/* Include zconf.hash.c here so it can see the token constants. */
+#include "zconf.hash.c"
+
+
+
+#ifdef short
+# undef short
+#endif
+
+#ifdef YYTYPE_UINT8
+typedef YYTYPE_UINT8 yytype_uint8;
+#else
+typedef unsigned char yytype_uint8;
+#endif
+
+#ifdef YYTYPE_INT8
+typedef YYTYPE_INT8 yytype_int8;
+#elif (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+typedef signed char yytype_int8;
+#else
+typedef short int yytype_int8;
+#endif
+
+#ifdef YYTYPE_UINT16
+typedef YYTYPE_UINT16 yytype_uint16;
+#else
+typedef unsigned short int yytype_uint16;
+#endif
+
+#ifdef YYTYPE_INT16
+typedef YYTYPE_INT16 yytype_int16;
+#else
+typedef short int yytype_int16;
+#endif
+
+#ifndef YYSIZE_T
+# ifdef __SIZE_TYPE__
+# define YYSIZE_T __SIZE_TYPE__
+# elif defined size_t
+# define YYSIZE_T size_t
+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+# else
+# define YYSIZE_T unsigned int
+# endif
+#endif
+
+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+
+#ifndef YY_
+# if defined YYENABLE_NLS && YYENABLE_NLS
+# if ENABLE_NLS
+# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+# define YY_(msgid) dgettext ("bison-runtime", msgid)
+# endif
+# endif
+# ifndef YY_
+# define YY_(msgid) msgid
+# endif
+#endif
+
+/* Suppress unused-variable warnings by "using" E. */
+#if ! defined lint || defined __GNUC__
+# define YYUSE(e) ((void) (e))
+#else
+# define YYUSE(e) /* empty */
+#endif
+
+/* Identity function, used to suppress warnings about constant conditions. */
+#ifndef lint
+# define YYID(n) (n)
+#else
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static int
+YYID (int yyi)
+#else
+static int
+YYID (yyi)
+ int yyi;
+#endif
+{
+ return yyi;
+}
+#endif
+
+#if ! defined yyoverflow || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols. */
+
+# ifdef YYSTACK_USE_ALLOCA
+# if YYSTACK_USE_ALLOCA
+# ifdef __GNUC__
+# define YYSTACK_ALLOC __builtin_alloca
+# elif defined __BUILTIN_VA_ARG_INCR
+# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
+# elif defined _AIX
+# define YYSTACK_ALLOC __alloca
+# elif defined _MSC_VER
+# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
+# define alloca _alloca
+# else
+# define YYSTACK_ALLOC alloca
+# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
+# endif
+# endif
+# endif
+# endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+ /* Pacify GCC's `empty if-body' warning. */
+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+# ifndef YYSTACK_ALLOC_MAXIMUM
+ /* The OS might guarantee only one guard page at the bottom of the stack,
+ and a page size can be as small as 4096 bytes. So we cannot safely
+ invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
+ to allow for a few compiler-allocated temporary stack slots. */
+# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
+# endif
+# else
+# define YYSTACK_ALLOC YYMALLOC
+# define YYSTACK_FREE YYFREE
+# ifndef YYSTACK_ALLOC_MAXIMUM
+# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
+# endif
+# if (defined __cplusplus && ! defined EXIT_SUCCESS \
+ && ! ((defined YYMALLOC || defined malloc) \
+ && (defined YYFREE || defined free)))
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
+# endif
+# endif
+# ifndef YYMALLOC
+# define YYMALLOC malloc
+# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# ifndef YYFREE
+# define YYFREE free
+# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# endif
+#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
+
+
+#if (! defined yyoverflow \
+ && (! defined __cplusplus \
+ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member. */
+union yyalloc
+{
+ yytype_int16 yyss_alloc;
+ YYSTYPE yyvs_alloc;
+};
+
+/* The size of the maximum gap between one aligned stack and the next. */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+ N elements. */
+# define YYSTACK_BYTES(N) \
+ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+ + YYSTACK_GAP_MAXIMUM)
+
+# define YYCOPY_NEEDED 1
+
+/* Relocate STACK from its old location to the new one. The
+ local variables YYSIZE and YYSTACKSIZE give the old and new number of
+ elements in the stack, and YYPTR gives the new location of the
+ stack. Advance YYPTR to a properly aligned location for the next
+ stack. */
+# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
+ do \
+ { \
+ YYSIZE_T yynewbytes; \
+ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
+ Stack = &yyptr->Stack_alloc; \
+ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+ yyptr += yynewbytes / sizeof (*yyptr); \
+ } \
+ while (YYID (0))
+
+#endif
+
+#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
+/* Copy COUNT objects from FROM to TO. The source and destination do
+ not overlap. */
+# ifndef YYCOPY
+# if defined __GNUC__ && 1 < __GNUC__
+# define YYCOPY(To, From, Count) \
+ __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+# else
+# define YYCOPY(To, From, Count) \
+ do \
+ { \
+ YYSIZE_T yyi; \
+ for (yyi = 0; yyi < (Count); yyi++) \
+ (To)[yyi] = (From)[yyi]; \
+ } \
+ while (YYID (0))
+# endif
+# endif
+#endif /* !YYCOPY_NEEDED */
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL 11
+/* YYLAST -- Last index in YYTABLE. */
+#define YYLAST 290
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS 36
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS 50
+/* YYNRULES -- Number of rules. */
+#define YYNRULES 118
+/* YYNRULES -- Number of states. */
+#define YYNSTATES 191
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
+#define YYUNDEFTOK 2
+#define YYMAXUTOK 290
+
+#define YYTRANSLATE(YYX) \
+ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
+static const yytype_uint8 yytranslate[] =
+{
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+ YYRHS. */
+static const yytype_uint16 yyprhs[] =
+{
+ 0, 0, 3, 6, 8, 11, 13, 14, 17, 20,
+ 23, 26, 31, 36, 40, 42, 44, 46, 48, 50,
+ 52, 54, 56, 58, 60, 62, 64, 66, 68, 72,
+ 75, 79, 82, 86, 89, 90, 93, 96, 99, 102,
+ 105, 108, 112, 117, 122, 127, 133, 137, 138, 142,
+ 143, 146, 150, 153, 155, 159, 160, 163, 166, 169,
+ 172, 175, 180, 184, 187, 192, 193, 196, 200, 202,
+ 206, 207, 210, 213, 216, 220, 224, 228, 230, 234,
+ 235, 238, 241, 244, 248, 252, 255, 258, 261, 262,
+ 265, 268, 271, 276, 277, 280, 283, 286, 287, 290,
+ 292, 294, 297, 300, 303, 305, 308, 309, 312, 314,
+ 318, 322, 326, 329, 333, 337, 339, 341, 342
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const yytype_int8 yyrhs[] =
+{
+ 37, 0, -1, 81, 38, -1, 38, -1, 63, 39,
+ -1, 39, -1, -1, 39, 41, -1, 39, 55, -1,
+ 39, 67, -1, 39, 80, -1, 39, 26, 1, 31,
+ -1, 39, 40, 1, 31, -1, 39, 1, 31, -1,
+ 16, -1, 18, -1, 19, -1, 21, -1, 17, -1,
+ 22, -1, 20, -1, 23, -1, 31, -1, 61, -1,
+ 71, -1, 44, -1, 46, -1, 69, -1, 26, 1,
+ 31, -1, 1, 31, -1, 10, 26, 31, -1, 43,
+ 47, -1, 11, 26, 31, -1, 45, 47, -1, -1,
+ 47, 48, -1, 47, 49, -1, 47, 75, -1, 47,
+ 73, -1, 47, 42, -1, 47, 31, -1, 19, 78,
+ 31, -1, 18, 79, 82, 31, -1, 20, 83, 82,
+ 31, -1, 21, 26, 82, 31, -1, 22, 84, 84,
+ 82, 31, -1, 24, 50, 31, -1, -1, 50, 26,
+ 51, -1, -1, 34, 79, -1, 7, 85, 31, -1,
+ 52, 56, -1, 80, -1, 53, 58, 54, -1, -1,
+ 56, 57, -1, 56, 75, -1, 56, 73, -1, 56,
+ 31, -1, 56, 42, -1, 18, 79, 82, 31, -1,
+ 19, 78, 31, -1, 17, 31, -1, 20, 26, 82,
+ 31, -1, -1, 58, 41, -1, 14, 83, 81, -1,
+ 80, -1, 59, 62, 60, -1, -1, 62, 41, -1,
+ 62, 67, -1, 62, 55, -1, 3, 79, 81, -1,
+ 4, 79, 31, -1, 64, 76, 74, -1, 80, -1,
+ 65, 68, 66, -1, -1, 68, 41, -1, 68, 67,
+ -1, 68, 55, -1, 6, 79, 31, -1, 9, 79,
+ 31, -1, 70, 74, -1, 12, 31, -1, 72, 13,
+ -1, -1, 74, 75, -1, 74, 31, -1, 74, 42,
+ -1, 16, 25, 83, 31, -1, -1, 76, 77, -1,
+ 76, 31, -1, 23, 82, -1, -1, 79, 82, -1,
+ 26, -1, 27, -1, 5, 31, -1, 8, 31, -1,
+ 15, 31, -1, 31, -1, 81, 31, -1, -1, 14,
+ 83, -1, 84, -1, 84, 34, 84, -1, 84, 28,
+ 84, -1, 30, 83, 29, -1, 35, 83, -1, 83,
+ 32, 83, -1, 83, 33, 83, -1, 26, -1, 27,
+ -1, -1, 26, -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+static const yytype_uint16 yyrline[] =
+{
+ 0, 103, 103, 103, 105, 105, 107, 109, 110, 111,
+ 112, 113, 114, 118, 122, 122, 122, 122, 122, 122,
+ 122, 122, 126, 127, 128, 129, 130, 131, 135, 136,
+ 142, 150, 156, 164, 174, 176, 177, 178, 179, 180,
+ 181, 184, 192, 198, 208, 214, 220, 223, 225, 236,
+ 237, 242, 251, 256, 264, 267, 269, 270, 271, 272,
+ 273, 276, 282, 293, 299, 309, 311, 316, 324, 332,
+ 335, 337, 338, 339, 344, 351, 358, 363, 371, 374,
+ 376, 377, 378, 381, 389, 396, 403, 409, 416, 418,
+ 419, 420, 423, 431, 433, 434, 437, 444, 446, 451,
+ 452, 455, 456, 457, 461, 462, 465, 466, 469, 470,
+ 471, 472, 473, 474, 475, 478, 479, 482, 483
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+ First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+ "$end", "error", "$undefined", "T_MAINMENU", "T_MENU", "T_ENDMENU",
+ "T_SOURCE", "T_CHOICE", "T_ENDCHOICE", "T_COMMENT", "T_CONFIG",
+ "T_MENUCONFIG", "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS",
+ "T_OPTIONAL", "T_PROMPT", "T_TYPE", "T_DEFAULT", "T_SELECT", "T_RANGE",
+ "T_VISIBLE", "T_OPTION", "T_ON", "T_WORD", "T_WORD_QUOTE", "T_UNEQUAL",
+ "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_EOL", "T_OR", "T_AND", "T_EQUAL",
+ "T_NOT", "$accept", "input", "start", "stmt_list", "option_name",
+ "common_stmt", "option_error", "config_entry_start", "config_stmt",
+ "menuconfig_entry_start", "menuconfig_stmt", "config_option_list",
+ "config_option", "symbol_option", "symbol_option_list",
+ "symbol_option_arg", "choice", "choice_entry", "choice_end",
+ "choice_stmt", "choice_option_list", "choice_option", "choice_block",
+ "if_entry", "if_end", "if_stmt", "if_block", "mainmenu_stmt", "menu",
+ "menu_entry", "menu_end", "menu_stmt", "menu_block", "source_stmt",
+ "comment", "comment_stmt", "help_start", "help", "depends_list",
+ "depends", "visibility_list", "visible", "prompt_stmt_opt", "prompt",
+ "end", "nl", "if_expr", "expr", "symbol", "word_opt", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+ token YYLEX-NUM. */
+static const yytype_uint16 yytoknum[] =
+{
+ 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const yytype_uint8 yyr1[] =
+{
+ 0, 36, 37, 37, 38, 38, 39, 39, 39, 39,
+ 39, 39, 39, 39, 40, 40, 40, 40, 40, 40,
+ 40, 40, 41, 41, 41, 41, 41, 41, 42, 42,
+ 43, 44, 45, 46, 47, 47, 47, 47, 47, 47,
+ 47, 48, 48, 48, 48, 48, 49, 50, 50, 51,
+ 51, 52, 53, 54, 55, 56, 56, 56, 56, 56,
+ 56, 57, 57, 57, 57, 58, 58, 59, 60, 61,
+ 62, 62, 62, 62, 63, 64, 65, 66, 67, 68,
+ 68, 68, 68, 69, 70, 71, 72, 73, 74, 74,
+ 74, 74, 75, 76, 76, 76, 77, 78, 78, 79,
+ 79, 80, 80, 80, 81, 81, 82, 82, 83, 83,
+ 83, 83, 83, 83, 83, 84, 84, 85, 85
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
+static const yytype_uint8 yyr2[] =
+{
+ 0, 2, 2, 1, 2, 1, 0, 2, 2, 2,
+ 2, 4, 4, 3, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 3, 2,
+ 3, 2, 3, 2, 0, 2, 2, 2, 2, 2,
+ 2, 3, 4, 4, 4, 5, 3, 0, 3, 0,
+ 2, 3, 2, 1, 3, 0, 2, 2, 2, 2,
+ 2, 4, 3, 2, 4, 0, 2, 3, 1, 3,
+ 0, 2, 2, 2, 3, 3, 3, 1, 3, 0,
+ 2, 2, 2, 3, 3, 2, 2, 2, 0, 2,
+ 2, 2, 4, 0, 2, 2, 2, 0, 2, 1,
+ 1, 2, 2, 2, 1, 2, 0, 2, 1, 3,
+ 3, 3, 2, 3, 3, 1, 1, 0, 1
+};
+
+/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
+ Performed when YYTABLE doesn't specify something else to do. Zero
+ means the default is an error. */
+static const yytype_uint8 yydefact[] =
+{
+ 6, 0, 104, 0, 3, 0, 6, 6, 99, 100,
+ 0, 1, 0, 0, 0, 0, 117, 0, 0, 0,
+ 0, 0, 0, 14, 18, 15, 16, 20, 17, 19,
+ 21, 0, 22, 0, 7, 34, 25, 34, 26, 55,
+ 65, 8, 70, 23, 93, 79, 9, 27, 88, 24,
+ 10, 0, 105, 2, 74, 13, 0, 101, 0, 118,
+ 0, 102, 0, 0, 0, 115, 116, 0, 0, 0,
+ 108, 103, 0, 0, 0, 0, 0, 0, 0, 88,
+ 0, 0, 75, 83, 51, 84, 30, 32, 0, 112,
+ 0, 0, 67, 0, 0, 11, 12, 0, 0, 0,
+ 0, 97, 0, 0, 0, 47, 0, 40, 39, 35,
+ 36, 0, 38, 37, 0, 0, 97, 0, 59, 60,
+ 56, 58, 57, 66, 54, 53, 71, 73, 69, 72,
+ 68, 106, 95, 0, 94, 80, 82, 78, 81, 77,
+ 90, 91, 89, 111, 113, 114, 110, 109, 29, 86,
+ 0, 106, 0, 106, 106, 106, 0, 0, 0, 87,
+ 63, 106, 0, 106, 0, 96, 0, 0, 41, 98,
+ 0, 0, 106, 49, 46, 28, 0, 62, 0, 107,
+ 92, 42, 43, 44, 0, 0, 48, 61, 64, 45,
+ 50
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const yytype_int16 yydefgoto[] =
+{
+ -1, 3, 4, 5, 33, 34, 108, 35, 36, 37,
+ 38, 74, 109, 110, 157, 186, 39, 40, 124, 41,
+ 76, 120, 77, 42, 128, 43, 78, 6, 44, 45,
+ 137, 46, 80, 47, 48, 49, 111, 112, 81, 113,
+ 79, 134, 152, 153, 50, 7, 165, 69, 70, 60
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ STATE-NUM. */
+#define YYPACT_NINF -90
+static const yytype_int16 yypact[] =
+{
+ 4, 42, -90, 96, -90, 111, -90, 15, -90, -90,
+ 75, -90, 82, 42, 104, 42, 110, 107, 42, 115,
+ 125, -4, 121, -90, -90, -90, -90, -90, -90, -90,
+ -90, 162, -90, 163, -90, -90, -90, -90, -90, -90,
+ -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
+ -90, 139, -90, -90, 138, -90, 142, -90, 143, -90,
+ 152, -90, 164, 167, 168, -90, -90, -4, -4, 77,
+ -18, -90, 177, 185, 33, 71, 195, 247, 236, -2,
+ 236, 171, -90, -90, -90, -90, -90, -90, 41, -90,
+ -4, -4, 138, 97, 97, -90, -90, 186, 187, 194,
+ 42, 42, -4, 196, 97, -90, 219, -90, -90, -90,
+ -90, 210, -90, -90, 204, 42, 42, 199, -90, -90,
+ -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
+ -90, 222, -90, 223, -90, -90, -90, -90, -90, -90,
+ -90, -90, -90, -90, 215, -90, -90, -90, -90, -90,
+ -4, 222, 228, 222, -5, 222, 97, 35, 229, -90,
+ -90, 222, 232, 222, -4, -90, 135, 233, -90, -90,
+ 234, 235, 222, 240, -90, -90, 237, -90, 239, -13,
+ -90, -90, -90, -90, 244, 42, -90, -90, -90, -90,
+ -90
+};
+
+/* YYPGOTO[NTERM-NUM]. */
+static const yytype_int16 yypgoto[] =
+{
+ -90, -90, 269, 271, -90, 23, -70, -90, -90, -90,
+ -90, 243, -90, -90, -90, -90, -90, -90, -90, -48,
+ -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
+ -90, -20, -90, -90, -90, -90, -90, 206, 205, -68,
+ -90, -90, 169, -1, 27, -7, 118, -66, -89, -90
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
+ positive, shift that token. If negative, reduce the rule which
+ number is the opposite. If YYTABLE_NINF, syntax error. */
+#define YYTABLE_NINF -86
+static const yytype_int16 yytable[] =
+{
+ 10, 88, 89, 54, 146, 147, 119, 1, 122, 164,
+ 93, 141, 56, 142, 58, 156, 94, 62, 1, 90,
+ 91, 131, 65, 66, 144, 145, 67, 90, 91, 132,
+ 127, 68, 136, -31, 97, 2, 154, -31, -31, -31,
+ -31, -31, -31, -31, -31, 98, 52, -31, -31, 99,
+ -31, 100, 101, 102, 103, 104, -31, 105, 129, 106,
+ 138, 173, 92, 141, 107, 142, 174, 172, 8, 9,
+ 143, -33, 97, 90, 91, -33, -33, -33, -33, -33,
+ -33, -33, -33, 98, 166, -33, -33, 99, -33, 100,
+ 101, 102, 103, 104, -33, 105, 11, 106, 179, 151,
+ 123, 126, 107, 135, 125, 130, 2, 139, 2, 90,
+ 91, -5, 12, 55, 161, 13, 14, 15, 16, 17,
+ 18, 19, 20, 65, 66, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 57, 59, 31, 61, -4,
+ 12, 63, 32, 13, 14, 15, 16, 17, 18, 19,
+ 20, 64, 71, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 72, 73, 31, 180, 90, 91, 52,
+ 32, -85, 97, 82, 83, -85, -85, -85, -85, -85,
+ -85, -85, -85, 84, 190, -85, -85, 99, -85, -85,
+ -85, -85, -85, -85, -85, 85, 97, 106, 86, 87,
+ -52, -52, 140, -52, -52, -52, -52, 98, 95, -52,
+ -52, 99, 114, 115, 116, 117, 96, 148, 149, 150,
+ 158, 106, 155, 159, 97, 163, 118, -76, -76, -76,
+ -76, -76, -76, -76, -76, 160, 164, -76, -76, 99,
+ 13, 14, 15, 16, 17, 18, 19, 20, 91, 106,
+ 21, 22, 14, 15, 140, 17, 18, 19, 20, 168,
+ 175, 21, 22, 177, 181, 182, 183, 32, 187, 167,
+ 188, 169, 170, 171, 185, 189, 53, 51, 32, 176,
+ 75, 178, 121, 0, 133, 162, 0, 0, 0, 0,
+ 184
+};
+
+#define yypact_value_is_default(yystate) \
+ ((yystate) == (-90))
+
+#define yytable_value_is_error(yytable_value) \
+ YYID (0)
+
+static const yytype_int16 yycheck[] =
+{
+ 1, 67, 68, 10, 93, 94, 76, 3, 76, 14,
+ 28, 81, 13, 81, 15, 104, 34, 18, 3, 32,
+ 33, 23, 26, 27, 90, 91, 30, 32, 33, 31,
+ 78, 35, 80, 0, 1, 31, 102, 4, 5, 6,
+ 7, 8, 9, 10, 11, 12, 31, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 78, 26,
+ 80, 26, 69, 133, 31, 133, 31, 156, 26, 27,
+ 29, 0, 1, 32, 33, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 150, 14, 15, 16, 17, 18,
+ 19, 20, 21, 22, 23, 24, 0, 26, 164, 100,
+ 77, 78, 31, 80, 77, 78, 31, 80, 31, 32,
+ 33, 0, 1, 31, 115, 4, 5, 6, 7, 8,
+ 9, 10, 11, 26, 27, 14, 15, 16, 17, 18,
+ 19, 20, 21, 22, 23, 31, 26, 26, 31, 0,
+ 1, 26, 31, 4, 5, 6, 7, 8, 9, 10,
+ 11, 26, 31, 14, 15, 16, 17, 18, 19, 20,
+ 21, 22, 23, 1, 1, 26, 31, 32, 33, 31,
+ 31, 0, 1, 31, 31, 4, 5, 6, 7, 8,
+ 9, 10, 11, 31, 185, 14, 15, 16, 17, 18,
+ 19, 20, 21, 22, 23, 31, 1, 26, 31, 31,
+ 5, 6, 31, 8, 9, 10, 11, 12, 31, 14,
+ 15, 16, 17, 18, 19, 20, 31, 31, 31, 25,
+ 1, 26, 26, 13, 1, 26, 31, 4, 5, 6,
+ 7, 8, 9, 10, 11, 31, 14, 14, 15, 16,
+ 4, 5, 6, 7, 8, 9, 10, 11, 33, 26,
+ 14, 15, 5, 6, 31, 8, 9, 10, 11, 31,
+ 31, 14, 15, 31, 31, 31, 31, 31, 31, 151,
+ 31, 153, 154, 155, 34, 31, 7, 6, 31, 161,
+ 37, 163, 76, -1, 79, 116, -1, -1, -1, -1,
+ 172
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+ symbol of state STATE-NUM. */
+static const yytype_uint8 yystos[] =
+{
+ 0, 3, 31, 37, 38, 39, 63, 81, 26, 27,
+ 79, 0, 1, 4, 5, 6, 7, 8, 9, 10,
+ 11, 14, 15, 16, 17, 18, 19, 20, 21, 22,
+ 23, 26, 31, 40, 41, 43, 44, 45, 46, 52,
+ 53, 55, 59, 61, 64, 65, 67, 69, 70, 71,
+ 80, 39, 31, 38, 81, 31, 79, 31, 79, 26,
+ 85, 31, 79, 26, 26, 26, 27, 30, 35, 83,
+ 84, 31, 1, 1, 47, 47, 56, 58, 62, 76,
+ 68, 74, 31, 31, 31, 31, 31, 31, 83, 83,
+ 32, 33, 81, 28, 34, 31, 31, 1, 12, 16,
+ 18, 19, 20, 21, 22, 24, 26, 31, 42, 48,
+ 49, 72, 73, 75, 17, 18, 19, 20, 31, 42,
+ 57, 73, 75, 41, 54, 80, 41, 55, 60, 67,
+ 80, 23, 31, 74, 77, 41, 55, 66, 67, 80,
+ 31, 42, 75, 29, 83, 83, 84, 84, 31, 31,
+ 25, 79, 78, 79, 83, 26, 84, 50, 1, 13,
+ 31, 79, 78, 26, 14, 82, 83, 82, 31, 82,
+ 82, 82, 84, 26, 31, 31, 82, 31, 82, 83,
+ 31, 31, 31, 31, 82, 34, 51, 31, 31, 31,
+ 79
+};
+
+#define yyerrok (yyerrstatus = 0)
+#define yyclearin (yychar = YYEMPTY)
+#define YYEMPTY (-2)
+#define YYEOF 0
+
+#define YYACCEPT goto yyacceptlab
+#define YYABORT goto yyabortlab
+#define YYERROR goto yyerrorlab
+
+
+/* Like YYERROR except do call yyerror. This remains here temporarily
+ to ease the transition to the new meaning of YYERROR, for GCC.
+ Once GCC version 2 has supplanted version 1, this can go. However,
+ YYFAIL appears to be in use. Nevertheless, it is formally deprecated
+ in Bison 2.4.2's NEWS entry, where a plan to phase it out is
+ discussed. */
+
+#define YYFAIL goto yyerrlab
+#if defined YYFAIL
+ /* This is here to suppress warnings from the GCC cpp's
+ -Wunused-macros. Normally we don't worry about that warning, but
+ some users do, and we want to make it easy for users to remove
+ YYFAIL uses, which will produce warnings from Bison 2.5. */
+#endif
+
+#define YYRECOVERING() (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value) \
+do \
+ if (yychar == YYEMPTY && yylen == 1) \
+ { \
+ yychar = (Token); \
+ yylval = (Value); \
+ YYPOPSTACK (1); \
+ goto yybackup; \
+ } \
+ else \
+ { \
+ yyerror (YY_("syntax error: cannot back up")); \
+ YYERROR; \
+ } \
+while (YYID (0))
+
+
+#define YYTERROR 1
+#define YYERRCODE 256
+
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+ If N is 0, then set CURRENT to the empty location which ends
+ the previous symbol: RHS[0] (always defined). */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N) \
+ do \
+ if (YYID (N)) \
+ { \
+ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
+ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
+ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
+ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
+ } \
+ else \
+ { \
+ (Current).first_line = (Current).last_line = \
+ YYRHSLOC (Rhs, 0).last_line; \
+ (Current).first_column = (Current).last_column = \
+ YYRHSLOC (Rhs, 0).last_column; \
+ } \
+ while (YYID (0))
+#endif
+
+
+/* This macro is provided for backward compatibility. */
+
+#ifndef YY_LOCATION_PRINT
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments. */
+
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (YYLEX_PARAM)
+#else
+# define YYLEX yylex ()
+#endif
+
+/* Enable debugging if requested. */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+# define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args) \
+do { \
+ if (yydebug) \
+ YYFPRINTF Args; \
+} while (YYID (0))
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yy_symbol_print (stderr, \
+ Type, Value); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
+} while (YYID (0))
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_value_print (yyoutput, yytype, yyvaluep)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE const * const yyvaluep;
+#endif
+{
+ if (!yyvaluep)
+ return;
+# ifdef YYPRINT
+ if (yytype < YYNTOKENS)
+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# else
+ YYUSE (yyoutput);
+# endif
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+}
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_print (yyoutput, yytype, yyvaluep)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE const * const yyvaluep;
+#endif
+{
+ if (yytype < YYNTOKENS)
+ YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+ else
+ YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+ yy_symbol_value_print (yyoutput, yytype, yyvaluep);
+ YYFPRINTF (yyoutput, ")");
+}
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included). |
+`------------------------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
+#else
+static void
+yy_stack_print (yybottom, yytop)
+ yytype_int16 *yybottom;
+ yytype_int16 *yytop;
+#endif
+{
+ YYFPRINTF (stderr, "Stack now");
+ for (; yybottom <= yytop; yybottom++)
+ {
+ int yybot = *yybottom;
+ YYFPRINTF (stderr, " %d", yybot);
+ }
+ YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top) \
+do { \
+ if (yydebug) \
+ yy_stack_print ((Bottom), (Top)); \
+} while (YYID (0))
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced. |
+`------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
+#else
+static void
+yy_reduce_print (yyvsp, yyrule)
+ YYSTYPE *yyvsp;
+ int yyrule;
+#endif
+{
+ int yynrhs = yyr2[yyrule];
+ int yyi;
+ unsigned long int yylno = yyrline[yyrule];
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+ yyrule - 1, yylno);
+ /* The symbols being reduced. */
+ for (yyi = 0; yyi < yynrhs; yyi++)
+ {
+ YYFPRINTF (stderr, " $%d = ", yyi + 1);
+ yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
+ &(yyvsp[(yyi + 1) - (yynrhs)])
+ );
+ YYFPRINTF (stderr, "\n");
+ }
+}
+
+# define YY_REDUCE_PRINT(Rule) \
+do { \
+ if (yydebug) \
+ yy_reduce_print (yyvsp, Rule); \
+} while (YYID (0))
+
+/* Nonzero means print parse trace. It is left uninitialized so that
+ multiple parsers can coexist. */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks. */
+#ifndef YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+ if the built-in stack extension method is used).
+
+ Do not make this value too large; the results are undefined if
+ YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+ evaluated with infinite-precision integer arithmetic. */
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+# if defined __GLIBC__ && defined _STRING_H
+# define yystrlen strlen
+# else
+/* Return the length of YYSTR. */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static YYSIZE_T
+yystrlen (const char *yystr)
+#else
+static YYSIZE_T
+yystrlen (yystr)
+ const char *yystr;
+#endif
+{
+ YYSIZE_T yylen;
+ for (yylen = 0; yystr[yylen]; yylen++)
+ continue;
+ return yylen;
+}
+# endif
+# endif
+
+# ifndef yystpcpy
+# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
+# define yystpcpy stpcpy
+# else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+ YYDEST. */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static char *
+yystpcpy (char *yydest, const char *yysrc)
+#else
+static char *
+yystpcpy (yydest, yysrc)
+ char *yydest;
+ const char *yysrc;
+#endif
+{
+ char *yyd = yydest;
+ const char *yys = yysrc;
+
+ while ((*yyd++ = *yys++) != '\0')
+ continue;
+
+ return yyd - 1;
+}
+# endif
+# endif
+
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+ quotes and backslashes, so that it's suitable for yyerror. The
+ heuristic is that double-quoting is unnecessary unless the string
+ contains an apostrophe, a comma, or backslash (other than
+ backslash-backslash). YYSTR is taken from yytname. If YYRES is
+ null, do not copy; instead, return the length of what the result
+ would have been. */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
+{
+ if (*yystr == '"')
+ {
+ YYSIZE_T yyn = 0;
+ char const *yyp = yystr;
+
+ for (;;)
+ switch (*++yyp)
+ {
+ case '\'':
+ case ',':
+ goto do_not_strip_quotes;
+
+ case '\\':
+ if (*++yyp != '\\')
+ goto do_not_strip_quotes;
+ /* Fall through. */
+ default:
+ if (yyres)
+ yyres[yyn] = *yyp;
+ yyn++;
+ break;
+
+ case '"':
+ if (yyres)
+ yyres[yyn] = '\0';
+ return yyn;
+ }
+ do_not_strip_quotes: ;
+ }
+
+ if (! yyres)
+ return yystrlen (yystr);
+
+ return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
+
+/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
+ about the unexpected token YYTOKEN for the state stack whose top is
+ YYSSP.
+
+ Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
+ not large enough to hold the message. In that case, also set
+ *YYMSG_ALLOC to the required number of bytes. Return 2 if the
+ required number of bytes is too large to store. */
+static int
+yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
+ yytype_int16 *yyssp, int yytoken)
+{
+ YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
+ YYSIZE_T yysize = yysize0;
+ YYSIZE_T yysize1;
+ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+ /* Internationalized format string. */
+ const char *yyformat = 0;
+ /* Arguments of yyformat. */
+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+ /* Number of reported tokens (one for the "unexpected", one per
+ "expected"). */
+ int yycount = 0;
+
+ /* There are many possibilities here to consider:
+ - Assume YYFAIL is not used. It's too flawed to consider. See
+ <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
+ for details. YYERROR is fine as it does not invoke this
+ function.
+ - If this state is a consistent state with a default action, then
+ the only way this function was invoked is if the default action
+ is an error action. In that case, don't check for expected
+ tokens because there are none.
+ - The only way there can be no lookahead present (in yychar) is if
+ this state is a consistent state with a default action. Thus,
+ detecting the absence of a lookahead is sufficient to determine
+ that there is no unexpected or expected token to report. In that
+ case, just report a simple "syntax error".
+ - Don't assume there isn't a lookahead just because this state is a
+ consistent state with a default action. There might have been a
+ previous inconsistent state, consistent state with a non-default
+ action, or user semantic action that manipulated yychar.
+ - Of course, the expected token list depends on states to have
+ correct lookahead information, and it depends on the parser not
+ to perform extra reductions after fetching a lookahead from the
+ scanner and before detecting a syntax error. Thus, state merging
+ (from LALR or IELR) and default reductions corrupt the expected
+ token list. However, the list is correct for canonical LR with
+ one exception: it will still contain any token that will not be
+ accepted due to an error action in a later state.
+ */
+ if (yytoken != YYEMPTY)
+ {
+ int yyn = yypact[*yyssp];
+ yyarg[yycount++] = yytname[yytoken];
+ if (!yypact_value_is_default (yyn))
+ {
+ /* Start YYX at -YYN if negative to avoid negative indexes in
+ YYCHECK. In other words, skip the first -YYN actions for
+ this state because they are default actions. */
+ int yyxbegin = yyn < 0 ? -yyn : 0;
+ /* Stay within bounds of both yycheck and yytname. */
+ int yychecklim = YYLAST - yyn + 1;
+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+ int yyx;
+
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
+ && !yytable_value_is_error (yytable[yyx + yyn]))
+ {
+ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+ {
+ yycount = 1;
+ yysize = yysize0;
+ break;
+ }
+ yyarg[yycount++] = yytname[yyx];
+ yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+ if (! (yysize <= yysize1
+ && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
+ }
+ }
+ }
+
+ switch (yycount)
+ {
+# define YYCASE_(N, S) \
+ case N: \
+ yyformat = S; \
+ break
+ YYCASE_(0, YY_("syntax error"));
+ YYCASE_(1, YY_("syntax error, unexpected %s"));
+ YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
+ YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
+ YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
+ YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
+# undef YYCASE_
+ }
+
+ yysize1 = yysize + yystrlen (yyformat);
+ if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
+
+ if (*yymsg_alloc < yysize)
+ {
+ *yymsg_alloc = 2 * yysize;
+ if (! (yysize <= *yymsg_alloc
+ && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
+ *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
+ return 1;
+ }
+
+ /* Avoid sprintf, as that infringes on the user's name space.
+ Don't have undefined behavior even if the translation
+ produced a string with the wrong number of "%s"s. */
+ {
+ char *yyp = *yymsg;
+ int yyi = 0;
+ while ((*yyp = *yyformat) != '\0')
+ if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyformat += 2;
+ }
+ else
+ {
+ yyp++;
+ yyformat++;
+ }
+ }
+ return 0;
+}
+#endif /* YYERROR_VERBOSE */
+
+/*-----------------------------------------------.
+| Release the memory associated to this symbol. |
+`-----------------------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep)
+ const char *yymsg;
+ int yytype;
+ YYSTYPE *yyvaluep;
+#endif
+{
+ YYUSE (yyvaluep);
+
+ if (!yymsg)
+ yymsg = "Deleting";
+ YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+ switch (yytype)
+ {
+ case 53: /* "choice_entry" */
+
+ {
+ fprintf(stderr, "%s:%d: missing end statement for this entry\n",
+ (yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno);
+ if (current_menu == (yyvaluep->menu))
+ menu_end_menu();
+};
+
+ break;
+ case 59: /* "if_entry" */
+
+ {
+ fprintf(stderr, "%s:%d: missing end statement for this entry\n",
+ (yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno);
+ if (current_menu == (yyvaluep->menu))
+ menu_end_menu();
+};
+
+ break;
+ case 65: /* "menu_entry" */
+
+ {
+ fprintf(stderr, "%s:%d: missing end statement for this entry\n",
+ (yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno);
+ if (current_menu == (yyvaluep->menu))
+ menu_end_menu();
+};
+
+ break;
+
+ default:
+ break;
+ }
+}
+
+
+/* Prevent warnings from -Wmissing-prototypes. */
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void *YYPARSE_PARAM);
+#else
+int yyparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+
+/* The lookahead symbol. */
+int yychar;
+
+/* The semantic value of the lookahead symbol. */
+YYSTYPE yylval;
+
+/* Number of syntax errors so far. */
+int yynerrs;
+
+
+/*----------.
+| yyparse. |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void *YYPARSE_PARAM)
+#else
+int
+yyparse (YYPARSE_PARAM)
+ void *YYPARSE_PARAM;
+#endif
+#else /* ! YYPARSE_PARAM */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void)
+#else
+int
+yyparse ()
+
+#endif
+#endif
+{
+ int yystate;
+ /* Number of tokens to shift before error messages enabled. */
+ int yyerrstatus;
+
+ /* The stacks and their tools:
+ `yyss': related to states.
+ `yyvs': related to semantic values.
+
+ Refer to the stacks thru separate pointers, to allow yyoverflow
+ to reallocate them elsewhere. */
+
+ /* The state stack. */
+ yytype_int16 yyssa[YYINITDEPTH];
+ yytype_int16 *yyss;
+ yytype_int16 *yyssp;
+
+ /* The semantic value stack. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs;
+ YYSTYPE *yyvsp;
+
+ YYSIZE_T yystacksize;
+
+ int yyn;
+ int yyresult;
+ /* Lookahead token as an internal (translated) token number. */
+ int yytoken;
+ /* The variables used to return semantic value and location from the
+ action routines. */
+ YYSTYPE yyval;
+
+#if YYERROR_VERBOSE
+ /* Buffer for error messages, and its allocated size. */
+ char yymsgbuf[128];
+ char *yymsg = yymsgbuf;
+ YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
+
+#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
+
+ /* The number of symbols on the RHS of the reduced rule.
+ Keep to zero when no symbol should be popped. */
+ int yylen = 0;
+
+ yytoken = 0;
+ yyss = yyssa;
+ yyvs = yyvsa;
+ yystacksize = YYINITDEPTH;
+
+ YYDPRINTF ((stderr, "Starting parse\n"));
+
+ yystate = 0;
+ yyerrstatus = 0;
+ yynerrs = 0;
+ yychar = YYEMPTY; /* Cause a token to be read. */
+
+ /* Initialize stack pointers.
+ Waste one element of value and location stack
+ so that they stay on the same level as the state stack.
+ The wasted elements are never initialized. */
+ yyssp = yyss;
+ yyvsp = yyvs;
+
+ goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate. |
+`------------------------------------------------------------*/
+ yynewstate:
+ /* In all cases, when you get here, the value and location stacks
+ have just been pushed. So pushing a state here evens the stacks. */
+ yyssp++;
+
+ yysetstate:
+ *yyssp = yystate;
+
+ if (yyss + yystacksize - 1 <= yyssp)
+ {
+ /* Get the current used size of the three stacks, in elements. */
+ YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+ {
+ /* Give user a chance to reallocate the stack. Use copies of
+ these so that the &'s don't force the real ones into
+ memory. */
+ YYSTYPE *yyvs1 = yyvs;
+ yytype_int16 *yyss1 = yyss;
+
+ /* Each stack pointer address is followed by the size of the
+ data in use in that stack, in bytes. This used to be a
+ conditional around just the two extra args, but that might
+ be undefined if yyoverflow is a macro. */
+ yyoverflow (YY_("memory exhausted"),
+ &yyss1, yysize * sizeof (*yyssp),
+ &yyvs1, yysize * sizeof (*yyvsp),
+ &yystacksize);
+
+ yyss = yyss1;
+ yyvs = yyvs1;
+ }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+ goto yyexhaustedlab;
+# else
+ /* Extend the stack our own way. */
+ if (YYMAXDEPTH <= yystacksize)
+ goto yyexhaustedlab;
+ yystacksize *= 2;
+ if (YYMAXDEPTH < yystacksize)
+ yystacksize = YYMAXDEPTH;
+
+ {
+ yytype_int16 *yyss1 = yyss;
+ union yyalloc *yyptr =
+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ if (! yyptr)
+ goto yyexhaustedlab;
+ YYSTACK_RELOCATE (yyss_alloc, yyss);
+ YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+# undef YYSTACK_RELOCATE
+ if (yyss1 != yyssa)
+ YYSTACK_FREE (yyss1);
+ }
+# endif
+#endif /* no yyoverflow */
+
+ yyssp = yyss + yysize - 1;
+ yyvsp = yyvs + yysize - 1;
+
+ YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+ (unsigned long int) yystacksize));
+
+ if (yyss + yystacksize - 1 <= yyssp)
+ YYABORT;
+ }
+
+ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+ if (yystate == YYFINAL)
+ YYACCEPT;
+
+ goto yybackup;
+
+/*-----------.
+| yybackup. |
+`-----------*/
+yybackup:
+
+ /* Do appropriate processing given the current state. Read a
+ lookahead token if we need one and don't already have one. */
+
+ /* First try to decide what to do without reference to lookahead token. */
+ yyn = yypact[yystate];
+ if (yypact_value_is_default (yyn))
+ goto yydefault;
+
+ /* Not known => get a lookahead token if don't already have one. */
+
+ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
+ if (yychar == YYEMPTY)
+ {
+ YYDPRINTF ((stderr, "Reading a token: "));
+ yychar = YYLEX;
+ }
+
+ if (yychar <= YYEOF)
+ {
+ yychar = yytoken = YYEOF;
+ YYDPRINTF ((stderr, "Now at end of input.\n"));
+ }
+ else
+ {
+ yytoken = YYTRANSLATE (yychar);
+ YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+ }
+
+ /* If the proper action on seeing token YYTOKEN is to reduce or to
+ detect an error, take that action. */
+ yyn += yytoken;
+ if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+ goto yydefault;
+ yyn = yytable[yyn];
+ if (yyn <= 0)
+ {
+ if (yytable_value_is_error (yyn))
+ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+
+ /* Count tokens shifted since error; after three, turn off error
+ status. */
+ if (yyerrstatus)
+ yyerrstatus--;
+
+ /* Shift the lookahead token. */
+ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+ /* Discard the shifted token. */
+ yychar = YYEMPTY;
+
+ yystate = yyn;
+ *++yyvsp = yylval;
+
+ goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state. |
+`-----------------------------------------------------------*/
+yydefault:
+ yyn = yydefact[yystate];
+ if (yyn == 0)
+ goto yyerrlab;
+ goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction. |
+`-----------------------------*/
+yyreduce:
+ /* yyn is the number of a rule to reduce with. */
+ yylen = yyr2[yyn];
+
+ /* If YYLEN is nonzero, implement the default value of the action:
+ `$$ = $1'.
+
+ Otherwise, the following line sets YYVAL to garbage.
+ This behavior is undocumented and Bison
+ users should not rely upon it. Assigning to YYVAL
+ unconditionally makes the parser a bit smaller, and it avoids a
+ GCC warning that YYVAL may be used uninitialized. */
+ yyval = yyvsp[1-yylen];
+
+
+ YY_REDUCE_PRINT (yyn);
+ switch (yyn)
+ {
+ case 10:
+
+ { zconf_error("unexpected end statement"); }
+ break;
+
+ case 11:
+
+ { zconf_error("unknown statement \"%s\"", (yyvsp[(2) - (4)].string)); }
+ break;
+
+ case 12:
+
+ {
+ zconf_error("unexpected option \"%s\"", kconf_id_strings + (yyvsp[(2) - (4)].id)->name);
+}
+ break;
+
+ case 13:
+
+ { zconf_error("invalid statement"); }
+ break;
+
+ case 28:
+
+ { zconf_error("unknown option \"%s\"", (yyvsp[(1) - (3)].string)); }
+ break;
+
+ case 29:
+
+ { zconf_error("invalid option"); }
+ break;
+
+ case 30:
+
+ {
+ struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), 0);
+ sym->flags |= SYMBOL_OPTIONAL;
+ menu_add_entry(sym);
+ printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string));
+}
+ break;
+
+ case 31:
+
+ {
+ menu_end_entry();
+ printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
+}
+ break;
+
+ case 32:
+
+ {
+ struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), 0);
+ sym->flags |= SYMBOL_OPTIONAL;
+ menu_add_entry(sym);
+ printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string));
+}
+ break;
+
+ case 33:
+
+ {
+ if (current_entry->prompt)
+ current_entry->prompt->type = P_MENU;
+ else
+ zconfprint("warning: menuconfig statement without prompt");
+ menu_end_entry();
+ printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
+}
+ break;
+
+ case 41:
+
+ {
+ menu_set_type((yyvsp[(1) - (3)].id)->stype);
+ printd(DEBUG_PARSE, "%s:%d:type(%u)\n",
+ zconf_curname(), zconf_lineno(),
+ (yyvsp[(1) - (3)].id)->stype);
+}
+ break;
+
+ case 42:
+
+ {
+ menu_add_prompt(P_PROMPT, (yyvsp[(2) - (4)].string), (yyvsp[(3) - (4)].expr));
+ printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
+}
+ break;
+
+ case 43:
+
+ {
+ menu_add_expr(P_DEFAULT, (yyvsp[(2) - (4)].expr), (yyvsp[(3) - (4)].expr));
+ if ((yyvsp[(1) - (4)].id)->stype != S_UNKNOWN)
+ menu_set_type((yyvsp[(1) - (4)].id)->stype);
+ printd(DEBUG_PARSE, "%s:%d:default(%u)\n",
+ zconf_curname(), zconf_lineno(),
+ (yyvsp[(1) - (4)].id)->stype);
+}
+ break;
+
+ case 44:
+
+ {
+ menu_add_symbol(P_SELECT, sym_lookup((yyvsp[(2) - (4)].string), 0), (yyvsp[(3) - (4)].expr));
+ printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno());
+}
+ break;
+
+ case 45:
+
+ {
+ menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,(yyvsp[(2) - (5)].symbol), (yyvsp[(3) - (5)].symbol)), (yyvsp[(4) - (5)].expr));
+ printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno());
+}
+ break;
+
+ case 48:
+
+ {
+ const struct kconf_id *id = kconf_id_lookup((yyvsp[(2) - (3)].string), strlen((yyvsp[(2) - (3)].string)));
+ if (id && id->flags & TF_OPTION)
+ menu_add_option(id->token, (yyvsp[(3) - (3)].string));
+ else
+ zconfprint("warning: ignoring unknown option %s", (yyvsp[(2) - (3)].string));
+ free((yyvsp[(2) - (3)].string));
+}
+ break;
+
+ case 49:
+
+ { (yyval.string) = NULL; }
+ break;
+
+ case 50:
+
+ { (yyval.string) = (yyvsp[(2) - (2)].string); }
+ break;
+
+ case 51:
+
+ {
+ struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), SYMBOL_CHOICE);
+ sym->flags |= SYMBOL_AUTO;
+ menu_add_entry(sym);
+ menu_add_expr(P_CHOICE, NULL, NULL);
+ printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno());
+}
+ break;
+
+ case 52:
+
+ {
+ (yyval.menu) = menu_add_menu();
+}
+ break;
+
+ case 53:
+
+ {
+ if (zconf_endtoken((yyvsp[(1) - (1)].id), T_CHOICE, T_ENDCHOICE)) {
+ menu_end_menu();
+ printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno());
+ }
+}
+ break;
+
+ case 61:
+
+ {
+ menu_add_prompt(P_PROMPT, (yyvsp[(2) - (4)].string), (yyvsp[(3) - (4)].expr));
+ printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
+}
+ break;
+
+ case 62:
+
+ {
+ if ((yyvsp[(1) - (3)].id)->stype == S_BOOLEAN || (yyvsp[(1) - (3)].id)->stype == S_TRISTATE) {
+ menu_set_type((yyvsp[(1) - (3)].id)->stype);
+ printd(DEBUG_PARSE, "%s:%d:type(%u)\n",
+ zconf_curname(), zconf_lineno(),
+ (yyvsp[(1) - (3)].id)->stype);
+ } else
+ YYERROR;
+}
+ break;
+
+ case 63:
+
+ {
+ current_entry->sym->flags |= SYMBOL_OPTIONAL;
+ printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno());
+}
+ break;
+
+ case 64:
+
+ {
+ if ((yyvsp[(1) - (4)].id)->stype == S_UNKNOWN) {
+ menu_add_symbol(P_DEFAULT, sym_lookup((yyvsp[(2) - (4)].string), 0), (yyvsp[(3) - (4)].expr));
+ printd(DEBUG_PARSE, "%s:%d:default\n",
+ zconf_curname(), zconf_lineno());
+ } else
+ YYERROR;
+}
+ break;
+
+ case 67:
+
+ {
+ printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno());
+ menu_add_entry(NULL);
+ menu_add_dep((yyvsp[(2) - (3)].expr));
+ (yyval.menu) = menu_add_menu();
+}
+ break;
+
+ case 68:
+
+ {
+ if (zconf_endtoken((yyvsp[(1) - (1)].id), T_IF, T_ENDIF)) {
+ menu_end_menu();
+ printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno());
+ }
+}
+ break;
+
+ case 74:
+
+ {
+ menu_add_prompt(P_MENU, (yyvsp[(2) - (3)].string), NULL);
+}
+ break;
+
+ case 75:
+
+ {
+ menu_add_entry(NULL);
+ menu_add_prompt(P_MENU, (yyvsp[(2) - (3)].string), NULL);
+ printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno());
+}
+ break;
+
+ case 76:
+
+ {
+ (yyval.menu) = menu_add_menu();
+}
+ break;
+
+ case 77:
+
+ {
+ if (zconf_endtoken((yyvsp[(1) - (1)].id), T_MENU, T_ENDMENU)) {
+ menu_end_menu();
+ printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno());
+ }
+}
+ break;
+
+ case 83:
+
+ {
+ printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string));
+ zconf_nextfile((yyvsp[(2) - (3)].string));
+}
+ break;
+
+ case 84:
+
+ {
+ menu_add_entry(NULL);
+ menu_add_prompt(P_COMMENT, (yyvsp[(2) - (3)].string), NULL);
+ printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno());
+}
+ break;
+
+ case 85:
+
+ {
+ menu_end_entry();
+}
+ break;
+
+ case 86:
+
+ {
+ printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno());
+ zconf_starthelp();
+}
+ break;
+
+ case 87:
+
+ {
+ current_entry->help = (yyvsp[(2) - (2)].string);
+}
+ break;
+
+ case 92:
+
+ {
+ menu_add_dep((yyvsp[(3) - (4)].expr));
+ printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno());
+}
+ break;
+
+ case 96:
+
+ {
+ menu_add_visibility((yyvsp[(2) - (2)].expr));
+}
+ break;
+
+ case 98:
+
+ {
+ menu_add_prompt(P_PROMPT, (yyvsp[(1) - (2)].string), (yyvsp[(2) - (2)].expr));
+}
+ break;
+
+ case 101:
+
+ { (yyval.id) = (yyvsp[(1) - (2)].id); }
+ break;
+
+ case 102:
+
+ { (yyval.id) = (yyvsp[(1) - (2)].id); }
+ break;
+
+ case 103:
+
+ { (yyval.id) = (yyvsp[(1) - (2)].id); }
+ break;
+
+ case 106:
+
+ { (yyval.expr) = NULL; }
+ break;
+
+ case 107:
+
+ { (yyval.expr) = (yyvsp[(2) - (2)].expr); }
+ break;
+
+ case 108:
+
+ { (yyval.expr) = expr_alloc_symbol((yyvsp[(1) - (1)].symbol)); }
+ break;
+
+ case 109:
+
+ { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); }
+ break;
+
+ case 110:
+
+ { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); }
+ break;
+
+ case 111:
+
+ { (yyval.expr) = (yyvsp[(2) - (3)].expr); }
+ break;
+
+ case 112:
+
+ { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[(2) - (2)].expr)); }
+ break;
+
+ case 113:
+
+ { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
+ break;
+
+ case 114:
+
+ { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
+ break;
+
+ case 115:
+
+ { (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), 0); free((yyvsp[(1) - (1)].string)); }
+ break;
+
+ case 116:
+
+ { (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), SYMBOL_CONST); free((yyvsp[(1) - (1)].string)); }
+ break;
+
+ case 117:
+
+ { (yyval.string) = NULL; }
+ break;
+
+
+
+ default: break;
+ }
+ /* User semantic actions sometimes alter yychar, and that requires
+ that yytoken be updated with the new translation. We take the
+ approach of translating immediately before every use of yytoken.
+ One alternative is translating here after every semantic action,
+ but that translation would be missed if the semantic action invokes
+ YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
+ if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
+ incorrect destructor might then be invoked immediately. In the
+ case of YYERROR or YYBACKUP, subsequent parser actions might lead
+ to an incorrect destructor call or verbose syntax error message
+ before the lookahead is translated. */
+ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ YY_STACK_PRINT (yyss, yyssp);
+
+ *++yyvsp = yyval;
+
+ /* Now `shift' the result of the reduction. Determine what state
+ that goes to, based on the state we popped back to and the rule
+ number reduced by. */
+
+ yyn = yyr1[yyn];
+
+ yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+ if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+ yystate = yytable[yystate];
+ else
+ yystate = yydefgoto[yyn - YYNTOKENS];
+
+ goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+ /* Make sure we have latest lookahead translation. See comments at
+ user semantic actions for why this is necessary. */
+ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
+
+ /* If not already recovering from an error, report this error. */
+ if (!yyerrstatus)
+ {
+ ++yynerrs;
+#if ! YYERROR_VERBOSE
+ yyerror (YY_("syntax error"));
+#else
+# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
+ yyssp, yytoken)
+ {
+ char const *yymsgp = YY_("syntax error");
+ int yysyntax_error_status;
+ yysyntax_error_status = YYSYNTAX_ERROR;
+ if (yysyntax_error_status == 0)
+ yymsgp = yymsg;
+ else if (yysyntax_error_status == 1)
+ {
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+ yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
+ if (!yymsg)
+ {
+ yymsg = yymsgbuf;
+ yymsg_alloc = sizeof yymsgbuf;
+ yysyntax_error_status = 2;
+ }
+ else
+ {
+ yysyntax_error_status = YYSYNTAX_ERROR;
+ yymsgp = yymsg;
+ }
+ }
+ yyerror (yymsgp);
+ if (yysyntax_error_status == 2)
+ goto yyexhaustedlab;
+ }
+# undef YYSYNTAX_ERROR
+#endif
+ }
+
+
+
+ if (yyerrstatus == 3)
+ {
+ /* If just tried and failed to reuse lookahead token after an
+ error, discard it. */
+
+ if (yychar <= YYEOF)
+ {
+ /* Return failure if at end of input. */
+ if (yychar == YYEOF)
+ YYABORT;
+ }
+ else
+ {
+ yydestruct ("Error: discarding",
+ yytoken, &yylval);
+ yychar = YYEMPTY;
+ }
+ }
+
+ /* Else will try to reuse lookahead token after shifting the error
+ token. */
+ goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR. |
+`---------------------------------------------------*/
+yyerrorlab:
+
+ /* Pacify compilers like GCC when the user code never invokes
+ YYERROR and the label yyerrorlab therefore never appears in user
+ code. */
+ if (/*CONSTCOND*/ 0)
+ goto yyerrorlab;
+
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYERROR. */
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ YY_STACK_PRINT (yyss, yyssp);
+ yystate = *yyssp;
+ goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR. |
+`-------------------------------------------------------------*/
+yyerrlab1:
+ yyerrstatus = 3; /* Each real token shifted decrements this. */
+
+ for (;;)
+ {
+ yyn = yypact[yystate];
+ if (!yypact_value_is_default (yyn))
+ {
+ yyn += YYTERROR;
+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+ {
+ yyn = yytable[yyn];
+ if (0 < yyn)
+ break;
+ }
+ }
+
+ /* Pop the current state because it cannot handle the error token. */
+ if (yyssp == yyss)
+ YYABORT;
+
+
+ yydestruct ("Error: popping",
+ yystos[yystate], yyvsp);
+ YYPOPSTACK (1);
+ yystate = *yyssp;
+ YY_STACK_PRINT (yyss, yyssp);
+ }
+
+ *++yyvsp = yylval;
+
+
+ /* Shift the error token. */
+ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
+ yystate = yyn;
+ goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here. |
+`-------------------------------------*/
+yyacceptlab:
+ yyresult = 0;
+ goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here. |
+`-----------------------------------*/
+yyabortlab:
+ yyresult = 1;
+ goto yyreturn;
+
+#if !defined(yyoverflow) || YYERROR_VERBOSE
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here. |
+`-------------------------------------------------*/
+yyexhaustedlab:
+ yyerror (YY_("memory exhausted"));
+ yyresult = 2;
+ /* Fall through. */
+#endif
+
+yyreturn:
+ if (yychar != YYEMPTY)
+ {
+ /* Make sure we have latest lookahead translation. See comments at
+ user semantic actions for why this is necessary. */
+ yytoken = YYTRANSLATE (yychar);
+ yydestruct ("Cleanup: discarding lookahead",
+ yytoken, &yylval);
+ }
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYABORT or YYACCEPT. */
+ YYPOPSTACK (yylen);
+ YY_STACK_PRINT (yyss, yyssp);
+ while (yyssp != yyss)
+ {
+ yydestruct ("Cleanup: popping",
+ yystos[*yyssp], yyvsp);
+ YYPOPSTACK (1);
+ }
+#ifndef yyoverflow
+ if (yyss != yyssa)
+ YYSTACK_FREE (yyss);
+#endif
+#if YYERROR_VERBOSE
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+#endif
+ /* Make sure YYID is used. */
+ return YYID (yyresult);
+}
+
+
+
+
+
+void conf_parse(const char *name)
+{
+ struct symbol *sym;
+ int i;
+
+ zconf_initscan(name);
+
+ sym_init();
+ _menu_init();
+ rootmenu.prompt = menu_add_prompt(P_MENU, "Linux Kernel Configuration", NULL);
+
+ if (getenv("ZCONF_DEBUG"))
+ zconfdebug = 1;
+ zconfparse();
+ if (zconfnerrs)
+ exit(1);
+ if (!modules_sym)
+ modules_sym = sym_find( "n" );
+
+ rootmenu.prompt->text = _(rootmenu.prompt->text);
+ rootmenu.prompt->text = sym_expand_string_value(rootmenu.prompt->text);
+
+ menu_finalize(&rootmenu);
+ for_all_symbols(i, sym) {
+ if (sym_check_deps(sym))
+ zconfnerrs++;
+ }
+ if (zconfnerrs)
+ exit(1);
+ sym_set_change_count(1);
+}
+
+static const char *zconf_tokenname(int token)
+{
+ switch (token) {
+ case T_MENU: return "menu";
+ case T_ENDMENU: return "endmenu";
+ case T_CHOICE: return "choice";
+ case T_ENDCHOICE: return "endchoice";
+ case T_IF: return "if";
+ case T_ENDIF: return "endif";
+ case T_DEPENDS: return "depends";
+ case T_VISIBLE: return "visible";
+ }
+ return "<token>";
+}
+
+static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken)
+{
+ if (id->token != endtoken) {
+ zconf_error("unexpected '%s' within %s block",
+ kconf_id_strings + id->name, zconf_tokenname(starttoken));
+ zconfnerrs++;
+ return false;
+ }
+ if (current_menu->file != current_file) {
+ zconf_error("'%s' in different file than '%s'",
+ kconf_id_strings + id->name, zconf_tokenname(starttoken));
+ fprintf(stderr, "%s:%d: location of the '%s'\n",
+ current_menu->file->name, current_menu->lineno,
+ zconf_tokenname(starttoken));
+ zconfnerrs++;
+ return false;
+ }
+ return true;
+}
+
+static void zconfprint(const char *err, ...)
+{
+ va_list ap;
+
+ fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno());
+ va_start(ap, err);
+ vfprintf(stderr, err, ap);
+ va_end(ap);
+ fprintf(stderr, "\n");
+}
+
+static void zconf_error(const char *err, ...)
+{
+ va_list ap;
+
+ zconfnerrs++;
+ fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno());
+ va_start(ap, err);
+ vfprintf(stderr, err, ap);
+ va_end(ap);
+ fprintf(stderr, "\n");
+}
+
+static void zconferror(const char *err)
+{
+ fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err);
+}
+
+static void print_quoted_string(FILE *out, const char *str)
+{
+ const char *p;
+ int len;
+
+ putc('"', out);
+ while ((p = strchr(str, '"'))) {
+ len = p - str;
+ if (len)
+ fprintf(out, "%.*s", len, str);
+ fputs("\\\"", out);
+ str = p + 1;
+ }
+ fputs(str, out);
+ putc('"', out);
+}
+
+static void print_symbol(FILE *out, struct menu *menu)
+{
+ struct symbol *sym = menu->sym;
+ struct property *prop;
+
+ if (sym_is_choice(sym))
+ fprintf(out, "\nchoice\n");
+ else
+ fprintf(out, "\nconfig %s\n", sym->name);
+ switch (sym->type) {
+ case S_BOOLEAN:
+ fputs(" boolean\n", out);
+ break;
+ case S_TRISTATE:
+ fputs(" tristate\n", out);
+ break;
+ case S_STRING:
+ fputs(" string\n", out);
+ break;
+ case S_INT:
+ fputs(" integer\n", out);
+ break;
+ case S_HEX:
+ fputs(" hex\n", out);
+ break;
+ default:
+ fputs(" ???\n", out);
+ break;
+ }
+ for (prop = sym->prop; prop; prop = prop->next) {
+ if (prop->menu != menu)
+ continue;
+ switch (prop->type) {
+ case P_PROMPT:
+ fputs(" prompt ", out);
+ print_quoted_string(out, prop->text);
+ if (!expr_is_yes(prop->visible.expr)) {
+ fputs(" if ", out);
+ expr_fprint(prop->visible.expr, out);
+ }
+ fputc('\n', out);
+ break;
+ case P_DEFAULT:
+ fputs( " default ", out);
+ expr_fprint(prop->expr, out);
+ if (!expr_is_yes(prop->visible.expr)) {
+ fputs(" if ", out);
+ expr_fprint(prop->visible.expr, out);
+ }
+ fputc('\n', out);
+ break;
+ case P_CHOICE:
+ fputs(" #choice value\n", out);
+ break;
+ case P_SELECT:
+ fputs( " select ", out);
+ expr_fprint(prop->expr, out);
+ fputc('\n', out);
+ break;
+ case P_RANGE:
+ fputs( " range ", out);
+ expr_fprint(prop->expr, out);
+ fputc('\n', out);
+ break;
+ case P_MENU:
+ fputs( " menu ", out);
+ print_quoted_string(out, prop->text);
+ fputc('\n', out);
+ break;
+ default:
+ fprintf(out, " unknown prop %d!\n", prop->type);
+ break;
+ }
+ }
+ if (menu->help) {
+ int len = strlen(menu->help);
+ while (menu->help[--len] == '\n')
+ menu->help[len] = 0;
+ fprintf(out, " help\n%s\n", menu->help);
+ }
+}
+
+void zconfdump(FILE *out)
+{
+ struct property *prop;
+ struct symbol *sym;
+ struct menu *menu;
+
+ menu = rootmenu.list;
+ while (menu) {
+ if ((sym = menu->sym))
+ print_symbol(out, menu);
+ else if ((prop = menu->prompt)) {
+ switch (prop->type) {
+ case P_COMMENT:
+ fputs("\ncomment ", out);
+ print_quoted_string(out, prop->text);
+ fputs("\n", out);
+ break;
+ case P_MENU:
+ fputs("\nmenu ", out);
+ print_quoted_string(out, prop->text);
+ fputs("\n", out);
+ break;
+ default:
+ ;
+ }
+ if (!expr_is_yes(prop->visible.expr)) {
+ fputs(" depends ", out);
+ expr_fprint(prop->visible.expr, out);
+ fputc('\n', out);
+ }
+ }
+
+ if (menu->list)
+ menu = menu->list;
+ else if (menu->next)
+ menu = menu->next;
+ else while ((menu = menu->parent)) {
+ if (menu->prompt && menu->prompt->type == P_MENU)
+ fputs("\nendmenu\n", out);
+ if (menu->next) {
+ menu = menu->next;
+ break;
+ }
+ }
+ }
+}
+
+#include "zconf.lex.c"
+#include "util.c"
+#include "confdata.c"
+#include "expr.c"
+#include "symbol.c"
+#include "menu.c"
+
diff --git a/scripts/kconfig/zconf.y b/scripts/kconfig/zconf.y
new file mode 100644
index 0000000..0f683cf
--- /dev/null
+++ b/scripts/kconfig/zconf.y
@@ -0,0 +1,733 @@
+%{
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <ctype.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdbool.h>
+
+#include "lkc.h"
+
+#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt)
+
+#define PRINTD 0x0001
+#define DEBUG_PARSE 0x0002
+
+int cdebug = PRINTD;
+
+extern int zconflex(void);
+static void zconfprint(const char *err, ...);
+static void zconf_error(const char *err, ...);
+static void zconferror(const char *err);
+static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken);
+
+struct symbol *symbol_hash[SYMBOL_HASHSIZE];
+
+static struct menu *current_menu, *current_entry;
+
+%}
+%expect 30
+
+%union
+{
+ char *string;
+ struct file *file;
+ struct symbol *symbol;
+ struct expr *expr;
+ struct menu *menu;
+ const struct kconf_id *id;
+}
+
+%token <id>T_MAINMENU
+%token <id>T_MENU
+%token <id>T_ENDMENU
+%token <id>T_SOURCE
+%token <id>T_CHOICE
+%token <id>T_ENDCHOICE
+%token <id>T_COMMENT
+%token <id>T_CONFIG
+%token <id>T_MENUCONFIG
+%token <id>T_HELP
+%token <string> T_HELPTEXT
+%token <id>T_IF
+%token <id>T_ENDIF
+%token <id>T_DEPENDS
+%token <id>T_OPTIONAL
+%token <id>T_PROMPT
+%token <id>T_TYPE
+%token <id>T_DEFAULT
+%token <id>T_SELECT
+%token <id>T_RANGE
+%token <id>T_VISIBLE
+%token <id>T_OPTION
+%token <id>T_ON
+%token <string> T_WORD
+%token <string> T_WORD_QUOTE
+%token T_UNEQUAL
+%token T_CLOSE_PAREN
+%token T_OPEN_PAREN
+%token T_EOL
+
+%left T_OR
+%left T_AND
+%left T_EQUAL T_UNEQUAL
+%nonassoc T_NOT
+
+%type <string> prompt
+%type <symbol> symbol
+%type <expr> expr
+%type <expr> if_expr
+%type <id> end
+%type <id> option_name
+%type <menu> if_entry menu_entry choice_entry
+%type <string> symbol_option_arg word_opt
+
+%destructor {
+ fprintf(stderr, "%s:%d: missing end statement for this entry\n",
+ $$->file->name, $$->lineno);
+ if (current_menu == $$)
+ menu_end_menu();
+} if_entry menu_entry choice_entry
+
+%{
+/* Include zconf.hash.c here so it can see the token constants. */
+#include "zconf.hash.c"
+%}
+
+%%
+input: nl start | start;
+
+start: mainmenu_stmt stmt_list | stmt_list;
+
+stmt_list:
+ /* empty */
+ | stmt_list common_stmt
+ | stmt_list choice_stmt
+ | stmt_list menu_stmt
+ | stmt_list end { zconf_error("unexpected end statement"); }
+ | stmt_list T_WORD error T_EOL { zconf_error("unknown statement \"%s\"", $2); }
+ | stmt_list option_name error T_EOL
+{
+ zconf_error("unexpected option \"%s\"", kconf_id_strings + $2->name);
+}
+ | stmt_list error T_EOL { zconf_error("invalid statement"); }
+;
+
+option_name:
+ T_DEPENDS | T_PROMPT | T_TYPE | T_SELECT | T_OPTIONAL | T_RANGE | T_DEFAULT | T_VISIBLE
+;
+
+common_stmt:
+ T_EOL
+ | if_stmt
+ | comment_stmt
+ | config_stmt
+ | menuconfig_stmt
+ | source_stmt
+;
+
+option_error:
+ T_WORD error T_EOL { zconf_error("unknown option \"%s\"", $1); }
+ | error T_EOL { zconf_error("invalid option"); }
+;
+
+
+/* config/menuconfig entry */
+
+config_entry_start: T_CONFIG T_WORD T_EOL
+{
+ struct symbol *sym = sym_lookup($2, 0);
+ sym->flags |= SYMBOL_OPTIONAL;
+ menu_add_entry(sym);
+ printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), $2);
+};
+
+config_stmt: config_entry_start config_option_list
+{
+ menu_end_entry();
+ printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
+};
+
+menuconfig_entry_start: T_MENUCONFIG T_WORD T_EOL
+{
+ struct symbol *sym = sym_lookup($2, 0);
+ sym->flags |= SYMBOL_OPTIONAL;
+ menu_add_entry(sym);
+ printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), $2);
+};
+
+menuconfig_stmt: menuconfig_entry_start config_option_list
+{
+ if (current_entry->prompt)
+ current_entry->prompt->type = P_MENU;
+ else
+ zconfprint("warning: menuconfig statement without prompt");
+ menu_end_entry();
+ printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
+};
+
+config_option_list:
+ /* empty */
+ | config_option_list config_option
+ | config_option_list symbol_option
+ | config_option_list depends
+ | config_option_list help
+ | config_option_list option_error
+ | config_option_list T_EOL
+;
+
+config_option: T_TYPE prompt_stmt_opt T_EOL
+{
+ menu_set_type($1->stype);
+ printd(DEBUG_PARSE, "%s:%d:type(%u)\n",
+ zconf_curname(), zconf_lineno(),
+ $1->stype);
+};
+
+config_option: T_PROMPT prompt if_expr T_EOL
+{
+ menu_add_prompt(P_PROMPT, $2, $3);
+ printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
+};
+
+config_option: T_DEFAULT expr if_expr T_EOL
+{
+ menu_add_expr(P_DEFAULT, $2, $3);
+ if ($1->stype != S_UNKNOWN)
+ menu_set_type($1->stype);
+ printd(DEBUG_PARSE, "%s:%d:default(%u)\n",
+ zconf_curname(), zconf_lineno(),
+ $1->stype);
+};
+
+config_option: T_SELECT T_WORD if_expr T_EOL
+{
+ menu_add_symbol(P_SELECT, sym_lookup($2, 0), $3);
+ printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno());
+};
+
+config_option: T_RANGE symbol symbol if_expr T_EOL
+{
+ menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,$2, $3), $4);
+ printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno());
+};
+
+symbol_option: T_OPTION symbol_option_list T_EOL
+;
+
+symbol_option_list:
+ /* empty */
+ | symbol_option_list T_WORD symbol_option_arg
+{
+ const struct kconf_id *id = kconf_id_lookup($2, strlen($2));
+ if (id && id->flags & TF_OPTION)
+ menu_add_option(id->token, $3);
+ else
+ zconfprint("warning: ignoring unknown option %s", $2);
+ free($2);
+};
+
+symbol_option_arg:
+ /* empty */ { $$ = NULL; }
+ | T_EQUAL prompt { $$ = $2; }
+;
+
+/* choice entry */
+
+choice: T_CHOICE word_opt T_EOL
+{
+ struct symbol *sym = sym_lookup($2, SYMBOL_CHOICE);
+ sym->flags |= SYMBOL_AUTO;
+ menu_add_entry(sym);
+ menu_add_expr(P_CHOICE, NULL, NULL);
+ printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno());
+};
+
+choice_entry: choice choice_option_list
+{
+ $$ = menu_add_menu();
+};
+
+choice_end: end
+{
+ if (zconf_endtoken($1, T_CHOICE, T_ENDCHOICE)) {
+ menu_end_menu();
+ printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno());
+ }
+};
+
+choice_stmt: choice_entry choice_block choice_end
+;
+
+choice_option_list:
+ /* empty */
+ | choice_option_list choice_option
+ | choice_option_list depends
+ | choice_option_list help
+ | choice_option_list T_EOL
+ | choice_option_list option_error
+;
+
+choice_option: T_PROMPT prompt if_expr T_EOL
+{
+ menu_add_prompt(P_PROMPT, $2, $3);
+ printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
+};
+
+choice_option: T_TYPE prompt_stmt_opt T_EOL
+{
+ if ($1->stype == S_BOOLEAN || $1->stype == S_TRISTATE) {
+ menu_set_type($1->stype);
+ printd(DEBUG_PARSE, "%s:%d:type(%u)\n",
+ zconf_curname(), zconf_lineno(),
+ $1->stype);
+ } else
+ YYERROR;
+};
+
+choice_option: T_OPTIONAL T_EOL
+{
+ current_entry->sym->flags |= SYMBOL_OPTIONAL;
+ printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno());
+};
+
+choice_option: T_DEFAULT T_WORD if_expr T_EOL
+{
+ if ($1->stype == S_UNKNOWN) {
+ menu_add_symbol(P_DEFAULT, sym_lookup($2, 0), $3);
+ printd(DEBUG_PARSE, "%s:%d:default\n",
+ zconf_curname(), zconf_lineno());
+ } else
+ YYERROR;
+};
+
+choice_block:
+ /* empty */
+ | choice_block common_stmt
+;
+
+/* if entry */
+
+if_entry: T_IF expr nl
+{
+ printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno());
+ menu_add_entry(NULL);
+ menu_add_dep($2);
+ $$ = menu_add_menu();
+};
+
+if_end: end
+{
+ if (zconf_endtoken($1, T_IF, T_ENDIF)) {
+ menu_end_menu();
+ printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno());
+ }
+};
+
+if_stmt: if_entry if_block if_end
+;
+
+if_block:
+ /* empty */
+ | if_block common_stmt
+ | if_block menu_stmt
+ | if_block choice_stmt
+;
+
+/* mainmenu entry */
+
+mainmenu_stmt: T_MAINMENU prompt nl
+{
+ menu_add_prompt(P_MENU, $2, NULL);
+};
+
+/* menu entry */
+
+menu: T_MENU prompt T_EOL
+{
+ menu_add_entry(NULL);
+ menu_add_prompt(P_MENU, $2, NULL);
+ printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno());
+};
+
+menu_entry: menu visibility_list depends_list
+{
+ $$ = menu_add_menu();
+};
+
+menu_end: end
+{
+ if (zconf_endtoken($1, T_MENU, T_ENDMENU)) {
+ menu_end_menu();
+ printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno());
+ }
+};
+
+menu_stmt: menu_entry menu_block menu_end
+;
+
+menu_block:
+ /* empty */
+ | menu_block common_stmt
+ | menu_block menu_stmt
+ | menu_block choice_stmt
+;
+
+source_stmt: T_SOURCE prompt T_EOL
+{
+ printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), $2);
+ zconf_nextfile($2);
+};
+
+/* comment entry */
+
+comment: T_COMMENT prompt T_EOL
+{
+ menu_add_entry(NULL);
+ menu_add_prompt(P_COMMENT, $2, NULL);
+ printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno());
+};
+
+comment_stmt: comment depends_list
+{
+ menu_end_entry();
+};
+
+/* help option */
+
+help_start: T_HELP T_EOL
+{
+ printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno());
+ zconf_starthelp();
+};
+
+help: help_start T_HELPTEXT
+{
+ current_entry->help = $2;
+};
+
+/* depends option */
+
+depends_list:
+ /* empty */
+ | depends_list depends
+ | depends_list T_EOL
+ | depends_list option_error
+;
+
+depends: T_DEPENDS T_ON expr T_EOL
+{
+ menu_add_dep($3);
+ printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno());
+};
+
+/* visibility option */
+
+visibility_list:
+ /* empty */
+ | visibility_list visible
+ | visibility_list T_EOL
+;
+
+visible: T_VISIBLE if_expr
+{
+ menu_add_visibility($2);
+};
+
+/* prompt statement */
+
+prompt_stmt_opt:
+ /* empty */
+ | prompt if_expr
+{
+ menu_add_prompt(P_PROMPT, $1, $2);
+};
+
+prompt: T_WORD
+ | T_WORD_QUOTE
+;
+
+end: T_ENDMENU T_EOL { $$ = $1; }
+ | T_ENDCHOICE T_EOL { $$ = $1; }
+ | T_ENDIF T_EOL { $$ = $1; }
+;
+
+nl:
+ T_EOL
+ | nl T_EOL
+;
+
+if_expr: /* empty */ { $$ = NULL; }
+ | T_IF expr { $$ = $2; }
+;
+
+expr: symbol { $$ = expr_alloc_symbol($1); }
+ | symbol T_EQUAL symbol { $$ = expr_alloc_comp(E_EQUAL, $1, $3); }
+ | symbol T_UNEQUAL symbol { $$ = expr_alloc_comp(E_UNEQUAL, $1, $3); }
+ | T_OPEN_PAREN expr T_CLOSE_PAREN { $$ = $2; }
+ | T_NOT expr { $$ = expr_alloc_one(E_NOT, $2); }
+ | expr T_OR expr { $$ = expr_alloc_two(E_OR, $1, $3); }
+ | expr T_AND expr { $$ = expr_alloc_two(E_AND, $1, $3); }
+;
+
+symbol: T_WORD { $$ = sym_lookup($1, 0); free($1); }
+ | T_WORD_QUOTE { $$ = sym_lookup($1, SYMBOL_CONST); free($1); }
+;
+
+word_opt: /* empty */ { $$ = NULL; }
+ | T_WORD
+
+%%
+
+void conf_parse(const char *name)
+{
+ struct symbol *sym;
+ int i;
+
+ zconf_initscan(name);
+
+ sym_init();
+ _menu_init();
+ rootmenu.prompt = menu_add_prompt(P_MENU, "Linux Kernel Configuration", NULL);
+
+ if (getenv("ZCONF_DEBUG"))
+ zconfdebug = 1;
+ zconfparse();
+ if (zconfnerrs)
+ exit(1);
+ if (!modules_sym)
+ modules_sym = sym_find( "n" );
+
+ rootmenu.prompt->text = _(rootmenu.prompt->text);
+ rootmenu.prompt->text = sym_expand_string_value(rootmenu.prompt->text);
+
+ menu_finalize(&rootmenu);
+ for_all_symbols(i, sym) {
+ if (sym_check_deps(sym))
+ zconfnerrs++;
+ }
+ if (zconfnerrs)
+ exit(1);
+ sym_set_change_count(1);
+}
+
+static const char *zconf_tokenname(int token)
+{
+ switch (token) {
+ case T_MENU: return "menu";
+ case T_ENDMENU: return "endmenu";
+ case T_CHOICE: return "choice";
+ case T_ENDCHOICE: return "endchoice";
+ case T_IF: return "if";
+ case T_ENDIF: return "endif";
+ case T_DEPENDS: return "depends";
+ case T_VISIBLE: return "visible";
+ }
+ return "<token>";
+}
+
+static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken)
+{
+ if (id->token != endtoken) {
+ zconf_error("unexpected '%s' within %s block",
+ kconf_id_strings + id->name, zconf_tokenname(starttoken));
+ zconfnerrs++;
+ return false;
+ }
+ if (current_menu->file != current_file) {
+ zconf_error("'%s' in different file than '%s'",
+ kconf_id_strings + id->name, zconf_tokenname(starttoken));
+ fprintf(stderr, "%s:%d: location of the '%s'\n",
+ current_menu->file->name, current_menu->lineno,
+ zconf_tokenname(starttoken));
+ zconfnerrs++;
+ return false;
+ }
+ return true;
+}
+
+static void zconfprint(const char *err, ...)
+{
+ va_list ap;
+
+ fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno());
+ va_start(ap, err);
+ vfprintf(stderr, err, ap);
+ va_end(ap);
+ fprintf(stderr, "\n");
+}
+
+static void zconf_error(const char *err, ...)
+{
+ va_list ap;
+
+ zconfnerrs++;
+ fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno());
+ va_start(ap, err);
+ vfprintf(stderr, err, ap);
+ va_end(ap);
+ fprintf(stderr, "\n");
+}
+
+static void zconferror(const char *err)
+{
+ fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err);
+}
+
+static void print_quoted_string(FILE *out, const char *str)
+{
+ const char *p;
+ int len;
+
+ putc('"', out);
+ while ((p = strchr(str, '"'))) {
+ len = p - str;
+ if (len)
+ fprintf(out, "%.*s", len, str);
+ fputs("\\\"", out);
+ str = p + 1;
+ }
+ fputs(str, out);
+ putc('"', out);
+}
+
+static void print_symbol(FILE *out, struct menu *menu)
+{
+ struct symbol *sym = menu->sym;
+ struct property *prop;
+
+ if (sym_is_choice(sym))
+ fprintf(out, "\nchoice\n");
+ else
+ fprintf(out, "\nconfig %s\n", sym->name);
+ switch (sym->type) {
+ case S_BOOLEAN:
+ fputs(" boolean\n", out);
+ break;
+ case S_TRISTATE:
+ fputs(" tristate\n", out);
+ break;
+ case S_STRING:
+ fputs(" string\n", out);
+ break;
+ case S_INT:
+ fputs(" integer\n", out);
+ break;
+ case S_HEX:
+ fputs(" hex\n", out);
+ break;
+ default:
+ fputs(" ???\n", out);
+ break;
+ }
+ for (prop = sym->prop; prop; prop = prop->next) {
+ if (prop->menu != menu)
+ continue;
+ switch (prop->type) {
+ case P_PROMPT:
+ fputs(" prompt ", out);
+ print_quoted_string(out, prop->text);
+ if (!expr_is_yes(prop->visible.expr)) {
+ fputs(" if ", out);
+ expr_fprint(prop->visible.expr, out);
+ }
+ fputc('\n', out);
+ break;
+ case P_DEFAULT:
+ fputs( " default ", out);
+ expr_fprint(prop->expr, out);
+ if (!expr_is_yes(prop->visible.expr)) {
+ fputs(" if ", out);
+ expr_fprint(prop->visible.expr, out);
+ }
+ fputc('\n', out);
+ break;
+ case P_CHOICE:
+ fputs(" #choice value\n", out);
+ break;
+ case P_SELECT:
+ fputs( " select ", out);
+ expr_fprint(prop->expr, out);
+ fputc('\n', out);
+ break;
+ case P_RANGE:
+ fputs( " range ", out);
+ expr_fprint(prop->expr, out);
+ fputc('\n', out);
+ break;
+ case P_MENU:
+ fputs( " menu ", out);
+ print_quoted_string(out, prop->text);
+ fputc('\n', out);
+ break;
+ default:
+ fprintf(out, " unknown prop %d!\n", prop->type);
+ break;
+ }
+ }
+ if (menu->help) {
+ int len = strlen(menu->help);
+ while (menu->help[--len] == '\n')
+ menu->help[len] = 0;
+ fprintf(out, " help\n%s\n", menu->help);
+ }
+}
+
+void zconfdump(FILE *out)
+{
+ struct property *prop;
+ struct symbol *sym;
+ struct menu *menu;
+
+ menu = rootmenu.list;
+ while (menu) {
+ if ((sym = menu->sym))
+ print_symbol(out, menu);
+ else if ((prop = menu->prompt)) {
+ switch (prop->type) {
+ case P_COMMENT:
+ fputs("\ncomment ", out);
+ print_quoted_string(out, prop->text);
+ fputs("\n", out);
+ break;
+ case P_MENU:
+ fputs("\nmenu ", out);
+ print_quoted_string(out, prop->text);
+ fputs("\n", out);
+ break;
+ default:
+ ;
+ }
+ if (!expr_is_yes(prop->visible.expr)) {
+ fputs(" depends ", out);
+ expr_fprint(prop->visible.expr, out);
+ fputc('\n', out);
+ }
+ }
+
+ if (menu->list)
+ menu = menu->list;
+ else if (menu->next)
+ menu = menu->next;
+ else while ((menu = menu->parent)) {
+ if (menu->prompt && menu->prompt->type == P_MENU)
+ fputs("\nendmenu\n", out);
+ if (menu->next) {
+ menu = menu->next;
+ break;
+ }
+ }
+ }
+}
+
+#include "zconf.lex.c"
+#include "util.c"
+#include "confdata.c"
+#include "expr.c"
+#include "symbol.c"
+#include "menu.c"
diff --git a/scripts/multiconfig.py b/scripts/multiconfig.py
new file mode 100755
index 0000000..749abcb
--- /dev/null
+++ b/scripts/multiconfig.py
@@ -0,0 +1,410 @@
+#!/usr/bin/env python
+#
+# Copyright (C) 2014, Masahiro Yamada <yamada.m@jp.panasonic.com>
+#
+# SPDX-License-Identifier: GPL-2.0+
+#
+
+"""
+A wrapper script to adjust Kconfig for U-Boot
+
+The biggest difference between Linux Kernel and U-Boot in terms of the
+board configuration is that U-Boot has to configure multiple boot images
+per board: Normal, SPL, TPL.
+We need to expand the functions of Kconfig to handle multiple boot
+images.
+
+Instead of touching various parts under the scripts/kconfig/ directory,
+pushing necessary adjustments into this single script would be better
+for code maintainance. All the make targets related to the configuration
+(make %config) should be invoked via this script.
+
+Let's see what is different from the original Kconfig.
+
+- config, menuconfig, etc.
+
+The commands 'make config', 'make menuconfig', etc. are used to create
+or modify the .config file, which stores configs for Normal boot image.
+
+The location of the one for SPL, TPL image is spl/.config, tpl/.config,
+respectively. Use 'make spl/config', 'make spl/menuconfig', etc.
+to create or modify the spl/.config file, which contains configs
+for SPL image.
+Do likewise for the tpl/.config file.
+The generic syntax for SPL, TPL configuration is
+'make <target_image>/<config_command>'.
+
+- silentoldconfig
+
+The command 'make silentoldconfig' updates .config, if necessary, and
+additionally updates include/generated/autoconf.h and files under
+include/configs/ directory. In U-Boot, it should do the same things for
+SPL, TPL images for boards supporting them.
+Depending on whether CONFIG_SPL, CONFIG_TPL is defined or not,
+'make silentoldconfig' iterates three times at most changing the target
+directory.
+
+To sum up, 'make silentoldconfig' possibly updates
+ - .config, include/generated/autoconf.h, include/config/*
+ - spl/.config, spl/include/generated/autoconf.h, spl/include/config/*
+ (in case CONFIG_SPL=y)
+ - tpl/.config, tpl/include/generated/autoconf.h, tpl/include/config/*
+ (in case CONFIG_TPL=y)
+
+- defconfig, <board>_defconfig
+
+The command 'make <board>_defconfig' creates a new .config based on the
+file configs/<board>_defconfig. The command 'make defconfig' is the same
+but the difference is it uses the file specified with KBUILD_DEFCONFIG
+environment.
+
+We need to create .config, spl/.config, tpl/.config for boards where SPL
+and TPL images are supported. One possible solution for that is to have
+multiple defconfig files per board, but it would produce duplication
+among the defconfigs.
+The approach chosen here is to expand the feature and support
+conditional definition in defconfig, that is, each line in defconfig
+files has the form of:
+<condition>:<macro definition>
+
+The '<condition>:' prefix specifies which image the line is valid for.
+The '<condition>:' is one of:
+ None - the line is valid only for Normal image
+ S: - the line is valid only for SPL image
+ T: - the line is valid only for TPL image
+ ST: - the line is valid for SPL and TPL images
+ +S: - the line is valid for Normal and SPL images
+ +T: - the line is valid for Normal and TPL images
+ +ST: - the line is valid for Normal, SPL and SPL images
+
+So, if neither CONFIG_SPL nor CONFIG_TPL is defined, the defconfig file
+has no '<condition>:' part and therefore has the same form of that of
+Linux Kernel.
+
+In U-Boot, for example, a defconfig file can be written like this:
+
+ CONFIG_FOO=100
+ S:CONFIG_FOO=200
+ T:CONFIG_FOO=300
+ ST:CONFIG_BAR=y
+ +S:CONFIG_BAZ=y
+ +T:CONFIG_QUX=y
+ +ST:CONFIG_QUUX=y
+
+The defconfig above is parsed by this script and internally divided into
+three temporary defconfig files.
+
+ - Temporary defconfig for Normal image
+ CONFIG_FOO=100
+ CONFIG_BAZ=y
+ CONFIG_QUX=y
+ CONFIG_QUUX=y
+
+ - Temporary defconfig for SPL image
+ CONFIG_FOO=200
+ CONFIG_BAR=y
+ CONFIG_BAZ=y
+ CONFIG_QUUX=y
+
+ - Temporary defconfig for TPL image
+ CONFIG_FOO=300
+ CONFIG_BAR=y
+ CONFIG_QUX=y
+ CONFIG_QUUX=y
+
+They are passed to scripts/kconfig/conf, each is used for generating
+.config, spl/.config, tpl/.config, respectively.
+
+- savedefconfig
+
+This is the reverse operation of 'make defconfig'.
+If neither CONFIG_SPL nor CONFIG_TPL is defined in the .config file,
+it works as 'make savedefconfig' in Linux Kernel: create the minimal set
+of config based on the .config and save it into 'defconfig' file.
+
+If CONFIG_SPL or CONFIG_TPL is defined, the common lines among .config,
+spl/.config, tpl/.config are coalesced together and output to the file
+'defconfig' in the form like:
+
+ CONFIG_FOO=100
+ S:CONFIG_FOO=200
+ T:CONFIG_FOO=300
+ ST:CONFIG_BAR=y
+ +S:CONFIG_BAZ=y
+ +T:CONFIG_QUX=y
+ +ST:CONFIG_QUUX=y
+
+This can be used as an input of 'make <board>_defconfig' command.
+"""
+
+import errno
+import os
+import re
+import subprocess
+import sys
+
+# Constant variables
+SUB_IMAGES = ('spl', 'tpl')
+IMAGES = ('',) + SUB_IMAGES
+SYMBOL_MAP = {'': '+', 'spl': 'S', 'tpl': 'T'}
+PATTERN_SYMBOL = re.compile(r'(\+?)(S?)(T?):(.*)')
+
+# Environment variables (should be defined in the top Makefile)
+# .get('key', 'default_value') method is useful for standalone testing.
+MAKE = os.environ.get('MAKE', 'make')
+srctree = os.environ.get('srctree', '.')
+KCONFIG_CONFIG = os.environ.get('KCONFIG_CONFIG', '.config')
+
+# Useful shorthand
+build = '%s -f %s/scripts/Makefile.build obj=scripts/kconfig %%s' % (MAKE, srctree)
+autoconf = '%s -f %s/scripts/Makefile.autoconf obj=%%s %%s' % (MAKE, srctree)
+
+### helper functions ###
+def mkdirs(*dirs):
+ """Make directories ignoring 'File exists' error."""
+ for d in dirs:
+ try:
+ os.makedirs(d)
+ except OSError as exception:
+ # Ignore 'File exists' error
+ if exception.errno != errno.EEXIST:
+ raise
+
+def rmfiles(*files):
+ """Remove files ignoring 'No such file or directory' error."""
+ for f in files:
+ try:
+ os.remove(f)
+ except OSError as exception:
+ # Ignore 'No such file or directory' error
+ if exception.errno != errno.ENOENT:
+ raise
+
+def rmdirs(*dirs):
+ """Remove directories ignoring 'No such file or directory'
+ and 'Directory not empty' error.
+ """
+ for d in dirs:
+ try:
+ os.rmdir(d)
+ except OSError as exception:
+ # Ignore 'No such file or directory'
+ # and 'Directory not empty' error
+ if exception.errno != errno.ENOENT and \
+ exception.errno != errno.ENOTEMPTY:
+ raise
+
+def error(msg):
+ """Output the given argument to stderr and exit with return code 1."""
+ print >> sys.stderr, msg
+ sys.exit(1)
+
+def run_command(command, callback_on_error=None):
+ """Run the given command in a sub-shell (and exit if it fails).
+
+ Arguments:
+ command: A string of the command
+ callback_on_error: Callback handler invoked just before exit
+ when the command fails (Default=None)
+ """
+ retcode = subprocess.call(command, shell=True)
+ if retcode:
+ if callback_on_error:
+ callback_on_error()
+ error("'%s' Failed" % command)
+
+def run_make_config(cmd, objdir, callback_on_error=None):
+ """Run the make command in a sub-shell (and exit if it fails).
+
+ Arguments:
+ cmd: Make target such as 'config', 'menuconfig', 'defconfig', etc.
+ objdir: Target directory where the make command is run.
+ Typically '', 'spl', 'tpl' for Normal, SPL, TPL image,
+ respectively.
+ callback_on_error: Callback handler invoked just before exit
+ when the command fails (Default=None)
+ """
+ # Linux expects defconfig files in arch/$(SRCARCH)/configs/ directory,
+ # but U-Boot puts them in configs/ directory.
+ # Give SRCARCH=.. to fake scripts/kconfig/Makefile.
+ options = 'SRCARCH=.. KCONFIG_OBJDIR=%s' % objdir
+ if objdir:
+ options += ' KCONFIG_CONFIG=%s/%s' % (objdir, KCONFIG_CONFIG)
+ mkdirs(objdir)
+ run_command(build % cmd + ' ' + options, callback_on_error)
+
+def get_enabled_subimages(ignore_error=False):
+ """Parse .config file to detect if CONFIG_SPL, CONFIG_TPL is enabled
+ and return a tuple of enabled subimages.
+
+ Arguments:
+ ignore_error: Specify the behavior when '.config' is not found;
+ Raise an exception if this flag is False.
+ Return a null tuple if this flag is True.
+
+ Returns:
+ A tuple of enabled subimages as follows:
+ () if neither CONFIG_SPL nor CONFIG_TPL is defined
+ ('spl',) if CONFIG_SPL is defined but CONFIG_TPL is not
+ ('spl', 'tpl') if both CONFIG_SPL and CONFIG_TPL are defined
+ """
+ enabled = ()
+ match_patterns = [ (img, 'CONFIG_' + img.upper() + '=y\n')
+ for img in SUB_IMAGES ]
+ try:
+ f = open(KCONFIG_CONFIG)
+ except IOError as exception:
+ if not ignore_error or exception.errno != errno.ENOENT:
+ raise
+ return enabled
+ with f:
+ for line in f:
+ for img, pattern in match_patterns:
+ if line == pattern:
+ enabled += (img,)
+ return enabled
+
+def do_silentoldconfig(cmd):
+ """Run 'make silentoldconfig' for all the enabled images.
+
+ Arguments:
+ cmd: should always be a string 'silentoldconfig'
+ """
+ run_make_config(cmd, '')
+ subimages = get_enabled_subimages()
+ for obj in subimages:
+ mkdirs(os.path.join(obj, 'include', 'config'),
+ os.path.join(obj, 'include', 'generated'))
+ run_make_config(cmd, obj)
+ remove_auto_conf = lambda : rmfiles('include/config/auto.conf')
+ # If the following part failed, include/config/auto.conf should be deleted
+ # so 'make silentoldconfig' will be re-run on the next build.
+ run_command(autoconf %
+ ('include', 'include/autoconf.mk include/autoconf.mk.dep'),
+ remove_auto_conf)
+ # include/config.h has been updated after 'make silentoldconfig'.
+ # We need to touch include/config/auto.conf so it gets newer
+ # than include/config.h.
+ # Otherwise, 'make silentoldconfig' would be invoked twice.
+ os.utime('include/config/auto.conf', None)
+ for obj in subimages:
+ run_command(autoconf % (obj + '/include',
+ obj + '/include/autoconf.mk'),
+ remove_auto_conf)
+
+def do_tmp_defconfig(output_lines, img):
+ """Helper function for do_board_defconfig().
+
+ Write the defconfig contents into a file '.tmp_defconfig' and
+ invoke 'make .tmp_defconfig'.
+
+ Arguments:
+ output_lines: A sequence of defconfig lines of each image
+ img: Target image. Typically '', 'spl', 'tpl' for
+ Normal, SPL, TPL images, respectively.
+ """
+ TMP_DEFCONFIG = '.tmp_defconfig'
+ TMP_DIRS = ('arch', 'configs')
+ defconfig_path = os.path.join('configs', TMP_DEFCONFIG)
+ mkdirs(*TMP_DIRS)
+ with open(defconfig_path, 'w') as f:
+ f.write(''.join(output_lines[img]))
+ cleanup = lambda: (rmfiles(defconfig_path), rmdirs(*TMP_DIRS))
+ run_make_config(TMP_DEFCONFIG, img, cleanup)
+ cleanup()
+
+def do_board_defconfig(cmd):
+ """Run 'make <board>_defconfig'.
+
+ Arguments:
+ cmd: should be a string '<board>_defconfig'
+ """
+ defconfig_path = os.path.join(srctree, 'configs', cmd)
+ output_lines = dict([ (img, []) for img in IMAGES ])
+ with open(defconfig_path) as f:
+ for line in f:
+ m = PATTERN_SYMBOL.match(line)
+ if m:
+ for idx, img in enumerate(IMAGES):
+ if m.group(idx + 1):
+ output_lines[img].append(m.group(4) + '\n')
+ continue
+ output_lines[''].append(line)
+ do_tmp_defconfig(output_lines, '')
+ for img in get_enabled_subimages():
+ do_tmp_defconfig(output_lines, img)
+
+def do_defconfig(cmd):
+ """Run 'make defconfig'.
+
+ Arguments:
+ cmd: should always be a string 'defconfig'
+ """
+ KBUILD_DEFCONFIG = os.environ['KBUILD_DEFCONFIG']
+ print "*** Default configuration is based on '%s'" % KBUILD_DEFCONFIG
+ do_board_defconfig(KBUILD_DEFCONFIG)
+
+def do_savedefconfig(cmd):
+ """Run 'make savedefconfig'.
+
+ Arguments:
+ cmd: should always be a string 'savedefconfig'
+ """
+ DEFCONFIG = 'defconfig'
+ # Continue even if '.config' does not exist
+ subimages = get_enabled_subimages(True)
+ run_make_config(cmd, '')
+ output_lines = []
+ prefix = {}
+ with open(DEFCONFIG) as f:
+ for line in f:
+ output_lines.append(line)
+ prefix[line] = '+'
+ for img in subimages:
+ run_make_config(cmd, img)
+ unmatched_lines = []
+ with open(DEFCONFIG) as f:
+ for line in f:
+ if line in output_lines:
+ index = output_lines.index(line)
+ output_lines[index:index] = unmatched_lines
+ unmatched_lines = []
+ prefix[line] += SYMBOL_MAP[img]
+ else:
+ ummatched_lines.append(line)
+ prefix[line] = SYMBOL_MAP[img]
+ with open(DEFCONFIG, 'w') as f:
+ for line in output_lines:
+ if prefix[line] == '+':
+ f.write(line)
+ else:
+ f.write(prefix[line] + ':' + line)
+
+def do_others(cmd):
+ """Run the make command other than 'silentoldconfig', 'defconfig',
+ '<board>_defconfig' and 'savedefconfig'.
+
+ Arguments:
+ cmd: Make target in the form of '<target_image>/<config_command>'
+ The field '<target_image>/' is typically empty, 'spl/', 'tpl/'
+ for Normal, SPL, TPL images, respectively.
+ The field '<config_command>' is make target such as 'config',
+ 'menuconfig', etc.
+ """
+ objdir, _, cmd = cmd.rpartition('/')
+ run_make_config(cmd, objdir)
+
+cmd_list = {'silentoldconfig': do_silentoldconfig,
+ 'defconfig': do_defconfig,
+ 'savedefconfig': do_savedefconfig}
+
+def main():
+ cmd = sys.argv[1]
+ if cmd.endswith('_defconfig'):
+ do_board_defconfig(cmd)
+ else:
+ func = cmd_list.get(cmd, do_others)
+ func(cmd)
+
+if __name__ == '__main__':
+ main()
diff --git a/scripts/show-gnu-make b/scripts/show-gnu-make
new file mode 100755
index 0000000..26271b5
--- /dev/null
+++ b/scripts/show-gnu-make
@@ -0,0 +1,25 @@
+#!/bin/sh
+#
+# Show the command name for GNU Make
+#
+# U-Boot is supposed to be built on various platforms.
+# One problem is that the command 'make' is not always GNU Make.
+# (For ex. the command name for GNU Make on FreeBSD is usually 'gmake'.)
+# It is not a good idea to hard-code the command name in scripts
+# where where GNU Make is expected.
+# Call this helper script to get the command name for GNU Make.
+#
+# SPDX-License-Identifier: GPL-2.0+
+#
+
+gnu_make=
+
+for m in make gmake
+do
+ if $m --version 2>/dev/null | grep -q GNU; then
+ echo $m
+ exit 0
+ fi
+done
+
+exit 1
diff --git a/test/dm/Makefile b/test/dm/Makefile
index c0f2135..5c2415e 100644
--- a/test/dm/Makefile
+++ b/test/dm/Makefile
@@ -5,6 +5,7 @@
#
obj-$(CONFIG_CMD_DM) += cmd_dm.o
+obj-$(CONFIG_DM_TEST) += bus.o
obj-$(CONFIG_DM_TEST) += test-driver.o
obj-$(CONFIG_DM_TEST) += test-fdt.o
obj-$(CONFIG_DM_TEST) += test-main.o
diff --git a/test/dm/bus.c b/test/dm/bus.c
new file mode 100644
index 0000000..873d64e
--- /dev/null
+++ b/test/dm/bus.c
@@ -0,0 +1,242 @@
+/*
+ * Copyright (c) 2014 Google, Inc
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <dm/device-internal.h>
+#include <dm/root.h>
+#include <dm/test.h>
+#include <dm/ut.h>
+#include <dm/util.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+enum {
+ FLAG_CHILD_PROBED = 10,
+ FLAG_CHILD_REMOVED = -7,
+};
+
+static struct dm_test_state *test_state;
+
+static int testbus_drv_probe(struct udevice *dev)
+{
+ return dm_scan_fdt_node(dev, gd->fdt_blob, dev->of_offset, false);
+}
+
+static int testbus_child_pre_probe(struct udevice *dev)
+{
+ struct dm_test_parent_data *parent_data = dev_get_parentdata(dev);
+
+ parent_data->flag += FLAG_CHILD_PROBED;
+
+ return 0;
+}
+
+static int testbus_child_post_remove(struct udevice *dev)
+{
+ struct dm_test_parent_data *parent_data = dev_get_parentdata(dev);
+ struct dm_test_state *dms = test_state;
+
+ parent_data->flag += FLAG_CHILD_REMOVED;
+ if (dms)
+ dms->removed = dev;
+
+ return 0;
+}
+
+static const struct udevice_id testbus_ids[] = {
+ {
+ .compatible = "denx,u-boot-test-bus",
+ .data = DM_TEST_TYPE_FIRST },
+ { }
+};
+
+U_BOOT_DRIVER(testbus_drv) = {
+ .name = "testbus_drv",
+ .of_match = testbus_ids,
+ .id = UCLASS_TEST_BUS,
+ .probe = testbus_drv_probe,
+ .priv_auto_alloc_size = sizeof(struct dm_test_priv),
+ .platdata_auto_alloc_size = sizeof(struct dm_test_pdata),
+ .per_child_auto_alloc_size = sizeof(struct dm_test_parent_data),
+ .child_pre_probe = testbus_child_pre_probe,
+ .child_post_remove = testbus_child_post_remove,
+};
+
+UCLASS_DRIVER(testbus) = {
+ .name = "testbus",
+ .id = UCLASS_TEST_BUS,
+};
+
+/* Test that we can probe for children */
+static int dm_test_bus_children(struct dm_test_state *dms)
+{
+ int num_devices = 4;
+ struct udevice *bus;
+ struct uclass *uc;
+
+ ut_assertok(uclass_get(UCLASS_TEST_FDT, &uc));
+ ut_asserteq(num_devices, list_count_items(&uc->dev_head));
+
+ /* Probe the bus, which should yield 3 more devices */
+ ut_assertok(uclass_get_device(UCLASS_TEST_BUS, 0, &bus));
+ num_devices += 3;
+
+ ut_assertok(uclass_get(UCLASS_TEST_FDT, &uc));
+ ut_asserteq(num_devices, list_count_items(&uc->dev_head));
+
+ ut_assert(!dm_check_devices(dms, num_devices));
+
+ return 0;
+}
+DM_TEST(dm_test_bus_children, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
+
+/* Test our functions for accessing children */
+static int dm_test_bus_children_funcs(struct dm_test_state *dms)
+{
+ const void *blob = gd->fdt_blob;
+ struct udevice *bus, *dev;
+ int node;
+
+ ut_assertok(uclass_get_device(UCLASS_TEST_BUS, 0, &bus));
+
+ /* device_get_child() */
+ ut_assertok(device_get_child(bus, 0, &dev));
+ ut_asserteq(-ENODEV, device_get_child(bus, 4, &dev));
+ ut_assertok(device_get_child_by_seq(bus, 5, &dev));
+ ut_assert(dev->flags & DM_FLAG_ACTIVATED);
+ ut_asserteq_str("c-test@5", dev->name);
+
+ /* Device with sequence number 0 should be accessible */
+ ut_asserteq(-ENODEV, device_find_child_by_seq(bus, -1, true, &dev));
+ ut_assertok(device_find_child_by_seq(bus, 0, true, &dev));
+ ut_assert(!(dev->flags & DM_FLAG_ACTIVATED));
+ ut_asserteq(-ENODEV, device_find_child_by_seq(bus, 0, false, &dev));
+ ut_assertok(device_get_child_by_seq(bus, 0, &dev));
+ ut_assert(dev->flags & DM_FLAG_ACTIVATED);
+
+ /* There is no device with sequence number 2 */
+ ut_asserteq(-ENODEV, device_find_child_by_seq(bus, 2, false, &dev));
+ ut_asserteq(-ENODEV, device_find_child_by_seq(bus, 2, true, &dev));
+ ut_asserteq(-ENODEV, device_get_child_by_seq(bus, 2, &dev));
+
+ /* Looking for something that is not a child */
+ node = fdt_path_offset(blob, "/junk");
+ ut_asserteq(-ENODEV, device_find_child_by_of_offset(bus, node, &dev));
+ node = fdt_path_offset(blob, "/d-test");
+ ut_asserteq(-ENODEV, device_find_child_by_of_offset(bus, node, &dev));
+
+ /* Find a valid child */
+ node = fdt_path_offset(blob, "/some-bus/c-test@1");
+ ut_assertok(device_find_child_by_of_offset(bus, node, &dev));
+ ut_assert(!(dev->flags & DM_FLAG_ACTIVATED));
+ ut_assertok(device_get_child_by_of_offset(bus, node, &dev));
+ ut_assert(dev->flags & DM_FLAG_ACTIVATED);
+
+ return 0;
+}
+DM_TEST(dm_test_bus_children_funcs, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
+
+/* Test that the bus can store data about each child */
+static int dm_test_bus_parent_data(struct dm_test_state *dms)
+{
+ struct dm_test_parent_data *parent_data;
+ struct udevice *bus, *dev;
+ struct uclass *uc;
+ int value;
+
+ ut_assertok(uclass_get_device(UCLASS_TEST_BUS, 0, &bus));
+
+ /* Check that parent data is allocated */
+ ut_assertok(device_find_child_by_seq(bus, 0, true, &dev));
+ ut_asserteq_ptr(NULL, dev_get_parentdata(dev));
+ ut_assertok(device_get_child_by_seq(bus, 0, &dev));
+ parent_data = dev_get_parentdata(dev);
+ ut_assert(NULL != parent_data);
+
+ /* Check that it starts at 0 and goes away when device is removed */
+ parent_data->sum += 5;
+ ut_asserteq(5, parent_data->sum);
+ device_remove(dev);
+ ut_asserteq_ptr(NULL, dev_get_parentdata(dev));
+
+ /* Check that we can do this twice */
+ ut_assertok(device_get_child_by_seq(bus, 0, &dev));
+ parent_data = dev_get_parentdata(dev);
+ ut_assert(NULL != parent_data);
+ parent_data->sum += 5;
+ ut_asserteq(5, parent_data->sum);
+
+ /* Add parent data to all children */
+ ut_assertok(uclass_get(UCLASS_TEST_FDT, &uc));
+ value = 5;
+ uclass_foreach_dev(dev, uc) {
+ /* Ignore these if they are not on this bus */
+ if (dev->parent != bus) {
+ ut_asserteq_ptr(NULL, dev_get_parentdata(dev));
+ continue;
+ }
+ ut_assertok(device_probe(dev));
+ parent_data = dev_get_parentdata(dev);
+
+ parent_data->sum = value;
+ value += 5;
+ }
+
+ /* Check it is still there */
+ value = 5;
+ uclass_foreach_dev(dev, uc) {
+ /* Ignore these if they are not on this bus */
+ if (dev->parent != bus)
+ continue;
+ parent_data = dev_get_parentdata(dev);
+
+ ut_asserteq(value, parent_data->sum);
+ value += 5;
+ }
+
+ return 0;
+}
+
+DM_TEST(dm_test_bus_parent_data, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
+
+/* Test that the bus ops are called when a child is probed/removed */
+static int dm_test_bus_parent_ops(struct dm_test_state *dms)
+{
+ struct dm_test_parent_data *parent_data;
+ struct udevice *bus, *dev;
+ struct uclass *uc;
+
+ test_state = dms;
+ ut_assertok(uclass_get_device(UCLASS_TEST_BUS, 0, &bus));
+ ut_assertok(uclass_get(UCLASS_TEST_FDT, &uc));
+
+ uclass_foreach_dev(dev, uc) {
+ /* Ignore these if they are not on this bus */
+ if (dev->parent != bus)
+ continue;
+ ut_asserteq_ptr(NULL, dev_get_parentdata(dev));
+
+ ut_assertok(device_probe(dev));
+ parent_data = dev_get_parentdata(dev);
+ ut_asserteq(FLAG_CHILD_PROBED, parent_data->flag);
+ }
+
+ uclass_foreach_dev(dev, uc) {
+ /* Ignore these if they are not on this bus */
+ if (dev->parent != bus)
+ continue;
+ parent_data = dev_get_parentdata(dev);
+ ut_asserteq(FLAG_CHILD_PROBED, parent_data->flag);
+ ut_assertok(device_remove(dev));
+ ut_asserteq_ptr(NULL, dev_get_parentdata(dev));
+ ut_asserteq_ptr(dms->removed, dev);
+ }
+ test_state = NULL;
+
+ return 0;
+}
+DM_TEST(dm_test_bus_parent_ops, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
diff --git a/test/dm/cmd_dm.c b/test/dm/cmd_dm.c
index 96f10f3..26980d2 100644
--- a/test/dm/cmd_dm.c
+++ b/test/dm/cmd_dm.c
@@ -16,6 +16,24 @@
#include <dm/test.h>
#include <dm/uclass-internal.h>
+/**
+ * dm_display_line() - Display information about a single device
+ *
+ * Displays a single line of information with an option prefix
+ *
+ * @dev: Device to display
+ * @buf: Prefix to display at the start of the line
+ */
+static void dm_display_line(struct udevice *dev, char *buf)
+{
+ printf("%s- %c %s @ %08lx", buf,
+ dev->flags & DM_FLAG_ACTIVATED ? '*' : ' ',
+ dev->name, (ulong)map_to_sysmem(dev));
+ if (dev->req_seq != -1)
+ printf(", %d", dev->req_seq);
+ puts("\n");
+}
+
static int display_succ(struct udevice *in, char *buf)
{
int len;
@@ -23,10 +41,7 @@ static int display_succ(struct udevice *in, char *buf)
char local[16];
struct udevice *pos, *n, *prev = NULL;
- printf("%s- %c %s @ %08lx", buf,
- in->flags & DM_FLAG_ACTIVATED ? '*' : ' ',
- in->name, (ulong)map_to_sysmem(in));
- puts("\n");
+ dm_display_line(in, buf);
if (list_empty(&in->child_head))
return 0;
@@ -81,12 +96,10 @@ static int do_dm_dump_uclass(cmd_tbl_t *cmdtp, int flag, int argc,
continue;
printf("uclass %d: %s\n", id, uc->uc_drv->name);
- for (ret = uclass_first_device(id, &dev);
- dev;
- ret = uclass_next_device(&dev)) {
- printf(" %c %s @ %08lx:\n",
- dev->flags & DM_FLAG_ACTIVATED ? '*' : ' ',
- dev->name, (ulong)map_to_sysmem(dev));
+ if (list_empty(&uc->dev_head))
+ continue;
+ list_for_each_entry(dev, &uc->dev_head, uclass_node) {
+ dm_display_line(dev, "");
}
puts("\n");
}
@@ -135,7 +148,7 @@ static int do_dm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
U_BOOT_CMD(
dm, 2, 1, do_dm,
"Driver model low level access",
- "tree Dump driver model tree\n"
+ "tree Dump driver model tree ('*' = activated)\n"
"dm uclass Dump list of instances for each uclass"
TEST_HELP
);
diff --git a/test/dm/core.c b/test/dm/core.c
index be3646b..b0cfb42 100644
--- a/test/dm/core.c
+++ b/test/dm/core.c
@@ -25,6 +25,7 @@ enum {
TEST_INTVAL2 = 3,
TEST_INTVAL3 = 6,
TEST_INTVAL_MANUAL = 101112,
+ TEST_INTVAL_PRE_RELOC = 7,
};
static const struct dm_test_pdata test_pdata[] = {
@@ -37,6 +38,10 @@ static const struct dm_test_pdata test_pdata_manual = {
.ping_add = TEST_INTVAL_MANUAL,
};
+static const struct dm_test_pdata test_pdata_pre_reloc = {
+ .ping_add = TEST_INTVAL_PRE_RELOC,
+};
+
U_BOOT_DEVICE(dm_test_info1) = {
.name = "test_drv",
.platdata = &test_pdata[0],
@@ -57,6 +62,11 @@ static struct driver_info driver_info_manual = {
.platdata = &test_pdata_manual,
};
+static struct driver_info driver_info_pre_reloc = {
+ .name = "test_pre_reloc_drv",
+ .platdata = &test_pdata_manual,
+};
+
/* Test that binding with platdata occurs correctly */
static int dm_test_autobind(struct dm_test_state *dms)
{
@@ -71,7 +81,7 @@ static int dm_test_autobind(struct dm_test_state *dms)
ut_asserteq(0, list_count_items(&gd->dm_root->child_head));
ut_asserteq(0, dm_testdrv_op_count[DM_TEST_OP_POST_BIND]);
- ut_assertok(dm_scan_platdata());
+ ut_assertok(dm_scan_platdata(false));
/* We should have our test class now at least, plus more children */
ut_assert(1 < list_count_items(&gd->uclass_root));
@@ -106,7 +116,7 @@ static int dm_test_autoprobe(struct dm_test_state *dms)
ut_asserteq(0, dm_testdrv_op_count[DM_TEST_OP_POST_PROBE]);
/* The root device should not be activated until needed */
- ut_assert(!(dms->root->flags & DM_FLAG_ACTIVATED));
+ ut_assert(dms->root->flags & DM_FLAG_ACTIVATED);
/*
* We should be able to find the three test devices, and they should
@@ -181,7 +191,7 @@ static int dm_test_lifecycle(struct dm_test_state *dms)
memcpy(op_count, dm_testdrv_op_count, sizeof(op_count));
- ut_assertok(device_bind_by_name(dms->root, &driver_info_manual,
+ ut_assertok(device_bind_by_name(dms->root, false, &driver_info_manual,
&dev));
ut_assert(dev);
ut_assert(dm_testdrv_op_count[DM_TEST_OP_BIND]
@@ -232,15 +242,15 @@ static int dm_test_ordering(struct dm_test_state *dms)
struct udevice *dev, *dev_penultimate, *dev_last, *test_dev;
int pingret;
- ut_assertok(device_bind_by_name(dms->root, &driver_info_manual,
+ ut_assertok(device_bind_by_name(dms->root, false, &driver_info_manual,
&dev));
ut_assert(dev);
/* Bind two new devices (numbers 4 and 5) */
- ut_assertok(device_bind_by_name(dms->root, &driver_info_manual,
+ ut_assertok(device_bind_by_name(dms->root, false, &driver_info_manual,
&dev_penultimate));
ut_assert(dev_penultimate);
- ut_assertok(device_bind_by_name(dms->root, &driver_info_manual,
+ ut_assertok(device_bind_by_name(dms->root, false, &driver_info_manual,
&dev_last));
ut_assert(dev_last);
@@ -255,7 +265,8 @@ static int dm_test_ordering(struct dm_test_state *dms)
ut_assert(dev_last == test_dev);
/* Add back the original device 3, now in position 5 */
- ut_assertok(device_bind_by_name(dms->root, &driver_info_manual, &dev));
+ ut_assertok(device_bind_by_name(dms->root, false, &driver_info_manual,
+ &dev));
ut_assert(dev);
/* Try ping */
@@ -375,8 +386,8 @@ static int dm_test_leak(struct dm_test_state *dms)
if (!start.uordblks)
puts("Warning: Please add '#define DEBUG' to the top of common/dlmalloc.c\n");
- ut_assertok(dm_scan_platdata());
- ut_assertok(dm_scan_fdt(gd->fdt_blob));
+ ut_assertok(dm_scan_platdata(false));
+ ut_assertok(dm_scan_fdt(gd->fdt_blob, false));
/* Scanning the uclass is enough to probe all the devices */
for (id = UCLASS_ROOT; id < UCLASS_COUNT; id++) {
@@ -444,8 +455,8 @@ static int create_children(struct dm_test_state *dms, struct udevice *parent,
for (i = 0; i < count; i++) {
struct dm_test_pdata *pdata;
- ut_assertok(device_bind_by_name(parent, &driver_info_manual,
- &dev));
+ ut_assertok(device_bind_by_name(parent, false,
+ &driver_info_manual, &dev));
pdata = calloc(1, sizeof(*pdata));
pdata->ping_add = key + i;
dev->platdata = pdata;
@@ -542,3 +553,34 @@ static int dm_test_children(struct dm_test_state *dms)
return 0;
}
DM_TEST(dm_test_children, 0);
+
+/* Test that pre-relocation devices work as expected */
+static int dm_test_pre_reloc(struct dm_test_state *dms)
+{
+ struct udevice *dev;
+
+ /* The normal driver should refuse to bind before relocation */
+ ut_asserteq(-EPERM, device_bind_by_name(dms->root, true,
+ &driver_info_manual, &dev));
+
+ /* But this one is marked pre-reloc */
+ ut_assertok(device_bind_by_name(dms->root, true,
+ &driver_info_pre_reloc, &dev));
+
+ return 0;
+}
+DM_TEST(dm_test_pre_reloc, 0);
+
+static int dm_test_uclass_before_ready(struct dm_test_state *dms)
+{
+ struct uclass *uc;
+
+ ut_assertok(uclass_get(UCLASS_TEST, &uc));
+
+ memset(gd, '\0', sizeof(*gd));
+ ut_asserteq_ptr(NULL, uclass_find(UCLASS_TEST));
+
+ return 0;
+}
+
+DM_TEST(dm_test_uclass_before_ready, 0);
diff --git a/test/dm/test-driver.c b/test/dm/test-driver.c
index 0f1a37b..bc6a6e7 100644
--- a/test/dm/test-driver.c
+++ b/test/dm/test-driver.c
@@ -144,3 +144,14 @@ U_BOOT_DRIVER(test_manual_drv) = {
.remove = test_manual_remove,
.unbind = test_manual_unbind,
};
+
+U_BOOT_DRIVER(test_pre_reloc_drv) = {
+ .name = "test_pre_reloc_drv",
+ .id = UCLASS_TEST,
+ .ops = &test_manual_ops,
+ .bind = test_manual_bind,
+ .probe = test_manual_probe,
+ .remove = test_manual_remove,
+ .unbind = test_manual_unbind,
+ .flags = DM_FLAG_PRE_RELOC,
+};
diff --git a/test/dm/test-fdt.c b/test/dm/test-fdt.c
index 98e3936..cd2c389 100644
--- a/test/dm/test-fdt.c
+++ b/test/dm/test-fdt.c
@@ -39,7 +39,8 @@ static int testfdt_ofdata_to_platdata(struct udevice *dev)
pdata->ping_add = fdtdec_get_int(gd->fdt_blob, dev->of_offset,
"ping-add", -1);
- pdata->base = fdtdec_get_addr(gd->fdt_blob, dev->of_offset, "reg");
+ pdata->base = fdtdec_get_addr(gd->fdt_blob, dev->of_offset,
+ "ping-expect");
return 0;
}
@@ -90,55 +91,170 @@ UCLASS_DRIVER(testfdt) = {
.id = UCLASS_TEST_FDT,
};
+int dm_check_devices(struct dm_test_state *dms, int num_devices)
+{
+ struct udevice *dev;
+ int ret;
+ int i;
+
+ /*
+ * Now check that the ping adds are what we expect. This is using the
+ * ping-add property in each node.
+ */
+ for (i = 0; i < num_devices; i++) {
+ uint32_t base;
+
+ ret = uclass_get_device(UCLASS_TEST_FDT, i, &dev);
+ ut_assert(!ret);
+
+ /*
+ * Get the 'ping-expect' property, which tells us what the
+ * ping add should be. We don't use the platdata because we
+ * want to test the code that sets that up
+ * (testfdt_drv_probe()).
+ */
+ base = fdtdec_get_addr(gd->fdt_blob, dev->of_offset,
+ "ping-expect");
+ debug("dev=%d, base=%d: %s\n", i, base,
+ fdt_get_name(gd->fdt_blob, dev->of_offset, NULL));
+
+ ut_assert(!dm_check_operations(dms, dev, base,
+ dev_get_priv(dev)));
+ }
+
+ return 0;
+}
+
/* Test that FDT-based binding works correctly */
static int dm_test_fdt(struct dm_test_state *dms)
{
- const int num_drivers = 3;
+ const int num_devices = 4;
struct udevice *dev;
struct uclass *uc;
int ret;
int i;
- ret = dm_scan_fdt(gd->fdt_blob);
+ ret = dm_scan_fdt(gd->fdt_blob, false);
ut_assert(!ret);
ret = uclass_get(UCLASS_TEST_FDT, &uc);
ut_assert(!ret);
- /* These are num_drivers compatible root-level device tree nodes */
- ut_asserteq(num_drivers, list_count_items(&uc->dev_head));
+ /* These are num_devices compatible root-level device tree nodes */
+ ut_asserteq(num_devices, list_count_items(&uc->dev_head));
/* Each should have no platdata / priv */
- for (i = 0; i < num_drivers; i++) {
+ for (i = 0; i < num_devices; i++) {
ret = uclass_find_device(UCLASS_TEST_FDT, i, &dev);
ut_assert(!ret);
ut_assert(!dev_get_priv(dev));
ut_assert(!dev->platdata);
}
+ ut_assertok(dm_check_devices(dms, num_devices));
+
+ return 0;
+}
+DM_TEST(dm_test_fdt, 0);
+
+static int dm_test_fdt_pre_reloc(struct dm_test_state *dms)
+{
+ struct uclass *uc;
+ int ret;
+
+ ret = dm_scan_fdt(gd->fdt_blob, true);
+ ut_assert(!ret);
+
+ ret = uclass_get(UCLASS_TEST_FDT, &uc);
+ ut_assert(!ret);
+
+ /* These is only one pre-reloc device */
+ ut_asserteq(1, list_count_items(&uc->dev_head));
+
+ return 0;
+}
+DM_TEST(dm_test_fdt_pre_reloc, 0);
+
+/* Test that sequence numbers are allocated properly */
+static int dm_test_fdt_uclass_seq(struct dm_test_state *dms)
+{
+ struct udevice *dev;
+
+ /* A few basic santiy tests */
+ ut_assertok(uclass_find_device_by_seq(UCLASS_TEST_FDT, 3, true, &dev));
+ ut_asserteq_str("b-test", dev->name);
+
+ ut_assertok(uclass_find_device_by_seq(UCLASS_TEST_FDT, 0, true, &dev));
+ ut_asserteq_str("a-test", dev->name);
+
+ ut_asserteq(-ENODEV, uclass_find_device_by_seq(UCLASS_TEST_FDT, 5,
+ true, &dev));
+ ut_asserteq_ptr(NULL, dev);
+
+ /* Test aliases */
+ ut_assertok(uclass_get_device_by_seq(UCLASS_TEST_FDT, 6, &dev));
+ ut_asserteq_str("e-test", dev->name);
+
+ ut_asserteq(-ENODEV, uclass_find_device_by_seq(UCLASS_TEST_FDT, 7,
+ true, &dev));
+
/*
- * Now check that the ping adds are what we expect. This is using the
- * ping-add property in each node.
+ * Note that c-test nodes are not probed since it is not a top-level
+ * node
*/
- for (i = 0; i < num_drivers; i++) {
- uint32_t base;
+ ut_assertok(uclass_get_device_by_seq(UCLASS_TEST_FDT, 3, &dev));
+ ut_asserteq_str("b-test", dev->name);
- ret = uclass_get_device(UCLASS_TEST_FDT, i, &dev);
- ut_assert(!ret);
+ /*
+ * d-test wants sequence number 3 also, but it can't have it because
+ * b-test gets it first.
+ */
+ ut_assertok(uclass_get_device(UCLASS_TEST_FDT, 2, &dev));
+ ut_asserteq_str("d-test", dev->name);
- /*
- * Get the 'reg' property, which tells us what the ping add
- * should be. We don't use the platdata because we want
- * to test the code that sets that up (testfdt_drv_probe()).
- */
- base = fdtdec_get_addr(gd->fdt_blob, dev->of_offset, "reg");
- debug("dev=%d, base=%d: %s\n", i, base,
- fdt_get_name(gd->fdt_blob, dev->of_offset, NULL));
+ /* d-test actually gets 0 */
+ ut_assertok(uclass_get_device_by_seq(UCLASS_TEST_FDT, 0, &dev));
+ ut_asserteq_str("d-test", dev->name);
- ut_assert(!dm_check_operations(dms, dev, base,
- dev_get_priv(dev)));
- }
+ /* initially no one wants seq 1 */
+ ut_asserteq(-ENODEV, uclass_get_device_by_seq(UCLASS_TEST_FDT, 1,
+ &dev));
+ ut_assertok(uclass_get_device(UCLASS_TEST_FDT, 0, &dev));
+ ut_assertok(uclass_get_device(UCLASS_TEST_FDT, 1, &dev));
+
+ /* But now that it is probed, we can find it */
+ ut_assertok(uclass_get_device_by_seq(UCLASS_TEST_FDT, 1, &dev));
+ ut_asserteq_str("a-test", dev->name);
return 0;
}
-DM_TEST(dm_test_fdt, 0);
+DM_TEST(dm_test_fdt_uclass_seq, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
+
+/* Test that we can find a device by device tree offset */
+static int dm_test_fdt_offset(struct dm_test_state *dms)
+{
+ const void *blob = gd->fdt_blob;
+ struct udevice *dev;
+ int node;
+
+ node = fdt_path_offset(blob, "/e-test");
+ ut_assert(node > 0);
+ ut_assertok(uclass_get_device_by_of_offset(UCLASS_TEST_FDT, node,
+ &dev));
+ ut_asserteq_str("e-test", dev->name);
+
+ /* This node should not be bound */
+ node = fdt_path_offset(blob, "/junk");
+ ut_assert(node > 0);
+ ut_asserteq(-ENODEV, uclass_get_device_by_of_offset(UCLASS_TEST_FDT,
+ node, &dev));
+
+ /* This is not a top level node so should not be probed */
+ node = fdt_path_offset(blob, "/some-bus/c-test@5");
+ ut_assert(node > 0);
+ ut_asserteq(-ENODEV, uclass_get_device_by_of_offset(UCLASS_TEST_FDT,
+ node, &dev));
+
+ return 0;
+}
+DM_TEST(dm_test_fdt_offset, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
diff --git a/test/dm/test-main.c b/test/dm/test-main.c
index fbdae68..94ce72a 100644
--- a/test/dm/test-main.c
+++ b/test/dm/test-main.c
@@ -89,11 +89,11 @@ int dm_test_main(void)
ut_assertok(dm_test_init(dms));
if (test->flags & DM_TESTF_SCAN_PDATA)
- ut_assertok(dm_scan_platdata());
+ ut_assertok(dm_scan_platdata(false));
if (test->flags & DM_TESTF_PROBE_TEST)
ut_assertok(do_autoprobe(dms));
if (test->flags & DM_TESTF_SCAN_FDT)
- ut_assertok(dm_scan_fdt(gd->fdt_blob));
+ ut_assertok(dm_scan_fdt(gd->fdt_blob, false));
if (test->func(dms))
break;
diff --git a/test/dm/test.dts b/test/dm/test.dts
index ec5364f..8489595 100644
--- a/test/dm/test.dts
+++ b/test/dm/test.dts
@@ -6,10 +6,22 @@
#address-cells = <1>;
#size-cells = <0>;
+ aliases {
+ console = &uart0;
+ testfdt6 = "/e-test";
+ };
+
+ uart0: serial {
+ compatible = "sandbox,serial";
+ u-boot,dm-pre-reloc;
+ };
+
a-test {
reg = <0>;
compatible = "denx,u-boot-fdt-test";
+ ping-expect = <0>;
ping-add = <0>;
+ u-boot,dm-pre-reloc;
};
junk {
@@ -24,23 +36,47 @@
b-test {
reg = <3>;
compatible = "denx,u-boot-fdt-test";
+ ping-expect = <3>;
ping-add = <3>;
};
some-bus {
#address-cells = <1>;
#size-cells = <0>;
- reg = <4>;
+ compatible = "denx,u-boot-test-bus";
+ reg = <3>;
+ ping-expect = <4>;
ping-add = <4>;
- c-test {
+ c-test@5 {
compatible = "denx,u-boot-fdt-test";
reg = <5>;
+ ping-expect = <5>;
ping-add = <5>;
};
+ c-test@0 {
+ compatible = "denx,u-boot-fdt-test";
+ reg = <0>;
+ ping-expect = <6>;
+ ping-add = <6>;
+ };
+ c-test@1 {
+ compatible = "denx,u-boot-fdt-test";
+ reg = <1>;
+ ping-expect = <7>;
+ ping-add = <7>;
+ };
};
d-test {
- reg = <6>;
+ reg = <3>;
+ ping-expect = <6>;
+ ping-add = <6>;
+ compatible = "google,another-fdt-test";
+ };
+
+ e-test {
+ reg = <3>;
+ ping-expect = <6>;
ping-add = <6>;
compatible = "google,another-fdt-test";
};
diff --git a/tools/Makefile b/tools/Makefile
index 61b2048..90e966d 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -193,7 +193,7 @@ endif # !LOGO_BMP
# Define _GNU_SOURCE to obtain the getline prototype from stdio.h
#
HOST_EXTRACFLAGS += -include $(srctree)/include/libfdt_env.h \
- $(patsubst -I%,-idirafter%, $(UBOOTINCLUDE)) \
+ $(patsubst -I%,-idirafter%, $(filter -I%, $(UBOOTINCLUDE))) \
-I$(srctree)/lib/libfdt \
-I$(srctree)/tools \
-DCONFIG_SYS_TEXT_BASE=$(CONFIG_SYS_TEXT_BASE) \
diff --git a/tools/buildman/board.py b/tools/buildman/board.py
index 5172a47..7bcc932 100644
--- a/tools/buildman/board.py
+++ b/tools/buildman/board.py
@@ -17,7 +17,7 @@ class Board:
soc: Name of SOC, or '' if none (e.g. mx31)
vendor: Name of vendor (e.g. armltd)
board_name: Name of board (e.g. integrator)
- target: Target name (use make <target>_config to configure)
+ target: Target name (use make <target>_defconfig to configure)
options: board-specific options (e.g. integratorcp:CM1136)
"""
self.target = target
diff --git a/tools/buildman/builder.py b/tools/buildman/builder.py
index 4a2d753..48408ff 100644
--- a/tools/buildman/builder.py
+++ b/tools/buildman/builder.py
@@ -188,7 +188,8 @@ class BuilderThread(threading.Thread):
return self.builder.do_make(commit, brd, stage, cwd, *args,
**kwargs)
- def RunCommit(self, commit_upto, brd, work_dir, do_config, force_build):
+ def RunCommit(self, commit_upto, brd, work_dir, do_config, force_build,
+ force_build_failures):
"""Build a particular commit.
If the build is already done, and we are not forcing a build, we skip
@@ -198,8 +199,10 @@ class BuilderThread(threading.Thread):
commit_upto: Commit number to build (0...n-1)
brd: Board object to build
work_dir: Directory to which the source will be checked out
- do_config: True to run a make <board>_config on the source
+ do_config: True to run a make <board>_defconfig on the source
force_build: Force a build even if one was previously done
+ force_build_failures: Force a bulid if the previous result showed
+ failure
Returns:
tuple containing:
@@ -210,19 +213,28 @@ class BuilderThread(threading.Thread):
# self.Make() below, in the event that we do a build.
result = command.CommandResult()
result.return_code = 0
- out_dir = os.path.join(work_dir, 'build')
+ if self.builder.in_tree:
+ out_dir = work_dir
+ else:
+ out_dir = os.path.join(work_dir, 'build')
# Check if the job was already completed last time
done_file = self.builder.GetDoneFile(commit_upto, brd.target)
result.already_done = os.path.exists(done_file)
- if result.already_done and not force_build:
+ will_build = (force_build or force_build_failures or
+ not result.already_done)
+ if result.already_done and will_build:
# Get the return code from that build and use it
with open(done_file, 'r') as fd:
result.return_code = int(fd.readline())
err_file = self.builder.GetErrFile(commit_upto, brd.target)
if os.path.exists(err_file) and os.stat(err_file).st_size:
result.stderr = 'bad'
- else:
+ elif not force_build:
+ # The build passed, so no need to build it again
+ will_build = False
+
+ if will_build:
# We are going to have to build it. First, get a toolchain
if not self.toolchain:
try:
@@ -248,10 +260,13 @@ class BuilderThread(threading.Thread):
# Set up the environment and command line
env = self.toolchain.MakeEnvironment()
Mkdir(out_dir)
- args = ['O=build', '-s']
+ args = []
+ if not self.builder.in_tree:
+ args.append('O=build')
+ args.append('-s')
if self.builder.num_jobs is not None:
args.extend(['-j', str(self.builder.num_jobs)])
- config_args = ['%s_config' % brd.target]
+ config_args = ['%s_defconfig' % brd.target]
config_out = ''
args.extend(self.builder.toolchains.GetMakeArguments(brd))
@@ -404,22 +419,26 @@ class BuilderThread(threading.Thread):
work_dir = self.builder.GetThreadDir(self.thread_num)
self.toolchain = None
if job.commits:
- # Run 'make board_config' on the first commit
+ # Run 'make board_defconfig' on the first commit
do_config = True
commit_upto = 0
force_build = False
for commit_upto in range(0, len(job.commits), job.step):
result, request_config = self.RunCommit(commit_upto, brd,
work_dir, do_config,
- force_build or self.builder.force_build)
+ force_build or self.builder.force_build,
+ self.builder.force_build_failures)
failed = result.return_code or result.stderr
+ did_config = do_config
if failed and not do_config:
# If our incremental build failed, try building again
# with a reconfig.
if self.builder.force_config_on_failure:
result, request_config = self.RunCommit(commit_upto,
- brd, work_dir, True, True)
- do_config = request_config
+ brd, work_dir, True, True, False)
+ did_config = True
+ if not self.builder.force_reconfig:
+ do_config = request_config
# If we built that commit, then config is done. But if we got
# an warning, reconfig next time to force it to build the same
@@ -435,7 +454,7 @@ class BuilderThread(threading.Thread):
# Of course this is substantially slower if there are build
# errors/warnings (e.g. 2-3x slower even if only 10% of builds
# have problems).
- if (failed and not result.already_done and not do_config and
+ if (failed and not result.already_done and not did_config and
self.builder.force_config_on_failure):
# If this build failed, try the next one with a
# reconfigure.
@@ -498,6 +517,8 @@ class Builder:
force_config_on_failure: If a commit fails for a board, disable
incremental building for the next commit we build for that
board, so that we will see all warnings/errors again.
+ force_build_failures: If a previously-built build (i.e. built on
+ a previous run of buildman) is marked as failed, rebuild it.
git_dir: Git directory containing source repository
last_line_len: Length of the last line we printed (used for erasing
it with new progress information)
@@ -510,6 +531,15 @@ class Builder:
toolchains: Toolchains object to use for building
upto: Current commit number we are building (0.count-1)
warned: Number of builds that produced at least one warning
+ force_reconfig: Reconfigure U-Boot on each comiit. This disables
+ incremental building, where buildman reconfigures on the first
+ commit for a baord, and then just does an incremental build for
+ the following commits. In fact buildman will reconfigure and
+ retry for any failing commits, so generally the only effect of
+ this option is to slow things down.
+ in_tree: Build U-Boot in-tree instead of specifying an output
+ directory separate from the source code. This option is really
+ only useful for testing in-tree builds.
Private members:
_base_board_dict: Last-summarised Dict of boards
@@ -546,7 +576,7 @@ class Builder:
self.func_sizes = func_sizes
def __init__(self, toolchains, base_dir, git_dir, num_threads, num_jobs,
- checkout=True, show_unknown=True, step=1):
+ gnu_make='make', checkout=True, show_unknown=True, step=1):
"""Create a new Builder object
Args:
@@ -555,6 +585,7 @@ class Builder:
git_dir: Git directory containing source repository
num_threads: Number of builder threads to run
num_jobs: Number of jobs to run at once (passed to make as -j)
+ gnu_make: the command name of GNU Make.
checkout: True to check out source, False to skip that step.
This is used for testing.
show_unknown: Show unknown boards (those not built) in summary
@@ -566,6 +597,7 @@ class Builder:
self.threads = []
self.active = True
self.do_make = self.Make
+ self.gnu_make = gnu_make
self.checkout = checkout
self.num_threads = num_threads
self.num_jobs = num_jobs
@@ -578,7 +610,10 @@ class Builder:
self._complete_delay = None
self._next_delay_update = datetime.now()
self.force_config_on_failure = True
+ self.force_build_failures = False
+ self.force_reconfig = False
self._step = step
+ self.in_tree = False
self.col = terminal.Color()
@@ -667,7 +702,7 @@ class Builder:
args: Arguments to pass to make
kwargs: Arguments to pass to command.RunPipe()
"""
- cmd = ['make'] + list(args)
+ cmd = [self.gnu_make] + list(args)
result = command.RunPipe([cmd], capture=True, capture_stderr=True,
cwd=cwd, raise_on_error=False, **kwargs)
return result
diff --git a/tools/buildman/buildman.py b/tools/buildman/buildman.py
index 73a5483..42847ac 100755
--- a/tools/buildman/buildman.py
+++ b/tools/buildman/buildman.py
@@ -67,11 +67,17 @@ parser.add_option('-B', '--bloat', dest='show_bloat',
help='Show changes in function code size for each board')
parser.add_option('-c', '--count', dest='count', type='int',
default=-1, help='Run build on the top n commits')
+parser.add_option('-C', '--force-reconfig', dest='force_reconfig',
+ action='store_true', default=False,
+ help='Reconfigure for every commit (disable incremental build)')
parser.add_option('-e', '--show_errors', action='store_true',
default=False, help='Show errors and warnings')
parser.add_option('-f', '--force-build', dest='force_build',
action='store_true', default=False,
help='Force build of boards even if already built')
+parser.add_option('-F', '--force-build-failures', dest='force_build_failures',
+ action='store_true', default=False,
+ help='Force build of previously-failed build')
parser.add_option('-d', '--detail', dest='show_detail',
action='store_true', default=False,
help='Show detailed information for each board in summary')
@@ -79,6 +85,9 @@ parser.add_option('-g', '--git', type='string',
help='Git repo containing branch to build', default='.')
parser.add_option('-H', '--full-help', action='store_true', dest='full_help',
default=False, help='Display the README file')
+parser.add_option('-i', '--in-tree', dest='in_tree',
+ action='store_true', default=False,
+ help='Build in the source tree instead of a separate directory')
parser.add_option('-j', '--jobs', dest='jobs', type='int',
default=None, help='Number of jobs to run at once (passed to make)')
parser.add_option('-k', '--keep-outputs', action='store_true',
diff --git a/tools/buildman/control.py b/tools/buildman/control.py
index d2f4102..75b6498 100644
--- a/tools/buildman/control.py
+++ b/tools/buildman/control.py
@@ -14,6 +14,8 @@ import gitutil
import patchstream
import terminal
import toolchain
+import command
+import subprocess
def GetPlural(count):
"""Returns a plural 's' if count is not 1"""
@@ -108,6 +110,15 @@ def DoBuildman(options, args):
sys.exit(1)
# Work out what subset of the boards we are building
+ board_file = os.path.join(options.git, 'boards.cfg')
+ if not os.path.exists(board_file):
+ print 'Could not find %s' % board_file
+ status = subprocess.call([os.path.join(options.git,
+ 'tools/genboardscfg.py')])
+ if status != 0:
+ print >> sys.stderr, "Failed to generate boards.cfg"
+ sys.exit(1)
+
boards = board.Boards()
boards.ReadBoards(os.path.join(options.git, 'boards.cfg'))
why_selected = boards.SelectBoards(args)
@@ -144,10 +155,16 @@ def DoBuildman(options, args):
if not options.step:
options.step = len(series.commits) - 1
+ gnu_make = command.Output(os.path.join(options.git,
+ 'scripts/show-gnu-make')).rstrip()
+ if not gnu_make:
+ print >> sys.stderr, 'GNU Make not found'
+ sys.exit(1)
+
# Create a new builder with the selected options
output_dir = os.path.join(options.output_dir, options.branch)
builder = Builder(toolchains, output_dir, options.git_dir,
- options.threads, options.jobs, checkout=True,
+ options.threads, options.jobs, gnu_make=gnu_make, checkout=True,
show_unknown=options.show_unknown, step=options.step)
builder.force_config_on_failure = not options.quick
@@ -156,6 +173,9 @@ def DoBuildman(options, args):
ShowActions(series, why_selected, selected, builder, options)
else:
builder.force_build = options.force_build
+ builder.force_build_failures = options.force_build_failures
+ builder.force_reconfig = options.force_reconfig
+ builder.in_tree = options.in_tree
# Work out which boards to build
board_selected = boards.GetSelectedDict()
diff --git a/tools/env/Makefile b/tools/env/Makefile
index f5368bc..4927489 100644
--- a/tools/env/Makefile
+++ b/tools/env/Makefile
@@ -11,7 +11,7 @@
HOSTCC = $(CC)
# Compile for a hosted environment on the target
-HOST_EXTRACFLAGS = $(patsubst -I%,-idirafter%, $(UBOOTINCLUDE)) \
+HOST_EXTRACFLAGS = $(patsubst -I%,-idirafter%, $(filter -I%, $(UBOOTINCLUDE))) \
-idirafter $(srctree)/tools/env \
-DUSE_HOSTCC \
-DTEXT_BASE=$(TEXT_BASE)
diff --git a/tools/genboardscfg.py b/tools/genboardscfg.py
new file mode 100755
index 0000000..734d90b
--- /dev/null
+++ b/tools/genboardscfg.py
@@ -0,0 +1,504 @@
+#!/usr/bin/env python
+#
+# Author: Masahiro Yamada <yamada.m@jp.panasonic.com>
+#
+# SPDX-License-Identifier: GPL-2.0+
+#
+
+"""
+Converter from Kconfig and MAINTAINERS to boards.cfg
+
+Run 'tools/genboardscfg.py' to create boards.cfg file.
+
+Run 'tools/genboardscfg.py -h' for available options.
+"""
+
+import errno
+import fnmatch
+import glob
+import optparse
+import os
+import re
+import shutil
+import subprocess
+import sys
+import tempfile
+import time
+
+BOARD_FILE = 'boards.cfg'
+CONFIG_DIR = 'configs'
+REFORMAT_CMD = [os.path.join('tools', 'reformat.py'),
+ '-i', '-d', '-', '-s', '8']
+SHOW_GNU_MAKE = 'scripts/show-gnu-make'
+SLEEP_TIME=0.03
+
+COMMENT_BLOCK = '''#
+# List of boards
+# Automatically generated by %s: don't edit
+#
+# Status, Arch, CPU(:SPLCPU), SoC, Vendor, Board, Target, Options, Maintainers
+
+''' % __file__
+
+### helper functions ###
+def get_terminal_columns():
+ """Get the width of the terminal.
+
+ Returns:
+ The width of the terminal, or zero if the stdout is not
+ associated with tty.
+ """
+ try:
+ return shutil.get_terminal_size().columns # Python 3.3~
+ except AttributeError:
+ import fcntl
+ import termios
+ import struct
+ arg = struct.pack('hhhh', 0, 0, 0, 0)
+ try:
+ ret = fcntl.ioctl(sys.stdout.fileno(), termios.TIOCGWINSZ, arg)
+ except IOError as exception:
+ if exception.errno != errno.ENOTTY:
+ raise
+ # If 'Inappropriate ioctl for device' error occurs,
+ # stdout is probably redirected. Return 0.
+ return 0
+ return struct.unpack('hhhh', ret)[1]
+
+def get_devnull():
+ """Get the file object of '/dev/null' device."""
+ try:
+ devnull = subprocess.DEVNULL # py3k
+ except AttributeError:
+ devnull = open(os.devnull, 'wb')
+ return devnull
+
+def check_top_directory():
+ """Exit if we are not at the top of source directory."""
+ for f in ('README', 'Licenses'):
+ if not os.path.exists(f):
+ print >> sys.stderr, 'Please run at the top of source directory.'
+ sys.exit(1)
+
+def get_make_cmd():
+ """Get the command name of GNU Make."""
+ process = subprocess.Popen([SHOW_GNU_MAKE], stdout=subprocess.PIPE)
+ ret = process.communicate()
+ if process.returncode:
+ print >> sys.stderr, 'GNU Make not found'
+ sys.exit(1)
+ return ret[0].rstrip()
+
+### classes ###
+class MaintainersDatabase:
+
+ """The database of board status and maintainers."""
+
+ def __init__(self):
+ """Create an empty database."""
+ self.database = {}
+
+ def get_status(self, target):
+ """Return the status of the given board.
+
+ Returns:
+ Either 'Active' or 'Orphan'
+ """
+ tmp = self.database[target][0]
+ if tmp.startswith('Maintained'):
+ return 'Active'
+ elif tmp.startswith('Orphan'):
+ return 'Orphan'
+ else:
+ print >> sys.stderr, 'Error: %s: unknown status' % tmp
+
+ def get_maintainers(self, target):
+ """Return the maintainers of the given board.
+
+ If the board has two or more maintainers, they are separated
+ with colons.
+ """
+ return ':'.join(self.database[target][1])
+
+ def parse_file(self, file):
+ """Parse the given MAINTAINERS file.
+
+ This method parses MAINTAINERS and add board status and
+ maintainers information to the database.
+
+ Arguments:
+ file: MAINTAINERS file to be parsed
+ """
+ targets = []
+ maintainers = []
+ status = '-'
+ for line in open(file):
+ tag, rest = line[:2], line[2:].strip()
+ if tag == 'M:':
+ maintainers.append(rest)
+ elif tag == 'F:':
+ # expand wildcard and filter by 'configs/*_defconfig'
+ for f in glob.glob(rest):
+ front, match, rear = f.partition('configs/')
+ if not front and match:
+ front, match, rear = rear.rpartition('_defconfig')
+ if match and not rear:
+ targets.append(front)
+ elif tag == 'S:':
+ status = rest
+ elif line == '\n' and targets:
+ for target in targets:
+ self.database[target] = (status, maintainers)
+ targets = []
+ maintainers = []
+ status = '-'
+ if targets:
+ for target in targets:
+ self.database[target] = (status, maintainers)
+
+class DotConfigParser:
+
+ """A parser of .config file.
+
+ Each line of the output should have the form of:
+ Status, Arch, CPU, SoC, Vendor, Board, Target, Options, Maintainers
+ Most of them are extracted from .config file.
+ MAINTAINERS files are also consulted for Status and Maintainers fields.
+ """
+
+ re_arch = re.compile(r'CONFIG_SYS_ARCH="(.*)"')
+ re_cpu = re.compile(r'CONFIG_SYS_CPU="(.*)"')
+ re_soc = re.compile(r'CONFIG_SYS_SOC="(.*)"')
+ re_vendor = re.compile(r'CONFIG_SYS_VENDOR="(.*)"')
+ re_board = re.compile(r'CONFIG_SYS_BOARD="(.*)"')
+ re_config = re.compile(r'CONFIG_SYS_CONFIG_NAME="(.*)"')
+ re_options = re.compile(r'CONFIG_SYS_EXTRA_OPTIONS="(.*)"')
+ re_list = (('arch', re_arch), ('cpu', re_cpu), ('soc', re_soc),
+ ('vendor', re_vendor), ('board', re_board),
+ ('config', re_config), ('options', re_options))
+ must_fields = ('arch', 'config')
+
+ def __init__(self, build_dir, output, maintainers_database):
+ """Create a new .config perser.
+
+ Arguments:
+ build_dir: Build directory where .config is located
+ output: File object which the result is written to
+ maintainers_database: An instance of class MaintainersDatabase
+ """
+ self.dotconfig = os.path.join(build_dir, '.config')
+ self.output = output
+ self.database = maintainers_database
+
+ def parse(self, defconfig):
+ """Parse .config file and output one-line database for the given board.
+
+ Arguments:
+ defconfig: Board (defconfig) name
+ """
+ fields = {}
+ for line in open(self.dotconfig):
+ if not line.startswith('CONFIG_SYS_'):
+ continue
+ for (key, pattern) in self.re_list:
+ m = pattern.match(line)
+ if m and m.group(1):
+ fields[key] = m.group(1)
+ break
+
+ # sanity check of '.config' file
+ for field in self.must_fields:
+ if not field in fields:
+ print >> sys.stderr, 'Error: %s is not defined in %s' % \
+ (field, defconfig)
+ sys.exit(1)
+
+ # fix-up for aarch64 and tegra
+ if fields['arch'] == 'arm' and 'cpu' in fields:
+ if fields['cpu'] == 'armv8':
+ fields['arch'] = 'aarch64'
+ if 'soc' in fields and re.match('tegra[0-9]*$', fields['soc']):
+ fields['cpu'] += ':arm720t'
+
+ target, match, rear = defconfig.partition('_defconfig')
+ assert match and not rear, \
+ '%s : invalid defconfig file name' % defconfig
+
+ fields['status'] = self.database.get_status(target)
+ fields['maintainers'] = self.database.get_maintainers(target)
+
+ if 'options' in fields:
+ options = fields['config'] + ':' + \
+ fields['options'].replace(r'\"', '"')
+ elif fields['config'] != target:
+ options = fields['config']
+ else:
+ options = '-'
+
+ self.output.write((' '.join(['%s'] * 9) + '\n') %
+ (fields['status'],
+ fields['arch'],
+ fields.get('cpu', '-'),
+ fields.get('soc', '-'),
+ fields.get('vendor', '-'),
+ fields.get('board', '-'),
+ target,
+ options,
+ fields['maintainers']))
+
+class Slot:
+
+ """A slot to store a subprocess.
+
+ Each instance of this class handles one subprocess.
+ This class is useful to control multiple processes
+ for faster processing.
+ """
+
+ def __init__(self, output, maintainers_database, devnull, make_cmd):
+ """Create a new slot.
+
+ Arguments:
+ output: File object which the result is written to
+ maintainers_database: An instance of class MaintainersDatabase
+ """
+ self.occupied = False
+ self.build_dir = tempfile.mkdtemp()
+ self.devnull = devnull
+ self.make_cmd = make_cmd
+ self.parser = DotConfigParser(self.build_dir, output,
+ maintainers_database)
+
+ def __del__(self):
+ """Delete the working directory"""
+ shutil.rmtree(self.build_dir)
+
+ def add(self, defconfig):
+ """Add a new subprocess to the slot.
+
+ Fails if the slot is occupied, that is, the current subprocess
+ is still running.
+
+ Arguments:
+ defconfig: Board (defconfig) name
+
+ Returns:
+ Return True on success or False on fail
+ """
+ if self.occupied:
+ return False
+ o = 'O=' + self.build_dir
+ self.ps = subprocess.Popen([self.make_cmd, o, defconfig],
+ stdout=self.devnull)
+ self.defconfig = defconfig
+ self.occupied = True
+ return True
+
+ def poll(self):
+ """Check if the subprocess is running and invoke the .config
+ parser if the subprocess is terminated.
+
+ Returns:
+ Return True if the subprocess is terminated, False otherwise
+ """
+ if not self.occupied:
+ return True
+ if self.ps.poll() == None:
+ return False
+ self.parser.parse(self.defconfig)
+ self.occupied = False
+ return True
+
+class Slots:
+
+ """Controller of the array of subprocess slots."""
+
+ def __init__(self, jobs, output, maintainers_database):
+ """Create a new slots controller.
+
+ Arguments:
+ jobs: A number of slots to instantiate
+ output: File object which the result is written to
+ maintainers_database: An instance of class MaintainersDatabase
+ """
+ self.slots = []
+ devnull = get_devnull()
+ make_cmd = get_make_cmd()
+ for i in range(jobs):
+ self.slots.append(Slot(output, maintainers_database,
+ devnull, make_cmd))
+
+ def add(self, defconfig):
+ """Add a new subprocess if a vacant slot is available.
+
+ Arguments:
+ defconfig: Board (defconfig) name
+
+ Returns:
+ Return True on success or False on fail
+ """
+ for slot in self.slots:
+ if slot.add(defconfig):
+ return True
+ return False
+
+ def available(self):
+ """Check if there is a vacant slot.
+
+ Returns:
+ Return True if a vacant slot is found, False if all slots are full
+ """
+ for slot in self.slots:
+ if slot.poll():
+ return True
+ return False
+
+ def empty(self):
+ """Check if all slots are vacant.
+
+ Returns:
+ Return True if all slots are vacant, False if at least one slot
+ is running
+ """
+ ret = True
+ for slot in self.slots:
+ if not slot.poll():
+ ret = False
+ return ret
+
+class Indicator:
+
+ """A class to control the progress indicator."""
+
+ MIN_WIDTH = 15
+ MAX_WIDTH = 70
+
+ def __init__(self, total):
+ """Create an instance.
+
+ Arguments:
+ total: A number of boards
+ """
+ self.total = total
+ self.cur = 0
+ width = get_terminal_columns()
+ width = min(width, self.MAX_WIDTH)
+ width -= self.MIN_WIDTH
+ if width > 0:
+ self.enabled = True
+ else:
+ self.enabled = False
+ self.width = width
+
+ def inc(self):
+ """Increment the counter and show the progress bar."""
+ if not self.enabled:
+ return
+ self.cur += 1
+ arrow_len = self.width * self.cur // self.total
+ msg = '%4d/%d [' % (self.cur, self.total)
+ msg += '=' * arrow_len + '>' + ' ' * (self.width - arrow_len) + ']'
+ sys.stdout.write('\r' + msg)
+ sys.stdout.flush()
+
+def __gen_boards_cfg(jobs):
+ """Generate boards.cfg file.
+
+ Arguments:
+ jobs: The number of jobs to run simultaneously
+
+ Note:
+ The incomplete boards.cfg is left over when an error (including
+ the termination by the keyboard interrupt) occurs on the halfway.
+ """
+ check_top_directory()
+ print 'Generating %s ... (jobs: %d)' % (BOARD_FILE, jobs)
+
+ # All the defconfig files to be processed
+ defconfigs = []
+ for (dirpath, dirnames, filenames) in os.walk(CONFIG_DIR):
+ dirpath = dirpath[len(CONFIG_DIR) + 1:]
+ for filename in fnmatch.filter(filenames, '*_defconfig'):
+ defconfigs.append(os.path.join(dirpath, filename))
+
+ # Parse all the MAINTAINERS files
+ maintainers_database = MaintainersDatabase()
+ for (dirpath, dirnames, filenames) in os.walk('.'):
+ if 'MAINTAINERS' in filenames:
+ maintainers_database.parse_file(os.path.join(dirpath,
+ 'MAINTAINERS'))
+
+ # Output lines should be piped into the reformat tool
+ reformat_process = subprocess.Popen(REFORMAT_CMD, stdin=subprocess.PIPE,
+ stdout=open(BOARD_FILE, 'w'))
+ pipe = reformat_process.stdin
+ pipe.write(COMMENT_BLOCK)
+
+ indicator = Indicator(len(defconfigs))
+ slots = Slots(jobs, pipe, maintainers_database)
+
+ # Main loop to process defconfig files:
+ # Add a new subprocess into a vacant slot.
+ # Sleep if there is no available slot.
+ for defconfig in defconfigs:
+ while not slots.add(defconfig):
+ while not slots.available():
+ # No available slot: sleep for a while
+ time.sleep(SLEEP_TIME)
+ indicator.inc()
+
+ # wait until all the subprocesses finish
+ while not slots.empty():
+ time.sleep(SLEEP_TIME)
+ print ''
+
+ # wait until the reformat tool finishes
+ reformat_process.communicate()
+ if reformat_process.returncode != 0:
+ print >> sys.stderr, '"%s" failed' % REFORMAT_CMD[0]
+ sys.exit(1)
+
+def gen_boards_cfg(jobs):
+ """Generate boards.cfg file.
+
+ The incomplete boards.cfg is deleted if an error (including
+ the termination by the keyboard interrupt) occurs on the halfway.
+
+ Arguments:
+ jobs: The number of jobs to run simultaneously
+ """
+ try:
+ __gen_boards_cfg(jobs)
+ except:
+ # We should remove incomplete boards.cfg
+ try:
+ os.remove(BOARD_FILE)
+ except OSError as exception:
+ # Ignore 'No such file or directory' error
+ if exception.errno != errno.ENOENT:
+ raise
+ raise
+
+def main():
+ parser = optparse.OptionParser()
+ # Add options here
+ parser.add_option('-j', '--jobs',
+ help='the number of jobs to run simultaneously')
+ (options, args) = parser.parse_args()
+ if options.jobs:
+ try:
+ jobs = int(options.jobs)
+ except ValueError:
+ print >> sys.stderr, 'Option -j (--jobs) takes a number'
+ sys.exit(1)
+ else:
+ try:
+ jobs = int(subprocess.Popen(['getconf', '_NPROCESSORS_ONLN'],
+ stdout=subprocess.PIPE).communicate()[0])
+ except (OSError, ValueError):
+ print 'info: failed to get the number of CPUs. Set jobs to 1'
+ jobs = 1
+ gen_boards_cfg(jobs)
+
+if __name__ == '__main__':
+ main()
diff --git a/tools/mksunxiboot.c b/tools/mksunxiboot.c
index da7c9f0..1f0fbae 100644
--- a/tools/mksunxiboot.c
+++ b/tools/mksunxiboot.c
@@ -77,7 +77,7 @@ int main(int argc, char *argv[])
{
int fd_in, fd_out;
struct boot_img img;
- unsigned file_size, load_size;
+ unsigned file_size;
int count;
if (argc < 2) {
@@ -101,8 +101,6 @@ int main(int argc, char *argv[])
if (file_size > SRAM_LOAD_MAX_SIZE) {
fprintf(stderr, "ERROR: File too large!\n");
return EXIT_FAILURE;
- } else {
- load_size = ALIGN(file_size, sizeof(int));
}
fd_out = open(argv[2], O_WRONLY | O_CREAT, 0666);
@@ -113,8 +111,8 @@ int main(int argc, char *argv[])
/* read file to buffer to calculate checksum */
lseek(fd_in, 0, SEEK_SET);
- count = read(fd_in, img.code, load_size);
- if (count != load_size) {
+ count = read(fd_in, img.code, file_size);
+ if (count != file_size) {
perror("Reading input image");
return EXIT_FAILURE;
}
@@ -126,7 +124,7 @@ int main(int argc, char *argv[])
& 0x00FFFFFF);
memcpy(img.header.magic, BOOT0_MAGIC, 8); /* no '0' termination */
img.header.length =
- ALIGN(load_size + sizeof(struct boot_file_head), BLOCK_SIZE);
+ ALIGN(file_size + sizeof(struct boot_file_head), BLOCK_SIZE);
gen_check_sum(&img.header);
count = write(fd_out, &img, img.header.length);
diff --git a/tools/patman/gitutil.py b/tools/patman/gitutil.py
index 7b75c83..65754f5 100644
--- a/tools/patman/gitutil.py
+++ b/tools/patman/gitutil.py
@@ -377,9 +377,14 @@ def EmailPatches(series, cover_fname, args, dry_run, raise_on_error, cc_fname,
"""
to = BuildEmailList(series.get('to'), '--to', alias, raise_on_error)
if not to:
- print ("No recipient, please add something like this to a commit\n"
- "Series-to: Fred Bloggs <f.blogs@napier.co.nz>")
- return
+ git_config_to = command.Output('git', 'config', 'sendemail.to')
+ if not git_config_to:
+ print ("No recipient.\n"
+ "Please add something like this to a commit\n"
+ "Series-to: Fred Bloggs <f.blogs@napier.co.nz>\n"
+ "Or do something like this\n"
+ "git config sendemail.to u-boot@lists.denx.de")
+ return
cc = BuildEmailList(series.get('cc'), '--cc', alias, raise_on_error)
if self_only:
to = BuildEmailList([os.getenv('USER')], '--to', alias, raise_on_error)