summaryrefslogtreecommitdiff
path: root/src/arch/x86
diff options
context:
space:
mode:
authorKyösti Mälkki <kyosti.malkki@gmail.com>2019-03-03 00:35:15 +0200
committerKyösti Mälkki <kyosti.malkki@gmail.com>2019-03-04 15:59:23 +0000
commit3ee8b750f49b7c82e8b8787ee306017746e8c12a (patch)
treec2d5a9a2b35e561303e9a6088004e05a7b282421 /src/arch/x86
parent3855c01e0a9d9e9787652479576e882bcda9fde5 (diff)
downloadcoreboot-3ee8b750f49b7c82e8b8787ee306017746e8c12a.tar.xz
arch/io.h: Separate MMIO and PNP ops
Change-Id: Ie32f1d43168c277be46cdbd7fbfa2445d9899689 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/c/31699 Reviewed-by: Aaron Durbin <adurbin@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/arch/x86')
-rw-r--r--src/arch/x86/include/arch/io.h124
-rw-r--r--src/arch/x86/include/arch/mmio.h71
2 files changed, 73 insertions, 122 deletions
diff --git a/src/arch/x86/include/arch/io.h b/src/arch/x86/include/arch/io.h
index f0c0c80260..d39bbb3ff4 100644
--- a/src/arch/x86/include/arch/io.h
+++ b/src/arch/x86/include/arch/io.h
@@ -11,10 +11,9 @@
* GNU General Public License for more details.
*/
-#ifndef _ASM_IO_H
-#define _ASM_IO_H
+#ifndef __ARCH_IO_H__
+#define __ARCH_IO_H__
-#include <endian.h>
#include <stdint.h>
/*
@@ -150,123 +149,4 @@ static inline void insl(uint16_t port, void *addr, unsigned long count)
);
}
-static __always_inline uint8_t read8(
- const volatile void *addr)
-{
- return *((volatile uint8_t *)(addr));
-}
-
-static __always_inline uint16_t read16(
- const volatile void *addr)
-{
- return *((volatile uint16_t *)(addr));
-}
-
-static __always_inline uint32_t read32(
- const volatile void *addr)
-{
- return *((volatile uint32_t *)(addr));
-}
-
-#ifndef __ROMCC__
-static __always_inline uint64_t read64(
- const volatile void *addr)
-{
- return *((volatile uint64_t *)(addr));
-}
-#endif
-
-static __always_inline void write8(volatile void *addr,
- uint8_t value)
-{
- *((volatile uint8_t *)(addr)) = value;
-}
-
-static __always_inline void write16(volatile void *addr,
- uint16_t value)
-{
- *((volatile uint16_t *)(addr)) = value;
-}
-
-static __always_inline void write32(volatile void *addr,
- uint32_t value)
-{
- *((volatile uint32_t *)(addr)) = value;
-}
-
-#ifndef __ROMCC__
-static __always_inline void write64(volatile void *addr,
- uint64_t value)
-{
- *((volatile uint64_t *)(addr)) = value;
-}
-#endif
-
-#include <device/pnp_type.h>
-
-#ifdef __SIMPLE_DEVICE__
-
-/* Generic functions for pnp devices */
-static __always_inline void pnp_write_config(
- pnp_devfn_t dev, uint8_t reg, uint8_t value)
-{
- unsigned int port = dev >> 8;
- outb(reg, port);
- outb(value, port + 1);
-}
-
-static __always_inline uint8_t pnp_read_config(
- pnp_devfn_t dev, uint8_t reg)
-{
- unsigned int port = dev >> 8;
- outb(reg, port);
- return inb(port + 1);
-}
-
-static __always_inline
-void pnp_set_logical_device(pnp_devfn_t dev)
-{
- unsigned int device = dev & 0xff;
- pnp_write_config(dev, 0x07, device);
-}
-
-static __always_inline
-void pnp_set_enable(pnp_devfn_t dev, int enable)
-{
- pnp_write_config(dev, 0x30, enable?0x1:0x0);
-}
-
-static __always_inline
-int pnp_read_enable(pnp_devfn_t dev)
-{
- return !!pnp_read_config(dev, 0x30);
-}
-
-static __always_inline
-void pnp_set_iobase(pnp_devfn_t dev, unsigned int index, unsigned int iobase)
-{
- pnp_write_config(dev, index + 0, (iobase >> 8) & 0xff);
- pnp_write_config(dev, index + 1, iobase & 0xff);
-}
-
-static __always_inline
-uint16_t pnp_read_iobase(pnp_devfn_t dev, unsigned int index)
-{
- return ((uint16_t)(pnp_read_config(dev, index)) << 8)
- | pnp_read_config(dev, index + 1);
-}
-
-static __always_inline
-void pnp_set_irq(pnp_devfn_t dev, unsigned int index, unsigned int irq)
-{
- pnp_write_config(dev, index, irq);
-}
-
-static __always_inline
-void pnp_set_drq(pnp_devfn_t dev, unsigned int index, unsigned int drq)
-{
- pnp_write_config(dev, index, drq & 0xff);
-}
-
-#endif /* __SIMPLE_DEVICE__ */
#endif
diff --git a/src/arch/x86/include/arch/mmio.h b/src/arch/x86/include/arch/mmio.h
new file mode 100644
index 0000000000..f271a973eb
--- /dev/null
+++ b/src/arch/x86/include/arch/mmio.h
@@ -0,0 +1,71 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * 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; version 2 of the License.
+ *
+ * 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.
+ */
+
+#ifndef __ARCH_MMIO_H__
+#define __ARCH_MMIO_H__
+
+#include <stdint.h>
+
+static __always_inline uint8_t read8(
+ const volatile void *addr)
+{
+ return *((volatile uint8_t *)(addr));
+}
+
+static __always_inline uint16_t read16(
+ const volatile void *addr)
+{
+ return *((volatile uint16_t *)(addr));
+}
+
+static __always_inline uint32_t read32(
+ const volatile void *addr)
+{
+ return *((volatile uint32_t *)(addr));
+}
+
+#ifndef __ROMCC__
+static __always_inline uint64_t read64(
+ const volatile void *addr)
+{
+ return *((volatile uint64_t *)(addr));
+}
+#endif
+
+static __always_inline void write8(volatile void *addr,
+ uint8_t value)
+{
+ *((volatile uint8_t *)(addr)) = value;
+}
+
+static __always_inline void write16(volatile void *addr,
+ uint16_t value)
+{
+ *((volatile uint16_t *)(addr)) = value;
+}
+
+static __always_inline void write32(volatile void *addr,
+ uint32_t value)
+{
+ *((volatile uint32_t *)(addr)) = value;
+}
+
+#ifndef __ROMCC__
+static __always_inline void write64(volatile void *addr,
+ uint64_t value)
+{
+ *((volatile uint64_t *)(addr)) = value;
+}
+#endif
+
+#endif /* __ARCH_MMIO_H__ */