Re: [Intel-gfx] [PATCH] drm/i915: Add missing MacBook Pro models with dual channel LVDS

2015-04-30 Thread Joonas Lahtinen
On ke, 2015-04-29 at 17:21 +0300, Jani Nikula wrote:
 On Sun, 12 Apr 2015, Lukas Wunner lu...@wunner.de wrote:
  Single channel LVDS maxes out at 112 MHz. All 17 models with i915
  graphics had a resolution of 1920x1200 (193 MHz), necessitating dual
  channel LVDS. The 15 pre-retina models had either 1440x900 (106 MHz)
  or 1680x1050 (119 MHz), both versions used dual channel LVDS even
  though the smaller one would have fit into a single channel.
 
  Signed-off-by: Lukas Wunner lu...@wunner.de
  Tested-by: Lukas Wunner lu...@wunner.de
 
 Acked-by: Jani Nikula jani.nik...@intel.com
 
  ---
   drivers/gpu/drm/i915/intel_lvds.c | 26 --
   1 file changed, 24 insertions(+), 2 deletions(-)
 
  diff --git a/drivers/gpu/drm/i915/intel_lvds.c 
  b/drivers/gpu/drm/i915/intel_lvds.c
  index 071b96d..417ccab 100644
  --- a/drivers/gpu/drm/i915/intel_lvds.c
  +++ b/drivers/gpu/drm/i915/intel_lvds.c
  @@ -812,12 +812,28 @@ static int intel_dual_link_lvds_callback(const struct 
  dmi_system_id *id)
   static const struct dmi_system_id intel_dual_link_lvds[] = {
  {
  .callback = intel_dual_link_lvds_callback,
  -   .ident = Apple MacBook Pro (Core i5/i7 Series),
  +   .ident = Apple MacBook Pro 15\ (2010),
  +   .matches = {
  +   DMI_MATCH(DMI_SYS_VENDOR, Apple Inc.),
  +   DMI_MATCH(DMI_PRODUCT_NAME, MacBookPro6,2),
  +   },
  +   },
  +   {
  +   .callback = intel_dual_link_lvds_callback,
  +   .ident = Apple MacBook Pro 15\ (2011),
  .matches = {
  DMI_MATCH(DMI_SYS_VENDOR, Apple Inc.),
  DMI_MATCH(DMI_PRODUCT_NAME, MacBookPro8,2),
  },
  },
  +   {
  +   .callback = intel_dual_link_lvds_callback,
  +   .ident = Apple MacBook Pro 15\ (2012),
  +   .matches = {
  +   DMI_MATCH(DMI_SYS_VENDOR, Apple Inc.),
  +   DMI_MATCH(DMI_PRODUCT_NAME, MacBookPro9,1),
  +   },
  +   },
  { } /* terminating entry */
   };
   
  @@ -847,6 +863,11 @@ static bool compute_is_dual_link_lvds(struct 
  intel_lvds_encoder *lvds_encoder)
  if (i915.lvds_channel_mode  0)
  return i915.lvds_channel_mode == 2;
   
  +   /* single channel LVDS is limited to 112 kHz */

s/kHz/MHz/

  +   if (lvds_encoder-attached_connector-base.panel.fixed_mode-clock
  +112999)
  +   return true;
  +
  if (dmi_check_system(intel_dual_link_lvds))
  return true;
   
  @@ -1104,6 +1125,8 @@ void intel_lvds_init(struct drm_device *dev)
   out:
  mutex_unlock(dev-mode_config.mutex);
   
  +   intel_panel_init(intel_connector-panel, fixed_mode, downclock_mode);
  +
  lvds_encoder-is_dual_link = compute_is_dual_link_lvds(lvds_encoder);
  DRM_DEBUG_KMS(detected %s-link lvds configuration\n,
lvds_encoder-is_dual_link ? dual : single);
  @@ -1118,7 +1141,6 @@ out:
  }
  drm_connector_register(connector);
   
  -   intel_panel_init(intel_connector-panel, fixed_mode, downclock_mode);
  intel_panel_setup_backlight(connector, INVALID_PIPE);
   
  return;
  -- 
  1.8.5.2 (Apple Git-48)
 
  ___
  Intel-gfx mailing list
  Intel-gfx@lists.freedesktop.org
  http://lists.freedesktop.org/mailman/listinfo/intel-gfx
 


