platform/kernel/linux-3.10.git
9 years agodrm/exynos: Replace DRM_LOG_KMS() by DRM_DEBUG_KMS()
Lespiau, Damien [Mon, 24 Mar 2014 15:53:10 +0000 (15:53 +0000)]
drm/exynos: Replace DRM_LOG_KMS() by DRM_DEBUG_KMS()

There are only a few users of the DRM_LOG_KMS() macro. We can simplify
the DRM code a bit by replacing them by DRM_DEBUG_KMS().

Cc: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: fimd: remove unused variable
Andrzej Hajda [Thu, 20 Mar 2014 08:09:00 +0000 (17:09 +0900)]
drm/exynos: fimd: remove unused variable

The patch removes unused vidcon0 field from fimd_context structure.

Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Reviewed-by: Tomasz Figa <t.figa@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: restore parallel output interface support
Andrzej Hajda [Fri, 25 Apr 2014 07:47:37 +0000 (16:47 +0900)]
drm/exynos: restore parallel output interface support

The patch adds parallel output interface to FIMD device driver.
It also restores support for panels initialized by boot loader,
but without proper kernel driver.
Driver uses video interface bindings to find connected panel.
It uses drm_panel interface to interact with the panel.

Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Reviewed-by: Tomasz Figa <t.figa@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: select DRM_PANEL
Inki Dae [Fri, 25 Apr 2014 09:26:26 +0000 (18:26 +0900)]
drm/exynos: select DRM_PANEL

Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/panel: fix build error
Inki Dae [Fri, 25 Apr 2014 09:26:10 +0000 (18:26 +0900)]
drm/panel: fix build error

Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/mipi_dsi: create dsi devices only for nodes with reg property
Andrzej Hajda [Fri, 28 Mar 2014 11:52:37 +0000 (12:52 +0100)]
drm/mipi_dsi: create dsi devices only for nodes with reg property

MIPI DSI host node can contain child nodes which are not DSI devices.
Checking for existence of reg property can be used to distinguish such nodes.

Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm: Add MIPI DSI bus support
Andrzej Hajda [Wed, 4 Dec 2013 15:35:12 +0000 (16:35 +0100)]
drm: Add MIPI DSI bus support

MIPI DSI bus allows to model DSI hosts and DSI peripherals using the
Linux driver model. DSI hosts are registered by the DSI host drivers.
During registration DSI peripherals will be created from the children
of the DSI host's device tree node. Support for registration from
board-setup code will be added later when needed.

DSI hosts expose operations which can be used by DSI peripheral drivers
to access associated devices.

Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/panel: add support for LG LD070WX3-SL01 panel
Alexandre Courbot [Tue, 21 Jan 2014 09:57:10 +0000 (18:57 +0900)]
drm/panel: add support for LG LD070WX3-SL01 panel

This panel is used by Tegra Note 7 and supported by the simple-panel
driver.

Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/panel: add support for LG LH500WX1-SD03 panel
Alexandre Courbot [Tue, 21 Jan 2014 09:57:09 +0000 (18:57 +0900)]
drm/panel: add support for LG LH500WX1-SD03 panel

This panel is used by the NVIDIA SHIELD and supported by the
simple-panel driver.

Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/panel: simple: Allow DSI panels to provide mode flags
Thierry Reding [Fri, 14 Mar 2014 10:24:57 +0000 (11:24 +0100)]
drm/panel: simple: Allow DSI panels to provide mode flags

In order to differentiate between the different video modes (burst vs.
non-burst, sync pulses vs. sync events) supported by peripherals, pass
the flags that specify this mode in the panel description to the DSI
peripheral device when probed.

Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Inki Ddae <inki.dae@samsung.com>
9 years agodrm/panel: simple: Allow GPIO accesses to sleep
Thierry Reding [Fri, 14 Mar 2014 11:03:47 +0000 (12:03 +0100)]
drm/panel: simple: Allow GPIO accesses to sleep

The enable GPIO for panels may be provided by GPIO expanders on slow
busses (such as I2C), and therefore toggling the GPIO may sleep. Since
these accesses don't happen in interrupt context, use the *_cansleep()
variants of the GPIO API.

Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/panel: remove redundant regulator_disable()
Alexandre Courbot [Sat, 1 Mar 2014 05:00:59 +0000 (14:00 +0900)]
drm/panel: remove redundant regulator_disable()

regulator_disable() is already performed by panel_simple_disable(),
which is called by panel_simple_remove().

Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/panel: use gpiod interface for enable GPIO
Alexandre Courbot [Sat, 1 Mar 2014 05:00:58 +0000 (14:00 +0900)]
drm/panel: use gpiod interface for enable GPIO

Use the new GPIO descriptor interface to handle the panel's enable GPIO.
This considerably simplifies the code.

Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
[treding@nvidia.com: rework to improve readability]
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/panel: Add LG 12.9" LCD panel
Thierry Reding [Fri, 15 Nov 2013 14:59:32 +0000 (15:59 +0100)]
drm/panel: Add LG 12.9" LCD panel

The LP129QE LCD has an LED backlight and a display resolution of
2560x1700 pixels.

Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/panel: update EDID BLOB in panel_simple_get_modes()
Stephen Warren [Thu, 9 Jan 2014 18:37:34 +0000 (11:37 -0700)]
drm/panel: update EDID BLOB in panel_simple_get_modes()

This stashes away the EDID data so that the sysfs per-connector file
"edid" can display it. Without this change, the "edid" file is always
empty.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/panel: Add support for Chunghwa CLAA101WA01A panel
Stephen Warren [Tue, 7 Jan 2014 23:46:26 +0000 (16:46 -0700)]
drm/panel: Add support for Chunghwa CLAA101WA01A panel

The Chunghwa CLAA101WA01A is a 10.1" 1366x768 panel, which can be
supported by the simple panel driver.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/panel: Add support for Samsung LTN101NT05 panel
Marc Dietrich [Sat, 21 Dec 2013 20:38:12 +0000 (21:38 +0100)]
drm/panel: Add support for Samsung LTN101NT05 panel

The Samsung LNT101NT05 10.1" WXVGA panel can be supported by the simple panel
driver.

Signed-off-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/panel: Add support for Panasonic VVX10F004B0
Thierry Reding [Fri, 22 Nov 2013 18:27:11 +0000 (19:27 +0100)]
drm/panel: Add support for Panasonic VVX10F004B0

The Panasonic VVX10F004B0 is a 10.1" WUXGA TFT LCD panel connected using
four DSI lanes.

Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/panel: Add simple panel support
Thierry Reding [Fri, 25 Apr 2014 07:53:17 +0000 (16:53 +0900)]
drm/panel: Add simple panel support

