summaryrefslogtreecommitdiffstats
path: root/sys/arm/freescale
diff options
context:
space:
mode:
authorandrew <andrew@FreeBSD.org>2014-12-24 12:26:43 +0000
committerandrew <andrew@FreeBSD.org>2014-12-24 12:26:43 +0000
commitd3612ba11be4e331c697db2789cbcfde4e186f5f (patch)
treefff314ea271debf5bf9f81cff92976308b7f88e3 /sys/arm/freescale
parent2ee805f46e5acdfe47badf7fc209aae78520c564 (diff)
downloadFreeBSD-src-d3612ba11be4e331c697db2789cbcfde4e186f5f.zip
FreeBSD-src-d3612ba11be4e331c697db2789cbcfde4e186f5f.tar.gz
Switch i.MX to use the platform code to help with a single Freescale kernel.
Differential Revision: https://reviews.freebsd.org/D1349 Reviewed by: ian, rpaulo
Diffstat (limited to 'sys/arm/freescale')
-rw-r--r--sys/arm/freescale/imx/imx51_machdep.c37
-rw-r--r--sys/arm/freescale/imx/imx53_machdep.c37
-rw-r--r--sys/arm/freescale/imx/imx6_machdep.c38
3 files changed, 62 insertions, 50 deletions
diff --git a/sys/arm/freescale/imx/imx51_machdep.c b/sys/arm/freescale/imx/imx51_machdep.c
index 8ab6541..5d8f380 100644
--- a/sys/arm/freescale/imx/imx51_machdep.c
+++ b/sys/arm/freescale/imx/imx51_machdep.c
@@ -39,36 +39,28 @@ __FBSDID("$FreeBSD$");
#include <machine/bus.h>
#include <machine/devmap.h>
#include <machine/machdep.h>
-#include <machine/platform.h>
+#include <machine/platformvar.h>
#include <arm/freescale/imx/imx_machdep.h>
-vm_offset_t
-platform_lastaddr(void)
+#include "platform_if.h"
+
+static vm_offset_t
+imx51_lastaddr(platform_t plat)
{
return (arm_devmap_lastaddr());
}
-void
-platform_probe_and_attach(void)
+static int
+imx51_attach(platform_t plat)
{
/* XXX - Get rid of this stuff soon. */
boothowto |= RB_VERBOSE|RB_MULTIPLE;
bootverbose = 1;
-}
-
-void
-platform_gpio_init(void)
-{
-
-}
-
-void
-platform_late_init(void)
-{
+ return (0);
}
/*
@@ -78,8 +70,8 @@ platform_late_init(void)
*
* Notably missing are entries for GPU, IPU, in general anything video related.
*/
-int
-platform_devmap_init(void)
+static int
+imx51_devmap_init(platform_t plat)
{
arm_devmap_add_entry(0x70000000, 0x00100000);
@@ -101,3 +93,12 @@ u_int imx_soc_type()
return (IMXSOC_51);
}
+static platform_method_t imx51_methods[] = {
+ PLATFORMMETHOD(platform_attach, imx51_attach),
+ PLATFORMMETHOD(platform_devmap_init, imx51_devmap_init),
+ PLATFORMMETHOD(platform_lastaddr, imx51_lastaddr),
+
+ PLATFORMMETHOD_END,
+};
+
+FDT_PLATFORM_DEF(imx51, "i.MX51", 0, "fsl,imx51");
diff --git a/sys/arm/freescale/imx/imx53_machdep.c b/sys/arm/freescale/imx/imx53_machdep.c
index ebf09d9..92b59e4 100644
--- a/sys/arm/freescale/imx/imx53_machdep.c
+++ b/sys/arm/freescale/imx/imx53_machdep.c
@@ -39,36 +39,28 @@ __FBSDID("$FreeBSD$");
#include <machine/bus.h>
#include <machine/devmap.h>
#include <machine/machdep.h>
-#include <machine/platform.h>
+#include <machine/platformvar.h>
#include <arm/freescale/imx/imx_machdep.h>
-vm_offset_t
-platform_lastaddr(void)
+#include "platform_if.h"
+
+static vm_offset_t
+imx53_lastaddr(platform_t plat)
{
return (arm_devmap_lastaddr());
}
-void
-platform_probe_and_attach(void)
+static int
+imx53_attach(platform_t plat)
{
/* XXX - Get rid of this stuff soon. */
boothowto |= RB_VERBOSE|RB_MULTIPLE;
bootverbose = 1;
-}
-
-void
-platform_gpio_init(void)
-{
-
-}
-
-void
-platform_late_init(void)
-{
+ return (0);
}
/*
@@ -78,8 +70,8 @@ platform_late_init(void)
*
* Notably missing are entries for GPU, IPU, in general anything video related.
*/
-int
-platform_devmap_init(void)
+static int
+imx53_devmap_init(platform_t plat)
{
arm_devmap_add_entry(0x50000000, 0x00100000);
@@ -101,4 +93,13 @@ u_int imx_soc_type()
return (IMXSOC_53);
}
+static platform_method_t imx53_methods[] = {
+ PLATFORMMETHOD(platform_attach, imx53_attach),
+ PLATFORMMETHOD(platform_devmap_init, imx53_devmap_init),
+ PLATFORMMETHOD(platform_lastaddr, imx53_lastaddr),
+
+ PLATFORMMETHOD_END,
+};
+
+FDT_PLATFORM_DEF(imx53, "i.MX53", 0, "fsl,imx53");
diff --git a/sys/arm/freescale/imx/imx6_machdep.c b/sys/arm/freescale/imx/imx6_machdep.c
index 510a09b..2322cff 100644
--- a/sys/arm/freescale/imx/imx6_machdep.c
+++ b/sys/arm/freescale/imx/imx6_machdep.c
@@ -40,7 +40,7 @@ __FBSDID("$FreeBSD$");
#include <machine/devmap.h>
#include <machine/intr.h>
#include <machine/machdep.h>
-#include <machine/platform.h>
+#include <machine/platformvar.h>
#include <arm/arm/mpcore_timervar.h>
#include <arm/freescale/imx/imx6_anatopreg.h>
@@ -50,6 +50,8 @@ __FBSDID("$FreeBSD$");
#include <dev/fdt/fdt_common.h>
#include <dev/ofw/openfirm.h>
+#include "platform_if.h"
+
struct fdt_fixup_entry fdt_fixup_table[] = {
{ NULL, NULL }
};
@@ -90,29 +92,25 @@ fdt_pic_decode_t fdt_pic_table[] = {
NULL
};
-vm_offset_t
-platform_lastaddr(void)
+static vm_offset_t
+imx6_lastaddr(platform_t plat)
{
return (arm_devmap_lastaddr());
}
-void
-platform_probe_and_attach(void)
+static int
+imx6_attach(platform_t plat)
{
/* Inform the MPCore timer driver that its clock is variable. */
arm_tmr_change_frequency(ARM_TMR_FREQUENCY_VARIES);
-}
-
-void
-platform_gpio_init(void)
-{
+ return (0);
}
-void
-platform_late_init(void)
+static void
+imx6_late_init(platform_t plat)
{
/* Cache the gpio1 node handle for imx6_decode_fdt() workaround code. */
@@ -136,8 +134,8 @@ platform_late_init(void)
* static map some of that area. Be careful with other things in that area such
* as OCRAM that probably shouldn't be mapped as PTE_DEVICE memory.
*/
-int
-platform_devmap_init(void)
+static int
+imx6_devmap_init(platform_t plat)
{
const uint32_t IMX6_ARMMP_PHYS = 0x00a00000;
const uint32_t IMX6_ARMMP_SIZE = 0x00100000;
@@ -271,3 +269,15 @@ imx6_early_putc(int c)
early_putc_t *early_putc = imx6_early_putc;
#endif
+static platform_method_t imx6_methods[] = {
+ PLATFORMMETHOD(platform_attach, imx6_attach),
+ PLATFORMMETHOD(platform_lastaddr, imx6_lastaddr),
+ PLATFORMMETHOD(platform_devmap_init, imx6_devmap_init),
+ PLATFORMMETHOD(platform_late_init, imx6_late_init),
+
+ PLATFORMMETHOD_END,
+};
+
+FDT_PLATFORM_DEF2(imx6, imx6s, "i.MX6 Solo", 0, "fsl,imx6s");
+FDT_PLATFORM_DEF2(imx6, imx6d, "i.MX6 Dual", 0, "fsl,imx6d");
+FDT_PLATFORM_DEF2(imx6, imx6q, "i.MX6 Quad", 0, "fsl,imx6q");
OpenPOWER on IntegriCloud