← Documents Documentation/devicetree/bindings/display/tilcdc/tilcdc.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

TI tilcdc DRM Controller

AM335x/DA850 LCDC의 bandwidth, color wiring과 encoder graph 바인딩입니다.

Source pathDocumentation/devicetree/bindings/display/tilcdc/tilcdc.txt
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약과 해설

tilcdc.txt:1-82

Blue/red wiring erratum과 TDA19988 endpoint 연결을 설명합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 Device-Tree bindings for tilcdc DRM driver
2
3 Required properties:
4 - compatible: value should be one of the following:
5 - "ti,am33xx-tilcdc" for AM335x based boards
6 - "ti,da850-tilcdc" for DA850/AM18x/OMAP-L138 based boards
7 - interrupts: the interrupt number
8 - reg: base address and size of the LCDC device
9
10 Recommended properties:
11 - ti,hwmods: Name of the hwmod associated to the LCDC
12
13 Optional properties:
14 - max-bandwidth: The maximum pixels per second that the memory
15 interface / lcd controller combination can sustain
16 - max-width: The maximum horizontal pixel width supported by
17 the lcd controller.
18 - max-pixelclock: The maximum pixel clock that can be supported
19 by the lcd controller in KHz.
20 - blue-and-red-wiring: Recognized values "straight" or "crossed".
21 This property deals with the LCDC revision 2 (found on AM335x)
22 color errata [1].
23 - "straight" indicates normal wiring that supports RGB565,
24 BGR888, and XBGR8888 color formats.
25 - "crossed" indicates wiring that has blue and red wires
26 crossed. This setup supports BGR565, RGB888 and XRGB8888
27 formats.
28 - If the property is not present or its value is not recognized
29 the legacy mode is assumed. This configuration supports RGB565,
30 RGB888 and XRGB8888 formats. However, depending on wiring, the red
31 and blue colors are swapped in either 16 or 24-bit color modes.
32
33 Optional nodes:
34
35 - port/ports: to describe a connection to an external encoder. The
36 binding follows Documentation/devicetree/bindings/graph.txt and
37 supports a single port with a single endpoint.
38
39 - See also Documentation/devicetree/bindings/display/tilcdc/panel.txt and
40 Documentation/devicetree/bindings/display/bridge/ti,tfp410.yaml for connecting
41 tfp410 DVI encoder or lcd panel to lcdc
42
43 [1] There is an errata about AM335x color wiring. For 16-bit color mode
44 the wires work as they should (LCD_DATA[0:4] is for Blue[3:7]),
45 but for 24 bit color modes the wiring of blue and red components is
46 crossed and LCD_DATA[0:4] is for Red[3:7] and LCD_DATA[11:15] is
47 for Blue[3-7]. For more details see section 3.1.1 in AM335x
48 Silicon Errata:
49 https://www.ti.com/general/docs/lit/getliterature.tsp?baseLiteratureNumber=sprz360
50
51 Example:
52
53 fb: fb@4830e000 {
54 compatible = "ti,am33xx-tilcdc", "ti,da850-tilcdc";
55 reg = <0x4830e000 0x1000>;
56 interrupt-parent = <&intc>;
57 interrupts = <36>;
58 ti,hwmods = "lcdc";
59
60 blue-and-red-wiring = "crossed";
61
62 port {
63 lcdc_0: endpoint {
64 remote-endpoint = <&hdmi_0>;
65 };
66 };
67 };
68
69 tda19988: tda19988 {
70 compatible = "nxp,tda998x";
71 reg = <0x70>;
72
73 pinctrl-names = "default", "off";
74 pinctrl-0 = <&nxp_hdmi_bonelt_pins>;
75 pinctrl-1 = <&nxp_hdmi_bonelt_off_pins>;
76
77 port {
78 hdmi_0: endpoint {
79 remote-endpoint = <&lcdc_0>;
80 };
81 };
82 };
83

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

tilcdc controller와 color wiring

1-32

tilcdc DRM driver 바인딩입니다. 필수 `compatible`은 AM335x board용 `ti,am33xx-tilcdc` 또는 DA850/AM18x/OMAP-L138 board용 `ti,da850-tilcdc`입니다. `interrupts`는 interrupt 번호, `reg`는 LCDC base address와 size입니다. 권장 `ti,hwmods`는 LCDC와 연관된 hwmod 이름입니다.

