qemu-arm
[Top][All Lists]
Advanced

[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);
>>          }
>>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]