Add a driver for simple panels. Such panels can have a regulator that
provides the supply voltage and a separate GPIO to enable the panel.
Optionally the panels can have a backlight associated with them so it
can be enabled or disabled according to the panel's power management
mode.

Support is added for two panels: An AU Optronics 10.1" WSVGA and a
Chunghwa Picture Tubes 10.1" WXGA panel.

Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm: Add panel support
Thierry Reding [Fri, 25 Apr 2014 07:51:31 +0000 (16:51 +0900)]
drm: Add panel support

Add a very simple framework to register and lookup panels. Panel drivers
can initialize a DRM panel and register it with the framework, allowing
them to be retrieved and used by display drivers. Currently only support
for DPMS and obtaining panel modes is provided. However it should be
sufficient to enable a large number of panels. The framework should also
be easily extensible to support more sophisticated kinds of panels such
as DSI.

The framework hasn't been tied into the DRM core, even though it should
be easily possible to do so if that's what we want. In the current
implementation, display drivers can simple make use of it to retrieve a
panel, obtain its modes and control its DPMS mode.

Note that this is currently only tested on systems that boot from a
device tree. No glue code has been written yet for systems that use
platform data, but it should be easy to add.

Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: correct timing porch conversion
Andrzej Hajda [Fri, 25 Apr 2014 07:43:55 +0000 (16:43 +0900)]
drm/exynos: correct timing porch conversion

The patch corrects porch calculation. It should
be calculated as a difference between adjacent
respective fields of drm_display_mode.

Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Reviewed-by: Daniel Kurtz <djkurtz@chromium.org>
Reviewed-by: Tomasz Figa <t.figa@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: init kms poll after creation of connectors
Andrzej Hajda [Mon, 17 Mar 2014 10:27:18 +0000 (11:27 +0100)]
drm/exynos: init kms poll after creation of connectors

KMS poll init helper should be run when connectors are created,
otherwise it will not schedule connection detector.

Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Reviewed-by: Tomasz Figa <t.figa@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: delay fbdev initialization until an output is connected
Andrzej Hajda [Fri, 25 Apr 2014 07:41:15 +0000 (16:41 +0900)]
drm/exynos: delay fbdev initialization until an output is connected

In case fbdev is initialized before any output is connected,
fb resolution defaults to 1024x768. After that any output with
bigger resolution is ignored and fbdev is not displayed.
The patch postpones fbdev initialization to avoid such situation.

Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Reviewed-by: Tomasz Figa <t.figa@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: call drm_put_dev directly from ->remove
Daniel Vetter [Wed, 11 Dec 2013 10:34:23 +0000 (11:34 +0100)]
drm/exynos: call drm_put_dev directly from ->remove

I didn't find any user of the driver data yet, so store the
drm_device pointer in there.

Cc: Inki Dae <inki.dae@samsung.com>
Acked-by: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Dave Airlie <airlied@redhat.com>
9 years agodrm/exynos: fix unnecessary resource cleanup
Inki Dae [Fri, 28 Feb 2014 09:37:02 +0000 (18:37 +0900)]
drm/exynos: fix unnecessary resource cleanup

This patch removes unnecessary drm_mode_config_cleanup call.

Signed-off-by: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
9 years agodrm/exynos: hdmi: use i2c_adapter instead of i2c_client
Inki Dae [Fri, 25 Apr 2014 07:21:03 +0000 (16:21 +0900)]
drm/exynos: hdmi: use i2c_adapter instead of i2c_client

This patch changes i2c_client for ddc to i2c_adapter
because ddc needs only i2c_adapter.

Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: fimd: remove unnecessary display relevant codes
Inki Dae [Fri, 25 Apr 2014 07:15:55 +0000 (16:15 +0900)]
drm/exynos: fimd: remove unnecessary display relevant codes

This patch removes unnecessary display relevent codes from fimd driver
because display will be registed by each encoder/connector driver.

Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: hdmi: consider APB PHY
Inki Dae [Fri, 25 Apr 2014 07:14:15 +0000 (16:14 +0900)]
drm/exynos: hdmi: consider APB PHY

This patch returns error in case of using APB PHY.

Exynos5420 SoC and maybe later would use APB PHY instead of
I2C PHY so such case should be considered.

Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: Remove the exynos_drm_connector shim
Sean Paul [Mon, 24 Feb 2014 10:25:42 +0000 (19:25 +0900)]
drm/exynos: Remove the exynos_drm_connector shim

This path removes the exynos_drm_connector code since it was just
passing hooks through display_ops. The individual device drivers are now
responsible for implementing drm_connector directly.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: Implement drm_connector directly in vidi driver
Sean Paul [Fri, 25 Apr 2014 07:10:58 +0000 (16:10 +0900)]
drm/exynos: Implement drm_connector directly in vidi driver

This patch implements drm_connector directly in the vidi
driver, this will allow us to move away from the exynos_drm_connector
layer.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: Implement drm_connector in hdmi directly
Sean Paul [Fri, 25 Apr 2014 07:08:58 +0000 (16:08 +0900)]
drm/exynos: Implement drm_connector in hdmi directly

This patch implements drm_connector in the hdmi driver directly, instead
of using exynos_drm_connector.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: Add create_connector callback
Sean Paul [Mon, 24 Feb 2014 10:15:38 +0000 (19:15 +0900)]
drm/exynos: Add create_connector callback

This creates a new display hook called create_connector. The purpose is
to allow the display driver to create its own drm_connector instead of
using the exynos_drm_connector. This moves things closer to completely
removing the exynos_drm_connector abstraction.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: Consolidate suspend/resume in drm_drv
Sean Paul [Fri, 25 Apr 2014 07:06:10 +0000 (16:06 +0900)]
drm/exynos: Consolidate suspend/resume in drm_drv

This patch removes all of the suspend/resume logic from the individual
drivers and consolidates it in drm_drv. This consolidation reduces the
number of functions which enable/disable the hardware to just one -- the
dpms callback. This ensures that we always power up/down in a consistent
manner.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: Clean up FIMD power on/off routines
Sean Paul [Fri, 25 Apr 2014 06:55:07 +0000 (15:55 +0900)]
drm/exynos: Clean up FIMD power on/off routines

This patch separates the fimd_activate function into poweron/poweroff
functions to be more consistent with the other drivers in exynos drm. It
also properly cleans up after failures in poweron. The functions have
also been shuffled around such that they are all in the same
spot in the file and poweron/poweroff can be called from the dpms function.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: Remove unused/useless fimd_context members
Sean Paul [Thu, 30 Jan 2014 21:19:21 +0000 (16:19 -0500)]
drm/exynos: Remove unused/useless fimd_context members

This patch removes a few fimd_context members which are either entirely
unused or unneeded.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: Use mode_set to configure fimd
Sean Paul [Fri, 25 Apr 2014 06:25:20 +0000 (15:25 +0900)]
drm/exynos: Use mode_set to configure fimd

