[U-Boot] [RFC PATCH 0/5] introduce get_maintainer.pl

This series imports get_maintainer.pl from kernel and reintroduce the MAINTAINERS file in the according format. Currently one have to manually grep all infos about board maintainers or custodians from various sources like git log, wiki or boards.cfg. get_maintainer.pl makes this task much easier. Also patman is already able to use it for cc-cmd. Furthermore it solves the concerns raised in discussion [1] regarding the introduction of Kconfig.
This RFC series adds an additional MAINTAINERS.boards file, which is generated from boards.cfg with the script added in patch 1/5. The get_maintainer.pl script is modified to handle both MAINTAINERS files.
The MAINTAINERS file contains all custodians and is hand-written based on infos from wiki [2], u-boot git forks [3]. Thus the source files infos (F:) are not complete yet. Furthermore status (S:) and maintainership (M:) for some custodian trees are probably wrong. Any help in completing and fixing that is appreciated.
Each entry in the MAINTAINERS.boards starts with the line 'BOARD $boardname $vendorname'. Status (S:) and maintainership (M:) are taken from boards.cfg. If one of ARCH, CPU or SOC of the board is maintained in a dedicated custodian tree, the Git URL of that tree is added (T:). Source files (F:) are set to board/$boardname (or board/$vendorname/$boardname) and include/configs/$boardname.h.
If this series get accepted, both MAINTAINERS files could be merged. The script from patch 1/5 and boards.cfg are obsolete then.
[1] https://www.mail-archive.com/u-boot@lists.denx.de/msg134341.html [2] http://www.denx.de/wiki/U-Boot/Custodians [3] http://git.denx.de/?p=u-boot.git;a=forks
Daniel Schwierzeck (5): scripts: add script for converting boards.cfg to MAINTAINERS MAINTAINERS: add initial version MAINTAINERS.boards: add initial version get_maintainer.pl: import script from linux 3.14 get_maintainer.pl: adapt to U-Boot tree
MAINTAINERS | 338 +++ MAINTAINERS.boards | 4522 ++++++++++++++++++++++++++++++++++++++ scripts/boardscfg2maintainers.sh | 259 +++ scripts/get_maintainer.pl | 2262 +++++++++++++++++++ 4 files changed, 7381 insertions(+) create mode 100644 MAINTAINERS create mode 100644 MAINTAINERS.boards create mode 100755 scripts/boardscfg2maintainers.sh create mode 100755 scripts/get_maintainer.pl

Signed-off-by: Daniel Schwierzeck daniel.schwierzeck@gmail.com ---
scripts/boardscfg2maintainers.sh | 259 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 259 insertions(+) create mode 100755 scripts/boardscfg2maintainers.sh
diff --git a/scripts/boardscfg2maintainers.sh b/scripts/boardscfg2maintainers.sh new file mode 100755 index 0000000..27f7387 --- /dev/null +++ b/scripts/boardscfg2maintainers.sh @@ -0,0 +1,259 @@ +#!/bin/bash + +set -e + +test -e boards.cfg + +# architectures, which are maintained in a custodian tree +git_arch=( +aarch64 +arm +avr32 +blackfin +m68k +microblaze +mips +nds32 +nios +sh +sparc +x86 +) + +# CPUs, which are maintained in a custodian tree +git_cpu=( +74xx_7xx +mpc5xxx +mpc824x +mpc8260 +mpc82xx +mpc83xx +mpc85xx +mpc86xx +mpc8xx +ppc4xx +pxa +) + +# SOCs, which are maintained in a custodian tree +git_soc=( +at91 +exynos +imx +kirkwood +mx25 +mx27 +mx31 +mx35 +mx5 +mx6 +mxs +omap3 +omap4 +omap5 +s3c24x0 +samsung +spear +tegra114 +tegra124 +tegra20 +tegra30 +) + +# check whether the given arch has a custodian tree +has_arch_gittree() +{ + local arch=$1 + + for val in ${git_arch[@]}; do + [ "$val" = "$arch" ] && return 0 + done + + return 1 +} + +# check whether the given CPU has a custodian tree +has_cpu_gittree() +{ + local cpu=$1 + + for val in ${git_cpu[@]}; do + [ "$val" = "$cpu" ] && return 0 + done + + return 1 +} + +# check whether the given SOC has a custodian tree +has_soc_gittree() +{ + local soc=$1 + + for val in ${git_soc[@]}; do + [ "$val" = "$soc" ] && return 0 + done + + return 1 +} + +# translate given architecture to Git URL of custodian tree +get_arch_gittree() +{ + local arch=$1 + local arch_git + + case $arch in + aarch64) + arch_git=arm + ;; + m68k) + arch_git=coldfire + ;; + *) + arch_git=$arch + ;; + esac + + echo git://git.denx.de/u-boot-$arch_git.git +} + +# translate given CPU to Git URL of custodian tree +get_cpu_gittree() +{ + local cpu=$1 + local cpu_git + + case $cpu in + 74xx_7xx) + cpu_git=74xx-7xx + ;; + mpc824x|mpc8260) + cpu_git=mpc82xx + ;; + *) + cpu_git=$cpu + ;; + esac + + echo git://git.denx.de/u-boot-$cpu_git.git +} + +# translate given SOC to Git URL of custodian tree +get_soc_gittree() +{ + local soc=$1 + local soc_git + + case $soc in + at91) + soc_git=atmel + ;; + exynos|s3c24x0) + soc_git=samsung + ;; + kirkwood) + soc_git=marvell + ;; + mx25|mx27|mx31|mx35|mx5|mx6|mxs) + soc_git=imx + ;; + omap3|omap4|omap5) + soc_git=ti + ;; + spear) + soc_git=stm + ;; + tegra114|tegra124|tegra20|tegra30) + soc_git=tegra + ;; + *) + soc_git=$soc + ;; + esac + + echo git://git.denx.de/u-boot-$soc_git.git +} + +echo -n > MAINTAINERS.boards +echo -n > boards.cfg.tmp + +# pre-process, minimize and sort boards.cfg +while read -r status arch cpu soc vendor board target options maintainers; do + case $status in + Active) + status="Maintained" + ;; + Orphan) + ;; + *) + continue + ;; + esac + + options_target=$(echo $options | awk 'BEGIN {FS=":"}; { print $1 }') + + if [ "$options_target" != "-" ]; then + board=$options_target + elif [ "$target" != "-" ]; then + board=$target + else + board=$board + fi + + if has_soc_gittree $soc; then + gittree=$(get_soc_gittree $soc) + elif has_cpu_gittree $cpu; then + gittree=$(get_cpu_gittree $cpu) + elif has_arch_gittree $arch; then + gittree=$(get_arch_gittree $arch) + else + gittree="-" + fi + + echo "$status $board $vendor $gittree $maintainers" >> boards.cfg.tmp +done < boards.cfg + +sort -u boards.cfg.tmp > boards.cfg.sorted + +# create MAINTAINERS.boards from pre-processed boards.cfg +while read -r status board vendor gittree maintainers; do + if [ "$vendor" = "-" ]; then + echo "BOARD $board" >> MAINTAINERS.boards + else + echo "BOARD $board $vendor" >> MAINTAINERS.boards + fi + + if [ "$maintainers" != "-" ]; then + echo $maintainers | \ + awk 'BEGIN {FS=":"}; { for (i = 1; i <= NF; i++) printf("M:\t%s\n", $i) }' \ + >> MAINTAINERS.boards + fi + + if [ "$gittree" != "-" ]; then + echo -e "T:\tgit $gittree" >> MAINTAINERS.boards + fi + + echo -e "S:\t$status" >> MAINTAINERS.boards + + if [ "$vendor" = "-" ]; then + echo -e "F:\tboard/$board/" >> MAINTAINERS.boards + else + echo -e "F:\tboard/$vendor/$board/" >> MAINTAINERS.boards + + if [ -e board/$vendor/common/Makefile ]; then + echo -e "F:\tboard/$vendor/common/" >> MAINTAINERS.boards + fi + fi + + config_h=include/configs/${board}.h + echo -e "F:\t$config_h" >> MAINTAINERS.boards + + if [ ! -e $config_h ]; then + echo "$config_h is missing" + exit 1 + fi + + echo >> MAINTAINERS.boards +done < boards.cfg.sorted + +rm -f boards.cfg.sorted boards.cfg.tmp

MAINTAINERS contains all currently known custodians based on infos from wiki [1] and u-boot git forks [2].
[1] http://www.denx.de/wiki/U-Boot/Custodians [2] http://git.denx.de/?p=u-boot.git;a=forks
Signed-off-by: Daniel Schwierzeck daniel.schwierzeck@gmail.com ---
MAINTAINERS | 338 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 338 insertions(+) create mode 100644 MAINTAINERS
diff --git a/MAINTAINERS b/MAINTAINERS new file mode 100644 index 0000000..b1ea336 --- /dev/null +++ b/MAINTAINERS @@ -0,0 +1,338 @@ +Descriptions of section entries: + + P: Person (obsolete) + M: Mail patches to: FullName address@domain + L: Mailing list that is relevant to this area + W: Web-page with status/info + Q: Patchwork web based patch tracking system site + T: SCM tree type and location. + Type is one of: git, hg, quilt, stgit, topgit + S: Status, one of the following: + Supported: Someone is actually paid to look after this. + Maintained: Someone actually looks after it. + Odd Fixes: It has a maintainer but they don't have time to do + much other than throw the odd patch in. See below.. + Orphan: No current maintainer [but maybe you could take the + role as you write your new code]. + Obsolete: Old code. Something tagged obsolete generally means + it has been replaced by a better system and you + should be using that. + F: Files and directories with wildcard patterns. + A trailing slash includes all files and subdirectory files. + F: drivers/net/ all files in and below drivers/net + F: drivers/net/* all files in drivers/net, but not below + F: */net/* all files in "any top level directory"/net + One pattern per line. Multiple F: lines acceptable. + N: Files and directories with regex patterns. + N: [^a-z]tegra all files whose path contains the word tegra + One pattern per line. Multiple N: lines acceptable. + scripts/get_maintainer.pl has different behavior for files that + match F: pattern and matches of N: patterns. By default, + get_maintainer will not look at git log history when an F: pattern + match occurs. When an N: match occurs, git log history is used + to also notify the people that have git commit signatures. + X: Files and directories that are NOT maintained, same rules as F: + Files exclusions are tested before file matches. + Can be useful for excluding a specific subdirectory, for instance: + F: net/ + X: net/ipv6/ + matches all files in and below net excluding net/ipv6/ + K: Keyword perl extended regex pattern to match content in a + patch or file. For instance: + K: of_get_profile + matches patches or files that contain "of_get_profile" + K: \b(printk|pr_(info|err))\b + matches patches or files that contain one or more of the words + printk, pr_info or pr_err + One regex pattern per line. Multiple K: lines acceptable. + +Note: For the hard of thinking, this list is meant to remain in alphabetical +order. If you could add yourselves to it in alphabetical order that would be +so much easier [Ed] + +Maintainers List (try to look for most precise areas first) + + ----------------------------------- +ARC +M: Alexey Brodkin alexey.brodkin@synopsys.com +S: Maintained +T: git git://git.denx.de/u-boot-arc.git +F: arch/arc/ + +ARM +M: Albert Aribaud albert.u.boot@aribaud.net +S: Maintained +T: git git://git.denx.de/u-boot-arm.git +F: arch/arm/ + +ARM ATMEL AT91 +M: Andreas Bießmann andreas.devel@googlemail.com +S: Maintained +T: git git://git.denx.de/u-boot-atmel.git +F: arch/arm/cpu/armv7/at91/ +F: arch/arm/cpu/at91-common/ +F: arch/arm/include/asm/arch-at91/ + +ARM FREESCALE IMX +M: Stefano Babic sbabic@denx.de +S: Maintained +T: git git://git.denx.de/u-boot-imx.git +F: arch/arm/cpu/armv7/mx5/ +F: arch/arm/cpu/armv7/mx6/ +F: arch/arm/cpu/imx-common/ +F: arch/arm/include/asm/arch-mx5/ +F: arch/arm/include/asm/arch-mx6/ +F: arch/arm/include/asm/imx-common/ + +ARM MARVELL KIRKWOOD +M: Prafulla Wadaskar prafulla@marvell.com +S: Maintained +T: git git://git.denx.de/u-boot-marvell.git + +ARM MARVELL PXA +M: Marek Vasut marex@denx.de +S: Maintained +T: git git://git.denx.de/u-boot-pxa.git + +ARM SAMSUNG +M: Minkyu Kang mk7.kang@samsung.com +S: Maintained +T: git git://git.denx.de/u-boot-samsung.git + +ARM STM SPEAR +M: Vipin Kumar vipin.kumar@st.com +S: Maintained +T: git git://git.denx.de/u-boot-stm.git + +ARM TEGRA +M: Tom Warren twarren@nvidia.com +S: Maintained +T: git git://git.denx.de/u-boot-tegra.git + +ARM TI +M: Tom Rini trini@ti.com +S: Maintained +T: git git://git.denx.de/u-boot-ti.git + +AVR32 +M: Andreas Bießmann andreas.devel@googlemail.com +S: Maintained +T: git git://git.denx.de/u-boot-avr32.git +F: arch/avr32/ + +BLACKFIN +M: Sonic Zhang sonic.adi@gmail.com +S: Maintained +T: git git://git.denx.de/u-boot-blackfin.git +F: arch/blackfin/ + +CFI FLASH +M: Stefan Roese sr@denx.de +S: Maintained +T: git git://git.denx.de/u-boot-cfi-flash.git +F: drivers/mtd/* + +COLDFIRE +M: Jason Jin jason.jin@freescale.com +S: Maintained +T: git git://git.denx.de/u-boot-coldfire.git +F: arch/m68k/ + +DFU +M: Lukasz Majewski l.majewski@samsung.com +S: Maintained +T: git git://git.denx.de/u-boot-dfu.git +F: drivers/dfu/ + +DRIVER MODEL +M: Simon Glass sjg@chromium.org +S: Maintained +F: drivers/core/ + +FLATTENED DEVICE TREE +M: Jerry Van Baren vanbaren@cideas.com +S: Maintained +T: git git://git.denx.de/u-boot-fdt.git +F: lib/libftd/ + +FREEBSD +M: Rafal Jaworowski raj@semihalf.com +S: Maintained +T: git git://git.denx.de/u-boot-freebsd.git + +FREESCALE QORIQ +M: York Sun yorksun@freescale.com +S: Maintained +T: git git://git.denx.de/u-boot-fsl-qoriq.git + +I2C +M: Heiko Schocher hs@denx.de +S: Maintained +T: git git://git.denx.de/u-boot-i2c.git +F: drivers/i2c/ + +MICROBLAZE +M: Michal Simek monstr@monstr.eu +S: Maintained +T: git git://git.denx.de/u-boot-microblaze.git +F: arch/microblaze/ + +MIPS +M: Daniel Schwierzeck daniel.schwierzeck@gmail.com +S: Maintained +T: git git://git.denx.de/u-boot-mips.git +F: arch/mips/ + +MMC +M: Pantelis Antoniou <panto.antoniou-consulting.com> +S: Maintained +T: git git://git.denx.de/u-boot-mmc.git +F: drivers/mmc/ + +OPENRISC +M: Stefan Kristiansson stefan.kristiansson@saunalahti.fi +S: Maintained +F: arch/openrisc/ + +POWERPC +M: Wolfgang Denk wd@denx.de +S: Maintained +F: arch/powerpc/ + +POWERPC MPC5XXX +M: Wolfgang Denk wd@denx.de +S: Maintained +T: git git://git.denx.de/u-boot-mpc5xxx.git + +POWERPC MPC8XX +M: Wolfgang Denk wd@denx.de +S: Maintained +T: git git://git.denx.de/u-boot-mpc8xx.git + +POWERPC MPC82XX +M: Wolfgang Denk wd@denx.de +S: Maintained +T: git git://git.denx.de/u-boot-mpc82xx.git + +POWERPC MPC83XX +M: Kim Phillips kim.phillips@freescale.com +S: Maintained +T: git git://git.denx.de/u-boot-mpc83xx.git + +POWERPC MPC85XX +M: York Sun yorksun@freescale.com +S: Maintained +T: git git://git.denx.de/u-boot-mpc85xx.git + +POWERPC MPC86XX +M: York Sun yorksun@freescale.com +S: Maintained +T: git git://git.denx.de/u-boot-mpc86xx.git + +POWERPC PPC74XX PPC7XX +M: Wolfgang Denk wd@denx.de +S: Maintained +T: git git://git.denx.de/u-boot-74xx-7xx.git + +POWERPC PPC4XX +M: Stefan Roese sr@denx.de +S: Maintained +T: git git://git.denx.de/u-boot-ppc4xx.git + +NETWORK +M: Joe Hershberger joe.hershberger@gmail.com +S: Maintained +T: git git://git.denx.de/u-boot-net.git +F: drivers/net/ + +NAND FLASH +M: Scott Wood scottwood@freescale.com +S: Maintained +T: git git://git.denx.de/u-boot-nand-flash.git +F: drivers/mtd/nand/ + +NDS32 +M: Macpaul Lin macpaul@andestech.com +S: Maintained +T: git git://git.denx.de/u-boot-nds32.git +F: arch/nds32/ + +NIOS +M: Thomas Chou thomas@wytron.com.tw +S: Maintained +T: git git://git.denx.de/u-boot-nios.git +F: arch/nios2/ + +ONENAND +M: Lukasz Majewski l.majewski@samsung.com +S: Maintained +T: git git://git.denx.de/u-boot-onenand.git +F: drivers/mtd/onenand/ + +SANDBOX +M: Simon Glass sjg@chromium.org +S: Maintained +F: arch/sandbox/ + +SH +M: Nobuhiro Iwamatsu iwamatsu@nigauri.org +S: Maintained +T: git git://git.denx.de/u-boot-sh.git +F: arch/sh/ + +SPARC +M: Daniel Hellstrom daniel@gaisler.com +S: Maintained +T: git git://git.denx.de/u-boot-sparc.git +F: arch/sparc/ + +SPI +M: Jagannadha Sutradharudu Teki jagannadh.teki@gmail.com +S: Maintained +T: git git://git.denx.de/u-boot-spi.git +F: drivers/mtd/spi/ +F: drivers/spi/ +F: include/spi* + +TESTING +M: Detlev Zundel dzu@denx.de +S: Maintained +T: git git://git.denx.de/u-boot-testing.git + +TQ GROUP +M: Martin Krause martin.krause@tq-systems.de +S: Maintained +T: git git://git.denx.de/u-boot-tq-group.git + +UBI +M: Kyungmin Park kmpark@infradead.org +S: Maintained +T: git git://git.denx.de/u-boot-ubi.git +F: drivers/mtd/ubi/ + +USB +M: Marek Vasut marex@denx.de +S: Maintained +T: git git://git.denx.de/u-boot-usb.git +F: drivers/usb/ + +VIDEO +M: Anatolij Gustschin agust@denx.de +S: Maintained +T: git git://git.denx.de/u-boot-video.git +F: drivers/video/ + +X86 +M: Simon Glass sjg@chromium.org +S: Maintained +T: git git://git.denx.de/u-boot-x86.git +F: arch/x86/ + +THE REST +M: Tom Rini trini@ti.com +L: u-boot@lists.denx.de +Q: http://patchwork.ozlabs.org/project/uboot/list/ +S: Maintained +T: git git://git.denx.de/u-boot.git +F: * +F: */

Dear Daniel Schwierzeck,
In message 1398027454-20399-3-git-send-email-daniel.schwierzeck@gmail.com you wrote:
MAINTAINERS contains all currently known custodians based on infos from wiki [1] and u-boot git forks [2].
[1] http://www.denx.de/wiki/U-Boot/Custodians [2] http://git.denx.de/?p=u-boot.git;a=forks
Signed-off-by: Daniel Schwierzeck daniel.schwierzeck@gmail.com
I'm afraid that a major part of the information presented here is plain wrong. The situation is way more complicated than what the structure of the custodian repositories reflects.
Unfrotunately I'm not able to give any recommendations how to improve this. Actually I'm not even convinced this could / should be done.
Best regards,
Wolfgang Denk

