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

Unified Diff: internal.c

Issue 6731011: Add Tegra2 SPI controller. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/flashrom.git@master
Patch Set: refine comments Created 9 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: internal.c
diff --git a/internal.c b/internal.c
index c4e7175cd8aea259b9860caaf7e276eb657a7fb3..fc35b9b604afa84f2c35064c85107eadd68b4214 100644
--- a/internal.c
+++ b/internal.c
@@ -18,8 +18,11 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#include <stdio.h>
#include <string.h>
#include <stdlib.h>
+#include <stdarg.h>
+
#include "flash.h"
#include "programmer.h"
@@ -116,6 +119,50 @@ void probe_superio(void)
int is_laptop = 0;
enum chipbustype target_bus;
+#if defined(__i386__) || defined(__x86_64__)
+#define BUFSIZE 256
+static char buffer[BUFSIZE];
+
+static void
+pci_error(char *msg, ...)
+{
+ va_list args;
+
+ va_start(args, msg);
+ vsnprintf(buffer, BUFSIZE, msg, args);
+ va_end(args);
+
+ msg_perr("pcilib: %s\n", buffer);
+
+ /* libpci requires us to exit. TODO cleanup? */
+ exit(1);
+}
+
+static void
+pci_warning(char *msg, ...)
+{
+ va_list args;
+
+ va_start(args, msg);
+ vsnprintf(buffer, BUFSIZE, msg, args);
+ va_end(args);
+
+ msg_pinfo("pcilib: %s\n", buffer);
+}
+
+static void
+pci_debug(char *msg, ...)
+{
+ va_list args;
+
+ va_start(args, msg);
+ vsnprintf(buffer, BUFSIZE, msg, args);
+ va_end(args);
+
+ msg_pdbg("pcilib: %s\n", buffer);
+}
+#endif
+
int internal_init(void)
{
#if __FLASHROM_LITTLE_ENDIAN__
@@ -193,11 +240,17 @@ int internal_init(void)
get_io_perms();
+#if defined(__i386__) || defined(__x86_64__)
/* Initialize PCI access for flash enables */
pacc = pci_alloc(); /* Get the pci_access structure */
+ pacc->error = pci_error;
+ pacc->warning = pci_warning;
+ pacc->debug = pci_debug;
+
/* Set all options you want -- here we stick with the defaults */
pci_init(pacc); /* Initialize the PCI library */
pci_scan_bus(pacc); /* We want to get the list of devices */
+#endif
Stefan Reinauer 2011/03/25 16:57:47 everything up to here in internal.c should be drop
Louis 2011/03/29 07:55:02 Done.
if (processor_flash_enable()) {
msg_perr("Processor detection/init failed.\n"
@@ -224,6 +277,13 @@ int internal_init(void)
/* Probe for the Super I/O chip and fill global struct superio. */
probe_superio();
+
+#elif defined(__arm__)
+ /* We look at the cbtable first to see if we need a
+ * mainboard specific flash enable sequence.
+ */
+ coreboot_init();
+
#else
/* FIXME: Enable cbtable searching on all non-x86 platforms supported
* by coreboot.
@@ -256,6 +316,8 @@ int internal_init(void)
}
#if __FLASHROM_LITTLE_ENDIAN__
+
+#if defined(__i386__) || defined(__x86_64__)
/* try to enable it. Failure IS an option, since not all motherboards
* really need this to be done, etc., etc.
*/
@@ -264,6 +326,7 @@ int internal_init(void)
msg_perr("WARNING: No chipset found. Flash detection "
"will most likely fail.\n");
}
+#endif
#if defined(__i386__) || defined(__x86_64__)
/* Probe unconditionally for IT87* LPC->SPI translation and for
@@ -281,13 +344,18 @@ int internal_init(void)
#endif
+#if defined(__i386__) || defined(__x86_64__)
+ msg_perr("Board_flash_enable\n");
+
board_flash_enable(lb_vendor, lb_part);
+#endif
/* Even if chipset init returns an error code, we don't want to abort.
* The error code might have been a warning only.
* Besides that, we don't check the board enable return code either.
*/
-#if defined(__i386__) || defined(__x86_64__) || defined (__mips)
+#if defined(__i386__) || defined(__x86_64__) || defined (__mips) || \
+ defined(__arm__)
return 0;
#else
msg_perr("Your platform is not supported yet for the internal "
@@ -321,7 +389,10 @@ int internal_shutdown(void)
mec1308_shutdown();
}
#endif
-
+#if defined(__arm__)
+ if (spi_controller == SPI_CONTROLLER_TEGRA2)
+ tegra2_spi_shutdown();
+#endif
return 0;
}
#endif

Powered by Google App Engine
This is Rietveld 408576698