mbox series

[0/5] Introduce camera subsystem and USB video device

Message ID 20211227142734.691900-1-pizhenwei@bytedance.com (mailing list archive)
Headers show
Series Introduce camera subsystem and USB video device | expand

Message

zhenwei pi Dec. 27, 2021, 2:27 p.m. UTC
1, The full picture of this patch set:
   +---------+       +------------+     +---------------+
   |UVC(done)|       |virtio(TODO)|     |other HW device|
   +---------+       +------------+     +---------------+
         |                 |                     |
         |            +------------+             |
	 +------------+camera(done)+-------------+
                      +----+-------+
                           |
         +-----------------+---------------------+
         |                 |                     |
  +------+------+     +----+-----+        +------+------+
  |builtin(done)|     |v4l2(done)|        |other drivers|
  +-------------+     +----------+        +-------------+

With this patch set, We can run a desktop VM (Ex Ubuntu-2004), several camera
APPs(cheese, kamoso, guvcview and qcam) work fine.

Some works still in working:
  1, hot-plug
  2, compat with live migration
  3, several actions defined in UVC SPEC

Zhenwei Pi (5):
  camera: Introduce camera subsystem and builtin driver
  camera: v4l2: Introduce v4l2 camera driver
  usb: Introduce video&mescellaneous
  usb: allow max 8192 bytes for desc
  usb-video: Introduce USB video class

 camera/builtin.c        |  717 ++++++++++++++++++++
 camera/camera-int.h     |   19 +
 camera/camera.c         |  522 +++++++++++++++
 camera/meson.build      |   20 +
 camera/trace-events     |   28 +
 camera/trace.h          |    1 +
 camera/v4l2.c           |  637 ++++++++++++++++++
 hw/usb/Kconfig          |    5 +
 hw/usb/desc.c           |   15 +-
 hw/usb/desc.h           |    1 +
 hw/usb/dev-video.c      | 1395 +++++++++++++++++++++++++++++++++++++++
 hw/usb/meson.build      |    1 +
 hw/usb/trace-events     |   11 +
 include/camera/camera.h |  238 +++++++
 include/hw/usb.h        |    2 +
 include/hw/usb/video.h  |  303 +++++++++
 meson.build             |   20 +-
 meson_options.txt       |    3 +
 qapi/camera.json        |  101 +++
 qapi/meson.build        |    1 +
 qapi/qapi-schema.json   |    1 +
 qemu-options.hx         |   13 +
 softmmu/vl.c            |    4 +
 23 files changed, 4050 insertions(+), 8 deletions(-)
 create mode 100644 camera/builtin.c
 create mode 100644 camera/camera-int.h
 create mode 100644 camera/camera.c
 create mode 100644 camera/meson.build
 create mode 100644 camera/trace-events
 create mode 100644 camera/trace.h
 create mode 100644 camera/v4l2.c
 create mode 100644 hw/usb/dev-video.c
 create mode 100644 include/camera/camera.h
 create mode 100644 include/hw/usb/video.h
 create mode 100644 qapi/camera.json

Comments

Daniel P. Berrangé Jan. 4, 2022, 1:39 p.m. UTC | #1
On Mon, Dec 27, 2021 at 10:27:29PM +0800, zhenwei pi wrote:
> 1, The full picture of this patch set:
>    +---------+       +------------+     +---------------+
>    |UVC(done)|       |virtio(TODO)|     |other HW device|
>    +---------+       +------------+     +---------------+
>          |                 |                     |
>          |            +------------+             |
> 	 +------------+camera(done)+-------------+
>                       +----+-------+
>                            |
>          +-----------------+---------------------+
>          |                 |                     |
>   +------+------+     +----+-----+        +------+------+
>   |builtin(done)|     |v4l2(done)|        |other drivers|
>   +-------------+     +----------+        +-------------+
> 
> With this patch set, We can run a desktop VM (Ex Ubuntu-2004), several camera
> APPs(cheese, kamoso, guvcview and qcam) work fine.
> 
> Some works still in working:
>   1, hot-plug
>   2, compat with live migration
>   3, several actions defined in UVC SPEC
> 
> Zhenwei Pi (5):
>   camera: Introduce camera subsystem and builtin driver
>   camera: v4l2: Introduce v4l2 camera driver
>   usb: Introduce video&mescellaneous
>   usb: allow max 8192 bytes for desc
>   usb-video: Introduce USB video class
> 
>  camera/builtin.c        |  717 ++++++++++++++++++++
>  camera/camera-int.h     |   19 +
>  camera/camera.c         |  522 +++++++++++++++
>  camera/meson.build      |   20 +
>  camera/trace-events     |   28 +
>  camera/trace.h          |    1 +
>  camera/v4l2.c           |  637 ++++++++++++++++++
>  hw/usb/Kconfig          |    5 +
>  hw/usb/desc.c           |   15 +-
>  hw/usb/desc.h           |    1 +
>  hw/usb/dev-video.c      | 1395 +++++++++++++++++++++++++++++++++++++++
>  hw/usb/meson.build      |    1 +
>  hw/usb/trace-events     |   11 +
>  include/camera/camera.h |  238 +++++++
>  include/hw/usb.h        |    2 +
>  include/hw/usb/video.h  |  303 +++++++++
>  meson.build             |   20 +-
>  meson_options.txt       |    3 +
>  qapi/camera.json        |  101 +++
>  qapi/meson.build        |    1 +
>  qapi/qapi-schema.json   |    1 +
>  qemu-options.hx         |   13 +
>  softmmu/vl.c            |    4 +

