Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 463b21fb authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull exynos media updates from Mauro Carvalho Chehab:
 "These are the remaining patches I have for the merge windows.  It
  basically adds a new sensor and adds the needed DT bits for it to
  work"

* 'topic/exynos' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media:
  [media] s5p-fimc: Remove reference to outdated macro
  [media] s5p-jpeg: Fix broken indentation in jpeg-regs.h
  [media] exynos4-is: Add the FIMC-IS ISP capture DMA driver
  [media] exynos4-is: Add support for asynchronous subdevices registration
  [media] exynos4-is: Add clock provider for the SCLK_CAM clock outputs
  [media] exynos4-is: Use external s5k6a3 sensor driver
  [media] V4L: s5c73m3: Add device tree support
  [media] V4L: Add driver for s5k6a3 image sensor
  [media] Documentation: devicetree: Update Samsung FIMC DT binding
  [media] Documentation: dt: Add binding documentation for S5C73M3 camera
  [media] Documentation: dt: Add binding documentation for S5K6A3 image sensor
parents 8e0c0832 97e9858e
Loading
Loading
Loading
Loading
+29 −15
Original line number Diff line number Diff line
@@ -21,6 +21,16 @@ Required properties:
- clock-names : must contain "sclk_cam0", "sclk_cam1", "pxl_async0",
  "pxl_async1" entries, matching entries in the clocks property.

- #clock-cells: from the common clock bindings (../clock/clock-bindings.txt),
  must be 1. A clock provider is associated with the 'camera' node and it should
  be referenced by external sensors that use clocks provided by the SoC on
  CAM_*_CLKOUT pins. The clock specifier cell stores an index of a clock.
  The indices are 0, 1 for CAM_A_CLKOUT, CAM_B_CLKOUT clocks respectively.

- clock-output-names: from the common clock bindings, should contain names of
  clocks registered by the camera subsystem corresponding to CAM_A_CLKOUT,
  CAM_B_CLKOUT output clocks respectively.

The pinctrl bindings defined in ../pinctrl/pinctrl-bindings.txt must be used
to define a required pinctrl state named "default" and optional pinctrl states:
"idle", "active-a", active-b". These optional states can be used to switch the
@@ -32,6 +42,7 @@ way around.

The 'camera' node must include at least one 'fimc' child node.


'fimc' device nodes
-------------------

@@ -88,7 +99,7 @@ port nodes specifies data input - 0, 1 indicates input A, B respectively.

Optional properties

- samsung,camclk-out : specifies clock output for remote sensor,
- samsung,camclk-out (deprecated) : specifies clock output for remote sensor,
  0 - CAM_A_CLKOUT, 1 - CAM_B_CLKOUT;

Image sensor nodes
@@ -97,8 +108,6 @@ Image sensor nodes
The sensor device nodes should be added to their control bus controller (e.g.
I2C0) nodes and linked to a port node in the csis or the parallel-ports node,
using the common video interfaces bindings, defined in video-interfaces.txt.
The implementation of this bindings requires clock-frequency property to be
present in the sensor device nodes.

Example:

