[flashrom] [commit] r898 - trunk

repository service svn at flashrom.org
Fri Feb 12 20:35:26 CET 2010


Author: hailfinger
Date: Fri Feb 12 20:35:25 2010
New Revision: 898
URL: http://flashrom.org/trac/coreboot/changeset/898

Log:
Linking in support for the internal programmer doesn't make sense if you
only need hardware (ioport, memory) access.
Split internal.c into internal.c and hwaccess.c.

Note: This patch was created by "svn cp internal.c hwaccess.c" and then
removing stuff from both files. That's why you can't apply the patch
as-is before running the svn cp.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>
Acked-by: Sean Nelson <audiohacked at gmail.com>

Added:
   trunk/hwaccess.c
      - copied, changed from r896, trunk/internal.c
Modified:
   trunk/Makefile
   trunk/hwaccess.h
   trunk/internal.c

Modified: trunk/Makefile
==============================================================================
--- trunk/Makefile	Fri Feb 12 19:40:27 2010	(r897)
+++ trunk/Makefile	Fri Feb 12 20:35:25 2010	(r898)
@@ -103,7 +103,7 @@
 
 ifeq ($(CONFIG_INTERNAL), yes)
 FEATURE_CFLAGS += -D'INTERNAL_SUPPORT=1'
-PROGRAMMER_OBJS += chipset_enable.o board_enable.o cbtable.o dmi.o it87spi.o ichspi.o sb600spi.o wbsio_spi.o
+PROGRAMMER_OBJS += chipset_enable.o board_enable.o cbtable.o dmi.o it87spi.o ichspi.o sb600spi.o wbsio_spi.o internal.o
 NEED_PCI := yes
 endif
 
@@ -180,12 +180,7 @@
 ifeq ($(NEED_PCI), yes)
 LIBS += -lpci
 FEATURE_CFLAGS += -D'NEED_PCI=1'
-PROGRAMMER_OBJS += pcidev.o physmap.o internal.o #FIXME: We need to move stuff
- 						# from internal.c and pcidev.c to pci.c
-						# internal.c needs to be split
-						# into internal-programmer-only stuff
-						# and a support lib for all internal+pci
-						# based stuff.
+PROGRAMMER_OBJS += pcidev.o physmap.o hwaccess.o
 ifeq ($(OS_ARCH), NetBSD)
 LIBS += -lpciutils #		The libpci we want.
 LIBS += -l$(shell uname -m) #	For (i386|x86_64)_iopl(2).

Copied and modified: trunk/hwaccess.c (from r896, trunk/internal.c)
==============================================================================
--- trunk/internal.c	Fri Feb 12 06:44:18 2010	(r896, copy source)
+++ trunk/hwaccess.c	Fri Feb 12 20:35:25 2010	(r898)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the flashrom project.
  *
- * Copyright (C) 2009 Carl-Daniel Hailfinger
+ * Copyright (C) 2009,2010 Carl-Daniel Hailfinger
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -23,7 +23,6 @@
 #include <stdlib.h>
 #include <fcntl.h>
 #include <sys/types.h>
-#include <sys/stat.h>
 #include <errno.h>
 #include "flash.h"
 
@@ -31,77 +30,6 @@
 int io_fd;
 #endif
 
-#if NEED_PCI == 1
-struct pci_dev *pci_dev_find_filter(struct pci_filter filter)
-{
-	struct pci_dev *temp;
-
-	for (temp = pacc->devices; temp; temp = temp->next)
-		if (pci_filter_match(&filter, temp))
-			return temp;
-
-	return NULL;
-}
-
-struct pci_dev *pci_dev_find_vendorclass(uint16_t vendor, uint16_t class)
-{
-	struct pci_dev *temp;
-	struct pci_filter filter;
-	uint16_t tmp2;
-
-	pci_filter_init(NULL, &filter);
-	filter.vendor = vendor;
-
-	for (temp = pacc->devices; temp; temp = temp->next)
-		if (pci_filter_match(&filter, temp)) {
-			/* Read PCI class */
-			tmp2 = pci_read_word(temp, 0x0a);
-			if (tmp2 == class)
-				return temp;
-		}
-
-	return NULL;
-}
-
-struct pci_dev *pci_dev_find(uint16_t vendor, uint16_t device)
-{
-	struct pci_dev *temp;
-	struct pci_filter filter;
-
-	pci_filter_init(NULL, &filter);
-	filter.vendor = vendor;
-	filter.device = device;
-
-	for (temp = pacc->devices; temp; temp = temp->next)
-		if (pci_filter_match(&filter, temp))
-			return temp;
-
-	return NULL;
-}
-
-struct pci_dev *pci_card_find(uint16_t vendor, uint16_t device,
-			      uint16_t card_vendor, uint16_t card_device)
-{
-	struct pci_dev *temp;
-	struct pci_filter filter;
-
-	pci_filter_init(NULL, &filter);
-	filter.vendor = vendor;
-	filter.device = device;
-
-	for (temp = pacc->devices; temp; temp = temp->next)
-		if (pci_filter_match(&filter, temp)) {
-			if ((card_vendor ==
-			     pci_read_word(temp, PCI_SUBSYSTEM_VENDOR_ID))
-			    && (card_device ==
-				pci_read_word(temp, PCI_SUBSYSTEM_ID)))
-				return temp;
-		}
-
-	return NULL;
-}
-#endif
-
 void get_io_perms(void)
 {
 #if defined (__sun) && (defined(__i386) || defined(__amd64))
@@ -124,101 +52,6 @@
 #endif
 }
 
