summaryrefslogtreecommitdiffstats
path: root/drivers/video/sh_mobile_meram.c
AgeCommit message (Collapse)AuthorFilesLines
2012-03-12fbdev: sh_mobile_meram: Implement system suspend/resumeLaurent Pinchart1-6/+5
Supporting runtime PM is very nice, but that's not a reason not to implement system suspend/resume properly. Reported-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_meram: Remove unneeded sanity checksLaurent Pinchart1-26/+6
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 Pinchart1-13/+2
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_meram: Allocate ICBs automaticallyLaurent Pinchart1-159/+186
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_meram: Use genalloc to manage MERAM allocationLaurent Pinchart1-42/+70
Instead of requiring the users to hardcode MERAM allocation in platform data, allocate blocks at runtime using genalloc. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_meram: Divide the code into sectionsLaurent Pinchart1-54/+44
And rename a couple of constants to make prefixes more uniform. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_meram: Don't inline everythingLaurent Pinchart1-15/+15
Let the compiler decide which complex functions to inline, and constify constant static arrays. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_meram: Add struct sh_mobile_meram_icbLaurent Pinchart1-88/+90
The new structure stores ICB parameters for ICBs. Instead of modifying the struct sh_mobile_meram_cfg instances passed by callers, store the ICB parameters internally and make the public API take const pointers to sh_mobile_meram_cfg. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_meram: Make current_reg field store the current reg setLaurent Pinchart1-1/+1
Make sure current_reg == 0/1 always mean register set A/B through all the code. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_meram: Make variables unsigned where applicableLaurent Pinchart1-37/+43
Many variables, such as loop counters, sizes and offsets, should be unsigned integers. Make them so. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_meram: Add _cfg suffix to struct sh_mobile_meram_icbLaurent Pinchart1-5/+5
The structure describe ICB configuration, no ICB objects themselves. Rename it to sh_mobile_meram_icb_cfg in preparation for the addition of an ICB structure. All the structure fields are unsigned integers, make them so. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2012-03-12fbdev: sh_mobile_meram: Request memory regions for memory resourcesLaurent Pinchart1-16/+37
Make sure the registers and MERAM spaces are reserved before using them. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2011-12-03video: convert drivers/video/* to use module_platform_driver()Axel Lin1-12/+1
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-09-05sh_mobile_meram: Reset ICBs at unregistration timeLaurent Pinchart1-2/+4
When ICBs are unregistered and later reused they need to be reset to avoid data corruption. Set the WBF, WF and RF bits to make sure ICBs get reset properly. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
2011-08-19fbdev: sh_mobile_meram: Remove unneeded sh_mobile_meram.hLaurent Pinchart1-2/+3
The drivers/video/sh_mobile_meram.h header contains unused definitions and declarations. Move the only used macro to sh_mobile_meram.c, and remove the header. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2011-08-19fbdev: sh_mobile_meram: Fix MExxCTL register save on runtime PM suspendLaurent Pinchart1-1/+1
To reset the ICB on resume the MExxCTL register needs to be OR'ed with MExxCTL_WBF | MExxCTL_WF | MExxCTL_RF, no set to that value. Fix this. This fixes corruption at the bottom of the display when resuming from runtime PM. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2011-08-19fbdev: sh_mobile_meram: Validate ICB configuration outside mutexLaurent Pinchart1-10/+8
Validate as much of the requested ICB configuration as possible outside of the mutex-protected region when registering ICBs. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2011-08-19fbdev: sh_mobile_meram: Replace hardcoded register values with macrosLaurent Pinchart1-26/+71
Instead of hardcoding register values through the driver, define macros for individual register bits using the register name and the bit name, and use the macros. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2011-08-19fbdev: sh_mobile_meram: Backup/restore device registers on shutdown/resumeDamian Hobson-Garcia1-0/+71
Save and reconfigure the MERAM registers when the MERAM is powered down and restored Signed-off-by: Damian Hobson-Garcia <dhobsong@igel.co.jp>
2011-08-19fbdev: sh_mobile_meram: Move private data from .h to .cDamian Hobson-Garcia1-0/+8
There is no reason for sh_mobile_meram_priv to be in the .h file since it should be private to sh_mobile_meram.c Signed-off-by: Damian Hobson-Garcia <dhobsong@igel.co.jp>
2011-08-19fbdev: sh_mobile_meram: Enable runtime PMDamian Hobson-Garcia1-0/+5
Signed-off-by: Damian Hobson-Garcia <dhobsong@igel.co.jp>
2011-06-24fbdev: sh_mobile_meram: Correct pointer check for YCbCr chroma planeDamian Hobson-Garcia1-1/+1
The check was intended to test if we have a valid pointer to write into, but it mistakenly checks the pointer contents instead. Since a valid pointer is mandatory for the chroma data if a YCbCr format is used, the pointer check has been removed. Signed-off-by: Damian Hobson-Garcia <dhobsong@igel.co.jp> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2011-05-23sh_mobile_meram: Add support for NV24 framebuffersDamian1-5/+19
Since the NV24 framebuffer has a CbCr plane that is twice as wide as the Y plane, it needs to be handled as a special case. Signed-off-by: Damian Hobson-Garcia <dhobsong@igel.co.jp> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2011-05-23sh_mobile_meram: MERAM framework for LCDCDamian1-0/+553
Based on the patch by Takanari Hayama <taki@igel.co.jp> Adds support framework necessary to use Media RAM (MERAM) caching functionality with the LCDC. The MERAM is accessed through up to 4 Interconnect Buffers (ICBs). ICB numbers and MERAM address ranges to use are specified in by filling in the .meram_cfg member of the LCDC platform data Signed-off-by: Damian Hobson-Garcia <dhobsong@igel.co.jp> Signed-off-by: Paul Mundt <lethal@linux-sh.org>