##
## This file is part of the coreboot project.
##
## Copyright (C) 2013 Google Inc.
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; version 2 of the License.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
##

romstage-y += modhwinfo.c

ramstage-y += gpio.c
ramstage-y += irqroute.c
ramstage-y += modhwinfo.c
ramstage-y += lcd_panel.c
ramstage-y += ptn3460.c

cbfs-files-y += hwinfo.hex
hwinfo.hex-file := hwinfo.hex
hwinfo.hex-type := 0x50
hwinfo.hex-align := 0x1000

cbfs-files-y += version.hex
version.hex-file := version.hex
version.hex-type := 0x50

cbfs-files-y += hwinfo10.hex
hwinfo10.hex-file := hwinfo10.hex
hwinfo10.hex-type := 0x50

cbfs-files-y += hwinfo12.hex
hwinfo12.hex-file := hwinfo12.hex
hwinfo12.hex-type := 0x50

cbfs-files-y += hwinfo15.hex
hwinfo15.hex-file := hwinfo15.hex
hwinfo15.hex-type := 0x50

cbfs-files-y += hwinfo19.hex
hwinfo19.hex-file := hwinfo19.hex
hwinfo19.hex-type := 0x50
