RE: [PATCH/RFC 0/5] [media] s5p-tvout: Add S5P TVOUT driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.

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

--
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


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux