GitHub/mt8127/android_kernel_alcatel_ttab.git
12 years agoOMAPDSS: remove compiler warnings when CONFIG_BUG=n
Tomi Valkeinen [Fri, 18 May 2012 08:47:02 +0000 (11:47 +0300)]
OMAPDSS: remove compiler warnings when CONFIG_BUG=n

If CONFIG_BUG is not enabled, BUG() does not stop the execution. Many
places in code expect the execution to stop, and this causes compiler
warnings about uninitialized variables and returning from a non-void
function without a return value.

This patch fixes the warnings by initializing the variables and
returning properly after BUG() lines. However, the behaviour is still
undefined after the BUG, but this is the choice the user makes when
using CONFIG_BUG=n.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: DISPC: fix usage of dispc_ovl_set_accu_uv
Tomi Valkeinen [Tue, 15 May 2012 12:54:15 +0000 (15:54 +0300)]
OMAPDSS: DISPC: fix usage of dispc_ovl_set_accu_uv

Commit 05dd0f5308213e169b02458a7f3a61362e581e14 ("OMAPDSS: DISPC: Update
Accumulator configuration for chroma plane") adds
dispc_ovl_set_accu_uv() function that sets the accu, but the function
only handles YUV and NV12 modes, and BUGs otherwise.

The patch also adds a call to the function, but unfortunately the place
of call was such that the mode could be other than YUV or NV12, thus
crashing the driver.

This patchs moves the call to a slightly later spot, at which point only
YUV and NV12 modes are handled.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: Chandrabhanu Mahapatra <cmahapatra@ti.com>
12 years agoOMAPDSS: use DSI_FIFO_BUG workaround only for manual update displays
Tomi Valkeinen [Tue, 15 May 2012 12:31:01 +0000 (15:31 +0300)]
OMAPDSS: use DSI_FIFO_BUG workaround only for manual update displays

There is a problem related to DSS FIFO thresholds and power management
on OMAP3. It seems that when the full PM hits in, we get underflows. The
core reason is unknown, but after experiments it looks like only
particular FIFO thresholds work correctly.

This bug is related to an earlier patch, which added special FIFO
threshold configuration for OMAP3, because DSI command mode output
didn't work with the normal threshold configuration.

However, as the above work-around worked fine for other output types
also, we currently always configure thresholds in this special way on
OMAP3. In theory there should be negligible difference with this special
way and the standard way. The first paragraph explains what happens in
practice.

This patch changes the driver to use the special threshold configuration
only when the output is a manual update display on OMAP3. This does
include RFBI displays also, and although it hasn't been tested (no
boards using RFBI) I suspect the similar behaviour is present there
also, as the DISPC side should work similarly for DSI command mode and
RFBI.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: Joe Woodward <jw@terrafix.co.uk>
12 years agoOMAPDSS: DSI: Support command mode interleaving during video mode blanking periods
Archit Taneja [Tue, 15 May 2012 06:02:18 +0000 (11:32 +0530)]
OMAPDSS: DSI: Support command mode interleaving during video mode blanking periods

DSI supports interleaving of command mode packets during the HSA, HFP, HBP and
BLLP blanking intervals in a video mode stream. This is useful as a user may
want to read or change the configuration of a panel without stopping the video
stream.

On OMAP DSI, we can queue HS or LP command mode packets in the TX FIFO, and
the DSI HW takes care of interleaving this data during the one of the blanking
intervals. The DSI HW needs to be programmed with the maximum amount of data
that can be interleaved in a particular blanking period. A blanking period
cannot be used to send command mode data for it's complete duration, there is
some amount of time required for the DSI data and clock lanes to transition
to the desired LP or HS state.

Based on the state of the lanes at the beginning and end of the blanking period,
we have different scenarios, with each scenario having a different value of time
required to transition to HS or LP. Refer to the section 'Interleaving Mode' in
OMAP TRM for more info on the scenarios and the equations to calculate the time
required for HS or LP transitions.

We use the scenarios which takes the maximum time for HS or LP transition, this
gives us the minimum amount of time that can be used to interleave command mode
data. The amount of data that can be sent during this minimum time is calculated
for command mode packets both in LP and HS. These are written to the registers
DSI_VM_TIMING4 to DSI_VM_TIMING6.

The calculations don't take into account the time required of transmitting BTA
when doing a DSI read, or verifying if a DSI write went through correctly. Until
these latencies aren't considered, the behaviour of DSI is unpredictable when
a BTA is interleaved during a blanking period. Enhancement of these calculations
is a TODO item.

The calculations are derived from DSI parameter calculation tools written by
Sebastien Fagard <s-fagard@ti.com>

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: DISPC: Update Accumulator configuration for chroma plane
Chandrabhanu Mahapatra [Tue, 15 May 2012 06:52:34 +0000 (12:22 +0530)]
OMAPDSS: DISPC: Update Accumulator configuration for chroma plane

DISPC has two accumulator registers DISPC_VIDp_ACCU_0 and DISPC_VIDp_ACCU_1 each
with horizontal and vertical bit fields. The bit fields can take values in the
range of -1024 to 1023. Based on bit field values DISPC decides on which one out
of 8 phases the filtering starts. DISPC_VIDp_ACCU_0 is used for progressive
output and for interlaced output both DISPC_VIDp_ACCU_0 and DISPC_VIDp_ACCU_1
are used.

The current accumulator values in DISPC scaling logic for chroma plane takes
default values for all color modes and rotation types. So, the horizontal and
vertical up and downsampling accumulator bit field values have been updated for
better performance.

Signed-off-by: Chandrabhanu Mahapatra <cmahapatra@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoMerge branch 'omapdss-hdmi-audio'
Tomi Valkeinen [Fri, 11 May 2012 12:38:23 +0000 (15:38 +0300)]
Merge branch 'omapdss-hdmi-audio'

Merge OMAP DSS HDMI audio patches from Ricardo Neri

12 years agoOMAPDSS: HDMI: Implement DSS driver interface for audio
Ricardo Neri [Thu, 10 May 2012 02:09:50 +0000 (21:09 -0500)]
OMAPDSS: HDMI: Implement DSS driver interface for audio

Implement the DSS device driver audio support interface in the HDMI
panel driver and generic driver. The implementation relies on the
IP-specific functions that are defined at DSS probe time.

A mixed locking strategy is used. The panel's mutex is used when
the state of the panel is queried as required by the audio functions.
The audio state is protected using a spinlock as users of DSS HDMI
audio functionality might start/stop audio while holding a spinlock.
The mutex and the spinlock are held and released as needed by each
individual function to protect the panel state and the audio state.

Although the panel's audio_start functions does not check whether
the panel is active, the audio _ENABLED state can be reached only
from audio_enable, which does check the state of the panel. Also,
if the panel is ever disabled, the audio state will transition
to _DISABLED. Transitions are always protected by the audio lock.

Signed-off-by: Ricardo Neri <ricardo.neri@ti.com>
12 years agoOMAPDSS: HDMI: Panel: Simplify the name of the HDMI mutex
Ricardo Neri [Thu, 26 Apr 2012 00:29:06 +0000 (19:29 -0500)]
OMAPDSS: HDMI: Panel: Simplify the name of the HDMI mutex

As the hdmi_lock mutex is inside the hdmi struct, rename to simply
"lock". This is only a change in the name. There are not changes
in functionality.

Signed-off-by: Ricardo Neri <ricardo.neri@ti.com>
12 years agoOMAPDSS: HDMI: OMAP4: Remap speaker order to match ALSA order
Ricardo Neri [Thu, 3 May 2012 17:27:12 +0000 (12:27 -0500)]
OMAPDSS: HDMI: OMAP4: Remap speaker order to match ALSA order

As of today, the only know user of the DSS HDMI audio support is
ASoC. Hence, it makes sense to remap the speaker order to match
the ALSA speaker order. In the future, a dynamic mapping mechanism
may be implemented.

Remapping is needed as the HDMI speaker order is FL/FR/LFE/C/RL/RR/
RLC-FLC/RRC-FLC while the ALSA order is FL/FR/RL/RR/C/LFE/SL/SR.
Refer to CEA-861 Section 6.6.2 for further details.