선택 `max-bandwidth`는 memory interface/LCD controller 조합이 감당할 수 있는 초당 최대 pixel 수, `max-width`는 최대 horizontal pixel width, `max-pixelclock`은 지원할 수 있는 최대 pixel clock을 kHz 단위로 지정합니다.

`blue-and-red-wiring`은 `straight` 또는 `crossed`를 인식하며 AM335x의 LCDC revision 2 color erratum을 다룹니다. `straight`는 RGB565, BGR888, XBGR8888을, `crossed`는 BGR565, RGB888, XRGB8888을 지원합니다.

속성이 없거나 값이 인식되지 않으면 legacy mode를 사용합니다. 이 mode는 RGB565, RGB888, XRGB8888을 지원하지만 실제 wiring에 따라 16-bit 또는 24-bit mode에서 red와 blue가 서로 바뀔 수 있습니다.

tilcdc blue/red wiring mode
Mode지원 format주의
straightRGB565, BGR888, XBGR8888Normal wiring
crossedBGR565, RGB888, XRGB8888Blue/red wires crossed
legacyRGB565, RGB888, XRGB888816/24-bit 중 한 mode에서 swap 가능

Wiring 선택에 따라 올바르게 지원되는 color format이 달라집니다.

External encoder graph와 AM335x erratum

33-50

선택 `port` 또는 `ports` node는 external encoder 연결을 기술합니다. `Documentation/devicetree/bindings/graph.txt`를 따르며 단일 endpoint를 가진 단일 port를 지원합니다.

TFP410 DVI encoder나 LCD panel 연결은 `Documentation/devicetree/bindings/display/tilcdc/panel.txt`와 `Documentation/devicetree/bindings/display/bridge/ti,tfp410.yaml`도 참조합니다.

AM335x color wiring erratum에서 16-bit mode는 `LCD_DATA[0:4]`가 `Blue[3:7]`로 정상 동작하지만 24-bit mode에서는 blue와 red wiring이 교차합니다. 이때 `LCD_DATA[0:4]`는 `Red[3:7]`, `LCD_DATA[11:15]`는 `Blue[3-7]`입니다. 자세한 내용은 AM335x Silicon Errata section 3.1.1과 원문의 TI literature URL을 참조합니다.

AM335x LCDC와 TDA19988 graph 예제

51-82

예제 framebuffer는 두 compatible을 함께 선언하고 register 영역, interrupt 36, `lcdc` hwmod와 `blue-and-red-wiring = "crossed"`를 사용합니다. `lcdc_0` endpoint는 HDMI encoder의 `hdmi_0`을 가리킵니다.

TDA19988 node는 `nxp,tda998x`, I2C address `0x70`, default/off pinctrl state를 사용하고 `hdmi_0` endpoint에서 `lcdc_0`을 상호 참조합니다.

fb: fb@4830e000 {
        compatible = "ti,am33xx-tilcdc", "ti,da850-tilcdc";
        reg = <0x4830e000 0x1000>;
        interrupt-parent = <&intc>;
        interrupts = <36>;
        ti,hwmods = "lcdc";

        blue-and-red-wiring = "crossed";

        port {
                lcdc_0: endpoint {
                        remote-endpoint = <&hdmi_0>;
                };
        };
};

tda19988: tda19988 {
        compatible = "nxp,tda998x";
        reg = <0x70>;

        pinctrl-names = "default", "off";
        pinctrl-0 = <&nxp_hdmi_bonelt_pins>;
        pinctrl-1 = <&nxp_hdmi_bonelt_off_pins>;

        port {
                hdmi_0: endpoint {
                        remote-endpoint = <&lcdc_0>;
                };
        };
};
tilcdc external encoder graph
tilcdc framebuffercrossed blue/red wiring
lcdc_0 endpointRGB pixel output
hdmi_0 endpointRemote graph link
TDA19988HDMI encoding

LCDC endpoint와 TDA19988 HDMI encoder endpoint가 서로를 참조합니다.