This driver is written for Texas Instruments's DM644X VPBE IP. This SoC supports 2 video planes and 2 OSD planes as part of its OSD (On Screen Display) block. At present, the patches conatin the basic support of DM644X V4L2 driver, and subsequent patch sets would add support for external encoders,other DMXXX family SoC and fbdev support. VPBE V4L2 driver design ====================================================================== File partitioning ----------------- V4L2 display device driver drivers/media/video/davinci/vpbe_display.c drivers/media/video/davinci/vpbe_display.h VPBE display controller drivers/media/video/davinci/vpbe.c drivers/media/video/davinci/vpbe.h VPBE venc sub device driver drivers/media/video/davinci/vpbe_venc.c drivers/media/video/davinci/vpbe_venc.h drivers/media/video/davinci/vpbe_venc_regs.h VPBE osd driver drivers/media/video/davinci/vpbe_osd.c drivers/media/video/davinci/vpbe_osd.h drivers/media/video/davinci/vpbe_osd_regs.h Functional partitioning ----------------------- Consists of following (in the same order as the list under file partitioning):- 1. V4L2 display driver Implements video2 and video3 device nodes and provides v4l2 device interface to manage VID0 and VID1 layers. 2. Display controller Loads up venc, osd and external encoders such as ths8200. It provides a set of API calls to V4L2 drivers to set the output/standards in the venc or external sub devices. It also provides a device object to access the services from osd sub device using sub device ops. The connection of external encoders to venc LCD controller port is done at init time based on default output and standard selection or at run time when application change the output through V4L2 IOCTLs. When connetected to an external encoder, vpbe controller is also responsible for setting up the interface between venc and external encoders based on board specific settings (specified in board-xxx-evm.c). This allowes interfacing external encoders such as ths8200. The setup_if_config() is implemented for this as well as configure_venc() (part of the next patch) API to set timings in venc for a specific display resolution.As of this patch series, the interconnection and enabling ans setting of the external encoders is not present, and would be a part of the next patch series. 3. Venc sub device Responsible for setting outputs provides through internal dacs and also setting timings at LCD controller port when external encoders are connected at the port or LCD panel timings required. When external encoder/LCD panel is connected, the timings for a specific standard/preset is retrieved from the board specific table and the values are used to set the timings in venc using non-standard timing mode. Support LCD Panel displays using the venc. For example to support a Logic PD display, it requires setting up the LCD controller port with a set of timings for the resolution supported and setting the dot clock. So we could add the available outputs as a board specific entry ( i.e add the "LogicPD" output name to board-xxx-evm.c). A table of timings for various LCDs supported cab be maintained in the board specific setup file to support various LCD displays. 4. osd sub device Osd sub device implements all osd layer management and hardware specific features. In the legacy drivers (LSPxxx), the hardware specific features are configured through proprietary IOCTLs at the fb device interface. Since sub devices are going to support device nodes, application will be able to configure the hardware feayture directly by opening the osd sub device node and by calling the related IOCTL. So these proprietary IOCTLs are to be removed from the FB Device driver when doing up port of these drivers to mainline kernel. The V4L2 and FB device nodes supports only IOCTLS as per the associated spec. The rest of the IOCTLs are to be moved to osd and venc sub devices. Current status:- A build tested version of vpbe controller is available. Following are TBDs. vpbe display controller - review and modify the handling of external encoders. - add support for selecting external encoder as default at probe time. vpbe venc sub device - add timings for supporting ths8200 - add support for LogicPD LCD. v4l2 driver - A version is already developed which is to be cleaned up and unit tested FB drivers - Add support for fbdev drivers.- Ready and part of subsequent patches. Manjunath Hadli (6): davinci vpbe: V4L2 display driver for DM644X SoC davinci vpbe: VPBE display driver davinci vpbe: OSD(On Screen Display) block davinci vpbe: VENC( Video Encoder) implementation davinci vpbe: platform specific additions davinci vpbe: Build infrastructure for VPBE driver arch/arm/mach-davinci/board-dm644x-evm.c | 81 +- arch/arm/mach-davinci/dm644x.c | 238 +++- arch/arm/mach-davinci/include/mach/dm644x.h | 4 + drivers/media/video/davinci/Kconfig | 22 + drivers/media/video/davinci/Makefile | 2 + drivers/media/video/davinci/vpbe.c | 853 ++++++++++ drivers/media/video/davinci/vpbe_display.c | 2282 ++++++++++++++++++++++++++ drivers/media/video/davinci/vpbe_osd.c | 1208 ++++++++++++++ drivers/media/video/davinci/vpbe_osd_regs.h | 389 +++++ drivers/media/video/davinci/vpbe_venc.c | 575 +++++++ drivers/media/video/davinci/vpbe_venc_regs.h | 189 +++ include/media/davinci/vpbe.h | 187 +++ include/media/davinci/vpbe_display.h | 144 ++ include/media/davinci/vpbe_osd.h | 397 +++++ include/media/davinci/vpbe_types.h | 93 ++ include/media/davinci/vpbe_venc.h | 41 + 16 files changed, 6686 insertions(+), 19 deletions(-) create mode 100644 drivers/media/video/davinci/vpbe.c create mode 100644 drivers/media/video/davinci/vpbe_display.c create mode 100644 drivers/media/video/davinci/vpbe_osd.c create mode 100644 drivers/media/video/davinci/vpbe_osd_regs.h create mode 100644 drivers/media/video/davinci/vpbe_venc.c create mode 100644 drivers/media/video/davinci/vpbe_venc_regs.h create mode 100644 include/media/davinci/vpbe.h create mode 100644 include/media/davinci/vpbe_display.h create mode 100644 include/media/davinci/vpbe_osd.h create mode 100644 include/media/davinci/vpbe_types.h create mode 100644 include/media/davinci/vpbe_venc.h -- 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