# 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 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 <ag.dev.uboot@gmail.com>
alias agraf          Alexander Graf <agraf@csgraf.de>
alias alexnemirovsky Alex Nemirovsky <alex.nemirovsky@cortina-access.com>
alias alisonwang     Alison Wang <alison.wang@nxp.com>
alias angelo_ts      Angelo Dureghello <angelo@sysam.it>
alias apritzel       Andre Przywara <andre.przywara@arm.com>
alias bmeng          Bin Meng <bmeng.cn@gmail.com>
alias danielschwierzeck Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
alias dinh           Dinh Nguyen <dinguyen@kernel.org>
alias ehristev       Eugen Hristev <eugen.hristev@linaro.org>
alias hs             Heiko Schocher <hs@nabladev.com>
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 <lftan.linux@gmail.com>
alias lokeshvutla    Lokesh Vutla <lokeshvutla@ti.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 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@nabladev.com>
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 <stefan.roese@mailbox.org>
alias tienfong       Tien Fong Chee <tien.fong.chee@intel.com>
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, nios2, powerpc, sandbox, superh, x86
alias arches         arch

alias arc            uboot, abrodkin

alias arm            uboot, trini
alias at91           uboot, abiessmann
alias cortina        uboot, alexnemirovsky
alias davinci        ti
alias imx            uboot, sbabic
alias kirkwood       uboot, stroese
alias omap           ti
alias pxa            uboot, marex
alias renesas        uboot, marex, iwamatsu
alias rmobile        uboot, marex, iwamatsu
alias s3c            samsung
alias s5pc           samsung
alias samsung        uboot, prom
alias snapdragon     uboot, mateusz
alias socfpga        uboot, marex, dinh, simongoldschmidt, tienfong
alias sunxi          uboot, jagan, apritzel
alias tegra          uboot, sjg, Tom Warren <twarren@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 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@csgroup.eu>
alias mpc83xx        uboot, mariosix
alias mpc85xx        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 eth            uboot, jhersh
alias kerneldoc      uboot, marex
alias fdt            uboot, sjg
alias i2c            uboot, hs
alias kconfig        uboot, masahiro
alias mmc            uboot, freenix, jaehoon
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
