[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 23/23] ast2400: create SPI flash slaves
From: |
Peter Maydell |
Subject: |
[Qemu-devel] [PULL 23/23] ast2400: create SPI flash slaves |
Date: |
Mon, 4 Jul 2016 13:22:54 +0100 |
From: Cédric Le Goater <address@hidden>
A set of SPI flash slaves is attached under the flash controllers of
the palmetto platform. "n25q256a" flash modules are used for the BMC
and "mx25l25635e" for the host. These types are common in the
OpenPower ecosystem.
Signed-off-by: Cédric Le Goater <address@hidden>
Message-id: address@hidden
Reviewed-by: Peter Maydell <address@hidden>
Signed-off-by: Peter Maydell <address@hidden>
---
hw/arm/palmetto-bmc.c | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/hw/arm/palmetto-bmc.c b/hw/arm/palmetto-bmc.c
index b8eed21..54e29a8 100644
--- a/hw/arm/palmetto-bmc.c
+++ b/hw/arm/palmetto-bmc.c
@@ -18,6 +18,8 @@
#include "hw/arm/ast2400.h"
#include "hw/boards.h"
#include "qemu/log.h"
+#include "sysemu/block-backend.h"
+#include "sysemu/blockdev.h"
static struct arm_boot_info palmetto_bmc_binfo = {
.loader_start = AST2400_SDRAM_BASE,
@@ -30,6 +32,32 @@ typedef struct PalmettoBMCState {
MemoryRegion ram;
} PalmettoBMCState;
+static void palmetto_bmc_init_flashes(AspeedSMCState *s, const char *flashtype,
+ Error **errp)
+{
+ int i ;
+
+ for (i = 0; i < s->num_cs; ++i) {
+ AspeedSMCFlash *fl = &s->flashes[i];
+ DriveInfo *dinfo = drive_get_next(IF_MTD);
+ qemu_irq cs_line;
+
+ /*
+ * FIXME: check that we are not using a flash module exceeding
+ * the controller segment size
+ */
+ fl->flash = ssi_create_slave_no_init(s->spi, flashtype);
+ if (dinfo) {
+ qdev_prop_set_drive(fl->flash, "drive", blk_by_legacy_dinfo(dinfo),
+ errp);
+ }
+ qdev_init_nofail(fl->flash);
+
+ cs_line = qdev_get_gpio_in_named(fl->flash, SSI_GPIO_CS, 0);
+ sysbus_connect_irq(SYS_BUS_DEVICE(s), i + 1, cs_line);
+ }
+}
+
static void palmetto_bmc_init(MachineState *machine)
{
PalmettoBMCState *bmc;
@@ -49,6 +77,9 @@ static void palmetto_bmc_init(MachineState *machine)
object_property_set_bool(OBJECT(&bmc->soc), true, "realized",
&error_abort);
+ palmetto_bmc_init_flashes(&bmc->soc.smc, "n25q256a", &error_abort);
+ palmetto_bmc_init_flashes(&bmc->soc.spi, "mx25l25635e", &error_abort);
+
palmetto_bmc_binfo.kernel_filename = machine->kernel_filename;
palmetto_bmc_binfo.initrd_filename = machine->initrd_filename;
palmetto_bmc_binfo.kernel_cmdline = machine->kernel_cmdline;
--
1.9.1
- [Qemu-devel] [PULL 00/23] target-arm queue, Peter Maydell, 2016/07/04
- [Qemu-devel] [PULL 16/23] ssi: change ssi_slave_init to be a realize ops, Peter Maydell, 2016/07/04
- [Qemu-devel] [PULL 08/23] bitops: Add MAKE_64BIT_MASK macro, Peter Maydell, 2016/07/04
- [Qemu-devel] [PULL 13/23] register: Add block initialise helper, Peter Maydell, 2016/07/04
- [Qemu-devel] [PULL 11/23] register: Define REG and FIELD macros, Peter Maydell, 2016/07/04
- [Qemu-devel] [PULL 10/23] register: Add Memory API glue, Peter Maydell, 2016/07/04
- [Qemu-devel] [PULL 23/23] ast2400: create SPI flash slaves,
Peter Maydell <=
- [Qemu-devel] [PULL 06/23] armv7m_nvic: Use qemu_get_cpu(0) instead of current_cpu, Peter Maydell, 2016/07/04
- [Qemu-devel] [PULL 07/23] hw/arm/virt: mark the PCIe host controller as DMA coherent in the DT, Peter Maydell, 2016/07/04
- [Qemu-devel] [PULL 01/23] linux-user: Make semihosting heap/stack fields abi_ulongs, Peter Maydell, 2016/07/04
- [Qemu-devel] [PULL 21/23] ast2400: add SMC controllers (FMC and SPI), Peter Maydell, 2016/07/04
- [Qemu-devel] [PULL 17/23] m25p80: do not put iovec on the stack, Peter Maydell, 2016/07/04
- [Qemu-devel] [PULL 05/23] memory: Assert that memory_region_init_rom_device() ops aren't NULL, Peter Maydell, 2016/07/04
- [Qemu-devel] [PULL 19/23] m25p80: change cur_addr to 32 bit integer, Peter Maydell, 2016/07/04
- [Qemu-devel] [PULL 12/23] register: QOMify, Peter Maydell, 2016/07/04
- [Qemu-devel] [PULL 03/23] memory: Provide memory_region_init_rom(), Peter Maydell, 2016/07/04
- [Qemu-devel] [PULL 02/23] target-arm/arm-semi.c: Fix SYS_HEAPINFO for 64-bit guests, Peter Maydell, 2016/07/04