MAINTAINERS.boards is generated from boards.cfg at commit b149c4c.
Signed-off-by: Daniel Schwierzeck daniel.schwierzeck@gmail.com ---
MAINTAINERS.boards | 4522 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 4522 insertions(+) create mode 100644 MAINTAINERS.boards
diff --git a/MAINTAINERS.boards b/MAINTAINERS.boards new file mode 100644 index 0000000..2a65014 --- /dev/null +++ b/MAINTAINERS.boards @@ -0,0 +1,4522 @@ +BOARD A3000 +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Maintained +F: board/A3000/ +F: include/configs/A3000.h + +BOARD a320evb faraday +M: Po-Yu Chuang ratbert@faraday-tech.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/faraday/a320evb/ +F: include/configs/a320evb.h + +BOARD a3m071 +M: Stefan Roese sr@denx.de +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/a3m071/ +F: include/configs/a3m071.h + +BOARD a4m072 +M: Sergei Poselenov sposelenov@emcraft.com +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/a4m072/ +F: include/configs/a4m072.h + +BOARD ac14xx ifm +M: Anatolij Gustschin agust@denx.de +S: Maintained +F: board/ifm/ac14xx/ +F: include/configs/ac14xx.h + +BOARD acadia amcc +M: Stefan Roese sr@denx.de +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/amcc/acadia/ +F: include/configs/acadia.h + +BOARD adp-ag101 AndesTech +M: Andes uboot@andestech.com +T: git git://git.denx.de/u-boot-nds32.git +S: Maintained +F: board/AndesTech/adp-ag101/ +F: include/configs/adp-ag101.h + +BOARD adp-ag101p AndesTech +M: Andes uboot@andestech.com +T: git git://git.denx.de/u-boot-nds32.git +S: Maintained +F: board/AndesTech/adp-ag101p/ +F: include/configs/adp-ag101p.h + +BOARD adp-ag102 AndesTech +M: Andes uboot@andestech.com +T: git git://git.denx.de/u-boot-nds32.git +S: Maintained +F: board/AndesTech/adp-ag102/ +F: include/configs/adp-ag102.h + +BOARD aev tqc +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/tqc/aev/ +F: include/configs/aev.h + +BOARD afeb9260 +M: Sergey Lapin slapin@ossfans.org +T: git git://git.denx.de/u-boot-atmel.git +S: Maintained +F: board/afeb9260/ +F: include/configs/afeb9260.h + +BOARD alpr prodrive +M: Stefan Roese sr@denx.de +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/prodrive/alpr/ +F: include/configs/alpr.h + +BOARD am335x_evm ti +M: Tom Rini trini@ti.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/ti/am335x_evm/ +F: include/configs/am335x_evm.h + +BOARD am335x_igep0033 isee +M: Enric Balletbo i Serra eballetbo@iseebcn.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/isee/am335x_igep0033/ +F: include/configs/am335x_igep0033.h + +BOARD am3517_crane ti +M: Nagendra T S nagendra@mistralsolutions.com +T: git git://git.denx.de/u-boot-ti.git +S: Maintained +F: board/ti/am3517_crane/ +F: include/configs/am3517_crane.h + +BOARD am3517_evm logicpd +M: Vaibhav Hiremath hvaibhav@ti.com +T: git git://git.denx.de/u-boot-ti.git +S: Maintained +F: board/logicpd/am3517_evm/ +F: include/configs/am3517_evm.h + +BOARD am43xx_evm ti +M: Lokesh Vutla lokeshvutla@ti.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/ti/am43xx_evm/ +F: include/configs/am43xx_evm.h + +BOARD ap325rxa renesas +M: Nobuhiro Iwamatsu iwamatsu.nobuhiro@renesas.com +M: Nobuhiro Iwamatsu iwamatsu@nigauri.org +T: git git://git.denx.de/u-boot-sh.git +S: Maintained +F: board/renesas/ap325rxa/ +F: include/configs/ap325rxa.h + +BOARD APC405 esd +M: Matthias Fuchs matthias.fuchs@esd-electronics.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/esd/APC405/ +F: include/configs/APC405.h + +BOARD apf27 armadeus +M: Philippe Reynes tremyfr@yahoo.fr +M: Eric Jarrige eric.jarrige@armadeus.org +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/armadeus/apf27/ +F: include/configs/apf27.h + +BOARD ap_sh4a_4a alphaproject +M: Nobuhiro Iwamatsu iwamatsu.nobuhiro@renesas.com +M: Nobuhiro Iwamatsu iwamatsu@nigauri.org +T: git git://git.denx.de/u-boot-sh.git +S: Maintained +F: board/alphaproject/ap_sh4a_4a/ +F: include/configs/ap_sh4a_4a.h + +BOARD apx4devkit bluegiga +M: Lauri Hintsala lauri.hintsala@bluegiga.com +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/bluegiga/apx4devkit/ +F: include/configs/apx4devkit.h + +BOARD AR405 esd +M: Matthias Fuchs matthias.fuchs@esd-electronics.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/esd/AR405/ +F: include/configs/AR405.h + +BOARD arcangel4-be synopsys +M: Alexey Brodkin abrodkin@synopsys.com +S: Maintained +F: board/synopsys/arcangel4-be/ +F: include/configs/arcangel4-be.h + +BOARD arcangel4 synopsys +M: Alexey Brodkin abrodkin@synopsys.com +S: Maintained +F: board/synopsys/arcangel4/ +F: include/configs/arcangel4.h + +BOARD aria davedenx +M: Wolfgang Denk wd@denx.de +S: Maintained +F: board/davedenx/aria/ +F: include/configs/aria.h + +BOARD armadillo-800eva atmark-techno +M: Nobuhiro Iwamatsu nobuhiro.iwamatsu.yj@renesas.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/atmark-techno/armadillo-800eva/ +F: include/configs/armadillo-800eva.h + +BOARD arndale samsung +M: Inderpal Singh inderpal.singh@linaro.org +T: git git://git.denx.de/u-boot-samsung.git +S: Maintained +F: board/samsung/arndale/ +F: board/samsung/common/ +F: include/configs/arndale.h + +BOARD ASH405 esd +M: Matthias Fuchs matthias.fuchs@esd-electronics.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/esd/ASH405/ +F: include/configs/ASH405.h + +BOARD aspenite Marvell +M: Prafulla Wadaskar prafulla@marvell.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/Marvell/aspenite/ +F: include/configs/aspenite.h + +BOARD astro_mcf5373l astro +M: Wolfgang Wegner w.wegner@astro-kom.de +T: git git://git.denx.de/u-boot-coldfire.git +S: Maintained +F: board/astro/astro_mcf5373l/ +F: include/configs/astro_mcf5373l.h + +BOARD at91rm9200ek atmel +M: Andreas Bießmann andreas.devel@gmail.com +T: git git://git.denx.de/u-boot-atmel.git +S: Maintained +F: board/atmel/at91rm9200ek/ +F: include/configs/at91rm9200ek.h + +BOARD at91sam9260ek atmel +M: Stelian Pop stelian@popies.net +T: git git://git.denx.de/u-boot-atmel.git +S: Maintained +F: board/atmel/at91sam9260ek/ +F: include/configs/at91sam9260ek.h + +BOARD at91sam9261ek atmel +M: Stelian Pop stelian@popies.net +T: git git://git.denx.de/u-boot-atmel.git +S: Maintained +F: board/atmel/at91sam9261ek/ +F: include/configs/at91sam9261ek.h + +BOARD at91sam9263ek atmel +M: Stelian Pop stelian@popies.net +T: git git://git.denx.de/u-boot-atmel.git +S: Maintained +F: board/atmel/at91sam9263ek/ +F: include/configs/at91sam9263ek.h + +BOARD at91sam9m10g45ek atmel +M: Bo Shenvoice.shen@atmel.com +T: git git://git.denx.de/u-boot-atmel.git +S: Maintained +F: board/atmel/at91sam9m10g45ek/ +F: include/configs/at91sam9m10g45ek.h + +BOARD at91sam9n12ek atmel +M: Josh Wu josh.wu@atmel.com +T: git git://git.denx.de/u-boot-atmel.git +S: Maintained +F: board/atmel/at91sam9n12ek/ +F: include/configs/at91sam9n12ek.h + +BOARD at91sam9rlek atmel +M: Stelian Pop stelian@popies.net +T: git git://git.denx.de/u-boot-atmel.git +S: Maintained +F: board/atmel/at91sam9rlek/ +F: include/configs/at91sam9rlek.h + +BOARD at91sam9x5ek atmel +M: Bo Shen voice.shen@atmel.com +T: git git://git.denx.de/u-boot-atmel.git +S: Maintained +F: board/atmel/at91sam9x5ek/ +F: include/configs/at91sam9x5ek.h + +BOARD atc +M: Wolfgang Denk wd@denx.de +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Maintained +F: board/atc/ +F: include/configs/atc.h + +BOARD atngw100 atmel +M: Haavard Skinnemoen haavard.skinnemoen@atmel.com +T: git git://git.denx.de/u-boot-avr32.git +S: Maintained +F: board/atmel/atngw100/ +F: include/configs/atngw100.h + +BOARD atngw100mkii atmel +M: Andreas Bießmann andreas.devel@googlemail.com +T: git git://git.denx.de/u-boot-avr32.git +S: Maintained +F: board/atmel/atngw100mkii/ +F: include/configs/atngw100mkii.h + +BOARD atstk1002 atmel +M: Haavard Skinnemoen haavard.skinnemoen@atmel.com +T: git git://git.denx.de/u-boot-avr32.git +S: Maintained +F: board/atmel/atstk1002/ +F: include/configs/atstk1002.h + +BOARD atstk1003 atmel +M: Haavard Skinnemoen haavard.skinnemoen@atmel.com +T: git git://git.denx.de/u-boot-avr32.git +S: Maintained +F: board/atmel/atstk1003/ +F: include/configs/atstk1003.h + +BOARD atstk1004 atmel +M: Haavard Skinnemoen haavard.skinnemoen@atmel.com +T: git git://git.denx.de/u-boot-avr32.git +S: Maintained +F: board/atmel/atstk1004/ +F: include/configs/atstk1004.h + +BOARD atstk1006 atmel +M: Haavard Skinnemoen haavard.skinnemoen@atmel.com +T: git git://git.denx.de/u-boot-avr32.git +S: Maintained +F: board/atmel/atstk1006/ +F: include/configs/atstk1006.h + +BOARD axs101 synopsys +M: Alexey Brodkin abrodkin@synopsys.com +S: Maintained +F: board/synopsys/axs101/ +F: include/configs/axs101.h + +BOARD B4860QDS freescale +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/B4860QDS/ +F: board/freescale/common/ +F: include/configs/B4860QDS.h + +BOARD balloon3 +M: Marek Vasut marek.vasut@gmail.com +T: git git://git.denx.de/u-boot-pxa.git +S: Maintained +F: board/balloon3/ +F: include/configs/balloon3.h + +BOARD bamboo amcc +M: Stefan Roese sr@denx.de +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/amcc/bamboo/ +F: include/configs/bamboo.h + +BOARD BC3450 +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/BC3450/ +F: include/configs/BC3450.h + +BOARD bcm28155_ap broadcom +M: Tim Kryger tim.kryger@linaro.org +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/broadcom/bcm28155_ap/ +F: include/configs/bcm28155_ap.h + +BOARD bct-brettl2 +M: Peter Meerwald devel@bct-electronic.com +T: git git://git.denx.de/u-boot-blackfin.git +S: Maintained +F: board/bct-brettl2/ +F: include/configs/bct-brettl2.h + +BOARD beaver nvidia +M: Tom Warren twarren@nvidia.com +M: Stephen Warren swarren@nvidia.com +T: git git://git.denx.de/u-boot-tegra.git +S: Maintained +F: board/nvidia/beaver/ +F: board/nvidia/common/ +F: include/configs/beaver.h + +BOARD bf506f-ezkit +M: Sonic Zhang sonic.adi@gmail.com +T: git git://git.denx.de/u-boot-blackfin.git +S: Maintained +F: board/bf506f-ezkit/ +F: include/configs/bf506f-ezkit.h + +BOARD bf518f-ezbrd +M: Sonic Zhang sonic.adi@gmail.com +T: git git://git.denx.de/u-boot-blackfin.git +S: Maintained +F: board/bf518f-ezbrd/ +F: include/configs/bf518f-ezbrd.h + +BOARD bf525-ucr2 +M: Haitao Zhang hzhang@ucrobotics.com +M: Chong Huang chuang@ucrobotics.com +T: git git://git.denx.de/u-boot-blackfin.git +S: Maintained +F: board/bf525-ucr2/ +F: include/configs/bf525-ucr2.h + +BOARD bf526-ezbrd +M: Sonic Zhang sonic.adi@gmail.com +T: git git://git.denx.de/u-boot-blackfin.git +S: Maintained +F: board/bf526-ezbrd/ +F: include/configs/bf526-ezbrd.h + +BOARD bf527-ad7160-eval +M: Sonic Zhang sonic.adi@gmail.com +T: git git://git.denx.de/u-boot-blackfin.git +S: Maintained +F: board/bf527-ad7160-eval/ +F: include/configs/bf527-ad7160-eval.h + +BOARD bf527-ezkit +M: Sonic Zhang sonic.adi@gmail.com +T: git git://git.denx.de/u-boot-blackfin.git +S: Maintained +F: board/bf527-ezkit/ +F: include/configs/bf527-ezkit.h + +BOARD bf527-sdp +M: Sonic Zhang sonic.adi@gmail.com +T: git git://git.denx.de/u-boot-blackfin.git +S: Maintained +F: board/bf527-sdp/ +F: include/configs/bf527-sdp.h + +BOARD bf533-ezkit +M: Sonic Zhang sonic.adi@gmail.com +T: git git://git.denx.de/u-boot-blackfin.git +S: Maintained +F: board/bf533-ezkit/ +F: include/configs/bf533-ezkit.h + +BOARD bf533-stamp +M: Sonic Zhang sonic.adi@gmail.com +T: git git://git.denx.de/u-boot-blackfin.git +S: Maintained +F: board/bf533-stamp/ +F: include/configs/bf533-stamp.h + +BOARD bf537-minotaur +M: Martin Strubel strubel@section5.ch +T: git git://git.denx.de/u-boot-blackfin.git +S: Maintained +F: board/bf537-minotaur/ +F: include/configs/bf537-minotaur.h + +BOARD bf537-pnav +M: Sonic Zhang sonic.adi@gmail.com +T: git git://git.denx.de/u-boot-blackfin.git +S: Maintained +F: board/bf537-pnav/ +F: include/configs/bf537-pnav.h + +BOARD bf537-srv1 +M: Martin Strubel strubel@section5.ch +T: git git://git.denx.de/u-boot-blackfin.git +S: Maintained +F: board/bf537-srv1/ +F: include/configs/bf537-srv1.h + +BOARD bf537-stamp +M: Sonic Zhang sonic.adi@gmail.com +T: git git://git.denx.de/u-boot-blackfin.git +S: Maintained +F: board/bf537-stamp/ +F: include/configs/bf537-stamp.h + +BOARD bf538f-ezkit +M: Sonic Zhang sonic.adi@gmail.com +T: git git://git.denx.de/u-boot-blackfin.git +S: Maintained +F: board/bf538f-ezkit/ +F: include/configs/bf538f-ezkit.h + +BOARD bf548-ezkit +M: Sonic Zhang sonic.adi@gmail.com +T: git git://git.denx.de/u-boot-blackfin.git +S: Maintained +F: board/bf548-ezkit/ +F: include/configs/bf548-ezkit.h + +BOARD bf561-acvilon +M: Anton Shurpin shurpin.aa@niistt.ru +M: Valentin Yakovenkov yakovenkov@niistt.ru +T: git git://git.denx.de/u-boot-blackfin.git +S: Maintained +F: board/bf561-acvilon/ +F: include/configs/bf561-acvilon.h + +BOARD bf561-ezkit +M: Sonic Zhang sonic.adi@gmail.com +T: git git://git.denx.de/u-boot-blackfin.git +S: Maintained +F: board/bf561-ezkit/ +F: include/configs/bf561-ezkit.h + +BOARD bf609-ezkit +M: Sonic Zhang sonic.adi@gmail.com +T: git git://git.denx.de/u-boot-blackfin.git +S: Maintained +F: board/bf609-ezkit/ +F: include/configs/bf609-ezkit.h + +BOARD bg0900 ppcag +M: Marek Vasut marex@denx.de +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/ppcag/bg0900/ +F: include/configs/bg0900.h + +BOARD blackstamp +M: Wojtek Skulski skulski@pas.rochester.edu +M: Wojtek Skulski info@skutek.com +M: Benjamin Matthews mben12@gmail.com +T: git git://git.denx.de/u-boot-blackfin.git +S: Maintained +F: board/blackstamp/ +F: include/configs/blackstamp.h + +BOARD blackvme +M: Wojtek Skulski skulski@pas.rochester.edu +M: Wojtek Skulski info@skutek.com +M: Benjamin Matthews mben12@gmail.com +T: git git://git.denx.de/u-boot-blackfin.git +S: Maintained +F: board/blackvme/ +F: include/configs/blackvme.h + +BOARD br4 +M: Dimitar Penev dpn@switchfin.org +T: git git://git.denx.de/u-boot-blackfin.git +S: Maintained +F: board/br4/ +F: include/configs/br4.h + +BOARD BSC9131RDB freescale +M: Poonam Aggrwal poonam.aggrwal@freescale.com +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/BSC9131RDB/ +F: board/freescale/common/ +F: include/configs/BSC9131RDB.h + +BOARD BSC9132QDS freescale +M: Naveen Burmi NaveenBurmi@freescale.com +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/BSC9132QDS/ +F: board/freescale/common/ +F: include/configs/BSC9132QDS.h + +BOARD bubinga amcc +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/amcc/bubinga/ +F: include/configs/bubinga.h + +BOARD C29XPCIE freescale +M: Po Liu po.liu@freescale.com +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/C29XPCIE/ +F: board/freescale/common/ +F: include/configs/C29XPCIE.h + +BOARD calimain omicron +M: Manfred Rudigier manfred.rudigier@omicron.at +M: Christian Riesch christian.riesch@omicron.at +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/omicron/calimain/ +F: include/configs/calimain.h + +BOARD cam_enc_4xx ait +M: Heiko Schocher hs@denx.de +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/ait/cam_enc_4xx/ +F: include/configs/cam_enc_4xx.h + +BOARD canmb +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/canmb/ +F: include/configs/canmb.h + +BOARD canyonlands amcc +M: Stefan Roese sr@denx.de +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/amcc/canyonlands/ +F: include/configs/canyonlands.h + +BOARD cardhu nvidia +M: Tom Warren twarren@nvidia.com +T: git git://git.denx.de/u-boot-tegra.git +S: Maintained +F: board/nvidia/cardhu/ +F: board/nvidia/common/ +F: include/configs/cardhu.h + +BOARD CATcenter dave +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/dave/CATcenter/ +F: include/configs/CATcenter.h + +BOARD cgtqmx6eval congatec +M: Leo Sartre lsartre@adeneo-embedded.com +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/congatec/cgtqmx6eval/ +F: include/configs/cgtqmx6eval.h + +BOARD charon tqc +M: Heiko Schocher hs@denx.de +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/tqc/charon/ +F: include/configs/charon.h + +BOARD cm4008 +M: Greg Ungerer greg.ungerer@opengear.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/cm4008/ +F: include/configs/cm4008.h + +BOARD cm41xx +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/cm41xx/ +F: include/configs/cm41xx.h + +BOARD cm5200 +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/cm5200/ +F: include/configs/cm5200.h + +BOARD cmi_mpc5xx +S: Maintained +F: board/cmi_mpc5xx/ +F: include/configs/cmi_mpc5xx.h + +BOARD CMS700 esd +M: Matthias Fuchs matthias.fuchs@esd-electronics.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/esd/CMS700/ +F: include/configs/CMS700.h + +BOARD cm_t335 compulab +M: Igor Grinberg grinberg@compulab.co.il +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/compulab/cm_t335/ +F: board/compulab/common/ +F: include/configs/cm_t335.h + +BOARD cm_t35 compulab +M: Igor Grinberg grinberg@compulab.co.il +T: git git://git.denx.de/u-boot-ti.git +S: Maintained +F: board/compulab/cm_t35/ +F: board/compulab/common/ +F: include/configs/cm_t35.h + +BOARD cobra5272 +T: git git://git.denx.de/u-boot-coldfire.git +S: Maintained +F: board/cobra5272/ +F: include/configs/cobra5272.h + +BOARD cogent_mpc8260 +M: Murray Jensen Murray.Jensen@csiro.au +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Maintained +F: board/cogent_mpc8260/ +F: include/configs/cogent_mpc8260.h + +BOARD cogent_mpc8xx +M: Murray Jensen Murray.Jensen@csiro.au +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/cogent_mpc8xx/ +F: include/configs/cogent_mpc8xx.h + +BOARD colibri_pxa270 toradex +M: Marek Vasut marek.vasut@gmail.com +T: git git://git.denx.de/u-boot-pxa.git +S: Maintained +F: board/toradex/colibri_pxa270/ +F: include/configs/colibri_pxa270.h + +BOARD colibri_t20_iris toradex +M: Lucas Stach dev@lynxeye.de +T: git git://git.denx.de/u-boot-tegra.git +S: Maintained +F: board/toradex/colibri_t20_iris/ +F: include/configs/colibri_t20_iris.h + +BOARD controlcenterd gdsys +M: Dirk Eibach eibach@gdsys.de +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/gdsys/controlcenterd/ +F: board/gdsys/common/ +F: include/configs/controlcenterd.h + +BOARD coreboot chromebook-x86 +T: git git://git.denx.de/u-boot-x86.git +S: Maintained +F: board/chromebook-x86/coreboot/ +F: include/configs/coreboot.h + +BOARD corvus siemens +M: Heiko Schocher hs@denx.de +T: git git://git.denx.de/u-boot-atmel.git +S: Maintained +F: board/siemens/corvus/ +F: include/configs/corvus.h + +BOARD CPC45 +M: Josef Wagner Wagner@Microsys.de +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Maintained +F: board/CPC45/ +F: include/configs/CPC45.h + +BOARD CPCI2DP esd +M: Matthias Fuchs matthias.fuchs@esd-electronics.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/esd/CPCI2DP/ +F: include/configs/CPCI2DP.h + +BOARD CPCI4052 esd +M: Matthias Fuchs matthias.fuchs@esd-electronics.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/esd/CPCI4052/ +F: include/configs/CPCI4052.h + +BOARD CPCI405AB esd +M: Matthias Fuchs matthias.fuchs@esd-electronics.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/esd/CPCI405AB/ +F: include/configs/CPCI405AB.h + +BOARD CPCI405DT esd +M: Matthias Fuchs matthias.fuchs@esd-electronics.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/esd/CPCI405DT/ +F: include/configs/CPCI405DT.h + +BOARD CPCI405 esd +M: Matthias Fuchs matthias.fuchs@esd-electronics.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/esd/CPCI405/ +F: include/configs/CPCI405.h + +BOARD cpci5200 esd +M: Reinhard Arlt reinhard.arlt@esd-electronics.com +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/esd/cpci5200/ +F: include/configs/cpci5200.h + +BOARD CPCI750 esd +M: Reinhard Arlt reinhard.arlt@esd-electronics.com +T: git git://git.denx.de/u-boot-74xx-7xx.git +S: Maintained +F: board/esd/CPCI750/ +F: include/configs/CPCI750.h + +BOARD CPCIISER4 esd +M: Matthias Fuchs matthias.fuchs@esd-electronics.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/esd/CPCIISER4/ +F: include/configs/CPCIISER4.h + +BOARD CPU86 +M: Wolfgang Denk wd@denx.de +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Maintained +F: board/CPU86/ +F: include/configs/CPU86.h + +BOARD CPU87 +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Maintained +F: board/CPU87/ +F: include/configs/CPU87.h + +BOARD cpu9260 eukrea +M: Eric Benard eric@eukrea.com +T: git git://git.denx.de/u-boot-atmel.git +S: Maintained +F: board/eukrea/cpu9260/ +F: include/configs/cpu9260.h + +BOARD cpuat91 eukrea +M: Eric Benard eric@eukrea.com +T: git git://git.denx.de/u-boot-atmel.git +S: Maintained +F: board/eukrea/cpuat91/ +F: include/configs/cpuat91.h + +BOARD csb272 +M: Tolunay Orkun torkun@nextio.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/csb272/ +F: include/configs/csb272.h + +BOARD csb472 +M: Tolunay Orkun torkun@nextio.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/csb472/ +F: include/configs/csb472.h + +BOARD CU824 +M: Wolfgang Denk wd@denx.de +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Maintained +F: board/CU824/ +F: include/configs/CU824.h + +BOARD da830evm davinci +M: Nick Thompson nick.thompson@gefanuc.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/davinci/da830evm/ +F: include/configs/da830evm.h + +BOARD da850evm davinci +M: Sudhakar Rajashekhara sudhakar.raj@ti.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/davinci/da850evm/ +F: include/configs/da850evm.h + +BOARD dalmore nvidia +M: Tom Warren twarren@nvidia.com +T: git git://git.denx.de/u-boot-tegra.git +S: Maintained +F: board/nvidia/dalmore/ +F: board/nvidia/common/ +F: include/configs/dalmore.h + +BOARD davinci_dm355evm davinci +M: Sandeep Paulraj s-paulraj@ti.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/davinci/davinci_dm355evm/ +F: include/configs/davinci_dm355evm.h + +BOARD davinci_dm355leopard davinci +M: Sandeep Paulraj s-paulraj@ti.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/davinci/davinci_dm355leopard/ +F: include/configs/davinci_dm355leopard.h + +BOARD davinci_dm365evm davinci +M: Sandeep Paulraj s-paulraj@ti.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/davinci/davinci_dm365evm/ +F: include/configs/davinci_dm365evm.h + +BOARD davinci_dm6467evm davinci +M: Sandeep Paulraj s-paulraj@ti.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/davinci/davinci_dm6467evm/ +F: include/configs/davinci_dm6467evm.h + +BOARD davinci_dvevm davinci +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/davinci/davinci_dvevm/ +F: include/configs/davinci_dvevm.h + +BOARD davinci_schmoogie davinci +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/davinci/davinci_schmoogie/ +F: include/configs/davinci_schmoogie.h + +BOARD davinci_sffsdr davinci +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/davinci/davinci_sffsdr/ +F: include/configs/davinci_sffsdr.h + +BOARD davinci_sonata davinci +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/davinci/davinci_sonata/ +F: include/configs/davinci_sonata.h + +BOARD DB64360 Marvell +T: git git://git.denx.de/u-boot-74xx-7xx.git +S: Maintained +F: board/Marvell/DB64360/ +F: include/configs/DB64360.h + +BOARD DB64460 Marvell +T: git git://git.denx.de/u-boot-74xx-7xx.git +S: Maintained +F: board/Marvell/DB64460/ +F: include/configs/DB64460.h + +BOARD dbau1x00 +M: Thomas Lange thomas@corelatus.se +T: git git://git.denx.de/u-boot-mips.git +S: Maintained +F: board/dbau1x00/ +F: include/configs/dbau1x00.h + +BOARD devkit3250 timll +M: Vladimir Zapolskiy vz@mleia.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/timll/devkit3250/ +F: include/configs/devkit3250.h + +BOARD devkit8000 timll +M: Thomas Weber weber@corscience.de +T: git git://git.denx.de/u-boot-ti.git +S: Maintained +F: board/timll/devkit8000/ +F: include/configs/devkit8000.h + +BOARD dig297 comelit +M: Luca Ceresoli luca.ceresoli@comelit.it +T: git git://git.denx.de/u-boot-ti.git +S: Maintained +F: board/comelit/dig297/ +F: include/configs/dig297.h + +BOARD digsy_mtc intercontrol +M: Werner Pfister Pfister_Werner@intercontrol.de +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/intercontrol/digsy_mtc/ +F: include/configs/digsy_mtc.h + +BOARD dkb Marvell +M: Lei Wen leiwen@marvell.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/Marvell/dkb/ +F: include/configs/dkb.h + +BOARD dlvision-10g gdsys +M: Dirk Eibach eibach@gdsys.de +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/gdsys/dlvision-10g/ +F: board/gdsys/common/ +F: include/configs/dlvision-10g.h + +BOARD dlvision gdsys +M: Dirk Eibach eibach@gdsys.de +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/gdsys/dlvision/ +F: board/gdsys/common/ +F: include/configs/dlvision.h + +BOARD dnp5370 +M: M.Hasewinkel (MHA) info@ssv-embedded.de +T: git git://git.denx.de/u-boot-blackfin.git +S: Maintained +F: board/dnp5370/ +F: include/configs/dnp5370.h + +BOARD dns325 d-link +M: Stefan Herbrechtsmeier stefan@code.herbrechtsmeier.net +T: git git://git.denx.de/u-boot-marvell.git +S: Maintained +F: board/d-link/dns325/ +F: include/configs/dns325.h + +BOARD dockstar Seagate +M: Eric Cooper ecc@cmu.edu +T: git git://git.denx.de/u-boot-marvell.git +S: Maintained +F: board/Seagate/dockstar/ +F: include/configs/dockstar.h + +BOARD DP405 esd +M: Matthias Fuchs matthias.fuchs@esd-electronics.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/esd/DP405/ +F: include/configs/DP405.h + +BOARD dra7xx_evm ti +M: Lokesh Vutla lokeshvutla@ti.com +T: git git://git.denx.de/u-boot-ti.git +S: Maintained +F: board/ti/dra7xx_evm/ +F: include/configs/dra7xx_evm.h + +BOARD dreamplug Marvell +M: Jason Cooper u-boot@lakedaemon.net +T: git git://git.denx.de/u-boot-marvell.git +S: Maintained +F: board/Marvell/dreamplug/ +F: include/configs/dreamplug.h + +BOARD DU405 esd +M: Matthias Fuchs matthias.fuchs@esd-electronics.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/esd/DU405/ +F: include/configs/DU405.h + +BOARD DU440 esd +M: Matthias Fuchs matthias.fuchs@esd-electronics.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/esd/DU440/ +F: include/configs/DU440.h + +BOARD dxr2 siemens +M: Roger Meier r.meier@siemens.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/siemens/dxr2/ +F: include/configs/dxr2.h + +BOARD ea20 davinci +M: Stefano Babic sbabic@denx.de +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/davinci/ea20/ +F: include/configs/ea20.h + +BOARD eb_cpu5282 BuS +M: Jens Scharsig esw@bus-elektronik.de +T: git git://git.denx.de/u-boot-coldfire.git +S: Maintained +F: board/BuS/eb_cpu5282/ +F: include/configs/eb_cpu5282.h + +BOARD eb_cpux9k2 BuS +M: Jens Scharsig esw@bus-elektronik.de +T: git git://git.denx.de/u-boot-atmel.git +S: Maintained +F: board/BuS/eb_cpux9k2/ +F: include/configs/eb_cpux9k2.h + +BOARD ebony amcc +M: Stefan Roese sr@denx.de +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/amcc/ebony/ +F: include/configs/ebony.h + +BOARD eco5pk 8dtech +M: Raphael Assenat raph@8d.com +T: git git://git.denx.de/u-boot-ti.git +S: Maintained +F: board/8dtech/eco5pk/ +F: include/configs/eco5pk.h + +BOARD ecovec renesas +M: Nobuhiro Iwamatsu iwamatsu.nobuhiro@renesas.com +M: Nobuhiro Iwamatsu iwamatsu@nigauri.org +T: git git://git.denx.de/u-boot-sh.git +S: Maintained +F: board/renesas/ecovec/ +F: include/configs/ecovec.h + +BOARD edminiv2 LaCie +M: Albert ARIBAUD albert.u.boot@aribaud.net +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/LaCie/edminiv2/ +F: include/configs/edminiv2.h + +BOARD ELPPC eltec +T: git git://git.denx.de/u-boot-74xx-7xx.git +S: Maintained +F: board/eltec/ELPPC/ +F: include/configs/ELPPC.h + +BOARD ELPT860 LEOX +M: The LEOX team team@leox.org +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/LEOX/ELPT860/ +F: include/configs/ELPT860.h + +BOARD enbw_cmc enbw +M: Heiko Schocher hs@denx.de +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/enbw/enbw_cmc/ +F: include/configs/enbw_cmc.h + +BOARD ep8260 +M: Frank Panno fpanno@delphintech.com +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Maintained +F: board/ep8260/ +F: include/configs/ep8260.h + +BOARD ep82xxm +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Maintained +F: board/ep82xxm/ +F: include/configs/ep82xxm.h + +BOARD espt +T: git git://git.denx.de/u-boot-sh.git +S: Maintained +F: board/espt/ +F: include/configs/espt.h + +BOARD ESTEEM192E +M: Conn Clark clark@esteem.com +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/ESTEEM192E/ +F: include/configs/ESTEEM192E.h + +BOARD ethernut5 egnite +M: egnite GmbH info@egnite.de +T: git git://git.denx.de/u-boot-atmel.git +S: Maintained +F: board/egnite/ethernut5/ +F: include/configs/ethernut5.h + +BOARD eXalion +M: Torsten Demke torsten.demke@fci.com +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Maintained +F: board/eXalion/ +F: include/configs/eXalion.h + +BOARD favr-32-ezkit earthlcd +M: Hans-Christian Egtvedt hans-christian.egtvedt@atmel.com +T: git git://git.denx.de/u-boot-avr32.git +S: Maintained +F: board/earthlcd/favr-32-ezkit/ +F: include/configs/favr-32-ezkit.h + +BOARD FLAGADM +M: Kári Davíðsson kd@flaga.is +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/FLAGADM/ +F: include/configs/FLAGADM.h + +BOARD flea3 CarMediaLab +M: Stefano Babic sbabic@denx.de +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/CarMediaLab/flea3/ +F: include/configs/flea3.h + +BOARD FPS850L tqc +M: Wolfgang Denk wd@denx.de +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/tqc/FPS850L/ +F: include/configs/FPS850L.h + +BOARD FPS860L tqc +M: Wolfgang Denk wd@denx.de +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/tqc/FPS860L/ +F: include/configs/FPS860L.h + +BOARD fx12mm avnet +M: Georg Schardt schardt@team-ctech.de +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/avnet/fx12mm/ +F: include/configs/fx12mm.h + +BOARD G2000 +M: Matthias Fuchs matthias.fuchs@esd-electronics.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/G2000/ +F: include/configs/G2000.h + +BOARD galaxy5200 +M: Eric Millbrandt emillbrandt@dekaresearch.com +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/galaxy5200/ +F: include/configs/galaxy5200.h + +BOARD gdppc440etx gdsys +M: Dirk Eibach eibach@gdsys.de +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/gdsys/gdppc440etx/ +F: board/gdsys/common/ +F: include/configs/gdppc440etx.h + +BOARD GEN860T +M: Keith Outwater Keith_Outwater@mvis.com +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/GEN860T/ +F: include/configs/GEN860T.h + +BOARD goflexhome Seagate +M: Suriyan Ramasami suriyan.r@gmail.com +T: git git://git.denx.de/u-boot-marvell.git +S: Maintained +F: board/Seagate/goflexhome/ +F: include/configs/goflexhome.h + +BOARD gplugd Marvell +M: Ajay Bhargav ajay.bhargav@einfochips.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/Marvell/gplugd/ +F: include/configs/gplugd.h + +BOARD grasshopper in-circuit +M: Andreas Bießmann andreas.devel@googlemail.com +T: git git://git.denx.de/u-boot-avr32.git +S: Maintained +F: board/in-circuit/grasshopper/ +F: include/configs/grasshopper.h + +BOARD gr_cpci_ax2000 gaisler +T: git git://git.denx.de/u-boot-sparc.git +S: Maintained +F: board/gaisler/gr_cpci_ax2000/ +F: include/configs/gr_cpci_ax2000.h + +BOARD gr_ep2s60 gaisler +T: git git://git.denx.de/u-boot-sparc.git +S: Maintained +F: board/gaisler/gr_ep2s60/ +F: include/configs/gr_ep2s60.h + +BOARD grsim gaisler +T: git git://git.denx.de/u-boot-sparc.git +S: Maintained +F: board/gaisler/grsim/ +F: include/configs/grsim.h + +BOARD grsim_leon2 gaisler +T: git git://git.denx.de/u-boot-sparc.git +S: Maintained +F: board/gaisler/grsim_leon2/ +F: include/configs/grsim_leon2.h + +BOARD gr_xc3s_1500 gaisler +T: git git://git.denx.de/u-boot-sparc.git +S: Maintained +F: board/gaisler/gr_xc3s_1500/ +F: include/configs/gr_xc3s_1500.h + +BOARD guruplug Marvell +M: Siddarth Gore gores@marvell.com +T: git git://git.denx.de/u-boot-marvell.git +S: Maintained +F: board/Marvell/guruplug/ +F: include/configs/guruplug.h + +BOARD gw8260 +M: Oliver Brown obrown@adventnetworks.com +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Maintained +F: board/gw8260/ +F: include/configs/gw8260.h + +BOARD gw_ventana gateworks +M: Tim Harvey tharvey@gateworks.com +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/gateworks/gw_ventana/ +F: include/configs/gw_ventana.h + +BOARD h2200 +M: Lukasz Dalek luk0104@gmail.com +T: git git://git.denx.de/u-boot-pxa.git +S: Maintained +F: board/h2200/ +F: include/configs/h2200.h + +BOARD hammerhead miromico +M: Julien May julien.may@miromico.ch +M: Alex Raimondi alex.raimondi@miromico.ch +T: git git://git.denx.de/u-boot-avr32.git +S: Maintained +F: board/miromico/hammerhead/ +F: include/configs/hammerhead.h + +BOARD harmony nvidia +M: Tom Warren twarren@nvidia.com +T: git git://git.denx.de/u-boot-tegra.git +S: Maintained +F: board/nvidia/harmony/ +F: board/nvidia/common/ +F: include/configs/harmony.h + +BOARD hawkboard davinci +M: Syed Mohammed Khasim sm.khasim@gmail.com +M: Sughosh Ganu urwithsughosh@gmail.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/davinci/hawkboard/ +F: include/configs/hawkboard.h + +BOARD hermes +M: Wolfgang Denk wd@denx.de +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/hermes/ +F: include/configs/hermes.h + +BOARD HH405 esd +M: Matthias Fuchs matthias.fuchs@esd-electronics.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/esd/HH405/ +F: include/configs/HH405.h + +BOARD highbank +M: Rob Herring rob.herring@calxeda.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/highbank/ +F: include/configs/highbank.h + +BOARD hmi1001 manroland +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/manroland/hmi1001/ +F: include/configs/hmi1001.h + +BOARD HUB405 esd +M: Matthias Fuchs matthias.fuchs@esd-electronics.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/esd/HUB405/ +F: include/configs/HUB405.h + +BOARD hummingboard solidrun +M: Jon Nettleton jon.nettleton@gmail.com +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/solidrun/hummingboard/ +F: include/configs/hummingboard.h + +BOARD HWW1U1A exmeritus +M: Kyle Moffett Kyle.D.Moffett@boeing.com +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/exmeritus/HWW1U1A/ +F: include/configs/HWW1U1A.h + +BOARD hymod +M: Murray Jensen Murray.Jensen@csiro.au +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Maintained +F: board/hymod/ +F: include/configs/hymod.h + +BOARD ib62x0 raidsonic +M: Luka Perkov luka@openwrt.org +T: git git://git.denx.de/u-boot-marvell.git +S: Maintained +F: board/raidsonic/ib62x0/ +F: include/configs/ib62x0.h + +BOARD ibf-dsp561 +M: I-SYST Micromodule support@i-syst.com +T: git git://git.denx.de/u-boot-blackfin.git +S: Maintained +F: board/ibf-dsp561/ +F: include/configs/ibf-dsp561.h + +BOARD IceCube +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/IceCube/ +F: include/configs/IceCube.h + +BOARD IceCube +M: Wolfgang Denk wd@denx.de +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/IceCube/ +F: include/configs/IceCube.h + +BOARD icon mosaixtech +M: Stefan Roese sr@denx.de +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/mosaixtech/icon/ +F: include/configs/icon.h + +BOARD iconnect iomega +M: Luka Perkov luka@openwrt.org +T: git git://git.denx.de/u-boot-marvell.git +S: Maintained +F: board/iomega/iconnect/ +F: include/configs/iconnect.h + +BOARD ICU862 +M: Wolfgang Denk wd@denx.de +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/ICU862/ +F: include/configs/ICU862.h + +BOARD IDS8247 +M: Heiko Schocher hs@denx.de +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Maintained +F: board/IDS8247/ +F: include/configs/IDS8247.h + +BOARD ima3-mx53 esg +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/esg/ima3-mx53/ +F: include/configs/ima3-mx53.h + +BOARD imx27lite logicpd +M: Wolfgang Denk wd@denx.de +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/logicpd/imx27lite/ +F: include/configs/imx27lite.h + +BOARD imx31_litekit logicpd +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/logicpd/imx31_litekit/ +F: include/configs/imx31_litekit.h + +BOARD imx31_phycore +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/imx31_phycore/ +F: include/configs/imx31_phycore.h + +BOARD incaip +M: Wolfgang Denk wd@denx.de +T: git git://git.denx.de/u-boot-mips.git +S: Maintained +F: board/incaip/ +F: include/configs/incaip.h + +BOARD inka4x0 +M: Detlev Zundel dzu@denx.de +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/inka4x0/ +F: include/configs/inka4x0.h + +BOARD integratorap armltd +M: Linus Walleij linus.walleij@linaro.org +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/armltd/integratorap/ +F: include/configs/integratorap.h + +BOARD integratorcp armltd +M: Linus Walleij linus.walleij@linaro.org +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/armltd/integratorcp/ +F: include/configs/integratorcp.h + +BOARD intip gdsys +M: Dirk Eibach eibach@gdsys.de +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/gdsys/intip/ +F: board/gdsys/common/ +F: include/configs/intip.h + +BOARD io64 gdsys +M: Dirk Eibach eibach@gdsys.de +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/gdsys/io64/ +F: board/gdsys/common/ +F: include/configs/io64.h + +BOARD iocon gdsys +M: Dirk Eibach eibach@gdsys.de +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/gdsys/iocon/ +F: board/gdsys/common/ +F: include/configs/iocon.h + +BOARD io gdsys +M: Dirk Eibach eibach@gdsys.de +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/gdsys/io/ +F: board/gdsys/common/ +F: include/configs/io.h + +BOARD ip04 +M: Brent Kandetzki brentk@teleco.com +T: git git://git.denx.de/u-boot-blackfin.git +S: Maintained +F: board/ip04/ +F: include/configs/ip04.h + +BOARD IP860 +M: Wolfgang Denk wd@denx.de +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/IP860/ +F: include/configs/IP860.h + +BOARD ipam390 Barix +M: Heiko Schocher hs@denx.de +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/Barix/ipam390/ +F: include/configs/ipam390.h + +BOARD ipek01 +M: Wolfgang Grandegger wg@denx.de +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/ipek01/ +F: include/configs/ipek01.h + +BOARD IPHASE4539 +M: Wolfgang Grandegger wg@denx.de +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Maintained +F: board/IPHASE4539/ +F: include/configs/IPHASE4539.h + +BOARD IVML24 +M: Wolfgang Denk wd@denx.de +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/IVML24/ +F: include/configs/IVML24.h + +BOARD IVMS8 +M: Wolfgang Denk wd@denx.de +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/IVMS8/ +F: include/configs/IVMS8.h + +BOARD jadecpu syteco +M: Matthias Weisser weisserm@arcor.de +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/syteco/jadecpu/ +F: include/configs/jadecpu.h + +BOARD jornada +M: Kristoffer Ericson kristoffer.ericson@gmail.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/jornada/ +F: include/configs/jornada.h + +BOARD JSE +M: Stephen Williams steve@icarus.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/JSE/ +F: include/configs/JSE.h + +BOARD jupiter +M: Heiko Schocher hs@denx.de +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/jupiter/ +F: include/configs/jupiter.h + +BOARD katmai amcc +M: Stefan Roese sr@denx.de +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/amcc/katmai/ +F: include/configs/katmai.h + +BOARD kilauea amcc +M: Stefan Roese sr@denx.de +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/amcc/kilauea/ +F: include/configs/kilauea.h + +BOARD km82xx keymile +M: Holger Brunck holger.brunck@keymile.com +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Maintained +F: board/keymile/km82xx/ +F: include/configs/km82xx.h + +BOARD km8360 keymile +M: Holger Brunck holger.brunck@keymile.com +T: git git://git.denx.de/u-boot-mpc83xx.git +S: Maintained +F: board/keymile/km8360/ +F: include/configs/km8360.h + +BOARD km_kirkwood keymile +M: Valentin Longchamp valentin.longchamp@keymile.com +T: git git://git.denx.de/u-boot-marvell.git +S: Maintained +F: board/keymile/km_kirkwood/ +F: include/configs/km_kirkwood.h + +BOARD kmp204x keymile +M: Valentin Longchamp valentin.longchamp@keymile.com +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/keymile/kmp204x/ +F: include/configs/kmp204x.h + +BOARD koelsch renesas +M: Nobuhiro Iwamatsu nobuhiro.iwamatsu.yj@renesas.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/renesas/koelsch/ +F: include/configs/koelsch.h + +BOARD korat +M: Larry Johnson lrj@acm.org +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/korat/ +F: include/configs/korat.h + +BOARD KUP4K kup +M: Klaus Heydeck heydeck@kieback-peter.de +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/kup/KUP4K/ +F: include/configs/KUP4K.h + +BOARD KUP4X kup +M: Klaus Heydeck heydeck@kieback-peter.de +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/kup/KUP4X/ +F: include/configs/KUP4X.h + +BOARD kwb BuR +M: Hannes Petermaier hannes.petermaier@br-automation.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/BuR/kwb/ +F: include/configs/kwb.h + +BOARD kzm9g kmc +M: Nobuhiro Iwamatsu nobuhiro.iwamatsu.yj@renesas.com +M: Tetsuyuki Kobayashi koba@kmckk.co.jp +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/kmc/kzm9g/ +F: include/configs/kzm9g.h + +BOARD lacie_kw LaCie +T: git git://git.denx.de/u-boot-marvell.git +S: Maintained +F: board/LaCie/lacie_kw/ +F: include/configs/lacie_kw.h + +BOARD lacie_kw LaCie +M: Simon Guinot simon.guinot@sequanux.org +T: git git://git.denx.de/u-boot-marvell.git +S: Maintained +F: board/LaCie/lacie_kw/ +F: include/configs/lacie_kw.h + +BOARD lager renesas +M: Nobuhiro Iwamatsu nobuhiro.iwamatsu.yj@renesas.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/renesas/lager/ +F: include/configs/lager.h + +BOARD lp8x4x icpdas +M: Sergey Yanovich ynvich@gmail.com +T: git git://git.denx.de/u-boot-pxa.git +S: Maintained +F: board/icpdas/lp8x4x/ +F: include/configs/lp8x4x.h + +BOARD lsxl buffalo +M: Michael Walle michael@walle.cc +T: git git://git.denx.de/u-boot-marvell.git +S: Maintained +F: board/buffalo/lsxl/ +F: include/configs/lsxl.h + +BOARD luan amcc +M: John Otken jotken@softadvances.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/amcc/luan/ +F: include/configs/luan.h + +BOARD lwmon5 +M: Stefan Roese sr@denx.de +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/lwmon5/ +F: include/configs/lwmon5.h + +BOARD lwmon +M: Wolfgang Denk wd@denx.de +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/lwmon/ +F: include/configs/lwmon.h + +BOARD m28evk denx +M: Marek Vasut marek.vasut@gmail.com +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/denx/m28evk/ +F: include/configs/m28evk.h + +BOARD M5208EVBE freescale +T: git git://git.denx.de/u-boot-coldfire.git +S: Maintained +F: board/freescale/M5208EVBE/ +F: board/freescale/common/ +F: include/configs/M5208EVBE.h + +BOARD M52277EVB freescale +M: TsiChung Liew Tsi-Chung.Liew@freescale.com +T: git git://git.denx.de/u-boot-coldfire.git +S: Maintained +F: board/freescale/M52277EVB/ +F: board/freescale/common/ +F: include/configs/M52277EVB.h + +BOARD M5235EVB freescale +M: TsiChung Liew Tsi-Chung.Liew@freescale.com +T: git git://git.denx.de/u-boot-coldfire.git +S: Maintained +F: board/freescale/M5235EVB/ +F: board/freescale/common/ +F: include/configs/M5235EVB.h + +BOARD M5249EVB freescale +T: git git://git.denx.de/u-boot-coldfire.git +S: Maintained +F: board/freescale/M5249EVB/ +F: board/freescale/common/ +F: include/configs/M5249EVB.h + +BOARD M5253DEMO freescale +M: TsiChung Liew Tsi-Chung.Liew@freescale.com +T: git git://git.denx.de/u-boot-coldfire.git +S: Maintained +F: board/freescale/M5253DEMO/ +F: board/freescale/common/ +F: include/configs/M5253DEMO.h + +BOARD M5253EVBE freescale +M: Hayden Fraser Hayden.Fraser@freescale.com +T: git git://git.denx.de/u-boot-coldfire.git +S: Maintained +F: board/freescale/M5253EVBE/ +F: board/freescale/common/ +F: include/configs/M5253EVBE.h + +BOARD M5272C3 freescale +T: git git://git.denx.de/u-boot-coldfire.git +S: Maintained +F: board/freescale/M5272C3/ +F: board/freescale/common/ +F: include/configs/M5272C3.h + +BOARD M5275EVB freescale +T: git git://git.denx.de/u-boot-coldfire.git +S: Maintained +F: board/freescale/M5275EVB/ +F: board/freescale/common/ +F: include/configs/M5275EVB.h + +BOARD M5282EVB freescale +T: git git://git.denx.de/u-boot-coldfire.git +S: Maintained +F: board/freescale/M5282EVB/ +F: board/freescale/common/ +F: include/configs/M5282EVB.h + +BOARD M53017EVB freescale +M: TsiChung Liew Tsi-Chung.Liew@freescale.com +T: git git://git.denx.de/u-boot-coldfire.git +S: Maintained +F: board/freescale/M53017EVB/ +F: board/freescale/common/ +F: include/configs/M53017EVB.h + +BOARD M5329EVB freescale +M: TsiChung Liew Tsi-Chung.Liew@freescale.com +T: git git://git.denx.de/u-boot-coldfire.git +S: Maintained +F: board/freescale/M5329EVB/ +F: board/freescale/common/ +F: include/configs/M5329EVB.h + +BOARD M5373EVB freescale +M: TsiChung Liew Tsi-Chung.Liew@freescale.com +T: git git://git.denx.de/u-boot-coldfire.git +S: Maintained +F: board/freescale/M5373EVB/ +F: board/freescale/common/ +F: include/configs/M5373EVB.h + +BOARD m53evk denx +M: Marek Vasut marek.vasut@gmail.com +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/denx/m53evk/ +F: include/configs/m53evk.h + +BOARD M54418TWR freescale +T: git git://git.denx.de/u-boot-coldfire.git +S: Maintained +F: board/freescale/M54418TWR/ +F: board/freescale/common/ +F: include/configs/M54418TWR.h + +BOARD M54451EVB freescale +T: git git://git.denx.de/u-boot-coldfire.git +S: Maintained +F: board/freescale/M54451EVB/ +F: board/freescale/common/ +F: include/configs/M54451EVB.h + +BOARD M54455EVB freescale +M: TsiChung Liew Tsi-Chung.Liew@freescale.com +T: git git://git.denx.de/u-boot-coldfire.git +S: Maintained +F: board/freescale/M54455EVB/ +F: board/freescale/common/ +F: include/configs/M54455EVB.h + +BOARD M5475EVB freescale +M: TsiChung Liew Tsi-Chung.Liew@freescale.com +T: git git://git.denx.de/u-boot-coldfire.git +S: Maintained +F: board/freescale/M5475EVB/ +F: board/freescale/common/ +F: include/configs/M5475EVB.h + +BOARD M5485EVB freescale +M: TsiChung Liew Tsi-Chung.Liew@freescale.com +T: git git://git.denx.de/u-boot-coldfire.git +S: Maintained +F: board/freescale/M5485EVB/ +F: board/freescale/common/ +F: include/configs/M5485EVB.h + +BOARD magnesium logicpd +M: Heiko Schocher hs@denx.de +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/logicpd/magnesium/ +F: include/configs/magnesium.h + +BOARD makalu amcc +M: Stefan Roese sr@denx.de +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/amcc/makalu/ +F: include/configs/makalu.h + +BOARD malta imgtec +M: Paul Burton paul.burton@imgtec.com +T: git git://git.denx.de/u-boot-mips.git +S: Maintained +F: board/imgtec/malta/ +F: include/configs/malta.h + +BOARD mcc200 +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/mcc200/ +F: include/configs/mcc200.h + +BOARD mcx htkw +M: Ilya Yanok yanok@emcraft.com +T: git git://git.denx.de/u-boot-ti.git +S: Maintained +F: board/htkw/mcx/ +F: include/configs/mcx.h + +BOARD mecp5123 esd +M: Reinhard Arlt reinhard.arlt@esd-electronics.com +S: Maintained +F: board/esd/mecp5123/ +F: include/configs/mecp5123.h + +BOARD mecp5200 esd +M: Reinhard Arlt reinhard.arlt@esd-electronics.com +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/esd/mecp5200/ +F: include/configs/mecp5200.h + +BOARD medcom-wide avionic-design +M: Alban Bedel alban.bedel@avionic-design.de +T: git git://git.denx.de/u-boot-tegra.git +S: Maintained +F: board/avionic-design/medcom-wide/ +F: include/configs/medcom-wide.h + +BOARD meesc esd +M: Daniel Gorsulowski daniel.gorsulowski@esd.eu +T: git git://git.denx.de/u-boot-atmel.git +S: Maintained +F: board/esd/meesc/ +F: include/configs/meesc.h + +BOARD MHPC eltec +M: Frank Gottschling fgottschling@eltec.de +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/eltec/MHPC/ +F: include/configs/MHPC.h + +BOARD microblaze-generic xilinx +M: Michal Simek monstr@monstr.eu +T: git git://git.denx.de/u-boot-microblaze.git +S: Maintained +F: board/xilinx/microblaze-generic/ +F: include/configs/microblaze-generic.h + +BOARD MigoR renesas +T: git git://git.denx.de/u-boot-sh.git +S: Maintained +F: board/renesas/MigoR/ +F: include/configs/MigoR.h + +BOARD mimc200 mimc +M: Mark Jackson mpfj@mimc.co.uk +T: git git://git.denx.de/u-boot-avr32.git +S: Maintained +F: board/mimc/mimc200/ +F: include/configs/mimc200.h + +BOARD MIP405 mpl +M: Denis Peter d.peter@mpl.ch +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/mpl/MIP405/ +F: include/configs/MIP405.h + +BOARD ml507 xilinx +M: Ricardo Ribalda ricardo.ribalda@uam.es +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/xilinx/ml507/ +F: include/configs/ml507.h + +BOARD motionpro +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/motionpro/ +F: include/configs/motionpro.h + +BOARD mpc5121ads freescale +S: Maintained +F: board/freescale/mpc5121ads/ +F: board/freescale/common/ +F: include/configs/mpc5121ads.h + +BOARD mpc7448hpc2 freescale +M: Roy Zang tie-fei.zang@freescale.com +T: git git://git.denx.de/u-boot-74xx-7xx.git +S: Maintained +F: board/freescale/mpc7448hpc2/ +F: board/freescale/common/ +F: include/configs/mpc7448hpc2.h + +BOARD MPC8266ADS freescale +M: Rune Torgersen runet@innovsys.com +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Maintained +F: board/freescale/MPC8266ADS/ +F: board/freescale/common/ +F: include/configs/MPC8266ADS.h + +BOARD mpc8308_p1m +M: Ilya Yanok yanok@emcraft.com +T: git git://git.denx.de/u-boot-mpc83xx.git +S: Maintained +F: board/mpc8308_p1m/ +F: include/configs/mpc8308_p1m.h + +BOARD MPC8308RDB freescale +M: Ilya Yanok yanok@emcraft.com +T: git git://git.denx.de/u-boot-mpc83xx.git +S: Maintained +F: board/freescale/MPC8308RDB/ +F: board/freescale/common/ +F: include/configs/MPC8308RDB.h + +BOARD MPC8313ERDB freescale +T: git git://git.denx.de/u-boot-mpc83xx.git +S: Maintained +F: board/freescale/MPC8313ERDB/ +F: board/freescale/common/ +F: include/configs/MPC8313ERDB.h + +BOARD MPC8315ERDB freescale +M: Dave Liu daveliu@freescale.com +T: git git://git.denx.de/u-boot-mpc83xx.git +S: Maintained +F: board/freescale/MPC8315ERDB/ +F: board/freescale/common/ +F: include/configs/MPC8315ERDB.h + +BOARD MPC8323ERDB freescale +M: Michael Barkowski michael.barkowski@freescale.com +T: git git://git.denx.de/u-boot-mpc83xx.git +S: Maintained +F: board/freescale/MPC8323ERDB/ +F: board/freescale/common/ +F: include/configs/MPC8323ERDB.h + +BOARD MPC832XEMDS freescale +M: Dave Liu daveliu@freescale.com +T: git git://git.denx.de/u-boot-mpc83xx.git +S: Maintained +F: board/freescale/MPC832XEMDS/ +F: board/freescale/common/ +F: include/configs/MPC832XEMDS.h + +BOARD MPC8349EMDS freescale +M: Kim Phillips kim.phillips@freescale.com +T: git git://git.denx.de/u-boot-mpc83xx.git +S: Maintained +F: board/freescale/MPC8349EMDS/ +F: board/freescale/common/ +F: include/configs/MPC8349EMDS.h + +BOARD MPC8349ITX freescale +T: git git://git.denx.de/u-boot-mpc83xx.git +S: Maintained +F: board/freescale/MPC8349ITX/ +F: board/freescale/common/ +F: include/configs/MPC8349ITX.h + +BOARD MPC8360EMDS freescale +M: Dave Liu daveliu@freescale.com +T: git git://git.denx.de/u-boot-mpc83xx.git +S: Maintained +F: board/freescale/MPC8360EMDS/ +F: board/freescale/common/ +F: include/configs/MPC8360EMDS.h + +BOARD MPC837XEMDS freescale +M: Dave Liu daveliu@freescale.com +T: git git://git.denx.de/u-boot-mpc83xx.git +S: Maintained +F: board/freescale/MPC837XEMDS/ +F: board/freescale/common/ +F: include/configs/MPC837XEMDS.h + +BOARD MPC837XERDB freescale +M: Joe D'Abbraccio ljd015@freescale.com +T: git git://git.denx.de/u-boot-mpc83xx.git +S: Maintained +F: board/freescale/MPC837XERDB/ +F: board/freescale/common/ +F: include/configs/MPC837XERDB.h + +BOARD MPC8536DS freescale +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/MPC8536DS/ +F: board/freescale/common/ +F: include/configs/MPC8536DS.h + +BOARD MPC8540ADS freescale +M: Kumar Gala kumar.gala@freescale.com +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/MPC8540ADS/ +F: board/freescale/common/ +F: include/configs/MPC8540ADS.h + +BOARD MPC8541CDS freescale +M: Kumar Gala kumar.gala@freescale.com +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/MPC8541CDS/ +F: board/freescale/common/ +F: include/configs/MPC8541CDS.h + +BOARD MPC8544DS freescale +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/MPC8544DS/ +F: board/freescale/common/ +F: include/configs/MPC8544DS.h + +BOARD MPC8548CDS freescale +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/MPC8548CDS/ +F: board/freescale/common/ +F: include/configs/MPC8548CDS.h + +BOARD MPC8555CDS freescale +M: Kumar Gala kumar.gala@freescale.com +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/MPC8555CDS/ +F: board/freescale/common/ +F: include/configs/MPC8555CDS.h + +BOARD MPC8560ADS freescale +M: Kumar Gala kumar.gala@freescale.com +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/MPC8560ADS/ +F: board/freescale/common/ +F: include/configs/MPC8560ADS.h + +BOARD MPC8568MDS freescale +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/MPC8568MDS/ +F: board/freescale/common/ +F: include/configs/MPC8568MDS.h + +BOARD MPC8569MDS freescale +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/MPC8569MDS/ +F: board/freescale/common/ +F: include/configs/MPC8569MDS.h + +BOARD MPC8572DS freescale +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/MPC8572DS/ +F: board/freescale/common/ +F: include/configs/MPC8572DS.h + +BOARD MPC8610HPCD freescale +T: git git://git.denx.de/u-boot-mpc86xx.git +S: Maintained +F: board/freescale/MPC8610HPCD/ +F: board/freescale/common/ +F: include/configs/MPC8610HPCD.h + +BOARD MPC8641HPCN freescale +M: Kumar Gala kumar.gala@freescale.com +T: git git://git.denx.de/u-boot-mpc86xx.git +S: Maintained +F: board/freescale/MPC8641HPCN/ +F: board/freescale/common/ +F: include/configs/MPC8641HPCN.h + +BOARD MPC86xADS +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/MPC86xADS/ +F: include/configs/MPC86xADS.h + +BOARD MPC885ADS +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/MPC885ADS/ +F: include/configs/MPC885ADS.h + +BOARD mpr2 +M: Mark Jonas mark.jonas@de.bosch.com +T: git git://git.denx.de/u-boot-sh.git +S: Maintained +F: board/mpr2/ +F: include/configs/mpr2.h + +BOARD ms7720se +M: Yoshihiro Shimoda yoshihiro.shimoda.uh@renesas.com +T: git git://git.denx.de/u-boot-sh.git +S: Maintained +F: board/ms7720se/ +F: include/configs/ms7720se.h + +BOARD ms7722se +M: Nobuhiro Iwamatsu iwamatsu.nobuhiro@renesas.com +M: Nobuhiro Iwamatsu iwamatsu@nigauri.org +T: git git://git.denx.de/u-boot-sh.git +S: Maintained +F: board/ms7722se/ +F: include/configs/ms7722se.h + +BOARD ms7750se +M: Nobuhiro Iwamatsu iwamatsu.nobuhiro@renesas.com +M: Nobuhiro Iwamatsu iwamatsu@nigauri.org +T: git git://git.denx.de/u-boot-sh.git +S: Maintained +F: board/ms7750se/ +F: include/configs/ms7750se.h + +BOARD mt_ventoux teejet +M: Stefano Babic sbabic@denx.de +T: git git://git.denx.de/u-boot-ti.git +S: Maintained +F: board/teejet/mt_ventoux/ +F: include/configs/mt_ventoux.h + +BOARD muas3001 +M: Heiko Schocher hs@denx.de +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Maintained +F: board/muas3001/ +F: include/configs/muas3001.h + +BOARD mucmc52 manroland +M: Heiko Schocher hs@denx.de +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/manroland/mucmc52/ +F: include/configs/mucmc52.h + +BOARD munices +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/munices/ +F: include/configs/munices.h + +BOARD mv88f6281gtw_ge Marvell +M: Prafulla Wadaskar prafulla@marvell.com +T: git git://git.denx.de/u-boot-marvell.git +S: Maintained +F: board/Marvell/mv88f6281gtw_ge/ +F: include/configs/mv88f6281gtw_ge.h + +BOARD MVBLUE +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Maintained +F: board/MVBLUE/ +F: include/configs/MVBLUE.h + +BOARD mx23evk freescale +M: Otavio Salvador otavio@ossystems.com.br +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/freescale/mx23evk/ +F: board/freescale/common/ +F: include/configs/mx23evk.h + +BOARD mx23_olinuxino olimex +M: Marek Vasut marek.vasut@gmail.com +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/olimex/mx23_olinuxino/ +F: include/configs/mx23_olinuxino.h + +BOARD mx25pdk freescale +M: Fabio Estevam fabio.estevam@freescale.com +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/freescale/mx25pdk/ +F: board/freescale/common/ +F: include/configs/mx25pdk.h + +BOARD mx28evk freescale +M: Fabio Estevam fabio.estevam@freescale.com +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/freescale/mx28evk/ +F: board/freescale/common/ +F: include/configs/mx28evk.h + +BOARD mx31pdk freescale +M: Fabio Estevam fabio.estevam@freescale.com +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/freescale/mx31pdk/ +F: board/freescale/common/ +F: include/configs/mx31pdk.h + +BOARD mx35pdk freescale +M: Stefano Babic sbabic@denx.de +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/freescale/mx35pdk/ +F: board/freescale/common/ +F: include/configs/mx35pdk.h + +BOARD mx51_efikamx genesi +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/genesi/mx51_efikamx/ +F: include/configs/mx51_efikamx.h + +BOARD mx51evk freescale +M: Stefano Babic sbabic@denx.de +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/freescale/mx51evk/ +F: board/freescale/common/ +F: include/configs/mx51evk.h + +BOARD mx53ard freescale +M: Fabio Estevam fabio.estevam@freescale.com +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/freescale/mx53ard/ +F: board/freescale/common/ +F: include/configs/mx53ard.h + +BOARD mx53evk freescale +M: Jason Liu r64343@freescale.com +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/freescale/mx53evk/ +F: board/freescale/common/ +F: include/configs/mx53evk.h + +BOARD mx53loco freescale +M: Jason Liu r64343@freescale.com +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/freescale/mx53loco/ +F: board/freescale/common/ +F: include/configs/mx53loco.h + +BOARD mx53smd freescale +M: Fabio Estevam fabio.estevam@freescale.com +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/freescale/mx53smd/ +F: board/freescale/common/ +F: include/configs/mx53smd.h + +BOARD mx6qarm2 freescale +M: Jason Liu r64343@freescale.com +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/freescale/mx6qarm2/ +F: board/freescale/common/ +F: include/configs/mx6qarm2.h + +BOARD mx6qsabreauto freescale +M: Fabio Estevam fabio.estevam@freescale.com +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/freescale/mx6qsabreauto/ +F: board/freescale/common/ +F: include/configs/mx6qsabreauto.h + +BOARD mx6sabresd freescale +M: Fabio Estevam fabio.estevam@freescale.com +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/freescale/mx6sabresd/ +F: board/freescale/common/ +F: include/configs/mx6sabresd.h + +BOARD mx6slevk freescale +M: Fabio Estevam fabio.estevam@freescale.com +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/freescale/mx6slevk/ +F: board/freescale/common/ +F: include/configs/mx6slevk.h + +BOARD neo gdsys +M: Dirk Eibach eibach@gdsys.de +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/gdsys/neo/ +F: board/gdsys/common/ +F: include/configs/neo.h + +BOARD NETPHONE +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/NETPHONE/ +F: include/configs/NETPHONE.h + +BOARD NETTA2 +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/NETTA2/ +F: include/configs/NETTA2.h + +BOARD NETTA +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/NETTA/ +F: include/configs/NETTA.h + +BOARD NETVIA +M: Pantelis Antoniou panto@intracom.gr +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/NETVIA/ +F: include/configs/NETVIA.h + +BOARD nhk8815 st +M: Nomadik Linux Team STN_WMM_nomadik_linux@list.st.com +M: Alessandro Rubini rubini@unipv.it +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/st/nhk8815/ +F: include/configs/nhk8815.h + +BOARD nios2-generic altera +M: Scott McNutt smcnutt@psyent.com +S: Maintained +F: board/altera/nios2-generic/ +F: include/configs/nios2-generic.h + +BOARD nitrogen6x boundary +M: Eric Nelson eric.nelson@boundarydevices.com +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/boundary/nitrogen6x/ +F: include/configs/nitrogen6x.h + +BOARD nokia_rx51 nokia +M: Pali Rohár pali.rohar@gmail.com +T: git git://git.denx.de/u-boot-ti.git +S: Maintained +F: board/nokia/nokia_rx51/ +F: include/configs/nokia_rx51.h + +BOARD NSCU tqc +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/tqc/NSCU/ +F: include/configs/NSCU.h + +BOARD o2d300 ifm +M: Anatolij Gustschin agust@denx.de +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/ifm/o2d300/ +F: include/configs/o2d300.h + +BOARD o2d ifm +M: Anatolij Gustschin agust@denx.de +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/ifm/o2d/ +F: include/configs/o2d.h + +BOARD o2dnt2 ifm +M: Anatolij Gustschin agust@denx.de +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/ifm/o2dnt2/ +F: include/configs/o2dnt2.h + +BOARD o2i ifm +M: Anatolij Gustschin agust@denx.de +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/ifm/o2i/ +F: include/configs/o2i.h + +BOARD o2mnt ifm +M: Anatolij Gustschin agust@denx.de +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/ifm/o2mnt/ +F: include/configs/o2mnt.h + +BOARD o3dnt ifm +M: Anatolij Gustschin agust@denx.de +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/ifm/o3dnt/ +F: include/configs/o3dnt.h + +BOARD ocotea amcc +M: Stefan Roese sr@denx.de +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/amcc/ocotea/ +F: include/configs/ocotea.h + +BOARD OCRTC esd +M: Matthias Fuchs matthias.fuchs@esd-electronics.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/esd/OCRTC/ +F: include/configs/OCRTC.h + +BOARD omap3_beagle ti +M: Tom Rini trini@ti.com +T: git git://git.denx.de/u-boot-ti.git +S: Maintained +F: board/ti/omap3_beagle/ +F: include/configs/omap3_beagle.h + +BOARD omap3_evm_quick_mmc ti +T: git git://git.denx.de/u-boot-ti.git +S: Maintained +F: board/ti/omap3_evm_quick_mmc/ +F: include/configs/omap3_evm_quick_mmc.h + +BOARD omap3_evm_quick_nand ti +T: git git://git.denx.de/u-boot-ti.git +S: Maintained +F: board/ti/omap3_evm_quick_nand/ +F: include/configs/omap3_evm_quick_nand.h + +BOARD omap3_evm ti +M: Tom Rini trini@ti.com +T: git git://git.denx.de/u-boot-ti.git +S: Maintained +F: board/ti/omap3_evm/ +F: include/configs/omap3_evm.h + +BOARD omap3_igep00x0 isee +T: git git://git.denx.de/u-boot-ti.git +S: Maintained +F: board/isee/omap3_igep00x0/ +F: include/configs/omap3_igep00x0.h + +BOARD omap3_igep00x0 isee +M: Enric Balletbo i Serra eballetbo@iseebcn.com +T: git git://git.denx.de/u-boot-ti.git +S: Maintained +F: board/isee/omap3_igep00x0/ +F: include/configs/omap3_igep00x0.h + +BOARD omap3_logic logicpd +M: Peter Barada peter.barada@logicpd.com +T: git git://git.denx.de/u-boot-ti.git +S: Maintained +F: board/logicpd/omap3_logic/ +F: include/configs/omap3_logic.h + +BOARD omap3_mvblx matrix_vision +M: Michael Jones michael.jones@matrix-vision.de +T: git git://git.denx.de/u-boot-ti.git +S: Maintained +F: board/matrix_vision/omap3_mvblx/ +F: board/matrix_vision/common/ +F: include/configs/omap3_mvblx.h + +BOARD omap3_overo +M: Steve Sakoman sakoman@gmail.com +T: git git://git.denx.de/u-boot-ti.git +S: Maintained +F: board/omap3_overo/ +F: include/configs/omap3_overo.h + +BOARD omap3_pandora +M: Grazvydas Ignotas notasas@gmail.com +T: git git://git.denx.de/u-boot-ti.git +S: Maintained +F: board/omap3_pandora/ +F: include/configs/omap3_pandora.h + +BOARD omap3_sdp3430 ti +M: Nishanth Menon nm@ti.com +T: git git://git.denx.de/u-boot-ti.git +S: Maintained +F: board/ti/omap3_sdp3430/ +F: include/configs/omap3_sdp3430.h + +BOARD omap3_zoom1 logicpd +M: Nishanth Menon nm@ti.com +T: git git://git.denx.de/u-boot-ti.git +S: Maintained +F: board/logicpd/omap3_zoom1/ +F: include/configs/omap3_zoom1.h + +BOARD omap4_panda ti +M: Sricharan R r.sricharan@ti.com +T: git git://git.denx.de/u-boot-ti.git +S: Maintained +F: board/ti/omap4_panda/ +F: include/configs/omap4_panda.h + +BOARD omap4_sdp4430 ti +M: Sricharan R r.sricharan@ti.com +T: git git://git.denx.de/u-boot-ti.git +S: Maintained +F: board/ti/omap4_sdp4430/ +F: include/configs/omap4_sdp4430.h + +BOARD omap5912osk ti +M: Rishi Bhattacharya rishi@ti.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/ti/omap5912osk/ +F: include/configs/omap5912osk.h + +BOARD omap5_uevm ti +T: git git://git.denx.de/u-boot-ti.git +S: Maintained +F: board/ti/omap5_uevm/ +F: include/configs/omap5_uevm.h + +BOARD openrd Marvell +T: git git://git.denx.de/u-boot-marvell.git +S: Maintained +F: board/Marvell/openrd/ +F: include/configs/openrd.h + +BOARD openrd Marvell +M: Prafulla Wadaskar prafulla@marvell.com +T: git git://git.denx.de/u-boot-marvell.git +S: Maintained +F: board/Marvell/openrd/ +F: include/configs/openrd.h + +BOARD openrisc-generic openrisc +M: Stefan Kristiansson stefan.kristiansson@saunalahti.fi +S: Maintained +F: board/openrisc/openrisc-generic/ +F: include/configs/openrisc-generic.h + +BOARD origen samsung +M: Chander Kashyap k.chander@samsung.com +T: git git://git.denx.de/u-boot-samsung.git +S: Maintained +F: board/samsung/origen/ +F: board/samsung/common/ +F: include/configs/origen.h + +BOARD otc570 esd +M: Daniel Gorsulowski daniel.gorsulowski@esd.eu +T: git git://git.denx.de/u-boot-atmel.git +S: Maintained +F: board/esd/otc570/ +F: include/configs/otc570.h + +BOARD P1010RDB freescale +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/P1010RDB/ +F: board/freescale/common/ +F: include/configs/P1010RDB.h + +BOARD P1022DS freescale +M: Timur Tabi timur@freescale.com +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/P1022DS/ +F: board/freescale/common/ +F: include/configs/P1022DS.h + +BOARD P1023RDB freescale +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/P1023RDB/ +F: board/freescale/common/ +F: include/configs/P1023RDB.h + +BOARD P1023RDS freescale +M: Roy Zang tie-fei.zang@freescale.com +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/P1023RDS/ +F: board/freescale/common/ +F: include/configs/P1023RDS.h + +BOARD P1_P2_RDB freescale +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/P1_P2_RDB/ +F: board/freescale/common/ +F: include/configs/P1_P2_RDB.h + +BOARD P1_P2_RDB freescale +M: Poonam Aggrwal poonam.aggrwal@freescale.com +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/P1_P2_RDB/ +F: board/freescale/common/ +F: include/configs/P1_P2_RDB.h + +BOARD p1_p2_rdb_pc freescale +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/p1_p2_rdb_pc/ +F: board/freescale/common/ +F: include/configs/p1_p2_rdb_pc.h + +BOARD p1_twr freescale +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/p1_twr/ +F: board/freescale/common/ +F: include/configs/p1_twr.h + +BOARD P2020COME freescale +M: Ira W. Snyder iws@ovro.caltech.edu +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/P2020COME/ +F: board/freescale/common/ +F: include/configs/P2020COME.h + +BOARD P2020DS freescale +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/P2020DS/ +F: board/freescale/common/ +F: include/configs/P2020DS.h + +BOARD P2041RDB freescale +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/P2041RDB/ +F: board/freescale/common/ +F: include/configs/P2041RDB.h + +BOARD P3041DS freescale +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/P3041DS/ +F: board/freescale/common/ +F: include/configs/P3041DS.h + +BOARD P3G4 +M: Wolfgang Denk wd@denx.de +T: git git://git.denx.de/u-boot-74xx-7xx.git +S: Maintained +F: board/P3G4/ +F: include/configs/P3G4.h + +BOARD p3mx prodrive +M: Stefan Roese sr@denx.de +T: git git://git.denx.de/u-boot-74xx-7xx.git +S: Maintained +F: board/prodrive/p3mx/ +F: include/configs/p3mx.h + +BOARD p3p440 prodrive +M: Stefan Roese sr@denx.de +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/prodrive/p3p440/ +F: include/configs/p3p440.h + +BOARD P4080DS freescale +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/P4080DS/ +F: board/freescale/common/ +F: include/configs/P4080DS.h + +BOARD P5020DS freescale +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/P5020DS/ +F: board/freescale/common/ +F: include/configs/P5020DS.h + +BOARD P5040DS freescale +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/P5040DS/ +F: board/freescale/common/ +F: include/configs/P5040DS.h + +BOARD palmld +M: Marek Vasut marek.vasut@gmail.com +T: git git://git.denx.de/u-boot-pxa.git +S: Maintained +F: board/palmld/ +F: include/configs/palmld.h + +BOARD palmtc +M: Marek Vasut marek.vasut@gmail.com +T: git git://git.denx.de/u-boot-pxa.git +S: Maintained +F: board/palmtc/ +F: include/configs/palmtc.h + +BOARD palmtreo680 +M: Mike Dunn mikedunn@newsguy.com +T: git git://git.denx.de/u-boot-pxa.git +S: Maintained +F: board/palmtreo680/ +F: include/configs/palmtreo680.h + +BOARD PATI mpl +S: Maintained +F: board/mpl/PATI/ +F: include/configs/PATI.h + +BOARD paz00 compal +M: Tom Warren twarren@nvidia.com +M: Stephen Warren swarren@nvidia.com +T: git git://git.denx.de/u-boot-tegra.git +S: Maintained +F: board/compal/paz00/ +F: include/configs/paz00.h + +BOARD pb1x00 +T: git git://git.denx.de/u-boot-mips.git +S: Maintained +F: board/pb1x00/ +F: include/configs/pb1x00.h + +BOARD PCI405 esd +M: Matthias Fuchs matthias.fuchs@esd-electronics.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/esd/PCI405/ +F: include/configs/PCI405.h + +BOARD PCI5441 psyent +M: Scott McNutt smcnutt@psyent.com +S: Maintained +F: board/psyent/PCI5441/ +F: include/configs/PCI5441.h + +BOARD pcm030 phytec +M: Jon Smirl jonsmirl@gmail.com +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/phytec/pcm030/ +F: include/configs/pcm030.h + +BOARD pcm051 phytec +M: Lars Poeschel poeschel@lemonage.de +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/phytec/pcm051/ +F: include/configs/pcm051.h + +BOARD pcs440ep +M: Stefan Roese sr@denx.de +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/pcs440ep/ +F: include/configs/pcs440ep.h + +BOARD pdm360ng +M: Michael Weiss michael.weiss@ifm.com +S: Maintained +F: board/pdm360ng/ +F: include/configs/pdm360ng.h + +BOARD pengwyn silica +M: Lothar Felten lothar.felten@gmail.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/silica/pengwyn/ +F: include/configs/pengwyn.h + +BOARD pf5200 esd +M: Reinhard Arlt reinhard.arlt@esd-electronics.com +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/esd/pf5200/ +F: include/configs/pf5200.h + +BOARD PIP405 mpl +M: Denis Peter d.peter@mpl.ch +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/mpl/PIP405/ +F: include/configs/PIP405.h + +BOARD PK1C20 psyent +M: Scott McNutt smcnutt@psyent.com +S: Maintained +F: board/psyent/PK1C20/ +F: include/configs/PK1C20.h + +BOARD PLU405 esd +M: Matthias Fuchs matthias.fuchs@esd-electronics.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/esd/PLU405/ +F: include/configs/PLU405.h + +BOARD plutux avionic-design +M: Alban Bedel alban.bedel@avionic-design.de +T: git git://git.denx.de/u-boot-tegra.git +S: Maintained +F: board/avionic-design/plutux/ +F: include/configs/plutux.h + +BOARD PM520 +M: Josef Wagner Wagner@Microsys.de +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/PM520/ +F: include/configs/PM520.h + +BOARD PM826 +M: Wolfgang Denk wd@denx.de +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Maintained +F: board/PM826/ +F: include/configs/PM826.h + +BOARD PM828 +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Maintained +F: board/PM828/ +F: include/configs/PM828.h + +BOARD pm9261 ronetix +M: Ilko Iliev iliev@ronetix.at +T: git git://git.denx.de/u-boot-atmel.git +S: Maintained +F: board/ronetix/pm9261/ +F: include/configs/pm9261.h + +BOARD pm9263 ronetix +M: Ilko Iliev iliev@ronetix.at +T: git git://git.denx.de/u-boot-atmel.git +S: Maintained +F: board/ronetix/pm9263/ +F: include/configs/pm9263.h + +BOARD pm9g45 ronetix +M: Ilko Iliev iliev@ronetix.at +T: git git://git.denx.de/u-boot-atmel.git +S: Maintained +F: board/ronetix/pm9g45/ +F: include/configs/pm9g45.h + +BOARD PMC405DE esd +M: Matthias Fuchs matthias.fuchs@esd-electronics.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/esd/PMC405DE/ +F: include/configs/PMC405DE.h + +BOARD PMC405 esd +M: Matthias Fuchs matthias.fuchs@esd-electronics.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/esd/PMC405/ +F: include/configs/PMC405.h + +BOARD PMC440 esd +M: Matthias Fuchs matthias.fuchs@esd-electronics.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/esd/PMC440/ +F: include/configs/PMC440.h + +BOARD pogo_e02 cloudengines +M: Dave Purdy david.c.purdy@gmail.com +T: git git://git.denx.de/u-boot-marvell.git +S: Maintained +F: board/cloudengines/pogo_e02/ +F: include/configs/pogo_e02.h + +BOARD PPChameleonEVB dave +M: Andrea "llandre" Marson andrea.marson@dave-tech.it +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/dave/PPChameleonEVB/ +F: include/configs/PPChameleonEVB.h + +BOARD ppmc7xx +T: git git://git.denx.de/u-boot-74xx-7xx.git +S: Maintained +F: board/ppmc7xx/ +F: include/configs/ppmc7xx.h + +BOARD pr1 +M: Dimitar Penev dpn@switchfin.org +T: git git://git.denx.de/u-boot-blackfin.git +S: Maintained +F: board/pr1/ +F: include/configs/pr1.h + +BOARD pxa255_idp +M: Cliff Brake cliff.brake@gmail.com +T: git git://git.denx.de/u-boot-pxa.git +S: Maintained +F: board/pxa255_idp/ +F: include/configs/pxa255_idp.h + +BOARD pxm2 siemens +M: Roger Meier r.meier@siemens.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/siemens/pxm2/ +F: include/configs/pxm2.h + +BOARD qemu-mips64 +T: git git://git.denx.de/u-boot-mips.git +S: Maintained +F: board/qemu-mips64/ +F: include/configs/qemu-mips64.h + +BOARD qemu-mips +T: git git://git.denx.de/u-boot-mips.git +S: Maintained +F: board/qemu-mips/ +F: include/configs/qemu-mips.h + +BOARD qemu-mips +M: Vlad Lungu vlad.lungu@windriver.com +T: git git://git.denx.de/u-boot-mips.git +S: Maintained +F: board/qemu-mips/ +F: include/configs/qemu-mips.h + +BOARD qong davedenx +M: Wolfgang Denk wd@denx.de +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/davedenx/qong/ +F: include/configs/qong.h + +BOARD QS823 snmc +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/snmc/QS823/ +F: include/configs/QS823.h + +BOARD QS850 snmc +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/snmc/QS850/ +F: include/configs/QS850.h + +BOARD QS860T snmc +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/snmc/QS860T/ +F: include/configs/QS860T.h + +BOARD quad100hd +M: Gary Jennejohn garyj@denx.de +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/quad100hd/ +F: include/configs/quad100hd.h + +BOARD quantum +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/quantum/ +F: include/configs/quantum.h + +BOARD r0p7734 renesas +M: Nobuhiro Iwamatsu iwamatsu.nobuhiro@renesas.com +M: Nobuhiro Iwamatsu iwamatsu@nigauri.org +T: git git://git.denx.de/u-boot-sh.git +S: Maintained +F: board/renesas/r0p7734/ +F: include/configs/r0p7734.h + +BOARD r2dplus renesas +M: Nobuhiro Iwamatsu iwamatsu.nobuhiro@renesas.com +M: Nobuhiro Iwamatsu iwamatsu@nigauri.org +T: git git://git.denx.de/u-boot-sh.git +S: Maintained +F: board/renesas/r2dplus/ +F: include/configs/r2dplus.h + +BOARD R360MPI +M: Wolfgang Denk wd@denx.de +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/R360MPI/ +F: include/configs/R360MPI.h + +BOARD r7780mp renesas +M: Nobuhiro Iwamatsu iwamatsu.nobuhiro@renesas.com +M: Nobuhiro Iwamatsu iwamatsu@nigauri.org +T: git git://git.denx.de/u-boot-sh.git +S: Maintained +F: board/renesas/r7780mp/ +F: include/configs/r7780mp.h + +BOARD RBC823 +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/RBC823/ +F: include/configs/RBC823.h + +BOARD rd6281a Marvell +M: Prafulla Wadaskar prafulla@marvell.com +T: git git://git.denx.de/u-boot-marvell.git +S: Maintained +F: board/Marvell/rd6281a/ +F: include/configs/rd6281a.h + +BOARD redwood amcc +M: Feng Kan fkan@amcc.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/amcc/redwood/ +F: include/configs/redwood.h + +BOARD rpi_b raspberrypi +M: Stephen Warren swarren@wwwdotorg.org +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/raspberrypi/rpi_b/ +F: include/configs/rpi_b.h + +BOARD RPXlite_DW +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/RPXlite_DW/ +F: include/configs/RPXlite_DW.h + +BOARD RRvision +M: Wolfgang Denk wd@denx.de +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/RRvision/ +F: include/configs/RRvision.h + +BOARD rsk7203 renesas +M: Nobuhiro Iwamatsu iwamatsu.nobuhiro@renesas.com +M: Nobuhiro Iwamatsu iwamatsu@nigauri.org +T: git git://git.denx.de/u-boot-sh.git +S: Maintained +F: board/renesas/rsk7203/ +F: include/configs/rsk7203.h + +BOARD rsk7264 renesas +M: Phil Edworthy phil.edworthy@renesas.com +T: git git://git.denx.de/u-boot-sh.git +S: Maintained +F: board/renesas/rsk7264/ +F: include/configs/rsk7264.h + +BOARD rsk7269 renesas +T: git git://git.denx.de/u-boot-sh.git +S: Maintained +F: board/renesas/rsk7269/ +F: include/configs/rsk7269.h + +BOARD rut siemens +M: Roger Meier r.meier@siemens.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/siemens/rut/ +F: include/configs/rut.h + +BOARD s5pc210_universal samsung +M: Przemyslaw Marczak p.marczak@samsung.com +T: git git://git.denx.de/u-boot-samsung.git +S: Maintained +F: board/samsung/s5pc210_universal/ +F: board/samsung/common/ +F: include/configs/s5pc210_universal.h + +BOARD s5p_goni samsung +M: Mateusz Zalega m.zalega@samsung.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/samsung/s5p_goni/ +F: board/samsung/common/ +F: include/configs/s5p_goni.h + +BOARD sacsng +M: Jerry Van Baren gerald.vanbaren@smiths-aerospace.com +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Maintained +F: board/sacsng/ +F: include/configs/sacsng.h + +BOARD sama5d3xek atmel +M: Bo Shen voice.shen@atmel.com +T: git git://git.denx.de/u-boot-atmel.git +S: Maintained +F: board/atmel/sama5d3xek/ +F: include/configs/sama5d3xek.h + +BOARD sama5d3_xplained atmel +M: Bo Shen voice.shen@atmel.com +T: git git://git.denx.de/u-boot-atmel.git +S: Maintained +F: board/atmel/sama5d3_xplained/ +F: include/configs/sama5d3_xplained.h + +BOARD sandbox sandbox +M: Simon Glass sjg@chromium.org +S: Maintained +F: board/sandbox/sandbox/ +F: include/configs/sandbox.h + +BOARD Sandpoint8240 +M: Wolfgang Denk wd@denx.de +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Maintained +F: board/Sandpoint8240/ +F: include/configs/Sandpoint8240.h + +BOARD sansa_fuze_plus sandisk +M: Marek Vasut marek.vasut@gmail.com +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/sandisk/sansa_fuze_plus/ +F: include/configs/sansa_fuze_plus.h + +BOARD sbc35_a9g20 calao +M: Albin Tonnerre albin.tonnerre@free-electrons.com +T: git git://git.denx.de/u-boot-atmel.git +S: Maintained +F: board/calao/sbc35_a9g20/ +F: include/configs/sbc35_a9g20.h + +BOARD sbc405 +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/sbc405/ +F: include/configs/sbc405.h + +BOARD sbc8349 +M: Paul Gortmaker paul.gortmaker@windriver.com +T: git git://git.denx.de/u-boot-mpc83xx.git +S: Maintained +F: board/sbc8349/ +F: include/configs/sbc8349.h + +BOARD sbc8548 +M: Paul Gortmaker paul.gortmaker@windriver.com +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/sbc8548/ +F: include/configs/sbc8548.h + +BOARD sbc8641d +M: Paul Gortmaker paul.gortmaker@windriver.com +T: git git://git.denx.de/u-boot-mpc86xx.git +S: Maintained +F: board/sbc8641d/ +F: include/configs/sbc8641d.h + +BOARD sc3 +M: Heiko Schocher hs@denx.de +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/sc3/ +F: include/configs/sc3.h + +BOARD scb9328 +M: Torsten Koschorrek koschorrek@synertronixx.de +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/scb9328/ +F: include/configs/scb9328.h + +BOARD sc_sps_1 schulercontrol +M: Marek Vasut marek.vasut@gmail.com +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/schulercontrol/sc_sps_1/ +F: include/configs/sc_sps_1.h + +BOARD seaboard nvidia +M: Tom Warren twarren@nvidia.com +T: git git://git.denx.de/u-boot-tegra.git +S: Maintained +F: board/nvidia/seaboard/ +F: board/nvidia/common/ +F: include/configs/seaboard.h + +BOARD sequoia amcc +M: Stefan Roese sr@denx.de +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/amcc/sequoia/ +F: include/configs/sequoia.h + +BOARD sh7752evb renesas +T: git git://git.denx.de/u-boot-sh.git +S: Maintained +F: board/renesas/sh7752evb/ +F: include/configs/sh7752evb.h + +BOARD sh7753evb renesas +T: git git://git.denx.de/u-boot-sh.git +S: Maintained +F: board/renesas/sh7753evb/ +F: include/configs/sh7753evb.h + +BOARD sh7757lcr renesas +T: git git://git.denx.de/u-boot-sh.git +S: Maintained +F: board/renesas/sh7757lcr/ +F: include/configs/sh7757lcr.h + +BOARD sh7763rdp renesas +M: Nobuhiro Iwamatsu iwamatsu.nobuhiro@renesas.com +M: Nobuhiro Iwamatsu iwamatsu@nigauri.org +T: git git://git.denx.de/u-boot-sh.git +S: Maintained +F: board/renesas/sh7763rdp/ +F: include/configs/sh7763rdp.h + +BOARD sh7785lcr renesas +T: git git://git.denx.de/u-boot-sh.git +S: Maintained +F: board/renesas/sh7785lcr/ +F: include/configs/sh7785lcr.h + +BOARD sheevaplug Marvell +M: Prafulla Wadaskar prafulla@marvell.com +T: git git://git.denx.de/u-boot-marvell.git +S: Maintained +F: board/Marvell/sheevaplug/ +F: include/configs/sheevaplug.h + +BOARD shmin +M: Nobuhiro Iwamatsu iwamatsu.nobuhiro@renesas.com +M: Nobuhiro Iwamatsu iwamatsu@nigauri.org +T: git git://git.denx.de/u-boot-sh.git +S: Maintained +F: board/shmin/ +F: include/configs/shmin.h + +BOARD SIMPC8313 sheldon +M: Ron Madrid info@sheldoninst.com +T: git git://git.denx.de/u-boot-mpc83xx.git +S: Maintained +F: board/sheldon/SIMPC8313/ +F: include/configs/SIMPC8313.h + +BOARD SM850 tqc +M: Wolfgang Denk wd@denx.de +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/tqc/SM850/ +F: include/configs/SM850.h + +BOARD smdk2410 samsung +M: David Müller d.mueller@elsoft.ch +T: git git://git.denx.de/u-boot-samsung.git +S: Maintained +F: board/samsung/smdk2410/ +F: board/samsung/common/ +F: include/configs/smdk2410.h + +BOARD smdk5250 samsung +M: Chander Kashyap k.chander@samsung.com +T: git git://git.denx.de/u-boot-samsung.git +S: Maintained +F: board/samsung/smdk5250/ +F: board/samsung/common/ +F: include/configs/smdk5250.h + +BOARD smdk5420 samsung +M: Rajeshwari Shinde rajeshwari.s@samsung.com +T: git git://git.denx.de/u-boot-samsung.git +S: Maintained +F: board/samsung/smdk5420/ +F: board/samsung/common/ +F: include/configs/smdk5420.h + +BOARD smdkc100 samsung +M: Minkyu Kang mk7.kang@samsung.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/samsung/smdkc100/ +F: board/samsung/common/ +F: include/configs/smdkc100.h + +BOARD smdkv310 samsung +M: Chander Kashyap k.chander@samsung.com +T: git git://git.denx.de/u-boot-samsung.git +S: Maintained +F: board/samsung/smdkv310/ +F: board/samsung/common/ +F: include/configs/smdkv310.h + +BOARD snapper9260 bluewater +M: Ryan Mallon ryan@bluewatersys.com +T: git git://git.denx.de/u-boot-atmel.git +S: Maintained +F: board/bluewater/snapper9260/ +F: include/configs/snapper9260.h + +BOARD snowball st-ericsson +M: Mathieu Poirier mathieu.poirier@linaro.org +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/st-ericsson/snowball/ +F: include/configs/snowball.h + +BOARD snow samsung +M: Rajeshwari Shinde rajeshwari.s@samsung.com +T: git git://git.denx.de/u-boot-samsung.git +S: Maintained +F: board/samsung/snow/ +F: board/samsung/common/ +F: include/configs/snow.h + +BOARD socfpga_cyclone5 altera +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/altera/socfpga_cyclone5/ +F: include/configs/socfpga_cyclone5.h + +BOARD socrates +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/socrates/ +F: include/configs/socrates.h + +BOARD spc1920 +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/spc1920/ +F: include/configs/spc1920.h + +BOARD SPD823TS +M: Wolfgang Denk wd@denx.de +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/SPD823TS/ +F: include/configs/SPD823TS.h + +BOARD spear3xx_evb spear +T: git git://git.denx.de/u-boot-stm.git +S: Maintained +F: board/spear/spear3xx_evb/ +F: board/spear/common/ +F: include/configs/spear3xx_evb.h + +BOARD spear3xx_evb spear +M: Vipin Kumar vipin.kumar@st.com +T: git git://git.denx.de/u-boot-stm.git +S: Maintained +F: board/spear/spear3xx_evb/ +F: board/spear/common/ +F: include/configs/spear3xx_evb.h + +BOARD spear6xx_evb spear +T: git git://git.denx.de/u-boot-stm.git +S: Maintained +F: board/spear/spear6xx_evb/ +F: board/spear/common/ +F: include/configs/spear6xx_evb.h + +BOARD spear6xx_evb spear +M: Vipin Kumar vipin.kumar@st.com +T: git git://git.denx.de/u-boot-stm.git +S: Maintained +F: board/spear/spear6xx_evb/ +F: board/spear/common/ +F: include/configs/spear6xx_evb.h + +BOARD stamp9g20 taskit +M: Markus Hubig mhubig@imko.de +T: git git://git.denx.de/u-boot-atmel.git +S: Maintained +F: board/taskit/stamp9g20/ +F: include/configs/stamp9g20.h + +BOARD stxgp3 stx +M: Dan Malek dan@embeddedalley.com +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/stx/stxgp3/ +F: include/configs/stxgp3.h + +BOARD stxssa stx +M: Dan Malek dan@embeddedalley.com +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/stx/stxssa/ +F: include/configs/stxssa.h + +BOARD stxxtc stx +M: Dan Malek dan@embeddedalley.com +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/stx/stxxtc/ +F: include/configs/stxxtc.h + +BOARD suvd3 keymile +M: Holger Brunck holger.brunck@keymile.com +T: git git://git.denx.de/u-boot-mpc83xx.git +S: Maintained +F: board/keymile/suvd3/ +F: include/configs/suvd3.h + +BOARD svm_sc8xx +M: John Zhan zhanz@sinovee.com +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/svm_sc8xx/ +F: include/configs/svm_sc8xx.h + +BOARD SXNI855T +M: Dave Ellis DGE@sixnetio.com +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/SXNI855T/ +F: include/configs/SXNI855T.h + +BOARD T1040QDS freescale +M: Poonam Aggrwal poonam.aggrwal@freescale.com +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/T1040QDS/ +F: board/freescale/common/ +F: include/configs/T1040QDS.h + +BOARD T1040RDB freescale +M: Poonam Aggrwal poonam.aggrwal@freescale.com +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/T1040RDB/ +F: board/freescale/common/ +F: include/configs/T1040RDB.h + +BOARD T1042RDB_PI freescale +M: Poonam Aggrwal poonam.aggrwal@freescale.com +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/T1042RDB_PI/ +F: board/freescale/common/ +F: include/configs/T1042RDB_PI.h + +BOARD T208xQDS freescale +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/T208xQDS/ +F: board/freescale/common/ +F: include/configs/T208xQDS.h + +BOARD T208xRDB freescale +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/T208xRDB/ +F: board/freescale/common/ +F: include/configs/T208xRDB.h + +BOARD t3corp +M: Stefan Roese sr@denx.de +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/t3corp/ +F: include/configs/t3corp.h + +BOARD T4240EMU freescale +M: York Sun yorksun@freescale.com +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/T4240EMU/ +F: board/freescale/common/ +F: include/configs/T4240EMU.h + +BOARD T4240QDS freescale +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/freescale/T4240QDS/ +F: board/freescale/common/ +F: include/configs/T4240QDS.h + +BOARD taihu amcc +M: John Otken jotken@softadvances.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/amcc/taihu/ +F: include/configs/taihu.h + +BOARD taishan amcc +M: Stefan Roese sr@denx.de +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/amcc/taishan/ +F: include/configs/taishan.h + +BOARD tao3530 technexion +M: Stefan Roese sr@denx.de +T: git git://git.denx.de/u-boot-ti.git +S: Maintained +F: board/technexion/tao3530/ +F: include/configs/tao3530.h + +BOARD tao3530 technexion +M: Tapani Utriainen linuxfae@technexion.com +T: git git://git.denx.de/u-boot-ti.git +S: Maintained +F: board/technexion/tao3530/ +F: include/configs/tao3530.h + +BOARD TASREG esd +M: Matthias Fuchs matthias.fuchs@esd-electronics.com +T: git git://git.denx.de/u-boot-coldfire.git +S: Maintained +F: board/esd/TASREG/ +F: include/configs/TASREG.h + +BOARD taurus siemens +M: Heiko Schocher hs@denx.de +T: git git://git.denx.de/u-boot-atmel.git +S: Maintained +F: board/siemens/taurus/ +F: include/configs/taurus.h + +BOARD TB5200 tqc +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/tqc/TB5200/ +F: include/configs/TB5200.h + +BOARD tec avionic-design +M: Alban Bedel alban.bedel@avionic-design.de +T: git git://git.denx.de/u-boot-tegra.git +S: Maintained +F: board/avionic-design/tec/ +F: include/configs/tec.h + +BOARD tec-ng avionic-design +M: Alban Bedel alban.bedel@avionic-design.de +T: git git://git.denx.de/u-boot-tegra.git +S: Maintained +F: board/avionic-design/tec-ng/ +F: include/configs/tec-ng.h + +BOARD ti814x_evm ti +M: Matt Porter matt.porter@linaro.org +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/ti/ti814x_evm/ +F: include/configs/ti814x_evm.h + +BOARD ti816x_evm ti +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/ti/ti816x_evm/ +F: include/configs/ti816x_evm.h + +BOARD titanium barco +M: Stefan Roese sr@denx.de +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/barco/titanium/ +F: include/configs/titanium.h + +BOARD tk71 karo +T: git git://git.denx.de/u-boot-marvell.git +S: Maintained +F: board/karo/tk71/ +F: include/configs/tk71.h + +BOARD TK885D tqc +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/tqc/TK885D/ +F: include/configs/TK885D.h + +BOARD tnetv107x_evm ti +M: Chan-Taek Park c-park@ti.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/ti/tnetv107x_evm/ +F: include/configs/tnetv107x_evm.h + +BOARD tny_a9260 calao +M: Albin Tonnerre albin.tonnerre@free-electrons.com +T: git git://git.denx.de/u-boot-atmel.git +S: Maintained +F: board/calao/tny_a9260/ +F: include/configs/tny_a9260.h + +BOARD TOP5200 emk +M: Reinhard Meyer reinhard.meyer@emk-elektronik.de +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/emk/TOP5200/ +F: include/configs/TOP5200.h + +BOARD TOP860 emk +M: Reinhard Meyer reinhard.meyer@emk-elektronik.de +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/emk/TOP860/ +F: include/configs/TOP860.h + +BOARD top9000 emk +M: Reinhard Meyer reinhard.meyer@emk-elektronik.de +T: git git://git.denx.de/u-boot-atmel.git +S: Maintained +F: board/emk/top9000/ +F: include/configs/top9000.h + +BOARD Total5200 +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/Total5200/ +F: include/configs/Total5200.h + +BOARD TQM5200 tqc +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/tqc/TQM5200/ +F: include/configs/TQM5200.h + +BOARD TQM823L tqc +M: Wolfgang Denk wd@denx.de +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/tqc/TQM823L/ +F: include/configs/TQM823L.h + +BOARD TQM823M tqc +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/tqc/TQM823M/ +F: include/configs/TQM823M.h + +BOARD TQM8260 tqc +M: Wolfgang Denk wd@denx.de +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Maintained +F: board/tqc/TQM8260/ +F: include/configs/TQM8260.h + +BOARD TQM8272 tqc +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Maintained +F: board/tqc/TQM8272/ +F: include/configs/TQM8272.h + +BOARD TQM834x tqc +T: git git://git.denx.de/u-boot-mpc83xx.git +S: Maintained +F: board/tqc/TQM834x/ +F: include/configs/TQM834x.h + +BOARD TQM850L tqc +M: Wolfgang Denk wd@denx.de +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/tqc/TQM850L/ +F: include/configs/TQM850L.h + +BOARD TQM850M tqc +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/tqc/TQM850M/ +F: include/configs/TQM850M.h + +BOARD TQM855L tqc +M: Wolfgang Denk wd@denx.de +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/tqc/TQM855L/ +F: include/configs/TQM855L.h + +BOARD TQM855M tqc +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/tqc/TQM855M/ +F: include/configs/TQM855M.h + +BOARD TQM860L tqc +M: Wolfgang Denk wd@denx.de +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/tqc/TQM860L/ +F: include/configs/TQM860L.h + +BOARD TQM860M tqc +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/tqc/TQM860M/ +F: include/configs/TQM860M.h + +BOARD TQM862L tqc +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/tqc/TQM862L/ +F: include/configs/TQM862L.h + +BOARD TQM862M tqc +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/tqc/TQM862M/ +F: include/configs/TQM862M.h + +BOARD TQM866M tqc +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/tqc/TQM866M/ +F: include/configs/TQM866M.h + +BOARD TQM885D tqc +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/tqc/TQM885D/ +F: include/configs/TQM885D.h + +BOARD trats2 samsung +M: Piotr Wilczek p.wilczek@samsung.com +T: git git://git.denx.de/u-boot-samsung.git +S: Maintained +F: board/samsung/trats2/ +F: board/samsung/common/ +F: include/configs/trats2.h + +BOARD trats samsung +M: Lukasz Majewski l.majewski@samsung.com +T: git git://git.denx.de/u-boot-samsung.git +S: Maintained +F: board/samsung/trats/ +F: board/samsung/common/ +F: include/configs/trats.h + +BOARD tricorder corscience +M: Thomas Weber weber@corscience.de +T: git git://git.denx.de/u-boot-ti.git +S: Maintained +F: board/corscience/tricorder/ +F: include/configs/tricorder.h + +BOARD trimslice compulab +M: Tom Warren twarren@nvidia.com +M: Stephen Warren swarren@nvidia.com +T: git git://git.denx.de/u-boot-tegra.git +S: Maintained +F: board/compulab/trimslice/ +F: board/compulab/common/ +F: include/configs/trimslice.h + +BOARD trizepsiv +M: Stefano Babic sbabic@denx.de +T: git git://git.denx.de/u-boot-pxa.git +S: Maintained +F: board/trizepsiv/ +F: include/configs/trizepsiv.h + +BOARD tseries BuR +M: Hannes Petermaier hannes.petermaier@br-automation.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/BuR/tseries/ +F: include/configs/tseries.h + +BOARD tt01 hale +M: Helmut Raiger helmut.raiger@hale.at +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/hale/tt01/ +F: include/configs/tt01.h + +BOARD tuxx1 keymile +M: Heiko Schocher hs@denx.de +T: git git://git.denx.de/u-boot-mpc83xx.git +S: Maintained +F: board/keymile/tuxx1/ +F: include/configs/tuxx1.h + +BOARD tuxx1 keymile +M: Holger Brunck holger.brunck@keymile.com +T: git git://git.denx.de/u-boot-mpc83xx.git +S: Maintained +F: board/keymile/tuxx1/ +F: include/configs/tuxx1.h + +BOARD twister technexion +M: Stefano Babic sbabic@denx.de +T: git git://git.denx.de/u-boot-ti.git +S: Maintained +F: board/technexion/twister/ +F: include/configs/twister.h + +BOARD tx25 karo +M: John Rigby jcrigby@gmail.com +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/karo/tx25/ +F: include/configs/tx25.h + +BOARD u8500_href st-ericsson +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/st-ericsson/u8500_href/ +F: include/configs/u8500_href.h + +BOARD uc100 manroland +M: Stefan Roese sr@denx.de +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/manroland/uc100/ +F: include/configs/uc100.h + +BOARD uc101 manroland +M: Heiko Schocher hs@denx.de +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/manroland/uc101/ +F: include/configs/uc101.h + +BOARD udoo +M: Fabio Estevam fabio.estevam@freescale.com +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/udoo/ +F: include/configs/udoo.h + +BOARD usb_a9263 calao +M: Mateusz Kulikowski mateusz.kulikowski@gmail.com +T: git git://git.denx.de/u-boot-atmel.git +S: Maintained +F: board/calao/usb_a9263/ +F: include/configs/usb_a9263.h + +BOARD utx8245 +M: Greg Allen gallen@arlut.utexas.edu +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Maintained +F: board/utx8245/ +F: include/configs/utx8245.h + +BOARD v37 +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/v37/ +F: include/configs/v37.h + +BOARD v38b +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Maintained +F: board/v38b/ +F: include/configs/v38b.h + +BOARD v5fx30teval avnet +M: Ricardo Ribalda ricardo.ribalda@uam.es +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/avnet/v5fx30teval/ +F: include/configs/v5fx30teval.h + +BOARD VCMA9 mpl +M: David Müller d.mueller@elsoft.ch +T: git git://git.denx.de/u-boot-samsung.git +S: Maintained +F: board/mpl/VCMA9/ +F: include/configs/VCMA9.h + +BOARD vct micronas +T: git git://git.denx.de/u-boot-mips.git +S: Maintained +F: board/micronas/vct/ +F: include/configs/vct.h + +BOARD ve8313 +M: Heiko Schocher hs@denx.de +T: git git://git.denx.de/u-boot-mpc83xx.git +S: Maintained +F: board/ve8313/ +F: include/configs/ve8313.h + +BOARD venice2 nvidia +M: Tom Warren twarren@nvidia.com +T: git git://git.denx.de/u-boot-tegra.git +S: Maintained +F: board/nvidia/venice2/ +F: board/nvidia/common/ +F: include/configs/venice2.h + +BOARD ventana nvidia +M: Tom Warren twarren@nvidia.com +M: Stephen Warren swarren@nvidia.com +T: git git://git.denx.de/u-boot-tegra.git +S: Maintained +F: board/nvidia/ventana/ +F: board/nvidia/common/ +F: include/configs/ventana.h + +BOARD versatile armltd +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/armltd/versatile/ +F: include/configs/versatile.h + +BOARD vexpress_aemv8a armltd +M: David Feng fenghua@phytium.com.cn +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/armltd/vexpress_aemv8a/ +F: include/configs/vexpress_aemv8a.h + +BOARD vexpress_ca15_tc2 armltd +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/armltd/vexpress_ca15_tc2/ +F: include/configs/vexpress_ca15_tc2.h + +BOARD vexpress_ca5x2 armltd +M: Matt Waddel matt.waddel@linaro.org +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/armltd/vexpress_ca5x2/ +F: include/configs/vexpress_ca5x2.h + +BOARD vexpress_ca9x4 armltd +M: Matt Waddel matt.waddel@linaro.org +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/armltd/vexpress_ca9x4/ +F: include/configs/vexpress_ca9x4.h + +BOARD vf610twr freescale +M: Alison Wang b18965@freescale.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/freescale/vf610twr/ +F: board/freescale/common/ +F: include/configs/vf610twr.h + +BOARD virtlab2 tqc +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Maintained +F: board/tqc/virtlab2/ +F: include/configs/virtlab2.h + +BOARD vision2 ttcontrol +M: Stefano Babic sbabic@denx.de +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/ttcontrol/vision2/ +F: include/configs/vision2.h + +BOARD vl_ma2sc BuS +M: Jens Scharsig esw@bus-elektronik.de +T: git git://git.denx.de/u-boot-atmel.git +S: Maintained +F: board/BuS/vl_ma2sc/ +F: include/configs/vl_ma2sc.h + +BOARD vme8349 esd +M: Reinhard Arlt reinhard.arlt@esd-electronics.com +T: git git://git.denx.de/u-boot-mpc83xx.git +S: Maintained +F: board/esd/vme8349/ +F: include/configs/vme8349.h + +BOARD VOH405 esd +M: Matthias Fuchs matthias.fuchs@esd-electronics.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/esd/VOH405/ +F: include/configs/VOH405.h + +BOARD VOM405 esd +M: Matthias Fuchs matthias.fuchs@esd-electronics.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/esd/VOM405/ +F: include/configs/VOM405.h + +BOARD VoVPN-GW funkwerk +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Maintained +F: board/funkwerk/VoVPN-GW/ +F: include/configs/VoVPN-GW.h + +BOARD vpac270 +M: Marek Vasut marek.vasut@gmail.com +T: git git://git.denx.de/u-boot-pxa.git +S: Maintained +F: board/vpac270/ +F: include/configs/vpac270.h + +BOARD W7OLMC +M: Erik Theisen etheisen@mindspring.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/W7OLMC/ +F: include/configs/W7OLMC.h + +BOARD W7OLMG +M: Erik Theisen etheisen@mindspring.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/W7OLMG/ +F: include/configs/W7OLMG.h + +BOARD walnut amcc +M: Stefan Roese sr@denx.de +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/amcc/walnut/ +F: include/configs/walnut.h + +BOARD wandboard +M: Fabio Estevam fabio.estevam@freescale.com +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/wandboard/ +F: include/configs/wandboard.h + +BOARD whistler nvidia +M: Tom Warren twarren@nvidia.com +M: Stephen Warren swarren@nvidia.com +T: git git://git.denx.de/u-boot-tegra.git +S: Maintained +F: board/nvidia/whistler/ +F: board/nvidia/common/ +F: include/configs/whistler.h + +BOARD wireless_space LaCie +T: git git://git.denx.de/u-boot-marvell.git +S: Maintained +F: board/LaCie/wireless_space/ +F: include/configs/wireless_space.h + +BOARD woodburn +M: Stefano Babic sbabic@denx.de +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/woodburn/ +F: include/configs/woodburn.h + +BOARD woodburn_sd +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/woodburn_sd/ +F: include/configs/woodburn_sd.h + +BOARD WUH405 esd +M: Matthias Fuchs matthias.fuchs@esd-electronics.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/esd/WUH405/ +F: include/configs/WUH405.h + +BOARD x600 spear +M: Stefan Roese sr@denx.de +T: git git://git.denx.de/u-boot-stm.git +S: Maintained +F: board/spear/x600/ +F: board/spear/common/ +F: include/configs/x600.h + +BOARD xaeniax +T: git git://git.denx.de/u-boot-pxa.git +S: Maintained +F: board/xaeniax/ +F: include/configs/xaeniax.h + +BOARD xfi3 creative +M: Marek Vasut marek.vasut@gmail.com +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/creative/xfi3/ +F: include/configs/xfi3.h + +BOARD xilinx-ppc405-generic xilinx +M: Ricardo Ribalda ricardo.ribalda@uam.es +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/xilinx/xilinx-ppc405-generic/ +F: include/configs/xilinx-ppc405-generic.h + +BOARD xilinx-ppc440-generic xilinx +M: Ricardo Ribalda ricardo.ribalda@uam.es +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/xilinx/xilinx-ppc440-generic/ +F: include/configs/xilinx-ppc440-generic.h + +BOARD xpedite1000 xes +M: Peter Tyser ptyser@xes-inc.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/xes/xpedite1000/ +F: board/xes/common/ +F: include/configs/xpedite1000.h + +BOARD xpedite517x xes +T: git git://git.denx.de/u-boot-mpc86xx.git +S: Maintained +F: board/xes/xpedite517x/ +F: board/xes/common/ +F: include/configs/xpedite517x.h + +BOARD xpedite520x xes +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/xes/xpedite520x/ +F: board/xes/common/ +F: include/configs/xpedite520x.h + +BOARD xpedite537x xes +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/xes/xpedite537x/ +F: board/xes/common/ +F: include/configs/xpedite537x.h + +BOARD xpedite550x xes +T: git git://git.denx.de/u-boot-mpc85xx.git +S: Maintained +F: board/xes/xpedite550x/ +F: board/xes/common/ +F: include/configs/xpedite550x.h + +BOARD yosemite amcc +M: Stefan Roese sr@denx.de +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/amcc/yosemite/ +F: include/configs/yosemite.h + +BOARD yucca amcc +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/amcc/yucca/ +F: include/configs/yucca.h + +BOARD zeus +M: Stefan Roese sr@denx.de +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Maintained +F: board/zeus/ +F: include/configs/zeus.h + +BOARD zipitz2 +M: Marek Vasut marek.vasut@gmail.com +T: git git://git.denx.de/u-boot-pxa.git +S: Maintained +F: board/zipitz2/ +F: include/configs/zipitz2.h + +BOARD zmx25 syteco +M: Matthias Weisser weisserm@arcor.de +T: git git://git.denx.de/u-boot-imx.git +S: Maintained +F: board/syteco/zmx25/ +F: include/configs/zmx25.h + +BOARD zynq_microzed xilinx +M: Michal Simek monstr@monstr.eu +M: Jagannadha Sutradharudu Teki jaganna@xilinx.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/xilinx/zynq_microzed/ +F: include/configs/zynq_microzed.h + +BOARD zynq_zc70x xilinx +M: Michal Simek monstr@monstr.eu +M: Jagannadha Sutradharudu Teki jaganna@xilinx.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/xilinx/zynq_zc70x/ +F: include/configs/zynq_zc70x.h + +BOARD zynq_zc770 xilinx +M: Michal Simek monstr@monstr.eu +M: Jagannadha Sutradharudu Teki jaganna@xilinx.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/xilinx/zynq_zc770/ +F: include/configs/zynq_zc770.h + +BOARD zynq_zed xilinx +M: Michal Simek monstr@monstr.eu +M: Jagannadha Sutradharudu Teki jaganna@xilinx.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/xilinx/zynq_zed/ +F: include/configs/zynq_zed.h + +BOARD Adder +M: Yuli Barcohen yuli@arabellasw.com +T: git git://git.denx.de/u-boot-mpc8xx.git +S: Orphan +F: board/Adder/ +F: include/configs/Adder.h + +BOARD bluestone amcc +M: Tirumala Marri tmarri@apm.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Orphan +F: board/amcc/bluestone/ +F: include/configs/bluestone.h + +BOARD cm-bf527 +M: Bluetechnix Tinyboards bluetechnix@blackfin.uclinux.org +T: git git://git.denx.de/u-boot-blackfin.git +S: Orphan +F: board/cm-bf527/ +F: include/configs/cm-bf527.h + +BOARD cm-bf533 +M: Bluetechnix Tinyboards bluetechnix@blackfin.uclinux.org +T: git git://git.denx.de/u-boot-blackfin.git +S: Orphan +F: board/cm-bf533/ +F: include/configs/cm-bf533.h + +BOARD cm-bf537e +M: Bluetechnix Tinyboards bluetechnix@blackfin.uclinux.org +T: git git://git.denx.de/u-boot-blackfin.git +S: Orphan +F: board/cm-bf537e/ +F: include/configs/cm-bf537e.h + +BOARD cm-bf537u +M: Bluetechnix Tinyboards bluetechnix@blackfin.uclinux.org +T: git git://git.denx.de/u-boot-blackfin.git +S: Orphan +F: board/cm-bf537u/ +F: include/configs/cm-bf537u.h + +BOARD cm-bf548 +M: Bluetechnix Tinyboards bluetechnix@blackfin.uclinux.org +T: git git://git.denx.de/u-boot-blackfin.git +S: Orphan +F: board/cm-bf548/ +F: include/configs/cm-bf548.h + +BOARD cm-bf561 +M: Bluetechnix Tinyboards bluetechnix@blackfin.uclinux.org +T: git git://git.denx.de/u-boot-blackfin.git +S: Orphan +F: board/cm-bf561/ +F: include/configs/cm-bf561.h + +BOARD CRAYL1 cray +M: David Updegraff dave@cray.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Orphan +F: board/cray/CRAYL1/ +F: include/configs/CRAYL1.h + +BOARD debris etin +M: Sangmoon Kim dogoil@etinsys.com +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Orphan +F: board/etin/debris/ +F: include/configs/debris.h + +BOARD ep8248 +M: Yuli Barcohen yuli@arabellasw.com +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Orphan +F: board/ep8248/ +F: include/configs/ep8248.h + +BOARD HIDDEN_DRAGON +M: Yusdi Santoso yusdi_santoso@adaptec.com +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Orphan +F: board/HIDDEN_DRAGON/ +F: include/configs/HIDDEN_DRAGON.h + +BOARD imx31_phycore +M: (resigned) Guennadi Liakhovetski g.liakhovetski@gmx.de +T: git git://git.denx.de/u-boot-imx.git +S: Orphan +F: board/imx31_phycore/ +F: include/configs/imx31_phycore.h + +BOARD ISPAN +M: Yuli Barcohen yuli@arabellasw.com +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Orphan +F: board/ISPAN/ +F: include/configs/ISPAN.h + +BOARD KAREF sandburst +M: Travis Sawyer travis.sawyer@sandburst.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Orphan +F: board/sandburst/KAREF/ +F: include/configs/KAREF.h + +BOARD kvme080 etin +M: Sangmoon Kim dogoil@etinsys.com +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Orphan +F: board/etin/kvme080/ +F: include/configs/kvme080.h + +BOARD MERGERBOX matrix_vision +M: Andre Schwarz andre.schwarz@matrix-vision.de +T: git git://git.denx.de/u-boot-mpc83xx.git +S: Orphan +F: board/matrix_vision/MERGERBOX/ +F: board/matrix_vision/common/ +F: include/configs/MERGERBOX.h + +BOARD METROBOX sandburst +M: Travis Sawyer travis.sawyer@sandburst.com +T: git git://git.denx.de/u-boot-ppc4xx.git +S: Orphan +F: board/sandburst/METROBOX/ +F: include/configs/METROBOX.h + +BOARD MPC8260ADS freescale +M: Yuli Barcohen yuli@arabellasw.com +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Orphan +F: board/freescale/MPC8260ADS/ +F: board/freescale/common/ +F: include/configs/MPC8260ADS.h + +BOARD MPC8360ERDK freescale +M: Anton Vorontsov avorontsov@ru.mvista.com +T: git git://git.denx.de/u-boot-mpc83xx.git +S: Orphan +F: board/freescale/MPC8360ERDK/ +F: board/freescale/common/ +F: include/configs/MPC8360ERDK.h + +BOARD MUSENKI +M: Jim Thompson jim@musenki.com +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Orphan +F: board/MUSENKI/ +F: include/configs/MUSENKI.h + +BOARD MVBC_P matrix_vision +M: Andre Schwarz andre.schwarz@matrix-vision.de +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Orphan +F: board/matrix_vision/MVBC_P/ +F: board/matrix_vision/common/ +F: include/configs/MVBC_P.h + +BOARD MVBLM7 matrix_vision +M: Andre Schwarz andre.schwarz@matrix-vision.de +T: git git://git.denx.de/u-boot-mpc83xx.git +S: Orphan +F: board/matrix_vision/MVBLM7/ +F: board/matrix_vision/common/ +F: include/configs/MVBLM7.h + +BOARD MVSMR matrix_vision +M: Andre Schwarz andre.schwarz@matrix-vision.de +T: git git://git.denx.de/u-boot-mpc5xxx.git +S: Orphan +F: board/matrix_vision/MVSMR/ +F: board/matrix_vision/common/ +F: include/configs/MVSMR.h + +BOARD mx31ads freescale +M: (resigned) Guennadi Liakhovetski g.liakhovetski@gmx.de +T: git git://git.denx.de/u-boot-imx.git +S: Orphan +F: board/freescale/mx31ads/ +F: board/freescale/common/ +F: include/configs/mx31ads.h + +BOARD ppmc8260 +M: Brad Kemp Brad.Kemp@seranoa.com +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Orphan +F: board/ppmc8260/ +F: include/configs/ppmc8260.h + +BOARD Rattler +M: Yuli Barcohen yuli@arabellasw.com +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Orphan +F: board/Rattler/ +F: include/configs/Rattler.h + +BOARD Sandpoint8245 +M: Jim Thompson jim@musenki.com +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Orphan +F: board/Sandpoint8245/ +F: include/configs/Sandpoint8245.h + +BOARD tcm-bf518 +M: Bluetechnix Tinyboards bluetechnix@blackfin.uclinux.org +T: git git://git.denx.de/u-boot-blackfin.git +S: Orphan +F: board/tcm-bf518/ +F: include/configs/tcm-bf518.h + +BOARD tcm-bf537 +M: Bluetechnix Tinyboards bluetechnix@blackfin.uclinux.org +T: git git://git.denx.de/u-boot-blackfin.git +S: Orphan +F: board/tcm-bf537/ +F: include/configs/tcm-bf537.h + +BOARD ZPC1900 +M: Yuli Barcohen yuli@arabellasw.com +T: git git://git.denx.de/u-boot-mpc82xx.git +S: Orphan +F: board/ZPC1900/ +F: include/configs/ZPC1900.h + +BOARD ZUMA +M: Nye Liu nyet@zumanetworks.com +T: git git://git.denx.de/u-boot-74xx-7xx.git +S: Orphan +F: board/ZUMA/ +F: include/configs/ZUMA.h +

