Bug 14921 - NV25 doesn't work after commit 71adbfc874517efbba8b9f7c3f90baad0d7fb707
Summary: NV25 doesn't work after commit 71adbfc874517efbba8b9f7c3f90baad0d7fb707
Status: RESOLVED FIXED
Alias: None
Product: xorg
Classification: Unclassified
Component: Driver/nouveau (show other bugs)
Version: unspecified
Hardware: Other All
: medium normal
Assignee: Nouveau Project
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-03-09 10:23 UTC by Peter Winters
Modified: 2008-03-11 09:50 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments
Move AGP reset, and cycle PGRAPH (2.77 KB, patch)
2008-03-10 17:40 UTC, Stuart Bennett
no flags Details | Splinter Review

Description Peter Winters 2008-03-09 10:23:14 UTC
After drm commit 71adbfc874517efbba8b9f7c3f90baad0d7fb707 nouveau no longer works on my nv25, even with the fix in commit 5f15f317fb304f6a2321c033d401f603b365f2d0 it still doesn't work. Commenting out:

NV_WRITE(NV04_PBUS_PCI_NV_19, saved_pci_nv_19 & 0xfffff0ff);

makes it work.

03:00.0 VGA Compatible controller [0300]: nVidia Corporation NV25 [GeForce4 Ti 4400] [10de:0251] (rev a2)
Comment 1 Stuart Bennett 2008-03-09 19:46:00 UTC
Does changing NV_WRITE(NV04_PBUS_PCI_NV_19, saved_pci_nv_19 & 0xfffff0ff); to NV_WRITE(NV04_PBUS_PCI_NV_19, saved_pci_nv_19 & 0xfffffeff); make it work?
Comment 2 Peter Winters 2008-03-10 05:53:20 UTC
(In reply to comment #1)
> Does changing NV_WRITE(NV04_PBUS_PCI_NV_19, saved_pci_nv_19 & 0xfffff0ff); to
> NV_WRITE(NV04_PBUS_PCI_NV_19, saved_pci_nv_19 & 0xfffffeff); make it work?
> 

Nope, still the same problem.
Comment 3 Stuart Bennett 2008-03-10 09:17:05 UTC
Any change by doing either or both of these blocks of changes?

diff --git a/shared-core/nv04_mc.c b/shared-core/nv04_mc.c
index 766f3a3..43131f1 100644
--- a/shared-core/nv04_mc.c
+++ b/shared-core/nv04_mc.c
@@ -12,6 +12,10 @@ nv04_mc_init(struct drm_device *dev)
        saved_pci_nv_1 = NV_READ(NV04_PBUS_PCI_NV_1);
        saved_pci_nv_19 = NV_READ(NV04_PBUS_PCI_NV_19);

+       NV_WRITE(0x108c, 0x51);
+       NV_WRITE(0x1830, 0);
+       NV_WRITE(0x180c, 0xf800);
+
        /* clear busmaster bit */
        NV_WRITE(NV04_PBUS_PCI_NV_1, saved_pci_nv_1 & ~(0x00000001 << 2));
        /* clear SBA and AGP bits */
@@ -20,6 +24,8 @@ nv04_mc_init(struct drm_device *dev)
        /* Power up everything, resetting each individual unit will
         * be done later if needed.
         */
+       NV_WRITE(NV03_PMC_ENABLE, 0xFFFF0FFF);
+       udelay(400);
        NV_WRITE(NV03_PMC_ENABLE, 0xFFFFFFFF);

        /* and restore (gives effect of resetting AGP) */
Comment 4 Stuart Bennett 2008-03-10 17:40:59 UTC
Created attachment 15020 [details] [review]
Move AGP reset, and cycle PGRAPH

Can you check it still works in this form please
Comment 5 Stuart Bennett 2008-03-10 17:57:23 UTC
Also worth testing with the udelay replaced with a read of PMC_ENABLE
Comment 6 Peter Winters 2008-03-11 06:55:55 UTC
Still works, also works without the udelay and with udelay replaced with a PMC_ENABLE read.
Comment 7 Stuart Bennett 2008-03-11 09:50:49 UTC
Pushed


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.