1. 25 4月, 2008 5 次提交
    • M
      USB: cypress_m8: Limit baud rate to <=4800 for USB low speed devices · 92983c21
      Mike Isely 提交于
      The cypress app note for the M8 states that for the USB low speed
      version of the part, throughput is effectively limited to 800
      bytes/sec.  So if we were to try a faster baud rate in such cases then
      we risk overrun errors on receive.  Best to just identify this case
      and limit the rate to 4800 baud or less (by ignoring any request to
      set a faster rate).  The old baud rate setting code was somewhat
      fragile; this change also hopefully makes it easier in the future to
      better checking / limiting.
      Signed-off-by: NMike Isely <isely@pobox.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      92983c21
    • M
      USB: cypress_m8: Get rid of pointless NULL check · 6768306c
      Mike Isely 提交于
      Remove a NULL check in cypress_m8; the check is useless in this
      context because it is referenced earlier in the same code path thus
      the kernel would be oops'ed before reaching this point anyway.  (And
      it's really pointless here anyway; if this pointer somehow is NULL the
      driver is going to have serious problems in many other places.)
      Signed-off-by: NMike Isely <isely@pobox.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      6768306c
    • M
      USB: cypress_m8: Don't issue GET_CONFIG for certain devices · 3d6aa320
      Mike Isely 提交于
      Earthmate LT-20 devices (both "old" and "new" versions) can't tolerate
      a GET_CONFIG command.  The original Earthmate has no trouble with
      this.  Presumably other non-Earthmate devices are still OK as well.
      This change disables the use of GET_CONFIG for cases where it is known
      not to work.
      Signed-off-by: NMike Isely <isely@pobox.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      
      3d6aa320
    • M
      USB: cypress_m8: Packet format is separate from characteristic size · 3416eaa1
      Mike Isely 提交于
      cypress_m8: Packet format is separate from characteristic size
      
      The Cypress app note states that when using an 8 byte packet buffer
      size that the packet format is modified (to be more compact).  However
      I have since discovered that newer DeLorme Earthmate LT-20 devices
      (those that are low speed USB with 8 byte packet size) STILL use the
      format that is really supposed to correspond to 32 byte packets.
      Further confusing things is the subsequent discovery that there are
      actually two different types of LT-20 - older LT-20's use 32 byte
      packets which is probably why this issue wasn't originally
      encountered.  The solution here is to flag the packet format
      separately from the buffer size.  Then at initialization time,
      identify the correct combination and set it up.  This is a critical
      fix for anyone with a newer LT-20.  Older devices and non-Earthmate
      devices should remain unaffected by this change.  (If other devices
      behave in this, uh, unexpected manner, it's now just a simple 1 line
      change to fix them as well (change the pkt_fmt member for that
      device).  Default behavior with this patch is still to drive the
      format as per the app-note; of course for Earthmate devices this is
      overridden.
      Signed-off-by: NMike Isely <isely@pobox.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      3416eaa1
    • M
      USB: cypress_m8: Feature buffer fixes · 93075544
      Mike Isely 提交于
      cypress_m8: Feature buffer fixes
      
      From: Mike Isely <isely@pobox.com>
      
      Don't hardcode the feature buffer size; use sizeof() instead.  That
      way we can easily specify the size in a single spot.  Speaking of the
      feature buffer size, the Cypress app note (and further testing with a
      DeLorme Earthmate) suggests that this size should be 5 not 8 bytes.
      Signed-off-by: NMike Isely <isely@pobox.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      
      93075544
  2. 11 3月, 2008 1 次提交
  3. 02 2月, 2008 1 次提交
  4. 13 7月, 2007 1 次提交
  5. 08 2月, 2007 1 次提交
  6. 21 12月, 2006 1 次提交
  7. 14 12月, 2006 1 次提交
    • R
      [PATCH] getting rid of all casts of k[cmz]alloc() calls · 5cbded58
      Robert P. J. Day 提交于
      Run this:
      
      	#!/bin/sh
      	for f in $(grep -Erl "\([^\)]*\) *k[cmz]alloc" *) ; do
      	  echo "De-casting $f..."
      	  perl -pi -e "s/ ?= ?\([^\)]*\) *(k[cmz]alloc) *\(/ = \1\(/" $f
      	done
      
      And then go through and reinstate those cases where code is casting pointers
      to non-pointers.
      
      And then drop a few hunks which conflicted with outstanding work.
      
      Cc: Russell King <rmk@arm.linux.org.uk>, Ian Molton <spyro@f2s.com>
      Cc: Mikael Starvik <starvik@axis.com>
      Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
      Cc: Roman Zippel <zippel@linux-m68k.org>
      Cc: Geert Uytterhoeven <geert@linux-m68k.org>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Kyle McMartin <kyle@mcmartin.ca>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Jeff Dike <jdike@addtoit.com>
      Cc: Greg KH <greg@kroah.com>
      Cc: Jens Axboe <jens.axboe@oracle.com>
      Cc: Paul Fulghum <paulkf@microgate.com>
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Cc: Karsten Keil <kkeil@suse.de>
      Cc: Mauro Carvalho Chehab <mchehab@infradead.org>
      Cc: Jeff Garzik <jeff@garzik.org>
      Cc: James Bottomley <James.Bottomley@steeleye.com>
      Cc: Ian Kent <raven@themaw.net>
      Cc: Steven French <sfrench@us.ibm.com>
      Cc: David Woodhouse <dwmw2@infradead.org>
      Cc: Neil Brown <neilb@cse.unsw.edu.au>
      Cc: Jaroslav Kysela <perex@suse.cz>
      Cc: Takashi Iwai <tiwai@suse.de>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      5cbded58
  8. 09 12月, 2006 1 次提交
    • A
      [PATCH] tty: switch to ktermios · 606d099c
      Alan Cox 提交于
      This is the grungy swap all the occurrences in the right places patch that
      goes with the updates.  At this point we have the same functionality as
      before (except that sgttyb() returns speeds not zero) and are ready to
      begin turning new stuff on providing nobody reports lots of bugs
      
      If you are a tty driver author converting an out of tree driver the only
      impact should be termios->ktermios name changes for the speed/property
      setting functions from your upper layers.
      
      If you are implementing your own TCGETS function before then your driver
      was broken already and its about to get a whole lot more painful for you so
      please fix it 8)
      
      Also fill in c_ispeed/ospeed on init for most devices, although the current
      code will do this for you anyway but I'd like eventually to lose that extra
      paranoia
      
      [akpm@osdl.org: bluetooth fix]
      [mp3@de.ibm.com: sclp fix]
      [mp3@de.ibm.com: warning fix for tty3270]
      [hugh@veritas.com: fix tty_ioctl powerpc build]
      [jdike@addtoit.com: uml: fix ->set_termios declaration]
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NMartin Peschke <mp3@de.ibm.com>
      Acked-by: NPeter Oberparleiter <oberpar@de.ibm.com>
      Cc: Cornelia Huck <cornelia.huck@de.ibm.com>
      Signed-off-by: NHugh Dickins <hugh@veritas.com>
      Signed-off-by: NJeff Dike <jdike@addtoit.com>
      Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      606d099c
  9. 02 12月, 2006 1 次提交
  10. 05 10月, 2006 1 次提交
    • D
      IRQ: Maintain regs pointer globally rather than passing to IRQ handlers · 7d12e780
      David Howells 提交于
      Maintain a per-CPU global "struct pt_regs *" variable which can be used instead
      of passing regs around manually through all ~1800 interrupt handlers in the
      Linux kernel.
      
      The regs pointer is used in few places, but it potentially costs both stack
      space and code to pass it around.  On the FRV arch, removing the regs parameter
      from all the genirq function results in a 20% speed up of the IRQ exit path
      (ie: from leaving timer_interrupt() to leaving do_IRQ()).
      
      Where appropriate, an arch may override the generic storage facility and do
      something different with the variable.  On FRV, for instance, the address is
      maintained in GR28 at all times inside the kernel as part of general exception
      handling.
      
      Having looked over the code, it appears that the parameter may be handed down
      through up to twenty or so layers of functions.  Consider a USB character
      device attached to a USB hub, attached to a USB controller that posts its
      interrupts through a cascaded auxiliary interrupt controller.  A character
      device driver may want to pass regs to the sysrq handler through the input
      layer which adds another few layers of parameter passing.
      
      I've build this code with allyesconfig for x86_64 and i386.  I've runtested the
      main part of the code on FRV and i386, though I can't test most of the drivers.
      I've also done partial conversion for powerpc and MIPS - these at least compile
      with minimal configurations.
      
      This will affect all archs.  Mostly the changes should be relatively easy.
      Take do_IRQ(), store the regs pointer at the beginning, saving the old one:
      
      	struct pt_regs *old_regs = set_irq_regs(regs);
      
      And put the old one back at the end:
      
      	set_irq_regs(old_regs);
      
      Don't pass regs through to generic_handle_irq() or __do_IRQ().
      
      In timer_interrupt(), this sort of change will be necessary:
      
      	-	update_process_times(user_mode(regs));
      	-	profile_tick(CPU_PROFILING, regs);
      	+	update_process_times(user_mode(get_irq_regs()));
      	+	profile_tick(CPU_PROFILING);
      
      I'd like to move update_process_times()'s use of get_irq_regs() into itself,
      except that i386, alone of the archs, uses something other than user_mode().
      
      Some notes on the interrupt handling in the drivers:
      
       (*) input_dev() is now gone entirely.  The regs pointer is no longer stored in
           the input_dev struct.
      
       (*) finish_unlinks() in drivers/usb/host/ohci-q.c needs checking.  It does
           something different depending on whether it's been supplied with a regs
           pointer or not.
      
       (*) Various IRQ handler function pointers have been moved to type
           irq_handler_t.
      Signed-Off-By: NDavid Howells <dhowells@redhat.com>
      (cherry picked from 1b16e7ac850969f38b375e511e3fa2f474a33867 commit)
      7d12e780
  11. 28 9月, 2006 4 次提交
    • M
      cypress_m8: implement graceful failure handling · 78aef519
      Mike Isely 提交于
      When receiving a fatal error from the USB core, e.g. EILSEQ (which can
      happen if the polling interval is too short), fail gracefully.
      Previously the driver would fill the log with useless error messages
      or (more alarmingly) silently spin forever trying to write updated
      control information to the device.  This change implements a new flag
      which if cleared indicates that the driver has failed.  The flag will
      be set on initialization, cleared on fatal errors, and anything else
      that touches the USB port in the driver will abort if the flag is
      clear.  When the flag is cleared, a message will be logged indicating
      that the driver has failed.
      Signed-off-by: NMike Isely <isely@pobox.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      78aef519
    • M
      cypress_m8: improve control endpoint error handling · 48298e50
      Mike Isely 提交于
      Fix usb core function error return checks to look for negative errno
      values, not positive errno values.  This bug had rendered those checks
      useless.  Also remove attempted error recovery on control endpoints
      for EPIPE - with control endpoints EPIPE does not indicate a halted
      endpoint so trying to recover with usb_clear_halt() is not the correct
      action.
      Signed-off-by: NMike Isely <isely@pobox.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      48298e50
    • M
      cypress_m8: use usb_fill_int_urb where appropriate · 9aa8dae7
      Mike Isely 提交于
      Rather than directly filling in URB fields, it's safer to use
      usb_fill_int_urb().  This improves robustness of the driver; URB
      changes in the future will not go uninitialized here.  That point not
      withstanding, this driver should at least be self-consistent.  Either
      use usb_fill_int_urb() everywhere or don't bother with it all.
      Signed-off-by: NMike Isely <isely@pobox.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      9aa8dae7
    • M
      cypress_m8: use appropriate URB polling interval · 0257fa9f
      Mike Isely 提交于
      The polling interval for the device can't always be 1msec.  If it is
      too quick, the device can fail causing a fatal (to the driver) EILSEQ
      error from the USB core.  The actual correct value is reported by the
      device as part of its configuration data, so use that value as the
      default.  On a DeLorme Earthmate for example, the device reports that
      it wants a 6msec interval.  As part of this fix, the "interval" module
      option has been fixed as well; the device's default can be overridden
      by specifying interval=<value> as a module option.
      Signed-off-by: NMike Isely <isely@pobox.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      
      0257fa9f
  12. 13 7月, 2006 1 次提交
  13. 01 7月, 2006 1 次提交
  14. 22 6月, 2006 1 次提交
  15. 21 3月, 2006 2 次提交
  16. 11 1月, 2006 1 次提交
    • A
      [PATCH] TTY layer buffering revamp · 33f0f88f
      Alan Cox 提交于
      The API and code have been through various bits of initial review by
      serial driver people but they definitely need to live somewhere for a
      while so the unconverted drivers can get knocked into shape, existing
      drivers that have been updated can be better tuned and bugs whacked out.
      
      This replaces the tty flip buffers with kmalloc objects in rings. In the
      normal situation for an IRQ driven serial port at typical speeds the
      behaviour is pretty much the same, two buffers end up allocated and the
      kernel cycles between them as before.
      
      When there are delays or at high speed we now behave far better as the
      buffer pool can grow a bit rather than lose characters. This also means
      that we can operate at higher speeds reliably.
      
      For drivers that receive characters in blocks (DMA based, USB and
      especially virtualisation) the layer allows a lot of driver specific
      code that works around the tty layer with private secondary queues to be
      removed. The IBM folks need this sort of layer, the smart serial port
      people do, the virtualisers do (because a virtualised tty typically
      operates at infinite speed rather than emulating 9600 baud).
      
      Finally many drivers had invalid and unsafe attempts to avoid buffer
      overflows by directly invoking tty methods extracted out of the innards
      of work queue structs. These are no longer needed and all go away. That
      fixes various random hangs with serial ports on overflow.
      
      The other change in here is to optimise the receive_room path that is
      used by some callers. It turns out that only one ldisc uses receive room
      except asa constant and it updates it far far less than the value is
      read. We thus make it a variable not a function call.
      
      I expect the code to contain bugs due to the size alone but I'll be
      watching and squashing them and feeding out new patches as it goes.
      
      Because the buffers now dynamically expand you should only run out of
      buffering when the kernel runs out of memory for real.  That means a lot of
      the horrible hacks high performance drivers used to do just aren't needed any
      more.
      
      Description:
      
      tty_insert_flip_char is an old API and continues to work as before, as does
      tty_flip_buffer_push() [this is why many drivers dont need modification].  It
      does now also return the number of chars inserted
      
      There are also
      
      tty_buffer_request_room(tty, len)
      
      which asks for a buffer block of the length requested and returns the space
      found.  This improves efficiency with hardware that knows how much to
      transfer.
      
      and tty_insert_flip_string_flags(tty, str, flags, len)
      
      to insert a string of characters and flags
      
      For a smart interface the usual code is
      
          len = tty_request_buffer_room(tty, amount_hardware_says);
          tty_insert_flip_string(tty, buffer_from_card, len);
      
      More description!
      
      At the moment tty buffers are attached directly to the tty.  This is causing a
      lot of the problems related to tty layer locking, also problems at high speed
      and also with bursty data (such as occurs in virtualised environments)
      
      I'm working on ripping out the flip buffers and replacing them with a pool of
      dynamically allocated buffers.  This allows both for old style "byte I/O"
      devices and also helps virtualisation and smart devices where large blocks of
      data suddenely materialise and need storing.
      
      So far so good.  Lots of drivers reference tty->flip.*.  Several of them also
      call directly and unsafely into function pointers it provides.  This will all
      break.  Most drivers can use tty_insert_flip_char which can be kept as an API
      but others need more.
      
      At the moment I've added the following interfaces, if people think more will
      be needed now is a good time to say
      
       int tty_buffer_request_room(tty, size)
      
      Try and ensure at least size bytes are available, returns actual room (may be
      zero).  At the moment it just uses the flipbuf space but that will change.
      Repeated calls without characters being added are not cumulative.  (ie if you
      call it with 1, 1, 1, and then 4 you'll have four characters of space.  The
      other functions will also try and grow buffers in future but this will be a
      more efficient way when you know block sizes.
      
       int tty_insert_flip_char(tty, ch, flag)
      
      As before insert a character if there is room.  Now returns 1 for success, 0
      for failure.
      
       int tty_insert_flip_string(tty, str, len)
      
      Insert a block of non error characters.  Returns the number inserted.
      
       int tty_prepare_flip_string(tty, strptr, len)
      
      Adjust the buffer to allow len characters to be added.  Returns a buffer
      pointer in strptr and the length available.  This allows for hardware that
      needs to use functions like insl or mencpy_fromio.
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Cc: Paul Fulghum <paulkf@microgate.com>
      Signed-off-by: NHirokazu Takata <takata@linux-m32r.org>
      Signed-off-by: NSerge Hallyn <serue@us.ibm.com>
      Signed-off-by: NJeff Dike <jdike@addtoit.com>
      Signed-off-by: NJohn Hawkes <hawkes@sgi.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: NAdrian Bunk <bunk@stusta.de>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      33f0f88f
  17. 10 1月, 2006 1 次提交
  18. 05 1月, 2006 1 次提交
  19. 29 10月, 2005 3 次提交
  20. 13 9月, 2005 1 次提交
  21. 09 9月, 2005 1 次提交
  22. 17 5月, 2005 1 次提交
  23. 04 5月, 2005 2 次提交
    • L
      [PATCH] USB cypress_m8: update kernel driver with current source · 3cb4a4f7
      Lonnie Mendez 提交于
      Fixed problem where setting or retreiving the serial config would fail
      with EPIPE.  Removed CRTS toggling so the driver behaves more like other
      usbserial adapters.  Issued new interval of 1ms instead of the default
      bInterval.  As a result, transfer speed has been substantially
      increased.  From avg. 850bps to avg. 3300bps.  Also added new module
      parameter 'interval' to tweak the interval in case this change causes
      problems for someone.  Cleaned up code and formatting issues so source
      is more readable.  Replaced the C++ style comments.  Various other code
      cleanups.
      Signed-off-by: NLonnie Mendez <lmendez19@austin.rr.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      3cb4a4f7
    • S
      [PATCH] USB: Spelling fixes for drivers/usb. · 093cf723
      Steven Cole 提交于
      Here are some spelling corrections for drivers/usb.
      
      cancelation -> cancellation
      succesful -> successful
      cancelation -> cancellation
      decriptor -> descriptor
      Initalize -> Initialize
      wierd -> weird
      Protocoll -> Protocol
      occured -> occurred
      successfull -> successful
      Procesing -> Processing
      devide -> divide
      Isochronuous -> Isochronous
      noticable -> noticeable
      Basicly -> Basically
      transfering -> transferring
      intialize -> initialize
      Incomming -> Incoming
      additionnal -> additional
      asume -> assume
      Unfortunatly -> Unfortunately
      retreive -> retrieve
      tranceiver -> transceiver
      Compatiblity -> Compatibility
      Incorprated -> Incorporated
      existance -> existence
      Ununsual -> Unusual
      Signed-off-by: NSteven Cole <elenstev@mesatop.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      093cf723
  24. 19 4月, 2005 1 次提交
  25. 17 4月, 2005 1 次提交
    • L
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds 提交于
      Initial git repository build. I'm not bothering with the full history,
      even though we have it. We can create a separate "historical" git
      archive of that later if we want to, and in the meantime it's about
      3.2GB when imported into git - space that would just make the early
      git days unnecessarily complicated, when we don't have a lot of good
      infrastructure for it.
      
      Let it rip!
      1da177e4