Skip to content
Snippets Groups Projects
  1. Feb 17, 2011
  2. Feb 04, 2011
    • 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>
      8e6d3fe1
    • 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>
      bf73bd35
    • 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>
      a9963201
  3. Feb 03, 2011
  4. Jan 26, 2011
    • Torben Hohn's avatar
      console: rename acquire/release_console_sem() to console_lock/unlock() · ac751efa
      Torben Hohn authored
      
      The -rt patches change the console_semaphore to console_mutex.  As a
      result, a quite large chunk of the patches changes all
      acquire/release_console_sem() to acquire/release_console_mutex()
      
      This commit makes things use more neutral function names which dont make
      implications about the underlying lock.
      
      The only real change is the return value of console_trylock which is
      inverted from try_acquire_console_sem()
      
      This patch also paves the way to switching console_sem from a semaphore to
      a mutex.
      
      [akpm@linux-foundation.org: coding-style fixes]
      [akpm@linux-foundation.org: make console_trylock return 1 on success, per Geert]
      Signed-off-by: default avatarTorben Hohn <torbenh@gmx.de>
      Cc: Thomas Gleixner <tglx@tglx.de>
      Cc: Greg KH <gregkh@suse.de>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Geert Uytterhoeven <geert@linux-m68k.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      ac751efa
  5. Jan 23, 2011
    • Randy Dunlap's avatar
      tty/serial: fix apbuart build · fed7bb32
      Randy Dunlap authored
      
      Fix build errors by selecting SERIAL_CORE:
      
      ERROR: "uart_register_driver" [drivers/tty/serial/apbuart.ko] undefined!
      ERROR: "uart_write_wakeup" [drivers/tty/serial/apbuart.ko] undefined!
      ERROR: "uart_update_timeout" [drivers/tty/serial/apbuart.ko] undefined!
      ERROR: "uart_get_divisor" [drivers/tty/serial/apbuart.ko] undefined!
      ERROR: "uart_get_baud_rate" [drivers/tty/serial/apbuart.ko] undefined!
      ERROR: "uart_add_one_port" [drivers/tty/serial/apbuart.ko] undefined!
      ERROR: "uart_unregister_driver" [drivers/tty/serial/apbuart.ko] undefined!
      ERROR: "uart_remove_one_port" [drivers/tty/serial/apbuart.ko] undefined!
      
      Signed-off-by: default avatarRandy Dunlap <randy.dunlap@oracle.com>
      Cc: Daniel Hellstrom <daniel@gaisler.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      fed7bb32
    • Paul Fulghum's avatar
      n_hdlc: fix read and write locking · 1035b63d
      Paul Fulghum authored
      
      Fix locking in read and write code of n_hdlc line discipline.
      
      2.6.36 replaced lock_kernel() with tty_lock().  The tty mutex is not
      dropped automatically when the thread sleeps like the BKL.  This results
      in a blocked read or write holding the tty mutex and stalling operations
      by other devices that use the tty mutex.
      
      A review of n_hdlc read and write code shows:
      1. neither BKL or tty mutex are required for correct operation
      2. read can block while read data is available if data is posted
         between availability check and call to interruptible_sleep_on()
      3. write does not set process state to TASK_INTERRUPTIBLE
         on each pass through the processing loop which can cause
         unneeded scheduling of the thread
      
      The unnecessary tty mutex references have been removed.
      
      Read changed to use same code as n_tty read
      for completing reads and blocking.
      
      Write corrected to set process state to TASK_INTERRUPTIBLE on each pass
      through processing loop.
      
      Signed-off-by: default avatarPaul Fulghum <paulkf@microgate.com>
      Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      1035b63d
    • Pavel Machek's avatar
      serial: unbreak billionton CF card · d0694e2a
      Pavel Machek authored
      
      Unbreak Billionton CF bluetooth card. This actually fixes a regression
      on zaurus.
      
      Signed-off-by: default avatarPavel Machek <pavel@ucw.cz>
      Cc: stable <stable@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      d0694e2a
    • Kay Sievers's avatar
      tty: use for_each_console() and WARN() on sysfs failures · a2a6a822
      Kay Sievers authored
      
      This fixes the build warnings in the tty code, and uses the proper
      function for iterating over the console devices.
      
      Signed-off-by: default avatarKay Sievers <kay.sievers@vrfy.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      a2a6a822
    • Dave Airlie's avatar
      vt: fix issue when fbcon wants to takeover a second time. · c55c63c6
      Dave Airlie authored
      
      With framebuffer handover and multiple GPUs, we get into a
      position where the fbcon unbinds the vesafb framebuffer for GPU 1,
      but we still have a radeon framebuffer bound from GPU 0, so
      we don't unregister the console driver. Then when we tried to bind
      the new radeon framebuffer for GPU1 we never get to the bind
      call as we fail due to the console being registered already.
      
      This changes the return value to -EBUSY when the driver is
      already registered and continues to bind for -EBUSY.
      
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      c55c63c6
  6. Jan 13, 2011
    • Greg Kroah-Hartman's avatar
      tty: move drivers/serial/ to drivers/tty/serial/ · ab4382d2
      Greg Kroah-Hartman authored
      
      The serial drivers are really just tty drivers, so move them to
      drivers/tty/ to make things a bit neater overall.
      
      This is part of the tty/serial driver movement proceedure as proposed by
      Arnd Bergmann and approved by everyone involved a number of months ago.
      
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Cc: Geert Uytterhoeven <geert@linux-m68k.org>
      Cc: Rogier Wolff <R.E.Wolff@bitwizard.nl>
      Cc: Michael H. Warfield <mhw@wittsend.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      ab4382d2
    • Greg Kroah-Hartman's avatar
      tty: move hvc drivers to drivers/tty/hvc/ · 728674a7
      Greg Kroah-Hartman authored
      
      As requested by Arnd Bergmann, the hvc drivers are now
      moved to the drivers/tty/hvc/ directory.  The virtio_console.c driver
      was also moved, as it required the hvc_console.h file to be able to be
      built, and it really is a hvc driver.
      
      Cc: Arnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      728674a7
  7. Dec 17, 2010
  8. Dec 16, 2010
Loading