[Bug 63520] r300g regression (RV380): Strange rendering of light sources in Penumbra (bisected)

2013-04-29 Thread bugzilla-dae...@freedesktop.org
https://bugs.freedesktop.org/show_bug.cgi?id=63520

--- Comment #6 from PJBrs  ---
Created attachment 78617
  --> https://bugs.freedesktop.org/attachment.cgi?id=78617=edit
Last good penumbra output with RADEON_DEBUG=fp,vp

-- 
You are receiving this mail because:
You are the assignee for the bug.
-- next part --
An HTML attachment was scrubbed...
URL: 
<http://lists.freedesktop.org/archives/dri-devel/attachments/20130429/78240480/attachment.html>


[Bug 63520] r300g regression (RV380): Strange rendering of light sources in Penumbra (bisected)

2013-04-29 Thread bugzilla-dae...@freedesktop.org
https://bugs.freedesktop.org/show_bug.cgi?id=63520

--- Comment #5 from PJBrs  ---
Created attachment 78616
  --> https://bugs.freedesktop.org/attachment.cgi?id=78616=edit
First bad penumbra output with RADEON_DEBUG=fp,vp

-- 
You are receiving this mail because:
You are the assignee for the bug.
-- next part --
An HTML attachment was scrubbed...
URL: 
<http://lists.freedesktop.org/archives/dri-devel/attachments/20130429/94125b75/attachment.html>


[Bug 63520] r300g regression (RV380): Strange rendering of light sources in Penumbra (bisected)

2013-04-29 Thread bugzilla-dae...@freedesktop.org
https://bugs.freedesktop.org/show_bug.cgi?id=63520

--- Comment #4 from PJBrs  ---
I've run the Penumbra Requiem game with RADEON_DEBUG=fp,vp and captured the
output. I made two attachments. The file named "Goodlog" is the log with mesa
version snb_magic_9030_g342cac7 (commit
342cac71669662abad3435fd13ecf28d073874c3). The file named "badlog" is the
output with mesa version snb-magic-9031-g134a0a5 (commit
134a0a5ff88851c971fb95863317f640b5b9fa3a). Let me know if any other information
is needed.

-- 
You are receiving this mail because:
You are the assignee for the bug.
-- next part --
An HTML attachment was scrubbed...
URL: 
<http://lists.freedesktop.org/archives/dri-devel/attachments/20130429/ea33bf0d/attachment.html>


[PATCH 4/4] ARM: EXYNOS: remove parent device for hdmiphy clock

2013-04-29 Thread Rahul Sharma
Hdmiphy clock flows from hdmiphy hw to hdmi ip and mixer. It is commonly
accessed among hdmi and hdmiphy driver. During power cycle, each of these
driver decrements the ref-count and ensures that last user disables the
clock. Setting parrent device to none ensure that both the drivers gets
access to the clock.

Signed-off-by: Rahul Sharma 
---
 arch/arm/mach-exynos/clock-exynos4.c |1 -
 arch/arm/mach-exynos/clock-exynos5.c |1 -
 2 files changed, 2 deletions(-)