This patch uses the mode passed into mode_set to configure fimd instead
of directly using the panel from context. This will allow us to move
the exynos_drm_display implementation out of fimd, where it doesn't
belong.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: Implement mode_fixup manager operation
Sean Paul [Thu, 30 Jan 2014 21:19:19 +0000 (16:19 -0500)]
drm/exynos: Implement mode_fixup manager operation

This patch adds a new manager callback for mode_fixup and pipes it
through exynos_drm_crtc. This will allow the manager drivers to
alter the mode during modeset.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: Add mode_set manager operation
Sean Paul [Fri, 25 Apr 2014 06:19:48 +0000 (15:19 +0900)]
drm/exynos: Add mode_set manager operation

This patch adds a mode_set callback to the manager operations which
sets the crtc's current mode to the manager driver. This will allow the
fimd  driver to set its mode using values from drm, instead of the dt.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: Disable unused crtc planes from crtc
Sean Paul [Thu, 30 Jan 2014 21:19:17 +0000 (16:19 -0500)]
drm/exynos: Disable unused crtc planes from crtc

This patch moves the code which disables unused crtc planes from the
encoder to the crtc. Since there is a 1:1 encoder/crtc mapping in
exynos, the only valid crtc change the pre-existing code could catch is
disconnecting an active crtc from the encoder. Thus it is functionally
equivalent to just disable all planes attached to a crtc when the crtc
is disabled.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: Use drm_mode_copy to copy modes
Sean Paul [Thu, 30 Jan 2014 21:19:16 +0000 (16:19 -0500)]
drm/exynos: Use drm_mode_copy to copy modes

This patch changes the manual copying of mode to adjusted_mode in
mode_fixup to use drm_mode_copy instead of handling things manually.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: Remove exynos_drm_hdmi shim
Sean Paul [Fri, 25 Apr 2014 06:15:50 +0000 (15:15 +0900)]
drm/exynos: Remove exynos_drm_hdmi shim

This patch trims exynos_drm_hdmi out of the driver. The reason it
existed in the first place was to make up for the mixture of
display/overlay/manager ops being spread across hdmi and mixer. With
that code now rationalized, mixer and hdmi map directly to
exynos_drm_crtc and exynos_drm_encoder, respectively. Since there is a
1:1 mapping, we no longer need this layer.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: hdmi: remove the i2c drivers and use
Daniel Kurtz [Fri, 25 Apr 2014 05:59:42 +0000 (14:59 +0900)]
drm/exynos: hdmi: remove the i2c drivers and use

The i2c client was previously being passed into the hdmi driver via a
dedicated i2c driver, and then a global variable. This patch removes all
of that and just uses the device tree to get the i2c_client. This patch
also properly references the client so we don't lose it before we're
done with it.

Signed-off-by: Daniel Kurtz <djkurtz@chromium.org>
[seanpaul changed to phandle lookup instead of using of node name]
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: Split manager/display/subdrv
Sean Paul [Fri, 25 Apr 2014 05:49:16 +0000 (14:49 +0900)]
drm/exynos: Split manager/display/subdrv

This patch splits display and manager from subdrv. The result is that
crtc functions can directly call into manager callbacks and encoder
functions can directly call into display callbacks. This will allow
us to remove the exynos_drm_hdmi shim and support mixer/hdmi & fimd/dp
with common code.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: Use unsigned long for possible_crtcs
Sean Paul [Thu, 30 Jan 2014 21:19:11 +0000 (16:19 -0500)]
drm/exynos: Use unsigned long for possible_crtcs

Change all instances of possible_crtcs in the exynos drm driver to be
unsigned long. This matches the type used in the drm layer.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Reviewed-by: Tomasz Figa <t.figa@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: Don't keep dpms state in encoder
Sean Paul [Thu, 30 Jan 2014 21:19:10 +0000 (16:19 -0500)]
drm/exynos: Don't keep dpms state in encoder

This patch removes the dpms state tracking in encoder. This
state is at best confusing and at worst incorrect since the display
drivers can turn on and off without propagating the value.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Reviewed-by: Tomasz Figa <t.figa@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: Rename display_op power_on to dpms
Sean Paul [Thu, 24 Apr 2014 12:25:39 +0000 (21:25 +0900)]
drm/exynos: Rename display_op power_on to dpms

This patch renames the display_op power_on to dpms to accurately reflect
what the function does.

The side-effect of this patch is that the new hdmi dpms callback is now
invoked twice in the dpms path. This is safe and will be dealt with when
the exynos_drm shim goes away.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Reviewed-by: Tomasz Figa <t.figa@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: Remove dpms link between encoder/connector
Sean Paul [Thu, 24 Apr 2014 12:22:56 +0000 (21:22 +0900)]
drm/exynos: Remove dpms link between encoder/connector

This patch removes the call from encoder dpms into connector dpms (which
will then call back into encoder dpms through the helper function). The
callback is likely to keep connector->dpms in the right state when
initiating dpms from crtc or encoder, but this isn't the right way to do
it. This patch is the first step towards rationalizing power management
in the exynos drm driver.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Reviewed-by: Tomasz Figa <t.figa@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: Remove apply manager callback
Sean Paul [Fri, 25 Apr 2014 05:00:14 +0000 (14:00 +0900)]
drm/exynos: Remove apply manager callback

This patch removes the apply() manager callback in favor of putting the
relevant commits in the individual drivers. This will mitigate some of
the difference between the suspend/resume path and the dpms path

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Reviewed-by: Tomasz Figa <t.figa@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: Pass exynos_drm_manager in manager ops instead of dev
Sean Paul [Thu, 24 Apr 2014 12:03:56 +0000 (21:03 +0900)]
drm/exynos: Pass exynos_drm_manager in manager ops instead of dev

This patch changes the manager ops callbacks from accepting the subdrv
device pointer to taking a pointer to the manager. This will allow us
to move closer to decoupling manager/display from subdrv, and subsequently
decoupling the crtc/plane from the encoder.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: hdmi: Implement initialize op for hdmi
Sean Paul [Thu, 24 Apr 2014 11:44:39 +0000 (20:44 +0900)]
drm/exynos: hdmi: Implement initialize op for hdmi

This patch implements the initialize callback in the hdmi and mixer
manager. This allows us to get rid of drm_dev in the drm_hdmi level and
track it in the mixer and hdmi drivers. This is one of the things
holding back the complete removal of the drm_hdmi layer.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: Use manager_op initialize in fimd
Sean Paul [Thu, 24 Apr 2014 11:41:20 +0000 (20:41 +0900)]
drm/exynos: Use manager_op initialize in fimd