Signed-off-by: Ricardo Neri <ricardo.neri@ti.com>
12 years agoOMAPDSS: HDMI: Add an audio configuration function
Ricardo Neri [Wed, 21 Mar 2012 18:38:15 +0000 (12:38 -0600)]
OMAPDSS: HDMI: Add an audio configuration function

The generic HDMI driver does not need to know about the specific
settings of a given IP. Hence, it just passes the audio configuration
and the IP library parses such configuration and sets the IP
accordingly. This patch introduces an IP-specific audio configuration
function.

Also, this patch implements the audio config function for OMAP4. The
DMA, format and core config functions are no longer exposed to the
generic HDMI driver as they are IP-specific.

The audio configuration function caters for 16-bit through 24-bit
audio samples with sample rates from 32kHz and up to 192kHz as well
as up to 8 audio channels.

Signed-off-by: Ricardo Neri <ricardo.neri@ti.com>
12 years agoOMAPDSS: HDMI: Add support for more audio sample rates in N/CTS calculation
Ricardo Neri [Fri, 23 Mar 2012 21:49:02 +0000 (15:49 -0600)]
OMAPDSS: HDMI: Add support for more audio sample rates in N/CTS calculation

Add support for more sample rates when calculating N and CTS. This
covers all the audio sample rates that an HDMI source is allowed
to transmit according to the HDMI 1.4a specification.

Also, reorganize the logic for the calculation when using deep color.

Signed-off-by: Ricardo Neri <ricardo.neri@ti.com>
12 years agoOMAPDSS: HDMI: Relocate N/CTS calculation
Ricardo Neri [Wed, 21 Mar 2012 03:02:01 +0000 (21:02 -0600)]
OMAPDSS: HDMI: Relocate N/CTS calculation

The N and CTS parameters are relevant to all HDMI implementations and
not specific to a given IP. Hence, the calculation is relocated
into the generic HDMI driver.

Also, deep color is not queried but it is still considered in the
calculation of N. This is to be changed when deep color functionality is
implemented in the driver.

Signed-off-by: Ricardo Neri <ricardo.neri@ti.com>
12 years agoOMAPDSS: HDMI: OMAP4: Expand configuration for IEC-60958 audio
Ricardo Neri [Mon, 19 Mar 2012 18:27:41 +0000 (12:27 -0600)]
OMAPDSS: HDMI: OMAP4: Expand configuration for IEC-60958 audio

Utilize a snd_aes_iec958 struct to write the parameters of the IEC-60958
channel status word into the HDMI IP registers. Hence, the user of the
driver has full control of what parameters are written in the word.

Also, some of the parameters of the I2S structure have been removed
as they are actually IEC-60958 parameters.

Signed-off-by: Ricardo Neri <ricardo.neri@ti.com>
12 years agoOMAPDSS: HDMI: Decouple HDMI audio from ASoC
Ricardo Neri [Thu, 15 Mar 2012 20:08:03 +0000 (14:08 -0600)]
OMAPDSS: HDMI: Decouple HDMI audio from ASoC

Instead of having OMAPDSS HDMI audio functionality depending on the
ASoC HDMI audio driver, use a new config option so that
potential users, including ASoC, may select if needed.

Signed-off-by: Ricardo Neri <ricardo.neri@ti.com>
12 years agoOMAPDSS: HDMI: Decouple wrapper enable/disable and audio start/stop
Axel Castaneda Gonzalez [Thu, 3 May 2012 14:00:21 +0000 (09:00 -0500)]
OMAPDSS: HDMI: Decouple wrapper enable/disable and audio start/stop

Decouple the enable/disable operation of the HDMI audio wrapper from
audio start/stop. Otherwise, an audio FIFO underflow may occur. The
audio wrapper enablement must be done after configuration and
before audio playback is started.

Signed-off-by: Axel Castaneda Gonzalez <x0055901@ti.com>
Signed-off-by: Ricardo Neri <ricardo.neri@ti.com>
12 years agoOMAPDSS: HDMI: OMAP4: Remove invalid I2S settings
Ricardo Neri [Mon, 19 Mar 2012 15:30:21 +0000 (09:30 -0600)]
OMAPDSS: HDMI: OMAP4: Remove invalid I2S settings

According to the most up-to-date documentation from Texas Instruments,
the configuration of High Bitrate Audio is not possible. Also, it is
not possible to set polarity of the I2S Word Select signal. This patch
removes the invalid settings.

Signed-off-by: Ricardo Neri <ricardo.neri@ti.com>
12 years agoOMAPDSS: HDMI: OMAP4: Remove CEA-861 audio infoframe and IEC-60958 enums
Ricardo Neri [Thu, 15 Mar 2012 16:39:00 +0000 (10:39 -0600)]
OMAPDSS: HDMI: OMAP4: Remove CEA-861 audio infoframe and IEC-60958 enums

Instead of having its own definitions for CEA-861 and IEC-60958, the HDMI
driver should use those provided by ALSA. This patch removes the definitions
that are already provided by ALSA.

Signed-off-by: Ricardo Neri <ricardo.neri@ti.com>
12 years agoOMAPDSS: HDMI: Remove ASoC codec
Ricardo Neri [Thu, 15 Mar 2012 18:58:51 +0000 (12:58 -0600)]
OMAPDSS: HDMI: Remove ASoC codec

Remove the ASoC OMAP HDMI audio codec. The goal of removing the codec
is to, in subsequent patches, give way to the implementation of the HDMI
audio support using the DSS device driver audio interface. This
approach will expose the HDMI audio functionality to any interested entity.

In a separate patch, ASoC will use this new approach to expose HDMI audio
to ALSA.

Signed-off-by: Ricardo Neri <ricardo.neri@ti.com>
12 years agoOMAPDSS: HDMI: Split video_enable into video_enable/disable
Ricardo Neri [Fri, 27 Apr 2012 18:48:45 +0000 (13:48 -0500)]
OMAPDSS: HDMI: Split video_enable into video_enable/disable

To improve readability, split the video_enable HDMI IP operation
into two separate functions for enabling and disabling video.
The video_enable function is also modified to return an error value.

While there, update these operations for the OMAP4 IP accordingly.

Signed-off-by: Ricardo Neri <ricardo.neri@ti.com>
12 years agoOMAPDSS: HDMI: Split audio_enable into audio_enable/disable
Ricardo Neri [Fri, 20 Apr 2012 22:17:46 +0000 (17:17 -0500)]
OMAPDSS: HDMI: Split audio_enable into audio_enable/disable

To improve readability, split the audio_enable HDMI IP operation
into two separate functions for enabling and disabling audio.
The audio_enable function is also modified to return an error value.

While there, update these operations for the OMAP4 IP accordingly.

Signed-off-by: Ricardo Neri <ricardo.neri@ti.com>
12 years agoOMAPDSS: Provide an interface for audio support
Ricardo Neri [Wed, 7 Mar 2012 00:20:37 +0000 (18:20 -0600)]
OMAPDSS: Provide an interface for audio support

There exist several display technologies and standards that support audio as
well. Hence, it is relevant to update the DSS device driver to provide an audio
interface that may be used by an audio driver or any other driver interested in
the functionality.

The audio_enable function is intended to prepare the relevant
IP for playback (e.g., enabling an audio FIFO, taking in/out of reset
some IP, enabling companion chips, etc). It is intended to be called before
audio_start. The audio_disable function performs the reverse operation and is
intended to be called after audio_stop.

While a given DSS device driver may support audio, it is possible that for
certain configurations audio is not supported (e.g., an HDMI display using a
VESA video timing). The audio_supported function is intended to query whether
the current configuration of the display supports audio.

The audio_config function is intended to configure all the relevant audio
parameters of the display. In order to make the function independent of any
specific DSS device driver, a struct omap_dss_audio is defined. Its purpose
is to contain all the required parameters for audio configuration. At the
moment, such structure contains pointers to IEC-60958 channel status word and
CEA-861 audio infoframe structures. This should be enough to support HDMI and
DisplayPort, as both are based on CEA-861 and IEC-60958. The omap_dss_audio
structure may be extended in the future if required.

