GPIO state in qemu

Cédric Le Goater clg at kaod.org
Tue Sep 10 03:02:29 AEST 2019


On 09/09/2019 18:20, James Feist wrote:
> On 9/6/19 11:05 AM, Joel Stanley wrote:
>> At the osfc hackathon today James and I were talking about Qemu's new support for modelling GPIOs. Here's some documentation on how it can be used.
>>
>> To set a pin's state in the monitor:
>>
>> qom-set gpio gpioA0 true
>>
>> To do the equivalent in code:
>>
>> object_property_set_bool(OBJECT(&s->gpio), true, "gpioA0", &error_abort);
> 
> I'm trying to use object_property_set_bool in hw/arm/aspeed.c in an i2c_init block and I'm noticing by the time uboot is reached that the registers are reset back to the default. 

These routines are called before the machine and devices are reseted.

> If I use qom-set it seems to work correctly. 

The machine has been reseted.

> Where is the correct place to put the object_property_set_bool so that it doesn't get reset by the time it's ready to be read? Does AspeedBoardConfig need a gpio_init as well as an i2c_init?
 
we would need to change the default reset value in the reset handler
of the GPIO device model : aspeed_gpio_reset(). We don't have a way 
to set default values yet, all 0s for now.

Rashmica,

Would it be complex to add a set of default values with which we 
could memset the ->sets array in the reset handler() like we do 
for SCU ? 

Having a different set of default values per machine would require 
a second set of properties under AspeedGPIOState and some slight 
rework of aspeed_gpio_get/set_pin.

Didn't you have a patch for reset tolerant values some time ago ? 
 
Thanks,

C.


More information about the openbmc mailing list