diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/gpu/drm/omapdrm/dss/dispc.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/drivers/gpu/drm/omapdrm/dss/dispc.c b/drivers/gpu/drm/omapdrm/dss/dispc.c index 53d08dc4ef5a..f871f69dab1a 100644 --- a/drivers/gpu/drm/omapdrm/dss/dispc.c +++ b/drivers/gpu/drm/omapdrm/dss/dispc.c | |||
| @@ -4359,6 +4359,42 @@ static void dispc_errata_i734_wa(void) | |||
| 4359 | REG_FLD_MOD(DISPC_CONFIG, gatestate, 8, 4); | 4359 | REG_FLD_MOD(DISPC_CONFIG, gatestate, 8, 4); |
| 4360 | } | 4360 | } |
| 4361 | 4361 | ||
| 4362 | static const struct dispc_ops dispc_ops = { | ||
| 4363 | .read_irqstatus = dispc_read_irqstatus, | ||
| 4364 | .clear_irqstatus = dispc_clear_irqstatus, | ||
| 4365 | .read_irqenable = dispc_read_irqenable, | ||
| 4366 | .write_irqenable = dispc_write_irqenable, | ||
| 4367 | |||
| 4368 | .request_irq = dispc_request_irq, | ||
| 4369 | .free_irq = dispc_free_irq, | ||
| 4370 | |||
| 4371 | .runtime_get = dispc_runtime_get, | ||
| 4372 | .runtime_put = dispc_runtime_put, | ||
| 4373 | |||
| 4374 | .get_num_ovls = dispc_get_num_ovls, | ||
| 4375 | .get_num_mgrs = dispc_get_num_mgrs, | ||
| 4376 | |||
| 4377 | .mgr_enable = dispc_mgr_enable, | ||
| 4378 | .mgr_is_enabled = dispc_mgr_is_enabled, | ||
| 4379 | .mgr_get_vsync_irq = dispc_mgr_get_vsync_irq, | ||
| 4380 | .mgr_get_framedone_irq = dispc_mgr_get_framedone_irq, | ||
| 4381 | .mgr_get_sync_lost_irq = dispc_mgr_get_sync_lost_irq, | ||
| 4382 | .mgr_go_busy = dispc_mgr_go_busy, | ||
| 4383 | .mgr_go = dispc_mgr_go, | ||
| 4384 | .mgr_set_lcd_config = dispc_mgr_set_lcd_config, | ||
| 4385 | .mgr_set_timings = dispc_mgr_set_timings, | ||
| 4386 | .mgr_setup = dispc_mgr_setup, | ||
| 4387 | .mgr_get_supported_outputs = dispc_mgr_get_supported_outputs, | ||
| 4388 | .mgr_gamma_size = dispc_mgr_gamma_size, | ||
| 4389 | .mgr_set_gamma = dispc_mgr_set_gamma, | ||
| 4390 | |||
| 4391 | .ovl_enable = dispc_ovl_enable, | ||
| 4392 | .ovl_enabled = dispc_ovl_enabled, | ||
| 4393 | .ovl_set_channel_out = dispc_ovl_set_channel_out, | ||
| 4394 | .ovl_setup = dispc_ovl_setup, | ||
| 4395 | .ovl_get_color_modes = dispc_ovl_get_color_modes, | ||
| 4396 | }; | ||
| 4397 | |||
| 4362 | /* DISPC HW IP initialisation */ | 4398 | /* DISPC HW IP initialisation */ |
| 4363 | static int dispc_bind(struct device *dev, struct device *master, void *data) | 4399 | static int dispc_bind(struct device *dev, struct device *master, void *data) |
| 4364 | { | 4400 | { |
| @@ -4431,6 +4467,8 @@ static int dispc_bind(struct device *dev, struct device *master, void *data) | |||
| 4431 | 4467 | ||
| 4432 | dispc_runtime_put(); | 4468 | dispc_runtime_put(); |
| 4433 | 4469 | ||
| 4470 | dispc_set_ops(&dispc_ops); | ||
| 4471 | |||
| 4434 | dss_debugfs_create_file("dispc", dispc_dump_regs); | 4472 | dss_debugfs_create_file("dispc", dispc_dump_regs); |
| 4435 | 4473 | ||
| 4436 | return 0; | 4474 | return 0; |
| @@ -4443,6 +4481,8 @@ err_runtime_get: | |||
| 4443 | static void dispc_unbind(struct device *dev, struct device *master, | 4481 | static void dispc_unbind(struct device *dev, struct device *master, |
| 4444 | void *data) | 4482 | void *data) |
| 4445 | { | 4483 | { |
| 4484 | dispc_set_ops(NULL); | ||
| 4485 | |||
| 4446 | pm_runtime_disable(dev); | 4486 | pm_runtime_disable(dev); |
| 4447 | 4487 | ||
| 4448 | dispc_errata_i734_wa_fini(); | 4488 | dispc_errata_i734_wa_fini(); |