This patch implements the intitialize manager op in fimd. This will
allow us to keep track of drm_dev in context instead of using subdev,
which in turn makes it easier to remove subdev from fimd.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: Add an initialize function to manager and display
Sean Paul [Thu, 30 Jan 2014 21:19:03 +0000 (16:19 -0500)]
drm/exynos: Add an initialize function to manager and display

This patch adds an initialize function to the manager and display
operations. This allows them to keep track of drm_device in their
local context, as well as adds an initialization hook right after
the encoder is created.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Reviewed-by: Tomasz Figa <t.figa@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: Merge overlay_ops into manager_ops
Sean Paul [Thu, 24 Apr 2014 11:37:59 +0000 (20:37 +0900)]
drm/exynos: Merge overlay_ops into manager_ops

This patch merges overlay_ops into manager_ops. In all cases,
overlay_ops is implemented in the same place as manager ops, it doesn't
serve a functional purpose, and doesn't make things more clear.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: Remove useless slab.h include
Stephane Marchesin [Thu, 30 Jan 2014 21:19:01 +0000 (06:19 +0900)]
drm/exynos: Remove useless slab.h include

Signed-off-by: Stephane Marchesin <marcheu@chromium.org>
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: add phy settings for RB resolutions
Shirish S [Thu, 13 Mar 2014 05:28:27 +0000 (14:28 +0900)]
drm/exynos: add phy settings for RB resolutions

This patch adds support for the below mentioned
pixel clocks in Exynos5250.
Without them, following display modes won¡¯t
be supported:

71 MHz  - 1280x800@60Hz RB
73.25 MHz  - 800x600@120Hz RB
88.75 MHz  - 1440x900@60Hz RB
115.5 MHz  - 1024x768@120Hz RB
119 MHz  - 1680x1050@60Hz RB

Signed-off-by: Shirish S <s.shirish@samsung.com>
Reviewed-by: Tomasz Figa <t.figa@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agomisc: modem_if: fix section mismatch from tizen_modem.c
MyungJoo Ham [Mon, 28 Apr 2014 03:45:54 +0000 (12:45 +0900)]
misc: modem_if: fix section mismatch from tizen_modem.c

A function, modem_probe, had __init while it was used by
a struct that is not __init.

Change-Id: Ib1571c89b4bfcebc58b2669b669bd4606d1922fa
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
9 years agoarm: exynos4: Support machine specific reboot/poweroff for TRATS
Jonghwa Lee [Fri, 25 Apr 2014 01:23:53 +0000 (10:23 +0900)]
arm: exynos4: Support machine specific reboot/poweroff for TRATS

Change-Id: I086cf498da1f1fd38410e99cd250b0c4aeda1a09
Signed-off-by: Jonghwa Lee <jonghwa3.lee@samsung.com>
9 years agoextcon: Move OF helper function to extcon core and change function name
Chanwoo Choi [Tue, 18 Mar 2014 11:31:33 +0000 (20:31 +0900)]
extcon: Move OF helper function to extcon core and change function name

This patch move simply OF helper function to extcon core and change function
name as following:
- of_extcon_get_extcon_dev() -> extcon_get_edev_by_phandle()

Change-Id: I37fd827f945e3d713cfe15607689eab6792007b1
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Acked-by: Felipe Balbi <balbi@ti.com>
9 years agoextcon: of: Remove unnecessary function call by using the name of device_node
Chanwoo Choi [Tue, 18 Mar 2014 10:09:41 +0000 (19:09 +0900)]
extcon: of: Remove unnecessary function call by using the name of device_node

This patch remove unnecessary function call in of_extcon_get_extcon_dev()
by using the name of device_node structure.

Change-Id: Ifae59614f355d1ad1beef9aab1c497840f22a727
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
9 years agotizen: update tizen_defconfig
Chanho Park [Fri, 25 Apr 2014 07:57:08 +0000 (16:57 +0900)]
tizen: update tizen_defconfig

Enable SEC_COMP and misc updates

Change-Id: I80e8011ded0007f88f7bea367c32d414abd47d52
Signed-off-by: Chanho Park <chanho61.park@samsung.com>
9 years agomisc: modem_if: regress to old tizen modem driver
Chanho Park [Tue, 15 Apr 2014 04:42:22 +0000 (13:42 +0900)]
misc: modem_if: regress to old tizen modem driver

Tizen modem utility and xmm626x modem uses old style modem I/F. I
brought the driver from linux-3.0 kernel[1] because the driver
should be matched with telephony and modem-util package.

Kamil brought the driver from linux-3.4-exynos, but the driver didn't
match the current telephony daemon and modem util. Data communication
didn't work with the driver. So, I decided to regress to old driver.

Tizen Modem Team doesn't have any plan to update latest version of
modem package. To maintain consistency of the interface, I picked
the driver from linux-3.0 tree.

[1] : https://review.tizen.org/gerrit/gitweb?p=kernel%2Flinux-3.0.git;a=summary

Change-Id: I6123f4dc149dcc38e1ae339f950f94fdc0c033f9
Signed-off-by: Chanho Park <chanho61.park@samsung.com>
9 years agophy: exynos4212-usb: Use refcount to power device PHY for HSIC0
Tomasz Figa [Thu, 24 Apr 2014 11:25:34 +0000 (13:25 +0200)]
phy: exynos4212-usb: Use refcount to power device PHY for HSIC0

HSIC0 requires device PHY to be powered up and the driver handles that
already, but there is no reference counting of device PHY power state,
so unplugging USB cable powers it down, breaking modem IF operation.

This patch fixes the issue by adding handling of reference counting of
device PHY to HSIC0 power-down/-up.

Signed-off-by: Tomasz Figa <t.figa@samsung.com>
Change-Id: I14b1825fec3cd9c1b2652b89f275a50c73359ad6

9 years agomisc: modem_if: Use pinctrl to properly configure pins
Tomasz Figa [Wed, 23 Apr 2014 15:58:20 +0000 (17:58 +0200)]
misc: modem_if: Use pinctrl to properly configure pins

Configuring an interrupt pin as output/input manually using
gpio_direction_*() breaks interrupt settings and must not be done.

This patch adds necessary code to enable pull-down for interrupt pin
using pinctrl API instead of setting the pin to low output to fix
issues with missing modem interrupts.

Signed-off-by: Tomasz Figa <t.figa@samsung.com>
Change-Id: Ie56d84ace1941cef3199fea99d7eb907bb9b5c03

9 years agomfd: max77686: Add suspend/resume callback function for alarm wake-up.
Jonghwa Lee [Tue, 22 Apr 2014 04:56:18 +0000 (13:56 +0900)]
mfd: max77686: Add suspend/resume callback function for alarm wake-up.

