lkml.org 
[lkml]   [2011]   [Nov]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[085/101] plat-mxc: iomux-v3.h: implicitly enable pull-up/down when thats desired
    2.6.33-longterm review patch.  If anyone has any objections, please let us know.

    ------------------

    From: Paul Fertser <fercerpav@gmail.com>

    commit 6571534b600b8ca1936ff5630b9e0947f21faf16 upstream.

    To configure pads during the initialisation a set of special constants
    is used, e.g.
    #define MX25_PAD_FEC_MDIO__FEC_MDIO IOMUX_PAD(0x3c4, 0x1cc, 0x10, 0, 0, PAD_CTL_HYS | PAD_CTL_PUS_22K_UP)

    The problem is that no pull-up/down is getting activated unless both
    PAD_CTL_PUE (pull-up enable) and PAD_CTL_PKE (pull/keeper module
    enable) set. This is clearly stated in the i.MX25 datasheet and is
    confirmed by the measurements on hardware. This leads to some rather
    hard to understand bugs such as misdetecting an absent ethernet PHY (a
    real bug i had), unstable data transfer etc. This might affect mx25,
    mx35, mx50, mx51 and mx53 SoCs.

    It's reasonable to expect that if the pullup value is specified, the
    intention was to have it actually active, so we implicitly add the
    needed bits.

    Signed-off-by: Paul Fertser <fercerpav@gmail.com>
    Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    arch/arm/plat-mxc/include/mach/iomux-v3.h | 10 +++++-----
    1 file changed, 5 insertions(+), 5 deletions(-)

    --- a/arch/arm/plat-mxc/include/mach/iomux-v3.h
    +++ b/arch/arm/plat-mxc/include/mach/iomux-v3.h
    @@ -73,11 +73,11 @@ struct pad_desc {
    #define PAD_CTL_HYS (1 << 8)

    #define PAD_CTL_PKE (1 << 7)
    -#define PAD_CTL_PUE (1 << 6)
    -#define PAD_CTL_PUS_100K_DOWN (0 << 4)
    -#define PAD_CTL_PUS_47K_UP (1 << 4)
    -#define PAD_CTL_PUS_100K_UP (2 << 4)
    -#define PAD_CTL_PUS_22K_UP (3 << 4)
    +#define PAD_CTL_PUE (1 << 6 | PAD_CTL_PKE)
    +#define PAD_CTL_PUS_100K_DOWN (0 << 4 | PAD_CTL_PUE)
    +#define PAD_CTL_PUS_47K_UP (1 << 4 | PAD_CTL_PUE)
    +#define PAD_CTL_PUS_100K_UP (2 << 4 | PAD_CTL_PUE)
    +#define PAD_CTL_PUS_22K_UP (3 << 4 | PAD_CTL_PUE)

    #define PAD_CTL_ODE (1 << 3)




    \
     
     \ /
      Last update: 2011-11-03 03:07    [W:5.042 / U:0.156 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site