___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/i915: Add missing MacBook Pro models with dual channel LVDS

2015-04-29 Thread Jani Nikula
On Sun, 12 Apr 2015, Lukas Wunner lu...@wunner.de wrote:
 Single channel LVDS maxes out at 112 MHz. All 17 models with i915
 graphics had a resolution of 1920x1200 (193 MHz), necessitating dual
 channel LVDS. The 15 pre-retina models had either 1440x900 (106 MHz)
 or 1680x1050 (119 MHz), both versions used dual channel LVDS even
 though the smaller one would have fit into a single channel.

 Signed-off-by: Lukas Wunner lu...@wunner.de
 Tested-by: Lukas Wunner lu...@wunner.de

Acked-by: Jani Nikula jani.nik...@intel.com

 ---
  drivers/gpu/drm/i915/intel_lvds.c | 26 --
  1 file changed, 24 insertions(+), 2 deletions(-)

 diff --git a/drivers/gpu/drm/i915/intel_lvds.c 
 b/drivers/gpu/drm/i915/intel_lvds.c
 index 071b96d..417ccab 100644
 --- a/drivers/gpu/drm/i915/intel_lvds.c
 +++ b/drivers/gpu/drm/i915/intel_lvds.c
 @@ -812,12 +812,28 @@ static int intel_dual_link_lvds_callback(const struct 
 dmi_system_id *id)
  static const struct dmi_system_id intel_dual_link_lvds[] = {
   {
   .callback = intel_dual_link_lvds_callback,
 - .ident = Apple MacBook Pro (Core i5/i7 Series),
 + .ident = Apple MacBook Pro 15\ (2010),
 + .matches = {
 + DMI_MATCH(DMI_SYS_VENDOR, Apple Inc.),
 + DMI_MATCH(DMI_PRODUCT_NAME, MacBookPro6,2),
 + },
 + },
 + {
 + .callback = intel_dual_link_lvds_callback,
 + .ident = Apple MacBook Pro 15\ (2011),
   .matches = {
   DMI_MATCH(DMI_SYS_VENDOR, Apple Inc.),
   DMI_MATCH(DMI_PRODUCT_NAME, MacBookPro8,2),
   },
   },
 + {
 + .callback = intel_dual_link_lvds_callback,
 + .ident = Apple MacBook Pro 15\ (2012),
 + .matches = {
 + DMI_MATCH(DMI_SYS_VENDOR, Apple Inc.),
 + DMI_MATCH(DMI_PRODUCT_NAME, MacBookPro9,1),
 + },
 + },
   { } /* terminating entry */
  };
  
 @@ -847,6 +863,11 @@ static bool compute_is_dual_link_lvds(struct 
 intel_lvds_encoder *lvds_encoder)
   if (i915.lvds_channel_mode  0)
   return i915.lvds_channel_mode == 2;
  
 + /* single channel LVDS is limited to 112 kHz */
 + if (lvds_encoder-attached_connector-base.panel.fixed_mode-clock
 +  112999)
 + return true;
 +
   if (dmi_check_system(intel_dual_link_lvds))
   return true;
  
 @@ -1104,6 +1125,8 @@ void intel_lvds_init(struct drm_device *dev)
  out:
   mutex_unlock(dev-mode_config.mutex);
  
 + intel_panel_init(intel_connector-panel, fixed_mode, downclock_mode);
 +
   lvds_encoder-is_dual_link = compute_is_dual_link_lvds(lvds_encoder);
   DRM_DEBUG_KMS(detected %s-link lvds configuration\n,
 lvds_encoder-is_dual_link ? dual : single);
 @@ -1118,7 +1141,6 @@ out:
   }
   drm_connector_register(connector);
  
 - intel_panel_init(intel_connector-panel, fixed_mode, downclock_mode);
   intel_panel_setup_backlight(connector, INVALID_PIPE);
  
   return;
 -- 
 1.8.5.2 (Apple Git-48)

 ___
 Intel-gfx mailing list
 Intel-gfx@lists.freedesktop.org
 http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Jani Nikula, Intel Open Source Technology Center
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH] drm/i915: Add missing MacBook Pro models with dual channel LVDS