While system is resuming, Max77686's Alarm IRQ should be handled after resuming
of i2c controller. It disables IRQ in suspend callback funtion and enables
it in resume callback to postpone handling.

Change-Id: I69f5af2f8b63748853d0ba8a67f0cbb661e1ffcd
Signed-off-by: Jonghwa Lee <jonghwa3.lee@samsung.com>
9 years agomedia: vb2-dma-contig: add a hack to speed up cache management
Marek Szyprowski [Tue, 22 Apr 2014 11:14:08 +0000 (13:14 +0200)]
media: vb2-dma-contig: add a hack to speed up cache management

In most cases video processing is done with coherent (non-cachable) userspace mappings. In such case for USERPTR mode cache management can
be skipped. This patch introduces code for such optimisation. It is called
a hack, because it is not possible in generic way to detect if the
given userspace mapping is coherent on not.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Change-id: I86aa292455371f1b18eb3f6b765234dc04ff937b

9 years agoarm: dts: trats2: Remove max77686's LDO22 regulator's 'always-on' flag.
Jonghwa Lee [Tue, 22 Apr 2014 14:04:08 +0000 (23:04 +0900)]
arm: dts: trats2: Remove max77686's LDO22 regulator's 'always-on' flag.

In trats2, LDO22 is used to eMMC's source voltage. And it can be controlled
by EN22 gpio pin. If LDO22 regulator is set to 'Always On' mode at software
reset, device will hang some seconds. Leave it controlled by EN22, then no
delay on reboot.

Change-Id: I012bb20bffa42e5ba7887863ef29cb2c473430cb
Signed-off-by: Jonghwa Lee <jonghwa3.lee@samsung.com>
9 years agoASoC: samsung: Remove obsolete GPIO based DT pinmuxing
Mark Brown [Tue, 2 Jul 2013 12:10:28 +0000 (13:10 +0100)]
ASoC: samsung: Remove obsolete GPIO based DT pinmuxing

Since the Samsung platforms have moved to pinctrl for pin muxing and that
is handled in the core the old GPIO based muxing code can just be removed.
Something similar had been submitted by Thomas Abraham back in March but
a resubmission following review never happened.

Change-Id: I5a5813d51eeaefbb7e5c54fda05c1361a0798db2
Signed-off-by: Mark Brown <broonie@linaro.org>
9 years agoRevert "ASoC: samsung: Add pinctrl support to I2S driver"
Sylwester Nawrocki [Thu, 17 Apr 2014 18:50:21 +0000 (20:50 +0200)]
Revert "ASoC: samsung: Add pinctrl support to I2S driver"

This reverts commit 2b0c7de1eaf0e25c69ed1e4b21675ab97c6a4bdf,
which is not needed since pinctrl is handled by the driver core.

Change-Id: I0f204f15a39e07083375067fc828cf46bdb78360
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
9 years agos5p-mfc: Remove unused variable
Sylwester Nawrocki [Thu, 17 Apr 2014 17:01:22 +0000 (19:01 +0200)]
s5p-mfc: Remove unused variable

This fixes following compilation warning:

drivers/media/platform/s5p-mfc/s5p_mfc_dec.c: In function â€˜s5p_mfc_buf_prepare’:
drivers/media/platform/s5p-mfc/s5p_mfc_dec.c:1045:15: warning: unused variable â€˜index’ [-Wunused-variable]

Change-Id: Id6c0c264c7169871df116ba6496b2e08e2638844
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
9 years agomisc: modem_if: initialize gpio_link_enable if invalid gpio
Chanho Park [Mon, 21 Apr 2014 07:24:33 +0000 (16:24 +0900)]
misc: modem_if: initialize gpio_link_enable if invalid gpio

This patch fixes invalid gpio value caused by 47c53475 commit.
The gpio_link_enable should be initialized to 0 if not provided

Change-Id: Ie22a2a60a2b713a3be9f141a5dc5c71d4adeb667
Signed-off-by: Chanho Park <chanho61.park@samsung.com>
9 years agomodem_if: Change hardcoded link enable gpio value
Beomho Seo [Fri, 18 Apr 2014 09:31:24 +0000 (18:31 +0900)]
modem_if: Change hardcoded link enable gpio value

Currently, link enable gpio is hardecoded to zero.
Zero equal gpa0-0 value. It is value for uart rxd line.
If link enable gpio is unused, it is don't have to call gpio request.
This patch change to set line enable gpio value optionally, and
remove unused variable 'ret'.

Change-Id: I4095d57d76362722abd5c5fd92ef529772680d97
Signed-off-by: Beomho Seo <beomho.seo@samsung.com>
9 years agoARM: dts: exynos4412: remove duplicated mshc device node
Beomho Seo [Fri, 18 Apr 2014 05:45:03 +0000 (14:45 +0900)]
ARM: dts: exynos4412: remove duplicated mshc device node

MSHC device node are exsited both exynos4412 and exynos4x12
device tree. This patch remove duplicated mshc device node
on exynos4412 device tree.

Change-Id: Ib247d172006e916bac3489f5d0bf4958814364f5
Signed-off-by: Beomho Seo <beomho.seo@samsung.com>
9 years agoARM: dts: exynos4412-trats2: remove incorrect device node
Beomho Seo [Fri, 18 Apr 2014 02:04:21 +0000 (11:04 +0900)]
ARM: dts: exynos4412-trats2: remove incorrect device node

After the dts cleanup the gpio-keys device nodes were duplicated for trats2.
One of them is incorrect. As a result volume up/down key not working.
This patch remove duplicated and incorrect gpio-keys device node.

Change-Id: I44c9529b25a28d41ea451861727d7aa84211976e
Signed-off-by: Beomho Seo <beomho.seo@samsung.com>
9 years agoASoC: Samsung: correct code in order to get op_clk
Chen Zhen [Wed, 9 Apr 2014 12:50:46 +0000 (20:50 +0800)]
ASoC: Samsung: correct code in order to get op_clk

when i2s->op_clk is NULL we should do clk_get() before clk_get_rate() call ,
rather than calling clk_get_rate() on NULL clk, which will returns 0.

Change-Id: Ic82be597d8e4c27dd670d8d56630c3572e8f7d73
Signed-off-by: Chen Zhen <zhen1.chen@samsung.com>
9 years agoarm: config: tizen: add support for libvirt
Dariusz Michaluk [Mon, 14 Apr 2014 15:30:33 +0000 (17:30 +0200)]
arm: config: tizen: add support for libvirt

libvirt is a toolkit to interact with LXC(Linux kernel containers)
current libvirt-lxc driver need some additional kernel features:
1. Control groups (cgroups)
        CONFIG_CGROUP_DEVICE
        CONFIG_CPUSETS
2. CFS Scheduler
        CONFIG_CFS_BANDWIDTH
