From bf12cf198d1e8af1d96d1d32b840483825801fa8 Mon Sep 17 00:00:00 2001 From: Chris Johns Date: Sat, 18 Sep 2021 12:05:42 +1000 Subject: powerpc/motorola_powerpc: Map LibBSD bus space to the PCI base address Closes #4516 --- bsps/powerpc/motorola_powerpc/include/bsp.h | 34 +++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/bsps/powerpc/motorola_powerpc/include/bsp.h b/bsps/powerpc/motorola_powerpc/include/bsp.h index 62e740272a..7d362bf406 100644 --- a/bsps/powerpc/motorola_powerpc/include/bsp.h +++ b/bsps/powerpc/motorola_powerpc/include/bsp.h @@ -31,11 +31,11 @@ #include #include #include - + #ifdef qemu #include #endif - + #ifdef __cplusplus extern "C" { #endif @@ -115,6 +115,36 @@ extern "C" { #endif #endif +/* + * The BSP has PCI devices. Enable support in LibBSD. + */ +#define BSP_HAS_PC_PCI + +/* + * Remap the PCI address space for LibBSD + */ +#define RTEMS_BSP_PCI_IO_REGION_BASE 0 +#define RTEMS_BSP_PCI_MEM_REGION_BASE PCI_DRAM_OFFSET + +/* + * Remap the PCI address space for LibBSD + */ +#define RTEMS_BSP_ADDR_PTR(_type) uint ## _type ## _t __volatile* +#define RTEMS_BSP_ADDR_CPTR(_type) const RTEMS_BSP_ADDR_PTR(_type) +#define RTEMS_BSP_ADDRESS_READ(_addr, _type) \ + *((RTEMS_BSP_ADDR_CPTR(_type)) (((RTEMS_BSP_ADDR_CPTR(8)) _addr) + PCI_DRAM_OFFSET)) +#define RTEMS_BSP_ADDRESS_WRITE(_addr, _val, _type) \ + *((RTEMS_BSP_ADDR_PTR(_type)) (((RTEMS_BSP_ADDR_PTR(8)) _addr) + PCI_DRAM_OFFSET)) = (_val) + +#define RTEMS_BSP_READ_1(_addr) RTEMS_BSP_ADDRESS_READ(_addr, 8) +#define RTEMS_BSP_READ_2(_addr) RTEMS_BSP_ADDRESS_READ(_addr, 16) +#define RTEMS_BSP_READ_4(_addr) RTEMS_BSP_ADDRESS_READ(_addr, 32) +#define RTEMS_BSP_READ_8(_addr) RTEMS_BSP_ADDRESS_READ(_addr, 64) + +#define RTEMS_BSP_WRITE_1(_addr, _val) RTEMS_BSP_ADDRESS_WRITE(_addr, _val, 8) +#define RTEMS_BSP_WRITE_2(_addr, _val) RTEMS_BSP_ADDRESS_WRITE(_addr, _val, 16) +#define RTEMS_BSP_WRITE_4(_addr, _val) RTEMS_BSP_ADDRESS_WRITE(_addr, _val, 32) +#define RTEMS_BSP_WRITE_8(_addr, _val) RTEMS_BSP_ADDRESS_WRITE(_addr, _val, 64) /* * Base address definitions for several devices -- cgit v1.2.3