-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This adds support for the LVDS Display Bridge contained in i.MX5 and i.MX6 SoCs. Bit mapping, data width, and video timings are configurable via device tree. Dual-channel mode is supported for a single high-resolution source. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> Signed-off-by: Shawn Guo <shawn.guo@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
- Loading branch information
Sascha Hauer
authored and
Greg Kroah-Hartman
committed
Jun 18, 2013
1 parent
0c29359
commit ac4c1a9
Showing
4 changed files
with
717 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
Device-Tree bindings for LVDS Display Bridge (ldb) | ||
|
||
LVDS Display Bridge | ||
=================== | ||
|
||
The LVDS Display Bridge device tree node contains up to two lvds-channel | ||
nodes describing each of the two LVDS encoder channels of the bridge. | ||
|
||
Required properties: | ||
- #address-cells : should be <1> | ||
- #size-cells : should be <0> | ||
- compatible : should be "fsl,imx53-ldb" or "fsl,imx6q-ldb". | ||
Both LDB versions are similar, but i.MX6 has an additional | ||
multiplexer in the front to select any of the four IPU display | ||
interfaces as input for each LVDS channel. | ||
- gpr : should be <&gpr> on i.MX53 and i.MX6q. | ||
The phandle points to the iomuxc-gpr region containing the LVDS | ||
control register. | ||
- clocks, clock-names : phandles to the LDB divider and selector clocks and to | ||
the display interface selector clocks, as described in | ||
Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
The following clocks are expected on i.MX53: | ||
"di0_pll" - LDB LVDS channel 0 mux | ||
"di1_pll" - LDB LVDS channel 1 mux | ||
"di0" - LDB LVDS channel 0 gate | ||
"di1" - LDB LVDS channel 1 gate | ||
"di0_sel" - IPU1 DI0 mux | ||
"di1_sel" - IPU1 DI1 mux | ||
On i.MX6q the following additional clocks are needed: | ||
"di2_sel" - IPU2 DI0 mux | ||
"di3_sel" - IPU2 DI1 mux | ||
The needed clock numbers for each are documented in | ||
Documentation/devicetree/bindings/clock/imx5-clock.txt, and in | ||
Documentation/devicetree/bindings/clock/imx6q-clock.txt. | ||
|
||
Optional properties: | ||
- pinctrl-names : should be "default" on i.MX53, not used on i.MX6q | ||
- pinctrl-0 : a phandle pointing to LVDS pin settings on i.MX53, | ||
not used on i.MX6q | ||
- fsl,dual-channel : boolean. if it exists, only LVDS channel 0 should | ||
be configured - one input will be distributed on both outputs in dual | ||
channel mode | ||
|
||
LVDS Channel | ||
============ | ||
|
||
Each LVDS Channel has to contain a display-timings node that describes the | ||
video timings for the connected LVDS display. For detailed information, also | ||
have a look at Documentation/devicetree/bindings/video/display-timing.txt. | ||
|
||
Required properties: | ||
- reg : should be <0> or <1> | ||
- crtcs : a list of phandles with index pointing to the IPU display interfaces | ||
that can be used as video source for this channel. | ||
- fsl,data-mapping : should be "spwg" or "jeida" | ||
This describes how the color bits are laid out in the | ||
serialized LVDS signal. | ||
- fsl,data-width : should be <18> or <24> | ||
|
||
example: | ||
|
||
gpr: iomuxc-gpr@53fa8000 { | ||
/* ... */ | ||
}; | ||
|
||
ldb: ldb@53fa8008 { | ||
#address-cells = <1>; | ||
#size-cells = <0>; | ||
compatible = "fsl,imx53-ldb"; | ||
gpr = <&gpr>; | ||
clocks = <&clks 122>, <&clks 120>, | ||
<&clks 115>, <&clks 116>, | ||
<&clks 123>, <&clks 85>; | ||
clock-names = "di0_pll", "di1_pll", | ||
"di0_sel", "di1_sel", | ||
"di0", "di1"; | ||
|
||
lvds-channel@0 { | ||
reg = <0>; | ||
crtcs = <&ipu 0>; | ||
fsl,data-mapping = "spwg"; | ||
fsl,data-width = <24>; | ||
|
||
display-timings { | ||
/* ... */ | ||
}; | ||
}; | ||
|
||
lvds-channel@1 { | ||
reg = <1>; | ||
crtcs = <&ipu 1>; | ||
fsl,data-mapping = "spwg"; | ||
fsl,data-width = <24>; | ||
|
||
display-timings { | ||
/* ... */ | ||
}; | ||
}; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.