[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v9 11/13] xilinx_zynq: Added SPI controllers + flash
From: |
Peter Crosthwaite |
Subject: |
[Qemu-devel] [PATCH v9 11/13] xilinx_zynq: Added SPI controllers + flashes |
Date: |
Mon, 8 Oct 2012 14:18:25 +1000 |
From: Peter A. G. Crosthwaite <address@hidden>
Added the two SPI controllers to the zynq machine model. Attached two SPI flash
devices to each controller.
Signed-off-by: Peter A. G. Crosthwaite <address@hidden>
Acked-by: Peter Maydell <address@hidden>
---
changed from v7:
Increased number of spi flashes pre controller to 4
changed from v6:
removed (char*) cast to qdev_prop_set_string argument
hw/xilinx_zynq.c | 34 ++++++++++++++++++++++++++++++++++
1 files changed, 34 insertions(+), 0 deletions(-)
diff --git a/hw/xilinx_zynq.c b/hw/xilinx_zynq.c
index 7e6c273..fd46ba2 100644
--- a/hw/xilinx_zynq.c
+++ b/hw/xilinx_zynq.c
@@ -24,6 +24,9 @@
#include "flash.h"
#include "blockdev.h"
#include "loader.h"
+#include "ssi.h"
+
+#define NUM_SPI_FLASHES 4
#define FLASH_SIZE (64 * 1024 * 1024)
#define FLASH_SECTOR_SIZE (128 * 1024)
@@ -46,6 +49,34 @@ static void gem_init(NICInfo *nd, uint32_t base, qemu_irq
irq)
sysbus_connect_irq(s, 0, irq);
}
+static inline void zynq_init_spi_flashes(uint32_t base_addr, qemu_irq irq)
+{
+ DeviceState *dev;
+ SysBusDevice *busdev;
+ SSIBus *spi;
+ int i;
+
+ dev = qdev_create(NULL, "xilinx,spips");
+ qdev_init_nofail(dev);
+ busdev = sysbus_from_qdev(dev);
+ sysbus_mmio_map(busdev, 0, base_addr);
+ sysbus_connect_irq(busdev, 0, irq);
+
+ spi = (SSIBus *)qdev_get_child_bus(dev, "spi");
+
+ for (i = 0; i < NUM_SPI_FLASHES; ++i) {
+ qemu_irq cs_line;
+
+ dev = ssi_create_slave_no_init(spi, "m25p80");
+ qdev_prop_set_string(dev, "partname", "n25q128");
+ qdev_init_nofail(dev);
+
+ cs_line = qdev_get_gpio_in(dev, 0);
+ sysbus_connect_irq(busdev, i+1, cs_line);
+ }
+
+}
+
static void zynq_init(ram_addr_t ram_size, const char *boot_device,
const char *kernel_filename, const char
*kernel_cmdline,
const char *initrd_filename, const char *cpu_model)
@@ -113,6 +144,9 @@ static void zynq_init(ram_addr_t ram_size, const char
*boot_device,
pic[n] = qdev_get_gpio_in(dev, n);
}
+ zynq_init_spi_flashes(0xE0006000, pic[58-IRQ_OFFSET]);
+ zynq_init_spi_flashes(0xE0007000, pic[81-IRQ_OFFSET]);
+
sysbus_create_simple("cadence_uart", 0xE0000000, pic[59-IRQ_OFFSET]);
sysbus_create_simple("cadence_uart", 0xE0001000, pic[82-IRQ_OFFSET]);
--
1.7.0.4
- [Qemu-devel] [PATCH v9 03/13] ssi: Added create_slave_no_init(), (continued)
- [Qemu-devel] [PATCH v9 03/13] ssi: Added create_slave_no_init(), Peter Crosthwaite, 2012/10/08
- [Qemu-devel] [PATCH v9 04/13] qdev: allow multiple qdev_init_gpio_in() calls, Peter Crosthwaite, 2012/10/08
- [Qemu-devel] [PATCH v9 05/13] stellaris: Removed SSI mux, Peter Crosthwaite, 2012/10/08
- [Qemu-devel] [PATCH v9 06/13] hw: Added generic FIFO API., Peter Crosthwaite, 2012/10/08
- [Qemu-devel] [PATCH v9 07/13] m25p80: Initial implementation of SPI flash device, Peter Crosthwaite, 2012/10/08
- [Qemu-devel] [PATCH v9 10/13] xilinx_spips: Xilinx Zynq SPI cntrlr device model, Peter Crosthwaite, 2012/10/08
- [Qemu-devel] [PATCH v9 12/13] MAINTAINERS: Added maintainerships for SSI, Peter Crosthwaite, 2012/10/08
- [Qemu-devel] [PATCH v9 13/13] ssi: Add slave autoconnect helper, Peter Crosthwaite, 2012/10/08
- [Qemu-devel] [PATCH v9 08/13] xilinx_spi: Initial impl. of Xilinx SPI controller, Peter Crosthwaite, 2012/10/08
- [Qemu-devel] [PATCH v9 09/13] petalogix-ml605: added SPI controller with n25q128, Peter Crosthwaite, 2012/10/08
- [Qemu-devel] [PATCH v9 11/13] xilinx_zynq: Added SPI controllers + flashes,
Peter Crosthwaite <=