Registered User mNo edit summary |
Registered User Tag: 2017 source edit |
||
(29 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
{{ApplicableFor | |||
|MPUs list=STM32MP13x, STM32MP15x, STM32MP25x | |||
|MPUs checklist=STM32MP13x, STM32MP15x, STM32MP25x | |||
}} | |||
<noinclude></noinclude> | |||
== Article purpose == | |||
The purpose of this article is to: | |||
* List the display bridge hardware components that might be integrated in the different [[:Category:STM32_MPU_boards|boards]]. | |||
* Link these components to the corresponding software framework(s). | |||
* Point to the appropriate component datasheets. | |||
* Explain, when necessary, how to configure these components. | |||
{{Info|Some of these hardware components are part of the [https://www.st.com/en/evaluation-tools/accessories-for-stm32-boards/products.html accessories for STM32 boards] like the [https://www.st.com/en/evaluation-tools/b-lcdad-hdmi1.html B-LCDAD-HDMI1] for instance.}} | |||
== Software frameworks == | |||
{{:STM32MP15_internal_peripherals_software_table_template}} | |||
| Visual | |||
| [[#Analog_Devices_adv7533_-26_adv7535 | Analog Devices adv7533 & adv7535]] | |||
| | |||
| [[DRM KMS overview | DRM/KMS framework]] | |||
| | |||
| MIPI<sup>®</sup> DSI to HDMI transmitter | |||
|- | |||
| Visual | |||
| [[#Silab_sil9022 | Silab sil9022]] | |||
| | |||
| [[DRM KMS overview | DRM/KMS framework]] | |||
| | |||
| Parallel RGB (DPI) to HDMI transmitter | |||
|- | |||
| Visual | |||
| [[#Toshiba_tc358762 | Toshiba tc358762]] | |||
| | |||
| [[DRM KMS overview | DRM/KMS framework]] | |||
| | |||
| MIPI<sup>®</sup> DSI to Parallel RGB (DPI) | |||
|- | |||
| Visual | |||
| [[#Analog_Devices_adv7513 | Analog Devices adv7513]] | |||
| | |||
| [[DRM KMS overview | DRM/KMS framework]] | |||
| | |||
| Parallel RGB (DPI) to HDMI transmitter | |||
|} | |||
==Analog Devices adv7533 & adv7535 == | |||
The adv7533 and adv7535 (adv753x) DSI to HDMI transmitter support the HDMI<sup>®</sup> Specification on a wide range of mobile products. | |||
For details and the datasheet please contact the adv753x HDMI transmitter provider. | |||
The adv753x transmitter does not support DSI burst mode. | |||
Check the [[DSI_internal_peripheral#Non-burst_mode_constraints | pixel clock constraints]] in non-burst mode. | |||
===adv7533 related boards=== | |||
{{Info | The adv7533 HDMI transmitter can be found on the adapter board B-LCDAD-HDMI1<ref name="B-LCDAD-HDMI1">[https://www.st.com/en/evaluation-tools/b-lcdad-hdmi1.html B-LCDAD-HDMI1 adapter board]</ref>. It is compatible with the [[STM32MP157x-EV1_-_hardware_description | STM32MP157 evaluation boards]] and can be plugged in place of the display. But note that: | |||
* Due to I2C address conflict, to use B-LCDAD-HDMI1 on STM32MP157 evaluation boards it is required to disconnect the camera module and remove the camera from the device tree. | |||
* The display connector of STM32MP157 evaluation boards does not provide audio signals; the B-LCDAD-HDMI1 will only convert DSI video signals. | |||
}} | |||
===adv7535 related boards=== | |||
{{Info | The adv7535 HDMI transmitter can be found on: | |||
* [[:Category:STM32_MPU_boards | STM32MP25 Discovery kit]] | |||
}} | |||
{{ReviewsComments|-- [[User:Philippe Cornu|Philippe Cornu]] ([[User talk:Philippe Cornu|talk]]) 16:51, 12 September 2024 (CEST)<br />Add the following line when MB1752 will be available on st.com (add a reference to st.com): | |||
* MB1752 DSI to HDMI board: that can be connected to [[:Category:STM32_MPU_boards | STM32MP25 EV1 Evaluation board]] | |||
}} | |||
===Linux driver=== | |||
Bindings: {{CodeSource | Linux kernel | Documentation/devicetree/bindings/display/bridge/adi,adv7533.yaml}} (for both adv7533 & adv7535) | |||
Sources: {{CodeSource | Linux kernel | drivers/gpu/drm/bridge/adv7511/}} | |||
Configuration: | |||
* DRM_I2C_ADV7511 | |||
* DRM_I2C_ADV7511_AUDIO | |||
* DRM_I2C_ADV7511_CEC | |||
====adv7533 device tree example==== | |||
<div class="mw-collapsible mw-collapsed" data-expandtext="Click here to show the example" data-collapsetext="Click here to hide the example"> | |||
Devicetree example with the B-LCDAD-HDMI1<ref name="B-LCDAD-HDMI1"/> board connected to the [[STM32MP157x-EV1_-_hardware_description | STM32MP157 evaluation board]]: {{CodeSource | Linux kernel | arch/arm/boot/dts/stm32mp157c-ev1.dts}} | |||
<div class="mw-collapsible-content"> | |||
<syntaxhighlight lang="dts"> | |||
/ { | |||
... | |||
hdmi-out { | |||
compatible = "hdmi-connector"; | |||
type = "a"; | |||
port { | |||
hdmi_con: endpoint { | |||
remote-endpoint = <&adv7533_out>; | |||
}; | |||
}; | |||
}; | |||
}; | |||
&dsi { | |||
#address-cells = <1>; | |||
#size-cells = <0>; | |||
status = "okay"; | |||
ports { | |||
port@0 { | |||
reg = <0>; | |||
dsi_in: endpoint { | |||
remote-endpoint = <<dc_ep1_out>; | |||
}; | |||
}; | |||
port@1 { | |||
reg = <1>; | |||
dsi_out: endpoint { | |||
remote-endpoint = <&adv7533_in>; | |||
}; | |||
}; | |||
}; | |||
}; | |||
&i2c2 { | |||
adv7533: hdmi@3d { | |||
compatible = "adi,adv7533"; | |||
reg = <0x3d>, <0x3c>, <0x3f>, <0x38>; | |||
reg-names = "main", "cec", "edid", "packet"; | |||
status = "okay"; | |||
adi,dsi-lanes = <2>; | |||
reset-gpios = <&gpiof 15 GPIO_ACTIVE_LOW>; | |||
ports { | |||
#address-cells = <1>; | |||
#size-cells = <0>; | |||
port@0 { | |||
reg = <0>; | |||
adv7533_in: endpoint { | |||
remote-endpoint = <&dsi_out>; | |||
}; | |||
}; | |||
port@1 { | |||
reg=<1>; | |||
adv7533_out: endpoint { | |||
remote-endpoint = <&hdmi_con>; | |||
}; | |||
}; | |||
}; | |||
}; | |||
}; | |||
/* We disable the ov5640 node because it uses the same I2C address than HDMI-CEC */ | |||
&ov5640 { | |||
status = "disabled"; | |||
}; | |||
</syntaxhighlight> | |||
</div> | |||
====adv7535 device tree example==== | |||
<div class="mw-collapsible mw-collapsed" data-expandtext="Click here to show the example" data-collapsetext="Click here to hide the example"> | |||
Devicetree example based on [[:Category:STM32_MPU_boards | STM32MP25 Discovery kit]]: {{CodeSource | Linux kernel | arch/arm64/boot/dts/st/stm32mp257f-dk.dts}} | |||
<div class="mw-collapsible-content"> | |||
<syntaxhighlight lang="dts"> | |||
/ { | |||
... | |||
hdmi: connector { | |||
compatible = "hdmi-connector"; | |||
label = "hdmi"; | |||
type = "a"; | |||
hdmi-pwr-supply = <&scmi_v5v_hdmi>; | |||
port { | |||
hdmi_connector_in: endpoint { | |||
remote-endpoint = <&adv7535_out>; | |||
}; | |||
}; | |||
}; | |||
... | |||
}; | |||
... | |||
&dsi { | |||
vdd-supply = <&scmi_vddcore>; | |||
vdda18-supply = <&scmi_v1v8>; | |||
status = "okay"; | |||
ports { | |||
#address-cells = <1>; | |||
#size-cells = <0>; | |||
port@0 { | |||
reg = <0>; | |||
dsi_in: endpoint { | |||
remote-endpoint = <<dc_ep0_out>; | |||
}; | |||
}; | |||
port@1 { | |||
reg = <1>; | |||
dsi_out1: endpoint { | |||
remote-endpoint = <&adv7535_in>; | |||
}; | |||
}; | |||
}; | |||
}; | |||
... | |||
&i2c2 { | |||
... | |||
adv7535: hdmi@3d { | |||
compatible = "adi,adv7535"; | |||
reg = <0x3d>, <0x3c>, <0x3f>, <0x38>; | |||
reg-names = "main", "cec", "edid", "packet"; | |||
status = "okay"; | |||
adi,dsi-lanes = <4>; | |||
clocks = <&clk_ext_cec>; | |||
clock-names = "cec"; | |||
interrupt-parent = <&gpiob>; | |||
interrupts = <4 IRQ_TYPE_EDGE_FALLING>; | |||
reset-gpios = <&gpiob 6 GPIO_ACTIVE_LOW>; | |||
avdd-supply = <&scmi_v1v8>; | |||
dvdd-supply = <&scmi_v1v8>; | |||
pvdd-supply = <&scmi_v1v8>; | |||
a2vdd-supply = <&scmi_v1v8>; | |||
v3p3-supply = <&scmi_v3v3>; | |||
v1p2-supply = <&scmi_v1v8>; | |||
ports { | |||
#address-cells = <1>; | |||
#size-cells = <0>; | |||
port@0 { | |||
reg = <0>; | |||
adv7535_in: endpoint { | |||
remote-endpoint = <&dsi_out1>; | |||
}; | |||
}; | |||
port@1 { | |||
reg = <1>; | |||
adv7535_out: endpoint { | |||
remote-endpoint = <&hdmi_connector_in>; | |||
}; | |||
}; | |||
port@2 { | |||
reg = <2>; | |||
adv7535_tx_endpoint: endpoint { | |||
remote-endpoint = <&i2s2_endpoint>; | |||
}; | |||
}; | |||
}; | |||
}; | |||
... | |||
}; | |||
... | |||
<dc { | |||
status = "okay"; | |||
port { | |||
#address-cells = <1>; | |||
#size-cells = <0>; | |||
ltdc_ep0_out: endpoint@0 { | |||
reg = <0>; | |||
remote-endpoint = <&dsi_in>; | |||
}; | |||
ltdc_ep1_out: endpoint@1 { | |||
reg = <1>; | |||
remote-endpoint = <&lvds_in>; | |||
}; | |||
}; | |||
}; | |||
</syntaxhighlight> | |||
</div> | |||
==Silab sil9022== | |||
The SiI9022A HDMI transmitter supports the HDMI<sup>®</sup> Specification on a wide range of mobile products. | |||
For details and the datasheet please contact the SiI9022A HDMI transmitter provider. | |||
{{Info | This HDMI transmitter can be found on some [[:Category:STM32_MPU_boards| STM32MP1 Discovery kits]].}} | |||
===Linux driver=== | |||
Bindings: {{CodeSource | Linux kernel | Documentation/devicetree/bindings/display/bridge/sil,sii9022.yaml}} | |||
Sources: {{CodeSource | Linux kernel | drivers/gpu/drm/bridge/sii902x.c}} | |||
Configuration: DRM_SII902X | |||
<div class="mw-collapsible mw-collapsed" data-expandtext="Click here to show the example" data-collapsetext="Click here to hide the example"> | |||
Devicetree example: {{CodeSource | Linux kernel | arch/arm/boot/dts/stm32mp15xx-dkx.dtsi}} | |||
<div class="mw-collapsible-content"> | |||
<syntaxhighlight lang="dts"> | |||
&i2c1 { | |||
pinctrl-names = "default", "sleep"; | |||
pinctrl-0 = <&i2c1_pins_a>; | |||
pinctrl-1 = <&i2c1_sleep_pins_a>; | |||
i2c-scl-rising-time-ns = <100>; | |||
i2c-scl-falling-time-ns = <7>; | |||
status = "okay"; | |||
/delete-property/dmas; | |||
/delete-property/dma-names; | |||
hdmi-transmitter@39 { | |||
compatible = "sil,sii9022"; | |||
reg = <0x39>; | |||
iovcc-supply = <&v3v3_hdmi>; | |||
cvcc12-supply = <&v1v2_hdmi>; | |||
reset-gpios = <&gpioa 10 GPIO_ACTIVE_LOW>; | |||
interrupts = <1 IRQ_TYPE_EDGE_FALLING>; | |||
interrupt-parent = <&gpiog>; | |||
#sound-dai-cells = <0>; | |||
status = "okay"; | |||
ports { | |||
#address-cells = <1>; | |||
#size-cells = <0>; | |||
port@0 { | |||
reg = <0>; | |||
sii9022_in: endpoint { | |||
remote-endpoint = <<dc_ep0_out>; | |||
}; | |||
}; | |||
port@3 { | |||
reg = <3>; | |||
sii9022_tx_endpoint: endpoint { | |||
remote-endpoint = <&i2s2_endpoint>; | |||
}; | |||
}; | |||
}; | |||
}; | |||
... | |||
}; | |||
<dc { | |||
pinctrl-names = "default", "sleep"; | |||
pinctrl-0 = <<dc_pins_a>; | |||
pinctrl-1 = <<dc_sleep_pins_a>; | |||
status = "okay"; | |||
port { | |||
ltdc_ep0_out: endpoint@0 { | |||
reg = <0>; | |||
remote-endpoint = <&sii9022_in>; | |||
}; | |||
}; | |||
}; | |||
</syntaxhighlight> | |||
</div> | |||
</div> | |||
<div class="mw-collapsible mw-collapsed" data-expandtext="Click here to show the example" data-collapsetext="Click here to hide the example"> | |||
Devicetree pin control bindings example: {{CodeSource | Linux kernel | arch/arm/boot/dts/stm32mp15-pinctrl.dtsi}} | |||
<div class="mw-collapsible-content"> | |||
<syntaxhighlight lang="dts"> | |||
&pinctrl { | |||
... | |||
ltdc_pins_a: ltdc-0 { | |||
pins { | |||
pinmux = <STM32_PINMUX('G', 7, AF14)>, /* LCD_CLK */ | |||
<STM32_PINMUX('I', 10, AF14)>, /* LCD_HSYNC */ | |||
<STM32_PINMUX('I', 9, AF14)>, /* LCD_VSYNC */ | |||
<STM32_PINMUX('F', 10, AF14)>, /* LCD_DE */ | |||
<STM32_PINMUX('H', 2, AF14)>, /* LCD_R0 */ | |||
<STM32_PINMUX('H', 3, AF14)>, /* LCD_R1 */ | |||
<STM32_PINMUX('H', 8, AF14)>, /* LCD_R2 */ | |||
<STM32_PINMUX('H', 9, AF14)>, /* LCD_R3 */ | |||
<STM32_PINMUX('H', 10, AF14)>, /* LCD_R4 */ | |||
<STM32_PINMUX('C', 0, AF14)>, /* LCD_R5 */ | |||
<STM32_PINMUX('H', 12, AF14)>, /* LCD_R6 */ | |||
<STM32_PINMUX('E', 15, AF14)>, /* LCD_R7 */ | |||
<STM32_PINMUX('E', 5, AF14)>, /* LCD_G0 */ | |||
<STM32_PINMUX('E', 6, AF14)>, /* LCD_G1 */ | |||
<STM32_PINMUX('H', 13, AF14)>, /* LCD_G2 */ | |||
<STM32_PINMUX('H', 14, AF14)>, /* LCD_G3 */ | |||
<STM32_PINMUX('H', 15, AF14)>, /* LCD_G4 */ | |||
<STM32_PINMUX('I', 0, AF14)>, /* LCD_G5 */ | |||
<STM32_PINMUX('I', 1, AF14)>, /* LCD_G6 */ | |||
<STM32_PINMUX('I', 2, AF14)>, /* LCD_G7 */ | |||
<STM32_PINMUX('D', 9, AF14)>, /* LCD_B0 */ | |||
<STM32_PINMUX('G', 12, AF14)>, /* LCD_B1 */ | |||
<STM32_PINMUX('G', 10, AF14)>, /* LCD_B2 */ | |||
<STM32_PINMUX('D', 10, AF14)>, /* LCD_B3 */ | |||
<STM32_PINMUX('I', 4, AF14)>, /* LCD_B4 */ | |||
<STM32_PINMUX('A', 3, AF14)>, /* LCD_B5 */ | |||
<STM32_PINMUX('B', 8, AF14)>, /* LCD_B6 */ | |||
<STM32_PINMUX('D', 8, AF14)>; /* LCD_B7 */ | |||
bias-disable; | |||
drive-push-pull; | |||
slew-rate = <1>; | |||
}; | |||
}; | |||
ltdc_sleep_pins_a: ltdc-sleep-0 { | |||
pins { | |||
pinmux = <STM32_PINMUX('G', 7, ANALOG)>, /* LCD_CLK */ | |||
<STM32_PINMUX('I', 10, ANALOG)>, /* LCD_HSYNC */ | |||
<STM32_PINMUX('I', 9, ANALOG)>, /* LCD_VSYNC */ | |||
<STM32_PINMUX('F', 10, ANALOG)>, /* LCD_DE */ | |||
<STM32_PINMUX('H', 2, ANALOG)>, /* LCD_R0 */ | |||
<STM32_PINMUX('H', 3, ANALOG)>, /* LCD_R1 */ | |||
<STM32_PINMUX('H', 8, ANALOG)>, /* LCD_R2 */ | |||
<STM32_PINMUX('H', 9, ANALOG)>, /* LCD_R3 */ | |||
<STM32_PINMUX('H', 10, ANALOG)>, /* LCD_R4 */ | |||
<STM32_PINMUX('C', 0, ANALOG)>, /* LCD_R5 */ | |||
<STM32_PINMUX('H', 12, ANALOG)>, /* LCD_R6 */ | |||
<STM32_PINMUX('E', 15, ANALOG)>, /* LCD_R7 */ | |||
<STM32_PINMUX('E', 5, ANALOG)>, /* LCD_G0 */ | |||
<STM32_PINMUX('E', 6, ANALOG)>, /* LCD_G1 */ | |||
<STM32_PINMUX('H', 13, ANALOG)>, /* LCD_G2 */ | |||
<STM32_PINMUX('H', 14, ANALOG)>, /* LCD_G3 */ | |||
<STM32_PINMUX('H', 15, ANALOG)>, /* LCD_G4 */ | |||
<STM32_PINMUX('I', 0, ANALOG)>, /* LCD_G5 */ | |||
<STM32_PINMUX('I', 1, ANALOG)>, /* LCD_G6 */ | |||
<STM32_PINMUX('I', 2, ANALOG)>, /* LCD_G7 */ | |||
<STM32_PINMUX('D', 9, ANALOG)>, /* LCD_B0 */ | |||
<STM32_PINMUX('G', 12, ANALOG)>, /* LCD_B1 */ | |||
<STM32_PINMUX('G', 10, ANALOG)>, /* LCD_B2 */ | |||
<STM32_PINMUX('D', 10, ANALOG)>, /* LCD_B3 */ | |||
<STM32_PINMUX('I', 4, ANALOG)>, /* LCD_B4 */ | |||
<STM32_PINMUX('A', 3, ANALOG)>, /* LCD_B5 */ | |||
<STM32_PINMUX('B', 8, ANALOG)>, /* LCD_B6 */ | |||
<STM32_PINMUX('D', 8, ANALOG)>; /* LCD_B7 */ | |||
}; | |||
}; | |||
... | |||
}; | |||
</syntaxhighlight> | |||
</div> | |||
</div> | |||
==Toshiba tc358762== | |||
The tc358762 is a DSI de-serializer to parallel DPI or DBI. Only DPI output is supported in current Linux driver. | |||
For details and the datasheet please contact the tc358762 device provider. | |||
===Linux driver=== | |||
Bindings: {{CodeSource | Linux kernel | Documentation/devicetree/bindings/display/bridge/toshiba,tc358762.yaml}} | |||
Sources: {{CodeSource | Linux kernel | drivers/gpu/drm/bridge/tc358762.c}} | |||
Configuration: | |||
* DRM_TOSHIBA_TC358762 | |||
Devicetree example: check the complete example for the [[Display_panels_hardware_components#Raspberry_Pi_7-22_Touch_-28MIPI-C2-AE_DSI-29 | Raspberry Pi 7" Touch Display]]. | |||
== Analog Devices adv7513 == | |||
The Analog Devices adv7513 Parallel RGB (DPI) to HDMI transmitter supports the HDMI<sup>®</sup> Specification on a wide range of mobile products. | |||
For details and the datasheet please contact the adv7513 HDMI transmitter provider. | |||
{{Info | This HDMI transmitter can be found on some [https://www.dh-electronics.com/ dh-electronics] [https://wiki.dh-electronics.com/index.php/Avenger96 AVENGER 96Boards compliant consumer edition boards].}} | |||
===Linux driver=== | |||
Bindings: {{CodeSource | Linux kernel | Documentation/devicetree/bindings/display/bridge/adi,adv7511.yaml}} | |||
Sources: {{CodeSource | Linux kernel | drivers/gpu/drm/bridge/adv7511}} | |||
Configuration: | |||
* DRM_I2C_ADV7511 | |||
* DRM_I2C_ADV7511_AUDIO | |||
* DRM_I2C_ADV7511_CEC | |||
<div class="mw-collapsible mw-collapsed" data-expandtext="Click here to show the example" data-collapsetext="Click here to hide the example"> | |||
Devicetree example: {{CodeSource | Linux kernel | arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi}} | |||
<div class="mw-collapsible-content"> | |||
<syntaxhighlight lang="dts"> | |||
/ { | |||
hdmi-out { | |||
compatible = "hdmi-connector"; | |||
type = "a"; | |||
port { | |||
hdmi_con: endpoint { | |||
remote-endpoint = <&adv7513_out>; | |||
}; | |||
}; | |||
}; | |||
... | |||
sound { | |||
compatible = "audio-graph-card"; | |||
label = "STM32MP1-AV96-HDMI"; | |||
dais = <&sai2a_port>; | |||
status = "okay"; | |||
}; | |||
... | |||
}; | |||
&i2c4 { | |||
hdmi-transmitter@3d { | |||
compatible = "adi,adv7513"; | |||
reg = <0x3d>, <0x4d>, <0x2d>, <0x5d>; | |||
reg-names = "main", "edid", "cec", "packet"; | |||
clocks = <&cec_clock>; | |||
clock-names = "cec"; | |||
avdd-supply = <&v3v3>; | |||
dvdd-supply = <&v3v3>; | |||
pvdd-supply = <&v3v3>; | |||
dvdd-3v-supply = <&v3v3>; | |||
bgvdd-supply = <&v3v3>; | |||
interrupts = <9 IRQ_TYPE_EDGE_FALLING>; | |||
interrupt-parent = <&gpiog>; | |||
status = "okay"; | |||
adi,input-depth = <8>; | |||
adi,input-colorspace = "rgb"; | |||
adi,input-clock = "1x"; | |||
ports { | |||
#address-cells = <1>; | |||
#size-cells = <0>; | |||
port@0 { | |||
reg = <0>; | |||
adv7513_in: endpoint { | |||
remote-endpoint = <<dc_ep0_out>; | |||
}; | |||
}; | |||
port@1 { | |||
reg = <1>; | |||
adv7513_out: endpoint { | |||
remote-endpoint = <&hdmi_con>; | |||
}; | |||
}; | |||
port@2 { | |||
reg = <2>; | |||
adv7513_i2s0: endpoint { | |||
remote-endpoint = <&sai2a_endpoint>; | |||
}; | |||
}; | |||
}; | |||
}; | |||
}; | |||
<dc { | |||
pinctrl-names = "default", "sleep"; | |||
pinctrl-0 = <<dc_pins_d>; | |||
pinctrl-1 = <<dc_sleep_pins_d>; | |||
status = "okay"; | |||
port { | |||
#address-cells = <1>; | |||
#size-cells = <0>; | |||
ltdc_ep0_out: endpoint@0 { | |||
reg = <0>; | |||
remote-endpoint = <&adv7513_in>; | |||
}; | |||
}; | |||
}; | |||
</syntaxhighlight> | |||
</div> | |||
</div> | |||
<div class="mw-collapsible mw-collapsed" data-expandtext="Click here to show the example" data-collapsetext="Click here to hide the example"> | |||
Devicetree pin control bindings example: {{CodeSource | Linux kernel | arch/arm/boot/dts/stm32mp15-pinctrl.dtsi}} | |||
<div class="mw-collapsible-content"> | |||
<syntaxhighlight lang="dts"> | |||
&pinctrl { | |||
... | |||
ltdc_pins_d: ltdc-3 { | |||
pins1 { | |||
pinmux = <STM32_PINMUX('G', 7, AF14)>; /* LCD_CLK */ | |||
bias-disable; | |||
drive-push-pull; | |||
slew-rate = <3>; | |||
}; | |||
pins2 { | |||
pinmux = <STM32_PINMUX('I', 10, AF14)>, /* LCD_HSYNC */ | |||
<STM32_PINMUX('I', 9, AF14)>, /* LCD_VSYNC */ | |||
<STM32_PINMUX('E', 13, AF14)>, /* LCD_DE */ | |||
<STM32_PINMUX('G', 13, AF14)>, /* LCD_R0 */ | |||
<STM32_PINMUX('H', 3, AF14)>, /* LCD_R1 */ | |||
<STM32_PINMUX('H', 8, AF14)>, /* LCD_R2 */ | |||
<STM32_PINMUX('H', 9, AF14)>, /* LCD_R3 */ | |||
<STM32_PINMUX('A', 5, AF14)>, /* LCD_R4 */ | |||
<STM32_PINMUX('H', 11, AF14)>, /* LCD_R5 */ | |||
<STM32_PINMUX('H', 12, AF14)>, /* LCD_R6 */ | |||
<STM32_PINMUX('E', 15, AF14)>, /* LCD_R7 */ | |||
<STM32_PINMUX('E', 5, AF14)>, /* LCD_G0 */ | |||
<STM32_PINMUX('B', 0, AF14)>, /* LCD_G1 */ | |||
<STM32_PINMUX('H', 13, AF14)>, /* LCD_G2 */ | |||
<STM32_PINMUX('E', 11, AF14)>, /* LCD_G3 */ | |||
<STM32_PINMUX('H', 15, AF14)>, /* LCD_G4 */ | |||
<STM32_PINMUX('H', 4, AF9)>, /* LCD_G5 */ | |||
<STM32_PINMUX('I', 11, AF9)>, /* LCD_G6 */ | |||
<STM32_PINMUX('G', 8, AF14)>, /* LCD_G7 */ | |||
<STM32_PINMUX('D', 9, AF14)>, /* LCD_B0 */ | |||
<STM32_PINMUX('G', 12, AF14)>, /* LCD_B1 */ | |||
<STM32_PINMUX('G', 10, AF14)>, /* LCD_B2 */ | |||
<STM32_PINMUX('D', 10, AF14)>, /* LCD_B3 */ | |||
<STM32_PINMUX('E', 12, AF14)>, /* LCD_B4 */ | |||
<STM32_PINMUX('A', 3, AF14)>, /* LCD_B5 */ | |||
<STM32_PINMUX('B', 8, AF14)>, /* LCD_B6 */ | |||
<STM32_PINMUX('I', 7, AF14)>; /* LCD_B7 */ | |||
bias-disable; | |||
drive-push-pull; | |||
slew-rate = <2>; | |||
}; | |||
}; | |||
ltdc_sleep_pins_d: ltdc-sleep-3 { | |||
pins { | |||
pinmux = <STM32_PINMUX('G', 7, ANALOG)>, /* LCD_CLK */ | |||
<STM32_PINMUX('I', 10, ANALOG)>, /* LCD_HSYNC */ | |||
<STM32_PINMUX('I', 9, ANALOG)>, /* LCD_VSYNC */ | |||
<STM32_PINMUX('E', 13, ANALOG)>, /* LCD_DE */ | |||
<STM32_PINMUX('G', 13, ANALOG)>, /* LCD_R0 */ | |||
<STM32_PINMUX('H', 3, ANALOG)>, /* LCD_R1 */ | |||
<STM32_PINMUX('H', 8, ANALOG)>, /* LCD_R2 */ | |||
<STM32_PINMUX('H', 9, ANALOG)>, /* LCD_R3 */ | |||
<STM32_PINMUX('A', 5, ANALOG)>, /* LCD_R4 */ | |||
<STM32_PINMUX('H', 11, ANALOG)>, /* LCD_R5 */ | |||
<STM32_PINMUX('H', 12, ANALOG)>, /* LCD_R6 */ | |||
<STM32_PINMUX('E', 15, ANALOG)>, /* LCD_R7 */ | |||
<STM32_PINMUX('E', 5, ANALOG)>, /* LCD_G0 */ | |||
<STM32_PINMUX('B', 0, ANALOG)>, /* LCD_G1 */ | |||
<STM32_PINMUX('H', 13, ANALOG)>, /* LCD_G2 */ | |||
<STM32_PINMUX('E', 11, ANALOG)>, /* LCD_G3 */ | |||
<STM32_PINMUX('H', 15, ANALOG)>, /* LCD_G4 */ | |||
<STM32_PINMUX('H', 4, ANALOG)>, /* LCD_G5 */ | |||
<STM32_PINMUX('I', 11, ANALOG)>, /* LCD_G6 */ | |||
<STM32_PINMUX('G', 8, ANALOG)>, /* LCD_G7 */ | |||
<STM32_PINMUX('D', 9, ANALOG)>, /* LCD_B0 */ | |||
<STM32_PINMUX('G', 12, ANALOG)>, /* LCD_B1 */ | |||
<STM32_PINMUX('G', 10, ANALOG)>, /* LCD_B2 */ | |||
<STM32_PINMUX('D', 10, ANALOG)>, /* LCD_B3 */ | |||
<STM32_PINMUX('E', 12, ANALOG)>, /* LCD_B4 */ | |||
<STM32_PINMUX('A', 3, ANALOG)>, /* LCD_B5 */ | |||
<STM32_PINMUX('B', 8, ANALOG)>, /* LCD_B6 */ | |||
<STM32_PINMUX('I', 7, ANALOG)>; /* LCD_B7 */ | |||
}; | |||
}; | |||
... | |||
}; | |||
</syntaxhighlight> | |||
</div> | |||
</div> | |||
==References== | |||
<references/> | |||
<noinclude> | <noinclude> | ||
{{ArticleBasedOnModel | | {{ArticleBasedOnModel | Hardware components article model}} | ||
{{ | {{PublicationRequestId | 14299| AnneJ| 2019-12-10}} | ||
[[Category:Display hardware components]] | [[Category:Display hardware components]] | ||
</noinclude> | </noinclude> | ||
Latest revision as of 17:02, 12 September 2024
1. Article purpose
The purpose of this article is to:
- List the display bridge hardware components that might be integrated in the different boards.
- Link these components to the corresponding software framework(s).
- Point to the appropriate component datasheets.
- Explain, when necessary, how to configure these components.
![]() |
Some of these hardware components are part of the accessories for STM32 boards like the B-LCDAD-HDMI1 for instance. |
2. Software frameworks
Domain | Peripheral | Software components | Comment | ||
---|---|---|---|---|---|
OP-TEE | Linux | STM32Cube | |||
Visual | Analog Devices adv7533 & adv7535 | DRM/KMS framework | MIPI® DSI to HDMI transmitter | ||
Visual | Silab sil9022 | DRM/KMS framework | Parallel RGB (DPI) to HDMI transmitter | ||
Visual | Toshiba tc358762 | DRM/KMS framework | MIPI® DSI to Parallel RGB (DPI) | ||
Visual | Analog Devices adv7513 | DRM/KMS framework | Parallel RGB (DPI) to HDMI transmitter |
3. Analog Devices adv7533 & adv7535
The adv7533 and adv7535 (adv753x) DSI to HDMI transmitter support the HDMI® Specification on a wide range of mobile products.
For details and the datasheet please contact the adv753x HDMI transmitter provider.
The adv753x transmitter does not support DSI burst mode. Check the pixel clock constraints in non-burst mode.
![]() |
The adv7533 HDMI transmitter can be found on the adapter board B-LCDAD-HDMI1[1]. It is compatible with the STM32MP157 evaluation boards and can be plugged in place of the display. But note that:
|
![]() |
The adv7535 HDMI transmitter can be found on: |
3.3. Linux driver
Bindings: Documentation/devicetree/bindings/display/bridge/adi,adv7533.yaml (for both adv7533 & adv7535)
Sources: drivers/gpu/drm/bridge/adv7511/
Configuration:
- DRM_I2C_ADV7511
- DRM_I2C_ADV7511_AUDIO
- DRM_I2C_ADV7511_CEC
3.3.1. adv7533 device tree example
Devicetree example with the B-LCDAD-HDMI1[1] board connected to the STM32MP157 evaluation board: arch/arm/boot/dts/stm32mp157c-ev1.dts
3.3.2. adv7535 device tree example
Devicetree example based on STM32MP25 Discovery kit: arch/arm64/boot/dts/st/stm32mp257f-dk.dts
4. Silab sil9022
The SiI9022A HDMI transmitter supports the HDMI® Specification on a wide range of mobile products.
For details and the datasheet please contact the SiI9022A HDMI transmitter provider.
![]() |
This HDMI transmitter can be found on some STM32MP1 Discovery kits. |
4.1. Linux driver
Bindings: Documentation/devicetree/bindings/display/bridge/sil,sii9022.yaml
Sources: drivers/gpu/drm/bridge/sii902x.c
Configuration: DRM_SII902X
Devicetree example: arch/arm/boot/dts/stm32mp15xx-dkx.dtsi
Devicetree pin control bindings example: arch/arm/boot/dts/stm32mp15-pinctrl.dtsi
5. Toshiba tc358762
The tc358762 is a DSI de-serializer to parallel DPI or DBI. Only DPI output is supported in current Linux driver.
For details and the datasheet please contact the tc358762 device provider.
5.1. Linux driver
Bindings: Documentation/devicetree/bindings/display/bridge/toshiba,tc358762.yaml
Sources: drivers/gpu/drm/bridge/tc358762.c
Configuration:
- DRM_TOSHIBA_TC358762
Devicetree example: check the complete example for the Raspberry Pi 7" Touch Display.
6. Analog Devices adv7513
The Analog Devices adv7513 Parallel RGB (DPI) to HDMI transmitter supports the HDMI® Specification on a wide range of mobile products.
For details and the datasheet please contact the adv7513 HDMI transmitter provider.
![]() |
This HDMI transmitter can be found on some dh-electronics AVENGER 96Boards compliant consumer edition boards. |
6.1. Linux driver
Bindings: Documentation/devicetree/bindings/display/bridge/adi,adv7511.yaml
Sources: drivers/gpu/drm/bridge/adv7511
Configuration:
- DRM_I2C_ADV7511
- DRM_I2C_ADV7511_AUDIO
- DRM_I2C_ADV7511_CEC
Devicetree example: arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi
Devicetree pin control bindings example: arch/arm/boot/dts/stm32mp15-pinctrl.dtsi
7. References