3. Multiple instances of devpts filesystem
        CONFIG_DEVPTS_MULTIPLE_INSTANCES
4. Kernel bridging
        CONFIG_BRIDGE_NETFILTER
        CONFIG_NETFILTER_XT_TARGET_CHECKSUM
        CONFIG_STP
        CONFIG_BRIDGE
        CONFIG_BRIDGE_IGMP_SNOOPING
        CONFIG_BRIDGE_VLAN_FILTERING
        CONFIG_LLC
5. VLAN interface
        CONFIG_VLAN_8021Q
        CONFIG_MACVLAN
        CONFIG_VETH
        CONFIG_TUN

Change-Id: I7c09743d1953b8ddbea99afc8e821c2dd9b826a7
Signed-off-by: Dariusz Michaluk <d.michaluk@samsung.com>
9 years agocpuidle:AFTR: Enable STANDBY_WFI0 and STANDBY_WFE0 for cpu0 in AFTR mode
Lukasz Majewski [Fri, 11 Apr 2014 11:52:09 +0000 (13:52 +0200)]
cpuidle:AFTR: Enable STANDBY_WFI0 and STANDBY_WFE0 for cpu0 in AFTR mode

Enabling of CORE0 idle state is based on the state of STANDBYWFI/STANDBYWFE
internal signal.

Change-Id: I43675fa312ce879f3741644057991bdb33f6cd55
Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agocpuidle:clk:Exynos4412: Enable support for clock down when WFI cpuidle state is entered
Lukasz Majewski [Thu, 10 Apr 2014 14:46:08 +0000 (16:46 +0200)]
cpuidle:clk:Exynos4412: Enable support for clock down when WFI cpuidle state is entered

This patch adds support for setting ARM cores' clock frequency down when
entering WFI/WFE based cpuidle state.

On the Trats2 device: performance governor, 1.4 GHz frequency, no extra
load, 4 cores enabled:
Without core clock down feature: 395 mA
With core clock down feature: 337 mA

Power consumption reduction around 15%

Change-Id: I7bae29b0332a97c7b18ffb79f4b0a5ff3d70b7ce
Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agocpuidle:exynos:AFTR: Use secure monitor calls to enable entering AFTR
Lukasz Majewski [Thu, 10 Apr 2014 10:38:42 +0000 (12:38 +0200)]
cpuidle:exynos:AFTR: Use secure monitor calls to enable entering AFTR

Secure monitor calls are necessary to enter the AFTR low power mode on the
trats2 device.

Without them it is not possible to access certain CP15 registers (e.g.
Power Control Register).

Change-Id: I8f91acb80acdbd43c86a679d69037be041d76309
Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agodrm/exynos: add dmabuf sync support for kms framework
Inki Dae [Tue, 17 Sep 2013 12:01:47 +0000 (21:01 +0900)]
drm/exynos: add dmabuf sync support for kms framework

Change-Id: I5937869e5fa2ec2a41e864494eac0077ccdbdb51
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agoARM: dts: Add missing aliases entry for i2c-mhl node
Sylwester Nawrocki [Fri, 11 Apr 2014 09:08:34 +0000 (11:08 +0200)]
ARM: dts: Add missing aliases entry for i2c-mhl node

This fixes regression introduced in commit 10d282f12d57a467a83a
ARM: exynos: dts: cleanup the dts file for trats2

Without an alias the i2c-mhl get dynamically assigned an I2C bus
id 0 which is assigned in DT to the I2C0 hardware controller.
As a result I2C0 hardware controller fails to initialize which
in turn breaks the camera subsystem driver initialization.

Change-Id: I92c254cc1d93899b277761b750b0e657c2daad95
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
9 years agoARM: odroidx2: update defconfig to enable Audio
Chen Zhen [Wed, 9 Apr 2014 01:57:05 +0000 (09:57 +0800)]
ARM: odroidx2: update defconfig to enable Audio

This enables the necessary configuration for audio,such as SND_TIMER,SND_PCM,SND_JACK,
I2S and so on.

Change-Id: I6cb157e28529ba5a3756f5df5ddf19a2d59fe3ca
Signed-off-by: Chen Zhen <zhen1.chen@samsung.com>
9 years agoARM: dts: odroidx2: add i2s node and sound node for audio
ChenZhen [Thu, 27 Mar 2014 01:39:05 +0000 (09:39 +0800)]
ARM: dts: odroidx2: add i2s node and sound node for audio

In order to config a integrated audio path,it's necessary to define
the bus type and codec which we used.

Change-Id: I4a65d45b5cec4b81ce1a93deaa614020d6a17ae7
Signed-off-by: Chen Zhen <zhen1.chen@samsung.com>
9 years agomedia: s5p_mfc: fix doublly free issue
Zhaowei Yuan [Wed, 2 Apr 2014 07:58:36 +0000 (15:58 +0800)]
media: s5p_mfc: fix doublly free issue

When video_register_device() returns failure, vfd will be freed at once and
dev->vfl_dec will be freed after label "err_dec_reg", but the two pointers point
to the same area, so it was doublly freed here. Since video_device_release()
will be called by video_unregister_device() indirectly, we should remove the
two other calls after labels err_enc_reg and err_dec_reg.

Change-Id: I5ee8f83eeb47443e2f772914127514eab996c347
Signed-off-by: Zhaowei Yuan <zhaowei.yuan@samsung.com>
9 years agoASoC: samsung: add machine driver for odroidx2
Chen Zhen [Fri, 28 Mar 2014 03:35:25 +0000 (11:35 +0800)]
ASoC: samsung: add machine driver for odroidx2

This machine driver primary define the audio path,the supported data format and
sample frequency.

Change-Id: I2cdb5f6f65b67d0039f234930210f75c1be9fe38
Signed-off-by: Chen Zhen <zhen1.chen@samsung.com>
9 years agoASoC: Samsung: Do not queue cyclic buffers multiple times
Tomasz Figa [Sun, 11 Aug 2013 17:59:21 +0000 (19:59 +0200)]
ASoC: Samsung: Do not queue cyclic buffers multiple times

The legacy S3C-DMA API required every period of a cyclic buffer to be
queued separately. After conversion of Samsung ASoC to Samsung DMA
wrappers somebody made an assumption that the same is needed for DMA
engine API, which is not true.

In effect, Samsung ASoC DMA code was queuing the whole cyclic buffer
multiple times with a shift of one period per iteration, leading to:
  a) severe memory waste - up to 13x times more DMA transfer descriptors
     are allocated than needed,
  b) possible memory corruption, because further cyclic buffers were out
     of the original buffers, due to the offset.