diff --git a/arch/arm/mach-exynos/clock-exynos4.c 
b/arch/arm/mach-exynos/clock-exynos4.c
index 8a8468d..a43afcd 100644
--- a/arch/arm/mach-exynos/clock-exynos4.c
+++ b/arch/arm/mach-exynos/clock-exynos4.c
@@ -562,7 +562,6 @@ static struct clk exynos4_init_clocks_off[] = {
.ctrlbit= (1 << 3),
}, {
.name   = "hdmiphy",
-   .devname= "exynos4-hdmi",
.enable = exynos4_clk_hdmiphy_ctrl,
.ctrlbit= (1 << 0),
}, {
diff --git a/arch/arm/mach-exynos/clock-exynos5.c 
b/arch/arm/mach-exynos/clock-exynos5.c
index b0ea31f..4f39027 100644
--- a/arch/arm/mach-exynos/clock-exynos5.c
+++ b/arch/arm/mach-exynos/clock-exynos5.c
@@ -690,7 +690,6 @@ static struct clk exynos5_init_clocks_off[] = {
.ctrlbit= (1 << 6),
}, {
.name   = "hdmiphy",
-   .devname= "exynos5-hdmi",
.enable = exynos5_clk_hdmiphy_ctrl,
.ctrlbit= (1 << 0),
}, {
-- 
1.7.10.4



[PATCH 3/4] drm/exynos: hdmi: move hdmiphy callbacks to hdmiphy driver

2013-04-29 Thread Rahul Sharma
Hdmiphy callbacks are tighly coupled with hdmi IP callbacks inside
the hdmi driver. With increase in the support of different versions of
hdmiphys, hdmi ip driver expanding with lots of phy related information.
Above movement ensures that phy related code is present and maintained
within the hdmiphy driver.

This also helps in providing clean support for various combinations of hdmi
IPs and hdmiphys through 2 independent set of compatible strings. Earlier
each compatible string represents a combination of hdmi ip and phy. This
forces to use separate compatible string when one of the above block is
changed but the other one is not, which is not proper.

Signed-off-by: Rahul Sharma 
---
 drivers/gpu/drm/exynos/exynos_hdmi.c|  345 +--
 drivers/gpu/drm/exynos/exynos_hdmiphy.c |  574 ++-
 drivers/gpu/drm/exynos/regs-hdmiphy.h   |   61 
 3 files changed, 645 insertions(+), 335 deletions(-)
 create mode 100644 drivers/gpu/drm/exynos/regs-hdmiphy.h

diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c 
b/drivers/gpu/drm/exynos/exynos_hdmi.c
index 520c4af..b03fea9 100644
--- a/drivers/gpu/drm/exynos/exynos_hdmi.c
+++ b/drivers/gpu/drm/exynos/exynos_hdmi.c
@@ -171,7 +171,6 @@ struct hdmi_v14_conf {
 };

 struct hdmi_conf_regs {
-   int pixel_clock;
int cea_video_id;
union {
struct hdmi_v13_conf v13_conf;
@@ -192,7 +191,6 @@ struct hdmi_context {
int irq;

struct i2c_client   *ddc_port;
-   struct i2c_client   *hdmiphy_port;

/* current hdmiphy conf regs */
struct hdmi_conf_regs   mode_conf;
@@ -204,180 +202,6 @@ struct hdmi_context {
enum hdmi_type  type;
 };

-struct hdmiphy_config {
-   int pixel_clock;
-   u8 conf[32];
-};
-
-/* list of phy config settings */
-static const struct hdmiphy_config hdmiphy_v13_configs[] = {
-   {
-   .pixel_clock = 2700,
-   .conf = {
-   0x01, 0x05, 0x00, 0xD8, 0x10, 0x1C, 0x30, 0x40,
-   0x6B, 0x10, 0x02, 0x51, 0xDF, 0xF2, 0x54, 0x87,
-   0x84, 0x00, 0x30, 0x38, 0x00, 0x08, 0x10, 0xE0,
-   0x22, 0x40, 0xE3, 0x26, 0x00, 0x00, 0x00, 0x00,
-   },
-   },
-   {
-   .pixel_clock = 27027000,
-   .conf = {
-   0x01, 0x05, 0x00, 0xD4, 0x10, 0x9C, 0x09, 0x64,
-   0x6B, 0x10, 0x02, 0x51, 0xDF, 0xF2, 0x54, 0x87,
-   0x84, 0x00, 0x30, 0x38, 0x00, 0x08, 0x10, 0xE0,
-   0x22, 0x40, 0xE3, 0x26, 0x00, 0x00, 0x00, 0x00,
-   },
-   },
-   {
-   .pixel_clock = 74176000,
-   .conf = {
-   0x01, 0x05, 0x00, 0xD8, 0x10, 0x9C, 0xef, 0x5B,
-   0x6D, 0x10, 0x01, 0x51, 0xef, 0xF3, 0x54, 0xb9,
-   0x84, 0x00, 0x30, 0x38, 0x00, 0x08, 0x10, 0xE0,
-   0x22, 0x40, 0xa5, 0x26, 0x01, 0x00, 0x00, 0x00,
-   },
-   },
-   {
-   .pixel_clock = 7425,
-   .conf = {
-   0x01, 0x05, 0x00, 0xd8, 0x10, 0x9c, 0xf8, 0x40,
-   0x6a, 0x10, 0x01, 0x51, 0xff, 0xf1, 0x54, 0xba,
-   0x84, 0x00, 0x10, 0x38, 0x00, 0x08, 0x10, 0xe0,
-   0x22, 0x40, 0xa4, 0x26, 0x01, 0x00, 0x00, 0x00,
-   },
-   },
-   {
-   .pixel_clock = 14850,
-   .conf = {
-   0x01, 0x05, 0x00, 0xD8, 0x10, 0x9C, 0xf8, 0x40,
-   0x6A, 0x18, 0x00, 0x51, 0xff, 0xF1, 0x54, 0xba,
-   0x84, 0x00, 0x10, 0x38, 0x00, 0x08, 0x10, 0xE0,
-   0x22, 0x40, 0xa4, 0x26, 0x02, 0x00, 0x00, 0x00,
-   },
-   },
-};
-
-static const struct hdmiphy_config hdmiphy_v14_configs[] = {
-   {
-   .pixel_clock = 2520,
-   .conf = {
-   0x01, 0x51, 0x2A, 0x75, 0x40, 0x01, 0x00, 0x08,
-   0x82, 0x80, 0xfc, 0xd8, 0x45, 0xa0, 0xac, 0x80,
-   0x08, 0x80, 0x11, 0x04, 0x02, 0x22, 0x44, 0x86,
-   0x54, 0xf4, 0x24, 0x00, 0x00, 0x00, 0x01, 0x80,
-   },
-   },
-   {
-   .pixel_clock = 2700,
-   .conf = {
-   0x01, 0xd1, 0x22, 0x51, 0x40, 0x08, 0xfc, 0x20,
-   0x98, 0xa0, 0xcb, 0xd8, 0x45, 0xa0, 0xac, 0x80,
-   0x06, 0x80, 0x11, 0x04, 0x02, 0x22, 0x44, 0x86,
-   0x54, 0xe4, 0x24, 0x00, 0x00, 0x00, 0x01, 0x80,
-   },
-   },
-   {
-   .pixel_clock = 27027000,
-   .conf = {
-   0x01, 0xd1, 0x2d, 0x72, 0x40, 0x64, 0x12, 0x08,
-   0x43, 0xa0, 0x0e, 0xd9, 0x45, 0xa0, 

[PATCH 2/4] drm/exynos: hdmi: register hdmiphy driver from common drm hdmi

2013-04-29 Thread Rahul Sharma
hdmiphy hardware block is a physically separate device. Hdmiphy driver
is glued inside hdmi driver and acessed through hdmi callbacks. With
increasing diversities in the hdmiphy mapping and configurations, hdmi
driver is expanding with un-related changes.

This patch registers hdmiphy as a independent driver, having own set
of requried callbacks which are called by common drm hdmi, parallel to
hdmi and mixer driver.

Signed-off-by: Rahul Sharma 
---
 drivers/gpu/drm/exynos/exynos_drm_hdmi.c |   61 +++---
 drivers/gpu/drm/exynos/exynos_drm_hdmi.h |   17 +
 drivers/gpu/drm/exynos/exynos_hdmi.c |   26 ++---
 drivers/gpu/drm/exynos/exynos_hdmi.h |1 -
 drivers/gpu/drm/exynos/exynos_hdmiphy.c  |   13 ++-
 5 files changed, 87 insertions(+), 31 deletions(-)

diff --git a/drivers/gpu/drm/exynos/exynos_drm_hdmi.c 
b/drivers/gpu/drm/exynos/exynos_drm_hdmi.c
index 7ab5f9f..25fe012 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_hdmi.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_hdmi.c
@@ -32,12 +32,14 @@
 /* platform device pointer for common drm hdmi device. */
 static struct platform_device *exynos_drm_hdmi_pdev;

-/* Common hdmi subdrv needs to access the hdmi and mixer though context.
-* These should be initialied by the repective drivers */
+/* Common hdmi subdrv needs to access the hdmi, hdmiphy and mixer though
+*  context. These should be initialied by the repective drivers */
+static struct exynos_drm_hdmi_context *hdmiphy_ctx;
 static struct exynos_drm_hdmi_context *hdmi_ctx;
 static struct exynos_drm_hdmi_context *mixer_ctx;

 /* these callback points shoud be set by specific drivers. */
+static struct exynos_hdmiphy_ops *hdmiphy_ops;
 static struct exynos_hdmi_ops *hdmi_ops;
 static struct exynos_mixer_ops *mixer_ops;

@@ -45,6 +47,7 @@ struct platform_driver exynos_drm_common_hdmi_driver;

 struct drm_hdmi_context {
struct exynos_drm_subdrvsubdrv;
+   struct exynos_drm_hdmi_context  *hdmiphy_ctx;
struct exynos_drm_hdmi_context  *hdmi_ctx;
struct exynos_drm_hdmi_context  *mixer_ctx;

@@ -59,6 +62,10 @@ int exynos_common_hdmi_register(void)
if (exynos_drm_hdmi_pdev)
return -EEXIST;

+   ret = exynos_hdmiphy_driver_register();
+   if (ret < 0)
+   goto out_hdmiphy;
+
ret = platform_driver_register(_driver);
if (ret < 0)
goto out_hdmi;
@@ -88,6 +95,8 @@ out_common_hdmi:
 out_mixer:
platform_driver_unregister(_driver);
 out_hdmi:
+   exynos_hdmiphy_driver_unregister();
+out_hdmiphy:
return ret;
 }

@@ -99,9 +108,16 @@ void exynos_common_hdmi_unregister(void)
platform_driver_unregister(_drm_common_hdmi_driver);
platform_driver_unregister(_driver);
platform_driver_unregister(_driver);
+   exynos_hdmiphy_driver_unregister();
exynos_drm_hdmi_pdev = NULL;
 }

+void exynos_hdmiphy_drv_attach(struct exynos_drm_hdmi_context *ctx)
+{
+   if (ctx)
+   hdmiphy_ctx = ctx;
+}
+
 void exynos_hdmi_drv_attach(struct exynos_drm_hdmi_context *ctx)
 {
if (ctx)
@@ -114,6 +130,14 @@ void exynos_mixer_drv_attach(struct 
exynos_drm_hdmi_context *ctx)
mixer_ctx = ctx;
 }

+void exynos_hdmiphy_ops_register(struct exynos_hdmiphy_ops *ops)
+{
+   DRM_DEBUG_KMS("%s\n", __FILE__);
+
+   if (ops)
+   hdmiphy_ops = ops;
+}
+
 void exynos_hdmi_ops_register(struct exynos_hdmi_ops *ops)
 {
DRM_DEBUG_KMS("%s\n", __FILE__);
@@ -164,8 +188,8 @@ static int drm_hdmi_check_mode(struct device *dev,
DRM_DEBUG_KMS("%s\n", __FILE__);

/*
-   * Both, mixer and hdmi should be able to handle the requested mode.
-   * If any of the two fails, return mode as BAD.
+   * Mixer, hdmi and hdmiphy should be able to handle the requested mode.
+   * If any of the them fails, return mode as BAD.
*/

if (mixer_ops && mixer_ops->check_mode)
@@ -175,7 +199,13 @@ static int drm_hdmi_check_mode(struct device *dev,
return ret;

if (hdmi_ops && hdmi_ops->check_mode)
-   return hdmi_ops->check_mode(ctx->hdmi_ctx->ctx, mode);
+   ret = hdmi_ops->check_mode(ctx->hdmi_ctx->ctx, mode);
+
+   if (ret)
+   return ret;
+
+   if (hdmiphy_ops && hdmiphy_ops->check_mode)
+   return hdmiphy_ops->check_mode(ctx->hdmiphy_ctx->ctx, mode);

return 0;
 }
@@ -289,6 +319,9 @@ static void drm_hdmi_mode_set(struct device *subdrv_dev, 
void *mode)

if (hdmi_ops && hdmi_ops->mode_set)
hdmi_ops->mode_set(ctx->hdmi_ctx->ctx, mode);
+
+   if (hdmiphy_ops && hdmiphy_ops->mode_set)
+   hdmiphy_ops->mode_set(ctx->hdmiphy_ctx->ctx, mode);
 }

 static void drm_hdmi_get_max_resol(struct device *subdrv_dev,
@@ -308,6 +341,15 @@ static void drm_hdmi_commit(struct device *subdrv_dev)

DRM_DEBUG_KMS("%s\n", __FILE__);

+   if (hdmiphy_ops && 

[PATCH 1/4] drm/exynos: hdmi: move hdmi subsystem registration to drm common hdmi

2013-04-29 Thread Rahul Sharma
Exynos hdmi sub-system consists of mixer, hdmi ip, hdmi-phy and hdmi-ddc
components. Currently, drivers for these components are getting registered
in exynos_drm_drv.c, which is meant for registration of drm sub-drivers.

In this patch, registration of drm hdmi sub-driver and device, drivers for
hdmi sub-system components are moved to exynos_drm_hdmi.c. This ensures
limited & relevant exposure of hdmi-sub-system components to exynos_drm_drv.c.
It will also help in handling the hdmi-sub-system diversities within the
exynos-common-hdmi.

Signed-off-by: Rahul Sharma 
---
 drivers/gpu/drm/exynos/exynos_drm_drv.c  |   25 ++--
 drivers/gpu/drm/exynos/exynos_drm_drv.h  |   14 -
 drivers/gpu/drm/exynos/exynos_drm_hdmi.c |   46 --
 drivers/gpu/drm/exynos/exynos_drm_hdmi.h |3 ++
 4 files changed, 49 insertions(+), 39 deletions(-)

diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c 
b/drivers/gpu/drm/exynos/exynos_drm_drv.c
index ba6d995..4eabb6e 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
@@ -331,19 +331,9 @@ static int __init exynos_drm_init(void)
 #endif

 #ifdef CONFIG_DRM_EXYNOS_HDMI
-   ret = platform_driver_register(_driver);
+   ret = exynos_common_hdmi_register();
if (ret < 0)
goto out_hdmi;
-   ret = platform_driver_register(_driver);
-   if (ret < 0)
-   goto out_mixer;
-   ret = platform_driver_register(_drm_common_hdmi_driver);
-   if (ret < 0)
-   goto out_common_hdmi;
-
-   ret = exynos_platform_device_hdmi_register();
-   if (ret < 0)
-   goto out_common_hdmi_dev;
 #endif

 #ifdef CONFIG_DRM_EXYNOS_VIDI
@@ -436,13 +426,7 @@ out_vidi:
 #endif

 #ifdef CONFIG_DRM_EXYNOS_HDMI
-   exynos_platform_device_hdmi_unregister();
-out_common_hdmi_dev:
-   platform_driver_unregister(_drm_common_hdmi_driver);
-out_common_hdmi:
-   platform_driver_unregister(_driver);
-out_mixer:
-   platform_driver_unregister(_driver);
+   exynos_common_hdmi_unregister();
 out_hdmi:
 #endif

@@ -483,10 +467,7 @@ static void __exit exynos_drm_exit(void)
 #endif

 #ifdef CONFIG_DRM_EXYNOS_HDMI
-   exynos_platform_device_hdmi_unregister();
-   platform_driver_unregister(_drm_common_hdmi_driver);
-   platform_driver_unregister(_driver);
-   platform_driver_unregister(_driver);
+   exynos_common_hdmi_unregister();
 #endif

 #ifdef CONFIG_DRM_EXYNOS_VIDI
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.h 
b/drivers/gpu/drm/exynos/exynos_drm_drv.h
index eaa1966..34aa36d 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_drv.h
+++ b/drivers/gpu/drm/exynos/exynos_drm_drv.h
@@ -319,15 +319,16 @@ int exynos_drm_subdrv_open(struct drm_device *dev, struct 
drm_file *file);
 void exynos_drm_subdrv_close(struct drm_device *dev, struct drm_file *file);

 /*
- * this function registers exynos drm hdmi platform device. It ensures only one
- * instance of the device is created.
+ * this function registers exynos drm hdmi platform driver and singleton
+ * device. It also registers subdrivers like mixer, hdmi and hdmiphy.
  */
-int exynos_platform_device_hdmi_register(void);
+int exynos_common_hdmi_register(void);

 /*
- * this function unregisters exynos drm hdmi platform device if it exists.
+ * this function unregisters exynos drm hdmi platform driver and device,
+ * subdrivers for mixer, hdmi and hdmiphy.
  */
-void exynos_platform_device_hdmi_unregister(void);
+void exynos_common_hdmi_unregister(void);

 /*
  * this function registers exynos drm ipp platform device.
@@ -340,9 +341,6 @@ int exynos_platform_device_ipp_register(void);
 void exynos_platform_device_ipp_unregister(void);

 extern struct platform_driver fimd_driver;
-extern struct platform_driver hdmi_driver;
-extern struct platform_driver mixer_driver;
-extern struct platform_driver exynos_drm_common_hdmi_driver;
 extern struct platform_driver vidi_driver;
 extern struct platform_driver g2d_driver;
 extern struct platform_driver fimc_driver;
diff --git a/drivers/gpu/drm/exynos/exynos_drm_hdmi.c 
b/drivers/gpu/drm/exynos/exynos_drm_hdmi.c
index 060fbe8..7ab5f9f 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_hdmi.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_hdmi.c
@@ -41,6 +41,8 @@ static struct exynos_drm_hdmi_context *mixer_ctx;
 static struct exynos_hdmi_ops *hdmi_ops;
 static struct exynos_mixer_ops *mixer_ops;

+struct platform_driver exynos_drm_common_hdmi_driver;
+
 struct drm_hdmi_context {
struct exynos_drm_subdrvsubdrv;
struct exynos_drm_hdmi_context  *hdmi_ctx;
@@ -49,29 +51,55 @@ struct drm_hdmi_context {
boolenabled[MIXER_WIN_NR];
 };

-int exynos_platform_device_hdmi_register(void)
+int exynos_common_hdmi_register(void)
 {
struct platform_device *pdev;
+   int ret;

if (exynos_drm_hdmi_pdev)
return -EEXIST;

+   ret = platform_driver_register(_driver);
+   if (ret 

[PATCH 0/4] drm/exynos: hdmi: move hdmiphy related code to hdmiphy driver

2013-04-29 Thread Rahul Sharma
Right now hdmiphy operations and configs are kept inside hdmi driver. hdmiphy
related code is tightly coupled with hdmi ip driver. Physicaly they are
different devices and should be instantiated independently.

In terms of versions/mapping/configurations Hdmi and hdmiphy are independent
of each other. It seems logical to isolate them and maintained independently.

This implementation is tested for:
1) Resolutions supported by exynos4 and 5 hdmi.
2) Runtime PM and S2R scenarions for exynos5.

This patch set is dependent on the patch, posted at
http://www.mail-archive.com/linux-samsung-soc at vger.kernel.org/msg17905.html

This series is based on exynos-drm-next branch at
git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos.git

Rahul Sharma (4):
  drm/exynos: hdmi: move hdmi subsystem registration to drm common hdmi
  drm/exynos: hdmi: register hdmiphy driver from common drm hdmi
  drm/exynos: hdmi: move hdmiphy callbacks to hdmiphy driver
  ARM: EXYNOS: remove parent device for hdmiphy clock

 arch/arm/mach-exynos/clock-exynos4.c |1 -
 arch/arm/mach-exynos/clock-exynos5.c |1 -
 drivers/gpu/drm/exynos/exynos_drm_drv.c  |   25 +-
 drivers/gpu/drm/exynos/exynos_drm_drv.h  |   14 +-
 drivers/gpu/drm/exynos/exynos_drm_hdmi.c |  107 +-
 drivers/gpu/drm/exynos/exynos_drm_hdmi.h |   20 +
 drivers/gpu/drm/exynos/exynos_hdmi.c |  371 ++-
 drivers/gpu/drm/exynos/exynos_hdmi.h |1 -
 drivers/gpu/drm/exynos/exynos_hdmiphy.c  |  585 +-
 drivers/gpu/drm/exynos/regs-hdmiphy.h|   61 
 10 files changed, 780 insertions(+), 406 deletions(-)
 create mode 100644 drivers/gpu/drm/exynos/regs-hdmiphy.h

-- 
1.7.10.4



[PATCH v4] drm/exynos: hdmi: use drm_display_mode to check the supported modes

2013-04-29 Thread 김승우
Hello Rahul,

I looks good to me.

On 2013? 04? 29? 20:14, Rahul Sharma wrote:
> Exynos hdmi driver is using drm_display_mode for setting timing values
> for a supported resolution. Conversion to fb_videomode and then comparing
> with the mixer/hdmi/phy limits is not required. Instead, drm_display_mode
> fields cane be directly compared.
> 
> v4:
> 1) Removed __func__ from DRM_DEBUG_KMS.
> 
> v3:
> 1) Replaced check_timing callbacks with check_mode.
> 2) Change the type of second parameter of check_mode callback from void
> pointer paramenter to struct drm_display_mode pointer.
> 
> v2:
> 1) Removed convert_to_video_timing().
> 2) Corrected DRM_DEBUG_KMS to print the resolution properly.
> 
> Signed-off-by: Rahul Sharma 

Acked-by: Seung-Woo Kim 

> ---
>  drivers/gpu/drm/exynos/exynos_drm_connector.c |   38 
> ++---
>  drivers/gpu/drm/exynos/exynos_drm_drv.h   |4 +--
>  drivers/gpu/drm/exynos/exynos_drm_fimd.c  |4 +--
>  drivers/gpu/drm/exynos/exynos_drm_hdmi.c  |   17 +--
>  drivers/gpu/drm/exynos/exynos_drm_hdmi.h  |6 ++--
>  drivers/gpu/drm/exynos/exynos_drm_vidi.c  |4 +--
>  drivers/gpu/drm/exynos/exynos_hdmi.c  |   29 +--
>  drivers/gpu/drm/exynos/exynos_mixer.c |   17 +--
>  8 files changed, 43 insertions(+), 76 deletions(-)
> 
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_connector.c 
> b/drivers/gpu/drm/exynos/exynos_drm_connector.c
> index 8bcc13a..ab3c6d4 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_connector.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_connector.c
> @@ -58,37 +58,6 @@ convert_to_display_mode(struct drm_display_mode *mode,
>   mode->flags |= DRM_MODE_FLAG_DBLSCAN;
>  }
>  
> -/* convert drm_display_mode to exynos_video_timings */
> -static inline void
> -convert_to_video_timing(struct fb_videomode *timing,
> - struct drm_display_mode *mode)
> -{
> - DRM_DEBUG_KMS("%s\n", __FILE__);
> -
> - memset(timing, 0, sizeof(*timing));
> -
> - timing->pixclock = mode->clock * 1000;
> - timing->refresh = drm_mode_vrefresh(mode);
> -
> - timing->xres = mode->hdisplay;
> - timing->right_margin = mode->hsync_start - mode->hdisplay;
> - timing->hsync_len = mode->hsync_end - mode->hsync_start;
> - timing->left_margin = mode->htotal - mode->hsync_end;
> -
> - timing->yres = mode->vdisplay;
> - timing->lower_margin = mode->vsync_start - mode->vdisplay;
> - timing->vsync_len = mode->vsync_end - mode->vsync_start;
> - timing->upper_margin = mode->vtotal - mode->vsync_end;
> -
> - if (mode->flags & DRM_MODE_FLAG_INTERLACE)
> - timing->vmode = FB_VMODE_INTERLACED;
> - else
> - timing->vmode = FB_VMODE_NONINTERLACED;
> -
> - if (mode->flags & DRM_MODE_FLAG_DBLSCAN)
> - timing->vmode |= FB_VMODE_DOUBLE;
> -}
> -
>  static int exynos_drm_connector_get_modes(struct drm_connector *connector)
>  {
>   struct exynos_drm_connector *exynos_connector =
> @@ -168,15 +137,12 @@ static int exynos_drm_connector_mode_valid(struct 
> drm_connector *connector,
>   to_exynos_connector(connector);
>   struct exynos_drm_manager *manager = exynos_connector->manager;
>   struct exynos_drm_display_ops *display_ops = manager->display_ops;
> - struct fb_videomode timing;
>   int ret = MODE_BAD;
>  
>   DRM_DEBUG_KMS("%s\n", __FILE__);
>  
> - convert_to_video_timing(, mode);
> -
> - if (display_ops && display_ops->check_timing)
> - if (!display_ops->check_timing(manager->dev, (void *)))
> + if (display_ops && display_ops->check_mode)
> + if (!display_ops->check_mode(manager->dev, mode))
>   ret = MODE_OK;
>  
>   return ret;
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.h 
> b/drivers/gpu/drm/exynos/exynos_drm_drv.h
> index 4606fac..9650b3b 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_drv.h
> +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.h
> @@ -142,7 +142,7 @@ struct exynos_drm_overlay {
>   * @is_connected: check for that display is connected or not.
>   * @get_edid: get edid modes from display driver.
>   * @get_panel: get panel object from display driver.
> - * @check_timing: check if timing is valid or not.
> + * @check_mode: check if mode is valid or not.
>   * @power_on: display device on or off.
>   */
>  struct exynos_drm_display_ops {
> @@ -151,7 +151,7 @@ struct exynos_drm_display_ops {
>   struct edid *(*get_edid)(struct device *dev,
>   struct drm_connector *connector);
>   void *(*get_panel)(struct device *dev);
> - int (*check_timing)(struct device *dev, void *timing);
> + int (*check_mode)(struct device *dev, struct drm_display_mode *mode);
>   int (*power_on)(struct device *dev, int mode);
>  };
>  
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c 
> b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
> index 

[PATCH 4/4] ARM: EXYNOS: remove parent device for hdmiphy clock

2013-04-29 Thread Sylwester Nawrocki
Hi,

On 04/29/2013 07:04 PM, Sean Paul wrote:
> On Mon, Apr 29, 2013 at 10:50 AM, Rahul Sharma  
> wrote:
>> Hdmiphy clock flows from hdmiphy hw to hdmi ip and mixer. It is commonly
>> accessed among hdmi and hdmiphy driver. During power cycle, each of these
>> driver decrements the ref-count and ensures that last user disables the
>> clock. Setting parrent device to none ensure that both the drivers gets
>> access to the clock.
>>
> 
> This seems like the wrong solution. I think you should be trying to
> isolate its usage to one driver, instead of removing devname.

And files:
arch/arm/mach-exynos/clock-exynos4.c
arch/arm/mach-exynos/clock-exynos5.c

are not existent in linux-next for some time already. Since 3.10 the
common clock API driver is used. It also shows that very few people
actually test their patches against -next... :(

Regards,
Sylwester

> Sean
> 
>> Signed-off-by: Rahul Sharma 
>> ---
>>  arch/arm/mach-exynos/clock-exynos4.c |1 -
>>  arch/arm/mach-exynos/clock-exynos5.c |1 -
>>  2 files changed, 2 deletions(-)
>>
>> diff --git a/arch/arm/mach-exynos/clock-exynos4.c 
>> b/arch/arm/mach-exynos/clock-exynos4.c
>> index 8a8468d..a43afcd 100644
>> --- a/arch/arm/mach-exynos/clock-exynos4.c
>> +++ b/arch/arm/mach-exynos/clock-exynos4.c
>> @@ -562,7 +562,6 @@ static struct clk exynos4_init_clocks_off[] = {
>> .ctrlbit= (1 << 3),
>> }, {
>> .name   = "hdmiphy",
>> -   .devname= "exynos4-hdmi",
>> .enable = exynos4_clk_hdmiphy_ctrl,
>> .ctrlbit= (1 << 0),
>> }, {
>> diff --git a/arch/arm/mach-exynos/clock-exynos5.c 
>> b/arch/arm/mach-exynos/clock-exynos5.c
>> index b0ea31f..4f39027 100644
>> --- a/arch/arm/mach-exynos/clock-exynos5.c
>> +++ b/arch/arm/mach-exynos/clock-exynos5.c
>> @@ -690,7 +690,6 @@ static struct clk exynos5_init_clocks_off[] = {
>> .ctrlbit= (1 << 6),
>> }, {
>> .name   = "hdmiphy",
>> -   .devname= "exynos5-hdmi",
>> .enable = exynos5_clk_hdmiphy_ctrl,
>> .ctrlbit= (1 << 0),
>> }, {
>> --
>> 1.7.10.4



[PATCH] module: fix mutiple defined issue

2013-04-29 Thread Inki Dae


> -Original Message-
> From: linux-kernel-owner at vger.kernel.org [mailto:linux-kernel-
> owner at vger.kernel.org] On Behalf Of Russell King - ARM Linux
> Sent: Monday, April 29, 2013 6:52 PM
> To: Inki Dae
> Cc: gregkh at linuxfoundation.org; linux-kernel at vger.kernel.org; dri-
> devel at lists.freedesktop.org; linux-arm-kernel at lists.infradead.org
> Subject: Re: [PATCH] module: fix mutiple defined issue
> 
> On Mon, Apr 29, 2013 at 02:32:01PM +0900, Inki Dae wrote:
> > This patch fixes mutiple defined issue to MODULE_DEVICE_TABLE
> >
> > The issue could be induced when some framework which includes two
> > more sub drivers, is built as one moudle because those sub drivers
> > could have their own MODULE_DEVICE_TABLE.
> >
> > And 'struct of_device_id' isn't needed to be determined by type
> > argument because the definition of 'of_device_id' should be fixed.
> > So this patch makes 'of_devce_id' definition to be fixed and
> > only its instance name to be defined by type.
> >
> > Signed-off-by: Inki Dae 
> > ---
> >  include/linux/module.h |2 +-
> >  1 files changed, 1 insertions(+), 1 deletions(-)
> >
> > diff --git a/include/linux/module.h b/include/linux/module.h
> > index 46f1ea0..ac5d79f 100644
> > --- a/include/linux/module.h
> > +++ b/include/linux/module.h
> > @@ -84,7 +84,7 @@ void trim_init_extable(struct module *m);
> >
> >  #ifdef MODULE
> >  #define MODULE_GENERIC_TABLE(gtype,name)   \
> > -extern const struct gtype##_id __mod_##gtype##_table   \
> > +extern const struct of_device_id __mod_##gtype##_table \
> >__attribute__ ((unused, alias(__stringify(name
> >
> >  #else  /* !MODULE */
> 
> This patch (a) looks wrong (why would a generic device table be limited
> to of_device_id when it could be ISAPNP or something else?) and (b) how
> does changing the type fix the "multiple defined issue" ?  (c) include
> the errors that you're fixing in the commit log.

There was my misunderstanding. So please ignore my patch. Some headers in
include/linux/ have some kind of device_id structure such as of_device_id,
platform_device_id, i2c_device_id, and so on. And these structures should be
used properly. This was my missing point.

Thanks,
Inki Dae


> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/



[Bug 63935] TURKS [drm:r600_uvd_init] *ERROR* UVD not responding, trying to reset the VCPU!!!

2013-04-29 Thread bugzilla-dae...@freedesktop.org
 to hijack this bug report; just throwing in some extra info that
seems related.)  - DW

-- 
You are receiving this mail because:
You are the assignee for the bug.
-- next part --
An HTML attachment was scrubbed...
URL: 
<http://lists.freedesktop.org/archives/dri-devel/attachments/20130429/918d2ce3/attachment.html>


[PATCH] drm/mgag200: Pass driver specific mga_device in driver functions

2013-04-29 Thread Christopher Harvey
Signed-off-by: Christopher Harvey 
---
 drivers/gpu/drm/mgag200/mgag200_mode.c | 7 +++
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/mgag200/mgag200_mode.c 
b/drivers/gpu/drm/mgag200/mgag200_mode.c
index 78d8e91..f988965 100644
--- a/drivers/gpu/drm/mgag200/mgag200_mode.c
+++ b/drivers/gpu/drm/mgag200/mgag200_mode.c
@@ -1254,9 +1254,8 @@ static const struct drm_crtc_helper_funcs 
mga_helper_funcs = {
 };

 /* CRTC setup */
-static void mga_crtc_init(struct drm_device *dev)
+static void mga_crtc_init(struct mga_device *mdev)
 {
-   struct mga_device *mdev = dev->dev_private;
struct mga_crtc *mga_crtc;
int i;

@@ -1267,7 +1266,7 @@ static void mga_crtc_init(struct drm_device *dev)
if (mga_crtc == NULL)
return;

-   drm_crtc_init(dev, _crtc->base, _crtc_funcs);
+   drm_crtc_init(mdev->dev, _crtc->base, _crtc_funcs);

drm_mode_crtc_set_gamma_size(_crtc->base, MGAG200_LUT_SIZE);
mdev->mode_info.crtc = mga_crtc;
@@ -1522,7 +1521,7 @@ int mgag200_modeset_init(struct mga_device *mdev)

mdev->dev->mode_config.fb_base = mdev->mc.vram_base;

-   mga_crtc_init(mdev->dev);
+   mga_crtc_init(mdev);

encoder = mga_encoder_init(mdev->dev);
if (!encoder) {
-- 
1.8.1.5



[PATCH] drm/mgag200: Remove pointless call to drm_fb_get_bpp_depth

2013-04-29 Thread Christopher Harvey
Signed-off-by: Christopher Harvey 
---
 drivers/gpu/drm/mgag200/mgag200_fb.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/gpu/drm/mgag200/mgag200_fb.c 
b/drivers/gpu/drm/mgag200/mgag200_fb.c
index d2253f6..a5a1f34 100644
--- a/drivers/gpu/drm/mgag200/mgag200_fb.c
+++ b/drivers/gpu/drm/mgag200/mgag200_fb.c
@@ -105,12 +105,9 @@ static int mgag200fb_create_object(struct mga_fbdev 
*afbdev,
   struct drm_gem_object **gobj_p)
 {
struct drm_device *dev = afbdev->helper.dev;
-   u32 bpp, depth;
u32 size;
struct drm_gem_object *gobj;
-
int ret = 0;
-   drm_fb_get_bpp_depth(mode_cmd->pixel_format, , );

size = mode_cmd->pitches[0] * mode_cmd->height;
ret = mgag200_gem_create(dev, size, true, );
-- 
1.8.1.5



drm-openchrome status (or will it be in Kernel 3.10?)

2013-04-29 Thread Johannes Obermayr
Hi James,

Linus recently released Kernel 3.9, merge window for Kernel 3.10 has been 
opened, and the question is whether drm-openchrome will be part of the new 
Kernel version.

Regards,
Johannes 


[PATCH] drm/radeon: fix UPLL_REF_DIV_MASK definition

2013-04-29 Thread Paul Menzel
Dear Christian,


Am Montag, den 29.04.2013, 10:20 +0200 schrieb Christian K?nig:
> From: Christian K?nig 
> 
> Stupid copy & paste error over all generations.

does this fix an error or was this found just by reading the code? Could
please you add such information to commit message in the future? That
would be awesome.

[?]


Thanks,

Paul



[PATCH] module: fix mutiple defined issue

2013-04-29 Thread Inki Dae
Hi,


> -Original Message-
> From: linux-kernel-owner at vger.kernel.org [mailto:linux-kernel-
> owner at vger.kernel.org] On Behalf Of Uwe Kleine-Konig
> Sent: Monday, April 29, 2013 4:35 PM
> To: Inki Dae
> Cc: gregkh at linuxfoundation.org; linux-kernel at vger.kernel.org; dri-
> devel at lists.freedesktop.org; linux-arm-kernel at lists.infradead.org
> Subject: Re: [PATCH] module: fix mutiple defined issue
> 
> On Mon, Apr 29, 2013 at 02:32:01PM +0900, Inki Dae wrote:
> > This patch fixes mutiple defined issue to MODULE_DEVICE_TABLE
> s/mutiple/multiple/, still this sentence doesn't sound right. What is
> the error message you see?
> 
> > The issue could be induced when some framework which includes two
> > more sub drivers, is built as one moudle because those sub drivers
> s/moudle/module/
> 
> > could have their own MODULE_DEVICE_TABLE.
> >
> > And 'struct of_device_id' isn't needed to be determined by type
> > argument because the definition of 'of_device_id' should be fixed.
> > So this patch makes 'of_devce_id' definition to be fixed and
> > only its instance name to be defined by type.
> include/linux/isapnp.h uses:
> #define ISAPNP_CARD_TABLE(name) \
>   MODULE_GENERIC_TABLE(isapnp_card, name)
> 
> and you changed the table's type with your patch. Ditto for all users of
> 
>   MODULE_DEVICE_TABLE(i2c, ...);
>   MODULE_DEVICE_TABLE(acpi, ...);
>   MODULE_DEVICE_TABLE(platform, ...);
>   MODULE_DEVICE_TABLE(pci, ...);
>   MODULE_DEVICE_TABLE(sdio, ...);
> 
> So I'm pretty sure your patch is wrong and I expect it makes most
> defconfigs fail to compile.
>

It might be my big mistake. Maybe xxx_device_id object was created device
tree internally. Right? Will check it out again. So please ignore it.

Thanks,
Inki Dae


> Best regards
> Uwe
> 
> >
> > Signed-off-by: Inki Dae 
> > ---
> >  include/linux/module.h |2 +-
> >  1 files changed, 1 insertions(+), 1 deletions(-)
> >
> > diff --git a/include/linux/module.h b/include/linux/module.h
> > index 46f1ea0..ac5d79f 100644
> > --- a/include/linux/module.h
> > +++ b/include/linux/module.h
> > @@ -84,7 +84,7 @@ void trim_init_extable(struct module *m);
> >
> >  #ifdef MODULE
> >  #define MODULE_GENERIC_TABLE(gtype,name)   \
> > -extern const struct gtype##_id __mod_##gtype##_table   \
> > +extern const struct of_device_id __mod_##gtype##_table \
> >__attribute__ ((unused, alias(__stringify(name
> >
> >  #else  /* !MODULE */
> > --
> > 1.7.5.4
> >
> >
> > ___
> > linux-arm-kernel mailing list
> > linux-arm-kernel at lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> >
> 
> --
> Pengutronix e.K.   | Uwe Kleine-K?nig|
> Industrial Linux Solutions | http://www.pengutronix.de/  |
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/



[PATCH v4] drm/exynos: hdmi: use drm_display_mode to check the supported modes

2013-04-29 Thread Rahul Sharma
Exynos hdmi driver is using drm_display_mode for setting timing values
for a supported resolution. Conversion to fb_videomode and then comparing
with the mixer/hdmi/phy limits is not required. Instead, drm_display_mode
fields cane be directly compared.

v4:
1) Removed __func__ from DRM_DEBUG_KMS.

v3:
1) Replaced check_timing callbacks with check_mode.
2) Change the type of second parameter of check_mode callback from void
pointer paramenter to struct drm_display_mode pointer.

v2:
1) Removed convert_to_video_timing().
2) Corrected DRM_DEBUG_KMS to print the resolution properly.

Signed-off-by: Rahul Sharma 
---
 drivers/gpu/drm/exynos/exynos_drm_connector.c |   38 ++---
 drivers/gpu/drm/exynos/exynos_drm_drv.h   |4 +--
 drivers/gpu/drm/exynos/exynos_drm_fimd.c  |4 +--
 drivers/gpu/drm/exynos/exynos_drm_hdmi.c  |   17 +--
 drivers/gpu/drm/exynos/exynos_drm_hdmi.h  |6 ++--
 drivers/gpu/drm/exynos/exynos_drm_vidi.c  |4 +--
 drivers/gpu/drm/exynos/exynos_hdmi.c  |   29 +--
 drivers/gpu/drm/exynos/exynos_mixer.c |   17 +--
 8 files changed, 43 insertions(+), 76 deletions(-)

diff --git a/drivers/gpu/drm/exynos/exynos_drm_connector.c 
b/drivers/gpu/drm/exynos/exynos_drm_connector.c
index 8bcc13a..ab3c6d4 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_connector.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_connector.c
@@ -58,37 +58,6 @@ convert_to_display_mode(struct drm_display_mode *mode,
mode->flags |= DRM_MODE_FLAG_DBLSCAN;
 }

-/* convert drm_display_mode to exynos_video_timings */
-static inline void
-convert_to_video_timing(struct fb_videomode *timing,
-   struct drm_display_mode *mode)
-{
-   DRM_DEBUG_KMS("%s\n", __FILE__);
-
-   memset(timing, 0, sizeof(*timing));
-
-   timing->pixclock = mode->clock * 1000;
-   timing->refresh = drm_mode_vrefresh(mode);
-
-   timing->xres = mode->hdisplay;
-   timing->right_margin = mode->hsync_start - mode->hdisplay;
-   timing->hsync_len = mode->hsync_end - mode->hsync_start;
-   timing->left_margin = mode->htotal - mode->hsync_end;
-
-   timing->yres = mode->vdisplay;
-   timing->lower_margin = mode->vsync_start - mode->vdisplay;
-   timing->vsync_len = mode->vsync_end - mode->vsync_start;
-   timing->upper_margin = mode->vtotal - mode->vsync_end;
-
-   if (mode->flags & DRM_MODE_FLAG_INTERLACE)
-   timing->vmode = FB_VMODE_INTERLACED;
-   else
-   timing->vmode = FB_VMODE_NONINTERLACED;
-
-   if (mode->flags & DRM_MODE_FLAG_DBLSCAN)
-   timing->vmode |= FB_VMODE_DOUBLE;
-}
-
 static int exynos_drm_connector_get_modes(struct drm_connector *connector)
 {
struct exynos_drm_connector *exynos_connector =
@@ -168,15 +137,12 @@ static int exynos_drm_connector_mode_valid(struct 
drm_connector *connector,
to_exynos_connector(connector);
struct exynos_drm_manager *manager = exynos_connector->manager;
struct exynos_drm_display_ops *display_ops = manager->display_ops;
-   struct fb_videomode timing;
int ret = MODE_BAD;

DRM_DEBUG_KMS("%s\n", __FILE__);

-   convert_to_video_timing(, mode);
-
-   if (display_ops && display_ops->check_timing)
-   if (!display_ops->check_timing(manager->dev, (void *)))
+   if (display_ops && display_ops->check_mode)
+   if (!display_ops->check_mode(manager->dev, mode))
ret = MODE_OK;

return ret;
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.h 
b/drivers/gpu/drm/exynos/exynos_drm_drv.h
index 4606fac..9650b3b 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_drv.h
+++ b/drivers/gpu/drm/exynos/exynos_drm_drv.h
@@ -142,7 +142,7 @@ struct exynos_drm_overlay {
  * @is_connected: check for that display is connected or not.
  * @get_edid: get edid modes from display driver.
  * @get_panel: get panel object from display driver.
- * @check_timing: check if timing is valid or not.
+ * @check_mode: check if mode is valid or not.
  * @power_on: display device on or off.
  */
 struct exynos_drm_display_ops {
@@ -151,7 +151,7 @@ struct exynos_drm_display_ops {
struct edid *(*get_edid)(struct device *dev,
struct drm_connector *connector);
void *(*get_panel)(struct device *dev);
-   int (*check_timing)(struct device *dev, void *timing);
+   int (*check_mode)(struct device *dev, struct drm_display_mode *mode);
int (*power_on)(struct device *dev, int mode);
 };

diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c 
b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
index 15e58f5..98bbe1e 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
@@ -153,7 +153,7 @@ static void *fimd_get_panel(struct device *dev)
return ctx->panel;
 }

-static int fimd_check_timing(struct device *dev, 

[Bug 63865] radeon_atombios_get_power_modes oops with E-350

2013-04-29 Thread bugzilla-dae...@freedesktop.org
https://bugs.freedesktop.org/show_bug.cgi?id=63865

--- Comment #8 from Alex Deucher  ---
It looks like you are using a bogus unposted vbios image.  I think you'll need
to bisect.  If I had to guess, I'd say it's related to some change in how the
pci rom images are fetched.

-- 
You are receiving this mail because:
You are the assignee for the bug.
-- next part --
An HTML attachment was scrubbed...
URL: 
<http://lists.freedesktop.org/archives/dri-devel/attachments/20130429/53b7b082/attachment.html>


[PATCH] mgag200 code cleanup patches

2013-04-29 Thread Christopher Harvey

Christopher Harvey  writes:

> I submitted these a while ago, but I think they got lost in the
> mailing list. Just wanted to make sure they get a shot at the merge
> window.
>
> thanks,
>
> Christopher Harvey (3):
>   drm/mgag200: Remove pointless call to drm_fb_get_bpp_depth
>   drm/mgag200: Pass driver specific mga_device in driver functions
>   drm/mgag200: Remove extra variable assigns
>
>  drivers/gpu/drm/mgag200/mgag200_fb.c   | 3 ---
>  drivers/gpu/drm/mgag200/mgag200_main.c | 2 --
>  drivers/gpu/drm/mgag200/mgag200_mode.c | 7 +++
>  3 files changed, 3 insertions(+), 9 deletions(-)

the drm-next branch is what gets merged into merge windows, right?
http://cgit.freedesktop.org/~airlied/linux/

-- 


[Bug 57281] Radeon: Bad performance and power consumption

2013-04-29 Thread bugzilla-dae...@bugzilla.kernel.org
https://bugzilla.kernel.org/show_bug.cgi?id=57281





--- Comment #3 from Michel D?nzer   2013-04-29 14:41:09 
---
(In reply to comment #0)
> After upgrading my AMD E-450-based notebook to a newer one (HP 4545s
> A4-3300-based) i noticed that in spite of noticeable higher clock rate the
> video performance is about 15-20% worse than on E-450.

How did you measure that?

-- 
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are watching the assignee of the bug.


[PATCH] mgag200 code cleanup patches

2013-04-29 Thread Christopher Harvey
I submitted these a while ago, but I think they got lost in the
mailing list. Just wanted to make sure they get a shot at the merge
window.

thanks,

Christopher Harvey (3):
  drm/mgag200: Remove pointless call to drm_fb_get_bpp_depth
  drm/mgag200: Pass driver specific mga_device in driver functions
  drm/mgag200: Remove extra variable assigns

 drivers/gpu/drm/mgag200/mgag200_fb.c   | 3 ---
 drivers/gpu/drm/mgag200/mgag200_main.c | 2 --
 drivers/gpu/drm/mgag200/mgag200_mode.c | 7 +++
 3 files changed, 3 insertions(+), 9 deletions(-)

-- 
1.8.1.5



[PATCH] module: fix mutiple defined issue

2013-04-29 Thread Inki Dae
This patch fixes mutiple defined issue to MODULE_DEVICE_TABLE

The issue could be induced when some framework which includes two
more sub drivers, is built as one moudle because those sub drivers
could have their own MODULE_DEVICE_TABLE.

And 'struct of_device_id' isn't needed to be determined by type
argument because the definition of 'of_device_id' should be fixed.
So this patch makes 'of_devce_id' definition to be fixed and
only its instance name to be defined by type.

Signed-off-by: Inki Dae 
---
 include/linux/module.h |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/include/linux/module.h b/include/linux/module.h
index 46f1ea0..ac5d79f 100644
--- a/include/linux/module.h
+++ b/include/linux/module.h
@@ -84,7 +84,7 @@ void trim_init_extable(struct module *m);

 #ifdef MODULE
 #define MODULE_GENERIC_TABLE(gtype,name)   \
-extern const struct gtype##_id __mod_##gtype##_table   \
+extern const struct of_device_id __mod_##gtype##_table \
   __attribute__ ((unused, alias(__stringify(name

 #else  /* !MODULE */
-- 
1.7.5.4



[Bug 57281] Radeon: Bad performance and power consumption

2013-04-29 Thread bugzilla-dae...@bugzilla.kernel.org
https://bugzilla.kernel.org/show_bug.cgi?id=57281


Alex Deucher  changed:

   What|Removed |Added

 CC||alexdeucher at gmail.com




--- Comment #2 from Alex Deucher   2013-04-29 
14:31:27 ---
Please attach your dmesg output.

-- 
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are watching the assignee of the bug.


[Bug 47351] [KMS: Mobility Radeon HD 6620G] Blank screen on boot

2013-04-29 Thread bugzilla-dae...@bugzilla.kernel.org
https://bugzilla.kernel.org/show_bug.cgi?id=47351





--- Comment #6 from Alex Deucher   2013-04-29 
14:20:38 ---
(In reply to comment #5)

> I have the same behaviour on my HP 4545s laptop if I try to use discrete video
> card (HD7500/7600). I managed to get it work (more or less) on integrated
> 7240G, but I get blank screen having tried to switch to discrete video. Can I
> provide any additional information to help to resolve the issue?

Most hybrid laptops are mux-less meaning there are no displays physically
connected to the discrete GPU.  For display you have to use the integrated GPU.
 The discrete GPU can only be used for offscreen rendering.  Do display that
rendering, it has to be copied to the integrated GPU.  There is limited support
for this in newer xservers (1.13.x and newer).

-- 
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are watching the assignee of the bug.


[RFC v2] drm/exynos: hdmi: move hdmiphy related code to hdmiphy driver

2013-04-29 Thread Inki Dae
Hi Rahul,


2013/4/26 Rahul Sharma 

> Right now hdmiphy operations and configs are kept inside hdmi driver.
> hdmiphy
> related code is tightly coupled with hdmi ip driver. Physicaly they are
> different devices and should be instantiated independently.
>
> In terms of versions/mapping/configurations Hdmi and hdmiphy are
> independent
> of each other. It seems logical to isolate them and maintained
> independently.
>
> v2:
> 1) Moved hdmi subsystem registration to drm-common-hdmi.
> 2) removed __func__ as DRM_DEBUG_KMS print it by default.
> 3) removed devname from "hdmiphy" clock as it needs to be accessed by hdmi
> and hdmiphy driver.
>
>
Please separate this patch into 1), 2) and 3) and make it based on
exynos-drm-next.

Thanks,
Inki Dae




> This implementations is tested for:
> 1) Resolutions supported by exynos4 and 5 hdmi.
> 2) Runtime PM and S2R scenarions for exynos5.
>
> This patch is dependent on the patch, posted at
> http://www.mail-archive.com/dri-devel at lists.freedesktop.org/msg34861.html
>
> Signed-off-by: Rahul Sharma 
> ---
> It is based on exynos-drm-next branch at
> git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos.git
>
>  arch/arm/mach-exynos/clock-exynos5.c |1 -
>  drivers/gpu/drm/exynos/exynos_drm_drv.c  |   25 +-
>  drivers/gpu/drm/exynos/exynos_drm_drv.h  |   14 +-
>  drivers/gpu/drm/exynos/exynos_drm_hdmi.c |  109 +-
>  drivers/gpu/drm/exynos/exynos_drm_hdmi.h |   20 +
>  drivers/gpu/drm/exynos/exynos_hdmi.c |  372 ++-
>  drivers/gpu/drm/exynos/exynos_hdmi.h |1 -
>  drivers/gpu/drm/exynos/exynos_hdmiphy.c  |  585
> +-
>  drivers/gpu/drm/exynos/regs-hdmiphy.h|   61 
>  9 files changed, 783 insertions(+), 405 deletions(-)
>  create mode 100644 drivers/gpu/drm/exynos/regs-hdmiphy.h
>
> diff --git a/arch/arm/mach-exynos/clock-exynos5.c
> b/arch/arm/mach-exynos/clock-exynos5.c
> index b0ea31f..4f39027 100644
> --- a/arch/arm/mach-exynos/clock-exynos5.c
> +++ b/arch/arm/mach-exynos/clock-exynos5.c
> @@ -690,7 +690,6 @@ static struct clk exynos5_init_clocks_off[] = {
> .ctrlbit= (1 << 6),
> }, {
> .name   = "hdmiphy",
> -   .devname= "exynos5-hdmi",
> .enable = exynos5_clk_hdmiphy_ctrl,
> .ctrlbit= (1 << 0),
> }, {
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c
> b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> index 3da5c2d..2ec8ab1 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> @@ -331,19 +331,9 @@ static int __init exynos_drm_init(void)
>  #endif
>
>  #ifdef CONFIG_DRM_EXYNOS_HDMI
> -   ret = platform_driver_register(_driver);
> +   ret = exynos_common_hdmi_register();
> if (ret < 0)
> goto out_hdmi;
> -   ret = platform_driver_register(_driver);
> -   if (ret < 0)
> -   goto out_mixer;
> -   ret = platform_driver_register(_drm_common_hdmi_driver);
> -   if (ret < 0)
> -   goto out_common_hdmi;
> -
> -   ret = exynos_platform_device_hdmi_register();
> -   if (ret < 0)
> -   goto out_common_hdmi_dev;
>  #endif
>
>  #ifdef CONFIG_DRM_EXYNOS_VIDI
> @@ -430,13 +420,7 @@ out_vidi:
>  #endif
>
>  #ifdef CONFIG_DRM_EXYNOS_HDMI
> -   exynos_platform_device_hdmi_unregister();
> -out_common_hdmi_dev:
> -   platform_driver_unregister(_drm_common_hdmi_driver);
> -out_common_hdmi:
> -   platform_driver_unregister(_driver);
> -out_mixer:
> -   platform_driver_unregister(_driver);
> +   exynos_common_hdmi_unregister();
>  out_hdmi:
>  #endif
>
> @@ -476,10 +460,7 @@ static void __exit exynos_drm_exit(void)
>  #endif
>
>  #ifdef CONFIG_DRM_EXYNOS_HDMI
> -   exynos_platform_device_hdmi_unregister();
> -   platform_driver_unregister(_drm_common_hdmi_driver);
> -   platform_driver_unregister(_driver);
> -   platform_driver_unregister(_driver);
> +   exynos_common_hdmi_unregister();
>  #endif
>
>  #ifdef CONFIG_DRM_EXYNOS_VIDI
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.h
> b/drivers/gpu/drm/exynos/exynos_drm_drv.h
> index 4606fac..7e6d070 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_drv.h
> +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.h
> @@ -319,20 +319,18 @@ int exynos_drm_subdrv_open(struct drm_device *dev,
> struct drm_file *file);
>  void exynos_drm_subdrv_close(struct drm_device *dev, struct drm_file
> *file);
>
>  /*
> - * this function registers exynos drm hdmi platform device. It ensures
> only one
> - * instance of the device is created.
> + * this function registers exynos drm hdmi platform driver and singleton
> + * device. It also registers subdrivers like mixer, hdmi and hdmiphy.
>   */
> -extern int exynos_platform_device_hdmi_register(void);
> +extern int exynos_common_hdmi_register(void);
>
>  /*
> - * this function unregisters exynos drm hdmi platform device 

[PATCH v2] drm/exynos: hdmi: use drm_display_mode to check the supported modes

2013-04-29 Thread 김승우
Hello Rahul,

I agree with basic idea of this patch.

However, to avoid confusion, how do you think about fixing all
check_timing as check_mode and its second parameter as mode including
struct exynos_drm_display_ops?

Regards,
- Seung-Woo Kim

On 2013? 04? 26? 23:03, Rahul Sharma wrote:
> Exynos hdmi driver is using drm_display_mode for setting timing values
> for a supported resolution. Conversion to fb_videomode and then comparing
> with the mixer/hdmi/phy limits is not required. Instead, drm_display_mode
> fields cane be directly compared.
> 
> v2:
> 1) Removed convert_to_video_timing().
> 2) Corrected DRM_DEBUG_KMS to print the resolution properly.
> 
> Signed-off-by: Rahul Sharma 
> ---
>  drivers/gpu/drm/exynos/exynos_drm_connector.c |   36 
> +
>  drivers/gpu/drm/exynos/exynos_drm_hdmi.h  |6 ++---
>  drivers/gpu/drm/exynos/exynos_hdmi.c  |   15 +--
>  drivers/gpu/drm/exynos/exynos_mixer.c |   13 -
>  4 files changed, 18 insertions(+), 52 deletions(-)
> 
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_connector.c 
> b/drivers/gpu/drm/exynos/exynos_drm_connector.c
> index 8bcc13a..7259fff 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_connector.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_connector.c
> @@ -58,37 +58,6 @@ convert_to_display_mode(struct drm_display_mode *mode,
>   mode->flags |= DRM_MODE_FLAG_DBLSCAN;
>  }
>  
> -/* convert drm_display_mode to exynos_video_timings */
> -static inline void
> -convert_to_video_timing(struct fb_videomode *timing,
> - struct drm_display_mode *mode)
> -{
> - DRM_DEBUG_KMS("%s\n", __FILE__);
> -
> - memset(timing, 0, sizeof(*timing));
> -
> - timing->pixclock = mode->clock * 1000;
> - timing->refresh = drm_mode_vrefresh(mode);
> -
> - timing->xres = mode->hdisplay;
> - timing->right_margin = mode->hsync_start - mode->hdisplay;
> - timing->hsync_len = mode->hsync_end - mode->hsync_start;
> - timing->left_margin = mode->htotal - mode->hsync_end;
> -
> - timing->yres = mode->vdisplay;
> - timing->lower_margin = mode->vsync_start - mode->vdisplay;
> - timing->vsync_len = mode->vsync_end - mode->vsync_start;
> - timing->upper_margin = mode->vtotal - mode->vsync_end;
> -
> - if (mode->flags & DRM_MODE_FLAG_INTERLACE)
> - timing->vmode = FB_VMODE_INTERLACED;
> - else
> - timing->vmode = FB_VMODE_NONINTERLACED;
> -
> - if (mode->flags & DRM_MODE_FLAG_DBLSCAN)
> - timing->vmode |= FB_VMODE_DOUBLE;
> -}
> -
>  static int exynos_drm_connector_get_modes(struct drm_connector *connector)
>  {
>   struct exynos_drm_connector *exynos_connector =
> @@ -168,15 +137,12 @@ static int exynos_drm_connector_mode_valid(struct 
> drm_connector *connector,
>   to_exynos_connector(connector);
>   struct exynos_drm_manager *manager = exynos_connector->manager;
>   struct exynos_drm_display_ops *display_ops = manager->display_ops;
> - struct fb_videomode timing;
>   int ret = MODE_BAD;
>  
>   DRM_DEBUG_KMS("%s\n", __FILE__);
>  
> - convert_to_video_timing(, mode);
> -
>   if (display_ops && display_ops->check_timing)
> - if (!display_ops->check_timing(manager->dev, (void *)))
> + if (!display_ops->check_timing(manager->dev, (void *)mode))
>   ret = MODE_OK;
>  
>   return ret;
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_hdmi.h 
> b/drivers/gpu/drm/exynos/exynos_drm_hdmi.h
> index 6b70944..fd2ff9f 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_hdmi.h
> +++ b/drivers/gpu/drm/exynos/exynos_drm_hdmi.h
> @@ -32,11 +32,11 @@ struct exynos_hdmi_ops {
>   bool (*is_connected)(void *ctx);
>   struct edid *(*get_edid)(void *ctx,
>   struct drm_connector *connector);
> - int (*check_timing)(void *ctx, struct fb_videomode *timing);
> + int (*check_timing)(void *ctx, struct drm_display_mode *mode);
>   int (*power_on)(void *ctx, int mode);
>  
>   /* manager */
> - void (*mode_set)(void *ctx, void *mode);
> + void (*mode_set)(void *ctx, struct drm_display_mode *mode);
>   void (*get_max_resol)(void *ctx, unsigned int *width,
>   unsigned int *height);
>   void (*commit)(void *ctx);
> @@ -57,7 +57,7 @@ struct exynos_mixer_ops {
>   void (*win_disable)(void *ctx, int zpos);
>  
>   /* display */
> - int (*check_timing)(void *ctx, struct fb_videomode *timing);
> + int (*check_timing)(void *ctx, struct drm_display_mode *mode);
>  };
>  
>  void exynos_hdmi_drv_attach(struct exynos_drm_hdmi_context *ctx);
> diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c 
> b/drivers/gpu/drm/exynos/exynos_hdmi.c
> index 93b70e9..aeca603 100644
> --- a/drivers/gpu/drm/exynos/exynos_hdmi.c
> +++ b/drivers/gpu/drm/exynos/exynos_hdmi.c
> @@ -796,18 +796,17 @@ static int hdmi_find_phy_conf(struct 

[Bug 63702] tiling2d in radeon trash vdpau UVD textures

2013-04-29 Thread bugzilla-dae...@freedesktop.org
https://bugs.freedesktop.org/show_bug.cgi?id=63702

Christian K?nig  changed:

   What|Removed |Added

 Status|RESOLVED|CLOSED

-- 
You are receiving this mail because:
You are the assignee for the bug.
-- next part --
An HTML attachment was scrubbed...
URL: 
<http://lists.freedesktop.org/archives/dri-devel/attachments/20130429/4df2df41/attachment.html>


[PATCH 4/4] ARM: EXYNOS: remove parent device for hdmiphy clock

2013-04-29 Thread Sean Paul
On Mon, Apr 29, 2013 at 10:50 AM, Rahul Sharma  
wrote:
> Hdmiphy clock flows from hdmiphy hw to hdmi ip and mixer. It is commonly
> accessed among hdmi and hdmiphy driver. During power cycle, each of these
> driver decrements the ref-count and ensures that last user disables the
> clock. Setting parrent device to none ensure that both the drivers gets
> access to the clock.
>

This seems like the wrong solution. I think you should be trying to
isolate its usage to one driver, instead of removing devname.

Sean



> Signed-off-by: Rahul Sharma 
> ---
>  arch/arm/mach-exynos/clock-exynos4.c |1 -
>  arch/arm/mach-exynos/clock-exynos5.c |1 -
>  2 files changed, 2 deletions(-)
>
> diff --git a/arch/arm/mach-exynos/clock-exynos4.c 
> b/arch/arm/mach-exynos/clock-exynos4.c
> index 8a8468d..a43afcd 100644
> --- a/arch/arm/mach-exynos/clock-exynos4.c
> +++ b/arch/arm/mach-exynos/clock-exynos4.c
> @@ -562,7 +562,6 @@ static struct clk exynos4_init_clocks_off[] = {
> .ctrlbit= (1 << 3),
> }, {
> .name   = "hdmiphy",
> -   .devname= "exynos4-hdmi",
> .enable = exynos4_clk_hdmiphy_ctrl,
> .ctrlbit= (1 << 0),
> }, {
> diff --git a/arch/arm/mach-exynos/clock-exynos5.c 
> b/arch/arm/mach-exynos/clock-exynos5.c
> index b0ea31f..4f39027 100644
> --- a/arch/arm/mach-exynos/clock-exynos5.c
> +++ b/arch/arm/mach-exynos/clock-exynos5.c
> @@ -690,7 +690,6 @@ static struct clk exynos5_init_clocks_off[] = {
> .ctrlbit= (1 << 6),
> }, {
> .name   = "hdmiphy",
> -   .devname= "exynos5-hdmi",
> .enable = exynos5_clk_hdmiphy_ctrl,
> .ctrlbit= (1 << 0),
> }, {
> --
> 1.7.10.4
>


[PATCH 2/4] drm/exynos: hdmi: register hdmiphy driver from common drm hdmi

2013-04-29 Thread Sean Paul
On Mon, Apr 29, 2013 at 10:50 AM, Rahul Sharma  
wrote:
> hdmiphy hardware block is a physically separate device. Hdmiphy driver
> is glued inside hdmi driver and acessed through hdmi callbacks. With
> increasing diversities in the hdmiphy mapping and configurations, hdmi
> driver is expanding with un-related changes.
>
> This patch registers hdmiphy as a independent driver, having own set
> of requried callbacks which are called by common drm hdmi, parallel to
> hdmi and mixer driver.
>
> Signed-off-by: Rahul Sharma 
> ---
>  drivers/gpu/drm/exynos/exynos_drm_hdmi.c |   61 
> +++---
>  drivers/gpu/drm/exynos/exynos_drm_hdmi.h |   17 +
>  drivers/gpu/drm/exynos/exynos_hdmi.c |   26 ++---
>  drivers/gpu/drm/exynos/exynos_hdmi.h |1 -
>  drivers/gpu/drm/exynos/exynos_hdmiphy.c  |   13 ++-
>  5 files changed, 87 insertions(+), 31 deletions(-)
>
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_hdmi.c 
> b/drivers/gpu/drm/exynos/exynos_drm_hdmi.c
> index 7ab5f9f..25fe012 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_hdmi.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_hdmi.c
> @@ -32,12 +32,14 @@
>  /* platform device pointer for common drm hdmi device. */
>  static struct platform_device *exynos_drm_hdmi_pdev;
>
> -/* Common hdmi subdrv needs to access the hdmi and mixer though context.
> -* These should be initialied by the repective drivers */
> +/* Common hdmi subdrv needs to access the hdmi, hdmiphy and mixer though
> +*  context. These should be initialied by the repective drivers */

Doesn't conform with Documentation/CodingStyle &
s/initialied/initialized/ & s/repective/respective/

> +static struct exynos_drm_hdmi_context *hdmiphy_ctx;
>  static struct exynos_drm_hdmi_context *hdmi_ctx;
>  static struct exynos_drm_hdmi_context *mixer_ctx;
>
>  /* these callback points shoud be set by specific drivers. */
> +static struct exynos_hdmiphy_ops *hdmiphy_ops;
>  static struct exynos_hdmi_ops *hdmi_ops;
>  static struct exynos_mixer_ops *mixer_ops;
>
> @@ -45,6 +47,7 @@ struct platform_driver exynos_drm_common_hdmi_driver;
>
>  struct drm_hdmi_context {
> struct exynos_drm_subdrvsubdrv;
> +   struct exynos_drm_hdmi_context  *hdmiphy_ctx;
> struct exynos_drm_hdmi_context  *hdmi_ctx;
> struct exynos_drm_hdmi_context  *mixer_ctx;
>
> @@ -59,6 +62,10 @@ int exynos_common_hdmi_register(void)
> if (exynos_drm_hdmi_pdev)
> return -EEXIST;
>
> +   ret = exynos_hdmiphy_driver_register();
> +   if (ret < 0)
> +   goto out_hdmiphy;

This isn't consistent with your last patch. In that patch, you exposed
the driver directly through exynos_drm_hdmi.h and registered the
driver directly. Here, you expose a helper function to do it for you.
These should at least work the same way.

> +
> ret = platform_driver_register(_driver);
> if (ret < 0)
> goto out_hdmi;
> @@ -88,6 +95,8 @@ out_common_hdmi:
>  out_mixer:
> platform_driver_unregister(_driver);
>  out_hdmi:
> +   exynos_hdmiphy_driver_unregister();
> +out_hdmiphy:
> return ret;
>  }
>
> @@ -99,9 +108,16 @@ void exynos_common_hdmi_unregister(void)
> platform_driver_unregister(_drm_common_hdmi_driver);
> platform_driver_unregister(_driver);
> platform_driver_unregister(_driver);
> +   exynos_hdmiphy_driver_unregister();
> exynos_drm_hdmi_pdev = NULL;
>  }
>
> +void exynos_hdmiphy_drv_attach(struct exynos_drm_hdmi_context *ctx)
> +{
> +   if (ctx)
> +   hdmiphy_ctx = ctx;
> +}
> +

I think I've said this before, but in case I haven't, here it goes. If
you didn't platform_driverize all of this stuff, and instead
encapsulated the various functionality in callbacks central to one drm
driver, you wouldn't need to do this kind of thing.

>  void exynos_hdmi_drv_attach(struct exynos_drm_hdmi_context *ctx)
>  {
> if (ctx)
> @@ -114,6 +130,14 @@ void exynos_mixer_drv_attach(struct 
> exynos_drm_hdmi_context *ctx)
> mixer_ctx = ctx;
>  }
>
> +void exynos_hdmiphy_ops_register(struct exynos_hdmiphy_ops *ops)
> +{
> +   DRM_DEBUG_KMS("%s\n", __FILE__);
> +
> +   if (ops)
> +   hdmiphy_ops = ops;
> +}
> +
>  void exynos_hdmi_ops_register(struct exynos_hdmi_ops *ops)
>  {
> DRM_DEBUG_KMS("%s\n", __FILE__);
> @@ -164,8 +188,8 @@ static int drm_hdmi_check_mode(struct device *dev,
> DRM_DEBUG_KMS("%s\n", __FILE__);
>
> /*
> -   * Both, mixer and hdmi should be able to handle the requested mode.
> -   * If any of the two fails, return mode as BAD.
> +   * Mixer, hdmi and hdmiphy should be able to handle the requested mode.
> +   * If any of the them fails, return mode as BAD.
> */
>
> if (mixer_ops && mixer_ops->check_mode)
> @@ -175,7 +199,13 @@ static int drm_hdmi_check_mode(struct device *dev,
> return ret;
>
> if (hdmi_ops && 

[Bug 57281] Radeon: Bad performance and power consumption

2013-04-29 Thread bugzilla-dae...@bugzilla.kernel.org
https://bugzilla.kernel.org/show_bug.cgi?id=57281


Nick  changed:

   What|Removed |Added

 Attachment #100271|application/octet-stream|text/plain
  mime type||




-- 
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are watching the assignee of the bug.


[Bug 57281] Radeon: Bad performance and power consumption

2013-04-29 Thread bugzilla-dae...@bugzilla.kernel.org
https://bugzilla.kernel.org/show_bug.cgi?id=57281


Nick  changed:

   What|Removed |Added

 Attachment #100261|application/octet-stream|text/plain
  mime type||




-- 
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are watching the assignee of the bug.


[Bug 57281] Radeon: Bad performance and power consumption

2013-04-29 Thread bugzilla-dae...@bugzilla.kernel.org
https://bugzilla.kernel.org/show_bug.cgi?id=57281





--- Comment #1 from Nick   2013-04-29 12:34:50 ---
Created an attachment (id=100271)
 --> (https://bugzilla.kernel.org/attachment.cgi?id=100271)
Kernel config

-- 
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are watching the assignee of the bug.


[Bug 57281] New: Radeon: Bad performance and power consumption

2013-04-29 Thread bugzilla-dae...@bugzilla.kernel.org
https://bugzilla.kernel.org/show_bug.cgi?id=57281

   Summary: Radeon: Bad performance and power consumption
   Product: Drivers
   Version: 2.5
Kernel Version: 3.8.2-pf
  Platform: All
OS/Version: Linux
  Tree: Mainline
Status: NEW
  Severity: normal
  Priority: P1
 Component: Video(DRI - non Intel)
AssignedTo: drivers_video-dri at kernel-bugs.osdl.org
ReportedBy: ka.nick at mail.ru
Regression: No


Created an attachment (id=100261)
 --> (https://bugzilla.kernel.org/attachment.cgi?id=100261)
lspci -vv output

After upgrading my AMD E-450-based notebook to a newer one (HP 4545s
A4-3300-based) i noticed that in spite of noticeable higher clock rate the
video performance is about 15-20% worse than on E-450. It also got much hotter
initially, which I could cure by passing pcie_aspm=force to the kernel. In
spite of this I still have a feeling that it probably eats more power than it
should (which I can not prove with numbers, of course) comparing to E-450 (and
fglrx) experience. (Yes, I know the proprietary driver performs better in terms
of power management, too, but the question is to what extent?) Anyways, it
shouldn't underperform the older and weaker model...

It also shows the message at boot time:
[drm:radeon_acpi_init] *ERROR* Cannot find backlight controller
but it seems to work fine after that. (Shall I post another bug on this?)

-- 
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are watching the assignee of the bug.


[PATCH 1/2] drm/exynos: exynos_drm_fbdev: Fix incorrect usage of IS_ERR_OR_NULL

2013-04-29 Thread Sachin Kamat
exynos_drm_framebuffer_init() does not return NULL. Use IS_ERR instead.

Signed-off-by: Sachin Kamat 
---
This series is based on exynos-drm-next branch of Inki Dae's tree:
git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos.git
---
 drivers/gpu/drm/exynos/exynos_drm_fbdev.c |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c 
b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
index 68f0045..8f007aa 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
@@ -182,7 +182,7 @@ static int exynos_drm_fbdev_create(struct drm_fb_helper 
*helper,

helper->fb = exynos_drm_framebuffer_init(dev, _cmd,
_gem_obj->base);
-   if (IS_ERR_OR_NULL(helper->fb)) {
+   if (IS_ERR(helper->fb)) {
DRM_ERROR("failed to create drm framebuffer.\n");
ret = PTR_ERR(helper->fb);
goto err_destroy_gem;
-- 
1.7.9.5



[PATCH v4] drm/exynos: hdmi: use drm_display_mode to check the supported modes

2013-04-29 Thread Sean Paul
On Mon, Apr 29, 2013 at 7:14 AM, Rahul Sharma  
wrote:
> Exynos hdmi driver is using drm_display_mode for setting timing values
> for a supported resolution. Conversion to fb_videomode and then comparing
> with the mixer/hdmi/phy limits is not required. Instead, drm_display_mode
> fields cane be directly compared.
>

it seems like you have 2 patches here, one which renames check_timing
to check_mode, and another which removes the fb_videomode usage. I
think it should probably be split.

If you don't split it, I think you could simplify the commit message to:

This patch renames check_timing to check_mode and removes the
unnecessary conversion of drm_display_mode to/from fb_videomode in the
hdmi driver.



> v4:
> 1) Removed __func__ from DRM_DEBUG_KMS.
>
> v3:
> 1) Replaced check_timing callbacks with check_mode.
> 2) Change the type of second parameter of check_mode callback from void
> pointer paramenter to struct drm_display_mode pointer.
>
> v2:
> 1) Removed convert_to_video_timing().
> 2) Corrected DRM_DEBUG_KMS to print the resolution properly.
>
> Signed-off-by: Rahul Sharma 
> ---
>  drivers/gpu/drm/exynos/exynos_drm_connector.c |   38 
> ++---
>  drivers/gpu/drm/exynos/exynos_drm_drv.h   |4 +--
>  drivers/gpu/drm/exynos/exynos_drm_fimd.c  |4 +--
>  drivers/gpu/drm/exynos/exynos_drm_hdmi.c  |   17 +--
>  drivers/gpu/drm/exynos/exynos_drm_hdmi.h  |6 ++--
>  drivers/gpu/drm/exynos/exynos_drm_vidi.c  |4 +--
>  drivers/gpu/drm/exynos/exynos_hdmi.c  |   29 +--
>  drivers/gpu/drm/exynos/exynos_mixer.c |   17 +--
>  8 files changed, 43 insertions(+), 76 deletions(-)
>
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_connector.c 
> b/drivers/gpu/drm/exynos/exynos_drm_connector.c
> index 8bcc13a..ab3c6d4 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_connector.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_connector.c
> @@ -58,37 +58,6 @@ convert_to_display_mode(struct drm_display_mode *mode,
> mode->flags |= DRM_MODE_FLAG_DBLSCAN;
>  }
>
> -/* convert drm_display_mode to exynos_video_timings */
> -static inline void
> -convert_to_video_timing(struct fb_videomode *timing,
> -   struct drm_display_mode *mode)
> -{
> -   DRM_DEBUG_KMS("%s\n", __FILE__);
> -
> -   memset(timing, 0, sizeof(*timing));
> -
> -   timing->pixclock = mode->clock * 1000;
> -   timing->refresh = drm_mode_vrefresh(mode);
> -
> -   timing->xres = mode->hdisplay;
> -   timing->right_margin = mode->hsync_start - mode->hdisplay;
> -   timing->hsync_len = mode->hsync_end - mode->hsync_start;
> -   timing->left_margin = mode->htotal - mode->hsync_end;
> -
> -   timing->yres = mode->vdisplay;
> -   timing->lower_margin = mode->vsync_start - mode->vdisplay;
> -   timing->vsync_len = mode->vsync_end - mode->vsync_start;
> -   timing->upper_margin = mode->vtotal - mode->vsync_end;
> -
> -   if (mode->flags & DRM_MODE_FLAG_INTERLACE)
> -   timing->vmode = FB_VMODE_INTERLACED;
> -   else
> -   timing->vmode = FB_VMODE_NONINTERLACED;
> -
> -   if (mode->flags & DRM_MODE_FLAG_DBLSCAN)
> -   timing->vmode |= FB_VMODE_DOUBLE;
> -}
> -
>  static int exynos_drm_connector_get_modes(struct drm_connector *connector)
>  {
> struct exynos_drm_connector *exynos_connector =
> @@ -168,15 +137,12 @@ static int exynos_drm_connector_mode_valid(struct 
> drm_connector *connector,
> to_exynos_connector(connector);
> struct exynos_drm_manager *manager = exynos_connector->manager;
> struct exynos_drm_display_ops *display_ops = manager->display_ops;
> -   struct fb_videomode timing;
> int ret = MODE_BAD;
>
> DRM_DEBUG_KMS("%s\n", __FILE__);
>
> -   convert_to_video_timing(, mode);
> -
> -   if (display_ops && display_ops->check_timing)
> -   if (!display_ops->check_timing(manager->dev, (void *)))
> +   if (display_ops && display_ops->check_mode)
> +   if (!display_ops->check_mode(manager->dev, mode))
> ret = MODE_OK;
>
> return ret;
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.h 
> b/drivers/gpu/drm/exynos/exynos_drm_drv.h
> index 4606fac..9650b3b 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_drv.h
> +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.h
> @@ -142,7 +142,7 @@ struct exynos_drm_overlay {
>   * @is_connected: check for that display is connected or not.
>   * @get_edid: get edid modes from display driver.
>   * @get_panel: get panel object from display driver.
> - * @check_timing: check if timing is valid or not.
> + * @check_mode: check if mode is valid or not.
>   * @power_on: display device on or off.
>   */
>  struct exynos_drm_display_ops {
> @@ -151,7 +151,7 @@ struct exynos_drm_display_ops {
> struct edid *(*get_edid)(struct device *dev,
>

[Bug 47351] [KMS: Mobility Radeon HD 6620G] Blank screen on boot

2013-04-29 Thread bugzilla-dae...@bugzilla.kernel.org
https://bugzilla.kernel.org/show_bug.cgi?id=47351





--- Comment #5 from Nick   2013-04-29 12:01:07 ---
Created an attachment (id=100251)
 --> (https://bugzilla.kernel.org/attachment.cgi?id=100251)
lspci -vv output

I have the same behaviour on my HP 4545s laptop if I try to use discrete video
card (HD7500/7600). I managed to get it work (more or less) on integrated
7240G, but I get blank screen having tried to switch to discrete video. Can I
provide any additional information to help to resolve the issue?

-- 
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are watching the assignee of the bug.


[RFC v2] drm/exynos: hdmi: move hdmiphy related code to hdmiphy driver

2013-04-29 Thread Rahul Sharma
On Mon, Apr 29, 2013 at 10:22 AM, Inki Dae  wrote:
>
> Hi Rahul,
>
>
> 2013/4/26 Rahul Sharma 
>>
>> Right now hdmiphy operations and configs are kept inside hdmi driver.
hdmiphy
>> related code is tightly coupled with hdmi ip driver. Physicaly they are
>> different devices and should be instantiated independently.
>>
>> In terms of versions/mapping/configurations Hdmi and hdmiphy are
independent
>> of each other. It seems logical to isolate them and maintained
independently.
>>
>> v2:
>> 1) Moved hdmi subsystem registration to drm-common-hdmi.
>> 2) removed __func__ as DRM_DEBUG_KMS print it by default.
>> 3) removed devname from "hdmiphy" clock as it needs to be accessed by
hdmi
>> and hdmiphy driver.
>>
>
> Please separate this patch into 1), 2) and 3) and make it based on
exynos-drm-next.
>

Sure Mr. Dae,

I will post the series.

Regards,
Rahul Sharma.

> Thanks,
> Inki Dae
>
>
>
>>
>> This implementations is tested for:
>> 1) Resolutions supported by exynos4 and 5 hdmi.
>> 2) Runtime PM and S2R scenarions for exynos5.
>>
>> This patch is dependent on the patch, posted at
>> http://www.mail-archive.com/dri-devel at lists.freedesktop.org/msg34861.html
>>
>> Signed-off-by: Rahul Sharma 
>> ---
>> It is based on exynos-drm-next branch at
>> git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos.git
>>
>>  arch/arm/mach-exynos/clock-exynos5.c |1 -
>>  drivers/gpu/drm/exynos/exynos_drm_drv.c  |   25 +-
>>  drivers/gpu/drm/exynos/exynos_drm_drv.h  |   14 +-
>>  drivers/gpu/drm/exynos/exynos_drm_hdmi.c |  109 +-
>>  drivers/gpu/drm/exynos/exynos_drm_hdmi.h |   20 +
>>  drivers/gpu/drm/exynos/exynos_hdmi.c |  372 ++-
>>  drivers/gpu/drm/exynos/exynos_hdmi.h |1 -
>>  drivers/gpu/drm/exynos/exynos_hdmiphy.c  |  585
+-
>>  drivers/gpu/drm/exynos/regs-hdmiphy.h|   61 
>>  9 files changed, 783 insertions(+), 405 deletions(-)
>>  create mode 100644 drivers/gpu/drm/exynos/regs-hdmiphy.h
>>
>> diff --git a/arch/arm/mach-exynos/clock-exynos5.c
b/arch/arm/mach-exynos/clock-exynos5.c
>> index b0ea31f..4f39027 100644
>> --- a/arch/arm/mach-exynos/clock-exynos5.c
>> +++ b/arch/arm/mach-exynos/clock-exynos5.c
>> @@ -690,7 +690,6 @@ static struct clk exynos5_init_clocks_off[] = {
>> .ctrlbit= (1 << 6),
>> }, {
>> .name   = "hdmiphy",
>> -   .devname= "exynos5-hdmi",
>> .enable = exynos5_clk_hdmiphy_ctrl,
>> .ctrlbit= (1 << 0),
>> }, {
>> diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c
b/drivers/gpu/drm/exynos/exynos_drm_drv.c
>> index 3da5c2d..2ec8ab1 100644
>> --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
>> +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
>> @@ -331,19 +331,9 @@ static int __init exynos_drm_init(void)
>>  #endif
>>
>>  #ifdef CONFIG_DRM_EXYNOS_HDMI
>> -   ret = platform_driver_register(_driver);
>> +   ret = exynos_common_hdmi_register();
>> if (ret < 0)
>> goto out_hdmi;
>> -   ret = platform_driver_register(_driver);
>> -   if (ret < 0)
>> -   goto out_mixer;
>> -   ret = platform_driver_register(_drm_common_hdmi_driver);
>> -   if (ret < 0)
>> -   goto out_common_hdmi;
>> -
>> -   ret = exynos_platform_device_hdmi_register();
>> -   if (ret < 0)
>> -   goto out_common_hdmi_dev;
>>  #endif
>>
>>  #ifdef CONFIG_DRM_EXYNOS_VIDI
>> @@ -430,13 +420,7 @@ out_vidi:
>>  #endif
>>
>>  #ifdef CONFIG_DRM_EXYNOS_HDMI
>> -   exynos_platform_device_hdmi_unregister();
>> -out_common_hdmi_dev:
>> -   platform_driver_unregister(_drm_common_hdmi_driver);
>> -out_common_hdmi:
>> -   platform_driver_unregister(_driver);
>> -out_mixer:
>> -   platform_driver_unregister(_driver);
>> +   exynos_common_hdmi_unregister();
>>  out_hdmi:
>>  #endif
>>
>> @@ -476,10 +460,7 @@ static void __exit exynos_drm_exit(void)
>>  #endif
>>
>>  #ifdef CONFIG_DRM_EXYNOS_HDMI
>> -   exynos_platform_device_hdmi_unregister();
>> -   platform_driver_unregister(_drm_common_hdmi_driver);
>> -   platform_driver_unregister(_driver);
>> -   platform_driver_unregister(_driver);
>> +   exynos_common_hdmi_unregister();
>>  #endif
>>
>>  #ifdef CONFIG_DRM_EXYNOS_VIDI
>> diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.h
b/drivers/gpu/drm/exynos/exynos_drm_drv.h
>> index 4606fac..7e6d070 100644
>> --- a/drivers/gpu/drm/exynos/exynos_drm_drv.h
>> +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.h
>> @@ -319,20 +319,18 @@ int exynos_drm_subdrv_open(struct drm_device *dev,
struct drm_file *file);
>>  void exynos_drm_subdrv_close(struct drm_device *dev, struct drm_file
*file);
>>
>>  /*
>> - * this function registers exynos drm hdmi platform device. It ensures
only one
>> - * instance of the device is created.
>> + * this function registers exynos drm hdmi platform driver and singleton
>> + * device. It also 

[RFC][PATCH] drm/prime: fixed to allocate sg table considering contiguous pages

2013-04-29 Thread 김승우
Hello Rahul,

Thanks for notifying.

As your comment, it is same patch with yours, so just ignore my patch.

Besg Regards,
- Seung-Woo Kim

On 2013? 04? 26? 18:14, Rahul Sharma wrote:
> Hi Seung Woo,
> 
> I had posted the same solution at
> http://lists.freedesktop.org/archives/dri-devel/2013-January/034119.html.
> This has been pulled in drm-intel-next.
> 
> regards,
> Rahul Sharma.
> 
> 
> 
> On Fri, Apr 26, 2013 at 2:18 PM, Seung-Woo Kim  samsung.com>wrote:
> 
>> Allocating scatter table with sg_alloc_table() does not consider
>> contiguous pages. Because sg_alloc_table_from_pages() merges
>> contigous pages into a signle scatter entry, this patch fixes to
>> allocate scatter table with it from drm_prime_pages_to_sg().
>>
>> Signed-off-by: Seung-Woo Kim 
>> ---
>>  drivers/gpu/drm/drm_prime.c |8 ++--
>>  1 files changed, 2 insertions(+), 6 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c
>> index 366910d..8c098a3 100644
>> --- a/drivers/gpu/drm/drm_prime.c
>> +++ b/drivers/gpu/drm/drm_prime.c
>> @@ -401,21 +401,17 @@ int drm_prime_fd_to_handle_ioctl(struct drm_device
>> *dev, void *data,
>>  struct sg_table *drm_prime_pages_to_sg(struct page **pages, int nr_pages)
>>  {
>> struct sg_table *sg = NULL;
>> -   struct scatterlist *iter;
>> -   int i;
>> int ret;
>>
>> sg = kmalloc(sizeof(struct sg_table), GFP_KERNEL);
>> if (!sg)
>> goto out;
>>
>> -   ret = sg_alloc_table(sg, nr_pages, GFP_KERNEL);
>> +   ret = sg_alloc_table_from_pages(sg, pages, nr_pages,
>> +   0, PAGE_SIZE * nr_pages, GFP_KERNEL);
>> if (ret)
>> goto out;
>>
>> -   for_each_sg(sg->sgl, iter, nr_pages, i)
>> -   sg_set_page(iter, pages[i], PAGE_SIZE, 0);
>> -
>> return sg;
>>  out:
>> kfree(sg);
>> --
>> 1.7.4.1
>>
>> ___
>> dri-devel mailing list
>> dri-devel at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>>
> 
> 
> 
> 
> 
> ___
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
> 

-- 
Seung-Woo Kim
Samsung Software R Center
--



[PATCH v2] drm/exynos: hdmi: use drm_display_mode to check the supported modes

2013-04-29 Thread Rahul Sharma
,
> >   struct drm_connector *connector);
> > - int (*check_timing)(void *ctx, struct fb_videomode *timing);
> > + int (*check_timing)(void *ctx, struct drm_display_mode *mode);
> >   int (*power_on)(void *ctx, int mode);
> >
> >   /* manager */
> > - void (*mode_set)(void *ctx, void *mode);
> > + void (*mode_set)(void *ctx, struct drm_display_mode *mode);
> >   void (*get_max_resol)(void *ctx, unsigned int *width,
> >   unsigned int *height);
> >   void (*commit)(void *ctx);
> > @@ -57,7 +57,7 @@ struct exynos_mixer_ops {
> >   void (*win_disable)(void *ctx, int zpos);
> >
> >   /* display */
> > - int (*check_timing)(void *ctx, struct fb_videomode *timing);
> > + int (*check_timing)(void *ctx, struct drm_display_mode *mode);
> >  };
> >
> >  void exynos_hdmi_drv_attach(struct exynos_drm_hdmi_context *ctx);
> > diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c
> b/drivers/gpu/drm/exynos/exynos_hdmi.c
> > index 93b70e9..aeca603 100644
> > --- a/drivers/gpu/drm/exynos/exynos_hdmi.c
> > +++ b/drivers/gpu/drm/exynos/exynos_hdmi.c
> > @@ -796,18 +796,17 @@ static int hdmi_find_phy_conf(struct hdmi_context
> *hdata, u32 pixel_clock)
> >   return -EINVAL;
> >  }
> >
> > -static int hdmi_check_timing(void *ctx, struct fb_videomode *timing)
> > +static int hdmi_check_timing(void *ctx, struct drm_display_mode *mode)
> >  {
> >   struct hdmi_context *hdata = ctx;
> >   int ret;
> >
> > - DRM_DEBUG_KMS("[%d] %s\n", __LINE__, __func__);
> > -
> > - DRM_DEBUG_KMS("[%d]x[%d] [%d]Hz [%x]\n", timing->xres,
> > - timing->yres, timing->refresh,
> > - timing->vmode);
> > + DRM_DEBUG_KMS("[WxH at HzI/P at Pixel Clk]: %dx%d@%d%s at %d\n",
> > + mode->hdisplay, mode->vdisplay, mode->vrefresh,
> > + (mode->flags & DRM_MODE_FLAG_INTERLACE) ? "I" : "P",
> > + mode->clock * 1000);
> >
> > - ret = hdmi_find_phy_conf(hdata, timing->pixclock);
> > + ret = hdmi_find_phy_conf(hdata, mode->clock * 1000);
> >   if (ret < 0)
> >   return ret;
> >   return 0;
> > @@ -1643,7 +1642,7 @@ static void hdmi_v14_mode_set(struct hdmi_context
> *hdata,
> >   hdmi_set_reg(tg->tg_3d, 1, 0x0);
> >  }
> >
> > -static void hdmi_mode_set(void *ctx, void *mode)
> > +static void hdmi_mode_set(void *ctx, struct drm_display_mode *mode)
> >  {
> >   struct hdmi_context *hdata = ctx;
> >   struct drm_display_mode *m = mode;
> > diff --git a/drivers/gpu/drm/exynos/exynos_mixer.c
> b/drivers/gpu/drm/exynos/exynos_mixer.c
> > index f08e251..67c4fd8 100644
> > --- a/drivers/gpu/drm/exynos/exynos_mixer.c
> > +++ b/drivers/gpu/drm/exynos/exynos_mixer.c
> > @@ -818,17 +818,17 @@ static void mixer_win_disable(void *ctx, int win)
> >   mixer_ctx->win_data[win].enabled = false;
> >  }
> >
> > -static int mixer_check_timing(void *ctx, struct fb_videomode *timing)
> > +static int mixer_check_timing(void *ctx, struct drm_display_mode *mode)
> >  {
> >   u32 w, h;
> >
> > - w = timing->xres;
> > - h = timing->yres;
> > + w = mode->hdisplay;
> > + h = mode->vdisplay;
> >
> >   DRM_DEBUG_KMS("%s : xres=%d, yres=%d, refresh=%d, intl=%d\n",
> > - __func__, timing->xres, timing->yres,
> > - timing->refresh, (timing->vmode &
> > - FB_VMODE_INTERLACED) ? true : false);
> > + __func__, mode->hdisplay, mode->vdisplay,
> > + mode->vrefresh, (mode->flags &
> > + DRM_MODE_FLAG_INTERLACE) ? true : false);
> >
> >   if ((w >= 464 && w <= 720 && h >= 261 && h <= 576) ||
> >   (w >= 1024 && w <= 1280 && h >= 576 && h <= 720) ||
> > @@ -837,6 +837,7 @@ static int mixer_check_timing(void *ctx, struct
> fb_videomode *timing)
> >
> >   return -EINVAL;
> >  }
> > +
> >  static void mixer_wait_for_vblank(void *ctx)
> >  {
> >   struct mixer_context *mixer_ctx = ctx;
> >
>
> --
> Seung-Woo Kim
> Samsung Software R Center
> --
>
> ___
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>



--
-- next part --
An HTML attachment was scrubbed...
URL: 
<http://lists.freedesktop.org/archives/dri-devel/attachments/20130429/3ab62fba/attachment-0001.html>


radeon pm questions

2013-04-29 Thread Alex Deucher
On Sun, Apr 28, 2013 at 9:26 PM, Sylvain BERTRAND  wrote:
> Hi,
>
> I have a few questions about radeon pm code:
>
> 
> In radeon_atombios.c, radeon_atombios_parse_power_table_6
> function, power_state->v2.nonClockInfoIndex for non_clock_info of
> one state is ignored and replaced by the state index, referencing
> an iguana bug.
>
> Is it still buggy from southern island and we must keep ignoring
> power_state->v2.nonClockInfoIndex for good and use the state
> index to reference the right state description in non clock array
> table?

nonClockInfoIndex isn't used and produces bogus tables.  The index
should be used.

> 
>
> 
> The same does happen for the clock info index which can be out of
> range. Same treat as above?


Yes, although, at this point, it's mostly for safety.  You shouldn't
see it in practice.

> 
>
> 
> In radeon_atombios.c, radeon_atombios_parse_pplib_clock_info
> function, code paths are selected based on DCE generation. The
> same happens in radeon_atombios_parse_pplib_non_clock_info
> function.  Should it rather be the chip family? Or current
> powerplay code does deal only with the DCE block??

It should be chip family.  I just used the DCE check since it
corresponds to the same relevant families.  I'll fix that.

Alex

> 
>
> regards,
>
> --
> Sylvain
> ___
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH] module: fix mutiple defined issue

2013-04-29 Thread Russell King - ARM Linux
On Mon, Apr 29, 2013 at 02:32:01PM +0900, Inki Dae wrote:
> This patch fixes mutiple defined issue to MODULE_DEVICE_TABLE
> 
> The issue could be induced when some framework which includes two
> more sub drivers, is built as one moudle because those sub drivers
> could have their own MODULE_DEVICE_TABLE.
> 
> And 'struct of_device_id' isn't needed to be determined by type
> argument because the definition of 'of_device_id' should be fixed.
> So this patch makes 'of_devce_id' definition to be fixed and
> only its instance name to be defined by type.
> 
> Signed-off-by: Inki Dae 
> ---
>  include/linux/module.h |2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/include/linux/module.h b/include/linux/module.h
> index 46f1ea0..ac5d79f 100644
> --- a/include/linux/module.h
> +++ b/include/linux/module.h
> @@ -84,7 +84,7 @@ void trim_init_extable(struct module *m);
>  
>  #ifdef MODULE
>  #define MODULE_GENERIC_TABLE(gtype,name) \
> -extern const struct gtype##_id __mod_##gtype##_table \
> +extern const struct of_device_id __mod_##gtype##_table   \
>__attribute__ ((unused, alias(__stringify(name
>  
>  #else  /* !MODULE */

This patch (a) looks wrong (why would a generic device table be limited
to of_device_id when it could be ISAPNP or something else?) and (b) how
does changing the type fix the "multiple defined issue" ?  (c) include
the errors that you're fixing in the commit log.


[PATCH] drm/radeon: consolidate UVD clock programming

2013-04-29 Thread Alex Deucher
On Mon, Apr 29, 2013 at 5:55 AM, Christian K?nig
 wrote:
> From: Christian K?nig 
>
> Instead of duplicating the code over and over again, just use a single
> function to handle the clock calculations.

Applied to by tree.

Alex

>
> Signed-off-by: Christian K?nig 
> ---
>  drivers/gpu/drm/radeon/evergreen.c  |  103 +++---
>  drivers/gpu/drm/radeon/r600d.h  |4 +
>  drivers/gpu/drm/radeon/radeon.h |   11 +++
>  drivers/gpu/drm/radeon/radeon_uvd.c |  137 
> +++
>  drivers/gpu/drm/radeon/rv770.c  |  110 +---
>  drivers/gpu/drm/radeon/si.c |  104 +++---
>  6 files changed, 191 insertions(+), 278 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/evergreen.c 
> b/drivers/gpu/drm/radeon/evergreen.c
> index 1531f16..105bafb 100644
> --- a/drivers/gpu/drm/radeon/evergreen.c
> +++ b/drivers/gpu/drm/radeon/evergreen.c
> @@ -989,62 +989,10 @@ done:
> return r;
>  }
>
> -static int evergreen_uvd_calc_post_div(unsigned target_freq,
> -  unsigned vco_freq,
> -  unsigned *div)
> -{
> -   /* target larger than vco frequency ? */
> -   if (vco_freq < target_freq)
> -   return -1; /* forget it */
> -
> -   /* Fclk = Fvco / PDIV */
> -   *div = vco_freq / target_freq;
> -
> -   /* we alway need a frequency less than or equal the target */
> -   if ((vco_freq / *div) > target_freq)
> -   *div += 1;
> -
> -   /* dividers above 5 must be even */
> -   if (*div > 5 && *div % 2)
> -   *div += 1;
> -
> -   /* out of range ? */
> -   if (*div >= 128)
> -   return -1; /* forget it */
> -
> -   return vco_freq / *div;
> -}
> -
> -static int evergreen_uvd_send_upll_ctlreq(struct radeon_device *rdev)
> -{
> -   unsigned i;
> -
> -   /* assert UPLL_CTLREQ */
> -   WREG32_P(CG_UPLL_FUNC_CNTL, UPLL_CTLREQ_MASK, ~UPLL_CTLREQ_MASK);
> -
> -   /* wait for CTLACK and CTLACK2 to get asserted */
> -   for (i = 0; i < 100; ++i) {
> -   uint32_t mask = UPLL_CTLACK_MASK | UPLL_CTLACK2_MASK;
> -   if ((RREG32(CG_UPLL_FUNC_CNTL) & mask) == mask)
> -   break;
> -   mdelay(10);
> -   }
> -   if (i == 100)
> -   return -ETIMEDOUT;
> -
> -   /* deassert UPLL_CTLREQ */
> -   WREG32_P(CG_UPLL_FUNC_CNTL, 0, ~UPLL_CTLREQ_MASK);
> -
> -   return 0;
> -}
> -
>  int evergreen_set_uvd_clocks(struct radeon_device *rdev, u32 vclk, u32 dclk)
>  {
> /* start off with something large */
> -   int optimal_diff_score = 0x7FF;
> -   unsigned optimal_fb_div = 0, optimal_vclk_div = 0;
> -   unsigned optimal_dclk_div = 0, optimal_vco_freq = 0;
> -   unsigned vco_freq;
> +   unsigned fb_div = 0, vclk_div = 0, dclk_div = 0;
> int r;
>
> /* bypass vclk and dclk with bclk */
> @@ -1061,40 +1009,11 @@ int evergreen_set_uvd_clocks(struct radeon_device 
> *rdev, u32 vclk, u32 dclk)
> return 0;
> }
>
> -   /* loop through vco from low to high */
> -   for (vco_freq = 125000; vco_freq <= 25; vco_freq += 100) {
> -   unsigned fb_div = vco_freq / rdev->clock.spll.reference_freq 
> * 16384;
> -   int calc_clk, diff_score, diff_vclk, diff_dclk;
> -   unsigned vclk_div, dclk_div;
> -
> -   /* fb div out of range ? */
> -   if (fb_div > 0x03FF)
> -   break; /* it can oly get worse */
> -
> -   /* calc vclk with current vco freq. */
> -   calc_clk = evergreen_uvd_calc_post_div(vclk, vco_freq, 
> _div);
> -   if (calc_clk == -1)
> -   break; /* vco is too big, it has to stop. */
> -   diff_vclk = vclk - calc_clk;
> -
> -   /* calc dclk with current vco freq. */
> -   calc_clk = evergreen_uvd_calc_post_div(dclk, vco_freq, 
> _div);
> -   if (calc_clk == -1)
> -   break; /* vco is too big, it has to stop. */
> -   diff_dclk = dclk - calc_clk;
> -
> -   /* determine if this vco setting is better than current 
> optimal settings */
> -   diff_score = abs(diff_vclk) + abs(diff_dclk);
> -   if (diff_score < optimal_diff_score) {
> -   optimal_fb_div = fb_div;
> -   optimal_vclk_div = vclk_div;
> -   optimal_dclk_div = dclk_div;
> -   optimal_vco_freq = vco_freq;
> -   optimal_diff_score = diff_score;
> -   if (optimal_diff_score == 0)
> -   break; /* it can't get better than this */
> -   }
> -   }
> +   r = radeon_uvd_calc_upll_dividers(rdev, vclk, dclk, 125000, 25,
> +

[PATCH] drm/radeon: fix UPLL_REF_DIV_MASK definition

2013-04-29 Thread Alex Deucher
On Mon, Apr 29, 2013 at 4:20 AM, Christian K?nig
 wrote:
> From: Christian K?nig 
>
> Stupid copy & paste error over all generations.

Applied to my tree.

Alex

>
> Signed-off-by: Christian K?nig 
> ---
>  drivers/gpu/drm/radeon/evergreend.h |2 +-
>  drivers/gpu/drm/radeon/rv770d.h |2 +-
>  drivers/gpu/drm/radeon/sid.h|2 +-
>  3 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/evergreend.h 
> b/drivers/gpu/drm/radeon/evergreend.h
> index d9a0054..75c0563 100644
> --- a/drivers/gpu/drm/radeon/evergreend.h
> +++ b/drivers/gpu/drm/radeon/evergreend.h
> @@ -59,7 +59,7 @@
>  #  define UPLL_SLEEP_MASK  0x0002
>  #  define UPLL_BYPASS_EN_MASK  0x0004
>  #  define UPLL_CTLREQ_MASK 0x0008
> -#  define UPLL_REF_DIV_MASK0x001F
> +#  define UPLL_REF_DIV_MASK0x003F
>  #  define UPLL_VCO_MODE_MASK   0x0200
>  #  define UPLL_CTLACK_MASK 0x4000
>  #  define UPLL_CTLACK2_MASK0x8000
> diff --git a/drivers/gpu/drm/radeon/rv770d.h b/drivers/gpu/drm/radeon/rv770d.h
> index 6a52b20..85b1626 100644
> --- a/drivers/gpu/drm/radeon/rv770d.h
> +++ b/drivers/gpu/drm/radeon/rv770d.h
> @@ -45,7 +45,7 @@
>  #  define UPLL_BYPASS_EN_MASK  0x0004
>  #  define UPLL_CTLREQ_MASK 0x0008
>  #  define UPLL_REF_DIV(x)  ((x) << 16)
> -#  define UPLL_REF_DIV_MASK0x001F
> +#  define UPLL_REF_DIV_MASK0x003F
>  #  define UPLL_CTLACK_MASK 0x4000
>  #  define UPLL_CTLACK2_MASK0x8000
>  #define CG_UPLL_FUNC_CNTL_20x71c
> diff --git a/drivers/gpu/drm/radeon/sid.h b/drivers/gpu/drm/radeon/sid.h
> index 042b91d..222877b 100644
> --- a/drivers/gpu/drm/radeon/sid.h
> +++ b/drivers/gpu/drm/radeon/sid.h
> @@ -36,7 +36,7 @@
>  #  define UPLL_BYPASS_EN_MASK  0x0004
>  #  define UPLL_CTLREQ_MASK 0x0008
>  #  define UPLL_VCO_MODE_MASK   0x0600
> -#  define UPLL_REF_DIV_MASK0x001F
> +#  define UPLL_REF_DIV_MASK0x003F
>  #  define UPLL_CTLACK_MASK 0x4000
>  #  define UPLL_CTLACK2_MASK0x8000
>  #defineCG_UPLL_FUNC_CNTL_2 0x638
> --
> 1.7.10.4
>


[PATCH] module: fix mutiple defined issue

2013-04-29 Thread Uwe Kleine-König
On Mon, Apr 29, 2013 at 02:32:01PM +0900, Inki Dae wrote:
> This patch fixes mutiple defined issue to MODULE_DEVICE_TABLE
s/mutiple/multiple/, still this sentence doesn't sound right. What is
the error message you see?

> The issue could be induced when some framework which includes two
> more sub drivers, is built as one moudle because those sub drivers
s/moudle/module/

> could have their own MODULE_DEVICE_TABLE.
> 
> And 'struct of_device_id' isn't needed to be determined by type
> argument because the definition of 'of_device_id' should be fixed.
> So this patch makes 'of_devce_id' definition to be fixed and
> only its instance name to be defined by type.
include/linux/isapnp.h uses:
#define ISAPNP_CARD_TABLE(name) \
MODULE_GENERIC_TABLE(isapnp_card, name)

and you changed the table's type with your patch. Ditto for all users of

MODULE_DEVICE_TABLE(i2c, ...);
MODULE_DEVICE_TABLE(acpi, ...);
MODULE_DEVICE_TABLE(platform, ...);
MODULE_DEVICE_TABLE(pci, ...);
MODULE_DEVICE_TABLE(sdio, ...);

So I'm pretty sure your patch is wrong and I expect it makes most
defconfigs fail to compile.

Best regards
Uwe

> 
> Signed-off-by: Inki Dae 
> ---
>  include/linux/module.h |2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/include/linux/module.h b/include/linux/module.h
> index 46f1ea0..ac5d79f 100644
> --- a/include/linux/module.h
> +++ b/include/linux/module.h
> @@ -84,7 +84,7 @@ void trim_init_extable(struct module *m);
>  
>  #ifdef MODULE
>  #define MODULE_GENERIC_TABLE(gtype,name) \
> -extern const struct gtype##_id __mod_##gtype##_table \
> +extern const struct of_device_id __mod_##gtype##_table   \
>__attribute__ ((unused, alias(__stringify(name
>  
>  #else  /* !MODULE */
> -- 
> 1.7.5.4
> 
> 
> ___
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> 

-- 
Pengutronix e.K.   | Uwe Kleine-K?nig|
Industrial Linux Solutions | http://www.pengutronix.de/  |


[PULL] drm-intel-fixes for 3.10

2013-04-29 Thread Daniel Vetter
Hi Dave,

Just a few important fixes for 3.10. 3 regression fixes, plus rectified
Haswell overclock support (the old code was correct, only docs confusing)
and improved DP data m/n selection.

Cheers, Daniel


The following changes since commit bd080ee57c2173cefdcadc39c7863a76c249d049:

  drm/i915: fix bpc vs. bpp confusion in intel_crtc_compute_config (2013-04-18 
09:43:33 +0200)

are available in the git repository at:

  git://people.freedesktop.org/~danvet/drm-intel drm-intel-fixes

for you to fetch changes up to 43b27290dd42b40f3f23f49677a7faa5a4eb1eff:

  drm/i915: correct the calculation of first_pd_entry_in_global_pt (2013-04-27 
14:07:16 +0200)


Ben Widawsky (1):
  Revert "drm/i915: Don't overclock on Haswell"

Daniel Vetter (1):
  drm/i915: avoid full modeset when changing the color range properties

David M?ller (ELSOFT AG) (1):
  drm/i915: Fall back to bit banging mode for DVO transmitter detection

Ville Syrj?l? (1):
  drm/i915: Make data/link N value power of two

Zhang, Xiong Y (1):
  drm/i915: correct the calculation of first_pd_entry_in_global_pt

 drivers/gpu/drm/i915/i915_gem_gtt.c  |3 +--
 drivers/gpu/drm/i915/i915_reg.h  |   12 
 drivers/gpu/drm/i915/intel_display.c |   26 ++
 drivers/gpu/drm/i915/intel_dp.c  |8 
 drivers/gpu/drm/i915/intel_dvo.c |   13 -
 drivers/gpu/drm/i915/intel_hdmi.c|8 
 drivers/gpu/drm/i915/intel_pm.c  |2 +-
 drivers/gpu/drm/i915/intel_sdvo.c|8 
 8 files changed, 60 insertions(+), 20 deletions(-)
-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch


[Bug 62889] ColorTiling results in glitches on Radeon HD 7970 + Glamor

2013-04-29 Thread bugzilla-dae...@freedesktop.org
https://bugs.freedesktop.org/show_bug.cgi?id=62889

--- Comment #20 from Michel D?nzer  ---
Are the 32-bit drivers used by Steam up to date?

-- 
You are receiving this mail because:
You are the assignee for the bug.
-- next part --
An HTML attachment was scrubbed...
URL: 
<http://lists.freedesktop.org/archives/dri-devel/attachments/20130429/65dbe621/attachment-0001.html>


[Bug 62889] ColorTiling results in glitches on Radeon HD 7970 + Glamor

2013-04-29 Thread bugzilla-dae...@freedesktop.org
https://bugs.freedesktop.org/show_bug.cgi?id=62889

Michel D?nzer  changed:

   What|Removed |Added

  Attachment #78533|text/plain  |image/png
  mime type||

-- 
You are receiving this mail because:
You are the assignee for the bug.
-- next part --
An HTML attachment was scrubbed...
URL: 
<http://lists.freedesktop.org/archives/dri-devel/attachments/20130429/e566204f/attachment.html>


radeon pm questions

2013-04-29 Thread Sylvain BERTRAND
Hi,

I have a few questions about radeon pm code:


In radeon_atombios.c, radeon_atombios_parse_power_table_6
function, power_state->v2.nonClockInfoIndex for non_clock_info of
one state is ignored and replaced by the state index, referencing
an iguana bug.

Is it still buggy from southern island and we must keep ignoring
power_state->v2.nonClockInfoIndex for good and use the state
index to reference the right state description in non clock array
table?



The same does happen for the clock info index which can be out of
range. Same treat as above?



In radeon_atombios.c, radeon_atombios_parse_pplib_clock_info
function, code paths are selected based on DCE generation. The
same happens in radeon_atombios_parse_pplib_non_clock_info
function.  Should it rather be the chip family? Or current
powerplay code does deal only with the DCE block??


regards,

-- 
Sylvain


[PATCH] drm/radeon: allocate SA bo in the requested domain

2013-04-29 Thread Dieter Nützel
Am 2013-04-25 18:19, schrieb Christian K?nig:
> From: Christian K?nig 
> 
> This avoid moving the BO directly after allocating it.
> 
> Signed-off-by: Christian K?nig 

Tested-by: Dieter N?tzel 

Regards,
Dieter

> ---
> drivers/gpu/drm/radeon/radeon_sa.c |2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/radeon/radeon_sa.c
> b/drivers/gpu/drm/radeon/radeon_sa.c
> index cb80099..0abe5a9 100644
> --- a/drivers/gpu/drm/radeon/radeon_sa.c
> +++ b/drivers/gpu/drm/radeon/radeon_sa.c
> @@ -64,7 +64,7 @@ int radeon_sa_bo_manager_init(struct radeon_device 
> *rdev,
>   }
> 
>   r = radeon_bo_create(rdev, size, RADEON_GPU_PAGE_SIZE, true,
> -  RADEON_GEM_DOMAIN_CPU, NULL, _manager->bo);
> +  domain, NULL, _manager->bo);
>   if (r) {
>   dev_err(rdev->dev, "(%d) failed to allocate bo for manager\n", 
> r);
>   return r;


[PATCH] drm/radeon: fix scratch reg handling for UVD fence

2013-04-29 Thread Dieter Nützel
Am 2013-04-24 14:12, schrieb Christian K?nig:
> From: Christian K?nig 
> 
> Also init the scratch reg to zero on the UVD ring.
> This fixes UVD on AGP based cards.
> 
> Signed-off-by: Christian K?nig 

Tested-by: Dieter N?tzel 

RV730 AGP (UVD 2.2) works with radeon.agpmode=8, now.

[   10.394741] ATOM BIOS: 113
[   10.394948] [drm] AGP mode requested: 8
[   10.394960] agpgart-via :00:00.0: AGP 3.5 bridge
[   10.394989] agpgart-via :00:00.0: putting AGP V3 device into 8x 
mode
[   10.396634] radeon :01:00.0: putting AGP V3 device into 8x mode
[   10.396649] radeon :01:00.0: GTT: 256M 0xE000 - 0xEFFF
[   10.396661] radeon :01:00.0: VRAM: 1024M 0xA000 - 0xDFFF 
(1024M used)
[   10.399244] [drm] Detected VRAM RAM=1024M, BAR=256M
[   10.399254] [drm] RAM width 128bits DDR
[   10.402125] [TTM] Zone  kernel: Available graphics memory: 441924 kiB
[   10.402133] [TTM] Zone highmem: Available graphics memory: 1033768 
kiB
[   10.402136] [TTM] Initializing pool allocator
[   10.402198] [drm] radeon: 1024M of VRAM memory ready
[   10.402202] [drm] radeon: 256M of GTT memory ready.
[   10.402244] [drm] Supports vblank timestamp caching Rev 1 
(10.10.2010).
[   10.402247] [drm] Driver supports precise vblank timestamp query.
[   10.402319] [drm] radeon: irq initialized.

[-]

[   10.524045] [drm] GART: num cpu pages 65536, num gpu pages 65536
[   10.528182] [drm] Loading RV730 Microcode
[   10.641945] radeon :01:00.0: WB disabled
[   10.641964] radeon :01:00.0: fence driver on ring 0 use gpu addr 
0xe004 and cpu a
ddr 0xf84c0004
[   10.641969] radeon :01:00.0: fence driver on ring 3 use gpu addr 
0xec0c and cpu addr 0xf84c0c0c
[   10.642218] radeon :01:00.0: fence driver on ring 5 use gpu addr 
0xa005c598 and cpu addr 0xf879c598
[   10.785565] [drm] ring test on 0 succeeded in 1 usecs
[   10.785636] [drm] ring test on 3 succeeded in 1 usecs
[   10.842237]  md127:
[   10.847965] [drm] ring test on 5 succeeded in 1 usecs
[   10.847976] [drm] UVD initialized successfully.
[   10.848690] [drm] ib test on ring 0 succeeded in 0 usecs
[   10.848729] [drm] ib test on ring 3 succeeded in 1 usecs
[   10.858255] [drm] ib test on ring 5 succeeded

Thank you Christian!

Dieter

> ---
> drivers/gpu/drm/radeon/radeon_fence.c |2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/radeon/radeon_fence.c
> b/drivers/gpu/drm/radeon/radeon_fence.c
> index 1a699ce..5b937df 100644
> --- a/drivers/gpu/drm/radeon/radeon_fence.c
> +++ b/drivers/gpu/drm/radeon/radeon_fence.c
> @@ -767,8 +767,8 @@ int radeon_fence_driver_start_ring(struct
> radeon_device *rdev, int ring)
> 
>   radeon_scratch_free(rdev, rdev->fence_drv[ring].scratch_reg);
>   if (rdev->wb.use_event || !radeon_ring_supports_scratch_reg(rdev,
> >ring[ring])) {
> + rdev->fence_drv[ring].scratch_reg = 0;
>   if (ring != R600_RING_TYPE_UVD_INDEX) {
> - rdev->fence_drv[ring].scratch_reg = 0;
>   index = R600_WB_EVENT_OFFSET + ring * 4;
>   rdev->fence_drv[ring].cpu_addr = >wb.wb[index/4];
>   rdev->fence_drv[ring].gpu_addr = rdev->wb.gpu_addr +


[GIT PULL] exynos-drm-next

2013-04-29 Thread Inki Dae
Hi Dave,

   This is final pull request for Exynos next and includes device tree
   support for fimc device, one revert, some code cleanups and fixup.
   The revert replaces wrong one[1] with correct one[2].
   This was my mistake and sorry for this.

   [1] http://www.mail-archive.com/linux-media@vger.kernel.org/msg60737.html
   [2] 
http://www.mail-archive.com/linux-samsung-soc@vger.kernel.org/msg17740.html

   And there are some patches posted some time ago but those are needed
   to be reviewed enough so not included this time.

Please kindly let me know if there is any problem.

Thanks,
Inki Dae

The following changes since commit 36d9b1541cedecd59e9d8fff0bbf9b7e9dd9704e:

  Merge branch 'drm-nouveau-next' of 
git://anongit.freedesktop.org/git/nouveau/linux-2.6 into drm-next (2013-04-26 
15:42:02 +1000)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos 
exynos-drm-next

Inki Dae (2):
  Revert drm/exynos: prepare FIMD clocks
  drm/exynos: do not use generic flags to dumb

Sachin Kamat (2):
  drm/exynos: Select VIDEOMODE_HELPERS for FIMD
  drm/exynos: Remove unnecessary braces in exynos_hdmi.c

Sean Paul (1):
  drm/exynos: Don't blend mixer layer 0

Seung-Woo Kim (3):
  drm/exynos: fix wrong return check for platform_device_register_simple
  exynos/drm: hdmi: cleanup for hdmi common device registration
  drm/exynos: added ipp device registration to drm driver

Sylwester Nawrocki (3):
  drm/exynos: remove redundant devm_kfree()
  drm/exynos: rework fimc clocks handling
  drm/exynos: add device tree support for fimc ipp driver

Vikas Sajjan (1):
  drm/exynos: enable FIMD clocks

 drivers/gpu/drm/exynos/Kconfig   |4 +-
 drivers/gpu/drm/exynos/exynos_drm_drv.c  |9 +-
 drivers/gpu/drm/exynos/exynos_drm_drv.h  |   12 ++-
 drivers/gpu/drm/exynos/exynos_drm_fimc.c |  273 +-
 drivers/gpu/drm/exynos/exynos_drm_fimd.c |   23 +--
 drivers/gpu/drm/exynos/exynos_drm_gem.c  |3 +-
 drivers/gpu/drm/exynos/exynos_drm_hdmi.c |   14 +-
 drivers/gpu/drm/exynos/exynos_drm_ipp.c  |   27 +++
 drivers/gpu/drm/exynos/exynos_hdmi.c |   10 +-
 drivers/gpu/drm/exynos/exynos_mixer.c|8 +-
 drivers/gpu/drm/exynos/regs-fimc.h   |7 +-
 11 files changed, 230 insertions(+), 160 deletions(-)
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[PULL] drm-intel-fixes for 3.10

2013-04-29 Thread Daniel Vetter
Hi Dave,

Just a few important fixes for 3.10. 3 regression fixes, plus rectified
Haswell overclock support (the old code was correct, only docs confusing)
and improved DP data m/n selection.

Cheers, Daniel


The following changes since commit bd080ee57c2173cefdcadc39c7863a76c249d049:

  drm/i915: fix bpc vs. bpp confusion in intel_crtc_compute_config (2013-04-18 
09:43:33 +0200)

are available in the git repository at:

  git://people.freedesktop.org/~danvet/drm-intel drm-intel-fixes

for you to fetch changes up to 43b27290dd42b40f3f23f49677a7faa5a4eb1eff:

  drm/i915: correct the calculation of first_pd_entry_in_global_pt (2013-04-27 
14:07:16 +0200)


Ben Widawsky (1):
  Revert drm/i915: Don't overclock on Haswell

Daniel Vetter (1):
  drm/i915: avoid full modeset when changing the color range properties

David Müller (ELSOFT AG) (1):
  drm/i915: Fall back to bit banging mode for DVO transmitter detection

Ville Syrjälä (1):
  drm/i915: Make data/link N value power of two

Zhang, Xiong Y (1):
  drm/i915: correct the calculation of first_pd_entry_in_global_pt

 drivers/gpu/drm/i915/i915_gem_gtt.c  |3 +--
 drivers/gpu/drm/i915/i915_reg.h  |   12 
 drivers/gpu/drm/i915/intel_display.c |   26 ++
 drivers/gpu/drm/i915/intel_dp.c  |8 
 drivers/gpu/drm/i915/intel_dvo.c |   13 -
 drivers/gpu/drm/i915/intel_hdmi.c|8 
 drivers/gpu/drm/i915/intel_pm.c  |2 +-
 drivers/gpu/drm/i915/intel_sdvo.c|8 
 8 files changed, 60 insertions(+), 20 deletions(-)
-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH] module: fix mutiple defined issue

2013-04-29 Thread Uwe Kleine-König
On Mon, Apr 29, 2013 at 02:32:01PM +0900, Inki Dae wrote:
 This patch fixes mutiple defined issue to MODULE_DEVICE_TABLE
s/mutiple/multiple/, still this sentence doesn't sound right. What is
the error message you see?
 
 The issue could be induced when some framework which includes two
 more sub drivers, is built as one moudle because those sub drivers
s/moudle/module/

 could have their own MODULE_DEVICE_TABLE.
 
 And 'struct of_device_id' isn't needed to be determined by type
 argument because the definition of 'of_device_id' should be fixed.
 So this patch makes 'of_devce_id' definition to be fixed and
 only its instance name to be defined by type.
include/linux/isapnp.h uses:
#define ISAPNP_CARD_TABLE(name) \
MODULE_GENERIC_TABLE(isapnp_card, name)

and you changed the table's type with your patch. Ditto for all users of

MODULE_DEVICE_TABLE(i2c, ...);
MODULE_DEVICE_TABLE(acpi, ...);
MODULE_DEVICE_TABLE(platform, ...);
MODULE_DEVICE_TABLE(pci, ...);
MODULE_DEVICE_TABLE(sdio, ...);

So I'm pretty sure your patch is wrong and I expect it makes most
defconfigs fail to compile.

Best regards
Uwe

 
 Signed-off-by: Inki Dae inki@samsung.com
 ---
  include/linux/module.h |2 +-
  1 files changed, 1 insertions(+), 1 deletions(-)
 
 diff --git a/include/linux/module.h b/include/linux/module.h
 index 46f1ea0..ac5d79f 100644
 --- a/include/linux/module.h
 +++ b/include/linux/module.h
 @@ -84,7 +84,7 @@ void trim_init_extable(struct module *m);
  
  #ifdef MODULE
  #define MODULE_GENERIC_TABLE(gtype,name) \
 -extern const struct gtype##_id __mod_##gtype##_table \
 +extern const struct of_device_id __mod_##gtype##_table   \
__attribute__ ((unused, alias(__stringify(name
  
  #else  /* !MODULE */
 -- 
 1.7.5.4
 
 
 ___
 linux-arm-kernel mailing list
 linux-arm-ker...@lists.infradead.org
 http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
 

-- 
Pengutronix e.K.   | Uwe Kleine-König|
Industrial Linux Solutions | http://www.pengutronix.de/  |
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[Bug 62889] ColorTiling results in glitches on Radeon HD 7970 + Glamor

2013-04-29 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=62889

Michel Dänzer mic...@daenzer.net changed:

   What|Removed |Added

  Attachment #78533|text/plain  |image/png
  mime type||

-- 
You are receiving this mail because:
You are the assignee for the bug.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


RE: [PATCH] module: fix mutiple defined issue

2013-04-29 Thread Inki Dae
Hi,


 -Original Message-
 From: linux-kernel-ow...@vger.kernel.org [mailto:linux-kernel-
 ow...@vger.kernel.org] On Behalf Of Uwe Kleine-Konig
 Sent: Monday, April 29, 2013 4:35 PM
 To: Inki Dae
 Cc: gre...@linuxfoundation.org; linux-ker...@vger.kernel.org; dri-
 de...@lists.freedesktop.org; linux-arm-ker...@lists.infradead.org
 Subject: Re: [PATCH] module: fix mutiple defined issue
 
 On Mon, Apr 29, 2013 at 02:32:01PM +0900, Inki Dae wrote:
  This patch fixes mutiple defined issue to MODULE_DEVICE_TABLE
 s/mutiple/multiple/, still this sentence doesn't sound right. What is
 the error message you see?
 
  The issue could be induced when some framework which includes two
  more sub drivers, is built as one moudle because those sub drivers
 s/moudle/module/
 
  could have their own MODULE_DEVICE_TABLE.
 
  And 'struct of_device_id' isn't needed to be determined by type
  argument because the definition of 'of_device_id' should be fixed.
  So this patch makes 'of_devce_id' definition to be fixed and
  only its instance name to be defined by type.
 include/linux/isapnp.h uses:
 #define ISAPNP_CARD_TABLE(name) \
   MODULE_GENERIC_TABLE(isapnp_card, name)
 
 and you changed the table's type with your patch. Ditto for all users of
 
   MODULE_DEVICE_TABLE(i2c, ...);
   MODULE_DEVICE_TABLE(acpi, ...);
   MODULE_DEVICE_TABLE(platform, ...);
   MODULE_DEVICE_TABLE(pci, ...);
   MODULE_DEVICE_TABLE(sdio, ...);
 
 So I'm pretty sure your patch is wrong and I expect it makes most
 defconfigs fail to compile.


It might be my big mistake. Maybe xxx_device_id object was created device
tree internally. Right? Will check it out again. So please ignore it.

Thanks,
Inki Dae


 Best regards
 Uwe
 
 
  Signed-off-by: Inki Dae inki@samsung.com
  ---
   include/linux/module.h |2 +-
   1 files changed, 1 insertions(+), 1 deletions(-)
 
  diff --git a/include/linux/module.h b/include/linux/module.h
  index 46f1ea0..ac5d79f 100644
  --- a/include/linux/module.h
  +++ b/include/linux/module.h
  @@ -84,7 +84,7 @@ void trim_init_extable(struct module *m);
 
   #ifdef MODULE
   #define MODULE_GENERIC_TABLE(gtype,name)   \
  -extern const struct gtype##_id __mod_##gtype##_table   \
  +extern const struct of_device_id __mod_##gtype##_table \
 __attribute__ ((unused, alias(__stringify(name
 
   #else  /* !MODULE */
  --
  1.7.5.4
 
 
  ___
  linux-arm-kernel mailing list
  linux-arm-ker...@lists.infradead.org
  http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
 
 
 --
 Pengutronix e.K.   | Uwe Kleine-König|
 Industrial Linux Solutions | http://www.pengutronix.de/  |
 --
 To unsubscribe from this list: send the line unsubscribe linux-kernel in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
 Please read the FAQ at  http://www.tux.org/lkml/

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH] drm/radeon: fix UPLL_REF_DIV_MASK definition

2013-04-29 Thread Christian König
From: Christian König christian.koe...@amd.com

Stupid copy  paste error over all generations.

Signed-off-by: Christian König christian.koe...@amd.com
---
 drivers/gpu/drm/radeon/evergreend.h |2 +-
 drivers/gpu/drm/radeon/rv770d.h |2 +-
 drivers/gpu/drm/radeon/sid.h|2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/radeon/evergreend.h 
b/drivers/gpu/drm/radeon/evergreend.h
index d9a0054..75c0563 100644
--- a/drivers/gpu/drm/radeon/evergreend.h
+++ b/drivers/gpu/drm/radeon/evergreend.h
@@ -59,7 +59,7 @@
 #  define UPLL_SLEEP_MASK  0x0002
 #  define UPLL_BYPASS_EN_MASK  0x0004
 #  define UPLL_CTLREQ_MASK 0x0008
-#  define UPLL_REF_DIV_MASK0x001F
+#  define UPLL_REF_DIV_MASK0x003F
 #  define UPLL_VCO_MODE_MASK   0x0200
 #  define UPLL_CTLACK_MASK 0x4000
 #  define UPLL_CTLACK2_MASK0x8000
diff --git a/drivers/gpu/drm/radeon/rv770d.h b/drivers/gpu/drm/radeon/rv770d.h
index 6a52b20..85b1626 100644
--- a/drivers/gpu/drm/radeon/rv770d.h
+++ b/drivers/gpu/drm/radeon/rv770d.h
@@ -45,7 +45,7 @@
 #  define UPLL_BYPASS_EN_MASK  0x0004
 #  define UPLL_CTLREQ_MASK 0x0008
 #  define UPLL_REF_DIV(x)  ((x)  16)
-#  define UPLL_REF_DIV_MASK0x001F
+#  define UPLL_REF_DIV_MASK0x003F
 #  define UPLL_CTLACK_MASK 0x4000
 #  define UPLL_CTLACK2_MASK0x8000
 #define CG_UPLL_FUNC_CNTL_20x71c
diff --git a/drivers/gpu/drm/radeon/sid.h b/drivers/gpu/drm/radeon/sid.h
index 042b91d..222877b 100644
--- a/drivers/gpu/drm/radeon/sid.h
+++ b/drivers/gpu/drm/radeon/sid.h
@@ -36,7 +36,7 @@
 #  define UPLL_BYPASS_EN_MASK  0x0004
 #  define UPLL_CTLREQ_MASK 0x0008
 #  define UPLL_VCO_MODE_MASK   0x0600
-#  define UPLL_REF_DIV_MASK0x001F
+#  define UPLL_REF_DIV_MASK0x003F
 #  define UPLL_CTLACK_MASK 0x4000
 #  define UPLL_CTLACK2_MASK0x8000
 #defineCG_UPLL_FUNC_CNTL_2 0x638
-- 
1.7.10.4

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


RE: [PATCH] module: fix mutiple defined issue

2013-04-29 Thread Inki Dae


 -Original Message-
 From: linux-kernel-ow...@vger.kernel.org [mailto:linux-kernel-
 ow...@vger.kernel.org] On Behalf Of Russell King - ARM Linux
 Sent: Monday, April 29, 2013 6:52 PM
 To: Inki Dae
 Cc: gre...@linuxfoundation.org; linux-ker...@vger.kernel.org; dri-
 de...@lists.freedesktop.org; linux-arm-ker...@lists.infradead.org
 Subject: Re: [PATCH] module: fix mutiple defined issue
 
 On Mon, Apr 29, 2013 at 02:32:01PM +0900, Inki Dae wrote:
  This patch fixes mutiple defined issue to MODULE_DEVICE_TABLE
 
  The issue could be induced when some framework which includes two
  more sub drivers, is built as one moudle because those sub drivers
  could have their own MODULE_DEVICE_TABLE.
 
  And 'struct of_device_id' isn't needed to be determined by type
  argument because the definition of 'of_device_id' should be fixed.
  So this patch makes 'of_devce_id' definition to be fixed and
  only its instance name to be defined by type.
 
  Signed-off-by: Inki Dae inki@samsung.com
  ---
   include/linux/module.h |2 +-
   1 files changed, 1 insertions(+), 1 deletions(-)
 
  diff --git a/include/linux/module.h b/include/linux/module.h
  index 46f1ea0..ac5d79f 100644
  --- a/include/linux/module.h
  +++ b/include/linux/module.h
  @@ -84,7 +84,7 @@ void trim_init_extable(struct module *m);
 
   #ifdef MODULE
   #define MODULE_GENERIC_TABLE(gtype,name)   \
  -extern const struct gtype##_id __mod_##gtype##_table   \
  +extern const struct of_device_id __mod_##gtype##_table \
 __attribute__ ((unused, alias(__stringify(name
 
   #else  /* !MODULE */
 
 This patch (a) looks wrong (why would a generic device table be limited
 to of_device_id when it could be ISAPNP or something else?) and (b) how
 does changing the type fix the multiple defined issue ?  (c) include
 the errors that you're fixing in the commit log.

There was my misunderstanding. So please ignore my patch. Some headers in
include/linux/ have some kind of device_id structure such as of_device_id,
platform_device_id, i2c_device_id, and so on. And these structures should be
used properly. This was my missing point.

Thanks,
Inki Dae


 --
 To unsubscribe from this list: send the line unsubscribe linux-kernel in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
 Please read the FAQ at  http://www.tux.org/lkml/

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: abuse of dumb ioctls in exynos

2013-04-29 Thread Dave Airlie
 The reason we (currently) use the dumb buffer interface is because it
 does pretty much exactly what we need it to, as we only want linear
 RGB buffers:

Except in the cases where it doesn't do what you want, and possibly in
the future where it does less of what you want. You've started on a
slippery slope, and I'm stopping you before you make things worse.

You are going to have to get SoC kernel drivers to add an ioctl that
you can use, if you insist on trying to mangle all the different code
paths into a single userspace driver, then you are going to take a lot
of pain. Its the old helper library vs midlayer, you are inventing a
DDX midlayer when you should be inventing a DDX helper library.

 On Mali  probably other tiled-based GPUs, the back buffer only gets
 written once per frame, when the GPU writes its on-die tile buffer to
 system memory. As such, we don't need the complicated memory layouts
 immediate mode renders do to improve cache efficiency, etc.

On one 3D core, the problem is the driver seems to be wanted to be
used across at least omap and exynos, and I assume others will happen
as time progresses.

 What's more, the 2D hardware typically found on SoCs we're targeting
 isn't advanced enough to implement all of the EXA operations and
 frequently falls back to software rendering, which only works with
 linear RGB buffers.

Don't worry about implementing all of EXA, you really probably only
want fill/copy for what you are doing.

 we must therefore allocate from a contiguous ION heap. By allocating
 via the DUMB interface and specifying a scanout hint, we can leave
 that decision to the DRM driver and keep userspace entirely generic.
 The other reason to go with DUMB rather than ION was because ION
 wasn't upstream.

Just ask the drm driver directly, no dumb ioctl, no ion. Not sure what
the problem is.

 Would you mind elaborating a little on this? I assume you're not talking
 about libkms? What operations would be performed by this driver which
 would need to be abstracted in userspace which aren't already nicely
 abstracted by KMS? Once we have a new library of some description, I
 assume you're suggesting we modify armsoc to use it? That seems a good
 idea as it also means we can use that to implement the HWComposer HAL
 on Android and thus use the same driver code can be used with minimal
 changes on X11, Android, Wayland, Mir and whatever other new window
 system comes along. That's really the point I'm trying to get to.

No not libkms, nothing like it. More as Rob said the drmmode code is
probably the truly common code,
and just write a DDX per SoC. Really anything else you do is going to
lull people into a false sense of how much work there is.

Distros want to ship a distro that can support all ARM boards at once,
they don't want have 15 armsoc builds with different configure flags.
Stop and think about how Linux distro downstream might use this.

Dave.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH v4] drm/exynos: hdmi: use drm_display_mode to check the supported modes

2013-04-29 Thread 김승우
Hello Rahul,

I looks good to me.

On 2013년 04월 29일 20:14, Rahul Sharma wrote:
 Exynos hdmi driver is using drm_display_mode for setting timing values
 for a supported resolution. Conversion to fb_videomode and then comparing
 with the mixer/hdmi/phy limits is not required. Instead, drm_display_mode
 fields cane be directly compared.
 
 v4:
 1) Removed __func__ from DRM_DEBUG_KMS.
 
 v3:
 1) Replaced check_timing callbacks with check_mode.
 2) Change the type of second parameter of check_mode callback from void
 pointer paramenter to struct drm_display_mode pointer.
 
 v2:
 1) Removed convert_to_video_timing().
 2) Corrected DRM_DEBUG_KMS to print the resolution properly.
 
 Signed-off-by: Rahul Sharma rahul.sha...@samsung.com

Acked-by: Seung-Woo Kim sw0312@samsung.com

 ---
  drivers/gpu/drm/exynos/exynos_drm_connector.c |   38 
 ++---
  drivers/gpu/drm/exynos/exynos_drm_drv.h   |4 +--
  drivers/gpu/drm/exynos/exynos_drm_fimd.c  |4 +--
  drivers/gpu/drm/exynos/exynos_drm_hdmi.c  |   17 +--
  drivers/gpu/drm/exynos/exynos_drm_hdmi.h  |6 ++--
  drivers/gpu/drm/exynos/exynos_drm_vidi.c  |4 +--
  drivers/gpu/drm/exynos/exynos_hdmi.c  |   29 +--
  drivers/gpu/drm/exynos/exynos_mixer.c |   17 +--
  8 files changed, 43 insertions(+), 76 deletions(-)
 
 diff --git a/drivers/gpu/drm/exynos/exynos_drm_connector.c 
 b/drivers/gpu/drm/exynos/exynos_drm_connector.c
 index 8bcc13a..ab3c6d4 100644
 --- a/drivers/gpu/drm/exynos/exynos_drm_connector.c
 +++ b/drivers/gpu/drm/exynos/exynos_drm_connector.c
 @@ -58,37 +58,6 @@ convert_to_display_mode(struct drm_display_mode *mode,
   mode-flags |= DRM_MODE_FLAG_DBLSCAN;
  }
  
 -/* convert drm_display_mode to exynos_video_timings */
 -static inline void
 -convert_to_video_timing(struct fb_videomode *timing,
 - struct drm_display_mode *mode)
 -{
 - DRM_DEBUG_KMS(%s\n, __FILE__);
 -
 - memset(timing, 0, sizeof(*timing));
 -
 - timing-pixclock = mode-clock * 1000;
 - timing-refresh = drm_mode_vrefresh(mode);
 -
 - timing-xres = mode-hdisplay;
 - timing-right_margin = mode-hsync_start - mode-hdisplay;
 - timing-hsync_len = mode-hsync_end - mode-hsync_start;
 - timing-left_margin = mode-htotal - mode-hsync_end;
 -
 - timing-yres = mode-vdisplay;
 - timing-lower_margin = mode-vsync_start - mode-vdisplay;
 - timing-vsync_len = mode-vsync_end - mode-vsync_start;
 - timing-upper_margin = mode-vtotal - mode-vsync_end;
 -
 - if (mode-flags  DRM_MODE_FLAG_INTERLACE)
 - timing-vmode = FB_VMODE_INTERLACED;
 - else
 - timing-vmode = FB_VMODE_NONINTERLACED;
 -
 - if (mode-flags  DRM_MODE_FLAG_DBLSCAN)
 - timing-vmode |= FB_VMODE_DOUBLE;
 -}
 -
  static int exynos_drm_connector_get_modes(struct drm_connector *connector)
  {
   struct exynos_drm_connector *exynos_connector =
 @@ -168,15 +137,12 @@ static int exynos_drm_connector_mode_valid(struct 
 drm_connector *connector,
   to_exynos_connector(connector);
   struct exynos_drm_manager *manager = exynos_connector-manager;
   struct exynos_drm_display_ops *display_ops = manager-display_ops;
 - struct fb_videomode timing;
   int ret = MODE_BAD;
  
   DRM_DEBUG_KMS(%s\n, __FILE__);
  
 - convert_to_video_timing(timing, mode);
 -
 - if (display_ops  display_ops-check_timing)
 - if (!display_ops-check_timing(manager-dev, (void *)timing))
 + if (display_ops  display_ops-check_mode)
 + if (!display_ops-check_mode(manager-dev, mode))
   ret = MODE_OK;
  
   return ret;
 diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.h 
 b/drivers/gpu/drm/exynos/exynos_drm_drv.h
 index 4606fac..9650b3b 100644
 --- a/drivers/gpu/drm/exynos/exynos_drm_drv.h
 +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.h
 @@ -142,7 +142,7 @@ struct exynos_drm_overlay {
   * @is_connected: check for that display is connected or not.
   * @get_edid: get edid modes from display driver.
   * @get_panel: get panel object from display driver.
 - * @check_timing: check if timing is valid or not.
 + * @check_mode: check if mode is valid or not.
   * @power_on: display device on or off.
   */
  struct exynos_drm_display_ops {
 @@ -151,7 +151,7 @@ struct exynos_drm_display_ops {
   struct edid *(*get_edid)(struct device *dev,
   struct drm_connector *connector);
   void *(*get_panel)(struct device *dev);
 - int (*check_timing)(struct device *dev, void *timing);
 + int (*check_mode)(struct device *dev, struct drm_display_mode *mode);
   int (*power_on)(struct device *dev, int mode);
  };
  
 diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c 
 b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
 index 15e58f5..98bbe1e 100644
 --- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c
 +++ 

[Bug 47351] [KMS: Mobility Radeon HD 6620G] Blank screen on boot

2013-04-29 Thread bugzilla-daemon
https://bugzilla.kernel.org/show_bug.cgi?id=47351





--- Comment #5 from Nick ka.n...@mail.ru  2013-04-29 12:01:07 ---
Created an attachment (id=100251)
 -- (https://bugzilla.kernel.org/attachment.cgi?id=100251)
lspci -vv output

I have the same behaviour on my HP 4545s laptop if I try to use discrete video
card (HD7500/7600). I managed to get it work (more or less) on integrated
7240G, but I get blank screen having tried to switch to discrete video. Can I
provide any additional information to help to resolve the issue?

-- 
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are watching the assignee of the bug.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[Bug 57281] New: Radeon: Bad performance and power consumption

2013-04-29 Thread bugzilla-daemon
https://bugzilla.kernel.org/show_bug.cgi?id=57281

   Summary: Radeon: Bad performance and power consumption
   Product: Drivers
   Version: 2.5
Kernel Version: 3.8.2-pf
  Platform: All
OS/Version: Linux
  Tree: Mainline
Status: NEW
  Severity: normal
  Priority: P1
 Component: Video(DRI - non Intel)
AssignedTo: drivers_video-...@kernel-bugs.osdl.org
ReportedBy: ka.n...@mail.ru
Regression: No


Created an attachment (id=100261)
 -- (https://bugzilla.kernel.org/attachment.cgi?id=100261)
lspci -vv output

After upgrading my AMD E-450-based notebook to a newer one (HP 4545s
A4-3300-based) i noticed that in spite of noticeable higher clock rate the
video performance is about 15-20% worse than on E-450. It also got much hotter
initially, which I could cure by passing pcie_aspm=force to the kernel. In
spite of this I still have a feeling that it probably eats more power than it
should (which I can not prove with numbers, of course) comparing to E-450 (and
fglrx) experience. (Yes, I know the proprietary driver performs better in terms
of power management, too, but the question is to what extent?) Anyways, it
shouldn't underperform the older and weaker model...

It also shows the message at boot time:
[drm:radeon_acpi_init] *ERROR* Cannot find backlight controller
but it seems to work fine after that. (Shall I post another bug on this?)

-- 
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are watching the assignee of the bug.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[Bug 57281] Radeon: Bad performance and power consumption

2013-04-29 Thread bugzilla-daemon
https://bugzilla.kernel.org/show_bug.cgi?id=57281





--- Comment #1 from Nick ka.n...@mail.ru  2013-04-29 12:34:50 ---
Created an attachment (id=100271)
 -- (https://bugzilla.kernel.org/attachment.cgi?id=100271)
Kernel config

-- 
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are watching the assignee of the bug.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[Bug 57281] Radeon: Bad performance and power consumption

2013-04-29 Thread bugzilla-daemon
https://bugzilla.kernel.org/show_bug.cgi?id=57281


Nick ka.n...@mail.ru changed:

   What|Removed |Added

 Attachment #100261|application/octet-stream|text/plain
  mime type||




-- 
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are watching the assignee of the bug.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[Bug 57281] Radeon: Bad performance and power consumption

2013-04-29 Thread bugzilla-daemon
https://bugzilla.kernel.org/show_bug.cgi?id=57281


Nick ka.n...@mail.ru changed:

   What|Removed |Added

 Attachment #100271|application/octet-stream|text/plain
  mime type||




-- 
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are watching the assignee of the bug.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[Bug 63702] tiling2d in radeon trash vdpau UVD textures

2013-04-29 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=63702

Christian König deathsim...@vodafone.de changed:

   What|Removed |Added

 Status|RESOLVED|CLOSED

-- 
You are receiving this mail because:
You are the assignee for the bug.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH 1/2] drm/exynos: exynos_drm_fbdev: Fix incorrect usage of IS_ERR_OR_NULL

2013-04-29 Thread Sachin Kamat
exynos_drm_framebuffer_init() does not return NULL. Use IS_ERR instead.

Signed-off-by: Sachin Kamat sachin.ka...@linaro.org
---
This series is based on exynos-drm-next branch of Inki Dae's tree:
git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos.git
---
 drivers/gpu/drm/exynos/exynos_drm_fbdev.c |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c 
b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
index 68f0045..8f007aa 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
@@ -182,7 +182,7 @@ static int exynos_drm_fbdev_create(struct drm_fb_helper 
*helper,
 
helper-fb = exynos_drm_framebuffer_init(dev, mode_cmd,
exynos_gem_obj-base);
-   if (IS_ERR_OR_NULL(helper-fb)) {
+   if (IS_ERR(helper-fb)) {
DRM_ERROR(failed to create drm framebuffer.\n);
ret = PTR_ERR(helper-fb);
goto err_destroy_gem;
-- 
1.7.9.5

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH 2/2] drm/exynos: exynos_drm_ipp: Fix incorrect usage of IS_ERR_OR_NULL

2013-04-29 Thread Sachin Kamat
None of these functions actually return a NULL pointer. Hence use
IS_ERR() instead.

Signed-off-by: Sachin Kamat sachin.ka...@linaro.org
---
 drivers/gpu/drm/exynos/exynos_drm_ipp.c |   14 +++---
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/exynos/exynos_drm_ipp.c 
b/drivers/gpu/drm/exynos/exynos_drm_ipp.c
index 29d2ad3..5c4764a 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_ipp.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_ipp.c
@@ -222,7 +222,7 @@ static struct exynos_drm_ippdrv *ipp_find_driver(struct 
ipp_context *ctx,
/* find ipp driver using idr */
ippdrv = ipp_find_obj(ctx-ipp_idr, ctx-ipp_lock,
ipp_id);
-   if (IS_ERR_OR_NULL(ippdrv)) {
+   if (IS_ERR(ippdrv)) {
DRM_ERROR(not found ipp%d driver.\n, ipp_id);
return ippdrv;
}
@@ -388,7 +388,7 @@ static int ipp_find_and_set_property(struct 
drm_exynos_ipp_property *property)
DRM_DEBUG_KMS(%s:prop_id[%d]\n, __func__, prop_id);
 
ippdrv = ipp_find_drv_by_handle(prop_id);
-   if (IS_ERR_OR_NULL(ippdrv)) {
+   if (IS_ERR(ippdrv)) {
DRM_ERROR(failed to get ipp driver.\n);
return -EINVAL;
}
@@ -492,7 +492,7 @@ int exynos_drm_ipp_set_property(struct drm_device *drm_dev, 
void *data,
 
/* find ipp driver using ipp id */
ippdrv = ipp_find_driver(ctx, property);
-   if (IS_ERR_OR_NULL(ippdrv)) {
+   if (IS_ERR(ippdrv)) {
DRM_ERROR(failed to get ipp driver.\n);
return -EINVAL;
}
@@ -521,19 +521,19 @@ int exynos_drm_ipp_set_property(struct drm_device 
*drm_dev, void *data,
c_node-state = IPP_STATE_IDLE;
 
c_node-start_work = ipp_create_cmd_work();
-   if (IS_ERR_OR_NULL(c_node-start_work)) {
+   if (IS_ERR(c_node-start_work)) {
DRM_ERROR(failed to create start work.\n);
goto err_clear;
}
 
c_node-stop_work = ipp_create_cmd_work();
-   if (IS_ERR_OR_NULL(c_node-stop_work)) {
+   if (IS_ERR(c_node-stop_work)) {
DRM_ERROR(failed to create stop work.\n);
goto err_free_start;
}
 
c_node-event_work = ipp_create_event_work();
-   if (IS_ERR_OR_NULL(c_node-event_work)) {
+   if (IS_ERR(c_node-event_work)) {
DRM_ERROR(failed to create event work.\n);
goto err_free_stop;
}
@@ -915,7 +915,7 @@ static int ipp_queue_buf_with_run(struct device *dev,
DRM_DEBUG_KMS(%s\n, __func__);
 
ippdrv = ipp_find_drv_by_handle(qbuf-prop_id);
-   if (IS_ERR_OR_NULL(ippdrv)) {
+   if (IS_ERR(ippdrv)) {
DRM_ERROR(failed to get ipp driver.\n);
return -EFAULT;
}
-- 
1.7.9.5

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH] module: fix mutiple defined issue

2013-04-29 Thread Russell King - ARM Linux
On Mon, Apr 29, 2013 at 02:32:01PM +0900, Inki Dae wrote:
 This patch fixes mutiple defined issue to MODULE_DEVICE_TABLE
 
 The issue could be induced when some framework which includes two
 more sub drivers, is built as one moudle because those sub drivers
 could have their own MODULE_DEVICE_TABLE.
 
 And 'struct of_device_id' isn't needed to be determined by type
 argument because the definition of 'of_device_id' should be fixed.
 So this patch makes 'of_devce_id' definition to be fixed and
 only its instance name to be defined by type.
 
 Signed-off-by: Inki Dae inki@samsung.com
 ---
  include/linux/module.h |2 +-
  1 files changed, 1 insertions(+), 1 deletions(-)
 
 diff --git a/include/linux/module.h b/include/linux/module.h
 index 46f1ea0..ac5d79f 100644
 --- a/include/linux/module.h
 +++ b/include/linux/module.h
 @@ -84,7 +84,7 @@ void trim_init_extable(struct module *m);
  
  #ifdef MODULE
  #define MODULE_GENERIC_TABLE(gtype,name) \
 -extern const struct gtype##_id __mod_##gtype##_table \
 +extern const struct of_device_id __mod_##gtype##_table   \
__attribute__ ((unused, alias(__stringify(name
  
  #else  /* !MODULE */

This patch (a) looks wrong (why would a generic device table be limited
to of_device_id when it could be ISAPNP or something else?) and (b) how
does changing the type fix the multiple defined issue ?  (c) include
the errors that you're fixing in the commit log.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH v4] drm/exynos: hdmi: use drm_display_mode to check the supported modes

2013-04-29 Thread Rahul Sharma
Exynos hdmi driver is using drm_display_mode for setting timing values
for a supported resolution. Conversion to fb_videomode and then comparing
with the mixer/hdmi/phy limits is not required. Instead, drm_display_mode
fields cane be directly compared.

v4:
1) Removed __func__ from DRM_DEBUG_KMS.

v3:
1) Replaced check_timing callbacks with check_mode.
2) Change the type of second parameter of check_mode callback from void
pointer paramenter to struct drm_display_mode pointer.

v2:
1) Removed convert_to_video_timing().
2) Corrected DRM_DEBUG_KMS to print the resolution properly.

Signed-off-by: Rahul Sharma rahul.sha...@samsung.com
---
 drivers/gpu/drm/exynos/exynos_drm_connector.c |   38 ++---
 drivers/gpu/drm/exynos/exynos_drm_drv.h   |4 +--
 drivers/gpu/drm/exynos/exynos_drm_fimd.c  |4 +--
 drivers/gpu/drm/exynos/exynos_drm_hdmi.c  |   17 +--
 drivers/gpu/drm/exynos/exynos_drm_hdmi.h  |6 ++--
 drivers/gpu/drm/exynos/exynos_drm_vidi.c  |4 +--
 drivers/gpu/drm/exynos/exynos_hdmi.c  |   29 +--
 drivers/gpu/drm/exynos/exynos_mixer.c |   17 +--
 8 files changed, 43 insertions(+), 76 deletions(-)

diff --git a/drivers/gpu/drm/exynos/exynos_drm_connector.c 
b/drivers/gpu/drm/exynos/exynos_drm_connector.c
index 8bcc13a..ab3c6d4 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_connector.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_connector.c
@@ -58,37 +58,6 @@ convert_to_display_mode(struct drm_display_mode *mode,
mode-flags |= DRM_MODE_FLAG_DBLSCAN;
 }
 
-/* convert drm_display_mode to exynos_video_timings */
-static inline void
-convert_to_video_timing(struct fb_videomode *timing,
-   struct drm_display_mode *mode)
-{
-   DRM_DEBUG_KMS(%s\n, __FILE__);
-
-   memset(timing, 0, sizeof(*timing));
-
-   timing-pixclock = mode-clock * 1000;
-   timing-refresh = drm_mode_vrefresh(mode);
-
-   timing-xres = mode-hdisplay;
-   timing-right_margin = mode-hsync_start - mode-hdisplay;
-   timing-hsync_len = mode-hsync_end - mode-hsync_start;
-   timing-left_margin = mode-htotal - mode-hsync_end;
-
-   timing-yres = mode-vdisplay;
-   timing-lower_margin = mode-vsync_start - mode-vdisplay;
-   timing-vsync_len = mode-vsync_end - mode-vsync_start;
-   timing-upper_margin = mode-vtotal - mode-vsync_end;
-
-   if (mode-flags  DRM_MODE_FLAG_INTERLACE)
-   timing-vmode = FB_VMODE_INTERLACED;
-   else
-   timing-vmode = FB_VMODE_NONINTERLACED;
-
-   if (mode-flags  DRM_MODE_FLAG_DBLSCAN)
-   timing-vmode |= FB_VMODE_DOUBLE;
-}
-
 static int exynos_drm_connector_get_modes(struct drm_connector *connector)
 {
struct exynos_drm_connector *exynos_connector =
@@ -168,15 +137,12 @@ static int exynos_drm_connector_mode_valid(struct 
drm_connector *connector,
to_exynos_connector(connector);
struct exynos_drm_manager *manager = exynos_connector-manager;
struct exynos_drm_display_ops *display_ops = manager-display_ops;
-   struct fb_videomode timing;
int ret = MODE_BAD;
 
DRM_DEBUG_KMS(%s\n, __FILE__);
 
-   convert_to_video_timing(timing, mode);
-
-   if (display_ops  display_ops-check_timing)
-   if (!display_ops-check_timing(manager-dev, (void *)timing))
+   if (display_ops  display_ops-check_mode)
+   if (!display_ops-check_mode(manager-dev, mode))
ret = MODE_OK;
 
return ret;
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.h 
b/drivers/gpu/drm/exynos/exynos_drm_drv.h
index 4606fac..9650b3b 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_drv.h
+++ b/drivers/gpu/drm/exynos/exynos_drm_drv.h
@@ -142,7 +142,7 @@ struct exynos_drm_overlay {
  * @is_connected: check for that display is connected or not.
  * @get_edid: get edid modes from display driver.
  * @get_panel: get panel object from display driver.
- * @check_timing: check if timing is valid or not.
+ * @check_mode: check if mode is valid or not.
  * @power_on: display device on or off.
  */
 struct exynos_drm_display_ops {
@@ -151,7 +151,7 @@ struct exynos_drm_display_ops {
struct edid *(*get_edid)(struct device *dev,
struct drm_connector *connector);
void *(*get_panel)(struct device *dev);
-   int (*check_timing)(struct device *dev, void *timing);
+   int (*check_mode)(struct device *dev, struct drm_display_mode *mode);
int (*power_on)(struct device *dev, int mode);
 };
 
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c 
b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
index 15e58f5..98bbe1e 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
@@ -153,7 +153,7 @@ static void *fimd_get_panel(struct device *dev)
return ctx-panel;
 }
 
-static int fimd_check_timing(struct device *dev, void 

[Bug 47351] [KMS: Mobility Radeon HD 6620G] Blank screen on boot

2013-04-29 Thread bugzilla-daemon
https://bugzilla.kernel.org/show_bug.cgi?id=47351





--- Comment #6 from Alex Deucher alexdeuc...@gmail.com  2013-04-29 14:20:38 
---
(In reply to comment #5)

 I have the same behaviour on my HP 4545s laptop if I try to use discrete video
 card (HD7500/7600). I managed to get it work (more or less) on integrated
 7240G, but I get blank screen having tried to switch to discrete video. Can I
 provide any additional information to help to resolve the issue?

Most hybrid laptops are mux-less meaning there are no displays physically
connected to the discrete GPU.  For display you have to use the integrated GPU.
 The discrete GPU can only be used for offscreen rendering.  Do display that
rendering, it has to be copied to the integrated GPU.  There is limited support
for this in newer xservers (1.13.x and newer).

-- 
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are watching the assignee of the bug.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH] drm/radeon: fix UPLL_REF_DIV_MASK definition

2013-04-29 Thread Alex Deucher
On Mon, Apr 29, 2013 at 4:20 AM, Christian König
deathsim...@vodafone.de wrote:
 From: Christian König christian.koe...@amd.com

 Stupid copy  paste error over all generations.

Applied to my tree.

Alex


 Signed-off-by: Christian König christian.koe...@amd.com
 ---
  drivers/gpu/drm/radeon/evergreend.h |2 +-
  drivers/gpu/drm/radeon/rv770d.h |2 +-
  drivers/gpu/drm/radeon/sid.h|2 +-
  3 files changed, 3 insertions(+), 3 deletions(-)

 diff --git a/drivers/gpu/drm/radeon/evergreend.h 
 b/drivers/gpu/drm/radeon/evergreend.h
 index d9a0054..75c0563 100644
 --- a/drivers/gpu/drm/radeon/evergreend.h
 +++ b/drivers/gpu/drm/radeon/evergreend.h
 @@ -59,7 +59,7 @@
  #  define UPLL_SLEEP_MASK  0x0002
  #  define UPLL_BYPASS_EN_MASK  0x0004
  #  define UPLL_CTLREQ_MASK 0x0008
 -#  define UPLL_REF_DIV_MASK0x001F
 +#  define UPLL_REF_DIV_MASK0x003F
  #  define UPLL_VCO_MODE_MASK   0x0200
  #  define UPLL_CTLACK_MASK 0x4000
  #  define UPLL_CTLACK2_MASK0x8000
 diff --git a/drivers/gpu/drm/radeon/rv770d.h b/drivers/gpu/drm/radeon/rv770d.h
 index 6a52b20..85b1626 100644
 --- a/drivers/gpu/drm/radeon/rv770d.h
 +++ b/drivers/gpu/drm/radeon/rv770d.h
 @@ -45,7 +45,7 @@
  #  define UPLL_BYPASS_EN_MASK  0x0004
  #  define UPLL_CTLREQ_MASK 0x0008
  #  define UPLL_REF_DIV(x)  ((x)  16)
 -#  define UPLL_REF_DIV_MASK0x001F
 +#  define UPLL_REF_DIV_MASK0x003F
  #  define UPLL_CTLACK_MASK 0x4000
  #  define UPLL_CTLACK2_MASK0x8000
  #define CG_UPLL_FUNC_CNTL_20x71c
 diff --git a/drivers/gpu/drm/radeon/sid.h b/drivers/gpu/drm/radeon/sid.h
 index 042b91d..222877b 100644
 --- a/drivers/gpu/drm/radeon/sid.h
 +++ b/drivers/gpu/drm/radeon/sid.h
 @@ -36,7 +36,7 @@
  #  define UPLL_BYPASS_EN_MASK  0x0004
  #  define UPLL_CTLREQ_MASK 0x0008
  #  define UPLL_VCO_MODE_MASK   0x0600
 -#  define UPLL_REF_DIV_MASK0x001F
 +#  define UPLL_REF_DIV_MASK0x003F
  #  define UPLL_CTLACK_MASK 0x4000
  #  define UPLL_CTLACK2_MASK0x8000
  #defineCG_UPLL_FUNC_CNTL_2 0x638
 --
 1.7.10.4

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH] drm/radeon: consolidate UVD clock programming

2013-04-29 Thread Alex Deucher
On Mon, Apr 29, 2013 at 5:55 AM, Christian König
deathsim...@vodafone.de wrote:
 From: Christian König christian.koe...@amd.com

 Instead of duplicating the code over and over again, just use a single
 function to handle the clock calculations.

Applied to by tree.

Alex


 Signed-off-by: Christian König christian.koe...@amd.com
 ---
  drivers/gpu/drm/radeon/evergreen.c  |  103 +++---
  drivers/gpu/drm/radeon/r600d.h  |4 +
  drivers/gpu/drm/radeon/radeon.h |   11 +++
  drivers/gpu/drm/radeon/radeon_uvd.c |  137 
 +++
  drivers/gpu/drm/radeon/rv770.c  |  110 +---
  drivers/gpu/drm/radeon/si.c |  104 +++---
  6 files changed, 191 insertions(+), 278 deletions(-)

 diff --git a/drivers/gpu/drm/radeon/evergreen.c 
 b/drivers/gpu/drm/radeon/evergreen.c
 index 1531f16..105bafb 100644
 --- a/drivers/gpu/drm/radeon/evergreen.c
 +++ b/drivers/gpu/drm/radeon/evergreen.c
 @@ -989,62 +989,10 @@ done:
 return r;
  }

 -static int evergreen_uvd_calc_post_div(unsigned target_freq,
 -  unsigned vco_freq,
 -  unsigned *div)
 -{
 -   /* target larger than vco frequency ? */
 -   if (vco_freq  target_freq)
 -   return -1; /* forget it */
 -
 -   /* Fclk = Fvco / PDIV */
 -   *div = vco_freq / target_freq;
 -
 -   /* we alway need a frequency less than or equal the target */
 -   if ((vco_freq / *div)  target_freq)
 -   *div += 1;
 -
 -   /* dividers above 5 must be even */
 -   if (*div  5  *div % 2)
 -   *div += 1;
 -
 -   /* out of range ? */
 -   if (*div = 128)
 -   return -1; /* forget it */
 -
 -   return vco_freq / *div;
 -}
 -
 -static int evergreen_uvd_send_upll_ctlreq(struct radeon_device *rdev)
 -{
 -   unsigned i;
 -
 -   /* assert UPLL_CTLREQ */
 -   WREG32_P(CG_UPLL_FUNC_CNTL, UPLL_CTLREQ_MASK, ~UPLL_CTLREQ_MASK);
 -
 -   /* wait for CTLACK and CTLACK2 to get asserted */
 -   for (i = 0; i  100; ++i) {
 -   uint32_t mask = UPLL_CTLACK_MASK | UPLL_CTLACK2_MASK;
 -   if ((RREG32(CG_UPLL_FUNC_CNTL)  mask) == mask)
 -   break;
 -   mdelay(10);
 -   }
 -   if (i == 100)
 -   return -ETIMEDOUT;
 -
 -   /* deassert UPLL_CTLREQ */
 -   WREG32_P(CG_UPLL_FUNC_CNTL, 0, ~UPLL_CTLREQ_MASK);
 -
 -   return 0;
 -}
 -
  int evergreen_set_uvd_clocks(struct radeon_device *rdev, u32 vclk, u32 dclk)
  {
 /* start off with something large */
 -   int optimal_diff_score = 0x7FF;
 -   unsigned optimal_fb_div = 0, optimal_vclk_div = 0;
 -   unsigned optimal_dclk_div = 0, optimal_vco_freq = 0;
 -   unsigned vco_freq;
 +   unsigned fb_div = 0, vclk_div = 0, dclk_div = 0;
 int r;

 /* bypass vclk and dclk with bclk */
 @@ -1061,40 +1009,11 @@ int evergreen_set_uvd_clocks(struct radeon_device 
 *rdev, u32 vclk, u32 dclk)
 return 0;
 }

 -   /* loop through vco from low to high */
 -   for (vco_freq = 125000; vco_freq = 25; vco_freq += 100) {
 -   unsigned fb_div = vco_freq / rdev-clock.spll.reference_freq 
 * 16384;
 -   int calc_clk, diff_score, diff_vclk, diff_dclk;
 -   unsigned vclk_div, dclk_div;
 -
 -   /* fb div out of range ? */
 -   if (fb_div  0x03FF)
 -   break; /* it can oly get worse */
 -
 -   /* calc vclk with current vco freq. */
 -   calc_clk = evergreen_uvd_calc_post_div(vclk, vco_freq, 
 vclk_div);
 -   if (calc_clk == -1)
 -   break; /* vco is too big, it has to stop. */
 -   diff_vclk = vclk - calc_clk;
 -
 -   /* calc dclk with current vco freq. */
 -   calc_clk = evergreen_uvd_calc_post_div(dclk, vco_freq, 
 dclk_div);
 -   if (calc_clk == -1)
 -   break; /* vco is too big, it has to stop. */
 -   diff_dclk = dclk - calc_clk;
 -
 -   /* determine if this vco setting is better than current 
 optimal settings */
 -   diff_score = abs(diff_vclk) + abs(diff_dclk);
 -   if (diff_score  optimal_diff_score) {
 -   optimal_fb_div = fb_div;
 -   optimal_vclk_div = vclk_div;
 -   optimal_dclk_div = dclk_div;
 -   optimal_vco_freq = vco_freq;
 -   optimal_diff_score = diff_score;
 -   if (optimal_diff_score == 0)
 -   break; /* it can't get better than this */
 -   }
 -   }
 +   r = radeon_uvd_calc_upll_dividers(rdev, vclk, dclk, 125000, 25,
 + 16384, 0x03FF, 0, 128, 5,
 +  

[Bug 57281] Radeon: Bad performance and power consumption

2013-04-29 Thread bugzilla-daemon
https://bugzilla.kernel.org/show_bug.cgi?id=57281


Alex Deucher alexdeuc...@gmail.com changed:

   What|Removed |Added

 CC||alexdeuc...@gmail.com




--- Comment #2 from Alex Deucher alexdeuc...@gmail.com  2013-04-29 14:31:27 
---
Please attach your dmesg output.

-- 
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are watching the assignee of the bug.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[Bug 57281] Radeon: Bad performance and power consumption

2013-04-29 Thread bugzilla-daemon
https://bugzilla.kernel.org/show_bug.cgi?id=57281





--- Comment #3 from Michel Dänzer mic...@daenzer.net  2013-04-29 14:41:09 ---
(In reply to comment #0)
 After upgrading my AMD E-450-based notebook to a newer one (HP 4545s
 A4-3300-based) i noticed that in spite of noticeable higher clock rate the
 video performance is about 15-20% worse than on E-450.

How did you measure that?

-- 
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are watching the assignee of the bug.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: radeon pm questions

2013-04-29 Thread Alex Deucher
On Sun, Apr 28, 2013 at 9:26 PM, Sylvain BERTRAND sylw...@legeek.net wrote:
 Hi,

 I have a few questions about radeon pm code:

 
 In radeon_atombios.c, radeon_atombios_parse_power_table_6
 function, power_state-v2.nonClockInfoIndex for non_clock_info of
 one state is ignored and replaced by the state index, referencing
 an iguana bug.

 Is it still buggy from southern island and we must keep ignoring
 power_state-v2.nonClockInfoIndex for good and use the state
 index to reference the right state description in non clock array
 table?

nonClockInfoIndex isn't used and produces bogus tables.  The index
should be used.

 

 
 The same does happen for the clock info index which can be out of
 range. Same treat as above?


Yes, although, at this point, it's mostly for safety.  You shouldn't
see it in practice.

 

 
 In radeon_atombios.c, radeon_atombios_parse_pplib_clock_info
 function, code paths are selected based on DCE generation. The
 same happens in radeon_atombios_parse_pplib_non_clock_info
 function.  Should it rather be the chip family? Or current
 powerplay code does deal only with the DCE block??

It should be chip family.  I just used the DCE check since it
corresponds to the same relevant families.  I'll fix that.

Alex

 

 regards,

 --
 Sylvain
 ___
 dri-devel mailing list
 dri-devel@lists.freedesktop.org
 http://lists.freedesktop.org/mailman/listinfo/dri-devel
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[Bug 63865] radeon_atombios_get_power_modes oops with E-350

2013-04-29 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=63865

--- Comment #8 from Alex Deucher ag...@yahoo.com ---
It looks like you are using a bogus unposted vbios image.  I think you'll need
to bisect.  If I had to guess, I'd say it's related to some change in how the
pci rom images are fetched.

-- 
You are receiving this mail because:
You are the assignee for the bug.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH 0/4] drm/exynos: hdmi: move hdmiphy related code to hdmiphy driver

2013-04-29 Thread Rahul Sharma
Right now hdmiphy operations and configs are kept inside hdmi driver. hdmiphy
related code is tightly coupled with hdmi ip driver. Physicaly they are
different devices and should be instantiated independently.

In terms of versions/mapping/configurations Hdmi and hdmiphy are independent
of each other. It seems logical to isolate them and maintained independently.

This implementation is tested for:
1) Resolutions supported by exynos4 and 5 hdmi.
2) Runtime PM and S2R scenarions for exynos5.

This patch set is dependent on the patch, posted at
http://www.mail-archive.com/linux-samsung-soc@vger.kernel.org/msg17905.html

This series is based on exynos-drm-next branch at
git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos.git

Rahul Sharma (4):
  drm/exynos: hdmi: move hdmi subsystem registration to drm common hdmi
  drm/exynos: hdmi: register hdmiphy driver from common drm hdmi
  drm/exynos: hdmi: move hdmiphy callbacks to hdmiphy driver
  ARM: EXYNOS: remove parent device for hdmiphy clock

 arch/arm/mach-exynos/clock-exynos4.c |1 -
 arch/arm/mach-exynos/clock-exynos5.c |1 -
 drivers/gpu/drm/exynos/exynos_drm_drv.c  |   25 +-
 drivers/gpu/drm/exynos/exynos_drm_drv.h  |   14 +-
 drivers/gpu/drm/exynos/exynos_drm_hdmi.c |  107 +-
 drivers/gpu/drm/exynos/exynos_drm_hdmi.h |   20 +
 drivers/gpu/drm/exynos/exynos_hdmi.c |  371 ++-
 drivers/gpu/drm/exynos/exynos_hdmi.h |1 -
 drivers/gpu/drm/exynos/exynos_hdmiphy.c  |  585 +-
 drivers/gpu/drm/exynos/regs-hdmiphy.h|   61 
 10 files changed, 780 insertions(+), 406 deletions(-)
 create mode 100644 drivers/gpu/drm/exynos/regs-hdmiphy.h

-- 
1.7.10.4

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH 1/4] drm/exynos: hdmi: move hdmi subsystem registration to drm common hdmi

2013-04-29 Thread Rahul Sharma
Exynos hdmi sub-system consists of mixer, hdmi ip, hdmi-phy and hdmi-ddc
components. Currently, drivers for these components are getting registered
in exynos_drm_drv.c, which is meant for registration of drm sub-drivers.

In this patch, registration of drm hdmi sub-driver and device, drivers for
hdmi sub-system components are moved to exynos_drm_hdmi.c. This ensures
limited  relevant exposure of hdmi-sub-system components to exynos_drm_drv.c.
It will also help in handling the hdmi-sub-system diversities within the
exynos-common-hdmi.

Signed-off-by: Rahul Sharma rahul.sha...@samsung.com
---
 drivers/gpu/drm/exynos/exynos_drm_drv.c  |   25 ++--
 drivers/gpu/drm/exynos/exynos_drm_drv.h  |   14 -
 drivers/gpu/drm/exynos/exynos_drm_hdmi.c |   46 --
 drivers/gpu/drm/exynos/exynos_drm_hdmi.h |3 ++
 4 files changed, 49 insertions(+), 39 deletions(-)

diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c 
b/drivers/gpu/drm/exynos/exynos_drm_drv.c
index ba6d995..4eabb6e 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
@@ -331,19 +331,9 @@ static int __init exynos_drm_init(void)
 #endif
 
 #ifdef CONFIG_DRM_EXYNOS_HDMI
-   ret = platform_driver_register(hdmi_driver);
+   ret = exynos_common_hdmi_register();
if (ret  0)
goto out_hdmi;
-   ret = platform_driver_register(mixer_driver);
-   if (ret  0)
-   goto out_mixer;
-   ret = platform_driver_register(exynos_drm_common_hdmi_driver);
-   if (ret  0)
-   goto out_common_hdmi;
-
-   ret = exynos_platform_device_hdmi_register();
-   if (ret  0)
-   goto out_common_hdmi_dev;
 #endif
 
 #ifdef CONFIG_DRM_EXYNOS_VIDI
@@ -436,13 +426,7 @@ out_vidi:
 #endif
 
 #ifdef CONFIG_DRM_EXYNOS_HDMI
-   exynos_platform_device_hdmi_unregister();
-out_common_hdmi_dev:
-   platform_driver_unregister(exynos_drm_common_hdmi_driver);
-out_common_hdmi:
-   platform_driver_unregister(mixer_driver);
-out_mixer:
-   platform_driver_unregister(hdmi_driver);
+   exynos_common_hdmi_unregister();
 out_hdmi:
 #endif
 
@@ -483,10 +467,7 @@ static void __exit exynos_drm_exit(void)
 #endif
 
 #ifdef CONFIG_DRM_EXYNOS_HDMI
-   exynos_platform_device_hdmi_unregister();
-   platform_driver_unregister(exynos_drm_common_hdmi_driver);
-   platform_driver_unregister(mixer_driver);
-   platform_driver_unregister(hdmi_driver);
+   exynos_common_hdmi_unregister();
 #endif
 
 #ifdef CONFIG_DRM_EXYNOS_VIDI
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.h 
b/drivers/gpu/drm/exynos/exynos_drm_drv.h
index eaa1966..34aa36d 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_drv.h
+++ b/drivers/gpu/drm/exynos/exynos_drm_drv.h
@@ -319,15 +319,16 @@ int exynos_drm_subdrv_open(struct drm_device *dev, struct 
drm_file *file);
 void exynos_drm_subdrv_close(struct drm_device *dev, struct drm_file *file);
 
 /*
- * this function registers exynos drm hdmi platform device. It ensures only one
- * instance of the device is created.
+ * this function registers exynos drm hdmi platform driver and singleton
+ * device. It also registers subdrivers like mixer, hdmi and hdmiphy.
  */
-int exynos_platform_device_hdmi_register(void);
+int exynos_common_hdmi_register(void);
 
 /*
- * this function unregisters exynos drm hdmi platform device if it exists.
+ * this function unregisters exynos drm hdmi platform driver and device,
+ * subdrivers for mixer, hdmi and hdmiphy.
  */
-void exynos_platform_device_hdmi_unregister(void);
+void exynos_common_hdmi_unregister(void);
 
 /*
  * this function registers exynos drm ipp platform device.
@@ -340,9 +341,6 @@ int exynos_platform_device_ipp_register(void);
 void exynos_platform_device_ipp_unregister(void);
 
 extern struct platform_driver fimd_driver;
-extern struct platform_driver hdmi_driver;
-extern struct platform_driver mixer_driver;
-extern struct platform_driver exynos_drm_common_hdmi_driver;
 extern struct platform_driver vidi_driver;
 extern struct platform_driver g2d_driver;
 extern struct platform_driver fimc_driver;
diff --git a/drivers/gpu/drm/exynos/exynos_drm_hdmi.c 
b/drivers/gpu/drm/exynos/exynos_drm_hdmi.c
index 060fbe8..7ab5f9f 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_hdmi.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_hdmi.c
@@ -41,6 +41,8 @@ static struct exynos_drm_hdmi_context *mixer_ctx;
 static struct exynos_hdmi_ops *hdmi_ops;
 static struct exynos_mixer_ops *mixer_ops;
 
+struct platform_driver exynos_drm_common_hdmi_driver;
+
 struct drm_hdmi_context {
struct exynos_drm_subdrvsubdrv;
struct exynos_drm_hdmi_context  *hdmi_ctx;
@@ -49,29 +51,55 @@ struct drm_hdmi_context {
boolenabled[MIXER_WIN_NR];
 };
 
-int exynos_platform_device_hdmi_register(void)
+int exynos_common_hdmi_register(void)
 {
struct platform_device *pdev;
+   int ret;
 
if (exynos_drm_hdmi_pdev)

[PATCH 2/4] drm/exynos: hdmi: register hdmiphy driver from common drm hdmi

2013-04-29 Thread Rahul Sharma
hdmiphy hardware block is a physically separate device. Hdmiphy driver
is glued inside hdmi driver and acessed through hdmi callbacks. With
increasing diversities in the hdmiphy mapping and configurations, hdmi
driver is expanding with un-related changes.

This patch registers hdmiphy as a independent driver, having own set
of requried callbacks which are called by common drm hdmi, parallel to
hdmi and mixer driver.

Signed-off-by: Rahul Sharma rahul.sha...@samsung.com
---
 drivers/gpu/drm/exynos/exynos_drm_hdmi.c |   61 +++---
 drivers/gpu/drm/exynos/exynos_drm_hdmi.h |   17 +
 drivers/gpu/drm/exynos/exynos_hdmi.c |   26 ++---
 drivers/gpu/drm/exynos/exynos_hdmi.h |1 -
 drivers/gpu/drm/exynos/exynos_hdmiphy.c  |   13 ++-
 5 files changed, 87 insertions(+), 31 deletions(-)

diff --git a/drivers/gpu/drm/exynos/exynos_drm_hdmi.c 
b/drivers/gpu/drm/exynos/exynos_drm_hdmi.c
index 7ab5f9f..25fe012 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_hdmi.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_hdmi.c
@@ -32,12 +32,14 @@
 /* platform device pointer for common drm hdmi device. */
 static struct platform_device *exynos_drm_hdmi_pdev;
 
-/* Common hdmi subdrv needs to access the hdmi and mixer though context.
-* These should be initialied by the repective drivers */
+/* Common hdmi subdrv needs to access the hdmi, hdmiphy and mixer though
+*  context. These should be initialied by the repective drivers */
+static struct exynos_drm_hdmi_context *hdmiphy_ctx;
 static struct exynos_drm_hdmi_context *hdmi_ctx;
 static struct exynos_drm_hdmi_context *mixer_ctx;
 
 /* these callback points shoud be set by specific drivers. */
+static struct exynos_hdmiphy_ops *hdmiphy_ops;
 static struct exynos_hdmi_ops *hdmi_ops;
 static struct exynos_mixer_ops *mixer_ops;
 
@@ -45,6 +47,7 @@ struct platform_driver exynos_drm_common_hdmi_driver;
 
 struct drm_hdmi_context {
struct exynos_drm_subdrvsubdrv;
+   struct exynos_drm_hdmi_context  *hdmiphy_ctx;
struct exynos_drm_hdmi_context  *hdmi_ctx;
struct exynos_drm_hdmi_context  *mixer_ctx;
 
@@ -59,6 +62,10 @@ int exynos_common_hdmi_register(void)
if (exynos_drm_hdmi_pdev)
return -EEXIST;
 
+   ret = exynos_hdmiphy_driver_register();
+   if (ret  0)
+   goto out_hdmiphy;
+
ret = platform_driver_register(hdmi_driver);
if (ret  0)
goto out_hdmi;
@@ -88,6 +95,8 @@ out_common_hdmi:
 out_mixer:
platform_driver_unregister(hdmi_driver);
 out_hdmi:
+   exynos_hdmiphy_driver_unregister();
+out_hdmiphy:
return ret;
 }
 
@@ -99,9 +108,16 @@ void exynos_common_hdmi_unregister(void)
platform_driver_unregister(exynos_drm_common_hdmi_driver);
platform_driver_unregister(mixer_driver);
platform_driver_unregister(hdmi_driver);
+   exynos_hdmiphy_driver_unregister();
exynos_drm_hdmi_pdev = NULL;
 }
 
+void exynos_hdmiphy_drv_attach(struct exynos_drm_hdmi_context *ctx)
+{
+   if (ctx)
+   hdmiphy_ctx = ctx;
+}
+
 void exynos_hdmi_drv_attach(struct exynos_drm_hdmi_context *ctx)
 {
if (ctx)
@@ -114,6 +130,14 @@ void exynos_mixer_drv_attach(struct 
exynos_drm_hdmi_context *ctx)
mixer_ctx = ctx;
 }
 
+void exynos_hdmiphy_ops_register(struct exynos_hdmiphy_ops *ops)
+{
+   DRM_DEBUG_KMS(%s\n, __FILE__);
+
+   if (ops)
+   hdmiphy_ops = ops;
+}
+
 void exynos_hdmi_ops_register(struct exynos_hdmi_ops *ops)
 {
DRM_DEBUG_KMS(%s\n, __FILE__);
@@ -164,8 +188,8 @@ static int drm_hdmi_check_mode(struct device *dev,
DRM_DEBUG_KMS(%s\n, __FILE__);
 
/*
-   * Both, mixer and hdmi should be able to handle the requested mode.
-   * If any of the two fails, return mode as BAD.
+   * Mixer, hdmi and hdmiphy should be able to handle the requested mode.
+   * If any of the them fails, return mode as BAD.
*/
 
if (mixer_ops  mixer_ops-check_mode)
@@ -175,7 +199,13 @@ static int drm_hdmi_check_mode(struct device *dev,
return ret;
 
if (hdmi_ops  hdmi_ops-check_mode)
-   return hdmi_ops-check_mode(ctx-hdmi_ctx-ctx, mode);
+   ret = hdmi_ops-check_mode(ctx-hdmi_ctx-ctx, mode);
+
+   if (ret)
+   return ret;
+
+   if (hdmiphy_ops  hdmiphy_ops-check_mode)
+   return hdmiphy_ops-check_mode(ctx-hdmiphy_ctx-ctx, mode);
 
return 0;
 }
@@ -289,6 +319,9 @@ static void drm_hdmi_mode_set(struct device *subdrv_dev, 
void *mode)
 
if (hdmi_ops  hdmi_ops-mode_set)
hdmi_ops-mode_set(ctx-hdmi_ctx-ctx, mode);
+
+   if (hdmiphy_ops  hdmiphy_ops-mode_set)
+   hdmiphy_ops-mode_set(ctx-hdmiphy_ctx-ctx, mode);
 }
 
 static void drm_hdmi_get_max_resol(struct device *subdrv_dev,
@@ -308,6 +341,15 @@ static void drm_hdmi_commit(struct device *subdrv_dev)
 
DRM_DEBUG_KMS(%s\n, __FILE__);
 
+  

[PATCH 3/4] drm/exynos: hdmi: move hdmiphy callbacks to hdmiphy driver

2013-04-29 Thread Rahul Sharma
Hdmiphy callbacks are tighly coupled with hdmi IP callbacks inside
the hdmi driver. With increase in the support of different versions of
hdmiphys, hdmi ip driver expanding with lots of phy related information.
Above movement ensures that phy related code is present and maintained
within the hdmiphy driver.

This also helps in providing clean support for various combinations of hdmi
IPs and hdmiphys through 2 independent set of compatible strings. Earlier
each compatible string represents a combination of hdmi ip and phy. This
forces to use separate compatible string when one of the above block is
changed but the other one is not, which is not proper.

Signed-off-by: Rahul Sharma rahul.sha...@samsung.com
---
 drivers/gpu/drm/exynos/exynos_hdmi.c|  345 +--
 drivers/gpu/drm/exynos/exynos_hdmiphy.c |  574 ++-
 drivers/gpu/drm/exynos/regs-hdmiphy.h   |   61 
 3 files changed, 645 insertions(+), 335 deletions(-)
 create mode 100644 drivers/gpu/drm/exynos/regs-hdmiphy.h

diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c 
b/drivers/gpu/drm/exynos/exynos_hdmi.c
index 520c4af..b03fea9 100644
--- a/drivers/gpu/drm/exynos/exynos_hdmi.c
+++ b/drivers/gpu/drm/exynos/exynos_hdmi.c
@@ -171,7 +171,6 @@ struct hdmi_v14_conf {
 };
 
 struct hdmi_conf_regs {
-   int pixel_clock;
int cea_video_id;
union {
struct hdmi_v13_conf v13_conf;
@@ -192,7 +191,6 @@ struct hdmi_context {
int irq;
 
struct i2c_client   *ddc_port;
-   struct i2c_client   *hdmiphy_port;
 
/* current hdmiphy conf regs */
struct hdmi_conf_regs   mode_conf;
@@ -204,180 +202,6 @@ struct hdmi_context {
enum hdmi_type  type;
 };
 
-struct hdmiphy_config {
-   int pixel_clock;
-   u8 conf[32];
-};
-
-/* list of phy config settings */
-static const struct hdmiphy_config hdmiphy_v13_configs[] = {
-   {
-   .pixel_clock = 2700,
-   .conf = {
-   0x01, 0x05, 0x00, 0xD8, 0x10, 0x1C, 0x30, 0x40,
-   0x6B, 0x10, 0x02, 0x51, 0xDF, 0xF2, 0x54, 0x87,
-   0x84, 0x00, 0x30, 0x38, 0x00, 0x08, 0x10, 0xE0,
-   0x22, 0x40, 0xE3, 0x26, 0x00, 0x00, 0x00, 0x00,
-   },
-   },
-   {
-   .pixel_clock = 27027000,
-   .conf = {
-   0x01, 0x05, 0x00, 0xD4, 0x10, 0x9C, 0x09, 0x64,
-   0x6B, 0x10, 0x02, 0x51, 0xDF, 0xF2, 0x54, 0x87,
-   0x84, 0x00, 0x30, 0x38, 0x00, 0x08, 0x10, 0xE0,
-   0x22, 0x40, 0xE3, 0x26, 0x00, 0x00, 0x00, 0x00,
-   },
-   },
-   {
-   .pixel_clock = 74176000,
-   .conf = {
-   0x01, 0x05, 0x00, 0xD8, 0x10, 0x9C, 0xef, 0x5B,
-   0x6D, 0x10, 0x01, 0x51, 0xef, 0xF3, 0x54, 0xb9,
-   0x84, 0x00, 0x30, 0x38, 0x00, 0x08, 0x10, 0xE0,
-   0x22, 0x40, 0xa5, 0x26, 0x01, 0x00, 0x00, 0x00,
-   },
-   },
-   {
-   .pixel_clock = 7425,
-   .conf = {
-   0x01, 0x05, 0x00, 0xd8, 0x10, 0x9c, 0xf8, 0x40,
-   0x6a, 0x10, 0x01, 0x51, 0xff, 0xf1, 0x54, 0xba,
-   0x84, 0x00, 0x10, 0x38, 0x00, 0x08, 0x10, 0xe0,
-   0x22, 0x40, 0xa4, 0x26, 0x01, 0x00, 0x00, 0x00,
-   },
-   },
-   {
-   .pixel_clock = 14850,
-   .conf = {
-   0x01, 0x05, 0x00, 0xD8, 0x10, 0x9C, 0xf8, 0x40,
-   0x6A, 0x18, 0x00, 0x51, 0xff, 0xF1, 0x54, 0xba,
-   0x84, 0x00, 0x10, 0x38, 0x00, 0x08, 0x10, 0xE0,
-   0x22, 0x40, 0xa4, 0x26, 0x02, 0x00, 0x00, 0x00,
-   },
-   },
-};
-
-static const struct hdmiphy_config hdmiphy_v14_configs[] = {
-   {
-   .pixel_clock = 2520,
-   .conf = {
-   0x01, 0x51, 0x2A, 0x75, 0x40, 0x01, 0x00, 0x08,
-   0x82, 0x80, 0xfc, 0xd8, 0x45, 0xa0, 0xac, 0x80,
-   0x08, 0x80, 0x11, 0x04, 0x02, 0x22, 0x44, 0x86,
-   0x54, 0xf4, 0x24, 0x00, 0x00, 0x00, 0x01, 0x80,
-   },
-   },
-   {
-   .pixel_clock = 2700,
-   .conf = {
-   0x01, 0xd1, 0x22, 0x51, 0x40, 0x08, 0xfc, 0x20,
-   0x98, 0xa0, 0xcb, 0xd8, 0x45, 0xa0, 0xac, 0x80,
-   0x06, 0x80, 0x11, 0x04, 0x02, 0x22, 0x44, 0x86,
-   0x54, 0xe4, 0x24, 0x00, 0x00, 0x00, 0x01, 0x80,
-   },
-   },
-   {
-   .pixel_clock = 27027000,
-   .conf = {
-   0x01, 0xd1, 0x2d, 0x72, 0x40, 0x64, 0x12, 0x08,
-   0x43, 

[PATCH 4/4] ARM: EXYNOS: remove parent device for hdmiphy clock

2013-04-29 Thread Rahul Sharma
Hdmiphy clock flows from hdmiphy hw to hdmi ip and mixer. It is commonly
accessed among hdmi and hdmiphy driver. During power cycle, each of these
driver decrements the ref-count and ensures that last user disables the
clock. Setting parrent device to none ensure that both the drivers gets
access to the clock.

Signed-off-by: Rahul Sharma rahul.sha...@samsung.com
---
 arch/arm/mach-exynos/clock-exynos4.c |1 -
 arch/arm/mach-exynos/clock-exynos5.c |1 -
 2 files changed, 2 deletions(-)

diff --git a/arch/arm/mach-exynos/clock-exynos4.c 
b/arch/arm/mach-exynos/clock-exynos4.c
index 8a8468d..a43afcd 100644
--- a/arch/arm/mach-exynos/clock-exynos4.c
+++ b/arch/arm/mach-exynos/clock-exynos4.c
@@ -562,7 +562,6 @@ static struct clk exynos4_init_clocks_off[] = {
.ctrlbit= (1  3),
}, {
.name   = hdmiphy,
-   .devname= exynos4-hdmi,
.enable = exynos4_clk_hdmiphy_ctrl,
.ctrlbit= (1  0),
}, {
diff --git a/arch/arm/mach-exynos/clock-exynos5.c 
b/arch/arm/mach-exynos/clock-exynos5.c
index b0ea31f..4f39027 100644
--- a/arch/arm/mach-exynos/clock-exynos5.c
+++ b/arch/arm/mach-exynos/clock-exynos5.c
@@ -690,7 +690,6 @@ static struct clk exynos5_init_clocks_off[] = {
.ctrlbit= (1  6),
}, {
.name   = hdmiphy,
-   .devname= exynos5-hdmi,
.enable = exynos5_clk_hdmiphy_ctrl,
.ctrlbit= (1  0),
}, {
-- 
1.7.10.4

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


drm-openchrome status (or will it be in Kernel 3.10?)

2013-04-29 Thread Johannes Obermayr
Hi James,

Linus recently released Kernel 3.9, merge window for Kernel 3.10 has been 
opened, and the question is whether drm-openchrome will be part of the new 
Kernel version.

Regards,
Johannes 
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH v4] drm/exynos: hdmi: use drm_display_mode to check the supported modes

2013-04-29 Thread Sean Paul
On Mon, Apr 29, 2013 at 7:14 AM, Rahul Sharma rahul.sha...@samsung.com wrote:
 Exynos hdmi driver is using drm_display_mode for setting timing values
 for a supported resolution. Conversion to fb_videomode and then comparing
 with the mixer/hdmi/phy limits is not required. Instead, drm_display_mode
 fields cane be directly compared.


it seems like you have 2 patches here, one which renames check_timing
to check_mode, and another which removes the fb_videomode usage. I
think it should probably be split.

If you don't split it, I think you could simplify the commit message to:

This patch renames check_timing to check_mode and removes the
unnecessary conversion of drm_display_mode to/from fb_videomode in the
hdmi driver.



 v4:
 1) Removed __func__ from DRM_DEBUG_KMS.

 v3:
 1) Replaced check_timing callbacks with check_mode.
 2) Change the type of second parameter of check_mode callback from void
 pointer paramenter to struct drm_display_mode pointer.

 v2:
 1) Removed convert_to_video_timing().
 2) Corrected DRM_DEBUG_KMS to print the resolution properly.

 Signed-off-by: Rahul Sharma rahul.sha...@samsung.com
 ---
  drivers/gpu/drm/exynos/exynos_drm_connector.c |   38 
 ++---
  drivers/gpu/drm/exynos/exynos_drm_drv.h   |4 +--
  drivers/gpu/drm/exynos/exynos_drm_fimd.c  |4 +--
  drivers/gpu/drm/exynos/exynos_drm_hdmi.c  |   17 +--
  drivers/gpu/drm/exynos/exynos_drm_hdmi.h  |6 ++--
  drivers/gpu/drm/exynos/exynos_drm_vidi.c  |4 +--
  drivers/gpu/drm/exynos/exynos_hdmi.c  |   29 +--
  drivers/gpu/drm/exynos/exynos_mixer.c |   17 +--
  8 files changed, 43 insertions(+), 76 deletions(-)

 diff --git a/drivers/gpu/drm/exynos/exynos_drm_connector.c 
 b/drivers/gpu/drm/exynos/exynos_drm_connector.c
 index 8bcc13a..ab3c6d4 100644
 --- a/drivers/gpu/drm/exynos/exynos_drm_connector.c
 +++ b/drivers/gpu/drm/exynos/exynos_drm_connector.c
 @@ -58,37 +58,6 @@ convert_to_display_mode(struct drm_display_mode *mode,
 mode-flags |= DRM_MODE_FLAG_DBLSCAN;
  }

 -/* convert drm_display_mode to exynos_video_timings */
 -static inline void
 -convert_to_video_timing(struct fb_videomode *timing,
 -   struct drm_display_mode *mode)
 -{
 -   DRM_DEBUG_KMS(%s\n, __FILE__);
 -
 -   memset(timing, 0, sizeof(*timing));
 -
 -   timing-pixclock = mode-clock * 1000;
 -   timing-refresh = drm_mode_vrefresh(mode);
 -
 -   timing-xres = mode-hdisplay;
 -   timing-right_margin = mode-hsync_start - mode-hdisplay;
 -   timing-hsync_len = mode-hsync_end - mode-hsync_start;
 -   timing-left_margin = mode-htotal - mode-hsync_end;
 -
 -   timing-yres = mode-vdisplay;
 -   timing-lower_margin = mode-vsync_start - mode-vdisplay;
 -   timing-vsync_len = mode-vsync_end - mode-vsync_start;
 -   timing-upper_margin = mode-vtotal - mode-vsync_end;
 -
 -   if (mode-flags  DRM_MODE_FLAG_INTERLACE)
 -   timing-vmode = FB_VMODE_INTERLACED;
 -   else
 -   timing-vmode = FB_VMODE_NONINTERLACED;
 -
 -   if (mode-flags  DRM_MODE_FLAG_DBLSCAN)
 -   timing-vmode |= FB_VMODE_DOUBLE;
 -}
 -
  static int exynos_drm_connector_get_modes(struct drm_connector *connector)
  {
 struct exynos_drm_connector *exynos_connector =
 @@ -168,15 +137,12 @@ static int exynos_drm_connector_mode_valid(struct 
 drm_connector *connector,
 to_exynos_connector(connector);
 struct exynos_drm_manager *manager = exynos_connector-manager;
 struct exynos_drm_display_ops *display_ops = manager-display_ops;
 -   struct fb_videomode timing;
 int ret = MODE_BAD;

 DRM_DEBUG_KMS(%s\n, __FILE__);

 -   convert_to_video_timing(timing, mode);
 -
 -   if (display_ops  display_ops-check_timing)
 -   if (!display_ops-check_timing(manager-dev, (void *)timing))
 +   if (display_ops  display_ops-check_mode)
 +   if (!display_ops-check_mode(manager-dev, mode))
 ret = MODE_OK;

 return ret;
 diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.h 
 b/drivers/gpu/drm/exynos/exynos_drm_drv.h
 index 4606fac..9650b3b 100644
 --- a/drivers/gpu/drm/exynos/exynos_drm_drv.h
 +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.h
 @@ -142,7 +142,7 @@ struct exynos_drm_overlay {
   * @is_connected: check for that display is connected or not.
   * @get_edid: get edid modes from display driver.
   * @get_panel: get panel object from display driver.
 - * @check_timing: check if timing is valid or not.
 + * @check_mode: check if mode is valid or not.
   * @power_on: display device on or off.
   */
  struct exynos_drm_display_ops {
 @@ -151,7 +151,7 @@ struct exynos_drm_display_ops {
 struct edid *(*get_edid)(struct device *dev,
 struct drm_connector *connector);
 void *(*get_panel)(struct device *dev);
 -   

Re: [PATCH 1/4] drm/exynos: hdmi: move hdmi subsystem registration to drm common hdmi

2013-04-29 Thread Sean Paul
On Mon, Apr 29, 2013 at 10:50 AM, Rahul Sharma rahul.sha...@samsung.com wrote:
 Exynos hdmi sub-system consists of mixer, hdmi ip, hdmi-phy and hdmi-ddc
 components. Currently, drivers for these components are getting registered
 in exynos_drm_drv.c, which is meant for registration of drm sub-drivers.

 In this patch, registration of drm hdmi sub-driver and device, drivers for
 hdmi sub-system components are moved to exynos_drm_hdmi.c. This ensures
 limited  relevant exposure of hdmi-sub-system components to exynos_drm_drv.c.
 It will also help in handling the hdmi-sub-system diversities within the
 exynos-common-hdmi.

 Signed-off-by: Rahul Sharma rahul.sha...@samsung.com
 ---
  drivers/gpu/drm/exynos/exynos_drm_drv.c  |   25 ++--
  drivers/gpu/drm/exynos/exynos_drm_drv.h  |   14 -
  drivers/gpu/drm/exynos/exynos_drm_hdmi.c |   46 
 --
  drivers/gpu/drm/exynos/exynos_drm_hdmi.h |3 ++
  4 files changed, 49 insertions(+), 39 deletions(-)

 diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c 
 b/drivers/gpu/drm/exynos/exynos_drm_drv.c
 index ba6d995..4eabb6e 100644
 --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
 +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
 @@ -331,19 +331,9 @@ static int __init exynos_drm_init(void)
  #endif

  #ifdef CONFIG_DRM_EXYNOS_HDMI
 -   ret = platform_driver_register(hdmi_driver);
 +   ret = exynos_common_hdmi_register();
 if (ret  0)
 goto out_hdmi;
 -   ret = platform_driver_register(mixer_driver);
 -   if (ret  0)
 -   goto out_mixer;
 -   ret = platform_driver_register(exynos_drm_common_hdmi_driver);
 -   if (ret  0)
 -   goto out_common_hdmi;
 -
 -   ret = exynos_platform_device_hdmi_register();
 -   if (ret  0)
 -   goto out_common_hdmi_dev;
  #endif

  #ifdef CONFIG_DRM_EXYNOS_VIDI
 @@ -436,13 +426,7 @@ out_vidi:
  #endif

  #ifdef CONFIG_DRM_EXYNOS_HDMI
 -   exynos_platform_device_hdmi_unregister();
 -out_common_hdmi_dev:
 -   platform_driver_unregister(exynos_drm_common_hdmi_driver);
 -out_common_hdmi:
 -   platform_driver_unregister(mixer_driver);
 -out_mixer:
 -   platform_driver_unregister(hdmi_driver);
 +   exynos_common_hdmi_unregister();
  out_hdmi:
  #endif

 @@ -483,10 +467,7 @@ static void __exit exynos_drm_exit(void)
  #endif

  #ifdef CONFIG_DRM_EXYNOS_HDMI
 -   exynos_platform_device_hdmi_unregister();
 -   platform_driver_unregister(exynos_drm_common_hdmi_driver);
 -   platform_driver_unregister(mixer_driver);
 -   platform_driver_unregister(hdmi_driver);
 +   exynos_common_hdmi_unregister();
  #endif

  #ifdef CONFIG_DRM_EXYNOS_VIDI
 diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.h 
 b/drivers/gpu/drm/exynos/exynos_drm_drv.h
 index eaa1966..34aa36d 100644
 --- a/drivers/gpu/drm/exynos/exynos_drm_drv.h
 +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.h
 @@ -319,15 +319,16 @@ int exynos_drm_subdrv_open(struct drm_device *dev, 
 struct drm_file *file);
  void exynos_drm_subdrv_close(struct drm_device *dev, struct drm_file *file);

  /*
 - * this function registers exynos drm hdmi platform device. It ensures only 
 one
 - * instance of the device is created.
 + * this function registers exynos drm hdmi platform driver and singleton
 + * device. It also registers subdrivers like mixer, hdmi and hdmiphy.
   */
 -int exynos_platform_device_hdmi_register(void);
 +int exynos_common_hdmi_register(void);

  /*
 - * this function unregisters exynos drm hdmi platform device if it exists.
 + * this function unregisters exynos drm hdmi platform driver and device,
 + * subdrivers for mixer, hdmi and hdmiphy.
   */
 -void exynos_platform_device_hdmi_unregister(void);
 +void exynos_common_hdmi_unregister(void);

  /*
   * this function registers exynos drm ipp platform device.
 @@ -340,9 +341,6 @@ int exynos_platform_device_ipp_register(void);
  void exynos_platform_device_ipp_unregister(void);

  extern struct platform_driver fimd_driver;
 -extern struct platform_driver hdmi_driver;
 -extern struct platform_driver mixer_driver;
 -extern struct platform_driver exynos_drm_common_hdmi_driver;
  extern struct platform_driver vidi_driver;
  extern struct platform_driver g2d_driver;
  extern struct platform_driver fimc_driver;
 diff --git a/drivers/gpu/drm/exynos/exynos_drm_hdmi.c 
 b/drivers/gpu/drm/exynos/exynos_drm_hdmi.c
 index 060fbe8..7ab5f9f 100644
 --- a/drivers/gpu/drm/exynos/exynos_drm_hdmi.c
 +++ b/drivers/gpu/drm/exynos/exynos_drm_hdmi.c
 @@ -41,6 +41,8 @@ static struct exynos_drm_hdmi_context *mixer_ctx;
  static struct exynos_hdmi_ops *hdmi_ops;
  static struct exynos_mixer_ops *mixer_ops;

 +struct platform_driver exynos_drm_common_hdmi_driver;

What's the point of even having this driver? It doesn't do anything.
You call exynos_common_hdmi_register/unregister in drm_drv anyways.
Why not just register the mixer/hdmi/hdmiphy drivers and exynos subdrv
in those functions directly?

 +
  

Re: [PATCH 2/4] drm/exynos: hdmi: register hdmiphy driver from common drm hdmi

2013-04-29 Thread Sean Paul
On Mon, Apr 29, 2013 at 10:50 AM, Rahul Sharma rahul.sha...@samsung.com wrote:
 hdmiphy hardware block is a physically separate device. Hdmiphy driver
 is glued inside hdmi driver and acessed through hdmi callbacks. With
 increasing diversities in the hdmiphy mapping and configurations, hdmi
 driver is expanding with un-related changes.

 This patch registers hdmiphy as a independent driver, having own set
 of requried callbacks which are called by common drm hdmi, parallel to
 hdmi and mixer driver.

 Signed-off-by: Rahul Sharma rahul.sha...@samsung.com
 ---
  drivers/gpu/drm/exynos/exynos_drm_hdmi.c |   61 
 +++---
  drivers/gpu/drm/exynos/exynos_drm_hdmi.h |   17 +
  drivers/gpu/drm/exynos/exynos_hdmi.c |   26 ++---
  drivers/gpu/drm/exynos/exynos_hdmi.h |1 -
  drivers/gpu/drm/exynos/exynos_hdmiphy.c  |   13 ++-
  5 files changed, 87 insertions(+), 31 deletions(-)

 diff --git a/drivers/gpu/drm/exynos/exynos_drm_hdmi.c 
 b/drivers/gpu/drm/exynos/exynos_drm_hdmi.c
 index 7ab5f9f..25fe012 100644
 --- a/drivers/gpu/drm/exynos/exynos_drm_hdmi.c
 +++ b/drivers/gpu/drm/exynos/exynos_drm_hdmi.c
 @@ -32,12 +32,14 @@
  /* platform device pointer for common drm hdmi device. */
  static struct platform_device *exynos_drm_hdmi_pdev;

 -/* Common hdmi subdrv needs to access the hdmi and mixer though context.
 -* These should be initialied by the repective drivers */
 +/* Common hdmi subdrv needs to access the hdmi, hdmiphy and mixer though
 +*  context. These should be initialied by the repective drivers */

Doesn't conform with Documentation/CodingStyle 
s/initialied/initialized/  s/repective/respective/

 +static struct exynos_drm_hdmi_context *hdmiphy_ctx;
  static struct exynos_drm_hdmi_context *hdmi_ctx;
  static struct exynos_drm_hdmi_context *mixer_ctx;

  /* these callback points shoud be set by specific drivers. */
 +static struct exynos_hdmiphy_ops *hdmiphy_ops;
  static struct exynos_hdmi_ops *hdmi_ops;
  static struct exynos_mixer_ops *mixer_ops;

 @@ -45,6 +47,7 @@ struct platform_driver exynos_drm_common_hdmi_driver;

  struct drm_hdmi_context {
 struct exynos_drm_subdrvsubdrv;
 +   struct exynos_drm_hdmi_context  *hdmiphy_ctx;
 struct exynos_drm_hdmi_context  *hdmi_ctx;
 struct exynos_drm_hdmi_context  *mixer_ctx;

 @@ -59,6 +62,10 @@ int exynos_common_hdmi_register(void)
 if (exynos_drm_hdmi_pdev)
 return -EEXIST;

 +   ret = exynos_hdmiphy_driver_register();
 +   if (ret  0)
 +   goto out_hdmiphy;

This isn't consistent with your last patch. In that patch, you exposed
the driver directly through exynos_drm_hdmi.h and registered the
driver directly. Here, you expose a helper function to do it for you.
These should at least work the same way.

 +
 ret = platform_driver_register(hdmi_driver);
 if (ret  0)
 goto out_hdmi;
 @@ -88,6 +95,8 @@ out_common_hdmi:
  out_mixer:
 platform_driver_unregister(hdmi_driver);
  out_hdmi:
 +   exynos_hdmiphy_driver_unregister();
 +out_hdmiphy:
 return ret;
  }

 @@ -99,9 +108,16 @@ void exynos_common_hdmi_unregister(void)
 platform_driver_unregister(exynos_drm_common_hdmi_driver);
 platform_driver_unregister(mixer_driver);
 platform_driver_unregister(hdmi_driver);
 +   exynos_hdmiphy_driver_unregister();
 exynos_drm_hdmi_pdev = NULL;
  }

 +void exynos_hdmiphy_drv_attach(struct exynos_drm_hdmi_context *ctx)
 +{
 +   if (ctx)
 +   hdmiphy_ctx = ctx;
 +}
 +

I think I've said this before, but in case I haven't, here it goes. If
you didn't platform_driverize all of this stuff, and instead
encapsulated the various functionality in callbacks central to one drm
driver, you wouldn't need to do this kind of thing.

  void exynos_hdmi_drv_attach(struct exynos_drm_hdmi_context *ctx)
  {
 if (ctx)
 @@ -114,6 +130,14 @@ void exynos_mixer_drv_attach(struct 
 exynos_drm_hdmi_context *ctx)
 mixer_ctx = ctx;
  }

 +void exynos_hdmiphy_ops_register(struct exynos_hdmiphy_ops *ops)
 +{
 +   DRM_DEBUG_KMS(%s\n, __FILE__);
 +
 +   if (ops)
 +   hdmiphy_ops = ops;
 +}
 +
  void exynos_hdmi_ops_register(struct exynos_hdmi_ops *ops)
  {
 DRM_DEBUG_KMS(%s\n, __FILE__);
 @@ -164,8 +188,8 @@ static int drm_hdmi_check_mode(struct device *dev,
 DRM_DEBUG_KMS(%s\n, __FILE__);

 /*
 -   * Both, mixer and hdmi should be able to handle the requested mode.
 -   * If any of the two fails, return mode as BAD.
 +   * Mixer, hdmi and hdmiphy should be able to handle the requested mode.
 +   * If any of the them fails, return mode as BAD.
 */

 if (mixer_ops  mixer_ops-check_mode)
 @@ -175,7 +199,13 @@ static int drm_hdmi_check_mode(struct device *dev,
 return ret;

 if (hdmi_ops  hdmi_ops-check_mode)
 -   return 

Re: [PATCH 4/4] ARM: EXYNOS: remove parent device for hdmiphy clock

2013-04-29 Thread Sean Paul
On Mon, Apr 29, 2013 at 10:50 AM, Rahul Sharma rahul.sha...@samsung.com wrote:
 Hdmiphy clock flows from hdmiphy hw to hdmi ip and mixer. It is commonly
 accessed among hdmi and hdmiphy driver. During power cycle, each of these
 driver decrements the ref-count and ensures that last user disables the
 clock. Setting parrent device to none ensure that both the drivers gets
 access to the clock.


This seems like the wrong solution. I think you should be trying to
isolate its usage to one driver, instead of removing devname.

Sean



 Signed-off-by: Rahul Sharma rahul.sha...@samsung.com
 ---
  arch/arm/mach-exynos/clock-exynos4.c |1 -
  arch/arm/mach-exynos/clock-exynos5.c |1 -
  2 files changed, 2 deletions(-)

 diff --git a/arch/arm/mach-exynos/clock-exynos4.c 
 b/arch/arm/mach-exynos/clock-exynos4.c
 index 8a8468d..a43afcd 100644
 --- a/arch/arm/mach-exynos/clock-exynos4.c
 +++ b/arch/arm/mach-exynos/clock-exynos4.c
 @@ -562,7 +562,6 @@ static struct clk exynos4_init_clocks_off[] = {
 .ctrlbit= (1  3),
 }, {
 .name   = hdmiphy,
 -   .devname= exynos4-hdmi,
 .enable = exynos4_clk_hdmiphy_ctrl,
 .ctrlbit= (1  0),
 }, {
 diff --git a/arch/arm/mach-exynos/clock-exynos5.c 
 b/arch/arm/mach-exynos/clock-exynos5.c
 index b0ea31f..4f39027 100644
 --- a/arch/arm/mach-exynos/clock-exynos5.c
 +++ b/arch/arm/mach-exynos/clock-exynos5.c
 @@ -690,7 +690,6 @@ static struct clk exynos5_init_clocks_off[] = {
 .ctrlbit= (1  6),
 }, {
 .name   = hdmiphy,
 -   .devname= exynos5-hdmi,
 .enable = exynos5_clk_hdmiphy_ctrl,
 .ctrlbit= (1  0),
 }, {
 --
 1.7.10.4

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH 4/4] ARM: EXYNOS: remove parent device for hdmiphy clock

2013-04-29 Thread Sylwester Nawrocki
Hi,

On 04/29/2013 07:04 PM, Sean Paul wrote:
 On Mon, Apr 29, 2013 at 10:50 AM, Rahul Sharma rahul.sha...@samsung.com 
 wrote:
 Hdmiphy clock flows from hdmiphy hw to hdmi ip and mixer. It is commonly
 accessed among hdmi and hdmiphy driver. During power cycle, each of these
 driver decrements the ref-count and ensures that last user disables the
 clock. Setting parrent device to none ensure that both the drivers gets
 access to the clock.

 
 This seems like the wrong solution. I think you should be trying to
 isolate its usage to one driver, instead of removing devname.

And files:
arch/arm/mach-exynos/clock-exynos4.c
arch/arm/mach-exynos/clock-exynos5.c

are not existent in linux-next for some time already. Since 3.10 the
common clock API driver is used. It also shows that very few people
actually test their patches against -next... :(

Regards,
Sylwester

 Sean
 
 Signed-off-by: Rahul Sharma rahul.sha...@samsung.com
 ---
  arch/arm/mach-exynos/clock-exynos4.c |1 -
  arch/arm/mach-exynos/clock-exynos5.c |1 -
  2 files changed, 2 deletions(-)

 diff --git a/arch/arm/mach-exynos/clock-exynos4.c 
 b/arch/arm/mach-exynos/clock-exynos4.c
 index 8a8468d..a43afcd 100644
 --- a/arch/arm/mach-exynos/clock-exynos4.c
 +++ b/arch/arm/mach-exynos/clock-exynos4.c
 @@ -562,7 +562,6 @@ static struct clk exynos4_init_clocks_off[] = {
 .ctrlbit= (1  3),
 }, {
 .name   = hdmiphy,
 -   .devname= exynos4-hdmi,
 .enable = exynos4_clk_hdmiphy_ctrl,
 .ctrlbit= (1  0),
 }, {
 diff --git a/arch/arm/mach-exynos/clock-exynos5.c 
 b/arch/arm/mach-exynos/clock-exynos5.c
 index b0ea31f..4f39027 100644
 --- a/arch/arm/mach-exynos/clock-exynos5.c
 +++ b/arch/arm/mach-exynos/clock-exynos5.c
 @@ -690,7 +690,6 @@ static struct clk exynos5_init_clocks_off[] = {
 .ctrlbit= (1  6),
 }, {
 .name   = hdmiphy,
 -   .devname= exynos5-hdmi,
 .enable = exynos5_clk_hdmiphy_ctrl,
 .ctrlbit= (1  0),
 }, {
 --
 1.7.10.4

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH] mgag200 code cleanup patches

2013-04-29 Thread Christopher Harvey
I submitted these a while ago, but I think they got lost in the
mailing list. Just wanted to make sure they get a shot at the merge
window.

thanks,

Christopher Harvey (3):
  drm/mgag200: Remove pointless call to drm_fb_get_bpp_depth
  drm/mgag200: Pass driver specific mga_device in driver functions
  drm/mgag200: Remove extra variable assigns

 drivers/gpu/drm/mgag200/mgag200_fb.c   | 3 ---
 drivers/gpu/drm/mgag200/mgag200_main.c | 2 --
 drivers/gpu/drm/mgag200/mgag200_mode.c | 7 +++
 3 files changed, 3 insertions(+), 9 deletions(-)

-- 
1.8.1.5

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH] drm/mgag200: Remove pointless call to drm_fb_get_bpp_depth

2013-04-29 Thread Christopher Harvey
Signed-off-by: Christopher Harvey char...@matrox.com
---
 drivers/gpu/drm/mgag200/mgag200_fb.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/gpu/drm/mgag200/mgag200_fb.c 
b/drivers/gpu/drm/mgag200/mgag200_fb.c
index d2253f6..a5a1f34 100644
--- a/drivers/gpu/drm/mgag200/mgag200_fb.c
+++ b/drivers/gpu/drm/mgag200/mgag200_fb.c
@@ -105,12 +105,9 @@ static int mgag200fb_create_object(struct mga_fbdev 
*afbdev,
   struct drm_gem_object **gobj_p)
 {
struct drm_device *dev = afbdev-helper.dev;
-   u32 bpp, depth;
u32 size;
struct drm_gem_object *gobj;
-
int ret = 0;
-   drm_fb_get_bpp_depth(mode_cmd-pixel_format, depth, bpp);
 
size = mode_cmd-pitches[0] * mode_cmd-height;
ret = mgag200_gem_create(dev, size, true, gobj);
-- 
1.8.1.5

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH] drm/mgag200: Pass driver specific mga_device in driver functions

2013-04-29 Thread Christopher Harvey
Signed-off-by: Christopher Harvey char...@matrox.com
---
 drivers/gpu/drm/mgag200/mgag200_mode.c | 7 +++
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/mgag200/mgag200_mode.c 
b/drivers/gpu/drm/mgag200/mgag200_mode.c
index 78d8e91..f988965 100644
--- a/drivers/gpu/drm/mgag200/mgag200_mode.c
+++ b/drivers/gpu/drm/mgag200/mgag200_mode.c
@@ -1254,9 +1254,8 @@ static const struct drm_crtc_helper_funcs 
mga_helper_funcs = {
 };
 
 /* CRTC setup */
-static void mga_crtc_init(struct drm_device *dev)
+static void mga_crtc_init(struct mga_device *mdev)
 {
-   struct mga_device *mdev = dev-dev_private;
struct mga_crtc *mga_crtc;
int i;
 
@@ -1267,7 +1266,7 @@ static void mga_crtc_init(struct drm_device *dev)
if (mga_crtc == NULL)
return;
 
-   drm_crtc_init(dev, mga_crtc-base, mga_crtc_funcs);
+   drm_crtc_init(mdev-dev, mga_crtc-base, mga_crtc_funcs);
 
drm_mode_crtc_set_gamma_size(mga_crtc-base, MGAG200_LUT_SIZE);
mdev-mode_info.crtc = mga_crtc;
@@ -1522,7 +1521,7 @@ int mgag200_modeset_init(struct mga_device *mdev)
 
mdev-dev-mode_config.fb_base = mdev-mc.vram_base;
 
-   mga_crtc_init(mdev-dev);
+   mga_crtc_init(mdev);
 
encoder = mga_encoder_init(mdev-dev);
if (!encoder) {
-- 
1.8.1.5

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH] drm/mgag200: Remove extra variable assigns

2013-04-29 Thread Christopher Harvey
These two variables are set again immediately in 'mgag200_modeset_init'

Signed-off-by: Christopher Harvey char...@matrox.com
---
 drivers/gpu/drm/mgag200/mgag200_main.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/gpu/drm/mgag200/mgag200_main.c 
b/drivers/gpu/drm/mgag200/mgag200_main.c
index 64297c7..b762bfb 100644
--- a/drivers/gpu/drm/mgag200/mgag200_main.c
+++ b/drivers/gpu/drm/mgag200/mgag200_main.c
@@ -234,8 +234,6 @@ int mgag200_driver_load(struct drm_device *dev, unsigned 
long flags)
 
drm_mode_config_init(dev);
dev-mode_config.funcs = (void *)mga_mode_funcs;
-   dev-mode_config.min_width = 0;
-   dev-mode_config.min_height = 0;
dev-mode_config.preferred_depth = 24;
dev-mode_config.prefer_shadow = 1;
 
-- 
1.8.1.5

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[Bug 63935] TURKS [drm:r600_uvd_init] *ERROR* UVD not responding, trying to reset the VCPU!!!

2013-04-29 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=63935

--- Comment #6 from Dave Witbrodt dawit...@sbcglobal.net ---
FWIW, I'm seeing this same firmware issue on a SUMO2 system:

[1.305718] [drm] Initialized drm 1.1.0 20060810
[1.305767] [drm] radeon kernel modesetting enabled.
[1.305964] [drm] initializing kernel modesetting (SUMO2 0x1002:0x9644
0x1849:0x9640).
[1.306030] [drm] register mmio base: 0xFEF0
[1.306064] [drm] register mmio size: 262144
[1.306155] ATOM BIOS: General
[1.306231] radeon :00:01.0: VRAM: 256M 0x -
0x0FFF (256M used)
[1.306272] radeon :00:01.0: GTT: 512M 0x1000 -
0x2FFF
[1.306315] mtrr: type mismatch for c000,1000 old: write-back new:
write-combining
[1.306355] [drm] Detected VRAM RAM=256M, BAR=256M
[1.306389] [drm] RAM width 32bits DDR
[1.306520] [TTM] Zone  kernel: Available graphics memory: 1885900 kiB
[1.306563] [TTM] Initializing pool allocator
[1.306601] [TTM] Initializing DMA pool allocator
[1.306659] [drm] radeon: 256M of VRAM memory ready
[1.306694] [drm] radeon: 512M of GTT memory ready.
[1.306730] [drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
[1.306765] [drm] Driver supports precise vblank timestamp query.
[1.306839] radeon :00:01.0: irq 41 for MSI/MSI-X
[1.306849] radeon :00:01.0: radeon: using MSI.
[1.306901] [drm] radeon: irq initialized.
[1.307950] [drm] GART: num cpu pages 131072, num gpu pages 131072
[1.309023] [drm] Loading SUMO2 Microcode
[1.316957] [drm] PCIE GART of 512M enabled (table at 0x00273000).
[1.317116] radeon :00:01.0: WB enabled
[1.317148] radeon :00:01.0: fence driver on ring 0 use gpu addr
0x1c00 and cpu addr 0x88012a178c00
[1.317186] radeon :00:01.0: fence driver on ring 3 use gpu addr
0x1c0c and cpu addr 0x88012a178c0c
[1.317414] radeon :00:01.0: fence driver on ring 5 use gpu addr
0x00072118 and cpu addr 0xc900106b2118
[1.334080] [drm] ring test on 0 succeeded in 1 usecs
[1.334176] [drm] ring test on 3 succeeded in 1 usecs
[2.281926] tsc: Refined TSC clocksource calibration: 2695.097 MHz
[2.376808] [drm:r600_uvd_init] *ERROR* UVD not responding, trying to reset
the VCPU!!!
[3.394476] [drm:r600_uvd_init] *ERROR* UVD not responding, trying to reset
the VCPU!!!
[4.412139] [drm:r600_uvd_init] *ERROR* UVD not responding, trying to reset
the VCPU!!!
[5.429805] [drm:r600_uvd_init] *ERROR* UVD not responding, trying to reset
the VCPU!!!
[6.447468] [drm:r600_uvd_init] *ERROR* UVD not responding, trying to reset
the VCPU!!!
[7.465130] [drm:r600_uvd_init] *ERROR* UVD not responding, trying to reset
the VCPU!!!
[8.482797] [drm:r600_uvd_init] *ERROR* UVD not responding, trying to reset
the VCPU!!!
[9.500460] [drm:r600_uvd_init] *ERROR* UVD not responding, trying to reset
the VCPU!!!
[   10.518126] [drm:r600_uvd_init] *ERROR* UVD not responding, trying to reset
the VCPU!!!
[   11.535793] [drm:r600_uvd_init] *ERROR* UVD not responding, trying to reset
the VCPU!!!
[   11.555786] [drm:r600_uvd_init] *ERROR* UVD not responding, giving up!!!
[   11.575783] [drm:evergreen_startup] *ERROR* radeon: error initializing UVD
(-1).
[   11.576227] [drm] ib test on ring 0 succeeded in 0 usecs
[   11.576294] [drm] ib test on ring 3 succeeded in 0 usecs
[   11.577202] [drm] Radeon Display Connectors
[   11.577236] [drm] Connector 0:
[   11.577269] [drm]   HDMI-A-1
[   11.577302] [drm]   HPD2
[   11.577335] [drm]   DDC: 0x6440 0x6440 0x6444 0x6444 0x6448 0x6448 0x644c
0x644c
[   11.578434] [drm]   Encoders:
[   11.578467] [drm] DFP1: INTERNAL_UNIPHY2
[   11.578501] [drm] Connector 1:
[   11.578533] [drm]   VGA-1
[   11.578566] [drm]   HPD1
[   11.578599] [drm]   DDC: 0x6430 0x6430 0x6434 0x6434 0x6438 0x6438 0x643c
0x643c
[   11.578652] [drm]   Encoders:
[   11.578685] [drm] CRT1: INTERNAL_UNIPHY2
[   11.578719] [drm] CRT1: NUTMEG
[   11.595893] [drm] Internal thermal controller without fan control
[   11.595949] [drm] radeon: power management initialized
[   11.660512] [drm] fb mappable at 0xC0375000
[   11.660542] [drm] vram apper at 0xC000
[   11.660570] [drm] size 9216000
[   11.660598] [drm] fb depth is 24
[   11.660626] [drm]pitch is 7680
[   11.660828] fbcon: radeondrmfb (fb0) is primary device
[   11.738729] Console: switching to colour frame buffer device 240x75
[   11.745079] radeon :00:01.0: fb0: radeondrmfb frame buffer device
[   11.745110] radeon :00:01.0: registered panic notifier
[   11.745140] [drm] Initialized radeon 2.33.0 20080528 for :00:01.0 on
minor 0

This is on a machine I use as a file server, with no X Windows installed; on my
desktop machine (using Juniper), I have successfully built and run the same
kernel with the new JUNIPER_rlc.bin and CYPRESS_uvd.bin files (and the old
JUNIPER_me.bin and JUNIPER_pfp.bin 

Re: [PATCH] mgag200 code cleanup patches

2013-04-29 Thread Christopher Harvey

Christopher Harvey char...@matrox.com writes:

 I submitted these a while ago, but I think they got lost in the
 mailing list. Just wanted to make sure they get a shot at the merge
 window.

 thanks,

 Christopher Harvey (3):
   drm/mgag200: Remove pointless call to drm_fb_get_bpp_depth
   drm/mgag200: Pass driver specific mga_device in driver functions
   drm/mgag200: Remove extra variable assigns

  drivers/gpu/drm/mgag200/mgag200_fb.c   | 3 ---
  drivers/gpu/drm/mgag200/mgag200_main.c | 2 --
  drivers/gpu/drm/mgag200/mgag200_mode.c | 7 +++
  3 files changed, 3 insertions(+), 9 deletions(-)

the drm-next branch is what gets merged into merge windows, right?
http://cgit.freedesktop.org/~airlied/linux/

-- 
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: drm-openchrome status (or will it be in Kernel 3.10?)

2013-04-29 Thread Dave Airlie
On Tue, Apr 30, 2013 at 2:17 AM, Johannes Obermayr
johannesoberm...@gmx.de wrote:
 Hi James,

 Linus recently released Kernel 3.9, merge window for Kernel 3.10 has been 
 opened, and the question is whether drm-openchrome will be part of the new 
 Kernel version.

Johannes,

you misunderstand merge window. The merge window is for stuff to go
from toplevel maintainers to Linus, not for new stuff to appear and be
merged.

Dave.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[Bug 63520] r300g regression (RV380): Strange rendering of light sources in Penumbra (bisected)

2013-04-29 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=63520

--- Comment #4 from PJBrs pj...@floorenpj.xs4all.nl ---
I've run the Penumbra Requiem game with RADEON_DEBUG=fp,vp and captured the
output. I made two attachments. The file named Goodlog is the log with mesa
version snb_magic_9030_g342cac7 (commit
342cac71669662abad3435fd13ecf28d073874c3). The file named badlog is the
output with mesa version snb-magic-9031-g134a0a5 (commit
134a0a5ff88851c971fb95863317f640b5b9fa3a). Let me know if any other information
is needed.

-- 
You are receiving this mail because:
You are the assignee for the bug.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[Bug 63520] r300g regression (RV380): Strange rendering of light sources in Penumbra (bisected)

2013-04-29 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=63520

--- Comment #5 from PJBrs pj...@floorenpj.xs4all.nl ---
Created attachment 78616
  -- https://bugs.freedesktop.org/attachment.cgi?id=78616action=edit
First bad penumbra output with RADEON_DEBUG=fp,vp

-- 
You are receiving this mail because:
You are the assignee for the bug.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[Bug 63520] r300g regression (RV380): Strange rendering of light sources in Penumbra (bisected)

2013-04-29 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=63520

--- Comment #6 from PJBrs pj...@floorenpj.xs4all.nl ---
Created attachment 78617
  -- https://bugs.freedesktop.org/attachment.cgi?id=78617action=edit
Last good penumbra output with RADEON_DEBUG=fp,vp

-- 
You are receiving this mail because:
You are the assignee for the bug.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: drm-openchrome status (or will it be in Kernel 3.10?)

2013-04-29 Thread Johannes Obermayr
Am Dienstag, 30. April 2013, 06:06:22 schrieb Dave Airlie:
 On Tue, Apr 30, 2013 at 2:17 AM, Johannes Obermayr
 johannesoberm...@gmx.de wrote:
  Hi James,
 
  Linus recently released Kernel 3.9, merge window for Kernel 3.10 has been 
  opened, and the question is whether drm-openchrome will be part of the new 
  Kernel version.
 
 Johannes,
 
 you misunderstand merge window. The merge window is for stuff to go
 from toplevel maintainers to Linus, not for new stuff to appear and be
 merged.

Dave,

I know you maintain also a merge window for drm stuff which starts at ~ rc6.

But I am unsure when it closes: When Linus opens his merge window or when you 
forward your main drm pull request to Linus.
First case means it is definitely too late for drm-openchrome in 3.10. Second 
case means there can be hope (depending on James' answer) ...

But regarding your answer I assume first case is right.


Johannes
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: drm-openchrome status (or will it be in Kernel 3.10?)

2013-04-29 Thread Dave Airlie
On Tue, Apr 30, 2013 at 7:27 AM, Johannes Obermayr
johannesoberm...@gmx.de wrote:
 Am Dienstag, 30. April 2013, 06:06:22 schrieb Dave Airlie:
 On Tue, Apr 30, 2013 at 2:17 AM, Johannes Obermayr
 johannesoberm...@gmx.de wrote:
  Hi James,
 
  Linus recently released Kernel 3.9, merge window for Kernel 3.10 has been 
  opened, and the question is whether drm-openchrome will be part of the new 
  Kernel version.

 Johannes,

 you misunderstand merge window. The merge window is for stuff to go
 from toplevel maintainers to Linus, not for new stuff to appear and be
 merged.

 Dave,

 I know you maintain also a merge window for drm stuff which starts at ~ rc6.

 But I am unsure when it closes: When Linus opens his merge window or when you 
 forward your main drm pull request to Linus.
 First case means it is definitely too late for drm-openchrome in 3.10. Second 
 case means there can be hope (depending on James' answer) ...

 But regarding your answer I assume first case is right.

Once Linus opens his window, I won't accept anything major that hasn't
been posted to the list for review before.

I generally have a lag time of hoovering up on the list stuff, but
something like this that has never been posted would have no hope.

Dave.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


  1   2   >