• Thomas Gerlach's avatar
    drivers/video/efifb.c: support framebuffer for NVIDIA 9400M in MacBook Pro 5,1 · 8a3bdfe6
    Thomas Gerlach authored
    Description of patch:
    ---------------------
    
    This is a patch for the EFI framebuffer driver to enable the framebuffer
    of the NVIDIA 9400M as found in MacBook Pro (MBP) 5,1 and up.  The
    framebuffer of the NVIDIA graphic cards are located at the following
    addresses in memory:
    
    9400M:    0xC0010000
    9600M GT: 0xB0030000
    
    The patch delivered right here only provides the memory location of the
    framebuffer of the 9400M device.  The 9600M GT is not covered.  It is
    assumed that the 9400M is used when powered up the MBP.
    
    The information which device is currently powered and in use is stored in
    the 64 bytes large EFI variable "gpu-power-prefs".  More specifically,
    byte 0x3B indicates whether 9600M GT (0x00) or 9400M (0x01) is online.
    
    The PCI bus IDs are the following:
    9400M:    PCI 03:00:00
    9600M GT: PCI 02:00:00
    
    The EFI variables can be easily read-out and manipulated with "rEFIt", an
    MBP specific bootloader tool.  For more information on how handle rEFIt
    and EFI variables please consult "http://refit.sourceforge.net" and
    "http://ubuntuforums.org/archive/index.php/t-1076879.html".
    
    IMPORTANT NOTE: The information on how to activate the 9400M device given
    at "ubuntuforums.org" is not correct, since it states
    
    gpu-power-prefs[0x3B] = 0x00 -> 9400M (PCI 02:00:00)
    gpu-power-prefs[0x3B] = 0x01 -> 9600M GT (PCI 03:00:00)
    
    Actually, the assignment of the values and the PCI bus IDs are swapped.
    
    Suggestions:
    ------------
    
    To cover framebuffers of both 9400M and 9600M GT, I would suggest to
    implement a conditional on "gpu-power-prefs".  Depending on the value of
    byte 0x3B, the according framebuffer is selected.  However, this requires
    kernel access to the EFI variables.
    
    [akpm@linux-foundation.org: rename optname, per Peter Jones]
    Signed-off-by: default avatarThomas Gerlach <t.m.gerlach@freenet.de>
    Acked-by: default avatarPeter Jones <pjones@redhat.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    8a3bdfe6
efifb.c 12.9 KB