Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 269695
b: refs/heads/master
c: a148451
h: refs/heads/master
i:
  269693: 8d7080e
  269691: 72608b1
  269687: 0d1c679
  269679: 7b64960
  269663: 0cca832
  269631: 46338ca
  269567: 551d3ab
v: v3
  • Loading branch information
Ben Skeggs committed Sep 20, 2011
1 parent 03d3abd commit 663be59
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 19 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 3dcbb02b3a9ad1722005290e7c9ac47097de517d
refs/heads/master: a14845121c1e9cfe302d23ca4ffcfc62cf8e1033
27 changes: 27 additions & 0 deletions trunk/drivers/gpu/drm/nouveau/nvc0_fb.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,39 @@ struct nvc0_fb_priv {
dma_addr_t r100c10;
};

static inline void
nvc0_mfb_subp_isr(struct drm_device *dev, int unit, int subp)
{
u32 subp_base = 0x141000 + (unit * 0x2000) + (subp * 0x400);
u32 stat = nv_rd32(dev, subp_base + 0x020);

if (stat) {
NV_INFO(dev, "PMFB%d_SUBP%d: 0x%08x\n", unit, subp, stat);
nv_wr32(dev, subp_base + 0x020, stat);
}
}

static void
nvc0_mfb_isr(struct drm_device *dev)
{
u32 units = nv_rd32(dev, 0x00017c);
while (units) {
u32 subp, unit = ffs(units) - 1;
for (subp = 0; subp < 2; subp++)
nvc0_mfb_subp_isr(dev, unit, subp);
units &= ~(1 << unit);
}
}

static void
nvc0_fb_destroy(struct drm_device *dev)
{
struct drm_nouveau_private *dev_priv = dev->dev_private;
struct nouveau_fb_engine *pfb = &dev_priv->engine.fb;
struct nvc0_fb_priv *priv = pfb->priv;

nouveau_irq_unregister(dev, 25);

if (priv->r100c10_page) {
pci_unmap_page(dev->pdev, priv->r100c10, PAGE_SIZE,
PCI_DMA_BIDIRECTIONAL);
Expand Down Expand Up @@ -74,6 +100,7 @@ nvc0_fb_create(struct drm_device *dev)
return -EFAULT;
}

nouveau_irq_register(dev, 25, nvc0_mfb_isr);
return 0;
}

Expand Down
18 changes: 0 additions & 18 deletions trunk/drivers/gpu/drm/nouveau/nvc0_graph.c
Original file line number Diff line number Diff line change
Expand Up @@ -700,22 +700,6 @@ nvc0_graph_isr(struct drm_device *dev)
nv_wr32(dev, 0x400500, 0x00010001);
}

static void
nvc0_runk140_isr(struct drm_device *dev)
{
u32 units = nv_rd32(dev, 0x00017c) & 0x1f;

while (units) {
u32 unit = ffs(units) - 1;
u32 reg = 0x140000 + unit * 0x2000;
u32 st0 = nv_mask(dev, reg + 0x1020, 0, 0);
u32 st1 = nv_mask(dev, reg + 0x1420, 0, 0);

NV_DEBUG(dev, "PRUNK140: %d 0x%08x 0x%08x\n", unit, st0, st1);
units &= ~(1 << unit);
}
}

static int
nvc0_graph_create_fw(struct drm_device *dev, const char *fwname,
struct nvc0_graph_fuc *fuc)
Expand Down Expand Up @@ -764,7 +748,6 @@ nvc0_graph_destroy(struct drm_device *dev, int engine)
}

nouveau_irq_unregister(dev, 12);
nouveau_irq_unregister(dev, 25);

nouveau_gpuobj_ref(NULL, &priv->unk4188b8);
nouveau_gpuobj_ref(NULL, &priv->unk4188b4);
Expand Down Expand Up @@ -803,7 +786,6 @@ nvc0_graph_create(struct drm_device *dev)

NVOBJ_ENGINE_ADD(dev, GR, &priv->base);
nouveau_irq_register(dev, 12, nvc0_graph_isr);
nouveau_irq_register(dev, 25, nvc0_runk140_isr);

if (nouveau_ctxfw) {
NV_INFO(dev, "PGRAPH: using external firmware\n");
Expand Down

0 comments on commit 663be59

Please sign in to comment.