The audio_enable/disable, audio_config and audio_supported functions could be
implemented as functions that may sleep. Hence, they should not be called
while holding a spinlock or a readlock.

The audio_start/audio_stop function is intended to effectively start/stop audio
playback after the configuration has taken place. These functions are designed
to be used in an atomic context. Hence, audio_start should return quickly and be
called only after all the needed resources for audio playback (audio FIFOs,
DMA channels, companion chips, etc) have been enabled to begin data transfers.
audio_stop is designed to only stop the audio transfers. The resources used
for playback are released using audio_disable.

A new enum omap_dss_audio_state is introduced to help the implementations of
the interface to keep track of the audio state. The initial state is _DISABLED;
then, the state transitions to _CONFIGURED, and then, when it is ready to
play audio, to _ENABLED. The state _PLAYING is used when the audio is being
rendered.

Signed-off-by: Ricardo Neri <ricardo.neri@ti.com>
12 years agoMerge branch 'dss-devtree-cleanup'
Tomi Valkeinen [Fri, 11 May 2012 12:10:10 +0000 (15:10 +0300)]
Merge branch 'dss-devtree-cleanup'

Merge OMAP DSS cleanups that restructure the omapdss driver to facilitate
implementing device tree support in the future.

12 years agoOMAPDSS: TFP410: use gpio_set_value_cansleep
Russ Dill [Wed, 9 May 2012 22:08:08 +0000 (15:08 -0700)]
OMAPDSS: TFP410: use gpio_set_value_cansleep

The Beagleboard xM gpio used for TFP410 powerdown is connected through
an I2C attached chip which means setting the GPIO can sleep. Code that
calls tfp410_power_on/off holds a mutex, so sleeping should be fine.

Signed-off-by: Russ Dill <Russ.Dill@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: separate pdata based initialization
Tomi Valkeinen [Wed, 2 May 2012 11:55:12 +0000 (14:55 +0300)]
OMAPDSS: separate pdata based initialization

Move the platform-data based display device initialization into a
separate function, so that we may later add of-based initialization.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: DSI: improve DSI module id handling
Tomi Valkeinen [Fri, 9 Mar 2012 14:07:39 +0000 (16:07 +0200)]
OMAPDSS: DSI: improve DSI module id handling

We currently use the id of the dsi platform device (dsidev->id) as the
DSI hardware module ID. This works because we assign the ID manually in
arch/arm/mach-omap2/display.c at boot time.

However, with device tree the platform device IDs are automatically
assigned to an arbitrary number, and we can't use it.

Instead of using dsidev->id during operation, this patch stores the
value of dsidev->id to a private field of the dsi driver at probe(). The
future device tree code can thus set the private field with some other
way.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: init omap_dss_devices internally
Tomi Valkeinen [Thu, 1 Mar 2012 14:58:39 +0000 (16:58 +0200)]
OMAPDSS: init omap_dss_devices internally

Now that each output driver creates their own display devices, the
output drivers can also initialize those devices.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: interface drivers register their panel devices
Tomi Valkeinen [Thu, 1 Mar 2012 13:45:53 +0000 (15:45 +0200)]
OMAPDSS: interface drivers register their panel devices

Currently the higher level omapdss platform driver gets the list of
displays in its platform data, and uses that list to create the
omap_dss_device for each display.

With DT, the logical way to do the above is to list the displays under
each individual output, i.e. we'd have "dpi" node, under which we would
have the display that uses DPI. In other words, each output driver
handles the displays that use that particular output.

To make the current code ready for DT, this patch modifies the output
drivers so that each of them creates the display devices which use that
output. However, instead of changing the platform data to suit this
method, each output driver is passed the full list of displays, and the
drivers pick the displays that are meant for them. This allows us to
keep the old platform data, and thus we avoid the need to change the
board files.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: change default_device handling
Tomi Valkeinen [Thu, 23 Feb 2012 11:00:51 +0000 (13:00 +0200)]
OMAPDSS: change default_device handling

We currently have a two ways to set a "default panel device" for dss, to
which the overlays are connected when the omapdss driver is loaded:

- in textual format (name of the display) as cmdline parameter
- as a pointer to the panel device from board file via pdata

The current code handles this in a bit too complex way by using both of
the above methods during runtime. However, with DT we don't have pdata
anymore, so the code handling the second case won't work anymore. The
current code has also the problem that it modifies the platform_data.

This patch simplifies the code a bit by using the pointer method only
inside the probe function, and stores the name of the panel device. This
way we only need to handle the textual format during operation and also
avoid modifying the platform_data.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPFB: add __init & __exit
Tomi Valkeinen [Fri, 17 Feb 2012 15:43:03 +0000 (17:43 +0200)]
OMAPFB: add __init & __exit

Change omapfb to use platform_driver_probe and add __init & __exit.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: add __init & __exit
Tomi Valkeinen [Fri, 17 Feb 2012 15:41:13 +0000 (17:41 +0200)]
OMAPDSS: add __init & __exit

Now that we are using platform_driver_probe() we can add __inits and
__exits all around.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: use platform_driver_probe for dsi/hdmi/rfbi/venc/dpi/sdi
Tomi Valkeinen [Wed, 7 Mar 2012 10:53:38 +0000 (12:53 +0200)]
OMAPDSS: use platform_driver_probe for dsi/hdmi/rfbi/venc/dpi/sdi

Now that the core.c doesn't fail if output driver's init fails, we can
change the uses of platform_driver_register to platform_driver_probe.
This will allow us to use __init in the following patches.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: move the creation of debugfs files
Tomi Valkeinen [Fri, 2 Mar 2012 16:01:07 +0000 (18:01 +0200)]
OMAPDSS: move the creation of debugfs files

Instead of having an ugly #ifdef mess in the core.c for creating debugfs
files, add a dss_debugfs_create_file() function that the dss drivers
can use to create the debugfs files.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: handle output-driver reg/unreg more dynamically
Tomi Valkeinen [Fri, 2 Mar 2012 15:37:53 +0000 (17:37 +0200)]
OMAPDSS: handle output-driver reg/unreg more dynamically

Initialize and uninitialize the output drivers by using arrays of
pointers to the init/uninit functions. This simplifies the code
slightly.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: remove uses of dss_runtime_get/put
Tomi Valkeinen [Fri, 17 Feb 2012 15:58:04 +0000 (17:58 +0200)]
OMAPDSS: remove uses of dss_runtime_get/put

Now that the omapdss_core device is the parent for all other dss
devices, we don't need to use the dss_runtime_get/put anymore. Instead,
enabling omapdss_core will happen automatically when a child device is
enabled.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: create DPI & SDI drivers
Tomi Valkeinen [Mon, 20 Feb 2012 14:57:37 +0000 (16:57 +0200)]
OMAPDSS: create DPI & SDI drivers

We currently have separate device/driver for each DSS HW module. The DPI
and SDI outputs are more or less parts of the DSS or DISPC hardware
modules, but in SW it makes sense to represent them as device/driver
pairs similarly to all the other outputs. This also makes sense for
device tree, as each node under dss will be a platform device, and
handling DPI & SDI somehow differently than the rest would just make the
code more complex.

This patch modifies the dpi.c and sdi.c to create drivers for the
platform devices.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: create DPI & SDI devices
Tomi Valkeinen [Wed, 7 Mar 2012 11:09:43 +0000 (13:09 +0200)]
OMAPDSS: create DPI & SDI devices

We currently have separate device/driver for each DSS HW module. The DPI
and SDI outputs are more or less parts of the DSS or DISPC hardware
modules, but in SW it makes sense to represent them as device/driver
pairs similarly to all the other outputs. This also makes sense for
device tree, as each node under dss will be a platform device, and
handling DPI & SDI somehow differently than the rest would just make the
code more complex.

This patch modifies arch/arm/mach-omap2/display.c to create platform
devices for DPI and SDI, and later patches will implement driver for
them.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: create custom pdevs for DSS omap_devices
Tomi Valkeinen [Fri, 17 Feb 2012 15:15:58 +0000 (17:15 +0200)]
OMAPDSS: create custom pdevs for DSS omap_devices

