if (adreno_is_a650(adreno_gpu) ||
            adreno_is_a660(adreno_gpu) ||
+           adreno_is_a690(adreno_gpu) ||
            adreno_is_a730(adreno_gpu) ||
            adreno_is_a740_family(adreno_gpu)) {
                /* TODO: get ddr type from bootloader and use 2 for LPDDR4 */
                uavflagprd_inv = 2;
        }
 
-       if (adreno_is_a690(adreno_gpu)) {
-               hbb_lo = 2;
-               amsbc = 1;
-               rgb565_predicator = 1;
-               uavflagprd_inv = 2;
-       }
-
        if (adreno_is_7c3(adreno_gpu)) {
                hbb_lo = 1;
                amsbc = 1;
        /* Setting the primFifo thresholds default values,
         * and vccCacheSkipDis=1 bit (0x200) for A640 and newer
        */
-       if (adreno_is_a650(adreno_gpu) || adreno_is_a660(adreno_gpu) || adreno_is_a690(adreno_gpu))
+       if (adreno_is_a690(adreno_gpu))
+               gpu_write(gpu, REG_A6XX_PC_DBG_ECO_CNTL, 0x00800200);
+       else if (adreno_is_a650(adreno_gpu) || adreno_is_a660(adreno_gpu))
                gpu_write(gpu, REG_A6XX_PC_DBG_ECO_CNTL, 0x00300200);
        else if (adreno_is_a640_family(adreno_gpu) || adreno_is_7c3(adreno_gpu))
                gpu_write(gpu, REG_A6XX_PC_DBG_ECO_CNTL, 0x00200200);
        if (adreno_is_a730(adreno_gpu) ||
            adreno_is_a740_family(adreno_gpu))
                gpu_write(gpu, REG_A6XX_RBBM_INTERFACE_HANG_INT_CNTL, (1 << 30) | 0xcfffff);
+       else if (adreno_is_a690(adreno_gpu))
+               gpu_write(gpu, REG_A6XX_RBBM_INTERFACE_HANG_INT_CNTL, (1 << 30) | 0x4fffff);
        else if (adreno_is_a619(adreno_gpu))
                gpu_write(gpu, REG_A6XX_RBBM_INTERFACE_HANG_INT_CNTL, (1 << 30) | 0x3fffff);
        else if (adreno_is_a610(adreno_gpu))
        a6xx_set_cp_protect(gpu);
 
        if (adreno_is_a660_family(adreno_gpu)) {
-               gpu_write(gpu, REG_A6XX_CP_CHICKEN_DBG, 0x1);
+               if (adreno_is_a690(adreno_gpu))
+                       gpu_write(gpu, REG_A6XX_CP_CHICKEN_DBG, 0x00028801);
+               else
+                       gpu_write(gpu, REG_A6XX_CP_CHICKEN_DBG, 0x1);
                gpu_write(gpu, REG_A6XX_RBBM_GBIF_CLIENT_QOS_CNTL, 0x0);
        }
 
+       if (adreno_is_a690(adreno_gpu))
+               gpu_write(gpu, REG_A6XX_UCHE_CMDQ_CONFIG, 0x90);
        /* Set dualQ + disable afull for A660 GPU */
-       if (adreno_is_a660(adreno_gpu))
+       else if (adreno_is_a660(adreno_gpu))
                gpu_write(gpu, REG_A6XX_UCHE_CMDQ_CONFIG, 0x66906);
        else if (adreno_is_a7xx(adreno_gpu))
                gpu_write(gpu, REG_A6XX_UCHE_CMDQ_CONFIG,