NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

xsrc/42913: Xorg on MacMini/PPC, hangup after shutdown, fix patch.



>Number:         42913
>Category:       xsrc
>Synopsis:       Xorg on MacMini/PPC, hangup after shutdown, fix patch.
>Confidential:   no
>Severity:       critical
>Priority:       low
>Responsible:    xsrc-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Mar 02 18:50:00 +0000 2010
>Originator:     Hiroaki Urata
>Release:        CURRENT
>Organization:
>Environment:
NetBSD hirobento 5.99.24 NetBSD 5.99.24 (MYKERNEL) #5: Mon Mar  1 06:47:34 JST 
2010  root@hirobento:/usr/obj/sys/arch/macppc/compile/MYKERNEL macppc

>Description:
I use macppc on Mac Mini.

After Run Xserver, hangup all System when Run "kill X".

I make fix patch, quick hack.

P.S.
must add to "Option Device" in /etc/X11/Xorg.conf.

Section "Device"
        Identifier  "Card0"
        Driver      "radeon"
        BusID       "PCI:0:16:0"
        Option     "MacModel" "mini-internal"
EndSection


>How-To-Repeat:

>Fix:
Index: ./external/mit/xf86-video-ati/dist/src/legacy_crtc.c
===================================================================
RCS file: /cvsroot/xsrc/external/mit/xf86-video-ati/dist/src/legacy_crtc.c,v
retrieving revision 1.1.1.3
diff -u -8 -p -r1.1.1.3 legacy_crtc.c
--- ./external/mit/xf86-video-ati/dist/src/legacy_crtc.c        9 Nov 2009 
00:51:53 -0000       1.1.1.3
+++ ./external/mit/xf86-video-ati/dist/src/legacy_crtc.c        2 Mar 2010 
18:13:45 -0000
@@ -300,17 +300,18 @@ RADEONRestorePLLRegisters(ScrnInfoPtr pS
                          RADEONSavePtr restore)
 {
     RADEONInfoPtr  info       = RADEONPTR(pScrn);
     unsigned char *RADEONMMIO = info->MMIO;
     uint8_t pllGain;
 
 #if defined(__powerpc__)
     /* apparently restoring the pll causes a hang??? */
-    if (info->MacModel == RADEON_MAC_IBOOK)
+    if (info->MacModel == RADEON_MAC_IBOOK
+       || info->MacModel == RADEON_MAC_MINI_INTERNAL)
        return;
 #endif
 
     pllGain = RADEONComputePLLGain(info->pll.reference_freq,
                                   restore->ppll_ref_div & 
RADEON_PPLL_REF_DIV_MASK,
                                   restore->ppll_div_3 & 
RADEON_PPLL_FB3_DIV_MASK);
 
     if (info->IsMobility) {
@@ -1237,17 +1238,18 @@ RADEONInitPLLRegisters(ScrnInfoPtr pScrn
                   save->feedback_div,
                   save->reference_div,
                   save->post_div);
 
     save->ppll_ref_div   = save->reference_div;
 
 #if defined(__powerpc__)
     /* apparently programming this otherwise causes a hang??? */
-    if (info->MacModel == RADEON_MAC_IBOOK)
+    if (info->MacModel == RADEON_MAC_IBOOK ||
+       info->MacModel == RADEON_MAC_MINI_INTERNAL)
        save->ppll_div_3 = 0x000600ad;
     else
 #endif
     save->ppll_div_3     = (save->feedback_div | (post_div->bitvalue << 16));
 
     save->htotal_cntl    = mode->HTotal & 0x7;
 
     save->vclk_ecp_cntl = (info->SavedReg->vclk_ecp_cntl &



Home | Main Index | Thread Index | Old Index