-#if INTERNAL_SUPPORT == 1
-struct superio superio = {};
-
-void probe_superio(void)
-{
-	superio = probe_superio_ite();
-#if 0	/* Winbond SuperI/O code is not yet available. */
-	if (superio.vendor == SUPERIO_VENDOR_NONE)
-		superio = probe_superio_winbond();
-#endif
-}
-
-int internal_init(void)
-{
-	int ret = 0;
-
-	get_io_perms();
-
-	/* Initialize PCI access for flash enables */
-	pacc = pci_alloc();	/* Get the pci_access structure */
-	/* 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 */
-
-	/* We look at the lbtable first to see if we need a
-	 * mainboard specific flash enable sequence.
-	 */
-	coreboot_init();
-	dmi_init();
-
-	/* Probe for the SuperI/O chip and fill global struct superio. */
-	probe_superio();
-
-	/* try to enable it. Failure IS an option, since not all motherboards
-	 * really need this to be done, etc., etc.
-	 */
-	ret = chipset_flash_enable();
-	if (ret == -2) {
-		printf("WARNING: No chipset found. Flash detection "
-		       "will most likely fail.\n");
-	}
-
-	board_flash_enable(lb_vendor, lb_part);
-
-	/* 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.
-	 */
-	return 0; 
-}
-
-int internal_shutdown(void)
-{
-	release_io_perms();
-
-	return 0;
-}
-#endif
-
-void internal_chip_writeb(uint8_t val, chipaddr addr)
-{
-	mmio_writeb(val, (void *) addr);
-}
-
-void internal_chip_writew(uint16_t val, chipaddr addr)
-{
-	mmio_writew(val, (void *) addr);
-}
-
-void internal_chip_writel(uint32_t val, chipaddr addr)
-{
-	mmio_writel(val, (void *) addr);
-}
-
-uint8_t internal_chip_readb(const chipaddr addr)
-{
-	return mmio_readb((void *) addr);
-}
-
-uint16_t internal_chip_readw(const chipaddr addr)
-{
-	return mmio_readw((void *) addr);
-}
-
-uint32_t internal_chip_readl(const chipaddr addr)
-{
-	return mmio_readl((void *) addr);
-}
-
-void internal_chip_readn(uint8_t *buf, const chipaddr addr, size_t len)
-{
-	memcpy(buf, (void *)addr, len);
-	return;
-}
-
 void mmio_writeb(uint8_t val, void *addr)
 {
 	*(volatile uint8_t *) addr = val;

Modified: trunk/hwaccess.h
==============================================================================
--- trunk/hwaccess.h	Fri Feb 12 19:40:27 2010	(r897)
+++ trunk/hwaccess.h	Fri Feb 12 20:35:25 2010	(r898)
@@ -133,10 +133,6 @@
   #endif
 #endif
 
-#if defined(__FreeBSD__) || defined(__DragonFly__)
-extern int io_fd;
-#endif
-
 #if !defined(__DARWIN__) && !defined(__FreeBSD__) && !defined(__DragonFly__)
 typedef struct { uint32_t hi, lo; } msr_t;
 msr_t rdmsr(int addr);

Modified: trunk/internal.c
==============================================================================
--- trunk/internal.c	Fri Feb 12 19:40:27 2010	(r897)
+++ trunk/internal.c	Fri Feb 12 20:35:25 2010	(r898)
@@ -27,10 +27,6 @@
 #include <errno.h>
 #include "flash.h"
 
-#if defined(__FreeBSD__) || defined(__DragonFly__)
-int io_fd;
-#endif
-
 #if NEED_PCI == 1
 struct pci_dev *pci_dev_find_filter(struct pci_filter filter)
 {
@@ -102,28 +98,6 @@
 }
 #endif
 
-void get_io_perms(void)
-{
-#if defined (__sun) && (defined(__i386) || defined(__amd64))
-	if (sysi86(SI86V86, V86SC_IOPL, PS_IOPL) != 0) {
-#elif defined(__FreeBSD__) || defined (__DragonFly__)
-	if ((io_fd = open("/dev/io", O_RDWR)) < 0) {
-#else
-	if (iopl(3) != 0) {
-#endif
-		fprintf(stderr, "ERROR: Could not get I/O privileges (%s).\n"
-			"You need to be root.\n", strerror(errno));
-		exit(1);
-	}
-}
-
-void release_io_perms(void)
-{
-#if defined(__FreeBSD__) || defined(__DragonFly__)
-	close(io_fd);
-#endif
-}
-
 #if INTERNAL_SUPPORT == 1
 struct superio superio = {};
 
@@ -218,33 +192,3 @@
 	memcpy(buf, (void *)addr, len);
 	return;
 }
-
-void mmio_writeb(uint8_t val, void *addr)
-{
-	*(volatile uint8_t *) addr = val;
-}
-
-void mmio_writew(uint16_t val, void *addr)
-{
-	*(volatile uint16_t *) addr = val;
-}
-
-void mmio_writel(uint32_t val, void *addr)
-{
-	*(volatile uint32_t *) addr = val;
-}
-
-uint8_t mmio_readb(void *addr)
-{
-	return *(volatile uint8_t *) addr;
-}
-
-uint16_t mmio_readw(void *addr)
-{
-	return *(volatile uint16_t *) addr;
-}
-
-uint32_t mmio_readl(void *addr)
-{
-	return *(volatile uint32_t *) addr;
-}




More information about the flashrom mailing list