GitHub/LineageOS/G12/android_kernel_amlogic_linux-4.9.git
12 years agoMerge tag 'omapdss-for-3.7' of git://gitorious.org/linux-omap-dss2/linux into fbdev...
Florian Tobias Schandinat [Wed, 10 Oct 2012 02:16:30 +0000 (02:16 +0000)]
Merge tag 'omapdss-for-3.7' of git://gitorious.org/linux-omap-dss2/linux into fbdev-next

Omapdss driver changes for the 3.7 merge window.

Notable changes:

* Basic writeback support for DISPC level. Writeback is not yet usable, though,
  as we need higher level code to actually expose the writeback feature to
  userspace.
* Rewriting the omapdss output drivers. We're trying to remove the hard links
  between the omapdss and the panels, and this rewrite work moves us closer to
  that goal.
* Cleanup and restructuring patches that have been made while working on device
  tree support for omapdss. Device tree support is still some way ahead, but
  these patches are good cleanups in themselves.
* Basic OMAP5 DSS support for DPI and DSI outputs.
* Workaround for the problem that GFX overlay's fifo is too small for high
  resolution scenarios, causing underflows.
* Cleanups that remove dependencies to omap platform code.

12 years agovideo: mark nuc900fb_map_video_memory as __devinit
Arnd Bergmann [Tue, 9 Oct 2012 20:13:57 +0000 (22:13 +0200)]
video: mark nuc900fb_map_video_memory as __devinit

nuc900fb_map_video_memory is called by an devinit function
that may be called at run-time, but the function itself is
marked __init and will be discarded after boot.

To avoid calling into a function that may have been overwritten,
mark nuc900fb_map_video_memory itself as __devinit.

Without this patch, building nuc950_defconfig results in:

WARNING: drivers/video/built-in.o(.devinit.text+0x26c): Section mismatch in reference from the function nuc900fb_probe() to the function .init.text:nuc900fb_map_video_memory()
The function __devinit nuc900fb_probe() references
a function __init nuc900fb_map_video_memory().
If nuc900fb_map_video_memory is only used by nuc900fb_probe then
annotate nuc900fb_map_video_memory with a matching annotation.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Wan ZongShun <mcuos.com@gmail.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agovideo/mx3fb: set .owner to prevent module unloading while being used
Uwe Kleine-König [Fri, 5 Oct 2012 09:20:07 +0000 (11:20 +0200)]
video/mx3fb: set .owner to prevent module unloading while being used

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agovideo: exynos_dp: use clk_prepare_enable and clk_disable_unprepare
Jingoo Han [Thu, 4 Oct 2012 06:45:14 +0000 (15:45 +0900)]
video: exynos_dp: use clk_prepare_enable and clk_disable_unprepare

Convert clk_enable/clk_disable to clk_prepare_enable/clk_disable_unprepare
calls as required by common clock framework.

Signed-off-by: Jingoo Han <jg1.han@samsung.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agodrivers/video/exynos/exynos_mipi_dsi.c: fix error return code
Peter Senna Tschudin [Wed, 3 Oct 2012 12:40:44 +0000 (14:40 +0200)]
drivers/video/exynos/exynos_mipi_dsi.c: fix error return code

Convert a nonnegative error return code to a negative one, as returned
elsewhere in the function.

A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)

// <smpl>
(
if@p1 (\(ret < 0\|ret != 0\))
 { ... return ret; }
|
ret@p1 = 0
)
... when != ret = e1
    when != &ret
*if(...)
{
  ... when != ret = e2
      when forall
 return ret;
}
// </smpl>

Signed-off-by: Peter Senna Tschudin <peter.senna@gmail.com>
Acked-by: Donghwa Lee <dh09.lee@samsung.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agodrivers/video/savage/savagefb_driver.c: fix error return code
Peter Senna Tschudin [Wed, 3 Oct 2012 12:40:43 +0000 (14:40 +0200)]
drivers/video/savage/savagefb_driver.c: fix error return code

Convert a nonnegative error return code to a negative one, as returned
elsewhere in the function.

A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)

// <smpl>
(
if@p1 (\(ret < 0\|ret != 0\))
 { ... return ret; }
|
ret@p1 = 0
)
... when != ret = e1
    when != &ret
*if(...)
{
  ... when != ret = e2
      when forall
 return ret;
}
// </smpl>

Signed-off-by: Peter Senna Tschudin <peter.senna@gmail.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agovideo: s3c-fb: use clk_prepare_enable and clk_disable_unprepare
Thomas Abraham [Tue, 2 Oct 2012 23:57:40 +0000 (08:57 +0900)]
video: s3c-fb: use clk_prepare_enable and clk_disable_unprepare

Convert clk_enable/clk_disable to clk_prepare_enable/clk_disable_unprepare
calls as required by common clock framework.

Signed-off-by: Thomas Abraham <thomas.abraham@linaro.org>
Acked-by: Jingoo Han <jg1.han@samsung.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agoda8xx-fb: save and restore LCDC context across suspend/resume cycle
Manjunathappa, Prakash [Tue, 25 Sep 2012 14:11:41 +0000 (19:41 +0530)]
da8xx-fb: save and restore LCDC context across suspend/resume cycle

Save and restore register context of LCDC respectively
before suspend and after resume.

Signed-off-by: Manjunathappa, Prakash <prakash.pm@ti.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agoda8xx-fb: add pm_runtime support
Manjunathappa, Prakash [Fri, 21 Sep 2012 15:50:57 +0000 (21:20 +0530)]
da8xx-fb: add pm_runtime support

Add pm_runtime support to the da8xx-fb frame buffer driver.

Signed-off-by: Manjunathappa, Prakash <prakash.pm@ti.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agovideo/udlfb: fix line counting in fb_write
Alexander Holler [Tue, 14 Aug 2012 07:11:09 +0000 (09:11 +0200)]
video/udlfb: fix line counting in fb_write

Line 0 and 1 were both written to line 0 (on the display) and all subsequent
lines had an offset of -1. The result was that the last line on the display
was never overwritten by writes to /dev/fbN.

Cc: stable@vger.kernel.org
Signed-off-by: Alexander Holler <holler@ahsoftware.de>
Acked-by: Bernie Thompson <bernie@plugable.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agoOMAPDSS: add missing include for string.h
Tomi Valkeinen [Fri, 28 Sep 2012 07:03:03 +0000 (10:03 +0300)]
OMAPDSS: add missing include for string.h

Both dpi.c and sdi.c use strcmp(), but do not include string.h. With
some Kconfig options string.h is included implicitly, but with some
other the compilation fails:

drivers/video/omap2/dss/dpi.c:407:5: error: implicit declaration of
function 'strcmp'

Include string.h in both dpi.c and sdi.c

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoMerge branch 'archit/wb-dispc-for-3.7'
Tomi Valkeinen [Wed, 26 Sep 2012 13:48:55 +0000 (16:48 +0300)]
Merge branch 'archit/wb-dispc-for-3.7'

Merge omapdss writeback work. These patches implement the low level writeback
features in the DISPC, but do not yet add a way to actually use the writeback
from the userspace.

* archit/wb-dispc-for-3.7:
  OMAPDSS: DISPC: Configure color conversion coefficients for writeback
  OMAPDSS: DISPC: Add manager like functions for writeback
  OMAPDSS: DISPC: Configure writeback FIFOs
  OMAPDSS: DISPC: Configure writeback specific parameters in dispc_wb_setup()
  OMAPDSS: DISPC: Configure overlay-like parameters in dispc_wb_setup
  OMAPDSS: DISPC: Add function to set channel in for writeback
  OMAPDSS: DISPC: Don't set chroma resampling bit for writeback
  OMAPDSS: DISPC: Downscale chroma if plane is writeback
  OMAPDSS: DISPC: Configure input and output sizes for writeback
  OMAPDSS: DISPC: Add writeback register offsets and dss features structs
  OMAPDSS: DISPC: Allow both upscaling and downscaling of chroma
  OMAPDSS: DIPSC: Relax scaling limitations when in memory to memory mode
  OMAPDSS: DISPC: Don't pass channel out when configuring overlays
  OMAPDSS: DISPC: Make dispc_ovl_setup call dispc_ovl_setup_common
  OMAPDSS: OVERLAY: Add position and replication as overlay caps
  OMAPDSS: DISPC: Pass overlay caps as a parameter to dispc plane functions
  OMAPDSS: DISPC: Simplify function names for setting pipeline input and output sizes
  OMAPDSS: DISPC: Constify omap_overlay_info in dispc_ovl_setup()

