diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2011-06-23 21:14:00 -0400 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2011-09-20 02:04:06 -0400 |
commit | 3c23a7b8bc6d78f906bbba5eea80b1f8b1002ef9 (patch) | |
tree | 6e830e8771a606194419171f7f7ba37743fb5c10 | |
parent | a12036ba2c0a190c93e5238c5f32fdb8c023c068 (diff) |
drm/nvc0/gr: add support for nvcf chipset
untested, written from a trace, accel disabled by default until it is
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_state.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nvc0_graph.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nvc0_graph.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nvc0_grctx.c | 7 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nvc0_grgpc.fuc | 8 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nvc0_grgpc.fuc.h | 29 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nvc0_grhub.fuc | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nvc0_grhub.fuc.h | 16 |
8 files changed, 44 insertions, 24 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_state.c b/drivers/gpu/drm/nouveau/nouveau_state.c index 07691c2eceac..83d549d50716 100644 --- a/drivers/gpu/drm/nouveau/nouveau_state.c +++ b/drivers/gpu/drm/nouveau/nouveau_state.c | |||
@@ -1011,6 +1011,7 @@ int nouveau_load(struct drm_device *dev, unsigned long flags) | |||
1011 | switch (dev_priv->chipset) { | 1011 | switch (dev_priv->chipset) { |
1012 | case 0xc1: /* known broken */ | 1012 | case 0xc1: /* known broken */ |
1013 | case 0xc8: /* never tested */ | 1013 | case 0xc8: /* never tested */ |
1014 | case 0xcf: /* never tested */ | ||
1014 | NV_INFO(dev, "acceleration disabled by default, pass " | 1015 | NV_INFO(dev, "acceleration disabled by default, pass " |
1015 | "noaccel=0 to force enable\n"); | 1016 | "noaccel=0 to force enable\n"); |
1016 | dev_priv->noaccel = true; | 1017 | dev_priv->noaccel = true; |
diff --git a/drivers/gpu/drm/nouveau/nvc0_graph.c b/drivers/gpu/drm/nouveau/nvc0_graph.c index 5b2f6f420468..84321640a071 100644 --- a/drivers/gpu/drm/nouveau/nvc0_graph.c +++ b/drivers/gpu/drm/nouveau/nvc0_graph.c | |||
@@ -864,6 +864,9 @@ nvc0_graph_create(struct drm_device *dev) | |||
864 | case 0xce: /* 4/4/0/0, 4 */ | 864 | case 0xce: /* 4/4/0/0, 4 */ |
865 | priv->magic_not_rop_nr = 0x03; | 865 | priv->magic_not_rop_nr = 0x03; |
866 | break; | 866 | break; |
867 | case 0xcf: /* 4/0/0/0, 3 */ | ||
868 | priv->magic_not_rop_nr = 0x03; | ||
869 | break; | ||
867 | } | 870 | } |
868 | 871 | ||
869 | if (!priv->magic_not_rop_nr) { | 872 | if (!priv->magic_not_rop_nr) { |
diff --git a/drivers/gpu/drm/nouveau/nvc0_graph.h b/drivers/gpu/drm/nouveau/nvc0_graph.h index 55689e997286..636fe9812f79 100644 --- a/drivers/gpu/drm/nouveau/nvc0_graph.h +++ b/drivers/gpu/drm/nouveau/nvc0_graph.h | |||
@@ -82,6 +82,7 @@ nvc0_graph_class(struct drm_device *dev) | |||
82 | case 0xc3: | 82 | case 0xc3: |
83 | case 0xc4: | 83 | case 0xc4: |
84 | case 0xce: /* guess, mmio trace shows only 0x9097 state */ | 84 | case 0xce: /* guess, mmio trace shows only 0x9097 state */ |
85 | case 0xcf: /* guess, mmio trace shows only 0x9097 state */ | ||
85 | return 0x9097; | 86 | return 0x9097; |
86 | case 0xc1: | 87 | case 0xc1: |
87 | return 0x9197; | 88 | return 0x9197; |
diff --git a/drivers/gpu/drm/nouveau/nvc0_grctx.c b/drivers/gpu/drm/nouveau/nvc0_grctx.c index 31018eaf5279..0c9737a49149 100644 --- a/drivers/gpu/drm/nouveau/nvc0_grctx.c +++ b/drivers/gpu/drm/nouveau/nvc0_grctx.c | |||
@@ -1678,7 +1678,10 @@ nvc0_grctx_generate_tp(struct drm_device *dev) | |||
1678 | nv_wr32(dev, 0x419c04, 0x00000006); | 1678 | nv_wr32(dev, 0x419c04, 0x00000006); |
1679 | nv_wr32(dev, 0x419c08, 0x00000002); | 1679 | nv_wr32(dev, 0x419c08, 0x00000002); |
1680 | nv_wr32(dev, 0x419c20, 0x00000000); | 1680 | nv_wr32(dev, 0x419c20, 0x00000000); |
1681 | nv_wr32(dev, 0x419cb0, 0x00060048); //XXX: 0xce 0x00020048 | 1681 | if (chipset == 0xce || chipset == 0xcf) |
1682 | nv_wr32(dev, 0x419cb0, 0x00020048); | ||
1683 | else | ||
1684 | nv_wr32(dev, 0x419cb0, 0x00060048); | ||
1682 | nv_wr32(dev, 0x419ce8, 0x00000000); | 1685 | nv_wr32(dev, 0x419ce8, 0x00000000); |
1683 | nv_wr32(dev, 0x419cf4, 0x00000183); | 1686 | nv_wr32(dev, 0x419cf4, 0x00000183); |
1684 | nv_wr32(dev, 0x419d20, chipset != 0xc1 ? 0x02180000 : 0x12180000); | 1687 | nv_wr32(dev, 0x419d20, chipset != 0xc1 ? 0x02180000 : 0x12180000); |
@@ -1784,7 +1787,7 @@ nvc0_grctx_generate(struct nouveau_channel *chan) | |||
1784 | 1787 | ||
1785 | if (1) { | 1788 | if (1) { |
1786 | const u8 chipset_tp_max[] = { 16, 4, 0, 4, 8, 0, 0, 0, | 1789 | const u8 chipset_tp_max[] = { 16, 4, 0, 4, 8, 0, 0, 0, |
1787 | 16, 0, 0, 0, 0, 0, 8, 0 }; | 1790 | 16, 0, 0, 0, 0, 0, 8, 4 }; |
1788 | u8 max = chipset_tp_max[dev_priv->chipset & 0x0f]; | 1791 | u8 max = chipset_tp_max[dev_priv->chipset & 0x0f]; |
1789 | u8 tpnr[GPC_MAX]; | 1792 | u8 tpnr[GPC_MAX]; |
1790 | u8 data[TP_MAX]; | 1793 | u8 data[TP_MAX]; |
diff --git a/drivers/gpu/drm/nouveau/nvc0_grgpc.fuc b/drivers/gpu/drm/nouveau/nvc0_grgpc.fuc index 0ec2add72a76..06f5e26d1e0f 100644 --- a/drivers/gpu/drm/nouveau/nvc0_grgpc.fuc +++ b/drivers/gpu/drm/nouveau/nvc0_grgpc.fuc | |||
@@ -77,6 +77,11 @@ chipsets: | |||
77 | .b16 nvc0_gpc_mmio_tail | 77 | .b16 nvc0_gpc_mmio_tail |
78 | .b16 nvc0_tpc_mmio_head | 78 | .b16 nvc0_tpc_mmio_head |
79 | .b16 nvc3_tpc_mmio_tail | 79 | .b16 nvc3_tpc_mmio_tail |
80 | .b8 0xcf 0 0 0 | ||
81 | .b16 nvc0_gpc_mmio_head | ||
82 | .b16 nvc0_gpc_mmio_tail | ||
83 | .b16 nvc0_tpc_mmio_head | ||
84 | .b16 nvcf_tpc_mmio_tail | ||
80 | .b8 0 0 0 0 | 85 | .b8 0 0 0 0 |
81 | 86 | ||
82 | // GPC mmio lists | 87 | // GPC mmio lists |
@@ -134,8 +139,9 @@ mmctx_data(0x000750, 2) | |||
134 | nvc0_tpc_mmio_tail: | 139 | nvc0_tpc_mmio_tail: |
135 | mmctx_data(0x000758, 1) | 140 | mmctx_data(0x000758, 1) |
136 | mmctx_data(0x0002c4, 1) | 141 | mmctx_data(0x0002c4, 1) |
137 | mmctx_data(0x0004bc, 1) | ||
138 | mmctx_data(0x0006e0, 1) | 142 | mmctx_data(0x0006e0, 1) |
143 | nvcf_tpc_mmio_tail: | ||
144 | mmctx_data(0x0004bc, 1) | ||
139 | nvc3_tpc_mmio_tail: | 145 | nvc3_tpc_mmio_tail: |
140 | mmctx_data(0x000544, 1) | 146 | mmctx_data(0x000544, 1) |
141 | nvc1_tpc_mmio_tail: | 147 | nvc1_tpc_mmio_tail: |
diff --git a/drivers/gpu/drm/nouveau/nvc0_grgpc.fuc.h b/drivers/gpu/drm/nouveau/nvc0_grgpc.fuc.h index 1896c898f5ba..6f820324480e 100644 --- a/drivers/gpu/drm/nouveau/nvc0_grgpc.fuc.h +++ b/drivers/gpu/drm/nouveau/nvc0_grgpc.fuc.h | |||
@@ -25,23 +25,26 @@ uint32_t nvc0_grgpc_data[] = { | |||
25 | 0x00000000, | 25 | 0x00000000, |
26 | 0x00000000, | 26 | 0x00000000, |
27 | 0x000000c0, | 27 | 0x000000c0, |
28 | 0x011000b0, | 28 | 0x011c00bc, |
29 | 0x01640114, | 29 | 0x01700120, |
30 | 0x000000c1, | 30 | 0x000000c1, |
31 | 0x011400b0, | 31 | 0x012000bc, |
32 | 0x01780114, | 32 | 0x01840120, |
33 | 0x000000c3, | 33 | 0x000000c3, |
34 | 0x011000b0, | 34 | 0x011c00bc, |
35 | 0x01740114, | 35 | 0x01800120, |
36 | 0x000000c4, | 36 | 0x000000c4, |
37 | 0x011000b0, | 37 | 0x011c00bc, |
38 | 0x01740114, | 38 | 0x01800120, |
39 | 0x000000c8, | 39 | 0x000000c8, |
40 | 0x011000b0, | 40 | 0x011c00bc, |
41 | 0x01640114, | 41 | 0x01700120, |
42 | 0x000000ce, | 42 | 0x000000ce, |
43 | 0x011000b0, | 43 | 0x011c00bc, |
44 | 0x01740114, | 44 | 0x01800120, |
45 | 0x000000cf, | ||
46 | 0x011c00bc, | ||
47 | 0x017c0120, | ||
45 | 0x00000000, | 48 | 0x00000000, |
46 | 0x00000380, | 49 | 0x00000380, |
47 | 0x14000400, | 50 | 0x14000400, |
@@ -90,8 +93,8 @@ uint32_t nvc0_grgpc_data[] = { | |||
90 | 0x04000750, | 93 | 0x04000750, |
91 | 0x00000758, | 94 | 0x00000758, |
92 | 0x000002c4, | 95 | 0x000002c4, |
93 | 0x000004bc, | ||
94 | 0x000006e0, | 96 | 0x000006e0, |
97 | 0x000004bc, | ||
95 | 0x00000544, | 98 | 0x00000544, |
96 | }; | 99 | }; |
97 | 100 | ||
diff --git a/drivers/gpu/drm/nouveau/nvc0_grhub.fuc b/drivers/gpu/drm/nouveau/nvc0_grhub.fuc index a1a599124cf4..e4f8c7e89ddd 100644 --- a/drivers/gpu/drm/nouveau/nvc0_grhub.fuc +++ b/drivers/gpu/drm/nouveau/nvc0_grhub.fuc | |||
@@ -56,6 +56,9 @@ chipsets: | |||
56 | .b8 0xce 0 0 0 | 56 | .b8 0xce 0 0 0 |
57 | .b16 nvc0_hub_mmio_head | 57 | .b16 nvc0_hub_mmio_head |
58 | .b16 nvc0_hub_mmio_tail | 58 | .b16 nvc0_hub_mmio_tail |
59 | .b8 0xcf 0 0 0 | ||
60 | .b16 nvc0_hub_mmio_head | ||
61 | .b16 nvc0_hub_mmio_tail | ||
59 | .b8 0 0 0 0 | 62 | .b8 0 0 0 0 |
60 | 63 | ||
61 | nvc0_hub_mmio_head: | 64 | nvc0_hub_mmio_head: |
diff --git a/drivers/gpu/drm/nouveau/nvc0_grhub.fuc.h b/drivers/gpu/drm/nouveau/nvc0_grhub.fuc.h index b3b541b6d044..241d3263f1e5 100644 --- a/drivers/gpu/drm/nouveau/nvc0_grhub.fuc.h +++ b/drivers/gpu/drm/nouveau/nvc0_grhub.fuc.h | |||
@@ -23,17 +23,19 @@ uint32_t nvc0_grhub_data[] = { | |||
23 | 0x00000000, | 23 | 0x00000000, |
24 | 0x00000000, | 24 | 0x00000000, |
25 | 0x000000c0, | 25 | 0x000000c0, |
26 | 0x012c0090, | 26 | 0x01340098, |
27 | 0x000000c1, | 27 | 0x000000c1, |
28 | 0x01300090, | 28 | 0x01380098, |
29 | 0x000000c3, | 29 | 0x000000c3, |
30 | 0x012c0090, | 30 | 0x01340098, |
31 | 0x000000c4, | 31 | 0x000000c4, |
32 | 0x012c0090, | 32 | 0x01340098, |
33 | 0x000000c8, | 33 | 0x000000c8, |
34 | 0x012c0090, | 34 | 0x01340098, |
35 | 0x000000ce, | 35 | 0x000000ce, |
36 | 0x012c0090, | 36 | 0x01340098, |
37 | 0x000000cf, | ||
38 | 0x01340098, | ||
37 | 0x00000000, | 39 | 0x00000000, |
38 | 0x0417e91c, | 40 | 0x0417e91c, |
39 | 0x04400204, | 41 | 0x04400204, |
@@ -190,8 +192,6 @@ uint32_t nvc0_grhub_data[] = { | |||
190 | 0x00000000, | 192 | 0x00000000, |
191 | 0x00000000, | 193 | 0x00000000, |
192 | 0x00000000, | 194 | 0x00000000, |
193 | 0x00000000, | ||
194 | 0x00000000, | ||
195 | }; | 195 | }; |
196 | 196 | ||
197 | uint32_t nvc0_grhub_code[] = { | 197 | uint32_t nvc0_grhub_code[] = { |