return false;
 }
 
+static bool is_atom_fw(uint8_t *bios)
+{
+       uint16_t bios_header_start = bios[0x48] | (bios[0x49] << 8);
+       uint8_t frev = bios[bios_header_start + 2];
+       uint8_t crev = bios[bios_header_start + 3];
+
+       if ((frev < 3) ||
+           ((frev == 3) && (crev < 3)))
+               return false;
+
+       return true;
+}
 
 /* If you boot an IGP board with a discrete card as the primary,
  * the IGP rom is not accessible via the rom bar as the IGP rom is
 bool amdgpu_get_bios(struct amdgpu_device *adev)
 {
        if (amdgpu_atrm_get_bios(adev))
-               return true;
+               goto success;
 
        if (amdgpu_acpi_vfct_bios(adev))
-               return true;
+               goto success;
 
        if (igp_read_bios_from_vram(adev))
-               return true;
+               goto success;
 
        if (amdgpu_read_bios(adev))
-               return true;
+               goto success;
 
        if (amdgpu_read_bios_from_rom(adev))
-               return true;
+               goto success;
 
        if (amdgpu_read_disabled_bios(adev))
-               return true;
+               goto success;
 
        if (amdgpu_read_platform_bios(adev))
-               return true;
+               goto success;
 
        DRM_ERROR("Unable to locate a BIOS ROM\n");
        return false;
+
+success:
+       adev->is_atom_fw = is_atom_fw(adev->bios);
+       return true;
 }