diff options
| author | Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> | 2010-02-12 19:35:25 +0000 | 
|---|---|---|
| committer | Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> | 2010-02-12 19:35:25 +0000 | 
| commit | fb0828f3db2b6c298b5617690a70cc92f34f3287 (patch) | |
| tree | 4377b78675ae61d7d79b2eefa270aa957cae8379 | |
| parent | ca33140ebf2ea7b09f03717fc29ee3369c99d3d2 (diff) | |
| download | flashrom-fb0828f3db2b6c298b5617690a70cc92f34f3287.tar.gz flashrom-fb0828f3db2b6c298b5617690a70cc92f34f3287.tar.bz2 flashrom-fb0828f3db2b6c298b5617690a70cc92f34f3287.zip | |
Split internal.c into internal.c and hwaccess.c
Linking in support for the internal programmer doesn't make sense if you
only need hardware (ioport, memory) access.
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.
Corresponding to flashrom svn r898.
Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Sean Nelson <audiohacked@gmail.com>
| -rw-r--r-- | Makefile | 9 | ||||
| -rw-r--r-- | hwaccess.c | 83 | ||||
| -rw-r--r-- | hwaccess.h | 4 | ||||
| -rw-r--r-- | internal.c | 56 | 
4 files changed, 85 insertions, 67 deletions
| @@ -103,7 +103,7 @@ CONFIG_PRINT_WIKI ?= no  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 @@ endif  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). diff --git a/hwaccess.c b/hwaccess.c new file mode 100644 index 00000000..7f7b805a --- /dev/null +++ b/hwaccess.c @@ -0,0 +1,83 @@ +/* + * This file is part of the flashrom project. + * + * 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 + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA + */ + +#include <stdint.h> +#include <string.h> +#include <stdlib.h> +#include <fcntl.h> +#include <sys/types.h> +#include <errno.h> +#include "flash.h" + +#if defined(__FreeBSD__) || defined(__DragonFly__) +int io_fd; +#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 +} + +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; +} @@ -133,10 +133,6 @@ inl(uint16_t port)    #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); @@ -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 @@ struct pci_dev *pci_card_find(uint16_t vendor, uint16_t device,  }  #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 @@ 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; -} - -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; -} | 
