[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20250829090959.82966-1-hardevsinh.palaniya@siliconsignals.io>
Date: Fri, 29 Aug 2025 14:39:49 +0530
From: Hardevsinh Palaniya <hardevsinh.palaniya@...iconsignals.io>
To: sakari.ailus@...ux.intel.com
Cc: Silicon-Signals <siliconsignalsforgit@...il.com>,
Hardevsinh Palaniya <hardevsinh.palaniya@...iconsignals.io>,
Himanshu Bhavani <himanshu.bhavani@...iconsignals.io>,
Mauro Carvalho Chehab <mchehab@...nel.org>,
Rob Herring <robh@...nel.org>,
Krzysztof Kozlowski <krzk+dt@...nel.org>,
Conor Dooley <conor+dt@...nel.org>,
Hans Verkuil <hverkuil@...all.nl>,
"Bryan O'Donoghue" <bryan.odonoghue@...aro.org>,
André Apitzsch <git@...tzsch.eu>,
Hans de Goede <hansg@...nel.org>,
Benjamin Mugnier <benjamin.mugnier@...s.st.com>,
Sylvain Petinot <sylvain.petinot@...s.st.com>,
Heimir Thor Sverrisson <heimir.sverrisson@...il.com>,
Matthias Fend <matthias.fend@...end.at>,
Dongcheng Yan <dongcheng.yan@...el.com>,
Andy Shevchenko <andriy.shevchenko@...ux.intel.com>,
Arnd Bergmann <arnd@...db.de>,
Jingjing Xiong <jingjing.xiong@...el.com>,
linux-media@...r.kernel.org,
devicetree@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: [PATCH v9 0/2] media: i2c: Add ov2735 camera sensor driver
From: Silicon-Signals <siliconsignalsforgit@...il.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
Powered by blists - more mailing lists