Dear Daniel Schwierzeck,
In message 1398027454-20399-4-git-send-email-daniel.schwierzeck@gmail.com you wrote:
MAINTAINERS.boards is generated from boards.cfg at commit b149c4c.
Signed-off-by: Daniel Schwierzeck daniel.schwierzeck@gmail.com
I understand your intentions, but I have to admit that I seriously dislike this approach. It has been quite a long way to come up with boards.cfg, which would attempt to colect all relevant information for a board in a single database. In my opinion, this is still the right way we should go: maintain all related information in a single place.
What you do here means we start distributing the relevant information again over a number of different files. We all know that keeping several such files in sync is not only a PITA - it simply does not work.
Instead of adding such MAINTAINERs files, you should strive to extract the relevant information from the existing database (i. e. the boards.cfg file - or whatever we decide to have instead of it).
In any case, scattering such data all over the place is a bad thing to do.
Best regards,
Wolfgang Denk

Dear Wolfgang,
2014-04-20 23:26 GMT+02:00 Wolfgang Denk wd@denx.de:
Dear Daniel Schwierzeck,
In message 1398027454-20399-4-git-send-email-daniel.schwierzeck@gmail.com you wrote:
MAINTAINERS.boards is generated from boards.cfg at commit b149c4c.
Signed-off-by: Daniel Schwierzeck daniel.schwierzeck@gmail.com
I understand your intentions, but I have to admit that I seriously dislike this approach. It has been quite a long way to come up with boards.cfg, which would attempt to colect all relevant information for a board in a single database. In my opinion, this is still the right way we should go: maintain all related information in a single place.
the main intention is to support introduction of Kconfig, which eventually obsoletes the mkconfig script. This, in turn obsoletes the information about arch, CPU/SOC, vendor, special config options in boards.cfg. Thus boards.cfg would only contain infos about status, name and mail address of board maintainers. Furthermore we still don't have infos about custodians and their trees in boards.cfg. As you stated in your other response the wiki page isn't a reliable source. Actually we also have some quasi-official maintainers without dedicated custodian trees (e.g. sandbox, driver model). Those maintainers are currently not recorded at all. So it makes sense to collect all those informations in one single MAINTAINERS file. Finally all contributors would have more comfort in building the relevant cc list for their patches.
What you do here means we start distributing the relevant information again over a number of different files. We all know that keeping several such files in sync is not only a PITA - it simply does not work.
two MAINTAINERS files are an intermediate solution until Kconfig is finally merged and working. In the meantime you need to refresh the MAINTAINERS.boards file if boards are added or removed. This task is easier with two separate MAINTAINERS files. After the Kconfig switch both MAINTAINERS files should be merged and boards.cfg could be removed.
Instead of adding such MAINTAINERs files, you should strive to extract the relevant information from the existing database (i. e. the boards.cfg file - or whatever we decide to have instead of it).
In any case, scattering such data all over the place is a bad thing to do.
IMHO the goal should be to have one MAINTAINERS file for maintainer infos and board-specific Kconfig files for all board config stuff (incl. include/configs/$boardname.h).

