mbox series

[v4,0/8] media: i2c: mlx7502x ToF camera support

Message ID cover.1669978791.git.vkh@melexis.com
Headers show
Series media: i2c: mlx7502x ToF camera support | expand

Message

Volodymyr Kharuk Dec. 2, 2022, 4:07 p.m. UTC
Hello,

This series adds support for the Melexis 75026 and 75027 Time of Flight
camera sensors, with DT bindings in patch 7/8 and a driver in patch 8/8.
In patches 1/8, 2/8 and 3/8, I've add ToF controls as separate
ToF control class.

v4:
- fix output mode
- forbid array for menu and warn if validate_new return an error
- add enums to custom control OUTPUT_MODE
- update doc
- minor fixes

v3:
- move FMOD, TINT, PHASE_SEQ to common V4L2 as ToF common controls
- FMOD and TINT became dynamic arrays
- remove PHASE_NUM, use dynamic_array for PHASE_SEQ,
  ctrl->new_elems pass number of phases
- remove leden-gpios, will be used gpio explicitly in library for now
- remade probe: use probe_new, no power on during probe
- remove autodetect and wildcard
- make all supplies to be required
- remove trigger ioctl, will add in separate patch series
- remove temperature ioctl, will add in separate patch series
- add documentation about custom ioctl
- style: 80 cols
- minor fixes device tree

v2:
- added external clock to the sensor
- added all regulators required by the sensor
- added posibility to choose sensor type in device tree
- added prefixes to all custom types in device tree and driver as well
- style fixes

Volodymyr Kharuk (8):
  media: uapi: ctrls: Add Time of Flight class controls
  media: v4l: ctrls: Fill V4L2_CID_TOF_CLASS controls
  media: Documentation: v4l: Add TOF class controls
  media: v4l: ctrls-api: Allow array update in __v4l2_ctrl_modify_range
  media: v4l: ctrls: Add user control base for mlx7502x
  media: uapi: Add mlx7502x header file
  media: dt-bindings: Add mlx7502x camera sensor
  media: i2c: Add driver for mlx7502x ToF sensor

 .../bindings/media/i2c/melexis,mlx7502x.yaml  |  126 ++
 .../userspace-api/media/drivers/index.rst     |    1 +
 .../userspace-api/media/drivers/mlx7502x.rst  |   28 +
 .../userspace-api/media/v4l/common.rst        |    1 +
 .../userspace-api/media/v4l/ext-ctrls-tof.rst |   56 +
 MAINTAINERS                                   |   11 +
 drivers/media/i2c/Kconfig                     |   13 +
 drivers/media/i2c/Makefile                    |    1 +
 drivers/media/i2c/mlx7502x.c                  | 1747 +++++++++++++++++
 drivers/media/v4l2-core/v4l2-ctrls-api.c      |   25 +-
 drivers/media/v4l2-core/v4l2-ctrls-defs.c     |   20 +
 include/uapi/linux/mlx7502x.h                 |   28 +
 include/uapi/linux/v4l2-controls.h            |   14 +
 13 files changed, 2059 insertions(+), 12 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/media/i2c/melexis,mlx7502x.yaml
 create mode 100644 Documentation/userspace-api/media/drivers/mlx7502x.rst
 create mode 100644 Documentation/userspace-api/media/v4l/ext-ctrls-tof.rst
 create mode 100644 drivers/media/i2c/mlx7502x.c
 create mode 100644 include/uapi/linux/mlx7502x.h


base-commit: a7bab6f8b73fe15a6181673149734a2756845dae

Comments

Volodymyr Kharuk Jan. 2, 2023, 1:27 p.m. UTC | #1
Hi All,

This is a gentle reminder about the patch series for ToF camera.

Thanks.

