##
## This file is part of the coreboot project.
##
## Copyright (C) 2009 Ronald G. Minnich
## Copyright (C) 2014 Edward O'Callaghan <eocallaghan@alterapraxis.com>
##
## 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.
##

# Generic Fintek romstage driver - Just enough UART initialisation code for
# romstage.
config SUPERIO_FINTEK_COMMON_ROMSTAGE
	bool

config SUPERIO_FINTEK_F71805F
	bool
	select SUPERIO_FINTEK_COMMON_ROMSTAGE

config SUPERIO_FINTEK_F71859
	bool
	select SUPERIO_FINTEK_COMMON_ROMSTAGE

config SUPERIO_FINTEK_F71863FG
	bool
	select SUPERIO_FINTEK_COMMON_ROMSTAGE

config SUPERIO_FINTEK_F71869AD
	bool
	select SUPERIO_FINTEK_COMMON_ROMSTAGE

config SUPERIO_FINTEK_F71872
	bool
	select SUPERIO_FINTEK_COMMON_ROMSTAGE

config SUPERIO_FINTEK_F81216H
	bool
# N.B. 'special romstage'

config SUPERIO_FINTEK_F81865F
	bool
	select SUPERIO_FINTEK_COMMON_ROMSTAGE

config SUPERIO_FINTEK_F81866D
	bool
	select SUPERIO_FINTEK_COMMON_ROMSTAGE
