# To use this file, run in your u-boot tree:
#	git config sendemail.aliasesfile doc/git-mailrc
#	git config sendemail.aliasfiletype mutt
#
# Then when sending patches, you can use:
#	git send-email --to u-boot --cc i2c ...

alias uboot  u-boot@lists.denx.de
alias u-boot uboot

# Maintainer aliases.  Use the same alias here as patchwork to keep
# things simple and easy to look up/coordinate.
alias aaribaud       Albert Aribaud <albert.u.boot@aribaud.net>
alias abiessmann     Andreas Bießmann <andreas@biessmann.org>
alias abrodkin       Alexey Brodkin <alexey.brodkin@synopsys.com>
alias afleming       Andy Fleming <afleming@gmail.com>
alias ag             Anatolij Gustschin <agust@denx.de>
alias alisonwang     Alison Wang <alison.wang@freescale.com>
alias angelo_ts      Angelo Dureghello <angelo@sysam.it>
alias bmeng          Bin Meng <bmeng.cn@gmail.com>
alias danielschwierzeck Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
alias galak          Kumar Gala <galak@kernel.crashing.org>
alias hs             Heiko Schocher <hs@denx.de>
alias ijc            Ian Campbell <ijc+uboot@hellion.org.uk>
alias iwamatsu       Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
alias jaehoon        Jaehoon Chung <jh80.chung@samsung.com>
alias jagan          Jagan Teki <jagan@openedev.com>
alias jasonjin       Jason Jin <jason.jin@freescale.com>
alias jhersh         Joe Hershberger <joe.hershberger@ni.com>
alias jwrdegoede     Hans de Goede <hdegoede@redhat.com>
alias kimphill       Kim Phillips <kim.phillips@freescale.com>
alias luka           Luka Perkov <luka.perkov@sartura.hr>
alias lukma          Lukasz Majewski <l.majewski@samsung.com>
alias macpaul        Macpaul Lin <macpaul@andestech.com>
alias marex          Marek Vasut <marex@denx.de>
alias masahiro       Masahiro Yamada <yamada.masahiro@socionext.com>
alias mateusz        Mateusz Kulikowski <mateusz.kulikowski@gmail.com>
alias maxime	     Maxime Ripard <maxime.ripard@free-electrons.com>
alias monstr         Michal Simek <monstr@monstr.eu>
alias prafulla       Prafulla Wadaskar <prafulla@marvell.com>
alias bobenstein     Przemyslaw Marczak <p.marczak@samsung.com>
alias prom           Minkyu Kang <mk7.kang@samsung.com>
alias rbohmer        Remy Bohmer <linux@bohmer.net>
alias reinhardm      Reinhard Meyer <u-boot@emk-elektronik.de>
alias sbabic         Stefano Babic <sbabic@denx.de>
alias scottwood      Scott Wood <scottwood@freescale.com>
alias sjg            Simon Glass <sjg@chromium.org>
alias smcnutt        Scott McNutt <smcnutt@psyent.com>
alias sonic          Sonic Zhang <sonic.adi@gmail.com>
alias stroese        Stefan Roese <sr@denx.de>
alias trini          Tom Rini <trini@konsulko.com>
alias vapier         Mike Frysinger <vapier@gentoo.org>
alias wd             Wolfgang Denk <wd@denx.de>

# Architecture aliases
alias arch           arc, arm, avr32, bfin, m68k, microblaze, mips, nds32, nios2, powerpc, sandbox, superh, sparc, x86
alias arches         arch

alias arc            uboot, abrodkin

alias arm            uboot, aaribaud
alias at91           uboot, abiessmann
alias davinci        ti
alias imx            uboot, sbabic
alias kirkwood       uboot, prafulla, luka
alias omap           ti
alias pxa            uboot, marex
alias rmobile        uboot, iwamatsu
alias s3c            samsung
alias s5pc           samsung
alias samsung        uboot, prom
alias snapdragon     uboot, mateusz
alias socfpga        uboot, marex, Dinh Nguyen <dinguyen@opensource.altera.com>
alias sunxi          uboot, jagan, maxime
alias tegra          uboot, sjg, Tom Warren <twarren@nvidia.com>, Stephen Warren <swarren@nvidia.com>
alias tegra2         tegra
alias ti             uboot, trini
alias uniphier       uboot, masahiro
alias zynq           uboot, monstr
alias rockchip       uboot, sjg, Lin huang <hl@rock-chips.com>
alias avr32          uboot, abiessmann

alias bfin           uboot, vapier, sonic
alias blackfin       bfin

alias m68k           uboot, alisonwang, angelo_ts
alias coldfire       m68k

alias microblaze     uboot, monstr
alias mb             microblaze

alias mips           uboot, danielschwierzeck

alias nds32          uboot, macpaul

alias nios           uboot, Thomas Chou <thomas@wytron.com.tw>, smcnutt
alias nios2          nios

alias powerpc        uboot, afleming, kimphill, galak, stroese, wd
alias ppc            powerpc
alias mpc5xxx        uboot, wd
alias mpc8xx         uboot, wd
alias mpc82xx        uboot, wd
alias mpc83xx        uboot, kimphill
alias mpc85xx        uboot, afleming, galak
alias mpc86xx        uboot, afleming, galak
alias ppc4xx         uboot, stroese

alias sandbox        sjg
alias sb             sandbox

alias sparc          uboot, Francois Retief <fgretief@spaceteq.co.za>

alias superh         uboot, iwamatsu
alias sh             superh

alias x86            uboot, sjg, bmeng

# Subsystem aliases
alias dm             uboot, sjg
alias cfi            uboot, stroese
alias dfu            uboot, lukma
alias eth            uboot, jhersh
alias kerneldoc      uboot, marex
alias fdt            uboot, sjg
alias i2c            uboot, hs
alias kconfig        uboot, masahiro
alias mmc            uboot, jaehoon
alias nand           uboot, scottwood
alias net            uboot, jhersh
alias phy            uboot, jhersh
alias spi            uboot, jagan
alias spmi           uboot, mateusz
alias ubi            uboot, hs
alias usb            uboot, marex
alias video          uboot, ag
alias patman         uboot, sjg
alias buildman       uboot, sjg
alias pmic           uboot, bobenstein