Dear Daniel,
In message CACUy__UwW=4k0CwcVHhZB8JU-_Fj1cA5TNcCcCyh8E-PF9ELiQ@mail.gmail.com you wrote:
I understand your intentions, but I have to admit that I seriously dislike this approach. It has been quite a long way to come up with boards.cfg, which would attempt to colect all relevant information for a board in a single database. In my opinion, this is still the right way we should go: maintain all related information in a single place.
the main intention is to support introduction of Kconfig, which eventually obsoletes the mkconfig script. This, in turn obsoletes the information about arch, CPU/SOC, vendor, special config options in boards.cfg. Thus boards.cfg would only contain infos about status, name and mail address of board maintainers. Furthermore we still don't have infos about custodians and their trees in boards.cfg. As you stated in your other response the wiki page isn't a reliable source. Actually we also have some quasi-official maintainers without dedicated custodian trees (e.g. sandbox, driver model). Those maintainers are currently not recorded at all. So it makes sense to collect all those informations in one single MAINTAINERS file. Finally all contributors would have more comfort in building the relevant cc list for their patches.
I fully understand your intentions, and I agree with your comments about information missing in boards.cfg. I will also fully agree to any statement that boards.cfg is not a perfect database for the kind of information we would like to collect.
But I still disagree with the approach taken here. Yes, I know that MAINTAINERS is just following the Linux kernel example. But I believe devoutly that we should strive to collect all relevant data in a single database (whichever form this may have) instead of spreading it over a number of different files. As is, we have to add just a single line to boards.cfg (or, in a more general view, an atomic entry to a database) to add a new board. Introducing MAINTAINERS will scatter information around, and it will become a permanent nightmare to keep information consistent: you will have to touch several files and always have to keep them in sync - which has never worked well.
In any case, scattering such data all over the place is a bad thing to do.
IMHO the goal should be to have one MAINTAINERS file for maintainer infos and board-specific Kconfig files for all board config stuff (incl. include/configs/$boardname.h).
This sounds fine, but I feel the current implementation is a step backwards. It makes things worse than better. [And I have to admit that I'm not fully convinced that the end goal you pattern here would actually work as you describe it.]
I wonder if I'm alone with my concerns? Anybody else with comments?
Best regards,
Wolfgang Denk

Hi Wolfgang,
On Mon, 21 Apr 2014 23:16:48 +0200, Wolfgang Denk wd@denx.de wrote:
Dear Daniel,
In message CACUy__UwW=4k0CwcVHhZB8JU-_Fj1cA5TNcCcCyh8E-PF9ELiQ@mail.gmail.com you wrote:
I understand your intentions, but I have to admit that I seriously dislike this approach. It has been quite a long way to come up with boards.cfg, which would attempt to colect all relevant information for a board in a single database. In my opinion, this is still the right way we should go: maintain all related information in a single place.
the main intention is to support introduction of Kconfig, which eventually obsoletes the mkconfig script. This, in turn obsoletes the information about arch, CPU/SOC, vendor, special config options in boards.cfg. Thus boards.cfg would only contain infos about status, name and mail address of board maintainers. Furthermore we still don't have infos about custodians and their trees in boards.cfg. As you stated in your other response the wiki page isn't a reliable source. Actually we also have some quasi-official maintainers without dedicated custodian trees (e.g. sandbox, driver model). Those maintainers are currently not recorded at all. So it makes sense to collect all those informations in one single MAINTAINERS file. Finally all contributors would have more comfort in building the relevant cc list for their patches.
I fully understand your intentions, and I agree with your comments about information missing in boards.cfg. I will also fully agree to any statement that boards.cfg is not a perfect database for the kind of information we would like to collect.
But I still disagree with the approach taken here. Yes, I know that MAINTAINERS is just following the Linux kernel example. But I believe devoutly that we should strive to collect all relevant data in a single database (whichever form this may have) instead of spreading it over a number of different files. As is, we have to add just a single line to boards.cfg (or, in a more general view, an atomic entry to a database) to add a new board. Introducing MAINTAINERS will scatter information around, and it will become a permanent nightmare to keep information consistent: you will have to touch several files and always have to keep them in sync - which has never worked well.
In any case, scattering such data all over the place is a bad thing to do.
IMHO the goal should be to have one MAINTAINERS file for maintainer infos and board-specific Kconfig files for all board config stuff (incl. include/configs/$boardname.h).
This sounds fine, but I feel the current implementation is a step backwards. It makes things worse than better. [And I have to admit that I'm not fully convinced that the end goal you pattern here would actually work as you describe it.]
I wonder if I'm alone with my concerns? Anybody else with comments?
I can hardly disagree with you about ( boards.cfg + MAINTAINERS.* ) being awkward to maintain, since I'm the one who merged them into a single boards.cfg file. :)
Can'we have the maintainer(s) be part of the board config file from the start, like a required (but possible non-editable) configuration item, something like "CONFIG_MAINTAINER_EMAIL"?
This would, at least, keep all information for a single board in a single place.
Best regards,
Wolfgang Denk
Amicalement,

Hi Albert,
Can'we have the maintainer(s) be part of the board config file from the start, like a required (but possible non-editable) configuration item, something like "CONFIG_MAINTAINER_EMAIL"?
This would, at least, keep all information for a single board in a single place.
I did this (CONFIG_BOARD_MAINTAINER) in my RFC http://patchwork.ozlabs.org/patch/330915/ (but user-editable)
I think everyone was opposed to my idea and we chose to add MAINTAINERS file.
Best Regards Masahiro Yamada

Hi Masahiro,
On Tue, 22 Apr 2014 16:30:32 +0900, Masahiro Yamada yamada.m@jp.panasonic.com wrote:
Hi Albert,
Can'we have the maintainer(s) be part of the board config file from the start, like a required (but possible non-editable) configuration item, something like "CONFIG_MAINTAINER_EMAIL"?
This would, at least, keep all information for a single board in a single place.
I did this (CONFIG_BOARD_MAINTAINER) in my RFC http://patchwork.ozlabs.org/patch/330915/ (but user-editable)
I think everyone was opposed to my idea and we chose to add MAINTAINERS file.
I don't agree that everyone was opposed to it. There were disagreements and suggestions to use get_maintainers.pl, and then disagreements about this suggestion too.
(I did not chime in then for lack of time and because what I would have said was already; I am chiming in now because Wolfgang was explicitly wondering whether anyone was agreeing with him, and I am.)
I personally don't like the proposed MAINTAINERS format any more than I liked the old one.
Also, I don't think we need a *centralized* source of information. I think we need a source of information which requires minimal effort when adding or removing a board (or SoC, or...). Therefore, I'm fine with a board-specific file (defconfig or other) as long as it can be recognized by (part of) its path and lives with the other board files.
Best Regards Masahiro Yamada
Amicalement,

Dear Albert,
In message E1WcVhi-0004og-2F@janus you wrote:
Also, I don't think we need a *centralized* source of information. I think we need a source of information which requires minimal effort when adding or removing a board (or SoC, or...). Therefore, I'm fine with a board-specific file (defconfig or other) as long as it can be recognized by (part of) its path and lives with the other board files.
This is something which I actually agree with. When I asked for a single, central database I was actually more restrictive than I intended. What I had (and have) in mind is that all relevant pieces of information for a specific board (i. e. one "entry" in the database) should be in a single location. Whether this is a single central file or a single board specific file (like a defconfig) is not really relevant to me.
[I have to admit that I find the MAINTAINERS format pretty unlucky; it is difficult to write and to process.]
Best regards,
Wolfgang Denk

Dear Masahiro,
In message 20140422163032.3AE3.AA925319@jp.panasonic.com you wrote:
I did this (CONFIG_BOARD_MAINTAINER) in my RFC http://patchwork.ozlabs.org/patch/330915/ (but user-editable)
I think everyone was opposed to my idea and we chose to add MAINTAINERS file.
Well, speaking for myself only: by then I didn't know that the alternative would be even worse ;-)
Best regards,
Wolfgang Denk

Hi Daniel,
Thanks for your effort. I have some minor comments.
+BOARD zynq_microzed xilinx +M: Michal Simek monstr@monstr.eu +M: Jagannadha Sutradharudu Teki jaganna@xilinx.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/xilinx/zynq_microzed/ +F: include/configs/zynq_microzed.h
+BOARD zynq_zc70x xilinx +M: Michal Simek monstr@monstr.eu +M: Jagannadha Sutradharudu Teki jaganna@xilinx.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/xilinx/zynq_zc70x/ +F: include/configs/zynq_zc70x.h
+BOARD zynq_zc770 xilinx +M: Michal Simek monstr@monstr.eu +M: Jagannadha Sutradharudu Teki jaganna@xilinx.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/xilinx/zynq_zc770/ +F: include/configs/zynq_zc770.h
+BOARD zynq_zed xilinx +M: Michal Simek monstr@monstr.eu +M: Jagannadha Sutradharudu Teki jaganna@xilinx.com +T: git git://git.denx.de/u-boot-arm.git +S: Maintained +F: board/xilinx/zynq_zed/ +F: include/configs/zynq_zed.h
Weird.
- board/xilinx/zynq_microzed/ - board/xilinx/zynq_zc70x/ - board/xilinx/zynq_zc770/ - board/xilinx/zynq_zed/
do not exist.
The board directory for Zynq series is board/xilinx/zynq/
I guess there's got to be something wrong with the conversion script.
These entries can be merged like this
BOARD Xilinx Zynq M: Michal Simek monstr@monstr.eu M: Jagannadha Sutradharudu Teki jaganna@xilinx.com T: git git://git.denx.de/u-boot-arm.git S: Maintained F: board/xilinx/zynq/ F: include/configs/zynq_*.h
Maybe we should do this in a follow-up patch. I am not sure..
+BOARD ZUMA +M: Nye Liu nyet@zumanetworks.com +T: git git://git.denx.de/u-boot-74xx-7xx.git +S: Orphan +F: board/ZUMA/ +F: include/configs/ZUMA.h
I want you to add "when" this board was moved to Orphan.
Please note the separators in boards.cfg something like this:
# The following were moved to "Orphan" in March, 2014 ... # The following were move to "Orphan" in September, 2013
Best Regards Masahiro Yamada

2014-04-21 6:03 GMT+02:00 Masahiro Yamada yamada.m@jp.panasonic.com:
Weird.
- board/xilinx/zynq_microzed/
- board/xilinx/zynq_zc70x/
- board/xilinx/zynq_zc770/
- board/xilinx/zynq_zed/
do not exist.
The board directory for Zynq series is board/xilinx/zynq/
I guess there's got to be something wrong with the conversion script.
yes, I'll fix that
+BOARD ZUMA +M: Nye Liu nyet@zumanetworks.com +T: git git://git.denx.de/u-boot-74xx-7xx.git +S: Orphan +F: board/ZUMA/ +F: include/configs/ZUMA.h
I want you to add "when" this board was moved to Orphan.
Please note the separators in boards.cfg something like this:
# The following were moved to "Orphan" in March, 2014 ... # The following were move to "Orphan" in September, 2013
ok. I can think of two options: - keep the alphabetical order and use "S: Orphan (since September, 2013)" - move the orphan boards to the bottom and add those separator comments
Which one do you prefer?

Hi Daniel,
ok. I can think of two options:
- keep the alphabetical order and use "S: Orphan (since September, 2013)"
- move the orphan boards to the bottom and add those separator comments
Which one do you prefer?
I prefer - keep the alphabetical order and use "S: Orphan (since September, 2013)"
Thanks!
Best Regards Masahiro Yamada

Signed-off-by: Daniel Schwierzeck daniel.schwierzeck@gmail.com ---
scripts/get_maintainer.pl | 2249 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 2249 insertions(+) create mode 100755 scripts/get_maintainer.pl
diff --git a/scripts/get_maintainer.pl b/scripts/get_maintainer.pl new file mode 100755 index 0000000..4198788 --- /dev/null +++ b/scripts/get_maintainer.pl @@ -0,0 +1,2249 @@ +#!/usr/bin/perl -w +# (c) 2007, Joe Perches joe@perches.com +# created from checkpatch.pl +# +# Print selected MAINTAINERS information for +# the files modified in a patch or for a file +# +# usage: perl scripts/get_maintainer.pl [OPTIONS] <patch> +# perl scripts/get_maintainer.pl [OPTIONS] -f <file> +# +# Licensed under the terms of the GNU GPL License version 2 + +use strict; + +my $P = $0; +my $V = '0.26'; + +use Getopt::Long qw(:config no_auto_abbrev); + +my $lk_path = "./"; +my $email = 1; +my $email_usename = 1; +my $email_maintainer = 1; +my $email_list = 1; +my $email_subscriber_list = 0; +my $email_git_penguin_chiefs = 0; +my $email_git = 0; +my $email_git_all_signature_types = 0; +my $email_git_blame = 0; +my $email_git_blame_signatures = 1; +my $email_git_fallback = 1; +my $email_git_min_signatures = 1; +my $email_git_max_maintainers = 5; +my $email_git_min_percent = 5; +my $email_git_since = "1-year-ago"; +my $email_hg_since = "-365"; +my $interactive = 0; +my $email_remove_duplicates = 1; +my $email_use_mailmap = 1; +my $output_multiline = 1; +my $output_separator = ", "; +my $output_roles = 0; +my $output_rolestats = 1; +my $scm = 0; +my $web = 0; +my $subsystem = 0; +my $status = 0; +my $keywords = 1; +my $sections = 0; +my $file_emails = 0; +my $from_filename = 0; +my $pattern_depth = 0; +my $version = 0; +my $help = 0; + +my $vcs_used = 0; + +my $exit = 0; + +my %commit_author_hash; +my %commit_signer_hash; + +my @penguin_chief = (); +push(@penguin_chief, "Linus Torvalds:torvalds@linux-foundation.org"); +#Andrew wants in on most everything - 2009/01/14 +#push(@penguin_chief, "Andrew Morton:akpm@linux-foundation.org"); + +my @penguin_chief_names = (); +foreach my $chief (@penguin_chief) { + if ($chief =~ m/^(.*):(.*)/) { + my $chief_name = $1; + my $chief_addr = $2; + push(@penguin_chief_names, $chief_name); + } +} +my $penguin_chiefs = "(" . join("|", @penguin_chief_names) . ")"; + +# Signature types of people who are either +# a) responsible for the code in question, or +# b) familiar enough with it to give relevant feedback +my @signature_tags = (); +push(@signature_tags, "Signed-off-by:"); +push(@signature_tags, "Reviewed-by:"); +push(@signature_tags, "Acked-by:"); + +my $signature_pattern = "(" . join("|", @signature_tags) . ")"; + +# rfc822 email address - preloaded methods go here. +my $rfc822_lwsp = "(?:(?:\r\n)?[ \t])"; +my $rfc822_char = '[\000-\377]'; + +# VCS command support: class-like functions and strings + +my %VCS_cmds; + +my %VCS_cmds_git = ( + "execute_cmd" => &git_execute_cmd, + "available" => '(which("git") ne "") && (-e ".git")', + "find_signers_cmd" => + "git log --no-color --follow --since=$email_git_since " . + '--numstat --no-merges ' . + '--format="GitCommit: %H%n' . + 'GitAuthor: %an <%ae>%n' . + 'GitDate: %aD%n' . + 'GitSubject: %s%n' . + '%b%n"' . + " -- $file", + "find_commit_signers_cmd" => + "git log --no-color " . + '--numstat ' . + '--format="GitCommit: %H%n' . + 'GitAuthor: %an <%ae>%n' . + 'GitDate: %aD%n' . + 'GitSubject: %s%n' . + '%b%n"' . + " -1 $commit", + "find_commit_author_cmd" => + "git log --no-color " . + '--numstat ' . + '--format="GitCommit: %H%n' . + 'GitAuthor: %an <%ae>%n' . + 'GitDate: %aD%n' . + 'GitSubject: %s%n"' . + " -1 $commit", + "blame_range_cmd" => "git blame -l -L $diff_start,+$diff_length $file", + "blame_file_cmd" => "git blame -l $file", + "commit_pattern" => "^GitCommit: ([0-9a-f]{40,40})", + "blame_commit_pattern" => "^([0-9a-f]+) ", + "author_pattern" => "^GitAuthor: (.*)", + "subject_pattern" => "^GitSubject: (.*)", + "stat_pattern" => "^(\d+)\t(\d+)\t$file$", +); + +my %VCS_cmds_hg = ( + "execute_cmd" => &hg_execute_cmd, + "available" => '(which("hg") ne "") && (-d ".hg")', + "find_signers_cmd" => + "hg log --date=$email_hg_since " . + "--template='HgCommit: {node}\n" . + "HgAuthor: {author}\n" . + "HgSubject: {desc}\n'" . + " -- $file", + "find_commit_signers_cmd" => + "hg log " . + "--template='HgSubject: {desc}\n'" . + " -r $commit", + "find_commit_author_cmd" => + "hg log " . + "--template='HgCommit: {node}\n" . + "HgAuthor: {author}\n" . + "HgSubject: {desc|firstline}\n'" . + " -r $commit", + "blame_range_cmd" => "", # not supported + "blame_file_cmd" => "hg blame -n $file", + "commit_pattern" => "^HgCommit: ([0-9a-f]{40,40})", + "blame_commit_pattern" => "^([ 0-9a-f]+):", + "author_pattern" => "^HgAuthor: (.*)", + "subject_pattern" => "^HgSubject: (.*)", + "stat_pattern" => "^(\d+)\t(\d+)\t$file$", +); + +my $conf = which_conf(".get_maintainer.conf"); +if (-f $conf) { + my @conf_args; + open(my $conffile, '<', "$conf") + or warn "$P: Can't find a readable .get_maintainer.conf file $!\n"; + + while (<$conffile>) { + my $line = $_; + + $line =~ s/\s*\n?$//g; + $line =~ s/^\s*//g; + $line =~ s/\s+/ /g; + + next if ($line =~ m/^\s*#/); + next if ($line =~ m/^\s*$/); + + my @words = split(" ", $line); + foreach my $word (@words) { + last if ($word =~ m/^#/); + push (@conf_args, $word); + } + } + close($conffile); + unshift(@ARGV, @conf_args) if @conf_args; +} + +if (!GetOptions( + 'email!' => $email, + 'git!' => $email_git, + 'git-all-signature-types!' => $email_git_all_signature_types, + 'git-blame!' => $email_git_blame, + 'git-blame-signatures!' => $email_git_blame_signatures, + 'git-fallback!' => $email_git_fallback, + 'git-chief-penguins!' => $email_git_penguin_chiefs, + 'git-min-signatures=i' => $email_git_min_signatures, + 'git-max-maintainers=i' => $email_git_max_maintainers, + 'git-min-percent=i' => $email_git_min_percent, + 'git-since=s' => $email_git_since, + 'hg-since=s' => $email_hg_since, + 'i|interactive!' => $interactive, + 'remove-duplicates!' => $email_remove_duplicates, + 'mailmap!' => $email_use_mailmap, + 'm!' => $email_maintainer, + 'n!' => $email_usename, + 'l!' => $email_list, + 's!' => $email_subscriber_list, + 'multiline!' => $output_multiline, + 'roles!' => $output_roles, + 'rolestats!' => $output_rolestats, + 'separator=s' => $output_separator, + 'subsystem!' => $subsystem, + 'status!' => $status, + 'scm!' => $scm, + 'web!' => $web, + 'pattern-depth=i' => $pattern_depth, + 'k|keywords!' => $keywords, + 'sections!' => $sections, + 'fe|file-emails!' => $file_emails, + 'f|file' => $from_filename, + 'v|version' => $version, + 'h|help|usage' => $help, + )) { + die "$P: invalid argument - use --help if necessary\n"; +} + +if ($help != 0) { + usage(); + exit 0; +} + +if ($version != 0) { + print("${P} ${V}\n"); + exit 0; +} + +if (-t STDIN && !@ARGV) { + # We're talking to a terminal, but have no command line arguments. + die "$P: missing patchfile or -f file - use --help if necessary\n"; +} + +$output_multiline = 0 if ($output_separator ne ", "); +$output_rolestats = 1 if ($interactive); +$output_roles = 1 if ($output_rolestats); + +if ($sections) { + $email = 0; + $email_list = 0; + $scm = 0; + $status = 0; + $subsystem = 0; + $web = 0; + $keywords = 0; + $interactive = 0; +} else { + my $selections = $email + $scm + $status + $subsystem + $web; + if ($selections == 0) { + die "$P: Missing required option: email, scm, status, subsystem or web\n"; + } +} + +if ($email && + ($email_maintainer + $email_list + $email_subscriber_list + + $email_git + $email_git_penguin_chiefs + $email_git_blame) == 0) { + die "$P: Please select at least 1 email option\n"; +} + +if (!top_of_kernel_tree($lk_path)) { + die "$P: The current directory does not appear to be " + . "a linux kernel source tree.\n"; +} + +## Read MAINTAINERS for type/value pairs + +my @typevalue = (); +my %keyword_hash; + +open (my $maint, '<', "${lk_path}MAINTAINERS") + or die "$P: Can't open MAINTAINERS: $!\n"; +while (<$maint>) { + my $line = $_; + + if ($line =~ m/^(\C):\s*(.*)/) { + my $type = $1; + my $value = $2; + + ##Filename pattern matching + if ($type eq "F" || $type eq "X") { + $value =~ s@.@\.@g; ##Convert . to . + $value =~ s/*/.*/g; ##Convert * to .* + $value =~ s/?/./g; ##Convert ? to . + ##if pattern is a directory and it lacks a trailing slash, add one + if ((-d $value)) { + $value =~ s@([^/])$@$1/@; + } + } elsif ($type eq "K") { + $keyword_hash{@typevalue} = $value; + } + push(@typevalue, "$type:$value"); + } elsif (!/^(\s)*$/) { + $line =~ s/\n$//g; + push(@typevalue, $line); + } +} +close($maint); + + +# +# Read mail address map +# + +my $mailmap; + +read_mailmap(); + +sub read_mailmap { + $mailmap = { + names => {}, + addresses => {} + }; + + return if (!$email_use_mailmap || !(-f "${lk_path}.mailmap")); + + open(my $mailmap_file, '<', "${lk_path}.mailmap") + or warn "$P: Can't open .mailmap: $!\n"; + + while (<$mailmap_file>) { + s/#.*$//; #strip comments + s/^\s+|\s+$//g; #trim + + next if (/^\s*$/); #skip empty lines + #entries have one of the following formats: + # name1 <mail1> + # <mail1> <mail2> + # name1 <mail1> <mail2> + # name1 <mail1> name2 <mail2> + # (see man git-shortlog) + + if (/^([^<]+)<([^>]+)>$/) { + my $real_name = $1; + my $address = $2; + + $real_name =~ s/\s+$//; + ($real_name, $address) = parse_email("$real_name <$address>"); + $mailmap->{names}->{$address} = $real_name; + + } elsif (/^<([^>]+)>\s*<([^>]+)>$/) { + my $real_address = $1; + my $wrong_address = $2; + + $mailmap->{addresses}->{$wrong_address} = $real_address; + + } elsif (/^(.+)<([^>]+)>\s*<([^>]+)>$/) { + my $real_name = $1; + my $real_address = $2; + my $wrong_address = $3; + + $real_name =~ s/\s+$//; + ($real_name, $real_address) = + parse_email("$real_name <$real_address>"); + $mailmap->{names}->{$wrong_address} = $real_name; + $mailmap->{addresses}->{$wrong_address} = $real_address; + + } elsif (/^(.+)<([^>]+)>\s*(.+)\s*<([^>]+)>$/) { + my $real_name = $1; + my $real_address = $2; + my $wrong_name = $3; + my $wrong_address = $4; + + $real_name =~ s/\s+$//; + ($real_name, $real_address) = + parse_email("$real_name <$real_address>"); + + $wrong_name =~ s/\s+$//; + ($wrong_name, $wrong_address) = + parse_email("$wrong_name <$wrong_address>"); + + my $wrong_email = format_email($wrong_name, $wrong_address, 1); + $mailmap->{names}->{$wrong_email} = $real_name; + $mailmap->{addresses}->{$wrong_email} = $real_address; + } + } + close($mailmap_file); +} + +## use the filenames on the command line or find the filenames in the patchfiles + +my @files = (); +my @range = (); +my @keyword_tvi = (); +my @file_emails = (); + +if (!@ARGV) { + push(@ARGV, "&STDIN"); +} + +foreach my $file (@ARGV) { + if ($file ne "&STDIN") { + ##if $file is a directory and it lacks a trailing slash, add one + if ((-d $file)) { + $file =~ s@([^/])$@$1/@; + } elsif (!(-f $file)) { + die "$P: file '${file}' not found\n"; + } + } + if ($from_filename) { + push(@files, $file); + if ($file ne "MAINTAINERS" && -f $file && ($keywords || $file_emails)) { + open(my $f, '<', $file) + or die "$P: Can't open $file: $!\n"; + my $text = do { local($/) ; <$f> }; + close($f); + if ($keywords) { + foreach my $line (keys %keyword_hash) { + if ($text =~ m/$keyword_hash{$line}/x) { + push(@keyword_tvi, $line); + } + } + } + if ($file_emails) { + my @poss_addr = $text =~ m$[A-Za-zÀ-ÿ"' ,.+-]*\s*[,]*\s*[(<{]{0,1}[A-Za-z0-9_.+-]+@[A-Za-z0-9.-]+.[A-Za-z0-9]+[)>}]{0,1}$g; + push(@file_emails, clean_file_emails(@poss_addr)); + } + } + } else { + my $file_cnt = @files; + my $lastfile; + + open(my $patch, "< $file") + or die "$P: Can't open $file: $!\n"; + + # We can check arbitrary information before the patch + # like the commit message, mail headers, etc... + # This allows us to match arbitrary keywords against any part + # of a git format-patch generated file (subject tags, etc...) + + my $patch_prefix = ""; #Parsing the intro + + while (<$patch>) { + my $patch_line = $_; + if (m/^+++\s+(\S+)/ or m/^---\s+(\S+)/) { + my $filename = $1; + $filename =~ s@^[^/]*/@@; + $filename =~ s@\n@@; + $lastfile = $filename; + push(@files, $filename); + $patch_prefix = "^[+-].*"; #Now parsing the actual patch + } elsif (m/^@@ -(\d+),(\d+)/) { + if ($email_git_blame) { + push(@range, "$lastfile:$1:$2"); + } + } elsif ($keywords) { + foreach my $line (keys %keyword_hash) { + if ($patch_line =~ m/${patch_prefix}$keyword_hash{$line}/x) { + push(@keyword_tvi, $line); + } + } + } + } + close($patch); + + if ($file_cnt == @files) { + warn "$P: file '${file}' doesn't appear to be a patch. " + . "Add -f to options?\n"; + } + @files = sort_and_uniq(@files); + } +} + +@file_emails = uniq(@file_emails); + +my %email_hash_name; +my %email_hash_address; +my @email_to = (); +my %hash_list_to; +my @list_to = (); +my @scm = (); +my @web = (); +my @subsystem = (); +my @status = (); +my %deduplicate_name_hash = (); +my %deduplicate_address_hash = (); + +my @maintainers = get_maintainers(); + +if (@maintainers) { + @maintainers = merge_email(@maintainers); + output(@maintainers); +} + +if ($scm) { + @scm = uniq(@scm); + output(@scm); +} + +if ($status) { + @status = uniq(@status); + output(@status); +} + +if ($subsystem) { + @subsystem = uniq(@subsystem); + output(@subsystem); +} + +if ($web) { + @web = uniq(@web); + output(@web); +} + +exit($exit); + +sub range_is_maintained { + my ($start, $end) = @_; + + for (my $i = $start; $i < $end; $i++) { + my $line = $typevalue[$i]; + if ($line =~ m/^(\C):\s*(.*)/) { + my $type = $1; + my $value = $2; + if ($type eq 'S') { + if ($value =~ /(maintain|support)/i) { + return 1; + } + } + } + } + return 0; +} + +sub range_has_maintainer { + my ($start, $end) = @_; + + for (my $i = $start; $i < $end; $i++) { + my $line = $typevalue[$i]; + if ($line =~ m/^(\C):\s*(.*)/) { + my $type = $1; + my $value = $2; + if ($type eq 'M') { + return 1; + } + } + } + return 0; +} + +sub get_maintainers { + %email_hash_name = (); + %email_hash_address = (); + %commit_author_hash = (); + %commit_signer_hash = (); + @email_to = (); + %hash_list_to = (); + @list_to = (); + @scm = (); + @web = (); + @subsystem = (); + @status = (); + %deduplicate_name_hash = (); + %deduplicate_address_hash = (); + if ($email_git_all_signature_types) { + $signature_pattern = "(.+?)[Bb][Yy]:"; + } else { + $signature_pattern = "(" . join("|", @signature_tags) . ")"; + } + + # Find responsible parties + + my %exact_pattern_match_hash = (); + + foreach my $file (@files) { + + my %hash; + my $tvi = find_first_section(); + while ($tvi < @typevalue) { + my $start = find_starting_index($tvi); + my $end = find_ending_index($tvi); + my $exclude = 0; + my $i; + + #Do not match excluded file patterns + + for ($i = $start; $i < $end; $i++) { + my $line = $typevalue[$i]; + if ($line =~ m/^(\C):\s*(.*)/) { + my $type = $1; + my $value = $2; + if ($type eq 'X') { + if (file_match_pattern($file, $value)) { + $exclude = 1; + last; + } + } + } + } + + if (!$exclude) { + for ($i = $start; $i < $end; $i++) { + my $line = $typevalue[$i]; + if ($line =~ m/^(\C):\s*(.*)/) { + my $type = $1; + my $value = $2; + if ($type eq 'F') { + if (file_match_pattern($file, $value)) { + my $value_pd = ($value =~ tr@/@@); + my $file_pd = ($file =~ tr@/@@); + $value_pd++ if (substr($value,-1,1) ne "/"); + $value_pd = -1 if ($value =~ /^.*/); + if ($value_pd >= $file_pd && + range_is_maintained($start, $end) && + range_has_maintainer($start, $end)) { + $exact_pattern_match_hash{$file} = 1; + } + if ($pattern_depth == 0 || + (($file_pd - $value_pd) < $pattern_depth)) { + $hash{$tvi} = $value_pd; + } + } + } elsif ($type eq 'N') { + if ($file =~ m/$value/x) { + $hash{$tvi} = 0; + } + } + } + } + } + $tvi = $end + 1; + } + + foreach my $line (sort {$hash{$b} <=> $hash{$a}} keys %hash) { + add_categories($line); + if ($sections) { + my $i; + my $start = find_starting_index($line); + my $end = find_ending_index($line); + for ($i = $start; $i < $end; $i++) { + my $line = $typevalue[$i]; + if ($line =~ /^[FX]:/) { ##Restore file patterns + $line =~ s/([^\]).([^*])/$1?$2/g; + $line =~ s/([^\]).$/$1?/g; ##Convert . back to ? + $line =~ s/\././g; ##Convert . to . + $line =~ s/.*/*/g; ##Convert .* to * + } + $line =~ s/^([A-Z]):/$1:\t/g; + print("$line\n"); + } + print("\n"); + } + } + } + + if ($keywords) { + @keyword_tvi = sort_and_uniq(@keyword_tvi); + foreach my $line (@keyword_tvi) { + add_categories($line); + } + } + + foreach my $email (@email_to, @list_to) { + $email->[0] = deduplicate_email($email->[0]); + } + + foreach my $file (@files) { + if ($email && + ($email_git || ($email_git_fallback && + !$exact_pattern_match_hash{$file}))) { + vcs_file_signoffs($file); + } + if ($email && $email_git_blame) { + vcs_file_blame($file); + } + } + + if ($email) { + foreach my $chief (@penguin_chief) { + if ($chief =~ m/^(.*):(.*)/) { + my $email_address; + + $email_address = format_email($1, $2, $email_usename); + if ($email_git_penguin_chiefs) { + push(@email_to, [$email_address, 'chief penguin']); + } else { + @email_to = grep($_->[0] !~ /${email_address}/, @email_to); + } + } + } + + foreach my $email (@file_emails) { + my ($name, $address) = parse_email($email); + + my $tmp_email = format_email($name, $address, $email_usename); + push_email_address($tmp_email, ''); + add_role($tmp_email, 'in file'); + } + } + + my @to = (); + if ($email || $email_list) { + if ($email) { + @to = (@to, @email_to); + } + if ($email_list) { + @to = (@to, @list_to); + } + } + + if ($interactive) { + @to = interactive_get_maintainers(@to); + } + + return @to; +} + +sub file_match_pattern { + my ($file, $pattern) = @_; + if (substr($pattern, -1) eq "/") { + if ($file =~ m@^$pattern@) { + return 1; + } + } else { + if ($file =~ m@^$pattern@) { + my $s1 = ($file =~ tr@/@@); + my $s2 = ($pattern =~ tr@/@@); + if ($s1 == $s2) { + return 1; + } + } + } + return 0; +} + +sub usage { + print <<EOT; +usage: $P [options] patchfile + $P [options] -f file|directory +version: $V + +MAINTAINER field selection options: + --email => print email address(es) if any + --git => include recent git *-by: signers + --git-all-signature-types => include signers regardless of signature type + or use only ${signature_pattern} signers (default: $email_git_all_signature_types) + --git-fallback => use git when no exact MAINTAINERS pattern (default: $email_git_fallback) + --git-chief-penguins => include ${penguin_chiefs} + --git-min-signatures => number of signatures required (default: $email_git_min_signatures) + --git-max-maintainers => maximum maintainers to add (default: $email_git_max_maintainers) + --git-min-percent => minimum percentage of commits required (default: $email_git_min_percent) + --git-blame => use git blame to find modified commits for patch or file + --git-since => git history to use (default: $email_git_since) + --hg-since => hg history to use (default: $email_hg_since) + --interactive => display a menu (mostly useful if used with the --git option) + --m => include maintainer(s) if any + --n => include name 'Full Name <addr@domain.tld>' + --l => include list(s) if any + --s => include subscriber only list(s) if any + --remove-duplicates => minimize duplicate email names/addresses + --roles => show roles (status:subsystem, git-signer, list, etc...) + --rolestats => show roles and statistics (commits/total_commits, %) + --file-emails => add email addresses found in -f file (default: 0 (off)) + --scm => print SCM tree(s) if any + --status => print status if any + --subsystem => print subsystem name if any + --web => print website(s) if any + +Output type options: + --separator [, ] => separator for multiple entries on 1 line + using --separator also sets --nomultiline if --separator is not [, ] + --multiline => print 1 entry per line + +Other options: + --pattern-depth => Number of pattern directory traversals (default: 0 (all)) + --keywords => scan patch for keywords (default: $keywords) + --sections => print all of the subsystem sections with pattern matches + --mailmap => use .mailmap file (default: $email_use_mailmap) + --version => show version + --help => show this help information + +Default options: + [--email --nogit --git-fallback --m --n --l --multiline -pattern-depth=0 + --remove-duplicates --rolestats] + +Notes: + Using "-f directory" may give unexpected results: + Used with "--git", git signators for _all_ files in and below + directory are examined as git recurses directories. + Any specified X: (exclude) pattern matches are _not_ ignored. + Used with "--nogit", directory is used as a pattern match, + no individual file within the directory or subdirectory + is matched. + Used with "--git-blame", does not iterate all files in directory + Using "--git-blame" is slow and may add old committers and authors + that are no longer active maintainers to the output. + Using "--roles" or "--rolestats" with git send-email --cc-cmd or any + other automated tools that expect only ["name"] <email address> + may not work because of additional output after <email address>. + Using "--rolestats" and "--git-blame" shows the #/total=% commits, + not the percentage of the entire file authored. # of commits is + not a good measure of amount of code authored. 1 major commit may + contain a thousand lines, 5 trivial commits may modify a single line. + If git is not installed, but mercurial (hg) is installed and an .hg + repository exists, the following options apply to mercurial: + --git, + --git-min-signatures, --git-max-maintainers, --git-min-percent, and + --git-blame + Use --hg-since not --git-since to control date selection + File ".get_maintainer.conf", if it exists in the linux kernel source root + directory, can change whatever get_maintainer defaults are desired. + Entries in this file can be any command line argument. + This file is prepended to any additional command line arguments. + Multiple lines and # comments are allowed. +EOT +} + +sub top_of_kernel_tree { + my ($lk_path) = @_; + + if ($lk_path ne "" && substr($lk_path,length($lk_path)-1,1) ne "/") { + $lk_path .= "/"; + } + if ( (-f "${lk_path}COPYING") + && (-f "${lk_path}CREDITS") + && (-f "${lk_path}Kbuild") + && (-f "${lk_path}MAINTAINERS") + && (-f "${lk_path}Makefile") + && (-f "${lk_path}README") + && (-d "${lk_path}Documentation") + && (-d "${lk_path}arch") + && (-d "${lk_path}include") + && (-d "${lk_path}drivers") + && (-d "${lk_path}fs") + && (-d "${lk_path}init") + && (-d "${lk_path}ipc") + && (-d "${lk_path}kernel") + && (-d "${lk_path}lib") + && (-d "${lk_path}scripts")) { + return 1; + } + return 0; +} + +sub parse_email { + my ($formatted_email) = @_; + + my $name = ""; + my $address = ""; + + if ($formatted_email =~ /^([^<]+)<(.+@.*)>.*$/) { + $name = $1; + $address = $2; + } elsif ($formatted_email =~ /^\s*<(.+@\S*)>.*$/) { + $address = $1; + } elsif ($formatted_email =~ /^(.+@\S*).*$/) { + $address = $1; + } + + $name =~ s/^\s+|\s+$//g; + $name =~ s/^"|"$//g; + $address =~ s/^\s+|\s+$//g; + + if ($name =~ /[^\w -]/i) { ##has "must quote" chars + $name =~ s/(?<!\)"/\"/g; ##escape quotes + $name = ""$name""; + } + + return ($name, $address); +} + +sub format_email { + my ($name, $address, $usename) = @_; + + my $formatted_email; + + $name =~ s/^\s+|\s+$//g; + $name =~ s/^"|"$//g; + $address =~ s/^\s+|\s+$//g; + + if ($name =~ /[^\w -]/i) { ##has "must quote" chars + $name =~ s/(?<!\)"/\"/g; ##escape quotes + $name = ""$name""; + } + + if ($usename) { + if ("$name" eq "") { + $formatted_email = "$address"; + } else { + $formatted_email = "$name <$address>"; + } + } else { + $formatted_email = $address; + } + + return $formatted_email; +} + +sub find_first_section { + my $index = 0; + + while ($index < @typevalue) { + my $tv = $typevalue[$index]; + if (($tv =~ m/^(\C):\s*(.*)/)) { + last; + } + $index++; + } + + return $index; +} + +sub find_starting_index { + my ($index) = @_; + + while ($index > 0) { + my $tv = $typevalue[$index]; + if (!($tv =~ m/^(\C):\s*(.*)/)) { + last; + } + $index--; + } + + return $index; +} + +sub find_ending_index { + my ($index) = @_; + + while ($index < @typevalue) { + my $tv = $typevalue[$index]; + if (!($tv =~ m/^(\C):\s*(.*)/)) { + last; + } + $index++; + } + + return $index; +} + +sub get_maintainer_role { + my ($index) = @_; + + my $i; + my $start = find_starting_index($index); + my $end = find_ending_index($index); + + my $role = "unknown"; + my $subsystem = $typevalue[$start]; + if (length($subsystem) > 20) { + $subsystem = substr($subsystem, 0, 17); + $subsystem =~ s/\s*$//; + $subsystem = $subsystem . "..."; + } + + for ($i = $start + 1; $i < $end; $i++) { + my $tv = $typevalue[$i]; + if ($tv =~ m/^(\C):\s*(.*)/) { + my $ptype = $1; + my $pvalue = $2; + if ($ptype eq "S") { + $role = $pvalue; + } + } + } + + $role = lc($role); + if ($role eq "supported") { + $role = "supporter"; + } elsif ($role eq "maintained") { + $role = "maintainer"; + } elsif ($role eq "odd fixes") { + $role = "odd fixer"; + } elsif ($role eq "orphan") { + $role = "orphan minder"; + } elsif ($role eq "obsolete") { + $role = "obsolete minder"; + } elsif ($role eq "buried alive in reporters") { + $role = "chief penguin"; + } + + return $role . ":" . $subsystem; +} + +sub get_list_role { + my ($index) = @_; + + my $i; + my $start = find_starting_index($index); + my $end = find_ending_index($index); + + my $subsystem = $typevalue[$start]; + if (length($subsystem) > 20) { + $subsystem = substr($subsystem, 0, 17); + $subsystem =~ s/\s*$//; + $subsystem = $subsystem . "..."; + } + + if ($subsystem eq "THE REST") { + $subsystem = ""; + } + + return $subsystem; +} + +sub add_categories { + my ($index) = @_; + + my $i; + my $start = find_starting_index($index); + my $end = find_ending_index($index); + + push(@subsystem, $typevalue[$start]); + + for ($i = $start + 1; $i < $end; $i++) { + my $tv = $typevalue[$i]; + if ($tv =~ m/^(\C):\s*(.*)/) { + my $ptype = $1; + my $pvalue = $2; + if ($ptype eq "L") { + my $list_address = $pvalue; + my $list_additional = ""; + my $list_role = get_list_role($i); + + if ($list_role ne "") { + $list_role = ":" . $list_role; + } + if ($list_address =~ m/([^\s]+)\s+(.*)$/) { + $list_address = $1; + $list_additional = $2; + } + if ($list_additional =~ m/subscribers-only/) { + if ($email_subscriber_list) { + if (!$hash_list_to{lc($list_address)}) { + $hash_list_to{lc($list_address)} = 1; + push(@list_to, [$list_address, + "subscriber list${list_role}"]); + } + } + } else { + if ($email_list) { + if (!$hash_list_to{lc($list_address)}) { + $hash_list_to{lc($list_address)} = 1; + if ($list_additional =~ m/moderated/) { + push(@list_to, [$list_address, + "moderated list${list_role}"]); + } else { + push(@list_to, [$list_address, + "open list${list_role}"]); + } + } + } + } + } elsif ($ptype eq "M") { + my ($name, $address) = parse_email($pvalue); + if ($name eq "") { + if ($i > 0) { + my $tv = $typevalue[$i - 1]; + if ($tv =~ m/^(\C):\s*(.*)/) { + if ($1 eq "P") { + $name = $2; + $pvalue = format_email($name, $address, $email_usename); + } + } + } + } + if ($email_maintainer) { + my $role = get_maintainer_role($i); + push_email_addresses($pvalue, $role); + } + } elsif ($ptype eq "T") { + push(@scm, $pvalue); + } elsif ($ptype eq "W") { + push(@web, $pvalue); + } elsif ($ptype eq "S") { + push(@status, $pvalue); + } + } + } +} + +sub email_inuse { + my ($name, $address) = @_; + + return 1 if (($name eq "") && ($address eq "")); + return 1 if (($name ne "") && exists($email_hash_name{lc($name)})); + return 1 if (($address ne "") && exists($email_hash_address{lc($address)})); + + return 0; +} + +sub push_email_address { + my ($line, $role) = @_; + + my ($name, $address) = parse_email($line); + + if ($address eq "") { + return 0; + } + + if (!$email_remove_duplicates) { + push(@email_to, [format_email($name, $address, $email_usename), $role]); + } elsif (!email_inuse($name, $address)) { + push(@email_to, [format_email($name, $address, $email_usename), $role]); + $email_hash_name{lc($name)}++ if ($name ne ""); + $email_hash_address{lc($address)}++; + } + + return 1; +} + +sub push_email_addresses { + my ($address, $role) = @_; + + my @address_list = (); + + if (rfc822_valid($address)) { + push_email_address($address, $role); + } elsif (@address_list = rfc822_validlist($address)) { + my $array_count = shift(@address_list); + while (my $entry = shift(@address_list)) { + push_email_address($entry, $role); + } + } else { + if (!push_email_address($address, $role)) { + warn("Invalid MAINTAINERS address: '" . $address . "'\n"); + } + } +} + +sub add_role { + my ($line, $role) = @_; + + my ($name, $address) = parse_email($line); + my $email = format_email($name, $address, $email_usename); + + foreach my $entry (@email_to) { + if ($email_remove_duplicates) { + my ($entry_name, $entry_address) = parse_email($entry->[0]); + if (($name eq $entry_name || $address eq $entry_address) + && ($role eq "" || !($entry->[1] =~ m/$role/)) + ) { + if ($entry->[1] eq "") { + $entry->[1] = "$role"; + } else { + $entry->[1] = "$entry->[1],$role"; + } + } + } else { + if ($email eq $entry->[0] + && ($role eq "" || !($entry->[1] =~ m/$role/)) + ) { + if ($entry->[1] eq "") { + $entry->[1] = "$role"; + } else { + $entry->[1] = "$entry->[1],$role"; + } + } + } + } +} + +sub which { + my ($bin) = @_; + + foreach my $path (split(/:/, $ENV{PATH})) { + if (-e "$path/$bin") { + return "$path/$bin"; + } + } + + return ""; +} + +sub which_conf { + my ($conf) = @_; + + foreach my $path (split(/:/, ".:$ENV{HOME}:.scripts")) { + if (-e "$path/$conf") { + return "$path/$conf"; + } + } + + return ""; +} + +sub mailmap_email { + my ($line) = @_; + + my ($name, $address) = parse_email($line); + my $email = format_email($name, $address, 1); + my $real_name = $name; + my $real_address = $address; + + if (exists $mailmap->{names}->{$email} || + exists $mailmap->{addresses}->{$email}) { + if (exists $mailmap->{names}->{$email}) { + $real_name = $mailmap->{names}->{$email}; + } + if (exists $mailmap->{addresses}->{$email}) { + $real_address = $mailmap->{addresses}->{$email}; + } + } else { + if (exists $mailmap->{names}->{$address}) { + $real_name = $mailmap->{names}->{$address}; + } + if (exists $mailmap->{addresses}->{$address}) { + $real_address = $mailmap->{addresses}->{$address}; + } + } + return format_email($real_name, $real_address, 1); +} + +sub mailmap { + my (@addresses) = @_; + + my @mapped_emails = (); + foreach my $line (@addresses) { + push(@mapped_emails, mailmap_email($line)); + } + merge_by_realname(@mapped_emails) if ($email_use_mailmap); + return @mapped_emails; +} + +sub merge_by_realname { + my %address_map; + my (@emails) = @_; + + foreach my $email (@emails) { + my ($name, $address) = parse_email($email); + if (exists $address_map{$name}) { + $address = $address_map{$name}; + $email = format_email($name, $address, 1); + } else { + $address_map{$name} = $address; + } + } +} + +sub git_execute_cmd { + my ($cmd) = @_; + my @lines = (); + + my $output = `$cmd`; + $output =~ s/^\s*//gm; + @lines = split("\n", $output); + + return @lines; +} + +sub hg_execute_cmd { + my ($cmd) = @_; + my @lines = (); + + my $output = `$cmd`; + @lines = split("\n", $output); + + return @lines; +} + +sub extract_formatted_signatures { + my (@signature_lines) = @_; + + my @type = @signature_lines; + + s/\s*(.*):.*/$1/ for (@type); + + # cut -f2- -d":" + s/\s*.*:\s*(.+)\s*/$1/ for (@signature_lines); + +## Reformat email addresses (with names) to avoid badly written signatures + + foreach my $signer (@signature_lines) { + $signer = deduplicate_email($signer); + } + + return (@type, @signature_lines); +} + +sub vcs_find_signers { + my ($cmd, $file) = @_; + my $commits; + my @lines = (); + my @signatures = (); + my @authors = (); + my @stats = (); + + @lines = &{$VCS_cmds{"execute_cmd"}}($cmd); + + my $pattern = $VCS_cmds{"commit_pattern"}; + my $author_pattern = $VCS_cmds{"author_pattern"}; + my $stat_pattern = $VCS_cmds{"stat_pattern"}; + + $stat_pattern =~ s/($\w+)/$1/eeg; #interpolate $stat_pattern + + $commits = grep(/$pattern/, @lines); # of commits + + @authors = grep(/$author_pattern/, @lines); + @signatures = grep(/^[ \t]*${signature_pattern}.*@.*$/, @lines); + @stats = grep(/$stat_pattern/, @lines); + +# print("stats: <@stats>\n"); + + return (0, @signatures, @authors, @stats) if !@signatures; + + save_commits_by_author(@lines) if ($interactive); + save_commits_by_signer(@lines) if ($interactive); + + if (!$email_git_penguin_chiefs) { + @signatures = grep(!/${penguin_chiefs}/i, @signatures); + } + + my ($author_ref, $authors_ref) = extract_formatted_signatures(@authors); + my ($types_ref, $signers_ref) = extract_formatted_signatures(@signatures); + + return ($commits, $signers_ref, $authors_ref, @stats); +} + +sub vcs_find_author { + my ($cmd) = @_; + my @lines = (); + + @lines = &{$VCS_cmds{"execute_cmd"}}($cmd); + + if (!$email_git_penguin_chiefs) { + @lines = grep(!/${penguin_chiefs}/i, @lines); + } + + return @lines if !@lines; + + my @authors = (); + foreach my $line (@lines) { + if ($line =~ m/$VCS_cmds{"author_pattern"}/) { + my $author = $1; + my ($name, $address) = parse_email($author); + $author = format_email($name, $address, 1); + push(@authors, $author); + } + } + + save_commits_by_author(@lines) if ($interactive); + save_commits_by_signer(@lines) if ($interactive); + + return @authors; +} + +sub vcs_save_commits { + my ($cmd) = @_; + my @lines = (); + my @commits = (); + + @lines = &{$VCS_cmds{"execute_cmd"}}($cmd); + + foreach my $line (@lines) { + if ($line =~ m/$VCS_cmds{"blame_commit_pattern"}/) { + push(@commits, $1); + } + } + + return @commits; +} + +sub vcs_blame { + my ($file) = @_; + my $cmd; + my @commits = (); + + return @commits if (!(-f $file)); + + if (@range && $VCS_cmds{"blame_range_cmd"} eq "") { + my @all_commits = (); + + $cmd = $VCS_cmds{"blame_file_cmd"}; + $cmd =~ s/($\w+)/$1/eeg; #interpolate $cmd + @all_commits = vcs_save_commits($cmd); + + foreach my $file_range_diff (@range) { + next if (!($file_range_diff =~ m/(.+):(.+):(.+)/)); + my $diff_file = $1; + my $diff_start = $2; + my $diff_length = $3; + next if ("$file" ne "$diff_file"); + for (my $i = $diff_start; $i < $diff_start + $diff_length; $i++) { + push(@commits, $all_commits[$i]); + } + } + } elsif (@range) { + foreach my $file_range_diff (@range) { + next if (!($file_range_diff =~ m/(.+):(.+):(.+)/)); + my $diff_file = $1; + my $diff_start = $2; + my $diff_length = $3; + next if ("$file" ne "$diff_file"); + $cmd = $VCS_cmds{"blame_range_cmd"}; + $cmd =~ s/($\w+)/$1/eeg; #interpolate $cmd + push(@commits, vcs_save_commits($cmd)); + } + } else { + $cmd = $VCS_cmds{"blame_file_cmd"}; + $cmd =~ s/($\w+)/$1/eeg; #interpolate $cmd + @commits = vcs_save_commits($cmd); + } + + foreach my $commit (@commits) { + $commit =~ s/^^//g; + } + + return @commits; +} + +my $printed_novcs = 0; +sub vcs_exists { + %VCS_cmds = %VCS_cmds_git; + return 1 if eval $VCS_cmds{"available"}; + %VCS_cmds = %VCS_cmds_hg; + return 2 if eval $VCS_cmds{"available"}; + %VCS_cmds = (); + if (!$printed_novcs) { + warn("$P: No supported VCS found. Add --nogit to options?\n"); + warn("Using a git repository produces better results.\n"); + warn("Try Linus Torvalds' latest git repository using:\n"); + warn("git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\n"); + $printed_novcs = 1; + } + return 0; +} + +sub vcs_is_git { + vcs_exists(); + return $vcs_used == 1; +} + +sub vcs_is_hg { + return $vcs_used == 2; +} + +sub interactive_get_maintainers { + my ($list_ref) = @_; + my @list = @$list_ref; + + vcs_exists(); + + my %selected; + my %authored; + my %signed; + my $count = 0; + my $maintained = 0; + foreach my $entry (@list) { + $maintained = 1 if ($entry->[1] =~ /^(maintainer|supporter)/i); + $selected{$count} = 1; + $authored{$count} = 0; + $signed{$count} = 0; + $count++; + } + + #menu loop + my $done = 0; + my $print_options = 0; + my $redraw = 1; + while (!$done) { + $count = 0; + if ($redraw) { + printf STDERR "\n%1s %2s %-65s", + "*", "#", "email/list and role:stats"; + if ($email_git || + ($email_git_fallback && !$maintained) || + $email_git_blame) { + print STDERR "auth sign"; + } + print STDERR "\n"; + foreach my $entry (@list) { + my $email = $entry->[0]; + my $role = $entry->[1]; + my $sel = ""; + $sel = "*" if ($selected{$count}); + my $commit_author = $commit_author_hash{$email}; + my $commit_signer = $commit_signer_hash{$email}; + my $authored = 0; + my $signed = 0; + $authored++ for (@{$commit_author}); + $signed++ for (@{$commit_signer}); + printf STDERR "%1s %2d %-65s", $sel, $count + 1, $email; + printf STDERR "%4d %4d", $authored, $signed + if ($authored > 0 || $signed > 0); + printf STDERR "\n %s\n", $role; + if ($authored{$count}) { + my $commit_author = $commit_author_hash{$email}; + foreach my $ref (@{$commit_author}) { + print STDERR " Author: @{$ref}[1]\n"; + } + } + if ($signed{$count}) { + my $commit_signer = $commit_signer_hash{$email}; + foreach my $ref (@{$commit_signer}) { + print STDERR " @{$ref}[2]: @{$ref}[1]\n"; + } + } + + $count++; + } + } + my $date_ref = $email_git_since; + $date_ref = $email_hg_since if (vcs_is_hg()); + if ($print_options) { + $print_options = 0; + if (vcs_exists()) { + print STDERR <<EOT + +Version Control options: +g use git history [$email_git] +gf use git-fallback [$email_git_fallback] +b use git blame [$email_git_blame] +bs use blame signatures [$email_git_blame_signatures] +c# minimum commits [$email_git_min_signatures] +%# min percent [$email_git_min_percent] +d# history to use [$$date_ref] +x# max maintainers [$email_git_max_maintainers] +t all signature types [$email_git_all_signature_types] +m use .mailmap [$email_use_mailmap] +EOT + } + print STDERR <<EOT + +Additional options: +0 toggle all +tm toggle maintainers +tg toggle git entries +tl toggle open list entries +ts toggle subscriber list entries +f emails in file [$file_emails] +k keywords in file [$keywords] +r remove duplicates [$email_remove_duplicates] +p# pattern match depth [$pattern_depth] +EOT + } + print STDERR +"\n#(toggle), A#(author), S#(signed) *(all), ^(none), O(options), Y(approve): "; + + my $input = <STDIN>; + chomp($input); + + $redraw = 1; + my $rerun = 0; + my @wish = split(/[, ]+/, $input); + foreach my $nr (@wish) { + $nr = lc($nr); + my $sel = substr($nr, 0, 1); + my $str = substr($nr, 1); + my $val = 0; + $val = $1 if $str =~ /^(\d+)$/; + + if ($sel eq "y") { + $interactive = 0; + $done = 1; + $output_rolestats = 0; + $output_roles = 0; + last; + } elsif ($nr =~ /^\d+$/ && $nr > 0 && $nr <= $count) { + $selected{$nr - 1} = !$selected{$nr - 1}; + } elsif ($sel eq "*" || $sel eq '^') { + my $toggle = 0; + $toggle = 1 if ($sel eq '*'); + for (my $i = 0; $i < $count; $i++) { + $selected{$i} = $toggle; + } + } elsif ($sel eq "0") { + for (my $i = 0; $i < $count; $i++) { + $selected{$i} = !$selected{$i}; + } + } elsif ($sel eq "t") { + if (lc($str) eq "m") { + for (my $i = 0; $i < $count; $i++) { + $selected{$i} = !$selected{$i} + if ($list[$i]->[1] =~ /^(maintainer|supporter)/i); + } + } elsif (lc($str) eq "g") { + for (my $i = 0; $i < $count; $i++) { + $selected{$i} = !$selected{$i} + if ($list[$i]->[1] =~ /^(author|commit|signer)/i); + } + } elsif (lc($str) eq "l") { + for (my $i = 0; $i < $count; $i++) { + $selected{$i} = !$selected{$i} + if ($list[$i]->[1] =~ /^(open list)/i); + } + } elsif (lc($str) eq "s") { + for (my $i = 0; $i < $count; $i++) { + $selected{$i} = !$selected{$i} + if ($list[$i]->[1] =~ /^(subscriber list)/i); + } + } + } elsif ($sel eq "a") { + if ($val > 0 && $val <= $count) { + $authored{$val - 1} = !$authored{$val - 1}; + } elsif ($str eq '*' || $str eq '^') { + my $toggle = 0; + $toggle = 1 if ($str eq '*'); + for (my $i = 0; $i < $count; $i++) { + $authored{$i} = $toggle; + } + } + } elsif ($sel eq "s") { + if ($val > 0 && $val <= $count) { + $signed{$val - 1} = !$signed{$val - 1}; + } elsif ($str eq '*' || $str eq '^') { + my $toggle = 0; + $toggle = 1 if ($str eq '*'); + for (my $i = 0; $i < $count; $i++) { + $signed{$i} = $toggle; + } + } + } elsif ($sel eq "o") { + $print_options = 1; + $redraw = 1; + } elsif ($sel eq "g") { + if ($str eq "f") { + bool_invert($email_git_fallback); + } else { + bool_invert($email_git); + } + $rerun = 1; + } elsif ($sel eq "b") { + if ($str eq "s") { + bool_invert($email_git_blame_signatures); + } else { + bool_invert($email_git_blame); + } + $rerun = 1; + } elsif ($sel eq "c") { + if ($val > 0) { + $email_git_min_signatures = $val; + $rerun = 1; + } + } elsif ($sel eq "x") { + if ($val > 0) { + $email_git_max_maintainers = $val; + $rerun = 1; + } + } elsif ($sel eq "%") { + if ($str ne "" && $val >= 0) { + $email_git_min_percent = $val; + $rerun = 1; + } + } elsif ($sel eq "d") { + if (vcs_is_git()) { + $email_git_since = $str; + } elsif (vcs_is_hg()) { + $email_hg_since = $str; + } + $rerun = 1; + } elsif ($sel eq "t") { + bool_invert($email_git_all_signature_types); + $rerun = 1; + } elsif ($sel eq "f") { + bool_invert($file_emails); + $rerun = 1; + } elsif ($sel eq "r") { + bool_invert($email_remove_duplicates); + $rerun = 1; + } elsif ($sel eq "m") { + bool_invert($email_use_mailmap); + read_mailmap(); + $rerun = 1; + } elsif ($sel eq "k") { + bool_invert($keywords); + $rerun = 1; + } elsif ($sel eq "p") { + if ($str ne "" && $val >= 0) { + $pattern_depth = $val; + $rerun = 1; + } + } elsif ($sel eq "h" || $sel eq "?") { + print STDERR <<EOT + +Interactive mode allows you to select the various maintainers, submitters, +commit signers and mailing lists that could be CC'd on a patch. + +Any *'d entry is selected. + +If you have git or hg installed, you can choose to summarize the commit +history of files in the patch. Also, each line of the current file can +be matched to its commit author and that commits signers with blame. + +Various knobs exist to control the length of time for active commit +tracking, the maximum number of commit authors and signers to add, +and such. + +Enter selections at the prompt until you are satisfied that the selected +maintainers are appropriate. You may enter multiple selections separated +by either commas or spaces. + +EOT + } else { + print STDERR "invalid option: '$nr'\n"; + $redraw = 0; + } + } + if ($rerun) { + print STDERR "git-blame can be very slow, please have patience..." + if ($email_git_blame); + goto &get_maintainers; + } + } + + #drop not selected entries + $count = 0; + my @new_emailto = (); + foreach my $entry (@list) { + if ($selected{$count}) { + push(@new_emailto, $list[$count]); + } + $count++; + } + return @new_emailto; +} + +sub bool_invert { + my ($bool_ref) = @_; + + if ($$bool_ref) { + $$bool_ref = 0; + } else { + $$bool_ref = 1; + } +} + +sub deduplicate_email { + my ($email) = @_; + + my $matched = 0; + my ($name, $address) = parse_email($email); + $email = format_email($name, $address, 1); + $email = mailmap_email($email); + + return $email if (!$email_remove_duplicates); + + ($name, $address) = parse_email($email); + + if ($name ne "" && $deduplicate_name_hash{lc($name)}) { + $name = $deduplicate_name_hash{lc($name)}->[0]; + $address = $deduplicate_name_hash{lc($name)}->[1]; + $matched = 1; + } elsif ($deduplicate_address_hash{lc($address)}) { + $name = $deduplicate_address_hash{lc($address)}->[0]; + $address = $deduplicate_address_hash{lc($address)}->[1]; + $matched = 1; + } + if (!$matched) { + $deduplicate_name_hash{lc($name)} = [ $name, $address ]; + $deduplicate_address_hash{lc($address)} = [ $name, $address ]; + } + $email = format_email($name, $address, 1); + $email = mailmap_email($email); + return $email; +} + +sub save_commits_by_author { + my (@lines) = @_; + + my @authors = (); + my @commits = (); + my @subjects = (); + + foreach my $line (@lines) { + if ($line =~ m/$VCS_cmds{"author_pattern"}/) { + my $author = $1; + $author = deduplicate_email($author); + push(@authors, $author); + } + push(@commits, $1) if ($line =~ m/$VCS_cmds{"commit_pattern"}/); + push(@subjects, $1) if ($line =~ m/$VCS_cmds{"subject_pattern"}/); + } + + for (my $i = 0; $i < @authors; $i++) { + my $exists = 0; + foreach my $ref(@{$commit_author_hash{$authors[$i]}}) { + if (@{$ref}[0] eq $commits[$i] && + @{$ref}[1] eq $subjects[$i]) { + $exists = 1; + last; + } + } + if (!$exists) { + push(@{$commit_author_hash{$authors[$i]}}, + [ ($commits[$i], $subjects[$i]) ]); + } + } +} + +sub save_commits_by_signer { + my (@lines) = @_; + + my $commit = ""; + my $subject = ""; + + foreach my $line (@lines) { + $commit = $1 if ($line =~ m/$VCS_cmds{"commit_pattern"}/); + $subject = $1 if ($line =~ m/$VCS_cmds{"subject_pattern"}/); + if ($line =~ /^[ \t]*${signature_pattern}.*@.*$/) { + my @signatures = ($line); + my ($types_ref, $signers_ref) = extract_formatted_signatures(@signatures); + my @types = @$types_ref; + my @signers = @$signers_ref; + + my $type = $types[0]; + my $signer = $signers[0]; + + $signer = deduplicate_email($signer); + + my $exists = 0; + foreach my $ref(@{$commit_signer_hash{$signer}}) { + if (@{$ref}[0] eq $commit && + @{$ref}[1] eq $subject && + @{$ref}[2] eq $type) { + $exists = 1; + last; + } + } + if (!$exists) { + push(@{$commit_signer_hash{$signer}}, + [ ($commit, $subject, $type) ]); + } + } + } +} + +sub vcs_assign { + my ($role, $divisor, @lines) = @_; + + my %hash; + my $count = 0; + + return if (@lines <= 0); + + if ($divisor <= 0) { + warn("Bad divisor in " . (caller(0))[3] . ": $divisor\n"); + $divisor = 1; + } + + @lines = mailmap(@lines); + + return if (@lines <= 0); + + @lines = sort(@lines); + + # uniq -c + $hash{$_}++ for @lines; + + # sort -rn + foreach my $line (sort {$hash{$b} <=> $hash{$a}} keys %hash) { + my $sign_offs = $hash{$line}; + my $percent = $sign_offs * 100 / $divisor; + + $percent = 100 if ($percent > 100); + $count++; + last if ($sign_offs < $email_git_min_signatures || + $count > $email_git_max_maintainers || + $percent < $email_git_min_percent); + push_email_address($line, ''); + if ($output_rolestats) { + my $fmt_percent = sprintf("%.0f", $percent); + add_role($line, "$role:$sign_offs/$divisor=$fmt_percent%"); + } else { + add_role($line, $role); + } + } +} + +sub vcs_file_signoffs { + my ($file) = @_; + + my $authors_ref; + my $signers_ref; + my $stats_ref; + my @authors = (); + my @signers = (); + my @stats = (); + my $commits; + + $vcs_used = vcs_exists(); + return if (!$vcs_used); + + my $cmd = $VCS_cmds{"find_signers_cmd"}; + $cmd =~ s/($\w+)/$1/eeg; # interpolate $cmd + + ($commits, $signers_ref, $authors_ref, $stats_ref) = vcs_find_signers($cmd, $file); + + @signers = @{$signers_ref} if defined $signers_ref; + @authors = @{$authors_ref} if defined $authors_ref; + @stats = @{$stats_ref} if defined $stats_ref; + +# print("commits: <$commits>\nsigners:<@signers>\nauthors: <@authors>\nstats: <@stats>\n"); + + foreach my $signer (@signers) { + $signer = deduplicate_email($signer); + } + + vcs_assign("commit_signer", $commits, @signers); + vcs_assign("authored", $commits, @authors); + if ($#authors == $#stats) { + my $stat_pattern = $VCS_cmds{"stat_pattern"}; + $stat_pattern =~ s/($\w+)/$1/eeg; #interpolate $stat_pattern + + my $added = 0; + my $deleted = 0; + for (my $i = 0; $i <= $#stats; $i++) { + if ($stats[$i] =~ /$stat_pattern/) { + $added += $1; + $deleted += $2; + } + } + my @tmp_authors = uniq(@authors); + foreach my $author (@tmp_authors) { + $author = deduplicate_email($author); + } + @tmp_authors = uniq(@tmp_authors); + my @list_added = (); + my @list_deleted = (); + foreach my $author (@tmp_authors) { + my $auth_added = 0; + my $auth_deleted = 0; + for (my $i = 0; $i <= $#stats; $i++) { + if ($author eq deduplicate_email($authors[$i]) && + $stats[$i] =~ /$stat_pattern/) { + $auth_added += $1; + $auth_deleted += $2; + } + } + for (my $i = 0; $i < $auth_added; $i++) { + push(@list_added, $author); + } + for (my $i = 0; $i < $auth_deleted; $i++) { + push(@list_deleted, $author); + } + } + vcs_assign("added_lines", $added, @list_added); + vcs_assign("removed_lines", $deleted, @list_deleted); + } +} + +sub vcs_file_blame { + my ($file) = @_; + + my @signers = (); + my @all_commits = (); + my @commits = (); + my $total_commits; + my $total_lines; + + $vcs_used = vcs_exists(); + return if (!$vcs_used); + + @all_commits = vcs_blame($file); + @commits = uniq(@all_commits); + $total_commits = @commits; + $total_lines = @all_commits; + + if ($email_git_blame_signatures) { + if (vcs_is_hg()) { + my $commit_count; + my $commit_authors_ref; + my $commit_signers_ref; + my $stats_ref; + my @commit_authors = (); + my @commit_signers = (); + my $commit = join(" -r ", @commits); + my $cmd; + + $cmd = $VCS_cmds{"find_commit_signers_cmd"}; + $cmd =~ s/($\w+)/$1/eeg; #substitute variables in $cmd + + ($commit_count, $commit_signers_ref, $commit_authors_ref, $stats_ref) = vcs_find_signers($cmd, $file); + @commit_authors = @{$commit_authors_ref} if defined $commit_authors_ref; + @commit_signers = @{$commit_signers_ref} if defined $commit_signers_ref; + + push(@signers, @commit_signers); + } else { + foreach my $commit (@commits) { + my $commit_count; + my $commit_authors_ref; + my $commit_signers_ref; + my $stats_ref; + my @commit_authors = (); + my @commit_signers = (); + my $cmd; + + $cmd = $VCS_cmds{"find_commit_signers_cmd"}; + $cmd =~ s/($\w+)/$1/eeg; #substitute variables in $cmd + + ($commit_count, $commit_signers_ref, $commit_authors_ref, $stats_ref) = vcs_find_signers($cmd, $file); + @commit_authors = @{$commit_authors_ref} if defined $commit_authors_ref; + @commit_signers = @{$commit_signers_ref} if defined $commit_signers_ref; + + push(@signers, @commit_signers); + } + } + } + + if ($from_filename) { + if ($output_rolestats) { + my @blame_signers; + if (vcs_is_hg()) {{ # Double brace for last exit + my $commit_count; + my @commit_signers = (); + @commits = uniq(@commits); + @commits = sort(@commits); + my $commit = join(" -r ", @commits); + my $cmd; + + $cmd = $VCS_cmds{"find_commit_author_cmd"}; + $cmd =~ s/($\w+)/$1/eeg; #substitute variables in $cmd + + my @lines = (); + + @lines = &{$VCS_cmds{"execute_cmd"}}($cmd); + + if (!$email_git_penguin_chiefs) { + @lines = grep(!/${penguin_chiefs}/i, @lines); + } + + last if !@lines; + + my @authors = (); + foreach my $line (@lines) { + if ($line =~ m/$VCS_cmds{"author_pattern"}/) { + my $author = $1; + $author = deduplicate_email($author); + push(@authors, $author); + } + } + + save_commits_by_author(@lines) if ($interactive); + save_commits_by_signer(@lines) if ($interactive); + + push(@signers, @authors); + }} + else { + foreach my $commit (@commits) { + my $i; + my $cmd = $VCS_cmds{"find_commit_author_cmd"}; + $cmd =~ s/($\w+)/$1/eeg; #interpolate $cmd + my @author = vcs_find_author($cmd); + next if !@author; + + my $formatted_author = deduplicate_email($author[0]); + + my $count = grep(/$commit/, @all_commits); + for ($i = 0; $i < $count ; $i++) { + push(@blame_signers, $formatted_author); + } + } + } + if (@blame_signers) { + vcs_assign("authored lines", $total_lines, @blame_signers); + } + } + foreach my $signer (@signers) { + $signer = deduplicate_email($signer); + } + vcs_assign("commits", $total_commits, @signers); + } else { + foreach my $signer (@signers) { + $signer = deduplicate_email($signer); + } + vcs_assign("modified commits", $total_commits, @signers); + } +} + +sub uniq { + my (@parms) = @_; + + my %saw; + @parms = grep(!$saw{$_}++, @parms); + return @parms; +} + +sub sort_and_uniq { + my (@parms) = @_; + + my %saw; + @parms = sort @parms; + @parms = grep(!$saw{$_}++, @parms); + return @parms; +} + +sub clean_file_emails { + my (@file_emails) = @_; + my @fmt_emails = (); + + foreach my $email (@file_emails) { + $email =~ s/[(<{]{0,1}([A-Za-z0-9_.+-]+@[A-Za-z0-9.-]+)[)>}]{0,1}/<$1>/g; + my ($name, $address) = parse_email($email); + if ($name eq '"[,.]"') { + $name = ""; + } + + my @nw = split(/[^A-Za-zÀ-ÿ',.+-]/, $name); + if (@nw > 2) { + my $first = $nw[@nw - 3]; + my $middle = $nw[@nw - 2]; + my $last = $nw[@nw - 1]; + + if (((length($first) == 1 && $first =~ m/[A-Za-z]/) || + (length($first) == 2 && substr($first, -1) eq ".")) || + (length($middle) == 1 || + (length($middle) == 2 && substr($middle, -1) eq "."))) { + $name = "$first $middle $last"; + } else { + $name = "$middle $last"; + } + } + + if (substr($name, -1) =~ /[,.]/) { + $name = substr($name, 0, length($name) - 1); + } elsif (substr($name, -2) =~ /[,.]"/) { + $name = substr($name, 0, length($name) - 2) . '"'; + } + + if (substr($name, 0, 1) =~ /[,.]/) { + $name = substr($name, 1, length($name) - 1); + } elsif (substr($name, 0, 2) =~ /"[,.]/) { + $name = '"' . substr($name, 2, length($name) - 2); + } + + my $fmt_email = format_email($name, $address, $email_usename); + push(@fmt_emails, $fmt_email); + } + return @fmt_emails; +} + +sub merge_email { + my @lines; + my %saw; + + for (@_) { + my ($address, $role) = @$_; + if (!$saw{$address}) { + if ($output_roles) { + push(@lines, "$address ($role)"); + } else { + push(@lines, $address); + } + $saw{$address} = 1; + } + } + + return @lines; +} + +sub output { + my (@parms) = @_; + + if ($output_multiline) { + foreach my $line (@parms) { + print("${line}\n"); + } + } else { + print(join($output_separator, @parms)); + print("\n"); + } +} + +my $rfc822re; + +sub make_rfc822re { +# Basic lexical tokens are specials, domain_literal, quoted_string, atom, and +# comment. We must allow for rfc822_lwsp (or comments) after each of these. +# This regexp will only work on addresses which have had comments stripped +# and replaced with rfc822_lwsp. + + my $specials = '()<>@,;:\\".\[\]'; + my $controls = '\000-\037\177'; + + my $dtext = "[^\[\]\r\\]"; + my $domain_literal = "\[(?:$dtext|\\.)*\]$rfc822_lwsp*"; + + my $quoted_string = ""(?:[^\"\r\\]|\\.|$rfc822_lwsp)*"$rfc822_lwsp*"; + +# Use zero-width assertion to spot the limit of an atom. A simple +# $rfc822_lwsp* causes the regexp engine to hang occasionally. + my $atom = "[^$specials $controls]+(?:$rfc822_lwsp+|\Z|(?=[\["$specials]))"; + my $word = "(?:$atom|$quoted_string)"; + my $localpart = "$word(?:\.$rfc822_lwsp*$word)*"; + + my $sub_domain = "(?:$atom|$domain_literal)"; + my $domain = "$sub_domain(?:\.$rfc822_lwsp*$sub_domain)*"; + + my $addr_spec = "$localpart@$rfc822_lwsp*$domain"; + + my $phrase = "$word*"; + my $route = "(?:@$domain(?:,@$rfc822_lwsp*$domain)*:$rfc822_lwsp*)"; + my $route_addr = "\<$rfc822_lwsp*$route?$addr_spec\>$rfc822_lwsp*"; + my $mailbox = "(?:$addr_spec|$phrase$route_addr)"; + + my $group = "$phrase:$rfc822_lwsp*(?:$mailbox(?:,\s*$mailbox)*)?;\s*"; + my $address = "(?:$mailbox|$group)"; + + return "$rfc822_lwsp*$address"; +} + +sub rfc822_strip_comments { + my $s = shift; +# Recursively remove comments, and replace with a single space. The simpler +# regexps in the Email Addressing FAQ are imperfect - they will miss escaped +# chars in atoms, for example. + + while ($s =~ s/^((?:[^"\]|\.)* + (?:"(?:[^"\]|\.)*"(?:[^"\]|\.)*)*) + ((?:[^()\]|\.)*)/$1 /osx) {} + return $s; +} + +# valid: returns true if the parameter is an RFC822 valid address +# +sub rfc822_valid { + my $s = rfc822_strip_comments(shift); + + if (!$rfc822re) { + $rfc822re = make_rfc822re(); + } + + return $s =~ m/^$rfc822re$/so && $s =~ m/^$rfc822_char*$/; +} + +# validlist: In scalar context, returns true if the parameter is an RFC822 +# valid list of addresses. +# +# In list context, returns an empty list on failure (an invalid +# address was found); otherwise a list whose first element is the +# number of addresses found and whose remaining elements are the +# addresses. This is needed to disambiguate failure (invalid) +# from success with no addresses found, because an empty string is +# a valid list. + +sub rfc822_validlist { + my $s = rfc822_strip_comments(shift); + + if (!$rfc822re) { + $rfc822re = make_rfc822re(); + } + # * null list items are valid according to the RFC + # * the '1' business is to aid in distinguishing failure from no results + + my @r; + if ($s =~ m/^(?:$rfc822re)?(?:,(?:$rfc822re)?)*$/so && + $s =~ m/^$rfc822_char*$/) { + while ($s =~ m/(?:^|,$rfc822_lwsp*)($rfc822re)/gos) { + push(@r, $1); + } + return wantarray ? (scalar(@r), @r) : 1; + } + return wantarray ? () : 0; +}

Switch core maintainer to Tom Rini. Add support for reading MAINTAINERS and MAINTAINERS.board. Adapt directory layout for git tree detection.
Signed-off-by: Daniel Schwierzeck daniel.schwierzeck@gmail.com ---
scripts/get_maintainer.pl | 81 +++++++++++++++++++++++++++-------------------- 1 file changed, 47 insertions(+), 34 deletions(-)
diff --git a/scripts/get_maintainer.pl b/scripts/get_maintainer.pl index 4198788..8653502 100755 --- a/scripts/get_maintainer.pl +++ b/scripts/get_maintainer.pl @@ -61,9 +61,7 @@ my %commit_author_hash; my %commit_signer_hash;
my @penguin_chief = (); -push(@penguin_chief, "Linus Torvalds:torvalds@linux-foundation.org"); -#Andrew wants in on most everything - 2009/01/14 -#push(@penguin_chief, "Andrew Morton:akpm@linux-foundation.org"); +push(@penguin_chief, "Tom Rini:trini@ti.com");
my @penguin_chief_names = (); foreach my $chief (@penguin_chief) { @@ -275,34 +273,46 @@ if (!top_of_kernel_tree($lk_path)) { my @typevalue = (); my %keyword_hash;
-open (my $maint, '<', "${lk_path}MAINTAINERS") +my $maint; +open ($maint, '<', "${lk_path}MAINTAINERS.boards") + or die "$P: Can't open MAINTAINERS.boards: $!\n"; +read_maintainers($maint); +close($maint); + +open ($maint, '<', "${lk_path}MAINTAINERS") or die "$P: Can't open MAINTAINERS: $!\n"; -while (<$maint>) { - my $line = $_; - - if ($line =~ m/^(\C):\s*(.*)/) { - my $type = $1; - my $value = $2; - - ##Filename pattern matching - if ($type eq "F" || $type eq "X") { - $value =~ s@.@\.@g; ##Convert . to . - $value =~ s/*/.*/g; ##Convert * to .* - $value =~ s/?/./g; ##Convert ? to . - ##if pattern is a directory and it lacks a trailing slash, add one - if ((-d $value)) { - $value =~ s@([^/])$@$1/@; +read_maintainers($maint); +close($maint); + +sub read_maintainers { + my ($maint) = @_; + + while (<$maint>) { + my $line = $_; + + if ($line =~ m/^(\C):\s*(.*)/) { + my $type = $1; + my $value = $2; + + ##Filename pattern matching + if ($type eq "F" || $type eq "X") { + $value =~ s@.@\.@g; ##Convert . to . + $value =~ s/*/.*/g; ##Convert * to .* + $value =~ s/?/./g; ##Convert ? to . + ##if pattern is a directory and it lacks a trailing slash, add one + if ((-d $value)) { + $value =~ s@([^/])$@$1/@; + } + } elsif ($type eq "K") { + $keyword_hash{@typevalue} = $value; } - } elsif ($type eq "K") { - $keyword_hash{@typevalue} = $value; + push(@typevalue, "$type:$value"); + } elsif (!/^(\s)*$/) { + $line =~ s/\n$//g; + push(@typevalue, $line); } - push(@typevalue, "$type:$value"); - } elsif (!/^(\s)*$/) { - $line =~ s/\n$//g; - push(@typevalue, $line); } } -close($maint);
# @@ -817,22 +827,25 @@ sub top_of_kernel_tree { if ($lk_path ne "" && substr($lk_path,length($lk_path)-1,1) ne "/") { $lk_path .= "/"; } - if ( (-f "${lk_path}COPYING") - && (-f "${lk_path}CREDITS") + if ( (-f "${lk_path}CREDITS") && (-f "${lk_path}Kbuild") && (-f "${lk_path}MAINTAINERS") && (-f "${lk_path}Makefile") && (-f "${lk_path}README") - && (-d "${lk_path}Documentation") && (-d "${lk_path}arch") - && (-d "${lk_path}include") + && (-d "${lk_path}board") + && (-d "${lk_path}common") + && (-d "${lk_path}doc") && (-d "${lk_path}drivers") + && (-d "${lk_path}dts") && (-d "${lk_path}fs") - && (-d "${lk_path}init") - && (-d "${lk_path}ipc") - && (-d "${lk_path}kernel") && (-d "${lk_path}lib") - && (-d "${lk_path}scripts")) { + && (-d "${lk_path}include") + && (-d "${lk_path}net") + && (-d "${lk_path}post") + && (-d "${lk_path}scripts") + && (-d "${lk_path}spl") + && (-d "${lk_path}tools")) { return 1; } return 0;
participants (4)
-
Albert ARIBAUD
-
Daniel Schwierzeck
-
Masahiro Yamada
-
Wolfgang Denk