12 years agoMerge branch 'archit/outputs-for-3.7'
Tomi Valkeinen [Wed, 26 Sep 2012 13:46:29 +0000 (16:46 +0300)]
Merge branch 'archit/outputs-for-3.7'

Merge omapdss output work, that creates a new entity "output" to represent the
outputs (DPI, DSI, HDMI, ...) from DSS. An output sits in between an overlay
manager and a panel, and helps us to remove references to panel devices from
the omapdss core.

* archit/outputs-for-3.7: (23 commits)
  OMAPDSS: Remove old way of setting manager and device links
  OMAPDSS: APPLY: Remove omap_dss_device references from dss_ovl_enable/disable
  OMAPDSS: OVERLAY/MANAGER: Get device via output
  OMAPDSS: MANAGER: Update display sysfs store
  OMAPFB: Change dssdev->manager references
  OMAPDSS: HDMI: Replace dssdev->manager with dssdev->output->manager references
  OMAPDSS: VENC: Replace dssdev->manager with dssdev->output->manager references
  OMAPDSS: RFBI: Replace dssdev->manager with dssdev->output->manager references
  OMAPDSS: SDI: Replace dssdev->manager with dssdev->output->manager references
  OMAPDSS: DSI: Replace dssdev->manager with dssdev->output->manager references
  OMAPDSS: DSI: Remove dsi_pdev_map global struct
  OMAPDSS: DPI: Replace dssdev->manager with dssdev->output->manager references
  OMAPDSS: Create links between managers, outputs and devices
  OMAPDRM: Remove manager->device references
  OMAPFB: remove manager->device references
  OMAP_VOUT: Remove manager->device references
  OMAPDSS: Remove manager->device references
  OMAPDSS: APPLY: Add manager set/unset output ops for omap_overlay_manager
  OMAPDSS: output: Add set/unset device ops for omap_dss_output
  OMAPDSS: outputs: Create and register output instances
  ...

12 years agoOMAPDSS: DISPC: Configure color conversion coefficients for writeback
Archit Taneja [Tue, 11 Sep 2012 06:34:47 +0000 (12:04 +0530)]
OMAPDSS: DISPC: Configure color conversion coefficients for writeback

Writeback pipeline receives RGB data from one of the overlays or one of the
overlay managers. If the target color mode is YUV422 or NV12, we need to convert
the RGB pixels to YUV. The scaler in WB then converts it to the target color
mode.

Hence, the color conversion coefficients that need to be programmed are the ones
which convert a RGB24 pixel to YUV444. Program these coefficients for writeback
pipeline.

Rearrange the code a bit to configure different coefficients for overlays and
writeback.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: DISPC: Add manager like functions for writeback
Archit Taneja [Sat, 22 Sep 2012 07:09:33 +0000 (12:39 +0530)]
OMAPDSS: DISPC: Add manager like functions for writeback

Add functions to enable writeback, and set/check state of GO bit. These bits are
identical in behaviour with the corresponding overlay manager bits. Configure
them in a similar way to mgr_enable() and mgr_go_* functions. Add a helper to
get the FRAMEDONE irq corresponding to writeback.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: DISPC: Configure writeback FIFOs
Archit Taneja [Mon, 10 Sep 2012 12:01:39 +0000 (17:31 +0530)]
OMAPDSS: DISPC: Configure writeback FIFOs

Extend the DISPC fifo functions to also configure the writeback FIFO thresholds.

The most optimal configuration for writeback is to push out data to the
interconnect the moment writeback pushes enough pixels in the FIFO to form a
burst. This reduces the chance of writeback overflowing it's FIFO.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: DISPC: Configure writeback specific parameters in dispc_wb_setup()
Archit Taneja [Fri, 24 Aug 2012 11:29:26 +0000 (16:59 +0530)]
OMAPDSS: DISPC: Configure writeback specific parameters in dispc_wb_setup()

Configure some of the writeback specific parameters in dispc_wb_setup(). The
writeback parameters configured are:

truncation: This needs to be set if the color depth input to writeback is more
than the color depth of the color mode we want to store in memory.

writeback mode: This configures whether we want to use writeback in mem to mem
or capture mode. This information will be directly passed by APPLY later.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: DISPC: Configure overlay-like parameters in dispc_wb_setup
Archit Taneja [Fri, 31 Aug 2012 07:02:52 +0000 (12:32 +0530)]
OMAPDSS: DISPC: Configure overlay-like parameters in dispc_wb_setup

Create struct omap_dss_writeback_info, this is similar to omap_overlay_info,
the major difference is that there is no parameter which describes the input
size to writeback, this is because this is always fixed, and decided by the
connected overlay or overlay manager. One more difference is that screen_width
is renamed to buf_width, to give the value of stride the writeback buffer has.

Call dispc_ovl_setup_common() through dispc_wb_setup() to configure overlay-like
parameters. The parameters in dispc_ovl_setup_common() which do not hold for
writeback are filled passed as zeroes or false, the code takes care of not
configuring them as they won't possess the needed overlay caps.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: DISPC: Add function to set channel in for writeback
Archit Taneja [Sat, 22 Sep 2012 07:08:19 +0000 (12:38 +0530)]
OMAPDSS: DISPC: Add function to set channel in for writeback

Writeback can take input from either one of the overlays, or one of the overlay
managers. Add an enum which represents the channel_in for writeback, and maps
to the register field programming.

Add a function to configure channel in for writeback. This will be used later in
APPLY.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: DISPC: Don't set chroma resampling bit for writeback
Archit Taneja [Mon, 16 Jul 2012 11:07:45 +0000 (16:37 +0530)]
OMAPDSS: DISPC: Don't set chroma resampling bit for writeback

The bit YUVCHROMARESAMPLING isn't there for writeback in DISPC_WB_ATTRIBUTES2.
It isn't there because we don't upsample chroma like for video pipelines, we
downsample chroma in writeback to get YUV422 or NV12 formats from the YUV444
input.

Ignore this bit in dispc_ovl_set_scaling_uv() if the plane is OMAP_DSS_WB.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: DISPC: Downscale chroma if plane is writeback
Archit Taneja [Fri, 24 Aug 2012 05:41:14 +0000 (11:11 +0530)]
OMAPDSS: DISPC: Downscale chroma if plane is writeback

When converting YUYV444 content to YUV422 or NV12 formats through writeback
pipeline, the scaler needs to downscale the chroma plane. Ensure that chroma
is downscaled when the pipeline is writeback.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: DISPC: Configure input and output sizes for writeback
Archit Taneja [Sat, 28 Jul 2012 17:29:03 +0000 (22:59 +0530)]
OMAPDSS: DISPC: Configure input and output sizes for writeback

Writeback uses the WB_PICTURE_SIZE register to define the size of the content
written to memory, this is the output of the scaler. It uses the WB_SIZE
register to define the size of the content coming from the overlay/manager to
which it is connected, this is the input to the scaler. This naming is different
as compared to overlays.

Add checks for writeback in dispc_ovl_set_input_size() and
dispc_ovl_set_output_size() to write to the correct registers.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: DISPC: Add writeback register offsets and dss features structs
Archit Taneja [Mon, 16 Jul 2012 10:24:24 +0000 (15:54 +0530)]
OMAPDSS: DISPC: Add writeback register offsets and dss features structs

