summaryrefslogtreecommitdiff
path: root/drivers/video/sh_mobile_lcdcfb.c
AgeCommit message (Collapse)Author
2012-07-29fbdev: sh_mobile_lcdc: Fix vertical panning stepLaurent Pinchart
Commit 15dede882e564601947f2ce4b647742c0351be6d added support for horizontal panning but accidentally computes the Y pan step value incorrectly for NV12/21 and NV16/61 formats. Fix this. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
2012-07-19fbdev: sh_mobile_lcdc: Fix pan offset computation in YUV modeLaurent Pinchart
The chroma plane offset in memory is equal to the luma plane maximum size. Fix offset computations. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-07-19fbdev: sh_mobile_lcdc: Fix overlay registers update during pan operationLaurent Pinchart
Updating overlay registers require switching to overlay update mode. This was correctly done when configuring the overlay format and size, but not when updating the base address registers during pan operation. Fix it. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-07-19fbdev: sh_mobile_lcdc: Support horizontal panningLaurent Pinchart
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-07-19fbdev: sh_mobile_lcdc: Use channel configuration to initialize fb deviceLaurent Pinchart
Copy the x and y virtual resolutions from the channel information instead of recomputing them. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-07-19fbdev: sh_mobile_lcdc: Fix line pitch computationLaurent Pinchart
Line pitch depends on the virtual horizontal resolution, compute it accordingly. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-07-19fbdev: sh_mobile_lcdc: Destroy mutex at remove timeLaurent Pinchart
Add a missing mutex_destroy() call when the driver is unbound from the device. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-07-19sh_mobile_meram: Use direct function calls for the public APILaurent Pinchart
There's no reason to use abstract operation pointers to implement the MERAM API. Replace them by direct function calls. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-07-19sh_mobile_meram: Rename operations to cache_[alloc|free|update]Laurent Pinchart
The MERAM operations meram_register, meram_unregister and meram_update handle LCDC cache. In preparation for "raw" MERAM allocation, rename them to more appropriate names. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-06-20fbdev: sh_mobile_lcdc: Implement overlays supportLaurent Pinchart
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-06-20fbdev: sh_mobile_lcdc: Rename fb operation handlers with a common prefixLaurent Pinchart
Make all fb operation handlers start with sh_mobile_lcdc_ in preparation for the multi-plane support. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-06-20fbdev: sh_mobile_lcdc: Constify sh_mobile_lcdc_fix structureLaurent Pinchart
The structure is only read, make it const. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-05-21fbdev: sh_mobile_lcdc: Don't confuse line size with pitchLaurent Pinchart
When using the MERAM the LCDC line size needs to be programmed with a MERAM-specific value different than the real frame buffer pitch. Fix it. Reported-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Acked-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de> Cc: stable@vger.kernel.org # for 3.4 Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-03-12fbdev: sh_mobile_meram: Remove unneeded sanity checksLaurent Pinchart
The meram_register(), meram_unregister() and meram_update() operations check that the pointers they get from the caller are not NULL. Those checks can be remove, as the caller already ensures that the pointers are valid. The platform sanity checks can also be removed, as the operations can't be accessed without valid platform data anyway. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_meram: Don't perform update in register operationLaurent Pinchart
Remove the RGB or Y/C base address update from the meram_register() operation, as this belongs to the meram_update() operation. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_lcdc: Don't store copy of platform dataLaurent Pinchart
Instead of copying the whole platform data structure to struct sh_mobile_lcdc_chan, store a const pointer to the channel platform data. MERAM configuration information needs to be changed at runtime, so copy it to struct sh_mobile_lcdc_chan. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_meram: Allocate ICBs automaticallyLaurent Pinchart
Instead of manually specifying the ICBs to use in platform data, allocate them automatically at runtime. The range of reserved ICBs (for instance to be used through UIO), if any, is passed in the platform data reserved_icbs field as a bitmask. The MERAM registration function now returns a pointer to an opaque MERAM object, which is passed to the update and unregistration functions. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_lcdc: Pass channel pointer to sh_mobile_wait_for_vsyncLaurent Pinchart
The sh_mobile_wait_for_vsync() function isn't related to the fbdev API, make it generic by passing a channel pointer instead of an fb_info pointer. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_lcdc: Store configuration in channel structureLaurent Pinchart
Store the frame buffer configuration (colorspace, visible/virtual horizontal and vertical resolutions and line pitch) in the sh_mobile_lcdc_chan structure, and use it instead of accessing fb_info. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_lcdc: Pass physical device pointer to DMA functionsLaurent Pinchart
The dma_map_sg() and dma_unmap_sg() functions need a pointer to the physical device. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_lcdc: Split fb init/cleanup from channel init/cleanupLaurent Pinchart
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_lcdc: Store the format in struct sh_mobile_lcdc_chanLaurent Pinchart
Store the active format in the channel structure, and use it instead of parsing info->var all over the place when the format is needed. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_lcdc: Add sh_mobile_format_info() functionLaurent Pinchart
The function returns a pointer to a structure describing a format based on its fourcc. Use the function where applicable instead of hardcoded switch-case statements. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_lcdc: Rename (lcd|num)_cfg (lcd|num)_modesLaurent Pinchart
The struct sh_mobile_lcdc_chan_cfg platform data contains a list of video modes. Name the lcd_cfg and num_cfg fields to reflect that they describe video modes. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_lcdc: Store display mode in a struct fb_videomodeLaurent Pinchart
Embed struct fb_videomode instead of struct fb_var_screeninfo in struct sh_mobile_lcdc_chan to store the display mode. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_hdmi: Don't access LCDC fb_infoLaurent Pinchart
The LCDC fb_info structure is only used to retrieve the default video mode in case none of the modes advertised by EDID information is acceptable. Pass a pointer to the default mode through the sh_mobile_lcdc_entity structure instead. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_lcdc: Pass a video mode to the notify callbackLaurent Pinchart
Pass pointers to struct fb_videomode and struct fb_monspecs instead of struct fb_var_screeninfo to the notify callback. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12sh_mobile_lcdc: Add display notify callback to sh_mobile_lcdc_chanLaurent Pinchart
The callback implements 3 notification events: - SH_MOBILE_LCDC_EVENT_DISPLAY_CONNECT notifies the LCDC that the display has been connected - SH_MOBILE_LCDC_EVENT_DISPLAY_DISCONNECT notifies the LCDC that the display has been disconnected - SH_MOBILE_LCDC_EVENT_DISPLAY_MODE notifies that LCDC that a display mode has been detected Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_lcdc: Return display connection state in display_onLaurent Pinchart
Return true if the display is connected and false otherwise. Set the fb info state to FBINFO_STATE_SUSPENDED in the sh_mobile_lcdc driver when the display is not connected. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_lcdc: Remove fb_info parameter to display_on operationLaurent Pinchart
The parameter is unused, remove it. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12sh_mobile_lcdc: Add an lcdc channel pointer to sh_mobile_lcdc_entityLaurent Pinchart
The field will be used by the transmitter drivers to access sh_mobile_lcdc_chan fields such as fb_info. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_lcdc: Merge board_cfg and lcd_size_cfg into panel_cfgLaurent Pinchart
Update board code accordingly. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_lcdc: Move brightness ops to sh_mobile_lcdc_bl_infoLaurent Pinchart
Update board code accordingly. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_lcdc: Remove board configuration board_data fieldLaurent Pinchart
The field is unused, remove it. Update board code accordingly. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_lcdc: Remove board configuration owner fieldLaurent Pinchart
The field is unused, remove it. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_lcdc: Handle HDMI/MIPI transmitter device directlyLaurent Pinchart
Pass a pointer to the transmitter device through platform data, retrieve the corresponding sh_mobile_lcdc_entity structure in the probe method and call the transmitter display_on/off methods directly. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_lcdc: Create functions to turn the display on/offLaurent Pinchart
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_lcdc: Don't pass struct device aroundLaurent Pinchart
Pass a pointer to a struct sh_mobile_lcdc_priv instead, which stores a pointer to the device. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_lcdc: Move pm runtime enable to probe()Laurent Pinchart
The pm_runtime_enable() and pm_runtime_resume() calls don't belong to sh_mobile_lcdc_setup_clocks(). Move them to the probe function. Remove the unneeded pm_runtime_resume() call. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_lcdc: Mark init-only symbols with __devinit(const)Laurent Pinchart
default_720p and sh_mobile_lcdc_check_interface are used at device initialization time only. Mark them as __devinitconst and __devinit respectively. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_lcdc: Reorder code into sectionsLaurent Pinchart
Make the driver more readable by reordering code and splitting it into logical sections. Reorder the headers alphabetically. No modification to the code have been performed. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2011-12-19fbdev: sh_mobile_lcdc: Support FOURCC-based format APILaurent Pinchart
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
2011-12-03video: convert drivers/video/* to use module_platform_driver()Axel Lin
This patch converts the drivers in drivers/video/* to use the module_platform_driver() macro which makes the code smaller and a bit simpler. Cc: Ben Dooks <ben@simtec.co.uk> Cc: Manuel Lauss <mano@roarinelk.homelinux.net> Signed-off-by: Axel Lin <axel.lin@gmail.com> Acked-by: Wan ZongShun <mcuos.com@gmail.com> Acked-by: Sascha Hauer <s.hauer@pengutronix.de> Acked-by: Lennert Buytenhek <buytenh@wantstofly.org> Acked-by: Alexey Charkov <alchark@gmail.com> Acked-by: Damian Hobson-Garcia <dhobsong@igel.co.jp> Acked-by: Jingoo Han <jg1.han@samsung.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
2011-11-21fbdev: sh_mobile_lcdcfb: fixup LDHAJR :: HSYNPAJ needs maskKuninori Morimoto
LDHAJR register will be broken by hsync_pos without this patch Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Acked-by: Magnus Damm <damm@opensource.se> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
2011-10-31video: Add module.h to drivers/video files who really use it.Paul Gortmaker
They were getting this implicitly by an include of module.h from device.h -- but we are going to clean that up and break that include chain, so include module.h explicitly now. [ with contributions from Axel Lin <axel.lin@gmail.com> ] Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
2011-10-03video: irq: Remove IRQF_DISABLEDYong Zhang
Since commit [e58aa3d2: genirq: Run irq handlers with interrupts disabled], We run all interrupt handlers with interrupts disabled and we even check and yell when an interrupt handler returns with interrupts enabled (see commit [b738a50a: genirq: Warn when handler enables interrupts]). So now this flag is a NOOP and can be removed. Signed-off-by: Yong Zhang <yong.zhang0@gmail.com> Acked-by: David Brown <davidb@codeaurora.org> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
2011-09-05fbdev: sh_mobile_lcdc: Remove sh_mobile_lcdc_set_bpp()Laurent Pinchart
The function duplicates code found in sh_mobile_check_var(). Remove sh_mobile_lcdc_set_bpp() and call sh_mobile_check_var() instead. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
2011-09-05fbdev: sh_mobile_lcdc: Split channel initialization from probe functionLaurent Pinchart
Move channel initialization to sh_mobile_lcdc_channel_init() and call the function from sh_mobile_lcdc_probe(). This makes the code more readable and prepares it for fix/var initialization rework. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
2011-09-05fbdev: sh_mobile_lcdc: Avoid forward declarationsLaurent Pinchart
Reorder probe/remove functions to avoid forward declarations. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
2011-09-05fbdev: sh_mobile_lcdc: Update fix.line_length in .fb_set_par()Laurent Pinchart
Instead of updating the fixed screen information line length manually after calling fb_set_var() in sh_mobile_fb_reconfig(), update the field in the .fb_set_par() operation handler. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>