blob: b545fe00191992694e33cc0acbab2673b100f1f2 [file] [log] [blame]
Mauro Carvalho Chehabe0f10452016-07-17 17:49:05 -03001The VPBE V4L2 driver design
2===========================
Manjunath Hadliaf603132011-06-17 04:01:36 -03003
Mauro Carvalho Chehabe0f10452016-07-17 17:49:05 -03004File partitioning
5-----------------
Manjunath Hadliaf603132011-06-17 04:01:36 -03006
Manjunath Hadliaf603132011-06-17 04:01:36 -03007 V4L2 display device driver
Lad, Prabhakar83c73532012-09-14 05:17:52 -03008 drivers/media/platform/davinci/vpbe_display.c
9 drivers/media/platform/davinci/vpbe_display.h
Manjunath Hadliaf603132011-06-17 04:01:36 -030010
11 VPBE display controller
Lad, Prabhakar83c73532012-09-14 05:17:52 -030012 drivers/media/platform/davinci/vpbe.c
13 drivers/media/platform/davinci/vpbe.h
Manjunath Hadliaf603132011-06-17 04:01:36 -030014
15 VPBE venc sub device driver
Lad, Prabhakar83c73532012-09-14 05:17:52 -030016 drivers/media/platform/davinci/vpbe_venc.c
17 drivers/media/platform/davinci/vpbe_venc.h
18 drivers/media/platform/davinci/vpbe_venc_regs.h
Manjunath Hadliaf603132011-06-17 04:01:36 -030019
20 VPBE osd driver
Lad, Prabhakar83c73532012-09-14 05:17:52 -030021 drivers/media/platform/davinci/vpbe_osd.c
22 drivers/media/platform/davinci/vpbe_osd.h
23 drivers/media/platform/davinci/vpbe_osd_regs.h
Manjunath Hadliaf603132011-06-17 04:01:36 -030024
Mauro Carvalho Chehabe0f10452016-07-17 17:49:05 -030025Functional partitioning
26-----------------------
Manjunath Hadliaf603132011-06-17 04:01:36 -030027
Mauro Carvalho Chehabe0f10452016-07-17 17:49:05 -030028Consists of the following (in the same order as the list under file
29partitioning):
Manjunath Hadliaf603132011-06-17 04:01:36 -030030
31 1. V4L2 display driver
32 Implements creation of video2 and video3 device nodes and
33 provides v4l2 device interface to manage VID0 and VID1 layers.
34
35 2. Display controller
36 Loads up VENC, OSD and external encoders such as ths8200. It provides
37 a set of API calls to V4L2 drivers to set the output/standards
38 in the VENC or external sub devices. It also provides
39 a device object to access the services from OSD subdevice
40 using sub device ops. The connection of external encoders to VENC LCD
41 controller port is done at init time based on default output and standard
42 selection or at run time when application change the output through
43 V4L2 IOCTLs.
44
45 When connected to an external encoder, vpbe controller is also responsible
46 for setting up the interface between VENC and external encoders based on
47 board specific settings (specified in board-xxx-evm.c). This allows
48 interfacing external encoders such as ths8200. The setup_if_config()
49 is implemented for this as well as configure_venc() (part of the next patch)
50 API to set timings in VENC for a specific display resolution. As of this
51 patch series, the interconnection and enabling and setting of the external
52 encoders is not present, and would be a part of the next patch series.
53
54 3. VENC subdevice module
55 Responsible for setting outputs provided through internal DACs and also
56 setting timings at LCD controller port when external encoders are connected
57 at the port or LCD panel timings required. When external encoder/LCD panel
58 is connected, the timings for a specific standard/preset is retrieved from
59 the board specific table and the values are used to set the timings in
60 venc using non-standard timing mode.
61
62 Support LCD Panel displays using the VENC. For example to support a Logic
63 PD display, it requires setting up the LCD controller port with a set of
64 timings for the resolution supported and setting the dot clock. So we could
65 add the available outputs as a board specific entry (i.e add the "LogicPD"
66 output name to board-xxx-evm.c). A table of timings for various LCDs
67 supported can be maintained in the board specific setup file to support
68 various LCD displays.As of this patch a basic driver is present, and this
69 support for external encoders and displays forms a part of the next
70 patch series.
71
72 4. OSD module
73 OSD module implements all OSD layer management and hardware specific
74 features. The VPBE module interacts with the OSD for enabling and
75 disabling appropriate features of the OSD.
76
Mauro Carvalho Chehabe0f10452016-07-17 17:49:05 -030077Current status
78--------------
Manjunath Hadliaf603132011-06-17 04:01:36 -030079
Mauro Carvalho Chehabe0f10452016-07-17 17:49:05 -030080A fully functional working version of the V4L2 driver is available. This
81driver has been tested with NTSC and PAL standards and buffer streaming.
Manjunath Hadliaf603132011-06-17 04:01:36 -030082
Mauro Carvalho Chehabe0f10452016-07-17 17:49:05 -030083To be done
84----------
Manjunath Hadliaf603132011-06-17 04:01:36 -030085
Mauro Carvalho Chehabe0f10452016-07-17 17:49:05 -030086vpbe display controller
Manjunath Hadliaf603132011-06-17 04:01:36 -030087 - Add support for external encoders.
88 - add support for selecting external encoder as default at probe time.
89
Mauro Carvalho Chehabe0f10452016-07-17 17:49:05 -030090vpbe venc sub device
Manjunath Hadliaf603132011-06-17 04:01:36 -030091 - add timings for supporting ths8200
92 - add support for LogicPD LCD.
93
Mauro Carvalho Chehabe0f10452016-07-17 17:49:05 -030094FB drivers
Manjunath Hadliaf603132011-06-17 04:01:36 -030095 - Add support for fbdev drivers.- Ready and part of subsequent patches.