vhost-device/crates/i2c
dependabot[bot] 51c5bc0431 build(deps): bump clap from 4.3.23 to 4.4.3
Bumps [clap](https://github.com/clap-rs/clap) from 4.3.23 to 4.4.3.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.3.23...v4.4.3)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-13 17:10:17 +02:00
..
src i2c: Don't take a mut ref for reqs 2023-08-24 15:42:44 +05:30
Cargo.toml build(deps): bump clap from 4.3.23 to 4.4.3 2023-09-13 17:10:17 +02:00
CHANGELOG.md Add CHANGELOG.md to all crates 2023-07-07 22:06:45 +05:30
LICENSE-APACHE Symlink license files into crate folders 2023-07-04 14:56:52 +05:30
LICENSE-BSD-3-Clause Symlink license files into crate folders 2023-07-04 14:56:52 +05:30
README.md i2c: Accept bus names instead of numbers 2022-12-05 17:15:38 +05:30

vhost-device-i2c - I2C emulation backend daemon

Description

This program is a vhost-user backend that emulates a VirtIO I2C bus. This program takes the layout of the i2c bus and its devices on the host OS and then talks to them via the /dev/i2c-X interface when a request comes from the guest OS for an I2C or SMBUS device.

This program is tested with QEMU's -device vhost-user-i2c-pci but should work with any virtual machine monitor (VMM) that supports vhost-user. See the Examples section below.

Synopsis

vhost-device-i2c [OPTIONS]

Options

.. program:: vhost-device-i2c

.. option:: -h, --help

Print help.

.. option:: -s, --socket-path=PATH

Location of vhost-user Unix domain sockets, this path will be suffixed with 0,1,2..socket_count-1.

.. option:: -c, --socket-count=INT

Number of guests (sockets) to attach to, default set to 1.

.. option:: -l, --device-list=I2C-DEVICES

I2c device list at the host OS in the format: :<client_addr>[:<client_addr>],[:<client_addr>[:<client_addr>]]

  Example: --device-list "i915 gmbus dpd:32:21,DPDDC-D:10:23"

Here, bus-name: is adatper's name. e.g. value of /sys/bus/i2c/devices/i2c-0/name. client_addr (decimal): address for client device, 32 == 0x20.

Examples

The daemon should be started first:

::

host# vhost-device-i2c --socket-path=vi2c.sock --socket-count=1 --device-list "i915 gmbus dpd:32"

The QEMU invocation needs to create a chardev socket the device can use to communicate as well as share the guests memory over a memfd.

::

host# qemu-system
-chardev socket,path=vi2c.sock,id=vi2c
-device vhost-user-i2c-pci,chardev=vi2c,id=i2c
-m 4096
-object memory-backend-file,id=mem,size=4G,mem-path=/dev/shm,share=on
-numa node,memdev=mem
...

License

This project is licensed under either of