diff options
Diffstat (limited to 'src/arch/arm')
-rw-r--r-- | src/arch/arm/Makefile | 1 | ||||
-rw-r--r-- | src/arch/arm/core/arm_io.c | 7 | ||||
-rw-r--r-- | src/arch/arm/include/bits/pci_io.h | 2 | ||||
-rw-r--r-- | src/arch/arm/include/ipxe/arm_io.h | 54 |
4 files changed, 10 insertions, 54 deletions
diff --git a/src/arch/arm/Makefile b/src/arch/arm/Makefile index 3cee5f3a..b6509dda 100644 --- a/src/arch/arm/Makefile +++ b/src/arch/arm/Makefile @@ -9,4 +9,5 @@ INCDIRS += arch/arm/include # ARM-specific directories containing source files # +SRCDIRS += arch/arm/core SRCDIRS += arch/arm/interface/efi diff --git a/src/arch/arm/core/arm_io.c b/src/arch/arm/core/arm_io.c index 1ef571fc..41b42389 100644 --- a/src/arch/arm/core/arm_io.c +++ b/src/arch/arm/core/arm_io.c @@ -46,7 +46,7 @@ union arm32_io_qword { * * This is not atomic for ARM32. */ -static uint64_t arm32_readq ( volatile uint64_t *io_addr ) { +static __unused uint64_t arm32_readq ( volatile uint64_t *io_addr ) { volatile union arm32_io_qword *ptr = container_of ( io_addr, union arm32_io_qword, qword ); union arm32_io_qword tmp; @@ -64,7 +64,8 @@ static uint64_t arm32_readq ( volatile uint64_t *io_addr ) { * * This is not atomic for ARM32. */ -static void arm32_writeq ( uint64_t data, volatile uint64_t *io_addr ) { +static __unused void arm32_writeq ( uint64_t data, + volatile uint64_t *io_addr ) { volatile union arm32_io_qword *ptr = container_of ( io_addr, union arm32_io_qword, qword ); union arm32_io_qword tmp; @@ -82,7 +83,6 @@ PROVIDE_IOAPI_INLINE ( arm, readl ); PROVIDE_IOAPI_INLINE ( arm, writeb ); PROVIDE_IOAPI_INLINE ( arm, writew ); PROVIDE_IOAPI_INLINE ( arm, writel ); -PROVIDE_IOAPI_INLINE ( arm, iodelay ); PROVIDE_IOAPI_INLINE ( arm, mb ); #ifdef __aarch64__ PROVIDE_IOAPI_INLINE ( arm, readq ); @@ -91,3 +91,4 @@ PROVIDE_IOAPI_INLINE ( arm, writeq ); PROVIDE_IOAPI ( arm, readq, arm32_readq ); PROVIDE_IOAPI ( arm, writeq, arm32_writeq ); #endif +PROVIDE_DUMMY_PIO ( arm ); diff --git a/src/arch/arm/include/bits/pci_io.h b/src/arch/arm/include/bits/pci_io.h index fba0eb97..91f507a4 100644 --- a/src/arch/arm/include/bits/pci_io.h +++ b/src/arch/arm/include/bits/pci_io.h @@ -9,6 +9,4 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); -#include <ipxe/io.h> - #endif /* _BITS_PCI_IO_H */ diff --git a/src/arch/arm/include/ipxe/arm_io.h b/src/arch/arm/include/ipxe/arm_io.h index 046cbdb0..7ed38993 100644 --- a/src/arch/arm/include/ipxe/arm_io.h +++ b/src/arch/arm/include/ipxe/arm_io.h @@ -15,6 +15,8 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #define IOAPI_PREFIX_arm __arm_ #endif +#include <ipxe/dummy_pio.h> + /* * Memory space mappings * @@ -78,55 +80,6 @@ ARM_WRITEX ( l, uint32_t, "", "" ); #endif /* - * Dummy PIO reads and writes up to 32 bits - * - * There is no common standard for I/O-space access for ARM, and - * non-MMIO peripherals are vanishingly rare. Provide dummy - * implementations that will allow code to link and should cause - * drivers to simply fail to detect hardware at runtime. - * - */ - -#define ARM_INX( _suffix, _type ) \ -static inline __always_inline _type \ -IOAPI_INLINE ( arm, in ## _suffix ) ( volatile _type *io_addr __unused) { \ - return ~( (_type) 0 ); \ -} \ -static inline __always_inline void \ -IOAPI_INLINE ( arm, ins ## _suffix ) ( volatile _type *io_addr __unused, \ - _type *data, unsigned int count ) { \ - memset ( data, 0xff, count * sizeof ( *data ) ); \ -} -ARM_INX ( b, uint8_t ); -ARM_INX ( w, uint16_t ); -ARM_INX ( l, uint32_t ); - -#define ARM_OUTX( _suffix, _type ) \ -static inline __always_inline void \ -IOAPI_INLINE ( arm, out ## _suffix ) ( _type data __unused, \ - volatile _type *io_addr __unused ) { \ - /* Do nothing */ \ -} \ -static inline __always_inline void \ -IOAPI_INLINE ( arm, outs ## _suffix ) ( volatile _type *io_addr __unused, \ - const _type *data __unused, \ - unsigned int count __unused ) { \ - /* Do nothing */ \ -} -ARM_OUTX ( b, uint8_t ); -ARM_OUTX ( w, uint16_t ); -ARM_OUTX ( l, uint32_t ); - -/* - * Slow down I/O - * - */ -static inline __always_inline void -IOAPI_INLINE ( arm, iodelay ) ( void ) { - /* Nothing to do */ -} - -/* * Memory barrier * */ @@ -140,4 +93,7 @@ IOAPI_INLINE ( arm, mb ) ( void ) { #endif } +/* Dummy PIO */ +DUMMY_PIO ( arm ); + #endif /* _IPXE_ARM_IO_H */ |