summaryrefslogtreecommitdiffstats
path: root/drivers/video
Commit message (Collapse)AuthorAgeFilesLines
* mx3fb: fix NULL pointer dereference in screen blanking.Wolfram Stering2011-10-031-0/+13
| | | | | | | | | | | | | | When blanking an already blanked framebuffer, a kernel NULL pointer dereference occurred, because mx3fb driver handles all kinds of screen blanking (normal, vsync suspend, powerdown) in the same way. Certain programs (Xorg X11 server) first do a normal blank, followed by a powerdown blank, which triggered the bug. Add an additional safeguard and make sdc_disable_channel() safe against multiple calls independent of other logic. Signed-off-by: Michael Thalmeier <michael.thalmeier@hale.at> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
* video: irq: Remove IRQF_DISABLEDYong Zhang2011-10-0318-20/+19
| | | | | | | | | | | | | | 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>
* smscufx: change edid data to u8 instead of charDan Carpenter2011-10-031-4/+4
| | | | | | | | | | | Having "edid" as char caused a problem in ufx_read_edid() where we compared "edid[i] != 0xFF". Because of the type difference, the condition was never true and the error checking failed. Also I added a __user notation to silence a sparse complaint. Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
* drivers/video: fsl-diu-fb: use a normal for-loop to uninstall framebuffersTimur Tabi2011-09-181-5/+5
| | | | | | | | Uninstalling the framebuffers in reverse order is unnecessary and makes the for-loop awkward. Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
* drivers/video: fsl-diu-fb: fix memory leak on errorTimur Tabi2011-09-181-0/+1
| | | | | | | We were forgetting to unmap the video memory if fsl_diu_check_var() fails. Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
* drivers/video: fsl-diu-fb: fix potential memcpy buffer overflow bugTimur Tabi2011-09-181-1/+1
| | | | | | | | It makes no sense to limit the size of a strncpy() to the length of the source string. Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
* drivers/video: fsl-diu-fb: set the driver name to "fsl-diu-fb"Timur Tabi2011-09-181-2/+2
| | | | | | | | Use the name "fsl-diu-fb" in the Freescale DIU framebuffer driver during registrations. Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
* drivers/video: fsl-diu-fb: improve local variable usage in some functionsTimur Tabi2011-09-181-13/+10
| | | | | | | | Clean up the local variable usage in request_irq_local() and allocate_buf(). This streamlines the code without affecting functionality. Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
* drivers/video: fsl-diu-fb: remove redundant default video modeTimur Tabi2011-09-181-25/+7
| | | | | | | | | The framebuffer layer already uses the first video mode defined in the fb_videomode array as a default, so there's no need to duplicate the first entry into a stand-alone structure. Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
* drivers/video: fsl-diu-fb: improve device tree usageTimur Tabi2011-09-181-41/+24
| | | | | | | | | | | | | | | | | Implement various improvements to the way the Freescale DIU framebuffer driver access the device tree. 1) Use of_iomap() instead of of_address_to_resource() and ioremap() 2) Use be32_to_cpup() instead of directly dereferencing the device_node pointer. 3) Rename variable 'ofdev' to 'pdev' to avoid any confusion that it's a platform_device pointer, not an of_device pointer (of_device no longer exists). Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
* drivers/video: fsl-diu-fb: fix compilation warningTimur Tabi2011-09-181-1/+1
| | | | | | | | | Fix this compilation warning in the Freescale DIU framebuffer driver: warning: 'dummy_ad_addr' may be used uninitialized in this function Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
* drivers/video: fsl-diu-fb: remove unused ioctlsTimur Tabi2011-09-181-12/+0
| | | | | | | | | | | | Remove some unused ioctl commands, and treat those commands as unsupported instead of ignored. Also remove struct mfb_alpha, which isn't used by any ioctl. It may have been once intended for MFB_SET_ALPHA, but that ioctl uses a different data structure. Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
* drivers/video: fsl-diu-fb: clean up printk usageTimur Tabi2011-09-181-88/+17
| | | | | | | | | Remove debug printk messages (they don't help in debugging), replace printk(KERN_xxx with its pr_xxx or dev_xxx equivalent, and add a couple missing error messages. Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
* drivers/video: fsl-diu-fb: clean up whitespace and formattingTimur Tabi2011-09-181-49/+55
| | | | | | | | Fix various indentation and line length problems in the Freescale DIU framebuffer driver. Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
* smscufx: reduce number of casts in ufx_raw_rectSteve Glendinning2011-09-141-10/+10
| | | | | Signed-off-by: Steve Glendinning <steve.glendinning@smsc.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
* video: s3c-fb: Add S5P64X0 specific s3c_fb_driverdataAjay Kumar2011-09-141-0/+27
| | | | | | | | | | | This patch: -- Adds s3c_fb_driverdata for S5P64X0, which supports 3 windows. -- Also, register "s5p64x0-fb" type driver_data. Signed-off-by: Ajay Kumar <ajaykumar.rs@samsung.com> Acked-by: Jingoo Han <jg1.han@samsung.com> Acked-by: Kukjin Kim <kgene.kim@samsung.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
* fbdev: fix indentation in modedb.cTimur Tabi2011-09-141-219/+225
| | | | | | | Fix the incorrect indentation in functions fb_try_mode() and fb_find_mode(). Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
* fbdev: sh_mobile_lcdc: Remove sh_mobile_lcdc_set_bpp()Laurent Pinchart2011-09-051-70/+17
| | | | | | | | 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>
* fbdev: sh_mobile_lcdc: Split channel initialization from probe functionLaurent Pinchart2011-09-051-118/+129
| | | | | | | | | 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>
* fbdev: sh_mobile_lcdc: Avoid forward declarationsLaurent Pinchart2011-09-051-52/+50
| | | | | | | 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>
* fbdev: sh_mobile_lcdc: Update fix.line_length in .fb_set_par()Laurent Pinchart2011-09-051-6/+11
| | | | | | | | | 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>
* fbdev: sh_mobile_lcdc: use display information in info for panningLaurent Pinchart2011-09-051-12/+12
| | | | | | | | We must not use any information in the passed var besides xoffset, yoffset and vmode as otherwise applications might abuse it. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
* fbdev: sh_mobile_lcdc: Add support for format changes at runtimeLaurent Pinchart2011-09-051-0/+14
| | | | | | | Implement .fb_set_par to support frame buffer format changes at runtime. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
* fbdev: sh_mobile_lcdc: Adjust requested parameters in .fb_check_varLaurent Pinchart2011-09-051-15/+88
| | | | | | | | | Instead of failing when the requested fb_var_screeninfo parameters are not supported, adjust the parameters according to the hardware capabilities. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
* sh_mobile_meram: Reset ICBs at unregistration timeLaurent Pinchart2011-09-051-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>
* Add support for SMSC UFX6000/7000 USB display adaptersSteve Glendinning2011-09-053-0/+2011
| | | | | | | | | This patch adds framebuffer suport for SMSC's UFX6000 (USB 2.0) and UFX7000 (USB 3.0) display adapters. Signed-off-by: Steve Glendinning <steve.glendinning@smsc.com> Acked-by: Greg Kroah-Hartman <gregkh@suse.de> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
* fb: sh-mobile: Fix deadlock risk between lock_fb_info() and console_lock()Bruno Prémont2011-09-021-21/+26
| | | | | | | | | | | | | | | | Following on Herton's patch "fb: avoid possible deadlock caused by fb_set_suspend" which moves lock_fb_info() out of fb_set_suspend() to its callers, correct sh-mobile's locking around call to fb_set_suspend() and the same sort of deaklocks with console_lock() due to order of taking the lock. console_lock() must be taken while fb_info is already locked and fb_info must be locked while calling fb_set_suspend(). Signed-off-by: Bruno Prémont <bonbons@linux-vserver.org> Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de> Cc: stable@kernel.org
* fb: avoid possible deadlock caused by fb_set_suspendHerton Ronaldo Krzesinski2011-09-022-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A lock ordering issue can cause deadlocks: in framebuffer/console code, all needed struct fb_info locks are taken before acquire_console_sem(), in places which need to take console semaphore. But fb_set_suspend is always called with console semaphore held, and inside it we call lock_fb_info which gets the fb_info lock, inverse locking order of what the rest of the code does. This causes a real deadlock issue, when we write to state fb sysfs attribute (which calls fb_set_suspend) while a framebuffer is being unregistered by remove_conflicting_framebuffers, as can be shown by following show blocked state trace on a test program which loads i915 and runs another forked processes writing to state attribute: Test process with semaphore held and trying to get fb_info lock: .. fb-test2 D 0000000000000000 0 237 228 0x00000000 ffff8800774f3d68 0000000000000082 00000000000135c0 00000000000135c0 ffff880000000000 ffff8800774f3fd8 ffff8800774f3fd8 ffff880076ee4530 00000000000135c0 ffff8800774f3fd8 ffff8800774f2000 00000000000135c0 Call Trace: [<ffffffff8141287a>] __mutex_lock_slowpath+0x11a/0x1e0 [<ffffffff814142f2>] ? _raw_spin_lock_irq+0x22/0x40 [<ffffffff814123d3>] mutex_lock+0x23/0x50 [<ffffffff8125dfc5>] lock_fb_info+0x25/0x60 [<ffffffff8125e3f0>] fb_set_suspend+0x20/0x80 [<ffffffff81263e2f>] store_fbstate+0x4f/0x70 [<ffffffff812e7f70>] dev_attr_store+0x20/0x30 [<ffffffff811c46b4>] sysfs_write_file+0xd4/0x160 [<ffffffff81155a26>] vfs_write+0xc6/0x190 [<ffffffff81155d51>] sys_write+0x51/0x90 [<ffffffff8100c012>] system_call_fastpath+0x16/0x1b .. modprobe process stalled because has the fb_info lock (got inside unregister_framebuffer) but waiting for the semaphore held by the test process which is waiting to get the fb_info lock: .. modprobe D 0000000000000000 0 230 218 0x00000000 ffff880077a4d618 0000000000000082 0000000000000001 0000000000000001 ffff880000000000 ffff880077a4dfd8 ffff880077a4dfd8 ffff8800775a2e20 00000000000135c0 ffff880077a4dfd8 ffff880077a4c000 00000000000135c0 Call Trace: [<ffffffff81411fe5>] schedule_timeout+0x215/0x310 [<ffffffff81058051>] ? get_parent_ip+0x11/0x50 [<ffffffff814130dd>] __down+0x6d/0xb0 [<ffffffff81089f71>] down+0x41/0x50 [<ffffffff810629ac>] acquire_console_sem+0x2c/0x50 [<ffffffff812ca53d>] unbind_con_driver+0xad/0x2d0 [<ffffffff8126f5f7>] fbcon_event_notify+0x457/0x890 [<ffffffff814144ff>] ? _raw_spin_unlock_irqrestore+0x1f/0x50 [<ffffffff81058051>] ? get_parent_ip+0x11/0x50 [<ffffffff8141836d>] notifier_call_chain+0x4d/0x70 [<ffffffff8108a3b8>] __blocking_notifier_call_chain+0x58/0x80 [<ffffffff8108a3f6>] blocking_notifier_call_chain+0x16/0x20 [<ffffffff8125dabb>] fb_notifier_call_chain+0x1b/0x20 [<ffffffff8125e6ac>] unregister_framebuffer+0x7c/0x130 [<ffffffff8125e8b3>] remove_conflicting_framebuffers+0x153/0x180 [<ffffffff8125eef3>] register_framebuffer+0x93/0x2c0 [<ffffffffa0331112>] drm_fb_helper_single_fb_probe+0x252/0x2f0 [drm_kms_helper] [<ffffffffa03314a3>] drm_fb_helper_initial_config+0x2f3/0x6d0 [drm_kms_helper] [<ffffffffa03318dd>] ? drm_fb_helper_single_add_all_connectors+0x5d/0x1c0 [drm_kms_helper] [<ffffffffa037b588>] intel_fbdev_init+0xa8/0x160 [i915] [<ffffffffa0343d74>] i915_driver_load+0x854/0x12b0 [i915] [<ffffffffa02f0e7e>] drm_get_pci_dev+0x19e/0x360 [drm] [<ffffffff8141821d>] ? sub_preempt_count+0x9d/0xd0 [<ffffffffa0386f91>] i915_pci_probe+0x15/0x17 [i915] [<ffffffff8124481f>] local_pci_probe+0x5f/0xd0 [<ffffffff81244f89>] pci_device_probe+0x119/0x120 [<ffffffff812eccaa>] ? driver_sysfs_add+0x7a/0xb0 [<ffffffff812ed003>] driver_probe_device+0xa3/0x290 [<ffffffff812ed1f0>] ? __driver_attach+0x0/0xb0 [<ffffffff812ed29b>] __driver_attach+0xab/0xb0 [<ffffffff812ed1f0>] ? __driver_attach+0x0/0xb0 [<ffffffff812ebd3e>] bus_for_each_dev+0x5e/0x90 [<ffffffff812ecc2e>] driver_attach+0x1e/0x20 [<ffffffff812ec6f2>] bus_add_driver+0xe2/0x320 [<ffffffffa03aa000>] ? i915_init+0x0/0x96 [i915] [<ffffffff812ed536>] driver_register+0x76/0x140 [<ffffffffa03aa000>] ? i915_init+0x0/0x96 [i915] [<ffffffff81245216>] __pci_register_driver+0x56/0xd0 [<ffffffffa02f1264>] drm_pci_init+0xe4/0xf0 [drm] [<ffffffffa03aa000>] ? i915_init+0x0/0x96 [i915] [<ffffffffa02e84a8>] drm_init+0x58/0x70 [drm] [<ffffffffa03aa094>] i915_init+0x94/0x96 [i915] [<ffffffff81002194>] do_one_initcall+0x44/0x190 [<ffffffff810a066b>] sys_init_module+0xcb/0x210 [<ffffffff8100c012>] system_call_fastpath+0x16/0x1b .. fb-test2 which reproduces above is available on kernel.org bug #26232. To solve this issue, avoid calling lock_fb_info inside fb_set_suspend, and move it out to where needed (callers of fb_set_suspend must call lock_fb_info before if needed). So far, the only place which needs to call lock_fb_info is store_fbstate, all other places which calls fb_set_suspend are suspend/resume hooks that should not need the lock as they should be run only when processes are already frozen in suspend/resume. References: https://bugzilla.kernel.org/show_bug.cgi?id=26232 Signed-off-by: Herton Ronaldo Krzesinski <herton@mandriva.com.br> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de> Cc: stable@kernel.org
* fbdev: au1200fb: silence debug outputManuel Lauss2011-09-021-1/+1
| | | | | | | it's annoying and takes up way too much space in dmesg. Signed-off-by: Manuel Lauss <manuel.lauss@googlemail.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
* video: mb862xx-i2c: fix for reliable decoder register accessAnatolij Gustschin2011-09-021-1/+1
| | | | | | | | Increase delay when polling for tx status. This fixes the unreliable video decoder i2c register access. Signed-off-by: Anatolij Gustschin <agust@denx.de> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
* fbdev: fix parsing of standard timingsTomi Valkeinen2011-09-011-6/+15
| | | | | | | | | | | | The standard timings parses uses 1:1 dimensions when the ratio in the EDID data is 0. However, for EDID 1.3 and later the dimensions are 16:10 when the ratio is 0. Pass the version and revision numbers to get_std_timing() which can then make the right decision about dimensions. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
* video: nuc900fb: remove include of mach/clkdev.hAxel Lin2011-09-011-1/+0
| | | | | | | | | | | | | | | | Since commit aa3831cf9d29cfeaebd8c2169378b74111364487 "ARM: Consolidate the clkdev header files", the header file arch/arm/mach-nuc93x/include/mach/clkdev.h is removed. This patch fixes below build error: drivers/video/nuc900fb.c:42:25: error: mach/clkdev.h: No such file or directory make[2]: *** [drivers/video/nuc900fb.o] Error 1 make[1]: *** [drivers/video] Error 2 make: *** [drivers] Error 2 Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
* video: mxsfb: add missing include of linux/module.hAxel Lin2011-09-011-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Include linux/module.h to fix below build error: from drivers/video/mxsfb.c:42: arch/arm/mach-mxs/include/mach/memory.h:22:1: warning: this is the location of the previous definition drivers/video/mxsfb.c:574: error: 'THIS_MODULE' undeclared here (not in a function) drivers/video/mxsfb.c:893: warning: data definition has no type or storage class drivers/video/mxsfb.c:893: warning: type defaults to 'int' in declaration of 'MODULE_DEVICE_TABLE' drivers/video/mxsfb.c:893: warning: parameter names (without types) in function declaration drivers/video/mxsfb.c:917: error: expected declaration specifiers or '...' before string constant drivers/video/mxsfb.c:917: warning: data definition has no type or storage class drivers/video/mxsfb.c:917: warning: type defaults to 'int' in declaration of 'MODULE_DESCRIPTION' drivers/video/mxsfb.c:917: warning: function declaration isn't a prototype drivers/video/mxsfb.c:918: error: expected declaration specifiers or '...' before string constant drivers/video/mxsfb.c:918: warning: data definition has no type or storage class drivers/video/mxsfb.c:918: warning: type defaults to 'int' in declaration of 'MODULE_AUTHOR' drivers/video/mxsfb.c:918: warning: function declaration isn't a prototype drivers/video/mxsfb.c:919: error: expected declaration specifiers or '...' before string constant drivers/video/mxsfb.c:919: warning: data definition has no type or storage class drivers/video/mxsfb.c:919: warning: type defaults to 'int' in declaration of 'MODULE_LICENSE' drivers/video/mxsfb.c:919: warning: function declaration isn't a prototype make[2]: *** [drivers/video/mxsfb.o] Error 1 make[1]: *** [drivers/video] Error 2 make: *** [drivers] Error 2 Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
* Merge branch 'sh-mobile-lcdc' of git://linuxtv.org/pinchartl/fbdev into ↵Florian Tobias Schandinat2011-08-304-408/+439
|\ | | | | | | fbdev-next
| * fbdev: sh_mobile_meram: Remove unneeded sh_mobile_meram.hLaurent Pinchart2011-08-193-36/+4
| | | | | | | | | | | | | | | | 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>
| * fbdev: sh_mobile_meram: Fix MExxCTL register save on runtime PM suspendLaurent Pinchart2011-08-191-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>
| * fbdev: sh_mobile_meram: Validate ICB configuration outside mutexLaurent Pinchart2011-08-191-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>
| * fbdev: sh_mobile_meram: Replace hardcoded register values with macrosLaurent Pinchart2011-08-191-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>
| * fbdev: sh_mobile_lcdc: Restart LCDC in runtime PM resume handlerLaurent Pinchart2011-08-192-45/+5
| | | | | | | | | | | | | | | | | | | | | | | | Instead of restoring registers blindly, restart the LCDC by going through the startup sequence when resuming from runtime PM suspend. All registers are now correctly initialized in the right order. As a side effect, this also gets rid fo a possible panning restore issue caused by always saving the frame buffer base address registers from set A instead of the currently active set. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
| * fbdev: sh_mobile_lcdc: Store the frame buffer base address when panningLaurent Pinchart2011-08-191-13/+9
| | | | | | | | | | | | | | | | When the frame buffer base address is changed by a panning operation, store it in the channel structure. It will be reused when runtime PM code will use __sh_mobile_lcdc_start(). Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
| * fbdev: sh_mobile_lcdc: Split LCDC start code from sh_mobile_lcdc_startLaurent Pinchart2011-08-192-158/+162
| | | | | | | | | | | | | | Splitting the LCDC start code from clock, MERAM and panel management will make the code usable by runtime PM. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
| * fbdev: sh_mobile_lcdc: Compute clock pattern using divider denominatorLaurent Pinchart2011-08-191-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | The clock divider pattern is computed based on the dot clock register value which stores the divider denumerator. However, when using a 1:1 divider ratio, the register is programmed with a value that must not be interpreted as a denominator. This results in a shift left operation with a value of 32, which produces undefined behaviour. Compute the clock pattern using the divider denominator, not the dot clock register value. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
| * fbdev: sh_mobile_lcdc: Don't acknowlege interrupts unintentionallyLaurent Pinchart2011-08-191-12/+8
| | | | | | | | | | | | | | | | | | | | | | The LDINTR register caries both interrupt enable and interrupt status bits. When setting or clearing interrupt enable bits, write all status bits to 1 to avoid acknowledging interrupts by mistake. When acknowledging interrupts, write 1 to all non-triggered interrupt bits to avoid losing interrupts. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
| * fbdev: sh_mobile_lcdc: Replace hardcoded register values with macrosLaurent Pinchart2011-08-191-111/+93
| | | | | | | | | | | | | | | | 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>
| * fbdev: sh_mobile_lcdc: Turn dot clock on before resuming from runtime PMLaurent Pinchart2011-08-191-3/+3
| | | | | | | | | | | | | | | | | | | | | | Resuming from runtime PM restores all LCDC registers. If the dot clock is off at that time display panning information will be corrupted. Turn the dot clock on before resuming from runtime PM. Similarly, turn the clock off after suspending the LCDC. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Tested-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
| * fbdev: sh_mobile_meram: Backup/restore device registers on shutdown/resumeDamian Hobson-Garcia2011-08-191-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>
| * fbdev: sh_mobile_meram: Move private data from .h to .cDamian Hobson-Garcia2011-08-192-8/+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>
| * fbdev: sh_mobile_meram: Enable/disable MERAM along with LCDCDamian Hobson-Garcia2011-08-191-0/+4
| | | | | | | | | | | | | | The MERAM reference counts should be tied to the two LCDC devices (LCD/HDMI) so that when they are enable/disabled, the MERAM is as well. Signed-off-by: Damian Hobson-Garcia <dhobsong@igel.co.jp>
| * fbdev: sh_mobile_meram: Enable runtime PMDamian Hobson-Garcia2011-08-191-0/+5
| | | | | | | | Signed-off-by: Damian Hobson-Garcia <dhobsong@igel.co.jp>
* | Merge branch 'master' of ↵Florian Tobias Schandinat2011-08-2924-227/+966
|\ \ | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/lethal/fbdev-3.x into fbdev-next Conflicts: drivers/video/atmel_lcdfb.c
OpenPOWER on IntegriCloud