[rtems-libbsd commit] Fix general PowerPC build

Sebastian Huber sebh at rtems.org
Thu Oct 26 13:03:57 UTC 2017


Module:    rtems-libbsd
Branch:    master
Commit:    45149ec24ef6dbe86f3b22e09066457e73f89686
Changeset: http://git.rtems.org/rtems-libbsd/commit/?id=45149ec24ef6dbe86f3b22e09066457e73f89686

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Thu Oct 26 15:02:24 2017 +0200

Fix general PowerPC build

---

 linux/drivers/net/ethernet/freescale/fman/fman.c | 3 ++-
 linux/drivers/soc/fsl/qbman/bman_ccsr.c          | 9 ++++++++-
 linux/drivers/soc/fsl/qbman/dpaa_sys.h           | 5 ++++-
 linux/drivers/soc/fsl/qbman/qman_ccsr.c          | 3 ++-
 linux/drivers/soc/fsl/qbman/qman_portal.c        | 7 ++++++-
 rtemsbsd/include/rtems/bsd/local/opt_dpaa.h      | 8 ++++++++
 6 files changed, 30 insertions(+), 5 deletions(-)

diff --git a/linux/drivers/net/ethernet/freescale/fman/fman.c b/linux/drivers/net/ethernet/freescale/fman/fman.c
index 7e216f9..0b7230a 100644
--- a/linux/drivers/net/ethernet/freescale/fman/fman.c
+++ b/linux/drivers/net/ethernet/freescale/fman/fman.c
@@ -51,7 +51,6 @@
 #include <linux/libfdt_env.h>
 #ifdef __rtems__
 #include <bsp/fdt.h>
-#include <bsp/qoriq.h>
 #endif /* __rtems__ */
 
 /* General defines */
@@ -3118,7 +3117,9 @@ fman_dev_probe_fdt(struct fman_softc *sc, int unit)
 					sc->dn.offset = node;
 					sc->dn.full_name = name;
 					sc->of_dev.dev.of_node = &sc->dn;
+#if QORIQ_CHIP_IS_T_VARIANT(QORIQ_CHIP_VARIANT)
 					sc->of_dev.dev.base = (uintptr_t)&qoriq.fman[unit];