Since writeback has many overlay like properties, and most of it's registers are
similar to that of overlays, it's possible to reuse most of the overlay related
DISPC code for writeback when considering it as a plane. Writeback was added as
a plane in the omap_plane field as OMAP_DSS_WB.

Add the writeback register offsets in dispc.h, add minimal WB plane related info
needed in dss_features. Add a function which returns the number of writeback
pipelines an OMAP version has.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: DISPC: Allow both upscaling and downscaling of chroma
Archit Taneja [Wed, 22 Aug 2012 11:34:48 +0000 (17:04 +0530)]
OMAPDSS: DISPC: Allow both upscaling and downscaling of chroma

In the function dispc_plane_set_scaling_uv(), create a parameter which tells if
we want to upscale or downscale the chroma plane.

Downscaling of chroma is required by writeback pipeline for converting the input
YUV444 color format to YUV422 or NV12.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: DIPSC: Relax scaling limitations when in memory to memory mode
Archit Taneja [Wed, 26 Sep 2012 11:30:37 +0000 (17:00 +0530)]
OMAPDSS: DIPSC: Relax scaling limitations when in memory to memory mode

The scalers of overlays and writeback do not have any constraints on downscale
ratio when operating in memory to memory mode.

This is because in memory to memory mode, we aren't connected to a display which
needs data output at the rate of pixel clock. The scalers can perform as much
downscaling as needed, the rate at which the scaler outputs is adjusted
accordingly.

Relax constraints related to downscaling based on whether the input overlays are
connected to writeback in memory to memory mode. We pass a mem_to_mem boolean
parameter to dispc_ovl_setup() from APPLY. This is currently set to false, this
will later be configured to the correct value based on whether the overlay is
connected to writeback or not. Do the same later for writeback when writeback is
configured.

In the scaling calculation code, we calculate the minimum amount of core clock we
need to achieve the required downscaling. If we are in memory to memory mode, we
set this to a very small value(1 in this case), this value would always be
lesser than the actual DISPC core clock value, and hence the scaling checks
would succeed.

We take care that pixel clock isn't calculated for writeback and the overlays
connected to it when in memory to memory mode. A pixel clock in such cases
doesn't make sense.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: DISPC: Don't pass channel out when configuring overlays
Archit Taneja [Wed, 26 Sep 2012 11:28:52 +0000 (16:58 +0530)]
OMAPDSS: DISPC: Don't pass channel out when configuring overlays

dispc_ovl_setup_common() is to be used by both overlays and writeback. We pass
channel out to figure out what manager the overlay is connected to, to determine
the pixel clock rate. This is used to decide the scaling limitations for that
overlay.

writeback doesn't have a channel out, it has a channel in field which tells
where writeback gets its input from. These are 2 different fields, and this
prevents us reusing the overlay configuration code for writeback.

To overcome this, we now pass omap_plane to overlay related functions rather
than passing channel out. We create helper functions which can derive pclk/lclk
from the omap_plane id.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: DISPC: Make dispc_ovl_setup call dispc_ovl_setup_common
Archit Taneja [Wed, 26 Sep 2012 11:27:37 +0000 (16:57 +0530)]
OMAPDSS: DISPC: Make dispc_ovl_setup call dispc_ovl_setup_common

Add a new static function called dispc_ovl_setup_common(). This function is used by
dispc_ovl_setup() to configure the overlay registers. This split is done so that
dispc_wb_setup() can reuse overlay register configuration related code.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: OVERLAY: Add position and replication as overlay caps
Archit Taneja [Sat, 22 Sep 2012 07:00:17 +0000 (12:30 +0530)]
OMAPDSS: OVERLAY: Add position and replication as overlay caps

Add position and replication as overlay caps, and pass overlay caps as an
argument to the corresponding functions. Adding position and replication to
overlay caps seems a bit unnecessary, but it allows us to use the
corresponding functions for writeback too.

These caps will be set for all overlays, but not for writeback. This is done
so writeback can reuse dispc_ovl_setup() to the maximum.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: DISPC: Pass overlay caps as a parameter to dispc plane functions
Archit Taneja [Wed, 26 Sep 2012 11:25:27 +0000 (16:55 +0530)]
OMAPDSS: DISPC: Pass overlay caps as a parameter to dispc plane functions

Currently, the functions below take the omap_plane parameter and derive the
overlay caps within them. Pass the overlay caps as a parameter to the function
to allow these to be used by writeback too.

- dispc_ovl_set_zorder()
- dispc_ovl_set_pre_mult_alpha()
- dispc_ovl_setup_global_alpha()
- dispc_ovl_calc_scaling()
- dispc_ovl_setup()

These functions will be used for writeback later, and the caps will help in
deciding if they are to be used for writeback or not. This allows reuse of
overlay caps for writeback.

Using omap_overlay_caps for writeback seems a bit incorrect, but caps is
something already in use by users of OMAPDSS(omapfb/omap_vout), so we use
overlay caps for overlay like features of writeback too.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: DISPC: Simplify function names for setting pipeline input and output sizes
Archit Taneja [Fri, 21 Sep 2012 09:21:49 +0000 (14:51 +0530)]
OMAPDSS: DISPC: Simplify function names for setting pipeline input and output sizes

The DISPC pipeline register names in the TRM for setting the buffer size and
the output size are a bit misleading, for example, there are different register
names for setting the buffer size for VID and GFX pipes. Things get more
confusing when considering writeback pipeline.

Rename the functions so that they tell whether they are configuring the input
to the scalar or the output. These will be extended later to support writeback
registers.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: DISPC: Constify omap_overlay_info in dispc_ovl_setup()
Archit Taneja [Wed, 22 Aug 2012 07:03:49 +0000 (12:33 +0530)]
OMAPDSS: DISPC: Constify omap_overlay_info in dispc_ovl_setup()

The struct omap_overlay_info passed to dispc_ovl_setup() is used to configure
DISPC registers. It shouldn't modify the overlay_info structure. The pos_y field
was being changed in dispc_ovl_setup in the case of interlaced displays. Fix
this and const qualifier to the omap_overlay_info argument.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: Remove old way of setting manager and device links
Archit Taneja [Tue, 5 Jun 2012 13:07:27 +0000 (18:37 +0530)]
OMAPDSS: Remove old way of setting manager and device links

Now that an omap_dss_output can be used to link between managers and devices, we
can remove the old way of setting manager and device links. This involves
removing the device and manager pointers from omap_overlay_manager and
omap_dss_device respectively, and removing the set_device/unset_device ops from
omap_overlay_manager.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: APPLY: Remove omap_dss_device references from dss_ovl_enable/disable
Archit Taneja [Mon, 3 Sep 2012 11:44:09 +0000 (17:14 +0530)]
OMAPDSS: APPLY: Remove omap_dss_device references from dss_ovl_enable/disable

An overlay isn't allowed to be enabled/disabled if it isn't connected to an
omap_dss_device. This requirement isn't needed any more. An overlay can be
enabled/disabled as long as it has an output connected to it. The output may
not be connected to a device, but we can be assured that the connected
manager's output is in use by an output interface.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: OVERLAY/MANAGER: Get device via output
Archit Taneja [Tue, 5 Jun 2012 13:03:28 +0000 (18:33 +0530)]
OMAPDSS: OVERLAY/MANAGER: Get device via output

A manager is not connected to a device directly any more. It first connects
to an output, and then to the display. Update overlay and manager get_device ops
to return the device via the connected output.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: MANAGER: Update display sysfs store
Archit Taneja [Fri, 7 Sep 2012 12:30:07 +0000 (18:00 +0530)]
OMAPDSS: MANAGER: Update display sysfs store

The display sysfs attribute's store function needs to be changed with the
introduction of outputs.

