]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ENGR00220732-1 Remove clk_disable in VPU driver interrupt handling
authorHongzhang Yang <Hongzhang.Yang@freescale.com>
Mon, 20 Aug 2012 08:11:21 +0000 (16:11 +0800)
committerLothar Waßmann <LW@KARO-electronics.de>
Fri, 24 May 2013 06:35:15 +0000 (08:35 +0200)
Original design is VPU lib API StartOneFrame() enables clock, and VPU
driver disables clock after codec done interrupt has been received.
However there are known issues of interrupt handling as below:
- VPU interrupt handling callback is not scheduled in time causing work
  queue overflow
- JPU done interrupt is not received because JPU issues it while JPU
  buffer empty interrupt is still being served
- VPU finishes a frame (!vpu_IsBusy) but VPU done interrupt is not
  received

All above will cause clk_disable in interrupt handling not called,
thus VPU clock count increases by 1.
So I plan to resolve clock unbalance issue first by removing
clk_disable from VPU driver interrupt handling. Interrupt problem
will not affect clock issue any longer.

1.    Driver: remove clk_disable from vpu_worker_callback
2.1.  Lib: remove clk_enable from API GetOutputInfo
2.2.  Lib: avoid disabling VPU clock when VPU is busy in SWReset
3.    Test: replace GetOutputInfo with SWReset in decoder_close /
      encoder_close

Signed-off-by: Hongzhang Yang <Hongzhang.Yang@freescale.com>
drivers/mxc/vpu/mxc_vpu.c

index 8904568023316c6f97fc84ba688725078ee5c927..92a1d0dc98c70e32376eeffaabeb52cc067296bc 100644 (file)
@@ -180,7 +180,6 @@ static inline void vpu_worker_callback(struct work_struct *w)
         * codec is done.
         */
        if (codec_done) {
-               clk_disable(vpu_clk);
                codec_done = 0;
        }