media: i2c: add driver for ITE IT6625/IT6626

Add a V4L2 subdevice driver for the ITE IT6625/IT6626 HDMI-to-MIPI
CSI-2 bridge chips. IT6625 accepts an HDMI 2.0 input and IT6626 an
HDMI 2.1 input, converting it to a D-PHY (or C/D-PHY on IT6626)
MIPI CSI-2 output. The bridge is configured over I2C, exposes an
HDMI CEC adapter, and supports EDID read/write, DV timings
detection/configuration, and HPD control via the standard V4L2
subdevice pad and video ops.

Signed-off-by: Hermes Wu <Hermes.wu@ite.com.tw>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
[hverkuil: change it6625_v4l2_sd_ctrl_update to a void function]
This commit is contained in:
Hermes Wu 2026-08-11 18:31:26 +08:00 committed by Hans Verkuil
parent cee2619b01
commit 142e5f00bd
6 changed files with 2448 additions and 0 deletions

View File

@ -13965,6 +13965,14 @@ T: git https://gitlab.freedesktop.org/drm/misc/kernel.git
F: Documentation/devicetree/bindings/display/bridge/ite,it66121.yaml F: Documentation/devicetree/bindings/display/bridge/ite,it66121.yaml
F: drivers/gpu/drm/bridge/ite-it66121.c F: drivers/gpu/drm/bridge/ite-it66121.c
ITE IT6625 HDMI to MIPI MEDIA DRIVER
M: Hermes Wu <Hermes.Wu@ite.com.tw>
S: Maintained
T: git git://linuxtv.org/media.git
F: Documentation/devicetree/bindings/media/i2c/ite,it6625.yaml
F: drivers/media/i2c/it6625.c
F: include/uapi/linux/it6625.h
IVTV VIDEO4LINUX DRIVER IVTV VIDEO4LINUX DRIVER
M: Andy Walls <awalls@md.metrocast.net> M: Andy Walls <awalls@md.metrocast.net>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org

View File

@ -1322,6 +1322,24 @@ config VIDEO_ISL7998X
Support for Intersil ISL7998x analog to MIPI-CSI2 or Support for Intersil ISL7998x analog to MIPI-CSI2 or
BT.656 decoder. BT.656 decoder.
config VIDEO_IT6625
tristate "IT6625 HDMI to MIPI CSI bridge"
depends on VIDEO_DEV && I2C
depends on OF
select CEC_CORE
select MEDIA_CONTROLLER
select REGMAP_I2C
select V4L2_FWNODE
select VIDEO_V4L2_SUBDEV_API
help
V4L2 subdevice driver for the ITE IT6625/IT6626 HDMI to MIPI
CSI-2 bridge chips. IT6625 accepts an HDMI 2.0 input and
IT6626 an HDMI 2.1 input, converting it to a MIPI CSI-2
output. The driver also exposes an HDMI CEC adapter.
To compile this driver as a module, choose M here: the
module will be called it6625.
config VIDEO_LT6911UXE config VIDEO_LT6911UXE
tristate "Lontium LT6911UXE decoder" tristate "Lontium LT6911UXE decoder"
depends on ACPI && VIDEO_DEV && I2C depends on ACPI && VIDEO_DEV && I2C

View File

@ -66,6 +66,7 @@ obj-$(CONFIG_VIDEO_IMX678) += imx678.o
obj-$(CONFIG_VIDEO_IMX471) += imx471.o obj-$(CONFIG_VIDEO_IMX471) += imx471.o
obj-$(CONFIG_VIDEO_IR_I2C) += ir-kbd-i2c.o obj-$(CONFIG_VIDEO_IR_I2C) += ir-kbd-i2c.o
obj-$(CONFIG_VIDEO_ISL7998X) += isl7998x.o obj-$(CONFIG_VIDEO_ISL7998X) += isl7998x.o
obj-$(CONFIG_VIDEO_IT6625) += it6625.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
obj-$(CONFIG_VIDEO_LM3646) += lm3646.o obj-$(CONFIG_VIDEO_LM3646) += lm3646.o

2390
drivers/media/i2c/it6625.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,25 @@
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* Controls header for IT6625/IT6626 driver
*/
#ifndef _UAPI_LINUX_IT6625_H
#define _UAPI_LINUX_IT6625_H
#include <linux/v4l2-controls.h>
/*
* Currently detected HDMI audio sampling rate, in Hz. Read-only.
* 0 means the rate is unavailable/unknown: no audio is currently
* present on the input, the hardware reported a sample-rate id this
* driver doesn't recognize, or the status read itself failed. Never a
* literal 0 Hz sample rate.
*/
#define V4L2_CID_IT6625_AUDIO_SAMPLING_RATE (V4L2_CID_USER_IT6625_BASE + 0)
/*
* Whether HDMI audio is currently present on the input. Read-only.
*/
#define V4L2_CID_IT6625_AUDIO_PRESENT (V4L2_CID_USER_IT6625_BASE + 1)
#endif /* _UAPI_LINUX_IT6625_H */

View File

@ -240,6 +240,12 @@ enum v4l2_colorfx {
*/ */
#define V4L2_CID_USER_DCMIPP_BASE (V4L2_CID_USER_BASE + 0x1240) #define V4L2_CID_USER_DCMIPP_BASE (V4L2_CID_USER_BASE + 0x1240)
/*
* The base for IT6625/IT6626 driver controls.
* We reserve 16 controls for this driver.
*/
#define V4L2_CID_USER_IT6625_BASE (V4L2_CID_USER_BASE + 0x1250)
/* MPEG-class control IDs */ /* MPEG-class control IDs */
/* The MPEG controls are applicable to all codec controls /* The MPEG controls are applicable to all codec controls
* and the 'MPEG' part of the define is historical */ * and the 'MPEG' part of the define is historical */