From: Marek Vasut <marex-ynQEQJNshbs@public.gmane.org> To: Wolfram Sang <w.sang-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org> Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, Fabio Estevam <festevam-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>, Shawn Guo <shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>, linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Subject: Re: possible MXS-i2c bug Date: Fri, 27 Apr 2012 17:08:53 +0200 [thread overview] Message-ID: <201204271708.53467.marex@denx.de> (raw) In-Reply-To: <20120427145936.GD16504-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org> Dear Wolfram Sang, > Hi, > > > I've been thinking about the DMA approach. The problem I found out is > > that we need to transfer all messages we're given at time in one DMA > > chain ... at least that's how I understand it from the FSL manual (see > > Fig. 27-10 in the mx28 manual). > > I can't follow you: mxs_i2c_xfer() gets a list of messages, yet they > are iterated over in mxs_i2c_xfer_msg(). A single I2C message is > unscattered and can't be bigger than 64KB, so that should be doable? You can get a large list of i2c messages. In the current implementation, yes, they're iterated in mxs_i2c_xfer_msg. Correct. If you want to do DMA transfer do/from the i2c controller, you have to take all these messages and create the chain of DMA transfers according to these messages, correct? So either I missed something, or you need to do something like this to do the transfer: for_each_message { sg_init_one() dma_map_sg() dmaengine_prep_slave_sg() } and then dmaengine_submit(). Is that correct? And for each iteration of the cycle above, you need one scatterlist, you can't recycle one, correct? So to create the chain. we'd need one scatterlist per message, correct? > Am I missing something by already being in weekend-mode? :) Best regards, Marek Vasut
WARNING: multiple messages have this Message-ID (diff)
From: marex@denx.de (Marek Vasut) To: linux-arm-kernel@lists.infradead.org Subject: possible MXS-i2c bug Date: Fri, 27 Apr 2012 17:08:53 +0200 [thread overview] Message-ID: <201204271708.53467.marex@denx.de> (raw) In-Reply-To: <20120427145936.GD16504@pengutronix.de> Dear Wolfram Sang, > Hi, > > > I've been thinking about the DMA approach. The problem I found out is > > that we need to transfer all messages we're given at time in one DMA > > chain ... at least that's how I understand it from the FSL manual (see > > Fig. 27-10 in the mx28 manual). > > I can't follow you: mxs_i2c_xfer() gets a list of messages, yet they > are iterated over in mxs_i2c_xfer_msg(). A single I2C message is > unscattered and can't be bigger than 64KB, so that should be doable? You can get a large list of i2c messages. In the current implementation, yes, they're iterated in mxs_i2c_xfer_msg. Correct. If you want to do DMA transfer do/from the i2c controller, you have to take all these messages and create the chain of DMA transfers according to these messages, correct? So either I missed something, or you need to do something like this to do the transfer: for_each_message { sg_init_one() dma_map_sg() dmaengine_prep_slave_sg() } and then dmaengine_submit(). Is that correct? And for each iteration of the cycle above, you need one scatterlist, you can't recycle one, correct? So to create the chain. we'd need one scatterlist per message, correct? > Am I missing something by already being in weekend-mode? :) Best regards, Marek Vasut
next prev parent reply other threads:[~2012-04-27 15:08 UTC|newest] Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top 2012-04-26 11:26 possible MXS-i2c bug Marek Vasut 2012-04-26 11:41 ` Fabio Estevam [not found] ` <201204261326.29388.marex-ynQEQJNshbs@public.gmane.org> 2012-04-26 11:42 ` Wolfram Sang 2012-04-26 11:42 ` Wolfram Sang [not found] ` <20120426114201.GC3548-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org> 2012-04-26 23:10 ` Marek Vasut 2012-04-26 23:10 ` Marek Vasut [not found] ` <201204270110.21377.marex-ynQEQJNshbs@public.gmane.org> 2012-04-27 14:59 ` Wolfram Sang 2012-04-27 14:59 ` Wolfram Sang [not found] ` <20120427145936.GD16504-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org> 2012-04-27 15:08 ` Marek Vasut [this message] 2012-04-27 15:08 ` Marek Vasut [not found] ` <201204271708.53467.marex-ynQEQJNshbs@public.gmane.org> 2012-04-27 15:41 ` Wolfram Sang 2012-04-27 15:41 ` Wolfram Sang [not found] ` <20120427154119.GF16504-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org> 2012-04-27 15:53 ` Marek Vasut 2012-04-27 15:53 ` Marek Vasut [not found] ` <201204271753.39516.marex-ynQEQJNshbs@public.gmane.org> 2012-04-27 16:37 ` Wolfram Sang 2012-04-27 16:37 ` Wolfram Sang [not found] ` <20120427163756.GH16504-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org> 2012-04-28 3:03 ` [TEST PATCH] mxs-i2c DMA support Marek Vasut 2012-04-28 3:03 ` Marek Vasut
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=201204271708.53467.marex@denx.de \ --to=marex-ynqeqjnshbs@public.gmane.org \ --cc=festevam-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \ --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \ --cc=linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \ --cc=w.sang-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.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.