Jani Nikula [Fri, 23 Mar 2012 13:47:52 +0000 (15:47 +0200)]
gfx: display: remove redundant pipe register writes in tc35876x mode set
Most significantly, don't set DSPALINOFF (aka DSPBASE in code) or DSPASURF
to 0, which restores old framebuffer content on screen.
Issue: ANDROID-754
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Acked-by: Pauli Nieminen <pauli.nieminen@linux.intel.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Pauli Nieminen [Thu, 22 Mar 2012 17:34:15 +0000 (19:34 +0200)]
gfx: drv: Avoid freeing the sync counter before completing it
If memory reference is freed before read complete count is increment
sync completion access already free memory.
[ 428.488124] BUG: unable to handle kernel paging request at
6b6b6b77
[ 428.494583] IP: [<
c1384af5>] PVRSRVCheckPendingSyncs+0x45/0xc6
[ 428.500581] *pdpt =
000000002d34c001 *pde =
0000000000000000
[ 428.506418] Oops: 0000 [#1] PREEMPT SMP
[ 428.510541] Modules linked in: wl12xx_compat_sdio(C) 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 atmel_mxt_ts pn544_nxp
[ 428.536909]
[ 428.538432] Pid: 5, comm: kworker/u:0 Tainted: G WC 3.0.22-mid15 #1
[ 428.545753] EIP: 0060:[<
c1384af5>] EFLAGS:
00010002 CPU: 0
[ 428.551279] EIP is at PVRSRVCheckPendingSyncs+0x45/0xc6
[ 428.556628] EAX:
eb2eda10 EBX:
e8e1698c ECX:
00000001 EDX:
00000003
[ 428.562933] ESI:
ed6172dc EDI:
6b6b6b6b EBP:
ee04ff28 ESP:
ee04ff0c
[ 428.569328] DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
[ 428.574767] Process kworker/u:0 (pid: 5, ti=
ee04e000 task=
ee0428c0 task.ti=
ee04e000)
[ 428.582631] Stack:
[ 428.584668]
00000000 00000246 ee04ff14 ee04ff14 c1e6b880 ed696e00 ed22bb05 ee04ff34
[ 428.592662]
c138efb8 ed6cd55c ee04ff3c c1383f1a ee04ff78 c104b6cb 0000009a c1383f0f
[ 428.600683]
00000000 ed22bb00 c1847800 ee028120 c1e6a5f4 00000000 00000000 c16c36d7
[ 428.608794] Call Trace:
[ 428.611282] [<
c138efb8>] PVRSRVMISR+0x80/0x85
[ 428.615853] [<
c1383f1a>] MISRWrapper+0xb/0xd
[ 428.620250] [<
c104b6cb>] process_one_work+0x1ef/0x357
[ 428.625523] [<
c1383f0f>] ? OSMemHandleToCpuPAddr+0x29/0x29
[ 428.631145] [<
c104d782>] worker_thread+0xfd/0x20f
[ 428.636069] [<
c104d685>] ? manage_workers+0x2ba/0x2ba
[ 428.641253] [<
c1050311>] kthread+0x63/0x68
[ 428.645480] [<
c10502ae>] ? __init_kthread_worker+0x42/0x42
[ 428.651185] [<
c14ee602>] kernel_thread_helper+0x6/0xd
Issue: ANDROID-2144
Issue: ANDROID-2168
Signed-off-by: Pauli Nieminen <pauli.nieminen@linux.intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Ville Syrjälä [Thu, 22 Mar 2012 13:25:44 +0000 (15:25 +0200)]
gfx: overlay: Clip the overlay correctly
When the panel fitter is used the overlay output is scaled by the panel
fitter as well. So to correctly clip the overlay to the screen edges
user the information in crtc->mode instead of crtc->hwmode.
Issue: ANDROID-1462
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Ville Syrjälä [Thu, 22 Mar 2012 13:25:43 +0000 (15:25 +0200)]
HACK: gfx: Adjust HDMI hdisplay/vdisplay values
The HDMI code doesn't follow the KMS desing correctly, hence the values
stored in the mode structure are incorrect. Adjust the "user" mode
hdisplay/vdisplay and their crtc counterparts to match the framebuffer
size. This "fixes" vblank counter comparisons for HDMI, thus fixing page
flip completion detection, and this also allows the overlay to be
clipped "correctly".
This makes assumptions on how the panel fitter willl be programmed.
Based on a cursory examination of the HDMI code, it will only work
as long as the IPIL_TIMING_SCALE_ASPECT scaling mode is selected.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Olev Kartau [Fri, 16 Mar 2012 07:05:20 +0000 (09:05 +0200)]
gfx: pvr: fw_version should compare 4 integers instead of 4 bytes
sizeof() was misused in fw_version_supported;
If array is given as argument, the size of it is size of pointer,
so comparison used only first 4 bytes instead of 4 integers,
which made all entries to match.
Signed-off-by: Olev Kartau <olev.kartau@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Kirill A. Shutemov [Wed, 21 Mar 2012 11:13:50 +0000 (13:13 +0200)]
gfx: pvr: fix list of supported FW version
The only supported FW version is 1.7.17.296760.
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Acked-by: Pauli Nieminen <pauli.nieminen@linux.intel.com>
Ville Syrjälä [Tue, 20 Mar 2012 14:46:22 +0000 (16:46 +0200)]
gfx: drv: Move stolen vram iounmap() into gtt code
The stolen memory is ioremap()ed in gtt init. Move the iounmap to the
gtt takedown function instead of doing it from the fbdev compatibility
code.
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:21 +0000 (16:46 +0200)]
gfx: drv: Don't tell fbdev about mmio regions
The fbdev mmio information is not used by the kernel for anything,
it's simply passed directly out to user space. User space should not
be allowed to touch the mmio registers directly, so it clearly doesn't
need to know where the mmio region is located physically.
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: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>