[PATCH 2/7] SD Card : Changes over initial commit
Mudit Jain
muditjain18011995 at gmail.com
Sun Aug 28 07:25:07 UTC 2016
---
freebsd/sys/arm/broadcom/bcm2835/bcm2835_dma.c | 13 +++++++++++++
libbsd_waf.py | 3 ++-
rtemsbsd/include/bsp/nexus-devices.h | 7 +++++++
rtemsbsd/include/machine/rtems-bsd-nexus-bus.h | 21 +++++++++++++++++++++
4 files changed, 43 insertions(+), 1 deletion(-)
diff --git a/freebsd/sys/arm/broadcom/bcm2835/bcm2835_dma.c b/freebsd/sys/arm/broadcom/bcm2835/bcm2835_dma.c
index 98dd2cf..a3b89ee 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,
@@ -695,6 +702,7 @@ bcm_dma_attach(device_t dev)
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 /* __rtems__ */
diff --git a/libbsd_waf.py b/libbsd_waf.py
index 524b8bc..eff7bf8 100644
--- a/libbsd_waf.py
+++ b/libbsd_waf.py
@@ -1142,7 +1142,8 @@ def build(bld):
'rtemsbsd/telnetd/telnetd-service.c',
'rtemsbsd/telnetd/telnetd.c']
if bld.get_env()["RTEMS_ARCH"] == "arm":
- source += ['freebsd/sys/mips/mips/in_cksum.c']
+ source += ['freebsd/sys/arm/broadcom/bcm2835/bcm2835_dma.c',
+ 'freebsd/sys/mips/mips/in_cksum.c']
if bld.get_env()["RTEMS_ARCH"] == "avr":
source += ['freebsd/sys/mips/mips/in_cksum.c']
if bld.get_env()["RTEMS_ARCH"] == "bfin":
diff --git a/rtemsbsd/include/bsp/nexus-devices.h b/rtemsbsd/include/bsp/nexus-devices.h
index 45beb30..cbffcf6 100644
--- a/rtemsbsd/include/bsp/nexus-devices.h
+++ b/rtemsbsd/include/bsp/nexus-devices.h
@@ -95,6 +95,13 @@ RTEMS_BSD_DRIVER_TSEC(0xffeb0000,
#endif /* !QORIQ_CHIP_IS_T_VARIANT(QORIQ_CHIP_VARIANT) */
+#elif defined(LIBBSP_ARM_RASPBERRYPI_BSP_H)
+
+#include <bsp/raspberrypi.h>
+#include <bsp/irq.h>
+
+RTEMS_BSD_DRIVER_BCM2835_DMA((unsigned long)0x20007000, 16);
+
#endif
#endif
diff --git a/rtemsbsd/include/machine/rtems-bsd-nexus-bus.h b/rtemsbsd/include/machine/rtems-bsd-nexus-bus.h
index 5a3458c..25688a0 100644
--- a/rtemsbsd/include/machine/rtems-bsd-nexus-bus.h
+++ b/rtemsbsd/include/machine/rtems-bsd-nexus-bus.h
@@ -172,6 +172,27 @@ extern "C" {
#endif /* RTEMS_BSD_DRIVER_MMC */
/*
+ * [BCM2835] Raspberry Pi DMA Controller
+ */
+#if !defined(RTEMS_BSD_DRIVER_BCM2835_DMA)
+ #define RTEMS_BSD_DRIVER_BCM2835_DMA(_base, _irq) \
+ static const rtems_bsd_device_resource rpi_dma_res[] = { \
+ { \
+ .type = RTEMS_BSD_RES_MEMORY, \
+ .start_request = 0, \
+ .start_actual = (_base) \
+ }, { \
+ .type = RTEMS_BSD_RES_IRQ, \
+ .start_request = 0, \
+ .start_actual = (_irq) \
+ } \
+ }; \
+ RTEMS_BSD_DEFINE_NEXUS_DEVICE(bcm_dma, 0, \
+ RTEMS_ARRAY_SIZE(rpi_dma_res), \
+ &rpi_dma_res[0])
+#endif /* RTEMS_BSD_DRIVER_BCM2835_DMA */
+
+/*
* USB Drivers.
*/
#if !defined(RTEMS_BSD_DRIVER_USB)
--
2.1.4
More information about the devel
mailing list