Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 01a9ca0b authored by Michal Wajdeczko's avatar Michal Wajdeczko Committed by Tvrtko Ursulin
Browse files

drm/i915/huc: Simplify intel_huc_init_hw()



On last guc/huc cleanup series we've simplified guc init hw
function but missed the one for the huc. While here, change
its signature as we don't care about huc loading status.

Signed-off-by: default avatarMichal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Anusha Srivatsa <anusha.srivatsa@intel.com>
Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: default avatarAnusha Srivatsa <anusha.srivatsa@intel.com>
Signed-off-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170331115709.181940-1-michal.wajdeczko@intel.com
parent a7980a64
Loading
Loading
Loading
Loading
+8 −40
Original line number Diff line number Diff line
@@ -186,68 +186,36 @@ void intel_huc_select_fw(struct intel_huc *huc)
 * earlier call to intel_huc_init(), so here we need only check that
 * is succeeded, and then transfer the image to the h/w.
 *
 * Return:	non-zero code on error
 */
int intel_huc_init_hw(struct intel_huc *huc)
void intel_huc_init_hw(struct intel_huc *huc)
{
	struct drm_i915_private *dev_priv = huc_to_i915(huc);
	int err;

	if (huc->fw.fetch_status == INTEL_UC_FIRMWARE_NONE)
		return 0;

	DRM_DEBUG_DRIVER("%s fw status: fetch %s, load %s\n",
		huc->fw.path,
		intel_uc_fw_status_repr(huc->fw.fetch_status),
		intel_uc_fw_status_repr(huc->fw.load_status));

	if (huc->fw.fetch_status == INTEL_UC_FIRMWARE_SUCCESS &&
	    huc->fw.load_status == INTEL_UC_FIRMWARE_FAIL)
		return -ENOEXEC;
	if (huc->fw.fetch_status != INTEL_UC_FIRMWARE_SUCCESS)
		return;

	huc->fw.load_status = INTEL_UC_FIRMWARE_PENDING;

	switch (huc->fw.fetch_status) {
	case INTEL_UC_FIRMWARE_FAIL:
		/* something went wrong :( */
		err = -EIO;
		goto fail;

	case INTEL_UC_FIRMWARE_NONE:
	case INTEL_UC_FIRMWARE_PENDING:
	default:
		/* "can't happen" */
		WARN_ONCE(1, "HuC fw %s invalid fetch_status %s [%d]\n",
			huc->fw.path,
			intel_uc_fw_status_repr(huc->fw.fetch_status),
			huc->fw.fetch_status);
		err = -ENXIO;
		goto fail;

	case INTEL_UC_FIRMWARE_SUCCESS:
		break;
	}

	err = huc_ucode_xfer(dev_priv);
	if (err)
		goto fail;

	huc->fw.load_status = INTEL_UC_FIRMWARE_SUCCESS;
	huc->fw.load_status = err ?
		INTEL_UC_FIRMWARE_FAIL : INTEL_UC_FIRMWARE_SUCCESS;

	DRM_DEBUG_DRIVER("%s fw status: fetch %s, load %s\n",
		huc->fw.path,
		intel_uc_fw_status_repr(huc->fw.fetch_status),
		intel_uc_fw_status_repr(huc->fw.load_status));

	return 0;

fail:
	if (huc->fw.load_status == INTEL_UC_FIRMWARE_PENDING)
		huc->fw.load_status = INTEL_UC_FIRMWARE_FAIL;

	if (huc->fw.load_status != INTEL_UC_FIRMWARE_SUCCESS)
		DRM_ERROR("Failed to complete HuC uCode load with ret %d\n", err);

	return err;
	return;
}

/**
+1 −1
Original line number Diff line number Diff line
@@ -266,7 +266,7 @@ static inline u32 guc_ggtt_offset(struct i915_vma *vma)

/* intel_huc.c */
void intel_huc_select_fw(struct intel_huc *huc);
int intel_huc_init_hw(struct intel_huc *huc);
void intel_huc_init_hw(struct intel_huc *huc);
void intel_guc_auth_huc(struct drm_i915_private *dev_priv);

#endif