Loading drivers/gpu/drm/radeon/ni.c +281 −0 Original line number Diff line number Diff line Loading @@ -78,6 +78,282 @@ MODULE_FIRMWARE("radeon/ARUBA_pfp.bin"); MODULE_FIRMWARE("radeon/ARUBA_me.bin"); MODULE_FIRMWARE("radeon/ARUBA_rlc.bin"); static const u32 cayman_golden_registers2[] = { 0x3e5c, 0xffffffff, 0x00000000, 0x3e48, 0xffffffff, 0x00000000, 0x3e4c, 0xffffffff, 0x00000000, 0x3e64, 0xffffffff, 0x00000000, 0x3e50, 0xffffffff, 0x00000000, 0x3e60, 0xffffffff, 0x00000000 }; static const u32 cayman_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, 0x00011003, 0xd02c, 0xbfffff1f, 0x08421000, 0xd0b8, 0x73773777, 0x02011003, 0x5bc0, 0x00200000, 0x50100000, 0x98f8, 0x33773777, 0x02011003, 0x98fc, 0xffffffff, 0x76541032, 0x7030, 0x31000311, 0x00000011, 0x2f48, 0x33773777, 0x42010001, 0x6b28, 0x00000010, 0x00000012, 0x7728, 0x00000010, 0x00000012, 0x10328, 0x00000010, 0x00000012, 0x10f28, 0x00000010, 0x00000012, 0x11b28, 0x00000010, 0x00000012, 0x12728, 0x00000010, 0x00000012, 0x240c, 0x000007ff, 0x00000000, 0x8a14, 0xf000001f, 0x00000007, 0x8b24, 0x3fff3fff, 0x00ff0fff, 0x8b10, 0x0000ff0f, 0x00000000, 0x28a4c, 0x07ffffff, 0x06000000, 0x10c, 0x00000001, 0x00010003, 0xa02c, 0xffffffff, 0x0000009b, 0x913c, 0x0000010f, 0x01000100, 0x8c04, 0xf8ff00ff, 0x40600060, 0x28350, 0x00000f01, 0x00000000, 0x9508, 0x3700001f, 0x00000002, 0x960c, 0xffffffff, 0x54763210, 0x88c4, 0x001f3ae3, 0x00000082, 0x88d0, 0xffffffff, 0x0f40df40, 0x88d4, 0x0000001f, 0x00000010, 0x8974, 0xffffffff, 0x00000000 }; static const u32 dvst_golden_registers2[] = { 0x8f8, 0xffffffff, 0, 0x8fc, 0x00380000, 0, 0x8f8, 0xffffffff, 1, 0x8fc, 0x0e000000, 0 }; static const u32 dvst_golden_registers[] = { 0x690, 0x3fff3fff, 0x20c00033, 0x918c, 0x0fff0fff, 0x00010006, 0x91a8, 0x0fff0fff, 0x00010006, 0x9150, 0xffffdfff, 0x6e944040, 0x917c, 0x0fff0fff, 0x00030002, 0x9198, 0x0fff0fff, 0x00030002, 0x915c, 0x0fff0fff, 0x00010000, 0x3f90, 0xffff0001, 0xff000000, 0x9178, 0x0fff0fff, 0x00070000, 0x9194, 0x0fff0fff, 0x00070000, 0x9148, 0xffff0001, 0xff000000, 0x9190, 0x0fff0fff, 0x00090008, 0x91ac, 0x0fff0fff, 0x00090008, 0x3f94, 0xffff0000, 0xff000000, 0x914c, 0xffff0000, 0xff000000, 0x929c, 0x00000fff, 0x00000001, 0x55e4, 0xff607fff, 0xfc000100, 0x8a18, 0xff000fff, 0x00000100, 0x8b28, 0xff000fff, 0x00000100, 0x9144, 0xfffc0fff, 0x00000100, 0x6ed8, 0x00010101, 0x00010000, 0x9830, 0xffffffff, 0x00000000, 0x9834, 0xf00fffff, 0x00000400, 0x9838, 0xfffffffe, 0x00000000, 0xd0c0, 0xff000fff, 0x00000100, 0xd02c, 0xbfffff1f, 0x08421000, 0xd0b8, 0x73773777, 0x12010001, 0x5bb0, 0x000000f0, 0x00000070, 0x98f8, 0x73773777, 0x12010001, 0x98fc, 0xffffffff, 0x00000010, 0x9b7c, 0x00ff0000, 0x00fc0000, 0x8030, 0x00001f0f, 0x0000100a, 0x2f48, 0x73773777, 0x12010001, 0x2408, 0x00030000, 0x000c007f, 0x8a14, 0xf000003f, 0x00000007, 0x8b24, 0x3fff3fff, 0x00ff0fff, 0x8b10, 0x0000ff0f, 0x00000000, 0x28a4c, 0x07ffffff, 0x06000000, 0x4d8, 0x00000fff, 0x00000100, 0xa008, 0xffffffff, 0x00010000, 0x913c, 0xffff03ff, 0x01000100, 0x8c00, 0x000000ff, 0x00000003, 0x8c04, 0xf8ff00ff, 0x40600060, 0x8cf0, 0x1fff1fff, 0x08e00410, 0x28350, 0x00000f01, 0x00000000, 0x9508, 0xf700071f, 0x00000002, 0x960c, 0xffffffff, 0x54763210, 0x20ef8, 0x01ff01ff, 0x00000002, 0x20e98, 0xfffffbff, 0x00200000, 0x2015c, 0xffffffff, 0x00000f40, 0x88c4, 0x001f3ae3, 0x00000082, 0x8978, 0x3fffffff, 0x04050140, 0x88d4, 0x0000001f, 0x00000010, 0x8974, 0xffffffff, 0x00000000 }; static const u32 scrapper_golden_registers[] = { 0x690, 0x3fff3fff, 0x20c00033, 0x918c, 0x0fff0fff, 0x00010006, 0x918c, 0x0fff0fff, 0x00010006, 0x91a8, 0x0fff0fff, 0x00010006, 0x91a8, 0x0fff0fff, 0x00010006, 0x9150, 0xffffdfff, 0x6e944040, 0x9150, 0xffffdfff, 0x6e944040, 0x917c, 0x0fff0fff, 0x00030002, 0x917c, 0x0fff0fff, 0x00030002, 0x9198, 0x0fff0fff, 0x00030002, 0x9198, 0x0fff0fff, 0x00030002, 0x915c, 0x0fff0fff, 0x00010000, 0x915c, 0x0fff0fff, 0x00010000, 0x3f90, 0xffff0001, 0xff000000, 0x3f90, 0xffff0001, 0xff000000, 0x9178, 0x0fff0fff, 0x00070000, 0x9178, 0x0fff0fff, 0x00070000, 0x9194, 0x0fff0fff, 0x00070000, 0x9194, 0x0fff0fff, 0x00070000, 0x9148, 0xffff0001, 0xff000000, 0x9148, 0xffff0001, 0xff000000, 0x9190, 0x0fff0fff, 0x00090008, 0x9190, 0x0fff0fff, 0x00090008, 0x91ac, 0x0fff0fff, 0x00090008, 0x91ac, 0x0fff0fff, 0x00090008, 0x3f94, 0xffff0000, 0xff000000, 0x3f94, 0xffff0000, 0xff000000, 0x914c, 0xffff0000, 0xff000000, 0x914c, 0xffff0000, 0xff000000, 0x929c, 0x00000fff, 0x00000001, 0x929c, 0x00000fff, 0x00000001, 0x55e4, 0xff607fff, 0xfc000100, 0x8a18, 0xff000fff, 0x00000100, 0x8a18, 0xff000fff, 0x00000100, 0x8b28, 0xff000fff, 0x00000100, 0x8b28, 0xff000fff, 0x00000100, 0x9144, 0xfffc0fff, 0x00000100, 0x9144, 0xfffc0fff, 0x00000100, 0x6ed8, 0x00010101, 0x00010000, 0x9830, 0xffffffff, 0x00000000, 0x9830, 0xffffffff, 0x00000000, 0x9834, 0xf00fffff, 0x00000400, 0x9834, 0xf00fffff, 0x00000400, 0x9838, 0xfffffffe, 0x00000000, 0x9838, 0xfffffffe, 0x00000000, 0xd0c0, 0xff000fff, 0x00000100, 0xd02c, 0xbfffff1f, 0x08421000, 0xd02c, 0xbfffff1f, 0x08421000, 0xd0b8, 0x73773777, 0x12010001, 0xd0b8, 0x73773777, 0x12010001, 0x5bb0, 0x000000f0, 0x00000070, 0x98f8, 0x73773777, 0x12010001, 0x98f8, 0x73773777, 0x12010001, 0x98fc, 0xffffffff, 0x00000010, 0x98fc, 0xffffffff, 0x00000010, 0x9b7c, 0x00ff0000, 0x00fc0000, 0x9b7c, 0x00ff0000, 0x00fc0000, 0x8030, 0x00001f0f, 0x0000100a, 0x8030, 0x00001f0f, 0x0000100a, 0x2f48, 0x73773777, 0x12010001, 0x2f48, 0x73773777, 0x12010001, 0x2408, 0x00030000, 0x000c007f, 0x8a14, 0xf000003f, 0x00000007, 0x8a14, 0xf000003f, 0x00000007, 0x8b24, 0x3fff3fff, 0x00ff0fff, 0x8b24, 0x3fff3fff, 0x00ff0fff, 0x8b10, 0x0000ff0f, 0x00000000, 0x8b10, 0x0000ff0f, 0x00000000, 0x28a4c, 0x07ffffff, 0x06000000, 0x28a4c, 0x07ffffff, 0x06000000, 0x4d8, 0x00000fff, 0x00000100, 0x4d8, 0x00000fff, 0x00000100, 0xa008, 0xffffffff, 0x00010000, 0xa008, 0xffffffff, 0x00010000, 0x913c, 0xffff03ff, 0x01000100, 0x913c, 0xffff03ff, 0x01000100, 0x90e8, 0x001fffff, 0x010400c0, 0x8c00, 0x000000ff, 0x00000003, 0x8c00, 0x000000ff, 0x00000003, 0x8c04, 0xf8ff00ff, 0x40600060, 0x8c04, 0xf8ff00ff, 0x40600060, 0x8c30, 0x0000000f, 0x00040005, 0x8cf0, 0x1fff1fff, 0x08e00410, 0x8cf0, 0x1fff1fff, 0x08e00410, 0x900c, 0x00ffffff, 0x0017071f, 0x28350, 0x00000f01, 0x00000000, 0x28350, 0x00000f01, 0x00000000, 0x9508, 0xf700071f, 0x00000002, 0x9508, 0xf700071f, 0x00000002, 0x9688, 0x00300000, 0x0017000f, 0x960c, 0xffffffff, 0x54763210, 0x960c, 0xffffffff, 0x54763210, 0x20ef8, 0x01ff01ff, 0x00000002, 0x20e98, 0xfffffbff, 0x00200000, 0x2015c, 0xffffffff, 0x00000f40, 0x88c4, 0x001f3ae3, 0x00000082, 0x88c4, 0x001f3ae3, 0x00000082, 0x8978, 0x3fffffff, 0x04050140, 0x8978, 0x3fffffff, 0x04050140, 0x88d4, 0x0000001f, 0x00000010, 0x88d4, 0x0000001f, 0x00000010, 0x8974, 0xffffffff, 0x00000000, 0x8974, 0xffffffff, 0x00000000 }; static void ni_init_golden_registers(struct radeon_device *rdev) { switch (rdev->family) { case CHIP_CAYMAN: radeon_program_register_sequence(rdev, cayman_golden_registers, (const u32)ARRAY_SIZE(cayman_golden_registers)); radeon_program_register_sequence(rdev, cayman_golden_registers2, (const u32)ARRAY_SIZE(cayman_golden_registers2)); break; case CHIP_ARUBA: if ((rdev->pdev->device == 0x9900) || (rdev->pdev->device == 0x9901) || (rdev->pdev->device == 0x9903) || (rdev->pdev->device == 0x9904) || (rdev->pdev->device == 0x9905) || (rdev->pdev->device == 0x9906) || (rdev->pdev->device == 0x9907) || (rdev->pdev->device == 0x9908) || (rdev->pdev->device == 0x9909) || (rdev->pdev->device == 0x990A) || (rdev->pdev->device == 0x990B) || (rdev->pdev->device == 0x990C) || (rdev->pdev->device == 0x990D) || (rdev->pdev->device == 0x990E) || (rdev->pdev->device == 0x990F) || (rdev->pdev->device == 0x9910) || (rdev->pdev->device == 0x9913) || (rdev->pdev->device == 0x9917) || (rdev->pdev->device == 0x9918)) { radeon_program_register_sequence(rdev, dvst_golden_registers, (const u32)ARRAY_SIZE(dvst_golden_registers)); radeon_program_register_sequence(rdev, dvst_golden_registers2, (const u32)ARRAY_SIZE(dvst_golden_registers2)); } else { radeon_program_register_sequence(rdev, scrapper_golden_registers, (const u32)ARRAY_SIZE(scrapper_golden_registers)); radeon_program_register_sequence(rdev, dvst_golden_registers2, (const u32)ARRAY_SIZE(dvst_golden_registers2)); } break; default: break; } } #define BTC_IO_MC_REGS_SIZE 29 static const u32 barts_io_mc_regs[BTC_IO_MC_REGS_SIZE][2] = { Loading Loading @@ -1830,6 +2106,9 @@ int cayman_resume(struct radeon_device *rdev) /* post card */ atom_asic_init(rdev->mode_info.atom_context); /* init golden registers */ ni_init_golden_registers(rdev); rdev->accel_working = true; r = cayman_startup(rdev); if (r) { Loading Loading @@ -1888,6 +2167,8 @@ int cayman_init(struct radeon_device *rdev) DRM_INFO("GPU not posted. posting now...\n"); atom_asic_init(rdev->mode_info.atom_context); } /* init golden registers */ ni_init_golden_registers(rdev); /* Initialize scratch registers */ r600_scratch_init(rdev); /* Initialize surface registers */ Loading Loading
drivers/gpu/drm/radeon/ni.c +281 −0 Original line number Diff line number Diff line Loading @@ -78,6 +78,282 @@ MODULE_FIRMWARE("radeon/ARUBA_pfp.bin"); MODULE_FIRMWARE("radeon/ARUBA_me.bin"); MODULE_FIRMWARE("radeon/ARUBA_rlc.bin"); static const u32 cayman_golden_registers2[] = { 0x3e5c, 0xffffffff, 0x00000000, 0x3e48, 0xffffffff, 0x00000000, 0x3e4c, 0xffffffff, 0x00000000, 0x3e64, 0xffffffff, 0x00000000, 0x3e50, 0xffffffff, 0x00000000, 0x3e60, 0xffffffff, 0x00000000 }; static const u32 cayman_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, 0x00011003, 0xd02c, 0xbfffff1f, 0x08421000, 0xd0b8, 0x73773777, 0x02011003, 0x5bc0, 0x00200000, 0x50100000, 0x98f8, 0x33773777, 0x02011003, 0x98fc, 0xffffffff, 0x76541032, 0x7030, 0x31000311, 0x00000011, 0x2f48, 0x33773777, 0x42010001, 0x6b28, 0x00000010, 0x00000012, 0x7728, 0x00000010, 0x00000012, 0x10328, 0x00000010, 0x00000012, 0x10f28, 0x00000010, 0x00000012, 0x11b28, 0x00000010, 0x00000012, 0x12728, 0x00000010, 0x00000012, 0x240c, 0x000007ff, 0x00000000, 0x8a14, 0xf000001f, 0x00000007, 0x8b24, 0x3fff3fff, 0x00ff0fff, 0x8b10, 0x0000ff0f, 0x00000000, 0x28a4c, 0x07ffffff, 0x06000000, 0x10c, 0x00000001, 0x00010003, 0xa02c, 0xffffffff, 0x0000009b, 0x913c, 0x0000010f, 0x01000100, 0x8c04, 0xf8ff00ff, 0x40600060, 0x28350, 0x00000f01, 0x00000000, 0x9508, 0x3700001f, 0x00000002, 0x960c, 0xffffffff, 0x54763210, 0x88c4, 0x001f3ae3, 0x00000082, 0x88d0, 0xffffffff, 0x0f40df40, 0x88d4, 0x0000001f, 0x00000010, 0x8974, 0xffffffff, 0x00000000 }; static const u32 dvst_golden_registers2[] = { 0x8f8, 0xffffffff, 0, 0x8fc, 0x00380000, 0, 0x8f8, 0xffffffff, 1, 0x8fc, 0x0e000000, 0 }; static const u32 dvst_golden_registers[] = { 0x690, 0x3fff3fff, 0x20c00033, 0x918c, 0x0fff0fff, 0x00010006, 0x91a8, 0x0fff0fff, 0x00010006, 0x9150, 0xffffdfff, 0x6e944040, 0x917c, 0x0fff0fff, 0x00030002, 0x9198, 0x0fff0fff, 0x00030002, 0x915c, 0x0fff0fff, 0x00010000, 0x3f90, 0xffff0001, 0xff000000, 0x9178, 0x0fff0fff, 0x00070000, 0x9194, 0x0fff0fff, 0x00070000, 0x9148, 0xffff0001, 0xff000000, 0x9190, 0x0fff0fff, 0x00090008, 0x91ac, 0x0fff0fff, 0x00090008, 0x3f94, 0xffff0000, 0xff000000, 0x914c, 0xffff0000, 0xff000000, 0x929c, 0x00000fff, 0x00000001, 0x55e4, 0xff607fff, 0xfc000100, 0x8a18, 0xff000fff, 0x00000100, 0x8b28, 0xff000fff, 0x00000100, 0x9144, 0xfffc0fff, 0x00000100, 0x6ed8, 0x00010101, 0x00010000, 0x9830, 0xffffffff, 0x00000000, 0x9834, 0xf00fffff, 0x00000400, 0x9838, 0xfffffffe, 0x00000000, 0xd0c0, 0xff000fff, 0x00000100, 0xd02c, 0xbfffff1f, 0x08421000, 0xd0b8, 0x73773777, 0x12010001, 0x5bb0, 0x000000f0, 0x00000070, 0x98f8, 0x73773777, 0x12010001, 0x98fc, 0xffffffff, 0x00000010, 0x9b7c, 0x00ff0000, 0x00fc0000, 0x8030, 0x00001f0f, 0x0000100a, 0x2f48, 0x73773777, 0x12010001, 0x2408, 0x00030000, 0x000c007f, 0x8a14, 0xf000003f, 0x00000007, 0x8b24, 0x3fff3fff, 0x00ff0fff, 0x8b10, 0x0000ff0f, 0x00000000, 0x28a4c, 0x07ffffff, 0x06000000, 0x4d8, 0x00000fff, 0x00000100, 0xa008, 0xffffffff, 0x00010000, 0x913c, 0xffff03ff, 0x01000100, 0x8c00, 0x000000ff, 0x00000003, 0x8c04, 0xf8ff00ff, 0x40600060, 0x8cf0, 0x1fff1fff, 0x08e00410, 0x28350, 0x00000f01, 0x00000000, 0x9508, 0xf700071f, 0x00000002, 0x960c, 0xffffffff, 0x54763210, 0x20ef8, 0x01ff01ff, 0x00000002, 0x20e98, 0xfffffbff, 0x00200000, 0x2015c, 0xffffffff, 0x00000f40, 0x88c4, 0x001f3ae3, 0x00000082, 0x8978, 0x3fffffff, 0x04050140, 0x88d4, 0x0000001f, 0x00000010, 0x8974, 0xffffffff, 0x00000000 }; static const u32 scrapper_golden_registers[] = { 0x690, 0x3fff3fff, 0x20c00033, 0x918c, 0x0fff0fff, 0x00010006, 0x918c, 0x0fff0fff, 0x00010006, 0x91a8, 0x0fff0fff, 0x00010006, 0x91a8, 0x0fff0fff, 0x00010006, 0x9150, 0xffffdfff, 0x6e944040, 0x9150, 0xffffdfff, 0x6e944040, 0x917c, 0x0fff0fff, 0x00030002, 0x917c, 0x0fff0fff, 0x00030002, 0x9198, 0x0fff0fff, 0x00030002, 0x9198, 0x0fff0fff, 0x00030002, 0x915c, 0x0fff0fff, 0x00010000, 0x915c, 0x0fff0fff, 0x00010000, 0x3f90, 0xffff0001, 0xff000000, 0x3f90, 0xffff0001, 0xff000000, 0x9178, 0x0fff0fff, 0x00070000, 0x9178, 0x0fff0fff, 0x00070000, 0x9194, 0x0fff0fff, 0x00070000, 0x9194, 0x0fff0fff, 0x00070000, 0x9148, 0xffff0001, 0xff000000, 0x9148, 0xffff0001, 0xff000000, 0x9190, 0x0fff0fff, 0x00090008, 0x9190, 0x0fff0fff, 0x00090008, 0x91ac, 0x0fff0fff, 0x00090008, 0x91ac, 0x0fff0fff, 0x00090008, 0x3f94, 0xffff0000, 0xff000000, 0x3f94, 0xffff0000, 0xff000000, 0x914c, 0xffff0000, 0xff000000, 0x914c, 0xffff0000, 0xff000000, 0x929c, 0x00000fff, 0x00000001, 0x929c, 0x00000fff, 0x00000001, 0x55e4, 0xff607fff, 0xfc000100, 0x8a18, 0xff000fff, 0x00000100, 0x8a18, 0xff000fff, 0x00000100, 0x8b28, 0xff000fff, 0x00000100, 0x8b28, 0xff000fff, 0x00000100, 0x9144, 0xfffc0fff, 0x00000100, 0x9144, 0xfffc0fff, 0x00000100, 0x6ed8, 0x00010101, 0x00010000, 0x9830, 0xffffffff, 0x00000000, 0x9830, 0xffffffff, 0x00000000, 0x9834, 0xf00fffff, 0x00000400, 0x9834, 0xf00fffff, 0x00000400, 0x9838, 0xfffffffe, 0x00000000, 0x9838, 0xfffffffe, 0x00000000, 0xd0c0, 0xff000fff, 0x00000100, 0xd02c, 0xbfffff1f, 0x08421000, 0xd02c, 0xbfffff1f, 0x08421000, 0xd0b8, 0x73773777, 0x12010001, 0xd0b8, 0x73773777, 0x12010001, 0x5bb0, 0x000000f0, 0x00000070, 0x98f8, 0x73773777, 0x12010001, 0x98f8, 0x73773777, 0x12010001, 0x98fc, 0xffffffff, 0x00000010, 0x98fc, 0xffffffff, 0x00000010, 0x9b7c, 0x00ff0000, 0x00fc0000, 0x9b7c, 0x00ff0000, 0x00fc0000, 0x8030, 0x00001f0f, 0x0000100a, 0x8030, 0x00001f0f, 0x0000100a, 0x2f48, 0x73773777, 0x12010001, 0x2f48, 0x73773777, 0x12010001, 0x2408, 0x00030000, 0x000c007f, 0x8a14, 0xf000003f, 0x00000007, 0x8a14, 0xf000003f, 0x00000007, 0x8b24, 0x3fff3fff, 0x00ff0fff, 0x8b24, 0x3fff3fff, 0x00ff0fff, 0x8b10, 0x0000ff0f, 0x00000000, 0x8b10, 0x0000ff0f, 0x00000000, 0x28a4c, 0x07ffffff, 0x06000000, 0x28a4c, 0x07ffffff, 0x06000000, 0x4d8, 0x00000fff, 0x00000100, 0x4d8, 0x00000fff, 0x00000100, 0xa008, 0xffffffff, 0x00010000, 0xa008, 0xffffffff, 0x00010000, 0x913c, 0xffff03ff, 0x01000100, 0x913c, 0xffff03ff, 0x01000100, 0x90e8, 0x001fffff, 0x010400c0, 0x8c00, 0x000000ff, 0x00000003, 0x8c00, 0x000000ff, 0x00000003, 0x8c04, 0xf8ff00ff, 0x40600060, 0x8c04, 0xf8ff00ff, 0x40600060, 0x8c30, 0x0000000f, 0x00040005, 0x8cf0, 0x1fff1fff, 0x08e00410, 0x8cf0, 0x1fff1fff, 0x08e00410, 0x900c, 0x00ffffff, 0x0017071f, 0x28350, 0x00000f01, 0x00000000, 0x28350, 0x00000f01, 0x00000000, 0x9508, 0xf700071f, 0x00000002, 0x9508, 0xf700071f, 0x00000002, 0x9688, 0x00300000, 0x0017000f, 0x960c, 0xffffffff, 0x54763210, 0x960c, 0xffffffff, 0x54763210, 0x20ef8, 0x01ff01ff, 0x00000002, 0x20e98, 0xfffffbff, 0x00200000, 0x2015c, 0xffffffff, 0x00000f40, 0x88c4, 0x001f3ae3, 0x00000082, 0x88c4, 0x001f3ae3, 0x00000082, 0x8978, 0x3fffffff, 0x04050140, 0x8978, 0x3fffffff, 0x04050140, 0x88d4, 0x0000001f, 0x00000010, 0x88d4, 0x0000001f, 0x00000010, 0x8974, 0xffffffff, 0x00000000, 0x8974, 0xffffffff, 0x00000000 }; static void ni_init_golden_registers(struct radeon_device *rdev) { switch (rdev->family) { case CHIP_CAYMAN: radeon_program_register_sequence(rdev, cayman_golden_registers, (const u32)ARRAY_SIZE(cayman_golden_registers)); radeon_program_register_sequence(rdev, cayman_golden_registers2, (const u32)ARRAY_SIZE(cayman_golden_registers2)); break; case CHIP_ARUBA: if ((rdev->pdev->device == 0x9900) || (rdev->pdev->device == 0x9901) || (rdev->pdev->device == 0x9903) || (rdev->pdev->device == 0x9904) || (rdev->pdev->device == 0x9905) || (rdev->pdev->device == 0x9906) || (rdev->pdev->device == 0x9907) || (rdev->pdev->device == 0x9908) || (rdev->pdev->device == 0x9909) || (rdev->pdev->device == 0x990A) || (rdev->pdev->device == 0x990B) || (rdev->pdev->device == 0x990C) || (rdev->pdev->device == 0x990D) || (rdev->pdev->device == 0x990E) || (rdev->pdev->device == 0x990F) || (rdev->pdev->device == 0x9910) || (rdev->pdev->device == 0x9913) || (rdev->pdev->device == 0x9917) || (rdev->pdev->device == 0x9918)) { radeon_program_register_sequence(rdev, dvst_golden_registers, (const u32)ARRAY_SIZE(dvst_golden_registers)); radeon_program_register_sequence(rdev, dvst_golden_registers2, (const u32)ARRAY_SIZE(dvst_golden_registers2)); } else { radeon_program_register_sequence(rdev, scrapper_golden_registers, (const u32)ARRAY_SIZE(scrapper_golden_registers)); radeon_program_register_sequence(rdev, dvst_golden_registers2, (const u32)ARRAY_SIZE(dvst_golden_registers2)); } break; default: break; } } #define BTC_IO_MC_REGS_SIZE 29 static const u32 barts_io_mc_regs[BTC_IO_MC_REGS_SIZE][2] = { Loading Loading @@ -1830,6 +2106,9 @@ int cayman_resume(struct radeon_device *rdev) /* post card */ atom_asic_init(rdev->mode_info.atom_context); /* init golden registers */ ni_init_golden_registers(rdev); rdev->accel_working = true; r = cayman_startup(rdev); if (r) { Loading Loading @@ -1888,6 +2167,8 @@ int cayman_init(struct radeon_device *rdev) DRM_INFO("GPU not posted. posting now...\n"); atom_asic_init(rdev->mode_info.atom_context); } /* init golden registers */ ni_init_golden_registers(rdev); /* Initialize scratch registers */ r600_scratch_init(rdev); /* Initialize surface registers */ Loading