There's no MAINTAINERS file update here.

As a general rule, if you are introducing an entire new subsystem
into the QEMU codebase, it is expected someone will be nominated
as the maintainer for the new subsystem. Usually the person adding
it will themselves volunteer to be the maintainer.

Regards,
Daniel
zhenwei pi Jan. 5, 2022, 7:03 a.m. UTC | #2
On 1/4/22 9:39 PM, Daniel P. Berrangé wrote:
> On Mon, Dec 27, 2021 at 10:27:29PM +0800, zhenwei pi wrote:
>> 1, The full picture of this patch set:
>>     +---------+       +------------+     +---------------+
>>     |UVC(done)|       |virtio(TODO)|     |other HW device|
>>     +---------+       +------------+     +---------------+
>>           |                 |                     |
>>           |            +------------+             |
>> 	 +------------+camera(done)+-------------+
>>                        +----+-------+
>>                             |
>>           +-----------------+---------------------+
>>           |                 |                     |
>>    +------+------+     +----+-----+        +------+------+
>>    |builtin(done)|     |v4l2(done)|        |other drivers|
>>    +-------------+     +----------+        +-------------+
>>
>> With this patch set, We can run a desktop VM (Ex Ubuntu-2004), several camera
>> APPs(cheese, kamoso, guvcview and qcam) work fine.
>>
>> Some works still in working:
>>    1, hot-plug
>>    2, compat with live migration
>>    3, several actions defined in UVC SPEC
>>
>> Zhenwei Pi (5):
>>    camera: Introduce camera subsystem and builtin driver
>>    camera: v4l2: Introduce v4l2 camera driver
>>    usb: Introduce video&mescellaneous
>>    usb: allow max 8192 bytes for desc
>>    usb-video: Introduce USB video class
>>
>>   camera/builtin.c        |  717 ++++++++++++++++++++
>>   camera/camera-int.h     |   19 +
>>   camera/camera.c         |  522 +++++++++++++++
>>   camera/meson.build      |   20 +
>>   camera/trace-events     |   28 +
>>   camera/trace.h          |    1 +
>>   camera/v4l2.c           |  637 ++++++++++++++++++
>>   hw/usb/Kconfig          |    5 +
>>   hw/usb/desc.c           |   15 +-
>>   hw/usb/desc.h           |    1 +
>>   hw/usb/dev-video.c      | 1395 +++++++++++++++++++++++++++++++++++++++
>>   hw/usb/meson.build      |    1 +
>>   hw/usb/trace-events     |   11 +
>>   include/camera/camera.h |  238 +++++++
>>   include/hw/usb.h        |    2 +
>>   include/hw/usb/video.h  |  303 +++++++++
>>   meson.build             |   20 +-
>>   meson_options.txt       |    3 +
>>   qapi/camera.json        |  101 +++
>>   qapi/meson.build        |    1 +
>>   qapi/qapi-schema.json   |    1 +
>>   qemu-options.hx         |   13 +
>>   softmmu/vl.c            |    4 +
> 
> There's no MAINTAINERS file update here.
> 
> As a general rule, if you are introducing an entire new subsystem
> into the QEMU codebase, it is expected someone will be nominated
> as the maintainer for the new subsystem. Usually the person adding
> it will themselves volunteer to be the maintainer.
> 
> Regards,
> Daniel
> 
OK, thanks. I have a plan to add two parts in next version:
1, camera subsystem, include folder qemu/camera and qemu/include/camera/
2, UVC, include qemu/hw/usb/dev-video.c and qemu/include/hw/usb/video.h