i3100: add sata_ports_implemented option
BIOS needs to set the bit mask which ports are iplemented on the board. Without setting this option, seabios fails to boot from SATA. Change-Id: I21de3fde3a9cff7c590226f70fa549274f36e2a8 Signed-off-by: Sven Schnelle <svens@stackframe.org> Reviewed-on: http://review.coreboot.org/601 Tested-by: build bot (Jenkins)
This commit is contained in:
parent
ab46c15f61
commit
f61ad93bc9
|
@ -43,6 +43,7 @@ struct southbridge_intel_i3100_config
|
||||||
|
|
||||||
/* GPIO use select */
|
/* GPIO use select */
|
||||||
u8 gpio[64];
|
u8 gpio[64];
|
||||||
|
int sata_ports_implemented;
|
||||||
u32 pirq_a_d;
|
u32 pirq_a_d;
|
||||||
u32 pirq_e_h;
|
u32 pirq_e_h;
|
||||||
};
|
};
|
||||||
|
|
|
@ -32,6 +32,13 @@ typedef struct southbridge_intel_i3100_config config_t;
|
||||||
static void sata_init(struct device *dev)
|
static void sata_init(struct device *dev)
|
||||||
{
|
{
|
||||||
u8 ahci;
|
u8 ahci;
|
||||||
|
u32 *ahci_bar;
|
||||||
|
config_t *config = dev->chip_info;
|
||||||
|
|
||||||
|
if (config == NULL) {
|
||||||
|
printk(BIOS_ERR, "i3100_sata: error: device not in devicetree.cb!\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* Get the chip configuration */
|
/* Get the chip configuration */
|
||||||
ahci = (pci_read_config8(dev, SATA_MAP) >> 6) & 0x03;
|
ahci = (pci_read_config8(dev, SATA_MAP) >> 6) & 0x03;
|
||||||
|
@ -58,6 +65,8 @@ static void sata_init(struct device *dev)
|
||||||
/* IDE I/O configuration */
|
/* IDE I/O configuration */
|
||||||
pci_write_config32(dev, SATA_IIOC, 0);
|
pci_write_config32(dev, SATA_IIOC, 0);
|
||||||
|
|
||||||
|
ahci_bar = (u32 *)(pci_read_config32(dev, 0x27) & ~0x3ff);
|
||||||
|
ahci_bar[3] = config->sata_ports_implemented;
|
||||||
} else {
|
} else {
|
||||||
/* SATA configuration */
|
/* SATA configuration */
|
||||||
pci_write_config8(dev, SATA_CMD, 0x07);
|
pci_write_config8(dev, SATA_CMD, 0x07);
|
||||||
|
|
Loading…
Reference in New Issue