1.. SPDX-License-Identifier: GPL-2.0 2 3The VPBE V4L2 driver design 4=========================== 5 6File partitioning 7----------------- 8 9 V4L2 display device driver 10 drivers/media/platform/davinci/vpbe_display.c 11 drivers/media/platform/davinci/vpbe_display.h 12 13 VPBE display controller 14 drivers/media/platform/davinci/vpbe.c 15 drivers/media/platform/davinci/vpbe.h 16 17 VPBE venc sub device driver 18 drivers/media/platform/davinci/vpbe_venc.c 19 drivers/media/platform/davinci/vpbe_venc.h 20 drivers/media/platform/davinci/vpbe_venc_regs.h 21 22 VPBE osd driver 23 drivers/media/platform/davinci/vpbe_osd.c 24 drivers/media/platform/davinci/vpbe_osd.h 25 drivers/media/platform/davinci/vpbe_osd_regs.h 26 27Functional partitioning 28----------------------- 29 30Consists of the following (in the same order as the list under file 31partitioning): 32 33 1. V4L2 display driver 34 Implements creation of video2 and video3 device nodes and 35 provides v4l2 device interface to manage VID0 and VID1 layers. 36 37 2. Display controller 38 Loads up VENC, OSD and external encoders such as ths8200. It provides 39 a set of API calls to V4L2 drivers to set the output/standards 40 in the VENC or external sub devices. It also provides 41 a device object to access the services from OSD subdevice 42 using sub device ops. The connection of external encoders to VENC LCD 43 controller port is done at init time based on default output and standard 44 selection or at run time when application change the output through 45 V4L2 IOCTLs. 46 47 When connected to an external encoder, vpbe controller is also responsible 48 for setting up the interface between VENC and external encoders based on 49 board specific settings (specified in board-xxx-evm.c). This allows 50 interfacing external encoders such as ths8200. The setup_if_config() 51 is implemented for this as well as configure_venc() (part of the next patch) 52 API to set timings in VENC for a specific display resolution. As of this 53 patch series, the interconnection and enabling and setting of the external 54 encoders is not present, and would be a part of the next patch series. 55 56 3. VENC subdevice module 57 Responsible for setting outputs provided through internal DACs and also 58 setting timings at LCD controller port when external encoders are connected 59 at the port or LCD panel timings required. When external encoder/LCD panel 60 is connected, the timings for a specific standard/preset is retrieved from 61 the board specific table and the values are used to set the timings in 62 venc using non-standard timing mode. 63 64 Support LCD Panel displays using the VENC. For example to support a Logic 65 PD display, it requires setting up the LCD controller port with a set of 66 timings for the resolution supported and setting the dot clock. So we could 67 add the available outputs as a board specific entry (i.e add the "LogicPD" 68 output name to board-xxx-evm.c). A table of timings for various LCDs 69 supported can be maintained in the board specific setup file to support 70 various LCD displays.As of this patch a basic driver is present, and this 71 support for external encoders and displays forms a part of the next 72 patch series. 73 74 4. OSD module 75 OSD module implements all OSD layer management and hardware specific 76 features. The VPBE module interacts with the OSD for enabling and 77 disabling appropriate features of the OSD. 78 79Current status 80-------------- 81 82A fully functional working version of the V4L2 driver is available. This 83driver has been tested with NTSC and PAL standards and buffer streaming. 84 85To be done 86---------- 87 88vpbe display controller 89 - Add support for external encoders. 90 - add support for selecting external encoder as default at probe time. 91 92vpbe venc sub device 93 - add timings for supporting ths8200 94 - add support for LogicPD LCD. 95 96FB drivers 97 - Add support for fbdev drivers.- Ready and part of subsequent patches. 98