lkml.org 
[lkml]   [2011]   [Jun]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH 08/11] spi-dw: Ensure fifo lenght is set.
    On Wed, Jun 22, 2011 at 8:00 PM,  <dirk.brandewie@gmail.com> wrote:
    > From: Dirk Brandewie <dirk.brandewie@gmail.com>
    >
    > Bug on fifo_len not being set.  The fifo sizing routine does not work
    > since the txfltr register can not be written while the controller is
    > enabled. The max value of txfltr can be larger than the fifo.  The
    > register allows values upto 0x3f (63) the fifo depth on the Intel
    > SOC's if 40
    >
    > Signed-off-by: Dirk Brandewie <dirk.brandewie@gmail.com>
    > ---
    >  drivers/spi/spi-dw.c |   18 ++----------------
    >  1 files changed, 2 insertions(+), 16 deletions(-)
    >
    > diff --git a/drivers/spi/spi-dw.c b/drivers/spi/spi-dw.c
    > index ad92826..cc38aa0 100644
    > --- a/drivers/spi/spi-dw.c
    > +++ b/drivers/spi/spi-dw.c
    > @@ -776,25 +776,11 @@ static int destroy_queue(struct spi_dw *dws)
    >  /* Restart the controller, disable all interrupts, clean rx fifo */
    >  static void spi_dw_hw_init(struct spi_dw *dws)
    >  {
    > +       BUG_ON(!dws->fifo_len);
    > +

    Ditto here. BUG is too big a reaction. Fail to initialize the
    device, sure, and print a warning, but don't BUG.

    g.

    >        spi_dw_disable(dws);
    >        spi_dw_mask_intr(dws, 0xff);
    >        spi_dw_enable(dws);
    > -
    > -       /*
    > -        * Try to detect the FIFO depth if not set by interface driver,
    > -        * the depth could be from 2 to 256 from HW spec
    > -        */
    > -       if (!dws->fifo_len) {
    > -               u32 fifo;
    > -               for (fifo = 2; fifo <= 257; fifo++) {
    > -                       dw_writew(dws, txfltr, fifo);
    > -                       if (fifo != dw_readw(dws, txfltr))
    > -                               break;
    > -               }
    > -
    > -               dws->fifo_len = (fifo == 257) ? 0 : fifo;
    > -               dw_writew(dws, txfltr, 0);
    > -       }
    >  }
    >
    >  int __devinit spi_dw_add_host(struct spi_dw *dws)
    > --
    > 1.7.3.4
    >
    >
    > ------------------------------------------------------------------------------
    > Simplify data backup and recovery for your virtual environment with vRanger.
    > Installation's a snap, and flexible recovery options mean your data is safe,
    > secure and there when you need it. Data protection magic?
    > Nope - It's vRanger. Get your free trial download today.
    > http://p.sf.net/sfu/quest-sfdev2dev
    > _______________________________________________
    > spi-devel-general mailing list
    > spi-devel-general@lists.sourceforge.net
    > https://lists.sourceforge.net/lists/listinfo/spi-devel-general
    >



    --
    Grant Likely, B.Sc., P.Eng.
    Secret Lab Technologies Ltd.
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2011-06-23 05:57    [W:4.477 / U:0.620 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site