From: Daniel Palmer <daniel@0x0f.com>
Cc: "Mark Rutland" <mark.rutland@arm.com>,
"Heiko Stuebner" <heiko@sntech.de>,
"Linus Walleij" <linus.walleij@linaro.org>,
"Stefan Agner" <stefan@agner.ch>,
"Masahiro Yamada" <yamada.masahiro@socionext.com>,
"Daniel Palmer" <daniel@thingy.jp>,
"Laurent Pinchart" <laurent.pinchart@ideasonboard.com>,
"Benjamin Gaignard" <benjamin.gaignard@linaro.org>,
"Mauro Carvalho Chehab" <mchehab+samsung@kernel.org>,
"Paul E. McKenney" <paulmck@linux.ibm.com>,
daniel@0x0f.com, "Russell King" <linux@armlinux.org.uk>,
"Mike Rapoport" <rppt@linux.ibm.com>,
"Bartosz Golaszewski" <bgolaszewski@baylibre.com>,
"Nathan Huckleberry" <nhuck15@gmail.com>,
"Icenowy Zheng" <icenowy@aosc.io>,
devicetree@vger.kernel.org, "Arnd Bergmann" <arnd@arndb.de>,
"Maxime Ripard" <mripard@kernel.org>,
"Rob Herring" <robh+dt@kernel.org>,
"Jonathan Cameron" <Jonathan.Cameron@huawei.com>,
"Doug Anderson" <armlinux@m.disordat.com>,
"Nathan Chancellor" <natechancellor@gmail.com>,
linux-arm-kernel@lists.infradead.org,
"Ard Biesheuvel" <ard.biesheuvel@linaro.org>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Nicolas Pitre" <nico@fluxnic.net>,
"Nick Desaulniers" <ndesaulniers@google.com>,
linux-kernel@vger.kernel.org, "Andreas Färber" <afaerber@suse.de>,
"Paul Burton" <paul.burton@mips.com>,
"Andrew Morton" <akpm@linux-foundation.org>,
"Shawn Guo" <shawnguo@kernel.org>,
"David S. Miller" <davem@davemloft.net>
Subject: [PATCH 2/4] ARM: mstar: Add machine for MStar infinity family SoCs
Date: Mon, 14 Oct 2019 15:15:57 +0900 [thread overview]
Message-ID: <20191014061617.10296-2-daniel@0x0f.com> (raw)
In-Reply-To: <20191014061617.10296-1-daniel@0x0f.com>
Initial support for the MStar infinity/infinity3 series of Cortex A7
based IP camera SoCs.
These chips are interesting in that they contain a Cortex A7,
peripherals and system memory in a single tiny QFN package that
can be hand soldered allowing almost anyone to embed Linux
in their projects.
Signed-off-by: Daniel Palmer <daniel@0x0f.com>
---
MAINTAINERS | 1 +
arch/arm/Kconfig | 2 +
arch/arm/Makefile | 1 +
arch/arm/mach-mstar/Kconfig | 15 ++++++
arch/arm/mach-mstar/Makefile | 1 +
arch/arm/mach-mstar/infinity.c | 96 ++++++++++++++++++++++++++++++++++
6 files changed, 116 insertions(+)
create mode 100644 arch/arm/mach-mstar/Kconfig
create mode 100644 arch/arm/mach-mstar/Makefile
create mode 100644 arch/arm/mach-mstar/infinity.c
diff --git a/MAINTAINERS b/MAINTAINERS
index 8b7913c13f9a..e35c3eb2b680 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1985,6 +1985,7 @@ ARM/MStar SoC support
M: Daniel Palmer <daniel@thingy.jp>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
F: Documentation/devicetree/bindings/arm/mstar.yaml
+F: arch/arm/mach-mstar/
S: Maintained
ARM/NEC MOBILEPRO 900/c MACHINE SUPPORT
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 8a50efb559f3..b8450ed8d946 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -667,6 +667,8 @@ source "arch/arm/mach-mmp/Kconfig"
source "arch/arm/mach-moxart/Kconfig"
+source "arch/arm/mach-mstar/Kconfig"
+
source "arch/arm/mach-mv78xx0/Kconfig"
source "arch/arm/mach-mvebu/Kconfig"
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index db857d07114f..2a3c127cd243 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -196,6 +196,7 @@ machine-$(CONFIG_ARCH_MXC) += imx
machine-$(CONFIG_ARCH_MEDIATEK) += mediatek
machine-$(CONFIG_ARCH_MILBEAUT) += milbeaut
machine-$(CONFIG_ARCH_MXS) += mxs
+machine-$(CONFIG_ARCH_MSTAR) += mstar
machine-$(CONFIG_ARCH_NOMADIK) += nomadik
machine-$(CONFIG_ARCH_NPCM) += npcm
machine-$(CONFIG_ARCH_NSPIRE) += nspire
diff --git a/arch/arm/mach-mstar/Kconfig b/arch/arm/mach-mstar/Kconfig
new file mode 100644
index 000000000000..7bc79c296ebb
--- /dev/null
+++ b/arch/arm/mach-mstar/Kconfig
@@ -0,0 +1,15 @@
+menuconfig ARCH_MSTAR
+ bool "MStar SoC Support"
+ depends on ARCH_MULTI_V7
+ select ARM_GIC
+ help
+ Support for MStar ARMv7 SoCs
+
+if ARCH_MSTAR
+
+config MACH_INFINITY
+ bool "MStar infinity SoC support"
+ default ARCH_INFINITY
+ help
+ Support for MStar infinity(1/3) IP camera SoCs
+endif
diff --git a/arch/arm/mach-mstar/Makefile b/arch/arm/mach-mstar/Makefile
new file mode 100644
index 000000000000..144b58b189e3
--- /dev/null
+++ b/arch/arm/mach-mstar/Makefile
@@ -0,0 +1 @@
+obj-$(CONFIG_MACH_INFINITY) += infinity.o
diff --git a/arch/arm/mach-mstar/infinity.c b/arch/arm/mach-mstar/infinity.c
new file mode 100644
index 000000000000..520581660bef
--- /dev/null
+++ b/arch/arm/mach-mstar/infinity.c
@@ -0,0 +1,96 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Device Tree support for MStar Infinity SoCs
+ *
+ * Copyright (c) 2019 thingy.jp
+ * Author: Daniel Palmer <daniel@thingy.jp>
+ */
+
+#include <linux/init.h>
+#include <asm/mach/arch.h>
+#include <asm/mach/map.h>
+#include <linux/of.h>
+#include <linux/io.h>
+
+/*
+ * The IO space is remapped to the same place
+ * the vendor kernel does so that the hardcoded
+ * addresses all over the vendor drivers line up.
+ */
+
+#define INFINITY_IO_PHYS 0x1f000000
+#define INFINITY_IO_OFFSET 0xde000000
+#define INFINITY_IO_VIRT (INFINITY_IO_PHYS + INFINITY_IO_OFFSET)
+#define INFINITY_IO_SIZE 0x00400000
+
+/*
+ * In the u-boot code the area these registers are in is
+ * called "L3 bridge".
+ *
+ * It's not exactly known what is the L3 bridge is but
+ * the vendor code for both u-boot and linux share calls
+ * to "flush the miu pipe". This seems to be to force pending
+ * CPU writes to memory so that the state is right before
+ * DMA capable devices try to read descriptors and data
+ * the CPU has prepared. Without doing this ethernet doesn't
+ * work reliably for example.
+ */
+
+#define INFINITY_L3BRIDGE_FLUSH 0x204414
+#define INFINITY_L3BRIDGE_STATUS 0x204440
+#define INFINITY_L3BRIDGE_FLUSH_TRIGGER BIT(0)
+#define INFINITY_L3BRIDGE_STATUS_DONE BIT(12)
+
+static void __iomem *miu_status;
+static void __iomem *miu_flush;
+
+static struct map_desc infinity_io_desc[] __initdata = {
+ {INFINITY_IO_VIRT, __phys_to_pfn(INFINITY_IO_PHYS),
+ INFINITY_IO_SIZE, MT_DEVICE},
+};
+
+static void __init infinity_map_io(void)
+{
+ iotable_init(infinity_io_desc, ARRAY_SIZE(infinity_io_desc));
+ miu_flush = (void __iomem *)(infinity_io_desc[0].virtual
+ + INFINITY_L3BRIDGE_FLUSH);
+ miu_status = (void __iomem *)(infinity_io_desc[0].virtual
+ + INFINITY_L3BRIDGE_STATUS);
+}
+
+static const char * const infinity_board_dt_compat[] = {
+ "mstar,infinity",
+ NULL,
+};
+
+static DEFINE_SPINLOCK(infinity_mb_lock);
+
+static void infinity_mb(void)
+{
+ unsigned long flags;
+
+ spin_lock_irqsave(&infinity_mb_lock, flags);
+ /* toggle the flush miu pipe fire bit */
+ writel_relaxed(0, miu_flush);
+ writel_relaxed(INFINITY_L3BRIDGE_FLUSH_TRIGGER, miu_flush);
+ while (!(readl_relaxed(miu_status) & INFINITY_L3BRIDGE_STATUS_DONE)) {
+ /* wait for flush to complete */
+ }
+ spin_unlock_irqrestore(&infinity_mb_lock, flags);
+}
+
+static void __init infinity_barriers_init(void)
+{
+ soc_mb = infinity_mb;
+}
+
+static void __init infinity_init(void)
+{
+ infinity_barriers_init();
+}
+
+DT_MACHINE_START(INFINITY_DT, "MStar Infinity (Device Tree)")
+ .dt_compat = infinity_board_dt_compat,
+ .init_machine = infinity_init,
+ .map_io = infinity_map_io,
+MACHINE_END
--
2.23.0
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: Daniel Palmer <daniel@0x0f.com>
Cc: daniel@0x0f.com, Daniel Palmer <daniel@thingy.jp>,
Rob Herring <robh+dt@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Russell King <linux@armlinux.org.uk>,
Maxime Ripard <mripard@kernel.org>,
Heiko Stuebner <heiko@sntech.de>, Shawn Guo <shawnguo@kernel.org>,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
Icenowy Zheng <icenowy@aosc.io>,
Mauro Carvalho Chehab <mchehab+samsung@kernel.org>,
"David S. Miller" <davem@davemloft.net>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Jonathan Cameron <Jonathan.Cameron@huawei.com>,
"Paul E. McKenney" <paulmck@linux.ibm.com>,
Arnd Bergmann <arnd@arndb.de>,
Linus Walleij <linus.walleij@linaro.org>,
Paul Burton <paul.burton@mips.com>,
Andrew Morton <akpm@linux-foundation.org>Mike Rapoport <r>
Subject: [PATCH 2/4] ARM: mstar: Add machine for MStar infinity family SoCs
Date: Mon, 14 Oct 2019 15:15:57 +0900 [thread overview]
Message-ID: <20191014061617.10296-2-daniel@0x0f.com> (raw)
In-Reply-To: <20191014061617.10296-1-daniel@0x0f.com>
Initial support for the MStar infinity/infinity3 series of Cortex A7
based IP camera SoCs.
These chips are interesting in that they contain a Cortex A7,
peripherals and system memory in a single tiny QFN package that
can be hand soldered allowing almost anyone to embed Linux
in their projects.
Signed-off-by: Daniel Palmer <daniel@0x0f.com>
---
MAINTAINERS | 1 +
arch/arm/Kconfig | 2 +
arch/arm/Makefile | 1 +
arch/arm/mach-mstar/Kconfig | 15 ++++++
arch/arm/mach-mstar/Makefile | 1 +
arch/arm/mach-mstar/infinity.c | 96 ++++++++++++++++++++++++++++++++++
6 files changed, 116 insertions(+)
create mode 100644 arch/arm/mach-mstar/Kconfig
create mode 100644 arch/arm/mach-mstar/Makefile
create mode 100644 arch/arm/mach-mstar/infinity.c
diff --git a/MAINTAINERS b/MAINTAINERS
index 8b7913c13f9a..e35c3eb2b680 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1985,6 +1985,7 @@ ARM/MStar SoC support
M: Daniel Palmer <daniel@thingy.jp>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
F: Documentation/devicetree/bindings/arm/mstar.yaml
+F: arch/arm/mach-mstar/
S: Maintained
ARM/NEC MOBILEPRO 900/c MACHINE SUPPORT
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 8a50efb559f3..b8450ed8d946 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -667,6 +667,8 @@ source "arch/arm/mach-mmp/Kconfig"
source "arch/arm/mach-moxart/Kconfig"
+source "arch/arm/mach-mstar/Kconfig"
+
source "arch/arm/mach-mv78xx0/Kconfig"
source "arch/arm/mach-mvebu/Kconfig"
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index db857d07114f..2a3c127cd243 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -196,6 +196,7 @@ machine-$(CONFIG_ARCH_MXC) += imx
machine-$(CONFIG_ARCH_MEDIATEK) += mediatek
machine-$(CONFIG_ARCH_MILBEAUT) += milbeaut
machine-$(CONFIG_ARCH_MXS) += mxs
+machine-$(CONFIG_ARCH_MSTAR) += mstar
machine-$(CONFIG_ARCH_NOMADIK) += nomadik
machine-$(CONFIG_ARCH_NPCM) += npcm
machine-$(CONFIG_ARCH_NSPIRE) += nspire
diff --git a/arch/arm/mach-mstar/Kconfig b/arch/arm/mach-mstar/Kconfig
new file mode 100644
index 000000000000..7bc79c296ebb
--- /dev/null
+++ b/arch/arm/mach-mstar/Kconfig
@@ -0,0 +1,15 @@
+menuconfig ARCH_MSTAR
+ bool "MStar SoC Support"
+ depends on ARCH_MULTI_V7
+ select ARM_GIC
+ help
+ Support for MStar ARMv7 SoCs
+
+if ARCH_MSTAR
+
+config MACH_INFINITY
+ bool "MStar infinity SoC support"
+ default ARCH_INFINITY
+ help
+ Support for MStar infinity(1/3) IP camera SoCs
+endif
diff --git a/arch/arm/mach-mstar/Makefile b/arch/arm/mach-mstar/Makefile
new file mode 100644
index 000000000000..144b58b189e3
--- /dev/null
+++ b/arch/arm/mach-mstar/Makefile
@@ -0,0 +1 @@
+obj-$(CONFIG_MACH_INFINITY) += infinity.o
diff --git a/arch/arm/mach-mstar/infinity.c b/arch/arm/mach-mstar/infinity.c
new file mode 100644
index 000000000000..520581660bef
--- /dev/null
+++ b/arch/arm/mach-mstar/infinity.c
@@ -0,0 +1,96 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Device Tree support for MStar Infinity SoCs
+ *
+ * Copyright (c) 2019 thingy.jp
+ * Author: Daniel Palmer <daniel@thingy.jp>
+ */
+
+#include <linux/init.h>
+#include <asm/mach/arch.h>
+#include <asm/mach/map.h>
+#include <linux/of.h>
+#include <linux/io.h>
+
+/*
+ * The IO space is remapped to the same place
+ * the vendor kernel does so that the hardcoded
+ * addresses all over the vendor drivers line up.
+ */
+
+#define INFINITY_IO_PHYS 0x1f000000
+#define INFINITY_IO_OFFSET 0xde000000
+#define INFINITY_IO_VIRT (INFINITY_IO_PHYS + INFINITY_IO_OFFSET)
+#define INFINITY_IO_SIZE 0x00400000
+
+/*
+ * In the u-boot code the area these registers are in is
+ * called "L3 bridge".
+ *
+ * It's not exactly known what is the L3 bridge is but
+ * the vendor code for both u-boot and linux share calls
+ * to "flush the miu pipe". This seems to be to force pending
+ * CPU writes to memory so that the state is right before
+ * DMA capable devices try to read descriptors and data
+ * the CPU has prepared. Without doing this ethernet doesn't
+ * work reliably for example.
+ */
+
+#define INFINITY_L3BRIDGE_FLUSH 0x204414
+#define INFINITY_L3BRIDGE_STATUS 0x204440
+#define INFINITY_L3BRIDGE_FLUSH_TRIGGER BIT(0)
+#define INFINITY_L3BRIDGE_STATUS_DONE BIT(12)
+
+static void __iomem *miu_status;
+static void __iomem *miu_flush;
+
+static struct map_desc infinity_io_desc[] __initdata = {
+ {INFINITY_IO_VIRT, __phys_to_pfn(INFINITY_IO_PHYS),
+ INFINITY_IO_SIZE, MT_DEVICE},
+};
+
+static void __init infinity_map_io(void)
+{
+ iotable_init(infinity_io_desc, ARRAY_SIZE(infinity_io_desc));
+ miu_flush = (void __iomem *)(infinity_io_desc[0].virtual
+ + INFINITY_L3BRIDGE_FLUSH);
+ miu_status = (void __iomem *)(infinity_io_desc[0].virtual
+ + INFINITY_L3BRIDGE_STATUS);
+}
+
+static const char * const infinity_board_dt_compat[] = {
+ "mstar,infinity",
+ NULL,
+};
+
+static DEFINE_SPINLOCK(infinity_mb_lock);
+
+static void infinity_mb(void)
+{
+ unsigned long flags;
+
+ spin_lock_irqsave(&infinity_mb_lock, flags);
+ /* toggle the flush miu pipe fire bit */
+ writel_relaxed(0, miu_flush);
+ writel_relaxed(INFINITY_L3BRIDGE_FLUSH_TRIGGER, miu_flush);
+ while (!(readl_relaxed(miu_status) & INFINITY_L3BRIDGE_STATUS_DONE)) {
+ /* wait for flush to complete */
+ }
+ spin_unlock_irqrestore(&infinity_mb_lock, flags);
+}
+
+static void __init infinity_barriers_init(void)
+{
+ soc_mb = infinity_mb;
+}
+
+static void __init infinity_init(void)
+{
+ infinity_barriers_init();
+}
+
+DT_MACHINE_START(INFINITY_DT, "MStar Infinity (Device Tree)")
+ .dt_compat = infinity_board_dt_compat,
+ .init_machine = infinity_init,
+ .map_io = infinity_map_io,
+MACHINE_END
--
2.23.0
WARNING: multiple messages have this Message-ID (diff)
From: Daniel Palmer <daniel@0x0f.com>
To: unlisted-recipients:; (no To-header on input)
Cc: daniel@0x0f.com, "Daniel Palmer" <daniel@thingy.jp>,
"Rob Herring" <robh+dt@kernel.org>,
"Mark Rutland" <mark.rutland@arm.com>,
"Russell King" <linux@armlinux.org.uk>,
"Maxime Ripard" <mripard@kernel.org>,
"Heiko Stuebner" <heiko@sntech.de>,
"Shawn Guo" <shawnguo@kernel.org>,
"Laurent Pinchart" <laurent.pinchart@ideasonboard.com>,
"Icenowy Zheng" <icenowy@aosc.io>,
"Mauro Carvalho Chehab" <mchehab+samsung@kernel.org>,
"David S. Miller" <davem@davemloft.net>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Jonathan Cameron" <Jonathan.Cameron@huawei.com>,
"Paul E. McKenney" <paulmck@linux.ibm.com>,
"Arnd Bergmann" <arnd@arndb.de>,
"Linus Walleij" <linus.walleij@linaro.org>,
"Paul Burton" <paul.burton@mips.com>,
"Andrew Morton" <akpm@linux-foundation.org>,
"Mike Rapoport" <rppt@linux.ibm.com>,
"Bartosz Golaszewski" <bgolaszewski@baylibre.com>,
"Doug Anderson" <armlinux@m.disordat.com>,
"Ard Biesheuvel" <ard.biesheuvel@linaro.org>,
"Benjamin Gaignard" <benjamin.gaignard@linaro.org>,
"Nick Desaulniers" <ndesaulniers@google.com>,
"Stefan Agner" <stefan@agner.ch>,
"Nicolas Pitre" <nico@fluxnic.net>,
"Masahiro Yamada" <yamada.masahiro@socionext.com>,
"Nathan Chancellor" <natechancellor@gmail.com>,
"Andreas Färber" <afaerber@suse.de>,
"Nathan Huckleberry" <nhuck15@gmail.com>,
linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: [PATCH 2/4] ARM: mstar: Add machine for MStar infinity family SoCs
Date: Mon, 14 Oct 2019 15:15:57 +0900 [thread overview]
Message-ID: <20191014061617.10296-2-daniel@0x0f.com> (raw)
In-Reply-To: <20191014061617.10296-1-daniel@0x0f.com>
Initial support for the MStar infinity/infinity3 series of Cortex A7
based IP camera SoCs.
These chips are interesting in that they contain a Cortex A7,
peripherals and system memory in a single tiny QFN package that
can be hand soldered allowing almost anyone to embed Linux
in their projects.
Signed-off-by: Daniel Palmer <daniel@0x0f.com>
---
MAINTAINERS | 1 +
arch/arm/Kconfig | 2 +
arch/arm/Makefile | 1 +
arch/arm/mach-mstar/Kconfig | 15 ++++++
arch/arm/mach-mstar/Makefile | 1 +
arch/arm/mach-mstar/infinity.c | 96 ++++++++++++++++++++++++++++++++++
6 files changed, 116 insertions(+)
create mode 100644 arch/arm/mach-mstar/Kconfig
create mode 100644 arch/arm/mach-mstar/Makefile
create mode 100644 arch/arm/mach-mstar/infinity.c
diff --git a/MAINTAINERS b/MAINTAINERS
index 8b7913c13f9a..e35c3eb2b680 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1985,6 +1985,7 @@ ARM/MStar SoC support
M: Daniel Palmer <daniel@thingy.jp>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
F: Documentation/devicetree/bindings/arm/mstar.yaml
+F: arch/arm/mach-mstar/
S: Maintained
ARM/NEC MOBILEPRO 900/c MACHINE SUPPORT
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 8a50efb559f3..b8450ed8d946 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -667,6 +667,8 @@ source "arch/arm/mach-mmp/Kconfig"
source "arch/arm/mach-moxart/Kconfig"
+source "arch/arm/mach-mstar/Kconfig"
+
source "arch/arm/mach-mv78xx0/Kconfig"
source "arch/arm/mach-mvebu/Kconfig"
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index db857d07114f..2a3c127cd243 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -196,6 +196,7 @@ machine-$(CONFIG_ARCH_MXC) += imx
machine-$(CONFIG_ARCH_MEDIATEK) += mediatek
machine-$(CONFIG_ARCH_MILBEAUT) += milbeaut
machine-$(CONFIG_ARCH_MXS) += mxs
+machine-$(CONFIG_ARCH_MSTAR) += mstar
machine-$(CONFIG_ARCH_NOMADIK) += nomadik
machine-$(CONFIG_ARCH_NPCM) += npcm
machine-$(CONFIG_ARCH_NSPIRE) += nspire
diff --git a/arch/arm/mach-mstar/Kconfig b/arch/arm/mach-mstar/Kconfig
new file mode 100644
index 000000000000..7bc79c296ebb
--- /dev/null
+++ b/arch/arm/mach-mstar/Kconfig
@@ -0,0 +1,15 @@
+menuconfig ARCH_MSTAR
+ bool "MStar SoC Support"
+ depends on ARCH_MULTI_V7
+ select ARM_GIC
+ help
+ Support for MStar ARMv7 SoCs
+
+if ARCH_MSTAR
+
+config MACH_INFINITY
+ bool "MStar infinity SoC support"
+ default ARCH_INFINITY
+ help
+ Support for MStar infinity(1/3) IP camera SoCs
+endif
diff --git a/arch/arm/mach-mstar/Makefile b/arch/arm/mach-mstar/Makefile
new file mode 100644
index 000000000000..144b58b189e3
--- /dev/null
+++ b/arch/arm/mach-mstar/Makefile
@@ -0,0 +1 @@
+obj-$(CONFIG_MACH_INFINITY) += infinity.o
diff --git a/arch/arm/mach-mstar/infinity.c b/arch/arm/mach-mstar/infinity.c
new file mode 100644
index 000000000000..520581660bef
--- /dev/null
+++ b/arch/arm/mach-mstar/infinity.c
@@ -0,0 +1,96 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Device Tree support for MStar Infinity SoCs
+ *
+ * Copyright (c) 2019 thingy.jp
+ * Author: Daniel Palmer <daniel@thingy.jp>
+ */
+
+#include <linux/init.h>
+#include <asm/mach/arch.h>
+#include <asm/mach/map.h>
+#include <linux/of.h>
+#include <linux/io.h>
+
+/*
+ * The IO space is remapped to the same place
+ * the vendor kernel does so that the hardcoded
+ * addresses all over the vendor drivers line up.
+ */
+
+#define INFINITY_IO_PHYS 0x1f000000
+#define INFINITY_IO_OFFSET 0xde000000
+#define INFINITY_IO_VIRT (INFINITY_IO_PHYS + INFINITY_IO_OFFSET)
+#define INFINITY_IO_SIZE 0x00400000
+
+/*
+ * In the u-boot code the area these registers are in is
+ * called "L3 bridge".
+ *
+ * It's not exactly known what is the L3 bridge is but
+ * the vendor code for both u-boot and linux share calls
+ * to "flush the miu pipe". This seems to be to force pending
+ * CPU writes to memory so that the state is right before
+ * DMA capable devices try to read descriptors and data
+ * the CPU has prepared. Without doing this ethernet doesn't
+ * work reliably for example.
+ */
+
+#define INFINITY_L3BRIDGE_FLUSH 0x204414
+#define INFINITY_L3BRIDGE_STATUS 0x204440
+#define INFINITY_L3BRIDGE_FLUSH_TRIGGER BIT(0)
+#define INFINITY_L3BRIDGE_STATUS_DONE BIT(12)
+
+static void __iomem *miu_status;
+static void __iomem *miu_flush;
+
+static struct map_desc infinity_io_desc[] __initdata = {
+ {INFINITY_IO_VIRT, __phys_to_pfn(INFINITY_IO_PHYS),
+ INFINITY_IO_SIZE, MT_DEVICE},
+};
+
+static void __init infinity_map_io(void)
+{
+ iotable_init(infinity_io_desc, ARRAY_SIZE(infinity_io_desc));
+ miu_flush = (void __iomem *)(infinity_io_desc[0].virtual
+ + INFINITY_L3BRIDGE_FLUSH);
+ miu_status = (void __iomem *)(infinity_io_desc[0].virtual
+ + INFINITY_L3BRIDGE_STATUS);
+}
+
+static const char * const infinity_board_dt_compat[] = {
+ "mstar,infinity",
+ NULL,
+};
+
+static DEFINE_SPINLOCK(infinity_mb_lock);
+
+static void infinity_mb(void)
+{
+ unsigned long flags;
+
+ spin_lock_irqsave(&infinity_mb_lock, flags);
+ /* toggle the flush miu pipe fire bit */
+ writel_relaxed(0, miu_flush);
+ writel_relaxed(INFINITY_L3BRIDGE_FLUSH_TRIGGER, miu_flush);
+ while (!(readl_relaxed(miu_status) & INFINITY_L3BRIDGE_STATUS_DONE)) {
+ /* wait for flush to complete */
+ }
+ spin_unlock_irqrestore(&infinity_mb_lock, flags);
+}
+
+static void __init infinity_barriers_init(void)
+{
+ soc_mb = infinity_mb;
+}
+
+static void __init infinity_init(void)
+{
+ infinity_barriers_init();
+}
+
+DT_MACHINE_START(INFINITY_DT, "MStar Infinity (Device Tree)")
+ .dt_compat = infinity_board_dt_compat,
+ .init_machine = infinity_init,
+ .map_io = infinity_map_io,
+MACHINE_END
--
2.23.0
next prev parent reply other threads:[~2019-10-14 6:21 UTC|newest]
Thread overview: 146+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-14 6:15 [PATCH 1/4] dt-bindings: arm: Initial MStar vendor prefixes and compatible strings Daniel Palmer
2019-10-14 6:15 ` Daniel Palmer
2019-10-14 6:15 ` Daniel Palmer
2019-10-14 6:15 ` Daniel Palmer [this message]
2019-10-14 6:15 ` [PATCH 2/4] ARM: mstar: Add machine for MStar infinity family SoCs Daniel Palmer
2019-10-14 6:15 ` Daniel Palmer
2019-10-14 11:19 ` Arnd Bergmann
2019-10-14 11:19 ` Arnd Bergmann
2019-10-14 11:19 ` Arnd Bergmann
2019-10-16 20:32 ` Daniel Palmer
2019-10-16 20:32 ` Daniel Palmer
2019-10-17 13:02 ` Arnd Bergmann
2019-10-17 13:02 ` Arnd Bergmann
2019-10-17 21:15 ` Daniel Palmer
2019-10-17 21:15 ` Daniel Palmer
2020-06-10 9:03 ` [PATCH v2 0/5] Initial MStar/Sigmastar ARMv7 SoC support Daniel Palmer
2020-06-10 9:03 ` Daniel Palmer
2020-06-12 13:00 ` [PATCH v3 00/12] Initial MStar/Sigmastar Armv7 " Daniel Palmer
2020-06-12 13:00 ` Daniel Palmer
2020-06-12 13:00 ` [PATCH v3 01/12] dt-bindings: vendor-prefixes: Add mstar vendor prefix Daniel Palmer
2020-06-12 13:00 ` Daniel Palmer
2020-06-16 12:15 ` [PATCH v4 00/12] Initial MStar/Sigmastar ARMv7 SoC support Daniel Palmer
2020-06-16 12:15 ` Daniel Palmer
2020-06-16 12:15 ` [PATCH v4 01/12] dt-bindings: vendor-prefixes: Add mstar vendor prefix Daniel Palmer
2020-06-16 12:15 ` Daniel Palmer
2020-07-09 23:04 ` Rob Herring
2020-07-09 23:04 ` Rob Herring
2020-06-16 12:15 ` [PATCH v4 02/12] dt-bindings: vendor-prefixes: Add sstar " Daniel Palmer
2020-06-16 12:15 ` Daniel Palmer
2020-07-09 23:04 ` Rob Herring
2020-07-09 23:04 ` Rob Herring
2020-06-16 12:15 ` [PATCH v4 03/12] dt-bindings: vendor-prefixes: Add 70mai " Daniel Palmer
2020-06-16 12:15 ` Daniel Palmer
2020-07-09 23:05 ` Rob Herring
2020-07-09 23:05 ` Rob Herring
2020-06-16 12:15 ` [PATCH v4 04/12] dt-bindings: vendor-prefixes: Add thingy.jp prefix Daniel Palmer
2020-06-16 12:15 ` Daniel Palmer
2020-07-09 23:05 ` Rob Herring
2020-07-09 23:05 ` Rob Herring
2020-06-16 12:15 ` [PATCH v4 05/12] dt-bindings: arm: Add mstar YAML schema Daniel Palmer
2020-06-16 12:15 ` Daniel Palmer
2020-07-09 23:04 ` Rob Herring
2020-07-09 23:04 ` Rob Herring
2020-06-16 12:15 ` [PATCH v4 06/12] ARM: mstar: Add machine for MStar/Sigmastar Armv7 SoCs Daniel Palmer
2020-06-16 12:15 ` Daniel Palmer
2020-06-16 12:15 ` [PATCH v4 07/12] ARM: mstar: Add binding details for mstar,l3bridge Daniel Palmer
2020-06-16 12:15 ` Daniel Palmer
2020-07-09 23:06 ` Rob Herring
2020-07-09 23:06 ` Rob Herring
2020-06-16 12:15 ` [PATCH v4 08/12] ARM: mstar: Add Armv7 base dtsi Daniel Palmer
2020-06-16 12:15 ` Daniel Palmer
2020-06-16 12:15 ` [PATCH v4 09/12] ARM: mstar: Add infinity/infinity3 family dtsis Daniel Palmer
2020-06-16 12:15 ` Daniel Palmer
2020-06-16 12:15 ` [PATCH v4 10/12] ARM: mstar: Add mercury5 series dtsis Daniel Palmer
2020-06-16 12:15 ` Daniel Palmer
2020-06-16 12:15 ` [PATCH v4 11/12] ARM: mstar: Add dts for msc313(e) based BreadBee boards Daniel Palmer
2020-06-16 12:15 ` Daniel Palmer
2020-06-16 12:15 ` [PATCH v4 12/12] ARM: mstar: Add dts for 70mai midrive d08 Daniel Palmer
2020-06-16 12:15 ` Daniel Palmer
2020-06-12 13:00 ` [PATCH v3 02/12] dt-bindings: vendor-prefixes: Add sstar vendor prefix Daniel Palmer
2020-06-12 13:00 ` Daniel Palmer
2020-06-12 13:00 ` [PATCH v3 03/12] dt-bindings: vendor-prefixes: Add 70mai " Daniel Palmer
2020-06-12 13:00 ` Daniel Palmer
2020-06-12 13:00 ` [PATCH v3 04/12] dt-bindings: vendor-prefixes: Add thingy.jp prefix Daniel Palmer
2020-06-12 13:00 ` Daniel Palmer
2020-06-12 13:00 ` [PATCH v3 05/12] dt-bindings: dt-bindings: arm: Add mstar YAML schema Daniel Palmer
2020-06-12 13:00 ` Daniel Palmer
2020-06-12 22:07 ` Rob Herring
2020-06-12 22:07 ` Rob Herring
2020-06-12 13:00 ` [PATCH v3 06/12] ARM: mstar: Add machine for MStar/Sigmastar Armv7 SoCs Daniel Palmer
2020-06-12 13:00 ` Daniel Palmer
2020-06-12 13:00 ` [PATCH v3 07/12] ARM: mstar: Add binding details for mstar,l3bridge Daniel Palmer
2020-06-12 13:00 ` Daniel Palmer
2020-06-12 13:00 ` [PATCH v3 08/12] ARM: mstar: Add Armv7 base dtsi Daniel Palmer
2020-06-12 13:00 ` Daniel Palmer
2020-06-12 13:00 ` [PATCH v3 09/12] ARM: mstar: Add infinity/infinity3 family dtsis Daniel Palmer
2020-06-12 13:00 ` Daniel Palmer
2020-06-12 13:00 ` [PATCH v3 10/12] ARM: mstar: Add mercury5 series dtsis Daniel Palmer
2020-06-12 13:00 ` Daniel Palmer
2020-06-12 13:00 ` [PATCH v3 11/12] ARM: mstar: Add dts for msc313(e) based BreadBee boards Daniel Palmer
2020-06-12 13:00 ` Daniel Palmer
2020-06-12 13:00 ` [PATCH v3 12/12] ARM: mstar: Add dts for 70mai midrive d08 Daniel Palmer
2020-06-12 13:00 ` Daniel Palmer
2020-06-10 9:03 ` [PATCH v2 1/5] dt-bindings: arm: Initial MStar vendor prefixes and compatible strings Daniel Palmer
2020-06-10 9:03 ` Daniel Palmer
2020-06-10 9:35 ` Andreas Färber
2020-06-10 9:35 ` Andreas Färber
2020-06-10 10:29 ` Daniel Palmer
2020-06-10 10:29 ` Daniel Palmer
2020-06-11 15:00 ` Andreas Färber
2020-06-11 15:00 ` Andreas Färber
2020-06-11 15:00 ` Andreas Färber
2020-06-10 9:04 ` [PATCH v2 2/5] ARM: mstar: Add machine for MStar/Sigmastar infinity/mercury family ARMv7 SoCs Daniel Palmer
2020-06-10 9:04 ` Daniel Palmer
2020-06-10 9:43 ` Arnd Bergmann
2020-06-10 9:43 ` Arnd Bergmann
2020-06-11 12:49 ` Andreas Färber
2020-06-11 12:49 ` Andreas Färber
2020-06-11 13:01 ` Daniel Palmer
2020-06-11 13:01 ` Daniel Palmer
2020-06-11 14:27 ` Andreas Färber
2020-06-11 14:27 ` Andreas Färber
2020-06-11 14:58 ` Daniel Palmer
2020-06-11 14:58 ` Daniel Palmer
2020-06-11 12:58 ` Andreas Färber
2020-06-11 12:58 ` Andreas Färber
2020-06-11 13:18 ` Daniel Palmer
2020-06-11 13:18 ` Daniel Palmer
2020-06-10 9:04 ` [PATCH v2 3/5] ARM: mstar: Add infinity/mercury series dtsi Daniel Palmer
2020-06-10 9:04 ` Daniel Palmer
2020-06-10 9:35 ` Marc Zyngier
2020-06-10 9:35 ` Marc Zyngier
2020-06-11 13:39 ` Andreas Färber
2020-06-11 13:39 ` Andreas Färber
2020-06-11 14:19 ` Daniel Palmer
2020-06-11 14:19 ` Daniel Palmer
2020-06-11 14:39 ` Andreas Färber
2020-06-11 14:39 ` Andreas Färber
2020-06-11 15:07 ` Daniel Palmer
2020-06-11 15:07 ` Daniel Palmer
2020-06-10 9:04 ` [PATCH v2 4/5] ARM: mstar: Add dts for msc313(e) based BreadBee boards Daniel Palmer
2020-06-10 9:04 ` Daniel Palmer
2020-06-11 13:45 ` Andreas Färber
2020-06-11 13:45 ` Andreas Färber
2020-06-11 14:26 ` Daniel Palmer
2020-06-11 14:26 ` Daniel Palmer
2020-06-10 9:04 ` [PATCH v2 5/5] ARM: mstar: Add dts for 70mai midrive d08 Daniel Palmer
2020-06-10 9:04 ` Daniel Palmer
2020-06-11 13:54 ` Andreas Färber
2020-06-11 13:54 ` Andreas Färber
2020-06-11 14:38 ` Daniel Palmer
2020-06-11 14:38 ` Daniel Palmer
2019-10-14 6:15 ` [PATCH 3/4] ARM: mstar: Add infinity series dtsi Daniel Palmer
2019-10-14 6:15 ` Daniel Palmer
2019-10-14 6:15 ` Daniel Palmer
2019-10-14 6:15 ` [PATCH 4/4] ARM: mstar: Add dts for msc313e based BreadBee board Daniel Palmer
2019-10-14 6:15 ` Daniel Palmer
2019-10-14 6:15 ` Daniel Palmer
2019-10-23 20:02 ` [PATCH 1/4] dt-bindings: arm: Initial MStar vendor prefixes and compatible strings Rob Herring
2019-10-23 20:02 ` Rob Herring
2019-10-23 22:43 ` Daniel Palmer
2019-10-23 22:43 ` Daniel Palmer
2019-10-23 23:45 ` Rob Herring
2019-10-23 23:45 ` Rob Herring
2019-10-24 1:47 ` Daniel Palmer
2019-10-24 1:47 ` Daniel Palmer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191014061617.10296-2-daniel@0x0f.com \
--to=daniel@0x0f.com \
--cc=Jonathan.Cameron@huawei.com \
--cc=afaerber@suse.de \
--cc=akpm@linux-foundation.org \
--cc=ard.biesheuvel@linaro.org \
--cc=armlinux@m.disordat.com \
--cc=arnd@arndb.de \
--cc=benjamin.gaignard@linaro.org \
--cc=bgolaszewski@baylibre.com \
--cc=daniel@thingy.jp \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=heiko@sntech.de \
--cc=icenowy@aosc.io \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=mark.rutland@arm.com \
--cc=mchehab+samsung@kernel.org \
--cc=mripard@kernel.org \
--cc=natechancellor@gmail.com \
--cc=ndesaulniers@google.com \
--cc=nhuck15@gmail.com \
--cc=nico@fluxnic.net \
--cc=paul.burton@mips.com \
--cc=paulmck@linux.ibm.com \
--cc=robh+dt@kernel.org \
--cc=rppt@linux.ibm.com \
--cc=shawnguo@kernel.org \
--cc=stefan@agner.ch \
--cc=yamada.masahiro@socionext.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.