bool (*is_supported)(struct dmub_srv *dmub);
 
+       bool (*is_hw_init)(struct dmub_srv *dmub);
+
        bool (*is_phy_init)(struct dmub_srv *dmub);
 
        bool (*is_auto_load_done)(struct dmub_srv *dmub);
 enum dmub_status dmub_srv_has_hw_support(struct dmub_srv *dmub,
                                         bool *is_supported);
 
+/**
+ * dmub_srv_is_hw_init() - returns hardware init state
+ *
+ * Return:
+ *   DMUB_STATUS_OK - success
+ *   DMUB_STATUS_INVALID - unspecified error
+ */
+enum dmub_status dmub_srv_is_hw_init(struct dmub_srv *dmub, bool *is_hw_init);
+
 /**
  * dmub_srv_hw_init() - initializes the underlying DMUB hardware
  * @dmub: the dmub service
 
        REG_WRITE(DMCUB_INBOX1_WPTR, wptr_offset);
 }
 
+bool dmub_dcn20_is_hw_init(struct dmub_srv *dmub)
+{
+       return REG_READ(DMCUB_REGION3_CW2_BASE_ADDRESS) != 0;
+}
+
 bool dmub_dcn20_is_supported(struct dmub_srv *dmub)
 {
        uint32_t supported = 0;
 
 
 void dmub_dcn20_set_inbox1_wptr(struct dmub_srv *dmub, uint32_t wptr_offset);
 
+bool dmub_dcn20_is_hw_init(struct dmub_srv *dmub);
+
 bool dmub_dcn20_is_supported(struct dmub_srv *dmub);
 
 bool dmub_dcn20_is_phy_init(struct dmub_srv *dmub);
 
                funcs->set_inbox1_wptr = dmub_dcn20_set_inbox1_wptr;
                funcs->is_supported = dmub_dcn20_is_supported;
                funcs->is_phy_init = dmub_dcn20_is_phy_init;
+               funcs->is_hw_init = dmub_dcn20_is_hw_init;
 
                if (asic == DMUB_ASIC_DCN21) {
                        funcs->backdoor_load = dmub_dcn21_backdoor_load;
        return DMUB_STATUS_OK;
 }
 
+enum dmub_status dmub_srv_is_hw_init(struct dmub_srv *dmub, bool *is_hw_init)
+{
+       *is_hw_init = false;
+
+       if (!dmub->sw_init)
+               return DMUB_STATUS_INVALID;
+
+       if (dmub->hw_funcs.is_hw_init)
+               *is_hw_init = dmub->hw_funcs.is_hw_init(dmub);
+
+       return DMUB_STATUS_OK;
+}
+
 enum dmub_status dmub_srv_hw_init(struct dmub_srv *dmub,
                                  const struct dmub_srv_hw_params *params)
 {