public inbox for linux-arm-kernel@lists.infradead.org 
 help / color / mirror / Atom feed
From: mfuzzey@parkeon•com (Martin Fuzzey)
To: linux-arm-kernel@lists•infradead.org
Subject: [REGRESSION] w1: mxc_w1 bus search failing after update 3.16->3.18
Date: Thu, 05 Feb 2015 18:43:26 +0100	[thread overview]
Message-ID: <54D3ABBE.1040607@parkeon.com> (raw)

Hi,

The commit f80b258  w1: mxc_w1: Optimize mxc_w1_ds2_touch_bit()
introduced in 3.18 is causing w1 bus scanning to fail on my board with:

w1_master_driver w1_bus_master1: w1_search: max_slave_count 64 reached, 
will continue next search.

The problem appears to be the use of jiffies to implement a 200us delay 
in this code:

static u8 mxc_w1_ds2_touch_bit(void *data, u8 bit)
{
     struct mxc_w1_device *dev = data;
     unsigned long timeout;

     writeb(MXC_W1_CONTROL_WR(bit), dev->regs + MXC_W1_CONTROL);

     /* Wait for read/write bit (60us, Max 120us), use 200us for sure */
     timeout = jiffies + usecs_to_jiffies(200);

     udelay(60);

     do {
         u8 ctrl = readb(dev->regs + MXC_W1_CONTROL);

         /* RDST bit is valid after the WR1/RD bit is self-cleared */
         if (!(ctrl & MXC_W1_CONTROL_WR(bit)))
             return !!(ctrl & MXC_W1_CONTROL_RDST);
     } while (time_is_after_jiffies(timeout));

     return 0;
}


My HZ value is 100
usecs_to_jiffies(200) returns 1 but I don't think time_is_after_jiffies 
is accurate for timeout = jiffies + 1?

Adding one jiffy to timeout "fixes" it but that's probably not the right 
way.

Should this be reverted or a hrtimer used?

Regards,

Martin

                 reply	other threads:[~2015-02-05 17:43 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=54D3ABBE.1040607@parkeon.com \
    --to=mfuzzey@parkeon$(echo .)com \
    --cc=linux-arm-kernel@lists$(echo .)infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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