From: Iliyan Malchev Date: Tue, 23 Nov 2010 21:58:43 +0000 (-0800) Subject: Merge branch 'linux-tegra-2.6.36' into android-tegra-2.6.36 X-Git-Tag: firefly_0821_release~9833^2~102 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=110d84390df5c844d54f761273e302d0da72494c;p=firefly-linux-kernel-4.4.55.git Merge branch 'linux-tegra-2.6.36' into android-tegra-2.6.36 Conflicts: arch/arm/mach-tegra/tegra_spdif_audio.c Signed-off-by: Iliyan Malchev --- 110d84390df5c844d54f761273e302d0da72494c diff --cc arch/arm/mach-tegra/tegra_spdif_audio.c index faa53a24e219,3fb90905bc87..0848b1550dfe --- a/arch/arm/mach-tegra/tegra_spdif_audio.c +++ b/arch/arm/mach-tegra/tegra_spdif_audio.c @@@ -43,12 -43,10 +43,11 @@@ #include #include #include - #include +#include #include #include - #include #include + #include #include #include @@@ -82,24 -80,11 +81,13 @@@ struct audio_stream struct tegra_dma_channel *dma_chan; bool stop; struct completion stop_completion; - spinlock_t dma_req_lock; /* guards dma_has_it */ - int dma_has_it; - struct tegra_dma_req dma_req; + spinlock_t dma_req_lock; - struct pm_qos_request_list pm_qos; struct work_struct allow_suspend_work; + struct wake_lock wake_lock; + char wake_lock_name[100]; }; - struct spdif_pio_stats { - u32 spdif_interrupt_count; - u32 tx_fifo_errors; - u32 tx_fifo_written; - }; - - struct audio_driver_state { struct list_head next; @@@ -167,18 -147,13 +150,15 @@@ static inline void prevent_suspend(stru { pr_debug("%s\n", __func__); cancel_work_sync(&as->allow_suspend_work); + wake_lock(&as->wake_lock); - pm_qos_update_request(&as->pm_qos, 0); } static void allow_suspend_worker(struct work_struct *w) { struct audio_stream *as = container_of(w, struct audio_stream, allow_suspend_work); - pr_debug("%s\n", __func__); - pm_qos_update_request(&as->pm_qos, PM_QOS_DEFAULT_VALUE); + wake_unlock(&as->wake_lock); } static inline void allow_suspend(struct audio_stream *as) @@@ -1310,12 -1097,6 +1102,10 @@@ static int tegra_spdif_probe(struct pla return rc; INIT_WORK(&state->out.allow_suspend_work, allow_suspend_worker); - pm_qos_add_request(&state->out.pm_qos, PM_QOS_CPU_DMA_LATENCY, - PM_QOS_DEFAULT_VALUE); + snprintf(state->out.wake_lock_name, sizeof(state->out.wake_lock_name), + "tegra-audio-spdif"); + wake_lock_init(&state->out.wake_lock, WAKE_LOCK_SUSPEND, + state->out.wake_lock_name); if (request_irq(state->irq, spdif_interrupt, IRQF_DISABLED, state->pdev->name, state) < 0) {