qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 02/11] pxa2xx: QOM'ify I2C slave


From: Andreas Färber
Subject: Re: [Qemu-devel] [PATCH 02/11] pxa2xx: QOM'ify I2C slave
Date: Sun, 09 Feb 2014 13:24:33 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0

Am 09.02.2014 02:35, schrieb Peter Crosthwaite:
> On Sat, Feb 1, 2014 at 12:34 AM, Andreas Färber <address@hidden> wrote:
>> Replace usages of FROM_I2C_SLAVE() with QOM cast macro and rename parent
>> field to assure we caught all.
>>
>> Signed-off-by: Andreas Färber <address@hidden>
>> ---
>>  hw/arm/pxa2xx.c | 38 +++++++++++++++++++++++++-------------
>>  1 file changed, 25 insertions(+), 13 deletions(-)
>>
>> diff --git a/hw/arm/pxa2xx.c b/hw/arm/pxa2xx.c
>> index daf60e8..e5f1e10 100644
>> --- a/hw/arm/pxa2xx.c
>> +++ b/hw/arm/pxa2xx.c
>> @@ -1222,8 +1222,14 @@ static const TypeInfo pxa2xx_rtc_sysbus_info = {
>>  };
>>
>>  /* I2C Interface */
>> -typedef struct {
>> -    I2CSlave i2c;
>> +
>> +#define TYPE_PXA2XX_I2C_SLAVE "pxa2xx-i2c-slave"
>> +#define PXA2XX_I2C_SLAVE(obj) \
>> +    OBJECT_CHECK(PXA2xxI2CSlaveState, (obj), TYPE_PXA2XX_I2C_SLAVE)
>> +
>> +typedef struct PXA2xxI2CSlaveState {
>> +    I2CSlave parent_obj;
>> +
>>      PXA2xxI2CState *host;
>>  } PXA2xxI2CSlaveState;
>>
>> @@ -1268,7 +1274,7 @@ static void pxa2xx_i2c_update(PXA2xxI2CState *s)
>>  /* These are only stubs now.  */
>>  static void pxa2xx_i2c_event(I2CSlave *i2c, enum i2c_event event)
>>  {
>> -    PXA2xxI2CSlaveState *slave = FROM_I2C_SLAVE(PXA2xxI2CSlaveState, i2c);
>> +    PXA2xxI2CSlaveState *slave = PXA2XX_I2C_SLAVE(i2c);
>>      PXA2xxI2CState *s = slave->host;
>>
>>      switch (event) {
>> @@ -1292,10 +1298,12 @@ static void pxa2xx_i2c_event(I2CSlave *i2c, enum 
>> i2c_event event)
>>
>>  static int pxa2xx_i2c_rx(I2CSlave *i2c)
>>  {
>> -    PXA2xxI2CSlaveState *slave = FROM_I2C_SLAVE(PXA2xxI2CSlaveState, i2c);
>> +    PXA2xxI2CSlaveState *slave = PXA2XX_I2C_SLAVE(i2c);
>>      PXA2xxI2CState *s = slave->host;
>> -    if ((s->control & (1 << 14)) || !(s->control & (1 << 6)))
>> +
>> +    if ((s->control & (1 << 14)) || !(s->control & (1 << 6))) {
>>          return 0;
>> +    }
> 
> This will look funny when git-blamed. Should out-of-scope trivials be
> separate patch so anyone git-blame will at least see "Fix coding
> style" rather than then misleading "QOM'ify I2C"?.

We've had the policy of fixing Coding Style on lines touched or adjacent
to those touched, to gradually get rid of them - this one was within 3
lines of context. I'm sure PXA code will have many more Coding Style
faults, so placing 2 out of X in their own patch seems silly. Should I
rather drop them?

> With the multiple
> instances of this cleanup it should at least feature in the commit
> message.

You're right that I should've mentioned it. Same for replacing parent
field accesses. Fixed.

Regards,
Andreas

>>
>>      if (s->status & (1 << 0)) {                        /* RWM */
>>          s->status |= 1 << 6;                   /* set ITE */
>> @@ -1307,10 +1315,12 @@ static int pxa2xx_i2c_rx(I2CSlave *i2c)
>>
>>  static int pxa2xx_i2c_tx(I2CSlave *i2c, uint8_t data)
>>  {
>> -    PXA2xxI2CSlaveState *slave = FROM_I2C_SLAVE(PXA2xxI2CSlaveState, i2c);
>> +    PXA2xxI2CSlaveState *slave = PXA2XX_I2C_SLAVE(i2c);
>>      PXA2xxI2CState *s = slave->host;
>> -    if ((s->control & (1 << 14)) || !(s->control & (1 << 6)))
>> +
>> +    if ((s->control & (1 << 14)) || !(s->control & (1 << 6))) {
>>          return 1;
>> +    }
>>
>>      if (!(s->status & (1 << 0))) {             /* RWM */
>>          s->status |= 1 << 7;                   /* set IRF */
>> @@ -1325,6 +1335,7 @@ static uint64_t pxa2xx_i2c_read(void *opaque, hwaddr 
>> addr,
>>                                  unsigned size)
>>  {
>>      PXA2xxI2CState *s = (PXA2xxI2CState *) opaque;
>> +    I2CSlave *slave;
>>
>>      addr -= s->offset;
>>      switch (addr) {
>> @@ -1333,7 +1344,8 @@ static uint64_t pxa2xx_i2c_read(void *opaque, hwaddr 
>> addr,
>>      case ISR:
>>          return s->status | (i2c_bus_busy(s->bus) << 2);
>>      case ISAR:
>> -        return s->slave->i2c.address;
>> +        slave = I2C_SLAVE(s->slave);
>> +        return slave->address;
>>      case IDBR:
>>          return s->data;
>>      case IBMR:
>> @@ -1408,7 +1420,7 @@ static void pxa2xx_i2c_write(void *opaque, hwaddr addr,
>>          break;
>>
>>      case ISAR:
>> -        i2c_set_slave_address(&s->slave->i2c, value & 0x7f);
>> +        i2c_set_slave_address(I2C_SLAVE(s->slave), value & 0x7f);
>>          break;
>>
>>      case IDBR:
>> @@ -1432,7 +1444,7 @@ static const VMStateDescription 
>> vmstate_pxa2xx_i2c_slave = {
>>      .minimum_version_id = 1,
>>      .minimum_version_id_old = 1,
>>      .fields      = (VMStateField []) {
>> -        VMSTATE_I2C_SLAVE(i2c, PXA2xxI2CSlaveState),
>> +        VMSTATE_I2C_SLAVE(parent_obj, PXA2xxI2CSlaveState),
>>          VMSTATE_END_OF_LIST()
>>      }
>>  };
>> @@ -1470,7 +1482,7 @@ static void pxa2xx_i2c_slave_class_init(ObjectClass 
>> *klass, void *data)
>>  }
>>
>>  static const TypeInfo pxa2xx_i2c_slave_info = {
>> -    .name          = "pxa2xx-i2c-slave",
>> +    .name          = TYPE_PXA2XX_I2C_SLAVE,
>>      .parent        = TYPE_I2C_SLAVE,
>>      .instance_size = sizeof(PXA2xxI2CSlaveState),
>>      .class_init    = pxa2xx_i2c_slave_class_init,
>> @@ -1496,8 +1508,8 @@ PXA2xxI2CState *pxa2xx_i2c_init(hwaddr base,
>>      s = PXA2XX_I2C(i2c_dev);
>>      /* FIXME: Should the slave device really be on a separate bus?  */
>>      i2cbus = i2c_init_bus(dev, "dummy");
>> -    dev = i2c_create_slave(i2cbus, "pxa2xx-i2c-slave", 0);
>> -    s->slave = FROM_I2C_SLAVE(PXA2xxI2CSlaveState, I2C_SLAVE(dev));
>> +    dev = i2c_create_slave(i2cbus, TYPE_PXA2XX_I2C_SLAVE, 0);
>> +    s->slave = PXA2XX_I2C_SLAVE(dev);
>>      s->slave->host = s;
>>
>>      return s;
>> --
>> 1.8.4.5
>>
>>


-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg



reply via email to

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