2015-04-16 Thread Lukas Wunner
Single channel LVDS maxes out at 112 MHz. All 17 models with i915
graphics had a resolution of 1920x1200 (193 MHz), necessitating dual
channel LVDS. The 15 pre-retina models had either 1440x900 (106 MHz)
or 1680x1050 (119 MHz), both versions used dual channel LVDS even
though the smaller one would have fit into a single channel.

Signed-off-by: Lukas Wunner lu...@wunner.de
Tested-by: Lukas Wunner lu...@wunner.de
---
 drivers/gpu/drm/i915/intel_lvds.c | 26 --
 1 file changed, 24 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_lvds.c 
b/drivers/gpu/drm/i915/intel_lvds.c
index 071b96d..417ccab 100644
--- a/drivers/gpu/drm/i915/intel_lvds.c
+++ b/drivers/gpu/drm/i915/intel_lvds.c
@@ -812,12 +812,28 @@ static int intel_dual_link_lvds_callback(const struct 
dmi_system_id *id)
 static const struct dmi_system_id intel_dual_link_lvds[] = {
{
.callback = intel_dual_link_lvds_callback,
-   .ident = Apple MacBook Pro (Core i5/i7 Series),
+   .ident = Apple MacBook Pro 15\ (2010),
+   .matches = {
+   DMI_MATCH(DMI_SYS_VENDOR, Apple Inc.),
+   DMI_MATCH(DMI_PRODUCT_NAME, MacBookPro6,2),
+   },
+   },
+   {
+   .callback = intel_dual_link_lvds_callback,
+   .ident = Apple MacBook Pro 15\ (2011),
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, Apple Inc.),
DMI_MATCH(DMI_PRODUCT_NAME, MacBookPro8,2),
},
},
+   {
+   .callback = intel_dual_link_lvds_callback,
+   .ident = Apple MacBook Pro 15\ (2012),
+   .matches = {
+   DMI_MATCH(DMI_SYS_VENDOR, Apple Inc.),
+   DMI_MATCH(DMI_PRODUCT_NAME, MacBookPro9,1),
+   },
+   },
{ } /* terminating entry */
 };
 
@@ -847,6 +863,11 @@ static bool compute_is_dual_link_lvds(struct 
intel_lvds_encoder *lvds_encoder)
if (i915.lvds_channel_mode  0)
return i915.lvds_channel_mode == 2;
 
+   /* single channel LVDS is limited to 112 kHz */
+   if (lvds_encoder-attached_connector-base.panel.fixed_mode-clock
+112999)
+   return true;
+
if (dmi_check_system(intel_dual_link_lvds))
return true;
 
@@ -1104,6 +1125,8 @@ void intel_lvds_init(struct drm_device *dev)
 out:
mutex_unlock(dev-mode_config.mutex);
 
+   intel_panel_init(intel_connector-panel, fixed_mode, downclock_mode);
+
lvds_encoder-is_dual_link = compute_is_dual_link_lvds(lvds_encoder);
DRM_DEBUG_KMS(detected %s-link lvds configuration\n,
  lvds_encoder-is_dual_link ? dual : single);
@@ -1118,7 +1141,6 @@ out:
}
drm_connector_register(connector);
 
-   intel_panel_init(intel_connector-panel, fixed_mode, downclock_mode);
intel_panel_setup_backlight(connector, INVALID_PIPE);
 
return;
-- 
1.8.5.2 (Apple Git-48)

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/i915: Add missing MacBook Pro models with dual channel LVDS

2015-04-14 Thread Lukas Wunner
Hi Jani,

 I think this begs the question, why don't we assume dual link lvds when
 we know the native mode of the panel necessitates it?

Yes that's a great idea, that way we can avoid hardcoding the 17 models.
Coming up in a separate e-mail is a new version of the patch.

Single channel LVDS maxes out at 112 MHz, according to section 2.3
of this document:
https://01.org/linuxgraphics/sites/default/files/documentation/ivb_ihd_os_vol3_part4.pdf