This patch fixes this problem by making the legacy S3C-DMA API use the
same semantics as DMA engine (the whole cyclic buffer is enqueued at
once) and modifying users of Samsung DMA wrappers in cyclic mode to
behave appropriately.

Change-Id: Ib9e656c40ef71e2e90af3f008959eeae19ce7d7e
Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Mark Brown <broonie@linaro.org>
9 years agoEnable seccomp in tizen_defconfig arm configuration
Zofia Abramowska [Thu, 13 Mar 2014 13:36:33 +0000 (14:36 +0100)]
Enable seccomp in tizen_defconfig arm configuration

Enabling seccomp and seccomp filters due to future seccomp related
work on platform for limiting access to system for unprivileged
applications.

Change-Id: Ib067d5510e06d89e539537485fecd63e9bd92c40
Signed-off-by: Zofia Abramowska <z.abramowska@samsung.com>
9 years agoRemoving s3c-rtc status override for exynos4412-trats2.
Marcin Niesluchowski [Wed, 26 Mar 2014 10:08:52 +0000 (11:08 +0100)]
Removing s3c-rtc status override for exynos4412-trats2.

s3c-rtc is not functioning - initializing its value on every boot.
As registering rtc devices is non-deterministic, s3c-rtc may be
registered under rtc0 and rtc0 is default device for setting and
getting hardware time (hwclock). Another working rtc driver is
enabled.

Change-Id: I651da859db6ad9b35d422288845c0bebbcf540f5
Signed-off-by: Marcin Niesluchowski <m.niesluchow@samsung.com>
9 years agocpufreq:LAB: Change method of boost state preserving
Lukasz Majewski [Wed, 2 Apr 2014 10:31:57 +0000 (12:31 +0200)]
cpufreq:LAB: Change method of boost state preserving

It is not necessary to change the boost state when LAB governor is entered,
since LAB will change it according to its own politics. Only enter state
is preserved.

When leaving the LAB, only when required, work is scheduled to restore boost
initial state.

Change-Id: I6323f3c0011fe54a33d70c9ad0f9da5360b4a735
Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agocpufreq:governor: Add serialization to the cpufreq_governor_dbs() function
Lukasz Majewski [Wed, 2 Apr 2014 10:14:25 +0000 (12:14 +0200)]
cpufreq:governor: Add serialization to the cpufreq_governor_dbs() function

It is necessary to serialize access to cpufreq_governor_dbs() function, since
it can be accessed from different, not protected by any mutex paths like
sysfs boost attribute or LAB governor internals.

Change-Id: Id7b62db6ca0b7c28f5e8c6286aec312d3d0c971e
Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
9 years agomedia: s5p_mfc: remove the code checking dev->plat_dev
Zhaowei Yuan [Wed, 2 Apr 2014 07:22:33 +0000 (15:22 +0800)]
media: s5p_mfc: remove the code checking dev->plat_dev

We should remove the code checking dev->plat_dev since we
can ensure the pointer pdev can not be NULL.

Change-Id: Ibdc44403068ee4462e414d6e84757b8a4c2b512c
Signed-off-by: Zhaowei Yuan <zhaowei.yuan@samsung.com>
9 years agoARM: dts: set mmc clock-frequency for odroidx2
Donghwa Lee [Mon, 31 Mar 2014 02:31:56 +0000 (11:31 +0900)]
ARM: dts: set mmc clock-frequency for odroidx2

from: Jaehoon Chung <jh80.chung@samsung.com>

set mmc clock-frequency to 400MHZ for odroidx2

Change-Id: I94b9dccbdd8091e333debbe8b06a881bf3ea7ee9
Signed-off-by: Donghwa Lee <dh09.lee@samsung.com>
Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
9 years agomedia: s5p-mfc: add to set clock rate
Donghwa Lee [Mon, 31 Mar 2014 02:13:09 +0000 (11:13 +0900)]
media: s5p-mfc: add to set clock rate

from: Seung-Woo Kim <sw0312.kim@samsung.com>

MFC needs 200MHz for sclk_mfc clock to work properly. The clock
rate setting was missed, so this patch adds it.

Change-Id: Ica696a5fda2babe81e885945fa5affd0b09ff5ba
Signed-off-by: Donghwa Lee <dh09.lee@samsung.com>
Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
9 years agoclocksource: exynos_mct: Change exynos4_mct_tick_clear return type to void
Krzysztof Kozlowski [Mon, 24 Mar 2014 09:01:32 +0000 (10:01 +0100)]
clocksource: exynos_mct: Change exynos4_mct_tick_clear return type to void

Return value of exynos4_mct_tick_clear() was never checked so it can
be safely changed to void.

Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Change-Id: I14f872e244434002005c532adf8afc97ef77cea5

9 years agoclocksource: exynos_mct: Fix stall after CPU hotplugging
Krzysztof Kozlowski [Mon, 24 Mar 2014 08:27:22 +0000 (09:27 +0100)]
clocksource: exynos_mct: Fix stall after CPU hotplugging

Fix stall after hotplugging CPU1. The stall was a result of starting the
CPU1 local timer not in L1 timer but in L0 (which is used by CPU0).

Stall information:
[  530.045259] INFO: rcu_preempt detected stalls on CPUs/tasks:
[  530.045618]  1: (6 GPs behind) idle=6d0/0/0 softirq=369/369
[  530.050987]  (detected by 0, t=6589 jiffies, g=33, c=32, q=0)
[  530.056721] Task dump for CPU 1:
[  530.059928] swapper/1       R running      0     0      1 0x00001000
[  530.066377] [<c0524e14>] (__schedule+0x414/0x9b4) from [<c00b6610>] (rcu_idle_enter+0x18/0x38)
[  530.074955] [<c00b6610>] (rcu_idle_enter+0x18/0x38) from [<c0079a18>] (cpu_startup_entry+0x60/0x3bc)
[  530.084069] [<c0079a18>] (cpu_startup_entry+0x60/0x3bc) from [<c0517d34>] (secondary_start_kernel+0x164/0x1a0)
[  530.094029] [<c0517d34>] (secondary_start_kernel+0x164/0x1a0) from [<40517244>] (0x40517244)

The timers for CPU1 were missed:
[  591.668436] cpu: 1
[  591.670430]  clock 0:
[  591.672691]   .base:       c0ab7750
[  591.676160]   .index:      0
[  591.679025]   .resolution: 1 nsecs
[  591.682404]   .get_time:   ktime_get
[  591.685970]   .offset:     0 nsecs
[  591.689349] active timers:
[  591.692045]  #0: <dfb51f40>, hrtimer_wakeup, S:01
[  591.696759]  # expires at 454687834257-454687884257 nsecs [in -136770537232 to -136770487232 nsecs]

