Ville Syrjälä [Tue, 20 Mar 2012 14:46:20 +0000 (16:46 +0200)]
gfx: drv: Correctly set info->par
When using drm_fb_helper, fbdev par is supposed to point to the
drm_fb_helper instance.
This "bug" didn't cause problems as the helper is emedded as the
first member inside the psb_fbdev strcture. But let's make the code
correct nonetheless.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Ville Syrjälä [Tue, 20 Mar 2012 14:46:19 +0000 (16:46 +0200)]
gfx: drv: Check the kernel fb size against the stolen vram size
Make sure we have anough stolen vram to house the kernel framebuffer.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Ville Syrjälä [Tue, 20 Mar 2012 14:46:18 +0000 (16:46 +0200)]
gfx: drv: Check framebuffer depth with HDMI
The HDMI code takes an entirely separate code path for mode setting.
Mode the framebuffer depth check earlier, so that the HDMI case is
checked as well.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Ville Syrjälä [Tue, 20 Mar 2012 14:46:17 +0000 (16:46 +0200)]
gfx: drv: Improve warning messages
Use dev_warn() instead of WARN_ON() to provide better information what
went wrong. The message is the important part, the backtrace isn't
really useful.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Ville Syrjälä [Tue, 20 Mar 2012 14:46:16 +0000 (16:46 +0200)]
drm: Unify and fix idr error handling
The error handling code w.r.t. idr usage looks inconsistent.
In the case of drm_mode_object_get() and drm_ctxbitmap_next() the error
handling is also incomplete.
Unify the code to follow the same pattern always.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Ville Syrjälä [Tue, 20 Mar 2012 14:46:15 +0000 (16:46 +0200)]
drm: Add drm_mode_copy()
Add a helper function to copy a display mode. Use it in
drm_mode_duplicate() and nouveau mode_fixup hooks.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Ville Syrjälä [Tue, 20 Mar 2012 14:46:14 +0000 (16:46 +0200)]
drm: Use a flexible array member for blob property data
The blob property data is always allocated immediately after the object
header. No need for the extra indirection when accessing it, just use
a flexible array member.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Ville Syrjälä [Tue, 20 Mar 2012 14:46:13 +0000 (16:46 +0200)]
drm: Handle drm_object_get() failures
Check drm_mode_object_get() return value everywhere.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Ville Syrjälä [Tue, 20 Mar 2012 14:46:12 +0000 (16:46 +0200)]
drm: Make drm_crtc_convert_{umode, to_umode} static and constify their params
drm_crtc_convert_umode() and drm_crtc_convert_to_umode() are never
used outside drm_crtc.c, so make them static. Also make the input
mode structure const for both functions.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Ville Syrjälä [Tue, 20 Mar 2012 14:46:11 +0000 (16:46 +0200)]
drm: Fix drm_mode_attachmode_crtc()
Change drm_mode_attachmode_crtc() to take an "all or nothing" approach.
If an error is returned, there are no side effects visible.
Also change the function to always duplicate the mode passed in.
Also change the function to not give up when it finds the first
connector without and encoder.
A simpler approach would be to just remove the function completely as
it's unused currently.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Ville Syrjälä [Tue, 20 Mar 2012 14:46:10 +0000 (16:46 +0200)]
drm: Check CRTC viewport against framebuffer size
Make sure the requested CRTC viewport fits inside the
framebuffer.
Issue: ANDROID-2161
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Ville Syrjälä [Tue, 20 Mar 2012 14:46:09 +0000 (16:46 +0200)]
drm: Check user mode against overflows
The internal mode representation drm_display_mode uses signed data
types. When converting the user mode to internal representation,
check that the unsigned values don't overflow the signed datatypes.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Ville Syrjälä [Tue, 20 Mar 2012 14:46:08 +0000 (16:46 +0200)]
drm: Fix memory leak in drm_mode_setcrtc()
The mode passed to the .set_config() hook was never freed. The drivers
will make a copy of the mode, so simply free it when done.
Issue: ANDROID-2160
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Ville Syrjälä [Tue, 20 Mar 2012 14:46:07 +0000 (16:46 +0200)]
drm: Make drm_mode_attachmode() void
drm_mode_attachmode() always returns 0. Change the return type to void.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Ville Syrjälä [Tue, 20 Mar 2012 14:46:06 +0000 (16:46 +0200)]
drm: Check crtc x and y coordinates
The crtc x/y panning coordinates are stored as signed integers
internally. The user provides them as unsigned, so we should check
that the user provided values actually fit in the internal datatypes.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Ville Syrjälä [Tue, 20 Mar 2012 14:46:05 +0000 (16:46 +0200)]
drm: Warn if mode to umode conversion overflows the destination types
When converting from a drm_display_mode to drm_mode_modeinfo, print a
warning if the the timings values don't fit into the __u16 datatype.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Ville Syrjälä [Tue, 20 Mar 2012 14:46:04 +0000 (16:46 +0200)]
drm: Change drm_display_mode::type to unsigned
The drm_display_mode type is a bitmask so it should be unsigned.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Ville Syrjälä [Tue, 20 Mar 2012 14:46:03 +0000 (16:46 +0200)]
drm: Reject mode set with current fb if no current fb is bound
When doing a mode set with the special fb id -1, reject the mode set if
no fb is currently bound to the crtc.
Also remove the pointless list traversal to find the current crtc based
on the current crtc :)
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Daniel Charles [Fri, 16 Mar 2012 15:39:37 +0000 (08:39 -0700)]
Add check reset function for msvdx firmware
When fence lockup is triggered by the msvdx firmware, it reaches an
unrecoverable state that requires a firmware reload so that it can
continue operating without resetting the device.
This scenario is seen when playing some corrupted media clips which
cause the media stack to fail.
Once the firmware is reloaded it will continue decoding when possible
and next attempts to play will be successful
Issue: ANDROID-2031
Reviewed-by: Sean V Kelley <sean.v.kelley@intel.com>
Signed-off-by: Daniel Charles <daniel.charles@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Jani Nikula [Fri, 16 Mar 2012 15:03:47 +0000 (17:03 +0200)]
gfx: display: use regulator instead of gpio to power on/off display
The platform code now abstracts the VLCM_DVDD voltage rail as a regulator,
so switch to using the regulator framework instead of toggling the GPIO
control directly. This allows usage counting and multiple users for the
voltage rail.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Imre Deak [Thu, 15 Mar 2012 16:34:12 +0000 (12:34 -0400)]
gfx: set power state
The PVR PCI PMCSR returns 0 (D0), even when the
device is actually in D3. The PCI sub-system will
not D0 a device it thinks is already in D0; and
so the driver needs to make the calls to set the
power state directly to work around this failure
of PVR to be PCI compliant.
This change allows enabling the s0i1-idle state.
echo 5 > /sys/module/intel_idle/parameters/max_cstate
(currently the default is limited to 4, which is C6)
Issue: GRA-27
Signed-off-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Jani Nikula [Thu, 15 Mar 2012 14:08:38 +0000 (16:08 +0200)]
gfx: display: switch off GL3 power island at boot when it's not used
The GL3 cache power island used to be on at boot until the first display
off, even if it was never used or enabled. To save power, switch off the
GL3 island at boot if it's not used.
Issue: GRA-61
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Jani Nikula [Thu, 15 Mar 2012 14:08:37 +0000 (16:08 +0200)]
gfx: display: move ospm_power_(un)init functions to avoid forward declarations
Move ospm_power_init() and ospm_power_uninit() functions towards the end of
file to avoid forward declarations in the following patch. No functional
changes.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Sean V. Kelley [Tue, 13 Mar 2012 22:10:45 +0000 (15:10 -0700)]
Revert "MUST_REVERT: gfx: drm: explicitly authenticate for Android"
This reverts commit
0e56daf3638ba5fd598ed621e0fcd3159c975e91.
Now handled in HAL and SurfaceFlinger using DRM_AUTH API.
Issue: ANDROID-1031
Signed-off-by: Sean V Kelley <sean.v.kelley@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Anand Gandhimathi [Tue, 13 Mar 2012 00:28:46 +0000 (17:28 -0700)]
gfx: hdmi: Bug fix for overflow buffer boundaries.
fix the overflow buffer boundaries while doing strncpy
Build warning fix
ISSUE: HSD-207051
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Anand Gandhimathi [Tue, 13 Mar 2012 00:28:45 +0000 (17:28 -0700)]
gfx: hdmi: Convert API interface documentation to kernel doc
Added comments for all the functions following the
template mentioned in kernel documentation
Signed-off-by: Chen Hu <hu.tiger.chen@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Anand Gandhimathi [Tue, 13 Mar 2012 00:28:44 +0000 (17:28 -0700)]
gfx: hdmi: Enabling EDID prints during run-time
Handle to hdmi_context function added in a opaque manner
Cleaned up print pointers being passed to different functions
PD_LOG macros and typedefs replaced to LOG_ macros and typedefs
New module to generate run-time EDID print logs
Signed-off-by: Chen Hu <hu.tiger.chen@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Ville Syrjälä [Fri, 9 Mar 2012 15:26:07 +0000 (17:26 +0200)]
HACK: gfx: pvr: Don't try to complete SGX commands in atomic context
SGXCommandComplete() may be called while holding a spinlock. In such
cases we want to defer the command completion to the MISR. As a quick
non-intrusive hack, add a simple in_atomic() check to
SGXCommandComplete() to make that happen. Obviously this only works
with CONFIG_PREEMPT kernels.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Acked-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Ville Syrjälä [Fri, 9 Mar 2012 15:26:06 +0000 (17:26 +0200)]
gfx: pvr: Fix spinlock usage in ossync code
PVRSRVCallbackOnSync2() can be called with interrupts off, so use
spin_lock_irqsave() and spin_unlock_irqrestore().
[ 104.859125] WARNING: at linux/kernel/lockdep.c:2507 trace_hardirqs_on_caller+0xb3/0x159()
[ 104.871022] Modules linked in: btwilink wl12xx_compat(C) mac80211_compat(C) cfg80211_compat(C) compat(C) fm_drv st_drv fuse atomisp
snd_soc_mfld_machine snd_soc_sn95031 snd_soc_sst_platform lm3554 mt9m114 mt9e013 videobuf_vmalloc videobuf_core pn544_nxp atmel_mxt_t
s
[ 104.894610] Pid: 0, comm: swapper Tainted: G WC 3.0.22-mid10-00062-g597558c-dirty #14
[ 104.903174] Call Trace:
[ 104.905603] [<
c1036b34>] warn_slowpath_common+0x4b/0x60
[ 104.910903] [<
c1061a2b>] ? trace_hardirqs_on_caller+0xb3/0x159
[ 104.916866] [<
c14edbdb>] ? _raw_spin_unlock_irq+0x22/0x43
[ 104.922336] [<
c1036b58>] warn_slowpath_null+0xf/0x13
[ 104.927429] [<
c1061a2b>] trace_hardirqs_on_caller+0xb3/0x159
[ 104.933160] [<
c1061adc>] trace_hardirqs_on+0xb/0xd
[ 104.938275] [<
c14edbdb>] _raw_spin_unlock_irq+0x22/0x43
[ 104.943696] [<
c1384e29>] PVRSRVCallbackOnSync2+0x5f/0x71
[ 104.949325] [<
c13a9291>] psb_fb_increase_read_ops_completed+0x3c/0x5a
[ 104.955959] [<
c13b0787>] crtc_flip_complete+0xc5/0xe8
[ 104.961326] [<
c139d612>] drm_flip_complete+0x17/0x6e
[ 104.966480] [<
c139d8b7>] drm_flip_helper_vblank+0x53/0x9c
[ 104.972192] [<
c13b05fe>] psb_intel_crtc_process_vblank+0x62/0x6a
[ 104.978391] [<
c13af0b6>] mid_pipe_event_handler+0x224/0x291
[ 104.984288] [<
c13af26a>] psb_irq_handler+0x147/0x1e2
[ 104.989451] [<
c1081543>] handle_irq_event_percpu+0xb8/0x269
[ 104.995343] [<
c1081720>] handle_irq_event+0x2c/0x43
[ 105.000405] [<
c1083343>] ? handle_percpu_irq+0x3b/0x3b
[ 105.005863] [<
c10833ed>] handle_edge_irq+0xaa/0xd0
[ 105.010830] <IRQ> [<
c10036fc>] ? do_IRQ+0x38/0x90
[ 105.015908] [<
c14eecf5>] ? common_interrupt+0x35/0x3c
[ 105.021284] [<
c124a4ee>] ? soc_s0ix_idle+0x19e/0x1ea
[ 105.026443] [<
c134cef4>] ? cpuidle_idle_call+0x100/0x1ac
[ 105.032070] [<
c1001a3b>] ? cpu_idle+0x93/0xc4
[ 105.036629] [<
c14d8033>] ? rest_init+0xab/0xb0
[ 105.041391] [<
c17a983b>] ? start_kernel+0x363/0x368
[ 105.046454] [<
c17a90bc>] ? i386_start_kernel+0xbc/0xc3
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Acked-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Pauli Nieminen [Tue, 6 Mar 2012 20:51:25 +0000 (12:51 -0800)]
gfx: drv: Fix double free in page flip
Reference counted object was accidentally freed using kfree without
checking reference count. That led to double free when kfree was called
with reference counting higher than 1. That happened often when HDMI
clone mode was enabled.
Signed-off-by: Pauli Nieminen <pauli.nieminen@linux.intel.com>
CC: "Kannan, Arun" <arun.kannan@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Imre Deak [Tue, 6 Mar 2012 19:17:33 +0000 (21:17 +0200)]
gfx: drv: save/restore gunit registers
Missing this lead to the gunit write-combining getting disabled after
an S3 suspend/resume, with a significant performance degradation.
Kudos to Janet He <janet.he@intel.com> and Chan Wilson
<wilson.chan@intel.com> for discovering this.
Issue: GRA-26
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Imre Deak [Tue, 6 Mar 2012 19:17:32 +0000 (21:17 +0200)]
gfx: drv: give a better name to mdfld_{save,restore}_display_register
This functions save/restore pipe specific registers, so name them
accordingly.
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Imre Deak [Tue, 6 Mar 2012 19:17:31 +0000 (21:17 +0200)]
gfx: drv: rename PLL/PLL DIV registers according to the TRM
Rename the PLL and PLL DIV registers according to the TRM and remove the
definitions for the non-existant MRST_FPA1 and MDFLD_DPLL_DIV1.
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Imre Deak [Tue, 6 Mar 2012 19:17:30 +0000 (21:17 +0200)]
gfx: drv: clean up the save/restore of the fp/mipi/dpll regs
We have an fp and dpll reg for pipe A and B. Pipe C shares pipe A's fp
and dpll setting, since the two pipes use the same clock setting. Store
these regs into the pipe_regs array instead of having separate names for
them. Pipe C's storage space will be wasted.
Pipe A and C has a MIPI control reg, store these into the pipe_regs
array. Pipe B's storage space will be wasted.
There is 12 bytes wasted, we pay this for a cleaner abstraction.
The original code saved the same dpll,fp regs twice (for pipe A and C)
now avoid saving/restoring them for pipe C. This may also avoid glitches
on the screen as we momentarily disabled pipe A's clock while it was
already setup and active.
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Imre Deak [Tue, 6 Mar 2012 19:17:29 +0000 (21:17 +0200)]
gfx: drv: save the pfit/hdmi/mipi regs along with the rest of pipe regs
Move the saving of these registers where the rest of pipe regs are
saved. This should make the next patch easier to parse and make it
clearer what is saved for each pipe.
The access order of these registers will move before the palette
register saving, but as none of these registers have a side-effect when
reading, this shouldn't matter.
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Imre Deak [Tue, 6 Mar 2012 19:17:28 +0000 (21:17 +0200)]
gfx: drv: cleanup dsi pll lock loop in mdfld_restore_display_registers
Use the already existing macro to wait for the HW flag becoming set. The
current timeout value will change from the current 3 second. The actual
PLL settling time according to measurement is < 100usec or 200
iterations of the busy wait loop. So the new timeout duration of 100000
iterations should be enough.
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Imre Deak [Tue, 6 Mar 2012 19:17:27 +0000 (21:17 +0200)]
gfx: drv: add helper to wait for HW flag becoming set/clear
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Imre Deak [Tue, 6 Mar 2012 19:17:26 +0000 (21:17 +0200)]
gfx: drv: fix exiting DSI ULPS mode during resume
The DEVICE_READY_REG register used during resume to exit the ULPS mode
is pipe specific and we should use the already available
MIPI_DEVICE_READY_REG(pipe) macro to access it.
The current resume code calls mdfld_restore_display_registers for pipe A
and C, but due to the above bug will incorrectly exit ULPS mode in both
cases for pipe A. Fix this by exiting ULPS only on pipe A. For now this
works ok for tablets and for other devices the code was broken in the
first place anyway. Later we'll add a more generic solution to handle
ULPS state that works for other devices too.
Thanks for Jani Nikula for pointing this out.
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Imre Deak [Tue, 6 Mar 2012 19:17:22 +0000 (21:17 +0200)]
gfx: drv: remove old dsp/palette reg macros
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Imre Deak [Tue, 6 Mar 2012 19:17:25 +0000 (21:17 +0200)]
gfx: drv: clean up the save/restore of the palette regs
We have the same set of palette regs for each pipe, so store them to an
appropriate array instead of separate variables named after the pipe.
No functional change.
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Imre Deak [Tue, 6 Mar 2012 19:17:24 +0000 (21:17 +0200)]
gfx: drv: clean up the save/restore of the dspcntr/pipeconf regs
We have the same set of the dspcntr/pipeconf regs for each pipe, so
store them to an appropriate array instead of separate variables named
after the pipe.
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Imre Deak [Tue, 6 Mar 2012 19:17:23 +0000 (21:17 +0200)]
gfx: drv: save pipe specific panel timing regs to an array
We have the same set of panel timing regs for each pipe, so store them
to an appropriate array instead of separate variables named after the
pipe.
The CNTR, CONF, DPLL, PALETTE, MIPI registers are handled specially
during restore, so the parts related to those are cleaned up separately
in the upcoming patches.
The only functional change of this patch is that the CNTR register is
saved now before all the above generic registers, but as reading these
registers don't have a side-effect this shouldn't be a problem.
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Imre Deak [Tue, 6 Mar 2012 19:17:21 +0000 (21:17 +0200)]
gfx: drv: use pipe specific macros to access the palette regs
Use the new pipe specific macros to access the palette registers. This
will also fix accessing the palette registers for PIPE C.
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Imre Deak [Tue, 6 Mar 2012 19:17:20 +0000 (21:17 +0200)]
gfx: drv: use pipe specific macros to access the dsp regs
Use the pipe specific macros to access these registers.
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Imre Deak [Tue, 6 Mar 2012 19:17:19 +0000 (21:17 +0200)]
gfx: drv: use pipe specific macros to access dsp regs in psb_page_flip.c
Use the pipe specific macros to access these registers.
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Imre Deak [Tue, 6 Mar 2012 19:17:18 +0000 (21:17 +0200)]
gfx: drv: add pipe specific macros to access the dsp/palette regs
The registers are pipe specific, so add helpers to properly access them.
The actual register accesses will be fixed up by an upcoming patch.
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Imre Deak [Tue, 6 Mar 2012 19:17:17 +0000 (21:17 +0200)]
gfx: drv: remove old panel timing register macros
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Imre Deak [Tue, 6 Mar 2012 19:17:16 +0000 (21:17 +0200)]
gfx: drv: use pipe specific macros to access panel timing regs
Use the new pipe specific macros to access these registers.
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Imre Deak [Tue, 6 Mar 2012 19:17:15 +0000 (21:17 +0200)]
gfx: drv: add pipe specific macros to access panel timing regs
The registers are pipe specific, so add helpers to properly access them.
The actual register references will be fixed up by an upcoming patch.
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Imre Deak [Tue, 6 Mar 2012 19:17:14 +0000 (21:17 +0200)]
gfx: drv: move macro to check pipe validity to psb_intel_reg.h
This will be needed by the next patch converting other pipe specific
register definitions in psb_intel_reg.h to use this macro.
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Imre Deak [Tue, 6 Mar 2012 19:17:13 +0000 (21:17 +0200)]
gfx: drv: remove unused mdfld_wait_for_PIPEA_DISABLE
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Imre Deak [Tue, 6 Mar 2012 19:17:12 +0000 (21:17 +0200)]
gfx: drv: remove unused state save/restore functions
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Pauli Nieminen [Thu, 1 Mar 2012 22:40:36 +0000 (00:40 +0200)]
gfx: drv: Fix race between SGX and page flip
There is possible race condition where SGX might have parallel leads
happening while page flip is processing. There is small race condition
open where software managed sync object completion may block SGX from
completing rendering.
The deadlock situation would cause complete system deadlock which isn't
simple to recover from.
Issue: ANDROID-1661
Signed-off-by: Pauli Nieminen <pauli.nieminen@linux.intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Pauli Nieminen [Thu, 1 Mar 2012 22:40:35 +0000 (00:40 +0200)]
gfx: pvr: Expose helper macro to compare synchronization values
To make it simpler to compare synchronization values safetily expose the
helper macro in a header.
Signed-off-by: Pauli Nieminen <pauli.nieminen@linux.intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Pauli Nieminen [Thu, 1 Mar 2012 22:40:34 +0000 (00:40 +0200)]
gfx: pvr: Add an extended sync callback API
To allow advanced wait for specific pending value that isn't the lates
one caller needs more control for sync callback state. Giving full
control for caller what is in sync struct gives complete control to
caller what is waited for.
Signed-off-by: Pauli Nieminen <pauli.nieminen@linux.intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Pauli Nieminen [Thu, 1 Mar 2012 22:40:33 +0000 (00:40 +0200)]
gfx: drv: Fix unlikely race condition
Checking operation completeness before taking the lock may result to
state where IRQ work is run between checking for completion and before
the callback is added to the list. In practice that race will require
premption because time between microkernel modifying synchronization
object and kernel work check for status is many microseconds.
That could block the last page flip in the animation until next GPU
rendering is pushed from userspace. The missing frame in end of
animation could be extremy visible in some cases.
Signed-off-by: Pauli Nieminen <pauli.nieminen@linux.intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Anand Saggi [Wed, 29 Feb 2012 14:18:32 +0000 (06:18 -0800)]
Fix invalid pointer reference in BUFER_UNDERRUN callback for HDMI Audio.
A Null pointer was being passed in the buffer underrun event, causing
tablet to crash as the hdmi audio data pointer is expected.
The scenario is reproducible when we plug HDMI during suspended mode
when audio is playing and try to wake up.
This patch will fix the above described issue.
ISSUE: HSD-206962
Signed-off-by: Mohan Kandra <mohan.b.kandra@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Gandhimathi Anand [Wed, 29 Feb 2012 14:18:30 +0000 (06:18 -0800)]
enable parsing detailed timings for EDID rev1.3
Few Detailed Descriptor Timings were missing.
This fix parses through the EDID block 1 for detailed timing
descriptor for EDID revision 1.3. Earlier code was handling
for EDID revision 1.1
ISSUE: HSD-206749
Signed-off-by: Mohan Kandra <mohan.b.kandra@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Anand Saggi [Wed, 29 Feb 2012 14:18:29 +0000 (06:18 -0800)]
Patch to mitigate HDMI Suspend/Resume crash/noise during Audio Playback.
We were sending HAD DRM_DPMS_ON event when resuming from sleep state
in gfx_late_resume. Which was causing the HAD HOT_PLUG sequence to
run again causing:
1. Audio Noise
2. Random crash.
With this patch, we handle the situation by checking if audio stream
is busy in resume sequence. If yes, we don't send DRM_DPMS_ON in
gfx_late_resume to both Local MIPI and HDMI as we never send
DRM_DPMS_OFF in case HDMI audio is busy becasue of a known JIRA
issue - ANDROID-1553. Otherwise we turn them ON.
After the Jira issue is resolved, we can turn the local MIPI
sequence independent of HDMI Audio state.
Refer JIRA: ANDROID-1553 for more details.
ISSUE: HSD-206943
Signed-off-by: Mohan Kandra <mohan.b.kandra@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Hu Tiger Chen [Wed, 29 Feb 2012 14:18:28 +0000 (06:18 -0800)]
MUST REVERT: Fix the video slowness issue when unplug HDMI.
This is caused by the pending flips left in psb_intel_crtc.
After HDMI unplug, vblank interrupt will never be triggered,
where actually pending flips are handled. The solution is to
handle the HDMI pending flips in vblank handler of local display.
ISSUE: ANDROID-1463
Signed-off-by: Mohan Kandra <mohan.b.kandra@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Anand Saggi [Wed, 29 Feb 2012 14:18:27 +0000 (06:18 -0800)]
Resume HDMI audio after suspend
HDMI Audio was not getting resumed after suspend. This was
because of changes in early_suspend which was not checking if HDMI
audio is busy and calling DPMS_OFF.
Also there was no check for HDMI busy status check in
psb_runtime_idle, but in psb_runtime_suspend itself.
There is a JIRA BUG: ANDROID-1553 for local MIPI fails to turn back
on from a DPMS off/on cycle if HDMI audio returns busy to disallow
system suspend. Once ANDROID-1553 is fixed, the expectation is to
turn off MIPI but keep display island on if there is active audio
playback over HDMI.
Refer Jira bug# Android-1553 for more details.
There is still HDMI Audio noise during suspend/resume, which
is a known issue.
Signed-off-by: Mohan Kandra <mohan.b.kandra@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Mohan Kandra [Wed, 29 Feb 2012 14:18:25 +0000 (06:18 -0800)]
Correct the VHDMI values inline to OTM HDMI values
Change the VHDMI values as these values in psb are not
inline to OTM HDMI. This will change MSIC VHDMI switch
off time to 0ms, and keeps VHDMI always on. This
is needed as HDMI HPD cannot be pulled up for some HDMI displays.
Signed-off-by: Mohan Kandra <mohan.b.kandra@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Jani Nikula [Thu, 1 Mar 2012 14:49:25 +0000 (16:49 +0200)]
gfx: display: initialize backlight PWM frequency
Some DV1s, and DV1.5s and later use I2C to adjust the backlight. We have
PWM based backlight control enabled for compatibility with older, non-CABC
devices. The PWM clock divider was not initialized, causing the PWM signal
to run at the base clock frequency of 19.2 MHz.
Initialize the clock divider, setting the PWM frequency to 9600 Hz. The
panel specification has no recommendation on the frequency, but the bug
ANDROID-1342 has this experimental value.
Issue: ANDROID-1342
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Oliver McFadden [Tue, 28 Feb 2012 19:39:11 +0000 (21:39 +0200)]
drv: psb: print useful values in the PSB IRQ debug macros.
Signed-off-by: Oliver McFadden <oliver.mcfadden@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Oliver McFadden [Thu, 23 Feb 2012 23:07:19 +0000 (01:07 +0200)]
gfx: drv: avoid NULL deref when enabling PSB debug output.
Issue: GRA-43
Signed-off-by: Oliver McFadden <oliver.mcfadden@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Oliver McFadden [Thu, 23 Feb 2012 21:16:00 +0000 (23:16 +0200)]
drv: gfx: do not use KERN_ALERT for debug messages.
Issue: GRA-39
Signed-off-by: Oliver McFadden <oliver.mcfadden@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Oliver McFadden [Thu, 23 Feb 2012 21:15:59 +0000 (23:15 +0200)]
drv: tc35876x: add a named module parameter for register write debug.
Otherwise the output on the serial console is far too verbose.
Issue: GRA-19
Signed-off-by: Oliver McFadden <oliver.mcfadden@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Oliver McFadden [Fri, 17 Feb 2012 12:52:29 +0000 (14:52 +0200)]
drv: tc35876x: set the brightness only when the panel is turned on.
Attempting to set the brightness when the panel is off would result in
several failed i2c writes; cache the value and write it when bringing
the panel turned on.
Issue: GRA-28
Signed-off-by: Oliver McFadden <oliver.mcfadden@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Oliver McFadden [Fri, 17 Feb 2012 12:52:28 +0000 (14:52 +0200)]
drv: tc35876x: pass the DRM device to all tc35876x functions.
This patch is required for further patches in this series; no functional
changes.
Signed-off-by: Oliver McFadden <oliver.mcfadden@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Naeem M. Afzal [Thu, 16 Feb 2012 17:04:07 +0000 (09:04 -0800)]
Lack of MTX_CMDID_NULL causes topaz fence to timeout
this timeout results in reset the hardware for every
jpeg frame encode. vaSyncSurface will not complete until
the timeout occurs, since it is still waiting for
MTX_CMID_NULL. This shows up as slow performance
(we have to wait for timeout).
Issue: ANDROID-1633
Signed-off-by: naeem.m.afzal@intel.com
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
asaggi [Tue, 14 Feb 2012 22:06:55 +0000 (14:06 -0800)]
Add DVI interoperability support for HDMI.
Kernel changes to add interoperability support for DVI. We do not want to send
NULL packets for DVI mode. This change depends on Android frameworks change to
actually make the decision of NOT routing audio to DVI.
ISSUE: ANDROID-1482
ISSUE: ANDROID-1519
Signed-off-by: Arun Kannan <arun.kannan@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
asaggi [Tue, 14 Feb 2012 22:06:53 +0000 (14:06 -0800)]
HDMI Audio PHY should be disabled if HDMI plane is disabled.
Disable audio Phy in DPMS when unplugging HDMI cable physically
and in cases like: deep sleep, etc., which was previously missing.
Signed-off-by: Arun Kannan <arun.kannan@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Arun Kannan [Tue, 14 Feb 2012 22:06:52 +0000 (14:06 -0800)]
Enable HDMI audio routing and signaling to user-space and HDMI audio driver.
We use the Android switch class driver to signal an HDMI state change to frameworks.
It is also important to notify the state change to HDMI audio driver.
Signed-off-by: Arun Kannan <arun.kannan@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Sanjay Rama Reddy [Tue, 14 Feb 2012 22:06:50 +0000 (14:06 -0800)]
Enable HDMI Audio callbacks from HDMI driver.
HDMI audio driver needs to register itself with the HDMI display
driver in order to be notified of HDMI events.
This patch will register the audio driver during boot-up and callback
HDMI audio driver functions when an event like PLUG/UNPLUG occurs.
Signed-off-by: Arun Kannan <arun.kannan@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Hu Tiger Chen [Tue, 14 Feb 2012 22:06:49 +0000 (14:06 -0800)]
During page flip, update the fb_helper->fbdev to that in the swapped fb.
This fixes the bug of system crash if unplug the HDMI cable after play video
with overlay enabled.
It is because fb_helper->fbdev points to the old value in the last fb, which
is cleaned up after video playback. And in hotplug sequence, segmentation fault
happens when walking through fb_helper->fbdev content.
Signed-off-by: Arun Kannan <arun.kannan@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Sanjay Rama Reddy [Tue, 14 Feb 2012 22:06:48 +0000 (14:06 -0800)]
In encoder dpms power on display island before accessing HDMI registers
In mdfld encoder dpms function, before accessing the registers notify
Power Management module not to power down the display island and once done notify
the module about that access to registers is no longer needed.
Signed-off-by: Mohan Kandra <mohan.b.kandra@intel.com>
Signed-off-by: Arun Kannan <arun.kannan@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Mohan Kandra [Tue, 14 Feb 2012 22:06:46 +0000 (14:06 -0800)]
Change HDMI I2C adapter from 3 to 8.
I2C adapter 3 on Medfield has known issues with reliably reading EDIDs
and especially reading 4-block EDID. We change the i2c adapter for HDMI
to adapter 8 to enable EDID extension block read (4 blocks EDID).
OTM_HDMI: r2954
Signed-off-by: Arun Kannan <arun.kannan@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Mohan Kandra [Tue, 14 Feb 2012 22:06:43 +0000 (14:06 -0800)]
MUST_REVERT: Set overlay clip region for HDMI to be same as MIPI.
Since the same FB is used between MIPI and HDMI, in video clone mode,
the clip region for HDMI that overlay configures should be same as MIPI.
OTM_HDMI: r3079
ISSUE: ANDROID-1462
Signed-off-by: Arun Kannan <arun.kannan@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Gandhimathi Anand [Tue, 14 Feb 2012 22:06:42 +0000 (14:06 -0800)]
Mark some unused functions in code to avoid warnings.
Some currently unused functions are annotated. These will get used in the
near future and will be enabled as required.
OTM_HDMI: r3068
Signed-off-by: Arun Kannan <arun.kannan@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Gandhimathi Anand [Tue, 14 Feb 2012 22:06:41 +0000 (14:06 -0800)]
Cleanup of some hardcoded values in OTM HDMI driver.
Removed some hardcode values and replace with meaningful macros.
OTM_HDMI: r3001
Signed-off-by: Arun Kannan <arun.kannan@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Mohan Kandra [Tue, 14 Feb 2012 22:06:40 +0000 (14:06 -0800)]
Port Panel fitting changes for HDMI from Gingerbread.
Panel fit hardware configuration dependent on required output HDMI mode.
OTM_HDMI: r2979
Signed-off-by: Arun Kannan <arun.kannan@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Gandhimathi Anand [Tue, 14 Feb 2012 22:06:39 +0000 (14:06 -0800)]
Fix more build warnings found in OTM HDMI driver.
Some more build warning fixes for OTM HDMI driver.
OTM_HDMI: r2971
Signed-off-by: Arun Kannan <arun.kannan@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Mohan Kandra [Tue, 14 Feb 2012 22:06:38 +0000 (14:06 -0800)]
Correct the compile condition for command line interface code
Command line interface code needs to be within OTM_HDMI_UNIT_TEST condition.
OTM_HDMI: r2967
Signed-off-by: Arun Kannan <arun.kannan@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Gandhimathi Anand [Tue, 14 Feb 2012 22:06:37 +0000 (14:06 -0800)]
Fix compilation warnings in OTM HDMI driver.
Fixes multiple compilation warnings/sparse warnings in OTM HDMI driver.
OTM_HDMI: r2964
Signed-off-by: Arun Kannan <arun.kannan@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Gandhimathi Anand [Tue, 14 Feb 2012 22:06:36 +0000 (14:06 -0800)]
Fix SPARSE issues found in OTM HDMI driver.
Patch fixes multiple issues found by SPARSE in OTM HDMI driver.
OTM_HDMI: r2947
Signed-off-by: Arun Kannan <arun.kannan@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Mohan Kandra [Tue, 14 Feb 2012 22:06:35 +0000 (14:06 -0800)]
Cleanup of hooking OTM HDMI driver into mrst/Makefile
mrst/Makefile changes corresponding to the new OTM HDMI
Makefile where the OTM HDMI Makefile is now independent
of mrst/Makefile inclusions, definitions etc.
Signed-off-by: Mohan Kandra <mohan.b.kandra@intel.com>
Signed-off-by: Arun Kannan <arun.kannan@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Mohan Kandra [Tue, 14 Feb 2012 22:06:34 +0000 (14:06 -0800)]
Cleanup of OTM HDMI Makefile.
Removing uncessary CFLAGS and include dirs from Makefile and making is simpler.
OTM_HDMI: r2919
Signed-off-by: Arun Kannan <arun.kannan@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Gandhimathi Anand [Tue, 14 Feb 2012 22:06:33 +0000 (14:06 -0800)]
Fix SMATCH issues found in OTM HDMI driver.
Fixes for multiple SMATCH issues inside OTM HDMI driver.
OTM_HDMI: r2913
Signed-off-by: Arun Kannan <arun.kannan@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Gandhimathi Anand [Tue, 14 Feb 2012 22:06:32 +0000 (14:06 -0800)]
Static Analysis fixes for OTM HDMI driver
This patch comprises of multiple issues found by static analysis tools.
OTM_HDMI: r2897
Signed-off-by: Arun Kannan <arun.kannan@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Ville Syrjälä [Wed, 15 Feb 2012 13:02:52 +0000 (15:02 +0200)]
gfx: drv: Warn if mode_config.mutex is not locked in GTT code
The GTT ref counting relies on mode_config.mutex for protection. Print a
warning if the code is called without holding the mutex.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Ville Syrjälä [Wed, 15 Feb 2012 13:02:51 +0000 (15:02 +0200)]
gfx: drv: Kill psb_bo_offset()
.bo_offset() is the only function in struct psb_intel_mode_device
which takes psb_framebuffer as a parameter, whereas the others take a
pvr mem info. Also .bo_offset() is only called from
mdfld__intel_pipe_set_base() whereas the other functions are only called
from the hardware cursor code.
Eliminate this incosistency by removing the .bo_offset() function
pointer completely and just dereference the psb_framebuffer pointer
directly in mdfld__intel_pipe_set_base().
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Ville Syrjälä [Wed, 15 Feb 2012 13:02:50 +0000 (15:02 +0200)]
gfx: drv: Reference count cursor BOs
Refrence count cursor BOs the same way as FB BOs.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Ville Syrjälä [Wed, 15 Feb 2012 13:02:49 +0000 (15:02 +0200)]
gfx: drv: Increase mem info ref count safely
gPVRSRVLock must be held when looking up the mem info based on the
handle. Also increase the ref count on the mem info before releasing
the lock. Otherwise some other thread could destroy the mem info
after we've looked it up, but before we've increased the ref count.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Ville Syrjälä [Wed, 15 Feb 2012 13:02:48 +0000 (15:02 +0200)]
gfx: drv: Add WARN_ON(1) to psb_gtt_{map, unmap}_meminfo_ioctl
psb_gtt_map_meminfo_ioctl() and psb_gtt_unmap_meminfo_ioctl() should not
be used by anyone. Add a WARN_ON(1) to both to catch anyone using them.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Ville Syrjälä [Wed, 15 Feb 2012 13:02:47 +0000 (15:02 +0200)]
gfx: drv: Fix locking in psb_gtt_{map, unmap}_meminfo_ioctl
mode_config.mutex is needed to protect the GTT reference counting, and
gPVRSRVLock is needed to protect the pvr data structures during these
ioctls. With locking properly handled in the code we can make both
ioctls DRM_UNLOCKED.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Ville Syrjälä [Wed, 15 Feb 2012 13:02:46 +0000 (15:02 +0200)]
gfx: drv: Kill psbfb_vdc_reg()
psbfb_vdc_reg() is not used anywhere, kill it.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Ville Syrjälä [Wed, 15 Feb 2012 13:02:45 +0000 (15:02 +0200)]
gfx: drv: Free the correct pointer in psb_framebuffer_destroy()
Pass the pointer to the psb_framebuffer structure to kfree(), not
the pointer to the embedded drm_framebuffer structure.
Luckily in this case the drm_framebuffer is embedded as the first
member inside psb_framebuffer, so the incorrect code didn't
manage to make a mess of things.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Ville Syrjälä [Wed, 15 Feb 2012 13:02:44 +0000 (15:02 +0200)]
gfx: drv: Use need_gtt() in psb_fb_gtt_ref()/unref()
Make sure the mem info needs a GTT mapping before trying to take a
reference to one.
Also swap the order of psb_fb_ref() and psb_gtt_map_meminfo() in
psb_gtt_fb_ref() to be consistent with the rest of the code.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Ville Syrjälä [Wed, 15 Feb 2012 13:02:43 +0000 (15:02 +0200)]
gfx: drv: Clean up error handling during fb creation
Try to handle errors during user framebuffer creation. Also use
psb_fb_ref()/unref() to take the reference to the mem info, in order
to get a reference to the per process data as well.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Ville Syrjälä [Wed, 15 Feb 2012 13:02:42 +0000 (15:02 +0200)]
gfx: drv: Keep a reference to pvr per process data
While we have a reference to the pvr mem info, we also must keep a
reference to the per process data for the owner. Freeing the mem
info will access data structures whose lifetime is tied to the per
process data, such as the context. So if we don't keep a reference
to the per process data, and the process exits before we unref the
mem info, the kernel could oops or some assertions could fail in
the pvr code.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>