Hi Manju,
On Wednesday, November 24, 2010 15:08:17 Manjunath Hadli wrote:
> 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.
As you can see, I have only comments on the first patch. The others seem fine
to me.
I do think that the drivers would benefit from some all round tightening of
the code. Often functions have quite a lot of indentation levels, the use
of more temporary variables will help, and the driver has a lot of error
and debug messages, possibly more than is necessary.
Regards,
Hans
>
> 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
>
>
--
Hans Verkuil - video4linux developer - sponsored by Cisco
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source