And the event_handler for next event was wrong:
[  591.917120] Tick Device: mode:     1
[  591.920676] Per CPU device: 0
[  591.923621] Clock Event Device: mct_tick0
[  591.927623]  max_delta_ns:   178956969027
[  591.931613]  min_delta_ns:   1249
[  591.934913]  mult:           51539608
[  591.938557]  shift:          32
[  591.941681]  mode:           3
[  591.944724]  next_event:     595025000000 nsecs
[  591.949227]  set_next_event: exynos4_tick_set_next_event
[  591.954522]  set_mode:       exynos4_tick_set_mode
[  591.959296]  event_handler:  hrtimer_interrupt
[  591.963730]  retries:        0
[  591.966761]
[  591.968245] Tick Device: mode:     0
[  591.971801] Per CPU device: 1
[  591.974746] Clock Event Device: mct_tick1
[  591.978750]  max_delta_ns:   178956969027
[  591.982739]  min_delta_ns:   1249
[  591.986037]  mult:           51539608
[  591.989681]  shift:          32
[  591.992806]  mode:           3
[  591.995848]  next_event:     453685000000 nsecs
[  592.000353]  set_next_event: exynos4_tick_set_next_event
[  592.005648]  set_mode:       exynos4_tick_set_mode
[  592.010421]  event_handler:  tick_handle_periodic
[  592.015115]  retries:        0
[  592.018145]

After turning off the CPU1, the MCT L1 local timer was disabled but the
interrupt was not cleared. Turning on the CPU1 enabled the IRQ
with setup_irq() but, before setting affinity to CPU1, the pending L1 timer
interrupt was processed by CPU0 in exynos4_mct_tick_isr().

The ISR then called event handler which set up the next timer event for
current CPU (CPU0). Therefore the MCT L1 timer wasn't actually started.

Fix the stall by:
1. Setting next timer event not on current CPU but on the CPU indicated
by cpumask in 'clock_event_device'.
2. Clearing the timer interrupt upon stopping the local timer.

The patch also moves around the call to exynos4_mct_tick_stop() but this
is done only for the code readability as it is not essential for the fix.

Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Change-Id: I3a1a23e2b970661b5f7c60fc633a7545aa80ed5e

9 years agocpufreq: serialize calls to __cpufreq_governor()
Viresh Kumar [Sat, 31 Aug 2013 12:18:23 +0000 (17:48 +0530)]
cpufreq: serialize calls to __cpufreq_governor()

We can't take a big lock around __cpufreq_governor() as this causes
recursive locking for some cases. But calls to this routine must be
serialized for every policy. Otherwise we can see some unpredictable
events.

For example, consider following scenario:

__cpufreq_remove_dev()
 __cpufreq_governor(policy, CPUFREQ_GOV_STOP);
   policy->governor->governor(policy, CPUFREQ_GOV_STOP);
    cpufreq_governor_dbs()
     case CPUFREQ_GOV_STOP:
      mutex_destroy(&cpu_cdbs->timer_mutex)
      cpu_cdbs->cur_policy = NULL;
  <PREEMPT>
store()
 __cpufreq_set_policy()
  __cpufreq_governor(policy, CPUFREQ_GOV_LIMITS);
    policy->governor->governor(policy, CPUFREQ_GOV_LIMITS);
     case CPUFREQ_GOV_LIMITS:
      mutex_lock(&cpu_cdbs->timer_mutex); <-- Warning (destroyed mutex)
       if (policy->max < cpu_cdbs->cur_policy->cur) <- cur_policy == NULL

And so store() will eventually result in a crash if cur_policy is
NULL at this point.

Introduce an additional variable which would guarantee serialization
here.

Change-Id: Ibae767cbd9c25c7598b39d1405fa3d98d2125101
Reported-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
9 years agocpufreq: Fix serialization of frequency transitions
Viresh Kumar [Tue, 2 Jul 2013 11:06:28 +0000 (16:36 +0530)]
cpufreq: Fix serialization of frequency transitions

Commit 7c30ed ("cpufreq: make sure frequency transitions are serialized")
interacts poorly with systems that have a single core freqency for all
cores.  On such systems we have a single policy for all cores with
several CPUs.  When we do a frequency transition the governor calls the
pre and post change notifiers which causes cpufreq_notify_transition()
per CPU.  Since the policy is the same for all of them all CPUs after
the first and the warnings added are generated by checking a per-policy
flag the warnings will be triggered for all cores after the first.

Fix this by allowing notifier to be called for n times. Where n is the number of
cpus in policy->cpus.

Change-Id: I5712dde7f992644f9c3ddc8313151f80bea0d877
Reported-and-tested-by: Mark Brown <broonie@linaro.org>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
9 years agocpufreq: make sure frequency transitions are serialized
Viresh Kumar [Wed, 19 Jun 2013 04:46:55 +0000 (10:16 +0530)]
cpufreq: make sure frequency transitions are serialized

Whenever we are changing frequency of a cpu, we are calling PRECHANGE and
POSTCHANGE notifiers. They must be serialized. i.e. PRECHANGE or POSTCHANGE
shouldn't be called twice contiguously.

This can happen due to bugs in users of __cpufreq_driver_target() or actual
cpufreq drivers who are sending these notifiers.

This patch adds some protection against this. Now, we keep track of the last
transaction and see if something went wrong.

Change-Id: I0f5465bd515c431ae2d3711d065f70aacec7e978
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
9 years agocpufreq: remove unnecessary cpufreq_cpu_{get|put}() calls
Viresh Kumar [Fri, 31 May 2013 06:15:08 +0000 (06:15 +0000)]
cpufreq: remove unnecessary cpufreq_cpu_{get|put}() calls

struct cpufreq_policy is already passed as argument to some routines
like: __cpufreq_driver_getavg() and so we don't really need to do
cpufreq_cpu_get() before and cpufreq_cpu_put() in them to get a
policy structure.

Remove them.

Change-Id: I6a9ff8ed483a4f4faacc2ea047d93354dccdb0b6
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
9 years agoASoC: max98090: Add of_match_table
ChenZhen [Tue, 25 Mar 2014 07:52:50 +0000 (15:52 +0800)]
ASoC: max98090: Add of_match_table

It's necessary to add of_match_table to match driver.

Change-Id: I7c09aef9a3f54180041398009b9141142de54ea4
Signed-off-by: ChenZhen <zhen1.chen@samsung.com>
9 years agoARM: dts: odroidx2: add i2c1 node for max98090
ChenZhen [Tue, 25 Mar 2014 01:54:52 +0000 (09:54 +0800)]
ARM: dts: odroidx2: add i2c1 node for max98090

Add i2c1 node for the codec driver max98090.

Change-Id: Ib6afaf7574827540281959a1f8338d50e221df39
Signed-off-by: ChenZhen <zhen1.chen@samsung.com>