# 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 agraf          Alexander Graf <agraf@csgraf.de>
alias alisonwang     Alison Wang <alison.wang@nxp.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 dinh           Dinh Nguyen <dinguyen@kernel.org>
alias hs             Heiko Schocher <hs@denx.de>
alias freenix        Peng Fan <peng.fan@nxp.com>
alias iwamatsu       Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
alias jaehoon        Jaehoon Chung <jh80.chung@samsung.com>
alias jagan          Jagan Teki <jagan@amarulasolutions.com>
alias jhersh         Joe Hershberger <joe.hershberger@ni.com>
alias kevery         Kever Yang <kever.yang@rock-chips.com>
alias leyfoon        Ley Foon Tan <ley.foon.tan@intel.com>
alias lukma          Lukasz Majewski <lukma@denx.de>
alias macpaul        Macpaul Lin <macpaul@andestech.com>
alias marex          Marek Vasut <marex@denx.de>
alias mariosix       Mario Six <mario.six@gdsys.cc>
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 mbrugger       Matthias Brugger <mbrugger@suse.com>
alias monstr         Michal Simek <monstr@monstr.eu>
alias prom           Minkyu Kang <mk7.kang@samsung.com>
alias ptomsich       Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
alias sbabic         Stefano Babic <sbabic@denx.de>
alias simongoldschmidt Simon Goldschmidt <simon.k.r.goldschmidt@gmail.com>
alias sjg            Simon Glass <sjg@chromium.org>
alias smcnutt        Scott McNutt <smcnutt@psyent.com>
alias stroese        Stefan Roese <sr@denx.de>
alias trini          Tom Rini <trini@konsulko.com>
alias wd             Wolfgang Denk <wd@denx.de>
alias priyankajain   Priyanka Jain <priyanka.jain@nxp.com>

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

alias arc            uboot, abrodkin

alias arm            uboot, aaribaud, trini
alias at91           uboot, abiessmann
alias davinci        ti
alias imx            uboot, sbabic
alias kirkwood       uboot, stroese
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, simongoldschmidt, leyfoon
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, kevery, ptomsich

alias bcm283x        uboot, mbrugger
alias rpi            uboot, mbrugger

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, stroese, wd, priyankajain, mariosix
alias ppc            powerpc
alias mpc8xx         uboot, wd, Christophe Leroy <christophe.leroy@c-s.fr>
alias mpc83xx        uboot, mariosix
alias mpc85xx        uboot, afleming, priyankajain
alias mpc86xx        uboot, afleming, priyankajain

alias sandbox        sjg
alias sb             sandbox

alias superh         uboot, iwamatsu, marex
alias sh             superh

alias x86            uboot, sjg, bmeng

# Subsystem aliases
alias dm             uboot, sjg
alias cfi            uboot, stroese
alias dfu            uboot, lukma
alias efi            uboot, agraf
alias eth            uboot, jhersh
alias kerneldoc      uboot, marex
alias fdt            uboot, sjg
alias i2c            uboot, hs
alias kconfig        uboot, masahiro
alias mmc            uboot, freenix
alias nand           uboot
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 xhci           uboot, bmeng
alias video          uboot, ag
alias patman         uboot, sjg
alias buildman       uboot, sjg
alias pmic           uboot, jaehoon
