summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJari Helaakoski <tekkuli@gmail.com>2013-01-01 20:38:56 +0400
committerAlejandro Mery <amery@geeks.cl>2013-01-03 23:58:04 +0400
commit456171139a796ed904b5cd2bce808eabe48cfee7 (patch)
treed02f959927930b318931719e58b5ee4bfd1fa7af
parent6752c4ad1ba9b58a62e0dfff951fa65f419530fc (diff)
downloadlinux-sunxi-456171139a796ed904b5cd2bce808eabe48cfee7.tar.xz
video:sunxi:hdmi: Speedup hdmi init
Signed-off-by: Jari Helaakoski <tekkuli@gmail.com> Acked-by: Hans de Goede <hdegoede@redhat.com>
-rw-r--r--drivers/video/sunxi/hdmi/drv_hdmi.c27
1 files changed, 16 insertions, 11 deletions
diff --git a/drivers/video/sunxi/hdmi/drv_hdmi.c b/drivers/video/sunxi/hdmi/drv_hdmi.c
index 63d6b36a5ca4..e8673770cb5b 100644
--- a/drivers/video/sunxi/hdmi/drv_hdmi.c
+++ b/drivers/video/sunxi/hdmi/drv_hdmi.c
@@ -276,17 +276,6 @@ __s32 Hdmi_init(void)
run_sem = kmalloc(sizeof(struct semaphore), GFP_KERNEL | __GFP_ZERO);
sema_init((struct semaphore *)run_sem, 0);
- HDMI_task = kthread_create(Hdmi_run_thread, (void *)0, "hdmi proc");
- if (IS_ERR(HDMI_task)) {
- __s32 err = 0;
-
- __wrn("Unable to start kernel thread %s.\n", "hdmi proc");
- err = PTR_ERR(HDMI_task);
- HDMI_task = NULL;
- return err;
- }
- wake_up_process(HDMI_task);
-
HDMI_BASE = (void __iomem *) ghdmi.base_hdmi;
hdmi_core_initial();
audio_info.channel_num = 2;
@@ -303,6 +292,22 @@ __s32 Hdmi_init(void)
#endif
+ /* Run main task once, should give EDID information directly */
+ hdmi_main_task_loop();
+
+ HDMI_task = kthread_create(Hdmi_run_thread, (void *)0, "hdmi proc");
+ if (IS_ERR(HDMI_task)) {
+ __s32 err = 0;
+
+ __wrn("Unable to start kernel thread %s.\n", "hdmi proc");
+ err = PTR_ERR(HDMI_task);
+ HDMI_task = NULL;
+ return err;
+ }
+ /* Launch main task loop */
+ wake_up_process(HDMI_task);
+
+
audio_func.hdmi_audio_enable = Hdmi_Audio_Enable;
audio_func.hdmi_set_audio_para = Hdmi_Set_Audio_Para;
audio_set_hdmi_func(&audio_func);