mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 10:00:17 +00:00
media: i2c: Add a driver for the Infineon IRS1125 depth sensor
The Infineon IRS1125 is a time of flight depth sensor that
has a CSI-2 interface.
Add a V4L2 subdevice driver for this device.
Signed-off-by: Markus Proeller <markus.proeller@pieye.org>
media: irs1125: Using i2c_transfer for ic2 reads
Reading data over i2c is done by using i2c_transfer to ensure that this
operation can't be interrupted.
Signed-off-by: Markus Proeller <markus.proeller@pieye.org>
media: irs1125: Refactoring and debug messages
Changed some variable names to comply with checkpatch --strict mode.
Debug messages added.
Signed-off-by: Markus Proeller <markus.proeller@pieye.org>
media: irs1125: Atomic access to imager reconfiguration
Instead of changing the exposure and framerate settings for all sequences,
they can be changed for every sequence individually now. Therefore the
IRS1125_CID_SAFE_RECONFIG ctrl has been removed and replaced by
IRS1125_CID_SAFE_RECONFIG_S<seq_num>_EXPO and *_FRAME ctrls.
The consistency check in the sequence ctrl IRS1125_CID_SEQ_CONFIG
is removed.
Signed-off-by: Markus Proeller <markus.proeller@pieye.org>
media: irs1125: Keep HW in sync after imager reset
When closing the video device, the irs1125 is put in power down state.
To keep V4L2 ctrls and the HW in sync, v4l2_ctrl_handler_setup is
called after power up.
The compound ctrl IRS1125_CID_MOD_PLL however has a default value
of all zeros, which puts the imager into a non responding state.
Thus, this ctrl is not written by the driver into HW after power up.
The userspace has to take care to write senseful data.
Signed-off-by: Markus Proeller <markus.proeller@pieye.org>
media: i2c: add ov9281 driver.
Change-Id: I7b77250bbc56d2f861450cf77271ad15f9b88ab1
Signed-off-by: Zefa Chen <zefa.chen@rock-chips.com>
media: i2c: ov9281: fix mclk issue when probe multiple camera.
Takes the ov9281 part only from the Rockchip's patch.
Change-Id: I30e833baf2c1bb07d6d87ddb3b00759ab45a90e4
Signed-off-by: Zefa Chen <zefa.chen@rock-chips.com>
media: i2c: ov9281: add enum_frame_interval function for iq tool 2.2 and hal3
Adds the ov9281 parts of the Rockchip patch adding enum_frame_interval to
a large number of drivers.
Change-Id: I03344cd6cf278dd7c18fce8e97479089ef185a5c
Signed-off-by: Zefa Chen <zefa.chen@rock-chips.com>
media: i2c: ov9281: Fixup for recent kernel releases, and remove custom code
The Rockchip driver was based on a 4.4 kernel, and had several custom
Rockchip parts.
Update to 5.4 kernel APIs, with the relevant controls required by
libcamera, and remove custom Rockchip parts.
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
media: i2c: ov9281: Read chip ID via 2 reads
Vision Components have made an OV9281 module which blocks reading
back the majority of registers to comply with NDAs, and in doing
so doesn't allow auto-increment register reading as used when
reading the chip ID.
Use two reads and manually combine the results.
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
media: i2c: ov9281: Add support for 8 bit readout
The sensor supports 8 bit mode as well as 10bit, so add the
relevant code to allow selection of this.
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
media: ov9281: Add 1280x720 and 640x480 modes
Breaks out common register set and adds the different registers
for 1280x720 (cropped) and 640x480 (skipped) modes
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Fixed picture line bug in all ov9281 modes
Signed-off-by: Mathias Anhalt <mathiasanhalt@web.de>
Added hflip and vflip controls to ov9281
Signed-off-by: Mathias Anhalt <mathiasanhalt@web.de>
media: i2c: ov9281: Remove override of subdev name
From the original Rockchip driver, the subdev was renamed
from the default to being "mov9281 <dev_name>" whereas the
default would have been "ov9281 <dev_name>".
Remove the override to drop back to the default rather than
a vendor custom string.
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
media: v4l2-subdev: add subdev-wide state struct
Signed-off-by: Dom Cobley <popcornmix@gmail.com>
media: i2c: ov9281: Add fwnode properties controls
Add call to v4l2_ctrl_new_fwnode_properties to read and
create the fwnode based controls.
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
media: i2c: ov9281: Sensor should report RAW color space
Tested on Raspberry Pi running libcamera.
Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
Partial revert "media: i2c: add ov9281 driver."
This partially reverts commit 84e98e3a4f.
The commit had merged some changes to other drivers with adding the ov9281
driver. Only the ov9281 parts have been reverted.
media: i2c: Update irs1125 Kconfig entry
Bring the IRS1125 Kconfig declaration in line with upstream entries.
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
This commit is contained in:
committed by
Dom Cobley
parent
eca329b546
commit
8d536c07ba
@@ -1426,6 +1426,18 @@ config VIDEO_TW9910
|
|||||||
To compile this driver as a module, choose M here: the
|
To compile this driver as a module, choose M here: the
|
||||||
module will be called tw9910.
|
module will be called tw9910.
|
||||||
|
|
||||||
|
config VIDEO_IRS1125
|
||||||
|
tristate "Infineon IRS1125 sensor support"
|
||||||
|
depends on I2C && VIDEO_DEV
|
||||||
|
select VIDEO_V4L2_SUBDEV_API
|
||||||
|
select V4L2_FWNODE
|
||||||
|
help
|
||||||
|
This is a Video4Linux2 sensor-level driver for the Infineon
|
||||||
|
IRS1125 camera.
|
||||||
|
|
||||||
|
To compile this driver as a module, choose M here: the
|
||||||
|
module will be called irs1125.
|
||||||
|
|
||||||
config VIDEO_VPX3220
|
config VIDEO_VPX3220
|
||||||
tristate "vpx3220a, vpx3216b & vpx3214c video decoders"
|
tristate "vpx3220a, vpx3216b & vpx3214c video decoders"
|
||||||
depends on VIDEO_DEV && I2C
|
depends on VIDEO_DEV && I2C
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ obj-$(CONFIG_VIDEO_IMX415) += imx415.o
|
|||||||
obj-$(CONFIG_VIDEO_IMX477) += imx477.o
|
obj-$(CONFIG_VIDEO_IMX477) += imx477.o
|
||||||
obj-$(CONFIG_VIDEO_IMX519) += imx519.o
|
obj-$(CONFIG_VIDEO_IMX519) += imx519.o
|
||||||
obj-$(CONFIG_VIDEO_IR_I2C) += ir-kbd-i2c.o
|
obj-$(CONFIG_VIDEO_IR_I2C) += ir-kbd-i2c.o
|
||||||
|
obj-$(CONFIG_VIDEO_IRS1125) += irs1125.o
|
||||||
obj-$(CONFIG_VIDEO_ISL7998X) += isl7998x.o
|
obj-$(CONFIG_VIDEO_ISL7998X) += isl7998x.o
|
||||||
obj-$(CONFIG_VIDEO_KS0127) += ks0127.o
|
obj-$(CONFIG_VIDEO_KS0127) += ks0127.o
|
||||||
obj-$(CONFIG_VIDEO_LM3560) += lm3560.o
|
obj-$(CONFIG_VIDEO_LM3560) += lm3560.o
|
||||||
|
|||||||
1197
drivers/media/i2c/irs1125.c
Normal file
1197
drivers/media/i2c/irs1125.c
Normal file
File diff suppressed because it is too large
Load Diff
95
drivers/media/i2c/irs1125.h
Normal file
95
drivers/media/i2c/irs1125.h
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
/* SPDX-License-Identifier: GPL-2.0 */
|
||||||
|
/*
|
||||||
|
* A V4L2 driver for Infineon IRS1125 TOF cameras.
|
||||||
|
* Copyright (C) 2018, pieye GmbH
|
||||||
|
*
|
||||||
|
* Based on V4L2 OmniVision OV5647 Image Sensor driver
|
||||||
|
* Copyright (C) 2016 Ramiro Oliveira <roliveir@synopsys.com>
|
||||||
|
*
|
||||||
|
* DT / fwnode changes, and GPIO control taken from ov5640.c
|
||||||
|
* Copyright (C) 2011-2013 Freescale Semiconductor, Inc. All Rights Reserved.
|
||||||
|
* Copyright (C) 2014-2017 Mentor Graphics Inc.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef IRS1125_H
|
||||||
|
#define IRS1125_H
|
||||||
|
|
||||||
|
#include <linux/v4l2-controls.h>
|
||||||
|
#include <linux/types.h>
|
||||||
|
|
||||||
|
#define IRS1125_NUM_SEQ_ENTRIES 20
|
||||||
|
#define IRS1125_NUM_MOD_PLLS 4
|
||||||
|
|
||||||
|
#define IRS1125_CID_CUSTOM_BASE (V4L2_CID_USER_BASE | 0xf000)
|
||||||
|
#define IRS1125_CID_CONTINUOUS_TRIG (IRS1125_CID_CUSTOM_BASE + 1)
|
||||||
|
#define IRS1125_CID_TRIGGER (IRS1125_CID_CUSTOM_BASE + 2)
|
||||||
|
#define IRS1125_CID_RECONFIG (IRS1125_CID_CUSTOM_BASE + 3)
|
||||||
|
#define IRS1125_CID_ILLU_ON (IRS1125_CID_CUSTOM_BASE + 4)
|
||||||
|
#define IRS1125_CID_NUM_SEQS (IRS1125_CID_CUSTOM_BASE + 5)
|
||||||
|
#define IRS1125_CID_MOD_PLL (IRS1125_CID_CUSTOM_BASE + 6)
|
||||||
|
#define IRS1125_CID_SEQ_CONFIG (IRS1125_CID_CUSTOM_BASE + 7)
|
||||||
|
#define IRS1125_CID_IDENT0 (IRS1125_CID_CUSTOM_BASE + 8)
|
||||||
|
#define IRS1125_CID_IDENT1 (IRS1125_CID_CUSTOM_BASE + 9)
|
||||||
|
#define IRS1125_CID_IDENT2 (IRS1125_CID_CUSTOM_BASE + 10)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S0_EXPO (IRS1125_CID_CUSTOM_BASE + 11)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S0_FRAME (IRS1125_CID_CUSTOM_BASE + 12)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S1_EXPO (IRS1125_CID_CUSTOM_BASE + 13)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S1_FRAME (IRS1125_CID_CUSTOM_BASE + 14)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S2_EXPO (IRS1125_CID_CUSTOM_BASE + 15)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S2_FRAME (IRS1125_CID_CUSTOM_BASE + 16)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S3_EXPO (IRS1125_CID_CUSTOM_BASE + 17)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S3_FRAME (IRS1125_CID_CUSTOM_BASE + 18)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S4_EXPO (IRS1125_CID_CUSTOM_BASE + 19)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S4_FRAME (IRS1125_CID_CUSTOM_BASE + 20)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S5_EXPO (IRS1125_CID_CUSTOM_BASE + 21)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S5_FRAME (IRS1125_CID_CUSTOM_BASE + 22)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S6_EXPO (IRS1125_CID_CUSTOM_BASE + 23)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S6_FRAME (IRS1125_CID_CUSTOM_BASE + 24)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S7_EXPO (IRS1125_CID_CUSTOM_BASE + 25)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S7_FRAME (IRS1125_CID_CUSTOM_BASE + 26)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S8_EXPO (IRS1125_CID_CUSTOM_BASE + 27)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S8_FRAME (IRS1125_CID_CUSTOM_BASE + 28)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S9_EXPO (IRS1125_CID_CUSTOM_BASE + 29)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S9_FRAME (IRS1125_CID_CUSTOM_BASE + 30)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S10_EXPO (IRS1125_CID_CUSTOM_BASE + 31)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S10_FRAME (IRS1125_CID_CUSTOM_BASE + 32)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S11_EXPO (IRS1125_CID_CUSTOM_BASE + 33)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S11_FRAME (IRS1125_CID_CUSTOM_BASE + 34)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S12_EXPO (IRS1125_CID_CUSTOM_BASE + 35)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S12_FRAME (IRS1125_CID_CUSTOM_BASE + 36)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S13_EXPO (IRS1125_CID_CUSTOM_BASE + 37)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S13_FRAME (IRS1125_CID_CUSTOM_BASE + 38)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S14_EXPO (IRS1125_CID_CUSTOM_BASE + 39)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S14_FRAME (IRS1125_CID_CUSTOM_BASE + 40)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S15_EXPO (IRS1125_CID_CUSTOM_BASE + 41)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S15_FRAME (IRS1125_CID_CUSTOM_BASE + 42)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S16_EXPO (IRS1125_CID_CUSTOM_BASE + 43)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S16_FRAME (IRS1125_CID_CUSTOM_BASE + 44)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S17_EXPO (IRS1125_CID_CUSTOM_BASE + 45)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S17_FRAME (IRS1125_CID_CUSTOM_BASE + 46)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S18_EXPO (IRS1125_CID_CUSTOM_BASE + 47)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S18_FRAME (IRS1125_CID_CUSTOM_BASE + 48)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S19_EXPO (IRS1125_CID_CUSTOM_BASE + 49)
|
||||||
|
#define IRS1125_CID_SAFE_RECONFIG_S19_FRAME (IRS1125_CID_CUSTOM_BASE + 50)
|
||||||
|
|
||||||
|
struct irs1125_seq_cfg {
|
||||||
|
__u16 exposure;
|
||||||
|
__u16 framerate;
|
||||||
|
__u16 ps;
|
||||||
|
__u16 pll;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct irs1125_mod_pll {
|
||||||
|
__u16 pllcfg1;
|
||||||
|
__u16 pllcfg2;
|
||||||
|
__u16 pllcfg3;
|
||||||
|
__u16 pllcfg4;
|
||||||
|
__u16 pllcfg5;
|
||||||
|
__u16 pllcfg6;
|
||||||
|
__u16 pllcfg7;
|
||||||
|
__u16 pllcfg8;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* IRS1125 */
|
||||||
|
|
||||||
Reference in New Issue
Block a user