Message ID | 20150413121635.02FEF6E3E1@gabe.freedesktop.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
[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
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
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 */ };
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(-)