drm/radeon/kms: add dpm support for btc (v3)
[deliverable/linux.git] / drivers / gpu / drm / radeon / rv770_smc.c
index 168aedbffa7e72e746d88afc2d4381119f1fdb81..0078c599248f42f499e14212453fdc4fc8a58a00 100644 (file)
@@ -194,6 +194,66 @@ static const u8 cypress_smc_int_vectors[] =
        0x04, 0xF6, 0x04, 0xF6
 };
 
+static const u8 barts_smc_int_vectors[] =
+{
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x12, 0xAA,
+       0x0C, 0x2F, 0x15, 0xF6,
+       0x15, 0xF6, 0x05, 0x0A,
+       0x05, 0x0A, 0x05, 0x0A
+};
+
+static const u8 turks_smc_int_vectors[] =
+{
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x12, 0xAA,
+       0x0C, 0x2F, 0x15, 0xF6,
+       0x15, 0xF6, 0x05, 0x0A,
+       0x05, 0x0A, 0x05, 0x0A
+};
+
+static const u8 caicos_smc_int_vectors[] =
+{
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x0C, 0x14,
+       0x0C, 0x14, 0x12, 0xAA,
+       0x0C, 0x2F, 0x15, 0xF6,
+       0x15, 0xF6, 0x05, 0x0A,
+       0x05, 0x0A, 0x05, 0x0A
+};
+
 int rv770_set_smc_sram_address(struct radeon_device *rdev,
                               u16 smc_address, u16 limit)
 {
@@ -463,6 +523,27 @@ int rv770_load_smc_ucode(struct radeon_device *rdev,
                int_vect_start_address = CYPRESS_SMC_INT_VECTOR_START;
                int_vect_size = CYPRESS_SMC_INT_VECTOR_SIZE;
                break;
+       case CHIP_BARTS:
+               ucode_start_address = BARTS_SMC_UCODE_START;
+               ucode_size = BARTS_SMC_UCODE_SIZE;
+               int_vect = (const u8 *)&barts_smc_int_vectors;
+               int_vect_start_address = BARTS_SMC_INT_VECTOR_START;
+               int_vect_size = BARTS_SMC_INT_VECTOR_SIZE;
+               break;
+       case CHIP_TURKS:
+               ucode_start_address = TURKS_SMC_UCODE_START;
+               ucode_size = TURKS_SMC_UCODE_SIZE;
+               int_vect = (const u8 *)&turks_smc_int_vectors;
+               int_vect_start_address = TURKS_SMC_INT_VECTOR_START;
+               int_vect_size = TURKS_SMC_INT_VECTOR_SIZE;
+               break;
+       case CHIP_CAICOS:
+               ucode_start_address = CAICOS_SMC_UCODE_START;
+               ucode_size = CAICOS_SMC_UCODE_SIZE;
+               int_vect = (const u8 *)&caicos_smc_int_vectors;
+               int_vect_start_address = CAICOS_SMC_INT_VECTOR_START;
+               int_vect_size = CAICOS_SMC_INT_VECTOR_SIZE;
+               break;
        default:
                DRM_ERROR("unknown asic in smc ucode loader\n");
                BUG();
This page took 0.039557 seconds and 5 git commands to generate.