Instead of using omap_device_build() to create the omap_devices for DSS
hwmods, create them with a custom function. This will allow us to create
a parent-child hierarchy for the devices so that the omapdss_core device
is parent for the rest of the dss hwmod devices.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: use platform_driver_probe for core/dispc/dss
Tomi Valkeinen [Wed, 7 Mar 2012 10:53:18 +0000 (12:53 +0200)]
OMAPDSS: use platform_driver_probe for core/dispc/dss

The platform devices for omapdss, dss and dispc drivers are always
present, so we can use platform_driver_probe instead of
platform_driver_register.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: remove return from platform_driver_unreg
Tomi Valkeinen [Thu, 23 Feb 2012 13:32:37 +0000 (15:32 +0200)]
OMAPDSS: remove return from platform_driver_unreg

For unknown reasons we seem to have a return in each of the omapdss's
uninit functions, which is a void function.

Remove the returns.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: clean up the omapdss platform data mess
Tomi Valkeinen [Mon, 20 Feb 2012 09:50:06 +0000 (11:50 +0200)]
OMAPDSS: clean up the omapdss platform data mess

The omapdss pdata handling is a mess. This is more evident when trying
to use device tree for DSS, as we don't have platform data anymore in
that case. This patch cleans the pdata handling by:

- Remove struct omap_display_platform_data. It was used just as a
  wrapper for struct omap_dss_board_info.
- Pass the platform data only to omapdss device. The drivers for omap
  dss hwmods do not need the platform data. This should also work better
  for DT, as we can create omapdss device programmatically in generic omap
  boot code, and thus we can pass the pdata to it.
- Create dss functions for get_ctx_loss_count and dsi_enable/disable_pads
  that the dss hwmod drivers can call.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: DSI: use dsi_get_dsidev_id(dsidev) instead of dsidev->id
Tomi Valkeinen [Tue, 10 Jan 2012 09:26:52 +0000 (11:26 +0200)]
OMAPDSS: DSI: use dsi_get_dsidev_id(dsidev) instead of dsidev->id

The DSI driver uses dsi_get_dsidev_id() to get the ID number for the DSI
instance. However, there were a few places where dsidev->id was used
instead of the function. Fix those places to use the function.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: TFP410: pdata rewrite
Tomi Valkeinen [Fri, 17 Feb 2012 10:19:48 +0000 (12:19 +0200)]
OMAPDSS: TFP410: pdata rewrite

To ease device tree adaptation in the future, rewrite TFP410 platform
data handling to be done inside probe(), so that probe() is the only
place where we need to handle the DT/pdata choice.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPFB: fix parsing of vram parameter
Tomi Valkeinen [Thu, 10 May 2012 08:15:14 +0000 (11:15 +0300)]
OMAPFB: fix parsing of vram parameter

omapfb_parse_vram_param()'s check for end pointer returned from
simple_strtoul() is wrong, causing the code to bug if the second or
later vram parameters are non-parseable, for example
"omapfb.vram=0:2M,:5M".

However, even in that case the code will most likely bail out with
-EINVAL in the following checks, so the bug is probably not a fatal one.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Reported-by: Hein Tibosch <hein_tibosch@yahoo.es>
12 years agoOMAPDSS: OMAPFB: always allow to configure overlay
Grazvydas Ignotas [Thu, 10 May 2012 11:19:56 +0000 (14:19 +0300)]
OMAPDSS: OMAPFB: always allow to configure overlay

Currently when multiple overlays are active, OMAPFB_SETUP_PLANE fails.
Instead of failing, allow it to configure the first overlay as if there
was only one overlay, the remaining ones will have to be configured in
other ways (sysfs).

This allows overlay-controlling programs (like video players) to function
properly when framebuffer is cloned to another display (like TV).

Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: VENC: allow switching venc output type at runtime
Grazvydas Ignotas [Mon, 23 Apr 2012 21:08:54 +0000 (00:08 +0300)]
OMAPDSS: VENC: allow switching venc output type at runtime

VENC output type (composite/svideo) doesn't have to be fixed by board
wiring, it is possible to also provide composite signal through svideo
luminance connector (software enabled), which is what pandora does.

Having to recompile the kernel for users who have TV connector types
that don't match default board setting is very inconvenient, especially
for users of a consumer device, so add support for switching VENC output
type at runtime over a new sysfs file output_type.

Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoMerge branch 'for-l-o-3.5'
Tomi Valkeinen [Thu, 10 May 2012 16:55:44 +0000 (19:55 +0300)]
Merge branch 'for-l-o-3.5'

Conflicts:
drivers/video/omap2/displays/panel-taal.c

Merge OMAP DSS related board file changes. The branch will also be
merged through linux-omap tree to solve conflicts.

12 years agoMerge branch 'archit/set-timing-work'
Tomi Valkeinen [Wed, 9 May 2012 10:50:32 +0000 (13:50 +0300)]
Merge branch 'archit/set-timing-work'

An overlay manager's timings (the manager size, and blanking parameters
if an LCD manager) are DISPC shadow registers, and they should hence
follow the correct programming model.

This series makes the video timings an extra_info parameter in manager's
private data. The interface drivers now apply the timings instead of
directly writing to registers.

This change also prevents the need to use display resolution for overlay
checks, hence making some of the APPLY functions less dependent on the
display. Some DISPC functions that needed display width can also use
these privately stored timings.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: DISPC: Remove usage of dispc_mgr_get_device()
Archit Taneja [Tue, 8 May 2012 10:23:20 +0000 (15:53 +0530)]
OMAPDSS: DISPC: Remove usage of dispc_mgr_get_device()

The functions calc_fclk_five_taps() and check_horiz_timing_omap3() use the
function dispc_mgr_get_device() to get the omap_dss_device pointer to which
the manager is connected, the width of the panel is derived from that.

The manager's timing is stored in it's private data in APPLY. This contains
the latest timings applied to the manager. Pass these timings to
dispc_ovl_setup() and use them in the above functions. Remove the function
dispc_mgr_get_device() as it isn't used any more.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: DISPC: Remove omap_dss_device pointer usage from dispc_mgr_pclk_rate()
Archit Taneja [Mon, 9 Apr 2012 09:36:41 +0000 (15:06 +0530)]
OMAPDSS: DISPC: Remove omap_dss_device pointer usage from dispc_mgr_pclk_rate()

The pixel clock rate for the TV manager is calculated by checking the device
type connected to the manager, and then requesting the VENC/HDMI interface for
the pixel clock rate.

Remove the use of omap_dss_device pointer from here by checking which interface
generates the pixel clock by reading the DSS_CTRL.VENC_HDMI_SWITCH bit.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: APPLY: Remove an unnecessary omap_dss_device pointer
Archit Taneja [Mon, 9 Apr 2012 09:06:08 +0000 (14:36 +0530)]
OMAPDSS: APPLY: Remove an unnecessary omap_dss_device pointer

The omap_dss_device pointer declared in dss_ovl_setup_fifo() isn't used. Remove
the pointer variable declaration and it's assignment.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: DPI/HDMI: Apply manager timings even if panel is disabled
Archit Taneja [Thu, 3 May 2012 14:33:11 +0000 (20:03 +0530)]
OMAPDSS: DPI/HDMI: Apply manager timings even if panel is disabled

The DPI and HDMI interfaces use their 'set_timing' functions to take in a new
set of timings. If the panel is disabled, they do not disable and re-enable
the interface. Currently, the manager timings are applied in hdmi_power_on()
and dpi_set_mode() respectively, these are not called by set_timings if the
panel is disabled.

When checking overlay and manager data, the DSS driver uses the last applied
manager timings, and not the timings held by omap_dss_device struct. Hence,
there is a need to apply the new manager timings even if the panel is disabled.

Apply the manager timings if the panel is disabled. Eventually, there should be
one common place where the timings are applied independent of the state of the
panel.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: APPLY: Remove display dependency from overlay and manager checks
Archit Taneja [Thu, 26 Apr 2012 19:52:28 +0000 (01:22 +0530)]
OMAPDSS: APPLY: Remove display dependency from overlay and manager checks

