Author: libv
Date: 2009-12-22 14:04:13 +0100 (Tue, 22 Dec 2009)
New Revision: 810

Modified:
   trunk/board_enable.c
Log:
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.

Signed-off-by: Luc Verhaegen <[email protected]>
Acked-by: Michael Karcher <[email protected]>

Modified: trunk/board_enable.c
===================================================================
--- trunk/board_enable.c        2009-12-21 15:30:46 UTC (rev 809)
+++ trunk/board_enable.c        2009-12-22 13:04:13 UTC (rev 810)
@@ -440,20 +440,30 @@
        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 */


_______________________________________________
flashrom mailing list
[email protected]
http://www.flashrom.org/mailman/listinfo/flashrom

Reply via email to