* [PATCH] drm/i915: Add missing MacBook Pro models with dual channel LVDS
@ 2015-04-12 19:10 Lukas Wunner
2015-04-29 14:21 ` Jani Nikula
0 siblings, 1 reply; 10+ messages in thread
From: Lukas Wunner @ 2015-04-12 19:10 UTC (permalink / raw)
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 <lukas@wunner.de>
Tested-by: Lukas Wunner <lukas@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
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH] drm/i915: Add missing MacBook Pro models with dual channel LVDS
2015-04-12 19:10 [PATCH] drm/i915: Add missing MacBook Pro models with dual channel LVDS Lukas Wunner
@ 2015-04-29 14:21 ` Jani Nikula
2015-04-30 9:42 ` Joonas Lahtinen
0 siblings, 1 reply; 10+ messages in thread
From: Jani Nikula @ 2015-04-29 14:21 UTC (permalink / raw)
To: Lukas Wunner, intel-gfx
On Sun, 12 Apr 2015, Lukas Wunner <lukas@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 <lukas@wunner.de>
> Tested-by: Lukas Wunner <lukas@wunner.de>
Acked-by: Jani Nikula <jani.nikula@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
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] drm/i915: Add missing MacBook Pro models with dual channel LVDS
2015-04-29 14:21 ` Jani Nikula
@ 2015-04-30 9:42 ` Joonas Lahtinen
2015-04-30 13:28 ` [PATCH v3] " Lukas Wunner
0 siblings, 1 reply; 10+ messages in thread
From: Joonas Lahtinen @ 2015-04-30 9:42 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx
On ke, 2015-04-29 at 17:21 +0300, Jani Nikula wrote:
> On Sun, 12 Apr 2015, Lukas Wunner <lukas@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 <lukas@wunner.de>
> > Tested-by: Lukas Wunner <lukas@wunner.de>
>
> Acked-by: Jani Nikula <jani.nikula@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
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v3] drm/i915: Add missing MacBook Pro models with dual channel LVDS
2015-04-30 9:42 ` Joonas Lahtinen
@ 2015-04-30 13:28 ` Lukas Wunner
2015-04-30 14:15 ` Ville Syrjälä
0 siblings, 1 reply; 10+ messages in thread
From: Lukas Wunner @ 2015-04-30 13:28 UTC (permalink / raw)
To: Joonas Lahtinen; +Cc: intel-gfx
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.
v2: Assume dual channel LVDS if the pixel clock necessitates it,
eliminating the need to hardcode 17" models, suggested by Jani Nikula.
v3: Fix typo, thanks Joonas Lahtinen.
Signed-off-by: Lukas Wunner <lukas@wunner.de>
Tested-by: Lukas Wunner <lukas@wunner.de>
Acked-by: Jani Nikula <jani.nikula@intel.com>
Cc: stable@vger.kernel.org
---
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 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
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v3] drm/i915: Add missing MacBook Pro models with dual channel LVDS
2015-04-30 13:28 ` [PATCH v3] " Lukas Wunner
@ 2015-04-30 14:15 ` Ville Syrjälä
2015-05-04 14:52 ` Lukas Wunner
0 siblings, 1 reply; 10+ messages in thread
From: Ville Syrjälä @ 2015-04-30 14:15 UTC (permalink / raw)
To: Lukas Wunner; +Cc: intel-gfx
On Thu, Apr 30, 2015 at 03:28:11PM +0200, Lukas Wunner 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.
>
> v2: Assume dual channel LVDS if the pixel clock necessitates it,
> eliminating the need to hardcode 17" models, suggested by Jani Nikula.
I would suggest splitting that into a separate patch. Otherwise it's
going to harder to revert either change separately, should the need
arise. So that part is
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
I have no clue about the Mac stuff so won't pretend to say anything
about that.
>
> v3: Fix typo, thanks Joonas Lahtinen.
>
> Signed-off-by: Lukas Wunner <lukas@wunner.de>
> Tested-by: Lukas Wunner <lukas@wunner.de>
> Acked-by: Jani Nikula <jani.nikula@intel.com>
> Cc: stable@vger.kernel.org
> ---
> 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 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
--
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v3] drm/i915: Add missing MacBook Pro models with dual channel LVDS
2015-04-30 14:15 ` Ville Syrjälä
@ 2015-05-04 14:52 ` Lukas Wunner
2015-05-05 11:26 ` Jani Nikula
0 siblings, 1 reply; 10+ messages in thread
From: Lukas Wunner @ 2015-05-04 14:52 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: Jani Nikula, intel-gfx
Hi Ville,
> I would suggest splitting that into a separate patch. Otherwise it's
> going to harder to revert either change separately, should the need
> arise. So that part is
> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Okay, commit split in two as requested.
Question:
Daniel Vetter hardcoded the MacBookPro8,2 with commit
618563e3945b9d0864154bab3c607865b557cecc, noting:
"Add a dual link lvds quirk for MacBook Pro 8,2
When booting with EFI, Apple botched this one up."
Nouveau recognizes just fine that dual channel LVDS is necessary,
it seems to retrieve this information from VBIOS.
On the other hand, when i915 initializes, it logs the following
complaint (on a MacBookPro9,1): "[drm] failed to find VBIOS tables".
Would it be possible to somehow point i915 to the correct location
where it can find the VBIOS? Or can we somehow copy the VBIOS nouveau
is using? I'm wondering, even if we had to hardcode memory locations
to do that, wouldn't that make more sense rather than hardcoding the
DMI IDs?
Thanks,
Lukas
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v3] drm/i915: Add missing MacBook Pro models with dual channel LVDS
2015-05-04 14:52 ` Lukas Wunner
@ 2015-05-05 11:26 ` Jani Nikula
0 siblings, 0 replies; 10+ messages in thread
From: Jani Nikula @ 2015-05-05 11:26 UTC (permalink / raw)
To: Lukas Wunner, Ville Syrjälä; +Cc: intel-gfx
On Mon, 04 May 2015, Lukas Wunner <lukas@wunner.de> wrote:
> Hi Ville,
>
>> I would suggest splitting that into a separate patch. Otherwise it's
>> going to harder to revert either change separately, should the need
>> arise. So that part is
>> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Okay, commit split in two as requested.
I'll look into them, thanks.
> Question:
>
> Daniel Vetter hardcoded the MacBookPro8,2 with commit
> 618563e3945b9d0864154bab3c607865b557cecc, noting:
> "Add a dual link lvds quirk for MacBook Pro 8,2
> When booting with EFI, Apple botched this one up."
>
> Nouveau recognizes just fine that dual channel LVDS is necessary,
> it seems to retrieve this information from VBIOS.
>
> On the other hand, when i915 initializes, it logs the following
> complaint (on a MacBookPro9,1): "[drm] failed to find VBIOS tables".
>
> Would it be possible to somehow point i915 to the correct location
> where it can find the VBIOS? Or can we somehow copy the VBIOS nouveau
> is using? I'm wondering, even if we had to hardcode memory locations
> to do that, wouldn't that make more sense rather than hardcoding the
> DMI IDs?
These are vendor specific bios tables we're talking about. We couldn't
readily use it anyway.
I don't really know, but looks like OS X gets the IGD info from
somewhere other than the usual VBT Windows and Linux use, while the
nvidia VBIOS is the same also on OS X. *shrug*
BR,
Jani.
>
> Thanks,
>
> Lukas
--
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH] drm/i915: Add missing MacBook Pro models with dual channel LVDS
@ 2015-04-12 19:10 Lukas Wunner
2015-04-13 13:36 ` Jani Nikula
0 siblings, 1 reply; 10+ messages in thread
From: Lukas Wunner @ 2015-04-12 19:10 UTC (permalink / raw)
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 <lukas@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
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH] drm/i915: Add missing MacBook Pro models with dual channel LVDS
2015-04-12 19:10 [PATCH] " Lukas Wunner
@ 2015-04-13 13:36 ` Jani Nikula
2015-04-14 20:19 ` Lukas Wunner
0 siblings, 1 reply; 10+ messages in thread
From: Jani Nikula @ 2015-04-13 13:36 UTC (permalink / raw)
To: Lukas Wunner, intel-gfx
[dunno what the distribution was originally; adding intel-gfx]
On Sun, 12 Apr 2015, Lukas Wunner <lukas@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 <lukas@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
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] drm/i915: Add missing MacBook Pro models with dual channel LVDS
2015-04-13 13:36 ` Jani Nikula
@ 2015-04-14 20:19 ` Lukas Wunner
0 siblings, 0 replies; 10+ messages in thread
From: Lukas Wunner @ 2015-04-14 20:19 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx
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
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2015-05-05 11:24 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-04-12 19:10 [PATCH] drm/i915: Add missing MacBook Pro models with dual channel LVDS Lukas Wunner
2015-04-29 14:21 ` Jani Nikula
2015-04-30 9:42 ` Joonas Lahtinen
2015-04-30 13:28 ` [PATCH v3] " Lukas Wunner
2015-04-30 14:15 ` Ville Syrjälä
2015-05-04 14:52 ` Lukas Wunner
2015-05-05 11:26 ` Jani Nikula
-- strict thread matches above, loose matches on Subject: below --
2015-04-12 19:10 [PATCH] " Lukas Wunner
2015-04-13 13:36 ` Jani Nikula
2015-04-14 20:19 ` Lukas Wunner
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.