Commit e436d1bb authored by Martin Peres's avatar Martin Peres Committed by Ben Skeggs

drm/nv50/hwsq: some nv92 fixes

The shift from hwsq_data = 0x1400 to 0x080000 actually happened in nv94, not nv92
This fixes some reclocking issues on my newly acquired nv92
Signed-off-by: default avatarMartin Peres <martin.peres@labri.fr>
Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 8663bc7c
...@@ -756,17 +756,18 @@ prog_hwsq(struct drm_device *dev, struct hwsq_ucode *hwsq) ...@@ -756,17 +756,18 @@ prog_hwsq(struct drm_device *dev, struct hwsq_ucode *hwsq)
u32 hwsq_data, hwsq_kick; u32 hwsq_data, hwsq_kick;
int i; int i;
if (dev_priv->chipset < 0x90) { if (dev_priv->chipset < 0x94) {
hwsq_data = 0x001400; hwsq_data = 0x001400;
hwsq_kick = 0x00000003; hwsq_kick = 0x00000003;
} else { } else {
hwsq_data = 0x080000; hwsq_data = 0x080000;
hwsq_kick = 0x00000001; hwsq_kick = 0x00000001;
} }
/* upload hwsq ucode */ /* upload hwsq ucode */
nv_mask(dev, 0x001098, 0x00000008, 0x00000000); nv_mask(dev, 0x001098, 0x00000008, 0x00000000);
nv_wr32(dev, 0x001304, 0x00000000); nv_wr32(dev, 0x001304, 0x00000000);
if (dev_priv->chipset >= 0x92)
nv_wr32(dev, 0x001318, 0x00000000);
for (i = 0; i < hwsq->len / 4; i++) for (i = 0; i < hwsq->len / 4; i++)
nv_wr32(dev, hwsq_data + (i * 4), hwsq->ptr.u32[i]); nv_wr32(dev, hwsq_data + (i * 4), hwsq->ptr.u32[i]);
nv_mask(dev, 0x001098, 0x00000018, 0x00000018); nv_mask(dev, 0x001098, 0x00000018, 0x00000018);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment