public inbox for ecos-patches@sourceware.org
 help / color / mirror / Atom feed
From: bugzilla-daemon@bugs.ecos.sourceware.org
To: ecos-patches@ecos.sourceware.org
Subject: [Bug 1001397] I2C driver for Kinetic microcontrollers
Date: Tue, 25 Dec 2012 21:32:00 -0000	[thread overview]
Message-ID: <20121225213158.6A8324680002@mail.ecoscentric.com> (raw)
In-Reply-To: <bug-1001397-104@http.bugs.ecos.sourceware.org/>

Please do not reply to this email. Use the web interface provided at:
http://bugs.ecos.sourceware.org/show_bug.cgi?id=1001397

--- Comment #29 from Ilija Kocho <ilijak@siva.com.mk> 2012-12-25 21:31:55 GMT ---
(In reply to comment #27)

Hi again Tomas

> 
> Thank you for your reply.
> 
> (In reply to comment #23)
> > (In reply to comment #22)
> > > I am trying to clean up my backlog. Your I2C driver appears to be almost ready
> > > for check in. I wander if you have tried the patch proposed in comment 21.
> > 
> > The patch makes sense to me, though I have not had a chance to test it.
> 
> As you may have seen I took the liberty to apply the patch from comment 21. It
> compiles fine, but I haven't tested the runtime.
> 
> One thing that bothers me is the WAIT_BUS_READY(), it looks like busy waiting,
> but I can't estimate implications since I don't have enough insight into
> I2C. Can you comment on this please?

I looked through other I2C drivers and I found out that some of them have
similar macro. So we have a precedent, but I would look for better solution.
For instance what would happen if we replace the macro with something like this
(untested):

bool is_bus_free(freescale_i2c_extra *extra )
{
    bool bus_free;
    if (!extra->i2c_owner) {
        freescale_i2c_t *i2c_s = FREESCALE_I2C_P(extra->i2c_base);
        if(i2c_s->s & FREESCALE_I2C_S_BUSY_M){
            bus_free = false;
        } else {
            extra->i2c_got_nack = 0;
            extra->i2c_owner = 1;
            bus_free = true;
        }
    } else {
        bus_free = true;
    }
    return bus_free;
}

Then something like this:

static cyg_bool
freescale_i2c_handle_xfer(const cyg_i2c_device * dev, int address)
{
  freescale_i2c_device *fdev = (freescale_i2c_device*) dev;
  freescale_i2c_extra  *extra = (freescale_i2c_extra *)
dev->i2c_bus->i2c_extra;
  cyg_uint8             data = *extra->i2c_data.i2c_tx_data;
  freescale_i2c_t      *i2c_s = FREESCALE_I2C_P (extra->i2c_base);

  // Nothing to do
  if (extra->i2c_count == 0)
    return 0;

-  // Take the bus ownership
-  WAIT_BUS_READY (extra);
+  // Check the bus ownership
+  if(!is_bus_free(extra))
+    return 0;

  .....

}

Ilija

-- 
Configure bugmail: http://bugs.ecos.sourceware.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

  parent reply	other threads:[~2012-12-25 21:32 UTC|newest]

Thread overview: 84+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <bug-1001397-104@http.bugs.ecos.sourceware.org/>
2011-12-01 15:48 ` bugzilla-daemon
2011-12-01 15:52 ` bugzilla-daemon
2011-12-01 15:58 ` bugzilla-daemon
2011-12-13 15:13 ` bugzilla-daemon
2011-12-23 10:41 ` bugzilla-daemon
2011-12-23 13:28 ` bugzilla-daemon
2011-12-23 14:14 ` bugzilla-daemon
2011-12-23 14:15 ` bugzilla-daemon
2011-12-24  9:22 ` bugzilla-daemon
2011-12-24 11:59 ` bugzilla-daemon
2011-12-26  7:32 ` bugzilla-daemon
2012-01-01 21:13 ` bugzilla-daemon
2012-01-10 15:40 ` bugzilla-daemon
2012-01-11 20:33 ` bugzilla-daemon
2012-01-16 14:31 ` bugzilla-daemon
2012-02-07 20:38 ` bugzilla-daemon
2012-02-08  9:12 ` bugzilla-daemon
2012-02-08  9:55 ` bugzilla-daemon
2012-02-11  0:16 ` bugzilla-daemon
2012-02-11 10:14 ` bugzilla-daemon
2012-02-12 19:11 ` bugzilla-daemon
2012-02-12 19:11 ` bugzilla-daemon
2012-02-23 16:11 ` bugzilla-daemon
2012-03-20 15:17 ` bugzilla-daemon
2012-03-31 17:17 ` bugzilla-daemon
2012-05-04 18:17 ` bugzilla-daemon
2012-12-21 20:46 ` bugzilla-daemon
2012-12-24  9:52 ` bugzilla-daemon
2012-12-24 16:53 ` bugzilla-daemon
2012-12-24 16:54 ` bugzilla-daemon
2012-12-24 16:56 ` bugzilla-daemon
2012-12-24 16:56 ` bugzilla-daemon
2012-12-24 17:14 ` bugzilla-daemon
2012-12-24 17:38 ` bugzilla-daemon
2012-12-25 21:32 ` bugzilla-daemon [this message]
2012-12-25 21:33 ` bugzilla-daemon
2012-12-25 23:38 ` bugzilla-daemon
2012-12-26 15:06 ` bugzilla-daemon
2012-12-29 14:24 ` bugzilla-daemon
2013-01-02  3:48 ` bugzilla-daemon
2013-01-02  7:07 ` bugzilla-daemon
2013-01-03  9:09 ` bugzilla-daemon
2013-01-03  9:12 ` bugzilla-daemon
2013-01-03 16:27 ` bugzilla-daemon
2013-01-06  5:47 ` bugzilla-daemon
2013-03-02 18:08 ` bugzilla-daemon
2013-03-02 18:09 ` bugzilla-daemon
2013-04-10 20:34 ` bugzilla-daemon
2013-04-10 20:54 ` bugzilla-daemon
2013-04-10 21:14 ` bugzilla-daemon
2013-04-10 21:15 ` bugzilla-daemon
2013-04-10 21:16 ` bugzilla-daemon
2013-04-10 21:17 ` [Bug 1001397] I2C driver for Kinetis microcontrollers bugzilla-daemon
2013-04-11  1:20 ` bugzilla-daemon
2013-04-11  1:25 ` bugzilla-daemon
2013-04-11  1:49 ` bugzilla-daemon
2013-04-13 23:21 ` bugzilla-daemon
2013-04-13 23:22 ` bugzilla-daemon
2013-04-15 16:34 ` bugzilla-daemon
2013-04-17 16:28 ` bugzilla-daemon
2013-04-17 17:43 ` bugzilla-daemon
2013-04-19 16:39 ` bugzilla-daemon
2013-04-20 20:09 ` bugzilla-daemon
2013-04-21  7:47 ` bugzilla-daemon
2013-04-21 14:09 ` bugzilla-daemon
2013-04-23  4:47 ` bugzilla-daemon
2013-04-23  7:01 ` bugzilla-daemon
2013-04-24  6:56 ` bugzilla-daemon
2013-04-24  9:08 ` bugzilla-daemon
2013-04-24 17:20 ` bugzilla-daemon
2013-04-24 18:46 ` bugzilla-daemon
2013-04-25 17:06 ` bugzilla-daemon
2013-04-26 12:54 ` bugzilla-daemon
2013-04-26 13:39 ` bugzilla-daemon
2013-04-26 17:13 ` bugzilla-daemon
2013-04-26 17:17 ` bugzilla-daemon
2013-04-30 11:40 ` bugzilla-daemon
2013-04-30 11:40 ` bugzilla-daemon
2013-04-30 19:03 ` bugzilla-daemon
2013-08-29 17:58 ` bugzilla-daemon
2013-08-29 18:00 ` bugzilla-daemon
2013-08-30  7:15 ` bugzilla-daemon
2013-08-30  7:18 ` bugzilla-daemon
2014-01-28  1:46 ` bugzilla-daemon

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=20121225213158.6A8324680002@mail.ecoscentric.com \
    --to=bugzilla-daemon@bugs.ecos.sourceware.org \
    --cc=ecos-patches@ecos.sourceware.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 read-only IMAP folder(s) and NNTP newsgroup(s).