sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget/translations/zh_CN/gpu/mesonmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/zh_TW/gpu/mesonmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/it_IT/gpu/mesonmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/ja_JP/gpu/mesonmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/ko_KR/gpu/mesonmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/sp_SP/gpu/mesonmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsection)}(hhh](htitle)}(h-drm/meson AmLogic Meson Video Processing Unith]h-drm/meson AmLogic Meson Video Processing Unit}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhh7/var/lib/git/docbuild/linux/Documentation/gpu/meson.rsthKubh paragraph)}(hzVPU Handles the Global Video Processing, it includes management of the clocks gates, blocks reset lines and power domains.h]hzVPU Handles the Global Video Processing, it includes management of the clocks gates, blocks reset lines and power domains.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/gpu/meson:5: ./drivers/gpu/drm/meson/meson_drv.chK/hhhhubh)}(hWhat is missing :h]hWhat is missing :}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/gpu/meson:5: ./drivers/gpu/drm/meson/meson_drv.chK2hhhhubh bullet_list)}(hhh](h list_item)}(h/Full reset of entire video processing HW blocksh]h)}(hhh]h/Full reset of entire video processing HW blocks}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/gpu/meson:5: ./drivers/gpu/drm/meson/meson_drv.chK4hhubah}(h]h ]h"]h$]h&]uh1hhhubh)}(h"Scaling and setup of the VPU clockh]h)}(hhh]h"Scaling and setup of the VPU clock}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/gpu/meson:5: ./drivers/gpu/drm/meson/meson_drv.chK5hhubah}(h]h ]h"]h$]h&]uh1hhhubh)}(hBus clock gatesh]h)}(hjh]hBus clock gates}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/gpu/meson:5: ./drivers/gpu/drm/meson/meson_drv.chK6hjubah}(h]h ]h"]h$]h&]uh1hhhubh)}(h&Powering up video processing HW blocksh]h)}(hj(h]h&Powering up video processing HW blocks}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/gpu/meson:5: ./drivers/gpu/drm/meson/meson_drv.chK7hj&ubah}(h]h ]h"]h$]h&]uh1hhhubh)}(h$Powering Up HDMI controller and PHY h]h)}(h#Powering Up HDMI controller and PHYh]h#Powering Up HDMI controller and PHY}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhZ/var/lib/git/docbuild/linux/Documentation/gpu/meson:5: ./drivers/gpu/drm/meson/meson_drv.chK8hj>ubah}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]bullet-uh1hhhhK4hhhhubh)}(hhh](h)}(hVideo Processing Unith]hVideo Processing Unit}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_hhhhhK ubh)}(hmThe Amlogic Meson Display controller is composed of several components that are going to be documented below:h]hmThe Amlogic Meson Display controller is composed of several components that are going to be documented below:}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hj_hhubh literal_block)}(hXDMC|---------------VPU (Video Processing Unit)----------------|------HHI------| | vd1 _______ _____________ _________________ | | D |-------| |----| | | | | HDMI PLL | D | vd2 | VIU | | Video Post | | Video Encoders |<---|-----VCLK | R |-------| |----| Processing | | | | | | osd2 | | | |---| Enci ----------|----|-----VDAC------| R |-------| CSC |----| Scalers | | Encp ----------|----|----HDMI-TX----| A | osd1 | | | Blenders | | Encl ----------|----|---------------| M |-------|______|----|____________| |________________| | | ___|__________________________________________________________|_______________|h]hXDMC|---------------VPU (Video Processing Unit)----------------|------HHI------| | vd1 _______ _____________ _________________ | | D |-------| |----| | | | | HDMI PLL | D | vd2 | VIU | | Video Post | | Video Encoders |<---|-----VCLK | R |-------| |----| Processing | | | | | | osd2 | | | |---| Enci ----------|----|-----VDAC------| R |-------| CSC |----| Scalers | | Encp ----------|----|----HDMI-TX----| A | osd1 | | | Blenders | | Encl ----------|----|---------------| M |-------|______|----|____________| |________________| | | ___|__________________________________________________________|_______________|}hjsbah}(h]h ]h"]h$]h&]forcehighlight_args} xml:spacepreservelanguagenoneuh1j~hhhKhj_hhubeh}(h]video-processing-unitah ]h"]video processing unitah$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(hVideo Input Unith]hVideo Input Unit}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(heVIU Handles the Pixel scanout and the basic Colorspace conversions We handle the following features :h]heVIU Handles the Pixel scanout and the basic Colorspace conversions We handle the following features :}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/meson:30: ./drivers/gpu/drm/meson/meson_viu.chKhjhhubh)}(hhh](h)}(h#OSD1 RGB565/RGB888/xRGB8888 scanouth]h)}(hjh]h#OSD1 RGB565/RGB888/xRGB8888 scanout}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/meson:30: ./drivers/gpu/drm/meson/meson_viu.chKhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hRGB conversion to x/cb/crh]h)}(hjh]hRGB conversion to x/cb/cr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/meson:30: ./drivers/gpu/drm/meson/meson_viu.chKhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h'Progressive or Interlace buffer scanouth]h)}(hjh]h'Progressive or Interlace buffer scanout}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/meson:30: ./drivers/gpu/drm/meson/meson_viu.chKhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hOSD1 Commit on Vsynch]h)}(hj h]hOSD1 Commit on Vsync}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/meson:30: ./drivers/gpu/drm/meson/meson_viu.chKhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hHDR OSD matrix for GXL/GXM h]h)}(hHDR OSD matrix for GXL/GXMh]hHDR OSD matrix for GXL/GXM}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/meson:30: ./drivers/gpu/drm/meson/meson_viu.chKhj ubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]j]j^uh1hhjhKhjhhubh)}(hWhat is missing :h]hWhat is missing :}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/meson:30: ./drivers/gpu/drm/meson/meson_viu.chKhjhhubh)}(hhh](h)}(h'BGR888/xBGR8888/BGRx8888/BGRx8888 modesh]h)}(hjSh]h'BGR888/xBGR8888/BGRx8888/BGRx8888 modes}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/meson:30: ./drivers/gpu/drm/meson/meson_viu.chKhjQubah}(h]h ]h"]h$]h&]uh1hhjNubh)}(hYUV4:2:2 Y0CbY1Cr scanouth]h)}(hjkh]hYUV4:2:2 Y0CbY1Cr scanout}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/meson:30: ./drivers/gpu/drm/meson/meson_viu.chKhjiubah}(h]h ]h"]h$]h&]uh1hhjNubh)}(h(Conversion to YUV 4:4:4 from 4:2:2 inputh]h)}(hjh]h(Conversion to YUV 4:4:4 from 4:2:2 input}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/meson:30: ./drivers/gpu/drm/meson/meson_viu.chK hjubah}(h]h ]h"]h$]h&]uh1hhjNubh)}(hColorkey Alpha matchingh]h)}(hjh]hColorkey Alpha matching}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/meson:30: ./drivers/gpu/drm/meson/meson_viu.chK!hjubah}(h]h ]h"]h$]h&]uh1hhjNubh)}(hBig endian scanouth]h)}(hjh]hBig endian scanout}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/meson:30: ./drivers/gpu/drm/meson/meson_viu.chK"hjubah}(h]h ]h"]h$]h&]uh1hhjNubh)}(hX/Y reverse scanouth]h)}(hjh]hX/Y reverse scanout}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/meson:30: ./drivers/gpu/drm/meson/meson_viu.chK#hjubah}(h]h ]h"]h$]h&]uh1hhjNubh)}(hGlobal alpha setuph]h)}(hjh]hGlobal alpha setup}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/meson:30: ./drivers/gpu/drm/meson/meson_viu.chK$hjubah}(h]h ]h"]h$]h&]uh1hhjNubh)}(h5OSD2 support, would need interlace switching on vsynch]h)}(hjh]h5OSD2 support, would need interlace switching on vsync}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/meson:30: ./drivers/gpu/drm/meson/meson_viu.chK%hjubah}(h]h ]h"]h$]h&]uh1hhjNubh)}(h)OSD1 full scaling to support TV overscan h]h)}(h(OSD1 full scaling to support TV overscanh]h(OSD1 full scaling to support TV overscan}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/meson:30: ./drivers/gpu/drm/meson/meson_viu.chK&hjubah}(h]h ]h"]h$]h&]uh1hhjNubeh}(h]h ]h"]h$]h&]j]j^uh1hhjbhKhjhhubeh}(h]video-input-unitah ]h"]video input unitah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hVideo Post Processingh]hVideo Post Processing}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hhhhhK"ubh)}(hmVPP Handles all the Post Processing after the Scanout from the VIU We handle the following post processings :h]hmVPP Handles all the Post Processing after the Scanout from the VIU We handle the following post processings :}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/meson:36: ./drivers/gpu/drm/meson/meson_vpp.chKhj8hhubh)}(hhh](h)}(hPPostblend, Blends the OSD1 only We exclude OSD2, VS1, VS1 and Preblend outputh]hdefinition_list)}(hhh]hdefinition_list_item)}(hMPostblend, Blends the OSD1 only We exclude OSD2, VS1, VS1 and Preblend outputh](hterm)}(hPostblend, Blends the OSD1 onlyh]hPostblend, Blends the OSD1 only}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jjh[/var/lib/git/docbuild/linux/Documentation/gpu/meson:36: ./drivers/gpu/drm/meson/meson_vpp.chKhjfubh definition)}(hhh]h)}(h-We exclude OSD2, VS1, VS1 and Preblend outputh]h-We exclude OSD2, VS1, VS1 and Preblend output}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/meson:36: ./drivers/gpu/drm/meson/meson_vpp.chKhj}ubah}(h]h ]h"]h$]h&]uh1j{hjfubeh}(h]h ]h"]h$]h&]uh1jdhjzhKhjaubah}(h]h ]h"]h$]h&]uh1j_hj[ubah}(h]h ]h"]h$]h&]uh1hhjXubh)}(hfVertical OSD Scaler for OSD1 only, we disable vertical scaler and use it only for interlace scanouth]j`)}(hhh]je)}(hcVertical OSD Scaler for OSD1 only, we disable vertical scaler and use it only for interlace scanouth](jk)}(hAVertical OSD Scaler for OSD1 only, we disable vertical scaler andh]hAVertical OSD Scaler for OSD1 only, we disable vertical scaler and}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjh[/var/lib/git/docbuild/linux/Documentation/gpu/meson:36: ./drivers/gpu/drm/meson/meson_vpp.chKhjubj|)}(hhh]h)}(h!use it only for interlace scanouth]h!use it only for interlace scanout}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/meson:36: ./drivers/gpu/drm/meson/meson_vpp.chKhjubah}(h]h ]h"]h$]h&]uh1j{hjubeh}(h]h ]h"]h$]h&]uh1jdhjhKhjubah}(h]h ]h"]h$]h&]uh1j_hjubah}(h]h ]h"]h$]h&]uh1hhjXubh)}(h.Intermediate FIFO with default Amlogic values h]h)}(h-Intermediate FIFO with default Amlogic valuesh]h-Intermediate FIFO with default Amlogic values}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/meson:36: ./drivers/gpu/drm/meson/meson_vpp.chKhjubah}(h]h ]h"]h$]h&]uh1hhjXubeh}(h]h ]h"]h$]h&]j]j^uh1hhjzhKhj8hhubh)}(hWhat is missing :h]hWhat is missing :}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/meson:36: ./drivers/gpu/drm/meson/meson_vpp.chKhj8hhubh)}(hhh](h)}(h&Preblend for video overlay pre-scalingh]h)}(hjh]h&Preblend for video overlay pre-scaling}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/meson:36: ./drivers/gpu/drm/meson/meson_vpp.chKhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h#OSD2 support for cursor framebufferh]h)}(hj6h]h#OSD2 support for cursor framebuffer}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/meson:36: ./drivers/gpu/drm/meson/meson_vpp.chKhj4ubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h"Video pre-scaling before postblendh]h)}(hjNh]h"Video pre-scaling before postblend}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/meson:36: ./drivers/gpu/drm/meson/meson_vpp.chKhjLubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h;Full Vertical/Horizontal OSD scaling to support TV overscanh]h)}(hjfh]h;Full Vertical/Horizontal OSD scaling to support TV overscan}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/meson:36: ./drivers/gpu/drm/meson/meson_vpp.chKhjdubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hHDR conversion h]h)}(hHDR conversionh]hHDR conversion}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/meson:36: ./drivers/gpu/drm/meson/meson_vpp.chKhj|ubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]j]j^uh1hhj-hKhj8hhubeh}(h]video-post-processingah ]h"]video post processingah$]h&]uh1hhhhhhhhK"ubh)}(hhh](h)}(h Video Encoderh]h Video Encoder}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK(ubh)}(hZVENC Handle the pixels encoding to the output formats. We handle the following encodings :h]hZVENC Handle the pixels encoding to the output formats. We handle the following encodings :}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/gpu/meson:42: ./drivers/gpu/drm/meson/meson_venc.chKhjhhubh)}(hhh](h)}(hGCVBS Encoding via the ENCI encoder and VDAC digital to analog converterh]h)}(hjh]hGCVBS Encoding via the ENCI encoder and VDAC digital to analog converter}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/gpu/meson:42: ./drivers/gpu/drm/meson/meson_venc.chKhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h(TMDS/HDMI Encoding via ENCI_DIV and ENCPh]h)}(hjh]h(TMDS/HDMI Encoding via ENCI_DIV and ENCP}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/gpu/meson:42: ./drivers/gpu/drm/meson/meson_venc.chKhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h)Setup of more clock rates for HDMI modes h]h)}(h(Setup of more clock rates for HDMI modesh]h(Setup of more clock rates for HDMI modes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/gpu/meson:42: ./drivers/gpu/drm/meson/meson_venc.chKhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]j]j^uh1hhjhKhjhhubh)}(hWhat is missing :h]hWhat is missing :}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/gpu/meson:42: ./drivers/gpu/drm/meson/meson_venc.chKhjhhubh)}(hhh](h)}(hLCD Panel encoding via ENCLh]h)}(hj)h]hLCD Panel encoding via ENCL}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/gpu/meson:42: ./drivers/gpu/drm/meson/meson_venc.chKhj'ubah}(h]h ]h"]h$]h&]uh1hhj$ubh)}(hTV Panel encoding via ENCT h]h)}(hTV Panel encoding via ENCTh]hTV Panel encoding via ENCT}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/gpu/meson:42: ./drivers/gpu/drm/meson/meson_venc.chKhj?ubah}(h]h ]h"]h$]h&]uh1hhj$ubeh}(h]h ]h"]h$]h&]j]j^uh1hhj8hKhjhhubh)}(h VENC paths :h]h VENC paths :}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/gpu/meson:42: ./drivers/gpu/drm/meson/meson_venc.chK hjhhubj)}(hX _____ _____ ____________________ vd1---| |-| | | VENC /---------|----VDAC vd2---| VIU |-| VPP |-|-----ENCI/-ENCI_DVI-|-| osd1--| |-| | | \ | X--HDMI-TX osd2--|_____|-|_____| | |\-ENCP--ENCP_DVI-|-| | | | | \--ENCL-----------|----LVDS |____________________|h]hX _____ _____ ____________________ vd1---| |-| | | VENC /---------|----VDAC vd2---| VIU |-| VPP |-|-----ENCI/-ENCI_DVI-|-| osd1--| |-| | | \ | X--HDMI-TX osd2--|_____|-|_____| | |\-ENCP--ENCP_DVI-|-| | | | | \--ENCL-----------|----LVDS |____________________|}hjmsbah}(h]h ]h"]h$]h&]forcehighlight_args}jjjjuh1j~h\/var/lib/git/docbuild/linux/Documentation/gpu/meson:42: ./drivers/gpu/drm/meson/meson_venc.chK"hjhhubh)}(hXThe ENCI is designed for PAl or NTSC encoding and can go through the VDAC directly for CVBS encoding or through the ENCI_DVI encoder for HDMI. The ENCP is designed for Progressive encoding but can also generate 1080i interlaced pixels, and was initially designed to encode pixels for VDAC to output RGB ou YUV analog outputs. It's output is only used through the ENCP_DVI encoder for HDMI. The ENCL LVDS encoder is not implemented.h]hXThe ENCI is designed for PAl or NTSC encoding and can go through the VDAC directly for CVBS encoding or through the ENCI_DVI encoder for HDMI. The ENCP is designed for Progressive encoding but can also generate 1080i interlaced pixels, and was initially designed to encode pixels for VDAC to output RGB ou YUV analog outputs. It’s output is only used through the ENCP_DVI encoder for HDMI. The ENCL LVDS encoder is not implemented.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/gpu/meson:42: ./drivers/gpu/drm/meson/meson_venc.chK-hjhhubh)}(hThe ENCI and ENCP encoders needs specially defined parameters for each supported mode and thus cannot be determined from standard video timings.h]hThe ENCI and ENCP encoders needs specially defined parameters for each supported mode and thus cannot be determined from standard video timings.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/gpu/meson:42: ./drivers/gpu/drm/meson/meson_venc.chK5hjhhubh)}(hThe ENCI end ENCP DVI encoders are more generic and can generate any timings from the pixel data generated by ENCI or ENCP, so can use the standard video timings are source for HW parameters.h]hThe ENCI end ENCP DVI encoders are more generic and can generate any timings from the pixel data generated by ENCI or ENCP, so can use the standard video timings are source for HW parameters.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/gpu/meson:42: ./drivers/gpu/drm/meson/meson_venc.chK8hjhhubeh}(h] video-encoderah ]h"] video encoderah$]h&]uh1hhhhhhhhK(ubh)}(hhh](h)}(h Video Clocksh]h Video Clocks}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK.ubh)}(hgVCLK is the "Pixel Clock" frequency generator from a dedicated PLL. We handle the following encodings :h]hkVCLK is the “Pixel Clock” frequency generator from a dedicated PLL. We handle the following encodings :}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/gpu/meson:48: ./drivers/gpu/drm/meson/meson_vclk.chKhjhhubh)}(hhh](h)}(h?CVBS 27MHz generator via the VCLK2 to the VENCI and VDAC blocksh]h)}(hjh]h?CVBS 27MHz generator via the VCLK2 to the VENCI and VDAC blocks}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/gpu/meson:48: ./drivers/gpu/drm/meson/meson_vclk.chKhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hHDMI Pixel Clocks generation h]h)}(hHDMI Pixel Clocks generationh]hHDMI Pixel Clocks generation}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/gpu/meson:48: ./drivers/gpu/drm/meson/meson_vclk.chKhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]j]j^uh1hhjhKhjhhubh)}(hWhat is missing :h]hWhat is missing :}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/gpu/meson:48: ./drivers/gpu/drm/meson/meson_vclk.chKhjhhubh)}(hhh]h)}(h.Genenate Pixel clocks for 2K/4K 10bit formats h]h)}(h-Genenate Pixel clocks for 2K/4K 10bit formatsh]h-Genenate Pixel clocks for 2K/4K 10bit formats}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/gpu/meson:48: ./drivers/gpu/drm/meson/meson_vclk.chKhj ubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]j]j^uh1hhj2hKhjhhubh)}(hClock generator scheme :h]hClock generator scheme :}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/gpu/meson:48: ./drivers/gpu/drm/meson/meson_vclk.chKhjhhubj)}(hX __________ _________ _____ | | | | | |--ENCI | HDMI PLL |-| PLL_DIV |--- VCLK--| |--ENCL |__________| |_________| \ | MUX |--ENCP --VCLK2-| |--VDAC |_____|--HDMI-TXh]hX __________ _________ _____ | | | | | |--ENCI | HDMI PLL |-| PLL_DIV |--- VCLK--| |--ENCL |__________| |_________| \ | MUX |--ENCP --VCLK2-| |--VDAC |_____|--HDMI-TX}hjNsbah}(h]h ]h"]h$]h&]forcehighlight_args}jjjjuh1j~h\/var/lib/git/docbuild/linux/Documentation/gpu/meson:48: ./drivers/gpu/drm/meson/meson_vclk.chKhjhhubh)}(hFinal clocks can take input for either VCLK or VCLK2, but VCLK is the preferred path for HDMI clocking and VCLK2 is the preferred path for CVBS VDAC clocking.h]hFinal clocks can take input for either VCLK or VCLK2, but VCLK is the preferred path for HDMI clocking and VCLK2 is the preferred path for CVBS VDAC clocking.}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/gpu/meson:48: ./drivers/gpu/drm/meson/meson_vclk.chK%hjhhubh)}(hIVCLK and VCLK2 have fixed divided clocks paths for /1, /2, /4, /6 or /12.h]hIVCLK and VCLK2 have fixed divided clocks paths for /1, /2, /4, /6 or /12.}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/gpu/meson:48: ./drivers/gpu/drm/meson/meson_vclk.chK)hjhhubh)}(h|The PLL_DIV can achieve an additional fractional dividing like 1.5, 3.5, 3.75... to generate special 2K and 4K 10bit clocks.h]h|The PLL_DIV can achieve an additional fractional dividing like 1.5, 3.5, 3.75... to generate special 2K and 4K 10bit clocks.}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/gpu/meson:48: ./drivers/gpu/drm/meson/meson_vclk.chK+hjhhubeh}(h] video-clocksah ]h"] video clocksah$]h&]uh1hhhhhhhhK.ubh)}(hhh](h)}(hHDMI Video Outputh]hHDMI Video Output}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK4ubh)}(hHDMI Output is composed of :h]hHDMI Output is composed of :}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/gpu/meson:54: ./drivers/gpu/drm/meson/meson_dw_hdmi.chK$hjhhubh)}(hhh](h)}(h(A Synopsys DesignWare HDMI Controller IPh]h)}(hjh]h(A Synopsys DesignWare HDMI Controller IP}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/gpu/meson:54: ./drivers/gpu/drm/meson/meson_dw_hdmi.chK&hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h2A TOP control block controlling the Clocks and PHYh]h)}(hjh]h2A TOP control block controlling the Clocks and PHY}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/gpu/meson:54: ./drivers/gpu/drm/meson/meson_dw_hdmi.chK'hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h8A custom HDMI PHY in order convert video to TMDS signal h]h)}(h7A custom HDMI PHY in order convert video to TMDS signalh]h7A custom HDMI PHY in order convert video to TMDS signal}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/gpu/meson:54: ./drivers/gpu/drm/meson/meson_dw_hdmi.chK(hjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]j]j^uh1hhjhK&hjhhubj)}(hX ___________________________________ | HDMI TOP |<= HPD |___________________________________| | | | | Synopsys HDMI | HDMI PHY |=> TMDS | Controller |________________| |___________________________________|<=> DDCh]hX ___________________________________ | HDMI TOP |<= HPD |___________________________________| | | | | Synopsys HDMI | HDMI PHY |=> TMDS | Controller |________________| |___________________________________|<=> DDC}hjsbah}(h]h ]h"]h$]h&]forcehighlight_args}jjjjuh1j~h_/var/lib/git/docbuild/linux/Documentation/gpu/meson:54: ./drivers/gpu/drm/meson/meson_dw_hdmi.chK*hjhhubh)}(hX/The HDMI TOP block only supports HPD sensing. The Synopsys HDMI Controller interrupt is routed through the TOP Block interrupt. Communication to the TOP Block and the Synopsys HDMI Controller is done a pair of addr+read/write registers. The HDMI PHY is configured by registers in the HHI register block.h]hX/The HDMI TOP block only supports HPD sensing. The Synopsys HDMI Controller interrupt is routed through the TOP Block interrupt. Communication to the TOP Block and the Synopsys HDMI Controller is done a pair of addr+read/write registers. The HDMI PHY is configured by registers in the HHI register block.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/gpu/meson:54: ./drivers/gpu/drm/meson/meson_dw_hdmi.chK5hjhhubh)}(hXHPixel data arrives in 4:4:4 format from the VENC block and the VPU HDMI mux selects either the ENCI encoder for the 576i or 480i formats or the ENCP encoder for all the other formats including interlaced HD formats. The VENC uses a DVI encoder on top of the ENCI or ENCP encoders to generate DVI timings for the HDMI controller.h]hXHPixel data arrives in 4:4:4 format from the VENC block and the VPU HDMI mux selects either the ENCI encoder for the 576i or 480i formats or the ENCP encoder for all the other formats including interlaced HD formats. The VENC uses a DVI encoder on top of the ENCI or ENCP encoders to generate DVI timings for the HDMI controller.}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/gpu/meson:54: ./drivers/gpu/drm/meson/meson_dw_hdmi.chK>hjhhubh)}(h}GXBB, GXL and GXM embeds the Synopsys DesignWare HDMI TX IP version 2.01a with HDCP and I2C & S/PDIF audio source interfaces.h]h}GXBB, GXL and GXM embeds the Synopsys DesignWare HDMI TX IP version 2.01a with HDCP and I2C & S/PDIF audio source interfaces.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/gpu/meson:54: ./drivers/gpu/drm/meson/meson_dw_hdmi.chKGhjhhubh)}(h"We handle the following features :h]h"We handle the following features :}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/gpu/meson:54: ./drivers/gpu/drm/meson/meson_dw_hdmi.chKKhjhhubh)}(hhh](h)}(hHPD Rise & Fall interrupth]h)}(hjZh]hHPD Rise & Fall interrupt}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/gpu/meson:54: ./drivers/gpu/drm/meson/meson_dw_hdmi.chKMhjXubah}(h]h ]h"]h$]h&]uh1hhjUubh)}(hHDMI Controller Interrupth]h)}(hjrh]hHDMI Controller Interrupt}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/gpu/meson:54: ./drivers/gpu/drm/meson/meson_dw_hdmi.chKNhjpubah}(h]h ]h"]h$]h&]uh1hhjUubh)}(h!HDMI PHY Init for 480i to 1080p60h]h)}(hjh]h!HDMI PHY Init for 480i to 1080p60}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/gpu/meson:54: ./drivers/gpu/drm/meson/meson_dw_hdmi.chKOhjubah}(h]h ]h"]h$]h&]uh1hhjUubh)}(h+VENC & HDMI Clock setup for 480i to 1080p60h]h)}(hjh]h+VENC & HDMI Clock setup for 480i to 1080p60}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/gpu/meson:54: ./drivers/gpu/drm/meson/meson_dw_hdmi.chKPhjubah}(h]h ]h"]h$]h&]uh1hhjUubh)}(h$VENC Mode setup for 480i to 1080p60 h]h)}(h#VENC Mode setup for 480i to 1080p60h]h#VENC Mode setup for 480i to 1080p60}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/gpu/meson:54: ./drivers/gpu/drm/meson/meson_dw_hdmi.chKQhjubah}(h]h ]h"]h$]h&]uh1hhjUubeh}(h]h ]h"]h$]h&]j]j^uh1hhjihKMhjhhubh)}(hWhat is missing :h]hWhat is missing :}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/gpu/meson:54: ./drivers/gpu/drm/meson/meson_dw_hdmi.chKShjhhubh)}(hhh](h)}(h,PHY, Clock and Mode setup for 2k && 4k modesh]h)}(hjh]h,PHY, Clock and Mode setup for 2k && 4k modes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/gpu/meson:54: ./drivers/gpu/drm/meson/meson_dw_hdmi.chKUhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h"SDDC Scrambling mode for HDMI 2.0ah]h)}(hjh]h"SDDC Scrambling mode for HDMI 2.0a}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/gpu/meson:54: ./drivers/gpu/drm/meson/meson_dw_hdmi.chKVhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h HDCP Setuph]h)}(hjh]h HDCP Setup}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/gpu/meson:54: ./drivers/gpu/drm/meson/meson_dw_hdmi.chKWhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hCEC Management h]h)}(hCEC Managementh]hCEC Management}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/gpu/meson:54: ./drivers/gpu/drm/meson/meson_dw_hdmi.chKXhj1ubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]j]j^uh1hhjhKUhjhhubeh}(h]hdmi-video-outputah ]h"]hdmi video outputah$]h&]uh1hhhhhhhhK4ubeh}(h]-drm-meson-amlogic-meson-video-processing-unitah ]h"]-drm/meson amlogic meson video processing unitah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(j]jZjjj5j2jjjjjjjUjRu nametypes}(j]jj5jjjjUuh}(jZhjj_j2jjj8jjjjjRju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.