mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-18 09:44:18 +08:00
Merge branch 'linux-3.18' of git://anongit.freedesktop.org/git/nouveau/linux-2.6 into drm-fixes
two nouveau fixes. * 'linux-3.18' of git://anongit.freedesktop.org/git/nouveau/linux-2.6: drm/nouveau: fix regression on agp boards drm/gt215/gr: fix initialisation on gddr5 boards
This commit is contained in:
commit
e800cab3a7
@ -113,6 +113,8 @@
|
||||
#define IS_NVA3F(x) (((x) > 0xa0 && (x) < 0xaa) || (x) == 0xaf)
|
||||
#define IS_NVAAF(x) ((x) >= 0xaa && (x) <= 0xac)
|
||||
|
||||
#include <subdev/fb.h>
|
||||
|
||||
/*
|
||||
* This code deals with PGRAPH contexts on NV50 family cards. Like NV40, it's
|
||||
* the GPU itself that does context-switching, but it needs a special
|
||||
@ -569,8 +571,12 @@ nv50_graph_construct_mmio(struct nouveau_grctx *ctx)
|
||||
gr_def(ctx, 0x407d08, 0x00010040);
|
||||
else if (device->chipset < 0xa0)
|
||||
gr_def(ctx, 0x407d08, 0x00390040);
|
||||
else
|
||||
gr_def(ctx, 0x407d08, 0x003d0040);
|
||||
else {
|
||||
if (nouveau_fb(device)->ram->type != NV_MEM_TYPE_GDDR5)
|
||||
gr_def(ctx, 0x407d08, 0x003d0040);
|
||||
else
|
||||
gr_def(ctx, 0x407d08, 0x003c0040);
|
||||
}
|
||||
gr_def(ctx, 0x407d0c, 0x00000022);
|
||||
}
|
||||
|
||||
|
@ -400,15 +400,20 @@ nouveau_channel_new(struct nouveau_drm *drm, struct nvif_device *device,
|
||||
struct nouveau_channel **pchan)
|
||||
{
|
||||
struct nouveau_cli *cli = (void *)nvif_client(&device->base);
|
||||
bool super;
|
||||
int ret;
|
||||
|
||||
/* hack until fencenv50 is fixed, and agp access relaxed */
|
||||
super = cli->base.super;
|
||||
cli->base.super = true;
|
||||
|
||||
ret = nouveau_channel_ind(drm, device, handle, arg0, pchan);
|
||||
if (ret) {
|
||||
NV_PRINTK(debug, cli, "ib channel create, %d\n", ret);
|
||||
ret = nouveau_channel_dma(drm, device, handle, pchan);
|
||||
if (ret) {
|
||||
NV_PRINTK(debug, cli, "dma channel create, %d\n", ret);
|
||||
return ret;
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
|
||||
@ -416,8 +421,9 @@ nouveau_channel_new(struct nouveau_drm *drm, struct nvif_device *device,
|
||||
if (ret) {
|
||||
NV_PRINTK(error, cli, "channel failed to initialise, %d\n", ret);
|
||||
nouveau_channel_del(pchan);
|
||||
return ret;
|
||||
}
|
||||
|
||||
return 0;
|
||||
done:
|
||||
cli->base.super = super;
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user