aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2013-12-11 18:41:45 -0500
committerBen Skeggs <bskeggs@redhat.com>2014-01-22 22:39:08 -0500
commit2e9dfe234ac93b71ee102c9504dc0780bd400c54 (patch)
tree4fa674e1cc925eb41b103eb34b8fac7bed046da4
parent73216231caf184439c5f6163d01145bdbdfcd00b (diff)
drm/nouveau/pwr: have rd/wr32 routines clobber data instead of addr
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
-rw-r--r--drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/kernel.fuc32
-rw-r--r--drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nv108.fuc.h24
-rw-r--r--drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nva3.fuc.h26
-rw-r--r--drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvc0.fuc.h26
-rw-r--r--drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvd0.fuc.h24
5 files changed, 67 insertions, 65 deletions
diff --git a/drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/kernel.fuc b/drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/kernel.fuc
index 0a7b05fa5c11..8f29badd785f 100644
--- a/drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/kernel.fuc
+++ b/drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/kernel.fuc
@@ -51,12 +51,12 @@ time_next: .b32 0
51// $r0 - zero 51// $r0 - zero
52rd32: 52rd32:
53 nv_iowr(NV_PPWR_MMIO_ADDR, $r14) 53 nv_iowr(NV_PPWR_MMIO_ADDR, $r14)
54 mov $r14 NV_PPWR_MMIO_CTRL_OP_RD 54 mov $r13 NV_PPWR_MMIO_CTRL_OP_RD
55 sethi $r14 NV_PPWR_MMIO_CTRL_TRIGGER 55 sethi $r13 NV_PPWR_MMIO_CTRL_TRIGGER
56 nv_iowr(NV_PPWR_MMIO_CTRL, $r14) 56 nv_iowr(NV_PPWR_MMIO_CTRL, $r13)
57 rd32_wait: 57 rd32_wait:
58 nv_iord($r14, NV_PPWR_MMIO_CTRL) 58 nv_iord($r13, NV_PPWR_MMIO_CTRL)
59 and $r14 NV_PPWR_MMIO_CTRL_STATUS 59 and $r13 NV_PPWR_MMIO_CTRL_STATUS
60 bra nz #rd32_wait 60 bra nz #rd32_wait
61 nv_iord($r13, NV_PPWR_MMIO_DATA) 61 nv_iord($r13, NV_PPWR_MMIO_DATA)
62 ret 62 ret
@@ -70,23 +70,25 @@ rd32:
70wr32: 70wr32:
71 nv_iowr(NV_PPWR_MMIO_ADDR, $r14) 71 nv_iowr(NV_PPWR_MMIO_ADDR, $r14)
72 nv_iowr(NV_PPWR_MMIO_DATA, $r13) 72 nv_iowr(NV_PPWR_MMIO_DATA, $r13)
73 mov $r14 NV_PPWR_MMIO_CTRL_OP_WR 73 mov $r13 NV_PPWR_MMIO_CTRL_OP_WR
74 or $r14 NV_PPWR_MMIO_CTRL_MASK_B32_0 74 or $r13 NV_PPWR_MMIO_CTRL_MASK_B32_0
75 sethi $r14 NV_PPWR_MMIO_CTRL_TRIGGER 75 sethi $r13 NV_PPWR_MMIO_CTRL_TRIGGER
76 76
77#ifdef NVKM_FALCON_MMIO_TRAP 77#ifdef NVKM_FALCON_MMIO_TRAP
78 mov $r8 NV_PPWR_INTR_TRIGGER_USER1 78 push $r13
79 nv_iowr(NV_PPWR_INTR_TRIGGER, $r8) 79 mov $r13 NV_PPWR_INTR_TRIGGER_USER1
80 nv_iowr(NV_PPWR_INTR_TRIGGER, $r13)
80 wr32_host: 81 wr32_host:
81 nv_iord($r8, NV_PPWR_INTR) 82 nv_iord($r13, NV_PPWR_INTR)
82 and $r8 NV_PPWR_INTR_USER1 83 and $r13 NV_PPWR_INTR_USER1
83 bra nz #wr32_host 84 bra nz #wr32_host
85 pop $r13
84#endif 86#endif
85 87
86 nv_iowr(NV_PPWR_MMIO_CTRL, $r14) 88 nv_iowr(NV_PPWR_MMIO_CTRL, $r13)
87 wr32_wait: 89 wr32_wait:
88 nv_iord($r14, NV_PPWR_MMIO_CTRL) 90 nv_iord($r13, NV_PPWR_MMIO_CTRL)
89 and $r14 NV_PPWR_MMIO_CTRL_STATUS 91 and $r13 NV_PPWR_MMIO_CTRL_STATUS
90 bra nz #wr32_wait 92 bra nz #wr32_wait
91 ret 93 ret
92 94
diff --git a/drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nv108.fuc.h b/drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nv108.fuc.h
index 9342e2d7d3b7..255234ae4201 100644
--- a/drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nv108.fuc.h
+++ b/drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nv108.fuc.h
@@ -786,13 +786,13 @@ uint32_t nv108_pwr_code[] = {
786/* 0x0004: rd32 */ 786/* 0x0004: rd32 */
787 0xf607a040, 787 0xf607a040,
788 0x04bd000e, 788 0x04bd000e,
789 0xe3f0010e, 789 0xd3f0010d,
790 0x07ac4001, 790 0x07ac4001,
791 0xbd000ef6, 791 0xbd000df6,
792/* 0x0019: rd32_wait */ 792/* 0x0019: rd32_wait */
793 0x07ac4e04, 793 0x07ac4d04,
794 0xf100eecf, 794 0xf100ddcf,
795 0xf47000e4, 795 0xf47000d4,
796 0xa44df61b, 796 0xa44df61b,
797 0x00ddcf07, 797 0x00ddcf07,
798/* 0x002e: wr32 */ 798/* 0x002e: wr32 */
@@ -800,14 +800,14 @@ uint32_t nv108_pwr_code[] = {
800 0x000ef607, 800 0x000ef607,
801 0xa44004bd, 801 0xa44004bd,
802 0x000df607, 802 0x000df607,
803 0x020e04bd, 803 0x020d04bd,
804 0xf0f0e5f0, 804 0xf0f0d5f0,
805 0xac4001e3, 805 0xac4001d3,
806 0x000ef607, 806 0x000df607,
807/* 0x004e: wr32_wait */ 807/* 0x004e: wr32_wait */
808 0xac4e04bd, 808 0xac4d04bd,
809 0x00eecf07, 809 0x00ddcf07,
810 0x7000e4f1, 810 0x7000d4f1,
811 0xf8f61bf4, 811 0xf8f61bf4,
812/* 0x005d: nsec */ 812/* 0x005d: nsec */
813 0xcf2c0800, 813 0xcf2c0800,
diff --git a/drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nva3.fuc.h b/drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nva3.fuc.h
index 0fa4d7dcd407..66a3109defdd 100644
--- a/drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nva3.fuc.h
+++ b/drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nva3.fuc.h
@@ -787,15 +787,15 @@ uint32_t nva3_pwr_code[] = {
787 0x07a007f1, 787 0x07a007f1,
788 0xd00604b6, 788 0xd00604b6,
789 0x04bd000e, 789 0x04bd000e,
790 0xf001e7f0, 790 0xf001d7f0,
791 0x07f101e3, 791 0x07f101d3,
792 0x04b607ac, 792 0x04b607ac,
793 0x000ed006, 793 0x000dd006,
794/* 0x0022: rd32_wait */ 794/* 0x0022: rd32_wait */
795 0xe7f104bd, 795 0xd7f104bd,
796 0xe4b607ac, 796 0xd4b607ac,
797 0x00eecf06, 797 0x00ddcf06,
798 0x7000e4f1, 798 0x7000d4f1,
799 0xf1f21bf4, 799 0xf1f21bf4,
800 0xb607a4d7, 800 0xb607a4d7,
801 0xddcf06d4, 801 0xddcf06d4,
@@ -807,15 +807,15 @@ uint32_t nva3_pwr_code[] = {
807 0xb607a407, 807 0xb607a407,
808 0x0dd00604, 808 0x0dd00604,
809 0xf004bd00, 809 0xf004bd00,
810 0xe5f002e7, 810 0xd5f002d7,
811 0x01e3f0f0, 811 0x01d3f0f0,
812 0x07ac07f1, 812 0x07ac07f1,
813 0xd00604b6, 813 0xd00604b6,
814 0x04bd000e, 814 0x04bd000d,
815/* 0x006c: wr32_wait */ 815/* 0x006c: wr32_wait */
816 0x07ace7f1, 816 0x07acd7f1,
817 0xcf06e4b6, 817 0xcf06d4b6,
818 0xe4f100ee, 818 0xd4f100dd,
819 0x1bf47000, 819 0x1bf47000,
820/* 0x007f: nsec */ 820/* 0x007f: nsec */
821 0xf000f8f2, 821 0xf000f8f2,
diff --git a/drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvc0.fuc.h b/drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvc0.fuc.h
index 82c8e8b88917..1f496185746c 100644
--- a/drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvc0.fuc.h
+++ b/drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvc0.fuc.h
@@ -787,15 +787,15 @@ uint32_t nvc0_pwr_code[] = {
787 0x07a007f1, 787 0x07a007f1,
788 0xd00604b6, 788 0xd00604b6,
789 0x04bd000e, 789 0x04bd000e,
790 0xf001e7f0, 790 0xf001d7f0,
791 0x07f101e3, 791 0x07f101d3,
792 0x04b607ac, 792 0x04b607ac,
793 0x000ed006, 793 0x000dd006,
794/* 0x0022: rd32_wait */ 794/* 0x0022: rd32_wait */
795 0xe7f104bd, 795 0xd7f104bd,
796 0xe4b607ac, 796 0xd4b607ac,
797 0x00eecf06, 797 0x00ddcf06,
798 0x7000e4f1, 798 0x7000d4f1,
799 0xf1f21bf4, 799 0xf1f21bf4,
800 0xb607a4d7, 800 0xb607a4d7,
801 0xddcf06d4, 801 0xddcf06d4,
@@ -807,15 +807,15 @@ uint32_t nvc0_pwr_code[] = {
807 0xb607a407, 807 0xb607a407,
808 0x0dd00604, 808 0x0dd00604,
809 0xf004bd00, 809 0xf004bd00,
810 0xe5f002e7, 810 0xd5f002d7,
811 0x01e3f0f0, 811 0x01d3f0f0,
812 0x07ac07f1, 812 0x07ac07f1,
813 0xd00604b6, 813 0xd00604b6,
814 0x04bd000e, 814 0x04bd000d,
815/* 0x006c: wr32_wait */ 815/* 0x006c: wr32_wait */
816 0x07ace7f1, 816 0x07acd7f1,
817 0xcf06e4b6, 817 0xcf06d4b6,
818 0xe4f100ee, 818 0xd4f100dd,
819 0x1bf47000, 819 0x1bf47000,
820/* 0x007f: nsec */ 820/* 0x007f: nsec */
821 0xf000f8f2, 821 0xf000f8f2,
diff --git a/drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvd0.fuc.h b/drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvd0.fuc.h
index ce65e2a4b789..c2be8dbdd98a 100644
--- a/drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvd0.fuc.h
+++ b/drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvd0.fuc.h
@@ -786,14 +786,14 @@ uint32_t nvd0_pwr_code[] = {
786/* 0x0004: rd32 */ 786/* 0x0004: rd32 */
787 0x07a007f1, 787 0x07a007f1,
788 0xbd000ed0, 788 0xbd000ed0,
789 0x01e7f004, 789 0x01d7f004,
790 0xf101e3f0, 790 0xf101d3f0,
791 0xd007ac07, 791 0xd007ac07,
792 0x04bd000e, 792 0x04bd000d,
793/* 0x001c: rd32_wait */ 793/* 0x001c: rd32_wait */
794 0x07ace7f1, 794 0x07acd7f1,
795 0xf100eecf, 795 0xf100ddcf,
796 0xf47000e4, 796 0xf47000d4,
797 0xd7f1f51b, 797 0xd7f1f51b,
798 0xddcf07a4, 798 0xddcf07a4,
799/* 0x0033: wr32 */ 799/* 0x0033: wr32 */
@@ -802,14 +802,14 @@ uint32_t nvd0_pwr_code[] = {
802 0x04bd000e, 802 0x04bd000e,
803 0x07a407f1, 803 0x07a407f1,
804 0xbd000dd0, 804 0xbd000dd0,
805 0x02e7f004, 805 0x02d7f004,
806 0xf0f0e5f0, 806 0xf0f0d5f0,
807 0x07f101e3, 807 0x07f101d3,
808 0x0ed007ac, 808 0x0dd007ac,
809/* 0x0057: wr32_wait */ 809/* 0x0057: wr32_wait */
810 0xf104bd00, 810 0xf104bd00,
811 0xcf07ace7, 811 0xcf07acd7,
812 0xe4f100ee, 812 0xd4f100dd,
813 0x1bf47000, 813 0x1bf47000,
814/* 0x0067: nsec */ 814/* 0x0067: nsec */
815 0xf000f8f5, 815 0xf000f8f5,