The DSS driver ensures that there is one display per output, and that a
registered omap_dss_device will have an output connected to it. The display
sysfs store function unsets the current output connected to the manager, and
sets it with the output connected to the new display. If the new display doesn't
have an output for some reason, we just bail out. The function doesn't set/unset
output->device links. These remain the same as when the omap_dss_device was
registered.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPFB: Change dssdev->manager references
Archit Taneja [Mon, 10 Sep 2012 09:13:39 +0000 (14:43 +0530)]
OMAPFB: Change dssdev->manager references

To retrieve the manager pointer via a device, we need to now access it via the
output to which the device is connected. Make this change in omapfb_ioctl()
where the WAITFORVSYNC ioctl tries to access the manager's device.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: HDMI: Replace dssdev->manager with dssdev->output->manager references
Archit Taneja [Fri, 7 Sep 2012 12:26:20 +0000 (17:56 +0530)]
OMAPDSS: HDMI: Replace dssdev->manager with dssdev->output->manager references

With addition of output entities, a device connects to an output, and an output
connects to overlay manager. Replace the dssdev->manager references with
dssdev->output->manager to access the manager correctly.

When enabling the HDMI output, check whether the output entity connected to
display is not NULL.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: VENC: Replace dssdev->manager with dssdev->output->manager references
Archit Taneja [Fri, 7 Sep 2012 12:24:27 +0000 (17:54 +0530)]
OMAPDSS: VENC: Replace dssdev->manager with dssdev->output->manager references

With addition of output entities, a device connects to an output, and an output
connects to overlay manager. Replace the dssdev->manager references with
dssdev->output->manager to access the manager correctly.

When enabling the VENC output, check whether the output entity connected to
display is not NULL.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: RFBI: Replace dssdev->manager with dssdev->output->manager references
Archit Taneja [Tue, 4 Sep 2012 06:24:32 +0000 (11:54 +0530)]
OMAPDSS: RFBI: Replace dssdev->manager with dssdev->output->manager references

With addition of output entities, a device connects to an output, and an output
connects to overlay manager. Replace the dssdev->manager references with
dssdev->output->manager to access the manager correctly.

When enabling the RFBI output, check whether the output entity connected to
display is not NULL.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: SDI: Replace dssdev->manager with dssdev->output->manager references
Archit Taneja [Tue, 4 Sep 2012 06:19:30 +0000 (11:49 +0530)]
OMAPDSS: SDI: Replace dssdev->manager with dssdev->output->manager references

With addition of output entities, a device connects to an output, and an output
connects to overlay manager. Replace the dssdev->manager references with
dssdev->output->manager to access the manager correctly.

When enabling the SDI output, check whether the output entity connected to
display is not NULL.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: DSI: Replace dssdev->manager with dssdev->output->manager references
Archit Taneja [Tue, 4 Sep 2012 06:12:36 +0000 (11:42 +0530)]
OMAPDSS: DSI: Replace dssdev->manager with dssdev->output->manager references

With addition of output entities, a device connects to an output, and an output
connects to overlay manager. Replace the dssdev->manager references with
dssdev->output->manager to access the manager correctly.

When enabling the DSI output, check whether the output entity connected to
display is not NULL.

In dsi_init_display(), the display won't be connected to the DSI output yet,
that happens later in dss_recheck_connections() in the panel driver's probe. Get
the dsidev platform device pointer using the DSI moudle number provided in the
omap_dss_device struct.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: DSI: Remove dsi_pdev_map global struct
Archit Taneja [Wed, 4 Jul 2012 08:18:34 +0000 (13:48 +0530)]
OMAPDSS: DSI: Remove dsi_pdev_map global struct

dsi_pdev_map is a struct visible globally in the DSI driver to get the platform
device pointer of the DSI device corresponding to it's module ID. This was
required because there was no clean way to derive the platform device from
the DSI module instance number or from the connected panel.

With the new output entity, it is possible to retrieve the platform device
pointer if the omap_dss_output pointer is available. Modify the functions
dsi_get_dsidev_from_dssdev() dsi_get_dsidev_from_id() so that they use output
instead of dsi_pdev_map to retrieve the dsi platform device pointer.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: DPI: Replace dssdev->manager with dssdev->output->manager references
Archit Taneja [Fri, 7 Sep 2012 12:23:38 +0000 (17:53 +0530)]
OMAPDSS: DPI: Replace dssdev->manager with dssdev->output->manager references

With addition of output entities, a device connects to an output, and an output
connects to overlay manager. Replace the dssdev->manager references with
dssdev->output->manager to access the manager correctly.

When enabling the DPI output, check whether the output entity connected to
display is not NULL.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: Create links between managers, outputs and devices
Archit Taneja [Mon, 10 Sep 2012 09:04:16 +0000 (14:34 +0530)]
OMAPDSS: Create links between managers, outputs and devices

Links between DSS entities are made in dss_init_connections() when a panel
device is registered, and are removed in dss_uninit_connections() when the
device is unregistered. Modify these functions to incorporate the addition of
outputs.

The fields in omap_dss_device struct gives information on which output and
manager to connect to. The desired manager and output pointers are retrieved and
prepared to form the desired links. The output is linked to the device, and then
the manager to the output.

A helper function omapdss_get_output_from_device() is created to retrieve the
output from the display by checking it's type, and the module id in case of DSI.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDRM: Remove manager->device references
Archit Taneja [Fri, 20 Jul 2012 13:00:50 +0000 (18:30 +0530)]
OMAPDRM: Remove manager->device references

With the introduction of output entities, managers will now connect to outputs.
Use the helper op for managers named get_device. This will abstract away the
information on how to get the device from an overlay manager.

Using the helper function will reduce the number of pointer dereferences a user
of OMAPDSS needs to do and reduce risk of a NULL dereference.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPFB: remove manager->device references
Archit Taneja [Fri, 20 Jul 2012 12:56:56 +0000 (18:26 +0530)]
OMAPFB: remove manager->device references

With the introduction of output entities, managers will now connect to outputs.
Use the helper op for overlays named get_device. This will abstract away the
information on how to get the device from an overlay.

Using the helper function will reduce the number of pointer dereferences a user
of OMAPDSS needs to do and reduce risk of a NULL dereference.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAP_VOUT: Remove manager->device references
Archit Taneja [Fri, 20 Jul 2012 12:56:30 +0000 (18:26 +0530)]
OMAP_VOUT: Remove manager->device references

With the introduction of output entities, managers will now connect to outputs.
Use the helper op for overlays named get_device. This will abstract away the
information on how to get the omap_dss_device pointer from an overlay.

Using the helper function will reduce the number of pointer dereferences a user
of OMAPDSS needs to do and reduce risk of a NULL dereference.

Cc: Vaibhav Hiremath <hvaibhav@ti.com>
Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: Remove manager->device references
Archit Taneja [Fri, 7 Sep 2012 12:14:51 +0000 (17:44 +0530)]
OMAPDSS: Remove manager->device references

With the introduction of output entities, managers will now connect to outputs.
Create helper ops for overlays and managers named get_device. This will abstract
away the information on how to get the device from an overlay or an overlay
manager. The get_device ops currently retrieve the output via a
ovl->manager->device reference. This will be later replaced by
ovl->manager->output->device references.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: APPLY: Add manager set/unset output ops for omap_overlay_manager
Archit Taneja [Wed, 26 Sep 2012 11:12:39 +0000 (16:42 +0530)]
OMAPDSS: APPLY: Add manager set/unset output ops for omap_overlay_manager

Add set_output/unset_output ops for overlay managers, these form links between
managers and outputs. Create a function in dss features which tell all the
output instances that connect to a manager, use it when a manager tries to set
an output. Add a constraint of not unsetting an output when the manager is
enabled.

Keep the omap_dss_device pointer and set/unset_device ops in overlay_manager for
now to not break things. Keep the dss feature function get_supported_displays
as it's used in some places. These will be removed later.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: output: Add set/unset device ops for omap_dss_output
Archit Taneja [Wed, 29 Aug 2012 08:00:15 +0000 (13:30 +0530)]
OMAPDSS: output: Add set/unset device ops for omap_dss_output

