|
From: | Jean-Christophe DUBOIS |
Subject: | Re: [Qemu-devel] [PATCH v3 12/12] i.MX: Add sabrelite i.MX6 emulation. |
Date: | Thu, 10 Mar 2016 20:24:10 +0100 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.6.0 |
Le 10/03/2016 11:38, Peter Maydell a écrit :
On 2 March 2016 at 05:27, Jean-Christophe Dubois <address@hidden> wrote:The sabrelite supports one SPI FLASH memory on SPI1 Signed-off-by: Jean-Christophe Dubois <address@hidden> --- + + { + /* Add the sst25vf016b NOR FLASH memory to first SPI */ + Object *spi_dev; + + spi_dev = object_resolve_path_component(OBJECT(&s->soc), "spi1"); + if (spi_dev) { + SSIBus *spi_bus; + + spi_bus = (SSIBus *)qdev_get_child_bus(DEVICE(spi_dev), "spi");This looks odd. You should just be able to do spi_bus = (SSIBus *)qdev_get_child_bus(DEVICE(&s->soc), "spi1"); without using object_resolve_path_component() to try to find an SPI device object, because your SoC device should have alias properties which provide access to its SPI subcomponents' SPI buses. See hw/arm/xlnx-ep108.c for an example of the board code for this and hw/arm/xlnx-zynqmp.c for the SoC code which calls object_property_add_alias() to set up the aliases.
I certainly could do as you proposed.The problem is that I also need the spi_dev device for the sysbus_connect_irq() call below.
My spi_dev is referenced as "spi1" in the i.MX6 doc and I added a 'spi1" property for it in the i.MX6 soc.
Once I have the spi_dev device it is trivial to retrieve the spi_bus attached to it.
So, yes this is not in line with what is done in xlnx-zynqmp.c but the need is a bit different.
JC
+ if (spi_bus) { + DeviceState *flash_dev; + + flash_dev = ssi_create_slave(spi_bus, "sst25vf016b"); + if (flash_dev) { + qemu_irq cs_line = qdev_get_gpio_in_named(flash_dev, + SSI_GPIO_CS, 0); + sysbus_connect_irq(SYS_BUS_DEVICE(spi_dev), 1, cs_line); + } + } + } + }thanks -- PMM
[Prev in Thread] | Current Thread | [Next in Thread] |