The resolution of the 17 models -- 1920x1200 -- always needs more
bandwidth than 112 MHz (at 60 Hz it's 193 MHz), thus requires
dual channels.

The 15 models are a bit more complicated: By default they shipped
with 1440x900, that's 106 MHz so single channel LVDS would be
sufficient. As a BTO option however they were available with
1680x1050, that's 119 MHz and requires dual channels.

It turns out Apple apparently used dual channels on *both* 15
versions, presumably to reduce the number of different parts,
i.e. use identical mainboards and display cabling on both
versions and the only differing component is the panel.

E.g. the Chi Mei N154C6-L04 panel with 1440x900...
http://www.ebay.com/itm/-/400690878560
... is a replacement panel for all A1286 models, and that model
number encompasses the MacBookPro6,2 / 8,2 / 9,1...
http://www.everymac.com/ultimate-mac-lookup/?search_keywords=A1286
... and page 17 of the panel's datasheet shows it's driven with
dual channel LVDS:
http://www.taopanel.com/chimei/datasheet/N154C6-L04.pdf

Those three 15 models, MacBookPro6,2 / 8,2 / 9,1, are the only
ones with i915 graphics and dual channel LVDS, so that list should
be complete. And the 8,2 is already in intel_lvds.c.

Tested on a MacBookPro9,1 with 1680x1050.

Kind regards,

Lukas
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH] drm/i915: Add missing MacBook Pro models with dual channel LVDS

2015-04-13 Thread Lukas Wunner
All 17 models with i915 graphics had a resolution of 1920x1200,
necessitating dual channel LVDS. The 15 pre-retina models had
up to 1680x1050, hence used dual channel LVDS as well.

Reference for MacBookPro9,1 (also tested by myself):
http://ubuntuforums.org/showthread.php?t=2224567

Reference for MacBookPro8,2 / 8,3:
https://wiki.archlinux.org/index.php/MacBookPro8,1/8,2/8,3_(2011)

Reference for MacBookPro6,2:
https://bbs.archlinux.org/viewtopic.php?id=185770

Signed-off-by: Lukas Wunner lu...@wunner.de
---
 drivers/gpu/drm/i915/intel_lvds.c | 34 +-
 1 file changed, 33 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_lvds.c 
b/drivers/gpu/drm/i915/intel_lvds.c
index 071b96d..ee1000f 100644
--- a/drivers/gpu/drm/i915/intel_lvds.c
+++ b/drivers/gpu/drm/i915/intel_lvds.c
@@ -812,12 +812,44 @@ static int intel_dual_link_lvds_callback(const struct 
dmi_system_id *id)
 static const struct dmi_system_id intel_dual_link_lvds[] = {
{
.callback = intel_dual_link_lvds_callback,
-   .ident = Apple MacBook Pro (Core i5/i7 Series),
+   .ident = Apple MacBook Pro 17\ (2010),
+   .matches = {
+   DMI_MATCH(DMI_SYS_VENDOR, Apple Inc.),
+   DMI_MATCH(DMI_PRODUCT_NAME, MacBookPro6,1),
+   },
+   },
+   {
+   .callback = intel_dual_link_lvds_callback,
+   .ident = Apple MacBook Pro 15\ (2010),
+   .matches = {
+   DMI_MATCH(DMI_SYS_VENDOR, Apple Inc.),
+   DMI_MATCH(DMI_PRODUCT_NAME, MacBookPro6,2),
+   },
+   },
+   {
+   .callback = intel_dual_link_lvds_callback,
+   .ident = Apple MacBook Pro 15\ (2011),
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, Apple Inc.),
DMI_MATCH(DMI_PRODUCT_NAME, MacBookPro8,2),
},
},
+   {
+   .callback = intel_dual_link_lvds_callback,
+   .ident = Apple MacBook Pro 17\ (2011),
+   .matches = {
+   DMI_MATCH(DMI_SYS_VENDOR, Apple Inc.),
+   DMI_MATCH(DMI_PRODUCT_NAME, MacBookPro8,3),
+   },
+   },
+   {
+   .callback = intel_dual_link_lvds_callback,
+   .ident = Apple MacBook Pro 15\ (2012),
+   .matches = {
+   DMI_MATCH(DMI_SYS_VENDOR, Apple Inc.),
+   DMI_MATCH(DMI_PRODUCT_NAME, MacBookPro9,1),
+   },
+   },
{ } /* terminating entry */
 };
 
