roda/rk9: Remove #include early_serial.c from romstage
Remove dependency on early_serial.c and instead use the Super I/O's header to access the functions needed. Also re-organize some of the superio code in order to succesfully compile the rom. Change-Id: I85a6f1352ae3b91c3c98e4d3fa0b90b87e02babc Signed-off-by: Antonello Dettori <dev@dettori.io> Reviewed-on: https://review.coreboot.org/13925 Tested-by: build bot (Jenkins) Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Reviewed-by: Martin Roth <martinroth@google.com>
This commit is contained in:
parent
2a3434757e
commit
6321d7c14b
|
@ -29,7 +29,7 @@
|
||||||
#include <console/console.h>
|
#include <console/console.h>
|
||||||
#include <southbridge/intel/i82801ix/i82801ix.h>
|
#include <southbridge/intel/i82801ix/i82801ix.h>
|
||||||
#include <northbridge/intel/gm45/gm45.h>
|
#include <northbridge/intel/gm45/gm45.h>
|
||||||
#include <superio/smsc/lpc47n227/early_serial.c>
|
#include <superio/smsc/lpc47n227/lpc47n227.h>
|
||||||
|
|
||||||
#define LPC_DEV PCI_DEV(0, 0x1f, 0)
|
#define LPC_DEV PCI_DEV(0, 0x1f, 0)
|
||||||
#define SERIAL_DEV PNP_DEV(0x2e, LPC47N227_SP1)
|
#define SERIAL_DEV PNP_DEV(0x2e, LPC47N227_SP1)
|
||||||
|
|
|
@ -13,4 +13,5 @@
|
||||||
## GNU General Public License for more details.
|
## GNU General Public License for more details.
|
||||||
##
|
##
|
||||||
|
|
||||||
|
romstage-$(CONFIG_SUPERIO_SMSC_LPC47N227) += early_serial.c
|
||||||
ramstage-$(CONFIG_SUPERIO_SMSC_LPC47N227) += superio.c
|
ramstage-$(CONFIG_SUPERIO_SMSC_LPC47N227) += superio.c
|
||||||
|
|
|
@ -19,13 +19,13 @@
|
||||||
#include <arch/io.h>
|
#include <arch/io.h>
|
||||||
#include "lpc47n227.h"
|
#include "lpc47n227.h"
|
||||||
|
|
||||||
static void pnp_enter_conf_state(pnp_devfn_t dev)
|
void pnp_enter_conf_state(pnp_devfn_t dev)
|
||||||
{
|
{
|
||||||
u16 port = dev >> 8;
|
u16 port = dev >> 8;
|
||||||
outb(0x55, port);
|
outb(0x55, port);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void pnp_exit_conf_state(pnp_devfn_t dev)
|
void pnp_exit_conf_state(pnp_devfn_t dev)
|
||||||
{
|
{
|
||||||
u16 port = dev >> 8;
|
u16 port = dev >> 8;
|
||||||
outb(0xaa, port);
|
outb(0xaa, port);
|
||||||
|
@ -107,7 +107,7 @@ static void lpc47n227_pnp_set_enable(pnp_devfn_t dev, int enable)
|
||||||
* @param dev High 8 bits = Super I/O port, low 8 bits = logical device number.
|
* @param dev High 8 bits = Super I/O port, low 8 bits = logical device number.
|
||||||
* @param iobase Processor I/O port address to assign to this serial device.
|
* @param iobase Processor I/O port address to assign to this serial device.
|
||||||
*/
|
*/
|
||||||
static void lpc47n227_enable_serial(pnp_devfn_t dev, u16 iobase)
|
void lpc47n227_enable_serial(pnp_devfn_t dev, u16 iobase)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* NOTE: Cannot use pnp_set_XXX() here because they assume chip
|
* NOTE: Cannot use pnp_set_XXX() here because they assume chip
|
||||||
|
|
|
@ -28,4 +28,9 @@
|
||||||
|
|
||||||
#define LPC47N227_MAX_CONFIG_REGISTER 0x39
|
#define LPC47N227_MAX_CONFIG_REGISTER 0x39
|
||||||
|
|
||||||
|
void pnp_enter_conf_state(pnp_devfn_t dev);
|
||||||
|
void pnp_exit_conf_state(pnp_devfn_t dev);
|
||||||
|
|
||||||
|
void lpc47n227_enable_serial(pnp_devfn_t dev, u16 iobase);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -25,6 +25,8 @@
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <pc80/keyboard.h>
|
#include <pc80/keyboard.h>
|
||||||
|
#include <superio/conf_mode.h>
|
||||||
|
|
||||||
#include "lpc47n227.h"
|
#include "lpc47n227.h"
|
||||||
|
|
||||||
/* Forward declarations. */
|
/* Forward declarations. */
|
||||||
|
@ -38,8 +40,6 @@ void lpc47n227_pnp_set_iobase(struct device *dev, u16 iobase);
|
||||||
void lpc47n227_pnp_set_drq(struct device *dev, u8 drq);
|
void lpc47n227_pnp_set_drq(struct device *dev, u8 drq);
|
||||||
void lpc47n227_pnp_set_irq(struct device *dev, u8 irq);
|
void lpc47n227_pnp_set_irq(struct device *dev, u8 irq);
|
||||||
void lpc47n227_pnp_set_enable(struct device *dev, int enable);
|
void lpc47n227_pnp_set_enable(struct device *dev, int enable);
|
||||||
static void pnp_enter_conf_state(struct device *dev);
|
|
||||||
static void pnp_exit_conf_state(struct device *dev);
|
|
||||||
|
|
||||||
struct chip_operations superio_smsc_lpc47n227_ops = {
|
struct chip_operations superio_smsc_lpc47n227_ops = {
|
||||||
CHIP_NAME("SMSC LPC47N227 Super I/O")
|
CHIP_NAME("SMSC LPC47N227 Super I/O")
|
||||||
|
@ -86,10 +86,10 @@ void lpc47n227_pnp_set_resources(struct device *dev)
|
||||||
{
|
{
|
||||||
struct resource *res;
|
struct resource *res;
|
||||||
|
|
||||||
pnp_enter_conf_state(dev);
|
pnp_enter_conf_mode_55(dev);
|
||||||
for (res = dev->resource_list; res; res = res->next)
|
for (res = dev->resource_list; res; res = res->next)
|
||||||
lpc47n227_pnp_set_resource(dev, res);
|
lpc47n227_pnp_set_resource(dev, res);
|
||||||
pnp_exit_conf_state(dev);
|
pnp_exit_conf_mode_aa(dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -98,9 +98,9 @@ void lpc47n227_pnp_set_resources(struct device *dev)
|
||||||
*/
|
*/
|
||||||
void lpc47n227_pnp_enable_resources(struct device *dev)
|
void lpc47n227_pnp_enable_resources(struct device *dev)
|
||||||
{
|
{
|
||||||
pnp_enter_conf_state(dev);
|
pnp_enter_conf_mode_55(dev);
|
||||||
lpc47n227_pnp_set_enable(dev, 1);
|
lpc47n227_pnp_set_enable(dev, 1);
|
||||||
pnp_exit_conf_state(dev);
|
pnp_exit_conf_mode_aa(dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -109,9 +109,9 @@ void lpc47n227_pnp_enable_resources(struct device *dev)
|
||||||
*/
|
*/
|
||||||
void lpc47n227_pnp_enable(struct device *dev)
|
void lpc47n227_pnp_enable(struct device *dev)
|
||||||
{
|
{
|
||||||
pnp_enter_conf_state(dev);
|
pnp_enter_conf_mode_55(dev);
|
||||||
lpc47n227_pnp_set_enable(dev, !!dev->enabled);
|
lpc47n227_pnp_set_enable(dev, !!dev->enabled);
|
||||||
pnp_exit_conf_state(dev);
|
pnp_exit_conf_mode_aa(dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -271,13 +271,3 @@ void lpc47n227_pnp_set_enable(struct device *dev, int enable)
|
||||||
}
|
}
|
||||||
pnp_write_config(dev, power_register, new_power);
|
pnp_write_config(dev, power_register, new_power);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void pnp_enter_conf_state(struct device *dev)
|
|
||||||
{
|
|
||||||
outb(0x55, dev->path.pnp.port);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void pnp_exit_conf_state(struct device *dev)
|
|
||||||
{
|
|
||||||
outb(0xaa, dev->path.pnp.port);
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue