[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-arm] [PATCH v2 1/5] m25p80: qdev-ify drive property
From: |
Cédric Le Goater |
Subject: |
Re: [Qemu-arm] [PATCH v2 1/5] m25p80: qdev-ify drive property |
Date: |
Fri, 17 Jun 2016 15:07:54 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Icedove/45.1.0 |
On 06/17/2016 02:32 PM, Paolo Bonzini wrote:
>
>
> On 17/06/2016 14:15, Cédric Le Goater wrote:
>> From: Paolo Bonzini <address@hidden>
>>
>> This allows specifying the property via -drive if=none and creating
>> the flash device with -device.
>>
>> Signed-off-by: Paolo Bonzini <address@hidden>
>
> You need to add your Signed-off-by line too.
Yes. Sorry about that :/
Signed-off-by: Cédric Le Goater <address@hidden>
I will next round.
> You should have used "git
> am -s" for that, but in this case just replace to my mail with the
> signoff and the maintainer will collect it.
>
> Thanks for picking up the patch. :)
That was needed and it should help us for the next item we want
to work on. We need more control on the flash storage as we
should be mapping it in memory.
Thanks,
C.
> Paolo
>
>> ---
>> hw/arm/xilinx_zynq.c | 8 +++++++-
>> hw/arm/xlnx-ep108.c | 9 ++++++++-
>> hw/block/m25p80.c | 10 ++--------
>> hw/microblaze/petalogix_ml605_mmu.c | 9 ++++++++-
>> 4 files changed, 25 insertions(+), 11 deletions(-)
>>
>> diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c
>> index aefebcfa6d8f..b0cabe2e4a67 100644
>> --- a/hw/arm/xilinx_zynq.c
>> +++ b/hw/arm/xilinx_zynq.c
>> @@ -138,7 +138,13 @@ static inline void zynq_init_spi_flashes(uint32_t
>> base_addr, qemu_irq irq,
>> spi = (SSIBus *)qdev_get_child_bus(dev, bus_name);
>>
>> for (j = 0; j < num_ss; ++j) {
>> - flash_dev = ssi_create_slave(spi, "n25q128");
>> + DriveInfo *dinfo = drive_get_next(IF_MTD);
>> + flash_dev = ssi_create_slave_no_init(spi, "n25q128");
>> + if (dinfo) {
>> + qdev_prop_set_drive(flash_dev, "drive",
>> + blk_by_legacy_dinfo(dinfo),
>> &error_fatal);
>> + }
>> + qdev_init_nofail(flash_dev);
>>
>> cs_line = qdev_get_gpio_in_named(flash_dev, SSI_GPIO_CS, 0);
>> sysbus_connect_irq(busdev, i * num_ss + j + 1, cs_line);
>> diff --git a/hw/arm/xlnx-ep108.c b/hw/arm/xlnx-ep108.c
>> index 34b464171266..4ec590a25db5 100644
>> --- a/hw/arm/xlnx-ep108.c
>> +++ b/hw/arm/xlnx-ep108.c
>> @@ -88,12 +88,19 @@ static void xlnx_ep108_init(MachineState *machine)
>> SSIBus *spi_bus;
>> DeviceState *flash_dev;
>> qemu_irq cs_line;
>> + DriveInfo *dinfo = drive_get_next(IF_MTD);
>> gchar *bus_name = g_strdup_printf("spi%d", i);
>>
>> spi_bus = (SSIBus *)qdev_get_child_bus(DEVICE(&s->soc), bus_name);
>> g_free(bus_name);
>>
>> - flash_dev = ssi_create_slave(spi_bus, "sst25wf080");
>> + flash_dev = ssi_create_slave_no_init(spi_bus, "sst25wf080");
>> + if (dinfo) {
>> + qdev_prop_set_drive(flash_dev, "drive",
>> blk_by_legacy_dinfo(dinfo),
>> + &error_fatal);
>> + }
>> + qdev_init_nofail(flash_dev);
>> +
>> cs_line = qdev_get_gpio_in_named(flash_dev, SSI_GPIO_CS, 0);
>>
>> sysbus_connect_irq(SYS_BUS_DEVICE(&s->soc.spi[i]), 1, cs_line);
>> diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c
>> index e6f6e23fb71d..7d1c34a1a2d1 100644
>> --- a/hw/block/m25p80.c
>> +++ b/hw/block/m25p80.c
>> @@ -881,7 +881,6 @@ static uint32_t m25p80_transfer8(SSISlave *ss, uint32_t
>> tx)
>>
>> static void m25p80_realize(SSISlave *ss, Error **errp)
>> {
>> - DriveInfo *dinfo;
>> Flash *s = M25P80(ss);
>> M25P80Class *mc = M25P80_GET_CLASS(s);
>>
>> @@ -890,14 +889,8 @@ static void m25p80_realize(SSISlave *ss, Error **errp)
>> s->size = s->pi->sector_size * s->pi->n_sectors;
>> s->dirty_page = -1;
>>
>> - /* FIXME use a qdev drive property instead of drive_get_next() */
>> - dinfo = drive_get_next(IF_MTD);
>> -
>> - if (dinfo) {
>> + if (s->blk) {
>> DB_PRINT_L(0, "Binding to IF_MTD drive\n");
>> - s->blk = blk_by_legacy_dinfo(dinfo);
>> - blk_attach_dev_nofail(s->blk, s);
>> -
>> s->storage = blk_blockalign(s->blk, s->size);
>>
>> if (blk_pread(s->blk, 0, s->storage, s->size) != s->size) {
>> @@ -925,6 +918,7 @@ static void m25p80_pre_save(void *opaque)
>>
>> static Property m25p80_properties[] = {
>> DEFINE_PROP_UINT32("nonvolatile-cfg", Flash, nonvolatile_cfg, 0x8FFF),
>> + DEFINE_PROP_DRIVE("drive", Flash, blk),
>> DEFINE_PROP_END_OF_LIST(),
>> };
>>
>> diff --git a/hw/microblaze/petalogix_ml605_mmu.c
>> b/hw/microblaze/petalogix_ml605_mmu.c
>> index 07527b677b37..4968bdbb2821 100644
>> --- a/hw/microblaze/petalogix_ml605_mmu.c
>> +++ b/hw/microblaze/petalogix_ml605_mmu.c
>> @@ -191,9 +191,16 @@ petalogix_ml605_init(MachineState *machine)
>> spi = (SSIBus *)qdev_get_child_bus(dev, "spi");
>>
>> for (i = 0; i < NUM_SPI_FLASHES; i++) {
>> + DriveInfo *dinfo = drive_get_next(IF_MTD);
>> qemu_irq cs_line;
>>
>> - dev = ssi_create_slave(spi, "n25q128");
>> + dev = ssi_create_slave_no_init(spi, "n25q128");
>> + if (dinfo) {
>> + qdev_prop_set_drive(dev, "drive",
>> blk_by_legacy_dinfo(dinfo),
>> + &error_fatal);
>> + }
>> + qdev_init_nofail(dev);
>> +
>> cs_line = qdev_get_gpio_in_named(dev, SSI_GPIO_CS, 0);
>> sysbus_connect_irq(busdev, i+1, cs_line);
>> }
>>
- [Qemu-arm] [PATCH v2 0/5] ast2400: SMC controllers, Cédric Le Goater, 2016/06/17
- [Qemu-arm] [PATCH v2 1/5] m25p80: qdev-ify drive property, Cédric Le Goater, 2016/06/17
- [Qemu-arm] [PATCH v2 2/5] ast2400: add SMC controllers (FMC and SPI), Cédric Le Goater, 2016/06/17
- [Qemu-arm] [PATCH v2 3/5] ast2400: add SPI flash slave object, Cédric Le Goater, 2016/06/17
- [Qemu-arm] [PATCH v2 4/5] ast2400: create SPI flash slaves, Cédric Le Goater, 2016/06/17
- [Qemu-arm] [PATCH v2 5/5] tests: add a m25p80 test, Cédric Le Goater, 2016/06/17