In order to check the validity of overlay and manager info, there was a need to
use the omap_dss_device struct to get the panel resolution. The manager's
private data in APPLY now contains the manager timings. Hence, we don't need to
rely on the display resolution any more.

Pass the manager's timings in private data to dss_mgr_check(). Remove the need
to pass omap_dss_device structs in the functions which check for the validity
of overlay and manager parameters.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: APPLY: Don't check manager settings if it is disabled
Archit Taneja [Tue, 8 May 2012 12:49:15 +0000 (18:19 +0530)]
OMAPDSS: APPLY: Don't check manager settings if it is disabled

If a manager is disabled, there is no guarantee at any point in time that all
it's parameters are configured. There is always a chance that some more
parameters are yet to be configured by a user of DSS, or by DSS itself.

However, when the manager is enabled, we can be certain that all the parameters
have been configured, as we can't enable a manager with an incomplete
configuration. Therefore, if a manager is disabled, don't check for the validity
of it's parameters or the parameters of the overlays connected to it. Only check
once it is enabled. Add a check in dss_check_settings_low() to achieve the same.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: MANAGER: Create a function to check manager timings
Archit Taneja [Thu, 26 Apr 2012 19:37:28 +0000 (01:07 +0530)]
OMAPDSS: MANAGER: Create a function to check manager timings

Create a function dss_mgr_check_timings() which wraps around the function
dispc_mgr_timings_ok(). This is mainly a clean up to hide dispc functions
from interface drivers.

dss_mgr_check_timings() is added in the function dss_mgr_check(), it currently
takes the timings maintained in the omap_dss_device struct. This would be later
replaced by the timings stored in the manager's private data.

Make dss_mgr_check_timings() and dispc_mgr_timings_ok() take a const
omap_video_timings pointer since these functions just check the timings.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: Apply manager timings instead of direct DISPC writes
Archit Taneja [Thu, 26 Apr 2012 14:40:46 +0000 (20:10 +0530)]
OMAPDSS: Apply manager timings instead of direct DISPC writes

Replace the function dispc_mgr_set_timings() with dss_mgr_set_timings() in the
interface drivers. The latter function ensures that the timing related DISPC
registers are configured according to the shadow register programming model.

Remove the call to dispc_mgr_go() in dpi_set_timings() as the manager's go bit
is set by dss_mgr_set_timings().

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: APPLY: Add manager timings as extra_info in private data
Archit Taneja [Thu, 26 Apr 2012 14:01:22 +0000 (19:31 +0530)]
OMAPDSS: APPLY: Add manager timings as extra_info in private data

DISPC manager size and DISPC manager blanking parameters(for LCD managers)
follow the shadow register programming model. Currently, they are programmed
directly by the interface drivers.

To configure manager timings using APPLY, there is a need to introduce extra
info flags for managers, similar to what is done for overlays. This is needed
because timings aren't a part of overlay_manager_info struct configured by a
user of DSS, they are configured internally by the interface or panel drivers.

Add dirty and shadow_dirty extra_info flags for managers, update these flags
at the appropriate places. Rewrite the function extra_info_update_ongoing()
slightly as checking for manager's extra_info flags can simplify the code a bit.

Create function dss_mgr_set_timings() which applies the new manager timings to
extra_info.

Signed-off-by: Archit Taneja <archit@ti.com>
12 years agoOMAPDSS: DISPC: Remove Fake VSYNC support
Archit Taneja [Mon, 7 May 2012 11:21:36 +0000 (16:51 +0530)]
OMAPDSS: DISPC: Remove Fake VSYNC support

Fake VSYNC support is a hack and has some bugs in it. It isn't used by any user
of DSS. Remove Fake VSYNC support. For DSI command mode and RFBI panels, a user
of DSS should wait for the completion of a frame by using the panel driver's
sync op.

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: Fix DSI_FCLK clock source selection
Archit Taneja [Mon, 7 May 2012 11:21:35 +0000 (16:51 +0530)]
OMAPDSS: Fix DSI_FCLK clock source selection

The wrong bit field was being updated in DSS_CTRL when trying to configure the
clock source of DSI2 functional clock. Use the correct bit field based on the
dsi module number.

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: HDMI: define and dump CORE registers in correct order
Archit Taneja [Mon, 7 May 2012 13:20:28 +0000 (18:50 +0530)]
OMAPDSS: HDMI: define and dump CORE registers in correct order

The HDMI core register offset macros aren't defined in ascending order of their
values, some of the offset macros are also redefined. The same issues occur when
these core registers are dumped.

Clean up the ordering of HDMI core registers and remove repeated registers in
the definition in ti_hdmi_4xxx_ip.h and in ti_hdmi_4xxx_core_dump().

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: HDMI: Fix ti_hdmi_4xxx_core_dump
Archit Taneja [Mon, 7 May 2012 13:20:27 +0000 (18:50 +0530)]
OMAPDSS: HDMI: Fix ti_hdmi_4xxx_core_dump

The function ti_hdmi_4xxx_core_dump has some bugs, the following mention the
bugs and the solutions:

- The macros DUMPCORE and DUMPCOREAV in ti_hdmi_4xxx_core_dump() use
  hdmi_pll_base() for the offsets needed to calculate register addresses, use
  functions hdmi_core_sys_base() amd hdmi_av_base() to calculate the correct
  offsets for CORE_SYS and CORE_AV registers.

- Many of the CORE_AV registers use the DUMPCORE macro, and hence the register
  addresses are calculated incorrectly. Rename the current DUMPCOREAV macro as
  DUMPCOREAV2 as it takes 2 arguments to dump indexed CORE_AV registers, create
  a new macro called DUMPCOREAV which is now used for dumping non-indexed
  CORE_AV registers.

Thanks to Ancy Tom <ancytom@gmail.com> for pointing out the issues.

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: DSI: implement generic DSI pin config
Tomi Valkeinen [Wed, 28 Mar 2012 12:58:56 +0000 (15:58 +0300)]
OMAPDSS: DSI: implement generic DSI pin config

In preparation for device tree, this patch changes how the DSI pins are
configured. The current configuration method is only doable with board
files and the configuration data is OMAP specific.

This patch moves the configuration data to the panel's platform data,
and the data can easily be given via DT in the future. The configuration
data format is also changed to a generic one which should be suitable
for all platforms.

The new format is an array of pin numbers, where the array items start
from clock + and -, then data1 + and -, and so on. For example:

{
0, // pin num for clock lane +
1, // pin num for clock lane -
2, // pin num for data1 lane +
3, // pin num for data1 lane -
...
}

The pin numbers are translated by the DSI driver and used to configure
the hardware appropriately.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Acked-by: Tony Lindgren <tony@atomide.com>
12 years agoOMAPDSS: Taal: move reset gpio handling to taal driver
Tomi Valkeinen [Mon, 20 Feb 2012 10:18:52 +0000 (12:18 +0200)]
OMAPDSS: Taal: move reset gpio handling to taal driver

The reset GPIO for Taal panel driver is currently requested in the
4430sdp board file. This patch moves the gpio request/free into the Taal
driver, where it should be.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Acked-by: Tony Lindgren <tony@atomide.com>
12 years agoOMAPDSS: TFP410: rename dvi files to tfp410
Tomi Valkeinen [Thu, 22 Dec 2011 09:12:13 +0000 (11:12 +0200)]
OMAPDSS: TFP410: rename dvi files to tfp410

Now that the tfp410 driver has been renamed in the code, this patch
finishes the renaming by renaming the files.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Acked-by: Tony Lindgren <tony@atomide.com>
12 years agoOMAPDSS: TFP410: rename dvi -> tfp410
Tomi Valkeinen [Mon, 5 Mar 2012 12:29:28 +0000 (14:29 +0200)]
OMAPDSS: TFP410: rename dvi -> tfp410

The driver for the TFP410 DPI-to-DVI chip was named quite badly as "DVI
panel driver". This patch renames the code to use tfp410 name for the
driver.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Acked-by: Tony Lindgren <tony@atomide.com>
12 years agoOMAP: board-files: remove custom PD GPIO handling for DVI output
Tomi Valkeinen [Fri, 17 Feb 2012 11:30:27 +0000 (13:30 +0200)]
OMAP: board-files: remove custom PD GPIO handling for DVI output

