##
## 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.
##
## 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.
##

# Generic ITE romstage driver - Just enough UART initialisation code for
# romstage.
config SUPERIO_ITE_COMMON_ROMSTAGE
	bool

config SUPERIO_ITE_IT8671F
	bool
	select SUPERIO_ITE_COMMON_ROMSTAGE

config SUPERIO_ITE_IT8712F
	bool
	select SUPERIO_ITE_COMMON_ROMSTAGE

config SUPERIO_ITE_IT8716F
	bool
	select SUPERIO_ITE_COMMON_ROMSTAGE

config SUPERIO_ITE_IT8716F_OVERRIDE_FANCTL
	bool
	depends on SUPERIO_ITE_IT8716F
	default n
	select SUPERIO_ITE_COMMON_ROMSTAGE

config SUPERIO_ITE_IT8718F
	bool
	select SUPERIO_ITE_COMMON_ROMSTAGE

config SUPERIO_ITE_IT8721F
	bool
	select SUPERIO_ITE_COMMON_ROMSTAGE

config SUPERIO_ITE_IT8728F
	bool
	select SUPERIO_ITE_COMMON_ROMSTAGE

config SUPERIO_ITE_IT8772F
	bool
	select SUPERIO_ITE_COMMON_ROMSTAGE
