From: Seth Forshee <seth.forshee@canonical.com>
To: Ramkumar Ramachandra <artagnon@gmail.com>
Cc: LKML <linux-kernel@vger.kernel.org>,
Andreas Heider <andreas@meetr.de>,
Chris Wilson <chris@chris-wilson.co.uk>
Subject: Re: [PATCH 0/4] Get EDID late for VGA switcheroo
Date: Tue, 7 Jan 2014 07:54:09 -0600 [thread overview]
Message-ID: <20140107135409.GA21190@thinkpad-t410> (raw)
In-Reply-To: <1389088723-30959-1-git-send-email-artagnon@gmail.com>
On Tue, Jan 07, 2014 at 03:28:39PM +0530, Ramkumar Ramachandra wrote:
> Hi,
>
> VGA switcheroo doesn't work on my 2013 MBP, and I'm trying to fix
> it. From what I've gathered from previous patches, it seems that the
> EDID is not computed at boottime, because LVDS isn't connected to the
> i915 card (and is connected to the nouveau card instead). So, here's a
> series to get switcheroo-reprobe to call get-edid. I think it's a step
> in the right direction, although I think more stuff is required to fix
> the issue.
It's been a while since I've thought about this, so my memory is
suspect. It's also a bit dated, and I haven't kept up to know what's
changed in since then. But I don't think just reading the mode on
reprobe gets you very far.
These are the main problems as I remember them:
1. On many Macbook models the firmware isn't putting LVDS information
in opregion. Reading the EDID during device initialization also
fails since the DDC is muxed to the DGPU, so i915 concludes there's
no LVDS and doesn't register an LVDS connector at all. I also think
it was impossible to register a new connector at a later time,
though I'm not sure about that.
2. If i915 is forced to register the LVDS connector (say via a quirk)
it still may not know the panel mode and guesses something rather
conservative. This mode it assumes is used to allocate framebuffer
memory, which is likely to end up being too small, and I don't think
there was any support for resizing it later. This resulted in VTs
not working because there isn't enough framebuffer memory for the
mode they're trying to use.
3. So what is really wanted is to be able to mux just the DDC over to
the IGPU when the device is initialized to read the panel mode. One
possible problem is that the hw might not support muxing the DDC
separately, but Apple hw does so we'll ignore that for now. The
basic code for muxing only the DDC isn't too difficult, and I had
some patches for this at one point. The problem is that the handler
must register with vga_switcheroo before this is possible, so
there's a module initialization ordering issue that wasn't easily
solved. Maybe now it would be possible to do something with
EPROBE_DEFER, though I'm not sure how i915 would know whether or not
it should wait for a switcheroo handler.
I just didn't have enough time to spend on this issue to work through
all of this. I also never looked at doing this with eDP, which is what I
thought all the Macbooks have been using for the last couple of years.
Are you sure your machine uses LVDS and not eDP?
Seth
next prev parent reply other threads:[~2014-01-07 13:54 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-07 9:58 [PATCH 0/4] Get EDID late for VGA switcheroo Ramkumar Ramachandra
2014-01-07 9:58 ` [PATCH 1/4] drm/i915: add support for vga_switcheroo reprobe Ramkumar Ramachandra
2014-01-07 10:43 ` Chris Wilson
2014-01-07 10:53 ` Ramkumar Ramachandra
2014-01-07 9:58 ` [PATCH 2/4] drm/i915: factor out intel_lvds_get_edid() Ramkumar Ramachandra
2014-01-07 9:58 ` [PATCH 3/4] drm/i915: prepare intel_lvds_get_edid() for multiple calls Ramkumar Ramachandra
2014-01-07 9:58 ` [PATCH 4/4] drm/i915: check LVDS for EDID on GPU switches Ramkumar Ramachandra
2014-01-07 10:45 ` Chris Wilson
2014-01-07 11:12 ` Ramkumar Ramachandra
2014-01-07 11:48 ` Chris Wilson
2014-01-07 13:05 ` Ramkumar Ramachandra
2014-01-07 13:14 ` Chris Wilson
2014-01-07 13:54 ` Seth Forshee [this message]
2014-01-07 14:30 ` [PATCH 0/4] Get EDID late for VGA switcheroo Ramkumar Ramachandra
2014-01-07 14:42 ` andreas
2014-01-07 14:58 ` Ramkumar Ramachandra
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140107135409.GA21190@thinkpad-t410 \
--to=seth.forshee@canonical.com \
--cc=andreas@meetr.de \
--cc=artagnon@gmail.com \
--cc=chris@chris-wilson.co.uk \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox