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 >