| From 3916e3fd81021fb795bfbdb17f375b6b3685bced Mon Sep 17 00:00:00 2001 |
| From: Lukas Wunner <lukas@wunner.de> |
| Date: Mon, 4 May 2015 15:06:49 +0200 |
| Subject: drm/i915: Add missing MacBook Pro models with dual channel LVDS |
| |
| From: Lukas Wunner <lukas@wunner.de> |
| |
| commit 3916e3fd81021fb795bfbdb17f375b6b3685bced upstream. |
| |
| Single channel LVDS maxes out at 112 MHz. The 15" pre-retina models |
| shipped with 1440x900 (106 MHz) by default or 1680x1050 (119 MHz) |
| as a BTO option, both versions used dual channel LVDS even though |
| the smaller one would have fit into a single channel. |
| |
| Notes: |
| Bug report showing that the MacBookPro8,2 with 1440x900 uses dual |
| channel LVDS (this lead to it being hardcoded in intel_lvds.c by |
| Daniel Vetter with commit 618563e3945b9d0864154bab3c607865b557cecc): |
| https://bugzilla.kernel.org/show_bug.cgi?id=42842 |
| |
| If i915.lvds_channel_mode=2 is missing even though the machine needs |
| it, every other vertical line is white and consequently, only the left |
| half of the screen is visible (verified by myself on a MacBookPro9,1). |
| |
| Forum posting concerning a MacBookPro6,2 with 1440x900, author is |
| using i915.lvds_channel_mode=2 on the kernel command line, proving |
| that the machine uses dual channels: |
| https://bbs.archlinux.org/viewtopic.php?id=185770 |
| |
| Chi Mei N154C6-L04 with 1440x900 is a replacement panel for all |
| MacBook Pro "A1286" models, and that model number encompasses the |
| MacBookPro6,2 / 8,2 / 9,1. Page 17 of the panel's datasheet shows it's |
| driven with dual channel LVDS: |
| http://www.ebay.com/itm/-/400690878560 |
| http://www.everymac.com/ultimate-mac-lookup/?search_keywords=A1286 |
| 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. |
| |
| Possible motivation to use dual channel LVDS even on the 1440x900 |
| models: Reduce the number of different parts, i.e. use identical logic |
| boards and display cabling on both versions and the only differing |
| component is the panel. |
| |
| Signed-off-by: Lukas Wunner <lukas@wunner.de> |
| Acked-by: Jani Nikula <jani.nikula@intel.com> |
| [Jani: included notes in the commit message for posterity] |
| Signed-off-by: Jani Nikula <jani.nikula@intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/gpu/drm/i915/intel_lvds.c | 18 +++++++++++++++++- |
| 1 file changed, 17 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/gpu/drm/i915/intel_lvds.c |
| +++ b/drivers/gpu/drm/i915/intel_lvds.c |
| @@ -1007,12 +1007,28 @@ static int intel_dual_link_lvds_callback |
| 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 */ |
| }; |
| |