On Fri, Dec 02, 2022 at 06:07:30PM +0200, Volodymyr Kharuk wrote:
> Hello,
> 
> This series adds support for the Melexis 75026 and 75027 Time of Flight
> camera sensors, with DT bindings in patch 7/8 and a driver in patch 8/8.
> In patches 1/8, 2/8 and 3/8, I've add ToF controls as separate
> ToF control class.
> 
> v4:
> - fix output mode
> - forbid array for menu and warn if validate_new return an error
> - add enums to custom control OUTPUT_MODE
> - update doc
> - minor fixes
> 
> v3:
> - move FMOD, TINT, PHASE_SEQ to common V4L2 as ToF common controls
> - FMOD and TINT became dynamic arrays
> - remove PHASE_NUM, use dynamic_array for PHASE_SEQ,
>   ctrl->new_elems pass number of phases
> - remove leden-gpios, will be used gpio explicitly in library for now
> - remade probe: use probe_new, no power on during probe
> - remove autodetect and wildcard
> - make all supplies to be required
> - remove trigger ioctl, will add in separate patch series
> - remove temperature ioctl, will add in separate patch series
> - add documentation about custom ioctl
> - style: 80 cols
> - minor fixes device tree
> 
> v2:
> - added external clock to the sensor
> - added all regulators required by the sensor
> - added posibility to choose sensor type in device tree
> - added prefixes to all custom types in device tree and driver as well
> - style fixes
> 
> Volodymyr Kharuk (8):
>   media: uapi: ctrls: Add Time of Flight class controls
>   media: v4l: ctrls: Fill V4L2_CID_TOF_CLASS controls
>   media: Documentation: v4l: Add TOF class controls
>   media: v4l: ctrls-api: Allow array update in __v4l2_ctrl_modify_range
>   media: v4l: ctrls: Add user control base for mlx7502x
>   media: uapi: Add mlx7502x header file
>   media: dt-bindings: Add mlx7502x camera sensor
>   media: i2c: Add driver for mlx7502x ToF sensor
> 
>  .../bindings/media/i2c/melexis,mlx7502x.yaml  |  126 ++
>  .../userspace-api/media/drivers/index.rst     |    1 +
>  .../userspace-api/media/drivers/mlx7502x.rst  |   28 +
>  .../userspace-api/media/v4l/common.rst        |    1 +
>  .../userspace-api/media/v4l/ext-ctrls-tof.rst |   56 +
>  MAINTAINERS                                   |   11 +
>  drivers/media/i2c/Kconfig                     |   13 +
>  drivers/media/i2c/Makefile                    |    1 +
>  drivers/media/i2c/mlx7502x.c                  | 1747 +++++++++++++++++
>  drivers/media/v4l2-core/v4l2-ctrls-api.c      |   25 +-
>  drivers/media/v4l2-core/v4l2-ctrls-defs.c     |   20 +
>  include/uapi/linux/mlx7502x.h                 |   28 +
>  include/uapi/linux/v4l2-controls.h            |   14 +
>  13 files changed, 2059 insertions(+), 12 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/media/i2c/melexis,mlx7502x.yaml
>  create mode 100644 Documentation/userspace-api/media/drivers/mlx7502x.rst
>  create mode 100644 Documentation/userspace-api/media/v4l/ext-ctrls-tof.rst
>  create mode 100644 drivers/media/i2c/mlx7502x.c
>  create mode 100644 include/uapi/linux/mlx7502x.h
> 
> 
> base-commit: a7bab6f8b73fe15a6181673149734a2756845dae
> -- 
> BR,
> Volodymyr Kharuk
>
Benjamin Mugnier Jan. 2, 2023, 1:48 p.m. UTC | #2
Hi Volodomyr,

I'm not sure I'm relevant, but since we discussed a bit about controls
in the first version feel free to add my tag for patch 1, 2, and 3:

Acked-By: Benjamin Mugnier <benjamin.mugnier@foss.st.com>

Thank you for your work.

