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 <[email protected]>
Acked-by: Sean Nelson <[email protected]>

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;
-}

_______________________________________________
flashrom mailing list
[email protected]
http://www.flashrom.org/mailman/listinfo/flashrom

Reply via email to