it8728f: Add ITE IT8728F superio early serial support.
This is the first of a series of patches to provide support for a new mainboard, Gigabyte GA-B75M-D3V. This patch provides early serial for the superio and has been tested on this mainboard. The code is based on IT8718F superio. Change-Id: I5636199b49314166ed3b81e60b41131964dd44ff Signed-off-by: Damien Zammit <damien@zamaudio.com> Reviewed-on: http://review.coreboot.org/3794 Reviewed-by: Alexandru Gagniuc <mr.nuke.me@gmail.com> Tested-by: build bot (Jenkins)
This commit is contained in:
parent
ed621ada63
commit
4c2ebeba78
|
@ -38,5 +38,7 @@ config SUPERIO_ITE_IT8718F
|
||||||
bool
|
bool
|
||||||
config SUPERIO_ITE_IT8721F
|
config SUPERIO_ITE_IT8721F
|
||||||
bool
|
bool
|
||||||
|
config SUPERIO_ITE_IT8728F
|
||||||
|
bool
|
||||||
config SUPERIO_ITE_IT8772F
|
config SUPERIO_ITE_IT8772F
|
||||||
bool
|
bool
|
||||||
|
|
|
@ -25,4 +25,5 @@ subdirs-y += it8712f
|
||||||
subdirs-y += it8716f
|
subdirs-y += it8716f
|
||||||
subdirs-y += it8718f
|
subdirs-y += it8718f
|
||||||
subdirs-y += it8721f
|
subdirs-y += it8721f
|
||||||
|
subdirs-y += it8728f
|
||||||
subdirs-y += it8772f
|
subdirs-y += it8772f
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
##
|
||||||
|
## This file is part of the coreboot project.
|
||||||
|
##
|
||||||
|
## Copyright (C) 2013 Damien Zammit <damien@zamaudio.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; either version 2 of the License, or
|
||||||
|
## (at your option) any later version.
|
||||||
|
##
|
||||||
|
## 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-$(CONFIG_SUPERIO_ITE_IT8728F) += early_serial.c
|
|
@ -0,0 +1,71 @@
|
||||||
|
/*
|
||||||
|
* This file is part of the coreboot project.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2006 Uwe Hermann <uwe@hermann-uwe.de>
|
||||||
|
* Copyright (C) 2013 Damien Zammit <damien@zamaudio.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; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
*/
|
||||||
|
#include "early_serial.h"
|
||||||
|
|
||||||
|
/* Superio raw commands */
|
||||||
|
static void it8728f_sio_write(device_t dev, u8 index, u8 value)
|
||||||
|
{
|
||||||
|
pnp_set_logical_device(dev);
|
||||||
|
pnp_write_config(dev, index, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void it8728f_enter_conf(device_t dev)
|
||||||
|
{
|
||||||
|
u16 port = dev >> 8;
|
||||||
|
|
||||||
|
outb(0x87, port);
|
||||||
|
outb(0x01, port);
|
||||||
|
outb(0x55, port);
|
||||||
|
outb((port == 0x4e) ? 0xaa : 0x55, port);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void it8728f_exit_conf(device_t dev)
|
||||||
|
{
|
||||||
|
it8728f_sio_write(dev, IT8728F_CONFIG_REG_CC, 0x02);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Superio low level commands */
|
||||||
|
void it8728f_reg_write(device_t dev, u8 index, u8 value)
|
||||||
|
{
|
||||||
|
it8728f_enter_conf(dev);
|
||||||
|
it8728f_sio_write(dev, index, value);
|
||||||
|
it8728f_exit_conf(dev);
|
||||||
|
}
|
||||||
|
|
||||||
|
void it8728f_24mhz_clkin(device_t dev)
|
||||||
|
{
|
||||||
|
it8728f_reg_write(dev, IT8728F_CONFIG_REG_CLOCKSEL, 0x1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void it8728f_enable_serial(device_t dev, u16 iobase)
|
||||||
|
{
|
||||||
|
/* (1) Enter the configuration state (MB PnP mode). */
|
||||||
|
it8728f_enter_conf(dev);
|
||||||
|
|
||||||
|
/* (2) Modify the data of configuration registers. */
|
||||||
|
pnp_set_logical_device(dev);
|
||||||
|
pnp_set_enable(dev, 0);
|
||||||
|
pnp_set_iobase(dev, PNP_IDX_IO0, iobase);
|
||||||
|
pnp_set_enable(dev, 1);
|
||||||
|
|
||||||
|
/* (3) Exit the configuration state (MB PnP mode). */
|
||||||
|
it8728f_exit_conf(dev);
|
||||||
|
}
|
|
@ -0,0 +1,40 @@
|
||||||
|
/*
|
||||||
|
* This file is part of the coreboot project.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2013 Damien Zammit <damien@zamaudio.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; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
*/
|
||||||
|
#ifndef SUPERIO_ITE_IT8728F_EARLY_SERIAL_H
|
||||||
|
#define SUPERIO_ITE_IT8728F_EARLY_SERIAL_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <arch/io.h>
|
||||||
|
#include <device/pnp_def.h>
|
||||||
|
#include "it8728f.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Superio low level commands
|
||||||
|
* Pass dev = PNP_DEV(superiobase, LDN)
|
||||||
|
*/
|
||||||
|
void it8728f_reg_write(device_t dev, u8 index, u8 value);
|
||||||
|
|
||||||
|
/* Select 24MHz CLKIN (48MHz default). */
|
||||||
|
void it8728f_24mhz_clkin(device_t dev);
|
||||||
|
|
||||||
|
/* Enable the serial port(s). */
|
||||||
|
void it8728f_enable_serial(device_t dev, u16 iobase);
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,42 @@
|
||||||
|
/*
|
||||||
|
* This file is part of the coreboot project.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2006 Uwe Hermann <uwe@hermann-uwe.de>
|
||||||
|
* Copyright (C) 2013 Damien Zammit <damien@zamaudio.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; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef SUPERIO_ITE_IT8728F_IT8728F_H
|
||||||
|
#define SUPERIO_ITE_IT8728F_IT8728F_H
|
||||||
|
|
||||||
|
#define IT8728F_FDC 0x00 /* Floppy */
|
||||||
|
#define IT8728F_SP1 0x01 /* Com1 */
|
||||||
|
#define IT8728F_SP2 0x02 /* Com2 */
|
||||||
|
#define IT8728F_PP 0x03 /* Parallel port */
|
||||||
|
#define IT8728F_EC 0x04 /* Environment controller */
|
||||||
|
#define IT8728F_KBCK 0x05 /* PS/2 keyboard */
|
||||||
|
#define IT8728F_KBCM 0x06 /* PS/2 mouse */
|
||||||
|
#define IT8728F_GPIO 0x07 /* GPIO */
|
||||||
|
#define IT8728F_IR 0x0a /* Consumer IR */
|
||||||
|
|
||||||
|
/* Global configuration registers. */
|
||||||
|
#define IT8728F_CONFIG_REG_CC 0x02 /* Configure Control (write-only). */
|
||||||
|
#define IT8728F_CONFIG_REG_LDN 0x07 /* Logical Device Number. */
|
||||||
|
#define IT8728F_CONFIG_REG_CHIPVERS 0x22 /* Chip version */
|
||||||
|
#define IT8728F_CONFIG_REG_CLOCKSEL 0x23 /* Clock Selection. */
|
||||||
|
#define IT8728F_CONFIG_REG_SWSUSP 0x24 /* Software Suspend, Flash I/F. 'Special register' */
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in New Issue