drm/radeon/evergreen: add support for golden register init
authorAlex Deucher <alexander.deucher@amd.com>
Thu, 28 Feb 2013 19:40:09 +0000 (14:40 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 23 Apr 2013 22:03:56 +0000 (18:03 -0400)
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/radeon/evergreen.c

index 0af36e7731e2536c0c28a94923e4eec461cfa8eb..1531f167d152a3e24284e976bde657c28b31e8fe 100644 (file)
@@ -53,6 +53,864 @@ void evergreen_pcie_gen2_enable(struct radeon_device *rdev);
 extern void cayman_cp_int_cntl_setup(struct radeon_device *rdev,
                                     int ring, u32 cp_int_cntl);
 
+static const u32 evergreen_golden_registers[] =
+{
+       0x3f90, 0xffff0000, 0xff000000,
+       0x9148, 0xffff0000, 0xff000000,
+       0x3f94, 0xffff0000, 0xff000000,
+       0x914c, 0xffff0000, 0xff000000,
+       0x9b7c, 0xffffffff, 0x00000000,
+       0x8a14, 0xffffffff, 0x00000007,
+       0x8b10, 0xffffffff, 0x00000000,
+       0x960c, 0xffffffff, 0x54763210,
+       0x88c4, 0xffffffff, 0x000000c2,
+       0x88d4, 0xffffffff, 0x00000010,
+       0x8974, 0xffffffff, 0x00000000,
+       0xc78, 0x00000080, 0x00000080,
+       0x5eb4, 0xffffffff, 0x00000002,
+       0x5e78, 0xffffffff, 0x001000f0,
+       0x6104, 0x01000300, 0x00000000,
+       0x5bc0, 0x00300000, 0x00000000,
+       0x7030, 0xffffffff, 0x00000011,
+       0x7c30, 0xffffffff, 0x00000011,
+       0x10830, 0xffffffff, 0x00000011,
+       0x11430, 0xffffffff, 0x00000011,
+       0x12030, 0xffffffff, 0x00000011,
+       0x12c30, 0xffffffff, 0x00000011,
+       0xd02c, 0xffffffff, 0x08421000,
+       0x240c, 0xffffffff, 0x00000380,
+       0x8b24, 0xffffffff, 0x00ff0fff,
+       0x28a4c, 0x06000000, 0x06000000,
+       0x10c, 0x00000001, 0x00000001,
+       0x8d00, 0xffffffff, 0x100e4848,
+       0x8d04, 0xffffffff, 0x00164745,
+       0x8c00, 0xffffffff, 0xe4000003,
+       0x8c04, 0xffffffff, 0x40600060,
+       0x8c08, 0xffffffff, 0x001c001c,
+       0x8cf0, 0xffffffff, 0x08e00620,
+       0x8c20, 0xffffffff, 0x00800080,
+       0x8c24, 0xffffffff, 0x00800080,
+       0x8c18, 0xffffffff, 0x20202078,
+       0x8c1c, 0xffffffff, 0x00001010,
+       0x28350, 0xffffffff, 0x00000000,
+       0xa008, 0xffffffff, 0x00010000,
+       0x5cc, 0xffffffff, 0x00000001,
+       0x9508, 0xffffffff, 0x00000002,
+       0x913c, 0x0000000f, 0x0000000a
+};
+
+static const u32 evergreen_golden_registers2[] =
+{
+       0x2f4c, 0xffffffff, 0x00000000,
+       0x54f4, 0xffffffff, 0x00000000,
+       0x54f0, 0xffffffff, 0x00000000,
+       0x5498, 0xffffffff, 0x00000000,
+       0x549c, 0xffffffff, 0x00000000,
+       0x5494, 0xffffffff, 0x00000000,
+       0x53cc, 0xffffffff, 0x00000000,
+       0x53c8, 0xffffffff, 0x00000000,
+       0x53c4, 0xffffffff, 0x00000000,
+       0x53c0, 0xffffffff, 0x00000000,
+       0x53bc, 0xffffffff, 0x00000000,
+       0x53b8, 0xffffffff, 0x00000000,
+       0x53b4, 0xffffffff, 0x00000000,
+       0x53b0, 0xffffffff, 0x00000000
+};
+
+static const u32 cypress_mgcg_init[] =
+{
+       0x802c, 0xffffffff, 0xc0000000,
+       0x5448, 0xffffffff, 0x00000100,
+       0x55e4, 0xffffffff, 0x00000100,
+       0x160c, 0xffffffff, 0x00000100,
+       0x5644, 0xffffffff, 0x00000100,
+       0xc164, 0xffffffff, 0x00000100,
+       0x8a18, 0xffffffff, 0x00000100,
+       0x897c, 0xffffffff, 0x06000100,
+       0x8b28, 0xffffffff, 0x00000100,
+       0x9144, 0xffffffff, 0x00000100,
+       0x9a60, 0xffffffff, 0x00000100,
+       0x9868, 0xffffffff, 0x00000100,
+       0x8d58, 0xffffffff, 0x00000100,
+       0x9510, 0xffffffff, 0x00000100,
+       0x949c, 0xffffffff, 0x00000100,
+       0x9654, 0xffffffff, 0x00000100,
+       0x9030, 0xffffffff, 0x00000100,
+       0x9034, 0xffffffff, 0x00000100,
+       0x9038, 0xffffffff, 0x00000100,
+       0x903c, 0xffffffff, 0x00000100,
+       0x9040, 0xffffffff, 0x00000100,
+       0xa200, 0xffffffff, 0x00000100,
+       0xa204, 0xffffffff, 0x00000100,
+       0xa208, 0xffffffff, 0x00000100,
+       0xa20c, 0xffffffff, 0x00000100,
+       0x971c, 0xffffffff, 0x00000100,
+       0x977c, 0xffffffff, 0x00000100,
+       0x3f80, 0xffffffff, 0x00000100,
+       0xa210, 0xffffffff, 0x00000100,
+       0xa214, 0xffffffff, 0x00000100,
+       0x4d8, 0xffffffff, 0x00000100,
+       0x9784, 0xffffffff, 0x00000100,
+       0x9698, 0xffffffff, 0x00000100,
+       0x4d4, 0xffffffff, 0x00000200,
+       0x30cc, 0xffffffff, 0x00000100,
+       0xd0c0, 0xffffffff, 0xff000100,
+       0x802c, 0xffffffff, 0x40000000,
+       0x915c, 0xffffffff, 0x00010000,
+       0x9160, 0xffffffff, 0x00030002,
+       0x9178, 0xffffffff, 0x00070000,
+       0x917c, 0xffffffff, 0x00030002,
+       0x9180, 0xffffffff, 0x00050004,
+       0x918c, 0xffffffff, 0x00010006,
+       0x9190, 0xffffffff, 0x00090008,
+       0x9194, 0xffffffff, 0x00070000,
+       0x9198, 0xffffffff, 0x00030002,
+       0x919c, 0xffffffff, 0x00050004,
+       0x91a8, 0xffffffff, 0x00010006,
+       0x91ac, 0xffffffff, 0x00090008,
+       0x91b0, 0xffffffff, 0x00070000,
+       0x91b4, 0xffffffff, 0x00030002,
+       0x91b8, 0xffffffff, 0x00050004,
+       0x91c4, 0xffffffff, 0x00010006,
+       0x91c8, 0xffffffff, 0x00090008,
+       0x91cc, 0xffffffff, 0x00070000,
+       0x91d0, 0xffffffff, 0x00030002,
+       0x91d4, 0xffffffff, 0x00050004,
+       0x91e0, 0xffffffff, 0x00010006,
+       0x91e4, 0xffffffff, 0x00090008,
+       0x91e8, 0xffffffff, 0x00000000,
+       0x91ec, 0xffffffff, 0x00070000,
+       0x91f0, 0xffffffff, 0x00030002,
+       0x91f4, 0xffffffff, 0x00050004,
+       0x9200, 0xffffffff, 0x00010006,
+       0x9204, 0xffffffff, 0x00090008,
+       0x9208, 0xffffffff, 0x00070000,
+       0x920c, 0xffffffff, 0x00030002,
+       0x9210, 0xffffffff, 0x00050004,
+       0x921c, 0xffffffff, 0x00010006,
+       0x9220, 0xffffffff, 0x00090008,
+       0x9224, 0xffffffff, 0x00070000,
+       0x9228, 0xffffffff, 0x00030002,
+       0x922c, 0xffffffff, 0x00050004,
+       0x9238, 0xffffffff, 0x00010006,
+       0x923c, 0xffffffff, 0x00090008,
+       0x9240, 0xffffffff, 0x00070000,
+       0x9244, 0xffffffff, 0x00030002,
+       0x9248, 0xffffffff, 0x00050004,
+       0x9254, 0xffffffff, 0x00010006,
+       0x9258, 0xffffffff, 0x00090008,
+       0x925c, 0xffffffff, 0x00070000,
+       0x9260, 0xffffffff, 0x00030002,
+       0x9264, 0xffffffff, 0x00050004,
+       0x9270, 0xffffffff, 0x00010006,
+       0x9274, 0xffffffff, 0x00090008,
+       0x9278, 0xffffffff, 0x00070000,
+       0x927c, 0xffffffff, 0x00030002,
+       0x9280, 0xffffffff, 0x00050004,
+       0x928c, 0xffffffff, 0x00010006,
+       0x9290, 0xffffffff, 0x00090008,
+       0x9294, 0xffffffff, 0x00000000,
+       0x929c, 0xffffffff, 0x00000001,
+       0x802c, 0xffffffff, 0x40010000,
+       0x915c, 0xffffffff, 0x00010000,
+       0x9160, 0xffffffff, 0x00030002,
+       0x9178, 0xffffffff, 0x00070000,
+       0x917c, 0xffffffff, 0x00030002,
+       0x9180, 0xffffffff, 0x00050004,
+       0x918c, 0xffffffff, 0x00010006,
+       0x9190, 0xffffffff, 0x00090008,
+       0x9194, 0xffffffff, 0x00070000,
+       0x9198, 0xffffffff, 0x00030002,
+       0x919c, 0xffffffff, 0x00050004,
+       0x91a8, 0xffffffff, 0x00010006,
+       0x91ac, 0xffffffff, 0x00090008,
+       0x91b0, 0xffffffff, 0x00070000,
+       0x91b4, 0xffffffff, 0x00030002,
+       0x91b8, 0xffffffff, 0x00050004,
+       0x91c4, 0xffffffff, 0x00010006,
+       0x91c8, 0xffffffff, 0x00090008,
+       0x91cc, 0xffffffff, 0x00070000,
+       0x91d0, 0xffffffff, 0x00030002,
+       0x91d4, 0xffffffff, 0x00050004,
+       0x91e0, 0xffffffff, 0x00010006,
+       0x91e4, 0xffffffff, 0x00090008,
+       0x91e8, 0xffffffff, 0x00000000,
+       0x91ec, 0xffffffff, 0x00070000,
+       0x91f0, 0xffffffff, 0x00030002,
+       0x91f4, 0xffffffff, 0x00050004,
+       0x9200, 0xffffffff, 0x00010006,
+       0x9204, 0xffffffff, 0x00090008,
+       0x9208, 0xffffffff, 0x00070000,
+       0x920c, 0xffffffff, 0x00030002,
+       0x9210, 0xffffffff, 0x00050004,
+       0x921c, 0xffffffff, 0x00010006,
+       0x9220, 0xffffffff, 0x00090008,
+       0x9224, 0xffffffff, 0x00070000,
+       0x9228, 0xffffffff, 0x00030002,
+       0x922c, 0xffffffff, 0x00050004,
+       0x9238, 0xffffffff, 0x00010006,
+       0x923c, 0xffffffff, 0x00090008,
+       0x9240, 0xffffffff, 0x00070000,
+       0x9244, 0xffffffff, 0x00030002,
+       0x9248, 0xffffffff, 0x00050004,
+       0x9254, 0xffffffff, 0x00010006,
+       0x9258, 0xffffffff, 0x00090008,
+       0x925c, 0xffffffff, 0x00070000,
+       0x9260, 0xffffffff, 0x00030002,
+       0x9264, 0xffffffff, 0x00050004,
+       0x9270, 0xffffffff, 0x00010006,
+       0x9274, 0xffffffff, 0x00090008,
+       0x9278, 0xffffffff, 0x00070000,
+       0x927c, 0xffffffff, 0x00030002,
+       0x9280, 0xffffffff, 0x00050004,
+       0x928c, 0xffffffff, 0x00010006,
+       0x9290, 0xffffffff, 0x00090008,
+       0x9294, 0xffffffff, 0x00000000,
+       0x929c, 0xffffffff, 0x00000001,
+       0x802c, 0xffffffff, 0xc0000000
+};
+
+static const u32 redwood_mgcg_init[] =
+{
+       0x802c, 0xffffffff, 0xc0000000,
+       0x5448, 0xffffffff, 0x00000100,
+       0x55e4, 0xffffffff, 0x00000100,
+       0x160c, 0xffffffff, 0x00000100,
+       0x5644, 0xffffffff, 0x00000100,
+       0xc164, 0xffffffff, 0x00000100,
+       0x8a18, 0xffffffff, 0x00000100,
+       0x897c, 0xffffffff, 0x06000100,
+       0x8b28, 0xffffffff, 0x00000100,
+       0x9144, 0xffffffff, 0x00000100,
+       0x9a60, 0xffffffff, 0x00000100,
+       0x9868, 0xffffffff, 0x00000100,
+       0x8d58, 0xffffffff, 0x00000100,
+       0x9510, 0xffffffff, 0x00000100,
+       0x949c, 0xffffffff, 0x00000100,
+       0x9654, 0xffffffff, 0x00000100,
+       0x9030, 0xffffffff, 0x00000100,
+       0x9034, 0xffffffff, 0x00000100,
+       0x9038, 0xffffffff, 0x00000100,
+       0x903c, 0xffffffff, 0x00000100,
+       0x9040, 0xffffffff, 0x00000100,
+       0xa200, 0xffffffff, 0x00000100,
+       0xa204, 0xffffffff, 0x00000100,
+       0xa208, 0xffffffff, 0x00000100,
+       0xa20c, 0xffffffff, 0x00000100,
+       0x971c, 0xffffffff, 0x00000100,
+       0x977c, 0xffffffff, 0x00000100,
+       0x3f80, 0xffffffff, 0x00000100,
+       0xa210, 0xffffffff, 0x00000100,
+       0xa214, 0xffffffff, 0x00000100,
+       0x4d8, 0xffffffff, 0x00000100,
+       0x9784, 0xffffffff, 0x00000100,
+       0x9698, 0xffffffff, 0x00000100,
+       0x4d4, 0xffffffff, 0x00000200,
+       0x30cc, 0xffffffff, 0x00000100,
+       0xd0c0, 0xffffffff, 0xff000100,
+       0x802c, 0xffffffff, 0x40000000,
+       0x915c, 0xffffffff, 0x00010000,
+       0x9160, 0xffffffff, 0x00030002,
+       0x9178, 0xffffffff, 0x00070000,
+       0x917c, 0xffffffff, 0x00030002,
+       0x9180, 0xffffffff, 0x00050004,
+       0x918c, 0xffffffff, 0x00010006,
+       0x9190, 0xffffffff, 0x00090008,
+       0x9194, 0xffffffff, 0x00070000,
+       0x9198, 0xffffffff, 0x00030002,
+       0x919c, 0xffffffff, 0x00050004,
+       0x91a8, 0xffffffff, 0x00010006,
+       0x91ac, 0xffffffff, 0x00090008,
+       0x91b0, 0xffffffff, 0x00070000,
+       0x91b4, 0xffffffff, 0x00030002,
+       0x91b8, 0xffffffff, 0x00050004,
+       0x91c4, 0xffffffff, 0x00010006,
+       0x91c8, 0xffffffff, 0x00090008,
+       0x91cc, 0xffffffff, 0x00070000,
+       0x91d0, 0xffffffff, 0x00030002,
+       0x91d4, 0xffffffff, 0x00050004,
+       0x91e0, 0xffffffff, 0x00010006,
+       0x91e4, 0xffffffff, 0x00090008,
+       0x91e8, 0xffffffff, 0x00000000,
+       0x91ec, 0xffffffff, 0x00070000,
+       0x91f0, 0xffffffff, 0x00030002,
+       0x91f4, 0xffffffff, 0x00050004,
+       0x9200, 0xffffffff, 0x00010006,
+       0x9204, 0xffffffff, 0x00090008,
+       0x9294, 0xffffffff, 0x00000000,
+       0x929c, 0xffffffff, 0x00000001,
+       0x802c, 0xffffffff, 0xc0000000
+};
+
+static const u32 cedar_golden_registers[] =
+{
+       0x3f90, 0xffff0000, 0xff000000,
+       0x9148, 0xffff0000, 0xff000000,
+       0x3f94, 0xffff0000, 0xff000000,
+       0x914c, 0xffff0000, 0xff000000,
+       0x9b7c, 0xffffffff, 0x00000000,
+       0x8a14, 0xffffffff, 0x00000007,
+       0x8b10, 0xffffffff, 0x00000000,
+       0x960c, 0xffffffff, 0x54763210,
+       0x88c4, 0xffffffff, 0x000000c2,
+       0x88d4, 0xffffffff, 0x00000000,
+       0x8974, 0xffffffff, 0x00000000,
+       0xc78, 0x00000080, 0x00000080,
+       0x5eb4, 0xffffffff, 0x00000002,
+       0x5e78, 0xffffffff, 0x001000f0,
+       0x6104, 0x01000300, 0x00000000,
+       0x5bc0, 0x00300000, 0x00000000,
+       0x7030, 0xffffffff, 0x00000011,
+       0x7c30, 0xffffffff, 0x00000011,
+       0x10830, 0xffffffff, 0x00000011,
+       0x11430, 0xffffffff, 0x00000011,
+       0xd02c, 0xffffffff, 0x08421000,
+       0x240c, 0xffffffff, 0x00000380,
+       0x8b24, 0xffffffff, 0x00ff0fff,
+       0x28a4c, 0x06000000, 0x06000000,
+       0x10c, 0x00000001, 0x00000001,
+       0x8d00, 0xffffffff, 0x100e4848,
+       0x8d04, 0xffffffff, 0x00164745,
+       0x8c00, 0xffffffff, 0xe4000003,
+       0x8c04, 0xffffffff, 0x40600060,
+       0x8c08, 0xffffffff, 0x001c001c,
+       0x8cf0, 0xffffffff, 0x08e00410,
+       0x8c20, 0xffffffff, 0x00800080,
+       0x8c24, 0xffffffff, 0x00800080,
+       0x8c18, 0xffffffff, 0x20202078,
+       0x8c1c, 0xffffffff, 0x00001010,
+       0x28350, 0xffffffff, 0x00000000,
+       0xa008, 0xffffffff, 0x00010000,
+       0x5cc, 0xffffffff, 0x00000001,
+       0x9508, 0xffffffff, 0x00000002
+};
+
+static const u32 cedar_mgcg_init[] =
+{
+       0x802c, 0xffffffff, 0xc0000000,
+       0x5448, 0xffffffff, 0x00000100,
+       0x55e4, 0xffffffff, 0x00000100,
+       0x160c, 0xffffffff, 0x00000100,
+       0x5644, 0xffffffff, 0x00000100,
+       0xc164, 0xffffffff, 0x00000100,
+       0x8a18, 0xffffffff, 0x00000100,
+       0x897c, 0xffffffff, 0x06000100,
+       0x8b28, 0xffffffff, 0x00000100,
+       0x9144, 0xffffffff, 0x00000100,
+       0x9a60, 0xffffffff, 0x00000100,
+       0x9868, 0xffffffff, 0x00000100,
+       0x8d58, 0xffffffff, 0x00000100,
+       0x9510, 0xffffffff, 0x00000100,
+       0x949c, 0xffffffff, 0x00000100,
+       0x9654, 0xffffffff, 0x00000100,
+       0x9030, 0xffffffff, 0x00000100,
+       0x9034, 0xffffffff, 0x00000100,
+       0x9038, 0xffffffff, 0x00000100,
+       0x903c, 0xffffffff, 0x00000100,
+       0x9040, 0xffffffff, 0x00000100,
+       0xa200, 0xffffffff, 0x00000100,
+       0xa204, 0xffffffff, 0x00000100,
+       0xa208, 0xffffffff, 0x00000100,
+       0xa20c, 0xffffffff, 0x00000100,
+       0x971c, 0xffffffff, 0x00000100,
+       0x977c, 0xffffffff, 0x00000100,
+       0x3f80, 0xffffffff, 0x00000100,
+       0xa210, 0xffffffff, 0x00000100,
+       0xa214, 0xffffffff, 0x00000100,
+       0x4d8, 0xffffffff, 0x00000100,
+       0x9784, 0xffffffff, 0x00000100,
+       0x9698, 0xffffffff, 0x00000100,
+       0x4d4, 0xffffffff, 0x00000200,
+       0x30cc, 0xffffffff, 0x00000100,
+       0xd0c0, 0xffffffff, 0xff000100,
+       0x802c, 0xffffffff, 0x40000000,
+       0x915c, 0xffffffff, 0x00010000,
+       0x9178, 0xffffffff, 0x00050000,
+       0x917c, 0xffffffff, 0x00030002,
+       0x918c, 0xffffffff, 0x00010004,
+       0x9190, 0xffffffff, 0x00070006,
+       0x9194, 0xffffffff, 0x00050000,
+       0x9198, 0xffffffff, 0x00030002,
+       0x91a8, 0xffffffff, 0x00010004,
+       0x91ac, 0xffffffff, 0x00070006,
+       0x91e8, 0xffffffff, 0x00000000,
+       0x9294, 0xffffffff, 0x00000000,
+       0x929c, 0xffffffff, 0x00000001,
+       0x802c, 0xffffffff, 0xc0000000
+};
+
+static const u32 juniper_mgcg_init[] =
+{
+       0x802c, 0xffffffff, 0xc0000000,
+       0x5448, 0xffffffff, 0x00000100,
+       0x55e4, 0xffffffff, 0x00000100,
+       0x160c, 0xffffffff, 0x00000100,
+       0x5644, 0xffffffff, 0x00000100,
+       0xc164, 0xffffffff, 0x00000100,
+       0x8a18, 0xffffffff, 0x00000100,
+       0x897c, 0xffffffff, 0x06000100,
+       0x8b28, 0xffffffff, 0x00000100,
+       0x9144, 0xffffffff, 0x00000100,
+       0x9a60, 0xffffffff, 0x00000100,
+       0x9868, 0xffffffff, 0x00000100,
+       0x8d58, 0xffffffff, 0x00000100,
+       0x9510, 0xffffffff, 0x00000100,
+       0x949c, 0xffffffff, 0x00000100,
+       0x9654, 0xffffffff, 0x00000100,
+       0x9030, 0xffffffff, 0x00000100,
+       0x9034, 0xffffffff, 0x00000100,
+       0x9038, 0xffffffff, 0x00000100,
+       0x903c, 0xffffffff, 0x00000100,
+       0x9040, 0xffffffff, 0x00000100,
+       0xa200, 0xffffffff, 0x00000100,
+       0xa204, 0xffffffff, 0x00000100,
+       0xa208, 0xffffffff, 0x00000100,
+       0xa20c, 0xffffffff, 0x00000100,
+       0x971c, 0xffffffff, 0x00000100,
+       0xd0c0, 0xffffffff, 0xff000100,
+       0x802c, 0xffffffff, 0x40000000,
+       0x915c, 0xffffffff, 0x00010000,
+       0x9160, 0xffffffff, 0x00030002,
+       0x9178, 0xffffffff, 0x00070000,
+       0x917c, 0xffffffff, 0x00030002,
+       0x9180, 0xffffffff, 0x00050004,
+       0x918c, 0xffffffff, 0x00010006,
+       0x9190, 0xffffffff, 0x00090008,
+       0x9194, 0xffffffff, 0x00070000,
+       0x9198, 0xffffffff, 0x00030002,
+       0x919c, 0xffffffff, 0x00050004,
+       0x91a8, 0xffffffff, 0x00010006,
+       0x91ac, 0xffffffff, 0x00090008,
+       0x91b0, 0xffffffff, 0x00070000,
+       0x91b4, 0xffffffff, 0x00030002,
+       0x91b8, 0xffffffff, 0x00050004,
+       0x91c4, 0xffffffff, 0x00010006,
+       0x91c8, 0xffffffff, 0x00090008,
+       0x91cc, 0xffffffff, 0x00070000,
+       0x91d0, 0xffffffff, 0x00030002,
+       0x91d4, 0xffffffff, 0x00050004,
+       0x91e0, 0xffffffff, 0x00010006,
+       0x91e4, 0xffffffff, 0x00090008,
+       0x91e8, 0xffffffff, 0x00000000,
+       0x91ec, 0xffffffff, 0x00070000,
+       0x91f0, 0xffffffff, 0x00030002,
+       0x91f4, 0xffffffff, 0x00050004,
+       0x9200, 0xffffffff, 0x00010006,
+       0x9204, 0xffffffff, 0x00090008,
+       0x9208, 0xffffffff, 0x00070000,
+       0x920c, 0xffffffff, 0x00030002,
+       0x9210, 0xffffffff, 0x00050004,
+       0x921c, 0xffffffff, 0x00010006,
+       0x9220, 0xffffffff, 0x00090008,
+       0x9224, 0xffffffff, 0x00070000,
+       0x9228, 0xffffffff, 0x00030002,
+       0x922c, 0xffffffff, 0x00050004,
+       0x9238, 0xffffffff, 0x00010006,
+       0x923c, 0xffffffff, 0x00090008,
+       0x9240, 0xffffffff, 0x00070000,
+       0x9244, 0xffffffff, 0x00030002,
+       0x9248, 0xffffffff, 0x00050004,
+       0x9254, 0xffffffff, 0x00010006,
+       0x9258, 0xffffffff, 0x00090008,
+       0x925c, 0xffffffff, 0x00070000,
+       0x9260, 0xffffffff, 0x00030002,
+       0x9264, 0xffffffff, 0x00050004,
+       0x9270, 0xffffffff, 0x00010006,
+       0x9274, 0xffffffff, 0x00090008,
+       0x9278, 0xffffffff, 0x00070000,
+       0x927c, 0xffffffff, 0x00030002,
+       0x9280, 0xffffffff, 0x00050004,
+       0x928c, 0xffffffff, 0x00010006,
+       0x9290, 0xffffffff, 0x00090008,
+       0x9294, 0xffffffff, 0x00000000,
+       0x929c, 0xffffffff, 0x00000001,
+       0x802c, 0xffffffff, 0xc0000000,
+       0x977c, 0xffffffff, 0x00000100,
+       0x3f80, 0xffffffff, 0x00000100,
+       0xa210, 0xffffffff, 0x00000100,
+       0xa214, 0xffffffff, 0x00000100,
+       0x4d8, 0xffffffff, 0x00000100,
+       0x9784, 0xffffffff, 0x00000100,
+       0x9698, 0xffffffff, 0x00000100,
+       0x4d4, 0xffffffff, 0x00000200,
+       0x30cc, 0xffffffff, 0x00000100,
+       0x802c, 0xffffffff, 0xc0000000
+};
+
+static const u32 supersumo_golden_registers[] =
+{
+       0x5eb4, 0xffffffff, 0x00000002,
+       0x5cc, 0xffffffff, 0x00000001,
+       0x7030, 0xffffffff, 0x00000011,
+       0x7c30, 0xffffffff, 0x00000011,
+       0x6104, 0x01000300, 0x00000000,
+       0x5bc0, 0x00300000, 0x00000000,
+       0x8c04, 0xffffffff, 0x40600060,
+       0x8c08, 0xffffffff, 0x001c001c,
+       0x8c20, 0xffffffff, 0x00800080,
+       0x8c24, 0xffffffff, 0x00800080,
+       0x8c18, 0xffffffff, 0x20202078,
+       0x8c1c, 0xffffffff, 0x00001010,
+       0x918c, 0xffffffff, 0x00010006,
+       0x91a8, 0xffffffff, 0x00010006,
+       0x91c4, 0xffffffff, 0x00010006,
+       0x91e0, 0xffffffff, 0x00010006,
+       0x9200, 0xffffffff, 0x00010006,
+       0x9150, 0xffffffff, 0x6e944040,
+       0x917c, 0xffffffff, 0x00030002,
+       0x9180, 0xffffffff, 0x00050004,
+       0x9198, 0xffffffff, 0x00030002,
+       0x919c, 0xffffffff, 0x00050004,
+       0x91b4, 0xffffffff, 0x00030002,
+       0x91b8, 0xffffffff, 0x00050004,
+       0x91d0, 0xffffffff, 0x00030002,
+       0x91d4, 0xffffffff, 0x00050004,
+       0x91f0, 0xffffffff, 0x00030002,
+       0x91f4, 0xffffffff, 0x00050004,
+       0x915c, 0xffffffff, 0x00010000,
+       0x9160, 0xffffffff, 0x00030002,
+       0x3f90, 0xffff0000, 0xff000000,
+       0x9178, 0xffffffff, 0x00070000,
+       0x9194, 0xffffffff, 0x00070000,
+       0x91b0, 0xffffffff, 0x00070000,
+       0x91cc, 0xffffffff, 0x00070000,
+       0x91ec, 0xffffffff, 0x00070000,
+       0x9148, 0xffff0000, 0xff000000,
+       0x9190, 0xffffffff, 0x00090008,
+       0x91ac, 0xffffffff, 0x00090008,
+       0x91c8, 0xffffffff, 0x00090008,
+       0x91e4, 0xffffffff, 0x00090008,
+       0x9204, 0xffffffff, 0x00090008,
+       0x3f94, 0xffff0000, 0xff000000,
+       0x914c, 0xffff0000, 0xff000000,
+       0x929c, 0xffffffff, 0x00000001,
+       0x8a18, 0xffffffff, 0x00000100,
+       0x8b28, 0xffffffff, 0x00000100,
+       0x9144, 0xffffffff, 0x00000100,
+       0x5644, 0xffffffff, 0x00000100,
+       0x9b7c, 0xffffffff, 0x00000000,
+       0x8030, 0xffffffff, 0x0000100a,
+       0x8a14, 0xffffffff, 0x00000007,
+       0x8b24, 0xffffffff, 0x00ff0fff,
+       0x8b10, 0xffffffff, 0x00000000,
+       0x28a4c, 0x06000000, 0x06000000,
+       0x4d8, 0xffffffff, 0x00000100,
+       0x913c, 0xffff000f, 0x0100000a,
+       0x960c, 0xffffffff, 0x54763210,
+       0x88c4, 0xffffffff, 0x000000c2,
+       0x88d4, 0xffffffff, 0x00000010,
+       0x8974, 0xffffffff, 0x00000000,
+       0xc78, 0x00000080, 0x00000080,
+       0x5e78, 0xffffffff, 0x001000f0,
+       0xd02c, 0xffffffff, 0x08421000,
+       0xa008, 0xffffffff, 0x00010000,
+       0x8d00, 0xffffffff, 0x100e4848,
+       0x8d04, 0xffffffff, 0x00164745,
+       0x8c00, 0xffffffff, 0xe4000003,
+       0x8cf0, 0x1fffffff, 0x08e00620,
+       0x28350, 0xffffffff, 0x00000000,
+       0x9508, 0xffffffff, 0x00000002
+};
+
+static const u32 sumo_golden_registers[] =
+{
+       0x900c, 0x00ffffff, 0x0017071f,
+       0x8c18, 0xffffffff, 0x10101060,
+       0x8c1c, 0xffffffff, 0x00001010,
+       0x8c30, 0x0000000f, 0x00000005,
+       0x9688, 0x0000000f, 0x00000007
+};
+
+static const u32 wrestler_golden_registers[] =
+{
+       0x5eb4, 0xffffffff, 0x00000002,
+       0x5cc, 0xffffffff, 0x00000001,
+       0x7030, 0xffffffff, 0x00000011,
+       0x7c30, 0xffffffff, 0x00000011,
+       0x6104, 0x01000300, 0x00000000,
+       0x5bc0, 0x00300000, 0x00000000,
+       0x918c, 0xffffffff, 0x00010006,
+       0x91a8, 0xffffffff, 0x00010006,
+       0x9150, 0xffffffff, 0x6e944040,
+       0x917c, 0xffffffff, 0x00030002,
+       0x9198, 0xffffffff, 0x00030002,
+       0x915c, 0xffffffff, 0x00010000,
+       0x3f90, 0xffff0000, 0xff000000,
+       0x9178, 0xffffffff, 0x00070000,
+       0x9194, 0xffffffff, 0x00070000,
+       0x9148, 0xffff0000, 0xff000000,
+       0x9190, 0xffffffff, 0x00090008,
+       0x91ac, 0xffffffff, 0x00090008,
+       0x3f94, 0xffff0000, 0xff000000,
+       0x914c, 0xffff0000, 0xff000000,
+       0x929c, 0xffffffff, 0x00000001,
+       0x8a18, 0xffffffff, 0x00000100,
+       0x8b28, 0xffffffff, 0x00000100,
+       0x9144, 0xffffffff, 0x00000100,
+       0x9b7c, 0xffffffff, 0x00000000,
+       0x8030, 0xffffffff, 0x0000100a,
+       0x8a14, 0xffffffff, 0x00000001,
+       0x8b24, 0xffffffff, 0x00ff0fff,
+       0x8b10, 0xffffffff, 0x00000000,
+       0x28a4c, 0x06000000, 0x06000000,
+       0x4d8, 0xffffffff, 0x00000100,
+       0x913c, 0xffff000f, 0x0100000a,
+       0x960c, 0xffffffff, 0x54763210,
+       0x88c4, 0xffffffff, 0x000000c2,
+       0x88d4, 0xffffffff, 0x00000010,
+       0x8974, 0xffffffff, 0x00000000,
+       0xc78, 0x00000080, 0x00000080,
+       0x5e78, 0xffffffff, 0x001000f0,
+       0xd02c, 0xffffffff, 0x08421000,
+       0xa008, 0xffffffff, 0x00010000,
+       0x8d00, 0xffffffff, 0x100e4848,
+       0x8d04, 0xffffffff, 0x00164745,
+       0x8c00, 0xffffffff, 0xe4000003,
+       0x8cf0, 0x1fffffff, 0x08e00410,
+       0x28350, 0xffffffff, 0x00000000,
+       0x9508, 0xffffffff, 0x00000002,
+       0x900c, 0xffffffff, 0x0017071f,
+       0x8c18, 0xffffffff, 0x10101060,
+       0x8c1c, 0xffffffff, 0x00001010
+};
+
+static const u32 barts_golden_registers[] =
+{
+       0x5eb4, 0xffffffff, 0x00000002,
+       0x5e78, 0x8f311ff1, 0x001000f0,
+       0x3f90, 0xffff0000, 0xff000000,
+       0x9148, 0xffff0000, 0xff000000,
+       0x3f94, 0xffff0000, 0xff000000,
+       0x914c, 0xffff0000, 0xff000000,
+       0xc78, 0x00000080, 0x00000080,
+       0xbd4, 0x70073777, 0x00010001,
+       0xd02c, 0xbfffff1f, 0x08421000,
+       0xd0b8, 0x03773777, 0x02011003,
+       0x5bc0, 0x00200000, 0x50100000,
+       0x98f8, 0x33773777, 0x02011003,
+       0x98fc, 0xffffffff, 0x76543210,
+       0x7030, 0x31000311, 0x00000011,
+       0x2f48, 0x00000007, 0x02011003,
+       0x6b28, 0x00000010, 0x00000012,
+       0x7728, 0x00000010, 0x00000012,
+       0x10328, 0x00000010, 0x00000012,
+       0x10f28, 0x00000010, 0x00000012,
+       0x11b28, 0x00000010, 0x00000012,
+       0x12728, 0x00000010, 0x00000012,
+       0x240c, 0x000007ff, 0x00000380,
+       0x8a14, 0xf000001f, 0x00000007,
+       0x8b24, 0x3fff3fff, 0x00ff0fff,
+       0x8b10, 0x0000ff0f, 0x00000000,
+       0x28a4c, 0x07ffffff, 0x06000000,
+       0x10c, 0x00000001, 0x00010003,
+       0xa02c, 0xffffffff, 0x0000009b,
+       0x913c, 0x0000000f, 0x0100000a,
+       0x8d00, 0xffff7f7f, 0x100e4848,
+       0x8d04, 0x00ffffff, 0x00164745,
+       0x8c00, 0xfffc0003, 0xe4000003,
+       0x8c04, 0xf8ff00ff, 0x40600060,
+       0x8c08, 0x00ff00ff, 0x001c001c,
+       0x8cf0, 0x1fff1fff, 0x08e00620,
+       0x8c20, 0x0fff0fff, 0x00800080,
+       0x8c24, 0x0fff0fff, 0x00800080,
+       0x8c18, 0xffffffff, 0x20202078,
+       0x8c1c, 0x0000ffff, 0x00001010,
+       0x28350, 0x00000f01, 0x00000000,
+       0x9508, 0x3700001f, 0x00000002,
+       0x960c, 0xffffffff, 0x54763210,
+       0x88c4, 0x001f3ae3, 0x000000c2,
+       0x88d4, 0x0000001f, 0x00000010,
+       0x8974, 0xffffffff, 0x00000000
+};
+
+static const u32 turks_golden_registers[] =
+{
+       0x5eb4, 0xffffffff, 0x00000002,
+       0x5e78, 0x8f311ff1, 0x001000f0,
+       0x8c8, 0x00003000, 0x00001070,
+       0x8cc, 0x000fffff, 0x00040035,
+       0x3f90, 0xffff0000, 0xfff00000,
+       0x9148, 0xffff0000, 0xfff00000,
+       0x3f94, 0xffff0000, 0xfff00000,
+       0x914c, 0xffff0000, 0xfff00000,
+       0xc78, 0x00000080, 0x00000080,
+       0xbd4, 0x00073007, 0x00010002,
+       0xd02c, 0xbfffff1f, 0x08421000,
+       0xd0b8, 0x03773777, 0x02010002,
+       0x5bc0, 0x00200000, 0x50100000,
+       0x98f8, 0x33773777, 0x00010002,
+       0x98fc, 0xffffffff, 0x33221100,
+       0x7030, 0x31000311, 0x00000011,
+       0x2f48, 0x33773777, 0x00010002,
+       0x6b28, 0x00000010, 0x00000012,
+       0x7728, 0x00000010, 0x00000012,
+       0x10328, 0x00000010, 0x00000012,
+       0x10f28, 0x00000010, 0x00000012,
+       0x11b28, 0x00000010, 0x00000012,
+       0x12728, 0x00000010, 0x00000012,
+       0x240c, 0x000007ff, 0x00000380,
+       0x8a14, 0xf000001f, 0x00000007,
+       0x8b24, 0x3fff3fff, 0x00ff0fff,
+       0x8b10, 0x0000ff0f, 0x00000000,
+       0x28a4c, 0x07ffffff, 0x06000000,
+       0x10c, 0x00000001, 0x00010003,
+       0xa02c, 0xffffffff, 0x0000009b,
+       0x913c, 0x0000000f, 0x0100000a,
+       0x8d00, 0xffff7f7f, 0x100e4848,
+       0x8d04, 0x00ffffff, 0x00164745,
+       0x8c00, 0xfffc0003, 0xe4000003,
+       0x8c04, 0xf8ff00ff, 0x40600060,
+       0x8c08, 0x00ff00ff, 0x001c001c,
+       0x8cf0, 0x1fff1fff, 0x08e00410,
+       0x8c20, 0x0fff0fff, 0x00800080,
+       0x8c24, 0x0fff0fff, 0x00800080,
+       0x8c18, 0xffffffff, 0x20202078,
+       0x8c1c, 0x0000ffff, 0x00001010,
+       0x28350, 0x00000f01, 0x00000000,
+       0x9508, 0x3700001f, 0x00000002,
+       0x960c, 0xffffffff, 0x54763210,
+       0x88c4, 0x001f3ae3, 0x000000c2,
+       0x88d4, 0x0000001f, 0x00000010,
+       0x8974, 0xffffffff, 0x00000000
+};
+
+static const u32 caicos_golden_registers[] =
+{
+       0x5eb4, 0xffffffff, 0x00000002,
+       0x5e78, 0x8f311ff1, 0x001000f0,
+       0x8c8, 0x00003420, 0x00001450,
+       0x8cc, 0x000fffff, 0x00040035,
+       0x3f90, 0xffff0000, 0xfffc0000,
+       0x9148, 0xffff0000, 0xfffc0000,
+       0x3f94, 0xffff0000, 0xfffc0000,
+       0x914c, 0xffff0000, 0xfffc0000,
+       0xc78, 0x00000080, 0x00000080,
+       0xbd4, 0x00073007, 0x00010001,
+       0xd02c, 0xbfffff1f, 0x08421000,
+       0xd0b8, 0x03773777, 0x02010001,
+       0x5bc0, 0x00200000, 0x50100000,
+       0x98f8, 0x33773777, 0x02010001,
+       0x98fc, 0xffffffff, 0x33221100,
+       0x7030, 0x31000311, 0x00000011,
+       0x2f48, 0x33773777, 0x02010001,
+       0x6b28, 0x00000010, 0x00000012,
+       0x7728, 0x00000010, 0x00000012,
+       0x10328, 0x00000010, 0x00000012,
+       0x10f28, 0x00000010, 0x00000012,
+       0x11b28, 0x00000010, 0x00000012,
+       0x12728, 0x00000010, 0x00000012,
+       0x240c, 0x000007ff, 0x00000380,
+       0x8a14, 0xf000001f, 0x00000001,
+       0x8b24, 0x3fff3fff, 0x00ff0fff,
+       0x8b10, 0x0000ff0f, 0x00000000,
+       0x28a4c, 0x07ffffff, 0x06000000,
+       0x10c, 0x00000001, 0x00010003,
+       0xa02c, 0xffffffff, 0x0000009b,
+       0x913c, 0x0000000f, 0x0100000a,
+       0x8d00, 0xffff7f7f, 0x100e4848,
+       0x8d04, 0x00ffffff, 0x00164745,
+       0x8c00, 0xfffc0003, 0xe4000003,
+       0x8c04, 0xf8ff00ff, 0x40600060,
+       0x8c08, 0x00ff00ff, 0x001c001c,
+       0x8cf0, 0x1fff1fff, 0x08e00410,
+       0x8c20, 0x0fff0fff, 0x00800080,
+       0x8c24, 0x0fff0fff, 0x00800080,
+       0x8c18, 0xffffffff, 0x20202078,
+       0x8c1c, 0x0000ffff, 0x00001010,
+       0x28350, 0x00000f01, 0x00000000,
+       0x9508, 0x3700001f, 0x00000002,
+       0x960c, 0xffffffff, 0x54763210,
+       0x88c4, 0x001f3ae3, 0x000000c2,
+       0x88d4, 0x0000001f, 0x00000010,
+       0x8974, 0xffffffff, 0x00000000
+};
+
+static void evergreen_init_golden_registers(struct radeon_device *rdev)
+{
+       switch (rdev->family) {
+       case CHIP_CYPRESS:
+       case CHIP_HEMLOCK:
+               radeon_program_register_sequence(rdev,
+                                                evergreen_golden_registers,
+                                                (const u32)ARRAY_SIZE(evergreen_golden_registers));
+               radeon_program_register_sequence(rdev,
+                                                evergreen_golden_registers2,
+                                                (const u32)ARRAY_SIZE(evergreen_golden_registers2));
+               radeon_program_register_sequence(rdev,
+                                                cypress_mgcg_init,
+                                                (const u32)ARRAY_SIZE(cypress_mgcg_init));
+               break;
+       case CHIP_JUNIPER:
+               radeon_program_register_sequence(rdev,
+                                                evergreen_golden_registers,
+                                                (const u32)ARRAY_SIZE(evergreen_golden_registers));
+               radeon_program_register_sequence(rdev,
+                                                evergreen_golden_registers2,
+                                                (const u32)ARRAY_SIZE(evergreen_golden_registers2));
+               radeon_program_register_sequence(rdev,
+                                                juniper_mgcg_init,
+                                                (const u32)ARRAY_SIZE(juniper_mgcg_init));
+               break;
+       case CHIP_REDWOOD:
+               radeon_program_register_sequence(rdev,
+                                                evergreen_golden_registers,
+                                                (const u32)ARRAY_SIZE(evergreen_golden_registers));
+               radeon_program_register_sequence(rdev,
+                                                evergreen_golden_registers2,
+                                                (const u32)ARRAY_SIZE(evergreen_golden_registers2));
+               radeon_program_register_sequence(rdev,
+                                                redwood_mgcg_init,
+                                                (const u32)ARRAY_SIZE(redwood_mgcg_init));
+               break;
+       case CHIP_CEDAR:
+               radeon_program_register_sequence(rdev,
+                                                cedar_golden_registers,
+                                                (const u32)ARRAY_SIZE(cedar_golden_registers));
+               radeon_program_register_sequence(rdev,
+                                                evergreen_golden_registers2,
+                                                (const u32)ARRAY_SIZE(evergreen_golden_registers2));
+               radeon_program_register_sequence(rdev,
+                                                cedar_mgcg_init,
+                                                (const u32)ARRAY_SIZE(cedar_mgcg_init));
+               break;
+       case CHIP_PALM:
+               radeon_program_register_sequence(rdev,
+                                                wrestler_golden_registers,
+                                                (const u32)ARRAY_SIZE(wrestler_golden_registers));
+               break;
+       case CHIP_SUMO:
+               radeon_program_register_sequence(rdev,
+                                                supersumo_golden_registers,
+                                                (const u32)ARRAY_SIZE(supersumo_golden_registers));
+               break;
+       case CHIP_SUMO2:
+               radeon_program_register_sequence(rdev,
+                                                supersumo_golden_registers,
+                                                (const u32)ARRAY_SIZE(supersumo_golden_registers));
+               radeon_program_register_sequence(rdev,
+                                                sumo_golden_registers,
+                                                (const u32)ARRAY_SIZE(sumo_golden_registers));
+               break;
+       case CHIP_BARTS:
+               radeon_program_register_sequence(rdev,
+                                                barts_golden_registers,
+                                                (const u32)ARRAY_SIZE(barts_golden_registers));
+               break;
+       case CHIP_TURKS:
+               radeon_program_register_sequence(rdev,
+                                                turks_golden_registers,
+                                                (const u32)ARRAY_SIZE(turks_golden_registers));
+               break;
+       case CHIP_CAICOS:
+               radeon_program_register_sequence(rdev,
+                                                caicos_golden_registers,
+                                                (const u32)ARRAY_SIZE(caicos_golden_registers));
+               break;
+       default:
+               break;
+       }
+}
+
 void evergreen_tiling_fields(unsigned tiling_flags, unsigned *bankw,
                             unsigned *bankh, unsigned *mtaspect,
                             unsigned *tile_split)
@@ -4046,6 +4904,9 @@ int evergreen_resume(struct radeon_device *rdev)
        /* post card */
        atom_asic_init(rdev->mode_info.atom_context);
 
+       /* init golden registers */
+       evergreen_init_golden_registers(rdev);
+
        rdev->accel_working = true;
        r = evergreen_startup(rdev);
        if (r) {
@@ -4109,6 +4970,8 @@ int evergreen_init(struct radeon_device *rdev)
                DRM_INFO("GPU not posted. posting now...\n");
                atom_asic_init(rdev->mode_info.atom_context);
        }
+       /* init golden registers */
+       evergreen_init_golden_registers(rdev);
        /* Initialize scratch registers */
        r600_scratch_init(rdev);
        /* Initialize surface registers */