Now that the panel-dvi driver handles the PD (power-down) GPIO, we can
remove the custom PD handling from the board files.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Acked-by: Tony Lindgren <tony@atomide.com>
12 years agoOMAPDSS: panel-dvi: add PD gpio handling
Tomi Valkeinen [Thu, 22 Dec 2011 08:37:33 +0000 (10:37 +0200)]
OMAPDSS: panel-dvi: add PD gpio handling

The driver for the TFP410 chip should handle the power-down signal of
the chip, instead of the current way of handling it in the board files.

This patch adds power_down_gpio into the device's platform data, and
adds the necessary code in the driver to request and handle the GPIO.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: DISPC: Correct DISPC functional clock usage
Chandrabhanu Mahapatra [Mon, 23 Apr 2012 06:46:50 +0000 (12:16 +0530)]
OMAPDSS: DISPC: Correct DISPC functional clock usage

DISPC_FCLK is incorrectly used as functional clock of DISPC in scaling
calculations. So, DISPC_CORE_CLK replaces as functional clock of DISPC.
DISPC_CORE_CLK is derived from DISPC_FCLK divided by an independent DISPC
divisor LCD.

Signed-off-by: Chandrabhanu Mahapatra <cmahapatra@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: DISPC: Handle synclost errors in OMAP3
Chandrabhanu Mahapatra [Mon, 2 Apr 2012 15:13:17 +0000 (20:43 +0530)]
OMAPDSS: DISPC: Handle synclost errors in OMAP3

In OMAP3 DISPC video overlays suffer from some undocumented horizontal position
and timing related limitations leading to SYNCLOST errors. Whenever the image
window is moved towards the right of the screen SYNCLOST errors become
frequent. Checks have been implemented to see that DISPC driver rejects
configuration exceeding above limitations.

This code was successfully tested on OMAP3. This code is written based on code
written by Ville Syrjälä <ville.syrjala@nokia.com> in Linux OMAP kernel. Ville
Syrjälä <ville.syrjala@nokia.com> had added checks for video overlay horizontal
timing and DISPC horizontal blanking length limitations.

Signed-off-by: Chandrabhanu Mahapatra <cmahapatra@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: DISPC: Enable predecimation
Chandrabhanu Mahapatra [Mon, 2 Apr 2012 15:13:16 +0000 (20:43 +0530)]
OMAPDSS: DISPC: Enable predecimation

In OMAP3 and OMAP4, the DISPC Scaler can downscale an image up to 4 times, and
up to 2 times in OMAP2. However, with predecimation, the image can be reduced
to 16 times by fetching only the necessary pixels in memory. Then this
predecimated image can be downscaled further by the DISPC scaler.

The pipeline is configured to use a burst of size 8 * 128 bits which consists
of 8 mini bursts of 16 bytes each. So, horizontal predecimation more than 16
can lead to complete discarding of such mini bursts. L3 interconnect may
handover the bus to some other initiator and inturn delay the fetching of
pixels leading to underflows. So, maximum predecimation limit is fixed at 16.

Based on the downscaling required, a prior calculation of predecimation values
for width and height of an image is done. Since, Predecimation reduces quality
of an image higher priorty is given to DISPC Scaler for downscaling.

This code was successfully tested on OMAP2, OMAP3 and OMAP4. Horizontal and
vertical predecimation worked fine except for some synclost errors due to
undocumented errata in OMAP3 which are fixed later and skewed images were seen
on OMAP2 and OMAP3 during horizontal predecimation which will be addressed in
the future patches.

This code is based on code written by Lajos Molnar <lajos@ti.com> who had added
predecimation support for NV12/YUV/rotated/SDMA buffers.

Signed-off-by: Chandrabhanu Mahapatra <cmahapatra@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoARM: OMAP2+ Add Primview displays to panel-generic
Jan Weitzel [Fri, 20 Apr 2012 09:41:22 +0000 (11:41 +0200)]
ARM: OMAP2+ Add Primview displays to panel-generic

Add displays to panel-generic-dpi.c
Prime View PD050VL1 (640 x 480)
Prime View PD104SLF (800 x 600)
Prime View PM070WL4 (800 x 480)

Signed-off-by: Jan Weitzel <j.weitzel@phytec.de>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: DISPC: Clean up manager timing/size functions
Archit Taneja [Mon, 16 Apr 2012 07:23:44 +0000 (12:53 +0530)]
OMAPDSS: DISPC: Clean up manager timing/size functions

Clean up the DISPC manager timings related function by:

- Create a common function to set size for LCD and TV.
- Create a common function to check timings for LCD and TV.
- Add dss params to get the range of manager size.

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: DISPC: Use a common function to set manager timings
Archit Taneja [Mon, 16 Apr 2012 07:23:43 +0000 (12:53 +0530)]
OMAPDSS: DISPC: Use a common function to set manager timings

Currently, a LCD manager's timings is set by dispc_mgr_set_lcd_timings() and TV
manager's timings is set by dispc_set_digit_size(). Use a common function called
dispc_mgr_set_timings() which sets timings for both type of managers.

We finally want the interface drivers to use an overlay manager function to
configure it's timings, having a common DISPC function would make things
cleaner.

For LCD managers, dispc_mgr_set_timings() sets LCD size and blanking values, for
TV manager, it sets only the TV size since blanking values don't exist for TV.

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: DISPC/RFBI: Use dispc_mgr_set_lcd_timings() for setting lcd size
Archit Taneja [Mon, 16 Apr 2012 07:23:42 +0000 (12:53 +0530)]
OMAPDSS: DISPC/RFBI: Use dispc_mgr_set_lcd_timings() for setting lcd size

The RFBI driver uses dispc_mgr_set_lcd_size() to set the width and height of
the LCD manager. Replace this to use dispc_mgr_set_lcd_timings(), pass dummy
blanking parameters like done in the DSI driver.

This prevents the need to export dispc_mgr_set_lcd_size(), and use a common
function to set lcd timings.

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPFB: remove unused FB_OMAP_BOOTLOADER_INIT config option
Peter Meerwald [Tue, 3 Apr 2012 08:59:15 +0000 (10:59 +0200)]
OMAPFB: remove unused FB_OMAP_BOOTLOADER_INIT config option

code depending on FB_OMAP_BOOTLOADER_INIT has been removed long before
(e.g. Tomi Valkeinen, 03 Mar 2011: OMAP: DSS2: Remove FB_OMAP_BOOTLOADER_INIT
support), but the option still exists Kconfig and has no use

Signed-off-by: Peter Meerwald <p.meerwald@bct-electronic.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: Add EDT ET0500G0DH6 display support
Thomas Weber [Fri, 17 Feb 2012 12:41:59 +0000 (13:41 +0100)]
OMAPDSS: Add EDT ET0500G0DH6 display support

The EDT ET0500G0DH6 is a 5 inch display. It is
tested on an OMAP3 board.

Signed-off-by: Thomas Weber <weber@corscience.de>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: Add Mitsubishi AA084SB01 display support
Thomas Weber [Fri, 17 Feb 2012 12:41:58 +0000 (13:41 +0100)]
OMAPDSS: Add Mitsubishi AA084SB01 display support

This patch adds support for the Mitsubishi display
AA084SB01. This is a 7 inch LVDS display. It is tested with
an OMAP3 board.

Signed-off-by: Thomas Weber <weber@corscience.de>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: TPO-TD03MTEA1: add set/check timing functions
Grazvydas Ignotas [Thu, 15 Mar 2012 18:00:24 +0000 (20:00 +0200)]
OMAPDSS: TPO-TD03MTEA1: add set/check timing functions

On pandora we use .set_timings to alter refresh rate,
so add .check_timings/.set_timings functions.

Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: provide default get_timings function for panels
Grazvydas Ignotas [Thu, 15 Mar 2012 18:00:23 +0000 (20:00 +0200)]
OMAPDSS: provide default get_timings function for panels

