summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2023-10-04 16:13:45 +1100
committerChris Johns <chrisj@rtems.org>2023-10-04 16:13:45 +1100
commit1524f95e93a0e0ff85d676d214e0e57cac44e4f5 (patch)
treeed4304c46e71c40a43806331926c1979c5ddbcec
parentrtemsbsd/libio: Handle invalid descriptors (diff)
downloadrtems-libbsd-1524f95e93a0e0ff85d676d214e0e57cac44e4f5.tar.bz2
i386/pc686: Fix kernel bus DMA for the PC686 BSP
The x86 provides it own bus space support. Use the generic bus space calls. This however requires the BUS_SPACE_MEM tag be provided for all architectures. Make the generic value match the x86 value.
-rw-r--r--rtemsbsd/include/machine/bus.h9
-rw-r--r--rtemsbsd/rtems/rtems-kernel-bus-dma.c6
2 files changed, 14 insertions, 1 deletions
diff --git a/rtemsbsd/include/machine/bus.h b/rtemsbsd/include/machine/bus.h
index a0c3d63a..8a61a7d0 100644
--- a/rtemsbsd/include/machine/bus.h
+++ b/rtemsbsd/include/machine/bus.h
@@ -168,6 +168,15 @@
#endif /* BSP_HAS_PC_PCI */
/*
+ * Provide a memory tag for the DMA bus interface
+ */
+#ifdef BSP_BUS_SPACE_MEM
+#define BUS_SPACE_MEM BSP_BUS_SPACE_MEM
+#else
+#define BUS_SPACE_MEM 1
+#endif
+
+/*
* Bus address alignment.
*/
#define BUS_SPACE_ALIGNED_POINTER(p, t) ALIGNED_POINTER(p, t)
diff --git a/rtemsbsd/rtems/rtems-kernel-bus-dma.c b/rtemsbsd/rtems/rtems-kernel-bus-dma.c
index 1d28f62c..9c9194b0 100644
--- a/rtemsbsd/rtems/rtems-kernel-bus-dma.c
+++ b/rtemsbsd/rtems/rtems-kernel-bus-dma.c
@@ -63,6 +63,10 @@
#include <bsp/linker-symbols.h>
#endif
+#ifdef X86_BUS_SPACE_MEM
+#define BUS_SPACE_MEM X86_BUS_SPACE_MEM
+#endif
+
/*
* Convenience function for manipulating driver locks from busdma (during
* busdma_swi, for example). Drivers that don't provide their own locks
@@ -261,7 +265,7 @@ bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags,
unsigned char* mem = *vaddr;
int len = dmat->maxsize;
while (len-- > 0) {
- bsp_bus_space_write_1(mem, 0);
+ bus_space_write_1(BUS_SPACE_MEM, mem, 0, 0);
mem++;
}
}