@@ -114,7 +123,7 @@ Example:
			vddio-supply = <...>;

			clock-frequency = <24000000>;
			clocks = <...>;
			clocks = <&camera 1>;
			clock-names = "mclk";

			port {
@@ -135,7 +144,7 @@ Example:
			vddio-supply = <...>;

			clock-frequency = <24000000>;
			clocks = <...>;
			clocks = <&camera 0>;
			clock-names = "mclk";

			port {
@@ -149,12 +158,17 @@ Example:

	camera {
		compatible = "samsung,fimc", "simple-bus";
		#address-cells = <1>;
		#size-cells = <1>;
		status = "okay";

		clocks = <&clock 132>, <&clock 133>, <&clock 351>,
			 <&clock 352>;
		clock-names = "sclk_cam0", "sclk_cam1", "pxl_async0",
			      "pxl_async1";
		#clock-cells = <1>;
		clock-output-names = "cam_a_clkout", "cam_b_clkout";
		pinctrl-names = "default";
		pinctrl-0 = <&cam_port_a_clk_active>;
		status = "okay";
		#address-cells = <1>;
		#size-cells = <1>;

		/* parallel camera ports */
		parallel-ports {
+97 −0
Original line number Diff line number Diff line
Samsung S5C73M3 8Mp camera ISP
------------------------------

The S5C73M3 camera ISP supports MIPI CSI-2 and parallel (ITU-R BT.656) video
data busses. The I2C bus is the main control bus and additionally the SPI bus
is used, mostly for transferring the firmware to and from the device. Two
slave device nodes corresponding to these control bus interfaces are required
and should be placed under respective bus controller nodes.

I2C slave device node
---------------------

Required properties:

- compatible	    : "samsung,s5c73m3";
- reg		    : I2C slave address of the sensor;
- vdd-int-supply    : digital power supply (1.2V);
- vdda-supply	    : analog power supply (1.2V);
- vdd-reg-supply    : regulator input power supply (2.8V);
- vddio-host-supply : host I/O power supply (1.8V to 2.8V);
- vddio-cis-supply  : CIS I/O power supply (1.2V to 1.8V);
- vdd-af-supply     : lens power supply (2.8V);
- xshutdown-gpios   : specifier of GPIO connected to the XSHUTDOWN pin;
- standby-gpios     : specifier of GPIO connected to the STANDBY pin;
- clocks	    : should contain list of phandle and clock specifier pairs
		      according to common clock bindings for the clocks described
		      in the clock-names property;
- clock-names	    : should contain "cis_extclk" entry for the CIS_EXTCLK clock;

Optional properties:

- clock-frequency   : the frequency at which the "cis_extclk" clock should be
		      configured to operate, in Hz; if this property is not
		      specified default 24 MHz value will be used.

The common video interfaces bindings (see video-interfaces.txt) should be used
to specify link from the S5C73M3 to an external image data receiver. The S5C73M3
device node should contain one 'port' child node with an 'endpoint' subnode for
this purpose. The data link from a raw image sensor to the S5C73M3 can be
similarly specified, but it is optional since the S5C73M3 ISP and a raw image
sensor are usually inseparable and form a hybrid module.

Following properties are valid for the endpoint node(s):

endpoint subnode
----------------

- data-lanes : (optional) specifies MIPI CSI-2 data lanes as covered in
  video-interfaces.txt. This sensor doesn't support data lane remapping
  and physical lane indexes in subsequent elements of the array should
  be only consecutive ascending values.

SPI device node
---------------

Required properties:

- compatible	    : "samsung,s5c73m3";

For more details see description of the SPI busses bindings
(../spi/spi-bus.txt) and bindings of a specific bus controller.

Example:

i2c@138A000000 {
	...
	s5c73m3@3c {
		compatible = "samsung,s5c73m3";
		reg = <0x3c>;
		vdd-int-supply = <&buck9_reg>;
		vdda-supply = <&ldo17_reg>;
		vdd-reg-supply = <&cam_io_reg>;
		vddio-host-supply = <&ldo18_reg>;
		vddio-cis-supply = <&ldo9_reg>;
		vdd-af-supply = <&cam_af_reg>;
		clock-frequency = <24000000>;
		clocks = <&clk 0>;
		clock-names = "cis_extclk";
		reset-gpios = <&gpf1 3 1>;
		standby-gpios = <&gpm0 1 1>;
		port {
			s5c73m3_ep: endpoint {
				remote-endpoint = <&csis0_ep>;
				data-lanes = <1 2 3 4>;
			};
		};
	};
};

spi@1392000 {
	...
	s5c73m3_spi: s5c73m3@0 {
		compatible = "samsung,s5c73m3";
		reg = <0>;
		...
	};
};
+33 −0
Original line number Diff line number Diff line
Samsung S5K6A3(YX) raw image sensor
---------------------------------

S5K6A3(YX) is a raw image sensor with MIPI CSI-2 and CCP2 image data interfaces
and CCI (I2C compatible) control bus.

Required properties:

- compatible	: "samsung,s5k6a3";
- reg		: I2C slave address of the sensor;
- svdda-supply	: core voltage supply;
- svddio-supply	: I/O voltage supply;
- afvdd-supply	: AF (actuator) voltage supply;
- gpios		: specifier of a GPIO connected to the RESET pin;
- clocks	: should contain list of phandle and clock specifier pairs
		  according to common clock bindings for the clocks described
		  in the clock-names property;
- clock-names	: should contain "extclk" entry for the sensor's EXTCLK clock;

Optional properties:

- clock-frequency : the frequency at which the "extclk" clock should be
		    configured to operate, in Hz; if this property is not
		    specified default 24 MHz value will be used.

The common video interfaces bindings (see video-interfaces.txt) should be
used to specify link to the image data receiver. The S5K6A3(YX) device
node should contain one 'port' child node with an 'endpoint' subnode.

Following properties are valid for the endpoint node:

- data-lanes : (optional) specifies MIPI CSI-2 data lanes as covered in
  video-interfaces.txt.  The sensor supports only one data lane.
+2 −3
Original line number Diff line number Diff line
@@ -151,8 +151,7 @@ CONFIG_S5P_DEV_FIMC1 \
CONFIG_S5P_DEV_FIMC2  |    optional
CONFIG_S5P_DEV_FIMC3  |
CONFIG_S5P_SETUP_FIMC /
CONFIG_S5P_SETUP_MIPIPHY \
CONFIG_S5P_DEV_CSIS0     | optional for MIPI-CSI interface
CONFIG_S5P_DEV_CSIS0  \    optional for MIPI-CSI interface
CONFIG_S5P_DEV_CSIS1  /

Except that, relevant s5p_device_fimc? should be registered in the machine code
+8 −0
Original line number Diff line number Diff line
@@ -579,6 +579,14 @@ config VIDEO_S5K6AA
	  This is a V4L2 sensor-level driver for Samsung S5K6AA(FX) 1.3M
	  camera sensor with an embedded SoC image signal processor.

config VIDEO_S5K6A3
	tristate "Samsung S5K6A3 sensor support"
	depends on MEDIA_CAMERA_SUPPORT
	depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
	---help---
	  This is a V4L2 sensor-level driver for Samsung S5K6A3 raw
	  camera sensor.

config VIDEO_S5K4ECGX
        tristate "Samsung S5K4ECGX sensor support"
        depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
Loading