1. 17 Feb, 2011 23 commits
  2. 03 Feb, 2011 14 commits
    • Stephen Boyd's avatar
      hvc_dcc: Simplify assembly for v6 and v7 ARM · 8e6d3fe1
      Stephen Boyd authored
      The inline assembly differences for v6 vs. v7 in the hvc_dcc
      driver are purely optimizations. On a v7 processor, an mrc with
      the pc sets the condition codes to the 28-31 bits of the register
      being read. It just so happens that the TX/RX full bits the DCC
      driver is testing for are high enough in the register to be put
      into the condition codes. On a v6 processor, this "feature" isn't
      implemented and thus we have to do the usual read, mask, test
      operations to check for TX/RX full.
      Since we already test the RX/TX full bits before calling
      __dcc_getchar() and __dcc_putchar() we don't actually need to do
      anything special for v7 over v6. The only difference is in
      hvc_dcc_get_chars(). We would test RX full, poll RX full, and
      then read a character from the buffer, whereas now we will test
      RX full, read a character from the buffer, and then test RX full
      again for the second iteration of the loop. It doesn't seem
      possible for the buffer to go from full to empty between testing
      the RX full and reading a character. Therefore, replace the v7
      versions with the v6 versions and everything works the same.
      Acked-by: default avatarTony Lindgren <tony@atomide.com>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Acked-by: default avatarNicolas Pitre <nicolas.pitre@linaro.org>
      Cc: Daniel Walker <dwalker@codeaurora.org>
      Signed-off-by: default avatarStephen Boyd <sboyd@codeaurora.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    • Stephen Boyd's avatar
      hvc_dcc: Simplify put_chars()/get_chars() loops · bf73bd35
      Stephen Boyd authored
      Casting and anding with 0xff is unnecessary in
      hvc_dcc_put_chars() since buf is already a char[].
      __dcc_get_char() can't return an int less than 0 since it only
      returns a char. Simplify the if statement in hvc_dcc_get_chars()
      to take this into account.
      Cc: Daniel Walker <dwalker@codeaurora.org>
      Signed-off-by: default avatarStephen Boyd <sboyd@codeaurora.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    • Stephen Boyd's avatar
      hvc_dcc: Fix bad code generation by marking assembly volatile · a9963201
      Stephen Boyd authored
      Without marking the asm __dcc_getstatus() volatile my compiler
      decides it can cache the value of __ret in a register and then
      check the value of it continually in hvc_dcc_put_chars() (I had
      to replace get_wait/put_wait with 1 and fixup the branch
      otherwise my disassembler barfed on __dcc_(get|put)char).
      00000000 <hvc_dcc_put_chars>:
         0:   ee103e11        mrc     14, 0, r3, cr0, cr1, {0}
         4:   e3a0c000        mov     ip, #0  ; 0x0
         8:   e2033202        and     r3, r3, #536870912      ; 0x20000000
         c:   ea000006        b       2c <hvc_dcc_put_chars+0x2c>
        10:   e3530000        cmp     r3, #0  ; 0x0
        14:   1afffffd        bne     10 <hvc_dcc_put_chars+0x10>
        18:   e7d1000c        ldrb    r0, [r1, ip]
        1c:   ee10fe11        mrc     14, 0, pc, cr0, cr1, {0}
        20:   2afffffd        bcs     1c <hvc_dcc_put_chars+0x1c>
        24:   ee000e15        mcr     14, 0, r0, cr0, cr5, {0}
        28:   e28cc001        add     ip, ip, #1      ; 0x1
        2c:   e15c0002        cmp     ip, r2
        30:   bafffff6        blt     10 <hvc_dcc_put_chars+0x10>
        34:   e1a00002        mov     r0, r2
        38:   e12fff1e        bx      lr
      As you can see, the value of the mrc is checked against
      DCC_STATUS_TX (bit 29) and then stored in r3 for later use.
      Marking the asm volatile produces the following:
      00000000 <hvc_dcc_put_chars>:
         0:   e3a03000        mov     r3, #0  ; 0x0
         4:   ea000007        b       28 <hvc_dcc_put_chars+0x28>
         8:   ee100e11        mrc     14, 0, r0, cr0, cr1, {0}
         c:   e3100202        tst     r0, #536870912  ; 0x20000000
        10:   1afffffc        bne     8 <hvc_dcc_put_chars+0x8>
        14:   e7d10003        ldrb    r0, [r1, r3]
        18:   ee10fe11        mrc     14, 0, pc, cr0, cr1, {0}
        1c:   2afffffd        bcs     18 <hvc_dcc_put_chars+0x18>
        20:   ee000e15        mcr     14, 0, r0, cr0, cr5, {0}
        24:   e2833001        add     r3, r3, #1      ; 0x1
        28:   e1530002        cmp     r3, r2
        2c:   bafffff5        blt     8 <hvc_dcc_put_chars+0x8>
        30:   e1a00002        mov     r0, r2
        34:   e12fff1e        bx      lr
      which looks better and actually works. Mark all the inline
      assembly in this file as volatile since we don't want the
      compiler to optimize away these statements or move them around
      in any way.
      Acked-by: default avatarTony Lindgren <tony@atomide.com>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Acked-by: default avatarNicolas Pitre <nicolas.pitre@linaro.org>
      Cc: Daniel Walker <dwalker@codeaurora.org>
      Signed-off-by: default avatarStephen Boyd <sboyd@codeaurora.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    • Tomoya MORINAGA's avatar
      serial: pch_uart: revert Kconfig for non-DMA mode · 380042f2
      Tomoya MORINAGA authored
      PCH_DMA is not always enabled when a user uses PCH_UART.
      Since overhead of DMA is not small, in case of low frequent
      communication, without DMA is better.
      Thus, "select PCH_DMA" and DMADEVICES are unnecessary
      Signed-off-by: default avatarTomoya MORINAGA <tomoya-linux@dsn.okisemi.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    • Tomoya MORINAGA's avatar
      serial: pch_uart: support new device ML7213 · 4564e1ef
      Tomoya MORINAGA authored
      Support ML7213 device of OKI SEMICONDUCTOR.
      ML7213 is companion chip of Intel Atom E6xx series for IVI(In-Vehicle Infotainment).
      ML7213 is completely compatible for Intel EG20T PCH.
      Signed-off-by: default avatarTomoya MORINAGA <tomoya-linux@dsn.okisemi.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    • Tejun Heo's avatar
      68328serial: remove unsed m68k_serial->tqueue_hangup · f094298b
      Tejun Heo authored
      m68k_serial->tqueue_hangup is unused.  Remove it.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Cc: Greg Ungerer <gerg@uclinux.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    • Yin Kangkai's avatar
      serial-core: reset the console speed on resume · 5933a161
      Yin Kangkai authored
      On some platforms, we need to restore the console speed on resume even
      it was not suspended (no_console_suspend), and on others we don't have
      to do that.
      So don't care about the "console_suspend_enabled" and unconditionally
      reset the console speed if it is a console.
      This is actually a redo of ba15ab0e (Set proper console speed on resume
      if console suspend is disabled) from Deepak Saxena.  I also tried to
      investigate more to find out if this change will break others, here is
      what I've found out:
      commit 891b9dd1
      Author: Jason Wang <jason77.wang@gmail.com>
          serial-core: restore termios settings when resume console ports
      commit ca2e71aa
      Author: Jason Wang <jason77.wang@gmail.com>
          serial-core: skip call set_termios/console_start when no_console_suspend
      commit 4547be78
      Author: Stanislav Brabec <sbrabec@suse.cz>
          serial-core: resume serial hardware with no_console_suspend
      commit ba15ab0e
      Author: Deepak Saxena <dsaxena@laptop.org>
          Set proper console speed on resume if console suspend is disabled
      from ba15ab0e, we learned that, even if the console suspend is disabled
      (when no_console_suspend is set), we may still need to "reset the port
      to the state it was in before we suspended."
      Then with 4547be78, this piece of code is removed.
      And then Jason Wang added that back in ca2e71aa and 891b9dd1, to fix
      some breakage on OMAP3EVM platform. From ca2e71aa we learned that the
      "set_termios" things is actually needed by both console is suspended
      and not suspended.
      That's why I removed the console_suspended_enabled condition, and only
      call console_start() when we actually suspeneded it.
      I also noticed in this thread:
      http://marc.info/?t=129079257100004&r=1&w=2, which talked about on
      some platforms, UART HW will be cut power whether or not we set
      no_console_suspend, and then on resume it does not work quite well. I
      have a similar HW, and this patch fixed this issue, don't know if this
      patch also works on their platforms.
      [Update: Stanislav tested this patch on Zaurus and reported it improves the
      situation. Thanks.]
      CC: Greg KH <greg@kroah.com>
      CC: Deepak Saxena <dsaxena@laptop.org>
      CC: Jason Wang <jason77.wang@gmail.com>
      CC: Stanislav Brabec <sbrabec@suse.cz>
      CC: Daniel Drake <dsd@laptop.org>
      Signed-off-by: default avatarYin Kangkai <kangkai.yin@linux.intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    • Dan Carpenter's avatar
      serial: mrst_max3110: make buffer larger · d8653d30
      Dan Carpenter authored
      This is used to store the spi_device ->modalias so they have to be the same
      size.  SPI_NAME_SIZE is 32.
      Signed-off-by: default avatarDan Carpenter <error27@gmail.com>
      Signed-off-by: default avatarAlan Cox <alan@linux.intel.com>
      Cc: stable@kernel.org
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    • Tejun Heo's avatar
      tty_ldisc: don't use flush_scheduled_work() · 0a1f1a0b
      Tejun Heo authored
      flush_scheduled_work() is scheduled to be deprecated.  Explicitly sync
      flush the used work items instead.  Note that before this change,
      flush_scheduled_work() wouldn't have properly flushed tty->buf.work if
      it were on timer.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    • Jarkko Nikula's avatar
      serial: omap-serial: Enable the UART wake-up bits always · 78841462
      Jarkko Nikula authored
      OMAP can do also dynamic idling so wake-up enable register should be set
      also while system is running. If UART_OMAP_WER is not set, then for instance
      the RX activity cannot wake up the UART port that is sleeping.
      This RX wake-up feature was working when the 8250 driver was used instead
      of omap-serial. Reason for this is that the 8250 doesn't set the
      UART_OMAP_WER and then arch/arm/mach-omap2/pm34xx.c ends up saving and
      restoring the reset default which is the same than value
      Fix this by moving the conditional UART_OMAP_WER write from serial_omap_pm
      into serial_omap_startup where wake-up bits are set unconditionally.
      Signed-off-by: default avatarJarkko Nikula <jhnikula@gmail.com>
      Cc: Govindraj.R <govindraj.raja@ti.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    • Thomas Weber's avatar
      OMAP: Enable Magic SysRq on serial console ttyOx · 364a6ece
      Thomas Weber authored
      Magic SysRq key is not working for OMAP on new serial
      console ttyOx because SUPPORT_SYSRQ is not defined
      for omap-serial.
      This patch defines SUPPORT_SYSRQ in omap-serial and
      enables handling of Magic SysRq character.
      Further there is an issue of losing first break character.
      Removing the reset of the lsr_break_flag fixes this issue.
      Signed-off-by: default avatarThomas Weber <weber@corscience.de>
      Acked-by: default avatarGovindraj.R <govindraj.raja@ti.com>
      Tested-by: default avatarManjunath G Kondaiah <manjugk@ti.com>
      Acked-by: default avatarKevin Hilman <khilman@ti.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    • Russ Gorby's avatar
      serial: ifx6x60: expanded info available from platform data · 2f1522ec
      Russ Gorby authored
      Some platform attributes (e.g. max_hz, use_dma) were being intuited
      from the modem type. These things should be specified by the platform
      Added max_hz, use_dma to ifx_modem_platform_data definition,
      replaced is_6160 w/ modem_type, and changed clients accordingly
      Signed-off-by: default avatarRuss Gorby <russ.gorby@intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    • Feng Tang's avatar
      serial: mfd: remove the timeout workaround for A0 · a5f4dbf0
      Feng Tang authored
      This is kind of a revert for commit 669b7a09 "hsu: add a periodic
      timer to check dma rx channel", which is a workaround for a bug in A0
      stepping silicon, where a dma rx data timeout is missing for some case.
      Since new silicon has fixed it and the old version is phasing out, no
      need to carry on it any more.
      Signed-off-by: default avatarFeng Tang <feng.tang@intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    • Vasiliy Kulikov's avatar
      tty: serial: bfin_sport_uart: fix signedness error · 940f3be4
      Vasiliy Kulikov authored
      sport->port.irq is unsigned, check for <0 doesn't make sense.
      Explicitly cast it to int to check for error.
      Signed-off-by: default avatarVasiliy Kulikov <segoon@openwall.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
  3. 31 Jan, 2011 3 commits
    • Linus Torvalds's avatar
      Linux 2.6.38-rc3 · ebf53826
      Linus Torvalds authored
    • Linus Torvalds's avatar
      Merge branch 'bugfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6 · 0fd08c55
      Linus Torvalds authored
      * 'bugfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6:
        NFS: NFSv4 readdir loses entries
        NFS: Micro-optimize nfs4_decode_dirent()
        NFS: Fix an NFS client lockdep issue
        NFS construct consistent co_ownerid for v4.1
        NFS: nfs_wcc_update_inode() should set nfsi->attr_gencount
        NFS improve pnfs_put_deviceid_cache debug print
        NFS fix cb_sequence error processing
        NFS do not find client in NFSv4 pg_authenticate
        NLM: Fix "kernel BUG at fs/lockd/host.c:417!" or ".../host.c:283!"
        NFS: Prevent memory allocation failure in nfsacl_encode()
        NFS: nfsacl_{encode,decode} should return signed integer
        NFS: Fix "kernel BUG at fs/nfs/nfs3xdr.c:1338!"
        NFS: Fix "kernel BUG at fs/aio.c:554!"
        NFS4: Avoid potential NULL pointer dereference in decode_and_add_ds().
        NFS: fix handling of malloc failure during nfs_flush_multi()
    • Linus Torvalds's avatar
      Merge branch 'fixes' of master.kernel.org:/home/rmk/linux-2.6-arm · 7921127e
      Linus Torvalds authored
      * 'fixes' of master.kernel.org:/home/rmk/linux-2.6-arm:
        ARM: smp_on_up: allow non-ARM SMP processors
        ARM: io: ensure inb/outb() et.al. are properly ordered on ARMv6+
        ARM: initrd: disable initrd if passed address overlaps reserved region
        ARM: footbridge: fix debug macros
        ARM: mmci: round down the bytes transferred on error
        ARM: mmci: complete the transaction on error
        ARM: 6642/1: mmci: calculate remaining bytes at error correctly