|
@@ -244,7 +244,7 @@ void intel_csr_load_status_set(struct drm_i915_private *dev_priv,
|
|
|
void intel_csr_load_program(struct drm_device *dev)
|
|
|
{
|
|
|
struct drm_i915_private *dev_priv = dev->dev_private;
|
|
|
- __be32 *payload = dev_priv->csr.dmc_payload;
|
|
|
+ u32 *payload = dev_priv->csr.dmc_payload;
|
|
|
uint32_t i, fw_size;
|
|
|
|
|
|
if (!IS_GEN9(dev)) {
|
|
@@ -256,7 +256,7 @@ void intel_csr_load_program(struct drm_device *dev)
|
|
|
fw_size = dev_priv->csr.dmc_fw_size;
|
|
|
for (i = 0; i < fw_size; i++)
|
|
|
I915_WRITE(CSR_PROGRAM_BASE + i * 4,
|
|
|
- (u32 __force)payload[i]);
|
|
|
+ payload[i]);
|
|
|
|
|
|
for (i = 0; i < dev_priv->csr.mmio_count; i++) {
|
|
|
I915_WRITE(dev_priv->csr.mmioaddr[i],
|
|
@@ -279,7 +279,7 @@ static void finish_csr_load(const struct firmware *fw, void *context)
|
|
|
char substepping = intel_get_substepping(dev);
|
|
|
uint32_t dmc_offset = CSR_DEFAULT_FW_OFFSET, readcount = 0, nbytes;
|
|
|
uint32_t i;
|
|
|
- __be32 *dmc_payload;
|
|
|
+ uint32_t *dmc_payload;
|
|
|
bool fw_loaded = false;
|
|
|
|
|
|
if (!fw) {
|
|
@@ -375,15 +375,7 @@ static void finish_csr_load(const struct firmware *fw, void *context)
|
|
|
}
|
|
|
|
|
|
dmc_payload = csr->dmc_payload;
|
|
|
- for (i = 0; i < dmc_header->fw_size; i++) {
|
|
|
- uint32_t *tmp = (u32 *)&fw->data[readcount + i * 4];
|
|
|
- /*
|
|
|
- * The firmware payload is an array of 32 bit words stored in
|
|
|
- * little-endian format in the firmware image and programmed
|
|
|
- * as 32 bit big-endian format to memory.
|
|
|
- */
|
|
|
- dmc_payload[i] = cpu_to_be32(*tmp);
|
|
|
- }
|
|
|
+ memcpy(dmc_payload, &fw->data[readcount], nbytes);
|
|
|
|
|
|
/* load csr program during system boot, as needed for DC states */
|
|
|
intel_csr_load_program(dev);
|