From: Guennadi Liakhovetski <g.liakhovetski@gmx.de> To: Anatolij Gustschin <agust@denx.de> Cc: linux-media@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Dan Williams <dan.j.williams@intel.com>, Detlev Zundel <dzu@denx.de>, Markus Niebel <Markus.Niebel@tqs.de> Subject: Re: [PATCH 2/2 v2] dma: ipu_idmac: do not lose valid received data in the irq handler Date: Sat, 5 Feb 2011 17:36:37 +0100 (CET) [thread overview] Message-ID: <Pine.LNX.4.64.1102051735270.11500@axis700.grange> (raw) In-Reply-To: <20110205143505.0b300a3a@wker> On Sat, 5 Feb 2011, Anatolij Gustschin wrote: > Hi Guennadi, > > On Thu, 3 Feb 2011 11:09:54 +0100 (CET) > Guennadi Liakhovetski <g.liakhovetski@gmx.de> wrote: > > > Hi Anatolij > > > > On Mon, 31 Jan 2011, Anatolij Gustschin wrote: > > > > I'm afraid there seems to be a problem with your patch. I have no idea > > what is causing it, but I'm just observing some wrong behaviour, that is > > not there without it. Namely, I added a debug print to the IDMAC interrupt > > handler > > > > curbuf = idmac_read_ipureg(&ipu_data, IPU_CHA_CUR_BUF); > > err = idmac_read_ipureg(&ipu_data, IPU_INT_STAT_4); > > > > + printk(KERN_DEBUG "%s(): IDMAC irq %d, buf %d, current %d\n", __func__, > > + irq, ichan->active_buffer, (curbuf >> chan_id) & 1); > > > > if (err & (1 << chan_id)) { > > idmac_write_ipureg(&ipu_data, 1 << chan_id, IPU_INT_STAT_4); > > > > and without your patch I see buffer numbers correctly toggling all the > > time like > > > > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > > idmac_interrupt(): IDMAC irq 177, buf 0, current 1 > > idmac_interrupt(): IDMAC irq 177, buf 1, current 0 > > idmac_interrupt(): IDMAC irq 177, buf 0, current 1 > > idmac_interrupt(): IDMAC irq 177, buf 1, current 0 > > idmac_interrupt(): IDMAC irq 177, buf 0, current 1 > > ... > > > > Yes, the first interrupt is different, that's where I'm dropping / > > postponing it. With your patch only N (equal to the number of buffers > > used, I think) first interrupts toggle, then always only one buffer is > > used: > > > > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > > ... > > > > Verified with both capture.c and mplayer. Could you, please, verify > > whether you get the same behaviour and what the problem could be? > > Now I did some further testing with idmac patch applied and with > added debug print in the IDMAC interrupt handler. There is no problem. > Testing with capture.c (4 buffers used as default) shows that buffer > numbers toggle correctly for all 100 captured frames: Hm, interesting, I'll have to look at my testing in more detail then (once back from FOSDEM). Could you maybe try mplayer too? Thanks Guennadi > ... > mx3-camera mx3-camera.0: MX3 Camera driver attached to camera 0 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > ... > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > mx3-camera mx3-camera.0: MX3 Camera driver detached from camera 0 > > Also testing with my test application didn't show any problem. > When using more than 1 buffer (tested with 2, 3 and 4 queued > buffers) double buffering works as expected and frame numbers > toggle correctly. Capturing 30 frames produce: > > mx3-camera mx3-camera.0: MX3 Camera driver attached to camera 0 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > mx3-camera mx3-camera.0: MX3 Camera driver detached from camera 0 > > Anatolij > --- Guennadi Liakhovetski, Ph.D. Freelance Open-Source Software Developer http://www.open-technology.de/
WARNING: multiple messages have this Message-ID (diff)
From: g.liakhovetski@gmx.de (Guennadi Liakhovetski) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH 2/2 v2] dma: ipu_idmac: do not lose valid received data in the irq handler Date: Sat, 5 Feb 2011 17:36:37 +0100 (CET) [thread overview] Message-ID: <Pine.LNX.4.64.1102051735270.11500@axis700.grange> (raw) In-Reply-To: <20110205143505.0b300a3a@wker> On Sat, 5 Feb 2011, Anatolij Gustschin wrote: > Hi Guennadi, > > On Thu, 3 Feb 2011 11:09:54 +0100 (CET) > Guennadi Liakhovetski <g.liakhovetski@gmx.de> wrote: > > > Hi Anatolij > > > > On Mon, 31 Jan 2011, Anatolij Gustschin wrote: > > > > I'm afraid there seems to be a problem with your patch. I have no idea > > what is causing it, but I'm just observing some wrong behaviour, that is > > not there without it. Namely, I added a debug print to the IDMAC interrupt > > handler > > > > curbuf = idmac_read_ipureg(&ipu_data, IPU_CHA_CUR_BUF); > > err = idmac_read_ipureg(&ipu_data, IPU_INT_STAT_4); > > > > + printk(KERN_DEBUG "%s(): IDMAC irq %d, buf %d, current %d\n", __func__, > > + irq, ichan->active_buffer, (curbuf >> chan_id) & 1); > > > > if (err & (1 << chan_id)) { > > idmac_write_ipureg(&ipu_data, 1 << chan_id, IPU_INT_STAT_4); > > > > and without your patch I see buffer numbers correctly toggling all the > > time like > > > > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > > idmac_interrupt(): IDMAC irq 177, buf 0, current 1 > > idmac_interrupt(): IDMAC irq 177, buf 1, current 0 > > idmac_interrupt(): IDMAC irq 177, buf 0, current 1 > > idmac_interrupt(): IDMAC irq 177, buf 1, current 0 > > idmac_interrupt(): IDMAC irq 177, buf 0, current 1 > > ... > > > > Yes, the first interrupt is different, that's where I'm dropping / > > postponing it. With your patch only N (equal to the number of buffers > > used, I think) first interrupts toggle, then always only one buffer is > > used: > > > > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > > ... > > > > Verified with both capture.c and mplayer. Could you, please, verify > > whether you get the same behaviour and what the problem could be? > > Now I did some further testing with idmac patch applied and with > added debug print in the IDMAC interrupt handler. There is no problem. > Testing with capture.c (4 buffers used as default) shows that buffer > numbers toggle correctly for all 100 captured frames: Hm, interesting, I'll have to look at my testing in more detail then (once back from FOSDEM). Could you maybe try mplayer too? Thanks Guennadi > ... > mx3-camera mx3-camera.0: MX3 Camera driver attached to camera 0 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > ... > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > mx3-camera mx3-camera.0: MX3 Camera driver detached from camera 0 > > Also testing with my test application didn't show any problem. > When using more than 1 buffer (tested with 2, 3 and 4 queued > buffers) double buffering works as expected and frame numbers > toggle correctly. Capturing 30 frames produce: > > mx3-camera mx3-camera.0: MX3 Camera driver attached to camera 0 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > idmac_interrupt(): IDMAC irq 177, buf 0, current 0 > idmac_interrupt(): IDMAC irq 177, buf 1, current 1 > mx3-camera mx3-camera.0: MX3 Camera driver detached from camera 0 > > Anatolij > --- Guennadi Liakhovetski, Ph.D. Freelance Open-Source Software Developer http://www.open-technology.de/
next prev parent reply other threads:[~2011-02-05 16:36 UTC|newest] Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top 2011-01-26 8:49 [PATCH 0/2] Fix issues with frame reception from CSI on i.MX31 Anatolij Gustschin 2011-01-26 8:49 ` Anatolij Gustschin 2011-01-26 8:49 ` [PATCH 1/2] v4l: soc-camera: start stream after queueing the buffers Anatolij Gustschin 2011-01-26 8:49 ` Anatolij Gustschin 2011-01-29 19:16 ` Guennadi Liakhovetski 2011-01-29 19:16 ` Guennadi Liakhovetski 2011-01-29 19:24 ` Anatolij Gustschin 2011-01-29 19:24 ` Anatolij Gustschin 2011-01-31 12:19 ` [PATCH 1/2 v2] " Anatolij Gustschin 2011-01-31 12:19 ` Anatolij Gustschin 2011-01-26 8:49 ` [PATCH 2/2] dma: ipu_idmac: do not lose valid received data in the irq handler Anatolij Gustschin 2011-01-26 8:49 ` Anatolij Gustschin 2011-01-27 8:22 ` Anatolij Gustschin 2011-01-27 8:22 ` Anatolij Gustschin 2011-01-31 5:56 ` Dan Williams 2011-01-31 5:56 ` Dan Williams 2011-01-31 12:22 ` [PATCH 2/2 v2] " Anatolij Gustschin 2011-01-31 12:22 ` Anatolij Gustschin 2011-02-03 10:09 ` Guennadi Liakhovetski 2011-02-03 10:09 ` Guennadi Liakhovetski 2011-02-04 9:19 ` Markus Niebel 2011-02-04 9:19 ` Markus Niebel 2011-02-04 9:37 ` Guennadi Liakhovetski 2011-02-04 9:37 ` Guennadi Liakhovetski 2011-02-04 11:37 ` Markus Niebel 2011-02-04 11:37 ` Markus Niebel 2011-02-04 9:35 ` Anatolij Gustschin 2011-02-04 9:35 ` Anatolij Gustschin 2011-02-05 13:35 ` Anatolij Gustschin 2011-02-05 13:35 ` Anatolij Gustschin 2011-02-05 16:36 ` Guennadi Liakhovetski [this message] 2011-02-05 16:36 ` Guennadi Liakhovetski 2011-02-05 20:04 ` Anatolij Gustschin 2011-02-05 20:04 ` Anatolij Gustschin 2011-02-07 11:09 ` Guennadi Liakhovetski 2011-02-07 11:09 ` Guennadi Liakhovetski 2011-02-07 11:21 ` Anatolij Gustschin 2011-02-07 11:21 ` Anatolij Gustschin 2011-02-07 11:35 ` Guennadi Liakhovetski 2011-02-07 11:35 ` Guennadi Liakhovetski 2011-02-07 13:01 ` Detlev Zundel 2011-02-07 13:01 ` Detlev Zundel 2011-02-07 13:35 ` Guennadi Liakhovetski 2011-02-07 13:35 ` Guennadi Liakhovetski 2011-02-07 14:43 ` Detlev Zundel 2011-02-07 14:43 ` Detlev Zundel 2011-02-07 13:45 ` Anatolij Gustschin 2011-02-07 13:45 ` Anatolij Gustschin 2011-02-07 14:00 ` Guennadi Liakhovetski 2011-02-07 14:00 ` Guennadi Liakhovetski 2011-02-07 16:49 ` Guennadi Liakhovetski 2011-02-07 16:49 ` Guennadi Liakhovetski 2011-02-14 9:57 ` Dan Williams 2011-02-14 9:57 ` Dan Williams 2011-01-28 7:46 ` [PATCH 0/2] Fix issues with frame reception from CSI on i.MX31 Anatolij Gustschin 2011-01-28 7:46 ` Anatolij Gustschin
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=Pine.LNX.4.64.1102051735270.11500@axis700.grange \ --to=g.liakhovetski@gmx.de \ --cc=Markus.Niebel@tqs.de \ --cc=agust@denx.de \ --cc=dan.j.williams@intel.com \ --cc=dzu@denx.de \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-media@vger.kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.