An output entity represented by the struct omap_dss_output connects to a
omap_dss_device entity. Add functions to set or unset an output's device. This
is similar to how managers and devices were connected previously. An output can
connect to a device without being connected to a manager. However, the output
needs to eventually connect to a manager so that the connected panel can be
enabled.

Keep the omap_overlay_manager pointer in omap_dss_device for now to prevent
breaking things. This will be removed later when outputs are supported
completely.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: outputs: Create and register output instances
Archit Taneja [Wed, 26 Sep 2012 11:00:49 +0000 (16:30 +0530)]
OMAPDSS: outputs: Create and register output instances

Add output structs to output driver's private data. Register output instances by
having an init function in the probes of the platform device drivers for
different outputs. The *_init_output for each output registers the output and
fill up the output's plaform device, type and id fields. The *_uninit_output
functions unregister the output.

In the probe of each interface driver, the output entities are initialized
before the *_probe_pdata() functions intentionally. This is done to ensure that
the output entity is prepared before the panels connected to the output are
registered. We need the output entities to be ready because OMAPDSS will try
to make connections between overlays, managers, outputs and devices during the
panel's probe.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: outputs: Create a new entity called outputs
Archit Taneja [Fri, 7 Sep 2012 12:08:00 +0000 (17:38 +0530)]
OMAPDSS: outputs: Create a new entity called outputs

The current OMAPDSS design contains 3 software entities: Overlays, Managers and
Devices. These map to pipelines, overlay managers and the panels respectively in
hardware. One or more overlays connect to a manager to represent a composition,
the manager connects to a device(generally a display) to display the content.

The part of DSS hardware which isn't represented by any of the above entities
are interfaces/outputs that connect to an overlay manager, i.e blocks like DSI,
HDMI, VENC and so on. Currently, an overlay manager directly connects to the
display, and the output to which it is actually connected is ignored. The panel
driver of the display is responsible of calling output specific functions to
configure the output.

Adding outputs as a new software entity gives us the following benefits:

- Have exact information on the possible connections between managers and
  outputs: A manager can't connect to each and every output, there only limited
  hardware links between a manager's video port and some of the outputs.

- Remove hacks related to connecting managers and devices: Currently, default
  links between managers and devices are set in a not so clean way. Matching is
  done via comparing the device type, and the display types supported by the
  manager. This isn't sufficient to establish all the possible links between
  managers, outputs and devices in hardware.

- Make panel drivers more generic: The DSS panel drivers currently call
  interface/output specific functions to configure the hardware IP. When making
  these calls, the driver isn't actually aware of the underlying output. The
  output driver extracts information from the panel's omap_dss_device pointer
  to figure out which interface it is connected to, and then configures the
  corresponding output block. An example of this is when a DSI panel calls
  dsi functions, the dsi driver figures out whether the panel is connected
  to DSI1 or DSI2. This isn't correct, and having output as entities will
  give the panel driver the exact information on which output to configure.
  Having outputs also gives the opportunity to make panel drivers generic
  across different platforms/SoCs, this is achieved as omap specific output
  calls can be replaced by ops of a particular output type.

- Have more complex connections between managers, outputs and devices: OMAPDSS
  currently doesn't support use cases like 2 outputs connect to a single
  device. This can be achieved by extending properties of outputs to connect to
  more managers or devices.

- Represent writeback as an output: The writeback pipeline fits well in OMAPDSS
  as compared to overlays, managers or devices.

Add a new struct to represent outputs. An output struct holds pointers to the
manager and device structs to which it is connected. Add functions which can
register/unregister an output, or look for one. Create an enum which represent
each output instance.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: APPLY: Remove omap_dss_device references in wait_for_go functions
Archit Taneja [Tue, 26 Jun 2012 10:06:55 +0000 (15:36 +0530)]
OMAPDSS: APPLY: Remove omap_dss_device references in wait_for_go functions

The functions dss_mgr_wait_for_go() and dss_mgr_wait_for_go_ovl() check if there
is an enabled display connected to the manager before trying to see the state of
the GO bit.

The checks related to the display can be replaced by checking the state of the
manager, i.e, whether the manager is enabled or not. This makes more sense than
checking with the connected display as the GO bit behaviour is more connected
with the manager state rather than the display state. A GO bit can only be set
if the manager is enabled. If a manager isn't enabled, we can safely assume that
the GO bit is not set.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: DSI: Pass dsi platform device wherever possible
Archit Taneja [Tue, 14 Aug 2012 06:59:22 +0000 (12:29 +0530)]
OMAPDSS: DSI: Pass dsi platform device wherever possible

Many of the DSI functions receive the connected panel's omap_dss_device pointer
as an argument. The platform device pointer is then derived via omap_dss_device
pointers.

Most of these functions don't really require omap_dss_device pointer anymore
since we now keep copies of parameters in the driver data which were previously
available only via omap_dss_device. Replace the arguments with platform device
pointers for such functions.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: DSI: fix tlpx_half reg field length
Tomi Valkeinen [Mon, 24 Sep 2012 06:34:52 +0000 (09:34 +0300)]
OMAPDSS: DSI: fix tlpx_half reg field length

tlpx_half bit field in DSI_DSIPHY_CFG1 is [20,16], not [22,16] as
accessed in the code currently. Fix this.

The bug should not have caused any problems on OMAP3/4, as the bits
21,22 are unused. They are used on OMAP5, though.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: DISPC: Add predecimation limit for TILER based rotations
Chandrabhanu Mahapatra [Mon, 24 Sep 2012 06:38:27 +0000 (12:08 +0530)]
OMAPDSS: DISPC: Add predecimation limit for TILER based rotations

In OMAP4 and OMAP5 when TILER 2D burst mode is used, a maximum of one line can
be skipped as per the respective TRMs. The MBlockStride OCP signal, which is
sum of ROWINC and image width in memory, is only 17 bits wide. In 2D mode TILER
supports 8192, 16384, 32768 and 65536 values of MBlockStride. In case when 2 or
more lines are skipped the ROWINC value exceeds 65536 resulting in OCP errors.
So, maximum vertical predecimation achievable is 2.

Signed-off-by: Chandrabhanu Mahapatra <cmahapatra@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoMerge OMAP5 DSS changes to omapdss
Tomi Valkeinen [Tue, 25 Sep 2012 08:26:28 +0000 (11:26 +0300)]
Merge OMAP5 DSS changes to omapdss

This series adds basic OMAP5 DSS functionality, mainly related to DSS core, DPI
and DSI.

* omap5-dss:
  OMAPDSS: DSI: make OMAP2_DSS_DSI depend on ARCH_OMAP5
  OMAPDSS: DSI: Add code to disable PHY DCC
  OMAPDSS: DSI: Add new linebuffer size for OMAP5
  OMAPDSS: DSI: Add FEAT_DSI_PLL_REFSEL
  OMAPDSS: DSI: Add FEAT_DSI_PLL_SELFREQDCO
  OMAPDSS: Add support for DPI source selection
  OMAPDSS: move dss feats to the end of dss.c
  OMAPDSS: Add basic omap5 features to dss and dispc
  OMAPDSS: DSI: improve DSI clock calcs for DISPC

12 years agoMerge omapdss single-dssdev series
Tomi Valkeinen [Tue, 25 Sep 2012 08:23:14 +0000 (11:23 +0300)]
Merge omapdss single-dssdev series

This series contains patches that change how omapdss's panel devices
(omap_dss_device) are initialized and registered. There are two patches that
change behaviour, the rest are just cleanups:

The patch "omap_dss_register_device() doesn't take display index" affects the
number for the "displayX" sysfs files. This hopefully doesn't affect the
userspace, as the number has never been a clear indication of what the
particular display is.

