qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* Trying to write data to i2c bus
@ 2024-02-19 13:49 Paz Offer
  2024-02-19 16:32 ` Corey Minyard
  0 siblings, 1 reply; 6+ messages in thread
From: Paz Offer @ 2024-02-19 13:49 UTC (permalink / raw)
  To: qemu-devel@nongnu.org

[-- Attachment #1: Type: text/plain, Size: 1604 bytes --]

Hi,

I am new to QEMU development, so please excuse if I my direction here is wrong:

I am trying to implement an i2c slave device.
My device should be able to read/write data from its i2c bus.

I defined my device-state object like so:

    typedef struct {
          I2CSlave i2c;
          void     *my_data;

    }   MyI2CSlave;


In my implementation occasionally I may have to send data on the bus, due to an internal event on my side.
For this I implemented the following code:

    //  Get bus pointer:
    BusState *parentBus = qdev_get_parent_bus(DEVICE(&obj->i2c));
    I2CBus   *i2cBus    = I2C_BUS(parentBus);
      
    //  Try to send data on bus:  
    if (i2c_start_send(i2cBus, address)) {
        //  error?
        return;
    }
    for (int i = 0; i < size; i++) {
        i2c_send(i2cBus, data[i]);
    }
    i2c_end_transfer(i2cBus);

      
The problem is that 'i2c_start_send()' always fails here:

    if (QLIST_EMPTY(&bus->current_devs)) {
        return 1;
    }

The member 'i2cBus->current_devs.lh_first' is always null.

I will add that in my QEMU execution I specify the bus 'aspeed.i2c.bus.0' to be used with my device.
In my 'realize' method I can see that a bus is connected to my device, as 'qdev_get_parent_bus()' does return a valid pointer.

My question:
1. Am I missing some initialization for the bus?
2. Is there other way to send data on the i2c bus, assuming it can happen anytime due to an internal event on my device side?

Thanks for any tip,
Pazo  

[-- Attachment #2: Type: text/html, Size: 10976 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2024-02-25  8:36 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-19 13:49 Trying to write data to i2c bus Paz Offer
2024-02-19 16:32 ` Corey Minyard
2024-02-19 16:53   ` Paz Offer
2024-02-19 17:14     ` Corey Minyard
2024-02-19 18:26       ` Cédric Le Goater
2024-02-25  8:29       ` Paz Offer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).