summaryrefslogtreecommitdiffstats
path: root/board_enable.c
diff options
context:
space:
mode:
authorLuc Verhaegen <libv@skynet.be>2009-12-22 13:04:13 +0000
committerLuc Verhaegen <libv@skynet.be>2009-12-22 13:04:13 +0000
commit23ebd751ee15c909efe54f75eee2581066185430 (patch)
tree59bd115823eb9a37b289e38a5ecbf713f4222ed3 /board_enable.c
parente4984102e9466116896c6e17a31e679d3d533bf5 (diff)
downloadast2050-flashrom-23ebd751ee15c909efe54f75eee2581066185430.zip
ast2050-flashrom-23ebd751ee15c909efe54f75eee2581066185430.tar.gz
Boards: Fix several issues with nvidia_mcp_gpio_set
- CK804, MCP04, MCP2 use the isa bridges.. - Newer nvidia mcp's do use the smbus controllers (Found by Michael Karcher). - gpio line check breaks EPoX EP-8RDA3+, and should be wider. Corresponding to flashrom svn r810. Signed-off-by: Luc Verhaegen <libv@skynet.be> Acked-by: Michael Karcher <flashrom@mkarcher.dialup.fu-berlin.de>
Diffstat (limited to 'board_enable.c')
-rw-r--r--board_enable.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/board_enable.c b/board_enable.c
index 8b5ed95..9dd299e 100644
--- a/board_enable.c
+++ b/board_enable.c
@@ -440,20 +440,30 @@ static int nvidia_mcp_gpio_set(int gpio, int raise)
uint16_t base;
uint8_t tmp;
- if ((gpio < 0) || (gpio > 31)) {
+ if ((gpio < 0) || (gpio >= 0x40)) {
fprintf(stderr, "\nERROR: unsupported GPIO: %d.\n", gpio);
return -1;
}
- dev = pci_dev_find_vendorclass(0x10DE, 0x0C05);
+ /* First, check the ISA Bridge */
+ dev = pci_dev_find_vendorclass(0x10DE, 0x0601);
switch (dev->device_id) {
case 0x0030: /* CK804 */
case 0x0050: /* MCP04 */
case 0x0060: /* MCP2 */
break;
default:
- fprintf(stderr, "\nERROR: no nVidia SMBus controller found.\n");
+ /* Newer MCPs use the SMBus Controller */
+ dev = pci_dev_find_vendorclass(0x10DE, 0x0C05);
+ switch (dev->device_id) {
+ case 0x0264: /* MCP51 */
+ break;
+ default:
+ fprintf(stderr,
+ "\nERROR: no nVidia LPC/SMBus controller found.\n");
return -1;
+ }
+ break;
}
base = pci_read_long(dev, 0x64) & 0x0000FF00; /* System control area */
OpenPOWER on IntegriCloud