The patch "register only one display device per output" affects how panel
devices are created. Currently we support multiple panels per output, i.e. you
could have DVI and an LCD displays using the same DPI output, as long as the
DVI and LCD are not used at the same time.

This patch changes the omapdss driver to only register one display device per
output. If there are multiple displays for the output, either the first one is
picked or, if def_display has been defined in kernel parameters and the
def_display is one of the displays for this output, the def_display is picked.
See the patch for more information.

  OMAPDSS: alloc dssdevs dynamically
  OMAPDSS: cleanup dss_recheck_connections further
  OMAPDSS: cleanup dss_recheck_connections
  OMAPDSS: handle errors in dss_init_device
  OMAPDSS: explicitely initialize dssdev->channel for new displays
  OMAPDSS: register only one display device per output
  OMAPDSS: Add dss_get_default_display_name()
  OMAPDSS: omap_dss_register_device() doesn't take display index

12 years agoOMAPDSS: Do not require a VDDS_DSI regulator on AM35xx
Raphaël Assénat [Wed, 19 Sep 2012 19:53:14 +0000 (15:53 -0400)]
OMAPDSS: Do not require a VDDS_DSI regulator on AM35xx

On our AM3505 based board, dpi.c complains that there is no VDDS_DSI
regulator and the framebuffer cannot be enabled. However, this check
does not seem to apply to AM3505/17 chips.

This patch adds new features list for AM35xxx, which is the same as for
OMAP3 except the VDDS_DSI is removed.

Signed-off-by: Raphael Assenat <raph@8d.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: DSI: make OMAP2_DSS_DSI depend on ARCH_OMAP5
Tomi Valkeinen [Wed, 22 Aug 2012 12:55:21 +0000 (15:55 +0300)]
OMAPDSS: DSI: make OMAP2_DSS_DSI depend on ARCH_OMAP5

Change omapdss Kconfig file to make OMAP2_DSS_DSI depend on ARCH_OMAP5.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: DSI: Add code to disable PHY DCC
Tomi Valkeinen [Mon, 24 Sep 2012 12:15:57 +0000 (15:15 +0300)]
OMAPDSS: DSI: Add code to disable PHY DCC

OMAP5 DSI PHY has DCC (Duty Cycle Corrector) block, and by default DCC
is enabled and thus the PLL clock is divided by 2 to get the DSI DDR
clk. This divider has been 4 for all previous OMAPs, and changing it
needs some reorganization of the code. The DCC can be disabled, and in
that case the divider is back to the old 4.

This patch adds dss feature for the DCC, and adds code to always disable
the DCC.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: DSI: Add new linebuffer size for OMAP5
Tomi Valkeinen [Wed, 22 Aug 2012 13:00:47 +0000 (16:00 +0300)]
OMAPDSS: DSI: Add new linebuffer size for OMAP5

OMAP5's DSI has a larger line buffer than earlier OMAPs. This patch adds
support for this to the DSI driver.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: DSI: Add FEAT_DSI_PLL_REFSEL
Tomi Valkeinen [Wed, 22 Aug 2012 13:00:40 +0000 (16:00 +0300)]
OMAPDSS: DSI: Add FEAT_DSI_PLL_REFSEL

Add FEAT_DSI_PLL_REFSEL. OMAP5's DSI PLL needs configuration to select
the reference clock to be used. We always use SYSCLK.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: DSI: Add FEAT_DSI_PLL_SELFREQDCO
Tomi Valkeinen [Wed, 22 Aug 2012 13:00:31 +0000 (16:00 +0300)]
OMAPDSS: DSI: Add FEAT_DSI_PLL_SELFREQDCO

Add FEAT_DSI_PLL_SELFREQDCO. OMAP5's DSI PLL has a new configuration
option that needs to be programmed depending on the PLL's output clock
frequency.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: Add support for DPI source selection
Tomi Valkeinen [Fri, 21 Sep 2012 09:09:54 +0000 (12:09 +0300)]
OMAPDSS: Add support for DPI source selection

We can select the video source for DPI output as follows:

OMAP2/3: always LCD1
OMAP4: LCD2 or DIGIT
OMAP5: LCD1/LCD2/LCD3/DIGIT

This patch adds support to select the source, and makes dpi.c call the
function to set the source.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: David Anders <x0132446@ti.com>
12 years agoOMAPDSS: move dss feats to the end of dss.c
Tomi Valkeinen [Fri, 21 Sep 2012 09:03:31 +0000 (12:03 +0300)]
OMAPDSS: move dss feats to the end of dss.c

Move dss_features to the end of dss.c the same way they are in dispc.c,
so that we don't have to declare prototypes for static feat-related
functions.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: Add basic omap5 features to dss and dispc
Archit Taneja [Sun, 8 Apr 2012 11:17:01 +0000 (16:47 +0530)]
OMAPDSS: Add basic omap5 features to dss and dispc

Add basic omap5 features for dss and dispc.

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: DSI: improve DSI clock calcs for DISPC
Tomi Valkeinen [Mon, 24 Sep 2012 12:15:06 +0000 (15:15 +0300)]
OMAPDSS: DSI: improve DSI clock calcs for DISPC

Commit ee144e645a081daad5de1ccac77f0a0e98e6a67b added
dsi_pll_calc_ddrfreq() which calculates PLL dividers based on given DSI
bus clock speed. The function works ok, but it can be improved for the
DISPC clock calc.

The current version calculates the clock going from the PLL to the DISPC
simply by setting the clock as close to DISPC maximum as possible, and
the pixel clock is calculated based on that.

This patch changes the function to calculate DISPC clock more
dynamically, iterating through different DISPC clocks and pixel clock
values, and thus we'll get more suitable pixel clocks.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agovideo: exynos_mipi_dsi: Remove unnecessary NULL check
Sachin Kamat [Fri, 21 Sep 2012 05:06:47 +0000 (10:36 +0530)]
video: exynos_mipi_dsi: Remove unnecessary NULL check

'dsim' is allocated and checked for NULL in the probe function.
Hence this check is redundant. This cleanup also fixes a potential NULL
pointer dereference error when dsim which is NULL references its member
in the error print message.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Acked-by: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agovideo: exynos_mipi_dsi: Remove unused code
Sachin Kamat [Fri, 21 Sep 2012 05:06:46 +0000 (10:36 +0530)]
video: exynos_mipi_dsi: Remove unused code