+#endif
 					return (BUS_PROBE_DEFAULT);
 				}
 			} else {
diff --git a/linux/drivers/soc/fsl/qbman/bman_ccsr.c b/linux/drivers/soc/fsl/qbman/bman_ccsr.c
index 9fa5a6b..830f319 100644
--- a/linux/drivers/soc/fsl/qbman/bman_ccsr.c
+++ b/linux/drivers/soc/fsl/qbman/bman_ccsr.c
@@ -285,7 +285,6 @@ builtin_platform_driver(fsl_bman_driver);
 #include <sys/kernel.h>
 #include <rtems.h>
 #include <bsp/fdt.h>
-#include <bsp/qoriq.h>
 #include <linux/of_address.h>
 #include <linux/of_irq.h>
 
@@ -303,7 +302,9 @@ bman_sysinit(void)
 	struct platform_device ofdev = {
 		.dev = {
 			.of_node = &dn,
+#if QORIQ_CHIP_IS_T_VARIANT(QORIQ_CHIP_VARIANT)
 			.base = (uintptr_t)&qoriq
+#endif
 		}
 	};
 	const char *name;
@@ -313,11 +314,13 @@ bman_sysinit(void)
 	int node;
 	int parent;
 
+#if QORIQ_CHIP_IS_T_VARIANT(QORIQ_CHIP_VARIANT)
 	qoriq_reset_qman_and_bman();
 	qoriq_clear_ce_portal(&qoriq_bman_portal[0][0],
 	    sizeof(qoriq_bman_portal[0]));
 	qoriq_clear_ci_portal(&qoriq_bman_portal[1][0],
 	    sizeof(qoriq_bman_portal[1]));
+#endif
 
 	memset(&dn, 0, sizeof(dn));
 
@@ -355,22 +358,26 @@ bman_sysinit(void)
 		ret = of_address_to_resource(&dn, 0, &res);
 		if (ret != 0)
 			panic("bman: no portal CE address");
+#if QORIQ_CHIP_IS_T_VARIANT(QORIQ_CHIP_VARIANT)
 		pcfg->addr_virt[0] = (__iomem void *)
 		    ((uintptr_t)&qoriq_bman_portal[0][0] + (uintptr_t)res.start);
 		BSD_ASSERT((uintptr_t)pcfg->addr_virt[0] >=
 		    (uintptr_t)&qoriq_bman_portal[0][0]);
 		BSD_ASSERT((uintptr_t)pcfg->addr_virt[0] <
 		    (uintptr_t)&qoriq_bman_portal[1][0]);
+#endif
 
 		ret = of_address_to_resource(&dn, 1, &res);
 		if (ret != 0)
 			panic("bman: no portal CI address");
+#if QORIQ_CHIP_IS_T_VARIANT(QORIQ_CHIP_VARIANT)
 		pcfg->addr_virt[1] = (__iomem void *)
 		    ((uintptr_t)&qoriq_bman_portal[0][0] + (uintptr_t)res.start);
 		BSD_ASSERT((uintptr_t)pcfg->addr_virt[1] >=
 		    (uintptr_t)&qoriq_bman_portal[1][0]);
 		BSD_ASSERT((uintptr_t)pcfg->addr_virt[1] <
 		    (uintptr_t)&qoriq_bman_portal[2][0]);
+#endif
 
 		pcfg->irq = of_irq_to_resource(&dn, 0, NULL);
 		if (pcfg->irq == NO_IRQ)
diff --git a/linux/drivers/soc/fsl/qbman/dpaa_sys.h b/linux/drivers/soc/fsl/qbman/dpaa_sys.h
index 0e89702..db87eb4 100644
--- a/linux/drivers/soc/fsl/qbman/dpaa_sys.h
+++ b/linux/drivers/soc/fsl/qbman/dpaa_sys.h
@@ -84,8 +84,11 @@ static inline void dpaa_flush(void *p)
 	__flush_dcache_area(p, 64);
 #endif
 #else /* __rtems__ */
-#ifdef __PPC_CPU_E6500__
+#if PPC_DEFAULT_CACHE_LINE_SIZE == 64
+	ppc_data_cache_block_flush(p);
+#elif PPC_DEFAULT_CACHE_LINE_SIZE == 32
 	ppc_data_cache_block_flush(p);
+	ppc_data_cache_block_flush((char *)p + 32);
 #else
 #error "Unsupported platform"
 #endif
diff --git a/linux/drivers/soc/fsl/qbman/qman_ccsr.c b/linux/drivers/soc/fsl/qbman/qman_ccsr.c
index cc79832..b26bfdd 100644
--- a/linux/drivers/soc/fsl/qbman/qman_ccsr.c
+++ b/linux/drivers/soc/fsl/qbman/qman_ccsr.c
@@ -850,7 +850,6 @@ static struct platform_driver fsl_qman_driver = {
 builtin_platform_driver(fsl_qman_driver);
 #else /* __rtems__ */
 #include <bsp/fdt.h>
-#include <bsp/qoriq.h>
 
 SYSINIT_REFERENCE(bman);
 
@@ -873,7 +872,9 @@ qman_sysinit(void)
 
 	memset(&dev, 0, sizeof(dev));
 	dev.pdev.dev.of_node = &dev.of_node;
+#if QORIQ_CHIP_IS_T_VARIANT(QORIQ_CHIP_VARIANT)
 	dev.pdev.dev.base = (uintptr_t)&qoriq;
+#endif
 	dev.of_node.offset = node;
 	dev.of_node.full_name = name;
 
diff --git a/linux/drivers/soc/fsl/qbman/qman_portal.c b/linux/drivers/soc/fsl/qbman/qman_portal.c
index 8df7ea4..a7295f9 100644
--- a/linux/drivers/soc/fsl/qbman/qman_portal.c
+++ b/linux/drivers/soc/fsl/qbman/qman_portal.c
@@ -34,7 +34,6 @@
 
 #include "qman_priv.h"
 #ifdef __rtems__
-#include <bsp/qoriq.h>
 #undef dev_crit
 #undef dev_info
 #define	dev_crit(dev, fmt, ...) printf(fmt, ##__VA_ARGS__)
@@ -434,22 +433,26 @@ do_init_pcfg(struct device_node *dn, struct qm_portal_config *pcfg,
 	ret = of_address_to_resource(dn, 0, &res);
 	if (ret != 0)
 		panic("qman: no portal CE address");
+#if QORIQ_CHIP_IS_T_VARIANT(QORIQ_CHIP_VARIANT)
 	pcfg->addr_virt[0] = (__iomem void *)
 	    ((uintptr_t)&qoriq_qman_portal[0][0] + (uintptr_t)res.start);
 	BSD_ASSERT((uintptr_t)pcfg->addr_virt[0] >=
 	    (uintptr_t)&qoriq_qman_portal[0][0]);
 	BSD_ASSERT((uintptr_t)pcfg->addr_virt[0] <
 	    (uintptr_t)&qoriq_qman_portal[1][0]);
+#endif
 
 	ret = of_address_to_resource(dn, 1, &res);
 	if (ret != 0)
 		panic("qman: no portal CI address");
+#if QORIQ_CHIP_IS_T_VARIANT(QORIQ_CHIP_VARIANT)
 	pcfg->addr_virt[1] = (__iomem void *)
 	    ((uintptr_t)&qoriq_qman_portal[0][0] + (uintptr_t)res.start);
 	BSD_ASSERT((uintptr_t)pcfg->addr_virt[1] >=
 	    (uintptr_t)&qoriq_qman_portal[1][0]);
 	BSD_ASSERT((uintptr_t)pcfg->addr_virt[1] <
 	    (uintptr_t)&qoriq_qman_portal[2][0]);
+#endif
 
 	ret = of_property_read_u32(dn, "cell-index", &val);
 	if (ret != 0)
@@ -503,10 +506,12 @@ qman_sysinit_portals(void)
 	dn.full_name = name;
 	dn.offset = node;
 
+#if QORIQ_CHIP_IS_T_VARIANT(QORIQ_CHIP_VARIANT)
 	qoriq_clear_ce_portal(&qoriq_qman_portal[0][0],
 	    sizeof(qoriq_qman_portal[0]));
 	qoriq_clear_ci_portal(&qoriq_qman_portal[1][0],
 	    sizeof(qoriq_qman_portal[1]));
+#endif
 
 	i = 0;
 	while (node >= 0 && i < MAX_QMAN_PORTALS) {
diff --git a/rtemsbsd/include/rtems/bsd/local/opt_dpaa.h b/rtemsbsd/include/rtems/bsd/local/opt_dpaa.h
index 2543a5d..496a88f 100644
--- a/rtemsbsd/include/rtems/bsd/local/opt_dpaa.h
+++ b/rtemsbsd/include/rtems/bsd/local/opt_dpaa.h
@@ -1,3 +1,11 @@
+#include <bsp.h>
+#ifdef LIBBSP_POWERPC_QORIQ_BSP_H
+#if QORIQ_CHIP_IS_T_VARIANT(QORIQ_CHIP_VARIANT)
+#include <bsp/qoriq.h>
+#endif
+#else
+#define QORIQ_CHIP_IS_T_VARIANT(x) 0
+#endif
 #undef __ppc_generic
 #define __ppc_generic
 #define KBUILD_MODNAME "dpaa"




More information about the vc mailing list