media: i2c: add Aptina MT9M113 SoC sensor driver
Subsystems (2)
cover media: i2c: add Aptina MT9M113 SoC sensor driver
This series adds a V4L2 subdev driver and DT binding for the Aptina MT9M113, a 1.3 Mpx SoC sensor with an on-chip ISP and a small MCU running a "SOC1040" firmware that performs auto-exposure, auto white balance and lens-shading correction. The sensor talks to the host over MIPI CSI-2 (1 or 2 data lanes); register access is over I2C using the Qualcomm CCI helper.
Hardware layout exposed to userspace:
+-------------------+ +-----------------+
| Pixel Array (PA) |--->| IFP / ISP |--->[CSI-2]
| sink-less subdev | | MCU + pipe |
+-------------------+ +-----------------+PA carries V4L2_CID_PIXEL_RATE and V4L2_CID_LINK_FREQ so that downstream receivers walking the graph from the CSIPHY (camss does this) find them on the entity flagged MEDIA_ENT_F_CAM_SENSOR.
V4L2 controls implemented:
- exposure / gain / hflip / vflip
- test pattern
- V4L2_CID_COLORFX (sepia / mono / negative / aqua / vivid)
- V4L2_CID_POWER_LINE_FREQUENCY (50/60 Hz flicker avoidance)
Tested on a HP TouchPad (APQ8060, MSM8x60 family) with the on-board front 1.3 Mpx MT9M113. Probes cleanly, both PA and IFP subdevs register, csiphy_stream_on() picks up link_freq from PA, and the preview pipeline up through CAMSS produces frames. A bounded 3-attempt retry around s_stream(1) handles a residual silicon-level wedge that occasionally leaves the MCU's SEQ_CMD in an inconsistent state on cold start.
The DTS patches that enable the sensor on the HP TouchPad will be sent separately to the ARM/DTS tree.
Herman van Hazendonk (2):
dt-bindings: media: i2c: add aptina,mt9m113
media: i2c: add Aptina MT9M113 1.3 Mpx SoC sensor driver
.../bindings/media/i2c/aptina,mt9m113.yaml | 127 + drivers/media/i2c/Kconfig | 12 + drivers/media/i2c/Makefile | 1 + drivers/media/i2c/mt9m113.c | 2971 +++++++++++++++++ 4 files changed, 3111 insertions(+) create mode 100644 Documentation/devicetree/bindings/media/i2c/aptina,mt9m113.yaml create mode 100644 drivers/media/i2c/mt9m113.c
Signature · 1 line
2.43.0
PATCH 1/2 dt-bindings: media: i2c: add aptina,mt9m113
Add the binding for the Aptina (now ON Semiconductor) MT9M113 1.3 megapixel SoC image sensor with on-die ISP. The chip is used as the front (user-facing) camera on the HP TouchPad tablet and connects to the host SoC over MIPI CSI-2.
The binding describes the chip's i2c address, optional reset and standby GPIOs, the per-supply regulators (VDD, VDD_IO, VDDA), the external clock input, and the CSI-2 endpoint pads exposed via the "port" subnode.
--- .../bindings/media/i2c/aptina,mt9m113.yaml | 127 ++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 Documentation/devicetree/bindings/media/i2c/aptina,mt9m113.yaml
Documentation/devicetree/bindings/media/i2c/aptina,mt9m113.yaml new file +127 -0
@@ -0,0 +1,127 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/media/i2c/aptina,mt9m113.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Aptina MT9M113 1.3 Megapixel CMOS Digital Image Sensor + +maintainers: + - Herman van Hazendonk <[email protected]> + +description: |- + The Aptina MT9M113 is a 1.3 Megapixel CMOS digital image sensor with + 1280x1024 active pixels. It supports dual context operation: + Context A (640x480 preview mode with binning) and Context B (1280x1024 + capture mode). It is programmable through an I2C interface and outputs + image data over a 1-lane MIPI CSI-2 connection. + +properties: + compatible: + const: aptina,mt9m113 + + reg: + description: I2C device address + enum: + - 0x3c + - 0x48 + - 0x5d + + clocks: + description: EXTCLK clock signal (24 MHz typical) + maxItems: 1 + + vdd-supply: + description: + Core digital voltage supply, 1.8V + + vddio-supply: + description: + I/O digital voltage supply, 1.8V or 2.8V + + vaa-supply: + description: + Analog voltage supply, 2.8V + + reset-gpios: + description: |- + Reference to the GPIO connected to the RESET_BAR pin, if any (active + low). + + powerdown-gpios: + description: |- + Reference to the GPIO connected to the STANDBY/PWDN pin, if any (active + high). When asserted, the sensor enters low-power standby mode. + + port: + $ref: /schemas/graph.yaml#/$defs/port-base + additionalProperties: false + + properties: + endpoint: + $ref: /schemas/media/video-interfaces.yaml# + unevaluatedProperties: false + + properties: + bus-type: + const: 4 + description: MIPI CSI-2 D-PHY + + link-frequencies: true + remote-endpoint: true + data-lanes: + minItems: 1 + maxItems: 1 + + required: + - bus-type + - link-frequencies + - data-lanes + + required: + - endpoint + +required: + - compatible + - reg + - clocks + - vdd-supply + - vddio-supply + - vaa-supply + - port + +additionalProperties: false + +examples: + - | + #include <dt-bindings/gpio/gpio.h> + #include <dt-bindings/media/video-interfaces.h> + + i2c0 { + #address-cells = <1>; + #size-cells = <0>; + + camera@3c { + compatible = "aptina,mt9m113"; + reg = <0x3c>; + + clocks = <&mmcc 48>; + + reset-gpios = <&pm8058_gpio 29 GPIO_ACTIVE_LOW>; + powerdown-gpios = <&pm8058_gpio 30 GPIO_ACTIVE_HIGH>; + + vddio-supply = <&pm8058_l15>; + vdd-supply = <&pm8058_l15>; + vaa-supply = <&pm8058_l14>; + + port { + mt9m113_ep: endpoint { + bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>; + link-frequencies = /bits/ 64 <384000000>; + data-lanes = <1>; + remote-endpoint = <&csiphy1_ep>; + }; + }; + }; + }; +...
Signature · 1 line
2.43.0