Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(42)

Side by Side Diff: mec1308.c

Issue 6897014: Do not call EC programmer shutdown functions explicitly. (Closed) Base URL: svn://coreboot.org/flashrom/trunk
Patch Set: Fix code as per Stefan's comments Created 9 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « it85spi.c ('k') | programmer.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * This file is part of the flashrom project. 2 * This file is part of the flashrom project.
3 * 3 *
4 * Copyright (C) 2010 Google Inc. 4 * Copyright (C) 2010 Google Inc.
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 9 *
10 * Redistributions of source code must retain the above copyright 10 * Redistributions of source code must retain the above copyright
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
300 msg_perr("%s(): failed to enter passthru mode, result=%02x\n", 300 msg_perr("%s(): failed to enter passthru mode, result=%02x\n",
301 __func__, tmp8); 301 __func__, tmp8);
302 return 1; 302 return 1;
303 } 303 }
304 msg_pdbg("%s(): start passthru mode return code: 0x%02x\n", 304 msg_pdbg("%s(): start passthru mode return code: 0x%02x\n",
305 __func__, tmp8); 305 __func__, tmp8);
306 306
307 return 0; 307 return 0;
308 } 308 }
309 309
310 static void mec1308_shutdown(void *data)
311 {
312 if (spi_controller != SPI_CONTROLLER_MEC1308)
313 return;
314
315 /* Exit passthru mode before performing commands which do not affect
316 the SPI ROM */
317 mec1308_exit_passthru_mode();
318
319 /* Re-enable SMI and ACPI.
320 FIXME: is there an ordering dependency? */
321 mbx_write(MEC1308_MBX_CMD, MEC1308_CMD_SMI_ENABLE);
322 mbx_write(MEC1308_MBX_CMD, MEC1308_CMD_ACPI_ENABLE);
323 }
324
310 /* Called by internal_init() */ 325 /* Called by internal_init() */
311 int mec1308_probe_spi_flash(const char *name) 326 int mec1308_probe_spi_flash(const char *name)
312 { 327 {
313 uint16_t sio_port; 328 uint16_t sio_port;
314 uint8_t device_id; 329 uint8_t device_id;
315 uint8_t tmp8; 330 uint8_t tmp8;
316 331
317 msg_pdbg("%s(): entered\n", __func__); 332 msg_pdbg("%s(): entered\n", __func__);
318 333
319 if (mec1308_get_sio_index(&sio_port) < 0) { 334 if (mec1308_get_sio_index(&sio_port) < 0) {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
354 if (mbx_wait() != 0) { 369 if (mbx_wait() != 0) {
355 msg_perr("%s: mailbox is not available\n", __func__); 370 msg_perr("%s: mailbox is not available\n", __func__);
356 return 1; 371 return 1;
357 } 372 }
358 373
359 /* Further setup -- disable SMI and ACPI. 374 /* Further setup -- disable SMI and ACPI.
360 FIXME: is there an ordering dependency? */ 375 FIXME: is there an ordering dependency? */
361 mbx_write(MEC1308_MBX_CMD, MEC1308_CMD_ACPI_DISABLE); 376 mbx_write(MEC1308_MBX_CMD, MEC1308_CMD_ACPI_DISABLE);
362 mbx_write(MEC1308_MBX_CMD, MEC1308_CMD_SMI_DISABLE); 377 mbx_write(MEC1308_MBX_CMD, MEC1308_CMD_SMI_DISABLE);
363 378
379 if (register_shutdown(mec1308_shutdown, NULL))
380 return 1;
381
364 /* 382 /*
365 * Enter SPI Pass-Thru Mode after commands which do not require access 383 * Enter SPI Pass-Thru Mode after commands which do not require access
366 * to SPI ROM are complete. We'll start by doing the exit_passthru_mode 384 * to SPI ROM are complete. We'll start by doing the exit_passthru_mode
367 * sequence, which is benign if the EC is already in passthru mode. 385 * sequence, which is benign if the EC is already in passthru mode.
368 */ 386 */
369 mec1308_exit_passthru_mode(); 387 mec1308_exit_passthru_mode();
388
370 if (enter_passthru_mode()) 389 if (enter_passthru_mode())
371 return 1; 390 return 1;
372 391
373 msg_pdbg("%s(): successfully initialized mec1308\n", __func__); 392 msg_pdbg("%s(): successfully initialized mec1308\n", __func__);
374 return 0; 393 return 0;
375 } 394 }
376 395
377 int mec1308_shutdown(void)
378 {
379 if (spi_controller != SPI_CONTROLLER_MEC1308)
380 return 0;
381
382 /* Exit passthru mode before performing commands which do not affect
383 the SPI ROM */
384 mec1308_exit_passthru_mode();
385
386 /* Re-enable SMI and ACPI.
387 FIXME: is there an ordering dependency? */
388 mbx_write(MEC1308_MBX_CMD, MEC1308_CMD_SMI_ENABLE);
389 mbx_write(MEC1308_MBX_CMD, MEC1308_CMD_ACPI_ENABLE);
390
391 return 0;
392 }
393
394 int mec1308_spi_read(struct flashchip *flash, uint8_t * buf, int start, int len) 396 int mec1308_spi_read(struct flashchip *flash, uint8_t * buf, int start, int len)
395 { 397 {
396 return spi_read_chunked(flash, buf, start, len, flash->page_size); 398 return spi_read_chunked(flash, buf, start, len, flash->page_size);
397 } 399 }
398 400
399 int mec1308_spi_write_256(struct flashchip *flash, 401 int mec1308_spi_write_256(struct flashchip *flash,
400 uint8_t *buf, int start, int len) 402 uint8_t *buf, int start, int len)
401 { 403 {
402 return spi_write_chunked(flash, buf, start, len, flash->page_size); 404 return spi_write_chunked(flash, buf, start, len, flash->page_size);
403 } 405 }
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
436 mbx_write(MEC1308_MBX_CMD, MEC1308_CMD_PASSTHRU_READ); 438 mbx_write(MEC1308_MBX_CMD, MEC1308_CMD_PASSTHRU_READ);
437 readarr[i] = mbx_read(MEC1308_MBX_DATA_START); 439 readarr[i] = mbx_read(MEC1308_MBX_DATA_START);
438 } 440 }
439 441
440 if (mec1308_chip_deselect()) 442 if (mec1308_chip_deselect())
441 return 1; 443 return 1;
442 444
443 return 0; 445 return 0;
444 } 446 }
445 #endif 447 #endif
OLDNEW
« no previous file with comments | « it85spi.c ('k') | programmer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698