diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2013-12-11 18:41:45 -0500 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2014-01-22 22:39:08 -0500 |
commit | 2e9dfe234ac93b71ee102c9504dc0780bd400c54 (patch) | |
tree | 4fa674e1cc925eb41b103eb34b8fac7bed046da4 | |
parent | 73216231caf184439c5f6163d01145bdbdfcd00b (diff) |
drm/nouveau/pwr: have rd/wr32 routines clobber data instead of addr
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
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 |
52 | rd32: | 52 | rd32: |
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: | |||
70 | wr32: | 70 | wr32: |
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, |