From: linux@arm.linux.org.uk (Russell King - ARM Linux)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] I2C: EXYNOS: Add slave support to i2c
Date: Mon, 10 Dec 2012 12:44:27 +0000 [thread overview]
Message-ID: <20121210124427.GI14363@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <CAHuqX+G7e4bR_xK2BAEdm4dedaBHE=CG3sHmzHamgCiOtivNwQ@mail.gmail.com>
On Mon, Dec 10, 2012 at 03:02:28PM +0530, Giridhar Maruthy wrote:
> Hi Russel,
>
> Thanks for review and please find my replies below.
>
> On 7 December 2012 18:03, Russell King - ARM Linux
> <linux@arm.linux.org.uk> wrote:
> > On Fri, Dec 07, 2012 at 05:33:17PM +0530, Tushar Behera wrote:
> >> On 12/03/2012 05:46 PM, Giridhar Maruthy wrote:
> >> > This patch adds slave support to i2c. The dt entry i2c-mode
> >> > decides at probe time if the controller needs to work in
> >> > slave mode and the controller is accordingly programmed.
> >
> > (I don't have the original patches.)
> >
> > Hmm. How has slave-mode support been tested?
>
> I have taken two I2C controllers in exynos5250.
> I configured one as slave and the other as master port.
> Then physically connected the pins of the two ports.
> >
> > Remembering that I2C slave devices do not initiate bus accesses, all
> > accesses will be started by some other master. How are you dealing
> > with the bytes received from the master,
>
> I run the slave read application in background.
> The resulting slave read will sleep till all bytes are received
> (wait_event_interruptible)
Oh god no, not more broken interruptible waits in I2C code. I've seen
already the results of crap like this with a kernel I2C peripheral driver
falling over because the I2C layer returns -ERESTARTcrap with the Marvell
I2C bus adapter.
> once the master sends the data, an ack is given out by the slave controller
> in the ISR and the data is cached in the buffer(
> buffer sent by slave receive application).
> After all data is received, the read wakes up and the
> slave receive program gets the data.
>
> > and how are you returning a response to the master in reply to a read request?
>
> Similarl logic works in slave transmit mode (read request). Slave
> sleeps till the master initiates the transfer.
> >
> > We had support for this on PXA I2C through a callback from the driver
> > into PXA code (used for the Psion Teklogix Netbook device) and it worked
> > really well, but what you can't do is use the standard I2C interfaces
> > for slave mode.
>
> I have a question here. Since the same framework can work for both
> master and slave, is there any technical limitations I have overseen
> which prevents the slave mode to work?
I don't really call your description above as "working" - it sounds like
a bodge - it sounds like trying to bend a layer designed for master mode
to sort-of-maybe-if-the-wind-is-in-the-right-direction-and-the-cows-are-
all-standing-up-work. What if the application is trying to read in slave
mode while the master is also trying to read? How do you deal with that?
What about the converse? What if the application is trying to write data
and the master also issues a write request?
Finally, what about a multi-master situation? I can see no way for your
implementation to have any hope of working there because there is no
distinction between operating the interface in master mode and slave mode.
next prev parent reply other threads:[~2012-12-10 12:44 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1354354961-28833-1-git-send-email-giridhar.maruthy@linaro.org>
2012-12-03 12:16 ` [PATCH] I2C: EXYNOS: Add slave support to i2c Giridhar Maruthy
2012-12-03 13:28 ` Kyungmin Park
2012-12-03 22:46 ` Giridhar Maruthy
2012-12-03 22:53 ` Giridhar Maruthy
2012-12-06 14:05 ` Subash Patel
2012-12-07 11:36 ` Giridhar Maruthy
2012-12-07 12:03 ` Tushar Behera
2012-12-07 12:33 ` Russell King - ARM Linux
2012-12-10 9:32 ` Giridhar Maruthy
2012-12-10 12:44 ` Russell King - ARM Linux [this message]
2012-12-10 8:10 ` Giridhar Maruthy
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=20121210124427.GI14363@n2100.arm.linux.org.uk \
--to=linux@arm.linux.org.uk \
--cc=linux-arm-kernel@lists.infradead.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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).