With this we can eliminate some duplicate code in panel drivers.
Also lgphilips-lb035q02, nec-nl8048hl11-01b, picodlp and
tpo-td043mtea1 gain support of reading timings over sysfs.

Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: OMAPFB: check for matching memory size early
Grazvydas Ignotas [Fri, 9 Mar 2012 00:42:49 +0000 (02:42 +0200)]
OMAPDSS: OMAPFB: check for matching memory size early

If the size of memory region that is being set up is the same as before,
we don't have to do memory and layer busy checks.

Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: TPO-TD03MTEA1: Correct comment for power on delay
Mark Brown [Mon, 19 Mar 2012 15:02:32 +0000 (15:02 +0000)]
OMAPDSS: TPO-TD03MTEA1: Correct comment for power on delay

Since any power on stabilisation delay for the supply itself should be
taken care of transparently by the regulator API when the regulator is
enabled the additional delay that the TPO-TD03MTEA1 driver adds after
that returned should be due to the requirements of the device itself
rather than the supply (the delay is also suspicously long for one for
a regulator to ramp). Correct the comment to avoid misleading people
taking this code as a reference.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Grazvydas Ignotas <notasas@gmail.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: TPO-TD03MTEA1: Check for errors from regulator_enable()
Mark Brown [Mon, 19 Mar 2012 15:02:31 +0000 (15:02 +0000)]
OMAPDSS: TPO-TD03MTEA1: Check for errors from regulator_enable()

It is possible for regulator_enable() to fail and if it does fail that's
generally a bad sign for anything we try to do with the hardware afterwards
so check for and immediately return an error if regulator_enable() fails.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Grazvydas Ignotas <notasas@gmail.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: VENC: Check for errors from regulator_enable()
Mark Brown [Mon, 19 Mar 2012 14:56:39 +0000 (14:56 +0000)]
OMAPDSS: VENC: Check for errors from regulator_enable()

It is possible for regulator_enable() to fail and if it does fail that's
generally a bad sign for anything we try to do with the hardware afterwards
so check for and immediately return an error if regulator_enable() fails.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: Remove suspicous and unused TAAL regulator API usage
Mark Brown [Mon, 19 Mar 2012 14:50:46 +0000 (14:50 +0000)]
OMAP: DSS2: Remove suspicous and unused TAAL regulator API usage

The TAAL driver contains some regulator support which is currently unused
(the code is there but the one panel supported by the driver doesn't have
any regulators provided). This code mostly looks like an open coded
version of the regulator core bulk API.

The only additional feature is that a voltage range can be set once when
the device is opened, though this is never varied at runtime. The general
expectation is that if the device is not actively managing the voltage of
the device (eg, doing DVFS) then any configuration will be done using the
constraints rather than by drivers, saving them code and ensuring that
they work well with systems where the voltage is not configurable.

If systems are added needing regulator support this can be added back in,
though it should be based on core features rather than open coding things.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: DSI: remove option to use pck for DSI PLL clkin
Tomi Valkeinen [Thu, 15 Mar 2012 13:22:58 +0000 (15:22 +0200)]
OMAPDSS: DSI: remove option to use pck for DSI PLL clkin

For some OMAP versions the TRM says that the pixel clock from DISPC can
be used as an input clock for DSI PLL, instead of the default, which is
sysclk.  For some OMAP versions the bits affecting this are marked as
reserved.  This feature has never been tested, so it's unknown if the HW
even works, and has never been used.

To clean things up, this patch removes the functionality. This should
not affect any board.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: Ensure OPP100 when DSS is operational
Tomi Valkeinen [Thu, 8 Mar 2012 10:52:38 +0000 (12:52 +0200)]
OMAPDSS: Ensure OPP100 when DSS is operational

Most of the DSS clocks have restrictions on their frequency based on the
OPP in use. For example, maximum frequency for a clock may be 180MHz in
OPP100, but 90MHz in OPP50. This means that when a high enough pixel
clock or function clock is required, we need to use OPP100.

However, there's currently no way in the PM framework to make that kind
of request. The closest we get is to ask for very high bus throughput
from the PM framework, which should effectively force OPP100.

This patch is a simple version for handling the problem. Instead of
asking for OPP100 only when needed, this patch asks for OPP100 whenever
DSS is active. This obviously is not an optimal solution for cases with
small displays where OPP50 would work just fine. However, a proper
solution is a complex one, and this patch is a short term solution for
the problem.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: Paul Walmsley <paul@pwsan.com>
Acked-by: Kevin Hilman <khilman@ti.com>
12 years agoOMAPDSS: add set_min_bus_tput pointer to omapdss's platform data
Tomi Valkeinen [Thu, 8 Mar 2012 10:37:58 +0000 (12:37 +0200)]
OMAPDSS: add set_min_bus_tput pointer to omapdss's platform data

omapdss driver needs to use the omap_pm_set_min_bus_tput(), so add a new
entry for that in omapdss's platform data, and set it.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: Paul Walmsley <paul@pwsan.com>
Acked-by: Kevin Hilman <khilman@ti.com>
12 years agoLinux 3.4-rc4
Linus Torvalds [Sat, 21 Apr 2012 21:47:52 +0000 (14:47 -0700)]
Linux 3.4-rc4

12 years agosparc32,leon: add notify_cpu_starting()
Yong Zhang [Thu, 19 Apr 2012 20:28:32 +0000 (20:28 +0000)]
sparc32,leon: add notify_cpu_starting()

Otherwise cpu_active_mask will not set, which lead to other issue.

Signed-off-by: Yong Zhang <yong.zhang0@gmail.com>
Signed-off-by: Konrad Eisele <konrad@gaisler.com>
Reviewed-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
12 years agoMerge tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm...
Linus Torvalds [Sat, 21 Apr 2012 19:45:52 +0000 (12:45 -0700)]
Merge tag 'fixes-for-linus' of git://git./linux/kernel/git/arm/arm-soc

Pull "ARM: SoC fixes" from Olof Johansson:
 * at91, ux500, imx, omap and bcmring:
  - at91 fixes for =m driver build issues, irqdomain fixes and config
    dependency fixes
  - ux500 kconfig dependency fixes and a  smp wakeup bugfix
  - imx idle bugfix and build fix due to irq domain changes
  - omap uart pinmux fixes, softreset regression revert and misc fixes
  - bcmring build error regression fix

 * ux500 and imx had some small defconfig updates in this branch

* tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (27 commits)
  ARM: bcmring: fix UART declarations
  ARM: imx: Fix imx5 idle logic bug
  ARM: imx27-dt: Fix build due to removal of irq_domain_add_simple()
  ARM: imx_v4_v5_defconfig: Add support for CONFIG_REGULATOR_FIXED_VOLTAGE
  ARM: OMAP1: DMTIMER: fix broken timer clock source selection
  ARM: OMAP: serial: Fix the ocp smart idlemode handling bug
  ARM: OMAP2+: UART: Fix incorrect population of default uart pads
  ARM: OMAP: sram: fix BUG in dpll code for !PM case
  dmaengine: Kconfig: fix Atmel at_hdmac entry
  USB: gadget/at91_udc: add gpio_to_irq() function to vbus interrupt
  USB: ohci-at91: change annotations for probe/remove functions
  leds-atmel-pwm.c: Make pwmled_probe() __devinit
  ARM: at91: fix at91sam9261ek Ethernet dm9000 irq
  ARM: at91: fix rm9200ek flash size
  ARM: at91: remove empty at91_init_serial function
  ARM: at91: fix typo in at91_pmc_base assembly declaration
  ARM: at91: Export at91_matrix_base
  ARM: at91: Export at91_pmc_base
  ARM: at91: Export at91_ramc_base
  ARM: at91: Export at91_st_base
  ...

12 years agoMerge tag 'mmc-fixes-for-3.4-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git...
Linus Torvalds [Sat, 21 Apr 2012 19:44:37 +0000 (12:44 -0700)]
Merge tag 'mmc-fixes-for-3.4-rc4' of git://git./linux/kernel/git/cjb/mmc

Pull MMC fixes from Chris Ball:
 - Build fix for omap_hsmmc with OF against 3.4-rc1.
 - Fix CONFIG_MMC_UNSAFE_RESUME semantics regression against 3.3, which
   broke hotplug card detection when UNSAFE_RESUME is set.
 - Fix a race condition in omap_hsmmc with runtime PM.
 - Fix two libertas SDIO-powered-resume regressions.
 - Small fixes for discard/sanitize, dw_mmc, cd-gpio and esdhc-imx.

