aboutsummaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/gma500/framebuffer.c
AgeCommit message (Collapse)AuthorFilesLines
2013-07-24drm/gma500: Rename psb_intel_encoder to gma_encoderPatrik Jakobsson1-4/+3
The psb_intel_encoder is generic and should be named appropriately Signed-off-by: Patrik Jakobsson <[email protected]>
2013-07-24drm/gma500: Rename psb_intel_connector to gma_connectorPatrik Jakobsson1-1/+1
The psb_intel_connector is generic and should be named appropriately Signed-off-by: Patrik Jakobsson <[email protected]>
2013-07-24drm/gma500: Rename psb_intel_crtc to gma_crtcPatrik Jakobsson1-8/+8
The psb_intel_crtc is generic and should be named appropriately Signed-off-by: Patrik Jakobsson <[email protected]>
2013-07-24drm/gma500: Convert to generic encoder funcsPatrik Jakobsson1-1/+1
Signed-off-by: Patrik Jakobsson <[email protected]>
2013-07-23drm/gem: simplify object initializationDavid Herrmann1-4/+2
drm_gem_object_init() and drm_gem_private_object_init() do exactly the same (except for shmem alloc) so make the first use the latter to reduce code duplication. Also drop the return code from drm_gem_private_object_init(). It seems unlikely that we will extend it any time soon so no reason to keep it around. This simplifies code paths in drivers, too. Last but not least, fix gma500 to call drm_gem_object_release() before freeing objects that were allocated via drm_gem_private_object_init(). That isn't actually necessary for now, but might be in the future. Signed-off-by: David Herrmann <[email protected]> Reviewed-by: Daniel Vetter <[email protected]> Reviewed-by: Patrik Jakobsson <[email protected]> Acked-by: Rob Clark <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2013-05-15drm/gma500: Add fb gtt offset to fb basePatrik Jakobsson1-2/+2
Old code assumed framebuffer starts at base of stolen memory. Since the addition of hardware cursors, this might not be true anymore so add the gtt offset to the calculation. Reported-by: Holger Schurig <[email protected]> Tested-by: Holger Schurig <[email protected]> Signed-off-by: Patrik Jakobsson <[email protected]>
2013-04-25drm/gma500: Increase max resolution for mode settingPatrik Jakobsson1-2/+2
By having a higher max resolution we can now set up a virtual framebuffer that spans several monitors. 4096 should be ok since we're gen 3 or higher and should be enough for most dual head setups. Signed-off-by: Patrik Jakobsson <[email protected]>
2013-04-03drm/gma500: Change fb name so pm-utils doesn't apply quirksPatrik Jakobsson1-1/+1
By having 'drm' and 'fb' in the fb screeninfo id, pm-utils will leave us alone. Otherwise we'll have quirks up to our ears and resume will break. Signed-off-by: Patrik Jakobsson <[email protected]>
2013-02-14drm/<drivers>: simplify ->fb_probe callbackDaniel Vetter1-9/+1
The fb helper lost its support for reallocating an fb completely, so no need to return special success values any more. Reviewed-by: Rob Clark <[email protected]> Signed-off-by: Daniel Vetter <[email protected]>
2013-02-14drm/fb-helper: don't disable everything in initial_configDaniel Vetter1-0/+4
This should be done in the drivers for two reasons: - it gets in the way of fastboot efforts - it links the fb helpers with the crtc helpers instead of going through the real interface vfuncs, forcing i915 to fake all the ->disable callbacks used by the crtc helper to avoid ugly Oopsen v2: Resolve conflicts since drivers still call drm_fb_helper_single_add_all_connectors. Reviewed-by: Rob Clark <[email protected]> Signed-off-by: Daniel Vetter <[email protected]>
2013-01-20drm: revamp framebuffer cleanup interfacesDaniel Vetter1-0/+1
We have two classes of framebuffer - Created by the driver (atm only for fbdev), and the driver holds onto the last reference count until destruction. - Created by userspace and associated with a given fd. These framebuffers will be reaped when their assoiciated fb is closed. Now these two cases are set up differently, the framebuffers are on different lists and hence destruction needs to clean up different things. Also, for userspace framebuffers we remove them from any current usage, whereas for internal framebuffers it is assumed that the driver has done this already. Long story short, we need two different ways to cleanup such drivers. Three functions are involved in total: - drm_framebuffer_remove: Convenience function which removes the fb from all active usage and then drops the passed-in reference. - drm_framebuffer_unregister_private: Will remove driver-private framebuffers from relevant lists and drop the corresponding references. Should be called for driver-private framebuffers before dropping the last reference (or like for a lot of the drivers where the fbdev is embedded someplace else, before doing the cleanup manually). - drm_framebuffer_cleanup: Final cleanup for both classes of fbs, should be called by the driver's ->destroy callback once the last reference is gone. This patch just rolls out the new interfaces and updates all drivers (by adding calls to drm_framebuffer_unregister_private at all the right places)- no functional changes yet. Follow-on patches will move drm core code around and update the lifetime management for framebuffers, so that we are no longer required to keep framebuffers alive by locking mode_config.mutex. I've also updated the kerneldoc already. vmwgfx seems to again be a bit special, at least I haven't figured out how the fbdev support in that driver works. It smells like it's external though. v2: The i915 driver creates another private framebuffer in the load-detect code. Adjust its cleanup code, too. Reviewed-by: Rob Clark <[email protected]> Signed-off-by: Daniel Vetter <[email protected]>
2013-01-20drm/gma500: move fbcon restore to lastcloseDaniel Vetter1-24/+0
Doing this within the fb->destroy callback leads to a locking nightmare. And all other drm drivers that restore the fbcon do it in lastclose, too. With this adjustments all fb->destroy callbacks optionally drop references to any gem objects used as backing storage, call drm_framebuffer_cleanup and then kfree the struct. Which nicely simplifies the locking for framebuffer unreferencing and freeing, since this doesn't require that we hold the mode_config lock. A slight exception is the vmwgfx surface backed framebuffer, it also calls drm_master_put and removes the object from a device-private framebuffer list. Both seem to have solid locking in place already. Conclusion is that now it is no longer required to hold the mode_config lock while freeing a framebuffer. v2: Drop the corresponding mutex_lock WARN check from drm_framebuffer_unreference. v3: Use just the mode_config lock not modeset_lock_all, due to patch reordering. Acked-by: Alan Cox <[email protected]> Signed-off-by: Daniel Vetter <[email protected]>
2013-01-20drm/<drivers>: reorder framebuffer init sequenceDaniel Vetter1-2/+2
With more fine-grained locking we can no longer rely on the big mode_config lock to prevent concurrent access to mode resources like framebuffers. Instead a framebuffer becomes accessible to other threads as soon as it is added to the relevant lookup structures. Hence it needs to be fully set up by the time drivers call drm_framebuffer_init. This patch here is the drivers part of that reorg. Nothing really fancy going on safe for three special cases. - exynos needs to be careful to properly unref all handles. - nouveau gets a resource leak fixed for free: one of the error cases didn't cleanup the framebuffer, which is now moot since the framebuffer is only registered once it is fully set up. - vmwgfx requires a slight reordering of operations, I'm hoping I didn't break anything (but it's refcount management only, so should be safe). v2: Split out exynos, since it's a bit more hairy than expected. v3: Drop bogus cirrus hunk noticed by Richard Wilbur. v4: Split out vmwgfx since there's a small change in return values. Reviewed-by: Rob Clark <[email protected]> (core + omapdrm) Signed-off-by: Daniel Vetter <[email protected]>
2012-10-09mm: kill vma flag VM_RESERVED and mm->reserved_vm counterKonstantin Khlebnikov1-2/+1
A long time ago, in v2.4, VM_RESERVED kept swapout process off VMA, currently it lost original meaning but still has some effects: | effect | alternative flags -+------------------------+--------------------------------------------- 1| account as reserved_vm | VM_IO 2| skip in core dump | VM_IO, VM_DONTDUMP 3| do not merge or expand | VM_IO, VM_DONTEXPAND, VM_HUGETLB, VM_PFNMAP 4| do not mlock | VM_IO, VM_DONTEXPAND, VM_HUGETLB, VM_PFNMAP This patch removes reserved_vm counter from mm_struct. Seems like nobody cares about it, it does not exported into userspace directly, it only reduces total_vm showed in proc. Thus VM_RESERVED can be replaced with VM_IO or pair VM_DONTEXPAND | VM_DONTDUMP. remap_pfn_range() and io_remap_pfn_range() set VM_IO|VM_DONTEXPAND|VM_DONTDUMP. remap_vmalloc_range() set VM_DONTEXPAND | VM_DONTDUMP. [[email protected]: drivers/vfio/pci/vfio_pci.c fixup] Signed-off-by: Konstantin Khlebnikov <[email protected]> Cc: Alexander Viro <[email protected]> Cc: Carsten Otte <[email protected]> Cc: Chris Metcalf <[email protected]> Cc: Cyrill Gorcunov <[email protected]> Cc: Eric Paris <[email protected]> Cc: H. Peter Anvin <[email protected]> Cc: Hugh Dickins <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: James Morris <[email protected]> Cc: Jason Baron <[email protected]> Cc: Kentaro Takeda <[email protected]> Cc: Matt Helsley <[email protected]> Cc: Nick Piggin <[email protected]> Cc: Oleg Nesterov <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Robert Richter <[email protected]> Cc: Suresh Siddha <[email protected]> Cc: Tetsuo Handa <[email protected]> Cc: Venkatesh Pallipadi <[email protected]> Acked-by: Linus Torvalds <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2012-08-24gma500/cdv: Add eDP supportZhao Yakui1-0/+3
Introduce the eDP support into the driver. This has been reworked a bit because kernel driver proper uses encoder/connectors while the legacy Intel driver uses the old output stuff. It also diverges on the backlight handling. The legacy Intel driver adds a panel abstraction based upon the i915 one. It's only really used for backlight bits and we have a perfectly good backlight abstraction which can extend instead. Signed-off-by: Zhao Yakui <[email protected]> [ported to upstream driver, redid backlight abstraction] Signed-off-by: Alan Cox <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2012-08-24gma500/cdv: add the bits that don't need the new codeAlan Cox1-0/+4
Based on bits from Yakui <[email protected]> We can import various little bits of code before we plumb it all in and hopefully this way catch any regressions more easily. Signed-off-by: Alan Cox <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2012-05-22drm: Constify drm_mode_config_funcs pointerLaurent Pinchart1-1/+1
The DRM mode config functions structure declared by drivers and pointed to by the drm_mode_config funcs field is never modified. Make it a const pointer. Signed-off-by: Laurent Pinchart <[email protected]> Cc: Inki Dae <[email protected]> Cc: Alan Cox <[email protected]> Cc: Daniel Vetter <[email protected]> Cc: Ben Skeggs <[email protected]> Cc: Thomas Hellstrom <[email protected]> Cc: Rob Clark <[email protected]> Reviwed-by: Alex Deucher <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2012-05-22drm: Constify gem_vm_ops pointerLaurent Pinchart1-1/+1
The GEM vm operations structure is passed to the VM core that stores it in a const field. There vm operations structures can thus be const in DRM as well. Signed-off-by: Laurent Pinchart <[email protected]> Cc: Inki Dae <[email protected]> Cc: Alan Cox <[email protected]> Cc: Daniel Vetter <[email protected]> Cc: Rob Clark <[email protected]> Reviewed-by: Alex Deucher <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2012-05-17gma500: unload fixesAlan Cox1-5/+10
Debugging the lid problem tested various error paths which were found wanting so start fixing them up. There is a ton of improvement work could be done here so that every bit of functionality agrees if its _fini, _uninit, etc, and they agree who is responsible for deciding if the clean up is needed. That can come later. Signed-off-by: Alan Cox <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2012-05-11gma500: Clean up some of the noiseAlan Cox1-1/+1
We have a lot of debug type stuff we don't actually need any more. Signed-off-by: Alan Cox <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2012-05-07gma500: framebuffer: mark psb_fb_helper_funcs as staticKirill A. Shutemov1-1/+1
Signed-off-by: Kirill A. Shutemov <[email protected]> Signed-off-by: Alan Cox <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2012-05-07gma500: vram_addr should be __iomemKirill A. Shutemov1-2/+1
Signed-off-by: Kirill A. Shutemov <[email protected]> Signed-off-by: Alan Cox <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2012-05-03gma500: wide framebuffer memoryAlan Cox1-0/+2
If we set a small text framebuffer and have a bigger scanout then we want to send black not random bits for the overscan. Signed-off-by: Alan Cox <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2012-04-27cdv: continue synching up with updated reference codeAlan Cox1-8/+5
In particular clean up the errata handling and correct the crtc masks. We do this a bit differently using our device abstraction for neatness. This doesn't address the ACPI opregion and hotplug plumbing, nor the IRQ related changes that will need. It touches on backlight init but the full backlight support is not in this change set. Signed-off-by: Alan Cox <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2012-04-27gma500: support 1080pAlan Cox1-0/+16
The problem in console mode is lack of linear memory. We can solve that by dropping to 16bpp. The mode setting X server will allocate its own GEM framebuffer in 32bpp and all will be well. We could just do 16bpp anyway but that would be a regression on the lower modes as many distributions don't yet ship the generic mode setting KMS drivers. Signed-off-by: Alan Cox <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2012-03-20gma500: Fix mmap frambufferYoichi Yuasa1-1/+1
It cannot map correctly if page fault begins from a intermediate address. [The driver prefaults the mapping, so we need to work from the correct base address not the faulting address otherwise the map appears offset by the fault offset] Signed-off-by: Yoichi Yuasa <[email protected]> Signed-off-by: Alan Cox <[email protected]> Cc: [email protected] Signed-off-by: Dave Airlie <[email protected]>
2012-03-15drm: Merge tag 'v3.3-rc7' into drm-core-nextDave Airlie1-1/+0
Merge the fixes so far into core-next, needed to test intel driver. Conflicts: drivers/gpu/drm/i915/intel_ringbuffer.c
2012-03-10gma500: mark psb_fbdev_destroy() and psb_fbdev_fini() as staticKirill A. Shutemov1-2/+2
Signed-off-by: Kirill A. Shutemov <[email protected]> Signed-off-by: Alan Cox <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2012-03-10gma500: drop unused psbfb_suspend()/psbfb_resume()Kirill A. Shutemov1-33/+0
Signed-off-by: Kirill A. Shutemov <[email protected]> Signed-off-by: Alan Cox <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2012-03-10gma500: psbfb_create(): move depth initialization out of loopKirill A. Shutemov1-1/+1
Signed-off-by: Kirill A. Shutemov <[email protected]> Signed-off-by: Alan Cox <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2012-03-10gma500: re-order calling on the fix setup so we set up after the DRM layerAlan Cox1-1/+1
Noted by Kirill A Shutemov Signed-off-by: Alan Cox <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2012-03-10gma500: plug in more of the gamma functionalityAlan Cox1-0/+10
Signed-off-by: Alan Cox <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2012-03-05drm, gma500: Fix Cedarview boot failures in 3.3-rcAlan Cox1-1/+0
Production GMA3600/3650 hardware turns out to be subtly different to the development platforms. This combined with a minor driver bug is causing the kernel to hang on these platforms. This patch does the following - turn down a couple of messages that were meant to be debug and are causing much confusion - ensure the hotplug interrupt is disabled on Cedartrail systems. - fix a bug where gtt roll mode called psbfb_sync, which tries to sync the 2D engine. On other devices it is harmless as the 2D engine is present but not in use when in gtt roll mode, on Cedartrail it causes a hang Without these changes 3.3-rc hangs on boot on Cedartrail based systems. Signed-off-by: Alan Cox <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2012-02-09drm: do not set fb_info->pixmap fieldsSascha Hauer1-5/+1
The drm drivers set the fb_info->pixmap fields without setting fb_info->pixmap.addr. If this is not set the fb core will overwrite these all fb_info->pixmap fields anyway, so there is not much point in setting them in the first place. [airlied: dropped nvidiafb piece - not mine] Signed-off-by: Sascha Hauer <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2012-02-09drm: add convenience function to create an range propertySascha Hauer1-4/+1
Creating a range property is a common pattern, so create a convenience function for this and use it where appropriate. Signed-off-by: Sascha Hauer <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2012-01-27gma500: Fix suspend/resume functionsRyan Mallon1-4/+4
Both the suspend and resume functions incorrectly set psbfb = to_psb_fb(NULL) outside of the loop over all of the framebuffers. Fix this by moving the assignment of psbfb inside the loop and removing the initialisation of fb. Signed-off-by: Ryan Mallon <[email protected]> Acked-by: Alan Cox <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2011-12-20gma500: Fix encoder type checking for connectorsPatrik Jakobsson1-4/+4
Fix cases where we need to know what encoder type is behind a given connector. Signed-off-by: Patrik Jakobsson <[email protected]> Signed-off-by: Alan Cox <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2011-12-20drm: Replace pitch with pitches[] in drm_framebufferVille Syrjälä1-1/+1
Otherwise each driver would need to keep the information inside their own framebuffer object structure. Also add offsets[]. BOs on the other hand are driver specific, so those can be kept in driver specific structures. Signed-off-by: Ville Syrjälä <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2011-12-06gma500: Be smarter about layoutAlan Cox1-16/+30
If we can't fit a page aligned display stride then it's not the end of the world for a normal font, so try half a page and work down sizes. Signed-off-by: Alan Cox <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2011-12-06gma500: gtt based hardware scrolling consoleAlan Cox1-9/+71
Add support for GTT based scrolling. Instead of pushing bits around we simply use the GTT to change the mappings. This provides us with a very fast way to scroll the display providing we have enough memory to allocate on 4K line boundaries. In practice this seems to be the case except for very big displays such as HDMI, and the usual configurations are netbooks/tablets. Signed-off-by: Alan Cox <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2011-12-06gma500: kill virtual mapping supportAlan Cox1-44/+8
This isn't actually usable - we simply don't have the vmap space on a 32bit system to do this stunt. Instead we will rely on the low level drivers limiting the console resolution as before. The real fix is for someone to write a page table aware version of the framebuffer console blit functions. Good university student project perhaps.. Signed-off-by: Alan Cox <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2011-11-29drm: move the fb bpp/depth helper into the core.Dave Airlie1-1/+1
This is used by nearly everyone including vmwgfx which doesn't generally use the fb helper. Signed-off-by: Dave Airlie <[email protected]>
2011-11-28drm/gma500: port framebuffer to new plane interface.Dave Airlie1-13/+20
This takes over the staging change into the mainline driver. Fixes -next part one. Signed-off-by: Dave Airlie <[email protected]>
2011-11-16gma500: introduce the framebuffer support codeAlan Cox1-0/+784
We support 2D acceleration on some devices but we try and do tricks with the GTT as a starting point as this is far faster. The GTT logic could be improved further but for most display sizes it already makes a pretty good decision. Signed-off-by: Alan Cox <[email protected]> Signed-off-by: Dave Airlie <[email protected]>