mirror of
				https://review.coreboot.org/flashrom.git
				synced 2025-11-04 07:00:39 +01:00 
			
		
		
		
	Convert various prints to use msg_p* and msg_g* respectively
Convert programmer print messages to msg_p* convert general print messages to msg_g* a few fixes as suggested by Carl-Daniel. Corresponding to flashrom svn r997. Signed-off-by: Sean Nelson <audiohacked@gmail.com> Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
This commit is contained in:
		@@ -87,7 +87,7 @@ static int enable_flash_decode_superio(void)
 | 
				
			|||||||
		ret = 0;
 | 
							ret = 0;
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	default:
 | 
						default:
 | 
				
			||||||
		printf_debug("Unhandled Super I/O type!\n");
 | 
							msg_pdbg("Unhandled Super I/O type!\n");
 | 
				
			||||||
		ret = -1;
 | 
							ret = -1;
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -108,7 +108,7 @@ static int w83627hf_gpio24_raise(uint16_t port, const char *name)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	/* Is this the W83627HF? */
 | 
						/* Is this the W83627HF? */
 | 
				
			||||||
	if (sio_read(port, 0x20) != 0x52) {	/* Super I/O device ID reg. */
 | 
						if (sio_read(port, 0x20) != 0x52) {	/* Super I/O device ID reg. */
 | 
				
			||||||
		fprintf(stderr, "\nERROR: %s: W83627HF: Wrong ID: 0x%02X.\n",
 | 
							msg_perr("\nERROR: %s: W83627HF: Wrong ID: 0x%02X.\n",
 | 
				
			||||||
			name, sio_read(port, 0x20));
 | 
								name, sio_read(port, 0x20));
 | 
				
			||||||
		w836xx_ext_leave(port);
 | 
							w836xx_ext_leave(port);
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
@@ -148,7 +148,7 @@ static int w83627thf_gpio4_4_raise(uint16_t port, const char *name)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	/* Is this the W83627THF? */
 | 
						/* Is this the W83627THF? */
 | 
				
			||||||
	if (sio_read(port, 0x20) != 0x82) {	/* Super I/O device ID reg. */
 | 
						if (sio_read(port, 0x20) != 0x82) {	/* Super I/O device ID reg. */
 | 
				
			||||||
		fprintf(stderr, "\nERROR: %s: W83627THF: Wrong ID: 0x%02X.\n",
 | 
							msg_perr("\nERROR: %s: W83627THF: Wrong ID: 0x%02X.\n",
 | 
				
			||||||
			name, sio_read(port, 0x20));
 | 
								name, sio_read(port, 0x20));
 | 
				
			||||||
		w836xx_ext_leave(port);
 | 
							w836xx_ext_leave(port);
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
@@ -253,20 +253,20 @@ static int pc87360_gpio_set(uint8_t gpio, int raise)
 | 
				
			|||||||
        uint8_t id, val;
 | 
					        uint8_t id, val;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (gpio_bank > 4) {
 | 
					        if (gpio_bank > 4) {
 | 
				
			||||||
                fprintf(stderr, "PC87360: Invalid GPIO %d\n", gpio);
 | 
					                msg_perr("PC87360: Invalid GPIO %d\n", gpio);
 | 
				
			||||||
                return -1;
 | 
					                return -1;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        id = sio_read(0x2E, 0x20);
 | 
					        id = sio_read(0x2E, 0x20);
 | 
				
			||||||
        if (id != 0xE1) {
 | 
					        if (id != 0xE1) {
 | 
				
			||||||
                fprintf(stderr, "PC87360: unexpected ID %02x\n", id);
 | 
					                msg_perr("PC87360: unexpected ID %02x\n", id);
 | 
				
			||||||
                return -1;
 | 
					                return -1;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        sio_write(0x2E, 0x07, 0x07);		/* Select GPIO device */
 | 
					        sio_write(0x2E, 0x07, 0x07);		/* Select GPIO device */
 | 
				
			||||||
        baseport = (sio_read(0x2E, 0x60) << 8) | sio_read(0x2E, 0x61);
 | 
					        baseport = (sio_read(0x2E, 0x60) << 8) | sio_read(0x2E, 0x61);
 | 
				
			||||||
        if ((baseport & 0xFFF0) == 0xFFF0 || baseport == 0) {
 | 
					        if ((baseport & 0xFFF0) == 0xFFF0 || baseport == 0) {
 | 
				
			||||||
                fprintf (stderr, "PC87360: invalid GPIO base address %04x\n",
 | 
					                msg_perr("PC87360: invalid GPIO base address %04x\n",
 | 
				
			||||||
                         baseport);
 | 
					                         baseport);
 | 
				
			||||||
                return -1;
 | 
					                return -1;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -300,7 +300,7 @@ static int via_vt823x_gpio_set(uint8_t gpio, int raise)
 | 
				
			|||||||
	case 0x3337:	/* VT8237A */
 | 
						case 0x3337:	/* VT8237A */
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	default:
 | 
						default:
 | 
				
			||||||
		fprintf(stderr, "\nERROR: VT823x ISA bridge not found.\n");
 | 
							msg_perr("\nERROR: VT823x ISA bridge not found.\n");
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -319,7 +319,7 @@ static int via_vt823x_gpio_set(uint8_t gpio, int raise)
 | 
				
			|||||||
		val |= 0x01;
 | 
							val |= 0x01;
 | 
				
			||||||
		pci_write_byte(dev, 0xE4, val);
 | 
							pci_write_byte(dev, 0xE4, val);
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		fprintf(stderr, "\nERROR: "
 | 
							msg_perr("\nERROR: "
 | 
				
			||||||
			"VT823x GPIO%02d is not implemented.\n", gpio);
 | 
								"VT823x GPIO%02d is not implemented.\n", gpio);
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -411,7 +411,7 @@ static int board_asus_p5a(const char *name)
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (i == ASUSP5A_LOOP) {
 | 
						if (i == ASUSP5A_LOOP) {
 | 
				
			||||||
		printf("%s: Unable to contact device.\n", name);
 | 
							msg_perr("%s: Unable to contact device.\n", name);
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -427,7 +427,7 @@ static int board_asus_p5a(const char *name)
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((i == ASUSP5A_LOOP) || !(tmp & 0x10)) {
 | 
						if ((i == ASUSP5A_LOOP) || !(tmp & 0x10)) {
 | 
				
			||||||
		printf("%s: failed to read device.\n", name);
 | 
							msg_perr("%s: failed to read device.\n", name);
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -454,7 +454,7 @@ static int board_asus_p5a(const char *name)
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((i == ASUSP5A_LOOP) || !(tmp & 0x10)) {
 | 
						if ((i == ASUSP5A_LOOP) || !(tmp & 0x10)) {
 | 
				
			||||||
		printf("%s: failed to write to device.\n", name);
 | 
							msg_perr("%s: failed to write to device.\n", name);
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -492,8 +492,7 @@ static int board_shuttle_fn25(const char *name)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	dev = pci_dev_find(0x10DE, 0x0050);	/* NVIDIA CK804 ISA Bridge. */
 | 
						dev = pci_dev_find(0x10DE, 0x0050);	/* NVIDIA CK804 ISA Bridge. */
 | 
				
			||||||
	if (!dev) {
 | 
						if (!dev) {
 | 
				
			||||||
		fprintf(stderr,
 | 
							msg_perr("\nERROR: NVIDIA nForce4 ISA bridge not found.\n");
 | 
				
			||||||
			"\nERROR: NVIDIA nForce4 ISA bridge not found.\n");
 | 
					 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -513,7 +512,7 @@ static int nvidia_mcp_gpio_set(int gpio, int raise)
 | 
				
			|||||||
	uint8_t tmp;
 | 
						uint8_t tmp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((gpio < 0) || (gpio >= 0x40)) {
 | 
						if ((gpio < 0) || (gpio >= 0x40)) {
 | 
				
			||||||
		fprintf(stderr, "\nERROR: unsupported GPIO: %d.\n", gpio);
 | 
							msg_perr("\nERROR: unsupported GPIO: %d.\n", gpio);
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -531,8 +530,7 @@ static int nvidia_mcp_gpio_set(int gpio, int raise)
 | 
				
			|||||||
	    case 0x0264: /* MCP51 */
 | 
						    case 0x0264: /* MCP51 */
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	    default:
 | 
						    default:
 | 
				
			||||||
		fprintf(stderr,
 | 
							msg_perr("\nERROR: no NVIDIA LPC/SMBus controller found.\n");
 | 
				
			||||||
			"\nERROR: no NVIDIA LPC/SMBus controller found.\n");
 | 
					 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	    }
 | 
						    }
 | 
				
			||||||
	    break;
 | 
						    break;
 | 
				
			||||||
@@ -661,20 +659,20 @@ static int intel_piix4_gpo_set(unsigned int gpo, int raise)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	dev = pci_dev_find(0x8086, 0x7110);	/* Intel PIIX4 ISA bridge */
 | 
						dev = pci_dev_find(0x8086, 0x7110);	/* Intel PIIX4 ISA bridge */
 | 
				
			||||||
	if (!dev) {
 | 
						if (!dev) {
 | 
				
			||||||
		fprintf(stderr, "\nERROR: Intel PIIX4 ISA bridge not found.\n");
 | 
							msg_perr("\nERROR: Intel PIIX4 ISA bridge not found.\n");
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* sanity check */
 | 
						/* sanity check */
 | 
				
			||||||
	if (gpo > 30) {
 | 
						if (gpo > 30) {
 | 
				
			||||||
		fprintf(stderr, "\nERROR: Intel PIIX4 has no GPO%d.\n", gpo);
 | 
							msg_perr("\nERROR: Intel PIIX4 has no GPO%d.\n", gpo);
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* these are dual function pins which are most likely in use already */
 | 
						/* these are dual function pins which are most likely in use already */
 | 
				
			||||||
	if (((gpo >= 1) && (gpo <= 7)) ||
 | 
						if (((gpo >= 1) && (gpo <= 7)) ||
 | 
				
			||||||
	    ((gpo >= 9) && (gpo <= 21)) || (gpo == 29)) {
 | 
						    ((gpo >= 9) && (gpo <= 21)) || (gpo == 29)) {
 | 
				
			||||||
		fprintf(stderr, "\nERROR: Unsupported PIIX4 GPO%d.\n", gpo);
 | 
							msg_perr("\nERROR: Unsupported PIIX4 GPO%d.\n", gpo);
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -703,7 +701,7 @@ static int intel_piix4_gpo_set(unsigned int gpo, int raise)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	dev = pci_dev_find(0x8086, 0x7113);	/* Intel PIIX4 PM */
 | 
						dev = pci_dev_find(0x8086, 0x7113);	/* Intel PIIX4 PM */
 | 
				
			||||||
	if (!dev) {
 | 
						if (!dev) {
 | 
				
			||||||
		fprintf(stderr, "\nERROR: Intel PIIX4 PM not found.\n");
 | 
							msg_perr("\nERROR: Intel PIIX4 PM not found.\n");
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -805,7 +803,7 @@ static int intel_ich_gpio_set(int gpio, int raise)
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!dev) {
 | 
						if (!dev) {
 | 
				
			||||||
		fprintf(stderr, "\nERROR: No Known Intel LPC Bridge found.\n");
 | 
							msg_perr("\nERROR: No Known Intel LPC Bridge found.\n");
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -823,12 +821,12 @@ static int intel_ich_gpio_set(int gpio, int raise)
 | 
				
			|||||||
		allowed = (intel_ich_gpio_table[i].bank2 >> (gpio - 64)) & 0x01;
 | 
							allowed = (intel_ich_gpio_table[i].bank2 >> (gpio - 64)) & 0x01;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!allowed) {
 | 
						if (!allowed) {
 | 
				
			||||||
		fprintf(stderr, "\nERROR: This Intel LPC Bridge does not allow"
 | 
							msg_perr("\nERROR: This Intel LPC Bridge does not allow"
 | 
				
			||||||
			" setting GPIO%02d\n", gpio);
 | 
								" setting GPIO%02d\n", gpio);
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	printf("\nIntel ICH LPC Bridge: %sing GPIO%02d.\n",
 | 
						msg_pdbg("\nIntel ICH LPC Bridge: %sing GPIO%02d.\n",
 | 
				
			||||||
	       raise ? "Rais" : "Dropp", gpio);
 | 
						       raise ? "Rais" : "Dropp", gpio);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (gpio < 32) {
 | 
						if (gpio < 32) {
 | 
				
			||||||
@@ -847,7 +845,7 @@ static int intel_ich_gpio_set(int gpio, int raise)
 | 
				
			|||||||
		if (dev->device_id > 0x2800) {
 | 
							if (dev->device_id > 0x2800) {
 | 
				
			||||||
			tmp = INL(base);
 | 
								tmp = INL(base);
 | 
				
			||||||
			if (!(tmp & (1 << gpio))) {
 | 
								if (!(tmp & (1 << gpio))) {
 | 
				
			||||||
				fprintf(stderr, "\nERROR: This Intel LPC Bridge"
 | 
									msg_perr("\nERROR: This Intel LPC Bridge"
 | 
				
			||||||
					" does not allow setting GPIO%02d\n",
 | 
										" does not allow setting GPIO%02d\n",
 | 
				
			||||||
					gpio);
 | 
										gpio);
 | 
				
			||||||
				return -1;
 | 
									return -1;
 | 
				
			||||||
@@ -879,7 +877,7 @@ static int intel_ich_gpio_set(int gpio, int raise)
 | 
				
			|||||||
		if (dev->device_id > 0x2800) {
 | 
							if (dev->device_id > 0x2800) {
 | 
				
			||||||
			tmp = INL(base + 30);
 | 
								tmp = INL(base + 30);
 | 
				
			||||||
			if (!(tmp & (1 << gpio))) {
 | 
								if (!(tmp & (1 << gpio))) {
 | 
				
			||||||
				fprintf(stderr, "\nERROR: This Intel LPC Bridge"
 | 
									msg_perr("\nERROR: This Intel LPC Bridge"
 | 
				
			||||||
					" does not allow setting GPIO%02d\n",
 | 
										" does not allow setting GPIO%02d\n",
 | 
				
			||||||
					gpio + 32);
 | 
										gpio + 32);
 | 
				
			||||||
				return -1;
 | 
									return -1;
 | 
				
			||||||
@@ -908,7 +906,7 @@ static int intel_ich_gpio_set(int gpio, int raise)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		tmp = INL(base + 40);
 | 
							tmp = INL(base + 40);
 | 
				
			||||||
		if (!(tmp & (1 << gpio))) {
 | 
							if (!(tmp & (1 << gpio))) {
 | 
				
			||||||
			fprintf(stderr, "\nERROR: This Intel LPC Bridge does "
 | 
								msg_perr("\nERROR: This Intel LPC Bridge does "
 | 
				
			||||||
				"not allow setting GPIO%02d\n", gpio + 64);
 | 
									"not allow setting GPIO%02d\n", gpio + 64);
 | 
				
			||||||
			return -1;
 | 
								return -1;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -1051,11 +1049,11 @@ static int via_apollo_gpo_set(int gpio, int raise)
 | 
				
			|||||||
	/* VT82C686 Power management */
 | 
						/* VT82C686 Power management */
 | 
				
			||||||
	dev = pci_dev_find(0x1106, 0x3057);
 | 
						dev = pci_dev_find(0x1106, 0x3057);
 | 
				
			||||||
	if (!dev) {
 | 
						if (!dev) {
 | 
				
			||||||
		fprintf(stderr, "\nERROR: VT82C686 PM device not found.\n");
 | 
							msg_perr("\nERROR: VT82C686 PM device not found.\n");
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	printf("\nVIA Apollo ACPI: %sing GPIO%02d.\n",
 | 
						msg_pdbg("\nVIA Apollo ACPI: %sing GPIO%02d.\n",
 | 
				
			||||||
	       raise ? "Rais" : "Dropp", gpio);
 | 
						       raise ? "Rais" : "Dropp", gpio);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* select GPO function on multiplexed pins */
 | 
						/* select GPO function on multiplexed pins */
 | 
				
			||||||
@@ -1118,7 +1116,7 @@ static int board_msi_651ml(const char *name)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	dev = pci_dev_find(0x1039, 0x0962);
 | 
						dev = pci_dev_find(0x1039, 0x0962);
 | 
				
			||||||
	if (!dev) {
 | 
						if (!dev) {
 | 
				
			||||||
		fprintf(stderr, "Expected south bridge not found\n");
 | 
							msg_perr("Expected south bridge not found\n");
 | 
				
			||||||
		return 1;
 | 
							return 1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1151,7 +1149,7 @@ static uint16_t smsc_find_runtime(uint16_t sio_port, uint16_t chip_id,
 | 
				
			|||||||
	/* Verify the chip ID. */
 | 
						/* Verify the chip ID. */
 | 
				
			||||||
	OUTB(0x55, sio_port);  /* Enable configuration. */
 | 
						OUTB(0x55, sio_port);  /* Enable configuration. */
 | 
				
			||||||
	if (sio_read(sio_port, 0x20) != chip_id) {
 | 
						if (sio_read(sio_port, 0x20) != chip_id) {
 | 
				
			||||||
		fprintf(stderr, "\nERROR: SMSC Super I/O not found.\n");
 | 
							msg_perr("\nERROR: SMSC Super I/O not found.\n");
 | 
				
			||||||
		goto out;
 | 
							goto out;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1163,7 +1161,7 @@ static uint16_t smsc_find_runtime(uint16_t sio_port, uint16_t chip_id,
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (rt_port == 0) {
 | 
						if (rt_port == 0) {
 | 
				
			||||||
		fprintf(stderr, "\nERROR: "
 | 
							msg_perr("\nERROR: "
 | 
				
			||||||
			"Super I/O runtime interface not available.\n");
 | 
								"Super I/O runtime interface not available.\n");
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
out:
 | 
					out:
 | 
				
			||||||
@@ -1183,7 +1181,7 @@ static int board_mitac_6513wu(const char *name)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	dev = pci_dev_find(0x8086, 0x2410);	/* Intel 82801AA ISA bridge */
 | 
						dev = pci_dev_find(0x8086, 0x2410);	/* Intel 82801AA ISA bridge */
 | 
				
			||||||
	if (!dev) {
 | 
						if (!dev) {
 | 
				
			||||||
		fprintf(stderr, "\nERROR: Intel 82801AA ISA bridge not found.\n");
 | 
							msg_perr("\nERROR: Intel 82801AA ISA bridge not found.\n");
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1218,7 +1216,7 @@ static int board_asus_a7v8x(const char *name)
 | 
				
			|||||||
	w836xx_ext_leave(0x2E);
 | 
						w836xx_ext_leave(0x2E);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (id != 0x8701) {
 | 
						if (id != 0x8701) {
 | 
				
			||||||
		fprintf(stderr, "\nERROR: IT8703F Super I/O not found.\n");
 | 
							msg_perr("\nERROR: IT8703F Super I/O not found.\n");
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1229,7 +1227,7 @@ static int board_asus_a7v8x(const char *name)
 | 
				
			|||||||
	w836xx_ext_leave(0x2E);
 | 
						w836xx_ext_leave(0x2E);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!base) {
 | 
						if (!base) {
 | 
				
			||||||
		fprintf(stderr, "\nERROR: Failed to read IT8703F Super I/O GPIO"
 | 
							msg_perr("\nERROR: Failed to read IT8703F Super I/O GPIO"
 | 
				
			||||||
			" Base.\n");
 | 
								" Base.\n");
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -1259,8 +1257,7 @@ static int it8712f_gpio_set(unsigned int line, int raise)
 | 
				
			|||||||
	/* Check line */
 | 
						/* Check line */
 | 
				
			||||||
	if ((port > 4) || /* also catches unsigned -1 */
 | 
						if ((port > 4) || /* also catches unsigned -1 */
 | 
				
			||||||
	    ((port < 4) && (line > 7)) || ((port == 4) && (line > 5))) {
 | 
						    ((port < 4) && (line > 7)) || ((port == 4) && (line > 5))) {
 | 
				
			||||||
	    fprintf(stderr,
 | 
						    msg_perr("\nERROR: Unsupported IT8712F GPIO Line %02d.\n", line);
 | 
				
			||||||
		    "\nERROR: Unsupported IT8712F GPIO Line %02d.\n", line);
 | 
					 | 
				
			||||||
	    return -1;
 | 
						    return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1270,7 +1267,7 @@ static int it8712f_gpio_set(unsigned int line, int raise)
 | 
				
			|||||||
	exit_conf_mode_ite(0x2E);
 | 
						exit_conf_mode_ite(0x2E);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (id != 0x8712) {
 | 
						if (id != 0x8712) {
 | 
				
			||||||
		fprintf(stderr, "\nERROR: IT8712F Super I/O not found.\n");
 | 
							msg_perr("\nERROR: IT8712F Super I/O not found.\n");
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1281,7 +1278,7 @@ static int it8712f_gpio_set(unsigned int line, int raise)
 | 
				
			|||||||
	exit_conf_mode_ite(0x2E);
 | 
						exit_conf_mode_ite(0x2E);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!base) {
 | 
						if (!base) {
 | 
				
			||||||
		fprintf(stderr, "\nERROR: Failed to read IT8712F Super I/O GPIO"
 | 
							msg_perr("\nERROR: Failed to read IT8712F Super I/O GPIO"
 | 
				
			||||||
			" Base.\n");
 | 
								" Base.\n");
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -1450,10 +1447,10 @@ static struct board_pciid_enable *board_match_coreboot_name(const char *vendor,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		if (partmatch) {
 | 
							if (partmatch) {
 | 
				
			||||||
			/* a second entry has a matching part name */
 | 
								/* a second entry has a matching part name */
 | 
				
			||||||
			printf("AMBIGUOUS BOARD NAME: %s\n", part);
 | 
								msg_pinfo("AMBIGUOUS BOARD NAME: %s\n", part);
 | 
				
			||||||
			printf("At least vendors '%s' and '%s' match.\n",
 | 
								msg_pinfo("At least vendors '%s' and '%s' match.\n",
 | 
				
			||||||
			       partmatch->lb_vendor, board->lb_vendor);
 | 
								       partmatch->lb_vendor, board->lb_vendor);
 | 
				
			||||||
			printf("Please use the full -m vendor:part syntax.\n");
 | 
								msg_perr("Please use the full -m vendor:part syntax.\n");
 | 
				
			||||||
			return NULL;
 | 
								return NULL;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		partmatch = board;
 | 
							partmatch = board;
 | 
				
			||||||
@@ -1467,7 +1464,7 @@ static struct board_pciid_enable *board_match_coreboot_name(const char *vendor,
 | 
				
			|||||||
		 * coreboot table. If it was, the coreboot implementor is
 | 
							 * coreboot table. If it was, the coreboot implementor is
 | 
				
			||||||
		 * expected to fix flashrom, too.
 | 
							 * expected to fix flashrom, too.
 | 
				
			||||||
		 */
 | 
							 */
 | 
				
			||||||
		printf("\nUnknown vendor:board from -m option: %s:%s\n\n",
 | 
							msg_perr("\nUnknown vendor:board from -m option: %s:%s\n\n",
 | 
				
			||||||
		       vendor, part);
 | 
							       vendor, part);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
@@ -1507,7 +1504,7 @@ static struct board_pciid_enable *board_match_pci_card_ids(void)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		if (board->dmi_pattern) {
 | 
							if (board->dmi_pattern) {
 | 
				
			||||||
			if (!has_dmi_support) {
 | 
								if (!has_dmi_support) {
 | 
				
			||||||
				fprintf(stderr, "WARNING: Can't autodetect %s %s,"
 | 
									msg_perr("WARNING: Can't autodetect %s %s,"
 | 
				
			||||||
				       " DMI info unavailable.\n",
 | 
									       " DMI info unavailable.\n",
 | 
				
			||||||
				       board->vendor_name, board->board_name);
 | 
									       board->vendor_name, board->board_name);
 | 
				
			||||||
				continue;
 | 
									continue;
 | 
				
			||||||
@@ -1536,7 +1533,7 @@ int board_flash_enable(const char *vendor, const char *part)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        if (board && board->status == NT) {
 | 
					        if (board && board->status == NT) {
 | 
				
			||||||
                if (!force_boardenable) {
 | 
					                if (!force_boardenable) {
 | 
				
			||||||
                        printf("WARNING: Your mainboard is %s %s, but the mainboard-specific\n"
 | 
					                        msg_pinfo("WARNING: Your mainboard is %s %s, but the mainboard-specific\n"
 | 
				
			||||||
                               "code has not been tested, and thus will not not be executed by default.\n"
 | 
					                               "code has not been tested, and thus will not not be executed by default.\n"
 | 
				
			||||||
                               "Depending on your hardware environment, erasing, writing or even probing\n"
 | 
					                               "Depending on your hardware environment, erasing, writing or even probing\n"
 | 
				
			||||||
                               "can fail without running the board specific code.\n\n"
 | 
					                               "can fail without running the board specific code.\n\n"
 | 
				
			||||||
@@ -1545,7 +1542,7 @@ int board_flash_enable(const char *vendor, const char *part)
 | 
				
			|||||||
                               board->vendor_name, board->board_name);
 | 
					                               board->vendor_name, board->board_name);
 | 
				
			||||||
                        board = NULL;
 | 
					                        board = NULL;
 | 
				
			||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
                        printf("NOTE: Running an untested board enable procedure.\n"
 | 
					                        msg_pinfo("NOTE: Running an untested board enable procedure.\n"
 | 
				
			||||||
                               "Please report success/failure to flashrom@flashrom.org.\n");
 | 
					                               "Please report success/failure to flashrom@flashrom.org.\n");
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -1556,15 +1553,15 @@ int board_flash_enable(const char *vendor, const char *part)
 | 
				
			|||||||
				board->max_rom_decode_parallel * 1024;
 | 
									board->max_rom_decode_parallel * 1024;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (board->enable != NULL) {
 | 
							if (board->enable != NULL) {
 | 
				
			||||||
			printf("Disabling flash write protection for "
 | 
								msg_pinfo("Disabling flash write protection for "
 | 
				
			||||||
			       "board \"%s %s\"... ", board->vendor_name,
 | 
								       "board \"%s %s\"... ", board->vendor_name,
 | 
				
			||||||
			       board->board_name);
 | 
								       board->board_name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			ret = board->enable(board->vendor_name);
 | 
								ret = board->enable(board->vendor_name);
 | 
				
			||||||
			if (ret)
 | 
								if (ret)
 | 
				
			||||||
				printf("FAILED!\n");
 | 
									msg_pinfo("FAILED!\n");
 | 
				
			||||||
			else
 | 
								else
 | 
				
			||||||
				printf("OK.\n");
 | 
									msg_pinfo("OK.\n");
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										22
									
								
								cbtable.c
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								cbtable.c
									
									
									
									
									
								
							@@ -112,29 +112,29 @@ static struct lb_header *find_lb_table(void *base, unsigned long start,
 | 
				
			|||||||
		    (struct lb_record *)(((char *)base) + addr + sizeof(*head));
 | 
							    (struct lb_record *)(((char *)base) + addr + sizeof(*head));
 | 
				
			||||||
		if (memcmp(head->signature, "LBIO", 4) != 0)
 | 
							if (memcmp(head->signature, "LBIO", 4) != 0)
 | 
				
			||||||
			continue;
 | 
								continue;
 | 
				
			||||||
		printf_debug("Found candidate at: %08lx-%08lx\n",
 | 
							msg_pdbg("Found candidate at: %08lx-%08lx\n",
 | 
				
			||||||
			     addr, addr + head->table_bytes);
 | 
								     addr, addr + head->table_bytes);
 | 
				
			||||||
		if (head->header_bytes != sizeof(*head)) {
 | 
							if (head->header_bytes != sizeof(*head)) {
 | 
				
			||||||
			fprintf(stderr, "Header bytes of %d are incorrect.\n",
 | 
								msg_perr("Header bytes of %d are incorrect.\n",
 | 
				
			||||||
				head->header_bytes);
 | 
									head->header_bytes);
 | 
				
			||||||
			continue;
 | 
								continue;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (count_lb_records(head) != head->table_entries) {
 | 
							if (count_lb_records(head) != head->table_entries) {
 | 
				
			||||||
			fprintf(stderr, "Bad record count: %d.\n",
 | 
								msg_perr("Bad record count: %d.\n",
 | 
				
			||||||
				head->table_entries);
 | 
									head->table_entries);
 | 
				
			||||||
			continue;
 | 
								continue;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (compute_checksum((uint8_t *) head, sizeof(*head)) != 0) {
 | 
							if (compute_checksum((uint8_t *) head, sizeof(*head)) != 0) {
 | 
				
			||||||
			fprintf(stderr, "Bad header checksum.\n");
 | 
								msg_perr("Bad header checksum.\n");
 | 
				
			||||||
			continue;
 | 
								continue;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (compute_checksum(recs, head->table_bytes)
 | 
							if (compute_checksum(recs, head->table_bytes)
 | 
				
			||||||
		    != head->table_checksum) {
 | 
							    != head->table_checksum) {
 | 
				
			||||||
			fprintf(stderr, "Bad table checksum: %04x.\n",
 | 
								msg_perr("Bad table checksum: %04x.\n",
 | 
				
			||||||
				head->table_checksum);
 | 
									head->table_checksum);
 | 
				
			||||||
			continue;
 | 
								continue;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		printf_debug("Found coreboot table at 0x%08lx.\n", addr);
 | 
							msg_pdbg("Found coreboot table at 0x%08lx.\n", addr);
 | 
				
			||||||
		return head;
 | 
							return head;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
@@ -150,7 +150,7 @@ static void find_mainboard(struct lb_record *ptr, unsigned long addr)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	rec = (struct lb_mainboard *)ptr;
 | 
						rec = (struct lb_mainboard *)ptr;
 | 
				
			||||||
	max_size = rec->size - sizeof(*rec);
 | 
						max_size = rec->size - sizeof(*rec);
 | 
				
			||||||
	printf("Vendor ID: %.*s, part ID: %.*s\n",
 | 
						msg_pdbg("Vendor ID: %.*s, part ID: %.*s\n",
 | 
				
			||||||
	       max_size - rec->vendor_idx,
 | 
						       max_size - rec->vendor_idx,
 | 
				
			||||||
	       rec->strings + rec->vendor_idx,
 | 
						       rec->strings + rec->vendor_idx,
 | 
				
			||||||
	       max_size - rec->part_number_idx,
 | 
						       max_size - rec->part_number_idx,
 | 
				
			||||||
@@ -161,7 +161,7 @@ static void find_mainboard(struct lb_record *ptr, unsigned long addr)
 | 
				
			|||||||
		 rec->strings + rec->part_number_idx);
 | 
							 rec->strings + rec->part_number_idx);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (lb_part) {
 | 
						if (lb_part) {
 | 
				
			||||||
		printf("Overwritten by command line, vendor ID: %s, part ID: %s.\n", lb_vendor, lb_part);
 | 
							msg_pdbg("Overwritten by command line, vendor ID: %s, part ID: %s.\n", lb_vendor, lb_part);
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		partvendor_from_cbtable = 1;
 | 
							partvendor_from_cbtable = 1;
 | 
				
			||||||
		lb_part = strdup(part);
 | 
							lb_part = strdup(part);
 | 
				
			||||||
@@ -235,16 +235,16 @@ int coreboot_init(void)
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!lb_table) {
 | 
						if (!lb_table) {
 | 
				
			||||||
		printf("No coreboot table found.\n");
 | 
							msg_pinfo("No coreboot table found.\n");
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	addr = ((char *)lb_table) - ((char *)table_area) + start;
 | 
						addr = ((char *)lb_table) - ((char *)table_area) + start;
 | 
				
			||||||
	fprintf(stdout, "coreboot table found at 0x%lx.\n", 
 | 
						msg_pinfo("coreboot table found at 0x%lx.\n", 
 | 
				
			||||||
		(unsigned long)lb_table - (unsigned long)table_area + start);
 | 
							(unsigned long)lb_table - (unsigned long)table_area + start);
 | 
				
			||||||
	rec = (struct lb_record *)(((char *)lb_table) + lb_table->header_bytes);
 | 
						rec = (struct lb_record *)(((char *)lb_table) + lb_table->header_bytes);
 | 
				
			||||||
	last = (struct lb_record *)(((char *)rec) + lb_table->table_bytes);
 | 
						last = (struct lb_record *)(((char *)rec) + lb_table->table_bytes);
 | 
				
			||||||
	printf_debug("coreboot header(%d) checksum: %04x table(%d) checksum: %04x entries: %d\n",
 | 
						msg_pdbg("coreboot header(%d) checksum: %04x table(%d) checksum: %04x entries: %d\n",
 | 
				
			||||||
	     lb_table->header_bytes, lb_table->header_checksum,
 | 
						     lb_table->header_bytes, lb_table->header_checksum,
 | 
				
			||||||
	     lb_table->table_bytes, lb_table->table_checksum,
 | 
						     lb_table->table_bytes, lb_table->table_checksum,
 | 
				
			||||||
	     lb_table->table_entries);
 | 
						     lb_table->table_entries);
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										216
									
								
								chipset_enable.c
									
									
									
									
									
								
							
							
						
						
									
										216
									
								
								chipset_enable.c
									
									
									
									
									
								
							@@ -74,8 +74,8 @@ static int enable_flash_sis_mapping(struct pci_dev *dev, const char *name)
 | 
				
			|||||||
	pci_write_byte(dev, 0x40, new);
 | 
						pci_write_byte(dev, 0x40, new);
 | 
				
			||||||
	newer = pci_read_byte(dev, 0x40);
 | 
						newer = pci_read_byte(dev, 0x40);
 | 
				
			||||||
	if (newer != new) {
 | 
						if (newer != new) {
 | 
				
			||||||
		printf_debug("tried to set register 0x%x to 0x%x on %s failed (WARNING ONLY)\n", 0x40, new, name);
 | 
							msg_pinfo("tried to set register 0x%x to 0x%x on %s failed (WARNING ONLY)\n", 0x40, new, name);
 | 
				
			||||||
		printf_debug("Stuck at 0x%x\n", newer);
 | 
							msg_pinfo("Stuck at 0x%x\n", newer);
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
@@ -91,9 +91,9 @@ static struct pci_dev *find_southbridge(uint16_t vendor, const char *name)
 | 
				
			|||||||
	if (!sbdev)
 | 
						if (!sbdev)
 | 
				
			||||||
		sbdev = pci_dev_find_vendorclass(vendor, 0x0000);
 | 
							sbdev = pci_dev_find_vendorclass(vendor, 0x0000);
 | 
				
			||||||
	if (!sbdev)
 | 
						if (!sbdev)
 | 
				
			||||||
		fprintf(stderr, "No southbridge found for %s!\n", name);
 | 
							msg_perr("No southbridge found for %s!\n", name);
 | 
				
			||||||
	if (sbdev)
 | 
						if (sbdev)
 | 
				
			||||||
		printf_debug("Found southbridge %04x:%04x at %02x:%02x:%01x\n",
 | 
							msg_pdbg("Found southbridge %04x:%04x at %02x:%02x:%01x\n",
 | 
				
			||||||
			     sbdev->vendor_id, sbdev->device_id,
 | 
								     sbdev->vendor_id, sbdev->device_id,
 | 
				
			||||||
			     sbdev->bus, sbdev->dev, sbdev->func);
 | 
								     sbdev->bus, sbdev->dev, sbdev->func);
 | 
				
			||||||
	return sbdev;
 | 
						return sbdev;
 | 
				
			||||||
@@ -162,8 +162,8 @@ static int enable_flash_sis530(struct pci_dev *dev, const char *name)
 | 
				
			|||||||
	pci_write_byte(sbdev, 0x45, new);
 | 
						pci_write_byte(sbdev, 0x45, new);
 | 
				
			||||||
	newer = pci_read_byte(sbdev, 0x45);
 | 
						newer = pci_read_byte(sbdev, 0x45);
 | 
				
			||||||
	if (newer != new) {
 | 
						if (newer != new) {
 | 
				
			||||||
		printf_debug("tried to set register 0x%x to 0x%x on %s failed (WARNING ONLY)\n", 0x45, new, name);
 | 
							msg_pinfo("tried to set register 0x%x to 0x%x on %s failed (WARNING ONLY)\n", 0x45, new, name);
 | 
				
			||||||
		printf_debug("Stuck at 0x%x\n", newer);
 | 
							msg_pinfo("Stuck at 0x%x\n", newer);
 | 
				
			||||||
		ret = -1;
 | 
							ret = -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -188,8 +188,8 @@ static int enable_flash_sis540(struct pci_dev *dev, const char *name)
 | 
				
			|||||||
	pci_write_byte(sbdev, 0x45, new);
 | 
						pci_write_byte(sbdev, 0x45, new);
 | 
				
			||||||
	newer = pci_read_byte(sbdev, 0x45);
 | 
						newer = pci_read_byte(sbdev, 0x45);
 | 
				
			||||||
	if (newer != new) {
 | 
						if (newer != new) {
 | 
				
			||||||
		printf_debug("tried to set register 0x%x to 0x%x on %s failed (WARNING ONLY)\n", 0x45, new, name);
 | 
							msg_pinfo("tried to set register 0x%x to 0x%x on %s failed (WARNING ONLY)\n", 0x45, new, name);
 | 
				
			||||||
		printf_debug("Stuck at 0x%x\n", newer);
 | 
							msg_pinfo("Stuck at 0x%x\n", newer);
 | 
				
			||||||
		ret = -1;
 | 
							ret = -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -235,7 +235,7 @@ static int enable_flash_piix4(struct pci_dev *dev, const char *name)
 | 
				
			|||||||
	pci_write_word(dev, xbcs, new);
 | 
						pci_write_word(dev, xbcs, new);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (pci_read_word(dev, xbcs) != new) {
 | 
						if (pci_read_word(dev, xbcs) != new) {
 | 
				
			||||||
		printf_debug("tried to set 0x%x to 0x%x on %s failed (WARNING ONLY)\n", xbcs, new, name);
 | 
							msg_pinfo("tried to set 0x%x to 0x%x on %s failed (WARNING ONLY)\n", xbcs, new, name);
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -257,11 +257,11 @@ static int enable_flash_ich(struct pci_dev *dev, const char *name,
 | 
				
			|||||||
	 */
 | 
						 */
 | 
				
			||||||
	old = pci_read_byte(dev, bios_cntl);
 | 
						old = pci_read_byte(dev, bios_cntl);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	printf_debug("\nBIOS Lock Enable: %sabled, ",
 | 
						msg_pdbg("\nBIOS Lock Enable: %sabled, ",
 | 
				
			||||||
		     (old & (1 << 1)) ? "en" : "dis");
 | 
							     (old & (1 << 1)) ? "en" : "dis");
 | 
				
			||||||
	printf_debug("BIOS Write Enable: %sabled, ",
 | 
						msg_pdbg("BIOS Write Enable: %sabled, ",
 | 
				
			||||||
		     (old & (1 << 0)) ? "en" : "dis");
 | 
							     (old & (1 << 0)) ? "en" : "dis");
 | 
				
			||||||
	printf_debug("BIOS_CNTL is 0x%x\n", old);
 | 
						msg_pdbg("BIOS_CNTL is 0x%x\n", old);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	new = old | 1;
 | 
						new = old | 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -271,7 +271,7 @@ static int enable_flash_ich(struct pci_dev *dev, const char *name,
 | 
				
			|||||||
	pci_write_byte(dev, bios_cntl, new);
 | 
						pci_write_byte(dev, bios_cntl, new);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (pci_read_byte(dev, bios_cntl) != new) {
 | 
						if (pci_read_byte(dev, bios_cntl) != new) {
 | 
				
			||||||
		printf_debug("tried to set 0x%x to 0x%x on %s failed (WARNING ONLY)\n", bios_cntl, new, name);
 | 
							msg_pinfo("tried to set 0x%x to 0x%x on %s failed (WARNING ONLY)\n", bios_cntl, new, name);
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -306,7 +306,7 @@ static int enable_flash_ich_dc(struct pci_dev *dev, const char *name)
 | 
				
			|||||||
		fwh_conf = (uint32_t)strtoul(idsel, NULL, 0);
 | 
							fwh_conf = (uint32_t)strtoul(idsel, NULL, 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		/* FIXME: Need to undo this on shutdown. */
 | 
							/* FIXME: Need to undo this on shutdown. */
 | 
				
			||||||
		printf("\nSetting IDSEL=0x%x for top 16 MB", fwh_conf);
 | 
							msg_pinfo("\nSetting IDSEL=0x%x for top 16 MB", fwh_conf);
 | 
				
			||||||
		pci_write_long(dev, 0xd0, fwh_conf);
 | 
							pci_write_long(dev, 0xd0, fwh_conf);
 | 
				
			||||||
		pci_write_word(dev, 0xd4, fwh_conf);
 | 
							pci_write_word(dev, 0xd4, fwh_conf);
 | 
				
			||||||
		/* FIXME: Decode settings are not changed. */
 | 
							/* FIXME: Decode settings are not changed. */
 | 
				
			||||||
@@ -321,7 +321,7 @@ static int enable_flash_ich_dc(struct pci_dev *dev, const char *name)
 | 
				
			|||||||
	fwh_conf = pci_read_long(dev, 0xd0);
 | 
						fwh_conf = pci_read_long(dev, 0xd0);
 | 
				
			||||||
	for (i = 7; i >= 0; i--) {
 | 
						for (i = 7; i >= 0; i--) {
 | 
				
			||||||
		tmp = (fwh_conf >> (i * 4)) & 0xf;
 | 
							tmp = (fwh_conf >> (i * 4)) & 0xf;
 | 
				
			||||||
		printf_debug("\n0x%08x/0x%08x FWH IDSEL: 0x%x",
 | 
							msg_pdbg("\n0x%08x/0x%08x FWH IDSEL: 0x%x",
 | 
				
			||||||
			     (0x1ff8 + i) * 0x80000,
 | 
								     (0x1ff8 + i) * 0x80000,
 | 
				
			||||||
			     (0x1ff0 + i) * 0x80000,
 | 
								     (0x1ff0 + i) * 0x80000,
 | 
				
			||||||
			     tmp);
 | 
								     tmp);
 | 
				
			||||||
@@ -335,7 +335,7 @@ static int enable_flash_ich_dc(struct pci_dev *dev, const char *name)
 | 
				
			|||||||
	fwh_conf = pci_read_word(dev, 0xd4);
 | 
						fwh_conf = pci_read_word(dev, 0xd4);
 | 
				
			||||||
	for (i = 3; i >= 0; i--) {
 | 
						for (i = 3; i >= 0; i--) {
 | 
				
			||||||
		tmp = (fwh_conf >> (i * 4)) & 0xf;
 | 
							tmp = (fwh_conf >> (i * 4)) & 0xf;
 | 
				
			||||||
		printf_debug("\n0x%08x/0x%08x FWH IDSEL: 0x%x",
 | 
							msg_pdbg("\n0x%08x/0x%08x FWH IDSEL: 0x%x",
 | 
				
			||||||
			     (0xff4 + i) * 0x100000,
 | 
								     (0xff4 + i) * 0x100000,
 | 
				
			||||||
			     (0xff0 + i) * 0x100000,
 | 
								     (0xff0 + i) * 0x100000,
 | 
				
			||||||
			     tmp);
 | 
								     tmp);
 | 
				
			||||||
@@ -350,7 +350,7 @@ static int enable_flash_ich_dc(struct pci_dev *dev, const char *name)
 | 
				
			|||||||
	fwh_conf = pci_read_word(dev, 0xd8);
 | 
						fwh_conf = pci_read_word(dev, 0xd8);
 | 
				
			||||||
	for (i = 7; i >= 0; i--) {
 | 
						for (i = 7; i >= 0; i--) {
 | 
				
			||||||
		tmp = (fwh_conf >> (i + 0x8)) & 0x1;
 | 
							tmp = (fwh_conf >> (i + 0x8)) & 0x1;
 | 
				
			||||||
		printf_debug("\n0x%08x/0x%08x FWH decode %sabled",
 | 
							msg_pdbg("\n0x%08x/0x%08x FWH decode %sabled",
 | 
				
			||||||
			     (0x1ff8 + i) * 0x80000,
 | 
								     (0x1ff8 + i) * 0x80000,
 | 
				
			||||||
			     (0x1ff0 + i) * 0x80000,
 | 
								     (0x1ff0 + i) * 0x80000,
 | 
				
			||||||
			     tmp ? "en" : "dis");
 | 
								     tmp ? "en" : "dis");
 | 
				
			||||||
@@ -362,7 +362,7 @@ static int enable_flash_ich_dc(struct pci_dev *dev, const char *name)
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	for (i = 3; i >= 0; i--) {
 | 
						for (i = 3; i >= 0; i--) {
 | 
				
			||||||
		tmp = (fwh_conf >> i) & 0x1;
 | 
							tmp = (fwh_conf >> i) & 0x1;
 | 
				
			||||||
		printf_debug("\n0x%08x/0x%08x FWH decode %sabled",
 | 
							msg_pdbg("\n0x%08x/0x%08x FWH decode %sabled",
 | 
				
			||||||
			     (0xff4 + i) * 0x100000,
 | 
								     (0xff4 + i) * 0x100000,
 | 
				
			||||||
			     (0xff0 + i) * 0x100000,
 | 
								     (0xff0 + i) * 0x100000,
 | 
				
			||||||
			     tmp ? "en" : "dis");
 | 
								     tmp ? "en" : "dis");
 | 
				
			||||||
@@ -373,7 +373,7 @@ static int enable_flash_ich_dc(struct pci_dev *dev, const char *name)
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	max_rom_decode.fwh = min(max_decode_fwh_idsel, max_decode_fwh_decode);
 | 
						max_rom_decode.fwh = min(max_decode_fwh_idsel, max_decode_fwh_decode);
 | 
				
			||||||
	printf_debug("\nMaximum FWH chip size: 0x%x bytes", max_rom_decode.fwh);
 | 
						msg_pdbg("\nMaximum FWH chip size: 0x%x bytes", max_rom_decode.fwh);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* If we're called by enable_flash_ich_dc_spi, it will override
 | 
						/* If we're called by enable_flash_ich_dc_spi, it will override
 | 
				
			||||||
	 * buses_supported anyway.
 | 
						 * buses_supported anyway.
 | 
				
			||||||
@@ -391,7 +391,7 @@ static int enable_flash_poulsbo(struct pci_dev *dev, const char *name)
 | 
				
			|||||||
               return err;
 | 
					               return err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
       old = pci_read_byte(dev, 0xd9);
 | 
					       old = pci_read_byte(dev, 0xd9);
 | 
				
			||||||
       printf_debug("BIOS Prefetch Enable: %sabled, ",
 | 
					       msg_pdbg("BIOS Prefetch Enable: %sabled, ",
 | 
				
			||||||
                    (old & 1) ? "en" : "dis");
 | 
					                    (old & 1) ? "en" : "dis");
 | 
				
			||||||
       new = old & ~1;
 | 
					       new = old & ~1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -413,10 +413,10 @@ static int enable_flash_vt8237s_spi(struct pci_dev *dev, const char *name)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	/* Do we really need no write enable? */
 | 
						/* Do we really need no write enable? */
 | 
				
			||||||
	mmio_base = (pci_read_long(dev, 0xbc)) << 8;
 | 
						mmio_base = (pci_read_long(dev, 0xbc)) << 8;
 | 
				
			||||||
	printf_debug("MMIO base at = 0x%x\n", mmio_base);
 | 
						msg_pdbg("MMIO base at = 0x%x\n", mmio_base);
 | 
				
			||||||
	spibar = physmap("VT8237S MMIO registers", mmio_base, 0x70);
 | 
						spibar = physmap("VT8237S MMIO registers", mmio_base, 0x70);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	printf_debug("0x6c: 0x%04x     (CLOCK/DEBUG)\n",
 | 
						msg_pdbg("0x6c: 0x%04x     (CLOCK/DEBUG)\n",
 | 
				
			||||||
		     mmio_readw(spibar + 0x6c));
 | 
							     mmio_readw(spibar + 0x6c));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Not sure if it speaks all these bus protocols. */
 | 
						/* Not sure if it speaks all these bus protocols. */
 | 
				
			||||||
@@ -444,20 +444,20 @@ static int enable_flash_ich_dc_spi(struct pci_dev *dev, const char *name,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	/* Get physical address of Root Complex Register Block */
 | 
						/* Get physical address of Root Complex Register Block */
 | 
				
			||||||
	tmp = pci_read_long(dev, 0xf0) & 0xffffc000;
 | 
						tmp = pci_read_long(dev, 0xf0) & 0xffffc000;
 | 
				
			||||||
	printf_debug("\nRoot Complex Register Block address = 0x%x\n", tmp);
 | 
						msg_pdbg("\nRoot Complex Register Block address = 0x%x\n", tmp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Map RCBA to virtual memory */
 | 
						/* Map RCBA to virtual memory */
 | 
				
			||||||
	rcrb = physmap("ICH RCRB", tmp, 0x4000);
 | 
						rcrb = physmap("ICH RCRB", tmp, 0x4000);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	gcs = mmio_readl(rcrb + 0x3410);
 | 
						gcs = mmio_readl(rcrb + 0x3410);
 | 
				
			||||||
	printf_debug("GCS = 0x%x: ", gcs);
 | 
						msg_pdbg("GCS = 0x%x: ", gcs);
 | 
				
			||||||
	printf_debug("BIOS Interface Lock-Down: %sabled, ",
 | 
						msg_pdbg("BIOS Interface Lock-Down: %sabled, ",
 | 
				
			||||||
		     (gcs & 0x1) ? "en" : "dis");
 | 
							     (gcs & 0x1) ? "en" : "dis");
 | 
				
			||||||
	bbs = (gcs >> 10) & 0x3;
 | 
						bbs = (gcs >> 10) & 0x3;
 | 
				
			||||||
	printf_debug("BOOT BIOS Straps: 0x%x (%s)\n", bbs, straps_names[bbs]);
 | 
						msg_pdbg("BOOT BIOS Straps: 0x%x (%s)\n", bbs, straps_names[bbs]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	buc = mmio_readb(rcrb + 0x3414);
 | 
						buc = mmio_readb(rcrb + 0x3414);
 | 
				
			||||||
	printf_debug("Top Swap : %s\n",
 | 
						msg_pdbg("Top Swap : %s\n",
 | 
				
			||||||
		     (buc & 1) ? "enabled (A16 inverted)" : "not enabled");
 | 
							     (buc & 1) ? "enabled (A16 inverted)" : "not enabled");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* It seems the ICH7 does not support SPI and LPC chips at the same
 | 
						/* It seems the ICH7 does not support SPI and LPC chips at the same
 | 
				
			||||||
@@ -492,105 +492,105 @@ static int enable_flash_ich_dc_spi(struct pci_dev *dev, const char *name,
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* SPIBAR is at RCRB+0x3020 for ICH[78] and RCRB+0x3800 for ICH9. */
 | 
						/* SPIBAR is at RCRB+0x3020 for ICH[78] and RCRB+0x3800 for ICH9. */
 | 
				
			||||||
	printf_debug("SPIBAR = 0x%x + 0x%04x\n", tmp, spibar_offset);
 | 
						msg_pdbg("SPIBAR = 0x%x + 0x%04x\n", tmp, spibar_offset);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Assign Virtual Address */
 | 
						/* Assign Virtual Address */
 | 
				
			||||||
	spibar = rcrb + spibar_offset;
 | 
						spibar = rcrb + spibar_offset;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	switch (spi_controller) {
 | 
						switch (spi_controller) {
 | 
				
			||||||
	case SPI_CONTROLLER_ICH7:
 | 
						case SPI_CONTROLLER_ICH7:
 | 
				
			||||||
		printf_debug("0x00: 0x%04x     (SPIS)\n",
 | 
							msg_pdbg("0x00: 0x%04x     (SPIS)\n",
 | 
				
			||||||
			     mmio_readw(spibar + 0));
 | 
								     mmio_readw(spibar + 0));
 | 
				
			||||||
		printf_debug("0x02: 0x%04x     (SPIC)\n",
 | 
							msg_pdbg("0x02: 0x%04x     (SPIC)\n",
 | 
				
			||||||
			     mmio_readw(spibar + 2));
 | 
								     mmio_readw(spibar + 2));
 | 
				
			||||||
		printf_debug("0x04: 0x%08x (SPIA)\n",
 | 
							msg_pdbg("0x04: 0x%08x (SPIA)\n",
 | 
				
			||||||
			     mmio_readl(spibar + 4));
 | 
								     mmio_readl(spibar + 4));
 | 
				
			||||||
		for (i = 0; i < 8; i++) {
 | 
							for (i = 0; i < 8; i++) {
 | 
				
			||||||
			int offs;
 | 
								int offs;
 | 
				
			||||||
			offs = 8 + (i * 8);
 | 
								offs = 8 + (i * 8);
 | 
				
			||||||
			printf_debug("0x%02x: 0x%08x (SPID%d)\n", offs,
 | 
								msg_pdbg("0x%02x: 0x%08x (SPID%d)\n", offs,
 | 
				
			||||||
				     mmio_readl(spibar + offs), i);
 | 
									     mmio_readl(spibar + offs), i);
 | 
				
			||||||
			printf_debug("0x%02x: 0x%08x (SPID%d+4)\n", offs + 4,
 | 
								msg_pdbg("0x%02x: 0x%08x (SPID%d+4)\n", offs + 4,
 | 
				
			||||||
				     mmio_readl(spibar + offs + 4), i);
 | 
									     mmio_readl(spibar + offs + 4), i);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		printf_debug("0x50: 0x%08x (BBAR)\n",
 | 
							msg_pdbg("0x50: 0x%08x (BBAR)\n",
 | 
				
			||||||
			     mmio_readl(spibar + 0x50));
 | 
								     mmio_readl(spibar + 0x50));
 | 
				
			||||||
		printf_debug("0x54: 0x%04x     (PREOP)\n",
 | 
							msg_pdbg("0x54: 0x%04x     (PREOP)\n",
 | 
				
			||||||
			     mmio_readw(spibar + 0x54));
 | 
								     mmio_readw(spibar + 0x54));
 | 
				
			||||||
		printf_debug("0x56: 0x%04x     (OPTYPE)\n",
 | 
							msg_pdbg("0x56: 0x%04x     (OPTYPE)\n",
 | 
				
			||||||
			     mmio_readw(spibar + 0x56));
 | 
								     mmio_readw(spibar + 0x56));
 | 
				
			||||||
		printf_debug("0x58: 0x%08x (OPMENU)\n",
 | 
							msg_pdbg("0x58: 0x%08x (OPMENU)\n",
 | 
				
			||||||
			     mmio_readl(spibar + 0x58));
 | 
								     mmio_readl(spibar + 0x58));
 | 
				
			||||||
		printf_debug("0x5c: 0x%08x (OPMENU+4)\n",
 | 
							msg_pdbg("0x5c: 0x%08x (OPMENU+4)\n",
 | 
				
			||||||
			     mmio_readl(spibar + 0x5c));
 | 
								     mmio_readl(spibar + 0x5c));
 | 
				
			||||||
		for (i = 0; i < 4; i++) {
 | 
							for (i = 0; i < 4; i++) {
 | 
				
			||||||
			int offs;
 | 
								int offs;
 | 
				
			||||||
			offs = 0x60 + (i * 4);
 | 
								offs = 0x60 + (i * 4);
 | 
				
			||||||
			printf_debug("0x%02x: 0x%08x (PBR%d)\n", offs,
 | 
								msg_pdbg("0x%02x: 0x%08x (PBR%d)\n", offs,
 | 
				
			||||||
				     mmio_readl(spibar + offs), i);
 | 
									     mmio_readl(spibar + offs), i);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		printf_debug("\n");
 | 
							msg_pdbg("\n");
 | 
				
			||||||
		if (mmio_readw(spibar) & (1 << 15)) {
 | 
							if (mmio_readw(spibar) & (1 << 15)) {
 | 
				
			||||||
			printf("WARNING: SPI Configuration Lockdown activated.\n");
 | 
								msg_pinfo("WARNING: SPI Configuration Lockdown activated.\n");
 | 
				
			||||||
			ichspi_lock = 1;
 | 
								ichspi_lock = 1;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		ich_init_opcodes();
 | 
							ich_init_opcodes();
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	case SPI_CONTROLLER_ICH9:
 | 
						case SPI_CONTROLLER_ICH9:
 | 
				
			||||||
		tmp2 = mmio_readw(spibar + 4);
 | 
							tmp2 = mmio_readw(spibar + 4);
 | 
				
			||||||
		printf_debug("0x04: 0x%04x (HSFS)\n", tmp2);
 | 
							msg_pdbg("0x04: 0x%04x (HSFS)\n", tmp2);
 | 
				
			||||||
		printf_debug("FLOCKDN %i, ", (tmp2 >> 15 & 1));
 | 
							msg_pdbg("FLOCKDN %i, ", (tmp2 >> 15 & 1));
 | 
				
			||||||
		printf_debug("FDV %i, ", (tmp2 >> 14) & 1);
 | 
							msg_pdbg("FDV %i, ", (tmp2 >> 14) & 1);
 | 
				
			||||||
		printf_debug("FDOPSS %i, ", (tmp2 >> 13) & 1);
 | 
							msg_pdbg("FDOPSS %i, ", (tmp2 >> 13) & 1);
 | 
				
			||||||
		printf_debug("SCIP %i, ", (tmp2 >> 5) & 1);
 | 
							msg_pdbg("SCIP %i, ", (tmp2 >> 5) & 1);
 | 
				
			||||||
		printf_debug("BERASE %i, ", (tmp2 >> 3) & 3);
 | 
							msg_pdbg("BERASE %i, ", (tmp2 >> 3) & 3);
 | 
				
			||||||
		printf_debug("AEL %i, ", (tmp2 >> 2) & 1);
 | 
							msg_pdbg("AEL %i, ", (tmp2 >> 2) & 1);
 | 
				
			||||||
		printf_debug("FCERR %i, ", (tmp2 >> 1) & 1);
 | 
							msg_pdbg("FCERR %i, ", (tmp2 >> 1) & 1);
 | 
				
			||||||
		printf_debug("FDONE %i\n", (tmp2 >> 0) & 1);
 | 
							msg_pdbg("FDONE %i\n", (tmp2 >> 0) & 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		tmp = mmio_readl(spibar + 0x50);
 | 
							tmp = mmio_readl(spibar + 0x50);
 | 
				
			||||||
		printf_debug("0x50: 0x%08x (FRAP)\n", tmp);
 | 
							msg_pdbg("0x50: 0x%08x (FRAP)\n", tmp);
 | 
				
			||||||
		printf_debug("BMWAG %i, ", (tmp >> 24) & 0xff);
 | 
							msg_pdbg("BMWAG %i, ", (tmp >> 24) & 0xff);
 | 
				
			||||||
		printf_debug("BMRAG %i, ", (tmp >> 16) & 0xff);
 | 
							msg_pdbg("BMRAG %i, ", (tmp >> 16) & 0xff);
 | 
				
			||||||
		printf_debug("BRWA %i, ", (tmp >> 8) & 0xff);
 | 
							msg_pdbg("BRWA %i, ", (tmp >> 8) & 0xff);
 | 
				
			||||||
		printf_debug("BRRA %i\n", (tmp >> 0) & 0xff);
 | 
							msg_pdbg("BRRA %i\n", (tmp >> 0) & 0xff);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		printf_debug("0x54: 0x%08x (FREG0)\n",
 | 
							msg_pdbg("0x54: 0x%08x (FREG0)\n",
 | 
				
			||||||
			     mmio_readl(spibar + 0x54));
 | 
								     mmio_readl(spibar + 0x54));
 | 
				
			||||||
		printf_debug("0x58: 0x%08x (FREG1)\n",
 | 
							msg_pdbg("0x58: 0x%08x (FREG1)\n",
 | 
				
			||||||
			     mmio_readl(spibar + 0x58));
 | 
								     mmio_readl(spibar + 0x58));
 | 
				
			||||||
		printf_debug("0x5C: 0x%08x (FREG2)\n",
 | 
							msg_pdbg("0x5C: 0x%08x (FREG2)\n",
 | 
				
			||||||
			     mmio_readl(spibar + 0x5C));
 | 
								     mmio_readl(spibar + 0x5C));
 | 
				
			||||||
		printf_debug("0x60: 0x%08x (FREG3)\n",
 | 
							msg_pdbg("0x60: 0x%08x (FREG3)\n",
 | 
				
			||||||
			     mmio_readl(spibar + 0x60));
 | 
								     mmio_readl(spibar + 0x60));
 | 
				
			||||||
		printf_debug("0x64: 0x%08x (FREG4)\n",
 | 
							msg_pdbg("0x64: 0x%08x (FREG4)\n",
 | 
				
			||||||
			     mmio_readl(spibar + 0x64));
 | 
								     mmio_readl(spibar + 0x64));
 | 
				
			||||||
		printf_debug("0x74: 0x%08x (PR0)\n",
 | 
							msg_pdbg("0x74: 0x%08x (PR0)\n",
 | 
				
			||||||
			     mmio_readl(spibar + 0x74));
 | 
								     mmio_readl(spibar + 0x74));
 | 
				
			||||||
		printf_debug("0x78: 0x%08x (PR1)\n",
 | 
							msg_pdbg("0x78: 0x%08x (PR1)\n",
 | 
				
			||||||
			     mmio_readl(spibar + 0x78));
 | 
								     mmio_readl(spibar + 0x78));
 | 
				
			||||||
		printf_debug("0x7C: 0x%08x (PR2)\n",
 | 
							msg_pdbg("0x7C: 0x%08x (PR2)\n",
 | 
				
			||||||
			     mmio_readl(spibar + 0x7C));
 | 
								     mmio_readl(spibar + 0x7C));
 | 
				
			||||||
		printf_debug("0x80: 0x%08x (PR3)\n",
 | 
							msg_pdbg("0x80: 0x%08x (PR3)\n",
 | 
				
			||||||
			     mmio_readl(spibar + 0x80));
 | 
								     mmio_readl(spibar + 0x80));
 | 
				
			||||||
		printf_debug("0x84: 0x%08x (PR4)\n",
 | 
							msg_pdbg("0x84: 0x%08x (PR4)\n",
 | 
				
			||||||
			     mmio_readl(spibar + 0x84));
 | 
								     mmio_readl(spibar + 0x84));
 | 
				
			||||||
		printf_debug("0x90: 0x%08x (SSFS, SSFC)\n",
 | 
							msg_pdbg("0x90: 0x%08x (SSFS, SSFC)\n",
 | 
				
			||||||
			     mmio_readl(spibar + 0x90));
 | 
								     mmio_readl(spibar + 0x90));
 | 
				
			||||||
		printf_debug("0x94: 0x%04x     (PREOP)\n",
 | 
							msg_pdbg("0x94: 0x%04x     (PREOP)\n",
 | 
				
			||||||
			     mmio_readw(spibar + 0x94));
 | 
								     mmio_readw(spibar + 0x94));
 | 
				
			||||||
		printf_debug("0x96: 0x%04x     (OPTYPE)\n",
 | 
							msg_pdbg("0x96: 0x%04x     (OPTYPE)\n",
 | 
				
			||||||
			     mmio_readw(spibar + 0x96));
 | 
								     mmio_readw(spibar + 0x96));
 | 
				
			||||||
		printf_debug("0x98: 0x%08x (OPMENU)\n",
 | 
							msg_pdbg("0x98: 0x%08x (OPMENU)\n",
 | 
				
			||||||
			     mmio_readl(spibar + 0x98));
 | 
								     mmio_readl(spibar + 0x98));
 | 
				
			||||||
		printf_debug("0x9C: 0x%08x (OPMENU+4)\n",
 | 
							msg_pdbg("0x9C: 0x%08x (OPMENU+4)\n",
 | 
				
			||||||
			     mmio_readl(spibar + 0x9C));
 | 
								     mmio_readl(spibar + 0x9C));
 | 
				
			||||||
		printf_debug("0xA0: 0x%08x (BBAR)\n",
 | 
							msg_pdbg("0xA0: 0x%08x (BBAR)\n",
 | 
				
			||||||
			     mmio_readl(spibar + 0xA0));
 | 
								     mmio_readl(spibar + 0xA0));
 | 
				
			||||||
		printf_debug("0xB0: 0x%08x (FDOC)\n",
 | 
							msg_pdbg("0xB0: 0x%08x (FDOC)\n",
 | 
				
			||||||
			     mmio_readl(spibar + 0xB0));
 | 
								     mmio_readl(spibar + 0xB0));
 | 
				
			||||||
		if (tmp2 & (1 << 15)) {
 | 
							if (tmp2 & (1 << 15)) {
 | 
				
			||||||
			printf("WARNING: SPI Configuration Lockdown activated.\n");
 | 
								msg_pinfo("WARNING: SPI Configuration Lockdown activated.\n");
 | 
				
			||||||
			ichspi_lock = 1;
 | 
								ichspi_lock = 1;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		ich_init_opcodes();
 | 
							ich_init_opcodes();
 | 
				
			||||||
@@ -601,18 +601,18 @@ static int enable_flash_ich_dc_spi(struct pci_dev *dev, const char *name,
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	old = pci_read_byte(dev, 0xdc);
 | 
						old = pci_read_byte(dev, 0xdc);
 | 
				
			||||||
	printf_debug("SPI Read Configuration: ");
 | 
						msg_pdbg("SPI Read Configuration: ");
 | 
				
			||||||
	new = (old >> 2) & 0x3;
 | 
						new = (old >> 2) & 0x3;
 | 
				
			||||||
	switch (new) {
 | 
						switch (new) {
 | 
				
			||||||
	case 0:
 | 
						case 0:
 | 
				
			||||||
	case 1:
 | 
						case 1:
 | 
				
			||||||
	case 2:
 | 
						case 2:
 | 
				
			||||||
		printf_debug("prefetching %sabled, caching %sabled, ",
 | 
							msg_pdbg("prefetching %sabled, caching %sabled, ",
 | 
				
			||||||
			     (new & 0x2) ? "en" : "dis",
 | 
								     (new & 0x2) ? "en" : "dis",
 | 
				
			||||||
			     (new & 0x1) ? "dis" : "en");
 | 
								     (new & 0x1) ? "dis" : "en");
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	default:
 | 
						default:
 | 
				
			||||||
		printf_debug("invalid prefetching/caching settings, ");
 | 
							msg_pdbg("invalid prefetching/caching settings, ");
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -652,7 +652,7 @@ static int enable_flash_vt823x(struct pci_dev *dev, const char *name)
 | 
				
			|||||||
	pci_write_byte(dev, 0x40, val);
 | 
						pci_write_byte(dev, 0x40, val);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (pci_read_byte(dev, 0x40) != val) {
 | 
						if (pci_read_byte(dev, 0x40) != val) {
 | 
				
			||||||
		printf("\nWARNING: Failed to enable flash write on \"%s\"\n",
 | 
							msg_pinfo("\nWARNING: Failed to enable flash write on \"%s\"\n",
 | 
				
			||||||
		       name);
 | 
							       name);
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -769,7 +769,7 @@ static int enable_flash_sc1100(struct pci_dev *dev, const char *name)
 | 
				
			|||||||
	new = pci_read_byte(dev, 0x52);
 | 
						new = pci_read_byte(dev, 0x52);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (new != 0xee) {
 | 
						if (new != 0xee) {
 | 
				
			||||||
		printf_debug("tried to set register 0x%x to 0x%x on %s failed (WARNING ONLY)\n", 0x52, new, name);
 | 
							msg_pinfo("tried to set register 0x%x to 0x%x on %s failed (WARNING ONLY)\n", 0x52, new, name);
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -787,7 +787,7 @@ static int enable_flash_amd8111(struct pci_dev *dev, const char *name)
 | 
				
			|||||||
	if (new != old) {
 | 
						if (new != old) {
 | 
				
			||||||
		pci_write_byte(dev, 0x43, new);
 | 
							pci_write_byte(dev, 0x43, new);
 | 
				
			||||||
		if (pci_read_byte(dev, 0x43) != new) {
 | 
							if (pci_read_byte(dev, 0x43) != new) {
 | 
				
			||||||
			printf_debug("tried to set 0x%x to 0x%x on %s failed (WARNING ONLY)\n", 0x43, new, name);
 | 
								msg_pinfo("tried to set 0x%x to 0x%x on %s failed (WARNING ONLY)\n", 0x43, new, name);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -799,7 +799,7 @@ static int enable_flash_amd8111(struct pci_dev *dev, const char *name)
 | 
				
			|||||||
	pci_write_byte(dev, 0x40, new);
 | 
						pci_write_byte(dev, 0x40, new);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (pci_read_byte(dev, 0x40) != new) {
 | 
						if (pci_read_byte(dev, 0x40) != new) {
 | 
				
			||||||
		printf_debug("tried to set 0x%x to 0x%x on %s failed (WARNING ONLY)\n", 0x40, new, name);
 | 
							msg_pinfo("tried to set 0x%x to 0x%x on %s failed (WARNING ONLY)\n", 0x40, new, name);
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -819,7 +819,7 @@ static int enable_flash_sb600(struct pci_dev *dev, const char *name)
 | 
				
			|||||||
		/* No protection flags for this region?*/
 | 
							/* No protection flags for this region?*/
 | 
				
			||||||
		if ((prot & 0x3) == 0)
 | 
							if ((prot & 0x3) == 0)
 | 
				
			||||||
			continue;
 | 
								continue;
 | 
				
			||||||
		printf_debug("SB600 %s%sprotected from %u to %u\n",
 | 
							msg_pinfo("SB600 %s%sprotected from %u to %u\n",
 | 
				
			||||||
			(prot & 0x1) ? "write " : "",
 | 
								(prot & 0x1) ? "write " : "",
 | 
				
			||||||
			(prot & 0x2) ? "read " : "",
 | 
								(prot & 0x2) ? "read " : "",
 | 
				
			||||||
			(prot & 0xfffffc00),
 | 
								(prot & 0xfffffc00),
 | 
				
			||||||
@@ -828,7 +828,7 @@ static int enable_flash_sb600(struct pci_dev *dev, const char *name)
 | 
				
			|||||||
		pci_write_byte(dev, reg, prot);
 | 
							pci_write_byte(dev, reg, prot);
 | 
				
			||||||
		prot = pci_read_long(dev, reg);
 | 
							prot = pci_read_long(dev, reg);
 | 
				
			||||||
		if (prot & 0x3)
 | 
							if (prot & 0x3)
 | 
				
			||||||
			printf("SB600 %s%sunprotect failed from %u to %u\n",
 | 
								msg_perr("SB600 %s%sunprotect failed from %u to %u\n",
 | 
				
			||||||
				(prot & 0x1) ? "write " : "",
 | 
									(prot & 0x1) ? "write " : "",
 | 
				
			||||||
				(prot & 0x2) ? "read " : "",
 | 
									(prot & 0x2) ? "read " : "",
 | 
				
			||||||
				(prot & 0xfffffc00),
 | 
									(prot & 0xfffffc00),
 | 
				
			||||||
@@ -838,7 +838,7 @@ static int enable_flash_sb600(struct pci_dev *dev, const char *name)
 | 
				
			|||||||
	/* Read SPI_BaseAddr */
 | 
						/* Read SPI_BaseAddr */
 | 
				
			||||||
	tmp = pci_read_long(dev, 0xa0);
 | 
						tmp = pci_read_long(dev, 0xa0);
 | 
				
			||||||
	tmp &= 0xffffffe0;	/* remove bits 4-0 (reserved) */
 | 
						tmp &= 0xffffffe0;	/* remove bits 4-0 (reserved) */
 | 
				
			||||||
	printf_debug("SPI base address is at 0x%x\n", tmp);
 | 
						msg_pdbg("SPI base address is at 0x%x\n", tmp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* If the BAR has address 0, it is unlikely SPI is used. */
 | 
						/* If the BAR has address 0, it is unlikely SPI is used. */
 | 
				
			||||||
	if (!tmp)
 | 
						if (!tmp)
 | 
				
			||||||
@@ -854,17 +854,17 @@ static int enable_flash_sb600(struct pci_dev *dev, const char *name)
 | 
				
			|||||||
		sb600_spibar += tmp & 0xfff;
 | 
							sb600_spibar += tmp & 0xfff;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		tmp = pci_read_long(dev, 0xa0);
 | 
							tmp = pci_read_long(dev, 0xa0);
 | 
				
			||||||
		printf_debug("AltSpiCSEnable=%i, SpiRomEnable=%i, "
 | 
							msg_pdbg("AltSpiCSEnable=%i, SpiRomEnable=%i, "
 | 
				
			||||||
			     "AbortEnable=%i\n", tmp & 0x1, (tmp & 0x2) >> 1,
 | 
								     "AbortEnable=%i\n", tmp & 0x1, (tmp & 0x2) >> 1,
 | 
				
			||||||
			     (tmp & 0x4) >> 2);
 | 
								     (tmp & 0x4) >> 2);
 | 
				
			||||||
		tmp = (pci_read_byte(dev, 0xba) & 0x4) >> 2;
 | 
							tmp = (pci_read_byte(dev, 0xba) & 0x4) >> 2;
 | 
				
			||||||
		printf_debug("PrefetchEnSPIFromIMC=%i, ", tmp);
 | 
							msg_pdbg("PrefetchEnSPIFromIMC=%i, ", tmp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		tmp = pci_read_byte(dev, 0xbb);
 | 
							tmp = pci_read_byte(dev, 0xbb);
 | 
				
			||||||
		printf_debug("PrefetchEnSPIFromHost=%i, SpiOpEnInLpcMode=%i\n",
 | 
							msg_pdbg("PrefetchEnSPIFromHost=%i, SpiOpEnInLpcMode=%i\n",
 | 
				
			||||||
			     tmp & 0x1, (tmp & 0x20) >> 5);
 | 
								     tmp & 0x1, (tmp & 0x20) >> 5);
 | 
				
			||||||
		tmp = mmio_readl(sb600_spibar);
 | 
							tmp = mmio_readl(sb600_spibar);
 | 
				
			||||||
		printf_debug("SpiArbEnable=%i, SpiAccessMacRomEn=%i, "
 | 
							msg_pdbg("SpiArbEnable=%i, SpiAccessMacRomEn=%i, "
 | 
				
			||||||
			     "SpiHostAccessRomEn=%i, ArbWaitCount=%i, "
 | 
								     "SpiHostAccessRomEn=%i, ArbWaitCount=%i, "
 | 
				
			||||||
			     "SpiBridgeDisable=%i, DropOneClkOnRd=%i\n",
 | 
								     "SpiBridgeDisable=%i, DropOneClkOnRd=%i\n",
 | 
				
			||||||
			     (tmp >> 19) & 0x1, (tmp >> 22) & 0x1,
 | 
								     (tmp >> 19) & 0x1, (tmp >> 22) & 0x1,
 | 
				
			||||||
@@ -876,7 +876,7 @@ static int enable_flash_sb600(struct pci_dev *dev, const char *name)
 | 
				
			|||||||
	smbus_dev = pci_dev_find(0x1002, 0x4385);
 | 
						smbus_dev = pci_dev_find(0x1002, 0x4385);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (has_spi && !smbus_dev) {
 | 
						if (has_spi && !smbus_dev) {
 | 
				
			||||||
		fprintf(stderr, "ERROR: SMBus device not found. Not enabling SPI.\n");
 | 
							msg_perr("ERROR: SMBus device not found. Not enabling SPI.\n");
 | 
				
			||||||
		has_spi = 0;
 | 
							has_spi = 0;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (has_spi) {
 | 
						if (has_spi) {
 | 
				
			||||||
@@ -884,22 +884,22 @@ static int enable_flash_sb600(struct pci_dev *dev, const char *name)
 | 
				
			|||||||
		/* GPIO11/SPI_DO and GPIO12/SPI_DI status */
 | 
							/* GPIO11/SPI_DO and GPIO12/SPI_DI status */
 | 
				
			||||||
		reg = pci_read_byte(smbus_dev, 0xAB);
 | 
							reg = pci_read_byte(smbus_dev, 0xAB);
 | 
				
			||||||
		reg &= 0xC0;
 | 
							reg &= 0xC0;
 | 
				
			||||||
		printf_debug("GPIO11 used for %s\n", (reg & (1 << 6)) ? "GPIO" : "SPI_DO");
 | 
							msg_pdbg("GPIO11 used for %s\n", (reg & (1 << 6)) ? "GPIO" : "SPI_DO");
 | 
				
			||||||
		printf_debug("GPIO12 used for %s\n", (reg & (1 << 7)) ? "GPIO" : "SPI_DI");
 | 
							msg_pdbg("GPIO12 used for %s\n", (reg & (1 << 7)) ? "GPIO" : "SPI_DI");
 | 
				
			||||||
		if (reg != 0x00)
 | 
							if (reg != 0x00)
 | 
				
			||||||
			has_spi = 0;
 | 
								has_spi = 0;
 | 
				
			||||||
		/* GPIO31/SPI_HOLD and GPIO32/SPI_CS status */
 | 
							/* GPIO31/SPI_HOLD and GPIO32/SPI_CS status */
 | 
				
			||||||
		reg = pci_read_byte(smbus_dev, 0x83);
 | 
							reg = pci_read_byte(smbus_dev, 0x83);
 | 
				
			||||||
		reg &= 0xC0;
 | 
							reg &= 0xC0;
 | 
				
			||||||
		printf_debug("GPIO31 used for %s\n", (reg & (1 << 6)) ? "GPIO" : "SPI_HOLD");
 | 
							msg_pdbg("GPIO31 used for %s\n", (reg & (1 << 6)) ? "GPIO" : "SPI_HOLD");
 | 
				
			||||||
		printf_debug("GPIO32 used for %s\n", (reg & (1 << 7)) ? "GPIO" : "SPI_CS");
 | 
							msg_pdbg("GPIO32 used for %s\n", (reg & (1 << 7)) ? "GPIO" : "SPI_CS");
 | 
				
			||||||
		/* SPI_HOLD is not used on all boards, filter it out. */
 | 
							/* SPI_HOLD is not used on all boards, filter it out. */
 | 
				
			||||||
		if ((reg & 0x80) != 0x00)
 | 
							if ((reg & 0x80) != 0x00)
 | 
				
			||||||
			has_spi = 0;
 | 
								has_spi = 0;
 | 
				
			||||||
		/* GPIO47/SPI_CLK status */
 | 
							/* GPIO47/SPI_CLK status */
 | 
				
			||||||
		reg = pci_read_byte(smbus_dev, 0xA7);
 | 
							reg = pci_read_byte(smbus_dev, 0xA7);
 | 
				
			||||||
		reg &= 0x40;
 | 
							reg &= 0x40;
 | 
				
			||||||
		printf_debug("GPIO47 used for %s\n", (reg & (1 << 6)) ? "GPIO" : "SPI_CLK");
 | 
							msg_pdbg("GPIO47 used for %s\n", (reg & (1 << 6)) ? "GPIO" : "SPI_CLK");
 | 
				
			||||||
		if (reg != 0x00)
 | 
							if (reg != 0x00)
 | 
				
			||||||
			has_spi = 0;
 | 
								has_spi = 0;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -914,24 +914,24 @@ static int enable_flash_sb600(struct pci_dev *dev, const char *name)
 | 
				
			|||||||
	OUTB(0x8f, 0xcd6);
 | 
						OUTB(0x8f, 0xcd6);
 | 
				
			||||||
	reg = INB(0xcd7);
 | 
						reg = INB(0xcd7);
 | 
				
			||||||
	reg &= 0x0e;
 | 
						reg &= 0x0e;
 | 
				
			||||||
	printf_debug("ROM strap override is %sactive", (reg & 0x02) ? "" : "not ");
 | 
						msg_pdbg("ROM strap override is %sactive", (reg & 0x02) ? "" : "not ");
 | 
				
			||||||
	if (reg & 0x02) {
 | 
						if (reg & 0x02) {
 | 
				
			||||||
		switch ((reg & 0x0c) >> 2) {
 | 
							switch ((reg & 0x0c) >> 2) {
 | 
				
			||||||
		case 0x00:
 | 
							case 0x00:
 | 
				
			||||||
			printf_debug(": LPC");
 | 
								msg_pdbg(": LPC");
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		case 0x01:
 | 
							case 0x01:
 | 
				
			||||||
			printf_debug(": PCI");
 | 
								msg_pdbg(": PCI");
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		case 0x02:
 | 
							case 0x02:
 | 
				
			||||||
			printf_debug(": FWH");
 | 
								msg_pdbg(": FWH");
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		case 0x03:
 | 
							case 0x03:
 | 
				
			||||||
			printf_debug(": SPI");
 | 
								msg_pdbg(": SPI");
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	printf_debug("\n");
 | 
						msg_pdbg("\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Force enable SPI ROM in SB600 PM register.
 | 
						/* Force enable SPI ROM in SB600 PM register.
 | 
				
			||||||
	 * If we enable SPI ROM here, we have to disable it after we leave.
 | 
						 * If we enable SPI ROM here, we have to disable it after we leave.
 | 
				
			||||||
@@ -970,7 +970,7 @@ static int enable_flash_ck804(struct pci_dev *dev, const char *name)
 | 
				
			|||||||
	if (new != old) {
 | 
						if (new != old) {
 | 
				
			||||||
		pci_write_byte(dev, 0x88, new);
 | 
							pci_write_byte(dev, 0x88, new);
 | 
				
			||||||
		if (pci_read_byte(dev, 0x88) != new) {
 | 
							if (pci_read_byte(dev, 0x88) != new) {
 | 
				
			||||||
			printf_debug("tried to set 0x%x to 0x%x on %s failed (WARNING ONLY)\n", 0x88, new, name);
 | 
								msg_pinfo("tried to set 0x%x to 0x%x on %s failed (WARNING ONLY)\n", 0x88, new, name);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -981,7 +981,7 @@ static int enable_flash_ck804(struct pci_dev *dev, const char *name)
 | 
				
			|||||||
	pci_write_byte(dev, 0x6d, new);
 | 
						pci_write_byte(dev, 0x6d, new);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (pci_read_byte(dev, 0x6d) != new) {
 | 
						if (pci_read_byte(dev, 0x6d) != new) {
 | 
				
			||||||
		printf_debug("tried to set 0x%x to 0x%x on %s failed (WARNING ONLY)\n", 0x6d, new, name);
 | 
							msg_pinfo("tried to set 0x%x to 0x%x on %s failed (WARNING ONLY)\n", 0x6d, new, name);
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -998,7 +998,7 @@ static int enable_flash_sb400(struct pci_dev *dev, const char *name)
 | 
				
			|||||||
	smbusdev = pci_dev_find(0x1002, 0x4372);
 | 
						smbusdev = pci_dev_find(0x1002, 0x4372);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!smbusdev) {
 | 
						if (!smbusdev) {
 | 
				
			||||||
		fprintf(stderr, "ERROR: SMBus device not found. Aborting.\n");
 | 
							msg_perr("ERROR: SMBus device not found. Aborting.\n");
 | 
				
			||||||
		exit(1);
 | 
							exit(1);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1047,7 +1047,7 @@ static int enable_flash_mcp55(struct pci_dev *dev, const char *name)
 | 
				
			|||||||
	pci_write_byte(dev, 0x6d, new);
 | 
						pci_write_byte(dev, 0x6d, new);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (pci_read_byte(dev, 0x6d) != new) {
 | 
						if (pci_read_byte(dev, 0x6d) != new) {
 | 
				
			||||||
		printf_debug("tried to set 0x%x to 0x%x on %s failed (WARNING ONLY)\n", 0x6d, new, name);
 | 
							msg_pinfo("tried to set 0x%x to 0x%x on %s failed (WARNING ONLY)\n", 0x6d, new, name);
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1277,7 +1277,7 @@ static int get_flashbase_sc520(struct pci_dev *dev, const char *name)
 | 
				
			|||||||
			flashbase = parx << 12;
 | 
								flashbase = parx << 12;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		printf("AMD Elan SC520 detected, but no BOOTCS. Assuming flash at 4G\n");
 | 
							msg_pinfo("AMD Elan SC520 detected, but no BOOTCS. Assuming flash at 4G\n");
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* 4. Clean up */
 | 
						/* 4. Clean up */
 | 
				
			||||||
@@ -1436,18 +1436,18 @@ int chipset_flash_enable(void)
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (dev) {
 | 
						if (dev) {
 | 
				
			||||||
		printf("Found chipset \"%s %s\", enabling flash write... ",
 | 
							msg_pinfo("Found chipset \"%s %s\", enabling flash write... ",
 | 
				
			||||||
		       chipset_enables[i].vendor_name,
 | 
							       chipset_enables[i].vendor_name,
 | 
				
			||||||
		       chipset_enables[i].device_name);
 | 
							       chipset_enables[i].device_name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		ret = chipset_enables[i].doit(dev,
 | 
							ret = chipset_enables[i].doit(dev,
 | 
				
			||||||
					      chipset_enables[i].device_name);
 | 
										      chipset_enables[i].device_name);
 | 
				
			||||||
		if (ret)
 | 
							if (ret)
 | 
				
			||||||
			printf("FAILED!\n");
 | 
								msg_pinfo("FAILED!\n");
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			printf("OK.\n");
 | 
								msg_pinfo("OK.\n");
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	printf("This chipset supports the following protocols: %s.\n",
 | 
						msg_pinfo("This chipset supports the following protocols: %s.\n",
 | 
				
			||||||
	       flashbuses_to_text(buses_supported));
 | 
						       flashbuses_to_text(buses_supported));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return ret;
 | 
						return ret;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										13
									
								
								dmi.c
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								dmi.c
									
									
									
									
									
								
							@@ -53,12 +53,12 @@ static char *get_dmi_string(const char *string_name)
 | 
				
			|||||||
		 "%s -s %s", dmidecode_command, string_name);
 | 
							 "%s -s %s", dmidecode_command, string_name);
 | 
				
			||||||
	dmidecode_pipe = popen(commandline, "r");
 | 
						dmidecode_pipe = popen(commandline, "r");
 | 
				
			||||||
	if (!dmidecode_pipe) {
 | 
						if (!dmidecode_pipe) {
 | 
				
			||||||
		printf_debug("DMI pipe open error\n");
 | 
							msg_perr("DMI pipe open error\n");
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (!fgets(answerbuf, DMI_MAX_ANSWER_LEN, dmidecode_pipe)) {
 | 
						if (!fgets(answerbuf, DMI_MAX_ANSWER_LEN, dmidecode_pipe)) {
 | 
				
			||||||
		if(ferror(dmidecode_pipe)) {
 | 
							if(ferror(dmidecode_pipe)) {
 | 
				
			||||||
			printf_debug("DMI pipe read error\n");
 | 
								msg_perr("DMI pipe read error\n");
 | 
				
			||||||
			pclose(dmidecode_pipe);
 | 
								pclose(dmidecode_pipe);
 | 
				
			||||||
			return NULL;
 | 
								return NULL;
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
@@ -70,7 +70,8 @@ static char *get_dmi_string(const char *string_name)
 | 
				
			|||||||
	while (!feof(dmidecode_pipe))
 | 
						while (!feof(dmidecode_pipe))
 | 
				
			||||||
		getc(dmidecode_pipe);
 | 
							getc(dmidecode_pipe);
 | 
				
			||||||
	if (pclose(dmidecode_pipe) != 0) {
 | 
						if (pclose(dmidecode_pipe) != 0) {
 | 
				
			||||||
		printf_debug("DMI pipe close error\n");
 | 
							msg_pinfo("dmidecode execution unsucessfull - continuing "
 | 
				
			||||||
 | 
								"without DMI info\n");
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -78,7 +79,7 @@ static char *get_dmi_string(const char *string_name)
 | 
				
			|||||||
	if (answerbuf[0] != 0 &&
 | 
						if (answerbuf[0] != 0 &&
 | 
				
			||||||
	    answerbuf[strlen(answerbuf) - 1] == '\n')
 | 
						    answerbuf[strlen(answerbuf) - 1] == '\n')
 | 
				
			||||||
		answerbuf[strlen(answerbuf) - 1] = 0;
 | 
							answerbuf[strlen(answerbuf) - 1] = 0;
 | 
				
			||||||
	printf_debug("DMI string %s: \"%s\"\n", string_name, answerbuf);
 | 
						msg_pdbg("DMI string %s: \"%s\"\n", string_name, answerbuf);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	result = strdup(answerbuf);
 | 
						result = strdup(answerbuf);
 | 
				
			||||||
	if (!result)
 | 
						if (!result)
 | 
				
			||||||
@@ -104,7 +105,7 @@ void dmi_init(void)
 | 
				
			|||||||
	chassis_type = get_dmi_string("chassis-type");
 | 
						chassis_type = get_dmi_string("chassis-type");
 | 
				
			||||||
	if (chassis_type && (!strcmp(chassis_type, "Notebook") ||
 | 
						if (chassis_type && (!strcmp(chassis_type, "Notebook") ||
 | 
				
			||||||
			     !strcmp(chassis_type, "Portable"))) {
 | 
								     !strcmp(chassis_type, "Portable"))) {
 | 
				
			||||||
		printf_debug("Laptop detected via DMI\n");
 | 
							msg_pdbg("Laptop detected via DMI\n");
 | 
				
			||||||
		is_laptop = 1;
 | 
							is_laptop = 1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	free(chassis_type);
 | 
						free(chassis_type);
 | 
				
			||||||
@@ -126,7 +127,7 @@ static int dmi_compare(const char *value, const char *pattern)
 | 
				
			|||||||
	int anchored = 0;
 | 
						int anchored = 0;
 | 
				
			||||||
	int patternlen;
 | 
						int patternlen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	printf_debug("matching %s against %s\n", value, pattern);
 | 
						msg_pspew("matching %s against %s\n", value, pattern);
 | 
				
			||||||
	/* The empty string is part of all strings! */
 | 
						/* The empty string is part of all strings! */
 | 
				
			||||||
	if (pattern[0] == 0)
 | 
						if (pattern[0] == 0)
 | 
				
			||||||
		return 1;
 | 
							return 1;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										142
									
								
								flashrom.c
									
									
									
									
									
								
							
							
						
						
									
										142
									
								
								flashrom.c
									
									
									
									
									
								
							@@ -520,7 +520,7 @@ char *extract_param(char **haystack, char *needle, char *delim)
 | 
				
			|||||||
		if (devlen) {
 | 
							if (devlen) {
 | 
				
			||||||
			dev = malloc(devlen + 1);
 | 
								dev = malloc(devlen + 1);
 | 
				
			||||||
			if (!dev) {
 | 
								if (!dev) {
 | 
				
			||||||
				fprintf(stderr, "Out of memory!\n");
 | 
									msg_gerr("Out of memory!\n");
 | 
				
			||||||
				exit(1);
 | 
									exit(1);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			strncpy(dev, param_pos, devlen);
 | 
								strncpy(dev, param_pos, devlen);
 | 
				
			||||||
@@ -532,7 +532,7 @@ char *extract_param(char **haystack, char *needle, char *delim)
 | 
				
			|||||||
		memmove(param_pos, rest, strlen(rest) + 1);
 | 
							memmove(param_pos, rest, strlen(rest) + 1);
 | 
				
			||||||
		tmp = realloc(*haystack, strlen(*haystack) + 1);
 | 
							tmp = realloc(*haystack, strlen(*haystack) + 1);
 | 
				
			||||||
		if (!tmp) {
 | 
							if (!tmp) {
 | 
				
			||||||
			fprintf(stderr, "Out of memory!\n");
 | 
								msg_gerr("Out of memory!\n");
 | 
				
			||||||
			exit(1);
 | 
								exit(1);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		*haystack = tmp;
 | 
							*haystack = tmp;
 | 
				
			||||||
@@ -549,7 +549,7 @@ int check_erased_range(struct flashchip *flash, int start, int len)
 | 
				
			|||||||
	uint8_t *cmpbuf = malloc(len);
 | 
						uint8_t *cmpbuf = malloc(len);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!cmpbuf) {
 | 
						if (!cmpbuf) {
 | 
				
			||||||
		fprintf(stderr, "Could not allocate memory!\n");
 | 
							msg_gerr("Could not allocate memory!\n");
 | 
				
			||||||
		exit(1);
 | 
							exit(1);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	memset(cmpbuf, 0xff, len);
 | 
						memset(cmpbuf, 0xff, len);
 | 
				
			||||||
@@ -577,16 +577,16 @@ int verify_range(struct flashchip *flash, uint8_t *cmpbuf, int start, int len, c
 | 
				
			|||||||
		goto out_free;
 | 
							goto out_free;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!flash->read) {
 | 
						if (!flash->read) {
 | 
				
			||||||
		fprintf(stderr, "ERROR: flashrom has no read function for this flash chip.\n");
 | 
							msg_cerr("ERROR: flashrom has no read function for this flash chip.\n");
 | 
				
			||||||
		return 1;
 | 
							return 1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (!readbuf) {
 | 
						if (!readbuf) {
 | 
				
			||||||
		fprintf(stderr, "Could not allocate memory!\n");
 | 
							msg_gerr("Could not allocate memory!\n");
 | 
				
			||||||
		exit(1);
 | 
							exit(1);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (start + len > flash->total_size * 1024) {
 | 
						if (start + len > flash->total_size * 1024) {
 | 
				
			||||||
		fprintf(stderr, "Error: %s called with start 0x%x + len 0x%x >"
 | 
							msg_gerr("Error: %s called with start 0x%x + len 0x%x >"
 | 
				
			||||||
			" total_size 0x%x\n", __func__, start, len,
 | 
								" total_size 0x%x\n", __func__, start, len,
 | 
				
			||||||
			flash->total_size * 1024);
 | 
								flash->total_size * 1024);
 | 
				
			||||||
		ret = -1;
 | 
							ret = -1;
 | 
				
			||||||
@@ -614,7 +614,7 @@ int verify_range(struct flashchip *flash, uint8_t *cmpbuf, int start, int len, c
 | 
				
			|||||||
			if (cmpbuf[starthere - start + j] != readbuf[j]) {
 | 
								if (cmpbuf[starthere - start + j] != readbuf[j]) {
 | 
				
			||||||
				/* Only print the first failure. */
 | 
									/* Only print the first failure. */
 | 
				
			||||||
				if (!failcount++)
 | 
									if (!failcount++)
 | 
				
			||||||
					fprintf(stderr, "%s FAILED at 0x%08x! "
 | 
										msg_cerr("%s FAILED at 0x%08x! "
 | 
				
			||||||
						"Expected=0x%02x, Read=0x%02x,",
 | 
											"Expected=0x%02x, Read=0x%02x,",
 | 
				
			||||||
						message, starthere + j,
 | 
											message, starthere + j,
 | 
				
			||||||
						cmpbuf[starthere - start + j],
 | 
											cmpbuf[starthere - start + j],
 | 
				
			||||||
@@ -623,7 +623,7 @@ int verify_range(struct flashchip *flash, uint8_t *cmpbuf, int start, int len, c
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (failcount) {
 | 
						if (failcount) {
 | 
				
			||||||
		fprintf(stderr, " failed byte count from 0x%08x-0x%08x: 0x%x\n",
 | 
							msg_cerr(" failed byte count from 0x%08x-0x%08x: 0x%x\n",
 | 
				
			||||||
			start, start + len - 1, failcount);
 | 
								start, start + len - 1, failcount);
 | 
				
			||||||
		ret = -1;
 | 
							ret = -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -748,7 +748,7 @@ int generate_testpattern(uint8_t *buf, uint32_t size, int variant)
 | 
				
			|||||||
	int i;
 | 
						int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!buf) {
 | 
						if (!buf) {
 | 
				
			||||||
		fprintf(stderr, "Invalid buffer!\n");
 | 
							msg_gerr("Invalid buffer!\n");
 | 
				
			||||||
		return 1;
 | 
							return 1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -836,7 +836,7 @@ int check_max_decode(enum chipbustype buses, uint32_t size)
 | 
				
			|||||||
	if ((buses & CHIP_BUSTYPE_PARALLEL) &&
 | 
						if ((buses & CHIP_BUSTYPE_PARALLEL) &&
 | 
				
			||||||
	    (max_rom_decode.parallel < size)) {
 | 
						    (max_rom_decode.parallel < size)) {
 | 
				
			||||||
		limitexceeded++;
 | 
							limitexceeded++;
 | 
				
			||||||
		printf_debug("Chip size %u kB is bigger than supported "
 | 
							msg_pdbg("Chip size %u kB is bigger than supported "
 | 
				
			||||||
			     "size %u kB of chipset/board/programmer "
 | 
								     "size %u kB of chipset/board/programmer "
 | 
				
			||||||
			     "for %s interface, "
 | 
								     "for %s interface, "
 | 
				
			||||||
			     "probe/read/erase/write may fail. ", size / 1024,
 | 
								     "probe/read/erase/write may fail. ", size / 1024,
 | 
				
			||||||
@@ -844,7 +844,7 @@ int check_max_decode(enum chipbustype buses, uint32_t size)
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	if ((buses & CHIP_BUSTYPE_LPC) && (max_rom_decode.lpc < size)) {
 | 
						if ((buses & CHIP_BUSTYPE_LPC) && (max_rom_decode.lpc < size)) {
 | 
				
			||||||
		limitexceeded++;
 | 
							limitexceeded++;
 | 
				
			||||||
		printf_debug("Chip size %u kB is bigger than supported "
 | 
							msg_pdbg("Chip size %u kB is bigger than supported "
 | 
				
			||||||
			     "size %u kB of chipset/board/programmer "
 | 
								     "size %u kB of chipset/board/programmer "
 | 
				
			||||||
			     "for %s interface, "
 | 
								     "for %s interface, "
 | 
				
			||||||
			     "probe/read/erase/write may fail. ", size / 1024,
 | 
								     "probe/read/erase/write may fail. ", size / 1024,
 | 
				
			||||||
@@ -852,7 +852,7 @@ int check_max_decode(enum chipbustype buses, uint32_t size)
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	if ((buses & CHIP_BUSTYPE_FWH) && (max_rom_decode.fwh < size)) {
 | 
						if ((buses & CHIP_BUSTYPE_FWH) && (max_rom_decode.fwh < size)) {
 | 
				
			||||||
		limitexceeded++;
 | 
							limitexceeded++;
 | 
				
			||||||
		printf_debug("Chip size %u kB is bigger than supported "
 | 
							msg_pdbg("Chip size %u kB is bigger than supported "
 | 
				
			||||||
			     "size %u kB of chipset/board/programmer "
 | 
								     "size %u kB of chipset/board/programmer "
 | 
				
			||||||
			     "for %s interface, "
 | 
								     "for %s interface, "
 | 
				
			||||||
			     "probe/read/erase/write may fail. ", size / 1024,
 | 
								     "probe/read/erase/write may fail. ", size / 1024,
 | 
				
			||||||
@@ -860,7 +860,7 @@ int check_max_decode(enum chipbustype buses, uint32_t size)
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	if ((buses & CHIP_BUSTYPE_SPI) && (max_rom_decode.spi < size)) {
 | 
						if ((buses & CHIP_BUSTYPE_SPI) && (max_rom_decode.spi < size)) {
 | 
				
			||||||
		limitexceeded++;
 | 
							limitexceeded++;
 | 
				
			||||||
		printf_debug("Chip size %u kB is bigger than supported "
 | 
							msg_pdbg("Chip size %u kB is bigger than supported "
 | 
				
			||||||
			     "size %u kB of chipset/board/programmer "
 | 
								     "size %u kB of chipset/board/programmer "
 | 
				
			||||||
			     "for %s interface, "
 | 
								     "for %s interface, "
 | 
				
			||||||
			     "probe/read/erase/write may fail. ", size / 1024,
 | 
								     "probe/read/erase/write may fail. ", size / 1024,
 | 
				
			||||||
@@ -873,7 +873,7 @@ int check_max_decode(enum chipbustype buses, uint32_t size)
 | 
				
			|||||||
	 */
 | 
						 */
 | 
				
			||||||
	if (bitcount(buses) > limitexceeded)
 | 
						if (bitcount(buses) > limitexceeded)
 | 
				
			||||||
		/* FIXME: This message is designed towards CLI users. */
 | 
							/* FIXME: This message is designed towards CLI users. */
 | 
				
			||||||
		printf_debug("There is at least one common chip/programmer "
 | 
							msg_pdbg("There is at least one common chip/programmer "
 | 
				
			||||||
			     "interface which can support a chip of this size. "
 | 
								     "interface which can support a chip of this size. "
 | 
				
			||||||
			     "You can try --force at your own risk.\n");
 | 
								     "You can try --force at your own risk.\n");
 | 
				
			||||||
	return 1;
 | 
						return 1;
 | 
				
			||||||
@@ -934,7 +934,7 @@ notfound:
 | 
				
			|||||||
	if (!flash || !flash->name)
 | 
						if (!flash || !flash->name)
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	printf("%s chip \"%s %s\" (%d KB, %s) at physical address 0x%lx.\n",
 | 
						msg_cinfo("%s chip \"%s %s\" (%d KB, %s) at physical address 0x%lx.\n",
 | 
				
			||||||
	       force ? "Assuming" : "Found",
 | 
						       force ? "Assuming" : "Found",
 | 
				
			||||||
	       flash->vendor, flash->name, flash->total_size,
 | 
						       flash->vendor, flash->name, flash->total_size,
 | 
				
			||||||
	       flashbuses_to_text(flash->bustype), base);
 | 
						       flashbuses_to_text(flash->bustype), base);
 | 
				
			||||||
@@ -950,12 +950,12 @@ int verify_flash(struct flashchip *flash, uint8_t *buf)
 | 
				
			|||||||
	int ret;
 | 
						int ret;
 | 
				
			||||||
	int total_size = flash->total_size * 1024;
 | 
						int total_size = flash->total_size * 1024;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	printf("Verifying flash... ");
 | 
						msg_cinfo("Verifying flash... ");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ret = verify_range(flash, buf, 0, total_size, NULL);
 | 
						ret = verify_range(flash, buf, 0, total_size, NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!ret)
 | 
						if (!ret)
 | 
				
			||||||
		printf("VERIFIED.          \n");
 | 
							msg_cinfo("VERIFIED.          \n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return ret;
 | 
						return ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -968,17 +968,17 @@ int read_flash(struct flashchip *flash, char *filename)
 | 
				
			|||||||
	unsigned char *buf = calloc(size, sizeof(char));
 | 
						unsigned char *buf = calloc(size, sizeof(char));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!filename) {
 | 
						if (!filename) {
 | 
				
			||||||
		printf("Error: No filename specified.\n");
 | 
							msg_gerr("Error: No filename specified.\n");
 | 
				
			||||||
		return 1;
 | 
							return 1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if ((image = fopen(filename, "wb")) == NULL) {
 | 
						if ((image = fopen(filename, "wb")) == NULL) {
 | 
				
			||||||
		perror(filename);
 | 
							perror(filename);
 | 
				
			||||||
		exit(1);
 | 
							exit(1);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	printf("Reading flash... ");
 | 
						msg_cinfo("Reading flash... ");
 | 
				
			||||||
	if (!flash->read) {
 | 
						if (!flash->read) {
 | 
				
			||||||
		printf("FAILED!\n");
 | 
							msg_cinfo("FAILED!\n");
 | 
				
			||||||
		fprintf(stderr, "ERROR: flashrom has no read function for this flash chip.\n");
 | 
							msg_cerr("ERROR: flashrom has no read function for this flash chip.\n");
 | 
				
			||||||
		return 1;
 | 
							return 1;
 | 
				
			||||||
	} else
 | 
						} else
 | 
				
			||||||
		flash->read(flash, buf, 0, size);
 | 
							flash->read(flash, buf, 0, size);
 | 
				
			||||||
@@ -986,7 +986,7 @@ int read_flash(struct flashchip *flash, char *filename)
 | 
				
			|||||||
	numbytes = fwrite(buf, 1, size, image);
 | 
						numbytes = fwrite(buf, 1, size, image);
 | 
				
			||||||
	fclose(image);
 | 
						fclose(image);
 | 
				
			||||||
	free(buf);
 | 
						free(buf);
 | 
				
			||||||
	printf("%s.\n", numbytes == size ? "done" : "FAILED");
 | 
						msg_cinfo("%s.\n", numbytes == size ? "done" : "FAILED");
 | 
				
			||||||
	if (numbytes != size)
 | 
						if (numbytes != size)
 | 
				
			||||||
		return 1;
 | 
							return 1;
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
@@ -1028,7 +1028,7 @@ int selfcheck_eraseblocks(struct flashchip *flash)
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
		/* Empty eraseblock definition with erase function.  */
 | 
							/* Empty eraseblock definition with erase function.  */
 | 
				
			||||||
		if (!done && eraser.block_erase)
 | 
							if (!done && eraser.block_erase)
 | 
				
			||||||
			msg_pspew("Strange: Empty eraseblock definition with "
 | 
								msg_gspew("Strange: Empty eraseblock definition with "
 | 
				
			||||||
				"non-empty erase function. Not an error.\n");
 | 
									"non-empty erase function. Not an error.\n");
 | 
				
			||||||
		if (!done)
 | 
							if (!done)
 | 
				
			||||||
			continue;
 | 
								continue;
 | 
				
			||||||
@@ -1065,31 +1065,31 @@ int erase_flash(struct flashchip *flash)
 | 
				
			|||||||
	int i, j, k, ret = 0, found = 0;
 | 
						int i, j, k, ret = 0, found = 0;
 | 
				
			||||||
	unsigned int start, len;
 | 
						unsigned int start, len;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	printf("Erasing flash chip... ");
 | 
						msg_cinfo("Erasing flash chip... ");
 | 
				
			||||||
	for (k = 0; k < NUM_ERASEFUNCTIONS; k++) {
 | 
						for (k = 0; k < NUM_ERASEFUNCTIONS; k++) {
 | 
				
			||||||
		unsigned int done = 0;
 | 
							unsigned int done = 0;
 | 
				
			||||||
		struct block_eraser eraser = flash->block_erasers[k];
 | 
							struct block_eraser eraser = flash->block_erasers[k];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		printf_debug("Looking at blockwise erase function %i... ", k);
 | 
							msg_cdbg("Looking at blockwise erase function %i... ", k);
 | 
				
			||||||
		if (!eraser.block_erase && !eraser.eraseblocks[0].count) {
 | 
							if (!eraser.block_erase && !eraser.eraseblocks[0].count) {
 | 
				
			||||||
			printf_debug("not defined. "
 | 
								msg_cdbg("not defined. "
 | 
				
			||||||
				"Looking for another erase function.\n");
 | 
									"Looking for another erase function.\n");
 | 
				
			||||||
			continue;
 | 
								continue;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (!eraser.block_erase && eraser.eraseblocks[0].count) {
 | 
							if (!eraser.block_erase && eraser.eraseblocks[0].count) {
 | 
				
			||||||
			printf_debug("eraseblock layout is known, but no "
 | 
								msg_cdbg("eraseblock layout is known, but no "
 | 
				
			||||||
				"matching block erase function found. "
 | 
									"matching block erase function found. "
 | 
				
			||||||
				"Looking for another erase function.\n");
 | 
									"Looking for another erase function.\n");
 | 
				
			||||||
			continue;
 | 
								continue;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (eraser.block_erase && !eraser.eraseblocks[0].count) {
 | 
							if (eraser.block_erase && !eraser.eraseblocks[0].count) {
 | 
				
			||||||
			printf_debug("block erase function found, but "
 | 
								msg_cdbg("block erase function found, but "
 | 
				
			||||||
				"eraseblock layout is unknown. "
 | 
									"eraseblock layout is unknown. "
 | 
				
			||||||
				"Looking for another erase function.\n");
 | 
									"Looking for another erase function.\n");
 | 
				
			||||||
			continue;
 | 
								continue;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		found = 1;
 | 
							found = 1;
 | 
				
			||||||
		printf_debug("trying... ");
 | 
							msg_cdbg("trying... ");
 | 
				
			||||||
		for (i = 0; i < NUM_ERASEREGIONS; i++) {
 | 
							for (i = 0; i < NUM_ERASEREGIONS; i++) {
 | 
				
			||||||
			/* count==0 for all automatically initialized array
 | 
								/* count==0 for all automatically initialized array
 | 
				
			||||||
			 * members so the loop below won't be executed for them.
 | 
								 * members so the loop below won't be executed for them.
 | 
				
			||||||
@@ -1097,7 +1097,7 @@ int erase_flash(struct flashchip *flash)
 | 
				
			|||||||
			for (j = 0; j < eraser.eraseblocks[i].count; j++) {
 | 
								for (j = 0; j < eraser.eraseblocks[i].count; j++) {
 | 
				
			||||||
				start = done + eraser.eraseblocks[i].size * j;
 | 
									start = done + eraser.eraseblocks[i].size * j;
 | 
				
			||||||
				len = eraser.eraseblocks[i].size;
 | 
									len = eraser.eraseblocks[i].size;
 | 
				
			||||||
				printf_debug("0x%06x-0x%06x, ", start,
 | 
									msg_cdbg("0x%06x-0x%06x, ", start,
 | 
				
			||||||
					     start + len - 1);
 | 
										     start + len - 1);
 | 
				
			||||||
				ret = eraser.block_erase(flash, start, len);
 | 
									ret = eraser.block_erase(flash, start, len);
 | 
				
			||||||
				if (ret)
 | 
									if (ret)
 | 
				
			||||||
@@ -1108,27 +1108,27 @@ int erase_flash(struct flashchip *flash)
 | 
				
			|||||||
			done += eraser.eraseblocks[i].count *
 | 
								done += eraser.eraseblocks[i].count *
 | 
				
			||||||
				eraser.eraseblocks[i].size;
 | 
									eraser.eraseblocks[i].size;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		printf_debug("\n");
 | 
							msg_cdbg("\n");
 | 
				
			||||||
		/* If everything is OK, don't try another erase function. */
 | 
							/* If everything is OK, don't try another erase function. */
 | 
				
			||||||
		if (!ret)
 | 
							if (!ret)
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (!found) {
 | 
						if (!found) {
 | 
				
			||||||
		fprintf(stderr, "ERROR: flashrom has no erase function for this flash chip.\n");
 | 
							msg_cerr("ERROR: flashrom has no erase function for this flash chip.\n");
 | 
				
			||||||
		return 1;
 | 
							return 1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (ret) {
 | 
						if (ret) {
 | 
				
			||||||
		fprintf(stderr, "FAILED!\n");
 | 
							msg_cerr("FAILED!\n");
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		printf("SUCCESS.\n");
 | 
							msg_cinfo("SUCCESS.\n");
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return ret;
 | 
						return ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void emergency_help_message(void)
 | 
					void emergency_help_message(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	fprintf(stderr, "Your flash chip is in an unknown state.\n"
 | 
						msg_gerr("Your flash chip is in an unknown state.\n"
 | 
				
			||||||
		"Get help on IRC at irc.freenode.net (channel #flashrom) or\n"
 | 
							"Get help on IRC at irc.freenode.net (channel #flashrom) or\n"
 | 
				
			||||||
		"mail flashrom@flashrom.org!\n--------------------"
 | 
							"mail flashrom@flashrom.org!\n--------------------"
 | 
				
			||||||
		"-----------------------------------------------------------\n"
 | 
							"-----------------------------------------------------------\n"
 | 
				
			||||||
@@ -1140,11 +1140,11 @@ void list_programmers(char *delim)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
	enum programmer p;
 | 
						enum programmer p;
 | 
				
			||||||
	for (p = 0; p < PROGRAMMER_INVALID; p++) {
 | 
						for (p = 0; p < PROGRAMMER_INVALID; p++) {
 | 
				
			||||||
		printf("%s", programmer_table[p].name);
 | 
							msg_ginfo("%s", programmer_table[p].name);
 | 
				
			||||||
		if (p < PROGRAMMER_INVALID - 1)
 | 
							if (p < PROGRAMMER_INVALID - 1)
 | 
				
			||||||
			printf("%s", delim);
 | 
								msg_ginfo("%s", delim);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	printf("\n");	
 | 
						msg_ginfo("\n");	
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void print_sysinfo(void)
 | 
					void print_sysinfo(void)
 | 
				
			||||||
@@ -1183,7 +1183,7 @@ void print_sysinfo(void)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void print_version(void)
 | 
					void print_version(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	printf("flashrom v%s", flashrom_version);
 | 
						msg_ginfo("flashrom v%s\n", flashrom_version);
 | 
				
			||||||
	print_sysinfo();
 | 
						print_sysinfo();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1196,16 +1196,16 @@ int selfcheck(void)
 | 
				
			|||||||
	 * if more errors exist.
 | 
						 * if more errors exist.
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	if (ARRAY_SIZE(programmer_table) - 1 != PROGRAMMER_INVALID) {
 | 
						if (ARRAY_SIZE(programmer_table) - 1 != PROGRAMMER_INVALID) {
 | 
				
			||||||
		fprintf(stderr, "Programmer table miscompilation!\n");
 | 
							msg_gerr("Programmer table miscompilation!\n");
 | 
				
			||||||
		ret = 1;
 | 
							ret = 1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (spi_programmer_count - 1 != SPI_CONTROLLER_INVALID) {
 | 
						if (spi_programmer_count - 1 != SPI_CONTROLLER_INVALID) {
 | 
				
			||||||
		fprintf(stderr, "SPI programmer table miscompilation!\n");
 | 
							msg_gerr("SPI programmer table miscompilation!\n");
 | 
				
			||||||
		ret = 1;
 | 
							ret = 1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
#if BITBANG_SPI_SUPPORT == 1
 | 
					#if BITBANG_SPI_SUPPORT == 1
 | 
				
			||||||
	if (bitbang_spi_master_count - 1 != BITBANG_SPI_INVALID) {
 | 
						if (bitbang_spi_master_count - 1 != BITBANG_SPI_INVALID) {
 | 
				
			||||||
		fprintf(stderr, "Bitbanging SPI master table miscompilation!\n");
 | 
							msg_gerr("Bitbanging SPI master table miscompilation!\n");
 | 
				
			||||||
		ret = 1;
 | 
							ret = 1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@@ -1218,36 +1218,36 @@ int selfcheck(void)
 | 
				
			|||||||
void check_chip_supported(struct flashchip *flash)
 | 
					void check_chip_supported(struct flashchip *flash)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if (TEST_OK_MASK != (flash->tested & TEST_OK_MASK)) {
 | 
						if (TEST_OK_MASK != (flash->tested & TEST_OK_MASK)) {
 | 
				
			||||||
		printf("===\n");
 | 
							msg_cinfo("===\n");
 | 
				
			||||||
		if (flash->tested & TEST_BAD_MASK) {
 | 
							if (flash->tested & TEST_BAD_MASK) {
 | 
				
			||||||
			printf("This flash part has status NOT WORKING for operations:");
 | 
								msg_cinfo("This flash part has status NOT WORKING for operations:");
 | 
				
			||||||
			if (flash->tested & TEST_BAD_PROBE)
 | 
								if (flash->tested & TEST_BAD_PROBE)
 | 
				
			||||||
				printf(" PROBE");
 | 
									msg_cinfo(" PROBE");
 | 
				
			||||||
			if (flash->tested & TEST_BAD_READ)
 | 
								if (flash->tested & TEST_BAD_READ)
 | 
				
			||||||
				printf(" READ");
 | 
									msg_cinfo(" READ");
 | 
				
			||||||
			if (flash->tested & TEST_BAD_ERASE)
 | 
								if (flash->tested & TEST_BAD_ERASE)
 | 
				
			||||||
				printf(" ERASE");
 | 
									msg_cinfo(" ERASE");
 | 
				
			||||||
			if (flash->tested & TEST_BAD_WRITE)
 | 
								if (flash->tested & TEST_BAD_WRITE)
 | 
				
			||||||
				printf(" WRITE");
 | 
									msg_cinfo(" WRITE");
 | 
				
			||||||
			printf("\n");
 | 
								msg_cinfo("\n");
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if ((!(flash->tested & TEST_BAD_PROBE) && !(flash->tested & TEST_OK_PROBE)) ||
 | 
							if ((!(flash->tested & TEST_BAD_PROBE) && !(flash->tested & TEST_OK_PROBE)) ||
 | 
				
			||||||
		    (!(flash->tested & TEST_BAD_READ) && !(flash->tested & TEST_OK_READ)) ||
 | 
							    (!(flash->tested & TEST_BAD_READ) && !(flash->tested & TEST_OK_READ)) ||
 | 
				
			||||||
		    (!(flash->tested & TEST_BAD_ERASE) && !(flash->tested & TEST_OK_ERASE)) ||
 | 
							    (!(flash->tested & TEST_BAD_ERASE) && !(flash->tested & TEST_OK_ERASE)) ||
 | 
				
			||||||
		    (!(flash->tested & TEST_BAD_WRITE) && !(flash->tested & TEST_OK_WRITE))) {
 | 
							    (!(flash->tested & TEST_BAD_WRITE) && !(flash->tested & TEST_OK_WRITE))) {
 | 
				
			||||||
			printf("This flash part has status UNTESTED for operations:");
 | 
								msg_cinfo("This flash part has status UNTESTED for operations:");
 | 
				
			||||||
			if (!(flash->tested & TEST_BAD_PROBE) && !(flash->tested & TEST_OK_PROBE))
 | 
								if (!(flash->tested & TEST_BAD_PROBE) && !(flash->tested & TEST_OK_PROBE))
 | 
				
			||||||
				printf(" PROBE");
 | 
									msg_cinfo(" PROBE");
 | 
				
			||||||
			if (!(flash->tested & TEST_BAD_READ) && !(flash->tested & TEST_OK_READ))
 | 
								if (!(flash->tested & TEST_BAD_READ) && !(flash->tested & TEST_OK_READ))
 | 
				
			||||||
				printf(" READ");
 | 
									msg_cinfo(" READ");
 | 
				
			||||||
			if (!(flash->tested & TEST_BAD_ERASE) && !(flash->tested & TEST_OK_ERASE))
 | 
								if (!(flash->tested & TEST_BAD_ERASE) && !(flash->tested & TEST_OK_ERASE))
 | 
				
			||||||
				printf(" ERASE");
 | 
									msg_cinfo(" ERASE");
 | 
				
			||||||
			if (!(flash->tested & TEST_BAD_WRITE) && !(flash->tested & TEST_OK_WRITE))
 | 
								if (!(flash->tested & TEST_BAD_WRITE) && !(flash->tested & TEST_OK_WRITE))
 | 
				
			||||||
				printf(" WRITE");
 | 
									msg_cinfo(" WRITE");
 | 
				
			||||||
			printf("\n");
 | 
								msg_cinfo("\n");
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		/* FIXME: This message is designed towards CLI users. */
 | 
							/* FIXME: This message is designed towards CLI users. */
 | 
				
			||||||
		printf("Please email a report to flashrom@flashrom.org if any "
 | 
							msg_cinfo("Please email a report to flashrom@flashrom.org if any "
 | 
				
			||||||
		       "of the above operations\nwork correctly for you with "
 | 
							       "of the above operations\nwork correctly for you with "
 | 
				
			||||||
		       "this flash part. Please include the flashrom\noutput "
 | 
							       "this flash part. Please include the flashrom\noutput "
 | 
				
			||||||
		       "with the additional -V option for all operations you "
 | 
							       "with the additional -V option for all operations you "
 | 
				
			||||||
@@ -1278,13 +1278,13 @@ int doit(struct flashchip *flash, int force, char *filename, int read_it, int wr
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	if (erase_it) {
 | 
						if (erase_it) {
 | 
				
			||||||
		if (flash->tested & TEST_BAD_ERASE) {
 | 
							if (flash->tested & TEST_BAD_ERASE) {
 | 
				
			||||||
			fprintf(stderr, "Erase is not working on this chip. ");
 | 
								msg_cerr("Erase is not working on this chip. ");
 | 
				
			||||||
			if (!force) {
 | 
								if (!force) {
 | 
				
			||||||
				fprintf(stderr, "Aborting.\n");
 | 
									msg_cerr("Aborting.\n");
 | 
				
			||||||
				programmer_shutdown();
 | 
									programmer_shutdown();
 | 
				
			||||||
				return 1;
 | 
									return 1;
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
				fprintf(stderr, "Continuing anyway.\n");
 | 
									msg_cerr("Continuing anyway.\n");
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (flash->unlock)
 | 
							if (flash->unlock)
 | 
				
			||||||
@@ -1310,24 +1310,24 @@ int doit(struct flashchip *flash, int force, char *filename, int read_it, int wr
 | 
				
			|||||||
			flash->unlock(flash);
 | 
								flash->unlock(flash);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (flash->tested & TEST_BAD_ERASE) {
 | 
							if (flash->tested & TEST_BAD_ERASE) {
 | 
				
			||||||
			fprintf(stderr, "Erase is not working on this chip "
 | 
								msg_cerr("Erase is not working on this chip "
 | 
				
			||||||
				"and erase is needed for write. ");
 | 
									"and erase is needed for write. ");
 | 
				
			||||||
			if (!force) {
 | 
								if (!force) {
 | 
				
			||||||
				fprintf(stderr, "Aborting.\n");
 | 
									msg_cerr("Aborting.\n");
 | 
				
			||||||
				programmer_shutdown();
 | 
									programmer_shutdown();
 | 
				
			||||||
				return 1;
 | 
									return 1;
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
				fprintf(stderr, "Continuing anyway.\n");
 | 
									msg_cerr("Continuing anyway.\n");
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (flash->tested & TEST_BAD_WRITE) {
 | 
							if (flash->tested & TEST_BAD_WRITE) {
 | 
				
			||||||
			fprintf(stderr, "Write is not working on this chip. ");
 | 
								msg_cerr("Write is not working on this chip. ");
 | 
				
			||||||
			if (!force) {
 | 
								if (!force) {
 | 
				
			||||||
				fprintf(stderr, "Aborting.\n");
 | 
									msg_cerr("Aborting.\n");
 | 
				
			||||||
				programmer_shutdown();
 | 
									programmer_shutdown();
 | 
				
			||||||
				return 1;
 | 
									return 1;
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
				fprintf(stderr, "Continuing anyway.\n");
 | 
									msg_cerr("Continuing anyway.\n");
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if ((image = fopen(filename, "rb")) == NULL) {
 | 
							if ((image = fopen(filename, "rb")) == NULL) {
 | 
				
			||||||
@@ -1341,7 +1341,7 @@ int doit(struct flashchip *flash, int force, char *filename, int read_it, int wr
 | 
				
			|||||||
			exit(1);
 | 
								exit(1);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (image_stat.st_size != flash->total_size * 1024) {
 | 
							if (image_stat.st_size != flash->total_size * 1024) {
 | 
				
			||||||
			fprintf(stderr, "Error: Image size doesn't match\n");
 | 
								msg_gerr("Error: Image size doesn't match\n");
 | 
				
			||||||
			programmer_shutdown();
 | 
								programmer_shutdown();
 | 
				
			||||||
			exit(1);
 | 
								exit(1);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -1352,7 +1352,7 @@ int doit(struct flashchip *flash, int force, char *filename, int read_it, int wr
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
		fclose(image);
 | 
							fclose(image);
 | 
				
			||||||
		if (numbytes != size) {
 | 
							if (numbytes != size) {
 | 
				
			||||||
			fprintf(stderr, "Error: Failed to read file. Got %ld bytes, wanted %ld!\n", numbytes, size);
 | 
								msg_gerr("Error: Failed to read file. Got %ld bytes, wanted %ld!\n", numbytes, size);
 | 
				
			||||||
			programmer_shutdown();
 | 
								programmer_shutdown();
 | 
				
			||||||
			return 1;
 | 
								return 1;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -1365,20 +1365,20 @@ int doit(struct flashchip *flash, int force, char *filename, int read_it, int wr
 | 
				
			|||||||
	// ////////////////////////////////////////////////////////////
 | 
						// ////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (write_it) {
 | 
						if (write_it) {
 | 
				
			||||||
		printf("Writing flash chip... ");
 | 
							msg_cinfo("Writing flash chip... ");
 | 
				
			||||||
		if (!flash->write) {
 | 
							if (!flash->write) {
 | 
				
			||||||
			fprintf(stderr, "Error: flashrom has no write function for this flash chip.\n");
 | 
								msg_cerr("Error: flashrom has no write function for this flash chip.\n");
 | 
				
			||||||
			programmer_shutdown();
 | 
								programmer_shutdown();
 | 
				
			||||||
			return 1;
 | 
								return 1;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		ret = flash->write(flash, buf);
 | 
							ret = flash->write(flash, buf);
 | 
				
			||||||
		if (ret) {
 | 
							if (ret) {
 | 
				
			||||||
			fprintf(stderr, "FAILED!\n");
 | 
								msg_cerr("FAILED!\n");
 | 
				
			||||||
			emergency_help_message();
 | 
								emergency_help_message();
 | 
				
			||||||
			programmer_shutdown();
 | 
								programmer_shutdown();
 | 
				
			||||||
			return 1;
 | 
								return 1;
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			printf("COMPLETE.\n");
 | 
								msg_cinfo("COMPLETE.\n");
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -41,7 +41,7 @@ void get_io_perms(void)
 | 
				
			|||||||
#else 
 | 
					#else 
 | 
				
			||||||
	if (iopl(3) != 0) {
 | 
						if (iopl(3) != 0) {
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
		fprintf(stderr, "ERROR: Could not get I/O privileges (%s).\n"
 | 
							msg_perr("ERROR: Could not get I/O privileges (%s).\n"
 | 
				
			||||||
			"You need to be root.\n", strerror(errno));
 | 
								"You need to be root.\n", strerror(errno));
 | 
				
			||||||
		exit(1);
 | 
							exit(1);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										79
									
								
								ichspi.c
									
									
									
									
									
								
							
							
						
						
									
										79
									
								
								ichspi.c
									
									
									
									
									
								
							@@ -38,17 +38,6 @@
 | 
				
			|||||||
#include "chipdrivers.h"
 | 
					#include "chipdrivers.h"
 | 
				
			||||||
#include "spi.h"
 | 
					#include "spi.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Change this to #define if you want lowlevel debugging of commands
 | 
					 | 
				
			||||||
 * sent to the ICH/VIA SPI controller.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
#undef COMM_DEBUG
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef COMM_DEBUG
 | 
					 | 
				
			||||||
#define msg_comm_debug printf_debug
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
#define msg_comm_debug(...) do {} while (0)
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* ICH9 controller register definition */
 | 
					/* ICH9 controller register definition */
 | 
				
			||||||
#define ICH9_REG_FADDR         0x08	/* 32 Bits */
 | 
					#define ICH9_REG_FADDR         0x08	/* 32 Bits */
 | 
				
			||||||
#define ICH9_REG_FDATA0                0x10	/* 64 Bytes */
 | 
					#define ICH9_REG_FDATA0                0x10	/* 64 Bytes */
 | 
				
			||||||
@@ -237,7 +226,7 @@ static int generate_opcodes(OPCODES * op)
 | 
				
			|||||||
	uint32_t opmenu[2];
 | 
						uint32_t opmenu[2];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (op == NULL) {
 | 
						if (op == NULL) {
 | 
				
			||||||
		printf_debug("\n%s: null OPCODES pointer!\n", __func__);
 | 
							msg_perr("\n%s: null OPCODES pointer!\n", __func__);
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -256,7 +245,7 @@ static int generate_opcodes(OPCODES * op)
 | 
				
			|||||||
		opmenu[1] = REGREAD32(ICH9_REG_OPMENU + 4);
 | 
							opmenu[1] = REGREAD32(ICH9_REG_OPMENU + 4);
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	default:
 | 
						default:
 | 
				
			||||||
		printf_debug("%s: unsupported chipset\n", __func__);
 | 
							msg_perr("%s: unsupported chipset\n", __func__);
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -315,7 +304,7 @@ int program_opcodes(OPCODES * op)
 | 
				
			|||||||
		opmenu[1] |= ((uint32_t) op->opcode[a].opcode) << ((a - 4) * 8);
 | 
							opmenu[1] |= ((uint32_t) op->opcode[a].opcode) << ((a - 4) * 8);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	printf_debug("\n%s: preop=%04x optype=%04x opmenu=%08x%08x\n", __func__, preop, optype, opmenu[0], opmenu[1]);
 | 
						msg_pdbg("\n%s: preop=%04x optype=%04x opmenu=%08x%08x\n", __func__, preop, optype, opmenu[0], opmenu[1]);
 | 
				
			||||||
	switch (spi_controller) {
 | 
						switch (spi_controller) {
 | 
				
			||||||
	case SPI_CONTROLLER_ICH7:
 | 
						case SPI_CONTROLLER_ICH7:
 | 
				
			||||||
	case SPI_CONTROLLER_VIA:
 | 
						case SPI_CONTROLLER_VIA:
 | 
				
			||||||
@@ -331,7 +320,7 @@ int program_opcodes(OPCODES * op)
 | 
				
			|||||||
		REGWRITE32(ICH9_REG_OPMENU + 4, opmenu[1]);
 | 
							REGWRITE32(ICH9_REG_OPMENU + 4, opmenu[1]);
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	default:
 | 
						default:
 | 
				
			||||||
		printf_debug("%s: unsupported chipset\n", __func__);
 | 
							msg_perr("%s: unsupported chipset\n", __func__);
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -352,22 +341,22 @@ int ich_init_opcodes(void)
 | 
				
			|||||||
		return 0;
 | 
							return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (ichspi_lock) {
 | 
						if (ichspi_lock) {
 | 
				
			||||||
		printf_debug("Generating OPCODES... ");
 | 
							msg_pdbg("Generating OPCODES... ");
 | 
				
			||||||
		curopcodes_done = &O_EXISTING;
 | 
							curopcodes_done = &O_EXISTING;
 | 
				
			||||||
		rc = generate_opcodes(curopcodes_done);
 | 
							rc = generate_opcodes(curopcodes_done);
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		printf_debug("Programming OPCODES... ");
 | 
							msg_pdbg("Programming OPCODES... ");
 | 
				
			||||||
		curopcodes_done = &O_ST_M25P;
 | 
							curopcodes_done = &O_ST_M25P;
 | 
				
			||||||
		rc = program_opcodes(curopcodes_done);
 | 
							rc = program_opcodes(curopcodes_done);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (rc) {
 | 
						if (rc) {
 | 
				
			||||||
		curopcodes = NULL;
 | 
							curopcodes = NULL;
 | 
				
			||||||
		printf_debug("failed\n");
 | 
							msg_perr("failed\n");
 | 
				
			||||||
		return 1;
 | 
							return 1;
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		curopcodes = curopcodes_done;
 | 
							curopcodes = curopcodes_done;
 | 
				
			||||||
		printf_debug("done\n");
 | 
							msg_pdbg("done\n");
 | 
				
			||||||
		return 0;
 | 
							return 0;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -439,7 +428,7 @@ static int ich7_run_opcode(OPCODE op, uint32_t offset,
 | 
				
			|||||||
		opmenu >>= 8;
 | 
							opmenu >>= 8;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (opcode_index == 8) {
 | 
						if (opcode_index == 8) {
 | 
				
			||||||
		printf_debug("Opcode %x not found.\n", op.opcode);
 | 
							msg_pdbg("Opcode %x not found.\n", op.opcode);
 | 
				
			||||||
		return 1;
 | 
							return 1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	temp16 |= ((uint16_t) (opcode_index & 0x07)) << 4;
 | 
						temp16 |= ((uint16_t) (opcode_index & 0x07)) << 4;
 | 
				
			||||||
@@ -468,11 +457,12 @@ static int ich7_run_opcode(OPCODE op, uint32_t offset,
 | 
				
			|||||||
		programmer_delay(10);
 | 
							programmer_delay(10);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (!timeout) {
 | 
						if (!timeout) {
 | 
				
			||||||
		printf_debug("timeout\n");
 | 
							msg_perr("timeout\n");
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* FIXME: make sure we do not needlessly cause transaction errors. */
 | 
				
			||||||
	if ((REGREAD16(ICH7_REG_SPIS) & SPIS_FCERR) != 0) {
 | 
						if ((REGREAD16(ICH7_REG_SPIS) & SPIS_FCERR) != 0) {
 | 
				
			||||||
		printf_debug("Transaction error!\n");
 | 
							msg_pdbg("Transaction error!\n");
 | 
				
			||||||
		return 1;
 | 
							return 1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -557,7 +547,7 @@ static int ich9_run_opcode(OPCODE op, uint32_t offset,
 | 
				
			|||||||
		opmenu >>= 8;
 | 
							opmenu >>= 8;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (opcode_index == 8) {
 | 
						if (opcode_index == 8) {
 | 
				
			||||||
		printf_debug("Opcode %x not found.\n", op.opcode);
 | 
							msg_pdbg("Opcode %x not found.\n", op.opcode);
 | 
				
			||||||
		return 1;
 | 
							return 1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	temp32 |= ((uint32_t) (opcode_index & 0x07)) << (8 + 4);
 | 
						temp32 |= ((uint32_t) (opcode_index & 0x07)) << (8 + 4);
 | 
				
			||||||
@@ -586,11 +576,12 @@ static int ich9_run_opcode(OPCODE op, uint32_t offset,
 | 
				
			|||||||
		programmer_delay(10);
 | 
							programmer_delay(10);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (!timeout) {
 | 
						if (!timeout) {
 | 
				
			||||||
		printf_debug("timeout\n");
 | 
							msg_perr("timeout\n");
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* FIXME make sure we do not needlessly cause transaction errors. */
 | 
				
			||||||
	if ((REGREAD32(ICH9_REG_SSFS) & SSFS_FCERR) != 0) {
 | 
						if ((REGREAD32(ICH9_REG_SSFS) & SSFS_FCERR) != 0) {
 | 
				
			||||||
		printf_debug("Transaction error!\n");
 | 
							msg_pdbg("Transaction error!\n");
 | 
				
			||||||
		return 1;
 | 
							return 1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -615,7 +606,7 @@ static int run_opcode(OPCODE op, uint32_t offset,
 | 
				
			|||||||
	switch (spi_controller) {
 | 
						switch (spi_controller) {
 | 
				
			||||||
	case SPI_CONTROLLER_VIA:
 | 
						case SPI_CONTROLLER_VIA:
 | 
				
			||||||
		if (datalength > 16) {
 | 
							if (datalength > 16) {
 | 
				
			||||||
			fprintf(stderr, "%s: Internal command size error for "
 | 
								msg_perr("%s: Internal command size error for "
 | 
				
			||||||
				"opcode 0x%02x, got datalength=%i, want <=16\n",
 | 
									"opcode 0x%02x, got datalength=%i, want <=16\n",
 | 
				
			||||||
				__func__, op.opcode, datalength);
 | 
									__func__, op.opcode, datalength);
 | 
				
			||||||
			return SPI_INVALID_LENGTH;
 | 
								return SPI_INVALID_LENGTH;
 | 
				
			||||||
@@ -623,7 +614,7 @@ static int run_opcode(OPCODE op, uint32_t offset,
 | 
				
			|||||||
		return ich7_run_opcode(op, offset, datalength, data, 16);
 | 
							return ich7_run_opcode(op, offset, datalength, data, 16);
 | 
				
			||||||
	case SPI_CONTROLLER_ICH7:
 | 
						case SPI_CONTROLLER_ICH7:
 | 
				
			||||||
		if (datalength > 64) {
 | 
							if (datalength > 64) {
 | 
				
			||||||
			fprintf(stderr, "%s: Internal command size error for "
 | 
								msg_perr("%s: Internal command size error for "
 | 
				
			||||||
				"opcode 0x%02x, got datalength=%i, want <=16\n",
 | 
									"opcode 0x%02x, got datalength=%i, want <=16\n",
 | 
				
			||||||
				__func__, op.opcode, datalength);
 | 
									__func__, op.opcode, datalength);
 | 
				
			||||||
			return SPI_INVALID_LENGTH;
 | 
								return SPI_INVALID_LENGTH;
 | 
				
			||||||
@@ -631,14 +622,14 @@ static int run_opcode(OPCODE op, uint32_t offset,
 | 
				
			|||||||
		return ich7_run_opcode(op, offset, datalength, data, 64);
 | 
							return ich7_run_opcode(op, offset, datalength, data, 64);
 | 
				
			||||||
	case SPI_CONTROLLER_ICH9:
 | 
						case SPI_CONTROLLER_ICH9:
 | 
				
			||||||
		if (datalength > 64) {
 | 
							if (datalength > 64) {
 | 
				
			||||||
			fprintf(stderr, "%s: Internal command size error for "
 | 
								msg_perr("%s: Internal command size error for "
 | 
				
			||||||
				"opcode 0x%02x, got datalength=%i, want <=16\n",
 | 
									"opcode 0x%02x, got datalength=%i, want <=16\n",
 | 
				
			||||||
				__func__, op.opcode, datalength);
 | 
									__func__, op.opcode, datalength);
 | 
				
			||||||
			return SPI_INVALID_LENGTH;
 | 
								return SPI_INVALID_LENGTH;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		return ich9_run_opcode(op, offset, datalength, data);
 | 
							return ich9_run_opcode(op, offset, datalength, data);
 | 
				
			||||||
	default:
 | 
						default:
 | 
				
			||||||
		printf_debug("%s: unsupported chipset\n", __func__);
 | 
							msg_perr("%s: unsupported chipset\n", __func__);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* If we ever get here, something really weird happened */
 | 
						/* If we ever get here, something really weird happened */
 | 
				
			||||||
@@ -652,14 +643,14 @@ static int ich_spi_write_page(struct flashchip *flash, uint8_t * bytes,
 | 
				
			|||||||
	uint32_t remaining = page_size;
 | 
						uint32_t remaining = page_size;
 | 
				
			||||||
	int towrite;
 | 
						int towrite;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	msg_comm_debug("ich_spi_write_page: offset=%d, number=%d, buf=%p\n",
 | 
						msg_pspew("ich_spi_write_page: offset=%d, number=%d, buf=%p\n",
 | 
				
			||||||
		     offset, page_size, bytes);
 | 
							     offset, page_size, bytes);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (; remaining > 0; remaining -= towrite) {
 | 
						for (; remaining > 0; remaining -= towrite) {
 | 
				
			||||||
		towrite = min(remaining, maxdata);
 | 
							towrite = min(remaining, maxdata);
 | 
				
			||||||
		if (spi_nbyte_program(offset + (page_size - remaining),
 | 
							if (spi_nbyte_program(offset + (page_size - remaining),
 | 
				
			||||||
				      &bytes[page_size - remaining], towrite)) {
 | 
									      &bytes[page_size - remaining], towrite)) {
 | 
				
			||||||
			printf_debug("Error writing");
 | 
								msg_perr("Error writing");
 | 
				
			||||||
			return 1;
 | 
								return 1;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -687,14 +678,14 @@ int ich_spi_write_256(struct flashchip *flash, uint8_t * buf)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	spi_disable_blockprotect();
 | 
						spi_disable_blockprotect();
 | 
				
			||||||
	/* Erase first */
 | 
						/* Erase first */
 | 
				
			||||||
	printf("Erasing flash before programming... ");
 | 
						msg_pinfo("Erasing flash before programming... ");
 | 
				
			||||||
	if (erase_flash(flash)) {
 | 
						if (erase_flash(flash)) {
 | 
				
			||||||
		fprintf(stderr, "ERASE FAILED!\n");
 | 
							msg_perr("ERASE FAILED!\n");
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	printf("done.\n");
 | 
						msg_pinfo("done.\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	printf("Programming page: \n");
 | 
						msg_pinfo("Programming page: \n");
 | 
				
			||||||
	for (i = 0; i < total_size / erase_size; i++) {
 | 
						for (i = 0; i < total_size / erase_size; i++) {
 | 
				
			||||||
		if (spi_controller == SPI_CONTROLLER_VIA)
 | 
							if (spi_controller == SPI_CONTROLLER_VIA)
 | 
				
			||||||
			maxdata = 16;
 | 
								maxdata = 16;
 | 
				
			||||||
@@ -706,7 +697,7 @@ int ich_spi_write_256(struct flashchip *flash, uint8_t * buf)
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	printf("\n");
 | 
						msg_pinfo("\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return rc;
 | 
						return rc;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -728,7 +719,7 @@ int ich_spi_send_command(unsigned int writecnt, unsigned int readcnt,
 | 
				
			|||||||
		/* FIXME: Reprogram opcodes if possible. Autodetect type of
 | 
							/* FIXME: Reprogram opcodes if possible. Autodetect type of
 | 
				
			||||||
		 * opcode by checking readcnt/writecnt.
 | 
							 * opcode by checking readcnt/writecnt.
 | 
				
			||||||
		 */
 | 
							 */
 | 
				
			||||||
		printf_debug("Invalid OPCODE 0x%02x\n", cmd);
 | 
							msg_pdbg("Invalid OPCODE 0x%02x\n", cmd);
 | 
				
			||||||
		return SPI_INVALID_OPCODE;
 | 
							return SPI_INVALID_OPCODE;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -743,21 +734,21 @@ int ich_spi_send_command(unsigned int writecnt, unsigned int readcnt,
 | 
				
			|||||||
	 */
 | 
						 */
 | 
				
			||||||
	if ((opcode->spi_type == SPI_OPCODE_TYPE_READ_WITH_ADDRESS) &&
 | 
						if ((opcode->spi_type == SPI_OPCODE_TYPE_READ_WITH_ADDRESS) &&
 | 
				
			||||||
	    (writecnt != 4)) {
 | 
						    (writecnt != 4)) {
 | 
				
			||||||
		fprintf(stderr, "%s: Internal command size error for opcode "
 | 
							msg_perr("%s: Internal command size error for opcode "
 | 
				
			||||||
			"0x%02x, got writecnt=%i, want =4\n", __func__, cmd,
 | 
								"0x%02x, got writecnt=%i, want =4\n", __func__, cmd,
 | 
				
			||||||
			writecnt);
 | 
								writecnt);
 | 
				
			||||||
		return SPI_INVALID_LENGTH;
 | 
							return SPI_INVALID_LENGTH;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if ((opcode->spi_type == SPI_OPCODE_TYPE_READ_NO_ADDRESS) &&
 | 
						if ((opcode->spi_type == SPI_OPCODE_TYPE_READ_NO_ADDRESS) &&
 | 
				
			||||||
	    (writecnt != 1)) {
 | 
						    (writecnt != 1)) {
 | 
				
			||||||
		fprintf(stderr, "%s: Internal command size error for opcode "
 | 
							msg_perr("%s: Internal command size error for opcode "
 | 
				
			||||||
			"0x%02x, got writecnt=%i, want =1\n", __func__, cmd,
 | 
								"0x%02x, got writecnt=%i, want =1\n", __func__, cmd,
 | 
				
			||||||
			writecnt);
 | 
								writecnt);
 | 
				
			||||||
		return SPI_INVALID_LENGTH;
 | 
							return SPI_INVALID_LENGTH;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if ((opcode->spi_type == SPI_OPCODE_TYPE_WRITE_WITH_ADDRESS) &&
 | 
						if ((opcode->spi_type == SPI_OPCODE_TYPE_WRITE_WITH_ADDRESS) &&
 | 
				
			||||||
	    (writecnt < 4)) {
 | 
						    (writecnt < 4)) {
 | 
				
			||||||
		fprintf(stderr, "%s: Internal command size error for opcode "
 | 
							msg_perr("%s: Internal command size error for opcode "
 | 
				
			||||||
			"0x%02x, got writecnt=%i, want >=4\n", __func__, cmd,
 | 
								"0x%02x, got writecnt=%i, want >=4\n", __func__, cmd,
 | 
				
			||||||
			writecnt);
 | 
								writecnt);
 | 
				
			||||||
		return SPI_INVALID_LENGTH;
 | 
							return SPI_INVALID_LENGTH;
 | 
				
			||||||
@@ -765,7 +756,7 @@ int ich_spi_send_command(unsigned int writecnt, unsigned int readcnt,
 | 
				
			|||||||
	if (((opcode->spi_type == SPI_OPCODE_TYPE_WRITE_WITH_ADDRESS) ||
 | 
						if (((opcode->spi_type == SPI_OPCODE_TYPE_WRITE_WITH_ADDRESS) ||
 | 
				
			||||||
	     (opcode->spi_type == SPI_OPCODE_TYPE_WRITE_NO_ADDRESS)) &&
 | 
						     (opcode->spi_type == SPI_OPCODE_TYPE_WRITE_NO_ADDRESS)) &&
 | 
				
			||||||
	    (readcnt)) {
 | 
						    (readcnt)) {
 | 
				
			||||||
		fprintf(stderr, "%s: Internal command size error for opcode "
 | 
							msg_perr("%s: Internal command size error for opcode "
 | 
				
			||||||
			"0x%02x, got readcnt=%i, want =0\n", __func__, cmd,
 | 
								"0x%02x, got readcnt=%i, want =0\n", __func__, cmd,
 | 
				
			||||||
			readcnt);
 | 
								readcnt);
 | 
				
			||||||
		return SPI_INVALID_LENGTH;
 | 
							return SPI_INVALID_LENGTH;
 | 
				
			||||||
@@ -792,7 +783,7 @@ int ich_spi_send_command(unsigned int writecnt, unsigned int readcnt,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	result = run_opcode(*opcode, addr, count, data);
 | 
						result = run_opcode(*opcode, addr, count, data);
 | 
				
			||||||
	if (result) {
 | 
						if (result) {
 | 
				
			||||||
		printf_debug("run OPCODE 0x%02x failed\n", opcode->opcode);
 | 
							msg_pdbg("run OPCODE 0x%02x failed\n", opcode->opcode);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return result;
 | 
						return result;
 | 
				
			||||||
@@ -817,7 +808,7 @@ int ich_spi_send_multicommand(struct spi_command *cmds)
 | 
				
			|||||||
				 */
 | 
									 */
 | 
				
			||||||
				if (find_preop(curopcodes,
 | 
									if (find_preop(curopcodes,
 | 
				
			||||||
					       (cmds + 1)->writearr[0]) != -1) {
 | 
										       (cmds + 1)->writearr[0]) != -1) {
 | 
				
			||||||
					fprintf(stderr, "%s: Two subsequent "
 | 
										msg_perr("%s: Two subsequent "
 | 
				
			||||||
						"preopcodes 0x%02x and 0x%02x, "
 | 
											"preopcodes 0x%02x and 0x%02x, "
 | 
				
			||||||
						"ignoring the first.\n",
 | 
											"ignoring the first.\n",
 | 
				
			||||||
						__func__, cmds->writearr[0],
 | 
											__func__, cmds->writearr[0],
 | 
				
			||||||
@@ -829,7 +820,7 @@ int ich_spi_send_multicommand(struct spi_command *cmds)
 | 
				
			|||||||
				 * No need to bother with fixups.
 | 
									 * No need to bother with fixups.
 | 
				
			||||||
				 */
 | 
									 */
 | 
				
			||||||
				if (!ichspi_lock) {
 | 
									if (!ichspi_lock) {
 | 
				
			||||||
					printf_debug("%s: FIXME: Add on-the-fly"
 | 
										msg_pdbg("%s: FIXME: Add on-the-fly"
 | 
				
			||||||
						     " reprogramming of the "
 | 
											     " reprogramming of the "
 | 
				
			||||||
						     "chipset opcode list.\n",
 | 
											     "chipset opcode list.\n",
 | 
				
			||||||
						     __func__);
 | 
											     __func__);
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										12
									
								
								pcidev.c
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								pcidev.c
									
									
									
									
									
								
							@@ -45,7 +45,7 @@ uint32_t pcidev_validate(struct pci_dev *dev, uint32_t bar,
 | 
				
			|||||||
		 */
 | 
							 */
 | 
				
			||||||
		addr = pci_read_long(dev, bar);
 | 
							addr = pci_read_long(dev, bar);
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		printf("Found \"%s %s\" (%04x:%04x, BDF %02x:%02x.%x).\n",
 | 
							msg_pinfo("Found \"%s %s\" (%04x:%04x, BDF %02x:%02x.%x).\n",
 | 
				
			||||||
		       devs[i].vendor_name, devs[i].device_name,
 | 
							       devs[i].vendor_name, devs[i].device_name,
 | 
				
			||||||
		       dev->vendor_id, dev->device_id, dev->bus, dev->dev,
 | 
							       dev->vendor_id, dev->device_id, dev->bus, dev->dev,
 | 
				
			||||||
		       dev->func);
 | 
							       dev->func);
 | 
				
			||||||
@@ -66,7 +66,7 @@ uint32_t pcidev_validate(struct pci_dev *dev, uint32_t bar,
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (devs[i].status == NT) {
 | 
							if (devs[i].status == NT) {
 | 
				
			||||||
			printf("===\nThis PCI device is UNTESTED. Please "
 | 
								msg_pinfo("===\nThis PCI device is UNTESTED. Please "
 | 
				
			||||||
			       "report the 'flashrom -p xxxx' output \n"
 | 
								       "report the 'flashrom -p xxxx' output \n"
 | 
				
			||||||
			       "to flashrom@flashrom.org if it works "
 | 
								       "to flashrom@flashrom.org if it works "
 | 
				
			||||||
			       "for you. Thank you for your help!\n===\n");
 | 
								       "for you. Thank you for your help!\n===\n");
 | 
				
			||||||
@@ -95,7 +95,7 @@ uint32_t pcidev_init(uint16_t vendor_id, uint32_t bar,
 | 
				
			|||||||
	filter.vendor = vendor_id;
 | 
						filter.vendor = vendor_id;
 | 
				
			||||||
	if (pcidev_bdf != NULL) {
 | 
						if (pcidev_bdf != NULL) {
 | 
				
			||||||
		if ((msg = pci_filter_parse_slot(&filter, pcidev_bdf))) {
 | 
							if ((msg = pci_filter_parse_slot(&filter, pcidev_bdf))) {
 | 
				
			||||||
			fprintf(stderr, "Error: %s\n", msg);
 | 
								msg_perr("Error: %s\n", msg);
 | 
				
			||||||
			exit(1);
 | 
								exit(1);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -112,10 +112,10 @@ uint32_t pcidev_init(uint16_t vendor_id, uint32_t bar,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	/* Only continue if exactly one supported PCI dev has been found. */
 | 
						/* Only continue if exactly one supported PCI dev has been found. */
 | 
				
			||||||
	if (found == 0) {
 | 
						if (found == 0) {
 | 
				
			||||||
		fprintf(stderr, "Error: No supported PCI device found.\n");
 | 
							msg_perr("Error: No supported PCI device found.\n");
 | 
				
			||||||
		exit(1);
 | 
							exit(1);
 | 
				
			||||||
	} else if (found > 1) {
 | 
						} else if (found > 1) {
 | 
				
			||||||
		fprintf(stderr, "Error: Multiple supported PCI devices found. "
 | 
							msg_perr("Error: Multiple supported PCI devices found. "
 | 
				
			||||||
			"Use 'flashrom -p xxxx:bb:dd.f' \n"
 | 
								"Use 'flashrom -p xxxx:bb:dd.f' \n"
 | 
				
			||||||
			"to explicitly select the card with the given BDF "
 | 
								"to explicitly select the card with the given BDF "
 | 
				
			||||||
			"(PCI bus, device, function).\n");
 | 
								"(PCI bus, device, function).\n");
 | 
				
			||||||
@@ -130,7 +130,7 @@ void print_supported_pcidevs(struct pcidev_status *devs)
 | 
				
			|||||||
	int i;
 | 
						int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (i = 0; devs[i].vendor_name != NULL; i++) {
 | 
						for (i = 0; devs[i].vendor_name != NULL; i++) {
 | 
				
			||||||
		printf("%s %s [%02x:%02x]%s\n", devs[i].vendor_name,
 | 
							msg_pinfo("%s %s [%02x:%02x]%s\n", devs[i].vendor_name,
 | 
				
			||||||
		       devs[i].device_name, devs[i].vendor_id,
 | 
							       devs[i].device_name, devs[i].vendor_id,
 | 
				
			||||||
		       devs[i].device_id,
 | 
							       devs[i].device_id,
 | 
				
			||||||
		       (devs[i].status == NT) ? " (untested)" : "");
 | 
							       (devs[i].status == NT) ? " (untested)" : "");
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										38
									
								
								physmap.c
									
									
									
									
									
								
							
							
						
						
									
										38
									
								
								physmap.c
									
									
									
									
									
								
							@@ -158,7 +158,7 @@ void *sys_physmap_ro_cached(unsigned long phys_addr, size_t len)
 | 
				
			|||||||
	if (-1 == fd_mem_cached) {
 | 
						if (-1 == fd_mem_cached) {
 | 
				
			||||||
		/* Open the memory device CACHED. */
 | 
							/* Open the memory device CACHED. */
 | 
				
			||||||
		if (-1 == (fd_mem_cached = open(MEM_DEV, O_RDWR))) {
 | 
							if (-1 == (fd_mem_cached = open(MEM_DEV, O_RDWR))) {
 | 
				
			||||||
			perror("Critical error: open(" MEM_DEV ")");
 | 
								msg_perr("Critical error: open(" MEM_DEV "): %s", strerror(errno));
 | 
				
			||||||
			exit(2);
 | 
								exit(2);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -171,7 +171,7 @@ void *sys_physmap_ro_cached(unsigned long phys_addr, size_t len)
 | 
				
			|||||||
void physunmap(void *virt_addr, size_t len)
 | 
					void physunmap(void *virt_addr, size_t len)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if (len == 0) {
 | 
						if (len == 0) {
 | 
				
			||||||
		printf_debug("Not unmapping zero size at %p\n", virt_addr);
 | 
							msg_pspew("Not unmapping zero size at %p\n", virt_addr);
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
@@ -189,18 +189,18 @@ void *physmap_common(const char *descr, unsigned long phys_addr, size_t len, int
 | 
				
			|||||||
	void *virt_addr;
 | 
						void *virt_addr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (len == 0) {
 | 
						if (len == 0) {
 | 
				
			||||||
		printf_debug("Not mapping %s, zero size at 0x%08lx.\n",
 | 
							msg_pspew("Not mapping %s, zero size at 0x%08lx.\n",
 | 
				
			||||||
			     descr, phys_addr);
 | 
								     descr, phys_addr);
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
	if ((getpagesize() - 1) & len) {
 | 
						if ((getpagesize() - 1) & len) {
 | 
				
			||||||
		fprintf(stderr, "Mapping %s at 0x%08lx, unaligned size 0x%lx.\n",
 | 
							msg_perr("Mapping %s at 0x%08lx, unaligned size 0x%lx.\n",
 | 
				
			||||||
			descr, phys_addr, (unsigned long)len);
 | 
								descr, phys_addr, (unsigned long)len);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((getpagesize() - 1) & phys_addr) {
 | 
						if ((getpagesize() - 1) & phys_addr) {
 | 
				
			||||||
		fprintf(stderr, "Mapping %s, 0x%lx bytes at unaligned 0x%08lx.\n",
 | 
							msg_perr("Mapping %s, 0x%lx bytes at unaligned 0x%08lx.\n",
 | 
				
			||||||
			descr, (unsigned long)len, phys_addr);
 | 
								descr, (unsigned long)len, phys_addr);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -213,15 +213,17 @@ void *physmap_common(const char *descr, unsigned long phys_addr, size_t len, int
 | 
				
			|||||||
	if (NULL == virt_addr) {
 | 
						if (NULL == virt_addr) {
 | 
				
			||||||
		if (NULL == descr)
 | 
							if (NULL == descr)
 | 
				
			||||||
			descr = "memory";
 | 
								descr = "memory";
 | 
				
			||||||
		fprintf(stderr, "Error accessing %s, 0x%lx bytes at 0x%08lx\n", descr, (unsigned long)len, phys_addr);
 | 
							msg_perr("Error accessing %s, 0x%lx bytes at 0x%08lx\n", descr, (unsigned long)len, phys_addr);
 | 
				
			||||||
		perror(MEM_DEV " mmap failed");
 | 
							perror(MEM_DEV " mmap failed");
 | 
				
			||||||
 | 
					#ifdef __linux__
 | 
				
			||||||
		if (EINVAL == errno) {
 | 
							if (EINVAL == errno) {
 | 
				
			||||||
			fprintf(stderr, "In Linux this error can be caused by the CONFIG_NONPROMISC_DEVMEM (<2.6.27),\n");
 | 
								msg_perr("In Linux this error can be caused by the CONFIG_NONPROMISC_DEVMEM (<2.6.27),\n");
 | 
				
			||||||
			fprintf(stderr, "CONFIG_STRICT_DEVMEM (>=2.6.27) and CONFIG_X86_PAT kernel options.\n");
 | 
								msg_perr("CONFIG_STRICT_DEVMEM (>=2.6.27) and CONFIG_X86_PAT kernel options.\n");
 | 
				
			||||||
			fprintf(stderr, "Please check if either is enabled in your kernel before reporting a failure.\n");
 | 
								msg_perr("Please check if either is enabled in your kernel before reporting a failure.\n");
 | 
				
			||||||
			fprintf(stderr, "You can override CONFIG_X86_PAT at boot with the nopat kernel parameter but\n");
 | 
								msg_perr("You can override CONFIG_X86_PAT at boot with the nopat kernel parameter but\n");
 | 
				
			||||||
			fprintf(stderr, "disabling the other option unfortunately requires a kernel recompile. Sorry!\n");
 | 
								msg_perr("disabling the other option unfortunately requires a kernel recompile. Sorry!\n");
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
		if (!mayfail)
 | 
							if (!mayfail)
 | 
				
			||||||
			exit(3);
 | 
								exit(3);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -306,7 +308,7 @@ int setup_cpu_msr(int cpu)
 | 
				
			|||||||
	sprintf(msrfilename, "/dev/cpu/%d/msr", cpu);
 | 
						sprintf(msrfilename, "/dev/cpu/%d/msr", cpu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (fd_msr != -1) {
 | 
						if (fd_msr != -1) {
 | 
				
			||||||
		printf("MSR was already initialized\n");
 | 
							msg_pinfo("MSR was already initialized\n");
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -314,7 +316,7 @@ int setup_cpu_msr(int cpu)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	if (fd_msr < 0) {
 | 
						if (fd_msr < 0) {
 | 
				
			||||||
		perror("Error while opening /dev/cpu/0/msr");
 | 
							perror("Error while opening /dev/cpu/0/msr");
 | 
				
			||||||
		printf("Did you run 'modprobe msr'?\n");
 | 
							msg_pinfo("Did you run 'modprobe msr'?\n");
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -324,7 +326,7 @@ int setup_cpu_msr(int cpu)
 | 
				
			|||||||
void cleanup_cpu_msr(void)
 | 
					void cleanup_cpu_msr(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if (fd_msr == -1) {
 | 
						if (fd_msr == -1) {
 | 
				
			||||||
		printf("No MSR initialized.\n");
 | 
							msg_pinfo("No MSR initialized.\n");
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -389,7 +391,7 @@ int setup_cpu_msr(int cpu)
 | 
				
			|||||||
	sprintf(msrfilename, "/dev/cpu%d", cpu);
 | 
						sprintf(msrfilename, "/dev/cpu%d", cpu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (fd_msr != -1) {
 | 
						if (fd_msr != -1) {
 | 
				
			||||||
		printf("MSR was already initialized\n");
 | 
							msg_pinfo("MSR was already initialized\n");
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -397,7 +399,7 @@ int setup_cpu_msr(int cpu)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	if (fd_msr < 0) {
 | 
						if (fd_msr < 0) {
 | 
				
			||||||
		perror("Error while opening /dev/cpu0");
 | 
							perror("Error while opening /dev/cpu0");
 | 
				
			||||||
		printf("Did you install ports/sysutils/devcpu?\n");
 | 
							msg_pinfo("Did you install ports/sysutils/devcpu?\n");
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -407,7 +409,7 @@ int setup_cpu_msr(int cpu)
 | 
				
			|||||||
void cleanup_cpu_msr(void)
 | 
					void cleanup_cpu_msr(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if (fd_msr == -1) {
 | 
						if (fd_msr == -1) {
 | 
				
			||||||
		printf("No MSR initialized.\n");
 | 
							msg_pinfo("No MSR initialized.\n");
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -445,7 +447,7 @@ int wrmsr(int addr, msr_t msr)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
int setup_cpu_msr(int cpu)
 | 
					int setup_cpu_msr(int cpu)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	printf("No MSR support for your OS yet.\n");
 | 
						msg_pinfo("No MSR support for your OS yet.\n");
 | 
				
			||||||
	return -1;
 | 
						return -1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										8
									
								
								spi.c
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								spi.c
									
									
									
									
									
								
							@@ -130,7 +130,7 @@ int spi_send_command(unsigned int writecnt, unsigned int readcnt,
 | 
				
			|||||||
		const unsigned char *writearr, unsigned char *readarr)
 | 
							const unsigned char *writearr, unsigned char *readarr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if (!spi_programmer[spi_controller].command) {
 | 
						if (!spi_programmer[spi_controller].command) {
 | 
				
			||||||
		fprintf(stderr, "%s called, but SPI is unsupported on this "
 | 
							msg_perr("%s called, but SPI is unsupported on this "
 | 
				
			||||||
			"hardware. Please report a bug.\n", __func__);
 | 
								"hardware. Please report a bug.\n", __func__);
 | 
				
			||||||
		return 1;
 | 
							return 1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -142,7 +142,7 @@ int spi_send_command(unsigned int writecnt, unsigned int readcnt,
 | 
				
			|||||||
int spi_send_multicommand(struct spi_command *cmds)
 | 
					int spi_send_multicommand(struct spi_command *cmds)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if (!spi_programmer[spi_controller].multicommand) {
 | 
						if (!spi_programmer[spi_controller].multicommand) {
 | 
				
			||||||
		fprintf(stderr, "%s called, but SPI is unsupported on this "
 | 
							msg_perr("%s called, but SPI is unsupported on this "
 | 
				
			||||||
			"hardware. Please report a bug.\n", __func__);
 | 
								"hardware. Please report a bug.\n", __func__);
 | 
				
			||||||
		return 1;
 | 
							return 1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -182,7 +182,7 @@ int default_spi_send_multicommand(struct spi_command *cmds)
 | 
				
			|||||||
int spi_chip_read(struct flashchip *flash, uint8_t *buf, int start, int len)
 | 
					int spi_chip_read(struct flashchip *flash, uint8_t *buf, int start, int len)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if (!spi_programmer[spi_controller].read) {
 | 
						if (!spi_programmer[spi_controller].read) {
 | 
				
			||||||
		fprintf(stderr, "%s called, but SPI read is unsupported on this"
 | 
							msg_perr("%s called, but SPI read is unsupported on this"
 | 
				
			||||||
			" hardware. Please report a bug.\n", __func__);
 | 
								" hardware. Please report a bug.\n", __func__);
 | 
				
			||||||
		return 1;
 | 
							return 1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -197,7 +197,7 @@ int spi_chip_read(struct flashchip *flash, uint8_t *buf, int start, int len)
 | 
				
			|||||||
int spi_chip_write_256(struct flashchip *flash, uint8_t *buf)
 | 
					int spi_chip_write_256(struct flashchip *flash, uint8_t *buf)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if (!spi_programmer[spi_controller].write_256) {
 | 
						if (!spi_programmer[spi_controller].write_256) {
 | 
				
			||||||
		fprintf(stderr, "%s called, but SPI page write is unsupported "
 | 
							msg_perr("%s called, but SPI page write is unsupported "
 | 
				
			||||||
			" on this hardware. Please report a bug.\n", __func__);
 | 
								" on this hardware. Please report a bug.\n", __func__);
 | 
				
			||||||
		return 1;
 | 
							return 1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user