* tag 'mmc-fixes-for-3.4-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc:
  mmc: core: Do not pre-claim host in suspend
  mmc: dw_mmc: prevent NULL dereference for dma_ops
  mmc: unbreak sdhci-esdhc-imx on i.MX25
  mmc: cd-gpio: Include header to pickup exported symbol prototypes
  mmc: sdhci: refine non-removable card checking for card detection
  mmc: dw_mmc: Fix switch from DMA to PIO
  mmc: remove MMC bus legacy suspend/resume method
  mmc: omap_hsmmc: Get rid of of_have_populated_dt() usage
  mmc: omap_hsmmc: build fix for CONFIG_OF=y and CONFIG_MMC_OMAP_HS=m
  mmc: fixes for eMMC v4.5 sanitize operation
  mmc: fixes for eMMC v4.5 discard operation

12 years agoMerge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab...
Linus Torvalds [Sat, 21 Apr 2012 19:43:23 +0000 (12:43 -0700)]
Merge branch 'v4l_for_linus' of git://git./linux/kernel/git/mchehab/linux-media

Pull media fixes from Mauro Carvalho Chehab:
 - Fixes a regression at DVB core when switching from DVB-S2 to DVB-S on
   Kaffeine (Fedora 16 Bugzilla #812895);
 - Fixes a mutex unlock at an error condition at drx-k;
 - Fix winbond-cir set mode;
 - mt9m032: Fix a compilation breakage with some random Kconfig;
 - mt9m032: fix two dead locks;
 - xc5000: don't require an special firmware (that won't be provided by
   the vendor) just because the xtal frequency is different;
 - V4L DocBook: fix some typos at multi-plane formats description.

* 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media:
  [media] xc5000: support 32MHz & 31.875MHz xtal using the 41.024.5 firmware
  [media] V4L: mt9m032: fix compilation breakage
  [media] V4L: DocBook: Fix typos in the multi-plane formats description
  [media] V4L: mt9m032: fix two dead-locks
  [media] rc-core: set mode for winbond-cir
  [media] drxk: Does not unlock mutex if sanity check failed in scu_command()
  [media] dvb_frontend: Fix a regression when switching back to DVB-S

12 years agoMerge tag 'mfd-for-linus-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo...
Linus Torvalds [Sat, 21 Apr 2012 19:42:12 +0000 (12:42 -0700)]
Merge tag 'mfd-for-linus-3.4' of git://git./linux/kernel/git/sameo/mfd-2.6

Pull MFD fixes from Samuel Ortiz:
 "We have 3 build fixes, a OMAP USB host PHY reset fix and the twl6040
  conversion to an i2c driver.  The latter may not sound like a fix but
  the twl6040 MFD driver won't probe without it, triggering an OMAP4
  audio regression."

* tag 'mfd-for-linus-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6:
  mfd: Fix modular builds of rc5t583 regulator support
  mfd: Fix asic3_gpio_to_irq
  ARM: OMAP3: USB: Fix the EHCI ULPI PHY reset issue
  mfd: Convert twl6040 to i2c driver, and separate it from twl core
  mfd : Fix dbx500 compilation error

12 years agokill mm argument of vm_munmap()
Al Viro [Sat, 21 Apr 2012 01:57:04 +0000 (21:57 -0400)]
kill mm argument of vm_munmap()

it's always current->mm

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
12 years agoperfmon: kill some helpers and arguments
Al Viro [Sat, 21 Apr 2012 01:53:35 +0000 (21:53 -0400)]
perfmon: kill some helpers and arguments

pfm_vm_munmap() is simply vm_munmap() and pfm_remove_smpl_mapping()
always get current as the first argument.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
12 years agoaio: don't bother with unmapping when aio_free_ring() is coming from exit_aio()
Al Viro [Sat, 21 Apr 2012 01:49:41 +0000 (21:49 -0400)]
aio: don't bother with unmapping when aio_free_ring() is coming from exit_aio()

... since exit_mmap() is coming and it will munmap() everything anyway.
In all other cases aio_free_ring() has ctx->mm == current->mm; moreover,
all other callers of vm_munmap() have mm == current->mm, so this will
allow us to get rid of mm argument of vm_munmap().

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
12 years agommc: core: Do not pre-claim host in suspend
Ulf Hansson [Thu, 19 Apr 2012 09:55:25 +0000 (11:55 +0200)]
mmc: core: Do not pre-claim host in suspend

Since SDIO drivers may want to do some SDIO operations in their suspend
callback functions, we must not keep the host claimed when calling them.

Daniel Drake reported that libertas_sdio encountered a deadlock in its
suspend function.

Signed-off-by: Ulf Hansson <ulf.hansson@stericsson.com>
Tested-by: Daniel Drake <dsd@laptop.org>
[stable@: please apply to 3.2-stable and 3.3-stable]
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Chris Ball <cjb@laptop.org>
12 years agommc: dw_mmc: prevent NULL dereference for dma_ops
Jaehoon Chung [Wed, 18 Apr 2012 06:42:31 +0000 (15:42 +0900)]
mmc: dw_mmc: prevent NULL dereference for dma_ops

Now, dma_ops is assumed that use the IDMAC.  But if dma_ops is assigned
the pdata->dma_ops, we didn't ensure that callback function is defined.

If the callback isn't defined, then we should run in PIO mode.

Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Acked-by: Will Newton <will.newton@imgtec.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
12 years agommc: unbreak sdhci-esdhc-imx on i.MX25
Eric Bénard [Wed, 18 Apr 2012 00:30:20 +0000 (02:30 +0200)]
mmc: unbreak sdhci-esdhc-imx on i.MX25

This was broken by me in 37865fe91582582a6f6c00652f6a2b1ff71f8a78
("mmc: sdhci-esdhc-imx: fix timeout on i.MX's sdhci") where more
extensive tests would have shown that read or write of data to the
card were failing (even if the partition table was correctly read).

Signed-off-by: Eric Bénard <eric@eukrea.com>
Acked-by: Wolfram Sang <w.sang@pengutronix.de>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Chris Ball <cjb@laptop.org>
12 years agommc: cd-gpio: Include header to pickup exported symbol prototypes
H Hartley Sweeten [Tue, 17 Apr 2012 20:03:38 +0000 (13:03 -0700)]
mmc: cd-gpio: Include header to pickup exported symbol prototypes

Include the linux/mmc/cd-gpio.h header to pickup the prototypes
for the two exported symbols.

This quiets the sparse warnings:

warning: symbol 'mmc_cd_gpio_request' was not declared. Should it be static?
warning: symbol 'mmc_cd_gpio_free' was not declared. Should it be static?

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Acked-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Acked-by: Venkatraman S <svenkatr@ti.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
12 years agommc: sdhci: refine non-removable card checking for card detection
Daniel Drake [Mon, 9 Apr 2012 23:14:20 +0000 (00:14 +0100)]
mmc: sdhci: refine non-removable card checking for card detection

Commit c79396c191bc19 ("mmc: sdhci: prevent card detection activity
for non-removable cards") disables card detection where the cards
are marked as non-removable.

This makes sense, but the implementation detail of calling
mmc_card_is_removable() causes some problems, because
mmc_card_is_removable() is overloaded with CONFIG_MMC_UNSAFE_RESUME
semantics.

In the OLPC XO case, we need CONFIG_MMC_UNSAFE_RESUME because our root
filesystem is stored on SD, but we also have external SD card slots
where we want automatic card detection.

Refine the check to only apply to hosts marked as MMC_CAP_NONREMOVABLE,
which is defined to mean that the card is *really* nonremovable. This
could be revisited in future if we find a way to improve
CONFIG_MMC_UNSAFE_RESUME semantics.

Signed-off-by: Daniel Drake <dsd@laptop.org>
Acked-by: Chuanxiao Dong <chuanxiao.dong@intel.com>
[stable@: please apply to 3.3-stable]
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Chris Ball <cjb@laptop.org>