On Tuesday, March 08, 2011 07:32:39 Kukjin Kim wrote: > Hans Verkuil wrote: > > > > Hi! > > > Hi :) > > > Sorry for not replying earlier. To be honest, there is not much I can say > yet. > > > > The main new part in this driver is the HDMI/CEC support. And that is one > of > > the topics of the upcoming Warsaw brainstorm meeting (several of your > Samsung > > colleagues will be attending). > > > > An RFC for CEC support has been posted last week and hopefully we (Cisco > > Systems > > Norway) can get a HDMI RFC posted as well in time for the meeting. > > > > The main difference of our approach to HDMI is that we integrate it in > V4L2 > > rather than creating new device nodes. Once the media controller is in we > > also > > have per-subdevice nodes in /dev which we want to utilize for the HDMI and > > CEC > > APIs. > > > > Functionality-wise the CEC RFC is effectively identical to your > > implementation. > > > > Thanks for your comment. I'll have a look at the proposed CEC-API additions. > > Can you please give your comments on the fact that this driver uses the > framebuffer layer for the Mixer's graphic layer. This has been done keeping > in mind certain customer requirements like X Driver and dual display. > > Yeah, I'm interested in knowing if this approach is valid/requires > modification or if there are any alternate approaches. This approach is perfectly valid. In general graphics planes are implemented as a framebuffer since the framebuffer API makes much more sense for that than the V4L2 API. Regards, Hans > > Thanks. > > Best regards, > Kgene. > -- > Kukjin Kim <kgene.kim@xxxxxxxxxxx>, Senior Engineer, > SW Solution Development Team, Samsung Electronics Co., Ltd. > > > > On Friday, February 25, 2011 08:53:28 Abhilash Kesavan wrote: > > > This patch-set adds support for TV-OUT interface in the EXYNOS4 series > of > > SoCs. > > > TVOUT includes the HDMI interface, analog TV interface, mixer and video > > > processor. This is a full-featured driver providing the following: > > > > > > 1) HDMI Support > > > 2) Analog Support > > > 3) Mixer Support > > > 4) Video Processor Support > > > 5) Hotplug Detect Support > > > 6) HDCP Support > > > 7) CEC Support > > > 8) I2S/SPDIF Support > > > > > > The driver is under development and needs major modifications, as > mentioned > > > later in the TODO section, to conform to open source standards. Please > have > > > a look at the driver design and offer any suggestions/comments. > > > > > > > > > I) HARDWARE > > > > > > Video processor is responsible for video scaling, de-interlacing, and > video > > post > > > processing of TVOUT data path. It reads reconstructed YCbCr video > sequences > > from > > > DRAM, processes the sequence, and sends it to mixer on-the-fly. Input to > VP > > is > > > NV12 and NV21 (Linear and tiled) format while the output to the mixer is > > YUV444. > > > > > > Mixer overlaps or blends input data such as graphic, video, background > and > > sends > > > the resulting data to the HDMI or analog TV interface. Along with the > > YUV444 in- > > > put from VP interface, the mixer can receive two RGB inputs. It allows > for > > layer > > > blending, alpha blending, chroma key, scaling etc. > > > > > > HDMI interface supports 1.3 Tx subsystem V1.0 comprising an HDMI Tx core > > with > > > I2S input interface, CEC block, and HDCP key block. It receives YUV444 > or > > RGB888 > > > data from the mixer and converts it into HDMI packets. Supports a > variety > > of > > > video formats varying from 480p to 1080p. > > > > > > Analog TV interface supports ITU-R BT 470 and EIA-770 compliant analog > TV > > > signals with 1 channel 10bit DAC. Supports PAL-m@60Hz, PAL-60@60Hz, > > NTSC@60Hz, > > > NTSC-443@60Hz, PAL@50Hz, PAL-n@50Hz and (M)NTSC@60Hz formats for > composite > > > output. > > > > > > > > > II) S/W DESIGN > > > > > > > > > ============================================================================ > = > > == > > > > ------------------------------------------------------------------- > > ---- > > > VFS > > > > ------------------------------------------------------------------- > > ---- > > > KERNEL | | > > > V V > > > ---------- -------- > -------------- > > ---- > > > V4L2 STACK FB STACK Linux > Driver > > Model > > > ---------- -------- > -------------- > > ---- > > > | | | > > > > > > =============+===============================+========================+===== > = > > == > > > | | | > > > | | +-------------| > > > | | | | > > > V V V | > > > > +---------------------------------------------------------------+---- > > ---+ > > > | | > > | > > > | | > > | > > > | ------------ ------------- ----------- | > > | > > > | Video Ctrl -- Graphics Ctrl -- TVOUT I/F | > > | > > > | ------------ ------------- ----------- V > > | > > > | | | | |__________ > --------- > > -- | > > > | | | | | HPD > > Driver | > > > | V V V V > (GPIO) > > | > > > | ----------- ----------- ----------- ----------- > --------- > > -- | > > > | VP I/F Mixer I/F Analog I/F HDMI I/F > > | > > > | ----------- ----------- ----------- ----------- > > | > > > | | | | | | > > | > > > DEVICE| | | | | > |_______________ > > | > > > DRIVER| | | | | | > > | | > > > | | | | | V > > V | > > > | | | | | ----- > --- > > ---| > > > | | | | | CEC > > HDCP | > > > | | | | | ----- > --- > > ---| > > > | | | | > > |___________|_______| | > > > | | | | > > | > > > > +------+---------------+---------------+----------------------------- > > ---+ > > > | | | | > > > | | | | > > > > > > =============+===============+===============+============================== > = > > == > > > | | | | > > > V V V | > > > ----------- ----------- ----------- | > -------- > > > VP ----> Mixer ----> TV Encoder ---+--------> DAC > > > ----------- ----------- | ----------- | > -------- > > > | | > > > HARDWARE | V > > > | ---------- > -------- > > > +----------> HDMI Link --> HDMI > PHY > > > ---------- > -------- > > > > > > ============================================================================ > = > > == > > > Description: > > > 1) S5P TVOUT driver is devided into control layer and interface layer. > > interface > > > layer accesses hardware register in TVOUT subsystem like video > processor, > > mixer, > > > hdmi and sdo. and control layer controls each hardware IPs and > communicates > > with > > > other control modules. > > > 2) S5P TVOUT driver is composed of 3 kinds of drivers logically. > > > - Video driver controls video processor and follows V4L2 interface > > > - Graphic driver controls mixer and follows framebuffer interface > > > - TV interface driver selects hdmi or analog TV interface and > follows > > V4L2 > > > interface > > > 3) HPD(Hot-Plug Detection) driver is used for HDMI interface. It > generates > > event > > > when plugging or unplugging HDMI cable. > > > > > > 4) CEC(Consumer Electronic Control) driver is also used for HDMI > interface. > > > It can send signals like turning on/off from source to sink device. > > > > > > III) CODE STRUCTURE > > > > > > +---------------------+ +--------------------------+ > > > |API | |Platform Drivers | > > > | s5p_tvout_v4l2.c | | s5p_tvout.c | > > > | s5p_tvout_fb.c | | s5p_tvout_hpd.c | > > > +---------------------+ | s5p_tvout_cec.c | > > > +--------------------------+ > > > > > > +-----------------------+ +----------------------------+ > > > |CONTROL CLASS | |COMMON | > > > | s5p_vp_ctrl.c | | s5p_tvout_common_lib.c | > > > | s5p_mixer_ctrl.c | +----------------------------+ > > > | s5p_tvif_ctrl.c | > > > +-----------------------+ > > > > > > +-----------------------------------------------------------+ > > > |HARDWARE INTERFACE | > > > | vp.c mixer.c cec.c hdcp.c hdmi.c sdo.c | > > > +-----------------------------------------------------------+ > > > > > > > > > Notes: > > > 1) A hw_if interface sub-directory has been created to collect all the > > > APIs for accessing each of the IPs like VP, Mixer and HDMI. The sdo.c > > > file contains functions for TV Encoder + DAC. > > > 2) The common library provides common memory allocator and run-time PM > > > APIs. > > > 3) V4L2 callbacks for the s5p_tvout driver and fb registration & initi- > > > alization has been implemented in the two API files. > > > 4) TV-OUT interface component has 3 classes. (tvif, hdmi, sdo) > > > - tvif ctrl class: controls hdmi and sdo ctrl class. > > > - hdmi ctrl class: contrls hdmi hardware by using hw_if/hdmi.c > > > - sdo ctrl class: contrls sdo hardware by using hw_if/sdo.c > > > > > > +-----------------+ > > > | tvif ctrl class | > > > +-----------------+ > > > | | > > > +----------+ +----------+ ctrl class > layer > > > | | > > > V V > > > +-----------------+ +-----------------+ > > > | sdo ctrl class | | hdmi ctrl class | > > > +-----------------+ +-----------------+ > > > | | > > > > ---------------+-------------------------+----------------------------- > > - > > > V V > > > +-----------------+ +-----------------+ > > > | hw_if/sdo.c | | hw_if/hdmi.c | hw_if > layer > > > +-----------------+ +-----------------+ > > > | | > > > > ---------------+-------------------------+----------------------------- > > - > > > V V > > > +-----------------+ +-----------------+ > > > | sdo hardware | | hdmi hardware | > Hardware > > > +-----------------+ +-----------------+ > > > > > > > > > IV) APPLICATION FLOW > > > > > > a) open "/dev/video14" node. > > > b) query device capabilities VIDIOC_QUERYCAP > > > c) set output device standard VIDIOC_S_STD > > > d) set output device VIDIOC_S_OUTPUT > > > e) Use CEC (if output is HDMI) > > > f) Enable/Disable HDCP > > > g) open "/dev/fb10" node. > > > h) configure attributes of graphics layer using fb such as pixel format, > > > window position, window size etc. FBIOPUT_VSCREENINFO > > > i) turn on the window FBIOBLANK_UNBLANK > > > j) open "/dev/video21" (overlay) node. > > > k) set source video plane parameters VIDIOC_S_FMT. > > > l) set source video data information VIDIOC_S_CROP > > > m) set destination (video plane of mixer) information VIDIOC_S_FBUF > > > n) set destination video overlay format VIDIO_S_FMT > > > o) start overlay VIDIOC_OVERLAY > > > > > > > > > V) MISCELLANEOUS > > > > > > a) The driver has undergone HDMI compliance tests and has been verfied > to > > be > > > HDMI 1.3 compliant. > > > b) The driver uses the framebuffer interface on mixer's graphic layer to > > > support many customer requirements like a Xdriver. > > > c) All of the following video formats are supported by the HDMI driver: > > 480p@ > > > 59.94Hz/60Hz, 576p@50Hz, 720p@50Hz/59.94Hz/60Hz, > 1080i@50Hz/59.94Hz/60Hz, > > > 1080p@30Hz, 1080p@60Hz. > > > d) Support 1 video layer and 2 graphics layers, and blending of all 3 > > layers. > > > > > > > > > VI) TODO > > > > > > a) Use the newer videobuf2 framework for buffer management. > > > b) Modify the tvout_fb code to be more in line with the framebuffer > stack. > > > > > > * NOTE: The arch/mach specific header files Will be added later. > > > > > > [PATCH 1/5] [media] s5p-tvout: Add TVOUT core driver for S5P SoCs > > > [PATCH 2/5] [media] s5p-tvout: Add Graphic layer control for S5P TVOUT > > driver > > > [PATCH 3/5] [media] s5p-tvout: Add TVOUT interface control for S5P TVOUT > > driver > > > [PATCH 4/5] [media] s5p-tvout: Add CEC driver for S5P TVOUT > > > [PATCH 5/5] [media] s5p-tvout: Add HPD driver for S5P TVOUT > > > -- > > > To unsubscribe from this list: send the line "unsubscribe linux-media" > in > > > the body of a message to majordomo@xxxxxxxxxxxxxxx > > > More majordomo info at http://vger.kernel.org/majordomo-info.html > > > > > > > > > > -- > > Hans Verkuil - video4linux developer - sponsored by Cisco > > -- > > To unsubscribe from this list: send the line "unsubscribe linux-media" in > > the body of a message to majordomo@xxxxxxxxxxxxxxx > > More majordomo info at http://vger.kernel.org/majordomo-info.html > > -- Hans Verkuil - video4linux developer - sponsored by Cisco -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html