Ok, thank you very much for your help then. I'm gonna spend some time on
this.

If qemu-dev / you are interested in what I've done later, I'll send a new
mail.



2014-02-18 14:05 GMT+01:00 Paolo Bonzini <pbonz...@redhat.com>:

> Il 18/02/2014 13:48, Alex David ha scritto:
>
>>
>> 2014-02-17 17:11 GMT+01:00 Paolo Bonzini <pbonz...@redhat.com
>> <mailto:pbonz...@redhat.com>>:
>>
>>
>>     Il 17/02/2014 16:33, Alex David ha scritto:
>>
>>             If you need more than one bus, you need a new device
>>         exposing the
>>             I2C bus, besides the new sensor devices.  USB-I2C could be
>>         one such
>>             device.
>>
>>         So let me see if I understood well. USB-I2C (host QEMU device)
>>         seems a
>>         good idea, I could normally do : qemu-system-i386 -device
>>         usb-I2c,chardev=foo -device usb-i2c,chardev=bar -chardev
>>         socket,path=/tmp/test0,server,__nowait,id=foo -chardev
>>         socket,path=/tmp/test1,server,__nowait,id=bar.
>>
>>
>>
>>     Almost. For QOM:
>>
>>         -device usb-i2c,id=usb-i2c-0
>>         -device i2c-my-sensor,address=0x48,__bus=usb-i2c-0.0
>>
>>     For chardev:
>>
>>         -device usb-i2c,id=usb-i2c-0
>>         -chardev socket,path=/tmp/test0,server,__nowait,id=chr-foo-0
>>         -device
>>     i2c-my-sensor,address=0x48,__bus=usb-i2c-0.0,chardev=chr-__foo-0
>>
>>
>>     Repeat for the other buses, replacing -0 with -1 and -2.
>>
>>
>>         I need a "USB-I2C guest kernel driver" that would register a bus
>>         (i2c-1
>>         for chardev foo, i2c-2 for chardev bar etc...), I guess ?
>>
>>
>>     It exists already, drivers/i2c/busses/i2c-tiny-usb.c.
>>
>>
>> I'm now trying to write this new USB-I2C device, I look through some of
>> the code (dev-serial, dev-...), I used dev-serial code and removed the
>> code that wanted to declare a chardev (I don't need one to create my
>> bus, right ?).
>>
>> Now I'm wondering, how will be i2c-tiny-usb launched and declare a new
>> /dev/i2c-N, with my device. I found :
>>
>> static struct usb_device_id i2c_tiny_usb_table [] = {
>>     { USB_DEVICE(0x0403, 0xc631) },   /* FTDI */
>>     { USB_DEVICE(0x1c40, 0x0534) },   /* EZPrototypes */
>>     { }                               /* Terminating entry */
>> };
>>
>> So I figured my USB-I2C should register using these numbers ?
>>
>> static const USBDesc desc_i2c = {
>>     .id = {
>>         .idVendor          = 0x0403,
>>         .idProduct         = 0xc631,
>>         .bcdDevice         = 0x0400,
>>         .iManufacturer     = STR_MANUFACTURER,
>>         .iProduct          = STR_PRODUCT_I2C,
>>         .iSerialNumber     = STR_SERIALNUMBER,
>>     },
>>     .full = &desc_device,
>>     .str  = desc_strings,
>> };
>>
>> However, this doesn't work, after a $ qemu-system-i386
>> debian_wheezy_i386_standard.qcow2 -usb -device USB-I2C,id=usb-i2c-0, the
>> driver doesn't seem to be used (/sys/class/i2c-dev/i2c-0/name isn't for
>> it...), even if I modprobe i2c-tiny-usb...
>> The dmesg shows it doesn't go into the "probe" function.
>>
>> What did I miss ?
>>
>
> I honestly don't know, you'll have to debug it.
>
> Paolo
>

Reply via email to