RE: [PATCH v5 0/3] media: pci: intel: ivsc: Add driver of Intel Visual Sensing Controller(IVSC)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Please help review this V5 patch set, thanks a lot!

BR,
Wentong

> -----Original Message-----
> From: Wu, Wentong <wentong.wu@xxxxxxxxx>
> Sent: Monday, April 10, 2023 11:14 AM
> To: sakari.ailus@xxxxxxxxxxxxxxx; hdegoede@xxxxxxxxxx; djrscally@xxxxxxxxx;
> 
> Intel Visual Sensing Controller (IVSC), codenamed "Clover Falls", is a companion
> chip designed to provide secure and low power vision capability to IA platforms.
> IVSC is available in existing commercial platforms from multiple OEMs.
> 
> The primary use case of IVSC is to bring in context awareness. IVSC interfaces
> directly with the platform main camera sensor via a CSI-2 link and processes the
> image data with the embedded AI engine. The detected events are sent over I2C
> to ISH (Intel Sensor Hub) for additional data fusion from multiple sensors. The
> fusion results are used to implement advanced use cases like:
>  - Face detection to unlock screen
>  - Detect user presence to manage backlight setting or waking up system
> 
> Since the Image Processing Unit(IPU) used on the host processor needs to
> configure the CSI-2 link in normal camera usages, the CSI-2 link and camera
> sensor can only be used in mutually-exclusive ways by host IPU and IVSC. By
> default the IVSC owns the CSI-2 link and camera sensor. The IPU driver can take
> ownership of the CSI-2 link and camera sensor using the interfaces exported via
> v4l2 sub-device.
> 
> Switching ownership requires an interface with two different hardware modules
> inside IVSC. The software interface to these modules is via Intel MEI (The Intel
> Management Engine) commands. These two hardware modules have two
> different MEI UUIDs to enumerate. These hardware modules are:
>  - ACE (Algorithm Context Engine): This module is for algorithm computing when
> IVSC owns camera sensor. Also ACE module controls camera sensor's ownership.
> This hardware module is used to set ownership of camera sensor.
>  - CSI (Camera Serial Interface): This module is used to route camera sensor data
> either to IVSC or to host for IPU driver and application.
> 
> IVSC also provides a privacy mode. When privacy mode is turned on, camera
> sensor can't be used. This means that both ACE and host IPU can't get image
> data. And when this mode is turned on, users are informed via v4l2 control API.
> 
> In summary, to acquire ownership of camera by IPU driver, first ACE module
> needs to be informed of ownership and then to setup MIPI CSI-2 link for the
> camera sensor and IPU.
> 
> Implementation:
> There are two different drivers to handle ACE and CSI hardware modules inside
> IVSC.
>  - ivsc_csi: MEI client driver to send commands and receive notifications from
> CSI module.
>  - ivsc_ace: MEI client driver to send commands and get status from ACE module.
> Interface is exposed via v4l2 sub-devcie APIs to acquire and release camera
> sensor and CSI-2 link.
> 
> Below diagram shows connections of IVSC/ISH/IPU/Camera sensor.
> -----------------------------------------------------------------------------
> | Host Processor                                                            |
> |                                                                           |
> |       -----------------       -----------------       ---------------     |
> |       |               |       |               |       |             | I2C |
> |       |      IPU      |       |      ISH      |       |camera driver|--|  |
> |       |               |       |               |       |             |  |  |
> |       -----------------       -----------------       ---------------  |  |
> |               |                       |                      |         |  |
> |               |                       |               ---------------  |  |
> |               |                       |               |             |  |  |
> |               |                       |               | IVSC driver |  |  |
> |               |                       |               |             |  |  |
> |               |                       |               ---------------  |  |
> |               |                       |                      |         |  |
> ----------------|-----------------------|----------------------|---------|---
>                 | CSI                   | I2C                  |SPI      |
>                 |                       |                      |         |
> ----------------|-----------------------|----------------      |         |
> | IVSC          |                                       |      |         |
> |               |                                       |      |         |
> |       -----------------       -----------------       |      |         |
> |       |               |       |               |       |      |         |
> |       |      CSI      |       |      ACE      |       |------|         |
> |       |               |       |               |       |                |
> |       -----------------       -----------------       |                |
> |               |                       | I2C           |                |
> ----------------|-----------------------|----------------                |
>                 | CSI                   |                                |
>                 |                       |                                |
>             --------------------------------                             |
>             |                              | I2C                         |
>             |         camera sensor        |-----------------------------|
>             |                              |
>             --------------------------------
> 
> ---
> v5:
>  - probe mei_csi only after software node has been setup
> 
> v4:
>  - call v4l2_ctrl_handler_free() if setting up the handler failed
>  - set V4L2_CTRL_FLAG_READ_ONLY for privacy_ctrl
>  - add dev_warn if failed to switch CSI-2 link to IVSC
>  - use v4l2_fwnode_endpoint_alloc_parse to get num_data_lanes
>  - add document about how sensor connected to IVSC is powered
>  - move lock to mei_ace_send
>  - check return value for device_link_add
> 
> Wentong Wu (3):
>   media: pci: intel: ivsc: Add CSI submodule
>   media: pci: intel: ivsc: Add ACE submodule
>   ACPI: delay enumeration of devices with a _DEP pointing to IVSC device
> 
>  drivers/acpi/scan.c                    |   2 +
>  drivers/media/pci/Kconfig              |   1 +
>  drivers/media/pci/intel/Makefile       |   2 +
>  drivers/media/pci/intel/ivsc/Kconfig   |  12 +
>  drivers/media/pci/intel/ivsc/Makefile  |   9 +
>  drivers/media/pci/intel/ivsc/mei_ace.c | 560 ++++++++++++++++++++++++
> drivers/media/pci/intel/ivsc/mei_csi.c | 772
> +++++++++++++++++++++++++++++++++
>  7 files changed, 1358 insertions(+)
>  create mode 100644 drivers/media/pci/intel/ivsc/Kconfig
>  create mode 100644 drivers/media/pci/intel/ivsc/Makefile
>  create mode 100644 drivers/media/pci/intel/ivsc/mei_ace.c
>  create mode 100644 drivers/media/pci/intel/ivsc/mei_csi.c
> 
> --
> 2.7.4





[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux