return -EINVAL;
}
+static int fimd_power_on(struct fimd_context *ctx, bool enable);
+
static int fimd_display_power_on(struct device *dev, int mode)
{
+ struct fimd_context *ctx = get_fimd_context(dev);
+ bool enable;
+
DRM_DEBUG_KMS("%s\n", __FILE__);
- /* TODO */
+ switch (mode) {
+ case DRM_MODE_DPMS_ON:
+ case DRM_MODE_DPMS_STANDBY:
+ enable = true;
+ break;
+ case DRM_MODE_DPMS_SUSPEND:
+ case DRM_MODE_DPMS_OFF:
+ enable = false;
+ break;
+ default:
+ DRM_DEBUG_KMS("unspecified mode %d\n", mode);
+ break;
+ }
+
+ fimd_power_on(ctx, enable);
return 0;
}
clk_disable(ctx->bus_clk);
ctx->suspended = true;
+
+ if (pdata->panel_type == DP_LCD)
+ writel(0, ctx->regs + DPCLKCON);
}
return 0;