[Intel-gfx] [PATCH 1/2] drm/i915/skl: Documentation for CSR firmware.
Animesh Manna
animesh.manna at intel.com
Tue May 12 00:32:07 PDT 2015
Added docbook info regarding context save and restore (CSR)
firmware support added from gen9 onwards to drive newly added
DMC (Display microcontroller) in display engine.
Signed-off-by: Animesh Manna <animesh.manna at intel.com>
Signed-off-by: A.Sunil Kamath <sunil.kamath at intel.com>
---
Documentation/DocBook/drm.tmpl | 22 +++++++++++++++++++++-
drivers/gpu/drm/i915/intel_csr.c | 37 +++++++++++++++++++++++++++++++++++++
2 files changed, 58 insertions(+), 1 deletion(-)
diff --git a/Documentation/DocBook/drm.tmpl b/Documentation/DocBook/drm.tmpl
index 7c68ecc..217b4fc 100644
--- a/Documentation/DocBook/drm.tmpl
+++ b/Documentation/DocBook/drm.tmpl
@@ -4153,6 +4153,27 @@ int num_ioctls;</synopsis>
</tgroup>
</table>
</sect2>
+
+ <sect2>
+ <title>CSR firmware support for DMC</title>
+ <para>
+ Display Context Save and Restore (CSR) firmware support added from gen9
+ onwards to drive newly added DMC (Display microcontroller) in display
+ engine to save and restore the state of display engine when it enter into
+ low-power state and comes back to nomral. The above API are used to manage
+ the firmware loading process.
+ </para>
+ <para>
+ Firmware loading status will be one of the below states: FW_UNINITIALIZED,
+ FW_LOADED, FW_FAILED.
+ </para>
+ <para>
+ Once the firmware is written into the registers status will be moved from
+ FW_UNINITIALIZED to FW_LOADED and for any erroneous condition status will
+ be moved to FW_FAILED.
+ </para>
+!Idrivers/gpu/drm/i915/intel_csr.c
+ </sect2>
</sect1>
<sect1>
@@ -4204,7 +4225,6 @@ int num_ioctls;</synopsis>
!Idrivers/gpu/drm/i915/i915_gem_shrinker.c
</sect2>
</sect1>
-
<sect1>
<title> Tracing </title>
<para>
diff --git a/drivers/gpu/drm/i915/intel_csr.c b/drivers/gpu/drm/i915/intel_csr.c
index 9311cdd..174106f 100644
--- a/drivers/gpu/drm/i915/intel_csr.c
+++ b/drivers/gpu/drm/i915/intel_csr.c
@@ -183,6 +183,14 @@ static char intel_get_substepping(struct drm_device *dev)
return -ENODATA;
}
+/**
+ * intel_csr_load_status_get() - to get firmware loading status.
+ * @dev_priv: i915 device.
+ *
+ * This function helps to get the firmware loading status.
+ *
+ * Return: Firmware loading status.
+ */
enum csr_state intel_csr_load_status_get(struct drm_i915_private *dev_priv)
{
enum csr_state state;
@@ -194,6 +202,13 @@ enum csr_state intel_csr_load_status_get(struct drm_i915_private *dev_priv)
return state;
}
+/**
+ * intel_csr_load_status_set() - help to set firmware loading status.
+ * @dev_priv: i915 device.
+ * @state: enumeration of firmware loading status.
+ *
+ * Set the firmware loading status.
+ */
void intel_csr_load_status_set(struct drm_i915_private *dev_priv,
enum csr_state state)
{
@@ -202,6 +217,14 @@ void intel_csr_load_status_set(struct drm_i915_private *dev_priv,
mutex_unlock(&dev_priv->csr_lock);
}
+/**
+ * intel_csr_load_program() - write the firmware from memory to register.
+ * @dev: drm device.
+ *
+ * CSR firmware is read from a .bin file and kept in internal memory one time.
+ * Everytime display comes back from low power state this function is called to
+ * copy the firmware from internal memory to registers.
+ */
void intel_csr_load_program(struct drm_device *dev)
{
struct drm_i915_private *dev_priv = dev->dev_private;
@@ -359,6 +382,13 @@ out:
release_firmware(fw);
}
+/**
+ * intel_csr_ucode_init() - initialize the firmware loading.
+ * @dev: drm device.
+ *
+ * This function is called at the time of loading the display driver to read
+ * firmware from a .bin file and copied into a internal memory.
+ */
void intel_csr_ucode_init(struct drm_device *dev)
{
struct drm_i915_private *dev_priv = dev->dev_private;
@@ -393,6 +423,13 @@ void intel_csr_ucode_init(struct drm_device *dev)
}
}
+/**
+ * intel_csr_ucode_fini() - unload the CSR firmware.
+ * @dev: drm device.
+ *
+ * Firmmware unloading includes freeing the internal momory and reset the
+ * firmware loading status.
+ */
void intel_csr_ucode_fini(struct drm_device *dev)
{
struct drm_i915_private *dev_priv = dev->dev_private;
--
2.0.2
More information about the Intel-gfx
mailing list