On 1/2/23 14:27, Volodymyr Kharuk wrote:
> Hi All,
> 
> This is a gentle reminder about the patch series for ToF camera.
> 
> Thanks.
> 
> On Fri, Dec 02, 2022 at 06:07:30PM +0200, Volodymyr Kharuk wrote:
>> Hello,
>>
>> This series adds support for the Melexis 75026 and 75027 Time of Flight
>> camera sensors, with DT bindings in patch 7/8 and a driver in patch 8/8.
>> In patches 1/8, 2/8 and 3/8, I've add ToF controls as separate
>> ToF control class.
>>
>> v4:
>> - fix output mode
>> - forbid array for menu and warn if validate_new return an error
>> - add enums to custom control OUTPUT_MODE
>> - update doc
>> - minor fixes
>>
>> v3:
>> - move FMOD, TINT, PHASE_SEQ to common V4L2 as ToF common controls
>> - FMOD and TINT became dynamic arrays
>> - remove PHASE_NUM, use dynamic_array for PHASE_SEQ,
>>   ctrl->new_elems pass number of phases
>> - remove leden-gpios, will be used gpio explicitly in library for now
>> - remade probe: use probe_new, no power on during probe
>> - remove autodetect and wildcard
>> - make all supplies to be required
>> - remove trigger ioctl, will add in separate patch series
>> - remove temperature ioctl, will add in separate patch series
>> - add documentation about custom ioctl
>> - style: 80 cols
>> - minor fixes device tree
>>
>> v2:
>> - added external clock to the sensor
>> - added all regulators required by the sensor
>> - added posibility to choose sensor type in device tree
>> - added prefixes to all custom types in device tree and driver as well
>> - style fixes
>>
>> Volodymyr Kharuk (8):
>>   media: uapi: ctrls: Add Time of Flight class controls
>>   media: v4l: ctrls: Fill V4L2_CID_TOF_CLASS controls
>>   media: Documentation: v4l: Add TOF class controls
>>   media: v4l: ctrls-api: Allow array update in __v4l2_ctrl_modify_range
>>   media: v4l: ctrls: Add user control base for mlx7502x
>>   media: uapi: Add mlx7502x header file
>>   media: dt-bindings: Add mlx7502x camera sensor
>>   media: i2c: Add driver for mlx7502x ToF sensor
>>
>>  .../bindings/media/i2c/melexis,mlx7502x.yaml  |  126 ++
>>  .../userspace-api/media/drivers/index.rst     |    1 +
>>  .../userspace-api/media/drivers/mlx7502x.rst  |   28 +
>>  .../userspace-api/media/v4l/common.rst        |    1 +
>>  .../userspace-api/media/v4l/ext-ctrls-tof.rst |   56 +
>>  MAINTAINERS                                   |   11 +
>>  drivers/media/i2c/Kconfig                     |   13 +
>>  drivers/media/i2c/Makefile                    |    1 +
>>  drivers/media/i2c/mlx7502x.c                  | 1747 +++++++++++++++++
>>  drivers/media/v4l2-core/v4l2-ctrls-api.c      |   25 +-
>>  drivers/media/v4l2-core/v4l2-ctrls-defs.c     |   20 +
>>  include/uapi/linux/mlx7502x.h                 |   28 +
>>  include/uapi/linux/v4l2-controls.h            |   14 +
>>  13 files changed, 2059 insertions(+), 12 deletions(-)
>>  create mode 100644 Documentation/devicetree/bindings/media/i2c/melexis,mlx7502x.yaml
>>  create mode 100644 Documentation/userspace-api/media/drivers/mlx7502x.rst
>>  create mode 100644 Documentation/userspace-api/media/v4l/ext-ctrls-tof.rst
>>  create mode 100644 drivers/media/i2c/mlx7502x.c
>>  create mode 100644 include/uapi/linux/mlx7502x.h
>>
>>
>> base-commit: a7bab6f8b73fe15a6181673149734a2756845dae
>> -- 
>> BR,
>> Volodymyr Kharuk
>>
>
Volodymyr Kharuk Feb. 6, 2023, 9:53 a.m. UTC | #3
Hi Benjamin,

> By the way, was the mailing list dropped from cc by mistake ?
No, I just wanted to send a remind about the patch to Sakari and Laurent.
Now it looks that this thread became more technical, so I am adding cc again.

> >> I took a glance already and the driver seems reasonably good but I'm
> >> concerned of the interface. How generic is it? I can't say to be an expert
> >> on these devices and we don't have any other ToF cameras yet. Is the
> >> precision (8 bits) of the control values enough?
> > Fairly, that it is an interesting question.
> > The frequency modulation defines the maximum range of object detection.
> > 1 MHz precision is what we need usually, as the maximum range is from
> > 1.5m(100Mhz) till 150(1MHz) meters then.
> > Usually, user applications use 60-80MHz(max range is 1.8 - 2.5meters).
> > Also, it is possible to have smaller step then 1 MHz, but it is not that practical.
> > I am ok switch to Hz and use u32. In that case we will not be limited for generic case.
> > 
> > Benjamin, what precision is better for frequency modulation in your case?
> 
> Good catch, we do require Hz precision for some frequencies we use.
> In other systems we use floats expressed as Mhz for this. As Linux only
> supports integers, switching it to u32 and express it as Hz is a good idea.
Ok, then I'll redo in next version.