Add support for Panther Point to SPI driver

Change-Id: I98b05d9e639eda880b6e8dc6398413d1f4f5e9c3
Signed-off-by: Stefan Reinauer <reinauer@google.com>
Reviewed-on: http://review.coreboot.org/1048
Tested-by: build bot (Jenkins)
Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
This commit is contained in:
Stefan Reinauer 2012-05-23 11:18:35 -07:00 committed by Stefan Reinauer
parent 68b5da0e68
commit 691c9f0dab
2 changed files with 22 additions and 9 deletions

View File

@ -2504,6 +2504,8 @@
#define PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_MIN 0x1c41
#define PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_MAX 0x1c5f
#define PCI_DEVICE_ID_INTEL_PANTHERPOINT_LPC_MIN 0x1e41
#define PCI_DEVICE_ID_INTEL_PANTHERPOINT_LPC_MAX 0x1e5d
#define PCI_DEVICE_ID_INTEL_TGP_LPC 0x27bc
/* Intel 82801E (C-ICH) */

View File

@ -286,11 +286,24 @@ void spi_free_slave(struct spi_slave *_slave)
free(slave);
}
static inline int spi_is_cougarpoint_lpc(uint16_t device_id)
/*
* Check if this device ID matches one of supported Intel PCH devices.
*
* Return the ICH version if there is a match, or zero otherwise.
*/
static inline int get_ich_version(uint16_t device_id)
{
return device_id >= PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_MIN &&
device_id <= PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_MAX;
};
if (device_id == PCI_DEVICE_ID_INTEL_TGP_LPC)
return 7;
if ((device_id >= PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_MIN &&
device_id <= PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_MAX) ||
(device_id >= PCI_DEVICE_ID_INTEL_PANTHERPOINT_LPC_MIN &&
device_id <= PCI_DEVICE_ID_INTEL_PANTHERPOINT_LPC_MAX))
return 9;
return 0;
}
void spi_init(void)
{
@ -313,11 +326,9 @@ void spi_init(void)
return;
}
if (device_id == PCI_DEVICE_ID_INTEL_TGP_LPC) {
ich_version = 7;
} else if (spi_is_cougarpoint_lpc(device_id)) {
ich_version = 9;
} else {
ich_version = get_ich_version(device_id);
if (!ich_version) {
printk(BIOS_DEBUG, "ICH SPI: No known ICH found.\n");
return;
}