Changes required for using the DMA controller for SD card. --- freebsd/sys/arm/broadcom/bcm2835/bcm2835_dma.c | 13 +++++++++++++ rtemsbsd/include/bsp/nexus-devices.h | 20 ++++++++++++++++++++ 2 files changed, 33 insertions(+)
diff --git a/freebsd/sys/arm/broadcom/bcm2835/bcm2835_dma.c b/freebsd/sys/arm/broadcom/bcm2835/bcm2835_dma.c index 98dd2cf..8687207 100644 --- a/freebsd/sys/arm/broadcom/bcm2835/bcm2835_dma.c +++ b/freebsd/sys/arm/broadcom/bcm2835/bcm2835_dma.c @@ -42,10 +42,12 @@ __FBSDID("$FreeBSD$"); #include <rtems/bsd/sys/resource.h> #include <sys/rman.h> +#ifndef __rtems__ #include <dev/fdt/fdt_common.h> #include <dev/ofw/openfirm.h> #include <dev/ofw/ofw_bus.h> #include <dev/ofw/ofw_bus_subr.h> +#endif /* __rtems__ */ #include <vm/vm.h> #include <vm/pmap.h> @@ -657,11 +659,13 @@ static int bcm_dma_probe(device_t dev) { +#ifndef __rtems__ if (!ofw_bus_status_okay(dev)) return (ENXIO); if (!ofw_bus_is_compatible(dev, "broadcom,bcm2835-dma")) return (ENXIO); +#endif /* __rtems__ */ device_set_desc(dev, "BCM2835 DMA Controller"); return (BUS_PROBE_DEFAULT); @@ -671,7 +675,9 @@ static int bcm_dma_attach(device_t dev) { struct bcm_dma_softc *sc = device_get_softc(dev); +#ifndef __rtems__ phandle_t node; +#endif /* __rtems__ */ int rid, err = 0; int i; @@ -685,6 +691,7 @@ bcm_dma_attach(device_t dev) sc->sc_intrhand[i] = NULL; } +#ifndef __rtems__ /* Get DMA channel mask. */ node = ofw_bus_get_node(sc->sc_dev); if (OF_getencprop(node, "brcm,dma-channel-mask", &bcm_dma_channel_mask, @@ -694,6 +701,7 @@ bcm_dma_attach(device_t dev) device_printf(dev, "could not get channel mask property\n"); return (ENXIO); } +#endif /* __rtems__ */ /* Mask out channels used by GPU. */ bcm_dma_channel_mask &= ~BCM_DMA_CH_GPU_MASK; @@ -764,5 +772,10 @@ static driver_t bcm_dma_driver = { static devclass_t bcm_dma_devclass; +#ifndef __rtems__ DRIVER_MODULE(bcm_dma, simplebus, bcm_dma_driver, bcm_dma_devclass, 0, 0); MODULE_VERSION(bcm_dma, 1); +#else /* __rtems__ */ +DRIVER_MODULE(bcm_dma, nexus, bcm_dma_driver, bcm_dma_devclass, 0, 0); +MODULE_VERSION(bcm_dma, 1); +#endif \ No newline at end of file diff --git a/rtemsbsd/include/bsp/nexus-devices.h b/rtemsbsd/include/bsp/nexus-devices.h index 3ca21f0..decd042 100644 --- a/rtemsbsd/include/bsp/nexus-devices.h +++ b/rtemsbsd/include/bsp/nexus-devices.h @@ -178,4 +178,24 @@ RTEMS_BSD_DEFINE_NEXUS_DEVICE(tsec, 0, RTEMS_ARRAY_SIZE(tsec0_res), #endif /* !QORIQ_CHIP_IS_T_VARIANT(QORIQ_CHIP_VARIANT) */ +#elif defined(LIBBSP_ARM_RASPBERRYPI_BSP_H) + +#include <bsp/raspberrypi.h> +#include <bsp/irq.h> + +static const rtems_bsd_device_resource rpi_dma_res[] = { + { + .type = RTEMS_BSD_RES_MEMORY, + .start_request = 0, + .start_actual = 0x20007000 + }, { + .type = RTEMS_BSD_RES_IRQ, + .start_request = 0, + .start_actual = 16 + } +}; + +RTEMS_BSD_DEFINE_NEXUS_DEVICE(bcm_dma, 0, RTEMS_ARRAY_SIZE(rpi_dma_res), +&rpi_dma_res[0]); + #endif -- 1.9.1 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel