summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--Kconfig65
-rwxr-xr-xMAKEALL28
-rw-r--r--Makefile120
-rw-r--r--README29
-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.mk2
-rw-r--r--arch/arm/cpu/arm926ejs/kirkwood/cpu.c9
-rw-r--r--arch/arm/cpu/armv7/sunxi/Makefile3
-rw-r--r--arch/arm/cpu/armv7/sunxi/board.c5
-rw-r--r--arch/arm/cpu/armv7/sunxi/clock_sun4i.c4
-rw-r--r--arch/arm/cpu/armv7/sunxi/psci.S162
-rw-r--r--arch/arm/include/asm/arch-fsl-lsch3/config.h4
-rw-r--r--arch/arm/include/asm/arch-kirkwood/kirkwood.h1
-rw-r--r--arch/arm/include/asm/arch-s3c24x0/s3c2410.h4
-rw-r--r--arch/arm/include/asm/arch-s3c24x0/s3c2440.h4
-rw-r--r--arch/arm/include/asm/arch-s3c24x0/s3c24x0.h19
-rw-r--r--arch/arm/include/asm/arch-sunxi/clock_sun4i.h15
-rw-r--r--arch/arm/include/asm/config.h2
-rw-r--r--arch/arm/include/asm/io.h1
-rw-r--r--arch/arm/lib/crt0.S12
-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/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/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/mpc83xx/cpu.c2
-rw-r--r--arch/powerpc/cpu/mpc83xx/fdt.c2
-rw-r--r--arch/powerpc/cpu/mpc85xx/Kconfig190
-rw-r--r--arch/powerpc/cpu/mpc85xx/config.mk2
-rw-r--r--arch/powerpc/cpu/mpc85xx/cpu.c8
-rw-r--r--arch/powerpc/cpu/mpc85xx/cpu_init.c166
-rw-r--r--arch/powerpc/cpu/mpc85xx/fdt.c47
-rw-r--r--arch/powerpc/cpu/mpc85xx/interrupts.c2
-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/mpc8xxx/cpu.c1
-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/powerpc/include/asm/cache.h6
-rw-r--r--arch/powerpc/include/asm/immap_85xx.h6
-rw-r--r--arch/powerpc/include/asm/io.h3
-rw-r--r--arch/powerpc/include/asm/processor.h6
-rw-r--r--arch/powerpc/lib/board.c8
-rw-r--r--arch/sandbox/Kconfig16
-rw-r--r--arch/sandbox/config.mk2
-rw-r--r--arch/sh/Kconfig98
-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--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-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/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-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/exmeritus/hww1u1a/hww1u1a.c12
-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/b4860qds/b4860qds.c12
-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/bsc9132qds/bsc9132qds.c12
-rw-r--r--board/freescale/c29xpcie/Kconfig15
-rw-r--r--board/freescale/c29xpcie/MAINTAINERS8
-rw-r--r--board/freescale/c29xpcie/c29xpcie.c12
-rw-r--r--board/freescale/corenet_ds/Kconfig63
-rw-r--r--board/freescale/corenet_ds/MAINTAINERS29
-rw-r--r--board/freescale/corenet_ds/corenet_ds.c12
-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/mpc8536ds/mpc8536ds.c12
-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/mpc8572ds/mpc8572ds.c12
-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/p1010rdb/p1010rdb.c12
-rw-r--r--board/freescale/p1022ds/Kconfig15
-rw-r--r--board/freescale/p1022ds/MAINTAINERS13
-rw-r--r--board/freescale/p1022ds/p1022ds.c12
-rw-r--r--board/freescale/p1023rdb/Kconfig15
-rw-r--r--board/freescale/p1023rdb/MAINTAINERS6
-rw-r--r--board/freescale/p1023rdb/p1023rdb.c12
-rw-r--r--board/freescale/p1023rds/Makefile9
-rw-r--r--board/freescale/p1023rds/README101
-rw-r--r--board/freescale/p1023rds/bcsr.h49
-rw-r--r--board/freescale/p1023rds/law.c19
-rw-r--r--board/freescale/p1023rds/p1023rds.c191
-rw-r--r--board/freescale/p1023rds/tlb.c100
-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/p1_p2_rdb.c12
-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_p2_rdb_pc/p1_p2_rdb_pc.c12
-rw-r--r--board/freescale/p1_twr/Kconfig15
-rw-r--r--board/freescale/p1_twr/MAINTAINERS6
-rw-r--r--board/freescale/p1_twr/p1_twr.c12
-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/p2020ds/p2020ds.c12
-rw-r--r--board/freescale/p2041rdb/Kconfig15
-rw-r--r--board/freescale/p2041rdb/MAINTAINERS11
-rw-r--r--board/freescale/p2041rdb/p2041rdb.c12
-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/t1040qds/eth.c4
-rw-r--r--board/freescale/t1040qds/t1040qds.c12
-rw-r--r--board/freescale/t1040qds/t1040qds_qixis.h4
-rw-r--r--board/freescale/t104xrdb/Kconfig15
-rw-r--r--board/freescale/t104xrdb/MAINTAINERS22
-rw-r--r--board/freescale/t104xrdb/t104xrdb.c12
-rw-r--r--board/freescale/t208xqds/Kconfig15
-rw-r--r--board/freescale/t208xqds/MAINTAINERS20
-rw-r--r--board/freescale/t208xqds/t208xqds.c12
-rw-r--r--board/freescale/t208xrdb/Kconfig15
-rw-r--r--board/freescale/t208xrdb/MAINTAINERS15
-rw-r--r--board/freescale/t208xrdb/t208xrdb.c13
-rw-r--r--board/freescale/t4qds/Kconfig31
-rw-r--r--board/freescale/t4qds/MAINTAINERS26
-rw-r--r--board/freescale/t4qds/t4240emu.c12
-rw-r--r--board/freescale/t4qds/t4240qds.c22
-rw-r--r--board/freescale/t4rdb/Kconfig15
-rw-r--r--board/freescale/t4rdb/MAINTAINERS7
-rw-r--r--board/freescale/t4rdb/t4240rdb.c12
-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/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/keymile/kmp204x/kmp204x.c15
-rw-r--r--board/keymile/kmp204x/kmp204x.h7
-rw-r--r--board/keymile/kmp204x/qrio.c32
-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/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/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/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/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/MAINTAINERS34
-rw-r--r--board/sunxi/Makefile16
-rw-r--r--board/sunxi/ahci.c84
-rw-r--r--board/sunxi/dram_a10_olinuxino_l.c31
-rw-r--r--board/sunxi/dram_a10s_olinuxino_m.c31
-rw-r--r--board/sunxi/dram_a13_olinuxino.c31
-rw-r--r--board/sunxi/dram_bananapi.c31
-rw-r--r--board/sunxi/dram_linksprite_pcduino3.c31
-rw-r--r--board/sunxi/dram_sun4i_360_1024_iow16.c31
-rw-r--r--board/sunxi/dram_sun4i_360_1024_iow8.c31
-rw-r--r--board/sunxi/dram_sun4i_360_512.c31
-rw-r--r--board/sunxi/dram_sun4i_384_1024_iow8.c31
-rw-r--r--board/sunxi/dram_sun7i_384_1024_iow16.c31
-rw-r--r--board/sunxi/dram_sun7i_384_512_busw16_iow16.c31
-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/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/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/evm/Kconfig71
-rw-r--r--board/ti/evm/MAINTAINERS14
-rw-r--r--board/ti/ks2_evm/Kconfig47
-rw-r--r--board/ti/ks2_evm/MAINTAINERS8
-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/zeus/Kconfig11
-rw-r--r--board/zeus/MAINTAINERS6
-rw-r--r--board/zipitz2/Kconfig15
-rw-r--r--board/zipitz2/MAINTAINERS6
-rw-r--r--boards.cfg1233
-rw-r--r--common/env_mmc.c35
-rw-r--r--config.mk10
-rw-r--r--configs/A10-OLinuXino-Lime_defconfig4
-rw-r--r--configs/A10s-OLinuXino-M_defconfig4
-rw-r--r--configs/A13-OLinuXinoM_defconfig4
-rw-r--r--configs/A13-OLinuXino_defconfig4
-rw-r--r--configs/A20-OLinuXino_MICRO_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/Auxtek-T004_defconfig4
-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/Bananapi_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/Linksprite_pcDuino3_defconfig4
-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/Mele_A1000G_defconfig4
-rw-r--r--configs/Mele_A1000_defconfig4
-rw-r--r--configs/MigoR_defconfig2
-rw-r--r--configs/Mini-X-1Gb_defconfig4
-rw-r--r--configs/Mini-X_defconfig4
-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/ba10_tv_box_defconfig4
-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/i12-tvbox_defconfig4
-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/qt840a_defconfig4
-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.ARM-SoC31
-rw-r--r--doc/README.SPL28
-rw-r--r--doc/device-tree-bindings/spi/spi-bus.txt2
-rw-r--r--doc/feature-removal-schedule.txt2
-rw-r--r--doc/git-mailrc4
-rw-r--r--drivers/block/ahci.c16
-rw-r--r--drivers/bootcount/bootcount.c2
-rw-r--r--drivers/ddr/fsl/ctrl_regs.c3
-rw-r--r--drivers/ddr/fsl/fsl_ddr_gen4.c7
-rw-r--r--drivers/misc/cros_ec_spi.c4
-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/mtd/nand/fsl_ifc_nand.c45
-rw-r--r--drivers/mtd/nand/fsl_ifc_spl.c6
-rw-r--r--drivers/mtd/spi/sf_ops.c1
-rw-r--r--drivers/net/fm/fm.h3
-rw-r--r--drivers/net/fm/init.c6
-rw-r--r--drivers/net/fm/memac_phy.c2
-rw-r--r--drivers/net/fm/tgec_phy.c2
-rw-r--r--drivers/pci/fsl_pci_init.c10
-rw-r--r--drivers/qe/qe.c2
-rw-r--r--drivers/qe/uccf.c2
-rw-r--r--drivers/qe/uccf.h2
-rw-r--r--drivers/qe/uec.c2
-rw-r--r--drivers/qe/uec_phy.c2
-rw-r--r--drivers/spi/exynos_spi.c9
-rw-r--r--drivers/spi/mxc_spi.c17
-rw-r--r--drivers/spi/spi.c2
-rw-r--r--drivers/usb/host/Makefile1
-rw-r--r--drivers/usb/host/ehci-sunxi.c201
-rw-r--r--include/.gitignore1
-rw-r--r--include/ahci.h4
-rw-r--r--include/atmel_mci.h18
-rw-r--r--include/configs/B4860QDS.h3
-rw-r--r--include/configs/BSC9131RDB.h1
-rw-r--r--include/configs/BSC9132QDS.h3
-rw-r--r--include/configs/C29XPCIE.h4
-rw-r--r--include/configs/MPC8313ERDB.h1
-rw-r--r--include/configs/P1010RDB.h6
-rw-r--r--include/configs/P1022DS.h4
-rw-r--r--include/configs/P1023RDS.h479
-rw-r--r--include/configs/P1_P2_RDB.h4
-rw-r--r--include/configs/T1040QDS.h10
-rw-r--r--include/configs/T104xRDB.h13
-rw-r--r--include/configs/T208xQDS.h5
-rw-r--r--include/configs/T208xRDB.h5
-rw-r--r--include/configs/T4240QDS.h3
-rw-r--r--include/configs/a3m071.h1
-rw-r--r--include/configs/am335x_igep0033.h1
-rw-r--r--include/configs/am3517_crane.h1
-rw-r--r--include/configs/am3517_evm.h1
-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_t35.h1
-rw-r--r--include/configs/controlcenterd.h2
-rw-r--r--include/configs/da850evm.h1
-rw-r--r--include/configs/devkit8000.h1
-rw-r--r--include/configs/dlvision-10g.h1
-rw-r--r--include/configs/dlvision.h1
-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/km/kmp204x-common.h8
-rw-r--r--include/configs/lwmon5.h1
-rw-r--r--include/configs/m53evk.h1
-rw-r--r--include/configs/mcx.h1
-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/omap3_evm_common.h1
-rw-r--r--include/configs/omap3_zoom1.h1
-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/sama5d3_xplained.h1
-rw-r--r--include/configs/sama5d3xek.h1
-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.h12
-rw-r--r--include/configs/sun5i.h5
-rw-r--r--include/configs/sun7i.h19
-rw-r--r--include/configs/sunxi-common.h19
-rw-r--r--include/configs/tam3517-common.h1
-rw-r--r--include/configs/tao3530.h1
-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.h1
-rw-r--r--include/configs/tricorder.h1
-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.h1
-rw-r--r--include/environment.h9
-rw-r--r--include/fsl_ifc.h4
-rw-r--r--include/linux/immap_qe.h (renamed from arch/powerpc/include/asm/immap_qe.h)0
-rw-r--r--include/linux/kconfig.h46
-rw-r--r--include/mvebu_mmc.h278
-rw-r--r--include/phy.h2
-rw-r--r--include/post.h2
-rw-r--r--include/watchdog.h4
-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--tools/Makefile2
-rw-r--r--tools/buildman/board.py2
-rw-r--r--tools/buildman/builder.py36
-rwxr-xr-xtools/buildman/buildman.py6
-rw-r--r--tools/buildman/control.py21
-rw-r--r--tools/env/Makefile2
-rwxr-xr-xtools/genboardscfg.py504
-rw-r--r--tools/patman/gitutil.py11
2625 files changed, 50912 insertions, 2924 deletions
diff --git a/.gitignore b/.gitignore
index 0ace33bd61..a40c277105 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 0000000000..9e77a6e28b
--- /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 020e65fdc8..929fe884c5 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 80eb239d93..666d291137 100644
--- a/Makefile
+++ b/Makefile
@@ -6,9 +6,9 @@
#
VERSION = 2014
-PATCHLEVEL = 07
+PATCHLEVEL = 10
SUBLEVEL =
-EXTRAVERSION =
+EXTRAVERSION = -rc1
NAME =
# *DOCUMENTATION*
@@ -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)
@@ -1024,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)
@@ -1042,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; \
@@ -1053,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."
@@ -1095,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
@@ -1141,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)
@@ -1216,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
#
@@ -1306,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 cdccae9953..5928495d18 100644
--- a/README
+++ b/README
@@ -252,15 +252,15 @@ Selection of Processor Architecture and Board Type:
---------------------------------------------------
For all supported boards there are ready-to-use default
-configurations available; just type "make <board_name>_config".
+configurations available; just type "make <board_name>_defconfig".
Example: For a TQM823L module type:
cd u-boot
- make TQM823L_config
+ make TQM823L_defconfig
For the Cogent platform, you need to specify the CPU type as well;
-e.g. "make cogent_mpc8xx_config". And also configure the cogent
+e.g. "make cogent_mpc8xx_defconfig". And also configure the cogent
directory according to the instructions in cogent/README.
@@ -2601,6 +2601,10 @@ CBFS (Coreboot Filesystem) support
Enables the driver for the SPI controllers on i.MX and MXC
SoCs. Currently i.MX31/35/51 are supported.
+ CONFIG_SYS_SPI_MXC_WAIT
+ Timeout for waiting until spi transfer completed.
+ default: (CONFIG_SYS_HZ/100) /* 10 ms */
+
- FPGA Support: CONFIG_FPGA
Enables FPGA subsystem.
@@ -3767,6 +3771,9 @@ Configuration Settings:
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,
@@ -4855,9 +4862,9 @@ U-Boot is intended to be simple to build. After installing the
sources you must configure U-Boot for one specific board type. This
is done by typing:
- make NAME_config
+ make NAME_defconfig
-where "NAME_config" is the name of one of the existing configu-
+where "NAME_defconfig" is the name of one of the existing configu-
rations; see boards.cfg for supported names.
Note: for some board special configuration names may exist; check if
@@ -4866,10 +4873,10 @@ Note: for some board special configuration names may exist; check if
or with LCD support. You can select such additional "features"
when choosing the configuration, i. e.
- make TQM823L_config
+ make TQM823L_defconfig
- will configure for a plain TQM823L, i. e. no LCD support
- make TQM823L_LCD_config
+ make TQM823L_LCD_defconfig
- will configure for a TQM823L with U-Boot console on LCD
etc.
@@ -4889,14 +4896,14 @@ this behavior and build U-Boot to some external directory:
1. Add O= to the make command line invocations:
make O=/tmp/build distclean
- make O=/tmp/build NAME_config
+ make O=/tmp/build NAME_defconfig
make O=/tmp/build all
2. Set environment variable BUILD_DIR to point to the desired location:
export BUILD_DIR=/tmp/build
make distclean
- make NAME_config
+ make NAME_defconfig
make all
Note that the command line "O=" setting overrides the BUILD_DIR environment
@@ -4922,7 +4929,7 @@ steps:
your board
3. If you're porting U-Boot to a new CPU, then also create a new
directory to hold your CPU specific code. Add any files you need.
-4. Run "make <board>_config" with your new name.
+4. Run "make <board>_defconfig" with your new name.
5. Type "make", and you should get a working "u-boot.srec" file
to be installed on your target system.
6. Debug and solve any problems that might arise.
@@ -5502,7 +5509,7 @@ which was introduced for our predecessor project PPCBoot and uses a
Example:
- make TQM850L_config
+ make TQM850L_defconfig
make oldconfig
make dep
make uImage
diff --git a/arch/Kconfig b/arch/Kconfig
new file mode 100644
index 0000000000..8620a4f94b
--- /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 0000000000..51d5aff08e
--- /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 a3b8df779e..e408800a91 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 0000000000..e385eda94c
--- /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 c3b8289dcf..c339e6dc8c 100644
--- a/arch/arm/config.mk
+++ b/arch/arm/config.mk
@@ -22,7 +22,7 @@ PLATFORM_RELFLAGS += $(call cc-option, -msoft-float) \
# Support generic board on ARM
__HAVE_ARCH_GENERIC_BOARD := y
-PLATFORM_CPPFLAGS += -DCONFIG_ARM -D__ARM__
+PLATFORM_CPPFLAGS += -D__ARM__
# Choose between ARM/Thumb instruction sets
ifeq ($(CONFIG_SYS_THUMB_BUILD),y)
diff --git a/arch/arm/cpu/arm926ejs/kirkwood/cpu.c b/arch/arm/cpu/arm926ejs/kirkwood/cpu.c
index da80240052..881e2de81b 100644
--- a/arch/arm/cpu/arm926ejs/kirkwood/cpu.c
+++ b/arch/arm/cpu/arm926ejs/kirkwood/cpu.c
@@ -13,6 +13,7 @@
#include <asm/io.h>
#include <asm/arch/cpu.h>
#include <asm/arch/kirkwood.h>
+#include <mvebu_mmc.h>
#define BUFLEN 16
@@ -377,3 +378,11 @@ int cpu_eth_init(bd_t *bis)
return 0;
}
#endif
+
+#ifdef CONFIG_MVEBU_MMC
+int board_mmc_init(bd_t *bis)
+{
+ mvebu_mmc_init(bis);
+ return 0;
+}
+#endif /* CONFIG_MVEBU_MMC */
diff --git a/arch/arm/cpu/armv7/sunxi/Makefile b/arch/arm/cpu/armv7/sunxi/Makefile
index 6c706393d3..e9721b27b6 100644
--- a/arch/arm/cpu/armv7/sunxi/Makefile
+++ b/arch/arm/cpu/armv7/sunxi/Makefile
@@ -17,6 +17,9 @@ obj-$(CONFIG_SUN7I) += clock_sun4i.o
ifndef CONFIG_SPL_BUILD
obj-y += cpu_info.o
+ifdef CONFIG_ARMV7_PSCI
+obj-y += psci.o
+endif
endif
ifdef CONFIG_SPL_BUILD
diff --git a/arch/arm/cpu/armv7/sunxi/board.c b/arch/arm/cpu/armv7/sunxi/board.c
index 8f2cef332f..f2cedbb156 100644
--- a/arch/arm/cpu/armv7/sunxi/board.c
+++ b/arch/arm/cpu/armv7/sunxi/board.c
@@ -129,6 +129,11 @@ int cpu_eth_init(bd_t *bis)
{
__maybe_unused int rc;
+#ifdef CONFIG_MACPWR
+ gpio_direction_output(CONFIG_MACPWR, 1);
+ mdelay(200);
+#endif
+
#ifdef CONFIG_SUNXI_EMAC
rc = sunxi_emac_initialize(bis);
if (rc < 0) {
diff --git a/arch/arm/cpu/armv7/sunxi/clock_sun4i.c b/arch/arm/cpu/armv7/sunxi/clock_sun4i.c
index b8b16cff95..ecbdb0162b 100644
--- a/arch/arm/cpu/armv7/sunxi/clock_sun4i.c
+++ b/arch/arm/cpu/armv7/sunxi/clock_sun4i.c
@@ -39,6 +39,10 @@ void clock_init_safe(void)
setbits_le32(&ccm->ahb_gate0, 0x1 << AHB_GATE_OFFSET_DMA);
#endif
writel(PLL6_CFG_DEFAULT, &ccm->pll6_cfg);
+#ifdef CONFIG_SUNXI_AHCI
+ setbits_le32(&ccm->ahb_gate0, 0x1 << AHB_GATE_OFFSET_SATA);
+ setbits_le32(&ccm->pll6_cfg, 0x1 << CCM_PLL6_CTRL_SATA_EN_SHIFT);
+#endif
}
#endif
diff --git a/arch/arm/cpu/armv7/sunxi/psci.S b/arch/arm/cpu/armv7/sunxi/psci.S
new file mode 100644
index 0000000000..0084c811f3
--- /dev/null
+++ b/arch/arm/cpu/armv7/sunxi/psci.S
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2013 - ARM Ltd
+ * Author: Marc Zyngier <marc.zyngier@arm.com>
+ *
+ * Based on code by Carl van Schaik <carl@ok-labs.com>.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <config.h>
+#include <asm/psci.h>
+#include <asm/arch/cpu.h>
+
+/*
+ * Memory layout:
+ *
+ * SECURE_RAM to text_end :
+ * ._secure_text section
+ * text_end to ALIGN_PAGE(text_end):
+ * nothing
+ * ALIGN_PAGE(text_end) to ALIGN_PAGE(text_end) + 0x1000)
+ * 1kB of stack per CPU (4 CPUs max).
+ */
+
+ .pushsection ._secure.text, "ax"
+
+ .arch_extension sec
+
+#define ONE_MS (CONFIG_SYS_CLK_FREQ / 1000)
+#define TEN_MS (10 * ONE_MS)
+
+.macro timer_wait reg, ticks
+ @ Program CNTP_TVAL
+ movw \reg, #(\ticks & 0xffff)
+ movt \reg, #(\ticks >> 16)
+ mcr p15, 0, \reg, c14, c2, 0
+ isb
+ @ Enable physical timer, mask interrupt
+ mov \reg, #3
+ mcr p15, 0, \reg, c14, c2, 1
+ @ Poll physical timer until ISTATUS is on
+1: isb
+ mrc p15, 0, \reg, c14, c2, 1
+ ands \reg, \reg, #4
+ bne 1b
+ @ Disable timer
+ mov \reg, #0
+ mcr p15, 0, \reg, c14, c2, 1
+ isb
+.endm
+
+.globl psci_arch_init
+psci_arch_init:
+ mrc p15, 0, r5, c1, c1, 0 @ Read SCR
+ bic r5, r5, #1 @ Secure mode
+ mcr p15, 0, r5, c1, c1, 0 @ Write SCR
+ isb
+
+ mrc p15, 0, r4, c0, c0, 5 @ MPIDR
+ and r4, r4, #3 @ cpu number in cluster
+ mov r5, #400 @ 1kB of stack per CPU
+ mul r4, r4, r5
+
+ adr r5, text_end @ end of text
+ add r5, r5, #0x2000 @ Skip two pages
+ lsr r5, r5, #12 @ Align to start of page
+ lsl r5, r5, #12
+ sub sp, r5, r4 @ here's our stack!
+
+ bx lr
+
+ @ r1 = target CPU
+ @ r2 = target PC
+.globl psci_cpu_on
+psci_cpu_on:
+ adr r0, _target_pc
+ str r2, [r0]
+ dsb
+
+ movw r0, #(SUNXI_CPUCFG_BASE & 0xffff)
+ movt r0, #(SUNXI_CPUCFG_BASE >> 16)
+
+ @ CPU mask
+ and r1, r1, #3 @ only care about first cluster
+ mov r4, #1
+ lsl r4, r4, r1
+
+ adr r6, _sunxi_cpu_entry
+ str r6, [r0, #0x1a4] @ PRIVATE_REG (boot vector)
+
+ @ Assert reset on target CPU
+ mov r6, #0
+ lsl r5, r1, #6 @ 64 bytes per CPU
+ add r5, r5, #0x40 @ Offset from base
+ add r5, r5, r0 @ CPU control block
+ str r6, [r5] @ Reset CPU
+
+ @ l1 invalidate
+ ldr r6, [r0, #0x184]
+ bic r6, r6, r4
+ str r6, [r0, #0x184]
+
+ @ Lock CPU
+ ldr r6, [r0, #0x1e4]
+ bic r6, r6, r4
+ str r6, [r0, #0x1e4]
+
+ @ Release power clamp
+ movw r6, #0x1ff
+ movt r6, #0
+1: lsrs r6, r6, #1
+ str r6, [r0, #0x1b0]
+ bne 1b
+
+ timer_wait r1, TEN_MS
+
+ @ Clear power gating
+ ldr r6, [r0, #0x1b4]
+ bic r6, r6, #1
+ str r6, [r0, #0x1b4]
+
+ @ Deassert reset on target CPU
+ mov r6, #3
+ str r6, [r5]
+
+ @ Unlock CPU
+ ldr r6, [r0, #0x1e4]
+ orr r6, r6, r4
+ str r6, [r0, #0x1e4]
+
+ mov r0, #ARM_PSCI_RET_SUCCESS @ Return PSCI_RET_SUCCESS
+ mov pc, lr
+
+_target_pc:
+ .word 0
+
+_sunxi_cpu_entry:
+ @ Set SMP bit
+ mrc p15, 0, r0, c1, c0, 1
+ orr r0, r0, #0x40
+ mcr p15, 0, r0, c1, c0, 1
+ isb
+
+ bl _nonsec_init
+ bl psci_arch_init
+
+ adr r0, _target_pc
+ ldr r0, [r0]
+ b _do_nonsec_entry
+
+text_end:
+ .popsection
diff --git a/arch/arm/include/asm/arch-fsl-lsch3/config.h b/arch/arm/include/asm/arch-fsl-lsch3/config.h
index c1c718ecd4..b17410a58a 100644
--- a/arch/arm/include/asm/arch-fsl-lsch3/config.h
+++ b/arch/arm/include/asm/arch-fsl-lsch3/config.h
@@ -43,7 +43,11 @@
/* DDR */
#define CONFIG_SYS_FSL_DDR_LE
#define CONFIG_VERY_BIG_RAM
+#ifdef CONFIG_SYS_FSL_DDR4
+#define CONFIG_SYS_FSL_DDRC_GEN4
+#else
#define CONFIG_SYS_FSL_DDRC_ARM_GEN3 /* Enable Freescale ARM DDR3 driver */
+#endif
#define CONFIG_SYS_FSL_DDR /* Freescale DDR driver */
#define CONFIG_SYS_LS2_DDR_BLOCK1_SIZE ((phys_size_t)2 << 30)
#define CONFIG_MAX_MEM_MAPPED CONFIG_SYS_LS2_DDR_BLOCK1_SIZE
diff --git a/arch/arm/include/asm/arch-kirkwood/kirkwood.h b/arch/arm/include/asm/arch-kirkwood/kirkwood.h
index bc207f536c..3ea51d7848 100644
--- a/arch/arm/include/asm/arch-kirkwood/kirkwood.h
+++ b/arch/arm/include/asm/arch-kirkwood/kirkwood.h
@@ -39,6 +39,7 @@
#define KW_EGIGA0_BASE (KW_REGISTER(0x72000))
#define KW_EGIGA1_BASE (KW_REGISTER(0x76000))
#define KW_SATA_BASE (KW_REGISTER(0x80000))
+#define KW_SDIO_BASE (KW_REGISTER(0x90000))
/* Kirkwood Sata controller has two ports */
#define KW_SATA_PORT0_OFFSET 0x2000
diff --git a/arch/arm/include/asm/arch-s3c24x0/s3c2410.h b/arch/arm/include/asm/arch-s3c24x0/s3c2410.h
index 01fe0f27ef..ce4186fed0 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 15a7cb43d5..3f44bdc306 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 86d720c06e..ed9df34c69 100644
--- a/arch/arm/include/asm/arch-s3c24x0/s3c24x0.h
+++ b/arch/arm/include/asm/arch-s3c24x0/s3c24x0.h
@@ -675,7 +675,7 @@ struct s3c2400_mmc {
/* SD INTERFACE (see S3C2410 manual chapter 19) */
-struct s3c2410_sdi {
+struct s3c24x0_sdi {
u32 sdicon;
u32 sdipre;
u32 sdicarg;
@@ -691,14 +691,19 @@ struct s3c2410_sdi {
u32 sdidcnt;
u32 sdidsta;
u32 sdifsta;
-#ifdef __BIG_ENDIAN
- u8 res[3];
- u8 sdidat;
+#ifdef CONFIG_S3C2410
+ u32 sdidat;
+ u32 sdiimsk;
#else
- u8 sdidat;
- u8 res[3];
-#endif
u32 sdiimsk;
+ u32 sdidat;
+#endif
};
+#ifdef CONFIG_CMD_MMC
+#include <mmc.h>
+int s3cmmc_initialize(bd_t *bis, int (*getcd)(struct mmc *),
+ int (*getwp)(struct mmc *));
+#endif
+
#endif /*__S3C24X0_H__*/
diff --git a/arch/arm/include/asm/arch-sunxi/clock_sun4i.h b/arch/arm/include/asm/arch-sunxi/clock_sun4i.h
index 928f3f2670..1ba997adf9 100644
--- a/arch/arm/include/asm/arch-sunxi/clock_sun4i.h
+++ b/arch/arm/include/asm/arch-sunxi/clock_sun4i.h
@@ -218,10 +218,13 @@ struct sunxi_ccm_reg {
#define CCM_PLL5_CTRL_BYPASS (0x1 << 30)
#define CCM_PLL5_CTRL_EN (0x1 << 31)
-#define CCM_PLL6_CTRL_N_SHIFT 8
-#define CCM_PLL6_CTRL_N_MASK (0x1f << CCM_PLL6_CTRL_N_SHIFT)
-#define CCM_PLL6_CTRL_K_SHIFT 4
-#define CCM_PLL6_CTRL_K_MASK (0x3 << CCM_PLL6_CTRL_K_SHIFT)
+#define CCM_PLL6_CTRL_EN 31
+#define CCM_PLL6_CTRL_BYPASS_EN 30
+#define CCM_PLL6_CTRL_SATA_EN_SHIFT 14
+#define CCM_PLL6_CTRL_N_SHIFT 8
+#define CCM_PLL6_CTRL_N_MASK (0x1f << CCM_PLL6_CTRL_N_SHIFT)
+#define CCM_PLL6_CTRL_K_SHIFT 4
+#define CCM_PLL6_CTRL_K_MASK (0x3 << CCM_PLL6_CTRL_K_SHIFT)
#define CCM_GPS_CTRL_RESET (0x1 << 0)
#define CCM_GPS_CTRL_GATE (0x1 << 1)
@@ -253,4 +256,8 @@ struct sunxi_ccm_reg {
#define CCM_GMAC_CTRL_GPIT_MII (0x0 << 2)
#define CCM_GMAC_CTRL_GPIT_RGMII (0x1 << 2)
+#define CCM_USB_CTRL_PHY1_RST (0x1 << 1)
+#define CCM_USB_CTRL_PHY2_RST (0x1 << 2)
+#define CCM_USB_CTRL_PHYGATE (0x1 << 8)
+
#endif /* _SUNXI_CLOCK_SUN4I_H */
diff --git a/arch/arm/include/asm/config.h b/arch/arm/include/asm/config.h
index d3433dafd9..5f2a5f4ea9 100644
--- a/arch/arm/include/asm/config.h
+++ b/arch/arm/include/asm/config.h
@@ -7,7 +7,9 @@
#ifndef _ASM_CONFIG_H_
#define _ASM_CONFIG_H_
+#ifdef __aarch64__
#define CONFIG_SYS_GENERIC_GLOBAL_DATA
+#endif
#define CONFIG_LMB
#define CONFIG_SYS_BOOT_RAMDISK_HIGH
diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h
index 214f3ea51f..6d18eb330a 100644
--- a/arch/arm/include/asm/io.h
+++ b/arch/arm/include/asm/io.h
@@ -136,6 +136,7 @@ extern inline void __raw_readsl(unsigned long addr, void *data, int longlen)
* TODO: The kernel offers some more advanced versions of barriers, it might
* have some advantages to use them instead of the simple one here.
*/
+#define mb() asm volatile("dsb sy" : : : "memory")
#define dmb() __asm__ __volatile__ ("" : : : "memory")
#define __iormb() dmb()
#define __iowmb() dmb()
diff --git a/arch/arm/lib/crt0.S b/arch/arm/lib/crt0.S
index dfc2de9a61..29cdad0f70 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/avr32/Kconfig b/arch/avr32/Kconfig
new file mode 100644
index 0000000000..46337aea55
--- /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 28a371c806..469185e8b4 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 0000000000..bb8a133059
--- /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 fcaa44f1d6..7b17b75743 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/m68k/Kconfig b/arch/m68k/Kconfig
new file mode 100644
index 0000000000..6cda7db699
--- /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 33b3d51af0..3b3a7e88ab 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 34ad99e92c..f66000b331 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 af943543a2..2efb60f04a 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 5fd0d4d0e2..13f8a9f57b 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 0000000000..ddaa45fb66
--- /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 0000000000..5bf0df4ff1
--- /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 f4a234adbc..a2d07aff1b 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 0000000000..743a8fe736
--- /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 10248524d1..5ac9f90402 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 0000000000..b70364680b
--- /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 65a5a40b6d..82bd887961 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 0000000000..cc54a2eec1
--- /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 9902b9adba..cd95f24b1f 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 0000000000..3325af3e5c
--- /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 fb7096e7b5..6329b6c74f 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 0000000000..6ce464da76
--- /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 96812a02d8..4cd1a26293 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 0000000000..bfc4eae980
--- /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 03759e6625..5bf1b2a3b9 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/mpc5xx/Kconfig b/arch/powerpc/cpu/mpc5xx/Kconfig
new file mode 100644
index 0000000000..79579d7683
--- /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 31e2dc9873..dd2ec376c9 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 0000000000..b2f0bad544
--- /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 3384f6ffcc..bcff2144a1 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 0000000000..309833f8c8
--- /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 a224bc8e73..ecfb07ea3d 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 0000000000..1a8707de3b
--- /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 59f152df74..6a1b6e3eb4 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 0000000000..5fd33934b3
--- /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 dfce4d53b4..0c083504ed 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/mpc83xx/cpu.c b/arch/powerpc/cpu/mpc83xx/cpu.c
index e41988d5fa..38093097e4 100644
--- a/arch/powerpc/cpu/mpc83xx/cpu.c
+++ b/arch/powerpc/cpu/mpc83xx/cpu.c
@@ -20,7 +20,7 @@
#include <netdev.h>
#include <fsl_esdhc.h>
#if defined(CONFIG_BOOTCOUNT_LIMIT) && !defined(CONFIG_MPC831x)
-#include <asm/immap_qe.h>
+#include <linux/immap_qe.h>
#include <asm/io.h>
#endif
diff --git a/arch/powerpc/cpu/mpc83xx/fdt.c b/arch/powerpc/cpu/mpc83xx/fdt.c
index 450a9704e5..f249a585ed 100644
--- a/arch/powerpc/cpu/mpc83xx/fdt.c
+++ b/arch/powerpc/cpu/mpc83xx/fdt.c
@@ -18,7 +18,7 @@ DECLARE_GLOBAL_DATA_PTR;
#if defined(CONFIG_BOOTCOUNT_LIMIT) && \
(defined(CONFIG_QE) && !defined(CONFIG_MPC831x))
-#include <asm/immap_qe.h>
+#include <linux/immap_qe.h>
void fdt_fixup_muram (void *blob)
{
diff --git a/arch/powerpc/cpu/mpc85xx/Kconfig b/arch/powerpc/cpu/mpc85xx/Kconfig
new file mode 100644
index 0000000000..0f703804da
--- /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 1470f95ff1..72c964cd15 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/mpc85xx/cpu.c b/arch/powerpc/cpu/mpc85xx/cpu.c
index 684d4007e4..6274f929dd 100644
--- a/arch/powerpc/cpu/mpc85xx/cpu.c
+++ b/arch/powerpc/cpu/mpc85xx/cpu.c
@@ -310,6 +310,14 @@ __weak unsigned long get_tbclk (void)
#if defined(CONFIG_WATCHDOG)
+#define WATCHDOG_MASK (TCR_WP(63) | TCR_WRC(3) | TCR_WIE)
+void
+init_85xx_watchdog(void)
+{
+ mtspr(SPRN_TCR, (mfspr(SPRN_TCR) & ~WATCHDOG_MASK) |
+ TCR_WP(CONFIG_WATCHDOG_PRESC) | TCR_WRC(CONFIG_WATCHDOG_RC));
+}
+
void
reset_85xx_watchdog(void)
{
diff --git a/arch/powerpc/cpu/mpc85xx/cpu_init.c b/arch/powerpc/cpu/mpc85xx/cpu_init.c
index 78316a6815..b237505d3e 100644
--- a/arch/powerpc/cpu/mpc85xx/cpu_init.c
+++ b/arch/powerpc/cpu/mpc85xx/cpu_init.c
@@ -200,7 +200,7 @@ void config_8560_ioports (volatile ccsr_cpm_t * cpm)
#ifdef CONFIG_SYS_FSL_CPC
#if defined(CONFIG_RAMBOOT_PBL) || defined(CONFIG_SYS_CPC_REINIT_F)
-static void disable_cpc_sram(void)
+void disable_cpc_sram(void)
{
int i;
@@ -251,7 +251,7 @@ static void enable_tdm_law(void)
}
#endif
-static void enable_cpc(void)
+void enable_cpc(void)
{
int i;
u32 size = 0;
@@ -306,6 +306,7 @@ static void invalidate_cpc(void)
#else
#define enable_cpc()
#define invalidate_cpc()
+#define disable_cpc_sram()
#endif /* CONFIG_SYS_FSL_CPC */
/*
@@ -520,7 +521,8 @@ int enable_cluster_l2(void)
u32 idx = (cluster >> (j*8)) & TP_CLUSTER_INIT_MASK;
u32 type = in_be32(&gur->tp_ityp[idx]);
- if (type & TP_ITYP_AV)
+ if ((type & TP_ITYP_AV) &&
+ TP_ITYP_TYPE(type) == TP_ITYP_TYPE_PPC)
cluster_valid = 1;
}
@@ -545,88 +547,15 @@ int enable_cluster_l2(void)
/*
* Initialize L2 as cache.
- *
- * The newer 8548, etc, parts have twice as much cache, but
- * use the same bit-encoding as the older 8555, etc, parts.
- *
*/
-int cpu_init_r(void)
+int l2cache_init(void)
{
__maybe_unused u32 svr = get_svr();
-#ifdef CONFIG_SYS_LBC_LCRR
- fsl_lbc_t *lbc = (void __iomem *)LBC_BASE_ADDR;
-#endif
#ifdef CONFIG_L2_CACHE
ccsr_l2cache_t *l2cache = (void __iomem *)CONFIG_SYS_MPC85xx_L2_ADDR;
#elif defined(CONFIG_SYS_FSL_QORIQ_CHASSIS2) && defined(CONFIG_E6500)
struct ccsr_cluster_l2 * l2cache = (void __iomem *)CONFIG_SYS_FSL_CLUSTER_1_L2;
#endif
-#if defined(CONFIG_PPC_SPINTABLE_COMPATIBLE) && defined(CONFIG_MP)
- extern int spin_table_compat;
- const char *spin;
-#endif
-#ifdef CONFIG_SYS_FSL_ERRATUM_SEC_A003571
- ccsr_sec_t __iomem *sec = (void *)CONFIG_SYS_FSL_SEC_ADDR;
-#endif
-#if defined(CONFIG_SYS_P4080_ERRATUM_CPU22) || \
- defined(CONFIG_SYS_FSL_ERRATUM_NMG_CPU_A011)
- /*
- * CPU22 and NMG_CPU_A011 share the same workaround.
- * CPU22 applies to P4080 rev 1.0, 2.0, fixed in 3.0
- * NMG_CPU_A011 applies to P4080 rev 1.0, 2.0, fixed in 3.0
- * also applies to P3041 rev 1.0, 1.1, P2041 rev 1.0, 1.1, both
- * fixed in 2.0. NMG_CPU_A011 is activated by default and can
- * be disabled by hwconfig with syntax:
- *
- * fsl_cpu_a011:disable
- */
- extern int enable_cpu_a011_workaround;
-#ifdef CONFIG_SYS_P4080_ERRATUM_CPU22
- enable_cpu_a011_workaround = (SVR_MAJ(svr) < 3);
-#else
- char buffer[HWCONFIG_BUFFER_SIZE];
- char *buf = NULL;
- int n, res;
-
- n = getenv_f("hwconfig", buffer, sizeof(buffer));
- if (n > 0)
- buf = buffer;
-
- res = hwconfig_arg_cmp_f("fsl_cpu_a011", "disable", buf);
- if (res > 0)
- enable_cpu_a011_workaround = 0;
- else {
- if (n >= HWCONFIG_BUFFER_SIZE) {
- printf("fsl_cpu_a011 was not found. hwconfig variable "
- "may be too long\n");
- }
- enable_cpu_a011_workaround =
- (SVR_SOC_VER(svr) == SVR_P4080 && SVR_MAJ(svr) < 3) ||
- (SVR_SOC_VER(svr) != SVR_P4080 && SVR_MAJ(svr) < 2);
- }
-#endif
- if (enable_cpu_a011_workaround) {
- flush_dcache();
- mtspr(L1CSR2, (mfspr(L1CSR2) | L1CSR2_DCWS));
- sync();
- }
-#endif
-#ifdef CONFIG_SYS_FSL_ERRATUM_A005812
- /*
- * A-005812 workaround sets bit 32 of SPR 976 for SoCs running
- * in write shadow mode. Checking DCWS before setting SPR 976.
- */
- if (mfspr(L1CSR2) & L1CSR2_DCWS)
- mtspr(SPRN_HDBCR0, (mfspr(SPRN_HDBCR0) | 0x80000000));
-#endif
-
-#if defined(CONFIG_PPC_SPINTABLE_COMPATIBLE) && defined(CONFIG_MP)
- spin = getenv("spin_table_compat");
- if (spin && (*spin == 'n'))
- spin_table_compat = 0;
- else
- spin_table_compat = 1;
-#endif
puts ("L2: ");
@@ -751,6 +680,89 @@ skip_l2:
puts("disabled\n");
#endif
+ return 0;
+}
+
+/*
+ *
+ * The newer 8548, etc, parts have twice as much cache, but
+ * use the same bit-encoding as the older 8555, etc, parts.
+ *
+ */
+int cpu_init_r(void)
+{
+ __maybe_unused u32 svr = get_svr();
+#ifdef CONFIG_SYS_LBC_LCRR
+ fsl_lbc_t *lbc = (void __iomem *)LBC_BASE_ADDR;
+#endif
+#if defined(CONFIG_PPC_SPINTABLE_COMPATIBLE) && defined(CONFIG_MP)
+ extern int spin_table_compat;
+ const char *spin;
+#endif
+#ifdef CONFIG_SYS_FSL_ERRATUM_SEC_A003571
+ ccsr_sec_t __iomem *sec = (void *)CONFIG_SYS_FSL_SEC_ADDR;
+#endif
+#if defined(CONFIG_SYS_P4080_ERRATUM_CPU22) || \
+ defined(CONFIG_SYS_FSL_ERRATUM_NMG_CPU_A011)
+ /*
+ * CPU22 and NMG_CPU_A011 share the same workaround.
+ * CPU22 applies to P4080 rev 1.0, 2.0, fixed in 3.0
+ * NMG_CPU_A011 applies to P4080 rev 1.0, 2.0, fixed in 3.0
+ * also applies to P3041 rev 1.0, 1.1, P2041 rev 1.0, 1.1, both
+ * fixed in 2.0. NMG_CPU_A011 is activated by default and can
+ * be disabled by hwconfig with syntax:
+ *
+ * fsl_cpu_a011:disable
+ */
+ extern int enable_cpu_a011_workaround;
+#ifdef CONFIG_SYS_P4080_ERRATUM_CPU22
+ enable_cpu_a011_workaround = (SVR_MAJ(svr) < 3);
+#else
+ char buffer[HWCONFIG_BUFFER_SIZE];
+ char *buf = NULL;
+ int n, res;
+
+ n = getenv_f("hwconfig", buffer, sizeof(buffer));
+ if (n > 0)
+ buf = buffer;
+
+ res = hwconfig_arg_cmp_f("fsl_cpu_a011", "disable", buf);
+ if (res > 0) {
+ enable_cpu_a011_workaround = 0;
+ } else {
+ if (n >= HWCONFIG_BUFFER_SIZE) {
+ printf("fsl_cpu_a011 was not found. hwconfig variable "
+ "may be too long\n");
+ }
+ enable_cpu_a011_workaround =
+ (SVR_SOC_VER(svr) == SVR_P4080 && SVR_MAJ(svr) < 3) ||
+ (SVR_SOC_VER(svr) != SVR_P4080 && SVR_MAJ(svr) < 2);
+ }
+#endif
+ if (enable_cpu_a011_workaround) {
+ flush_dcache();
+ mtspr(L1CSR2, (mfspr(L1CSR2) | L1CSR2_DCWS));
+ sync();
+ }
+#endif
+#ifdef CONFIG_SYS_FSL_ERRATUM_A005812
+ /*
+ * A-005812 workaround sets bit 32 of SPR 976 for SoCs running
+ * in write shadow mode. Checking DCWS before setting SPR 976.
+ */
+ if (mfspr(L1CSR2) & L1CSR2_DCWS)
+ mtspr(SPRN_HDBCR0, (mfspr(SPRN_HDBCR0) | 0x80000000));
+#endif
+
+#if defined(CONFIG_PPC_SPINTABLE_COMPATIBLE) && defined(CONFIG_MP)
+ spin = getenv("spin_table_compat");
+ if (spin && (*spin == 'n'))
+ spin_table_compat = 0;
+ else
+ spin_table_compat = 1;
+#endif
+
+ l2cache_init();
#if defined(CONFIG_RAMBOOT_PBL)
disable_cpc_sram();
#endif
diff --git a/arch/powerpc/cpu/mpc85xx/fdt.c b/arch/powerpc/cpu/mpc85xx/fdt.c
index 85dfa5bc01..3665ec6b6c 100644
--- a/arch/powerpc/cpu/mpc85xx/fdt.c
+++ b/arch/powerpc/cpu/mpc85xx/fdt.c
@@ -612,6 +612,51 @@ static void fdt_fixup_usb(void *fdt)
#define fdt_fixup_usb(x)
#endif
+#if defined(CONFIG_PPC_T2080) || defined(CONFIG_PPC_T4240) || \
+ defined(CONFIG_PPC_T4160) || defined(CONFIG_PPC_T4080)
+void fdt_fixup_dma3(void *blob)
+{
+ /* the 3rd DMA is not functional if SRIO2 is chosen */
+ int nodeoff;
+ ccsr_gur_t __iomem *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+
+#define CONFIG_SYS_ELO3_DMA3 (0xffe000000 + 0x102300)
+#if defined(CONFIG_PPC_T2080)
+ u32 srds_prtcl_s2 = in_be32(&gur->rcwsr[4]) &
+ FSL_CORENET2_RCWSR4_SRDS2_PRTCL;
+ srds_prtcl_s2 >>= FSL_CORENET2_RCWSR4_SRDS2_PRTCL_SHIFT;
+
+ switch (srds_prtcl_s2) {
+ case 0x29:
+ case 0x2d:
+ case 0x2e:
+#elif defined(CONFIG_PPC_T4240) || defined(CONFIG_PPC_T4160) || \
+ defined(CONFIG_PPC_T4080)
+ u32 srds_prtcl_s4 = in_be32(&gur->rcwsr[4]) &
+ FSL_CORENET2_RCWSR4_SRDS4_PRTCL;
+ srds_prtcl_s4 >>= FSL_CORENET2_RCWSR4_SRDS4_PRTCL_SHIFT;
+
+ switch (srds_prtcl_s4) {
+ case 6:
+ case 8:
+ case 14:
+ case 16:
+#endif
+ nodeoff = fdt_node_offset_by_compat_reg(blob, "fsl,elo3-dma",
+ CONFIG_SYS_ELO3_DMA3);
+ if (nodeoff > 0)
+ fdt_status_disabled(blob, nodeoff);
+ else
+ printf("WARNING: unable to disable dma3\n");
+ break;
+ default:
+ break;
+ }
+}
+#else
+#define fdt_fixup_dma3(x)
+#endif
+
#if defined(CONFIG_PPC_T1040)
static void fdt_fixup_l2_switch(void *blob)
{
@@ -778,6 +823,8 @@ void ft_cpu_setup(void *blob, bd_t *bd)
fdt_fixup_usb(blob);
fdt_fixup_l2_switch(blob);
+
+ fdt_fixup_dma3(blob);
}
/*
diff --git a/arch/powerpc/cpu/mpc85xx/interrupts.c b/arch/powerpc/cpu/mpc85xx/interrupts.c
index a36a4af9da..daf46a9ba8 100644
--- a/arch/powerpc/cpu/mpc85xx/interrupts.c
+++ b/arch/powerpc/cpu/mpc85xx/interrupts.c
@@ -42,7 +42,7 @@ int interrupt_init_cpu(unsigned int *decrementer_count)
*decrementer_count = get_tbclk() / CONFIG_SYS_HZ;
/* PIE is same as DIE, dec interrupt enable */
- mtspr(SPRN_TCR, TCR_PIE);
+ mtspr(SPRN_TCR, mfspr(SPRN_TCR) | TCR_PIE);
#ifdef CONFIG_INTERRUPTS
pic->iivpr1 = 0x810001; /* 50220 enable ecm interrupts */
diff --git a/arch/powerpc/cpu/mpc86xx/Kconfig b/arch/powerpc/cpu/mpc86xx/Kconfig
new file mode 100644
index 0000000000..f0ff4419d1
--- /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 4c7235fcde..69a0b96ead 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 0000000000..35608a68b0
--- /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 ee2c883665..485e43d2de 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/mpc8xxx/cpu.c b/arch/powerpc/cpu/mpc8xxx/cpu.c
index 15561a1533..84fec5ed28 100644
--- a/arch/powerpc/cpu/mpc8xxx/cpu.c
+++ b/arch/powerpc/cpu/mpc8xxx/cpu.c
@@ -65,7 +65,6 @@ static struct cpu_type cpu_type_list[] = {
CPU_TYPE_ENTRY(T4080, T4080, 4),
CPU_TYPE_ENTRY(B4860, B4860, 0),
CPU_TYPE_ENTRY(G4860, G4860, 0),
- CPU_TYPE_ENTRY(G4060, G4060, 0),
CPU_TYPE_ENTRY(B4440, B4440, 0),
CPU_TYPE_ENTRY(B4460, B4460, 0),
CPU_TYPE_ENTRY(G4440, G4440, 0),
diff --git a/arch/powerpc/cpu/ppc4xx/Kconfig b/arch/powerpc/cpu/ppc4xx/Kconfig
new file mode 100644
index 0000000000..2d15dd1210
--- /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 102f069f9e..f87c9dc49b 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 d465dcda8b..0b27d2912d 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/powerpc/include/asm/cache.h b/arch/powerpc/include/asm/cache.h
index cdc1f10872..d3a83910b6 100644
--- a/arch/powerpc/include/asm/cache.h
+++ b/arch/powerpc/include/asm/cache.h
@@ -57,6 +57,12 @@ extern void unlock_ram_in_cache(void);
#endif /* CONFIG_SYS_INIT_RAM_LOCK */
#endif /* __ASSEMBLY__ */
+#if defined(__KERNEL__) && !defined(__ASSEMBLY__)
+int l2cache_init(void);
+void enable_cpc(void);
+void disable_cpc_sram(void);
+#endif
+
/* prep registers for L2 */
#define CACHECRBA 0x80000823 /* Cache configuration register address */
#define L2CACHE_MASK 0x03 /* Mask for 2 L2 Cache bits */
diff --git a/arch/powerpc/include/asm/immap_85xx.h b/arch/powerpc/include/asm/immap_85xx.h
index 8258ab3805..dfb370e051 100644
--- a/arch/powerpc/include/asm/immap_85xx.h
+++ b/arch/powerpc/include/asm/immap_85xx.h
@@ -2905,6 +2905,8 @@ struct ccsr_sfp_regs {
#endif
#define CONFIG_SYS_FSL_CORENET_SERDES_OFFSET 0xEA000
#define CONFIG_SYS_FSL_CORENET_SERDES2_OFFSET 0xEB000
+#define CONFIG_SYS_FSL_CORENET_SERDES3_OFFSET 0xEC000
+#define CONFIG_SYS_FSL_CORENET_SERDES4_OFFSET 0xED000
#define CONFIG_SYS_FSL_CPC_OFFSET 0x10000
#define CONFIG_SYS_FSL_SCFG_OFFSET 0xFC000
#define CONFIG_SYS_MPC85xx_DMA1_OFFSET 0x100000
@@ -3090,6 +3092,10 @@ struct ccsr_sfp_regs {
(CONFIG_SYS_IMMR + CONFIG_SYS_FSL_CORENET_SERDES_OFFSET)
#define CONFIG_SYS_FSL_CORENET_SERDES2_ADDR \
(CONFIG_SYS_IMMR + CONFIG_SYS_FSL_CORENET_SERDES2_OFFSET)
+#define CONFIG_SYS_FSL_CORENET_SERDES3_ADDR \
+ (CONFIG_SYS_IMMR + CONFIG_SYS_FSL_CORENET_SERDES3_OFFSET)
+#define CONFIG_SYS_FSL_CORENET_SERDES4_ADDR \
+ (CONFIG_SYS_IMMR + CONFIG_SYS_FSL_CORENET_SERDES4_OFFSET)
#define CONFIG_SYS_MPC85xx_USB1_ADDR \
(CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_USB1_OFFSET)
#define CONFIG_SYS_MPC85xx_USB2_ADDR \
diff --git a/arch/powerpc/include/asm/io.h b/arch/powerpc/include/asm/io.h
index d8b7b974d4..a5257e9b62 100644
--- a/arch/powerpc/include/asm/io.h
+++ b/arch/powerpc/include/asm/io.h
@@ -123,6 +123,9 @@ static inline void isync(void)
#define iobarrier_r() eieio()
#define iobarrier_w() eieio()
+#define mb() sync()
+#define isb() isync()
+
/*
* Non ordered and non-swapping "raw" accessors
*/
diff --git a/arch/powerpc/include/asm/processor.h b/arch/powerpc/include/asm/processor.h
index a5e7a612bf..1b98e0f8a9 100644
--- a/arch/powerpc/include/asm/processor.h
+++ b/arch/powerpc/include/asm/processor.h
@@ -378,11 +378,16 @@
#else
#define SPRN_TCR 0x154 /* Book E Timer Control Register */
#endif /* CONFIG_BOOKE */
+#ifdef CONFIG_E500MC
+#define TCR_WP(x) (((64-x)&0x3)<<30)| \
+ (((64-x)&0x3c)<<15) /* WDT Period 2^x clocks*/
+#else
#define TCR_WP(x) (((x)&0x3)<<30) /* WDT Period */
#define WP_2_17 0 /* 2^17 clocks */
#define WP_2_21 1 /* 2^21 clocks */
#define WP_2_25 2 /* 2^25 clocks */
#define WP_2_29 3 /* 2^29 clocks */
+#endif /* CONFIG_E500 */
#define TCR_WRC(x) (((x)&0x3)<<28) /* WDT Reset Control */
#define WRC_NONE 0 /* No reset will occur */
#define WRC_CORE 1 /* Core reset will occur */
@@ -1118,7 +1123,6 @@
#define SVR_B4860 0X868000
#define SVR_G4860 0x868001
#define SVR_B4460 0x868003
-#define SVR_G4060 0x868003
#define SVR_B4440 0x868100
#define SVR_G4440 0x868101
#define SVR_B4420 0x868102
diff --git a/arch/powerpc/lib/board.c b/arch/powerpc/lib/board.c
index 300ab12a3b..02962054f6 100644
--- a/arch/powerpc/lib/board.c
+++ b/arch/powerpc/lib/board.c
@@ -226,6 +226,9 @@ static int init_func_spi(void)
#if defined(CONFIG_WATCHDOG)
int init_func_watchdog_init(void)
{
+#if defined(CONFIG_MPC85xx)
+ init_85xx_watchdog();
+#endif
puts(" Watchdog enabled\n");
WATCHDOG_RESET();
return 0;
@@ -370,6 +373,11 @@ void board_init_f(ulong bootflag)
#ifdef CONFIG_DEEP_SLEEP
/* Jump to kernel in deep sleep case */
if (in_be32(&gur->scrtsr[0]) & (1 << 3)) {
+ l2cache_init();
+#if defined(CONFIG_RAMBOOT_PBL)
+ disable_cpc_sram();
+#endif
+ enable_cpc();
start_addr = in_be32(&scfg->sparecr[1]);
kernel_resume = (func_t)start_addr;
kernel_resume();
diff --git a/arch/sandbox/Kconfig b/arch/sandbox/Kconfig
new file mode 100644
index 0000000000..c393550694
--- /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 c3f889fb1c..e38a44bd11 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/sh/Kconfig b/arch/sh/Kconfig
new file mode 100644
index 0000000000..e6ded16b20
--- /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/sparc/Kconfig b/arch/sparc/Kconfig
new file mode 100644
index 0000000000..fc9291037c
--- /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 be59f58190..196d28af84 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 0000000000..8fc619a3c0
--- /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 4b2c873b0e..f7b01d36e0 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/board/8dtech/eco5pk/Kconfig b/board/8dtech/eco5pk/Kconfig
new file mode 100644
index 0000000000..fb1b30876e
--- /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 0000000000..20c1c8c87e
--- /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 0000000000..356754344d
--- /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 0000000000..1f0169bb66
--- /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 0000000000..ee551a67da
--- /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 0000000000..9a2c7a3c16
--- /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 0000000000..34566bd071
--- /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 0000000000..94b87c7f0e
--- /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 0000000000..a8134479ef
--- /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 0000000000..640e34fc8d
--- /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 0000000000..5676c4fe5b
--- /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 0000000000..c28fb49fe4
--- /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 0000000000..f452023180
--- /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 0000000000..e57326aaf3
--- /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 0000000000..f53f295187
--- /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 0000000000..87298ad9f3
--- /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 0000000000..3a36cf3344
--- /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 0000000000..81c4349ac9
--- /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 0000000000..d4a6e5202e
--- /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 0000000000..b70104d52e
--- /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 0000000000..cbc004a44d
--- /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 0000000000..c7b0df7bc4
--- /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 0000000000..2cfa5bcbcb
--- /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 0000000000..8f8a199c16
--- /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 0000000000..f1151d1823
--- /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 0000000000..e0591f4b80
--- /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 0000000000..867d0d3842
--- /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 0000000000..1afaa5ce5c
--- /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 0000000000..fb6fbef92c
--- /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 0000000000..ad3dfa1565
--- /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 0000000000..4815cdeed3
--- /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 0000000000..8b36bff32b
--- /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 0000000000..7edcd8102d
--- /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 0000000000..a77d30eb78
--- /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 0000000000..c08fd05b9e
--- /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 0000000000..7383207f75
--- /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 0000000000..3cd2eb433e
--- /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 0000000000..751aac2be3
--- /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 0000000000..7ce761b94d
--- /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 0000000000..c272b7ae74
--- /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 0000000000..e067318163
--- /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 0000000000..2561ba8134
--- /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 0000000000..94cdd4887a
--- /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 0000000000..320bc09de5
--- /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 0000000000..fce8562187
--- /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 0000000000..b5d0734831
--- /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 0000000000..17adab09e9
--- /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 0000000000..9c26ca7658
--- /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 0000000000..2dfed34dc8
--- /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 0000000000..7a52a8eeee
--- /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 0000000000..ae753b036b
--- /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 0000000000..d4ad592a9e
--- /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 0000000000..6f3eb38970
--- /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 0000000000..2b0103d07d
--- /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 0000000000..ac6bebcdf1
--- /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 0000000000..59b5c5f49f
--- /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 0000000000..4696ac6d2e
--- /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 0000000000..f259e58ae6
--- /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 0000000000..0f918cbfab
--- /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 0000000000..6d6a1ff4e3
--- /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 0000000000..9ce64fdb7e
--- /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 0000000000..2d8560f628
--- /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 0000000000..ab32d5ca1c
--- /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 0000000000..975107d2c0
--- /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 0000000000..cc3194756c
--- /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 0000000000..83dc59e87f
--- /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 0000000000..eccf92817c
--- /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 0000000000..f08c3fe350
--- /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 0000000000..008d943425
--- /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 0000000000..337f3029cd
--- /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 0000000000..d1f89df54a
--- /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 0000000000..d6477c69d2
--- /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 0000000000..78931643a4
--- /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 0000000000..f24489d01d
--- /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 0000000000..12096380b8
--- /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 0000000000..9cbcba983b
--- /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 0000000000..d0d90128bc
--- /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 0000000000..626c0f7a8d
--- /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 0000000000..096f02e5ee
--- /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 0000000000..c16961fde8
--- /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 0000000000..a002cfa428
--- /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 0000000000..4c8929ece7
--- /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 0000000000..2f5999d194
--- /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 0000000000..4a329e9738
--- /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 0000000000..29f769b009
--- /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 0000000000..9d5ace2ae5
--- /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 0000000000..545056a15c
--- /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 0000000000..52bf004f6c
--- /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 0000000000..cc1448f133
--- /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 0000000000..bc62851509
--- /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 0000000000..2a8d783a53
--- /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 0000000000..f0893522cc
--- /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 0000000000..3564cc3c89
--- /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 0000000000..12bbcb1b15
--- /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 0000000000..7f199809b5
--- /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 0000000000..a23296d44f
--- /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 0000000000..7f95bdcbe1
--- /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 0000000000..ecd5e19c61
--- /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 0000000000..5eaf812557
--- /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 0000000000..34634a2f77
--- /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 0000000000..001d40088d
--- /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 0000000000..756b30135c
--- /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 0000000000..ddcaced7ae
--- /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 0000000000..6c28a3717c
--- /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 0000000000..8411a82861
--- /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 0000000000..2efc254954
--- /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 0000000000..0022063dc7
--- /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 0000000000..d9d80bf1c2
--- /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 0000000000..f98cec5bc9
--- /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 0000000000..2a98c85a14
--- /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 0000000000..8aa62c0129
--- /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 0000000000..3f553e190a
--- /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 0000000000..945333f157
--- /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 0000000000..0663003984
--- /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 0000000000..f2d33c6378
--- /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 0000000000..09f0525c51
--- /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 0000000000..c1ac6b1872
--- /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 0000000000..8af765eaeb
--- /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 0000000000..f96d0b2a56
--- /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 0000000000..f390e53307
--- /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 0000000000..e49e87133a
--- /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 0000000000..cfde7f24fb
--- /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 0000000000..91eb8d2997
--- /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 0000000000..97c4b0e574
--- /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 0000000000..6e947dce0a
--- /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 0000000000..6c23da7196
--- /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 0000000000..826753f043
--- /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 0000000000..1c5d61ea3e
--- /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 0000000000..c8f89fe7bb
--- /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 0000000000..6f547d82ec
--- /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 0000000000..d7ee4f49fd
--- /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 0000000000..d2a479bbc3
--- /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 0000000000..14af5bcd40
--- /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 0000000000..0c7c721995
--- /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 0000000000..63dcdd8da0
--- /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 0000000000..682dfdfbf3
--- /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 0000000000..fa0a58acb5
--- /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 0000000000..3b4b654bfb
--- /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 0000000000..8567f95753
--- /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 0000000000..6389e6ac61
--- /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 0000000000..4fc714b1b2
--- /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 0000000000..82a91928c5
--- /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 0000000000..178f80dc04
--- /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 0000000000..7dd8ef79ee
--- /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 0000000000..0a0b132138
--- /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 0000000000..5fea4890db
--- /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 0000000000..a966b31830
--- /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 0000000000..dd698eaac8
--- /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 0000000000..dcea07ec02
--- /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 0000000000..212363e4cf
--- /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 0000000000..1a24409c6e
--- /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 0000000000..76365b0c10
--- /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 0000000000..603b2411ba
--- /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 0000000000..8a09c19c85
--- /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 0000000000..5b4eb6f25d
--- /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 0000000000..560303caad
--- /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 0000000000..2472fe2a4e
--- /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 0000000000..0a00fcf719
--- /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 0000000000..a697a54477
--- /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 0000000000..e8ef5096e5
--- /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 0000000000..f52eddae76
--- /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 0000000000..5cbdf8e7eb
--- /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 0000000000..d19e3f43c7
--- /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 0000000000..10f1aac7a6
--- /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 0000000000..7b1687ee43
--- /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 0000000000..c92e258df9
--- /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 0000000000..8ae22e93a0
--- /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 0000000000..91dde7a5c8
--- /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 0000000000..aee21933d5
--- /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 0000000000..df9a5bbcfa
--- /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 0000000000..a2ddd87f84
--- /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 0000000000..7e9913ffa6
--- /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 0000000000..ba058db089
--- /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 0000000000..e2a8363d8f
--- /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 0000000000..c3e3837c36
--- /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 0000000000..32245d4bcd
--- /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 0000000000..749ad2bf76
--- /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 0000000000..aaf1b7eaaf
--- /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 0000000000..5656d1c288
--- /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 0000000000..6727ae4e8a
--- /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 0000000000..5967d04597
--- /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 0000000000..f2e9575a7a
--- /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 0000000000..6793c0e319
--- /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 0000000000..f7c2d18913
--- /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 0000000000..6febd7f94a
--- /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 0000000000..e93de1a234
--- /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 0000000000..459d9710dc
--- /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 0000000000..7a953960d4
--- /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-sdp/Kconfig b/board/bf527-sdp/Kconfig
new file mode 100644
index 0000000000..8d54fb8732
--- /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 0000000000..32ccfc5e90
--- /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 0000000000..c0317c2eb5
--- /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 0000000000..bfa7c3cb29
--- /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 0000000000..3f01c2b944
--- /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 0000000000..c7aeefaee0
--- /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 0000000000..6704f2d481
--- /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 0000000000..04643b1afd
--- /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 0000000000..125a9fa344
--- /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 0000000000..b8b22a3d46
--- /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 0000000000..658a6e5588
--- /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 0000000000..c8f1458656
--- /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 0000000000..9330a4c68f
--- /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 0000000000..7d9c1334bf
--- /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 0000000000..5b9c8d9e2c
--- /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 0000000000..7964735e6d
--- /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 0000000000..8d799aae45
--- /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 0000000000..e2683bb474
--- /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/bf561-acvilon/Kconfig b/board/bf561-acvilon/Kconfig
new file mode 100644
index 0000000000..6c1789c22e
--- /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 0000000000..056ee0bdb7
--- /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 0000000000..d1cb81f567
--- /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 0000000000..5ced3bb7d6
--- /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 0000000000..ad959d7022
--- /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 0000000000..acfc6c7a86
--- /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 0000000000..0046b9372e
--- /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 0000000000..a0d72c6e20
--- /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 0000000000..72aaa29ead
--- /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 0000000000..3f8b32c884
--- /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 0000000000..acccec911a
--- /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 0000000000..286e9e9f06
--- /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 0000000000..81eb911eda
--- /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 0000000000..ff1e9972cb
--- /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 0000000000..190809c239
--- /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 0000000000..cb06c03691
--- /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 0000000000..03d9783739
--- /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 0000000000..4085da5452
--- /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 0000000000..20c83d3622
--- /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 0000000000..a74c3941b2
--- /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 0000000000..99f7b7cceb
--- /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 0000000000..facc2dd7d9
--- /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 0000000000..192d22826c
--- /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 0000000000..d275230095
--- /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 0000000000..3d33d5c409
--- /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 0000000000..5a71b8effc
--- /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 0000000000..8141c7d692
--- /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 0000000000..2f39cd3def
--- /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 0000000000..042cc354a9
--- /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 0000000000..aa4eb301c0
--- /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 0000000000..64cd347f31
--- /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 0000000000..3b2fb52266
--- /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 0000000000..0a9bdb2da7
--- /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 0000000000..3bb284335b
--- /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 0000000000..149a1a247d
--- /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 0000000000..42c5dda306
--- /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 0000000000..d43d30620e
--- /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 0000000000..789f5c4769
--- /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 0000000000..af5bbb2fc2
--- /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 0000000000..f643043d56
--- /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 0000000000..83c160d347
--- /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 0000000000..44735fafdb
--- /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 0000000000..de384b7000
--- /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 0000000000..da925f87d6
--- /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 0000000000..29b027d425
--- /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 0000000000..4cd83df8bc
--- /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-bf561/Kconfig b/board/cm-bf561/Kconfig
new file mode 100644
index 0000000000..94d110c551
--- /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 0000000000..a4606fff62
--- /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 0000000000..397794d260
--- /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 0000000000..5f08bc3b5c
--- /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 0000000000..ae2831ecd7
--- /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 0000000000..f308b0fb29
--- /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 0000000000..b4c8f22f71
--- /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 0000000000..9fc5365148
--- /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 0000000000..8040e59bc6
--- /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 0000000000..ab33d5d02d
--- /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 0000000000..6e55d435f6
--- /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 0000000000..00942fc2fc
--- /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 0000000000..113034dc6b
--- /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 0000000000..71260157dd
--- /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 0000000000..d7a2bf24ab
--- /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 0000000000..318374e256
--- /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 0000000000..4f0f09fd7e
--- /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 0000000000..ee2b2e9545
--- /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 0000000000..4a1adf3c34
--- /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 0000000000..5fb922c68b
--- /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 0000000000..fd960bc946
--- /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 0000000000..fc5d73f04c
--- /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 0000000000..0fe3692c9f
--- /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 0000000000..461fe098c0
--- /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 0000000000..e545f0cba1
--- /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 0000000000..85b120017f
--- /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 0000000000..155fa2cae5
--- /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 0000000000..53ad759c10
--- /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 0000000000..a1e06e7f2f
--- /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 0000000000..8a8171b550
--- /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 0000000000..fd1a5367c0
--- /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 0000000000..163e09cf4c
--- /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 0000000000..27f1e4e25d
--- /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 0000000000..06bdd0d37d
--- /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 0000000000..b45225dd09
--- /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 0000000000..6e84f601f5
--- /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 0000000000..fa9a7022c1
--- /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 0000000000..e93819ecfa
--- /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 0000000000..9baf515cad
--- /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 0000000000..fb8235a329
--- /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 0000000000..90f94a3f13
--- /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 0000000000..4bc95eaeb8
--- /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 0000000000..05230a01f9
--- /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 0000000000..25041ed824
--- /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 0000000000..d866688791
--- /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 0000000000..b1b7190c21
--- /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 0000000000..dea6071f47
--- /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 0000000000..4b65a9bc90
--- /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 0000000000..3e95654239
--- /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 0000000000..3af5b5704b
--- /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 0000000000..f5d2aef365
--- /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 0000000000..a6152c985a
--- /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 0000000000..51b9428edc
--- /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 0000000000..a275b5bce4
--- /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 0000000000..89f78d7388
--- /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 0000000000..dd66f07e72
--- /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 0000000000..2dbb50991d
--- /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 0000000000..b823785896
--- /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 0000000000..345704fff3
--- /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 0000000000..f17fea2dd2
--- /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 0000000000..d5f7ea2131
--- /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 0000000000..5adb4e0c1d
--- /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 0000000000..f7b225d05f
--- /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 0000000000..4030bf325f
--- /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 0000000000..7a2d86baec
--- /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 0000000000..4b3ce45d4f
--- /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 0000000000..afab821598
--- /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 0000000000..5c300a3cbf
--- /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 0000000000..45401e4117
--- /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 0000000000..b1fc29c019
--- /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 0000000000..aeb7ef22eb
--- /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 0000000000..428d003abc
--- /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 0000000000..2cf50359a4
--- /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 0000000000..625978ca62
--- /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 0000000000..5fca62deb2
--- /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 0000000000..b94ed8154c
--- /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 0000000000..05f79ad831
--- /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 0000000000..b0535a9186
--- /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 0000000000..5e3298c1da
--- /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 0000000000..5d8c76455c
--- /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 0000000000..f03a1e729e
--- /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 0000000000..8333891a40
--- /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 0000000000..42ba092a2c
--- /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 0000000000..0ea74ca68d
--- /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 0000000000..c0cd1b710b
--- /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 0000000000..30453c6b16
--- /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 0000000000..cd2e53ce6a
--- /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 0000000000..a4ad913b63
--- /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 0000000000..55564dc960
--- /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 0000000000..5258b3a7ca
--- /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 0000000000..69c8358a53
--- /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 0000000000..4d84a3533c
--- /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 0000000000..b0c823e322
--- /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 0000000000..0ffd4668b4
--- /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 0000000000..1d4e3265c7
--- /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 0000000000..72fea41969
--- /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 0000000000..4da934e081
--- /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 0000000000..3676acab9b
--- /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 0000000000..421f7b2464
--- /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 0000000000..890359fcbd
--- /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 0000000000..e061e7e4bf
--- /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 0000000000..f7c99207db
--- /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 0000000000..15ca9623d6
--- /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 0000000000..bb273df6d4
--- /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 0000000000..b4121a6b09
--- /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 0000000000..822261be78
--- /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 0000000000..83cd8bd9bb
--- /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 0000000000..7f2a33f1e6
--- /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 0000000000..e35fc5e743
--- /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 0000000000..be74ff7f6f
--- /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 0000000000..e9558a44c5
--- /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 0000000000..a9dae903bf
--- /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 0000000000..398d22a69f
--- /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 0000000000..0191c8b214
--- /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 0000000000..c99404c903
--- /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 0000000000..660e1859c8
--- /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 0000000000..0b9f9f4bed
--- /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 0000000000..1da58dc002
--- /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 0000000000..29fa9e60cd
--- /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 0000000000..184d3cc428
--- /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 0000000000..99f8c2dc14
--- /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 0000000000..4a46457e52
--- /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 0000000000..1357a51943
--- /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 0000000000..85743db52c
--- /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 0000000000..0fd7014571
--- /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 0000000000..6833d8c688
--- /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 0000000000..f2857f695f
--- /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 0000000000..5eff2a438d
--- /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 0000000000..f80e1819ba
--- /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 0000000000..ba269480e2
--- /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 0000000000..0dc4b062da
--- /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 0000000000..b695c7b5fd
--- /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 0000000000..e355dd2f87
--- /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 0000000000..e84a1d95f2
--- /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 0000000000..74237e34cb
--- /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 0000000000..ae5fcead90
--- /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 0000000000..dfcaefdbf6
--- /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 0000000000..05b78240ac
--- /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 0000000000..86a28353d1
--- /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 0000000000..94036991be
--- /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 0000000000..83fa495947
--- /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 0000000000..85c1a128c3
--- /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 0000000000..ec6e4d9823
--- /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 0000000000..a7e165d8ba
--- /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 0000000000..a1a3971659
--- /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 0000000000..cf9c1c9496
--- /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 0000000000..82f30afe09
--- /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 0000000000..b6e624e074
--- /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 0000000000..b9783d776d
--- /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 0000000000..ccb365843d
--- /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 0000000000..e3c3c82041
--- /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 0000000000..148a596e35
--- /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 0000000000..f06b26b1f2
--- /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 0000000000..a891e23414
--- /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 0000000000..28db4ab187
--- /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 0000000000..32fb9baeef
--- /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 0000000000..8fb80dc265
--- /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 0000000000..10bc7a440c
--- /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 0000000000..4fd507c332
--- /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 0000000000..a88ba13c30
--- /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 0000000000..ef3d073c37
--- /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 0000000000..0039f5da26
--- /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 0000000000..90ba34a04d
--- /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 0000000000..385f60a3a3
--- /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 0000000000..214af9f8ac
--- /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 0000000000..782c72a41e
--- /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 0000000000..fc27625d52
--- /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 0000000000..c434eb93a3
--- /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 0000000000..7527e34ae6
--- /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 0000000000..ff6e20c067
--- /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 0000000000..848fef8b22
--- /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 0000000000..8d6634c657
--- /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 0000000000..d86044ed46
--- /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 0000000000..fb5aee80d5
--- /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 0000000000..ced3748b1b
--- /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 0000000000..1f6bc798dc
--- /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 0000000000..f7f86c9e87
--- /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 0000000000..f8307ccf51
--- /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 0000000000..126ce2fe95
--- /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 0000000000..e2fe2a6b66
--- /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/exmeritus/hww1u1a/hww1u1a.c b/board/exmeritus/hww1u1a/hww1u1a.c
index 97b84b3224..643ece1ae6 100644
--- a/board/exmeritus/hww1u1a/hww1u1a.c
+++ b/board/exmeritus/hww1u1a/hww1u1a.c
@@ -203,7 +203,7 @@ void pci_init_board(void)
int board_early_init_r(void)
{
const unsigned int flashbase = CONFIG_SYS_FLASH_BASE;
- const u8 flash_esel = find_tlb_idx((void *)flashbase, 1);
+ int flash_esel = find_tlb_idx((void *)flashbase, 1);
/*
* Remap bootflash region to caching-inhibited
@@ -214,8 +214,14 @@ int board_early_init_r(void)
flush_dcache();
invalidate_icache();
- /* invalidate existing TLB entry for FLASH */
- disable_tlb(flash_esel);
+ if (flash_esel == -1) {
+ /* very unlikely unless something is messed up */
+ puts("Error: Could not find TLB for FLASH BASE\n");
+ flash_esel = 2; /* give our best effort to continue */
+ } else {
+ /* invalidate existing TLB entry for FLASH */
+ disable_tlb(flash_esel);
+ }
set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS,
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
diff --git a/board/faraday/a320evb/Kconfig b/board/faraday/a320evb/Kconfig
new file mode 100644
index 0000000000..353c8734e5
--- /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 0000000000..f13b015bb4
--- /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 0000000000..bc0657e5d0
--- /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 0000000000..606989c04d
--- /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 0000000000..c5321d64dc
--- /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 0000000000..9f9a612a61
--- /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/b4860qds/b4860qds.c b/board/freescale/b4860qds/b4860qds.c
index 9d6b9a7b66..34d66d5fd2 100644
--- a/board/freescale/b4860qds/b4860qds.c
+++ b/board/freescale/b4860qds/b4860qds.c
@@ -913,7 +913,7 @@ out:
int board_early_init_r(void)
{
const unsigned int flashbase = CONFIG_SYS_FLASH_BASE;
- const u8 flash_esel = find_tlb_idx((void *)flashbase, 1);
+ int flash_esel = find_tlb_idx((void *)flashbase, 1);
int ret;
/*
@@ -925,8 +925,14 @@ int board_early_init_r(void)
flush_dcache();
invalidate_icache();
- /* invalidate existing TLB entry for flash + promjet */
- disable_tlb(flash_esel);
+ if (flash_esel == -1) {
+ /* very unlikely unless something is messed up */
+ puts("Error: Could not find TLB for FLASH BASE\n");
+ flash_esel = 2; /* give our best effort to continue */
+ } else {
+ /* invalidate existing TLB entry for flash + promjet */
+ disable_tlb(flash_esel);
+ }
set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS,
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
diff --git a/board/freescale/bsc9131rdb/Kconfig b/board/freescale/bsc9131rdb/Kconfig
new file mode 100644
index 0000000000..6099d4d063
--- /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 0000000000..7cd8134aa7
--- /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 0000000000..955069b15a
--- /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 0000000000..3de62d3f46
--- /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/bsc9132qds/bsc9132qds.c b/board/freescale/bsc9132qds/bsc9132qds.c
index 9377280063..10580bcecc 100644
--- a/board/freescale/bsc9132qds/bsc9132qds.c
+++ b/board/freescale/bsc9132qds/bsc9132qds.c
@@ -150,7 +150,7 @@ int board_early_init_r(void)
{
#ifndef CONFIG_SYS_NO_FLASH
const unsigned int flashbase = CONFIG_SYS_FLASH_BASE;
- const u8 flash_esel = find_tlb_idx((void *)flashbase, 1);
+ int flash_esel = find_tlb_idx((void *)flashbase, 1);
/*
* Remap Boot flash region to caching-inhibited
@@ -161,8 +161,14 @@ int board_early_init_r(void)
flush_dcache();
invalidate_icache();
- /* invalidate existing TLB entry for flash */
- disable_tlb(flash_esel);
+ if (flash_esel == -1) {
+ /* very unlikely unless something is messed up */
+ puts("Error: Could not find TLB for FLASH BASE\n");
+ flash_esel = 2; /* give our best effort to continue */
+ } else {
+ /* invalidate existing TLB entry for flash */
+ disable_tlb(flash_esel);
+ }
set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS,
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
diff --git a/board/freescale/c29xpcie/Kconfig b/board/freescale/c29xpcie/Kconfig
new file mode 100644
index 0000000000..be9c237839
--- /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 0000000000..db2e5e3bd3
--- /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/c29xpcie/c29xpcie.c b/board/freescale/c29xpcie/c29xpcie.c
index f964d6185a..534c6d11b0 100644
--- a/board/freescale/c29xpcie/c29xpcie.c
+++ b/board/freescale/c29xpcie/c29xpcie.c
@@ -49,7 +49,7 @@ int board_early_init_f(void)
int board_early_init_r(void)
{
const unsigned long flashbase = CONFIG_SYS_FLASH_BASE;
- const u8 flash_esel = find_tlb_idx((void *)flashbase, 1);
+ int flash_esel = find_tlb_idx((void *)flashbase, 1);
/*
* Remap Boot flash region to caching-inhibited
@@ -60,8 +60,14 @@ int board_early_init_r(void)
flush_dcache();
invalidate_icache();
- /* invalidate existing TLB entry for flash */
- disable_tlb(flash_esel);
+ if (flash_esel == -1) {
+ /* very unlikely unless something is messed up */
+ puts("Error: Could not find TLB for FLASH BASE\n");
+ flash_esel = 1; /* give our best effort to continue */
+ } else {
+ /* invalidate existing TLB entry for flash */
+ disable_tlb(flash_esel);
+ }
set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS,
MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
diff --git a/board/freescale/corenet_ds/Kconfig b/board/freescale/corenet_ds/Kconfig
new file mode 100644
index 0000000000..8c3bd9c152
--- /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 0000000000..841d82fdd8
--- /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/corenet_ds/corenet_ds.c b/board/freescale/corenet_ds/corenet_ds.c
index 9212372fee..65b386741e 100644
--- a/board/freescale/corenet_ds/corenet_ds.c
+++ b/board/freescale/corenet_ds/corenet_ds.c
@@ -101,7 +101,7 @@ int board_early_init_f(void)
int board_early_init_r(void)
{
const unsigned int flashbase = CONFIG_SYS_FLASH_BASE;
- const u8 flash_esel = find_tlb_idx((void *)flashbase, 1);
+ int flash_esel = find_tlb_idx((void *)flashbase, 1);
/*
* Remap Boot flash + PROMJET region to caching-inhibited
@@ -112,8 +112,14 @@ int board_early_init_r(void)
flush_dcache();
invalidate_icache();
- /* invalidate existing TLB entry for flash + promjet */
- disable_tlb(flash_esel);
+ if (flash_esel == -1) {
+ /* very unlikely unless something is messed up */
+ puts("Error: Could not find TLB for FLASH BASE\n");
+ flash_esel = 2; /* give our best effort to continue */
+ } else {
+ /* invalidate existing TLB entry for flash + promjet */
+ disable_tlb(flash_esel);
+ }
set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS, /* tlb, epn, rpn */
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, /* perms, wimge */
diff --git a/board/freescale/ls2085a/Kconfig b/board/freescale/ls2085a/Kconfig
new file mode 100644
index 0000000000..5655e186c4
--- /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 0000000000..572c4b8446
--- /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 0000000000..9b1fa42865
--- /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 0000000000..65d04df250
--- /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 0000000000..54a86e4f4a
--- /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 0000000000..390f041183
--- /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 0000000000..f996ca2bd1
--- /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 0000000000..f44422ea9d
--- /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 0000000000..87643e4457
--- /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 0000000000..22301b770e
--- /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 0000000000..76197a74a5
--- /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 0000000000..abe065e626
--- /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 0000000000..bdc6c27e9d
--- /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 0000000000..1c21b03c38
--- /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 0000000000..b69c37af2a
--- /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 0000000000..aa4739f744
--- /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 0000000000..85514b7775
--- /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 0000000000..b87d52c64f
--- /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 0000000000..33e98a7c52
--- /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 0000000000..f945ab446b
--- /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 0000000000..99ffd7db64
--- /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 0000000000..700b6f700a
--- /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 0000000000..c9a621ad48
--- /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 0000000000..f4f103a4c7
--- /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 0000000000..583a4b5c77
--- /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 0000000000..5db0b34a66
--- /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 0000000000..7d73b945f2
--- /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 0000000000..37b24c7be8
--- /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 0000000000..814db72d98
--- /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 0000000000..be145494cb
--- /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 0000000000..acdd13f096
--- /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 0000000000..3788f5f87e
--- /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 0000000000..d21072e2ef
--- /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 0000000000..9a8408d257
--- /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 0000000000..2afe11c41a
--- /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 0000000000..82ad9fdc60
--- /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 0000000000..9989ccbbc5
--- /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 0000000000..0c7f682f95
--- /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 0000000000..0ea712ccf1
--- /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 0000000000..9966b55fd1
--- /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 0000000000..7c5a646434
--- /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 0000000000..bdea02d758
--- /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 0000000000..b47765a0a2
--- /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 0000000000..07ff2abd13
--- /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 0000000000..078f437c5a
--- /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 0000000000..923ba95404
--- /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 0000000000..46833ca0df
--- /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 0000000000..938c1527e0
--- /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 0000000000..a1c0a610a4
--- /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 0000000000..05057c0c2d
--- /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 0000000000..83af2c2782
--- /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 0000000000..56d70733b4
--- /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 0000000000..8f549dc73a
--- /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 0000000000..141e77a94e
--- /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 0000000000..af3fedd97b
--- /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 0000000000..ed6e4e54dd
--- /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 0000000000..d6e7766362
--- /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 0000000000..91ff2ef4e8
--- /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 0000000000..bfb3b1f44d
--- /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 0000000000..cb075d62a9
--- /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 0000000000..b0357cb5fb
--- /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 0000000000..6ff1346206
--- /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 0000000000..f8e33e6d27
--- /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 0000000000..c216d8da06
--- /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 0000000000..c7c818cde0
--- /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 0000000000..51d7cd7bac
--- /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/mpc8536ds/mpc8536ds.c b/board/freescale/mpc8536ds/mpc8536ds.c
index 467f4f2013..93eed59b1a 100644
--- a/board/freescale/mpc8536ds/mpc8536ds.c
+++ b/board/freescale/mpc8536ds/mpc8536ds.c
@@ -196,7 +196,7 @@ void pci_init_board(void)
int board_early_init_r(void)
{
const unsigned int flashbase = CONFIG_SYS_FLASH_BASE;
- const u8 flash_esel = find_tlb_idx((void *)flashbase, 1);
+ int flash_esel = find_tlb_idx((void *)flashbase, 1);
/*
* Remap Boot flash + PROMJET region to caching-inhibited
@@ -207,8 +207,14 @@ int board_early_init_r(void)
flush_dcache();
invalidate_icache();
- /* invalidate existing TLB entry for flash + promjet */
- disable_tlb(flash_esel);
+ if (flash_esel == -1) {
+ /* very unlikely unless something is messed up */
+ puts("Error: Could not find TLB for FLASH BASE\n");
+ flash_esel = 1; /* give our best effort to continue */
+ } else {
+ /* invalidate existing TLB entry for flash + promjet */
+ disable_tlb(flash_esel);
+ }
set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS, /* tlb, epn, rpn */
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, /* perms, wimge */
diff --git a/board/freescale/mpc8540ads/Kconfig b/board/freescale/mpc8540ads/Kconfig
new file mode 100644
index 0000000000..2cf252c44c
--- /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 0000000000..41a2191577
--- /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 0000000000..2beefc2dc1
--- /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 0000000000..073210d9ad
--- /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 0000000000..d55b6802b8
--- /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 0000000000..81b664c732
--- /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 0000000000..69d717ef92
--- /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 0000000000..89b2425d0b
--- /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 0000000000..585830884b
--- /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 0000000000..14470d72ee
--- /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 0000000000..55cdb62137
--- /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 0000000000..836def2a27
--- /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 0000000000..b02946b151
--- /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 0000000000..72c25f5f8e
--- /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 0000000000..f13a07eb03
--- /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 0000000000..b5478dbc17
--- /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 0000000000..3794f036a2
--- /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 0000000000..4c9b968cd0
--- /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/mpc8572ds/mpc8572ds.c b/board/freescale/mpc8572ds/mpc8572ds.c
index 56863222c8..1bbf832148 100644
--- a/board/freescale/mpc8572ds/mpc8572ds.c
+++ b/board/freescale/mpc8572ds/mpc8572ds.c
@@ -144,7 +144,7 @@ void pci_init_board(void)
int board_early_init_r(void)
{
const unsigned int flashbase = CONFIG_SYS_FLASH_BASE;
- const u8 flash_esel = find_tlb_idx((void *)flashbase, 1);
+ int flash_esel = find_tlb_idx((void *)flashbase, 1);
/*
* Remap Boot flash + PROMJET region to caching-inhibited
@@ -155,8 +155,14 @@ int board_early_init_r(void)
flush_dcache();
invalidate_icache();
- /* invalidate existing TLB entry for flash + promjet */
- disable_tlb(flash_esel);
+ if (flash_esel == -1) {
+ /* very unlikely unless something is messed up */
+ puts("Error: Could not find TLB for FLASH BASE\n");
+ flash_esel = 2; /* give our best effort to continue */
+ } else {
+ /* invalidate existing TLB entry for flash + promjet */
+ disable_tlb(flash_esel);
+ }
set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS, /* tlb, epn, rpn */
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, /* perms, wimge */
diff --git a/board/freescale/mpc8610hpcd/Kconfig b/board/freescale/mpc8610hpcd/Kconfig
new file mode 100644
index 0000000000..463a433aef
--- /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 0000000000..993c02a15e
--- /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 0000000000..9fc4241149
--- /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 0000000000..34bcc6cd0b
--- /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 0000000000..ee7911ca35
--- /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 0000000000..b03ad6ae0a
--- /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 0000000000..67cb5ecb14
--- /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 0000000000..63221765c7
--- /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 0000000000..2fe6f327ca
--- /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 0000000000..1caf5fb22a
--- /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 0000000000..96116dd254
--- /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 0000000000..e9c8fe78e0
--- /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 0000000000..6ac6a59e6d
--- /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 0000000000..2e057db962
--- /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 0000000000..5555b0ba37
--- /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 0000000000..540e943691
--- /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 0000000000..a6dbbdd2ae
--- /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 0000000000..0e5f22c26b
--- /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 0000000000..eaaa1b2a0c
--- /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 0000000000..7cc0e5e222
--- /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 0000000000..dda1ada32b
--- /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 0000000000..5c5f747cb8
--- /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 0000000000..8b285d28a8
--- /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 0000000000..73b113e577
--- /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 0000000000..1f7e42f9f3
--- /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 0000000000..8830321495
--- /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 0000000000..2c42e9aeab
--- /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 0000000000..42c19d13ec
--- /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 0000000000..21fb4fc4bb
--- /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 0000000000..fb65ce4123
--- /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 0000000000..65d67368a0
--- /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 0000000000..69c0a3065f
--- /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 0000000000..23c31545e0
--- /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 0000000000..660af91aee
--- /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 0000000000..2abe1c09b2
--- /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 0000000000..579e775972
--- /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/p1010rdb/p1010rdb.c b/board/freescale/p1010rdb/p1010rdb.c
index 62caf676c6..491b576258 100644
--- a/board/freescale/p1010rdb/p1010rdb.c
+++ b/board/freescale/p1010rdb/p1010rdb.c
@@ -93,7 +93,7 @@ int board_early_init_f(void)
int board_early_init_r(void)
{
const unsigned int flashbase = CONFIG_SYS_FLASH_BASE;
- const u8 flash_esel = find_tlb_idx((void *)flashbase, 1);
+ int flash_esel = find_tlb_idx((void *)flashbase, 1);
/*
* Remap Boot flash region to caching-inhibited
@@ -104,8 +104,14 @@ int board_early_init_r(void)
flush_dcache();
invalidate_icache();
- /* invalidate existing TLB entry for flash */
- disable_tlb(flash_esel);
+ if (flash_esel == -1) {
+ /* very unlikely unless something is messed up */
+ puts("Error: Could not find TLB for FLASH BASE\n");
+ flash_esel = 2; /* give our best effort to continue */
+ } else {
+ /* invalidate existing TLB entry for flash */
+ disable_tlb(flash_esel);
+ }
set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS,
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
diff --git a/board/freescale/p1022ds/Kconfig b/board/freescale/p1022ds/Kconfig
new file mode 100644
index 0000000000..39e37bdda8
--- /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 0000000000..86aac365d3
--- /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/p1022ds/p1022ds.c b/board/freescale/p1022ds/p1022ds.c
index ba789a4daf..f5e18515a0 100644
--- a/board/freescale/p1022ds/p1022ds.c
+++ b/board/freescale/p1022ds/p1022ds.c
@@ -249,7 +249,7 @@ void pci_init_board(void)
int board_early_init_r(void)
{
const unsigned int flashbase = CONFIG_SYS_FLASH_BASE;
- const u8 flash_esel = find_tlb_idx((void *)flashbase, 1);
+ int flash_esel = find_tlb_idx((void *)flashbase, 1);
/*
* Remap Boot flash + PROMJET region to caching-inhibited
@@ -260,8 +260,14 @@ int board_early_init_r(void)
flush_dcache();
invalidate_icache();
- /* invalidate existing TLB entry for flash + promjet */
- disable_tlb(flash_esel);
+ if (flash_esel == -1) {
+ /* very unlikely unless something is messed up */
+ puts("Error: Could not find TLB for FLASH BASE\n");
+ flash_esel = 2; /* give our best effort to continue */
+ } else {
+ /* invalidate existing TLB entry for flash + promjet */
+ disable_tlb(flash_esel);
+ }
set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS,
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
diff --git a/board/freescale/p1023rdb/Kconfig b/board/freescale/p1023rdb/Kconfig
new file mode 100644
index 0000000000..95d329562a
--- /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 0000000000..81501aa5fc
--- /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/p1023rdb/p1023rdb.c b/board/freescale/p1023rdb/p1023rdb.c
index d2d4f8390a..d4d277ba6d 100644
--- a/board/freescale/p1023rdb/p1023rdb.c
+++ b/board/freescale/p1023rdb/p1023rdb.c
@@ -57,7 +57,7 @@ void pci_init_board(void)
int board_early_init_r(void)
{
const unsigned int flashbase = CONFIG_SYS_FLASH_BASE;
- const u8 flash_esel = find_tlb_idx((void *)flashbase, 1);
+ int flash_esel = find_tlb_idx((void *)flashbase, 1);
/*
* Remap Boot flash + PROMJET region to caching-inhibited
@@ -68,8 +68,14 @@ int board_early_init_r(void)
flush_dcache();
invalidate_icache();
- /* invalidate existing TLB entry for flash + promjet */
- disable_tlb(flash_esel);
+ if (flash_esel == -1) {
+ /* very unlikely unless something is messed up */
+ puts("Error: Could not find TLB for FLASH BASE\n");
+ flash_esel = 2; /* give our best effort to continue */
+ } else {
+ /* invalidate existing TLB entry for flash + promjet */
+ disable_tlb(flash_esel);
+ }
set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS,
MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
diff --git a/board/freescale/p1023rds/Makefile b/board/freescale/p1023rds/Makefile
deleted file mode 100644
index fdbf365ea5..0000000000
--- a/board/freescale/p1023rds/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# Copyright 2010-2011 Freescale Semiconductor, Inc.
-#
-# SPDX-License-Identifier: GPL-2.0+
-#
-
-obj-y += p1023rds.o
-obj-y += law.o
-obj-y += tlb.o
diff --git a/board/freescale/p1023rds/README b/board/freescale/p1023rds/README
deleted file mode 100644
index d382551c4d..0000000000
--- a/board/freescale/p1023rds/README
+++ /dev/null
@@ -1,101 +0,0 @@
-Overview
---------
-The P1023 process includes a performance optimized implementation of the
-QorIQ data Path Acceleration Architecture (DPAA). This architecture
-provides the infrastructure to support simplified sharing of networking
-interfaces and accelerators by multiple CPU cores. P1023 is an e500 based
-dual core SOC.
-
-P1023RDS board is a Low End Dual core platform supporting the P1023
-processor of QorIQ series.
-
-Building U-boot
----------------
-To build the u-boot for P1023RDS:
-Configure to NOR boot:
- make P1023RDS_config
-Configure to NAND boot:
- make P1023RDS_NAND_config
-Build:
- make
-
-Board Switches
---------------
-Most switches on the board should not be changed. The most frequent
-user-settable switches on the board are used to configure
-the flash banks.
-
-J4: all open
-
-Default NOR flash boot switch setting:
- Sw3[1:8]: off on on off on on off off
- Sw4[1:8]: off off off on off off off off
- Sw6[1:8]: off on off on off on on off
- Sw7[1:8]: off on off off on off off off
- Sw8[1:8]: on off off off off off off off
-
-For NAND flash boot,set
-Sw4[1:4]: off on on on
-
-The default native ethernet setting is for RGMII mode.
-To use SGMII mode, set
-SW8[1:2]: OFF OFF
-SW7[6:7]: ON ON
-
-Memory Map
-----------
-0x0000_0000 0x7fff_ffff DDR 2G Cacheable
-0x8000_0000 0xbfff_ffff PCI Express Mem 1G non-cacheable
-0xc000_0000 0xdfff_ffff PCI 512M non-cacheable
-0xe100_0000 0xe3ff_ffff PCI IO range 4M non-cacheable
-
-0xe000_0000 0xe003_ffff BCSR 256K BCSR
-0xee00_0000 0xefff_ffff NOR flash 32M NOR flash
-0xff00_0000 0xff3f_ffff DPAA_QBMAN 4M
-0xff60_0000 0xff7f_ffff CCSR 2M non-cacheable
-0xffa0_0000 0xffaf_ffff NAND FLASH 1M non-cacheable
-0xffd0_0000 0xffd0_3fff L1 for stack 16K Cacheable TLB0
-
-Flashing u-boot Images
----------------
-To program the image in the boot flash bank:
-NOR flash boot:
- => tftp 1000000 u-boot.bin
- => protect off all
- => erase eff40000 efffffff
- => cp.b 1000000 eff40000 c0000
-
-NAND flash boot:
- => tftp 1000000 u-boot-nand.bin
- => nand erase 0 80000
- => nand write 1000000 0 80000
-
-Firmware ucode location
----------------------------------
-Microcode(ucode) to FMAN's IRAM is needed to make FMAN Ethernet work.
-u-boot loads ucode FLASH. The location for ucode:
-NOR Flash: 0xfe000000
-NAND Flash: 0x1f00000
-
-Using the Device Tree Source File
----------------------------------
-To create the DTB (Device Tree Binary) image file,
-use a command similar to this:
-
- dtc -b 0 -f -I dts -O dtb p1023rds.dts > p1023rds.dtb
-
-Likely, that .dts file will come from here;
-
- linux-2.6/arch/powerpc/boot/dts/p1023rds.dts
-or
- make p1023rds.dtb ARCH=powerpc
-in linux-2.6 directory.
-
-Booting Linux
--------------
-Place a linux uImage in the TFTP disk area.
-
- tftp 1000000 uImage
- tftp 2000000 rootfs.ext2.gz.uboot
- tftp c00000 p1023rds.dtb
- bootm 1000000 2000000 c00000
diff --git a/board/freescale/p1023rds/bcsr.h b/board/freescale/p1023rds/bcsr.h
deleted file mode 100644
index a9deb72f78..0000000000
--- a/board/freescale/p1023rds/bcsr.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2011 Freescale Semiconductor, Inc.
- *
- * Authors: Chunhe Lan <b25806@freescale.com>
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-#ifndef __BCSR_H_
-#define __BCSR_H_
-
-#include <common.h>
-
-/*
- * BCSR Bit definitions
- * BCSR 15 *
- 0 device insertion oriention
- 1 stack processor present
- 2 power supply shut down/normal operation
- 3 I2C bus0 drive enable
- 4 reserved
- 5:7 I2C bus0 select
- 5 - I2C_BUS_0_SS0
- 6 - I2C_BUS_0_SS1
- 7 - I2C_BUS_0_SS2
-*/
-
-/* BCSR register base address is 0xFX000020 */
-#define BCSR_BASE_REG_OFFSET 0x20
-#define BCSR_ACCESS_REG_ADDR (CONFIG_SYS_BCSR_BASE + BCSR_BASE_REG_OFFSET)
-
-#define BCSR15_DEV_INS_ORI 0x80
-#define BCSR15_STACK_PRO_PRE 0x40
-#define BCSR15_POWER_SUPPLY 0x20
-#define BCSR15_I2C_BUS0_EN 0x10
-#define BCSR15_I2C_BUS0_SEG0 0x00
-#define BCSR15_I2C_BUS0_SEG1 0x04
-#define BCSR15_I2C_BUS0_SEG2 0x02
-#define BCSR15_I2C_BUS0_SEG3 0x06
-#define BCSR15_I2C_BUS0_SEG4 0x01
-#define BCSR15_I2C_BUS0_SEG5 0x05
-#define BCSR15_I2C_BUS0_SEG6 0x03
-#define BCSR15_I2C_BUS0_SEG7 0x07
-#define BCSR15_I2C_BUS0_SEG_CLR 0x07
-#define BCSR19_SGMII_SEL_L 0x01
-
-/*BCSR Utils functions*/
-void fixup_i2c_bus0_sel_seg0(void);
-#endif /* __BCSR_H_ */
diff --git a/board/freescale/p1023rds/law.c b/board/freescale/p1023rds/law.c
deleted file mode 100644
index 92f5a3fcb5..0000000000
--- a/board/freescale/p1023rds/law.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright 2010-2011 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/fsl_law.h>
-#include <asm/mmu.h>
-
-struct law_entry law_table[] = {
- SET_LAW(CONFIG_SYS_NAND_BASE_PHYS, LAW_SIZE_1M, LAW_TRGT_IF_LBC),
- SET_LAW(CONFIG_SYS_QMAN_MEM_PHYS, LAW_SIZE_4M,
- LAW_TRGT_IF_DPAA_SWP_SRAM),
- /* The LAW 0xe0000000 ~ 0xefffffff for BCSR and NOR flash */
- SET_LAW(CONFIG_SYS_BCSR_BASE_PHYS, LAW_SIZE_256M, LAW_TRGT_IF_LBC),
-};
-
-int num_law_entries = ARRAY_SIZE(law_table);
diff --git a/board/freescale/p1023rds/p1023rds.c b/board/freescale/p1023rds/p1023rds.c
deleted file mode 100644
index 2b883c719e..0000000000
--- a/board/freescale/p1023rds/p1023rds.c
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * Copyright 2010-2012 Freescale Semiconductor, Inc.
- *
- * Authors: Roy Zang <tie-fei.zang@freescale.com>
- * Chunhe Lan <b25806@freescale.com>
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-#include <common.h>
-#include <command.h>
-#include <pci.h>
-#include <asm/io.h>
-#include <asm/cache.h>
-#include <asm/processor.h>
-#include <asm/mmu.h>
-#include <asm/immap_85xx.h>
-#include <asm/fsl_pci.h>
-#include <fsl_ddr_sdram.h>
-#include <asm/fsl_portals.h>
-#include <libfdt.h>
-#include <fdt_support.h>
-#include <netdev.h>
-#include <malloc.h>
-#include <fm_eth.h>
-#include <fsl_mdio.h>
-#include <miiphy.h>
-#include <phy.h>
-#include <asm/fsl_dtsec.h>
-
-#include "bcsr.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-int board_early_init_f(void)
-{
- fsl_lbc_t *lbc = LBC_BASE_ADDR;
-
- /* Set ABSWP to implement conversion of addresses in the LBC */
- setbits_be32(&lbc->lbcr, CONFIG_SYS_LBC_LBCR);
-
- return 0;
-}
-
-int checkboard(void)
-{
- u8 *bcsr = (u8 *)BCSR_ACCESS_REG_ADDR;
-
- printf("Board: P1023 RDS\n");
-
- clrbits_8(&bcsr[15], BCSR15_I2C_BUS0_SEG_CLR);
- setbits_8(&bcsr[15], BCSR15_I2C_BUS0_SEG0);
-
- return 0;
-}
-
-/* Fixed sdram init -- doesn't use serial presence detect. */
-phys_size_t fixed_sdram(void)
-{
-#ifndef CONFIG_SYS_RAMBOOT
- struct ccsr_ddr __iomem *ddr =
- (struct ccsr_ddr __iomem *)CONFIG_SYS_FSL_DDR_ADDR;
-
- set_next_law(0, LAW_SIZE_2G, LAW_TRGT_IF_DDR_1);
-
- out_be32(&ddr->cs0_bnds, CONFIG_SYS_DDR_CS0_BNDS);
- out_be32(&ddr->cs0_config, CONFIG_SYS_DDR_CS0_CONFIG);
- out_be32(&ddr->cs1_bnds, CONFIG_SYS_DDR_CS1_BNDS);
- out_be32(&ddr->cs1_config, CONFIG_SYS_DDR_CS1_CONFIG);
- out_be32(&ddr->timing_cfg_3, CONFIG_SYS_DDR_TIMING_3);
- out_be32(&ddr->timing_cfg_0, CONFIG_SYS_DDR_TIMING_0);
- out_be32(&ddr->timing_cfg_1, CONFIG_SYS_DDR_TIMING_1);
- out_be32(&ddr->timing_cfg_2, CONFIG_SYS_DDR_TIMING_2);
- out_be32(&ddr->sdram_cfg_2, CONFIG_SYS_DDR_CONTROL2);
- out_be32(&ddr->sdram_mode, CONFIG_SYS_DDR_MODE_1);
- out_be32(&ddr->sdram_mode_2, CONFIG_SYS_DDR_MODE_2);
- out_be32(&ddr->sdram_interval, CONFIG_SYS_DDR_INTERVAL);
- out_be32(&ddr->sdram_data_init, CONFIG_SYS_DDR_DATA_INIT);
- out_be32(&ddr->sdram_clk_cntl, CONFIG_SYS_DDR_CLK_CTRL);
- out_be32(&ddr->timing_cfg_4, CONFIG_SYS_DDR_TIMING_4);
- out_be32(&ddr->timing_cfg_5, CONFIG_SYS_DDR_TIMING_5);
- out_be32(&ddr->ddr_zq_cntl, CONFIG_SYS_DDR_ZQ_CNTL);
- out_be32(&ddr->ddr_wrlvl_cntl, CONFIG_SYS_DDR_WRLVL_CNTL);
- out_be32(&ddr->ddr_cdr1, CONFIG_SYS_DDR_CDR_1);
- out_be32(&ddr->ddr_cdr2, CONFIG_SYS_DDR_CDR_2);
- out_be32(&ddr->sdram_cfg, CONFIG_SYS_DDR_CONTROL);
-#endif
- return CONFIG_SYS_SDRAM_SIZE * 1024 * 1024ul;
-}
-
-#ifdef CONFIG_PCI
-void pci_init_board(void)
-{
- fsl_pcie_init_board(0);
-}
-#endif
-
-int board_early_init_r(void)
-{
- const unsigned int flashbase = CONFIG_SYS_BCSR_BASE;
- const u8 flash_esel = find_tlb_idx((void *)flashbase, 1);
-
- /*
- * Remap Boot flash + BCSR region to caching-inhibited
- * so that flash can be erased properly.
- */
-
- /* Flush d-cache and invalidate i-cache of any FLASH data */
- flush_dcache();
- invalidate_icache();
-
- /* invalidate existing TLB entry for flash + bcsr */
- disable_tlb(flash_esel);
-
- set_tlb(1, flashbase, CONFIG_SYS_BCSR_BASE_PHYS,
- MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
- 0, flash_esel, BOOKE_PAGESZ_256M, 1);
-
- setup_portals();
-
- return 0;
-}
-
-unsigned long get_board_sys_clk(ulong dummy)
-{
- return gd->bus_clk;
-}
-
-unsigned long get_board_ddr_clk(ulong dummy)
-{
- return gd->mem_clk;
-}
-
-int board_eth_init(bd_t *bis)
-{
- u8 *bcsr = (u8 *)BCSR_ACCESS_REG_ADDR;
- ccsr_gur_t *gur = (ccsr_gur_t *)CONFIG_SYS_MPC85xx_GUTS_ADDR;
- struct fsl_pq_mdio_info dtsec_mdio_info;
-
- /*
- * Need to set dTSEC 1 pin multiplexing to TSEC. The default setting
- * is not correct.
- */
- setbits_be32(&gur->pmuxcr, MPC85xx_PMUXCR_TSEC1_1);
-
- dtsec_mdio_info.regs =
- (struct tsec_mii_mng *)CONFIG_SYS_FM1_DTSEC1_MDIO_ADDR;
- dtsec_mdio_info.name = DEFAULT_FM_MDIO_NAME;
-
- /* Register the 1G MDIO bus */
- fsl_pq_mdio_init(bis, &dtsec_mdio_info);
-
- fm_info_set_phy_address(FM1_DTSEC1, CONFIG_SYS_FM1_DTSEC1_PHY_ADDR);
- fm_info_set_phy_address(FM1_DTSEC2, CONFIG_SYS_FM1_DTSEC2_PHY_ADDR);
-
- fm_info_set_mdio(FM1_DTSEC1,
- miiphy_get_dev_by_name(DEFAULT_FM_MDIO_NAME));
- fm_info_set_mdio(FM1_DTSEC2,
- miiphy_get_dev_by_name(DEFAULT_FM_MDIO_NAME));
-
- /* Make SERDES connected to SGMII by cleaing bcsr19[7] */
- if (fm_info_get_enet_if(FM1_DTSEC1) == PHY_INTERFACE_MODE_SGMII)
- clrbits_8(&bcsr[19], BCSR19_SGMII_SEL_L);
-
-#ifdef CONFIG_FMAN_ENET
- cpu_eth_init(bis);
-#endif
-
- return pci_eth_init(bis);
-}
-
-#if defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
-{
- phys_addr_t base;
- phys_size_t size;
-
- ft_cpu_setup(blob, bd);
-
- base = getenv_bootm_low();
- size = getenv_bootm_size();
-
- fdt_fixup_memory(blob, (u64)base, (u64)size);
-
-#ifdef CONFIG_HAS_FSL_DR_USB
- fdt_fixup_dr_usb(blob, bd);
-#endif
-
- fdt_fixup_fman_ethernet(blob);
-}
-#endif
diff --git a/board/freescale/p1023rds/tlb.c b/board/freescale/p1023rds/tlb.c
deleted file mode 100644
index 3c92c14ae3..0000000000
--- a/board/freescale/p1023rds/tlb.c
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright 2010-2011 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/mmu.h>
-
-struct fsl_e_tlb_entry tlb_table[] = {
- /* TLB 0 - for temp stack in cache */
- SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR, CONFIG_SYS_INIT_RAM_ADDR,
- MAS3_SX|MAS3_SW|MAS3_SR, 0,
- 0, 0, BOOKE_PAGESZ_4K, 0),
- SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 4 * 1024,
- CONFIG_SYS_INIT_RAM_ADDR + 4 * 1024,
- MAS3_SX|MAS3_SW|MAS3_SR, 0,
- 0, 0, BOOKE_PAGESZ_4K, 0),
- SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 8 * 1024,
- CONFIG_SYS_INIT_RAM_ADDR + 8 * 1024,
- MAS3_SX|MAS3_SW|MAS3_SR, 0,
- 0, 0, BOOKE_PAGESZ_4K, 0),
- SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 12 * 1024,
- CONFIG_SYS_INIT_RAM_ADDR + 12 * 1024,
- MAS3_SX|MAS3_SW|MAS3_SR, 0,
- 0, 0, BOOKE_PAGESZ_4K, 0),
-
- /* TLB 1 */
- /* *I*** - Covers boot page */
- SET_TLB_ENTRY(1, 0xfffff000, 0xfffff000,
- MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I,
- 0, 0, BOOKE_PAGESZ_4K, 1),
-
- /* *I*G* - CCSRBAR */
- SET_TLB_ENTRY(1, CONFIG_SYS_CCSRBAR, CONFIG_SYS_CCSRBAR_PHYS,
- MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
- 0, 1, BOOKE_PAGESZ_4M, 1),
-
- /* *W*G* - BCSR and NOR flash on local bus*/
- /* This will be changed to *I*G* after relocation to RAM. */
- SET_TLB_ENTRY(1, CONFIG_SYS_BCSR_BASE, CONFIG_SYS_BCSR_BASE_PHYS,
- MAS3_SX|MAS3_SW|MAS3_SR, MAS2_W|MAS2_G,
- 0, 2, BOOKE_PAGESZ_256M, 1),
-
- /* *I*G* - PCI */
- SET_TLB_ENTRY(1, CONFIG_SYS_PCIE3_MEM_VIRT, CONFIG_SYS_PCIE3_MEM_PHYS,
- MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
- 0, 3, BOOKE_PAGESZ_1G, 1),
-
- /* *I*G* - PCI */
- SET_TLB_ENTRY(1, CONFIG_SYS_PCIE3_MEM_VIRT + 0x40000000,
- CONFIG_SYS_PCIE3_MEM_PHYS + 0x40000000,
- MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
- 0, 4, BOOKE_PAGESZ_256M, 1),
-
- SET_TLB_ENTRY(1, CONFIG_SYS_PCIE3_MEM_VIRT + 0x50000000,
- CONFIG_SYS_PCIE3_MEM_PHYS + 0x50000000,
- MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
- 0, 5, BOOKE_PAGESZ_256M, 1),
-
- /* *I*G* - PCI I/O */
- SET_TLB_ENTRY(1, CONFIG_SYS_PCIE3_IO_VIRT, CONFIG_SYS_PCIE3_IO_PHYS,
- MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
- 0, 6, BOOKE_PAGESZ_256K, 1),
-
- /* Bman/Qman */
- SET_TLB_ENTRY(1, CONFIG_SYS_BMAN_MEM_BASE, CONFIG_SYS_BMAN_MEM_PHYS,
- MAS3_SX|MAS3_SW|MAS3_SR, 0,
- 0, 7, BOOKE_PAGESZ_1M, 1),
- SET_TLB_ENTRY(1, CONFIG_SYS_BMAN_MEM_BASE + 0x00100000,
- CONFIG_SYS_BMAN_MEM_PHYS + 0x00100000,
- MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
- 0, 8, BOOKE_PAGESZ_1M, 1),
- SET_TLB_ENTRY(1, CONFIG_SYS_QMAN_MEM_BASE, CONFIG_SYS_QMAN_MEM_PHYS,
- MAS3_SX|MAS3_SW|MAS3_SR, MAS2_M,
- 0, 9, BOOKE_PAGESZ_1M, 1),
- SET_TLB_ENTRY(1, CONFIG_SYS_QMAN_MEM_BASE + 0x00100000,
- CONFIG_SYS_QMAN_MEM_PHYS + 0x00100000,
- MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
- 0, 10, BOOKE_PAGESZ_1M, 1),
-
- /* *I*G - NAND */
- SET_TLB_ENTRY(1, CONFIG_SYS_NAND_BASE, CONFIG_SYS_NAND_BASE_PHYS,
- MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
- 0, 11, BOOKE_PAGESZ_1M, 1),
-
-#ifdef CONFIG_SYS_RAMBOOT
- SET_TLB_ENTRY(1, CONFIG_SYS_DDR_SDRAM_BASE,
- CONFIG_SYS_DDR_SDRAM_BASE,
- MAS3_SX|MAS3_SW|MAS3_SR, 0,
- 0, 12, BOOKE_PAGESZ_1G, 1),
-
- SET_TLB_ENTRY(1, CONFIG_SYS_DDR_SDRAM_BASE + 0x40000000,
- CONFIG_SYS_DDR_SDRAM_BASE + 0x40000000,
- MAS3_SX|MAS3_SW|MAS3_SR, 0,
- 0, 13, BOOKE_PAGESZ_1G, 1),
-#endif
-};
-
-int num_tlb_entries = ARRAY_SIZE(tlb_table);
diff --git a/board/freescale/p1_p2_rdb/Kconfig b/board/freescale/p1_p2_rdb/Kconfig
new file mode 100644
index 0000000000..6d718b94f8
--- /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 0000000000..ad0a8589f4
--- /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/p1_p2_rdb.c b/board/freescale/p1_p2_rdb/p1_p2_rdb.c
index 3df557d6a3..aba4f534b8 100644
--- a/board/freescale/p1_p2_rdb/p1_p2_rdb.c
+++ b/board/freescale/p1_p2_rdb/p1_p2_rdb.c
@@ -128,7 +128,7 @@ int misc_init_r(void)
int board_early_init_r(void)
{
const unsigned int flashbase = CONFIG_SYS_FLASH_BASE;
- const u8 flash_esel = find_tlb_idx((void *)flashbase, 1);
+ int flash_esel = find_tlb_idx((void *)flashbase, 1);
volatile ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
unsigned int orig_bus = i2c_get_bus_num();
u8 i2c_data;
@@ -163,8 +163,14 @@ int board_early_init_r(void)
flush_dcache();
invalidate_icache();
- /* invalidate existing TLB entry for flash */
- disable_tlb(flash_esel);
+ if (flash_esel == -1) {
+ /* very unlikely unless something is messed up */
+ puts("Error: Could not find TLB for FLASH BASE\n");
+ flash_esel = 2; /* give our best effort to continue */
+ } else {
+ /* invalidate existing TLB entry for flash */
+ disable_tlb(flash_esel);
+ }
set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS,
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
diff --git a/board/freescale/p1_p2_rdb_pc/Kconfig b/board/freescale/p1_p2_rdb_pc/Kconfig
new file mode 100644
index 0000000000..01b89fa048
--- /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 0000000000..4d429fe9cf
--- /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_p2_rdb_pc/p1_p2_rdb_pc.c b/board/freescale/p1_p2_rdb_pc/p1_p2_rdb_pc.c
index 5f3d6fd28b..a6756c68f4 100644
--- a/board/freescale/p1_p2_rdb_pc/p1_p2_rdb_pc.c
+++ b/board/freescale/p1_p2_rdb_pc/p1_p2_rdb_pc.c
@@ -288,7 +288,7 @@ void pci_init_board(void)
int board_early_init_r(void)
{
const unsigned int flashbase = CONFIG_SYS_FLASH_BASE;
- const u8 flash_esel = find_tlb_idx((void *)flashbase, 1);
+ int flash_esel = find_tlb_idx((void *)flashbase, 1);
/*
* Remap Boot flash region to caching-inhibited
@@ -299,8 +299,14 @@ int board_early_init_r(void)
flush_dcache();
invalidate_icache();
- /* invalidate existing TLB entry for flash */
- disable_tlb(flash_esel);
+ if (flash_esel == -1) {
+ /* very unlikely unless something is messed up */
+ puts("Error: Could not find TLB for FLASH BASE\n");
+ flash_esel = 2; /* give our best effort to continue */
+ } else {
+ /* invalidate existing TLB entry for flash */
+ disable_tlb(flash_esel);
+ }
set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS, /* tlb, epn, rpn */
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,/* perms, wimge */
diff --git a/board/freescale/p1_twr/Kconfig b/board/freescale/p1_twr/Kconfig
new file mode 100644
index 0000000000..5fb47053c3
--- /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 0000000000..2d7d7e10c5
--- /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/p1_twr/p1_twr.c b/board/freescale/p1_twr/p1_twr.c
index 0e0d0587d7..a0a416ba17 100644
--- a/board/freescale/p1_twr/p1_twr.c
+++ b/board/freescale/p1_twr/p1_twr.c
@@ -155,7 +155,7 @@ void pci_init_board(void)
int board_early_init_r(void)
{
const unsigned int flashbase = CONFIG_SYS_FLASH_BASE;
- const u8 flash_esel = find_tlb_idx((void *)flashbase, 1);
+ int flash_esel = find_tlb_idx((void *)flashbase, 1);
/*
* Remap Boot flash region to caching-inhibited
@@ -166,8 +166,14 @@ int board_early_init_r(void)
flush_dcache();
invalidate_icache();
- /* invalidate existing TLB entry for flash */
- disable_tlb(flash_esel);
+ if (flash_esel == -1) {
+ /* very unlikely unless something is messed up */
+ puts("Error: Could not find TLB for FLASH BASE\n");
+ flash_esel = 2; /* give our best effort to continue */
+ } else {
+ /* invalidate existing TLB entry for flash */
+ disable_tlb(flash_esel);
+ }
set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS, /* tlb, epn, rpn */
MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, /* perms, wimge */
diff --git a/board/freescale/p2020come/Kconfig b/board/freescale/p2020come/Kconfig
new file mode 100644
index 0000000000..d4d7e13d59
--- /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 0000000000..ab3ef94583
--- /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 0000000000..29031d0d99
--- /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 0000000000..42cb18dc8b
--- /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/p2020ds/p2020ds.c b/board/freescale/p2020ds/p2020ds.c
index a0cf927038..b72fcffdd0 100644
--- a/board/freescale/p2020ds/p2020ds.c
+++ b/board/freescale/p2020ds/p2020ds.c
@@ -159,7 +159,7 @@ void pci_init_board(void)
int board_early_init_r(void)
{
const unsigned int flashbase = CONFIG_SYS_FLASH_BASE;
- const u8 flash_esel = find_tlb_idx((void *)flashbase, 1);
+ int flash_esel = find_tlb_idx((void *)flashbase, 1);
/*
* Remap Boot flash + PROMJET region to caching-inhibited
@@ -170,8 +170,14 @@ int board_early_init_r(void)
flush_dcache();
invalidate_icache();
- /* invalidate existing TLB entry for flash + promjet */
- disable_tlb(flash_esel);
+ if (flash_esel == -1) {
+ /* very unlikely unless something is messed up */
+ puts("Error: Could not find TLB for FLASH BASE\n");
+ flash_esel = 2; /* give our best effort to continue */
+ } else {
+ /* invalidate existing TLB entry for flash + promjet */
+ disable_tlb(flash_esel);
+ }
set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS,
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
diff --git a/board/freescale/p2041rdb/Kconfig b/board/freescale/p2041rdb/Kconfig
new file mode 100644
index 0000000000..b086b1b922
--- /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 0000000000..bb5bb83f30
--- /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/p2041rdb/p2041rdb.c b/board/freescale/p2041rdb/p2041rdb.c
index 8554512df6..a14b43b5a5 100644
--- a/board/freescale/p2041rdb/p2041rdb.c
+++ b/board/freescale/p2041rdb/p2041rdb.c
@@ -116,7 +116,7 @@ void board_config_lanes_mux(void)
int board_early_init_r(void)
{
const unsigned int flashbase = CONFIG_SYS_FLASH_BASE;
- const u8 flash_esel = find_tlb_idx((void *)flashbase, 1);
+ int flash_esel = find_tlb_idx((void *)flashbase, 1);
/*
* Remap Boot flash + PROMJET region to caching-inhibited
@@ -127,8 +127,14 @@ int board_early_init_r(void)
flush_dcache();
invalidate_icache();
- /* invalidate existing TLB entry for flash + promjet */
- disable_tlb(flash_esel);
+ if (flash_esel == -1) {
+ /* very unlikely unless something is messed up */
+ puts("Error: Could not find TLB for FLASH BASE\n");
+ flash_esel = 2; /* give our best effort to continue */
+ } else {
+ /* invalidate existing TLB entry for flash + promjet */
+ disable_tlb(flash_esel);
+ }
set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS,
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
diff --git a/board/freescale/qemu-ppce500/Kconfig b/board/freescale/qemu-ppce500/Kconfig
new file mode 100644
index 0000000000..314f6a1576
--- /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 0000000000..77d0a4a13c
--- /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 0000000000..c1c96f03a1
--- /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 0000000000..83f6b3ce3a
--- /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/t1040qds/eth.c b/board/freescale/t1040qds/eth.c
index 3077b4ae2c..1929bba20b 100644
--- a/board/freescale/t1040qds/eth.c
+++ b/board/freescale/t1040qds/eth.c
@@ -355,7 +355,9 @@ static void set_brdcfg9_for_gtx_clk(void)
{
u8 brdcfg9;
brdcfg9 = QIXIS_READ(brdcfg[9]);
- brdcfg9 |= (1 << 5);
+/* Initializing EPHY2 clock to RGMII mode */
+ brdcfg9 &= ~(BRDCFG9_EPHY2_MASK);
+ brdcfg9 |= (BRDCFG9_EPHY2_VAL);
QIXIS_WRITE(brdcfg[9], brdcfg9);
}
diff --git a/board/freescale/t1040qds/t1040qds.c b/board/freescale/t1040qds/t1040qds.c
index 0e83d172da..19af46e48f 100644
--- a/board/freescale/t1040qds/t1040qds.c
+++ b/board/freescale/t1040qds/t1040qds.c
@@ -119,7 +119,7 @@ int board_early_init_r(void)
{
#ifdef CONFIG_SYS_FLASH_BASE
const unsigned int flashbase = CONFIG_SYS_FLASH_BASE;
- const u8 flash_esel = find_tlb_idx((void *)flashbase, 1);
+ int flash_esel = find_tlb_idx((void *)flashbase, 1);
/*
* Remap Boot flash + PROMJET region to caching-inhibited
@@ -130,8 +130,14 @@ int board_early_init_r(void)
flush_dcache();
invalidate_icache();
- /* invalidate existing TLB entry for flash + promjet */
- disable_tlb(flash_esel);
+ if (flash_esel == -1) {
+ /* very unlikely unless something is messed up */
+ puts("Error: Could not find TLB for FLASH BASE\n");
+ flash_esel = 2; /* give our best effort to continue */
+ } else {
+ /* invalidate existing TLB entry for flash + promjet */
+ disable_tlb(flash_esel);
+ }
set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS,
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
diff --git a/board/freescale/t1040qds/t1040qds_qixis.h b/board/freescale/t1040qds/t1040qds_qixis.h
index 98d2d39e6d..cef8ad0bfa 100644
--- a/board/freescale/t1040qds/t1040qds_qixis.h
+++ b/board/freescale/t1040qds/t1040qds_qixis.h
@@ -17,6 +17,10 @@
#define BRDCFG5_IMX_MASK 0xC0
#define BRDCFG5_IMX_DIU 0x80
+/* BRDCFG9[2] controls EPHY2 Clock */
+#define BRDCFG9_EPHY2_MASK 0x20
+#define BRDCFG9_EPHY2_VAL 0x00
+
/* BRDCFG15[3] controls LCD Panel Powerdown*/
#define BRDCFG15_LCDPD_MASK 0x10
#define BRDCFG15_LCDPD_ENABLED 0x00
diff --git a/board/freescale/t104xrdb/Kconfig b/board/freescale/t104xrdb/Kconfig
new file mode 100644
index 0000000000..d0fd3de0c4
--- /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 0000000000..364b0a961e
--- /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/t104xrdb/t104xrdb.c b/board/freescale/t104xrdb/t104xrdb.c
index a5e5fffac4..ddb669fb06 100644
--- a/board/freescale/t104xrdb/t104xrdb.c
+++ b/board/freescale/t104xrdb/t104xrdb.c
@@ -48,7 +48,7 @@ int board_early_init_r(void)
{
#ifdef CONFIG_SYS_FLASH_BASE
const unsigned int flashbase = CONFIG_SYS_FLASH_BASE;
- const u8 flash_esel = find_tlb_idx((void *)flashbase, 1);
+ int flash_esel = find_tlb_idx((void *)flashbase, 1);
/*
* Remap Boot flash region to caching-inhibited
@@ -59,8 +59,14 @@ int board_early_init_r(void)
flush_dcache();
invalidate_icache();
- /* invalidate existing TLB entry for flash */
- disable_tlb(flash_esel);
+ if (flash_esel == -1) {
+ /* very unlikely unless something is messed up */
+ puts("Error: Could not find TLB for FLASH BASE\n");
+ flash_esel = 2; /* give our best effort to continue */
+ } else {
+ /* invalidate existing TLB entry for flash */
+ disable_tlb(flash_esel);
+ }
set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS,
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
diff --git a/board/freescale/t208xqds/Kconfig b/board/freescale/t208xqds/Kconfig
new file mode 100644
index 0000000000..3d0c6ab88b
--- /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 0000000000..643926f4b0
--- /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/t208xqds/t208xqds.c b/board/freescale/t208xqds/t208xqds.c
index 135343949e..fc6d256111 100644
--- a/board/freescale/t208xqds/t208xqds.c
+++ b/board/freescale/t208xqds/t208xqds.c
@@ -326,7 +326,7 @@ int brd_mux_lane_to_slot(void)
int board_early_init_r(void)
{
const unsigned int flashbase = CONFIG_SYS_FLASH_BASE;
- const u8 flash_esel = find_tlb_idx((void *)flashbase, 1);
+ int flash_esel = find_tlb_idx((void *)flashbase, 1);
/*
* Remap Boot flash + PROMJET region to caching-inhibited
@@ -337,8 +337,14 @@ int board_early_init_r(void)
flush_dcache();
invalidate_icache();
- /* invalidate existing TLB entry for flash + promjet */
- disable_tlb(flash_esel);
+ if (flash_esel == -1) {
+ /* very unlikely unless something is messed up */
+ puts("Error: Could not find TLB for FLASH BASE\n");
+ flash_esel = 2; /* give our best effort to continue */
+ } else {
+ /* invalidate existing TLB entry for flash + promjet */
+ disable_tlb(flash_esel);
+ }
set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS,
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
diff --git a/board/freescale/t208xrdb/Kconfig b/board/freescale/t208xrdb/Kconfig
new file mode 100644
index 0000000000..f8d2c3cf1d
--- /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 0000000000..598714356c
--- /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/t208xrdb/t208xrdb.c b/board/freescale/t208xrdb/t208xrdb.c
index 265c1f97dd..be99fb806d 100644
--- a/board/freescale/t208xrdb/t208xrdb.c
+++ b/board/freescale/t208xrdb/t208xrdb.c
@@ -58,7 +58,7 @@ int checkboard(void)
int board_early_init_r(void)
{
const unsigned int flashbase = CONFIG_SYS_FLASH_BASE;
- const u8 flash_esel = find_tlb_idx((void *)flashbase, 1);
+ int flash_esel = find_tlb_idx((void *)flashbase, 1);
/*
* Remap Boot flash + PROMJET region to caching-inhibited
* so that flash can be erased properly.
@@ -67,9 +67,14 @@ int board_early_init_r(void)
/* Flush d-cache and invalidate i-cache of any FLASH data */
flush_dcache();
invalidate_icache();
-
- /* invalidate existing TLB entry for flash + promjet */
- disable_tlb(flash_esel);
+ if (flash_esel == -1) {
+ /* very unlikely unless something is messed up */
+ puts("Error: Could not find TLB for FLASH BASE\n");
+ flash_esel = 2; /* give our best effort to continue */
+ } else {
+ /* invalidate existing TLB entry for flash + promjet */
+ disable_tlb(flash_esel);
+ }
set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS,
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
diff --git a/board/freescale/t4qds/Kconfig b/board/freescale/t4qds/Kconfig
new file mode 100644
index 0000000000..f4b0ba2322
--- /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 0000000000..da796bd5b6
--- /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/t4qds/t4240emu.c b/board/freescale/t4qds/t4240emu.c
index 7a610367da..479e124a39 100644
--- a/board/freescale/t4qds/t4240emu.c
+++ b/board/freescale/t4qds/t4240emu.c
@@ -32,7 +32,7 @@ int checkboard(void)
int board_early_init_r(void)
{
const unsigned int flashbase = CONFIG_SYS_FLASH_BASE;
- const u8 flash_esel = find_tlb_idx((void *)flashbase, 1);
+ int flash_esel = find_tlb_idx((void *)flashbase, 1);
/*
* Remap Boot flash + PROMJET region to caching-inhibited
@@ -43,8 +43,14 @@ int board_early_init_r(void)
flush_dcache();
invalidate_icache();
- /* invalidate existing TLB entry for flash */
- disable_tlb(flash_esel);
+ if (flash_esel == -1) {
+ /* very unlikely unless something is messed up */
+ puts("Error: Could not find TLB for FLASH BASE\n");
+ flash_esel = 2; /* give our best effort to continue */
+ } else {
+ /* invalidate existing TLB entry for flash */
+ disable_tlb(flash_esel);
+ }
set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS,
MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
diff --git a/board/freescale/t4qds/t4240qds.c b/board/freescale/t4qds/t4240qds.c
index fe1bc7f08d..6205fea35e 100644
--- a/board/freescale/t4qds/t4240qds.c
+++ b/board/freescale/t4qds/t4240qds.c
@@ -528,7 +528,7 @@ int config_backside_crossbar_mux(void)
int board_early_init_r(void)
{
const unsigned int flashbase = CONFIG_SYS_FLASH_BASE;
- const u8 flash_esel = find_tlb_idx((void *)flashbase, 1);
+ int flash_esel = find_tlb_idx((void *)flashbase, 1);
/*
* Remap Boot flash + PROMJET region to caching-inhibited
@@ -539,8 +539,14 @@ int board_early_init_r(void)
flush_dcache();
invalidate_icache();
- /* invalidate existing TLB entry for flash + promjet */
- disable_tlb(flash_esel);
+ if (flash_esel == -1) {
+ /* very unlikely unless something is messed up */
+ puts("Error: Could not find TLB for FLASH BASE\n");
+ flash_esel = 2; /* give our best effort to continue */
+ } else {
+ /* invalidate existing TLB entry for flash + promjet */
+ disable_tlb(flash_esel);
+ }
set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS,
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
@@ -638,9 +644,10 @@ unsigned long get_board_ddr_clk(void)
int misc_init_r(void)
{
u8 sw;
- serdes_corenet_t *srds_regs =
- (void *)CONFIG_SYS_FSL_CORENET_SERDES_ADDR;
+ void *srds_base = (void *)CONFIG_SYS_FSL_CORENET_SERDES_ADDR;
+ serdes_corenet_t *srds_regs;
u32 actual[MAX_SERDES];
+ u32 pllcr0, expected;
unsigned int i;
sw = QIXIS_READ(brdcfg[2]);
@@ -663,8 +670,9 @@ int misc_init_r(void)
}
for (i = 0; i < MAX_SERDES; i++) {
- u32 pllcr0 = srds_regs->bank[i].pllcr0;
- u32 expected = pllcr0 & SRDS_PLLCR0_RFCK_SEL_MASK;
+ srds_regs = srds_base + i * 0x1000;
+ pllcr0 = srds_regs->bank[0].pllcr0;
+ expected = pllcr0 & SRDS_PLLCR0_RFCK_SEL_MASK;
if (expected != actual[i]) {
printf("Warning: SERDES%u expects reference clock %sMHz, but actual is %sMHz\n",
i + 1, serdes_clock_to_string(expected),
diff --git a/board/freescale/t4rdb/Kconfig b/board/freescale/t4rdb/Kconfig
new file mode 100644
index 0000000000..07e3c0df0e
--- /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 0000000000..845c1b6d66
--- /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/t4rdb/t4240rdb.c b/board/freescale/t4rdb/t4240rdb.c
index 5448c86c48..afef7e93d0 100644
--- a/board/freescale/t4rdb/t4240rdb.c
+++ b/board/freescale/t4rdb/t4240rdb.c
@@ -39,7 +39,7 @@ int checkboard(void)
int board_early_init_r(void)
{
const unsigned int flashbase = CONFIG_SYS_FLASH_BASE;
- const u8 flash_esel = find_tlb_idx((void *)flashbase, 1);
+ int flash_esel = find_tlb_idx((void *)flashbase, 1);
/*
* Remap Boot flash + PROMJET region to caching-inhibited
@@ -50,8 +50,14 @@ int board_early_init_r(void)
flush_dcache();
invalidate_icache();
- /* invalidate existing TLB entry for flash + promjet */
- disable_tlb(flash_esel);
+ if (flash_esel == -1) {
+ /* very unlikely unless something is messed up */
+ puts("Error: Could not find TLB for FLASH BASE\n");
+ flash_esel = 2; /* give our best effort to continue */
+ } else {
+ /* invalidate existing TLB entry for flash + promjet */
+ disable_tlb(flash_esel);
+ }
set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS,
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
diff --git a/board/freescale/vf610twr/Kconfig b/board/freescale/vf610twr/Kconfig
new file mode 100644
index 0000000000..56bc52ad5c
--- /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 0000000000..56a09c9ad9
--- /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 0000000000..dc3deca530
--- /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 0000000000..9af5f7871b
--- /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 0000000000..eae4886746
--- /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 0000000000..8171b103b5
--- /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 0000000000..d5a2eb4a17
--- /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 0000000000..493c31ecab
--- /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 0000000000..e742ea8706
--- /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 0000000000..151bef1329
--- /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 0000000000..6d9f107e4e
--- /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 0000000000..187f32334d
--- /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 0000000000..10f51e1cf8
--- /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 0000000000..acb863c2f7
--- /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 0000000000..8dd2d27abd
--- /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 0000000000..6da9b784cf
--- /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 0000000000..04f079cf2b
--- /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 0000000000..f070132f37
--- /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 0000000000..a9ff70a761
--- /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 0000000000..b44fb4dc4b
--- /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 0000000000..8a5d3f51ae
--- /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 0000000000..14038804b8
--- /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 0000000000..b4fb9753fd
--- /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 0000000000..395b1ac102
--- /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 0000000000..af8334e96c
--- /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 0000000000..e4d40f8b98
--- /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 0000000000..5a05c1c7fe
--- /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 0000000000..cd8d1c6f8e
--- /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 0000000000..7be439c6f2
--- /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 0000000000..c99d507364
--- /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 0000000000..277ed7d193
--- /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 0000000000..5119fbb142
--- /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 0000000000..438f7cc950
--- /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 0000000000..c5d3da3653
--- /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 0000000000..adfddebff1
--- /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 0000000000..a85df77982
--- /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 0000000000..d1b5c660b8
--- /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 0000000000..87cd4e670c
--- /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 0000000000..290b428b68
--- /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 0000000000..ae860ecf1a
--- /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/gw8260/Kconfig b/board/gw8260/Kconfig
new file mode 100644
index 0000000000..ce8d1b0fee
--- /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 0000000000..5268d196bf
--- /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 0000000000..f36b4d9de0
--- /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 0000000000..b66ff515cf
--- /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 0000000000..549c18b1b7
--- /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 0000000000..2f582be8f3
--- /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 0000000000..9d8065029d
--- /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 0000000000..a596dad890
--- /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 0000000000..1c324908cc
--- /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 0000000000..69ddeddd60
--- /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 0000000000..1e2c679649
--- /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 0000000000..c5f88733d2
--- /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 0000000000..106a837604
--- /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 0000000000..e27fe974c8
--- /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 0000000000..5183afff98
--- /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 0000000000..dfd0f9095f
--- /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 0000000000..d409cd7c67
--- /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 0000000000..02e6c049d4
--- /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 0000000000..6d58984ad7
--- /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 0000000000..90a82e3fe4
--- /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 0000000000..d2a7a0adae
--- /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 0000000000..7fe16d15b7
--- /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 0000000000..a80af9e8aa
--- /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 0000000000..3173cdf01f
--- /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 0000000000..b38877b0ce
--- /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 0000000000..c5b2f9ed0a
--- /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 0000000000..0772d57b75
--- /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 0000000000..8fd74e516e
--- /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 0000000000..53e9c0f849
--- /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 0000000000..002f89e729
--- /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 0000000000..8e5cab1a44
--- /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 0000000000..a0b3284992
--- /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 0000000000..c74f4a60cd
--- /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 0000000000..efd5e77c81
--- /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 0000000000..da3bcc3a83
--- /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 0000000000..db8bd0a546
--- /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 0000000000..44bca351ff
--- /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 0000000000..246b2d4d69
--- /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 0000000000..0b14bc0e58
--- /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 0000000000..c83ebcdab9
--- /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 0000000000..8ac21d2999
--- /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 0000000000..167cf074b9
--- /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 0000000000..95abe63d80
--- /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 0000000000..278072bcd9
--- /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 0000000000..df1ce8def9
--- /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 0000000000..36d5690bc0
--- /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 0000000000..a2a1f86354
--- /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 0000000000..060f8a5a22
--- /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 0000000000..1ce42f34d6
--- /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 0000000000..ddf68146d8
--- /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 0000000000..cdb67ed175
--- /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 0000000000..d162d7792e
--- /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 0000000000..c9f2969cb8
--- /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 0000000000..fe4a8cd445
--- /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 0000000000..ab3da79fbf
--- /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 0000000000..6a9082ce0c
--- /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 0000000000..345d3b6013
--- /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 0000000000..c77d745720
--- /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 0000000000..bb265f2079
--- /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 0000000000..818a5a0be4
--- /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 0000000000..36e43b7974
--- /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 0000000000..5a79a616cc
--- /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 0000000000..546491b67d
--- /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 0000000000..39b2b1db35
--- /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 0000000000..095b1a52a7
--- /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 0000000000..2defe342ff
--- /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 0000000000..c29032a50a
--- /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 0000000000..50e06b261c
--- /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 0000000000..934c45d1fc
--- /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 0000000000..cee7e0898f
--- /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 0000000000..dec46268c6
--- /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 0000000000..079c803677
--- /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 0000000000..0236f69f9e
--- /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 0000000000..93b6bad0a8
--- /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/keymile/kmp204x/kmp204x.c b/board/keymile/kmp204x/kmp204x.c
index 6bc8eb85ea..cd083795b8 100644
--- a/board/keymile/kmp204x/kmp204x.c
+++ b/board/keymile/kmp204x/kmp204x.c
@@ -80,14 +80,29 @@ int get_scl(void)
#define ZL30158_RST 8
#define BFTIC4_RST 0
+#define RSTRQSR1_WDT_RR 0x00200000
+#define RSTRQSR1_SW_RR 0x00100000
int board_early_init_f(void)
{
ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+ bool cpuwd_flag = false;
+
+ /* configure mode for uP reset request */
+ qrio_uprstreq(UPREQ_CORE_RST);
/* board only uses the DDR_MCK0, so disable the DDR_MCK1/2/3 */
setbits_be32(&gur->ddrclkdr, 0x001f000f);
+ /* set reset reason according CPU register */
+ if ((gur->rstrqsr1 & (RSTRQSR1_WDT_RR | RSTRQSR1_SW_RR)) ==
+ RSTRQSR1_WDT_RR)
+ cpuwd_flag = true;
+
+ qrio_cpuwd_flag(cpuwd_flag);
+ /* clear CPU bits by writing 1 */
+ setbits_be32(&gur->rstrqsr1, RSTRQSR1_WDT_RR | RSTRQSR1_SW_RR);
+
/* set the BFTIC's prstcfg to reset at power-up and unit reset only */
qrio_prstcfg(BFTIC4_RST, PRSTCFG_POWUP_UNIT_RST);
/* and enable WD on it */
diff --git a/board/keymile/kmp204x/kmp204x.h b/board/keymile/kmp204x/kmp204x.h
index afede994f1..e90e8abd43 100644
--- a/board/keymile/kmp204x/kmp204x.h
+++ b/board/keymile/kmp204x/kmp204x.h
@@ -24,5 +24,12 @@ void qrio_wdmask(u8 bit, bool wden);
void qrio_prstcfg(u8 bit, u8 mode);
void qrio_set_leds(void);
void qrio_enable_app_buffer(void);
+void qrio_cpuwd_flag(bool flag);
+int qrio_reset_reason(void);
+
+#define UPREQ_UNIT_RST 0x0
+#define UPREQ_CORE_RST 0x1
+
+void qrio_uprstreq(u8 mode);
void pci_of_setup(void *blob, bd_t *bd);
diff --git a/board/keymile/kmp204x/qrio.c b/board/keymile/kmp204x/qrio.c
index b6ba93ada8..edf3bf11a8 100644
--- a/board/keymile/kmp204x/qrio.c
+++ b/board/keymile/kmp204x/qrio.c
@@ -173,3 +173,35 @@ void qrio_enable_app_buffer(void)
ctrll |= (CTRLL_WRB_BUFENA);
out_8(qrio_base + CTRLL_OFF, ctrll);
}
+
+#define REASON1_OFF 0x12
+#define REASON1_CPUWD 0x01
+
+void qrio_cpuwd_flag(bool flag)
+{
+ u8 reason1;
+ void __iomem *qrio_base = (void *)CONFIG_SYS_QRIO_BASE;
+ reason1 = in_8(qrio_base + REASON1_OFF);
+ if (flag)
+ reason1 |= REASON1_CPUWD;
+ else
+ reason1 &= ~REASON1_CPUWD;
+ out_8(qrio_base + REASON1_OFF, reason1);
+}
+
+#define RSTCFG_OFF 0x11
+
+void qrio_uprstreq(u8 mode)
+{
+ u32 rstcfg;
+ void __iomem *qrio_base = (void *)CONFIG_SYS_QRIO_BASE;
+
+ rstcfg = in_8(qrio_base + RSTCFG_OFF);
+
+ if (mode & UPREQ_CORE_RST)
+ rstcfg |= UPREQ_CORE_RST;
+ else
+ rstcfg &= ~UPREQ_CORE_RST;
+
+ out_8(qrio_base + RSTCFG_OFF, rstcfg);
+}
diff --git a/board/kmc/kzm9g/Kconfig b/board/kmc/kzm9g/Kconfig
new file mode 100644
index 0000000000..2d401736f2
--- /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 0000000000..411efd1e31
--- /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 0000000000..c23061c00e
--- /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 0000000000..8b968461f2
--- /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 0000000000..bac89aa55e
--- /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 0000000000..25d90cfa6f
--- /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 0000000000..e04b919e66
--- /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 0000000000..85159e4692
--- /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 0000000000..9bc5ae58f2
--- /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 0000000000..7f03ac12ee
--- /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 0000000000..f107267217
--- /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 0000000000..a7b22ac049
--- /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 0000000000..ae3343bb39
--- /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 0000000000..98cc7bd15c
--- /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 0000000000..daaefa6d86
--- /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 0000000000..ffe2201b28
--- /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 0000000000..3199130604
--- /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 0000000000..338b965deb
--- /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 0000000000..a0c7587ef3
--- /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 0000000000..763ce229f2
--- /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 0000000000..79cf08e97f
--- /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 0000000000..7402ab6758
--- /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 0000000000..2f576dde92
--- /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 0000000000..bdfdc01861
--- /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 0000000000..4be0722b2e
--- /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 0000000000..45a276408b
--- /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 0000000000..a41a780435
--- /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 0000000000..260471ce92
--- /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 0000000000..07cfcc63a7
--- /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 0000000000..0fc7b85838
--- /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 0000000000..5b292dca4f
--- /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 0000000000..22be98186b
--- /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 0000000000..ab1fe65014
--- /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 0000000000..9e76b579fc
--- /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 0000000000..c5998b36b3
--- /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 0000000000..4f7ca503fc
--- /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 0000000000..d89c1e3b9d
--- /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 0000000000..2f9a1532cb
--- /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 0000000000..1627a36026
--- /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 0000000000..9659730fb4
--- /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 0000000000..c4e8cf168c
--- /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 0000000000..3d02bc64bf
--- /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 0000000000..76c5f7cc9e
--- /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 0000000000..4b825d3285
--- /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 0000000000..146c3b79a8
--- /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 0000000000..6cb51dd3cb
--- /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 0000000000..9795e55b1d
--- /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 0000000000..a87ceeeb73
--- /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 0000000000..c439b1468c
--- /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 0000000000..f3af072243
--- /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 0000000000..c8ee0438e7
--- /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 0000000000..10a97cc4eb
--- /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 0000000000..6e84bdf3d0
--- /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 0000000000..80d8de7711
--- /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/mip405/Kconfig b/board/mpl/mip405/Kconfig
new file mode 100644
index 0000000000..6705260d3c
--- /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 0000000000..b323e5ab22
--- /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 0000000000..b902cbd273
--- /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 0000000000..f7c1bd800b
--- /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/pip405/Kconfig b/board/mpl/pip405/Kconfig
new file mode 100644
index 0000000000..1e1295b0ce
--- /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 0000000000..9b3b974602
--- /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 0000000000..91246be71b
--- /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 0000000000..3817436d55
--- /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 0000000000..93bec5991f
--- /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 0000000000..beedf8dda6
--- /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 0000000000..8873062a4d
--- /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 0000000000..96a80f4e31
--- /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 0000000000..c5b5b4f3c4
--- /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 0000000000..61614baece
--- /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 0000000000..0c9d88fd9b
--- /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 0000000000..e23a53247c
--- /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 0000000000..982d32f083
--- /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 0000000000..cfb598360d
--- /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 0000000000..d242d568eb
--- /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 0000000000..b8f57614bb
--- /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 0000000000..ea33d16298
--- /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 0000000000..03a1fe7f04
--- /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 0000000000..a70bcbe099
--- /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 0000000000..a809ba5a5c
--- /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 0000000000..d177b705ba
--- /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 0000000000..03130583fc
--- /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 0000000000..41d0daae89
--- /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 0000000000..8bdddc1d83
--- /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/nvidia/beaver/Kconfig b/board/nvidia/beaver/Kconfig
new file mode 100644
index 0000000000..f05267611f
--- /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 0000000000..26bcacc8ec
--- /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 0000000000..9853114dba
--- /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 0000000000..d3c3e368c1
--- /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 0000000000..33b78dbf10
--- /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 0000000000..fe86375ca9
--- /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 0000000000..2a3bde4029
--- /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 0000000000..f3508edc3f
--- /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 0000000000..22b4c69235
--- /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 0000000000..a5c687d149
--- /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 0000000000..39c65b5d38
--- /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 0000000000..7926ca19a8
--- /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 0000000000..84a7160ab6
--- /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 0000000000..221df654d7
--- /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 0000000000..59e85c490f
--- /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 0000000000..285b84dbdc
--- /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 0000000000..f025413c27
--- /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 0000000000..66e2c8d082
--- /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 0000000000..07b328487d
--- /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 0000000000..25f4a10e9a
--- /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 0000000000..923af8a364
--- /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 0000000000..f6e37a24b3
--- /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 0000000000..71a8246c07
--- /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 0000000000..c8dbc742e2
--- /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 0000000000..1d4a26187d
--- /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 0000000000..8f089e87f8
--- /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 0000000000..bed99b6e8d
--- /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 0000000000..7d21b7b3eb
--- /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 0000000000..86fb63b5d1
--- /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 0000000000..57b6a22e49
--- /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 0000000000..4df6c6368a
--- /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 0000000000..bdc034ed79
--- /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 0000000000..a36c0c8699
--- /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 0000000000..e12351735c
--- /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 0000000000..0ad3f2364e
--- /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 0000000000..6c5c2bb364
--- /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 0000000000..7e69fd34b7
--- /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 0000000000..6eccc854f9
--- /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 0000000000..e7a8985119
--- /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 0000000000..5c99f59e8f
--- /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 0000000000..6eea7e8ea5
--- /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 0000000000..4e2ab0d64e
--- /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 0000000000..e7104455ac
--- /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 0000000000..18ea636a83
--- /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 0000000000..d32f857e91
--- /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 0000000000..7b255bc81b
--- /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 0000000000..f1de16a689
--- /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 0000000000..41df4c9792
--- /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 0000000000..20f6b34f67
--- /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 0000000000..767a84da7a
--- /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 0000000000..e4fb601d14
--- /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 0000000000..853c0d59c8
--- /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 0000000000..a28ab98837
--- /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 0000000000..5b21aa7042
--- /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 0000000000..e2e8793c94
--- /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 0000000000..768d0921a7
--- /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 0000000000..2d80cd4d60
--- /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 0000000000..23fdbc7a76
--- /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 0000000000..6e99fc7a68
--- /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 0000000000..31baabb67e
--- /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 0000000000..89dcba0556
--- /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 0000000000..e60fdb64aa
--- /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 0000000000..a0eabe1c8d
--- /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 0000000000..68fd1a98a0
--- /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 0000000000..d722f31e2d
--- /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 0000000000..f1f10e9193
--- /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 0000000000..75f6cd1e52
--- /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 0000000000..32b901ab9c
--- /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 0000000000..e231f2806f
--- /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 0000000000..24d723602c
--- /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 0000000000..0ca816d07d
--- /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 0000000000..079949a92a
--- /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 0000000000..ea4614fbbf
--- /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 0000000000..a67ab0cf8a
--- /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 0000000000..1e667c47fe
--- /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 0000000000..423aa0cf25
--- /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 0000000000..6e99c916af
--- /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 0000000000..14f39486a3
--- /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 0000000000..d72a4537b6
--- /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 0000000000..9368b0525e
--- /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 0000000000..d317025a76
--- /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 0000000000..6ec140b225
--- /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/ap325rxa/Kconfig b/board/renesas/ap325rxa/Kconfig
new file mode 100644
index 0000000000..ac1e9ef76e
--- /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 0000000000..bdc49c5ec9
--- /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 0000000000..d62389e33a
--- /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 0000000000..439b528de9
--- /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 0000000000..0def847fe4
--- /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 0000000000..5267b9fadf
--- /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 0000000000..e88f4f630a
--- /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 0000000000..a09868614a
--- /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 0000000000..2eb1de2f07
--- /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 0000000000..c169ad7ecc
--- /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 0000000000..d674d77276
--- /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 0000000000..58877c509e
--- /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 0000000000..a862f5947f
--- /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 0000000000..56ec21fd32
--- /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 0000000000..61e9913f36
--- /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 0000000000..18d36634cf
--- /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 0000000000..a32d3ca788
--- /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 0000000000..f6202b70d9
--- /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 0000000000..c126fcbadd
--- /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 0000000000..d3c77c3c14
--- /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 0000000000..12e52b48ca
--- /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 0000000000..8910669002
--- /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 0000000000..a1f4cd03ef
--- /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 0000000000..03e6c8cdc4
--- /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 0000000000..a0e3265fcb
--- /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 0000000000..bbdd6d0812
--- /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 0000000000..fbc11af7cc
--- /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 0000000000..6ee8f9f87b
--- /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 0000000000..8939f7d73f
--- /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 0000000000..0d99de68d7
--- /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 0000000000..1cb9149761
--- /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 0000000000..a09b6c0734
--- /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 0000000000..292ccd6905
--- /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 0000000000..f26e82acee
--- /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 0000000000..e60e9aaef9
--- /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 0000000000..255a357fa9
--- /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 0000000000..f716a911f0
--- /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 0000000000..c2c8ee30e7
--- /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 0000000000..c3af0ecf2b
--- /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 0000000000..0a01a076a3
--- /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 0000000000..0be535e49a
--- /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 0000000000..248ec3cc0c
--- /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 0000000000..f52de83e25
--- /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 0000000000..8bf373e05d
--- /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 0000000000..e921c0986c
--- /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 0000000000..12a25e8660
--- /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 0000000000..edebbdeabb
--- /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 0000000000..8a2a4aa63c
--- /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 0000000000..052c2754f0
--- /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 0000000000..c8241a82f5
--- /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 0000000000..9c2b4da71c
--- /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 0000000000..39949e4dc7
--- /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 0000000000..e467092b5b
--- /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 0000000000..1e058cb504
--- /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 0000000000..040413ee14
--- /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 0000000000..1b219b4cfe
--- /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 0000000000..a82fdfb4f9
--- /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 0000000000..70183002f6
--- /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 0000000000..082168fb4f
--- /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 0000000000..676067813b
--- /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 0000000000..10d88a28a6
--- /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 0000000000..d4aaea58af
--- /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 0000000000..4c29ae7b59
--- /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 0000000000..be2affc79d
--- /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 0000000000..f5734ba218
--- /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 0000000000..eddbfd8c9a
--- /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 0000000000..ccfd399708
--- /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 0000000000..3cc99de214
--- /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 0000000000..f28c309e0d
--- /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 0000000000..77082bfbcf
--- /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 0000000000..dbb4451ceb
--- /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 0000000000..5b851f8bab
--- /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 0000000000..af95c1dd0d
--- /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 0000000000..5223d3d667
--- /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 0000000000..ba1f2475ea
--- /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 0000000000..7f77bca186
--- /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 0000000000..a50b541ffe
--- /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 0000000000..74694be907
--- /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 0000000000..b86c6e6012
--- /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 0000000000..040d055bb6
--- /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 0000000000..0917266afd
--- /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 0000000000..30071ed74c
--- /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 0000000000..74849cdfaf
--- /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 0000000000..cb9fb9fa2a
--- /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 0000000000..5dee37bdf7
--- /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 0000000000..e24364cab5
--- /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 0000000000..59176aae57
--- /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 0000000000..c6dac1c0c7
--- /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 0000000000..f6b68ca400
--- /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 0000000000..db695378ce
--- /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 0000000000..fa734c9c11
--- /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 0000000000..c4d9e7ef1b
--- /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 0000000000..8c1b77059b
--- /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 0000000000..3ef14c6129
--- /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 0000000000..74e3518e0d
--- /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 0000000000..abf86b1bdd
--- /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 0000000000..14ef7750c5
--- /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 0000000000..2c1b995cde
--- /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 0000000000..eedb409a44
--- /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 0000000000..06abd9d365
--- /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 0000000000..fc3e11dff0
--- /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 0000000000..a412347666
--- /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 0000000000..c0c062a8bd
--- /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 0000000000..4845cba28f
--- /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 0000000000..7ed9423ece
--- /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 0000000000..7e49e34253
--- /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 0000000000..15164fe3a3
--- /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 0000000000..de7104029a
--- /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 0000000000..3a7e610cb5
--- /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 0000000000..4cf6baf08d
--- /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 0000000000..414becacc1
--- /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 0000000000..d62f9e7bec
--- /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 0000000000..a978fdd9f7
--- /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 0000000000..a9245591bf
--- /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 0000000000..bff6824945
--- /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 0000000000..b5ead0fcfa
--- /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 0000000000..132fc524ba
--- /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 0000000000..bbcfdafc54
--- /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 0000000000..54e7921ae1
--- /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 0000000000..ec3f880dea
--- /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 0000000000..72c3a8d903
--- /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 0000000000..aac2940f78
--- /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 0000000000..6f485d465d
--- /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 0000000000..06dd8bef8b
--- /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 0000000000..f56adf0cf5
--- /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 0000000000..c444cff759
--- /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 0000000000..5ea36b225d
--- /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 0000000000..b06b5e0548
--- /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 0000000000..b0b1804c50
--- /dev/null
+++ b/board/sunxi/MAINTAINERS
@@ -0,0 +1,34 @@
+SUNXI BOARD
+M: Hans de Goede <hdegoede@redhat.com>
+S: Maintained
+F: board/sunxi/
+F: include/configs/sun4i.h
+F: configs/A10-OLinuXino-Lime_defconfig
+F: configs/ba10_tv_box_defconfig
+F: configs/Cubieboard_defconfig
+F: configs/Mele_A1000_defconfig
+F: configs/Mele_A1000G_defconfig
+F: configs/Mini-X_defconfig
+F: configs/Mini-X-1Gb_defconfig
+F: include/configs/sun5i.h
+F: configs/A10s-OLinuXino-M_defconfig
+F: configs/A13-OLinuXino_defconfig
+F: configs/A13-OLinuXinoM_defconfig
+F: configs/Auxtek-T004_defconfig
+F: configs/r7-tv-dongle_defconfig
+F: include/configs/sun7i.h
+F: configs/A20-OLinuXino_MICRO_defconfig
+F: configs/Bananapi_defconfig
+F: configs/i12-tvbox_defconfig
+F: configs/Linksprite_pcDuino3_defconfig
+F: configs/qt840a_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 62acb8ff27..cf001e71fa 100644
--- a/board/sunxi/Makefile
+++ b/board/sunxi/Makefile
@@ -10,8 +10,24 @@
#
obj-y += board.o
obj-$(CONFIG_SUNXI_GMAC) += gmac.o
+obj-$(CONFIG_SUNXI_AHCI) += ahci.o
+obj-$(CONFIG_A10_OLINUXINO_L) += dram_a10_olinuxino_l.o
+obj-$(CONFIG_A10S_OLINUXINO_M) += dram_a10s_olinuxino_m.o
+obj-$(CONFIG_A13_OLINUXINO) += dram_a13_olinuxino.o
obj-$(CONFIG_A13_OLINUXINOM) += dram_a13_oli_micro.o
+obj-$(CONFIG_A20_OLINUXINO_M) += dram_sun7i_384_1024_iow16.o
+# This is not a typo, uses the same mem settings as the a10s-olinuxino-m
+obj-$(CONFIG_AUXTEK_T004) += dram_a10s_olinuxino_m.o
+obj-$(CONFIG_BA10_TV_BOX) += dram_sun4i_384_1024_iow8.o
+obj-$(CONFIG_BANANAPI) += dram_bananapi.o
obj-$(CONFIG_CUBIEBOARD) += dram_cubieboard.o
obj-$(CONFIG_CUBIEBOARD2) += dram_cubieboard2.o
obj-$(CONFIG_CUBIETRUCK) += dram_cubietruck.o
+obj-$(CONFIG_I12_TVBOX) += dram_sun7i_384_1024_iow16.o
+obj-$(CONFIG_MELE_A1000) += dram_sun4i_360_512.o
+obj-$(CONFIG_MELE_A1000G) += dram_sun4i_360_1024_iow8.o
+obj-$(CONFIG_MINI_X) += dram_sun4i_360_512.o
+obj-$(CONFIG_MINI_X_1GB) += dram_sun4i_360_1024_iow16.o
+obj-$(CONFIG_PCDUINO3) += dram_linksprite_pcduino3.o
+obj-$(CONFIG_QT840A) += dram_sun7i_384_512_busw16_iow16.o
obj-$(CONFIG_R7DONGLE) += dram_r7dongle.o
diff --git a/board/sunxi/ahci.c b/board/sunxi/ahci.c
new file mode 100644
index 0000000000..0c262eabb7
--- /dev/null
+++ b/board/sunxi/ahci.c
@@ -0,0 +1,84 @@
+#include <common.h>
+#include <ahci.h>
+#include <scsi.h>
+#include <errno.h>
+#include <asm/io.h>
+#include <asm/gpio.h>
+
+#define AHCI_PHYCS0R 0x00c0
+#define AHCI_PHYCS1R 0x00c4
+#define AHCI_PHYCS2R 0x00c8
+#define AHCI_RWCR 0x00fc
+
+/* This magic PHY initialisation was taken from the Allwinner releases
+ * and Linux driver, but is completely undocumented.
+ */
+static int sunxi_ahci_phy_init(u32 base)
+{
+ u8 *reg_base = (u8 *)base;
+ u32 reg_val;
+ int timeout;
+
+ writel(0, reg_base + AHCI_RWCR);
+ mdelay(5);
+
+ setbits_le32(reg_base + AHCI_PHYCS1R, 0x1 << 19);
+ clrsetbits_le32(reg_base + AHCI_PHYCS0R,
+ (0x7 << 24),
+ (0x5 << 24) | (0x1 << 23) | (0x1 << 18));
+ clrsetbits_le32(reg_base + AHCI_PHYCS1R,
+ (0x3 << 16) | (0x1f << 8) | (0x3 << 6),
+ (0x2 << 16) | (0x6 << 8) | (0x2 << 6));
+ setbits_le32(reg_base + AHCI_PHYCS1R, (0x1 << 28) | (0x1 << 15));
+ clrbits_le32(reg_base + AHCI_PHYCS1R, (0x1 << 19));
+ clrsetbits_le32(reg_base + AHCI_PHYCS0R, (0x7 << 20), (0x3 << 20));
+ clrsetbits_le32(reg_base + AHCI_PHYCS2R, (0x1f << 5), (0x19 << 5));
+ mdelay(5);
+
+ setbits_le32(reg_base + AHCI_PHYCS0R, (0x1 << 19));
+
+ timeout = 250; /* Power up takes approx 50 us */
+ for (;;) {
+ reg_val = readl(reg_base + AHCI_PHYCS0R) & (0x7 << 28);
+ if (reg_val == (0x2 << 28))
+ break;
+ if (--timeout == 0) {
+ printf("AHCI PHY power up failed.\n");
+ return -EIO;
+ }
+ udelay(1);
+ };
+
+ setbits_le32(reg_base + AHCI_PHYCS2R, (0x1 << 24));
+
+ timeout = 100; /* Calibration takes approx 10 us */
+ for (;;) {
+ reg_val = readl(reg_base + AHCI_PHYCS2R) & (0x1 << 24);
+ if (reg_val == 0x0)
+ break;
+ if (--timeout == 0) {
+ printf("AHCI PHY calibration failed.\n");
+ return -EIO;
+ }
+ udelay(1);
+ }
+
+ mdelay(15);
+
+ writel(0x7, reg_base + AHCI_RWCR);
+
+ return 0;
+}
+
+void scsi_init(void)
+{
+ printf("SUNXI SCSI INIT\n");
+#ifdef CONFIG_SATAPWR
+ gpio_direction_output(CONFIG_SATAPWR, 1);
+#endif
+
+ if (sunxi_ahci_phy_init(SUNXI_SATA_BASE) < 0)
+ return;
+
+ ahci_init(SUNXI_SATA_BASE);
+}
diff --git a/board/sunxi/dram_a10_olinuxino_l.c b/board/sunxi/dram_a10_olinuxino_l.c
new file mode 100644
index 0000000000..24a1bd9453
--- /dev/null
+++ b/board/sunxi/dram_a10_olinuxino_l.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 = 16,
+ .cas = 6,
+ .zq = 123,
+ .odt_en = 0,
+ .size = 512,
+ .tpr0 = 0x30926692,
+ .tpr1 = 0x1090,
+ .tpr2 = 0x1a0c8,
+ .tpr3 = 0,
+ .tpr4 = 0,
+ .tpr5 = 0,
+ .emr1 = 0x4,
+ .emr2 = 0,
+ .emr3 = 0,
+};
+
+unsigned long sunxi_dram_init(void)
+{
+ return dramc_init(&dram_para);
+}
diff --git a/board/sunxi/dram_a10s_olinuxino_m.c b/board/sunxi/dram_a10s_olinuxino_m.c
new file mode 100644
index 0000000000..8900539e7f
--- /dev/null
+++ b/board/sunxi/dram_a10s_olinuxino_m.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 = 432,
+ .type = 3,
+ .rank_num = 1,
+ .density = 4096,
+ .io_width = 16,
+ .bus_width = 16,
+ .cas = 9,
+ .zq = 123,
+ .odt_en = 0,
+ .size = 512,
+ .tpr0 = 0x42d899b7,
+ .tpr1 = 0xa090,
+ .tpr2 = 0x22a00,
+ .tpr3 = 0,
+ .tpr4 = 0,
+ .tpr5 = 0,
+ .emr1 = 0x4,
+ .emr2 = 0x10,
+ .emr3 = 0,
+};
+
+unsigned long sunxi_dram_init(void)
+{
+ return dramc_init(&dram_para);
+}
diff --git a/board/sunxi/dram_a13_olinuxino.c b/board/sunxi/dram_a13_olinuxino.c
new file mode 100644
index 0000000000..ca96260250
--- /dev/null
+++ b/board/sunxi/dram_a13_olinuxino.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 = 408,
+ .type = 3,
+ .rank_num = 1,
+ .density = 2048,
+ .io_width = 8,
+ .bus_width = 16,
+ .cas = 9,
+ .zq = 123,
+ .odt_en = 0,
+ .size = 512,
+ .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_bananapi.c b/board/sunxi/dram_bananapi.c
new file mode 100644
index 0000000000..0ed7943043
--- /dev/null
+++ b/board/sunxi/dram_bananapi.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 = 432,
+ .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_linksprite_pcduino3.c b/board/sunxi/dram_linksprite_pcduino3.c
new file mode 100644
index 0000000000..9cc6e19ee5
--- /dev/null
+++ b/board/sunxi/dram_linksprite_pcduino3.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 = 0x7a,
+ .odt_en = 0,
+ .size = 1024,
+ .tpr0 = 0x42d899b7,
+ .tpr1 = 0xa090,
+ .tpr2 = 0x22a00,
+ .tpr3 = 0,
+ .tpr4 = 0,
+ .tpr5 = 0,
+ .emr1 = 0x4,
+ .emr2 = 0x10,
+ .emr3 = 0x0,
+};
+
+unsigned long sunxi_dram_init(void)
+{
+ return dramc_init(&dram_para);
+}
diff --git a/board/sunxi/dram_sun4i_360_1024_iow16.c b/board/sunxi/dram_sun4i_360_1024_iow16.c
new file mode 100644
index 0000000000..376371330d
--- /dev/null
+++ b/board/sunxi/dram_sun4i_360_1024_iow16.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 = 360,
+ .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_sun4i_360_1024_iow8.c b/board/sunxi/dram_sun4i_360_1024_iow8.c
new file mode 100644
index 0000000000..2a5c9edd91
--- /dev/null
+++ b/board/sunxi/dram_sun4i_360_1024_iow8.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 = 360,
+ .type = 3,
+ .rank_num = 1,
+ .density = 2048,
+ .io_width = 8,
+ .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_sun4i_360_512.c b/board/sunxi/dram_sun4i_360_512.c
new file mode 100644
index 0000000000..48aa6e2d63
--- /dev/null
+++ b/board/sunxi/dram_sun4i_360_512.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 = 360,
+ .type = 3,
+ .rank_num = 1,
+ .density = 2048,
+ .io_width = 16,
+ .bus_width = 32,
+ .cas = 6,
+ .zq = 123,
+ .odt_en = 0,
+ .size = 512,
+ .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_sun4i_384_1024_iow8.c b/board/sunxi/dram_sun4i_384_1024_iow8.c
new file mode 100644
index 0000000000..b0fcc55654
--- /dev/null
+++ b/board/sunxi/dram_sun4i_384_1024_iow8.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 = 6,
+ .zq = 123,
+ .odt_en = 0,
+ .size = 1024,
+ .tpr0 = 0x30926692,
+ .tpr1 = 0x1090,
+ .tpr2 = 0x1a0c8,
+ .tpr3 = 0,
+ .tpr4 = 0,
+ .tpr5 = 0,
+ .emr1 = 0x4,
+ .emr2 = 0,
+ .emr3 = 0,
+};
+
+unsigned long sunxi_dram_init(void)
+{
+ return dramc_init(&dram_para);
+}
diff --git a/board/sunxi/dram_sun7i_384_1024_iow16.c b/board/sunxi/dram_sun7i_384_1024_iow16.c
new file mode 100644
index 0000000000..04e4b1e9b9
--- /dev/null
+++ b/board/sunxi/dram_sun7i_384_1024_iow16.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 = 4096,
+ .io_width = 16,
+ .bus_width = 32,
+ .cas = 9,
+ .zq = 0x7f,
+ .odt_en = 0,
+ .size = 1024,
+ .tpr0 = 0x42d899b7,
+ .tpr1 = 0xa090,
+ .tpr2 = 0x22a00,
+ .tpr3 = 0,
+ .tpr4 = 0,
+ .tpr5 = 0,
+ .emr1 = 0x4,
+ .emr2 = 0x10,
+ .emr3 = 0,
+};
+
+unsigned long sunxi_dram_init(void)
+{
+ return dramc_init(&dram_para);
+}
diff --git a/board/sunxi/dram_sun7i_384_512_busw16_iow16.c b/board/sunxi/dram_sun7i_384_512_busw16_iow16.c
new file mode 100644
index 0000000000..2e36011af5
--- /dev/null
+++ b/board/sunxi/dram_sun7i_384_512_busw16_iow16.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 = 4096,
+ .io_width = 16,
+ .bus_width = 16,
+ .cas = 9,
+ .zq = 0x7f,
+ .odt_en = 0,
+ .size = 512,
+ .tpr0 = 0x42d899b7,
+ .tpr1 = 0xa090,
+ .tpr2 = 0x22a00,
+ .tpr3 = 0,
+ .tpr4 = 0,
+ .tpr5 = 0,
+ .emr1 = 0x4,
+ .emr2 = 0x10,
+ .emr3 = 0,
+};
+
+unsigned long sunxi_dram_init(void)
+{
+ return dramc_init(&dram_para);
+}
diff --git a/board/svm_sc8xx/Kconfig b/board/svm_sc8xx/Kconfig
new file mode 100644
index 0000000000..522b1a85d0
--- /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 0000000000..c19bcae2b2
--- /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 0000000000..22034c19f1
--- /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 0000000000..720edd8893
--- /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 0000000000..535b8ebf48
--- /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 0000000000..481bbcc207
--- /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 0000000000..c00204a785
--- /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 0000000000..b53e7cad42
--- /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 0000000000..dbf34e5f05
--- /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 0000000000..90f9fab7b8
--- /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 0000000000..818293a2e6
--- /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 0000000000..eaf28c4a9d
--- /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 0000000000..3aecad90df
--- /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 0000000000..a91c1960cb
--- /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 0000000000..a24609921b
--- /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 0000000000..f649b06155
--- /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 0000000000..a7f1b21a3b
--- /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 0000000000..9ee557da45
--- /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 0000000000..06e56a4f8f
--- /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 0000000000..ad02b46f70
--- /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 0000000000..1790f6d250
--- /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 0000000000..1ce2b37026
--- /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 0000000000..96cf7c05a2
--- /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 0000000000..d23464c20f
--- /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 0000000000..c3b61af263
--- /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 0000000000..d166fa0be3
--- /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/am3517crane/Kconfig b/board/ti/am3517crane/Kconfig
new file mode 100644
index 0000000000..fdb20ab6e1
--- /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 0000000000..cbc3213ec5
--- /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 0000000000..3c61ec1d76
--- /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 0000000000..d375278bed
--- /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/beagle/Kconfig b/board/ti/beagle/Kconfig
new file mode 100644
index 0000000000..15dccdf854
--- /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 0000000000..2225fb63b0
--- /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 0000000000..4b13ef4282
--- /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 0000000000..5ec67697cf
--- /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/evm/Kconfig b/board/ti/evm/Kconfig
new file mode 100644
index 0000000000..e34294290e
--- /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 0000000000..b2ebadcb40
--- /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/ks2_evm/Kconfig b/board/ti/ks2_evm/Kconfig
new file mode 100644
index 0000000000..7890b3018a
--- /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 0000000000..595a80a8bc
--- /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/omap5912osk/Kconfig b/board/ti/omap5912osk/Kconfig
new file mode 100644
index 0000000000..9f7493a35f
--- /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 0000000000..43ffb9b7b9
--- /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 0000000000..7c7d5dcc0f
--- /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 0000000000..280ea2f91f
--- /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 0000000000..be1307d76a
--- /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 0000000000..2142368271
--- /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 0000000000..81989b7f9e
--- /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 0000000000..943c196d9f
--- /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 0000000000..140e1f16ea
--- /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 0000000000..ac4d0ccc19
--- /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 0000000000..4d4f52cef4
--- /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 0000000000..e39b253d25
--- /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 0000000000..5821172b34
--- /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 0000000000..8bf6122908
--- /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 0000000000..9cffd7c646
--- /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 0000000000..76ccfdc1e1
--- /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 0000000000..4caee60210
--- /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 0000000000..cb93563fed
--- /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 0000000000..d9c920cab0
--- /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 0000000000..c490757d68
--- /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 0000000000..9367c8898e
--- /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 0000000000..b378d7be5a
--- /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 0000000000..334b7e051f
--- /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 0000000000..c68955bfa9
--- /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 0000000000..774eb9889e
--- /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 0000000000..983b96d12c
--- /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 0000000000..c692196550
--- /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 0000000000..581ef95453
--- /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 0000000000..0cf80ddb80
--- /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 0000000000..266910fe05
--- /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 0000000000..9be43d3bae
--- /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 0000000000..a660de19bc
--- /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 0000000000..cd2e817a4e
--- /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 0000000000..10c14f3e0b
--- /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 0000000000..5700d22162
--- /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 0000000000..161fa68e5b
--- /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 0000000000..ddd2ce3f3e
--- /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 0000000000..ba48c2e2e0
--- /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 0000000000..3b18bea57a
--- /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 0000000000..cfc9903c71
--- /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 0000000000..69dbce0e25
--- /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 0000000000..ee8b61e37e
--- /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 0000000000..3dd264b0ca
--- /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 0000000000..bed69c8607
--- /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 0000000000..f473d89e58
--- /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 0000000000..1b12d0bdad
--- /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 0000000000..ed9efbfbb6
--- /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 0000000000..e3ca3325fc
--- /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 0000000000..e9170b0b7a
--- /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 0000000000..1c627657ba
--- /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 0000000000..c0e879a6b7
--- /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 0000000000..bfedee5748
--- /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 0000000000..a323afab2a
--- /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 0000000000..b986980437
--- /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 0000000000..1aca934f03
--- /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 0000000000..715f2caa11
--- /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 0000000000..9b41435911
--- /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 0000000000..f2fa4bf905
--- /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 0000000000..115439a249
--- /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 0000000000..055ce6abce
--- /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 0000000000..b938746990
--- /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 0000000000..c74fdf4874
--- /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 0000000000..e524ff1c90
--- /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 0000000000..7f9bf9ae76
--- /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 0000000000..cab2ab3f6e
--- /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 0000000000..a13dcf196c
--- /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 0000000000..fa11719ea0
--- /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 0000000000..12d321eddd
--- /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 0000000000..b9cb33471c
--- /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 0000000000..6796d4d51a
--- /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 0000000000..6f3483d896
--- /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 0000000000..8b40f44500
--- /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 0000000000..98411c7ff4
--- /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 0000000000..2b0c98dc8b
--- /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 0000000000..37abe633e4
--- /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 0000000000..2d0b11af91
--- /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 0000000000..3b72a5f21d
--- /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 0000000000..e167816a2e
--- /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/zeus/Kconfig b/board/zeus/Kconfig
new file mode 100644
index 0000000000..56786940e3
--- /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 0000000000..3118710cd4
--- /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 0000000000..702edbff5f
--- /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 0000000000..55b0f6406c
--- /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 44dccbf2db..0000000000
--- a/boards.cfg
+++ /dev/null
@@ -1,1233 +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 ks2_evm k2hk_evm - Vitaly Andrianov <vitalya@ti.com>
-Active arm armv7 keystone ti ks2_evm k2e_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 - aristainetos aristainetos aristainetos:IMX_CONFIG=board/aristainetos/aristainetos.cfg,MX6DL Heiko Schocher <hs@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 freescale mx6sxsabresd mx6sxsabresd mx6sxsabresd:IMX_CONFIG=board/freescale/mx6sxsabresd/imximage.cfg,MX6SX 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 mx6 tqc tqma6 tqma6q_mba6_mmc tqma6:IMX_CONFIG=board/tqc/tqma6/tqma6q.cfg,MX6Q,MBA6,TQMA6X_MMC_BOOT Markus Niebel <Markus.Niebel@tq-group.com>
-Active arm armv7 mx6 tqc tqma6 tqma6q_mba6_spi tqma6:IMX_CONFIG=board/tqc/tqma6/tqma6q.cfg,MX6Q,MBA6,TQMA6X_SPI_BOOT Markus Niebel <Markus.Niebel@tq-group.com>
-Active arm armv7 mx6 tqc tqma6 tqma6s_mba6_mmc tqma6:IMX_CONFIG=board/tqc/tqma6/tqma6s.cfg,MX6S,MBA6,TQMA6X_MMC_BOOT Markus Niebel <Markus.Niebel@tq-group.com>
-Active arm armv7 mx6 tqc tqma6 tqma6s_mba6_spi tqma6:IMX_CONFIG=board/tqc/tqma6/tqma6s.cfg,MX6S,MBA6,TQMA6X_SPI_BOOT Markus Niebel <Markus.Niebel@tq-group.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 alt alt - Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
-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 A13-OLinuXinoM sun5i:A13_OLINUXINOM,SPL,CONS_INDEX=2 Hans de Goede <hdegoede@redhat.com>
-Active arm armv7 sunxi - sunxi Cubieboard sun4i:CUBIEBOARD,SPL,AXP209_POWER,SUNXI_EMAC Hans de Goede <hdegoede@redhat.com>
-Active arm armv7 sunxi - sunxi Cubieboard2 sun7i:CUBIEBOARD2,SPL,SUNXI_GMAC Ian Campbell <ijc@hellion.org.uk>:Hans de Goede <hdegoede@redhat.com>
-Active arm armv7 sunxi - sunxi Cubieboard2_FEL sun7i:CUBIEBOARD2,SPL_FEL,SUNXI_GMAC Ian Campbell <ijc@hellion.org.uk>:Hans de Goede <hdegoede@redhat.com>
-Active arm armv7 sunxi - sunxi Cubietruck sun7i:CUBIETRUCK,SPL,AXP209_POWER,SUNXI_GMAC,RGMII Ian Campbell <ijc@hellion.org.uk>:Hans de Goede <hdegoede@redhat.com>
-Active arm armv7 sunxi - sunxi Cubietruck_FEL sun7i:CUBIETRUCK,SPL_FEL,AXP209_POWER,SUNXI_GMAC,RGMII Ian Campbell <ijc@hellion.org.uk>:Hans de Goede <hdegoede@redhat.com>
-Active arm armv7 sunxi - sunxi r7-tv-dongle sun5i:R7DONGLE,SPL,AXP152_POWER Hans de Goede <hdegoede@redhat.com>
-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 p1023rds P1023RDS - Roy Zang <tie-fei.zang@freescale.com>
-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/env_mmc.c b/common/env_mmc.c
index 7da10e61af..a7621a897c 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/config.mk b/config.mk
index bd74732d48..b4bf6f95d3 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/A10-OLinuXino-Lime_defconfig b/configs/A10-OLinuXino-Lime_defconfig
new file mode 100644
index 0000000000..a4149537fc
--- /dev/null
+++ b/configs/A10-OLinuXino-Lime_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="A10_OLINUXINO_L,SPL,AXP209_POWER,SUNXI_EMAC,AHCI,SATAPWR=SUNXI_GPC(3),USB_EHCI"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SUN4I=y
diff --git a/configs/A10s-OLinuXino-M_defconfig b/configs/A10s-OLinuXino-M_defconfig
new file mode 100644
index 0000000000..1560ab18ec
--- /dev/null
+++ b/configs/A10s-OLinuXino-M_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="A10S_OLINUXINO_M,SPL,AXP152_POWER,SUNXI_EMAC,USB_EHCI,SUNXI_USB_VBUS0_GPIO=SUNXI_GPB(10)"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SUN5I=y
diff --git a/configs/A13-OLinuXinoM_defconfig b/configs/A13-OLinuXinoM_defconfig
new file mode 100644
index 0000000000..fb510d5cca
--- /dev/null
+++ b/configs/A13-OLinuXinoM_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="A13_OLINUXINOM,SPL,CONS_INDEX=2,USB_EHCI,SUNXI_USB_VBUS0_GPIO=SUNXI_GPG(11)"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SUN5I=y
diff --git a/configs/A13-OLinuXino_defconfig b/configs/A13-OLinuXino_defconfig
new file mode 100644
index 0000000000..ba21136dc9
--- /dev/null
+++ b/configs/A13-OLinuXino_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="A13_OLINUXINO,SPL,CONS_INDEX=2,AXP209_POWER,USB_EHCI,SUNXI_USB_VBUS0_GPIO=SUNXI_GPG(11)"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SUN5I=y
diff --git a/configs/A20-OLinuXino_MICRO_defconfig b/configs/A20-OLinuXino_MICRO_defconfig
new file mode 100644
index 0000000000..52a857a770
--- /dev/null
+++ b/configs/A20-OLinuXino_MICRO_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="A20_OLINUXINO_M,SPL,AXP209_POWER,SUNXI_GMAC,AHCI,SATAPWR=SUNXI_GPB(8),USB_EHCI"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SUN7I=y
diff --git a/configs/A3000_defconfig b/configs/A3000_defconfig
new file mode 100644
index 0000000000..e1923defcb
--- /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 0000000000..d9da49bb84
--- /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 0000000000..be65ab738b
--- /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 0000000000..ee094cb567
--- /dev/null
+++ b/configs/ASH405_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_4xx=y
+CONFIG_TARGET_ASH405=y
diff --git a/configs/Auxtek-T004_defconfig b/configs/Auxtek-T004_defconfig
new file mode 100644
index 0000000000..643e628f55
--- /dev/null
+++ b/configs/Auxtek-T004_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="AUXTEK_T004,SPL,AXP152_POWER,USB_EHCI,SUNXI_USB_VBUS0_GPIO=SUNXI_GPG(13)"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SUN5I=y
diff --git a/configs/B4420QDS_NAND_defconfig b/configs/B4420QDS_NAND_defconfig
new file mode 100644
index 0000000000..5367e9bc62
--- /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 0000000000..d62a0688ca
--- /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 0000000000..dc77f70233
--- /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 0000000000..05cf734101
--- /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 0000000000..f73a2ae1b4
--- /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 0000000000..235d3eaa58
--- /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 0000000000..dda19442a6
--- /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 0000000000..15b3dfb057
--- /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 0000000000..ecb46e92f7
--- /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 0000000000..1adc2b8d11
--- /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 0000000000..502fa31475
--- /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 0000000000..895ae12d3b
--- /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 0000000000..89619762c0
--- /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 0000000000..8aef0d6bf3
--- /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 0000000000..3c3b46e4df
--- /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 0000000000..ac31fad0d2
--- /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 0000000000..d2e7391003
--- /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 0000000000..b26f6e0cbc
--- /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 0000000000..7eaa32db95
--- /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 0000000000..13d7794cb2
--- /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 0000000000..7e205c58a6
--- /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 0000000000..8e5585a762
--- /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 0000000000..6a7920f6f0
--- /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 0000000000..920cf6ccb6
--- /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 0000000000..95a35f2c8c
--- /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 0000000000..c55b5a7836
--- /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 0000000000..85e47011ed
--- /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 0000000000..7eb3727219
--- /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 0000000000..b8e4e7d103
--- /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/Bananapi_defconfig b/configs/Bananapi_defconfig
new file mode 100644
index 0000000000..be3d815568
--- /dev/null
+++ b/configs/Bananapi_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="BANANAPI,SPL,AXP209_POWER,SUNXI_GMAC,RGMII,MACPWR=SUNXI_GPH(23),AHCI,USB_EHCI"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SUN7I=y
diff --git a/configs/C29XPCIE_NAND_defconfig b/configs/C29XPCIE_NAND_defconfig
new file mode 100644
index 0000000000..c9325795b5
--- /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 0000000000..2185d9d88d
--- /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 0000000000..2ee3305f83
--- /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 0000000000..1a8903c4f5
--- /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 0000000000..4b0eb8d9ff
--- /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 0000000000..53e00ad222
--- /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 0000000000..dd2122363d
--- /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 0000000000..4aae7f6385
--- /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 0000000000..77ae66cd3f
--- /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 0000000000..23631e92ab
--- /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 0000000000..5d30b79c0b
--- /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 0000000000..6550fd10cd
--- /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 0000000000..b61f65cf9b
--- /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 0000000000..1638e2be66
--- /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 0000000000..abdd4d29fa
--- /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 0000000000..2a7566d567
--- /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 0000000000..41aa7df582
--- /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 0000000000..f0a4049647
--- /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 0000000000..ba13b40d27
--- /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 0000000000..86a5737f47
--- /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 0000000000..ad6cbac815
--- /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 0000000000..0f221886c6
--- /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 0000000000..63636b029a
--- /dev/null
+++ b/configs/Cubieboard2_FEL_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="CUBIEBOARD2,SPL_FEL,AXP209_POWER,SUNXI_GMAC,AHCI,SATAPWR=SUNXI_GPB(8),USB_EHCI"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SUN7I=y
diff --git a/configs/Cubieboard2_defconfig b/configs/Cubieboard2_defconfig
new file mode 100644
index 0000000000..fa34c5178a
--- /dev/null
+++ b/configs/Cubieboard2_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="CUBIEBOARD2,SPL,AXP209_POWER,SUNXI_GMAC,AHCI,SATAPWR=SUNXI_GPB(8),USB_EHCI"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SUN7I=y
diff --git a/configs/Cubieboard_defconfig b/configs/Cubieboard_defconfig
new file mode 100644
index 0000000000..774029c8b0
--- /dev/null
+++ b/configs/Cubieboard_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="CUBIEBOARD,SPL,AXP209_POWER,SUNXI_EMAC,AHCI,SATAPWR=SUNXI_GPB(8),USB_EHCI"
++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 0000000000..7ebf6353ee
--- /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,AHCI,SATAPWR=SUNXI_GPH(12),USB_EHCI"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SUN7I=y
diff --git a/configs/Cubietruck_defconfig b/configs/Cubietruck_defconfig
new file mode 100644
index 0000000000..fbc912745f
--- /dev/null
+++ b/configs/Cubietruck_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="CUBIETRUCK,SPL,AXP209_POWER,SUNXI_GMAC,RGMII,AHCI,SATAPWR=SUNXI_GPH(12),USB_EHCI"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SUN7I=y
diff --git a/configs/DB64360_defconfig b/configs/DB64360_defconfig
new file mode 100644
index 0000000000..358b0968f0
--- /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 0000000000..4ff2fadaa0
--- /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 0000000000..4d482764f4
--- /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 0000000000..fdfe41bee9
--- /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 0000000000..59891fee5b
--- /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 0000000000..c4694efd50
--- /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 0000000000..d02b31313d
--- /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 0000000000..e6279b87f7
--- /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 0000000000..6a272d24eb
--- /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 0000000000..6113797016
--- /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 0000000000..e72ccddef4
--- /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 0000000000..643da6aa39
--- /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 0000000000..a01bc0f86b
--- /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 0000000000..ff624db32d
--- /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 0000000000..e6726230ce
--- /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 0000000000..1571f3229c
--- /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 0000000000..a39712e26f
--- /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 0000000000..8947be279b
--- /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 0000000000..72f0dfa79e
--- /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 0000000000..b58ea05d16
--- /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 0000000000..b4dd23fdba
--- /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 0000000000..feb243d78f
--- /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 0000000000..d49ea52f54
--- /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 0000000000..f0850f6368
--- /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 0000000000..9c241c2031
--- /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 0000000000..0f85d43f25
--- /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 0000000000..685d76fdf1
--- /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 0000000000..63435d2679
--- /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 0000000000..3f4087b4d4
--- /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 0000000000..14c9c2feea
--- /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 0000000000..fcca3c980a
--- /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 0000000000..8e9e26d5de
--- /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 0000000000..29520c9c36
--- /dev/null
+++ b/configs/KUP4X_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_8xx=y
+CONFIG_TARGET_KUP4X=y
diff --git a/configs/Linksprite_pcDuino3_defconfig b/configs/Linksprite_pcDuino3_defconfig
new file mode 100644
index 0000000000..10ebcefdfd
--- /dev/null
+++ b/configs/Linksprite_pcDuino3_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="PCDUINO3,SPL,AXP209_POWER,SUNXI_GMAC,AHCI,SATAPWR=SUNXI_GPH(2),USB_EHCI"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SUN7I=y
diff --git a/configs/Lite5200_LOWBOOT08_defconfig b/configs/Lite5200_LOWBOOT08_defconfig
new file mode 100644
index 0000000000..9f0cbd8867
--- /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 0000000000..ff1552fa7a
--- /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 0000000000..49fdb3bc8a
--- /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 0000000000..c7276834a4
--- /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 0000000000..bcf2359b75
--- /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 0000000000..0e49bc34f7
--- /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 0000000000..e6facec4e1
--- /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 0000000000..04b11ecbf1
--- /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 0000000000..fb292744e0
--- /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 0000000000..68cad2f284
--- /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 0000000000..5c562fe64e
--- /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 0000000000..fdb872a566
--- /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 0000000000..1e33649639
--- /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 0000000000..66d742f539
--- /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 0000000000..d83e638c8c
--- /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 0000000000..048d3a9ca9
--- /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 0000000000..01e3d6a167
--- /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 0000000000..51a7b81d28
--- /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 0000000000..8f18bbea96
--- /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 0000000000..4b1c6c9e61
--- /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 0000000000..72cc83c66f
--- /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 0000000000..0bc929f8e5
--- /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 0000000000..93fe401252
--- /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 0000000000..8f18bbea96
--- /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 0000000000..af02731bfe
--- /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 0000000000..4a3c87f57a
--- /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 0000000000..b05a12e95d
--- /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 0000000000..ffd34070cc
--- /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 0000000000..90cf787447
--- /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 0000000000..a3d69db995
--- /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 0000000000..cf33d0f0cc
--- /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 0000000000..28fd0ecc8c
--- /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 0000000000..329f3e3076
--- /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 0000000000..8dd75dbac6
--- /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 0000000000..a6288da897
--- /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 0000000000..19640a2e90
--- /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 0000000000..0201d38824
--- /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 0000000000..b8768684d6
--- /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 0000000000..612218da38
--- /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 0000000000..697feb050a
--- /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 0000000000..46c0d08faa
--- /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 0000000000..ad6248d73f
--- /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 0000000000..5f27496896
--- /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 0000000000..b1da7438c7
--- /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 0000000000..578d24a9bb
--- /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 0000000000..c632055ed5
--- /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 0000000000..34a527ee12
--- /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 0000000000..14b471a0e9
--- /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 0000000000..b05d3c4116
--- /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 0000000000..dfe853ee62
--- /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 0000000000..304d890793
--- /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 0000000000..57004e8554
--- /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 0000000000..485c842665
--- /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 0000000000..64717ecfa8
--- /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 0000000000..ca6c304525
--- /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 0000000000..974bdf90ae
--- /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 0000000000..3a55931b01
--- /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 0000000000..180316ba20
--- /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 0000000000..ebebbedf0c
--- /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 0000000000..7c03842bfa
--- /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 0000000000..e1ba08deae
--- /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 0000000000..55df0f6088
--- /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 0000000000..1ceee68ee2
--- /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 0000000000..ef67be5644
--- /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 0000000000..0398472534
--- /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 0000000000..f6af218288
--- /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 0000000000..f853309b87
--- /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 0000000000..5321801a17
--- /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 0000000000..83f25ae53d
--- /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 0000000000..dc325b1cee
--- /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 0000000000..fba273d0b0
--- /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 0000000000..e0cf6da935
--- /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 0000000000..c3f74fc023
--- /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 0000000000..60c6ddb091
--- /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 0000000000..16f12fbf96
--- /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 0000000000..797a584da7
--- /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 0000000000..a887c297d5
--- /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 0000000000..4442c6148f
--- /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 0000000000..fce95dd33e
--- /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 0000000000..91c47b74b2
--- /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 0000000000..7e9fa59557
--- /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 0000000000..d3be43ac9e
--- /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 0000000000..d3b7c1d05c
--- /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 0000000000..bb4411adea
--- /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 0000000000..45dc91aa5f
--- /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 0000000000..4a9f0cd6bd
--- /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 0000000000..2d357e8d5a
--- /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 0000000000..62edc91747
--- /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 0000000000..41af34927d
--- /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 0000000000..bc9c24630a
--- /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 0000000000..502fbfc588
--- /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 0000000000..faeaa948f4
--- /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 0000000000..438ea85b94
--- /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 0000000000..ba52e9441a
--- /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 0000000000..e027b2f620
--- /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 0000000000..3bdbb0c2d1
--- /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 0000000000..3040905dd0
--- /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 0000000000..aa84d28a66
--- /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 0000000000..ac0ec8c501
--- /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 0000000000..57301805bb
--- /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 0000000000..81fb82a542
--- /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 0000000000..9a26a59990
--- /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 0000000000..dde9eb2846
--- /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 0000000000..f4e89515f7
--- /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 0000000000..525fa06135
--- /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 0000000000..6c117d5bb0
--- /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 0000000000..586364c1ca
--- /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 0000000000..b0351fd219
--- /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 0000000000..cc81b5c805
--- /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 0000000000..f97998358b
--- /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 0000000000..a84c173089
--- /dev/null
+++ b/configs/MVSMR_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC5xxx=y
+CONFIG_TARGET_MVSMR=y
diff --git a/configs/Mele_A1000G_defconfig b/configs/Mele_A1000G_defconfig
new file mode 100644
index 0000000000..20792798b8
--- /dev/null
+++ b/configs/Mele_A1000G_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="MELE_A1000G,SPL,AXP209_POWER,SUNXI_EMAC,MACPWR=SUNXI_GPH(15),AHCI,USB_EHCI"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SUN4I=y
diff --git a/configs/Mele_A1000_defconfig b/configs/Mele_A1000_defconfig
new file mode 100644
index 0000000000..13528abeb3
--- /dev/null
+++ b/configs/Mele_A1000_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="MELE_A1000,SPL,AXP209_POWER,SUNXI_EMAC,MACPWR=SUNXI_GPH(15),AHCI,USB_EHCI"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SUN4I=y
diff --git a/configs/MigoR_defconfig b/configs/MigoR_defconfig
new file mode 100644
index 0000000000..dd79ff5414
--- /dev/null
+++ b/configs/MigoR_defconfig
@@ -0,0 +1,2 @@
+CONFIG_SH=y
+CONFIG_TARGET_MIGOR=y
diff --git a/configs/Mini-X-1Gb_defconfig b/configs/Mini-X-1Gb_defconfig
new file mode 100644
index 0000000000..61fa1de155
--- /dev/null
+++ b/configs/Mini-X-1Gb_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="MINI_X_1GB,SPL,AXP209_POWER,USB_EHCI"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SUN4I=y
diff --git a/configs/Mini-X_defconfig b/configs/Mini-X_defconfig
new file mode 100644
index 0000000000..ceb02c5cd0
--- /dev/null
+++ b/configs/Mini-X_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="MINI_X,SPL,AXP209_POWER,USB_EHCI"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SUN4I=y
diff --git a/configs/MiniFAP_defconfig b/configs/MiniFAP_defconfig
new file mode 100644
index 0000000000..8eccf2679d
--- /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 0000000000..2715910246
--- /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 0000000000..27c8f2b466
--- /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 0000000000..be96cbd92c
--- /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 0000000000..c63b5da484
--- /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 0000000000..49e60abcfe
--- /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 0000000000..9df3b88895
--- /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 0000000000..f2d3663e39
--- /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 0000000000..84db574e95
--- /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 0000000000..12428debf1
--- /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 0000000000..a56329a6f1
--- /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 0000000000..03f54cace5
--- /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 0000000000..23c4dc3c05
--- /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 0000000000..1f28a43667
--- /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 0000000000..f2fd0c5edf
--- /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 0000000000..c441d9fc36
--- /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 0000000000..b13024d0f8
--- /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 0000000000..197141a4c8
--- /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 0000000000..8739428441
--- /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 0000000000..944d52fd7b
--- /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 0000000000..2dae76c7b1
--- /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 0000000000..7cb82ef137
--- /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 0000000000..c3c30fa45a
--- /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 0000000000..fdf0777511
--- /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 0000000000..9769a2f25c
--- /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 0000000000..8935503b39
--- /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 0000000000..8d6ab188a7
--- /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 0000000000..76499d911e
--- /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 0000000000..869b1a460e
--- /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 0000000000..be6fe06bfb
--- /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 0000000000..dd5277d8fd
--- /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 0000000000..90e278d3e8
--- /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 0000000000..ac2321809c
--- /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 0000000000..f1900fece9
--- /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 0000000000..e2a379d13e
--- /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 0000000000..1b24dba2cc
--- /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 0000000000..de34914eff
--- /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 0000000000..012516496f
--- /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 0000000000..78221afbc0
--- /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 0000000000..a2386c7900
--- /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 0000000000..dcb0847a01
--- /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 0000000000..1cba9200e8
--- /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 0000000000..23dc027a83
--- /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 0000000000..7205bef84b
--- /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 0000000000..8b3806e7c1
--- /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 0000000000..c47f2e25ce
--- /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 0000000000..aac0190c41
--- /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 0000000000..16e872f757
--- /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 0000000000..d14820fd10
--- /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 0000000000..d14868ab64
--- /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 0000000000..e2b625ea15
--- /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 0000000000..503ee0c6ea
--- /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 0000000000..d34d3c873b
--- /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 0000000000..cee84efe4f
--- /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 0000000000..c01de3a54a
--- /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 0000000000..81593e1cd5
--- /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 0000000000..93c0c71ca6
--- /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 0000000000..2120a09787
--- /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 0000000000..521398dec7
--- /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 0000000000..4e3ed602d1
--- /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 0000000000..d4642c4403
--- /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 0000000000..a19a59ff37
--- /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 0000000000..199b3f202e
--- /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 0000000000..a5edd3bb83
--- /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 0000000000..789b1bd5f6
--- /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 0000000000..61f7a022e8
--- /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 0000000000..a18563eea9
--- /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 0000000000..aa145fcd3d
--- /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 0000000000..844651f88c
--- /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 0000000000..441241bc87
--- /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 0000000000..1349bea404
--- /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 0000000000..7eb86969de
--- /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 0000000000..fc58ac92c6
--- /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 0000000000..7f393f4e33
--- /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 0000000000..6892cc2aae
--- /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 0000000000..3757de38bb
--- /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 0000000000..4c28014f7d
--- /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 0000000000..285a0c4af0
--- /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 0000000000..0f9b175842
--- /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 0000000000..e2345dd4b9
--- /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 0000000000..eae7d2da76
--- /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 0000000000..da4b17db12
--- /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 0000000000..ec729d8de0
--- /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 0000000000..98a3e23923
--- /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 0000000000..7557da2b0c
--- /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 0000000000..d482617490
--- /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 0000000000..3f2a46c90f
--- /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 0000000000..47a39eec3f
--- /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 0000000000..f2ff2d030b
--- /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 0000000000..071280b0a3
--- /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 0000000000..47f21eab2e
--- /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 0000000000..a866f2467b
--- /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 0000000000..d2953a4e99
--- /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 0000000000..fc15e4bc4c
--- /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 0000000000..687277feec
--- /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 0000000000..be4201462e
--- /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 0000000000..88504bf4b8
--- /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 0000000000..5def94279f
--- /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 0000000000..89e88f217f
--- /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 0000000000..6903fec05d
--- /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 0000000000..f07388a536
--- /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 0000000000..1791ec420f
--- /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 0000000000..774bbfe225
--- /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 0000000000..589e1740a0
--- /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 0000000000..1381e8ef4d
--- /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 0000000000..53ebca1980
--- /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 0000000000..de29dcb533
--- /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 0000000000..bc91a67164
--- /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 0000000000..fd4ade7112
--- /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 0000000000..9631864509
--- /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 0000000000..3b3352a5a6
--- /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 0000000000..c186fcbee0
--- /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 0000000000..17ce1361b8
--- /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 0000000000..359c446063
--- /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 0000000000..00b673100d
--- /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 0000000000..89aef3a55d
--- /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 0000000000..503328cb03
--- /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 0000000000..f2ac6d9b96
--- /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 0000000000..cdfe13db1c
--- /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 0000000000..a98ce43297
--- /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 0000000000..14e53ba014
--- /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 0000000000..8f0c994bdb
--- /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 0000000000..10b208a48b
--- /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 0000000000..6cb0e6e350
--- /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 0000000000..769eb37ebb
--- /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 0000000000..3e46572009
--- /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 0000000000..43cc2e3051
--- /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 0000000000..f1199b6622
--- /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 0000000000..87490fd9c8
--- /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 0000000000..70ee084ca0
--- /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 0000000000..2bf57739ca
--- /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 0000000000..290ebd2d34
--- /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 0000000000..cc397354ba
--- /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 0000000000..4a4e076db7
--- /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 0000000000..af06581683
--- /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 0000000000..c49dcbfbd0
--- /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 0000000000..ecba89af66
--- /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 0000000000..53bd27137e
--- /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 0000000000..802b38d6df
--- /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 0000000000..59340486b7
--- /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 0000000000..dacadaaf26
--- /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 0000000000..9850956b84
--- /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 0000000000..0a71926093
--- /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 0000000000..5c14324c01
--- /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 0000000000..327765005e
--- /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 0000000000..3d219ef74a
--- /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 0000000000..99fbbf2722
--- /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 0000000000..bae1da21c0
--- /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 0000000000..855319dfc3
--- /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 0000000000..6240d730ee
--- /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 0000000000..9b5fc89ed2
--- /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 0000000000..6fe8446ee4
--- /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 0000000000..e19aa6efb9
--- /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 0000000000..30871d9887
--- /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 0000000000..dbcc05661a
--- /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 0000000000..dc191f7fd8
--- /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 0000000000..d1c5c722c0
--- /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 0000000000..de3cd0664b
--- /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 0000000000..f0ef285b1d
--- /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 0000000000..a2922f5a14
--- /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 0000000000..38f3d589cd
--- /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 0000000000..14ca871b44
--- /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 0000000000..48f19fe7ba
--- /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 0000000000..a4bfdb4eb3
--- /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 0000000000..38b3acbb1f
--- /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 0000000000..bb2513ae1f
--- /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 0000000000..15477c481e
--- /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 0000000000..6d6a59d326
--- /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 0000000000..f5a40d9240
--- /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 0000000000..d9f9ea094e
--- /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 0000000000..2737a8c080
--- /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 0000000000..75efcdd565
--- /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 0000000000..28ff17fc68
--- /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 0000000000..f5233fad83
--- /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 0000000000..459cdbacd1
--- /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 0000000000..0acf9d2129
--- /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 0000000000..af8d4c9ef9
--- /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 0000000000..7d3e1c3a17
--- /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 0000000000..b2f9d34b3c
--- /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 0000000000..9b68562a14
--- /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 0000000000..8120058e41
--- /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 0000000000..7c8980ea96
--- /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 0000000000..15887ca4f5
--- /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 0000000000..78c5d393cd
--- /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 0000000000..d82117c213
--- /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 0000000000..27869ac07b
--- /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 0000000000..e367299a52
--- /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 0000000000..f4041c98ac
--- /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 0000000000..a9de221c5c
--- /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 0000000000..882262b68d
--- /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 0000000000..f9a04400df
--- /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 0000000000..8ee09b8a33
--- /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 0000000000..2d83330706
--- /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 0000000000..290f6943d3
--- /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 0000000000..4d61187495
--- /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 0000000000..bdb4d7add3
--- /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 0000000000..6a50316cef
--- /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 0000000000..1b218c6bc6
--- /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 0000000000..a4c900ad34
--- /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 0000000000..332e4c0a97
--- /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 0000000000..b36757ca83
--- /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 0000000000..0684cb072e
--- /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 0000000000..f3f61ebcb6
--- /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 0000000000..b8e1a3deef
--- /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 0000000000..5fe34d8a3f
--- /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 0000000000..08c3730718
--- /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 0000000000..0b5ddaf46b
--- /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 0000000000..1a6170391c
--- /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 0000000000..072eab06b0
--- /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 0000000000..d1a1665b7c
--- /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 0000000000..2bf123dd30
--- /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 0000000000..30d6d2dc88
--- /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 0000000000..f8f63346db
--- /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 0000000000..b75195a314
--- /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 0000000000..6ed65dd53c
--- /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 0000000000..4f7d709fbe
--- /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 0000000000..a3b58d3bce
--- /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 0000000000..105548697b
--- /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 0000000000..180d155e21
--- /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 0000000000..7c48f8f8ac
--- /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 0000000000..31ca9a7387
--- /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 0000000000..cee5370286
--- /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 0000000000..bdddeae291
--- /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 0000000000..9bdf533b36
--- /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 0000000000..f6ade166ef
--- /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 0000000000..d3558c5668
--- /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 0000000000..fc13d2caa5
--- /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 0000000000..e5ea3dce1b
--- /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 0000000000..407af9212a
--- /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 0000000000..93480a680e
--- /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 0000000000..0a18424157
--- /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 0000000000..de1b2c4669
--- /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 0000000000..9fc209f8b8
--- /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 0000000000..6146b00fd1
--- /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 0000000000..749f445708
--- /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 0000000000..34bd914779
--- /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 0000000000..e95151b231
--- /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 0000000000..65978ebe89
--- /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 0000000000..4db1b80a68
--- /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 0000000000..9cc7775168
--- /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 0000000000..14dc48a0b8
--- /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 0000000000..7c106552af
--- /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 0000000000..80889e0b22
--- /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 0000000000..37b1b555d1
--- /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 0000000000..2bb0421715
--- /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 0000000000..00d06c9217
--- /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 0000000000..13d8e2dc7c
--- /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 0000000000..01bc6dc32d
--- /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 0000000000..86eed7fa7e
--- /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 0000000000..9fcc6f6f59
--- /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 0000000000..f54377e3e5
--- /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 0000000000..5d976ce1e1
--- /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 0000000000..61c120a95a
--- /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 0000000000..ddc5d2cedf
--- /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 0000000000..9c198c68ef
--- /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 0000000000..1fe9682278
--- /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 0000000000..cacd3e25db
--- /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 0000000000..5678bf2d8d
--- /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 0000000000..974bc912c0
--- /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 0000000000..a9f9f015ff
--- /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 0000000000..b762fe4a0d
--- /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 0000000000..6ff8d17117
--- /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 0000000000..6ff8d17117
--- /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 0000000000..3f406a4f29
--- /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 0000000000..1077b19171
--- /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 0000000000..3f406a4f29
--- /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 0000000000..b0d67fa326
--- /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 0000000000..65c73e8309
--- /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 0000000000..3f406a4f29
--- /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 0000000000..d8806c4bb4
--- /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 0000000000..0070baf808
--- /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 0000000000..2cf89b4732
--- /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 0000000000..f3d5f4d48d
--- /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 0000000000..6052ada603
--- /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 0000000000..b7d5891179
--- /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 0000000000..367a70972f
--- /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 0000000000..0a215a7e25
--- /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 0000000000..5c9a4f19c0
--- /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 0000000000..24a290e549
--- /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 0000000000..ca8dba180f
--- /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 0000000000..bcf039a661
--- /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 0000000000..6a0268aa4f
--- /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 0000000000..be99da306d
--- /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 0000000000..95d758eda7
--- /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 0000000000..9f27734754
--- /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 0000000000..15b27b3bdc
--- /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 0000000000..5aaae49fd5
--- /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 0000000000..4c9195e947
--- /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 0000000000..6aa8de0b50
--- /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 0000000000..1fbe91afbe
--- /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 0000000000..b65515f2d3
--- /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 0000000000..4eb931e0fc
--- /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 0000000000..573427b9f5
--- /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 0000000000..74101244c9
--- /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 0000000000..dadea206ca
--- /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 0000000000..536f8bb087
--- /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 0000000000..5ebf5e6a71
--- /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 0000000000..16218c0519
--- /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 0000000000..ddc8d3f76e
--- /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 0000000000..15f04f9540
--- /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 0000000000..37966320b4
--- /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 0000000000..26221ce4e0
--- /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 0000000000..289115409f
--- /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 0000000000..0a7a64cc16
--- /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 0000000000..03f2241c56
--- /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 0000000000..b2a9589b49
--- /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 0000000000..2616d2d027
--- /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 0000000000..9f613c84e9
--- /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 0000000000..11a1c897ce
--- /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 0000000000..38450c0d61
--- /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 0000000000..00317c44dc
--- /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 0000000000..7710dc064e
--- /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 0000000000..fecec5e4eb
--- /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 0000000000..6005c22ddb
--- /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 0000000000..389d1d89bf
--- /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 0000000000..14e8879eb2
--- /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 0000000000..706ced9119
--- /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 0000000000..4706868022
--- /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 0000000000..8ab7769ed6
--- /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 0000000000..ea3b761d46
--- /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 0000000000..b6b30c6228
--- /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 0000000000..23f0a32d63
--- /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 0000000000..ec932245f3
--- /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 0000000000..1fab6c1fe0
--- /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 0000000000..369f2a4c77
--- /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 0000000000..281a21535b
--- /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 0000000000..ae2039cca5
--- /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 0000000000..f76329b0b0
--- /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 0000000000..67effa1642
--- /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 0000000000..a47d6301c2
--- /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 0000000000..867fb1f6d5
--- /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 0000000000..82b583edc6
--- /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 0000000000..18d0a140da
--- /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 0000000000..f7ebfa674c
--- /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 0000000000..081c88afde
--- /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 0000000000..7cc4307aef
--- /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 0000000000..0b341d6432
--- /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 0000000000..6807aee99b
--- /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 0000000000..95b5c2797b
--- /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 0000000000..5039ebc9b9
--- /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 0000000000..7f929c8376
--- /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 0000000000..e2c32bf7c7
--- /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 0000000000..1168cace31
--- /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 0000000000..486eeb295f
--- /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 0000000000..5f42a90ca5
--- /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 0000000000..4d7aa9064e
--- /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 0000000000..4dce54e5c6
--- /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 0000000000..4dce54e5c6
--- /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 0000000000..6f60daa9c7
--- /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 0000000000..944c14dde0
--- /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 0000000000..b54ef7f0ba
--- /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 0000000000..132102db3c
--- /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 0000000000..3dd3f9a817
--- /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 0000000000..a2bd6df384
--- /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 0000000000..1a4c505849
--- /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 0000000000..cf35782ebb
--- /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 0000000000..1377ad91f4
--- /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 0000000000..8cca2e575e
--- /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 0000000000..cfe91273c6
--- /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 0000000000..1681bc8b71
--- /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 0000000000..61ae56e452
--- /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 0000000000..71d16588f3
--- /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 0000000000..6f677b1744
--- /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 0000000000..7e898f0c43
--- /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 0000000000..90516e0c45
--- /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 0000000000..0e2edfd0e0
--- /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 0000000000..d00eed5876
--- /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 0000000000..64f7af9bab
--- /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 0000000000..47cd1e013b
--- /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 0000000000..1b7391e096
--- /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 0000000000..ccbccd43c8
--- /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 0000000000..e8f4cc32c9
--- /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 0000000000..49c5d78778
--- /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 0000000000..967be47423
--- /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 0000000000..cd79990eac
--- /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 0000000000..88b1de2a48
--- /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 0000000000..d6e9a77e96
--- /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 0000000000..b704532dbf
--- /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 0000000000..76502549c1
--- /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 0000000000..54beb0b894
--- /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 0000000000..c0e8da2c12
--- /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 0000000000..bfa314e069
--- /dev/null
+++ b/configs/axs101_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARC=y
+CONFIG_TARGET_AXS101=y
diff --git a/configs/ba10_tv_box_defconfig b/configs/ba10_tv_box_defconfig
new file mode 100644
index 0000000000..02a2538d79
--- /dev/null
+++ b/configs/ba10_tv_box_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="BA10_TV_BOX,SPL,AXP209_POWER,SUNXI_EMAC,USB_EHCI,SUNXI_USB_VBUS1_GPIO=SUNXI_GPH(12)"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SUN4I=y
diff --git a/configs/balloon3_defconfig b/configs/balloon3_defconfig
new file mode 100644
index 0000000000..a1f4adbb1b
--- /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 0000000000..1d66807df8
--- /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 0000000000..0a1c592472
--- /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 0000000000..367630647e
--- /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 0000000000..0e70f25d8a
--- /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 0000000000..f81f412f56
--- /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 0000000000..a93eed0882
--- /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 0000000000..692e006fc5
--- /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 0000000000..4a452235ac
--- /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 0000000000..d9db715f14
--- /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 0000000000..aedbb9649a
--- /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 0000000000..3ed77a66b0
--- /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 0000000000..0f8c28c339
--- /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 0000000000..217d4c30a0
--- /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 0000000000..a99b3c75ff
--- /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 0000000000..e76118fbd3
--- /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 0000000000..ba5eaaa392
--- /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 0000000000..61ac0e7d0e
--- /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 0000000000..d9daf7e309
--- /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 0000000000..0507cb2b91
--- /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 0000000000..7bb4064ad7
--- /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 0000000000..ba8a418928
--- /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 0000000000..7ceb1d9f4a
--- /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 0000000000..2bfb6a54bc
--- /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 0000000000..b8c8352f38
--- /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 0000000000..d531ffcd09
--- /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 0000000000..1ec2fa9ec8
--- /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 0000000000..8f83a4308e
--- /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 0000000000..9d91933218
--- /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 0000000000..65ea4d1f7c
--- /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 0000000000..6e4a389a93
--- /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 0000000000..a808ddf28f
--- /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 0000000000..d3de17b944
--- /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 0000000000..a375e1313b
--- /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 0000000000..1417d8309c
--- /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 0000000000..86ffbd2aa5
--- /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 0000000000..09b9ab9330
--- /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 0000000000..564ad5a545
--- /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 0000000000..669938138c
--- /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 0000000000..1dd3f5d58b
--- /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 0000000000..cb5110c7b1
--- /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 0000000000..aa38d0ed69
--- /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 0000000000..b9deaae3bf
--- /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 0000000000..16f7ae17a2
--- /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 0000000000..e60306a1ea
--- /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 0000000000..1b9301cb9e
--- /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 0000000000..487589d4a3
--- /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 0000000000..15e9362397
--- /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 0000000000..8f5dd3c3e7
--- /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 0000000000..5ff4f9c4a5
--- /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 0000000000..00b0590999
--- /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 0000000000..b48a171a24
--- /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 0000000000..5c855b137b
--- /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 0000000000..dc1552d2c1
--- /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 0000000000..dc297f11a6
--- /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 0000000000..2fe7a5a810
--- /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 0000000000..c8faf0b309
--- /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 0000000000..8ff246428b
--- /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 0000000000..661e85cadd
--- /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 0000000000..76ab9d36c3
--- /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 0000000000..be1a371144
--- /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 0000000000..ab548a6fec
--- /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 0000000000..a06c527c8b
--- /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 0000000000..3fc8edb777
--- /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 0000000000..bdbf4fc262
--- /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 0000000000..86fc6bd7c5
--- /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 0000000000..10299e3bde
--- /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 0000000000..e582a15ce4
--- /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 0000000000..40988cdf2a
--- /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 0000000000..4c28d252f9
--- /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 0000000000..468b2c8c9b
--- /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 0000000000..a74df9d124
--- /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 0000000000..11cc276838
--- /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 0000000000..d25bd3ae78
--- /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 0000000000..f5b722dd4c
--- /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 0000000000..8ccd6452d6
--- /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 0000000000..81a0cf1298
--- /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 0000000000..e53aed780d
--- /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 0000000000..49e74c30e0
--- /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 0000000000..af419cea51
--- /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 0000000000..7517e92720
--- /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 0000000000..edc604a866
--- /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 0000000000..288b2381ef
--- /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 0000000000..ef0b8545c2
--- /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 0000000000..22da9f30f3
--- /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 0000000000..dfae0b2a61
--- /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 0000000000..e2c2de4b11
--- /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 0000000000..abd349131c
--- /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 0000000000..eb53692a64
--- /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 0000000000..bc166ab12c
--- /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 0000000000..ea9cf886ff
--- /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 0000000000..2c9cd4f5e7
--- /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 0000000000..7c95629cfb
--- /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 0000000000..506f5da8ca
--- /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 0000000000..5a02a78610
--- /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 0000000000..9015023524
--- /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 0000000000..53b35ce60f
--- /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 0000000000..7f82d7df8b
--- /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 0000000000..ba990bc67b
--- /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 0000000000..7c5d222d63
--- /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 0000000000..9309ac2d65
--- /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 0000000000..a1e765bfd3
--- /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 0000000000..666c5c8971
--- /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 0000000000..d356174af5
--- /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 0000000000..f66f86f856
--- /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 0000000000..0be9578f4f
--- /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 0000000000..1d2a5718b0
--- /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 0000000000..c0317dcf09
--- /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 0000000000..0c00087631
--- /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 0000000000..6a18d2a0e7
--- /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 0000000000..528669eb4f
--- /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 0000000000..82cffd7b19
--- /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 0000000000..be09f40892
--- /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 0000000000..e0d1e45875
--- /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 0000000000..18def0b503
--- /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 0000000000..49de210737
--- /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 0000000000..b56092a344
--- /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 0000000000..15f11810f2
--- /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 0000000000..9d7e0909d0
--- /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 0000000000..562849dfec
--- /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 0000000000..f69aa539e2
--- /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 0000000000..b590f25bb1
--- /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 0000000000..5f0ab44f45
--- /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 0000000000..c6e8b71773
--- /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 0000000000..db93555b9e
--- /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 0000000000..79f3d5ad66
--- /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 0000000000..57771e4123
--- /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 0000000000..e92daf633b
--- /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 0000000000..82aa684d98
--- /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 0000000000..7fe405a390
--- /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 0000000000..1cce900cc2
--- /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 0000000000..0842d2df6b
--- /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 0000000000..a50781d04e
--- /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 0000000000..5be495cfa3
--- /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 0000000000..941e02840e
--- /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 0000000000..ac112cdd7a
--- /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 0000000000..6492b4b02e
--- /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 0000000000..9900a54869
--- /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 0000000000..5a0587ffec
--- /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 0000000000..4f193f5930
--- /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 0000000000..0fdf643987
--- /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 0000000000..1097b9c157
--- /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 0000000000..2a66bfb08c
--- /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 0000000000..10fde535cb
--- /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 0000000000..ec8f45c1a1
--- /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 0000000000..6eb02ad123
--- /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 0000000000..6e1eb83c77
--- /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 0000000000..da846db371
--- /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 0000000000..72013e7417
--- /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 0000000000..2a7e8e7057
--- /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 0000000000..e91eb968fe
--- /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 0000000000..f5be577735
--- /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 0000000000..a59ec3a105
--- /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 0000000000..11aaab5ec4
--- /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 0000000000..7040c090bf
--- /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 0000000000..7e6311676f
--- /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 0000000000..0d69cc6a27
--- /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 0000000000..d25ea5cb19
--- /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 0000000000..9945fe5772
--- /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 0000000000..b4db291601
--- /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 0000000000..a923a6153e
--- /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 0000000000..23fd52d925
--- /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 0000000000..a351dbe65f
--- /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 0000000000..600fa00c90
--- /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 0000000000..a6dc1d88a9
--- /dev/null
+++ b/configs/hymod_defconfig
@@ -0,0 +1,3 @@
+CONFIG_PPC=y
+CONFIG_MPC8260=y
+CONFIG_TARGET_HYMOD=y
diff --git a/configs/i12-tvbox_defconfig b/configs/i12-tvbox_defconfig
new file mode 100644
index 0000000000..ff86841f9d
--- /dev/null
+++ b/configs/i12-tvbox_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="I12_TVBOX,SPL,AXP209_POWER,SUNXI_GMAC,MACPWR=SUNXI_GPH(21),USB_EHCI"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SUN7I=y
diff --git a/configs/ib62x0_defconfig b/configs/ib62x0_defconfig
new file mode 100644
index 0000000000..d92217edf6
--- /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 0000000000..41a5c6592f
--- /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 0000000000..79f8598351
--- /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 0000000000..79f8598351
--- /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 0000000000..19d963799b
--- /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 0000000000..9f0cbd8867
--- /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 0000000000..ff1552fa7a
--- /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 0000000000..49fdb3bc8a
--- /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 0000000000..771a093250
--- /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 0000000000..ab83fa6a52
--- /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 0000000000..1c665aab94
--- /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 0000000000..e99f77300a
--- /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 0000000000..baa4a0a80e
--- /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 0000000000..5f404eb821
--- /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 0000000000..a43dfec4ab
--- /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 0000000000..c0d019ca8e
--- /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 0000000000..c7a9f681b6
--- /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 0000000000..03803c67a1
--- /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 0000000000..cd41c0e4ec
--- /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 0000000000..563de57dc0
--- /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 0000000000..9531952004
--- /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 0000000000..26d993216e
--- /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 0000000000..6581b0a4af
--- /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 0000000000..0bb7b085ce
--- /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 0000000000..fb925d50b1
--- /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 0000000000..308a1e6162
--- /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 0000000000..d1b9db5d6a
--- /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 0000000000..3feb6563f6
--- /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 0000000000..f304bbe8eb
--- /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 0000000000..a8d762b004
--- /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 0000000000..2e67dbc70a
--- /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 0000000000..d6af774363
--- /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 0000000000..1111e54e9d
--- /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 0000000000..959af75a1e
--- /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 0000000000..6dc88874fa
--- /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 0000000000..4f9895aa77
--- /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 0000000000..6e959516c2
--- /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 0000000000..83cf557934
--- /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 0000000000..4348e0e5df
--- /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 0000000000..9ce97c9f61
--- /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 0000000000..ad1c3382b7
--- /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 0000000000..dac4f1a038
--- /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 0000000000..c210ad5dec
--- /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 0000000000..caa763a546
--- /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 0000000000..849231492b
--- /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 0000000000..28021d99c3
--- /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 0000000000..c51fbf3128
--- /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 0000000000..4f554f79f7
--- /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 0000000000..abb42c90b8
--- /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 0000000000..22a005cca0
--- /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 0000000000..80c1f75a6c
--- /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 0000000000..037827772f
--- /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 0000000000..f87e347dd6
--- /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 0000000000..82c1924b40
--- /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 0000000000..46ddbcd7cb
--- /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 0000000000..8195184ee8
--- /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 0000000000..183b36505c
--- /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 0000000000..99a9a9b14b
--- /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 0000000000..9434ef0e1b
--- /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 0000000000..dd9c2f2562
--- /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 0000000000..d63a286ec4
--- /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 0000000000..d363aab770
--- /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 0000000000..8c6b4c4c35
--- /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 0000000000..5082ff750b
--- /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 0000000000..aaddf82940
--- /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 0000000000..bf1be72931
--- /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 0000000000..1541733528
--- /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 0000000000..9ceb834dd8
--- /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 0000000000..35b2aa3f7d
--- /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 0000000000..c7d403026b
--- /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 0000000000..2fc2cbcc35
--- /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 0000000000..f2f6882c99
--- /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 0000000000..51ffa56a4c
--- /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 0000000000..efa8e74548
--- /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 0000000000..330b4d7d94
--- /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 0000000000..e8cdf8ac69
--- /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 0000000000..d42b4a902f
--- /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 0000000000..1ae21099e4
--- /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 0000000000..128ff5face
--- /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 0000000000..e7af81714c
--- /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 0000000000..65a647044a
--- /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 0000000000..d45cfd73bc
--- /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 0000000000..ed9b82d503
--- /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 0000000000..f3788b6db1
--- /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 0000000000..97d0e899da
--- /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 0000000000..d5c9f08f3e
--- /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 0000000000..be6dbd7240
--- /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 0000000000..6ed86358a1
--- /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 0000000000..5f93702f0e
--- /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 0000000000..7abb0a40be
--- /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 0000000000..37761b5625
--- /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 0000000000..b6aafec3ee
--- /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 0000000000..94d33e5896
--- /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 0000000000..f863dd9fcb
--- /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 0000000000..a700c88ec4
--- /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 0000000000..3b0a0a081e
--- /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 0000000000..a30e224040
--- /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 0000000000..ddf3437358
--- /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 0000000000..fa737ef206
--- /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 0000000000..f58efbbe6c
--- /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 0000000000..e2eb06fe23
--- /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 0000000000..bc1e2ba58e
--- /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 0000000000..d2d4673ec6
--- /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 0000000000..7f23786781
--- /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 0000000000..f6edbc768e
--- /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 0000000000..009972a1e1
--- /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 0000000000..a9658b608d
--- /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 0000000000..535cb84ad2
--- /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 0000000000..4d76470cdd
--- /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 0000000000..9a89611b79
--- /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 0000000000..f2777dc875
--- /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 0000000000..2b8fc4e354
--- /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 0000000000..c8be9872f4
--- /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 0000000000..0e3f834442
--- /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 0000000000..4acb50914d
--- /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 0000000000..c23e4c9ef1
--- /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 0000000000..0fcad87a3c
--- /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 0000000000..e1056bdcb8
--- /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 0000000000..a62019ce9e
--- /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 0000000000..1e4969516d
--- /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 0000000000..cc9f75e859
--- /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 0000000000..4e268792b0
--- /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 0000000000..03d5066255
--- /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 0000000000..963cec365c
--- /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 0000000000..f676da6930
--- /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 0000000000..7986880173
--- /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 0000000000..e006209d7a
--- /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 0000000000..ab42316b36
--- /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 0000000000..df992fac31
--- /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 0000000000..5105a9a1c8
--- /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 0000000000..26cd87e384
--- /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 0000000000..3d79fe1cdf
--- /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 0000000000..a804b5ae73
--- /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 0000000000..b07762f394
--- /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 0000000000..890aa76c09
--- /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 0000000000..e5cb89591e
--- /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 0000000000..570241f1ce
--- /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 0000000000..92a67fb73d
--- /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 0000000000..97cb931e7b
--- /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 0000000000..b649935912
--- /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 0000000000..9ce960e0d5
--- /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 0000000000..bdcc672b57
--- /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 0000000000..7d86700b30
--- /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 0000000000..dfa9c2e4db
--- /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 0000000000..dc8e254df9
--- /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 0000000000..fb8c4decfd
--- /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 0000000000..2a19247731
--- /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 0000000000..bffea60572
--- /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 0000000000..b2621529e6
--- /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 0000000000..4fc84fc56e
--- /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 0000000000..631a31bf0c
--- /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 0000000000..dd77bfef1e
--- /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 0000000000..3d20199b00
--- /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 0000000000..860ae92612
--- /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 0000000000..f6da884541
--- /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 0000000000..ce9343a03c
--- /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 0000000000..15dd549c0d
--- /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 0000000000..12d951604b
--- /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 0000000000..b282dc3310
--- /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 0000000000..d1a4f156ec
--- /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 0000000000..73a206f02f
--- /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 0000000000..055a602efe
--- /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 0000000000..34518cd457
--- /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 0000000000..a37ca60971
--- /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 0000000000..284abe1b70
--- /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 0000000000..5bafeacf31
--- /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 0000000000..501e46f77c
--- /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 0000000000..a183fe71b0
--- /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 0000000000..6278554813
--- /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 0000000000..b7ddcc84b7
--- /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 0000000000..dca3237316
--- /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 0000000000..54dab48c59
--- /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 0000000000..9672956a57
--- /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 0000000000..f4c8ed9703
--- /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 0000000000..1498d17628
--- /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 0000000000..faac317fc7
--- /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 0000000000..5aeb0976b8
--- /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 0000000000..7a19ce9e97
--- /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 0000000000..25f777ee5d
--- /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 0000000000..ba71851d36
--- /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 0000000000..8651f929bf
--- /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 0000000000..e422974f40
--- /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 0000000000..e0d10d3ef4
--- /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 0000000000..992d6b649c
--- /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 0000000000..65295cb734
--- /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 0000000000..9b036895ee
--- /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 0000000000..e5377eb620
--- /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 0000000000..0511b14bc7
--- /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 0000000000..599acc357f
--- /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 0000000000..91cb76d9e4
--- /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 0000000000..84c4c16179
--- /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 0000000000..61a536e734
--- /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 0000000000..e226358fe2
--- /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 0000000000..72ecf8f54e
--- /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 0000000000..3283517ae8
--- /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 0000000000..8b27682997
--- /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 0000000000..27ad6ff26b
--- /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 0000000000..299bf8afa7
--- /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 0000000000..4e3d704f81
--- /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 0000000000..68ba7940b5
--- /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 0000000000..1b9aa68260
--- /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 0000000000..22c7bb4a60
--- /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 0000000000..fe926a04e1
--- /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 0000000000..672b66c8a5
--- /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 0000000000..b8a02483c1
--- /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 0000000000..3a5029a665
--- /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 0000000000..89297e0dbe
--- /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 0000000000..41637e06b8
--- /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 0000000000..f510a53e44
--- /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 0000000000..6df18e9c00
--- /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 0000000000..b1634e9a68
--- /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 0000000000..feefe49f32
--- /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 0000000000..e8eb4f7e12
--- /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 0000000000..a8784c11df
--- /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 0000000000..541fb995af
--- /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 0000000000..a094a088cb
--- /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 0000000000..b8eb8d4d81
--- /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 0000000000..8d68cc06b8
--- /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 0000000000..251d6c4278
--- /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 0000000000..e0d9031561
--- /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 0000000000..2b8f707d5f
--- /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 0000000000..2948355769
--- /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 0000000000..13a039f0b8
--- /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 0000000000..6b2c0290e9
--- /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 0000000000..57c87016c4
--- /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 0000000000..fddd836318
--- /dev/null
+++ b/configs/qong_defconfig
@@ -0,0 +1,2 @@
+CONFIG_ARM=y
+CONFIG_TARGET_QONG=y
diff --git a/configs/qt840a_defconfig b/configs/qt840a_defconfig
new file mode 100644
index 0000000000..acb100c718
--- /dev/null
+++ b/configs/qt840a_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="QT840A,SPL,AXP209_POWER,SUNXI_GMAC,MACPWR=SUNXI_GPH(21),USB_EHCI"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SUN7I=y
diff --git a/configs/r0p7734_defconfig b/configs/r0p7734_defconfig
new file mode 100644
index 0000000000..2b2d2cd6a2
--- /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 0000000000..87de323247
--- /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 0000000000..f0f97b0561
--- /dev/null
+++ b/configs/r7-tv-dongle_defconfig
@@ -0,0 +1,4 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="R7DONGLE,SPL,AXP152_POWER,USB_EHCI,SUNXI_USB_VBUS0_GPIO=SUNXI_GPG(13)"
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_SUN5I=y
diff --git a/configs/r7780mp_defconfig b/configs/r7780mp_defconfig
new file mode 100644
index 0000000000..7e201f5b77
--- /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 0000000000..666cb18550
--- /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 0000000000..2ecb1cfba8
--- /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 0000000000..d9c3e39844
--- /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 0000000000..ad87d0eb4a
--- /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 0000000000..5296bde84a
--- /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 0000000000..9a4705ed14
--- /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 0000000000..44c0bc85ed
--- /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 0000000000..aedc333dc4
--- /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 0000000000..25fdf80a7f
--- /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 0000000000..0568655e1e
--- /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 0000000000..c0c35090cf
--- /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 0000000000..572df1d0f9
--- /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 0000000000..91cca23d60
--- /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 0000000000..a7d791f85c
--- /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 0000000000..b97286081e
--- /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 0000000000..3f8d997af5
--- /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 0000000000..7a924172fe
--- /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 0000000000..c83a7ab1fb
--- /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 0000000000..e69de29bb2
--- /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 0000000000..b6b0fc7478
--- /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 0000000000..aa9cd3e4a0
--- /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 0000000000..fba9f311c6
--- /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 0000000000..b34cbb7871
--- /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 0000000000..f7aaa7d776
--- /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 0000000000..2e1171f06d
--- /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 0000000000..f1808e831a
--- /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 0000000000..ae4f63f4d0
--- /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 0000000000..b79b99329c
--- /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 0000000000..661fd0ff69
--- /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 0000000000..8cc95e5727
--- /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 0000000000..b74f7bc0f7
--- /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 0000000000..6b89473b6a
--- /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 0000000000..e77b04cf2b
--- /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 0000000000..75e0fc8248
--- /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 0000000000..048caeb9f5
--- /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 0000000000..c0f078bbdc
--- /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 0000000000..678c2bb5d1
--- /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 0000000000..0d0c6c1302
--- /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 0000000000..124154cc96
--- /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 0000000000..9ff41218b9
--- /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 0000000000..3066d97f84
--- /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 0000000000..8857e8a714
--- /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 0000000000..7cf93b47ed
--- /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 0000000000..31d2c38fd1
--- /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 0000000000..9e4b9c91fa
--- /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 0000000000..74c35505e7
--- /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 0000000000..fec4ba6839
--- /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 0000000000..a35e4fc175
--- /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 0000000000..12933f0301
--- /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 0000000000..7455235f23
--- /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 0000000000..d87986a00b
--- /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 0000000000..7055e2a13b
--- /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 0000000000..2faae15930
--- /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 0000000000..44c4701f26
--- /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 0000000000..19100c2526
--- /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 0000000000..4b2ede490b
--- /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 0000000000..d7ed82b879
--- /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 0000000000..25a08df34e
--- /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 0000000000..a4b70e8090
--- /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 0000000000..d750cf49d7
--- /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 0000000000..8bafdb5396
--- /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 0000000000..8a9ec859a0
--- /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 0000000000..1439ac53d2
--- /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 0000000000..19604b3fed
--- /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 0000000000..6342a56512
--- /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 0000000000..5b9f1f6d70
--- /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 0000000000..0567936ac6
--- /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 0000000000..3d91bb186e
--- /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 0000000000..fd0f908d3a
--- /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 0000000000..6cce316460
--- /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 0000000000..7ad3d8413e
--- /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 0000000000..a5ad90bb05
--- /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 0000000000..6b110ef97a
--- /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 0000000000..f1cb0aa17a
--- /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 0000000000..172c187f07
--- /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 0000000000..cf8b0ec847
--- /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 0000000000..8bd2f0776f
--- /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 0000000000..8c0f874c88
--- /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 0000000000..b7537df98d
--- /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 0000000000..1ffe9f9c54
--- /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 0000000000..f1701f24bd
--- /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 0000000000..d0642e4dd9
--- /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 0000000000..0407c87115
--- /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 0000000000..9f0d343a82
--- /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 0000000000..844e67fe3a
--- /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 0000000000..c61508af34
--- /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 0000000000..ac83725130
--- /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 0000000000..e956c6f856
--- /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 0000000000..d8b57b1242
--- /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 0000000000..98700487f3
--- /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 0000000000..9669dc052c
--- /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 0000000000..a9d5da01fa
--- /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 0000000000..fe9de13f36
--- /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 0000000000..2360d25d2c
--- /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 0000000000..1aaa9d183f
--- /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 0000000000..0170655122
--- /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 0000000000..abb6c5e0bc
--- /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 0000000000..96f7f79c44
--- /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 0000000000..ffff874816
--- /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 0000000000..b0915d2026
--- /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 0000000000..a662669d96
--- /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 0000000000..41fd9c1192
--- /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 0000000000..a2eb60ef71
--- /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 0000000000..60ebfa2512
--- /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 0000000000..7ea51f526a
--- /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 0000000000..bf6b6f127f
--- /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 0000000000..0a53f0980f
--- /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 0000000000..93b94c0f60
--- /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 0000000000..80c2df4937
--- /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 0000000000..6715e71f97
--- /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 0000000000..c096c65a88
--- /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 0000000000..444d3bbe95
--- /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 0000000000..ea70705a53
--- /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 0000000000..599d52c2ec
--- /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 0000000000..7e5702080e
--- /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 0000000000..a0e6664522
--- /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 0000000000..c1c9c43cdb
--- /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 0000000000..ecea63f5f9
--- /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 0000000000..27e836490e
--- /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 0000000000..0cbc4ee37b
--- /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 0000000000..fef179f411
--- /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 0000000000..76eeb11b8a
--- /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 0000000000..b365bff2f0
--- /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 0000000000..860a310113
--- /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 0000000000..8c0ac11ed9
--- /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 0000000000..c2107ccd15
--- /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 0000000000..811354c3d1
--- /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 0000000000..bb58153c1f
--- /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 0000000000..1c6ec89cd6
--- /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 0000000000..9ff8b68421
--- /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 0000000000..f33c97dc8f
--- /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 0000000000..f7b3a916e6
--- /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 0000000000..15eef483de
--- /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 0000000000..8aaac56e3d
--- /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 0000000000..926c6e4050
--- /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 0000000000..e0e8e445a3
--- /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 0000000000..d8209d1e1a
--- /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 0000000000..0e16ff9cac
--- /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 0000000000..29734b8274
--- /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 0000000000..220f87586c
--- /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 0000000000..5335472e5e
--- /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 0000000000..462c4827cd
--- /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 0000000000..2bfa91db6e
--- /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 0000000000..75fca961ca
--- /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 0000000000..9d64dd0e56
--- /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 0000000000..fadaf93cdd
--- /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 0000000000..9d24558688
--- /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 0000000000..a335abcf78
--- /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 0000000000..e6dd8e7224
--- /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 0000000000..ee5b351b86
--- /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 0000000000..fafed03ad1
--- /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 0000000000..1ff2ebfa62
--- /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 0000000000..10e6432bb4
--- /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 0000000000..3eb399389a
--- /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 0000000000..430dbc0235
--- /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 0000000000..39cd7258e5
--- /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 0000000000..70a07abe65
--- /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 0000000000..8df2cfd742
--- /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 0000000000..74609ab097
--- /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 0000000000..d6163ef74f
--- /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 0000000000..2a536a564c
--- /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 0000000000..844e67fe3a
--- /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 0000000000..5a1f7f54dc
--- /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 0000000000..d940848cca
--- /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 0000000000..66aa5d395b
--- /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 0000000000..cdc2c90ea6
--- /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 0000000000..6c78548517
--- /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 0000000000..9f96bd9a09
--- /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 0000000000..d3dcb3c3c1
--- /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 0000000000..2ccddc1bbc
--- /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 0000000000..cb66890498
--- /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 0000000000..52e301ca33
--- /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 0000000000..737db40959
--- /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 0000000000..691412cb6e
--- /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 0000000000..317b63d4a7
--- /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 0000000000..31ce75b872
--- /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 0000000000..635926ffba
--- /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 0000000000..635da2658c
--- /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 0000000000..b8513c1a1c
--- /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 0000000000..d5f526d54e
--- /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 0000000000..8001dd13a9
--- /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 0000000000..dc33ca9a4f
--- /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 0000000000..843095be16
--- /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 0000000000..d5eea68c04
--- /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 0000000000..6c8e20a36e
--- /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 0000000000..546f10ae8b
--- /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 0000000000..8d921a0bfe
--- /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 0000000000..80a66d03fd
--- /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 0000000000..14024d0412
--- /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 0000000000..d2e79a542c
--- /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 0000000000..e9f9c4b1f1
--- /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 0000000000..78f1fe68ca
--- /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 0000000000..d96e8ffd00
--- /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 0000000000..abf7e8236f
--- /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.ARM-SoC b/doc/README.ARM-SoC
deleted file mode 100644
index d6bd624886..0000000000
--- a/doc/README.ARM-SoC
+++ /dev/null
@@ -1,31 +0,0 @@
-[By Steven Scholz <steven.scholz@imc-berlin.de>, 16 Aug 2004]
-
-Since the cpu/ directory gets clobbered with peripheral driver code I
-started cleaning up arch/arm/cpu/arm920t.
-
-I introduced the concept of Soc (system on a chip) into the ./cpu
-directory. That means that code that is cpu (i.e. core) specific
-resides in
-
- $(CPUDIR)/
-
-and code that is specific to some SoC (i.e. vendor specific
-peripherals around the core) is moved into
-
- $(CPUDIR)/$(SOC)/
-
-Thus a library/archive "$(CPUDIR)/$(SOC)/lib$(SOC).a" will be build
-and linked. Examples will be
-
- arch/arm/cpu/arm920t/imx/
- arch/arm/cpu/arm920t/s3c24x0
-
-One can select an SoC by passing the name of it to ./mkconfig just
-like
-
- @./mkconfig $(@:_config=) arm arm920t vcma9 mpl s3c24x0
-
-If there's no VENDOR field (like "mpl" in the above line) one has to
-pass NULL instead:
-
- @./mkconfig $(@:_config=) arm arm920t mx1ads NULL imx
diff --git a/doc/README.SPL b/doc/README.SPL
index 57a39a489b..c283dcff62 100644
--- a/doc/README.SPL
+++ b/doc/README.SPL
@@ -13,34 +13,29 @@ can be reused. No code duplication or symlinking is necessary anymore.
How it works
------------
-There is a new directory $(srctree)/spl which contains only a Makefile.
-The object files are built separately for SPL and placed in this directory.
+The object files for SPL are built separately and placed in the "spl" directory.
The final binaries which are generated are u-boot-spl, u-boot-spl.bin and
u-boot-spl.map.
-During the SPL build a variable named CONFIG_SPL_BUILD is exported
-in the make environment and also appended to CPPFLAGS with -DCONFIG_SPL_BUILD.
+A config option named CONFIG_SPL_BUILD is enabled by Kconfig for SPL.
Source files can therefore be compiled for SPL with different settings.
-ARM-based boards have previously used the option CONFIG_PRELOADER for it.
For example:
ifeq ($(CONFIG_SPL_BUILD),y)
-COBJS-y += board_spl.o
+obj-y += board_spl.o
else
-COBJS-y += board.o
+obj-y += board.o
endif
-COBJS-$(CONFIG_SPL_BUILD) += foo.o
+obj-$(CONFIG_SPL_BUILD) += foo.o
#ifdef CONFIG_SPL_BUILD
foo();
#endif
-The building of SPL images can be with:
-
-#define CONFIG_SPL
+The building of SPL images can be enabled by CONFIG_SPL option in Kconfig.
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
@@ -70,17 +65,6 @@ CONFIG_SPL_SPI_LOAD (drivers/mtd/spi/spi_spl_load.o)
CONFIG_SPL_RAM_DEVICE (common/spl/spl.c)
CONFIG_SPL_WATCHDOG_SUPPORT (drivers/watchdog/libwatchdog.o)
-Normally CPU is assumed to be the same between the SPL and normal
-u-boot build. However it is possible to specify a different CPU for
-the SPL build for cases where the SPL is expected to run on a
-different CPU model from the main u-boot. This is done by specifying
-an SPL CPU in boards.cfg as follows:
-
- normal_cpu:spl_cpu
-
-This case CPU will be set to "normal_cpu" during the main u-boot
-build and "spl_cpu" during the SPL build.
-
Debugging
---------
diff --git a/doc/device-tree-bindings/spi/spi-bus.txt b/doc/device-tree-bindings/spi/spi-bus.txt
index 800dafe5b0..5c8720a820 100644
--- a/doc/device-tree-bindings/spi/spi-bus.txt
+++ b/doc/device-tree-bindings/spi/spi-bus.txt
@@ -59,6 +59,8 @@ contain the following properties.
used for MOSI. Defaults to 1 if not present.
- spi-rx-bus-width - (optional) The bus width(number of data wires) that
used for MISO. Defaults to 1 if not present.
+- spi-half-duplex - (optional) Indicates that the SPI bus should wait for
+ a header byte before reading data from the slave.
Some SPI controllers and devices support Dual and Quad SPI transfer mode.
It allows data in SPI system transfered in 2 wires(DUAL) or 4 wires(QUAD).
diff --git a/doc/feature-removal-schedule.txt b/doc/feature-removal-schedule.txt
index 16819c7754..4ed30df707 100644
--- a/doc/feature-removal-schedule.txt
+++ b/doc/feature-removal-schedule.txt
@@ -26,7 +26,7 @@ Why: We now have a PHY library, which allows everyone to share PHY
drivers. All new drivers should use this infrastructure, and
all old drivers should get converted to use it.
-Who: Andy Fleming <afleming@freescale.com> and driver maintainers
+Who: Andy Fleming <afleming@gmail.com> and driver maintainers
---------------------------
diff --git a/doc/git-mailrc b/doc/git-mailrc
index ae7e7bfb5b..0985791293 100644
--- a/doc/git-mailrc
+++ b/doc/git-mailrc
@@ -12,7 +12,7 @@ alias u-boot uboot
# things simple and easy to look up/coordinate.
alias aaribaud Albert Aribaud <albert.u.boot@aribaud.net>
alias abiessmann Andreas Bießmann <andreas.devel@googlemail.com>
-alias afleming Andy Fleming <afleming@freescale.com>
+alias afleming Andy Fleming <afleming@gmail.com>
alias ag Anatolij Gustschin <agust@denx.de>
alias galak Kumar Gala <galak@kernel.crashing.org>
alias gruss Graeme Russ <graeme.russ@gmail.com>
@@ -27,6 +27,7 @@ alias kimphill Kim Phillips <kim.phillips@freescale.com>
alias lukma Lukasz Majewski <l.majewski@samsung.com>
alias macpaul Macpaul Lin <macpaul@andestech.com>
alias marex Marek Vasut <marex@denx.de>
+alias masahiro Masahiro Yamada <yamada.m@jp.panasonic.com>
alias monstr Michal Simek <monstr@monstr.eu>
alias panto Pantelis Antoniou <panto@antoniou-consulting.com>
alias prafulla Prafulla Wadaskar <prafulla@marvell.com>
@@ -110,6 +111,7 @@ alias dfu uboot, lukma
alias kerneldoc uboot, marex
alias fdt uboot, Jerry Van Baren <vanbaren@cideas.com>
alias i2c uboot, hs
+alias kconfig uboot, masahiro
alias mmc uboot, panto
alias nand uboot, scottwood
alias net uboot, jhersh
diff --git a/drivers/block/ahci.c b/drivers/block/ahci.c
index 4df804671a..dce99adc6b 100644
--- a/drivers/block/ahci.c
+++ b/drivers/block/ahci.c
@@ -129,6 +129,14 @@ int __weak ahci_link_up(struct ahci_probe_ent *probe_ent, u8 port)
return 1;
}
+#ifdef CONFIG_SUNXI_AHCI
+/* The sunxi AHCI controller requires this undocumented setup */
+static void sunxi_dma_init(volatile u8 *port_mmio)
+{
+ clrsetbits_le32(port_mmio + PORT_P0DMACR, 0x0000ff00, 0x00004400);
+}
+#endif
+
static int ahci_host_init(struct ahci_probe_ent *probe_ent)
{
#ifndef CONFIG_SCSI_AHCI_PLAT
@@ -213,6 +221,10 @@ static int ahci_host_init(struct ahci_probe_ent *probe_ent)
msleep(500);
}
+#ifdef CONFIG_SUNXI_AHCI
+ sunxi_dma_init(port_mmio);
+#endif
+
/* Add the spinup command to whatever mode bits may
* already be on in the command register.
*/
@@ -545,6 +557,10 @@ static int ahci_port_start(u8 port)
writel_with_flush(pp->rx_fis, port_mmio + PORT_FIS_ADDR);
+#ifdef CONFIG_SUNXI_AHCI
+ sunxi_dma_init(port_mmio);
+#endif
+
writel_with_flush(PORT_CMD_ICC_ACTIVE | PORT_CMD_FIS_RX |
PORT_CMD_POWER_ON | PORT_CMD_SPIN_UP |
PORT_CMD_START, port_mmio + PORT_CMD);
diff --git a/drivers/bootcount/bootcount.c b/drivers/bootcount/bootcount.c
index 3ad441393e..e0343f71d7 100644
--- a/drivers/bootcount/bootcount.c
+++ b/drivers/bootcount/bootcount.c
@@ -36,7 +36,7 @@
#endif /* defined(CONFIG_MPC8260) */
#if defined(CONFIG_QE)
-#include <asm/immap_qe.h>
+#include <linux/immap_qe.h>
#define CONFIG_SYS_BOOTCOUNT_ADDR (CONFIG_SYS_IMMR + 0x110000 + \
QE_MURAM_SIZE - 2 * sizeof(u32))
diff --git a/drivers/ddr/fsl/ctrl_regs.c b/drivers/ddr/fsl/ctrl_regs.c
index dcf6287f66..04e4178b15 100644
--- a/drivers/ddr/fsl/ctrl_regs.c
+++ b/drivers/ddr/fsl/ctrl_regs.c
@@ -1857,6 +1857,9 @@ static void set_timing_cfg_8(fsl_ddr_cfg_regs_t *ddr,
acttoact_bg = picos_to_mclk(common_dimm->trrdl_ps);
wrtord_bg = max(4, picos_to_mclk(7500));
+ if (popts->otf_burst_chop_en)
+ wrtord_bg += 2;
+
pre_all_rec = 0;
ddr->timing_cfg_8 = (0
diff --git a/drivers/ddr/fsl/fsl_ddr_gen4.c b/drivers/ddr/fsl/fsl_ddr_gen4.c
index 7cd878aeec..bfc76b3485 100644
--- a/drivers/ddr/fsl/fsl_ddr_gen4.c
+++ b/drivers/ddr/fsl/fsl_ddr_gen4.c
@@ -8,6 +8,7 @@
#include <asm/io.h>
#include <fsl_ddr_sdram.h>
#include <asm/processor.h>
+#include <fsl_immap.h>
#include <fsl_ddr.h>
#if (CONFIG_CHIP_SELECTS_PER_CTRL > 4)
@@ -183,12 +184,14 @@ step2:
* we choose the max, that is 500 us for all of case.
*/
udelay(500);
- asm volatile("sync;isync");
+ mb();
+ isb();
/* Let the controller go */
temp_sdram_cfg = ddr_in32(&ddr->sdram_cfg) & ~SDRAM_CFG_BI;
ddr_out32(&ddr->sdram_cfg, temp_sdram_cfg | SDRAM_CFG_MEM_EN);
- asm volatile("sync;isync");
+ mb();
+ isb();
total_gb_size_per_controller = 0;
for (i = 0; i < CONFIG_CHIP_SELECTS_PER_CTRL; i++) {
diff --git a/drivers/misc/cros_ec_spi.c b/drivers/misc/cros_ec_spi.c
index 7df709cc71..015333f139 100644
--- a/drivers/misc/cros_ec_spi.c
+++ b/drivers/misc/cros_ec_spi.c
@@ -98,7 +98,7 @@ int cros_ec_spi_command(struct cros_ec_dev *dev, uint8_t cmd, int cmd_version,
}
out = dev->dout;
- out[0] = cmd_version;
+ out[0] = EC_CMD_VERSION0 + cmd_version;
out[1] = cmd;
out[2] = (uint8_t)dout_len;
memcpy(out + 3, dout, dout_len);
@@ -165,7 +165,7 @@ int cros_ec_spi_decode_fdt(struct cros_ec_dev *dev, const void *blob)
*/
int cros_ec_spi_init(struct cros_ec_dev *dev, const void *blob)
{
- dev->spi = spi_setup_slave_fdt(blob, dev->parent_node, dev->node);
+ dev->spi = spi_setup_slave_fdt(blob, dev->node, dev->parent_node);
if (!dev->spi) {
debug("%s: Could not setup SPI slave\n", __func__);
return -1;
diff --git a/drivers/mmc/Makefile b/drivers/mmc/Makefile
index 34febf52f0..464cee16d1 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 54cfabfb91..82079d67cd 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 5bf36a0309..0df30bc045 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 a57a9b1faf..45bcffb6b2 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 0000000000..97591983d2
--- /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 0000000000..1b5b70512d
--- /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/mtd/nand/fsl_ifc_nand.c b/drivers/mtd/nand/fsl_ifc_nand.c
index be5a16a1ba..8b453cb383 100644
--- a/drivers/mtd/nand/fsl_ifc_nand.c
+++ b/drivers/mtd/nand/fsl_ifc_nand.c
@@ -19,8 +19,11 @@
#include <asm/errno.h>
#include <fsl_ifc.h>
-#define FSL_IFC_V1_1_0 0x01010000
-#define MAX_BANKS 4
+#ifndef CONFIG_SYS_FSL_IFC_BANK_COUNT
+#define CONFIG_SYS_FSL_IFC_BANK_COUNT 4
+#endif
+
+#define MAX_BANKS CONFIG_SYS_FSL_IFC_BANK_COUNT
#define ERR_BYTE 0xFF /* Value returned for read bytes
when read failed */
#define IFC_TIMEOUT_MSECS 10 /* Maximum number of mSecs to wait for IFC
@@ -802,12 +805,30 @@ static void fsl_ifc_select_chip(struct mtd_info *mtd, int chip)
{
}
-static void fsl_ifc_sram_init(void)
+static int fsl_ifc_sram_init(uint32_t ver)
{
struct fsl_ifc *ifc = ifc_ctrl->regs;
uint32_t cs = 0, csor = 0, csor_8k = 0, csor_ext = 0;
+ uint32_t ncfgr = 0;
long long end_tick;
+ if (ver > FSL_IFC_V1_1_0) {
+ ncfgr = ifc_in32(&ifc->ifc_nand.ncfgr);
+ ifc_out32(&ifc->ifc_nand.ncfgr, ncfgr | IFC_NAND_SRAM_INIT_EN);
+
+ /* wait for SRAM_INIT bit to be clear or timeout */
+ end_tick = usec2ticks(IFC_TIMEOUT_MSECS * 1000) + get_ticks();
+ while (end_tick > get_ticks()) {
+ ifc_ctrl->status =
+ ifc_in32(&ifc->ifc_nand.nand_evter_stat);
+
+ if (!(ifc_ctrl->status & IFC_NAND_SRAM_INIT_EN))
+ return 0;
+ }
+ printf("fsl-ifc: Failed to Initialise SRAM\n");
+ return 1;
+ }
+
cs = ifc_ctrl->cs_nand >> IFC_NAND_CSEL_SHIFT;
/* Save CSOR and CSOR_ext */
@@ -850,11 +871,18 @@ static void fsl_ifc_sram_init(void)
break;
}
+ if (ifc_ctrl->status != IFC_NAND_EVTER_STAT_OPC) {
+ printf("fsl-ifc: Failed to Initialise SRAM\n");
+ return 1;
+ }
+
ifc_out32(&ifc->ifc_nand.nand_evter_stat, ifc_ctrl->status);
/* Restore CSOR and CSOR_ext */
ifc_out32(&ifc_ctrl->regs->csor_cs[cs].csor, csor);
ifc_out32(&ifc_ctrl->regs->csor_cs[cs].csor_ext, csor_ext);
+
+ return 0;
}
static int fsl_ifc_chip_init(int devnum, u8 *addr)
@@ -864,7 +892,7 @@ static int fsl_ifc_chip_init(int devnum, u8 *addr)
struct fsl_ifc_mtd *priv;
struct nand_ecclayout *layout;
uint32_t cspr = 0, csor = 0, ver = 0;
- int ret;
+ int ret = 0;
if (!ifc_ctrl) {
fsl_ifc_ctrl_init();
@@ -1006,8 +1034,13 @@ static int fsl_ifc_chip_init(int devnum, u8 *addr)
}
ver = ifc_in32(&ifc_ctrl->regs->ifc_rev);
- if (ver == FSL_IFC_V1_1_0)
- fsl_ifc_sram_init();
+ if (ver >= FSL_IFC_V1_1_0)
+ ret = fsl_ifc_sram_init(ver);
+ if (ret)
+ return ret;
+
+ if (ver >= FSL_IFC_V2_0_0)
+ priv->bufnum_mask = (priv->bufnum_mask * 2) + 1;
ret = nand_scan_ident(mtd, 1, NULL);
if (ret)
diff --git a/drivers/mtd/nand/fsl_ifc_spl.c b/drivers/mtd/nand/fsl_ifc_spl.c
index 510077282c..e336cb1c94 100644
--- a/drivers/mtd/nand/fsl_ifc_spl.c
+++ b/drivers/mtd/nand/fsl_ifc_spl.c
@@ -97,7 +97,7 @@ int nand_spl_load_image(uint32_t offs, unsigned int uboot_size, void *vdst)
int pages_per_blk;
int blk_size;
int bad_marker = 0;
- int bufnum_mask, bufnum;
+ int bufnum_mask, bufnum, ver = 0;
int csor, cspr;
int pos = 0;
@@ -130,6 +130,10 @@ int nand_spl_load_image(uint32_t offs, unsigned int uboot_size, void *vdst)
bad_marker = 5;
}
+ ver = ifc_in32(&ifc->ifc_rev);
+ if (ver >= FSL_IFC_V2_0_0)
+ bufnum_mask = (bufnum_mask * 2) + 1;
+
pages_per_blk =
32 << ((csor & CSOR_NAND_PB_MASK) >> CSOR_NAND_PB_SHIFT);
diff --git a/drivers/mtd/spi/sf_ops.c b/drivers/mtd/spi/sf_ops.c
index ef91b924d7..85cf22d42e 100644
--- a/drivers/mtd/spi/sf_ops.c
+++ b/drivers/mtd/spi/sf_ops.c
@@ -421,6 +421,7 @@ int spi_flash_cmd_read_ops(struct spi_flash *flash, u32 offset,
data += read_len;
}
+ free(cmd);
return ret;
}
diff --git a/drivers/net/fm/fm.h b/drivers/net/fm/fm.h
index 43de114b52..316e06e17e 100644
--- a/drivers/net/fm/fm.h
+++ b/drivers/net/fm/fm.h
@@ -143,6 +143,7 @@ struct fm_eth {
#define MAX_RXBUF_LOG2 11
#define MAX_RXBUF_LEN (1 << MAX_RXBUF_LOG2)
-#define PORT_IS_ENABLED(port) fm_info[fm_port_to_index(port)].enabled
+#define PORT_IS_ENABLED(port) (fm_port_to_index(port) == -1 ? \
+ 0 : fm_info[fm_port_to_index(port)].enabled)
#endif /* __FM_H__ */
diff --git a/drivers/net/fm/init.c b/drivers/net/fm/init.c
index cd787f4eed..ff04695c32 100644
--- a/drivers/net/fm/init.c
+++ b/drivers/net/fm/init.c
@@ -147,6 +147,9 @@ void fm_disable_port(enum fm_port port)
{
int i = fm_port_to_index(port);
+ if (i == -1)
+ return;
+
fm_info[i].enabled = 0;
fman_disable_port(port);
}
@@ -155,6 +158,9 @@ void fm_enable_port(enum fm_port port)
{
int i = fm_port_to_index(port);
+ if (i == -1)
+ return;
+
fm_info[i].enabled = 1;
fman_enable_port(port);
}
diff --git a/drivers/net/fm/memac_phy.c b/drivers/net/fm/memac_phy.c
index de9c0e9cd2..5f910c2cdd 100644
--- a/drivers/net/fm/memac_phy.c
+++ b/drivers/net/fm/memac_phy.c
@@ -1,6 +1,6 @@
/*
* Copyright 2012 Freescale Semiconductor, Inc.
- * Andy Fleming <afleming@freescale.com>
+ * Andy Fleming <afleming@gmail.com>
* Roy Zang <tie-fei.zang@freescale.com>
*
* SPDX-License-Identifier: GPL-2.0+
diff --git a/drivers/net/fm/tgec_phy.c b/drivers/net/fm/tgec_phy.c
index faec317a0a..095f00cf97 100644
--- a/drivers/net/fm/tgec_phy.c
+++ b/drivers/net/fm/tgec_phy.c
@@ -1,6 +1,6 @@
/*
* Copyright 2009-2011 Freescale Semiconductor, Inc.
- * Andy Fleming <afleming@freescale.com>
+ * Andy Fleming <afleming@gmail.com>
*
* SPDX-License-Identifier: GPL-2.0+
* Some part is taken from tsec.c
diff --git a/drivers/pci/fsl_pci_init.c b/drivers/pci/fsl_pci_init.c
index 3a41b0ec17..231b07573f 100644
--- a/drivers/pci/fsl_pci_init.c
+++ b/drivers/pci/fsl_pci_init.c
@@ -504,8 +504,14 @@ void fsl_pci_init(struct pci_controller *hose, struct fsl_pci_info *pci_info)
}
#endif
if (!enabled) {
- /* Let the user know there's no PCIe link */
- printf("no link, regs @ 0x%lx\n", pci_info->regs);
+ /* Let the user know there's no PCIe link for root
+ * complex. for endpoint, the link may not setup, so
+ * print undetermined.
+ */
+ if (fsl_is_pci_agent(hose))
+ printf("undetermined, regs @ 0x%lx\n", pci_info->regs);
+ else
+ printf("no link, regs @ 0x%lx\n", pci_info->regs);
hose->last_busno = hose->first_busno;
return;
}
diff --git a/drivers/qe/qe.c b/drivers/qe/qe.c
index 9c5fbd1d69..be09a17297 100644
--- a/drivers/qe/qe.c
+++ b/drivers/qe/qe.c
@@ -11,7 +11,7 @@
#include <command.h>
#include "asm/errno.h"
#include "asm/io.h"
-#include "asm/immap_qe.h"
+#include "linux/immap_qe.h"
#include "qe.h"
#define MPC85xx_DEVDISR_QE_DISABLE 0x1
diff --git a/drivers/qe/uccf.c b/drivers/qe/uccf.c
index 593d96d1a2..85386bfc70 100644
--- a/drivers/qe/uccf.c
+++ b/drivers/qe/uccf.c
@@ -11,7 +11,7 @@
#include "malloc.h"
#include "asm/errno.h"
#include "asm/io.h"
-#include "asm/immap_qe.h"
+#include "linux/immap_qe.h"
#include "qe.h"
#include "uccf.h"
diff --git a/drivers/qe/uccf.h b/drivers/qe/uccf.h
index 0b57e2f422..55941e4601 100644
--- a/drivers/qe/uccf.h
+++ b/drivers/qe/uccf.h
@@ -12,7 +12,7 @@
#include "common.h"
#include "qe.h"
-#include "asm/immap_qe.h"
+#include "linux/immap_qe.h"
/* Fast or Giga ethernet
*/
diff --git a/drivers/qe/uec.c b/drivers/qe/uec.c
index 68045733b8..c91f084a7c 100644
--- a/drivers/qe/uec.c
+++ b/drivers/qe/uec.c
@@ -11,7 +11,7 @@
#include "malloc.h"
#include "asm/errno.h"
#include "asm/io.h"
-#include "asm/immap_qe.h"
+#include "linux/immap_qe.h"
#include "qe.h"
#include "uccf.h"
#include "uec.h"
diff --git a/drivers/qe/uec_phy.c b/drivers/qe/uec_phy.c
index 5dc4641bf6..e701787c41 100644
--- a/drivers/qe/uec_phy.c
+++ b/drivers/qe/uec_phy.c
@@ -14,7 +14,7 @@
#include "net.h"
#include "malloc.h"
#include "asm/errno.h"
-#include "asm/immap_qe.h"
+#include "linux/immap_qe.h"
#include "asm/io.h"
#include "qe.h"
#include "uccf.h"
diff --git a/drivers/spi/exynos_spi.c b/drivers/spi/exynos_spi.c
index c92276fdf7..2969184ee8 100644
--- a/drivers/spi/exynos_spi.c
+++ b/drivers/spi/exynos_spi.c
@@ -428,10 +428,6 @@ void spi_cs_activate(struct spi_slave *slave)
clrbits_le32(&spi_slave->regs->cs_reg, SPI_SLAVE_SIG_INACT);
debug("Activate CS, bus %d\n", spi_slave->slave.bus);
spi_slave->skip_preamble = spi_slave->mode & SPI_PREAMBLE;
-
- /* Remember time of this transaction so we can honour the bus delay */
- if (spi_slave->bus->deactivate_delay_us)
- spi_slave->last_transaction_us = timer_get_us();
}
/**
@@ -445,6 +441,11 @@ void spi_cs_deactivate(struct spi_slave *slave)
struct exynos_spi_slave *spi_slave = to_exynos_spi(slave);
setbits_le32(&spi_slave->regs->cs_reg, SPI_SLAVE_SIG_INACT);
+
+ /* Remember time of this transaction so we can honour the bus delay */
+ if (spi_slave->bus->deactivate_delay_us)
+ spi_slave->last_transaction_us = timer_get_us();
+
debug("Deactivate CS, bus %d\n", spi_slave->slave.bus);
}
diff --git a/drivers/spi/mxc_spi.c b/drivers/spi/mxc_spi.c
index f3f029d634..2d5f3850da 100644
--- a/drivers/spi/mxc_spi.c
+++ b/drivers/spi/mxc_spi.c
@@ -30,6 +30,10 @@ static unsigned long spi_bases[] = {
#define reg_read readl
#define reg_write(a, v) writel(v, a)
+#if !defined(CONFIG_SYS_SPI_MXC_WAIT)
+#define CONFIG_SYS_SPI_MXC_WAIT (CONFIG_SYS_HZ/100) /* 10 ms */
+#endif
+
struct mxc_spi_slave {
struct spi_slave slave;
unsigned long base;
@@ -212,6 +216,8 @@ int spi_xchg_single(struct spi_slave *slave, unsigned int bitlen,
int nbytes = DIV_ROUND_UP(bitlen, 8);
u32 data, cnt, i;
struct cspi_regs *regs = (struct cspi_regs *)mxcs->base;
+ u32 ts;
+ int status;
debug("%s: bitlen %d dout 0x%x din 0x%x\n",
__func__, bitlen, (u32)dout, (u32)din);
@@ -272,9 +278,16 @@ int spi_xchg_single(struct spi_slave *slave, unsigned int bitlen,
reg_write(&regs->ctrl, mxcs->ctrl_reg |
MXC_CSPICTRL_EN | MXC_CSPICTRL_XCH);
+ ts = get_timer(0);
+ status = reg_read(&regs->stat);
/* Wait until the TC (Transfer completed) bit is set */
- while ((reg_read(&regs->stat) & MXC_CSPICTRL_TC) == 0)
- ;
+ while ((status & MXC_CSPICTRL_TC) == 0) {
+ if (get_timer(ts) > CONFIG_SYS_SPI_MXC_WAIT) {
+ printf("spi_xchg_single: Timeout!\n");
+ return -1;
+ }
+ status = reg_read(&regs->stat);
+ }
/* Transfer completed, clear any pending request */
reg_write(&regs->stat, MXC_CSPICTRL_TC | MXC_CSPICTRL_RXOVF);
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index 7ddea9b026..7d81fbd7f8 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -53,6 +53,8 @@ struct spi_slave *spi_base_setup_slave_fdt(const void *blob, int busnum,
mode |= SPI_CPHA;
if (fdtdec_get_bool(blob, node, "spi-cs-high"))
mode |= SPI_CS_HIGH;
+ if (fdtdec_get_bool(blob, node, "spi-half-duplex"))
+ mode |= SPI_PREAMBLE;
return spi_setup_slave(busnum, cs, max_hz, mode);
}
#endif
diff --git a/drivers/usb/host/Makefile b/drivers/usb/host/Makefile
index 04c1a642a3..c4f5157a84 100644
--- a/drivers/usb/host/Makefile
+++ b/drivers/usb/host/Makefile
@@ -35,6 +35,7 @@ obj-$(CONFIG_USB_EHCI_PPC4XX) += ehci-ppc4xx.o
obj-$(CONFIG_USB_EHCI_MARVELL) += ehci-marvell.o
obj-$(CONFIG_USB_EHCI_PCI) += ehci-pci.o
obj-$(CONFIG_USB_EHCI_SPEAR) += ehci-spear.o
+obj-$(CONFIG_USB_EHCI_SUNXI) += ehci-sunxi.o
obj-$(CONFIG_USB_EHCI_TEGRA) += ehci-tegra.o
obj-$(CONFIG_USB_EHCI_VCT) += ehci-vct.o
obj-$(CONFIG_USB_EHCI_RMOBILE) += ehci-rmobile.o
diff --git a/drivers/usb/host/ehci-sunxi.c b/drivers/usb/host/ehci-sunxi.c
new file mode 100644
index 0000000000..23617b7adc
--- /dev/null
+++ b/drivers/usb/host/ehci-sunxi.c
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2014 Roman Byshko
+ *
+ * Roman Byshko <rbyshko@gmail.com>
+ *
+ * Based on code from
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <asm/arch/clock.h>
+#include <asm/gpio.h>
+#include <asm/io.h>
+#include <common.h>
+#include "ehci.h"
+
+#define SUNXI_USB1_IO_BASE 0x01c14000
+#define SUNXI_USB2_IO_BASE 0x01c1c000
+
+#define SUNXI_USB_PMU_IRQ_ENABLE 0x800
+#define SUNXI_USB_CSR 0x01c13404
+#define SUNXI_USB_PASSBY_EN 1
+
+#define SUNXI_EHCI_AHB_ICHR8_EN (1 << 10)
+#define SUNXI_EHCI_AHB_INCR4_BURST_EN (1 << 9)
+#define SUNXI_EHCI_AHB_INCRX_ALIGN_EN (1 << 8)
+#define SUNXI_EHCI_ULPI_BYPASS_EN (1 << 0)
+
+static struct sunxi_ehci_hcd {
+ struct usb_hcd *hcd;
+ int usb_rst_mask;
+ int ahb_clk_mask;
+ int gpio_vbus;
+ void *csr;
+ int irq;
+ int id;
+} sunxi_echi_hcd[] = {
+ {
+ .usb_rst_mask = CCM_USB_CTRL_PHY1_RST,
+ .ahb_clk_mask = 1 << AHB_GATE_OFFSET_USB_EHCI0,
+ .gpio_vbus = CONFIG_SUNXI_USB_VBUS0_GPIO,
+ .csr = (void *)SUNXI_USB_CSR,
+ .irq = 39,
+ .id = 1,
+ },
+#if (CONFIG_USB_MAX_CONTROLLER_COUNT > 1)
+ {
+ .usb_rst_mask = CCM_USB_CTRL_PHY2_RST,
+ .ahb_clk_mask = 1 << AHB_GATE_OFFSET_USB_EHCI1,
+ .gpio_vbus = CONFIG_SUNXI_USB_VBUS1_GPIO,
+ .csr = (void *)SUNXI_USB_CSR,
+ .irq = 40,
+ .id = 2,
+ }
+#endif
+};
+
+static int enabled_hcd_count;
+
+static void *get_io_base(int hcd_id)
+{
+ if (hcd_id == 1)
+ return (void *)SUNXI_USB1_IO_BASE;
+ else if (hcd_id == 2)
+ return (void *)SUNXI_USB2_IO_BASE;
+ else
+ return NULL;
+}
+
+static void usb_phy_write(struct sunxi_ehci_hcd *sunxi_ehci, int addr,
+ int data, int len)
+{
+ int j = 0, usbc_bit = 0;
+ void *dest = sunxi_ehci->csr;
+
+ usbc_bit = 1 << (sunxi_ehci->id * 2);
+ for (j = 0; j < len; j++) {
+ /* set the bit address to be written */
+ clrbits_le32(dest, 0xff << 8);
+ setbits_le32(dest, (addr + j) << 8);
+
+ clrbits_le32(dest, usbc_bit);
+ /* set data bit */
+ if (data & 0x1)
+ setbits_le32(dest, 1 << 7);
+ else
+ clrbits_le32(dest, 1 << 7);
+
+ setbits_le32(dest, usbc_bit);
+
+ clrbits_le32(dest, usbc_bit);
+
+ data >>= 1;
+ }
+}
+
+static void sunxi_usb_phy_init(struct sunxi_ehci_hcd *sunxi_ehci)
+{
+ /* The following comments are machine
+ * translated from Chinese, you have been warned!
+ */
+
+ /* adjust PHY's magnitude and rate */
+ usb_phy_write(sunxi_ehci, 0x20, 0x14, 5);
+
+ /* threshold adjustment disconnect */
+#ifdef CONFIG_SUN4I
+ usb_phy_write(sunxi_ehci, 0x2a, 3, 2);
+#else
+ usb_phy_write(sunxi_ehci, 0x2a, 2, 2);
+#endif
+
+ return;
+}
+
+static void sunxi_usb_passby(struct sunxi_ehci_hcd *sunxi_ehci, int enable)
+{
+ unsigned long bits = 0;
+ void *addr = get_io_base(sunxi_ehci->id) + SUNXI_USB_PMU_IRQ_ENABLE;
+
+ bits = SUNXI_EHCI_AHB_ICHR8_EN |
+ SUNXI_EHCI_AHB_INCR4_BURST_EN |
+ SUNXI_EHCI_AHB_INCRX_ALIGN_EN |
+ SUNXI_EHCI_ULPI_BYPASS_EN;
+
+ if (enable)
+ setbits_le32(addr, bits);
+ else
+ clrbits_le32(addr, bits);
+
+ return;
+}
+
+static void sunxi_ehci_enable(struct sunxi_ehci_hcd *sunxi_ehci)
+{
+ struct sunxi_ccm_reg *ccm = (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+
+ setbits_le32(&ccm->usb_clk_cfg, sunxi_ehci->usb_rst_mask);
+ setbits_le32(&ccm->ahb_gate0, sunxi_ehci->ahb_clk_mask);
+
+ sunxi_usb_phy_init(sunxi_ehci);
+
+ sunxi_usb_passby(sunxi_ehci, SUNXI_USB_PASSBY_EN);
+
+ gpio_direction_output(sunxi_ehci->gpio_vbus, 1);
+}
+
+static void sunxi_ehci_disable(struct sunxi_ehci_hcd *sunxi_ehci)
+{
+ struct sunxi_ccm_reg *ccm = (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+
+ gpio_direction_output(sunxi_ehci->gpio_vbus, 0);
+
+ sunxi_usb_passby(sunxi_ehci, !SUNXI_USB_PASSBY_EN);
+
+ clrbits_le32(&ccm->ahb_gate0, sunxi_ehci->ahb_clk_mask);
+ clrbits_le32(&ccm->usb_clk_cfg, sunxi_ehci->usb_rst_mask);
+}
+
+int ehci_hcd_init(int index, enum usb_init_type init, struct ehci_hccr **hccr,
+ struct ehci_hcor **hcor)
+{
+ struct sunxi_ccm_reg *ccm = (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+ struct sunxi_ehci_hcd *sunxi_ehci = &sunxi_echi_hcd[index];
+
+ /* enable common PHY only once */
+ if (index == 0)
+ setbits_le32(&ccm->usb_clk_cfg, CCM_USB_CTRL_PHYGATE);
+
+ sunxi_ehci_enable(sunxi_ehci);
+
+ *hccr = get_io_base(sunxi_ehci->id);
+
+ *hcor = (struct ehci_hcor *)((uint32_t) *hccr
+ + HC_LENGTH(ehci_readl(&(*hccr)->cr_capbase)));
+
+ debug("sunxi-ehci: init hccr %x and hcor %x hc_length %d\n",
+ (uint32_t)*hccr, (uint32_t)*hcor,
+ (uint32_t)HC_LENGTH(ehci_readl(&(*hccr)->cr_capbase)));
+
+ enabled_hcd_count++;
+
+ return 0;
+}
+
+int ehci_hcd_stop(int index)
+{
+ struct sunxi_ccm_reg *ccm = (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+ struct sunxi_ehci_hcd *sunxi_ehci = &sunxi_echi_hcd[index];
+
+ sunxi_ehci_disable(sunxi_ehci);
+
+ /* disable common PHY only once, for the last enabled hcd */
+ if (enabled_hcd_count == 1)
+ clrbits_le32(&ccm->usb_clk_cfg, CCM_USB_CTRL_PHYGATE);
+
+ enabled_hcd_count--;
+
+ return 0;
+}
diff --git a/include/.gitignore b/include/.gitignore
index bf142fc2f9..8e41a9511d 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/ahci.h b/include/ahci.h
index 90e850929b..35b8a8c09b 100644
--- a/include/ahci.h
+++ b/include/ahci.h
@@ -58,6 +58,10 @@
#define PORT_SCR_ERR 0x30 /* SATA phy register: SError */
#define PORT_SCR_ACT 0x34 /* SATA phy register: SActive */
+#ifdef CONFIG_SUNXI_AHCI
+#define PORT_P0DMACR 0x70 /* SUNXI specific "DMA register" */
+#endif
+
/* PORT_IRQ_{STAT,MASK} bits */
#define PORT_IRQ_COLD_PRES (1 << 31) /* cold presence detect */
#define PORT_IRQ_TF_ERR (1 << 30) /* task file error */
diff --git a/include/atmel_mci.h b/include/atmel_mci.h
index 090574d8c2..de2414806b 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/configs/B4860QDS.h b/include/configs/B4860QDS.h
index 1af9ba686d..953d06b53c 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
@@ -340,7 +339,7 @@ unsigned long get_board_ddr_clk(void);
#define CONFIG_SYS_CS3_FTIM1 (FTIM1_GPCM_TACO(0x0e) | \
FTIM1_GPCM_TRAD(0x1f))
#define CONFIG_SYS_CS3_FTIM2 (FTIM2_GPCM_TCS(0x0e) | \
- FTIM2_GPCM_TCH(0x0) | \
+ FTIM2_GPCM_TCH(0x8) | \
FTIM2_GPCM_TWP(0x1f))
#define CONFIG_SYS_CS3_FTIM3 0x0
diff --git a/include/configs/BSC9131RDB.h b/include/configs/BSC9131RDB.h
index 5a316c83ad..56a3e94868 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 7bb5d33d0c..aeded6d85b 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
@@ -354,7 +353,7 @@ combinations. this should be removed later
#define CONFIG_SYS_CS2_FTIM1 (FTIM1_GPCM_TACO(0x0e) | \
FTIM1_GPCM_TRAD(0x1f))
#define CONFIG_SYS_CS2_FTIM2 (FTIM2_GPCM_TCS(0x0e) | \
- FTIM2_GPCM_TCH(0x0) | \
+ FTIM2_GPCM_TCH(0x8) | \
FTIM2_GPCM_TWP(0x1f))
#define CONFIG_SYS_CS2_FTIM3 0x0
#endif
diff --git a/include/configs/C29XPCIE.h b/include/configs/C29XPCIE.h
index 9e12fac5b1..715616d544 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
@@ -319,7 +317,7 @@
#define CONFIG_SYS_CS2_FTIM1 (FTIM1_GPCM_TACO(0x0e) | \
FTIM1_GPCM_TRAD(0x1f))
#define CONFIG_SYS_CS2_FTIM2 (FTIM2_GPCM_TCS(0x0e) | \
- FTIM2_GPCM_TCH(0x0) | \
+ FTIM2_GPCM_TCH(0x8) | \
FTIM2_GPCM_TWP(0x1f))
#define CONFIG_SYS_CS2_FTIM3 0x0
diff --git a/include/configs/MPC8313ERDB.h b/include/configs/MPC8313ERDB.h
index 69b2cb1970..dd8122965a 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 d612a8b9c4..a373990e5d 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
@@ -537,7 +533,7 @@ extern unsigned long get_sdram_size(void);
#define CONFIG_SYS_CS3_FTIM1 (FTIM1_GPCM_TACO(0x0e) | \
FTIM1_GPCM_TRAD(0x1f))
#define CONFIG_SYS_CS3_FTIM2 (FTIM2_GPCM_TCS(0x0e) | \
- FTIM2_GPCM_TCH(0x0) | \
+ FTIM2_GPCM_TCH(0x8) | \
FTIM2_GPCM_TWP(0x1f))
#define CONFIG_SYS_CS3_FTIM3 0x0
diff --git a/include/configs/P1022DS.h b/include/configs/P1022DS.h
index 959cdf69bb..54e2569ac8 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/P1023RDS.h b/include/configs/P1023RDS.h
deleted file mode 100644
index ac75b9c5fb..0000000000
--- a/include/configs/P1023RDS.h
+++ /dev/null
@@ -1,479 +0,0 @@
-/*
- * Copyright 2010-2012 Freescale Semiconductor, Inc.
- *
- * Authors: Roy Zang <tie-fei.zang@freescale.com>
- * Chunhe Lan <b25806@freescale.com>
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-/*
- * p1023rds board configuration file
- *
- */
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#ifndef CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_TEXT_BASE 0xeff40000
-#endif
-
-#ifndef CONFIG_SYS_MONITOR_BASE
-#define CONFIG_SYS_MONITOR_BASE CONFIG_SYS_TEXT_BASE /* start of monitor */
-#endif
-
-#ifndef CONFIG_RESET_VECTOR_ADDRESS
-#define CONFIG_RESET_VECTOR_ADDRESS 0xeffffffc
-#endif
-
-/* High Level Configuration Options */
-#define CONFIG_BOOKE /* BOOKE */
-#define CONFIG_E500 /* BOOKE e500 family */
-#define CONFIG_P1023
-#define CONFIG_P1023RDS
-#define CONFIG_MP /* support multiple processors */
-
-#define CONFIG_FSL_ELBC /* Has Enhanced localbus controller */
-#define CONFIG_PCI /* Enable PCI/PCIE */
-#define CONFIG_PCIE1 /* PCIE controler 1 (slot 1) */
-#define CONFIG_PCIE2 /* PCIE controler 2 (slot 2) */
-#define CONFIG_PCIE3 /* PCIE controler 3 (slot 3) */
-#define CONFIG_FSL_PCI_INIT /* Use common FSL init code */
-#define CONFIG_PCI_INDIRECT_BRIDGE /* indirect PCI bridge support */
-#define CONFIG_FSL_PCIE_RESET /* need PCIe reset errata */
-#define CONFIG_SYS_PCI_64BIT /* enable 64-bit PCI resources */
-#define CONFIG_FSL_LAW /* Use common FSL init code */
-
-#ifndef __ASSEMBLY__
-extern unsigned long get_clock_freq(void);
-#endif
-
-#define CONFIG_SYS_CLK_FREQ 66666666
-#define CONFIG_DDR_CLK_FREQ CONFIG_SYS_CLK_FREQ
-
-/*
- * These can be toggled for performance analysis, otherwise use default.
- */
-#define CONFIG_L2_CACHE /* toggle L2 cache */
-#define CONFIG_BTB /* toggle branch predition */
-#define CONFIG_HWCONFIG
-
-#define CONFIG_ENABLE_36BIT_PHYS
-
-#define CONFIG_SYS_MEMTEST_START 0x00000000 /* memtest works on */
-#define CONFIG_SYS_MEMTEST_END 0x1fffffff /* fix me, only 1G */
-#define CONFIG_PANIC_HANG /* do not reset board on panic */
-
-#define CONFIG_SYS_LBC_LBCR 0x00000000 /* Implement conversion of
- addresses in the LBC */
-
-/* DDR Setup */
-#define CONFIG_VERY_BIG_RAM
-
-#define CONFIG_ECC_INIT_VIA_DDRCONTROLLER
-#define CONFIG_MEM_INIT_VALUE 0xDeadBeef
-
-#define CONFIG_SYS_DDR_SDRAM_BASE 0x00000000
-#define CONFIG_SYS_SDRAM_BASE CONFIG_SYS_DDR_SDRAM_BASE
-
-#define CONFIG_DIMM_SLOTS_PER_CTLR 1
-#define CONFIG_CHIP_SELECTS_PER_CTRL 2
-
-/* These are used when DDR doesn't use SPD. */
-#define CONFIG_SYS_SDRAM_SIZE 2048u /* DDR is 2GB */
-
-/* Default settings for "stable" mode */
-#define CONFIG_SYS_DDR_CS0_BNDS 0x0000003F
-#define CONFIG_SYS_DDR_CS1_BNDS 0x0040007F
-#define CONFIG_SYS_DDR_CS0_CONFIG 0x80014302
-#define CONFIG_SYS_DDR_CS1_CONFIG 0x80014302
-#define CONFIG_SYS_DDR_TIMING_3 0x00020000
-#define CONFIG_SYS_DDR_TIMING_0 0x40110104
-#define CONFIG_SYS_DDR_TIMING_1 0x5C59E544
-#define CONFIG_SYS_DDR_TIMING_2 0x0fA888CA
-#define CONFIG_SYS_DDR_MODE_1 0x00441210
-#define CONFIG_SYS_DDR_MODE_2 0x00000000
-#define CONFIG_SYS_DDR_MODE_CTRL 0x00000000
-#define CONFIG_SYS_DDR_INTERVAL 0x0A280100
-#define CONFIG_SYS_DDR_DATA_INIT 0xdeadbeef
-#define CONFIG_SYS_DDR_CLK_CTRL 0x01800000
-#define CONFIG_SYS_DDR_TIMING_4 0x00000001
-#define CONFIG_SYS_DDR_TIMING_5 0x01401400
-#define CONFIG_SYS_DDR_ZQ_CNTL 0x89080600
-#define CONFIG_SYS_DDR_WRLVL_CNTL 0x8675F605
-#define CONFIG_SYS_DDR_CONTROL 0xC70C0008 /* Type = DDR3: No Interleaving */
-#define CONFIG_SYS_DDR_CONTROL2 0x24401010
-#define CONFIG_SYS_DDR_CDR1 0x00000000
-#define CONFIG_SYS_DDR_CDR2 0x00000000
-
-#define CONFIG_SYS_DDR_ERR_INT_EN 0x00000000
-#define CONFIG_SYS_DDR_ERR_DIS 0x00000000
-#define CONFIG_SYS_DDR_SBE 0x00000000
-
-/* Settings that differ for "performance" mode */
-#define CONFIG_SYS_DDR_CS0_BNDS_PERF 0x0000007F /* Interleaving Enabled */
-#define CONFIG_SYS_DDR_CS1_BNDS_PERF 0x00000000 /* Interleaving Enabled */
-#define CONFIG_SYS_DDR_CS1_CONFIG_PERF 0x80014302
-#define CONFIG_SYS_DDR_TIMING_1_PERF 0x5C58E544
-#define CONFIG_SYS_DDR_TIMING_2_PERF 0x0FA888CA
-/* Type = DDR3: cs0-cs1 interleaving */
-#define CONFIG_SYS_DDR_CONTROL_PERF 0xC70C4008
-#define CONFIG_SYS_DDR_CDR_1 0x00000000
-#define CONFIG_SYS_DDR_CDR_2 0x00000000
-
-
-/*
- * Memory map
- *
- * 0x0000_0000 0x7fff_ffff DDR 2G Cacheable
- * 0x8000_0000 0xbfff_ffff PCI Express Mem 1G non-cacheable
- * 0xc000_0000 0xdfff_ffff PCI 512M non-cacheable
- * 0xe100_0000 0xe3ff_ffff PCI IO range 4M non-cacheable
- *
- * Localbus non-cacheable
- * 0xe000_0000 0xe003_ffff BCSR 256K BCSR
- * 0xee00_0000 0xefff_ffff NOR flash 32M NOR flash
- * 0xff00_0000 0xff3f_ffff DPAA_QBMAN 4M
- * 0xff60_0000 0xff7f_ffff CCSR 2M non-cacheable
- * 0xffa0_0000 0xffaf_ffff NAND 1M non-cacheable
- * 0xffd0_0000 0xffd0_3fff L1 for stack 16K Cacheable TLB0
- */
-
-/*
- * Local Bus Definitions
- */
-#define CONFIG_SYS_BCSR_BASE 0xe0000000 /* start of on board FPGA */
-#define CONFIG_SYS_BCSR_BASE_PHYS CONFIG_SYS_BCSR_BASE
-
-#define CONFIG_SYS_FLASH_BASE 0xee000000 /* start of FLASH 32M */
-
-#define CONFIG_SYS_FLASH_BASE_PHYS CONFIG_SYS_FLASH_BASE
-
-#define CONFIG_FLASH_BR_PRELIM (BR_PHYS_ADDR(CONFIG_SYS_FLASH_BASE_PHYS) \
- | BR_PS_16 | BR_V)
-#define CONFIG_FLASH_OR_PRELIM 0xfe000ff7
-
-#define CONFIG_FLASH_CFI_DRIVER
-#define CONFIG_SYS_FLASH_CFI
-#define CONFIG_SYS_FLASH_EMPTY_INFO
-
-#define CONFIG_SYS_MAX_FLASH_BANKS 1 /* number of banks */
-#define CONFIG_SYS_MAX_FLASH_SECT 512 /* sectors per device */
-#define CONFIG_SYS_FLASH_ERASE_TOUT 60000 /* Flash Erase Timeout (ms) */
-#define CONFIG_SYS_FLASH_WRITE_TOUT 500 /* Flash Write Timeout (ms) */
-
-#if defined(CONFIG_SYS_SPL)
-#define CONFIG_SYS_RAMBOOT
-#endif
-
-#define CONFIG_BOARD_EARLY_INIT_F /* call board_early_init_f function */
-#define CONFIG_BOARD_EARLY_INIT_R /* call board_early_init_r function */
-
-#define CONFIG_SYS_INIT_RAM_LOCK
-#define CONFIG_SYS_INIT_RAM_ADDR 0xffd00000 /* Initial L1 address */
-#define CONFIG_SYS_INIT_RAM_END 0x00004000 /* End of used area in RAM */
-
-#define CONFIG_SYS_GBL_DATA_OFFSET \
- (CONFIG_SYS_INIT_RAM_END - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_GBL_DATA_OFFSET
-
-#define CONFIG_SYS_MONITOR_LEN (768 * 1024)
-#define CONFIG_SYS_MALLOC_LEN (6 * 1024 * 1024) /* Reserved for malloc */
-
-#ifndef CONFIG_NAND_SPL
-#define CONFIG_SYS_NAND_BASE 0xffa00000
-#define CONFIG_SYS_NAND_BASE_PHYS CONFIG_SYS_NAND_BASE
-#else
-#define CONFIG_SYS_NAND_BASE 0xfff00000
-#define CONFIG_SYS_NAND_BASE_PHYS CONFIG_SYS_NAND_BASE
-#endif
-
-#define CONFIG_SYS_NAND_BASE_LIST {CONFIG_SYS_NAND_BASE}
-#define CONFIG_SYS_MAX_NAND_DEVICE 1
-#define CONFIG_MTD_NAND_VERIFY_WRITE
-#define CONFIG_CMD_NAND
-#define CONFIG_NAND_FSL_ELBC
-#define CONFIG_SYS_NAND_BLOCK_SIZE (16 * 1024)
-
-/* NAND boot: 4K NAND loader config */
-#define CONFIG_SYS_NAND_SPL_SIZE 0x1000
-#define CONFIG_SYS_NAND_U_BOOT_SIZE ((768 << 10) + CONFIG_SYS_NAND_SPL_SIZE)
-#define CONFIG_SYS_NAND_U_BOOT_DST (0x11000000 - CONFIG_SYS_NAND_SPL_SIZE)
-#define CONFIG_SYS_NAND_U_BOOT_START 0x11000000
-#define CONFIG_SYS_NAND_U_BOOT_OFFS (0)
-#define CONFIG_SYS_NAND_U_BOOT_RELOC 0x00010000
-#define CONFIG_SYS_NAND_U_BOOT_RELOC_SP (CONFIG_SYS_NAND_U_BOOT_RELOC + 0x10000)
-
-/* NAND flash config */
-#define CONFIG_SYS_NAND_BR_PRELIM (BR_PHYS_ADDR(CONFIG_SYS_NAND_BASE_PHYS) \
- | (2<<BR_DECC_SHIFT) /* Use HW ECC */ \
- | BR_PS_8 /* Port Size = 8bit */ \
- | BR_MS_FCM /* MSEL = FCM */ \
- | BR_V) /* valid */
-#define CONFIG_SYS_NAND_OR_PRELIM (0xFFF80000 /* length 32K */ \
- | OR_FCM_CSCT \
- | OR_FCM_CST \
- | OR_FCM_CHT \
- | OR_FCM_SCY_1 \
- | OR_FCM_TRLX \
- | OR_FCM_EHTR)
-
-#define CONFIG_SYS_BR0_PRELIM CONFIG_FLASH_BR_PRELIM /* NOR Base Address */
-#define CONFIG_SYS_OR0_PRELIM CONFIG_FLASH_OR_PRELIM /* NOR Options */
-/* chip select 1 - BCSR */
-#define CONFIG_SYS_BR1_PRELIM (BR_PHYS_ADDR(CONFIG_SYS_BCSR_BASE_PHYS) \
- | BR_MS_GPCM | BR_PS_8 | BR_V)
-#define CONFIG_SYS_OR1_PRELIM (OR_AM_32KB | OR_GPCM_CSNT | OR_GPCM_XACS \
- | OR_GPCM_SCY | OR_GPCM_TRLX | OR_GPCM_EHTR \
- | OR_GPCM_EAD)
-
-/* Serial Port
- * open - index 2
- * shorted - index 1
- */
-#define CONFIG_CONS_INDEX 1
-#undef CONFIG_SERIAL_SOFTWARE_FIFO
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE 1
-#define CONFIG_SYS_NS16550_CLK get_bus_freq(0)
-#ifdef CONFIG_NAND_SPL
-#define CONFIG_NS16550_MIN_FUNCTIONS
-#endif
-
-#define CONFIG_SYS_BAUDRATE_TABLE \
- {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 115200}
-
-#define CONFIG_SYS_NS16550_COM1 (CONFIG_SYS_CCSRBAR + 0x4500)
-#define CONFIG_SYS_NS16550_COM2 (CONFIG_SYS_CCSRBAR + 0x4600)
-
-/* Use the HUSH parser */
-#define CONFIG_SYS_HUSH_PARSER
-
-/*
- * Pass open firmware flat tree
- */
-#define CONFIG_OF_LIBFDT
-#define CONFIG_OF_BOARD_SETUP
-#define CONFIG_OF_STDOUT_VIA_ALIAS
-
-/* new uImage format support */
-#define CONFIG_FIT
-#define CONFIG_FIT_VERBOSE /* enable fit_format_{error,warning}() */
-
-/* I2C */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_FSL
-#define CONFIG_SYS_FSL_I2C_SPEED 400000
-#define CONFIG_SYS_FSL_I2C_SLAVE 0x7F
-#define CONFIG_SYS_FSL_I2C_OFFSET 0x3000
-#define CONFIG_SYS_FSL_I2C2_SPEED 400000
-#define CONFIG_SYS_FSL_I2C2_SLAVE 0x7F
-#define CONFIG_SYS_FSL_I2C2_OFFSET 0x3100
-#define CONFIG_SYS_I2C_EEPROM_ADDR 0x51
-
-/*
- * I2C2 EEPROM
- */
-#define CONFIG_ID_EEPROM
-#ifdef CONFIG_ID_EEPROM
-#define CONFIG_SYS_I2C_EEPROM_NXID
-#endif
-#define CONFIG_SYS_I2C_EEPROM_ADDR 0x51
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1
-#define CONFIG_SYS_EEPROM_BUS_NUM 0
-
-#define CONFIG_CMD_I2C
-
-/*
- * eSPI - Enhanced SPI
- */
-#define CONFIG_SPI_FLASH
-#define CONFIG_SPI_FLASH_ATMEL
-
-#define CONFIG_HARD_SPI
-#define CONFIG_FSL_ESPI
-
-#define CONFIG_CMD_SF
-#define CONFIG_SF_DEFAULT_SPEED 10000000
-#define CONFIG_SF_DEFAULT_MODE 0
-
-/*
- * General PCI
- * Memory space is mapped 1-1, but I/O space must start from 0.
- */
-
-/* controller 3, Slot 1, tgtid 3, Base address b000 */
-#define CONFIG_SYS_PCIE3_NAME "Slot 3"
-#define CONFIG_SYS_PCIE3_MEM_VIRT 0x80000000
-#define CONFIG_SYS_PCIE3_MEM_BUS 0x80000000
-#define CONFIG_SYS_PCIE3_MEM_PHYS 0x80000000
-#define CONFIG_SYS_PCIE3_MEM_SIZE 0x20000000 /* 512M */
-#define CONFIG_SYS_PCIE3_IO_VIRT 0xffc00000
-#define CONFIG_SYS_PCIE3_IO_BUS 0x00000000
-#define CONFIG_SYS_PCIE3_IO_PHYS 0xffc00000
-#define CONFIG_SYS_PCIE3_IO_SIZE 0x00010000 /* 64k */
-
-/* controller 2, direct to uli, tgtid 2, Base address 9000 */
-#define CONFIG_SYS_PCIE2_NAME "Slot 2"
-#define CONFIG_SYS_PCIE2_MEM_VIRT 0xa0000000
-#define CONFIG_SYS_PCIE2_MEM_BUS 0xa0000000
-#define CONFIG_SYS_PCIE2_MEM_PHYS 0xa0000000
-#define CONFIG_SYS_PCIE2_MEM_SIZE 0x20000000 /* 512M */
-#define CONFIG_SYS_PCIE2_IO_VIRT 0xffc10000
-#define CONFIG_SYS_PCIE2_IO_BUS 0x00000000
-#define CONFIG_SYS_PCIE2_IO_PHYS 0xffc10000
-#define CONFIG_SYS_PCIE2_IO_SIZE 0x00010000 /* 64k */
-
-/* controller 1, Slot 2, tgtid 1, Base address a000 */
-#define CONFIG_SYS_PCIE1_NAME "Slot 1"
-#define CONFIG_SYS_PCIE1_MEM_VIRT 0xc0000000
-#define CONFIG_SYS_PCIE1_MEM_BUS 0xc0000000
-#define CONFIG_SYS_PCIE1_MEM_PHYS 0xc0000000
-#define CONFIG_SYS_PCIE1_MEM_SIZE 0x20000000 /* 512M */
-#define CONFIG_SYS_PCIE1_IO_VIRT 0xffc20000
-#define CONFIG_SYS_PCIE1_IO_BUS 0x00000000
-#define CONFIG_SYS_PCIE1_IO_PHYS 0xffc20000
-#define CONFIG_SYS_PCIE1_IO_SIZE 0x00010000 /* 64k */
-
-#if defined(CONFIG_PCI)
-#define CONFIG_E1000 /* Defind e1000 pci Ethernet card */
-#define CONFIG_PCI_PNP /* do pci plug-and-play */
-#define CONFIG_PCI_SCAN_SHOW /* show pci devices on startup */
-#endif /* CONFIG_PCI */
-
-/*
- * Environment
- */
-#define CONFIG_ENV_OVERWRITE
-
-#if defined(CONFIG_SYS_RAMBOOT)
-#define CONFIG_ENV_IS_NOWHERE /* Store ENV in memory only */
-#define CONFIG_ENV_ADDR (CONFIG_SYS_MONITOR_BASE - 0x4000)
-#define CONFIG_ENV_SIZE 0x2000
-#else
-#define CONFIG_ENV_IS_IN_FLASH
-#define CONFIG_ENV_ADDR (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
-#define CONFIG_ENV_SIZE 0x2000
-#define CONFIG_ENV_SECT_SIZE 0x20000 /* 128K (one sector) */
-#endif
-
-#define CONFIG_LOADS_ECHO /* echo on for serial download */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE /* allow baudrate change */
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_IRQ
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_SETEXPR
-#define CONFIG_CMD_REGINFO
-
-#if defined(CONFIG_PCI)
-#define CONFIG_CMD_PCI
-#define CONFIG_CMD_NET
-#endif
-
-/*
- * USB
- */
-#define CONFIG_HAS_FSL_DR_USB
-#ifdef CONFIG_HAS_FSL_DR_USB
-#define CONFIG_USB_EHCI
-
-#ifdef CONFIG_USB_EHCI
-#define CONFIG_CMD_USB
-#define CONFIG_EHCI_HCD_INIT_AFTER_RESET
-#define CONFIG_USB_EHCI_FSL
-#define CONFIG_USB_STORAGE
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_EXT2
-#define CONFIG_CMD_FAT
-#define CONFIG_DOS_PARTITION
-#endif
-#endif
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP /* undef to save memory */
-#define CONFIG_CMDLINE_EDITING /* Command-line editing */
-#define CONFIG_SYS_LOAD_ADDR 0x2000000 /* default load address */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE 1024 /* Console I/O Buffer Size */
-#else
-#define CONFIG_SYS_CBSIZE 256 /* Console I/O Buffer Size */
-#endif
-/* Print Buffer Size */
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT)+16)
-#define CONFIG_SYS_MAXARGS 16 /* max number of command args */
-/* Boot Argument Buffer Size */
-#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 16 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ (16 << 20) /* Initial Memory map for Linux*/
-#define CONFIG_SYS_BOOTM_LEN (16 << 20) /* Increase max gunzip size */
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_KGDB_BAUDRATE 230400 /* speed to run kgdb serial port */
-#endif
-
-/*
- * Environment Configuration
- */
-#define CONFIG_BOOTFILE "uImage"
-#define CONFIG_UBOOTPATH (u-boot.bin) /* U-Boot image on TFTP server */
-
-/* default location for tftp and bootm */
-#define CONFIG_LOADADDR 1000000
-
-#define CONFIG_BOOTDELAY 10 /* -1 disables auto-boot */
-
-#define CONFIG_BAUDRATE 115200
-
-/* Qman/Bman */
-#define CONFIG_SYS_DPAA_QBMAN /* support Q/Bman */
-#define CONFIG_SYS_QMAN_MEM_BASE 0xff000000
-#define CONFIG_SYS_QMAN_MEM_PHYS CONFIG_SYS_QMAN_MEM_BASE
-#define CONFIG_SYS_QMAN_MEM_SIZE 0x00200000
-#define CONFIG_SYS_BMAN_MEM_BASE 0xff200000
-#define CONFIG_SYS_BMAN_MEM_PHYS CONFIG_SYS_BMAN_MEM_BASE
-#define CONFIG_SYS_BMAN_MEM_SIZE 0x00200000
-
-/* For FM */
-#define CONFIG_SYS_DPAA_FMAN
-#define CONFIG_PHY_GIGE /* Include GbE speed/duplex detection */
-
-#ifdef CONFIG_SYS_DPAA_FMAN
-#define CONFIG_FMAN_ENET
-#define CONFIG_PHY_MARVELL
-#endif
-
-/* Default address of microcode for the Linux Fman driver */
-/* QE microcode/firmware address */
-#define CONFIG_SYS_QE_FMAN_FW_IN_NOR
-#define CONFIG_SYS_FMAN_FW_ADDR 0xEFF00000
-#define CONFIG_SYS_QE_FMAN_FW_LENGTH 0x10000
-#define CONFIG_SYS_FDT_PAD (0x3000 + CONFIG_SYS_QE_FMAN_FW_LENGTH)
-
-#ifdef CONFIG_FMAN_ENET
-#define CONFIG_SYS_FM1_DTSEC1_PHY_ADDR 0x2
-#define CONFIG_SYS_FM1_DTSEC2_PHY_ADDR 0x7
-
-#define CONFIG_SYS_TBIPA_VALUE 8
-#define CONFIG_MII /* MII PHY management */
-#define CONFIG_ETHPRIME "FM1@DTSEC1"
-#endif
-
-#define CONFIG_EXTRA_ENV_SETTINGS \
- "hwconfig=usb1:dr_mode=host,phy_type=ulpi\0"
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/P1_P2_RDB.h b/include/configs/P1_P2_RDB.h
index 110ba5f325..c75638abda 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/T1040QDS.h b/include/configs/T1040QDS.h
index f2a75aed43..ebee89a9a1 100644
--- a/include/configs/T1040QDS.h
+++ b/include/configs/T1040QDS.h
@@ -445,11 +445,17 @@ unsigned long get_board_ddr_clk(void);
#define CONFIG_SYS_I2C
#define CONFIG_SYS_I2C_FSL /* Use FSL common I2C driver */
#define CONFIG_SYS_FSL_I2C_SPEED 50000 /* I2C speed in Hz */
+#define CONFIG_SYS_FSL_I2C2_SPEED 50000
+#define CONFIG_SYS_FSL_I2C3_SPEED 50000
+#define CONFIG_SYS_FSL_I2C4_SPEED 50000
#define CONFIG_SYS_FSL_I2C_SLAVE 0x7F
-#define CONFIG_SYS_FSL_I2C2_SPEED 50000 /* I2C speed in Hz */
#define CONFIG_SYS_FSL_I2C2_SLAVE 0x7F
+#define CONFIG_SYS_FSL_I2C3_SLAVE 0x7F
+#define CONFIG_SYS_FSL_I2C4_SLAVE 0x7F
#define CONFIG_SYS_FSL_I2C_OFFSET 0x118000
-#define CONFIG_SYS_FSL_I2C2_OFFSET 0x119000
+#define CONFIG_SYS_FSL_I2C2_OFFSET 0x118100
+#define CONFIG_SYS_FSL_I2C3_OFFSET 0x119000
+#define CONFIG_SYS_FSL_I2C4_OFFSET 0x119100
#define I2C_MUX_PCA_ADDR 0x77
#define I2C_MUX_PCA_ADDR_PRI 0x77 /* Primary Mux*/
diff --git a/include/configs/T104xRDB.h b/include/configs/T104xRDB.h
index 8d6c51bb37..c4bf0d68f4 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
@@ -286,7 +285,7 @@
#define CONFIG_SYS_CS2_FTIM1 (FTIM1_GPCM_TACO(0x0e) | \
FTIM1_GPCM_TRAD(0x1f))
#define CONFIG_SYS_CS2_FTIM2 (FTIM2_GPCM_TCS(0x0e) | \
- FTIM2_GPCM_TCH(0x0) | \
+ FTIM2_GPCM_TCH(0x8) | \
FTIM2_GPCM_TWP(0x1f))
#define CONFIG_SYS_CS2_FTIM3 0x0
@@ -443,11 +442,17 @@
#define CONFIG_SYS_I2C
#define CONFIG_SYS_I2C_FSL /* Use FSL common I2C driver */
#define CONFIG_SYS_FSL_I2C_SPEED 400000 /* I2C speed in Hz */
+#define CONFIG_SYS_FSL_I2C2_SPEED 400000
+#define CONFIG_SYS_FSL_I2C3_SPEED 400000
+#define CONFIG_SYS_FSL_I2C4_SPEED 400000
#define CONFIG_SYS_FSL_I2C_SLAVE 0x7F
-#define CONFIG_SYS_FSL_I2C2_SPEED 400000 /* I2C speed in Hz */
#define CONFIG_SYS_FSL_I2C2_SLAVE 0x7F
+#define CONFIG_SYS_FSL_I2C3_SLAVE 0x7F
+#define CONFIG_SYS_FSL_I2C4_SLAVE 0x7F
#define CONFIG_SYS_FSL_I2C_OFFSET 0x118000
-#define CONFIG_SYS_FSL_I2C2_OFFSET 0x119000
+#define CONFIG_SYS_FSL_I2C2_OFFSET 0x118100
+#define CONFIG_SYS_FSL_I2C3_OFFSET 0x119000
+#define CONFIG_SYS_FSL_I2C4_OFFSET 0x119100
/* I2C bus multiplexer */
#define I2C_MUX_PCA_ADDR 0x70
diff --git a/include/configs/T208xQDS.h b/include/configs/T208xQDS.h
index 59d142e97e..395472be2b 100644
--- a/include/configs/T208xQDS.h
+++ b/include/configs/T208xQDS.h
@@ -11,6 +11,8 @@
#ifndef __T208xQDS_H
#define __T208xQDS_H
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
#define CONFIG_ICS307_REFCLK_HZ 25000000 /* ICS307 ref clk freq */
#define CONFIG_MMC
#define CONFIG_SPI_FLASH
@@ -53,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
@@ -537,7 +538,7 @@ unsigned long get_board_ddr_clk(void);
#ifdef CONFIG_SPI_FLASH
#define CONFIG_FSL_ESPI
#define CONFIG_SPI_FLASH_STMICRO
-#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_RAMBOOT_PBL)
+#ifndef CONFIG_SPL_BUILD
#define CONFIG_SPI_FLASH_SST
#define CONFIG_SPI_FLASH_EON
#endif
diff --git a/include/configs/T208xRDB.h b/include/configs/T208xRDB.h
index 3a1c49c811..e5936c7817 100644
--- a/include/configs/T208xRDB.h
+++ b/include/configs/T208xRDB.h
@@ -11,6 +11,8 @@
#ifndef __T2080RDB_H
#define __T2080RDB_H
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
#define CONFIG_T2080RDB
#define CONFIG_ICS307_REFCLK_HZ 25000000 /* ICS307 ref clk freq */
#define CONFIG_MMC
@@ -42,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
@@ -283,7 +284,7 @@ unsigned long get_board_ddr_clk(void);
#define CONFIG_SYS_CS2_FTIM1 (FTIM1_GPCM_TACO(0x0e) | \
FTIM1_GPCM_TRAD(0x1f))
#define CONFIG_SYS_CS2_FTIM2 (FTIM2_GPCM_TCS(0x0e) | \
- FTIM2_GPCM_TCH(0x0) | \
+ FTIM2_GPCM_TCH(0x8) | \
FTIM2_GPCM_TWP(0x1f))
#define CONFIG_SYS_CS2_FTIM3 0x0
diff --git a/include/configs/T4240QDS.h b/include/configs/T4240QDS.h
index a770dd0d3a..ca9724720d 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
@@ -237,7 +236,7 @@ unsigned long get_board_ddr_clk(void);
#define CONFIG_SYS_CS3_FTIM1 (FTIM1_GPCM_TACO(0xff) | \
FTIM1_GPCM_TRAD(0x3f))
#define CONFIG_SYS_CS3_FTIM2 (FTIM2_GPCM_TCS(0x0e) | \
- FTIM2_GPCM_TCH(0x0) | \
+ FTIM2_GPCM_TCH(0x8) | \
FTIM2_GPCM_TWP(0x1f))
#define CONFIG_SYS_CS3_FTIM3 0x0
diff --git a/include/configs/a3m071.h b/include/configs/a3m071.h
index 205adfd8ce..a4050f34cc 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/am335x_igep0033.h b/include/configs/am335x_igep0033.h
index c17327fef4..dcded0acbe 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 d826214efe..898ed2ee18 100644
--- a/include/configs/am3517_crane.h
+++ b/include/configs/am3517_crane.h
@@ -293,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 a9c5a8f3af..1e2d55bec5 100644
--- a/include/configs/am3517_evm.h
+++ b/include/configs/am3517_evm.h
@@ -302,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/apf27.h b/include/configs/apf27.h
index b10c48c20e..4424c30441 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 370db821a8..64b54ab22b 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 5a37536b0a..3f889f8d4f 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 d1a8ff2a82..5f30279fe6 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_t35.h b/include/configs/cm_t35.h
index d8d71a94ee..c63608c189 100644
--- a/include/configs/cm_t35.h
+++ b/include/configs/cm_t35.h
@@ -316,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 ec3145f430..7eaaf69951 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 b27940995d..1252d7a54a 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 cc53fc9cd7..69c51bc4c3 100644
--- a/include/configs/devkit8000.h
+++ b/include/configs/devkit8000.h
@@ -281,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/dlvision-10g.h b/include/configs/dlvision-10g.h
index 6153a40e06..d9bd564880 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 1e86c556ab..af0d60249a 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/exynos5-dt.h b/include/configs/exynos5-dt.h
index e36a0313c1..a7c6292863 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 6810b3befc..12fd75d743 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 73e1624375..8188c7b788 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 b56b3aa340..928eb5b9db 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 8e32c25803..d4ae0adfda 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 6915b2071c..2a9ff376ef 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 ae05bcbfbf..38d473de42 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 fdd5680741..98e819bb18 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/km/kmp204x-common.h b/include/configs/km/kmp204x-common.h
index efd96352ec..a0f9d293ca 100644
--- a/include/configs/km/kmp204x-common.h
+++ b/include/configs/km/kmp204x-common.h
@@ -377,6 +377,14 @@ int get_scl(void);
#define CONFIG_SYS_LOADS_BAUD_CHANGE /* allow baudrate change */
/*
+ * Hardware Watchdog
+ */
+#define CONFIG_WATCHDOG /* enable CPU watchdog */
+#define CONFIG_WATCHDOG_PRESC 34 /* wdog prescaler 2^(64-34) (~10min) */
+#define CONFIG_WATCHDOG_RC WRC_CHIP /* reset chip on watchdog event */
+
+
+/*
* additionnal command line configuration.
*/
#define CONFIG_CMD_PCI
diff --git a/include/configs/lwmon5.h b/include/configs/lwmon5.h
index 07ddfc4014..58e7295690 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 e5756d32e7..df6a226109 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 75abb602cf..dff895a965 100644
--- a/include/configs/mcx.h
+++ b/include/configs/mcx.h
@@ -344,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 06b7e94184..1a82a57c75 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 d80f5da2d5..bc4583baee 100644
--- a/include/configs/mx31pdk.h
+++ b/include/configs/mx31pdk.h
@@ -31,7 +31,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 df9eb93432..eb96fc17f3 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 4937730ee3..09300ca8ed 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/omap3_evm_common.h b/include/configs/omap3_evm_common.h
index 739d392edc..eef4230e64 100644
--- a/include/configs/omap3_evm_common.h
+++ b/include/configs/omap3_evm_common.h
@@ -257,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_zoom1.h b/include/configs/omap3_zoom1.h
index 93f4d627a1..c5d742c2bd 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
diff --git a/include/configs/openrd.h b/include/configs/openrd.h
index 8fab6e63e3..3eb408f004 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 82583382f7..5d24916389 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 185df775aa..9b5895093d 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 36626639d3..6490be5504 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 9af3efd4b1..dcf5537687 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/sama5d3_xplained.h b/include/configs/sama5d3_xplained.h
index f72ab0bad0..0dfb7e7918 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 da2718044c..56c2454dff 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/sheevaplug.h b/include/configs/sheevaplug.h
index ecc93bc539..3d6ff09cb0 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 53816a6025..b8fb77e813 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 34adfaf608..048c178692 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 262e7445f6..27c2be9098 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
index 037f9952f8..5611ecc85f 100644
--- a/include/configs/sun4i.h
+++ b/include/configs/sun4i.h
@@ -16,6 +16,18 @@
#define CONFIG_SYS_PROMPT "sun4i# "
+#ifdef CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_SUNXI
+
+#define CONFIG_USB_MAX_CONTROLLER_COUNT 2
+#ifndef CONFIG_SUNXI_USB_VBUS0_GPIO
+#define CONFIG_SUNXI_USB_VBUS0_GPIO SUNXI_GPH(6)
+#endif
+#ifndef CONFIG_SUNXI_USB_VBUS1_GPIO
+#define CONFIG_SUNXI_USB_VBUS1_GPIO SUNXI_GPH(3)
+#endif
+#endif
+
/*
* Include common sunxi configuration where most the settings are
*/
diff --git a/include/configs/sun5i.h b/include/configs/sun5i.h
index c6138b7cd4..6066371a17 100644
--- a/include/configs/sun5i.h
+++ b/include/configs/sun5i.h
@@ -16,6 +16,11 @@
#define CONFIG_SYS_PROMPT "sun5i# "
+#ifdef CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_SUNXI
+#define CONFIG_USB_MAX_CONTROLLER_COUNT 1
+#endif
+
/*
* Include common sunxi configuration where most the settings are
*/
diff --git a/include/configs/sun7i.h b/include/configs/sun7i.h
index d9be1046b0..a902b84574 100644
--- a/include/configs/sun7i.h
+++ b/include/configs/sun7i.h
@@ -17,6 +17,25 @@
#define CONFIG_SYS_PROMPT "sun7i# "
+#ifdef CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_SUNXI
+
+#define CONFIG_USB_MAX_CONTROLLER_COUNT 2
+#ifndef CONFIG_SUNXI_USB_VBUS0_GPIO
+#define CONFIG_SUNXI_USB_VBUS0_GPIO SUNXI_GPH(6)
+#endif
+#ifndef CONFIG_SUNXI_USB_VBUS1_GPIO
+#define CONFIG_SUNXI_USB_VBUS1_GPIO SUNXI_GPH(3)
+#endif
+#endif
+
+#define CONFIG_ARMV7_VIRT 1
+#define CONFIG_ARMV7_NONSEC 1
+#define CONFIG_ARMV7_PSCI 1
+#define CONFIG_ARMV7_PSCI_NR_CPUS 2
+#define CONFIG_ARMV7_SECURE_BASE SUNXI_SRAM_B_BASE
+#define CONFIG_SYS_CLK_FREQ 24000000
+
/*
* Include common sunxi configuration where most the settings are
*/
diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
index 845b004a27..6a3044f9ce 100644
--- a/include/configs/sunxi-common.h
+++ b/include/configs/sunxi-common.h
@@ -57,6 +57,18 @@
#define PHYS_SDRAM_0 CONFIG_SYS_SDRAM_BASE
#define PHYS_SDRAM_0_SIZE 0x80000000 /* 2 GiB */
+#ifdef CONFIG_AHCI
+#define CONFIG_LIBATA
+#define CONFIG_SCSI_AHCI
+#define CONFIG_SCSI_AHCI_PLAT
+#define CONFIG_SUNXI_AHCI
+#define CONFIG_SYS_SCSI_MAX_SCSI_ID 1
+#define CONFIG_SYS_SCSI_MAX_LUN 1
+#define CONFIG_SYS_SCSI_MAX_DEVICE (CONFIG_SYS_SCSI_MAX_SCSI_ID * \
+ CONFIG_SYS_SCSI_MAX_LUN)
+#define CONFIG_CMD_SCSI
+#endif
+
#define CONFIG_CMD_MEMORY
#define CONFIG_CMD_SETEXPR
@@ -127,7 +139,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
@@ -204,6 +215,12 @@
#define CONFIG_BOOTP_SEND_HOSTNAME
#endif
+#ifdef CONFIG_USB_EHCI
+#define CONFIG_CMD_USB
+#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS 1
+#define CONFIG_USB_STORAGE
+#endif
+
#if !defined CONFIG_ENV_IS_IN_MMC && \
!defined CONFIG_ENV_IS_IN_NAND && \
!defined CONFIG_ENV_IS_IN_FAT && \
diff --git a/include/configs/tam3517-common.h b/include/configs/tam3517-common.h
index aa0ea162d2..e1fc75476f 100644
--- a/include/configs/tam3517-common.h
+++ b/include/configs/tam3517-common.h
@@ -215,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 9fc31bed6a..174bfe50a9 100644
--- a/include/configs/tao3530.h
+++ b/include/configs/tao3530.h
@@ -301,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 3b88a83c04..717cd61bd6 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 b51400c464..a55bde2368 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 b8c0d54ab3..e86c36443b 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 85c027c1d2..26ac2518d9 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
diff --git a/include/configs/tricorder.h b/include/configs/tricorder.h
index 6c2f65305f..cc0d172115 100644
--- a/include/configs/tricorder.h
+++ b/include/configs/tricorder.h
@@ -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 5ac6e6441c..118f5bae72 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 c6d47635b3..2fb91a8f8c 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 437472f3ed..25bfeef036 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 eae85d62c9..71373e98f9 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 690cacbc94..d57e9d5bbe 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
diff --git a/include/environment.h b/include/environment.h
index 08679aead9..1fdbdad882 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/fsl_ifc.h b/include/fsl_ifc.h
index 630e4b4999..11474b757c 100644
--- a/include/fsl_ifc.h
+++ b/include/fsl_ifc.h
@@ -12,6 +12,8 @@
#include <config.h>
#include <common.h>
+#define FSL_IFC_V1_1_0 0x01010000
+#define FSL_IFC_V2_0_0 0x02000000
#ifdef CONFIG_SYS_FSL_IFC_LE
#define ifc_in32(a) in_le32(a)
@@ -367,6 +369,8 @@
*/
/* Auto Boot Mode */
#define IFC_NAND_NCFGR_BOOT 0x80000000
+/* SRAM INIT EN */
+#define IFC_NAND_SRAM_INIT_EN 0x20000000
/* Addressing Mode-ROW0+n/COL0 */
#define IFC_NAND_NCFGR_ADDR_MODE_RC0 0x00000000
/* Addressing Mode-ROW0+n/COL0+n */
diff --git a/arch/powerpc/include/asm/immap_qe.h b/include/linux/immap_qe.h
index b317dcb5fe..b317dcb5fe 100644
--- a/arch/powerpc/include/asm/immap_qe.h
+++ b/include/linux/immap_qe.h
diff --git a/include/linux/kconfig.h b/include/linux/kconfig.h
new file mode 100644
index 0000000000..be342b94c6
--- /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 0000000000..28d98fe148
--- /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/phy.h b/include/phy.h
index d3ecd6378b..2fcc328d5b 100644
--- a/include/phy.h
+++ b/include/phy.h
@@ -1,6 +1,6 @@
/*
* Copyright 2011 Freescale Semiconductor, Inc.
- * Andy Fleming <afleming@freescale.com>
+ * Andy Fleming <afleming@gmail.com>
*
* SPDX-License-Identifier: GPL-2.0+
*
diff --git a/include/post.h b/include/post.h
index 24ca728b40..5ebd535823 100644
--- a/include/post.h
+++ b/include/post.h
@@ -38,7 +38,7 @@
#define _POST_WORD_ADDR (CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR)
#elif defined(CONFIG_MPC8360)
-#include <asm/immap_qe.h>
+#include <linux/immap_qe.h>
#define _POST_WORD_ADDR (CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR)
#elif defined (CONFIG_MPC85xx)
diff --git a/include/watchdog.h b/include/watchdog.h
index aacacb970a..bd0a8d6b19 100644
--- a/include/watchdog.h
+++ b/include/watchdog.h
@@ -95,4 +95,8 @@ int init_func_watchdog_reset(void);
#if defined(CONFIG_HW_WATCHDOG) && !defined(__ASSEMBLY__)
void hw_watchdog_init(void);
#endif
+
+#if defined(CONFIG_MPC85xx) && !defined(__ASSEMBLY__)
+ void init_85xx_watchdog(void);
+#endif
#endif /* _WATCHDOG_H_ */
diff --git a/mkconfig b/mkconfig
deleted file mode 100755
index 84f5a7765b..0000000000
--- 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 68c998e588..efe25bfc6e 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 0000000000..44c39970f3
--- /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 04c6f7d239..baeaabe310 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 bf677aa42a..88c01d18ec 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 b30406860b..1a41723823 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 0000000000..be603c4fef
--- /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 0000000000..9c4d2412fb
--- /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 0000000000..9674573969
--- /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 0000000000..55b79ba1ba
--- /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 0000000000..fef75fc756
--- /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 0000000000..ae6ce669e1
--- /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 0000000000..d6626521f9
--- /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 0000000000..412ea8a2ab
--- /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 0000000000..d0a35b21f3
--- /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 0000000000..aa483cb327
--- /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 0000000000..d4f84bd4a9
--- /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 0000000000..2858738b22
--- /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 0000000000..685d80e1bb
--- /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 0000000000..d5daa7af8b
--- /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 0000000000..ecdb9659b6
--- /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 0000000000..90b08ff025
--- /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 0000000000..a8999d82bd
--- /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 0000000000..9d2a4c585e
--- /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 0000000000..8d016faa28
--- /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 0000000000..b4343d3849
--- /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 0000000000..d58de1dc53
--- /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 0000000000..11ae9ad7ac
--- /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 0000000000..1773319b95
--- /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 0000000000..f7abdeb92a
--- /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 0000000000..676fb2f824
--- /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 0000000000..14cea7463a
--- /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 0000000000..a26cc5d2a9
--- /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 0000000000..81b0c61bb9
--- /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 0000000000..984489ef2b
--- /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 0000000000..8275f0e551
--- /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 0000000000..0d5261705e
--- /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 0000000000..9d3b04b076
--- /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 0000000000..bde0c6b6f9
--- /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 0000000000..9cb8522d8d
--- /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 0000000000..7caabdb51c
--- /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 0000000000..94f9c83e32
--- /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 0000000000..b6ac02d604
--- /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 0000000000..c77a8eff1e
--- /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 0000000000..6c62d93b4f
--- /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 0000000000..349a7f2431
--- /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 0000000000..de5e84ed3f
--- /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 0000000000..0f683cfa53
--- /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 0000000000..749abcb7a5
--- /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 0000000000..26271b59b9
--- /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/tools/Makefile b/tools/Makefile
index 61b2048211..90e966d893 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 5172a473e3..7bcc93262e 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 39a6e8ad5c..48408ff0b1 100644
--- a/tools/buildman/builder.py
+++ b/tools/buildman/builder.py
@@ -199,7 +199,7 @@ 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
@@ -213,7 +213,10 @@ 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)
@@ -257,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))
@@ -413,7 +419,7 @@ 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
@@ -431,7 +437,8 @@ class BuilderThread(threading.Thread):
result, request_config = self.RunCommit(commit_upto,
brd, work_dir, True, True, False)
did_config = True
- do_config = request_config
+ 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
@@ -524,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
@@ -560,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:
@@ -569,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
@@ -580,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
@@ -593,7 +611,9 @@ class Builder:
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()
@@ -682,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 0da6797e7f..42847acb3c 100755
--- a/tools/buildman/buildman.py
+++ b/tools/buildman/buildman.py
@@ -67,6 +67,9 @@ 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',
@@ -82,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 cfad535fcb..75b6498e65 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
@@ -157,6 +174,8 @@ def DoBuildman(options, args):
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 f5368bc4d0..4927489b16 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 0000000000..734d90b5e5
--- /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/patman/gitutil.py b/tools/patman/gitutil.py
index 7b75c83a82..65754f5326 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)
OpenPOWER on IntegriCloud