diff options
| author | Russell King <rmk+kernel@arm.linux.org.uk> | 2011-11-21 21:56:56 +0000 | 
|---|---|---|
| committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2011-11-21 21:56:56 +0000 | 
| commit | 2d13ccaa8797d7e599f3792aed4b1e44b47f94a5 (patch) | |
| tree | 7079c1610373fc6709c3a285a53099beaf21295a /drivers/gpu/drm/nouveau/nvc0_graph.c | |
| parent | 59136ef3c596606d3eef920dc3e0fdfa2ce52c6f (diff) | |
| parent | 11f1c5de7be06bbb51363002ebc4d00edc2677df (diff) | |
| download | olio-linux-3.10-2d13ccaa8797d7e599f3792aed4b1e44b47f94a5.tar.xz olio-linux-3.10-2d13ccaa8797d7e599f3792aed4b1e44b47f94a5.zip  | |
Merge branch 'irqchip-consolidation' of git://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms into devel-stable
Conflicts:
	arch/arm/mach-omap2/board-4430sdp.c
	arch/arm/mach-omap2/board-omap4panda.c
	arch/arm/mach-omap2/include/mach/omap4-common.h
	arch/arm/plat-omap/include/plat/irqs.h
The changes to omap4-common.h were moved to arch/arm/mach-omap2/common.h
and the other trivial conflicts resolved.  The now empty ifdef in irqs.h
was also eliminated.
Diffstat (limited to 'drivers/gpu/drm/nouveau/nvc0_graph.c')
| -rw-r--r-- | drivers/gpu/drm/nouveau/nvc0_graph.c | 41 | 
1 files changed, 32 insertions, 9 deletions
diff --git a/drivers/gpu/drm/nouveau/nvc0_graph.c b/drivers/gpu/drm/nouveau/nvc0_graph.c index bbdbc51830c..a74e501afd2 100644 --- a/drivers/gpu/drm/nouveau/nvc0_graph.c +++ b/drivers/gpu/drm/nouveau/nvc0_graph.c @@ -157,8 +157,8 @@ nvc0_graph_create_context_mmio_list(struct nouveau_channel *chan)  	struct nvc0_graph_priv *priv = nv_engine(chan->dev, NVOBJ_ENGINE_GR);  	struct nvc0_graph_chan *grch = chan->engctx[NVOBJ_ENGINE_GR];  	struct drm_device *dev = chan->dev; +	struct drm_nouveau_private *dev_priv = dev->dev_private;  	int i = 0, gpc, tp, ret; -	u32 magic;  	ret = nouveau_gpuobj_new(dev, chan, 0x2000, 256, NVOBJ_FLAG_VM,  				 &grch->unk408004); @@ -207,14 +207,37 @@ nvc0_graph_create_context_mmio_list(struct nouveau_channel *chan)  	nv_wo32(grch->mmio, i++ * 4, 0x0041880c);  	nv_wo32(grch->mmio, i++ * 4, 0x80000018); -	magic = 0x02180000; -	nv_wo32(grch->mmio, i++ * 4, 0x00405830); -	nv_wo32(grch->mmio, i++ * 4, magic); -	for (gpc = 0; gpc < priv->gpc_nr; gpc++) { -		for (tp = 0; tp < priv->tp_nr[gpc]; tp++, magic += 0x0324) { -			u32 reg = 0x504520 + (gpc * 0x8000) + (tp * 0x0800); -			nv_wo32(grch->mmio, i++ * 4, reg); -			nv_wo32(grch->mmio, i++ * 4, magic); +	if (dev_priv->chipset != 0xc1) { +		u32 magic = 0x02180000; +		nv_wo32(grch->mmio, i++ * 4, 0x00405830); +		nv_wo32(grch->mmio, i++ * 4, magic); +		for (gpc = 0; gpc < priv->gpc_nr; gpc++) { +			for (tp = 0; tp < priv->tp_nr[gpc]; tp++) { +				u32 reg = TP_UNIT(gpc, tp, 0x520); +				nv_wo32(grch->mmio, i++ * 4, reg); +				nv_wo32(grch->mmio, i++ * 4, magic); +				magic += 0x0324; +			} +		} +	} else { +		u32 magic = 0x02180000; +		nv_wo32(grch->mmio, i++ * 4, 0x00405830); +		nv_wo32(grch->mmio, i++ * 4, magic | 0x0000218); +		nv_wo32(grch->mmio, i++ * 4, 0x004064c4); +		nv_wo32(grch->mmio, i++ * 4, 0x0086ffff); +		for (gpc = 0; gpc < priv->gpc_nr; gpc++) { +			for (tp = 0; tp < priv->tp_nr[gpc]; tp++) { +				u32 reg = TP_UNIT(gpc, tp, 0x520); +				nv_wo32(grch->mmio, i++ * 4, reg); +				nv_wo32(grch->mmio, i++ * 4, (1 << 28) | magic); +				magic += 0x0324; +			} +			for (tp = 0; tp < priv->tp_nr[gpc]; tp++) { +				u32 reg = TP_UNIT(gpc, tp, 0x544); +				nv_wo32(grch->mmio, i++ * 4, reg); +				nv_wo32(grch->mmio, i++ * 4, magic); +				magic += 0x0324; +			}  		}  	}  |