[Skiboot] [PATCH 1/6] plat/qemu: move platform definition to astbmc
Cédric Le Goater
clg at fr.ibm.com
Thu Apr 7 02:30:07 AEST 2016
This patch a simple move of the code towards the AST BMC platform
directory to make future changes easier. The qemu and the AST BMC
(palmetto, etc) platforms have a lot in common.
Signed-off-by: Cédric Le Goater <clg at fr.ibm.com>
---
platforms/Makefile.inc | 3 +-
platforms/astbmc/Makefile.inc | 4 +-
platforms/astbmc/qemu.c | 148 ++++++++++++++++++++++++++++++++++++++++++
platforms/qemu/Makefile.inc | 6 --
platforms/qemu/qemu.c | 148 ------------------------------------------
5 files changed, 152 insertions(+), 157 deletions(-)
create mode 100644 platforms/astbmc/qemu.c
delete mode 100644 platforms/qemu/Makefile.inc
delete mode 100644 platforms/qemu/qemu.c
diff --git a/platforms/Makefile.inc b/platforms/Makefile.inc
index 90cd0f1c3762..12c82c8eaaa8 100644
--- a/platforms/Makefile.inc
+++ b/platforms/Makefile.inc
@@ -7,6 +7,5 @@ include $(SRC)/$(PLATDIR)/ibm-fsp/Makefile.inc
include $(SRC)/$(PLATDIR)/rhesus/Makefile.inc
include $(SRC)/$(PLATDIR)/astbmc/Makefile.inc
include $(SRC)/$(PLATDIR)/mambo/Makefile.inc
-include $(SRC)/$(PLATDIR)/qemu/Makefile.inc
-$(PLATFORMS): $(IBM_FSP) $(RHESUS) $(ASTBMC) $(MAMBO) $(QEMU)
+$(PLATFORMS): $(IBM_FSP) $(RHESUS) $(ASTBMC) $(MAMBO)
diff --git a/platforms/astbmc/Makefile.inc b/platforms/astbmc/Makefile.inc
index 46befc18aff4..064184d023e4 100644
--- a/platforms/astbmc/Makefile.inc
+++ b/platforms/astbmc/Makefile.inc
@@ -1,6 +1,8 @@
SUBDIRS += $(PLATDIR)/astbmc
-ASTBMC_OBJS = palmetto.o habanero.o firestone.o garrison.o barreleye.o pnor.o common.o slots.o
+ASTBMC_OBJS = palmetto.o habanero.o firestone.o garrison.o barreleye.o
+ASTBMC_OBJS += qemu.o
+ASTBMC_OBJS += pnor.o common.o slots.o
ASTBMC = $(PLATDIR)/astbmc/built-in.o
$(ASTBMC): $(ASTBMC_OBJS:%=$(PLATDIR)/astbmc/%)
diff --git a/platforms/astbmc/qemu.c b/platforms/astbmc/qemu.c
new file mode 100644
index 000000000000..66a6aa3970c2
--- /dev/null
+++ b/platforms/astbmc/qemu.c
@@ -0,0 +1,148 @@
+/* Copyright 2013-2014 IBM Corp.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ * implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include <skiboot.h>
+#include <device.h>
+#include <lpc.h>
+#include <console.h>
+#include <opal.h>
+#include <psi.h>
+
+static void qemu_init(void)
+{
+ /* Setup UART console for use by Linux via OPAL API */
+ if (!dummy_console_enabled())
+ uart_setup_opal_console();
+
+ /* Setup LPC RTC and use it as time source. Call after
+ * chiptod_init()
+ */
+ lpc_rtc_init();
+}
+
+static void qemu_dt_fixup_uart(struct dt_node *lpc)
+{
+ /*
+ * The official OF ISA/LPC binding is a bit odd, it prefixes
+ * the unit address for IO with "i". It uses 2 cells, the first
+ * one indicating IO vs. Memory space (along with bits to
+ * represent aliasing).
+ *
+ * We pickup that binding and add to it "2" as a indication
+ * of FW space.
+ *
+ * TODO: Probe the UART instead if the LPC bus allows for it
+ */
+ struct dt_node *uart;
+ char namebuf[32];
+#define UART_IO_BASE 0x3f8
+#define UART_IO_COUNT 8
+#define UART_LPC_IRQ 4
+
+ snprintf(namebuf, sizeof(namebuf), "serial at i%x", UART_IO_BASE);
+ uart = dt_new(lpc, namebuf);
+
+ dt_add_property_cells(uart, "reg",
+ 1, /* IO space */
+ UART_IO_BASE, UART_IO_COUNT);
+ dt_add_property_strings(uart, "compatible",
+ "ns16550",
+ "pnpPNP,501");
+ dt_add_property_cells(uart, "clock-frequency", 1843200);
+ dt_add_property_cells(uart, "current-speed", 115200);
+ dt_add_property_cells(uart, "interrupts", UART_LPC_IRQ);
+ dt_add_property_cells(uart, "interrupt-parent", lpc->phandle);
+
+ /*
+ * This is needed by Linux for some obscure reasons,
+ * we'll eventually need to sanitize it but in the meantime
+ * let's make sure it's there
+ */
+ dt_add_property_strings(uart, "device_type", "serial");
+}
+
+/*
+ * This adds the legacy RTC device to the device-tree
+ * for Linux to use
+ */
+static void qemu_dt_fixup_rtc(struct dt_node *lpc)
+{
+ struct dt_node *rtc;
+ char namebuf[32];
+
+ /*
+ * Follows the structure expected by the kernel file
+ * arch/powerpc/sysdev/rtc_cmos_setup.c
+ */
+ snprintf(namebuf, sizeof(namebuf), "rtc at i%x", 0x70);
+ rtc = dt_new(lpc, namebuf);
+ dt_add_property_string(rtc, "compatible", "pnpPNP,b00");
+ dt_add_property_cells(rtc, "reg",
+ 1, /* IO space */
+ 0x70, 2);
+}
+
+static void qemu_dt_fixup(void)
+{
+ struct dt_node *n, *primary_lpc = NULL;
+
+ /* Find the primary LPC bus */
+ dt_for_each_compatible(dt_root, n, "ibm,power8-lpc") {
+ if (!primary_lpc || dt_has_node_property(n, "primary", NULL))
+ primary_lpc = n;
+ if (dt_has_node_property(n, "#address-cells", NULL))
+ break;
+ }
+
+ if (!primary_lpc)
+ return;
+
+ qemu_dt_fixup_rtc(primary_lpc);
+ qemu_dt_fixup_uart(primary_lpc);
+}
+
+static void qemu_ext_irq_serirq_cpld(unsigned int chip_id)
+{
+ lpc_all_interrupts(chip_id);
+}
+
+static bool qemu_probe(void)
+{
+ if (!dt_node_is_compatible(dt_root, "qemu,powernv"))
+ return false;
+
+ /* Add missing bits of device-tree such as the UART */
+ qemu_dt_fixup();
+
+ psi_set_external_irq_policy(EXTERNAL_IRQ_POLICY_SKIBOOT);
+
+ /*
+ * Setup UART and use it as console. For now, we
+ * don't expose the interrupt as we know it's not
+ * working properly yet
+ */
+ uart_init(true);
+
+ return true;
+}
+
+DECLARE_PLATFORM(qemu) = {
+ .name = "Qemu",
+ .probe = qemu_probe,
+ .init = qemu_init,
+ .external_irq = qemu_ext_irq_serirq_cpld,
+};
diff --git a/platforms/qemu/Makefile.inc b/platforms/qemu/Makefile.inc
deleted file mode 100644
index 11a44dbd28f5..000000000000
--- a/platforms/qemu/Makefile.inc
+++ /dev/null
@@ -1,6 +0,0 @@
-SUBDIRS += $(PLATDIR)/qemu
-
-QEMU_OBJS = qemu.o
-QEMU = $(PLATDIR)/qemu/built-in.o
-$(QEMU): $(QEMU_OBJS:%=$(PLATDIR)/qemu/%)
-
diff --git a/platforms/qemu/qemu.c b/platforms/qemu/qemu.c
deleted file mode 100644
index 66a6aa3970c2..000000000000
--- a/platforms/qemu/qemu.c
+++ /dev/null
@@ -1,148 +0,0 @@
-/* Copyright 2013-2014 IBM Corp.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- * implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#include <skiboot.h>
-#include <device.h>
-#include <lpc.h>
-#include <console.h>
-#include <opal.h>
-#include <psi.h>
-
-static void qemu_init(void)
-{
- /* Setup UART console for use by Linux via OPAL API */
- if (!dummy_console_enabled())
- uart_setup_opal_console();
-
- /* Setup LPC RTC and use it as time source. Call after
- * chiptod_init()
- */
- lpc_rtc_init();
-}
-
-static void qemu_dt_fixup_uart(struct dt_node *lpc)
-{
- /*
- * The official OF ISA/LPC binding is a bit odd, it prefixes
- * the unit address for IO with "i". It uses 2 cells, the first
- * one indicating IO vs. Memory space (along with bits to
- * represent aliasing).
- *
- * We pickup that binding and add to it "2" as a indication
- * of FW space.
- *
- * TODO: Probe the UART instead if the LPC bus allows for it
- */
- struct dt_node *uart;
- char namebuf[32];
-#define UART_IO_BASE 0x3f8
-#define UART_IO_COUNT 8
-#define UART_LPC_IRQ 4
-
- snprintf(namebuf, sizeof(namebuf), "serial at i%x", UART_IO_BASE);
- uart = dt_new(lpc, namebuf);
-
- dt_add_property_cells(uart, "reg",
- 1, /* IO space */
- UART_IO_BASE, UART_IO_COUNT);
- dt_add_property_strings(uart, "compatible",
- "ns16550",
- "pnpPNP,501");
- dt_add_property_cells(uart, "clock-frequency", 1843200);
- dt_add_property_cells(uart, "current-speed", 115200);
- dt_add_property_cells(uart, "interrupts", UART_LPC_IRQ);
- dt_add_property_cells(uart, "interrupt-parent", lpc->phandle);
-
- /*
- * This is needed by Linux for some obscure reasons,
- * we'll eventually need to sanitize it but in the meantime
- * let's make sure it's there
- */
- dt_add_property_strings(uart, "device_type", "serial");
-}
-
-/*
- * This adds the legacy RTC device to the device-tree
- * for Linux to use
- */
-static void qemu_dt_fixup_rtc(struct dt_node *lpc)
-{
- struct dt_node *rtc;
- char namebuf[32];
-
- /*
- * Follows the structure expected by the kernel file
- * arch/powerpc/sysdev/rtc_cmos_setup.c
- */
- snprintf(namebuf, sizeof(namebuf), "rtc at i%x", 0x70);
- rtc = dt_new(lpc, namebuf);
- dt_add_property_string(rtc, "compatible", "pnpPNP,b00");
- dt_add_property_cells(rtc, "reg",
- 1, /* IO space */
- 0x70, 2);
-}
-
-static void qemu_dt_fixup(void)
-{
- struct dt_node *n, *primary_lpc = NULL;
-
- /* Find the primary LPC bus */
- dt_for_each_compatible(dt_root, n, "ibm,power8-lpc") {
- if (!primary_lpc || dt_has_node_property(n, "primary", NULL))
- primary_lpc = n;
- if (dt_has_node_property(n, "#address-cells", NULL))
- break;
- }
-
- if (!primary_lpc)
- return;
-
- qemu_dt_fixup_rtc(primary_lpc);
- qemu_dt_fixup_uart(primary_lpc);
-}
-
-static void qemu_ext_irq_serirq_cpld(unsigned int chip_id)
-{
- lpc_all_interrupts(chip_id);
-}
-
-static bool qemu_probe(void)
-{
- if (!dt_node_is_compatible(dt_root, "qemu,powernv"))
- return false;
-
- /* Add missing bits of device-tree such as the UART */
- qemu_dt_fixup();
-
- psi_set_external_irq_policy(EXTERNAL_IRQ_POLICY_SKIBOOT);
-
- /*
- * Setup UART and use it as console. For now, we
- * don't expose the interrupt as we know it's not
- * working properly yet
- */
- uart_init(true);
-
- return true;
-}
-
-DECLARE_PLATFORM(qemu) = {
- .name = "Qemu",
- .probe = qemu_probe,
- .init = qemu_init,
- .external_irq = qemu_ext_irq_serirq_cpld,
-};
--
2.1.4
More information about the Skiboot
mailing list