- Timestamp:
- 11/10/11 00:40:00 (6 months ago)
- Location:
- trunk
- Files:
-
- 22 edited
-
atahpt.c (modified) (2 diffs)
-
board_enable.c (modified) (1 diff)
-
chipset_enable.c (modified) (15 diffs)
-
cli_classic.c (modified) (1 diff)
-
drkaiser.c (modified) (2 diffs)
-
dummyflasher.c (modified) (3 diffs)
-
flashrom.c (modified) (20 diffs)
-
gfxnvidia.c (modified) (2 diffs)
-
ichspi.c (modified) (1 diff)
-
internal.c (modified) (3 diffs)
-
it85spi.c (modified) (3 diffs)
-
it87spi.c (modified) (1 diff)
-
nic3com.c (modified) (2 diffs)
-
nicintel.c (modified) (2 diffs)
-
nicnatsemi.c (modified) (3 diffs)
-
nicrealtek.c (modified) (2 diffs)
-
programmer.c (modified) (2 diffs)
-
programmer.h (modified) (4 diffs)
-
satamv.c (modified) (2 diffs)
-
satasii.c (modified) (2 diffs)
-
serprog.c (modified) (14 diffs)
-
wbsio_spi.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/atahpt.c
r1396 r1463 41 41 }; 42 42 43 static const struct par_programmer par_programmer_atahpt = { 44 .chip_readb = atahpt_chip_readb, 45 .chip_readw = fallback_chip_readw, 46 .chip_readl = fallback_chip_readl, 47 .chip_readn = fallback_chip_readn, 48 .chip_writeb = atahpt_chip_writeb, 49 .chip_writew = fallback_chip_writew, 50 .chip_writel = fallback_chip_writel, 51 .chip_writen = fallback_chip_writen, 52 }; 53 43 54 static int atahpt_shutdown(void *data) 44 55 { … … 62 73 rpci_write_long(pcidev_dev, REG_FLASH_ACCESS, reg32); 63 74 64 buses_supported = BUS_PARALLEL;65 66 75 if (register_shutdown(atahpt_shutdown, NULL)) 67 76 return 1; 77 78 register_par_programmer(&par_programmer_atahpt, BUS_PARALLEL); 79 68 80 return 0; 69 81 } -
trunk/board_enable.c
r1458 r1463 426 426 if (tmp & 0xf0) { 427 427 /* The IT8705F will respond to LPC cycles and translate them. */ 428 buses_supported = BUS_PARALLEL;428 internal_buses_supported = BUS_PARALLEL; 429 429 /* Flash ROM I/F Writes Enable */ 430 430 tmp |= 0x04; -
trunk/chipset_enable.c
r1461 r1463 214 214 uint16_t xbcs = 0x4e; /* X-Bus Chip Select register. */ 215 215 216 buses_supported = BUS_PARALLEL;216 internal_buses_supported = BUS_PARALLEL; 217 217 218 218 old = pci_read_word(dev, xbcs); … … 304 304 * FB_DEC_EN2. 305 305 */ 306 buses_supported = BUS_FWH;306 internal_buses_supported = BUS_FWH; 307 307 return enable_flash_ich(dev, name, 0x4e); 308 308 } … … 413 413 414 414 /* If we're called by enable_flash_ich_dc_spi, it will override 415 * buses_supported anyway.415 * internal_buses_supported anyway. 416 416 */ 417 buses_supported = BUS_FWH;417 internal_buses_supported = BUS_FWH; 418 418 return enable_flash_ich(dev, name, 0xdc); 419 419 } … … 435 435 rpci_write_byte(dev, 0xd9, new); 436 436 437 buses_supported = BUS_FWH;437 internal_buses_supported = BUS_FWH; 438 438 return 0; 439 439 } … … 469 469 if (bnt & 0x02) { 470 470 /* If strapped to LPC, no SPI initialization is required */ 471 buses_supported = BUS_FWH;471 internal_buses_supported = BUS_FWH; 472 472 return 0; 473 473 } 474 474 475 475 /* This adds BUS_SPI */ 476 buses_supported = BUS_SPI;477 476 if (ich_init_spi(dev, tmp, rcrb, 7) != 0) { 478 477 if (!ret) … … 557 556 * on ICH7 when the southbridge is strapped to LPC 558 557 */ 559 buses_supported = BUS_FWH;558 internal_buses_supported = BUS_FWH; 560 559 if (ich_generation == CHIPSET_ICH7) { 561 560 if (bbs == 0x03) { … … 565 564 } else { 566 565 /* Disable LPC/FWH if strapped to PCI or SPI */ 567 buses_supported = 0;566 internal_buses_supported = BUS_NONE; 568 567 } 569 568 } … … 670 669 #define CS5530_ENABLE_SA20 (1 << 6) 671 670 672 buses_supported = BUS_PARALLEL;671 internal_buses_supported = BUS_PARALLEL; 673 672 /* Decode 0x000E0000-0x000FFFFF (128 kB), not just 64 kB, and 674 673 * decode 0xFF000000-0xFFFFFFFF (16 MB), not just 256 kB. … … 823 822 } 824 823 825 buses_supported = BUS_LPC | BUS_FWH;824 internal_buses_supported = BUS_LPC | BUS_FWH; 826 825 827 826 ret = sb600_probe_spi(dev); … … 917 916 uint8_t tmp; 918 917 919 buses_supported = BUS_PARALLEL;918 internal_buses_supported = BUS_PARALLEL; 920 919 921 920 tmp = INB(0xc06); … … 1017 1016 case 0x0: 1018 1017 ret = enable_flash_mcp55(dev, name); 1019 buses_supported = BUS_LPC;1018 internal_buses_supported = BUS_LPC; 1020 1019 msg_pdbg("Flash bus type is LPC\n"); 1021 1020 break; … … 1025 1024 * Do we really want to disable LPC in this case? 1026 1025 */ 1027 buses_supported = BUS_NONE;1026 internal_buses_supported = BUS_NONE; 1028 1027 msg_pdbg("Flash bus type is SPI\n"); 1029 1028 msg_pinfo("SPI on this chipset is WIP. Please report any " … … 1033 1032 default: 1034 1033 /* Should not happen. */ 1035 buses_supported = BUS_NONE;1034 internal_buses_supported = BUS_NONE; 1036 1035 msg_pdbg("Flash bus type is unknown (none)\n"); 1037 1036 msg_pinfo("Something went wrong with bus type detection.\n"); … … 1326 1325 int ret = -2; /* Nothing! */ 1327 1326 int i; 1328 char *s;1329 1327 1330 1328 /* Now let's try to find the chipset we have... */ … … 1378 1376 } 1379 1377 1380 s = flashbuses_to_text(buses_supported);1381 msg_pinfo("This chipset supports the following protocols: %s.\n", s);1382 free(s);1383 1384 1378 return ret; 1385 1379 } -
trunk/cli_classic.c
r1436 r1463 444 444 goto out_shutdown; 445 445 } 446 tempstr = flashbuses_to_text(buses_supported); 447 msg_pdbg("This programmer supports the following protocols: %s.\n", 448 tempstr); 449 free(tempstr); 446 450 447 451 for (i = 0; i < ARRAY_SIZE(flashes); i++) { -
trunk/drkaiser.c
r1397 r1463 40 40 static uint8_t *drkaiser_bar; 41 41 42 static const struct par_programmer par_programmer_drkaiser = { 43 .chip_readb = drkaiser_chip_readb, 44 .chip_readw = fallback_chip_readw, 45 .chip_readl = fallback_chip_readl, 46 .chip_readn = fallback_chip_readn, 47 .chip_writeb = drkaiser_chip_writeb, 48 .chip_writew = fallback_chip_writew, 49 .chip_writel = fallback_chip_writel, 50 .chip_writen = fallback_chip_writen, 51 }; 52 42 53 static int drkaiser_shutdown(void *data) 43 54 { … … 65 76 addr, DRKAISER_MEMMAP_SIZE); 66 77 67 buses_supported = BUS_PARALLEL;68 69 78 if (register_shutdown(drkaiser_shutdown, NULL)) 70 79 return 1; 80 81 max_rom_decode.parallel = 128 * 1024; 82 register_par_programmer(&par_programmer_drkaiser, BUS_PARALLEL); 83 71 84 return 0; 72 85 } -
trunk/dummyflasher.c
r1450 r1463 76 76 }; 77 77 78 static const struct par_programmer par_programmer_dummy = { 79 .chip_readb = dummy_chip_readb, 80 .chip_readw = dummy_chip_readw, 81 .chip_readl = dummy_chip_readl, 82 .chip_readn = dummy_chip_readn, 83 .chip_writeb = dummy_chip_writeb, 84 .chip_writew = dummy_chip_writew, 85 .chip_writel = dummy_chip_writel, 86 .chip_writen = dummy_chip_writen, 87 }; 88 89 enum chipbustype dummy_buses_supported = BUS_NONE; 90 78 91 static int dummy_shutdown(void *data) 79 92 { … … 109 122 tolower_string(bustext); 110 123 111 buses_supported = BUS_NONE;124 dummy_buses_supported = BUS_NONE; 112 125 if (strstr(bustext, "parallel")) { 113 buses_supported |= BUS_PARALLEL;126 dummy_buses_supported |= BUS_PARALLEL; 114 127 msg_pdbg("Enabling support for %s flash.\n", "parallel"); 115 128 } 116 129 if (strstr(bustext, "lpc")) { 117 buses_supported |= BUS_LPC;130 dummy_buses_supported |= BUS_LPC; 118 131 msg_pdbg("Enabling support for %s flash.\n", "LPC"); 119 132 } 120 133 if (strstr(bustext, "fwh")) { 121 buses_supported |= BUS_FWH;134 dummy_buses_supported |= BUS_FWH; 122 135 msg_pdbg("Enabling support for %s flash.\n", "FWH"); 123 136 } 124 137 if (strstr(bustext, "spi")) { 125 register_spi_programmer(&spi_programmer_dummyflasher);138 dummy_buses_supported |= BUS_SPI; 126 139 msg_pdbg("Enabling support for %s flash.\n", "SPI"); 127 140 } 128 if ( buses_supported == BUS_NONE)141 if (dummy_buses_supported == BUS_NONE) 129 142 msg_pdbg("Support for all flash bus types disabled.\n"); 130 143 free(bustext); … … 227 240 return 1; 228 241 } 242 if (dummy_buses_supported & (BUS_PARALLEL | BUS_LPC | BUS_FWH)) 243 register_par_programmer(&par_programmer_dummy, 244 dummy_buses_supported & 245 (BUS_PARALLEL | BUS_LPC | 246 BUS_FWH)); 247 if (dummy_buses_supported & BUS_SPI) 248 register_spi_programmer(&spi_programmer_dummyflasher); 249 229 250 return 0; 230 251 } -
trunk/flashrom.c
r1450 r1463 69 69 .map_flash_region = physmap, 70 70 .unmap_flash_region = physunmap, 71 .chip_readb = internal_chip_readb,72 .chip_readw = internal_chip_readw,73 .chip_readl = internal_chip_readl,74 .chip_readn = internal_chip_readn,75 .chip_writeb = internal_chip_writeb,76 .chip_writew = internal_chip_writew,77 .chip_writel = internal_chip_writel,78 .chip_writen = fallback_chip_writen,79 71 .delay = internal_delay, 80 72 }, … … 87 79 .map_flash_region = dummy_map, 88 80 .unmap_flash_region = dummy_unmap, 89 .chip_readb = dummy_chip_readb,90 .chip_readw = dummy_chip_readw,91 .chip_readl = dummy_chip_readl,92 .chip_readn = dummy_chip_readn,93 .chip_writeb = dummy_chip_writeb,94 .chip_writew = dummy_chip_writew,95 .chip_writel = dummy_chip_writel,96 .chip_writen = dummy_chip_writen,97 81 .delay = internal_delay, 98 82 }, … … 105 89 .map_flash_region = fallback_map, 106 90 .unmap_flash_region = fallback_unmap, 107 .chip_readb = nic3com_chip_readb,108 .chip_readw = fallback_chip_readw,109 .chip_readl = fallback_chip_readl,110 .chip_readn = fallback_chip_readn,111 .chip_writeb = nic3com_chip_writeb,112 .chip_writew = fallback_chip_writew,113 .chip_writel = fallback_chip_writel,114 .chip_writen = fallback_chip_writen,115 91 .delay = internal_delay, 116 92 }, … … 125 101 .map_flash_region = fallback_map, 126 102 .unmap_flash_region = fallback_unmap, 127 .chip_readb = nicrealtek_chip_readb,128 .chip_readw = fallback_chip_readw,129 .chip_readl = fallback_chip_readl,130 .chip_readn = fallback_chip_readn,131 .chip_writeb = nicrealtek_chip_writeb,132 .chip_writew = fallback_chip_writew,133 .chip_writel = fallback_chip_writel,134 .chip_writen = fallback_chip_writen,135 103 .delay = internal_delay, 136 104 }, … … 143 111 .map_flash_region = fallback_map, 144 112 .unmap_flash_region = fallback_unmap, 145 .chip_readb = nicnatsemi_chip_readb,146 .chip_readw = fallback_chip_readw,147 .chip_readl = fallback_chip_readl,148 .chip_readn = fallback_chip_readn,149 .chip_writeb = nicnatsemi_chip_writeb,150 .chip_writew = fallback_chip_writew,151 .chip_writel = fallback_chip_writel,152 .chip_writen = fallback_chip_writen,153 113 .delay = internal_delay, 154 114 }, … … 161 121 .map_flash_region = fallback_map, 162 122 .unmap_flash_region = fallback_unmap, 163 .chip_readb = gfxnvidia_chip_readb,164 .chip_readw = fallback_chip_readw,165 .chip_readl = fallback_chip_readl,166 .chip_readn = fallback_chip_readn,167 .chip_writeb = gfxnvidia_chip_writeb,168 .chip_writew = fallback_chip_writew,169 .chip_writel = fallback_chip_writel,170 .chip_writen = fallback_chip_writen,171 123 .delay = internal_delay, 172 124 }, … … 179 131 .map_flash_region = fallback_map, 180 132 .unmap_flash_region = fallback_unmap, 181 .chip_readb = drkaiser_chip_readb,182 .chip_readw = fallback_chip_readw,183 .chip_readl = fallback_chip_readl,184 .chip_readn = fallback_chip_readn,185 .chip_writeb = drkaiser_chip_writeb,186 .chip_writew = fallback_chip_writew,187 .chip_writel = fallback_chip_writel,188 .chip_writen = fallback_chip_writen,189 133 .delay = internal_delay, 190 134 }, … … 197 141 .map_flash_region = fallback_map, 198 142 .unmap_flash_region = fallback_unmap, 199 .chip_readb = satasii_chip_readb,200 .chip_readw = fallback_chip_readw,201 .chip_readl = fallback_chip_readl,202 .chip_readn = fallback_chip_readn,203 .chip_writeb = satasii_chip_writeb,204 .chip_writew = fallback_chip_writew,205 .chip_writel = fallback_chip_writel,206 .chip_writen = fallback_chip_writen,207 143 .delay = internal_delay, 208 144 }, … … 215 151 .map_flash_region = fallback_map, 216 152 .unmap_flash_region = fallback_unmap, 217 .chip_readb = atahpt_chip_readb,218 .chip_readw = fallback_chip_readw,219 .chip_readl = fallback_chip_readl,220 .chip_readn = fallback_chip_readn,221 .chip_writeb = atahpt_chip_writeb,222 .chip_writew = fallback_chip_writew,223 .chip_writel = fallback_chip_writel,224 .chip_writen = fallback_chip_writen,225 153 .delay = internal_delay, 226 154 }, … … 233 161 .map_flash_region = fallback_map, 234 162 .unmap_flash_region = fallback_unmap, 235 .chip_readb = noop_chip_readb,236 .chip_readw = fallback_chip_readw,237 .chip_readl = fallback_chip_readl,238 .chip_readn = fallback_chip_readn,239 .chip_writeb = noop_chip_writeb,240 .chip_writew = fallback_chip_writew,241 .chip_writel = fallback_chip_writel,242 .chip_writen = fallback_chip_writen,243 163 .delay = internal_delay, 244 164 }, … … 251 171 .map_flash_region = fallback_map, 252 172 .unmap_flash_region = fallback_unmap, 253 .chip_readb = serprog_chip_readb,254 .chip_readw = fallback_chip_readw,255 .chip_readl = fallback_chip_readl,256 .chip_readn = serprog_chip_readn,257 .chip_writeb = serprog_chip_writeb,258 .chip_writew = fallback_chip_writew,259 .chip_writel = fallback_chip_writel,260 .chip_writen = fallback_chip_writen,261 173 .delay = serprog_delay, 262 174 }, … … 269 181 .map_flash_region = fallback_map, 270 182 .unmap_flash_region = fallback_unmap, 271 .chip_readb = noop_chip_readb,272 .chip_readw = fallback_chip_readw,273 .chip_readl = fallback_chip_readl,274 .chip_readn = fallback_chip_readn,275 .chip_writeb = noop_chip_writeb,276 .chip_writew = fallback_chip_writew,277 .chip_writel = fallback_chip_writel,278 .chip_writen = fallback_chip_writen,279 183 .delay = internal_delay, 280 184 }, … … 287 191 .map_flash_region = fallback_map, 288 192 .unmap_flash_region = fallback_unmap, 289 .chip_readb = noop_chip_readb,290 .chip_readw = fallback_chip_readw,291 .chip_readl = fallback_chip_readl,292 .chip_readn = fallback_chip_readn,293 .chip_writeb = noop_chip_writeb,294 .chip_writew = fallback_chip_writew,295 .chip_writel = fallback_chip_writel,296 .chip_writen = fallback_chip_writen,297 193 .delay = internal_delay, 298 194 }, … … 305 201 .map_flash_region = fallback_map, 306 202 .unmap_flash_region = fallback_unmap, 307 .chip_readb = noop_chip_readb,308 .chip_readw = fallback_chip_readw,309 .chip_readl = fallback_chip_readl,310 .chip_readn = fallback_chip_readn,311 .chip_writeb = noop_chip_writeb,312 .chip_writew = fallback_chip_writew,313 .chip_writel = fallback_chip_writel,314 .chip_writen = fallback_chip_writen,315 203 .delay = internal_delay, 316 204 }, … … 323 211 .map_flash_region = fallback_map, 324 212 .unmap_flash_region = fallback_unmap, 325 .chip_readb = nicintel_chip_readb,326 .chip_readw = fallback_chip_readw,327 .chip_readl = fallback_chip_readl,328 .chip_readn = fallback_chip_readn,329 .chip_writeb = nicintel_chip_writeb,330 .chip_writew = fallback_chip_writew,331 .chip_writel = fallback_chip_writel,332 .chip_writen = fallback_chip_writen,333 213 .delay = internal_delay, 334 214 }, … … 341 221 .map_flash_region = fallback_map, 342 222 .unmap_flash_region = fallback_unmap, 343 .chip_readb = noop_chip_readb,344 .chip_readw = fallback_chip_readw,345 .chip_readl = fallback_chip_readl,346 .chip_readn = fallback_chip_readn,347 .chip_writeb = noop_chip_writeb,348 .chip_writew = fallback_chip_writew,349 .chip_writel = fallback_chip_writel,350 .chip_writen = fallback_chip_writen,351 223 .delay = internal_delay, 352 224 }, … … 359 231 .map_flash_region = fallback_map, 360 232 .unmap_flash_region = fallback_unmap, 361 .chip_readb = noop_chip_readb,362 .chip_readw = fallback_chip_readw,363 .chip_readl = fallback_chip_readl,364 .chip_readn = fallback_chip_readn,365 .chip_writeb = noop_chip_writeb,366 .chip_writew = fallback_chip_writew,367 .chip_writel = fallback_chip_writel,368 .chip_writen = fallback_chip_writen,369 233 .delay = internal_delay, 370 234 }, … … 377 241 .map_flash_region = fallback_map, 378 242 .unmap_flash_region = fallback_unmap, 379 .chip_readb = satamv_chip_readb,380 .chip_readw = fallback_chip_readw,381 .chip_readl = fallback_chip_readl,382 .chip_readn = fallback_chip_readn,383 .chip_writeb = satamv_chip_writeb,384 .chip_writew = fallback_chip_writew,385 .chip_writel = fallback_chip_writel,386 .chip_writen = fallback_chip_writen,387 243 .delay = internal_delay, 388 244 }, … … 395 251 .map_flash_region = fallback_map, 396 252 .unmap_flash_region = fallback_unmap, 397 .chip_readb = noop_chip_readb,398 .chip_readw = fallback_chip_readw,399 .chip_readl = fallback_chip_readl,400 .chip_readn = fallback_chip_readn,401 .chip_writeb = noop_chip_writeb,402 .chip_writew = fallback_chip_writew,403 .chip_writel = fallback_chip_writel,404 .chip_writen = fallback_chip_writen,405 253 .delay = internal_delay, 406 254 }, … … 514 362 void chip_writeb(uint8_t val, chipaddr addr) 515 363 { 516 p rogrammer_table[programmer].chip_writeb(val, addr);364 par_programmer->chip_writeb(val, addr); 517 365 } 518 366 519 367 void chip_writew(uint16_t val, chipaddr addr) 520 368 { 521 p rogrammer_table[programmer].chip_writew(val, addr);369 par_programmer->chip_writew(val, addr); 522 370 } 523 371 524 372 void chip_writel(uint32_t val, chipaddr addr) 525 373 { 526 p rogrammer_table[programmer].chip_writel(val, addr);374 par_programmer->chip_writel(val, addr); 527 375 } 528 376 529 377 void chip_writen(uint8_t *buf, chipaddr addr, size_t len) 530 378 { 531 p rogrammer_table[programmer].chip_writen(buf, addr, len);379 par_programmer->chip_writen(buf, addr, len); 532 380 } 533 381 534 382 uint8_t chip_readb(const chipaddr addr) 535 383 { 536 return p rogrammer_table[programmer].chip_readb(addr);384 return par_programmer->chip_readb(addr); 537 385 } 538 386 539 387 uint16_t chip_readw(const chipaddr addr) 540 388 { 541 return p rogrammer_table[programmer].chip_readw(addr);389 return par_programmer->chip_readw(addr); 542 390 } 543 391 544 392 uint32_t chip_readl(const chipaddr addr) 545 393 { 546 return p rogrammer_table[programmer].chip_readl(addr);394 return par_programmer->chip_readl(addr); 547 395 } 548 396 549 397 void chip_readn(uint8_t *buf, chipaddr addr, size_t len) 550 398 { 551 p rogrammer_table[programmer].chip_readn(buf, addr, len);399 par_programmer->chip_readn(buf, addr, len); 552 400 } 553 401 -
trunk/gfxnvidia.c
r1397 r1463 62 62 }; 63 63 64 static const struct par_programmer par_programmer_gfxnvidia = { 65 .chip_readb = gfxnvidia_chip_readb, 66 .chip_readw = fallback_chip_readw, 67 .chip_readl = fallback_chip_readl, 68 .chip_readn = fallback_chip_readn, 69 .chip_writeb = gfxnvidia_chip_writeb, 70 .chip_writew = fallback_chip_writew, 71 .chip_writel = fallback_chip_writel, 72 .chip_writen = fallback_chip_writen, 73 }; 74 64 75 static int gfxnvidia_shutdown(void *data) 65 76 { … … 95 106 rpci_write_long(pcidev_dev, 0x50, reg32); 96 107 97 buses_supported = BUS_PARALLEL;98 99 108 /* Write/erase doesn't work. */ 100 109 programmer_may_write = 0; 110 register_par_programmer(&par_programmer_gfxnvidia, BUS_PARALLEL); 101 111 102 112 return 0; -
trunk/ichspi.c
r1462 r1463 1797 1797 1798 1798 /* Not sure if it speaks all these bus protocols. */ 1799 buses_supported = BUS_LPC | BUS_FWH;1799 internal_buses_supported = BUS_LPC | BUS_FWH; 1800 1800 ich_generation = CHIPSET_ICH7; 1801 1801 register_spi_programmer(&spi_programmer_via); -
trunk/internal.c
r1440 r1463 128 128 int laptop_ok = 0; 129 129 130 static const struct par_programmer par_programmer_internal = { 131 .chip_readb = internal_chip_readb, 132 .chip_readw = internal_chip_readw, 133 .chip_readl = internal_chip_readl, 134 .chip_readn = internal_chip_readn, 135 .chip_writeb = internal_chip_writeb, 136 .chip_writew = internal_chip_writew, 137 .chip_writel = internal_chip_writel, 138 .chip_writen = fallback_chip_writen, 139 }; 140 141 enum chipbustype internal_buses_supported = BUS_NONE; 142 130 143 static int internal_shutdown(void *data) 131 144 { … … 192 205 193 206 /* Default to Parallel/LPC/FWH flash devices. If a known host controller 194 * is found, the init routine sets the buses_supported bitfield. 195 */ 196 buses_supported = BUS_NONSPI; 207 * is found, the host controller init routine sets the 208 * internal_buses_supported bitfield. 209 */ 210 internal_buses_supported = BUS_NONSPI; 197 211 198 212 /* Initialize PCI access for flash enables */ … … 288 302 */ 289 303 #if defined(__i386__) || defined(__x86_64__) || defined (__mips) 304 register_par_programmer(&par_programmer_internal, internal_buses_supported); 290 305 return 0; 291 306 #else -
trunk/it85spi.c
r1414 r1463 258 258 #endif 259 259 #ifdef LPC_MEMORY 260 base = (chipaddr)programmer_map_flash_region("it85 communication", 261 0xFFFFF000, 0x1000); 260 /* FIXME: We should block accessing that region for anything else. 261 * Major TODO here, and it will be a lot of work. 262 */ 263 base = (chipaddr)physmap("it85 communication", 0xFFFFF000, 0x1000); 262 264 msg_pdbg("%s():%d base=0x%08x\n", __func__, __LINE__, 263 265 (unsigned int)base); … … 286 288 int ret; 287 289 288 if (!( buses_supported & BUS_FWH)) {290 if (!(internal_buses_supported & BUS_FWH)) { 289 291 msg_pdbg("%s():%d buses not support FWH\n", __func__, __LINE__); 290 292 return 1; … … 293 295 msg_pdbg("FWH: %s():%d ret=%d\n", __func__, __LINE__, ret); 294 296 if (!ret) { 295 msg_pdbg("%s():%d buses_supported=0x%x\n", __func__, __LINE__, 296 buses_supported); 297 if (buses_supported & BUS_FWH) 298 msg_pdbg("Overriding chipset SPI with IT85 FWH|SPI.\n"); 299 /* Really leave FWH enabled? */ 297 msg_pdbg("%s: internal_buses_supported=0x%x\n", __func__, 298 internal_buses_supported); 299 /* Check for FWH because IT85 listens to FWH cycles. 300 * FIXME: The big question is whether FWH cycles are necessary 301 * for communication even if LPC_IO is defined. 302 */ 303 if (internal_buses_supported & BUS_FWH) 304 msg_pdbg("Registering IT85 SPI.\n"); 305 /* FIXME: Really leave FWH enabled? We can't use this region 306 * anymore since accessing it would mess up IT85 communication. 307 * If we decide to disable FWH for this region, we should print 308 * a debug message about it. 309 */ 300 310 /* Set this as SPI controller. */ 301 311 register_spi_programmer(&spi_programmer_it85xx); -
trunk/it87spi.c
r1450 r1463 193 193 exit_conf_mode_ite(port); 194 194 it8716f_flashport = flashport; 195 if ( buses_supported & BUS_SPI)195 if (internal_buses_supported & BUS_SPI) 196 196 msg_pdbg("Overriding chipset SPI with IT87 SPI.\n"); 197 197 /* FIXME: Add the SPI bus or replace the other buses with it? */ -
trunk/nic3com.c
r1396 r1463 56 56 }; 57 57 58 static const struct par_programmer par_programmer_nic3com = { 59 .chip_readb = nic3com_chip_readb, 60 .chip_readw = fallback_chip_readw, 61 .chip_readl = fallback_chip_readl, 62 .chip_readn = fallback_chip_readn, 63 .chip_writeb = nic3com_chip_writeb, 64 .chip_writew = fallback_chip_writew, 65 .chip_writel = fallback_chip_writel, 66 .chip_writen = fallback_chip_writen, 67 }; 68 58 69 static int nic3com_shutdown(void *data) 59 70 { … … 97 108 OUTW(SELECT_REG_WINDOW + 0, io_base_addr + INT_STATUS); 98 109 99 buses_supported = BUS_PARALLEL;100 max_rom_decode.parallel = 128 * 1024;101 102 110 if (register_shutdown(nic3com_shutdown, NULL)) 103 111 return 1; 112 113 max_rom_decode.parallel = 128 * 1024; 114 register_par_programmer(&par_programmer_nic3com, BUS_PARALLEL); 115 104 116 return 0; 105 117 } -
trunk/nicintel.c
r1425 r1463 43 43 44 44 #define CSR_FCR 0x0c 45 46 static const struct par_programmer par_programmer_nicintel = { 47 .chip_readb = nicintel_chip_readb, 48 .chip_readw = fallback_chip_readw, 49 .chip_readl = fallback_chip_readl, 50 .chip_readn = fallback_chip_readn, 51 .chip_writeb = nicintel_chip_writeb, 52 .chip_writew = fallback_chip_writew, 53 .chip_writel = fallback_chip_writel, 54 .chip_writen = fallback_chip_writen, 55 }; 45 56 46 57 static int nicintel_shutdown(void *data) … … 94 105 pci_rmmio_writew(0x0001, nicintel_control_bar + CSR_FCR); 95 106 96 buses_supported = BUS_PARALLEL;97 98 107 max_rom_decode.parallel = NICINTEL_MEMMAP_SIZE; 108 register_par_programmer(&par_programmer_nicintel, BUS_PARALLEL); 99 109 100 110 return 0; -
trunk/nicnatsemi.c
r1396 r1463 36 36 }; 37 37 38 static const struct par_programmer par_programmer_nicnatsemi = { 39 .chip_readb = nicnatsemi_chip_readb, 40 .chip_readw = fallback_chip_readw, 41 .chip_readl = fallback_chip_readl, 42 .chip_readn = fallback_chip_readn, 43 .chip_writeb = nicnatsemi_chip_writeb, 44 .chip_writew = fallback_chip_writew, 45 .chip_writel = fallback_chip_writel, 46 .chip_writen = fallback_chip_writen, 47 }; 48 38 49 static int nicnatsemi_shutdown(void *data) 39 50 { … … 49 60 io_base_addr = pcidev_init(PCI_BASE_ADDRESS_0, nics_natsemi); 50 61 51 buses_supported = BUS_PARALLEL; 62 if (register_shutdown(nicnatsemi_shutdown, NULL)) 63 return 1; 52 64 53 65 /* The datasheet shows address lines MA0-MA16 in one place and MA0-MA15 … … 58 70 */ 59 71 max_rom_decode.parallel = 131072; 72 register_par_programmer(&par_programmer_nicnatsemi, BUS_PARALLEL); 60 73 61 if (register_shutdown(nicnatsemi_shutdown, NULL))62 return 1;63 74 return 0; 64 75 } -
trunk/nicrealtek.c
r1396 r1463 37 37 }; 38 38 39 static const struct par_programmer par_programmer_nicrealtek = { 40 .chip_readb = nicrealtek_chip_readb, 41 .chip_readw = fallback_chip_readw, 42 .chip_readl = fallback_chip_readl, 43 .chip_readn = fallback_chip_readn, 44 .chip_writeb = nicrealtek_chip_writeb, 45 .chip_writew = fallback_chip_writew, 46 .chip_writel = fallback_chip_writel, 47 .chip_writen = fallback_chip_writen, 48 }; 49 39 50 static int nicrealtek_shutdown(void *data) 40 51 { … … 51 62 io_base_addr = pcidev_init(PCI_BASE_ADDRESS_0, nics_realtek); 52 63 53 buses_supported = BUS_PARALLEL;54 55 64 if (register_shutdown(nicrealtek_shutdown, NULL)) 56 65 return 1; 66 67 register_par_programmer(&par_programmer_nicrealtek, BUS_PARALLEL); 68 57 69 return 0; 58 70 } -
trunk/programmer.c
r1255 r1463 20 20 21 21 #include "flash.h" 22 #include "programmer.h" 23 24 static const struct par_programmer par_programmer_none = { 25 .chip_readb = noop_chip_readb, 26 .chip_readw = fallback_chip_readw, 27 .chip_readl = fallback_chip_readl, 28 .chip_readn = fallback_chip_readn, 29 .chip_writeb = noop_chip_writeb, 30 .chip_writew = fallback_chip_writew, 31 .chip_writel = fallback_chip_writel, 32 .chip_writen = fallback_chip_writen, 33 }; 34 35 const struct par_programmer *par_programmer = &par_programmer_none; 22 36 23 37 /* No-op shutdown() for programmers which don't need special handling */ … … 97 111 return; 98 112 } 113 114 void register_par_programmer(const struct par_programmer *pgm, const enum chipbustype buses) 115 { 116 par_programmer = pgm; 117 buses_supported |= buses; 118 } -
trunk/programmer.h
r1460 r1463 98 98 void (*unmap_flash_region) (void *virt_addr, size_t len); 99 99 100 void (*chip_writeb) (uint8_t val, chipaddr addr);101 void (*chip_writew) (uint16_t val, chipaddr addr);102 void (*chip_writel) (uint32_t val, chipaddr addr);103 void (*chip_writen) (uint8_t *buf, chipaddr addr, size_t len);104 uint8_t (*chip_readb) (const chipaddr addr);105 uint16_t (*chip_readw) (const chipaddr addr);106 uint32_t (*chip_readl) (const chipaddr addr);107 void (*chip_readn) (uint8_t *buf, const chipaddr addr, size_t len);108 100 void (*delay) (int usecs); 109 101 }; … … 307 299 void probe_superio(void); 308 300 int register_superio(struct superio s); 301 extern enum chipbustype internal_buses_supported; 309 302 int internal_init(void); 310 303 void internal_chip_writeb(uint8_t val, chipaddr addr); … … 361 354 uint32_t fallback_chip_readl(const chipaddr addr); 362 355 void fallback_chip_readn(uint8_t *buf, const chipaddr addr, size_t len); 356 struct par_programmer { 357 void (*chip_writeb) (uint8_t val, chipaddr addr); 358 void (*chip_writew) (uint16_t val, chipaddr addr); 359 void (*chip_writel) (uint32_t val, chipaddr addr); 360 void (*chip_writen) (uint8_t *buf, chipaddr addr, size_t len); 361 uint8_t (*chip_readb) (const chipaddr addr); 362 uint16_t (*chip_readw) (const chipaddr addr); 363 uint32_t (*chip_readl) (const chipaddr addr); 364 void (*chip_readn) (uint8_t *buf, const chipaddr addr, size_t len); 365 }; 366 extern const struct par_programmer *par_programmer; 367 void register_par_programmer(const struct par_programmer *pgm, const enum chipbustype buses); 363 368 364 369 /* dummyflasher.c */ … … 635 640 void serprog_chip_readn(uint8_t *buf, const chipaddr addr, size_t len); 636 641 void serprog_delay(int usecs); 637 int serprog_spi_send_command(unsigned int writecnt, unsigned int readcnt,638 const unsigned char *writearr,639 unsigned char *readarr);640 int serprog_spi_read(struct flashchip *flash, uint8_t *buf, int start, int len);641 642 #endif 642 643 -
trunk/satamv.c
r1396 r1463 41 41 #define PCI_BAR2_CONTROL 0x00c08 42 42 #define GPIO_PORT_CONTROL 0x104f0 43 44 static const struct par_programmer par_programmer_satamv = { 45 .chip_readb = satamv_chip_readb, 46 .chip_readw = fallback_chip_readw, 47 .chip_readl = fallback_chip_readl, 48 .chip_readn = fallback_chip_readn, 49 .chip_writeb = satamv_chip_writeb, 50 .chip_writew = fallback_chip_writew, 51 .chip_writel = fallback_chip_writel, 52 .chip_writen = fallback_chip_writen, 53 }; 43 54 44 55 static int satamv_shutdown(void *data) … … 138 149 msg_pspew("Activating I/O BAR at 0x%04x\n", mv_iobar); 139 150 140 buses_supported = BUS_PARALLEL;141 142 151 /* 512 kByte with two 8-bit latches, and 143 152 * 4 MByte with additional 3-bit latch. */ 144 153 max_rom_decode.parallel = 4 * 1024 * 1024; 154 register_par_programmer(&par_programmer_satamv, BUS_PARALLEL); 145 155 146 156 return 0; -
trunk/satasii.c
r1396 r1463 43 43 }; 44 44 45 static const struct par_programmer par_programmer_satasii = { 46 .chip_readb = satasii_chip_readb, 47 .chip_readw = fallback_chip_readw, 48 .chip_readl = fallback_chip_readl, 49 .chip_readn = fallback_chip_readn, 50 .chip_writeb = satasii_chip_writeb, 51 .chip_writew = fallback_chip_writew, 52 .chip_writel = fallback_chip_writel, 53 .chip_writen = fallback_chip_writen, 54 }; 55 45 56 static int satasii_shutdown(void *data) 46 57 { … … 77 88 msg_pinfo("Warning: Flash seems unconnected.\n"); 78 89 79 buses_supported = BUS_PARALLEL;80 81 90 if (register_shutdown(satasii_shutdown, NULL)) 82 91 return 1; 92 93 register_par_programmer(&par_programmer_satasii, BUS_PARALLEL); 94 83 95 return 0; 84 96 } -
trunk/serprog.c
r1456 r1463 300 300 } 301 301 302 static int serprog_spi_send_command(unsigned int writecnt, unsigned int readcnt, 303 const unsigned char *writearr, 304 unsigned char *readarr); 305 static int serprog_spi_read(struct flashchip *flash, uint8_t *buf, int start, 306 int len); 302 307 static struct spi_programmer spi_programmer_serprog = { 303 308 .type = SPI_CONTROLLER_SERPROG, … … 310 315 }; 311 316 317 static const struct par_programmer par_programmer_serprog = { 318 .chip_readb = serprog_chip_readb, 319 .chip_readw = fallback_chip_readw, 320 .chip_readl = fallback_chip_readl, 321 .chip_readn = serprog_chip_readn, 322 .chip_writeb = serprog_chip_writeb, 323 .chip_writew = fallback_chip_writew, 324 .chip_writel = fallback_chip_writel, 325 .chip_writen = fallback_chip_writen, 326 }; 327 328 static enum chipbustype serprog_buses_supported = BUS_NONE; 329 312 330 int serprog_init(void) 313 331 { … … 401 419 if (sp_docommand(S_CMD_Q_IFACE, 0, NULL, 2, &iface)) { 402 420 msg_perr("Error: NAK to query interface version\n"); 403 exit(1);421 return 1; 404 422 } 405 423 406 424 if (iface != 1) { 407 425 msg_perr("Error: Unknown interface version: %d\n", iface); 408 exit(1);426 return 1; 409 427 } 410 428 … … 413 431 if (sp_docommand(S_CMD_Q_CMDMAP, 0, NULL, 32, sp_cmdmap)) { 414 432 msg_perr("Error: query command map not supported\n"); 415 exit(1);433 return 1; 416 434 } 417 435 418 436 sp_check_avail_automatic = 1; 419 437 420 438 /* FIXME: This assumes that serprog device bustypes are always 439 * identical with flashrom bustype enums and that they all fit 440 * in a single byte. 441 */ 421 442 if (sp_docommand(S_CMD_Q_BUSTYPE, 0, NULL, 1, &c)) { 422 443 msg_perr("Warning: NAK to query supported buses\n"); 423 444 c = BUS_NONSPI; /* A reasonable default for now. */ 424 445 } 425 buses_supported = c; 446 serprog_buses_supported = c; 447 426 448 msg_pdbg(MSGHEADER "Bus support: parallel=%s, LPC=%s, FWH=%s, SPI=%s\n", 427 449 (c & BUS_PARALLEL) ? "on" : "off", … … 430 452 (c & BUS_SPI) ? "on" : "off"); 431 453 /* Check for the minimum operational set of commands. */ 432 if ( buses_supported & BUS_SPI) {454 if (serprog_buses_supported & BUS_SPI) { 433 455 uint8_t bt = BUS_SPI; 434 456 if (sp_check_commandavail(S_CMD_O_SPIOP) == 0) { 435 457 msg_perr("Error: SPI operation not supported while the " 436 458 "bustype is SPI\n"); 437 exit(1);459 return 1; 438 460 } 439 461 /* Success of any of these commands is optional. We don't need … … 462 484 msg_pdbg(MSGHEADER "Maximum read-n length is %d\n", v); 463 485 } 464 bt = buses_supported;486 bt = serprog_buses_supported; 465 487 sp_docommand(S_CMD_S_BUSTYPE, 1, &bt, 0, NULL); 466 register_spi_programmer(&spi_programmer_serprog); 467 } 468 469 if (buses_supported & BUS_NONSPI) { 488 } 489 490 if (serprog_buses_supported & BUS_NONSPI) { 470 491 if (sp_check_commandavail(S_CMD_O_INIT) == 0) { 471 492 msg_perr("Error: Initialize operation buffer " 472 493 "not supported\n"); 473 exit(1);494 return 1; 474 495 } 475 496 … … 477 498 msg_perr("Error: Write to opbuf: " 478 499 "delay not supported\n"); 479 exit(1);500 return 1; 480 501 } 481 502 … … 484 505 if (sp_check_commandavail(S_CMD_R_BYTE) == 0) { 485 506 msg_perr("Error: Single byte read not supported\n"); 486 exit(1);507 return 1; 487 508 } 488 509 /* This could be translated to single byte reads (if missing), … … 490 511 if (sp_check_commandavail(S_CMD_R_NBYTES) == 0) { 491 512 msg_perr("Error: Read n bytes not supported\n"); 492 exit(1);513 return 1; 493 514 } 494 515 if (sp_check_commandavail(S_CMD_O_WRITEB) == 0) { 495 516 msg_perr("Error: Write to opbuf: " 496 517 "write byte not supported\n"); 497 exit(1);518 return 1; 498 519 } 499 520 … … 514 535 msg_perr("Error: cannot allocate memory for " 515 536 "Write-n buffer\n"); 516 exit(1);537 return 1; 517 538 } 518 539 sp_write_n_bytes = 0; … … 552 573 msg_perr("Error: Execute operation buffer not " 553 574 "supported\n"); 554 exit(1);575 return 1; 555 576 } 556 577 557 578 if (sp_docommand(S_CMD_O_INIT, 0, NULL, 0, NULL)) { 558 579 msg_perr("Error: NAK to initialize operation buffer\n"); 559 exit(1);580 return 1; 560 581 } 561 582 … … 573 594 sp_streamed_transmit_bytes = 0; 574 595 sp_opbuf_usage = 0; 596 if (serprog_buses_supported & BUS_SPI) 597 register_spi_programmer(&spi_programmer_serprog); 598 if (serprog_buses_supported & BUS_NONSPI) 599 register_par_programmer(&par_programmer_serprog, 600 serprog_buses_supported & BUS_NONSPI); 575 601 return 0; 576 602 } … … 767 793 } 768 794 769 int serprog_spi_send_command(unsigned int writecnt, unsigned int readcnt,795 static int serprog_spi_send_command(unsigned int writecnt, unsigned int readcnt, 770 796 const unsigned char *writearr, 771 797 unsigned char *readarr) … … 797 823 * non-contiguous address space (like AT45DB161D). When spi_read_chunked is 798 824 * fixed this method can be removed. */ 799 int serprog_spi_read(struct flashchip *flash, uint8_t *buf, int start, int len)825 static int serprog_spi_read(struct flashchip *flash, uint8_t *buf, int start, int len) 800 826 { 801 827 int i; -
trunk/wbsio_spi.c
r1450 r1463 83 83 msg_pspew("\nwbsio_spibase = 0x%x\n", wbsio_spibase); 84 84 85 register_spi_programmer(&spi_programmer_wbsio);86 85 msg_pdbg("%s: Winbond saved on 4 register bits so max chip size is " 87 86 "1024 kB!\n", __func__); 88 87 max_rom_decode.spi = 1024 * 1024; 88 register_spi_programmer(&spi_programmer_wbsio); 89 89 90 90 return 0;
Note: See TracChangeset
for help on using the changeset viewer.
