e80cb1fae5
This patch adds device tree support for FIMC driver on S5PV210 and Exynos4 SoCs. The FIMC IP block's features and quirks encoded statically in the driver are now parsed from the device tree. Once all relevant platforms are converted to device tree based booting the FIMC variant data structures will all be removed from the driver. Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
102 lines
3.7 KiB
Plaintext
102 lines
3.7 KiB
Plaintext
Samsung S5P/EXYNOS SoC Camera Subsystem (FIMC)
|
|
----------------------------------------------
|
|
|
|
The S5P/Exynos SoC Camera subsystem comprises of multiple sub-devices
|
|
represented by separate device tree nodes. Currently this includes: FIMC (in
|
|
the S5P SoCs series known as CAMIF), MIPI CSIS, FIMC-LITE and FIMC-IS (ISP).
|
|
|
|
The sub-subdevices are defined as child nodes of the common 'camera' node which
|
|
also includes common properties of the whole subsystem not really specific to
|
|
any single sub-device, like common camera port pins or the CAMCLK clock outputs
|
|
for external image sensors attached to an SoC.
|
|
|
|
Common 'camera' node
|
|
--------------------
|
|
|
|
Required properties:
|
|
|
|
- compatible : must be "samsung,fimc", "simple-bus"
|
|
- clocks : list of clock specifiers, corresponding to entries in
|
|
clock-names property;
|
|
- clock-names : must contain "fimc", "sclk_fimc" entries, matching entries
|
|
in the clocks property.
|
|
|
|
The 'camera' node must include at least one 'fimc' child node.
|
|
|
|
|
|
'fimc' device nodes
|
|
-------------------
|
|
|
|
Required properties:
|
|
|
|
- compatible: "samsung,s5pv210-fimc" for S5PV210, "samsung,exynos4210-fimc"
|
|
for Exynos4210 and "samsung,exynos4212-fimc" for Exynos4x12 SoCs;
|
|
- reg: physical base address and length of the registers set for the device;
|
|
- interrupts: should contain FIMC interrupt;
|
|
- clocks: list of clock specifiers, must contain an entry for each required
|
|
entry in clock-names;
|
|
- clock-names: must include "fimc", "sclk_fimc", "mux" entries and optionally
|
|
"parent" entry.
|
|
- samsung,pix-limits: an array of maximum supported image sizes in pixels, for
|
|
details refer to Table 2-1 in the S5PV210 SoC User Manual; The meaning of
|
|
each cell is as follows:
|
|
0 - scaler input horizontal size,
|
|
1 - input horizontal size for the scaler bypassed,
|
|
2 - REAL_WIDTH without input rotation,
|
|
3 - REAL_HEIGHT with input rotation,
|
|
- samsung,sysreg: a phandle to the SYSREG node.
|
|
|
|
Each FIMC device should have an alias in the aliases node, in the form of
|
|
fimc<n>, where <n> is an integer specifying the IP block instance.
|
|
|
|
Optional properties:
|
|
|
|
- clock-frequency: maximum FIMC local clock (LCLK) frequency;
|
|
- samsung,min-pix-sizes: an array specyfing minimum image size in pixels at
|
|
the FIMC input and output DMA, in the first and second cell respectively.
|
|
Default value when this property is not present is <16 16>;
|
|
- samsung,min-pix-alignment: minimum supported image height alignment (first
|
|
cell) and the horizontal image offset (second cell). The values are in pixels
|
|
and default to <2 1> when this property is not present;
|
|
- samsung,mainscaler-ext: a boolean property indicating whether the FIMC IP
|
|
supports extended image size and has CIEXTEN register;
|
|
- samsung,rotators: a bitmask specifying whether this IP has the input and
|
|
the output rotator. Bits 4 and 0 correspond to input and output rotator
|
|
respectively. If a rotator is present its corresponding bit should be set.
|
|
Default value when this property is not specified is 0x11.
|
|
- samsung,cam-if: a bolean property indicating whether the IP block includes
|
|
the camera input interface.
|
|
- samsung,isp-wb: this property must be present if the IP block has the ISP
|
|
writeback input.
|
|
- samsung,lcd-wb: this property must be present if the IP block has the LCD
|
|
writeback input.
|
|
|
|
|
|
Example:
|
|
|
|
aliases {
|
|
fimc0 = &fimc_0;
|
|
};
|
|
|
|
camera {
|
|
compatible = "samsung,fimc", "simple-bus";
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
status = "okay";
|
|
|
|
fimc_0: fimc@11800000 {
|
|
compatible = "samsung,exynos4210-fimc";
|
|
reg = <0x11800000 0x1000>;
|
|
interrupts = <0 85 0>;
|
|
status = "okay";
|
|
};
|
|
|
|
csis_0: csis@11880000 {
|
|
compatible = "samsung,exynos4210-csis";
|
|
reg = <0x11880000 0x1000>;
|
|
interrupts = <0 78 0>;
|
|
};
|
|
};
|
|
|
|
The MIPI-CSIS device binding is defined in samsung-mipi-csis.txt.
|