summaryrefslogtreecommitdiffstats
path: root/drivers/video/fsl-diu-fb.c
AgeCommit message (Collapse)Author
2012-08-23drivers/video/fsl-diu-fb.c: use devm_ functionsDamien Cassou
The various devm_ functions allocate memory that is released when a driver detaches. This patch uses these functions for data that is allocated in the probe function of a platform device and is only freed in the remove function. Signed-off-by: Damien Cassou <damien.cassou@lifl.fr> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
2012-05-13drivers/video: fsl-diu-fb: don't initialize the THRESHOLDS registersTimur Tabi
The THRESHOLDS register configures thresholds for two interrupts, but these interrupts are not used in the DIU driver. An early version of the driver may have used the "lines before vsync" interrupt, which requires the LS_BF_VS of THRESHOLDS to be initialized. Unfortunately, the initialization of this register does not do a read-modify-write to set only LS_BF_VS. On the MPC8610, the value written is correct. On other chips, like the P1022, the value overwrites some reserved bits. This results in a performance drop on the P1022. Since the default value is acceptable as-is on all SOCs, we should just avoid touching this register. Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
2012-01-28drivers/video: compile fixes for fsl-diu-fb.cMichael Neuling
Fix a compiler errors introduced in: commit ddd3d905436b572ebadc09dcf2d12ca5b37020a0 Author: Timur Tabi <timur@freescale.com> drivers/video: fsl-diu-fb: merge all allocated data into one block Signed-off-by: Michael Neuling <mikey@neuling.org> Acked-by: Timur Tabi <timur@freescale.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
2012-01-03drivers/video: fsl-diu-fb: merge fsl_diu_alloc() into map_video_memory()Timur Tabi
Functions fsl_diu_alloc() and fsl_diu_free() were only being called by map_video_memory() and unmap_video_memory(), respectively. Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
2012-01-03drivers/video: fsl-diu-fb: add default platform ops functionsTimur Tabi
The DIU driver requires some platform-specific functions to be defined, but two them can be optional because most platforms implement them the same way. Functions set_gamma_table() and get_pixel_format() are only needed because of quirks in the Freescale MPC8610 HPCD reference board. For other boards, a generic implementation works, so we shouldn't require the platform code to define them. Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
2012-01-03drivers/video: fsl-diu-fb: remove broken reference count enabling the displayTimur Tabi
The functions enable_lcdc() and disable_lcdc() used the variable fb_enable to keep a reference count of when the display is enabled, but the code is broken. The display is always disabled when disable_lcdc(), and it is always enabled when enable_lcdc() is called, regardless of the value of fb_enable. Obviously, we don't need to keep a reference count, so just remove the variable. Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
2012-01-03drivers/video: fsl-diu-fb: set correct framebuffer flagsTimur Tabi
The DIU uses system RAM for the framebuffer, so FBINFO_VIRTFB should be set. Since the framebuffer is in system RAM, it can be read from more quickly than written to, so FBINFO_READS_FAST should be set. We can also set FBINFO_PARTIAL_PAN_OK for the same reasons. Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
2012-01-03drivers/video: fsl-diu-fb: merge init_fbinfo() into install_fb()Timur Tabi
Function init_fbinfo() is called only from install_fb(), and it's only a few lines long. Plus, it ignores the return code from fb_alloc_cmap(). Merge its contents into install_fb() and handle errors properly. Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
2011-12-19drivers/video: fsl-diu-fb: rename "machine_data" to "data"Timur Tabi
"machine_data" is too long and clunky, and the "machine" part doesn't make much sense, anyway. Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
2011-12-19drivers/video: fsl-diu-fb: merge all allocated data into one blockTimur Tabi
The Freescale DIU driver allocates multiple blocks of memory, including multiple DMA buffers. Merge all of these blocks into one data structure. Specifically: 1) struct fsl_diu_data now contains everything that needs to be allocated, except for the framebuffers themselves. DMA'able objects are aligned correctly within the structure. 2) struct diu_addr is no longer needed, because we don't have to manage multiple blocks of DMA memory. 3) Since there's no diu_addr any more, macro DMA_ADDR is used to calculate the DMA address of any field in fsl_diu_data. 4) Functions allocate_buf() and free_buf() are no longer needed, because we now assume that dma_alloc_coherent() will allocate a page-aligned block, and everything is properly aligned with fsl_diu_data already, so we no longer need to align any memory blocks ourselves. 5) The "dummy" area descriptor is now defined separately from the other five ADs, so NUM_AOIS (previously called FSL_AOI_NUM) is now set to five instead of six. Previously, all six were combined together to avoid a separate call to allocate_buf() just for the dummy AD. 6) framebuffer_alloc() and framebuffer_release() are no longer used. The framebuffer is initialized manually. 7) Error handling is simplified since there's only one memory buffer allocated. Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
2011-10-05drivers/video: fsl-diu-fb: merge diu_pool into fsl_diu_dataTimur Tabi
The diu_pool structure contains diu_addr objects for various objects allocated in DMA space that are used by the DIU, but the only instance of this structure is a global variable, 'pool'. Eliminate 'pool' by merging its fields into the fsl_diu_data structure, which is instantiated on the heap for each DIU controller found. Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
2011-10-05drivers/video: fsl-diu-fb: merge diu_hw into fsl_diu_dataTimur Tabi
The diu_hw structure contains two fields used to access the DIU registers, but the only instance of this structure is a global variable, 'dr'. Eliminate 'dr' by merging its fields into the fsl_diu_data structure, which is instantiated on the heap for each DIU controller found. Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
2011-10-05drivers/video: fsl-diu-fb: only DIU modes 0 and 1 are supportedTimur Tabi
The Freescale DIU video controller supports five video "modes", but only the first two are used by the driver. The other three are special modes that don't make sense for a framebuffer driver. Therefore, there's no point in keeping a global variable that indicates which mode we're supposed to use. Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
2011-10-05drivers/video: fsl-diu-fb: remove unused panel operating mode supportTimur Tabi
The MFB_TYPE_xxx macros indicate different "operating modes" of each AOI, but this feature is not actually used in the driver. The mfb_index.type field is always set to MFB_TYPE_OUTPUT, so just delete it and any code that references it. Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
2011-10-05drivers/video: fsl-diu-fb: use an enum for the AOI indexTimur Tabi
Each of the five AOIs created by the DIU driver has a special purpose, and they're not treated equally. It makes sense to identify them with an enum instead of a hard-coded number. Since the 'index' is now an enum, it can only contain allowed values, so there's no need to check for an invalid value. This simplifies some other code, such as fsl_diu_disable_panel(), which no longer needs to return an error code. Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
2011-10-05drivers/video: fsl-diu-fb: add several new video modesTimur Tabi
Add the following new video modes to the Freescale DIU framebuffer driver: 640x480x60 640x480x72 640x480x75 640x480x90 640x480x100 800x480x60 800x600x60 854x480x60 1280x480x60 1280x720x60 1920x1080x60 Also add margin data to the 320x240 video mode. This mode was originally intended only for the AOIs (overlays) used on planes two and three, but with real margin data, it can now be used as an actual video mode. Video mode data is from earlier work done by Jerry Huang <Chang-Ming.Huang@freescale.com>. Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
2011-10-05drivers/video: fsl-diu-fb: remove broken screen blanking supportTimur Tabi
The function which is supposed to provide screen blanking support doesn't actually do anything, so the framebuffer layer thinks the screen has been blanked when it really isn't. Remove the code completely for now. A side-effect of this change is that the framebuffer console blanking now works correctly. Presumably this is because the console now receives -EINVAL instead of '0' when it asks the driver to blank the screen, so the console does it manually now. A signficant refactoring of the driver is planned, and proper hardware blanking support will added afterwards. Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
2011-10-05drivers/video: fsl-diu-fb: move some definitions out of the header fileTimur Tabi
Move several macros and structures from the Freescale DIU driver's header file into the source file, because they're only used by that file. Also delete a few unused macros. The diu and diu_ad structures cannot be moved because they're being used by the MPC5121 platform file. A future patch eliminate the need for the platform file to access these structs, so they'll be moved also. Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
2011-10-05drivers/video: fsl-diu-fb: fix some ioctlsTimur Tabi
Use the _IOx macros to define the ioctl commands, instead of hard-coded numbers. Unfortunately, the original definitions of MFB_SET_PIXFMT and MFB_GET_PIXFMT used the wrong value for the size, so these macros have new values now. To avoid breaking binary compatibility with older applications, we retain support for the original values, but the driver displays a warning message if they're used. Also remove the FBIOGET_GWINFO and FBIOPUT_GWINFO ioctls. FBIOPUT_GWINFO was never implemented, and FBIOGET_GWINFO was never used by any application. Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
2011-09-18drivers/video: fsl-diu-fb: use a normal for-loop to uninstall framebuffersTimur Tabi
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>
2011-09-18drivers/video: fsl-diu-fb: fix memory leak on errorTimur Tabi
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>
2011-09-18drivers/video: fsl-diu-fb: fix potential memcpy buffer overflow bugTimur Tabi
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>
2011-09-18drivers/video: fsl-diu-fb: set the driver name to "fsl-diu-fb"Timur Tabi
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>
2011-09-18drivers/video: fsl-diu-fb: improve local variable usage in some functionsTimur Tabi
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>
2011-09-18drivers/video: fsl-diu-fb: remove redundant default video modeTimur Tabi
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>
2011-09-18drivers/video: fsl-diu-fb: improve device tree usageTimur Tabi
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>
2011-09-18drivers/video: fsl-diu-fb: fix compilation warningTimur Tabi
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>
2011-09-18drivers/video: fsl-diu-fb: remove unused ioctlsTimur Tabi
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>
2011-09-18drivers/video: fsl-diu-fb: clean up printk usageTimur Tabi
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>
2011-09-18drivers/video: fsl-diu-fb: clean up whitespace and formattingTimur Tabi
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>
2011-07-13drivers/video: use strings to specify the Freescale DIU monitor portTimur Tabi
Instead of using ill-defined numbers (0, 1, and 2) for the monitor port, allow the user to specify the port by name ("dvi", "lvds", or "dlvds"). This works on the kernel command line, the module command-line, and the sysfs "monitor" device. Note that changing the monitor port does not currently work on the P1022DS, because the code that talks to the PIXIS FPGA is broken. Signed-off-by: Timur Tabi <timur@freescale.com> Acked-by: Anatolij Gustschin <agust@denx.de> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2011-06-24fsl-diu-fb: remove check for pixel clock rangesTimur Tabi
The Freescale DIU framebuffer driver defines two constants, MIN_PIX_CLK and MAX_PIX_CLK, that are supposed to represent the lower and upper limits of the pixel clock. These values, however, are true only for one platform clock rate (533MHz) and only for the MPC8610. So the actual range for the pixel clock is chip-specific, which means the current values are almost always wrong. The chance of an out-of-range pixel clock being used are also remote. Rather than try to detect an out-of-range clock in the DIU driver, we depend on the board-specific pixel clock function (e.g. p1022ds_set_pixel_clock) to clamp the pixel clock to a supported value. Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2011-03-31Fix common misspellingsLucas De Marchi
Fixes generated by 'codespell' and manually reviewed. Signed-off-by: Lucas De Marchi <lucas.demarchi@profusion.mobi>
2011-02-28dt/video: Eliminate users of of_platform_{,un}register_driverGrant Likely
Get rid of users of of_platform_driver in drivers/video. The of_platform_{,un}register_driver functions are going away, so the users need to be converted to using the platform_bus_type directly. Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
2010-08-06of/device: Replace struct of_device with struct platform_deviceGrant Likely
of_device is just an alias for platform_device, so remove it entirely. Also replace to_of_device() with to_platform_device() and update comment blocks. This patch was initially generated from the following semantic patch, and then edited by hand to pick up the bits that coccinelle didn't catch. @@ @@ -struct of_device +struct platform_device Signed-off-by: Grant Likely <grant.likely@secretlab.ca> Reviewed-by: David S. Miller <davem@davemloft.net>
2010-08-01powerpc/fsl-diu-fb: Support setting display mode using EDIDAnatolij Gustschin
Adds support for encoding display mode information in the device tree using verbatim EDID block. If the EDID entry in the DIU node is present, the driver will build mode database using EDID data and allow setting the display modes from this database. Otherwise display mode will be set using mode entries from driver's internal database as usual. This patch also updates device tree bindings. Signed-off-by: Anatolij Gustschin <agust@denx.de> Acked-by: Timur Tabi <timur@freescale.com> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
2010-08-01powerpc/5121: shared DIU framebuffer supportAnatolij Gustschin
MPC5121 DIU configuration/setup as initialized by the boot loader currently will get lost while booting Linux. As a result displaying the boot splash is not possible through the boot process. To prevent this we reserve configured DIU frame buffer address range while booting and preserve AOI descriptor and gamma table so that DIU continues displaying through the whole boot process. On first open from user space DIU frame buffer driver releases the reserved frame buffer area and continues to operate as usual. Signed-off-by: John Rigby <jcrigby@gmail.com> Signed-off-by: Anatolij Gustschin <agust@denx.de> Acked-by: Timur Tabi <timur@freescale.com> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
2010-08-01powerpc/5121: move fsl-diu-fb.h to include/linuxAnatolij Gustschin
Some DIU structures will be used in platform code in subsequent MPC5121 DIU patch, so we move this header to be able to include it elsewhere. Signed-off-by: Anatolij Gustschin <agust@denx.de> Acked-by: Timur Tabi <timur@freescale.com> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
2010-08-01powerpc/5121: fsl-diu-fb: fix issue with re-enabling DIU area descriptorAnatolij Gustschin
On MPC5121e Rev 2.0 re-configuring the DIU area descriptor by writing new descriptor address doesn't always work. As a result, DIU continues to display using old area descriptor even if the new one has been written to the descriptor register of the plane. Add the code from Freescale MPC5121EADS BSP for writing descriptor addresses properly. This fixes the problem for Rev 2.0 silicon. Signed-off-by: Anatolij Gustschin <agust@denx.de> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
2010-05-22of: Remove duplicate fields from of_platform_driverGrant Likely
.name, .match_table and .owner are duplicated in both of_platform_driver and device_driver. This patch is a removes the extra copies from struct of_platform_driver and converts all users to the device_driver members. This patch is a pretty mechanical change. The usage model doesn't change and if any drivers have been missed, or if anything has been fixed up incorrectly, then it will fail with a compile time error, and the fixup will be trivial. This patch looks big and scary because it touches so many files, but it should be pretty safe. Signed-off-by: Grant Likely <grant.likely@secretlab.ca> Acked-by: Sean MacLennan <smaclennan@pikatech.com>
2010-05-18of: Always use 'struct device.of_node' to get device node pointer.Grant Likely
The following structure elements duplicate the information in 'struct device.of_node' and so are being eliminated. This patch makes all readers of these elements use device.of_node instead. (struct of_device *)->node (struct dev_archdata *)->prom_node (sparc) (struct dev_archdata *)->of_node (powerpc & microblaze) Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
2010-04-07device_attributes: add sysfs_attr_init() for dynamic attributesWolfram Sang
Made necessary by 6992f5334995af474c2b58d010d08bc597f0f2fe ("sysfs: Use one lockdep class per sysfs attribute"). Prevents further "key xxx not in .data" bug-reports. Although some attributes could probably be converted to static ones, this is left for people having hardware to test. Found by this semantic patch: @ init @ type T; identifier A; @@ T { ... struct device_attribute A; ... }; @ main extends init @ expression E; statement S; identifier err; T *name; @@ ... when != sysfs_attr_init(&name->A.attr); ( + sysfs_attr_init(&name->A.attr); if (device_create_file(E, &name->A)) S | + sysfs_attr_init(&name->A.attr); err = device_create_file(E, &name->A); ) While reviewing, I put the initialization to apropriate places. Signed-off-by: Wolfram Sang <w.sang@pengutronix.de> Cc: Eric W. Biederman <ebiederm@xmission.com> Cc: Greg KH <gregkh@suse.de> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Grant Likely <grant.likely@secretlab.ca> Cc: Mike Isely <isely@pobox.com> Cc: Mauro Carvalho Chehab <mchehab@infradead.org> Cc: Sujith Thomas <sujith.thomas@intel.com> Cc: Matthew Garrett <mjg@redhat.com> Cc: Len Brown <len.brown@intel.com> Cc: Krzysztof Helt <krzysztof.h1@wp.pl> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-02-17powerpc/mpc5121: correct DIU compatible propertyAnatolij Gustschin
The DIU driver should bind against "fsl,mpc5121-diu" directly. Add this compatible property to the match table and fix DTS and platform code accordingly. Signed-off-by: Anatolij Gustschin <agust@denx.de> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
2009-07-08fsl-diu-fb: fix regression with uninitalized fb_info->mm_lock mutexKrzysztof Helt
Remove call to the fsl_diu_set_par before the register_framebuffer(). This fixes a problem with uninitialized the fb_info->mm_lock mutex introduced by the commit 537a1bf059f " fbdev: add mutex for fb_mmap locking" Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl> Tested-by: "Kai Jiang" <b18973@freescale.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2009-06-30fbdev: add mutex for fb_mmap lockingKrzysztof Helt
Add a mutex to avoid a circular locking problem between the mm layer semaphore and fbdev ioctl mutex through the fb_mmap() call. Also, add mutex to all places where smem_start and smem_len fields change so the mutex inside the fb_mmap() is actually used. Changing of these fields before calling the framebuffer_register() are not mutexed. This is 2.6.31 material. It removes one lockdep (fb_mmap() and register_framebuffer()) but there is still another one (fb_release() and register_framebuffer()). It also cleans up handling of the smem_start and smem_len fields used by mutexed section of the fb_mmap(). Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: "Rafael J. Wysocki" <rjw@sisk.pl> Cc: <stable@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2009-04-06fsl-diu-fb: Pass the proper device for dma mapping routinesAnton Vorontsov
The driver should pass a device that specifies internal DMA ops, but currently NULL pointers are passed, and thus following bug pops up: Freescale DIU driver ------------[ cut here ]------------ kernel BUG at arch/powerpc/include/asm/dma-mapping.h:237! Oops: Exception in kernel mode, sig: 5 [#1] ... NIP [c01658b4] allocate_buf+0x0/0x8 LR [c0306554] fsl_diu_probe+0x2b4/0x518 Call Trace: [df02be10] [c030638c] fsl_diu_probe+0xec/0x518 (unreliable) [df02be60] [c020cdec] of_platform_device_probe+0x5c/0x84 [df02be80] [c018f5d0] really_probe+0x78/0x1a0 [df02bea0] [c018f7c0] __driver_attach+0xa4/0xa8 [df02bec0] [c018ea00] bus_for_each_dev+0x60/0x9c [df02bef0] [c018f414] driver_attach+0x24/0x34 [df02bf00] [c018f168] bus_add_driver+0x12c/0x1cc [df02bf20] [c018fbdc] driver_register+0x6c/0x110 [df02bf30] [c020ccb4] of_register_driver+0x54/0x70 [df02bf40] [c03d0a50] fsl_diu_init+0x70/0xa4 ... This patch fixes the issue. Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
2008-08-15freescale DIU: bug fix: add sanity check for AOI positionYork Sun
AOI position cannot be negative. Signed-off-by: York Sun <yorksun@freescale.com> Cc: Kumar Gala <galak@gate.crashing.org> Cc: "Antonino A. Daplas" <adaplas@pol.net> Cc: Krzysztof Helt <krzysztof.h1@poczta.fm> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-08-15freescale DIU: add virtual resolution and panning supportYork Sun
Application can now have the virtual resoltuion and use FBIOPAN_DISPLAY ioctl to pan. Signed-off-by: York Sun <yorksun@freescale.com> Cc: Kumar Gala <galak@gate.crashing.org> Cc: "Antonino A. Daplas" <adaplas@pol.net> Cc: Krzysztof Helt <krzysztof.h1@poczta.fm> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-08-05drivers/video/fsl-diu-fb.c: add missing of_node_putJulia Lawall
of_node_put is needed before discarding a value received from of_find_node_by_type, eg in error handling code. The semantic patch that makes the change is as follows: (http://www.emn.fr/x-info/coccinelle/) // <smpl> @@ struct device_node *n; struct device_node *n1; struct device_node *n2; statement S; identifier f1,f2; expression E1,E2; constant C; @@ n = of_find_node_by_type(...) ... if (!n) S ... when != of_node_put(n) when != n1 = f1(n,...) when != E1 = n when any when strict ( + of_node_put(n); return -C; | of_node_put(n); | n2 = f2(n,...) | E2 = n | return ...; ) // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Acked-by: Krzysztof Helt <krzysztof.h1@wp.pl> Cc: Timur Tabi <timur@freescale.com> Cc: York Sun <yorksun@freescale.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-07-24fsl-diu-fb: update Freescale DIU driver to use page_alloc_exact()Timur Tabi
Update the Freescale DIU driver to use page_alloc_exact() to allocate a DMA buffer. This also eliminates the rheap-based memory allocator. We can do this now because commit 6ccf61f9 allows us to allocate 8MB physically- contiguous memory blocks. [akpm@linux-foundation.org: fix printk warnings] Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>