# This is the list of coreboot authors for copyright purposes.
#
# This does not necessarily list everyone who has contributed code, since in
# some cases, their employer may be the copyright holder.  To see the full list
# of contributors, and their email addresses, see the revision history in source
# control.
# Run the below commands in the coreboot repo for additional information.
# To see a list of contributors: git log --pretty=format:%an | sort | uniq
# For patches adding or removing a name: git log -i -S "NAME" --source --all

9elements Agency GmbH
Advanced Micro Devices, Inc.
AG Electronics Ltd.
Alex Züpke
Alexander Couzens
Alexandru Gagniuc
Analog Devices Inc.
Andy Fleming
ARM Limited and Contributors
Arthur Heymans
ASPEED Technology Inc.
Atheros Corporation
Atmel Corporation
BAP - Bruhnspace Advanced Projects
Carl-Daniel Hailfinger
Christoph Grenz
coresystems GmbH
Corey Osgood
Damien Zammit
David Brownell
David Hendricks
David Mosberger-Tang
Denis Dowling
DENX Software Engineering
Digital Design Corporation
DMP Electronics Inc.
Drew Eckhardt
Dynon Avionics
Edward O'Callaghan
Egbert Eich
Eltan B.V
Eric Biederman
Eswar Nallusamy
Fabian Kunkel
Facebook, Inc.
Felix Held
Frederic Potter
Free Software Foundation, Inc.
Freescale Semiconductor, Inc.
Gary Jennejohn
Gerd Hoffmann
Gergely Kiss
Google LLC
Greg Watson
Idwer Vollering
Imagination Technologies
Infineon Technologies
Intel Corporation
Jason Zhao
Jonathan Neuschäfer
Jordan Crouse
Joseph Smith
Keith Hui
Keith Packard
Kevin Cody-Little
Kshitij
Kyösti Mälkki
Lei Wen
Li-Ta Lo
Libra Li
Libretrend LDA
Linus Torvalds
Linux Networx, Inc.
Luc Verhaegen
Marc Jones
Marek Vasut
Marius Gröger
Martin Mares
Marvell International Ltd.
Marvell Semiconductor Inc.
Matt DeVillier
MediaTek Inc.
Mondrian Nuessle
MontaVista Software, Inc.
Myles Watson
Network Appliance Inc.
Nicholas Sielicki
Nick Barker
Nico Huber
Nicola Corna
Ollie Lo
Omar Pakker
Orion Technologies, LLC
Patrick Georgi
Patrick Rudolph
Pavel Sayekat
PC Engines GmbH
Per Odlund
Peter Stuge
Philipp Degler
Protectli
Raptor Engineering, LLC
Red Hat Inc
Reinhard Meyer
Richard Spiegel
Richard Woodruff
Ronald G. Minnich
Rudolf Marek
Russell King
Sage Electronic Engineering, LLC
Samsung Electronics
Samuel Holland
SciTech Software, Inc.
Sebastian Grzywna
secunet Security Networks AG
Siemens AG
Silicon Integrated System Corporation
Silverback ltd.
Stefan Reinauer
Steve Magnani
ST Microelectronics
SUSE LINUX AG
Sven Schnelle
Syed Mohammed Khasim
Texas Instruments
The ChromiumOS Authors
The Linux Foundation
Thomas Winischhofer
Timothy Pearson
Tobias Diedrich
Tungsten Graphics, Inc.
Tyan Computer Corp.
ucRobotics Inc.
University of Heidelberg
Uwe Hermann
VIA Technologies, Inc
Vipin Kumar
Vladimir Serbinenko
Wang Qing Pei
Ward Vandewege
Win Enterprises
Wolfgang Denk
Yinghai Lu



# Directories transferred
src/acpi
src/arch
src/commonlib
src/console
src/cpu
src/device
src/drivers
src/superio