-- 
1.8.5.2 (Apple Git-48)

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/i915: Add missing MacBook Pro models with dual channel LVDS

2015-04-13 Thread Jani Nikula

[dunno what the distribution was originally; adding intel-gfx]

On Sun, 12 Apr 2015, Lukas Wunner lu...@wunner.de wrote:
 All 17 models with i915 graphics had a resolution of 1920x1200,
 necessitating dual channel LVDS. The 15 pre-retina models had
 up to 1680x1050, hence used dual channel LVDS as well.

I think this begs the question, why don't we assume dual link lvds when
we know the native mode of the panel necessitates it?

 Reference for MacBookPro9,1 (also tested by myself):
 http://ubuntuforums.org/showthread.php?t=2224567

 Reference for MacBookPro8,2 / 8,3:
 https://wiki.archlinux.org/index.php/MacBookPro8,1/8,2/8,3_(2011)

 Reference for MacBookPro6,2:
 https://bbs.archlinux.org/viewtopic.php?id=185770

I really wish the references were more conclusive on the dual channel
parameter, or that we had Tested-by on the patch with the module
parameter dropped. We don't have much chances for testing this, but if
the patch is valid, it's definitely cc: stable material.

As is, applying this gives me an uneasy feeling. :(

BR,
Jani.



 Signed-off-by: Lukas Wunner lu...@wunner.de
 ---
  drivers/gpu/drm/i915/intel_lvds.c | 34 +-
  1 file changed, 33 insertions(+), 1 deletion(-)

 diff --git a/drivers/gpu/drm/i915/intel_lvds.c 
 b/drivers/gpu/drm/i915/intel_lvds.c
 index 071b96d..ee1000f 100644
 --- a/drivers/gpu/drm/i915/intel_lvds.c
 +++ b/drivers/gpu/drm/i915/intel_lvds.c
 @@ -812,12 +812,44 @@ static int intel_dual_link_lvds_callback(const struct 
 dmi_system_id *id)
  static const struct dmi_system_id intel_dual_link_lvds[] = {
   {
   .callback = intel_dual_link_lvds_callback,
 - .ident = Apple MacBook Pro (Core i5/i7 Series),
 + .ident = Apple MacBook Pro 17\ (2010),
 + .matches = {
 + DMI_MATCH(DMI_SYS_VENDOR, Apple Inc.),
 + DMI_MATCH(DMI_PRODUCT_NAME, MacBookPro6,1),
 + },
 + },
 + {
 + .callback = intel_dual_link_lvds_callback,
 + .ident = Apple MacBook Pro 15\ (2010),
 + .matches = {
 + DMI_MATCH(DMI_SYS_VENDOR, Apple Inc.),
 + DMI_MATCH(DMI_PRODUCT_NAME, MacBookPro6,2),
 + },
 + },
 + {
 + .callback = intel_dual_link_lvds_callback,
 + .ident = Apple MacBook Pro 15\ (2011),
   .matches = {
   DMI_MATCH(DMI_SYS_VENDOR, Apple Inc.),
   DMI_MATCH(DMI_PRODUCT_NAME, MacBookPro8,2),
   },
   },
 + {
 + .callback = intel_dual_link_lvds_callback,
 + .ident = Apple MacBook Pro 17\ (2011),
 + .matches = {
 + DMI_MATCH(DMI_SYS_VENDOR, Apple Inc.),
 + DMI_MATCH(DMI_PRODUCT_NAME, MacBookPro8,3),
 + },
 + },
 + {
 + .callback = intel_dual_link_lvds_callback,
 + .ident = Apple MacBook Pro 15\ (2012),
 + .matches = {
 + DMI_MATCH(DMI_SYS_VENDOR, Apple Inc.),
 + DMI_MATCH(DMI_PRODUCT_NAME, MacBookPro9,1),
 + },
 + },
   { } /* terminating entry */
  };
  
 -- 
 1.8.5.2 (Apple Git-48)

 ___
 Intel-gfx mailing list
 Intel-gfx@lists.freedesktop.org
 http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Jani Nikula, Intel Open Source Technology Center
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx