#define AMDGPU_NAVI10_RANGE     0x01, 0x0A
 #define AMDGPU_NAVI12_RANGE     0x0A, 0x14
 #define AMDGPU_NAVI14_RANGE     0x14, 0x28
+#define AMDGPU_SIENNA_RANGE     0x28, 0x32
 
 #define AMDGPU_EXPAND_FIX(x) x
 #define AMDGPU_RANGE_HELPER(val, min, max) ((val >= min) && (val < max))
 #define ASICREV_IS_NAVI10_P(r)         ASICREV_IS(r, NAVI10)
 #define ASICREV_IS_NAVI12(r)           ASICREV_IS(r, NAVI12)
 #define ASICREV_IS_NAVI14(r)           ASICREV_IS(r, NAVI14)
+#define ASICREV_IS_SIENNA_M(r)         ASICREV_IS(r, SIENNA)
 
 #endif // _AMDGPU_ASIC_ADDR_H
 
     {
         case FAMILY_NV:
             m_settings.isDcn2 = 1;
+
+            if (ASICREV_IS_SIENNA_M(chipRevision))
+            {
+                m_settings.supportRbPlus   = 1;
+                m_settings.dccUnsup3DSwDis = 0;
+            }
             break;
         default:
             ADDR_ASSERT(!"Unknown chip family");
 
                identify_chip(NAVI10);
                identify_chip(NAVI12);
                identify_chip(NAVI14);
+               identify_chip(SIENNA);
                break;
        }
 
                return false;
        }
 
-       if (info->family >= CHIP_NAVI10)
+       if (info->family >= CHIP_SIENNA)
+               info->chip_class = GFX10_3;
+       else if (info->family >= CHIP_NAVI10)
                info->chip_class = GFX10;
        else if (info->family >= CHIP_VEGA10)
                info->chip_class = GFX9;
                case CHIP_RENOIR:
                case CHIP_NAVI10:
                case CHIP_NAVI12:
+               case CHIP_SIENNA:
                        pc_lines = 1024;
                        break;
                case CHIP_NAVI14:
 
             ws->info.family = i;
             ws->info.name = "GCN-NOOP";
 
-            if (i >= CHIP_NAVI10)
+            if (i >= CHIP_SIENNA)
+               ws->info.chip_class = GFX10_3;
+            else if (i >= CHIP_NAVI10)
                ws->info.chip_class = GFX10;
             else if (i >= CHIP_VEGA10)
                ws->info.chip_class = GFX9;