This code is never executed and hence removed.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Acked-by: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agovideo: msm: Remove useless mach/* includes
Stephen Boyd [Wed, 19 Sep 2012 07:00:42 +0000 (00:00 -0700)]
video: msm: Remove useless mach/* includes

This driver doesn't need to use these mach includes so remove
them. This is a necessary step to support a single zImage.

Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agodrivers/video/arcfb.c: fix error return code
Peter Senna Tschudin [Tue, 18 Sep 2012 12:08:00 +0000 (14:08 +0200)]
drivers/video/arcfb.c: fix error return code

Convert a nonnegative error return code to a negative one, as returned
elsewhere in the function.

A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)

// <smpl>
(
if@p1 (\(ret < 0\|ret != 0\))
 { ... return ret; }
|
ret@p1 = 0
)
... when != ret = e1
    when != &ret
*if(...)
{
  ... when != ret = e2
      when forall
 return ret;
}
// </smpl>

Signed-off-by: Peter Senna Tschudin <peter.senna@gmail.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agodrivers/video/ps3fb.c: fix error return code
Peter Senna Tschudin [Tue, 18 Sep 2012 12:07:59 +0000 (14:07 +0200)]
drivers/video/ps3fb.c: fix error return code

Convert a nonnegative error return code to a negative one, as returned
elsewhere in the function.

A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)

// <smpl>
(
if@p1 (\(ret < 0\|ret != 0\))
 { ... return ret; }
|
ret@p1 = 0
)
... when != ret = e1
    when != &ret
*if(...)
{
  ... when != ret = e2
      when forall
 return ret;
}
// </smpl>

Signed-off-by: Peter Senna Tschudin <peter.senna@gmail.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agodrivers/video/cyber2000fb.c: fix error return code
Peter Senna Tschudin [Tue, 18 Sep 2012 12:07:58 +0000 (14:07 +0200)]
drivers/video/cyber2000fb.c: fix error return code

Convert a nonnegative error return code to a negative one, as returned
elsewhere in the function.

A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)

// <smpl>
(
if@p1 (\(ret < 0\|ret != 0\))
 { ... return ret; }
|
ret@p1 = 0
)
... when != ret = e1
    when != &ret
*if(...)
{
  ... when != ret = e2
      when forall
 return ret;
}
// </smpl>

Signed-off-by: Peter Senna Tschudin <peter.senna@gmail.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agodrivers/video/bw2.c: fix error return code
Peter Senna Tschudin [Tue, 18 Sep 2012 12:07:57 +0000 (14:07 +0200)]
drivers/video/bw2.c: fix error return code

Convert a nonnegative error return code to a negative one, as returned
elsewhere in the function.

A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)

// <smpl>
(
if@p1 (\(ret < 0\|ret != 0\))
 { ... return ret; }
|
ret@p1 = 0
)
... when != ret = e1
    when != &ret
*if(...)
{
  ... when != ret = e2
      when forall
 return ret;
}
// </smpl>

Signed-off-by: Peter Senna Tschudin <peter.senna@gmail.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agodrivers/video/imxfb.c: fix error return code
Peter Senna Tschudin [Tue, 18 Sep 2012 12:07:56 +0000 (14:07 +0200)]
drivers/video/imxfb.c: fix error return code

Convert a nonnegative error return code to a negative one, as returned
elsewhere in the function.

A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)

// <smpl>
(
if@p1 (\(ret < 0\|ret != 0\))
 { ... return ret; }
|
ret@p1 = 0
)
... when != ret = e1
    when != &ret
*if(...)
{
  ... when != ret = e2
      when forall
 return ret;
}
// </smpl>

Signed-off-by: Peter Senna Tschudin <peter.senna@gmail.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agodrivers/video/atmel_lcdfb.c: fix error return code
Peter Senna Tschudin [Tue, 18 Sep 2012 12:07:55 +0000 (14:07 +0200)]
drivers/video/atmel_lcdfb.c: fix error return code

Convert a nonnegative error return code to a negative one, as returned
elsewhere in the function.

A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)

// <smpl>
(
if@p1 (\(ret < 0\|ret != 0\))
 { ... return ret; }
|
ret@p1 = 0
)
... when != ret = e1
    when != &ret
*if(...)
{
  ... when != ret = e2
      when forall
 return ret;
}
// </smpl>

Signed-off-by: Peter Senna Tschudin <peter.senna@gmail.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agodrivers/video/sunxvr500.c: fix error return code
Peter Senna Tschudin [Tue, 18 Sep 2012 12:07:54 +0000 (14:07 +0200)]
drivers/video/sunxvr500.c: fix error return code

Convert a nonnegative error return code to a negative one, as returned
elsewhere in the function.

A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)

// <smpl>
(
if@p1 (\(ret < 0\|ret != 0\))
 { ... return ret; }
|
ret@p1 = 0
)
... when != ret = e1
    when != &ret
*if(...)
{
  ... when != ret = e2
      when forall
 return ret;
}
// </smpl>

Signed-off-by: Peter Senna Tschudin <peter.senna@gmail.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agodrivers/video/cg3.c: fix error return code
Peter Senna Tschudin [Tue, 18 Sep 2012 12:07:53 +0000 (14:07 +0200)]
drivers/video/cg3.c: fix error return code

Convert a nonnegative error return code to a negative one, as returned
elsewhere in the function.

A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)

// <smpl>
(
if@p1 (\(ret < 0\|ret != 0\))
 { ... return ret; }
|
ret@p1 = 0
)
... when != ret = e1
    when != &ret
*if(...)
{
  ... when != ret = e2
      when forall
 return ret;
}
// </smpl>

Signed-off-by: Peter Senna Tschudin <peter.senna@gmail.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agodrivers/video/sunxvr1000.c: fix error return code
Peter Senna Tschudin [Tue, 18 Sep 2012 12:07:52 +0000 (14:07 +0200)]
drivers/video/sunxvr1000.c: fix error return code

Convert a nonnegative error return code to a negative one, as returned
elsewhere in the function.

A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)

// <smpl>
(
if@p1 (\(ret < 0\|ret != 0\))
 { ... return ret; }
|
ret@p1 = 0
)
... when != ret = e1
    when != &ret
*if(...)
{
  ... when != ret = e2
      when forall
 return ret;
}
// </smpl>

Signed-off-by: Peter Senna Tschudin <peter.senna@gmail.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agodrivers/video/mb862xx/mb862xxfbdrv.c: fix error return code
Peter Senna Tschudin [Tue, 18 Sep 2012 12:07:51 +0000 (14:07 +0200)]
drivers/video/mb862xx/mb862xxfbdrv.c: fix error return code

Convert a nonnegative error return code to a negative one, as returned
elsewhere in the function.

A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)

// <smpl>
(
if@p1 (\(ret < 0\|ret != 0\))
 { ... return ret; }
|
ret@p1 = 0
)
... when != ret = e1
    when != &ret
*if(...)
{
  ... when != ret = e2
      when forall
 return ret;
}
// </smpl>

Signed-off-by: Peter Senna Tschudin <peter.senna@gmail.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agovideo: exynos_dp: increase AUX channel voltage level
Jingoo Han [Wed, 12 Sep 2012 07:52:09 +0000 (16:52 +0900)]
video: exynos_dp: increase AUX channel voltage level

The value of AUX channel differential amplitude current is changed
from 8 mA to 16 mA, in order to increase AUX channel voltage level.
In this case, AUX channel voltage level can be changed from 400 mV
to 800 mV, when resistance between AUX TX and RX is 100 ohm.

According to DP spec, although the normative voltage level is 390 mV,
the informative voltage level is 430 mV. So, 800 mV can be helpful
to improve voltage margin of AUX channel.

Signed-off-by: Jingoo Han <jg1.han@samsung.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agovideo: exynos_dp: add bit-masking for LINK_TRAINING_CTL register
Jingoo Han [Wed, 12 Sep 2012 04:34:24 +0000 (13:34 +0900)]
video: exynos_dp: add bit-masking for LINK_TRAINING_CTL register

This patch adds bit-masking for LINK_TRAINING_CTL register, when
pre-emphasis level is set. The bit 3 and bit 2 of LINK_TRAINING_CTL
register are used for pre-emphasis level setting, so other bits
should be masked.

Signed-off-by: Jingoo Han <jg1.han@samsung.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agovideo: s3c2410: fix checkpatch warnings
Jingoo Han [Mon, 10 Sep 2012 10:55:12 +0000 (19:55 +0900)]
video: s3c2410: fix checkpatch warnings

This patch fixes the checkpatch warnings listed below:

WARNING: usleep_range should not use min == max args; see Documentation/timers/timers-howto.txt
WARNING: quoted string split across lines

Signed-off-by: Jingoo Han <jg1.han@samsung.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agovideo: s3c2410: Use pr_* and dev_* instead of printk
Sachin Kamat [Mon, 10 Sep 2012 10:54:21 +0000 (19:54 +0900)]
video: s3c2410: Use pr_* and dev_* instead of printk

printk calls are replaced by pr_* and dev_* calls to silence
checkpatch warnings.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agofbdev: jz4740: Use devm_request_and_ioremap
Lars-Peter Clausen [Sun, 9 Sep 2012 15:38:41 +0000 (17:38 +0200)]
fbdev: jz4740: Use devm_request_and_ioremap

Use devm_request_and_ioremap instead of request_mem_region + devm_ioremap.

This also fixes the following compile error introduced in commit b2ca7f4d
("drivers/video/jz4740_fb.c: use devm_ functions"):

drivers/video/jz4740_fb.c: In function 'jzfb_probe':
drivers/video/jz4740_fb.c:676:2: error: implicit declaration of function 'devm_ioremap'
drivers/video/jz4740_fb.c:676:13: warning: assignment makes pointer from integer without a cast

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agodrivers/video/sis/initextlfb.c: removes unnecessary semicolon
Peter Senna Tschudin [Thu, 6 Sep 2012 16:09:15 +0000 (18:09 +0200)]
drivers/video/sis/initextlfb.c: removes unnecessary semicolon

removes unnecessary semicolon

Found by Coccinelle: http://coccinelle.lip6.fr/

Signed-off-by: Peter Senna Tschudin <peter.senna@gmail.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agovideo: bf*: Add missing spinlock init
Jean Delvare [Thu, 6 Sep 2012 07:23:11 +0000 (09:23 +0200)]
video: bf*: Add missing spinlock init

It doesn't seem these spinlocks were properly initialized.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agovmlfb: use list_move_tail instead of list_del/list_add_tail
Wei Yongjun [Wed, 5 Sep 2012 06:40:43 +0000 (14:40 +0800)]
vmlfb: use list_move_tail instead of list_del/list_add_tail

Using list_move_tail() instead of list_del() + list_add_tail().

spatch with a semantic match is used to found this problem.
(http://coccinelle.lip6.fr/)

Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agoviafb: don't touch clock state on OLPC XO-1.5
Daniel Drake [Tue, 4 Sep 2012 15:45:32 +0000 (11:45 -0400)]
viafb: don't touch clock state on OLPC XO-1.5

As detailed in the thread titled "viafb PLL/clock tweaking causes XO-1.5
instability," enabling or disabling the IGA1/IGA2 clocks causes occasional
stability problems during suspend/resume cycles on this platform.

This is rather odd, as the documentation suggests that clocks have two
states (on/off) and the default (stable) configuration is configured to
enable the clock only when it is needed. However, explicitly enabling *or*
disabling the clock triggers this system instability, suggesting that there
is a 3rd state at play here.

Leaving the clock enable/disable registers alone solves this problem.
This fixes spurious reboots during suspend/resume behaviour introduced by
commit b692a63a.

Signed-off-by: Daniel Drake <dsd@laptop.org>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
Cc: stable@vger.kernel.org
12 years agovideo: exynos_dp: replace link_status with link_align to check channel equalization
Jingoo Han [Mon, 3 Sep 2012 08:50:24 +0000 (17:50 +0900)]
video: exynos_dp: replace link_status with link_align to check channel equalization

To check channel equalization, the value of LANE_ALIGN_STATUS_UPDATED is
necessary in exynos_dp_channel_eq_ok(). Also, link_align includes this value.
However, link_status does not include this value, so it makes the problem
that channel equalization is failed during link training.

Signed-off-by: Jingoo Han <jg1.han@samsung.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agoda8xx-fb: enable LCDC if FB is unblanked
Manjunathappa, Prakash [Fri, 31 Aug 2012 14:18:59 +0000 (19:48 +0530)]
da8xx-fb: enable LCDC if FB is unblanked

It is expected that LCDC to continue to be disabled after
resume if it is blanked before suspend. This is also true
for DVFS. But it is observed that LCDC being enabled after
suspend/resume cycle or DVFS.

Correcting it by having check for FB_BLANK_UNBLANK before
enabling.

Signed-off-by: Manjunathappa, Prakash <prakash.pm@ti.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agovideo: mbxfb: Include linux/io.h instead of asm/io.h
Axel Lin [Fri, 31 Aug 2012 13:39:03 +0000 (21:39 +0800)]
video: mbxfb: Include linux/io.h instead of asm/io.h

This fixes below build error:

  CC [M]  drivers/video/mbx/mbxfb.o
drivers/video/mbx/mbxfb.c: In function 'mbxfb_probe':
drivers/video/mbx/mbxfb.c:942:2: error: implicit declaration of function 'devm_ioremap_nocache' [-Werror=implicit-function-declaration]
drivers/video/mbx/mbxfb.c:942:22: warning: assignment makes pointer from integer without a cast [enabled by default]
drivers/video/mbx/mbxfb.c:952:21: warning: assignment makes pointer from integer without a cast [enabled by default]
cc1: some warnings being treated as errors

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agovideo: Remove pnx4008 driver
Roland Stigge [Sun, 26 Aug 2012 14:23:21 +0000 (16:23 +0200)]
video: Remove pnx4008 driver

This patch removes the video driver for pnx4008. The architecture is being
removed via the arm-soc tree.

Signed-off-by: Roland Stigge <stigge@antcom.de>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agoda8xx-fb: allow frame to complete after disabling LCDC
Manjunathappa, Prakash [Fri, 24 Aug 2012 13:13:00 +0000 (18:43 +0530)]
da8xx-fb: allow frame to complete after disabling LCDC

Wait for active frame transfer to complete after disabling LCDC.
At the same this wait is not be required when there are sync and
underflow errors.
Patch applies for revision 2 of LCDC present am335x.
More information on disable and reset sequence can be found in
section 13.4.6 of AM335x TRM @www.ti.com/am335x.

Signed-off-by: Manjunathappa, Prakash <prakash.pm@ti.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agovideo: bfin-lq035q1: use module_platform_driver
Devendra Naga [Thu, 23 Aug 2012 21:55:22 +0000 (03:25 +0530)]
video: bfin-lq035q1: use module_platform_driver

the driver's module init and exit functions are calling
platform_driver_register and platform_driver_unregister and doing nothing
else.

This same as that of the module_platform_driver,
remove this init and exit functions and use the module_platform_driver instead

Signed-off-by: Devendra Naga <develkernel412222@gmail.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agovideo: hpfb: Fix error handling
Emil Goode [Mon, 20 Aug 2012 18:32:25 +0000 (20:32 +0200)]
video: hpfb: Fix error handling

This patch solves problems with the error handling by
introducing labels for proper error paths and it also
frees resources that where missed.

Signed-off-by: Emil Goode <emilgoode@gmail.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agodrivers: console: font_: Change a glyph from "broken bar" to "vertical line"
Bjarni Ingi Gislason [Sun, 12 Aug 2012 15:05:10 +0000 (15:05 +0000)]
drivers: console: font_: Change a glyph from "broken bar" to "vertical line"

  The code 124 (0x7C, |) is rendered as a broken line in two
fonts, instead of a continuous line.  Some keyboards show a
"broken bar" on one of theirs keys, other show a (continuous)
"vertical line".

Signed-off-by: Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
12 years agoMerge branch 'v3.7-for-florian' of git://git.kernel.org/pub/scm/linux/kernel/git...
Florian Tobias Schandinat [Thu, 20 Sep 2012 13:57:47 +0000 (13:57 +0000)]
Merge branch 'v3.7-for-florian' of git://git./linux/kernel/git/kgene/linux-samsung into fbdev-next

12 years agoOMAPDSS: alloc dssdevs dynamically
Tomi Valkeinen [Mon, 10 Sep 2012 10:58:29 +0000 (13:58 +0300)]
OMAPDSS: alloc dssdevs dynamically

We currently create omap_dss_devices statically in board files, and use
those devices directly in the omapdss driver. This model prevents us
from having the platform data (which the dssdevs in board files
practically are) as read-only, and it's also different than what we will
use with device tree.

This patch changes the model to be in line with DT model: we allocate
the dssdevs dynamically, and initialize them according to the data in
the board file's dssdev (basically we memcopy the dssdev fields).

The allocation and registration is done in the following steps in the
output drivers:

- Use dss_alloc_and_init_device to allocate and initialize the device.
  The function uses kalloc and device_initialize to accomplish this.
- Call dss_copy_device_pdata to copy the data from the board file's
  dssdev
- Use dss_add_device to register the device.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>