.../bindings/media/i2c/ovti,ov2735.yaml | 108 ++ MAINTAINERS | 8 + drivers/media/i2c/Kconfig | 10 + drivers/media/i2c/Makefile | 1 + drivers/media/i2c/ov2735.c | 1109 +++++++++++++++++ 5 files changed, 1236 insertions(+) create mode 100644 Documentation/devicetree/bindings/media/i2c/ovti,ov2735.yaml create mode 100644 drivers/media/i2c/ov2735.c
From: Silicon-Signals <siliconsignalsforgit@gmail.com> The Omnivision OV2735 is a 1/2.7-Inch CMOS image sensor with an active array size of 1920 x 1080. The following features are supported: - Manual exposure an gain control support. - vblank/hblank control support. - Test pattern support control. - Supported resolution: 1920 x 1080 @ 30fps (SGRBG10). The driver is tested on mainline branch v6.14-rc6 on IMX8MP Debix Model a. v4l2-compliance 1.31.0-5387, 64 bits, 64-bit time_t v4l2-compliance SHA: 5508bc4301ac 2025-08-25 08:14:22 Compliance test for rkisp1 device /dev/video0: Driver Info: Driver name : rkisp1 Card type : rkisp1 Bus info : platform:rkisp1 Driver version : 6.14.0 Capabilities : 0xa4201000 Video Capture Multiplanar I/O MC Streaming Extended Pix Format Device Capabilities Device Caps : 0x24201000 Video Capture Multiplanar I/O MC Streaming Extended Pix Format Media Driver Info: Driver name : rkisp1 Model : rkisp1 Serial : Bus info : platform:rkisp1 Media version : 6.14.0 Hardware revision: 0x0000000e (14) Driver version : 6.14.0 Interface Info: ID : 0x0300000b Type : V4L Video Entity Info: ID : 0x00000009 (9) Name : rkisp1_mainpath Function : V4L2 I/O Pad 0x0100000a : 0: Sink Link 0x02000017: from remote pad 0x1000008 of entity 'rkisp1_resizer_mainpath' (Video Scaler): Data, Enabled, Immutable Required ioctls: test MC information (see 'Media Driver Info' above): OK test VIDIOC_QUERYCAP: OK test invalid ioctls: OK Allow for multiple opens: test second /dev/video0 open: OK test VIDIOC_QUERYCAP: OK test VIDIOC_G/S_PRIORITY: OK test for unlimited opens: OK Debug ioctls: test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported) test VIDIOC_LOG_STATUS: OK (Not Supported) Input ioctls: test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported) test VIDIOC_ENUMAUDIO: OK (Not Supported) test VIDIOC_G/S/ENUMINPUT: OK test VIDIOC_G/S_AUDIO: OK (Not Supported) Inputs: 1 Audio Inputs: 0 Tuners: 0 Output ioctls: test VIDIOC_G/S_MODULATOR: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_ENUMAUDOUT: OK (Not Supported) test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported) test VIDIOC_G/S_AUDOUT: OK (Not Supported) Outputs: 0 Audio Outputs: 0 Modulators: 0 Input/Output configuration ioctls: test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported) test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported) test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported) test VIDIOC_G/S_EDID: OK (Not Supported) Control ioctls (Input 0): test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported) test VIDIOC_QUERYCTRL: OK (Not Supported) test VIDIOC_G/S_CTRL: OK (Not Supported) test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 0 Private Controls: 0 Format ioctls (Input 0): test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK test VIDIOC_G/S_PARM: OK (Not Supported) test VIDIOC_G_FBUF: OK (Not Supported) test VIDIOC_G_FMT: OK test VIDIOC_TRY_FMT: OK test VIDIOC_S_FMT: OK test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) test Cropping: OK (Not Supported) test Composing: OK (Not Supported) test Scaling: OK Codec ioctls (Input 0): test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) Buffer ioctls (Input 0): test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK test CREATE_BUFS maximum buffers: OK test VIDIOC_REMOVE_BUFS: OK test VIDIOC_EXPBUF: OK test Requests: OK (Not Supported) Total for rkisp1 device /dev/video0: 48, Succeeded: 48, Failed: 0, Warnings: 0 Media controller API version 6.14.0 Media device information ------------------------ driver rkisp1 model rkisp1 serial bus info platform:rkisp1 hw revision 0xe driver version 6.14.0 Device topology - entity 1: rkisp1_isp (4 pads, 4 links, 0 routes) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev0 pad0: SINK,MUST_CONNECT [stream:0 fmt:SGRBG10_1X10/1920x1080 field:none colorspace:raw xfer:none ycbcr:601 quantization:full-range crop.bounds:(0,0)/1920x1080 crop:(0,0)/1920x1080] <- "csis-32e40000.csi":1 [ENABLED] pad1: SINK [stream:0 fmt:unknown/0x0 field:none] <- "rkisp1_params":0 [ENABLED,IMMUTABLE] pad2: SOURCE [stream:0 fmt:YUYV8_2X8/1920x1080 field:none colorspace:raw xfer:none ycbcr:601 quantization:lim-range crop.bounds:(0,0)/1920x1080 crop:(0,0)/1920x1080] -> "rkisp1_resizer_mainpath":0 [ENABLED] pad3: SOURCE [stream:0 fmt:unknown/0x0 field:none] -> "rkisp1_stats":0 [ENABLED,IMMUTABLE] - entity 6: rkisp1_resizer_mainpath (2 pads, 2 links, 0 routes) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev1 pad0: SINK,MUST_CONNECT [stream:0 fmt:YUYV8_2X8/1920x1080 field:none colorspace:raw xfer:none ycbcr:601 quantization:lim-range crop.bounds:(0,0)/1920x1080 crop:(0,0)/1920x1080] <- "rkisp1_isp":2 [ENABLED] pad1: SOURCE,MUST_CONNECT [stream:0 fmt:YUYV8_2X8/800x600 field:none colorspace:raw xfer:none ycbcr:601 quantization:lim-range] -> "rkisp1_mainpath":0 [ENABLED,IMMUTABLE] - entity 9: rkisp1_mainpath (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video0 pad0: SINK <- "rkisp1_resizer_mainpath":1 [ENABLED,IMMUTABLE] - entity 13: rkisp1_stats (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video1 pad0: SINK <- "rkisp1_isp":3 [ENABLED,IMMUTABLE] - entity 17: rkisp1_params (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video2 pad0: SOURCE -> "rkisp1_isp":1 [ENABLED,IMMUTABLE] - entity 29: csis-32e40000.csi (2 pads, 2 links, 0 routes) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev2 pad0: SINK,MUST_CONNECT [stream:0 fmt:SGRBG10_1X10/1920x1080 field:none colorspace:raw xfer:none ycbcr:601 quantization:full-range] <- "ov2735 1-003c":0 [ENABLED] pad1: SOURCE,MUST_CONNECT [stream:0 fmt:SGRBG10_1X10/1920x1080 field:none colorspace:raw xfer:none ycbcr:601 quantization:full-range] -> "rkisp1_isp":0 [ENABLED] - entity 34: ov2735 1-003c (1 pad, 1 link, 0 routes) type V4L2 subdev subtype Sensor flags 0 device node name /dev/v4l-subdev3 pad0: SOURCE [stream:0 fmt:SGRBG10_1X10/1920x1080 field:none colorspace:raw xfer:none ycbcr:601 quantization:full-range crop.bounds:(8,8)/1920x1080 crop:(8,8)/1920x1080] -> "csis-32e40000.csi":0 [ENABLED] v8 -> v9: In Patch 1/2: - Dropped tree reference v7 -> v8 In Patch 2/2: - Correct some macro prefixes - Add register names for timing and analog control registers - Make the common register array const - Wrap lines within 80 columns - Remove unnecessary guard delay v6 -> v7 In Patch 1/2: - Remove 'link-frequencies' property (already present) In Patch 2/2: - Add mutex guard - Correct pll_ctrl_enable macro name - Add error check for '__v4l2_ctrl_modify_range' - Remove unnecessary comments v5 -> v6 In Patch 1/2: - Add MAINTAINERS entry In Patch 2/2: - Add Required headers - Change ov2735_page_access prototype to remove casting - Add error check for devm_pm_runtime* - Remove unused variable from stream_enable (Media CI robot detected) v4 -> v5 In Patch 1/2: - Add Krzysztof's Review tag. In Patch 2/2: - Remove redundant if (ret && err) check in ov2735_page_access() - Address coding style issues (indentation, format specifier, combined declaration - Replace hardcoded values with USEC_PER_MSEC where appropriate - removing unused "ov2735->client = client" v3 -> v4 In Patch 1/2: - Removed the clock-names property from the device tree binding. - Added link-frequencies property to the port node. - Cleaned up the example by removing unnecessary entries. In Patch 2/2: - Removed the cci_ prefix from read/write functions and custom page macros. - Corrected error handling in the ov2735_page_access() function. - Calculated PLL parameters dynamically based on the specified link frequency. - Set resolution registers from format and crop instead of hardcoding. - Fixed a memory leak in ov2735_parse_endpoint(). - Switched to devm_pm_runtime_*() functions for runtime PM handling. - Added documentation for the use of msleep() in the power_on() function. - Corrected GPIO polarity handling in the power_off() function. v2 -> v3 In Patch 1/2: - Renamed pwdn pin to enable pin. - Changed supply names to lowercase and added them to required properties. In Patch 2/2: - Stored page number in CCI private bits. - Added helper functions to handle page switching in cci_read() and cci_write(). - Removed ov2735_mbus_codes. - Corrected control count to 9. v1 -> v2 - Added necessary header files. - Corrected indentation. - Used the ret parameter in cci_write and cci_read functions. Hardevsinh Palaniya (1): media: i2c: add ov2735 image sensor driver Himanshu Bhavani (1): dt-bindings: media: i2c: Add ov2735 sensor .../bindings/media/i2c/ovti,ov2735.yaml | 108 ++ MAINTAINERS | 8 + drivers/media/i2c/Kconfig | 10 + drivers/media/i2c/Makefile | 1 + drivers/media/i2c/ov2735.c | 1109 +++++++++++++++++ 5 files changed, 1236 insertions(+) create mode 100644 Documentation/devicetree/bindings/media/i2c/ovti,ov2735.yaml create mode 100644 drivers/media/i2c/ov2735.c -- 2.34.1
Hi Hardev, On Fri, Aug 29, 2025 at 02:39:49PM +0530, Hardevsinh Palaniya wrote: > From: Silicon-Signals <siliconsignalsforgit@gmail.com> > > The Omnivision OV2735 is a 1/2.7-Inch CMOS image sensor with an > active array size of 1920 x 1080. > > The following features are supported: > - Manual exposure an gain control support. > - vblank/hblank control support. > - Test pattern support control. > - Supported resolution: 1920 x 1080 @ 30fps (SGRBG10). > > The driver is tested on mainline branch v6.14-rc6 on IMX8MP Debix Model a. > > v4l2-compliance 1.31.0-5387, 64 bits, 64-bit time_t > v4l2-compliance SHA: 5508bc4301ac 2025-08-25 08:14:22 > > Compliance test for rkisp1 device /dev/video0: Could you run this on the sensor sub-device, using -u option (currently /seems to be dev/v4l-subdev3)? -- Regards, Sakari Ailus
© 2016 - 2025 Red Hat, Inc.