1. 02 11月, 2013 2 次提交
  2. 18 9月, 2013 1 次提交
    • F
      USB: pl2303: distinguish between original and cloned HX chips · 7d26a78f
      Frank Schäfer 提交于
      According to Prolific, several (unauthorized) cheap and less functional
      clones of the PL2303HX chip are in circulation. [1]
      I've had the chance to test such a cloned device and it turned out that
      it doesn't support any baud rates above 115200 baud (original: 6 Mbaud)
      It also doesn't support the divisior based baud rate encoding method,
      so no continuous baud rate adjustment is possible.
      Nevertheless, these devices have been working (unintentionally) with
      the driver up to commit 61fa8d69 ("pl2303: also use the divisor based
      baud rate encoding method for baud rates < 115200 with HX chips"), and
      this commit broke support for them.
      Fortunately, it is pretty simple to distinguish between the original
      and the cloned HX chips, so I've added a check and an extra chip type
      to keep the clones working.
      The same check is used by the latest Prolific Windows driver, so it
      should be solid.
      
      [1] http://www.prolific.com.tw/US/ShowProduct.aspx?p_id=225&pcid=41Signed-off-by: NFrank Schäfer <fschaefer.oss@googlemail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      7d26a78f
  3. 15 8月, 2013 3 次提交
    • F
      pl2303: improve the chip type detection/distinction · 034d1527
      Frank Schäfer 提交于
      The driver currently knows about 3 different PL2303 chip types:
      The two legacy chip types type_0 and type_1 (PL2303H ?) and the HX
      type.
      The device distinction is currently completely based on the examination
      of the USB descriptors.
      During the last years, Prolific has introduced further PL2303 chips,
      such as the HXD (HX rev. D), TA (which replaced the X/HX chips), SA,
      RA, EA and TB variants.
      Unfortunately, all these new chips are currently detected as HX chips,
      because they are all using the same bMaxPacketSize0 = 0x40 value in the
      USB device descriptor.
      
      At this point it is not clear if these chips are really working with
      the driver, there are just some positive indicators (like device
      manufacturers claiming Linux support for these devices or commit
      8d48fdf6 "correctly handle baudrates above 115200" which should only
      be necessary for newer devices, ...)
      
      For a complete support of all devices, we need to distinguish between
      them, because they differ in several functional aspects, such  as the
      maximum supported baud rate (HXD, TB, EA: 12Mbps, HX, TA: 6Mbps,
      RA: 1Mbps, SA: 115.2kbps), handshaking line support, RS422/485 and
      GPIO ports support (currently not supported by the driver).
      And there might be further differences that we don't know yet.
      
      This patch improves the chip type detection by evaluating the bcdDevice
      value of the device descriptor. The values are taken from the
      datasheets and are safe to use because manufacturers can't change them:
      
      3.00: X/HX, TA
      4.00: HXD, EA, RA, SA
      5.00: TB
      
      The rest of the device descriptors is completely identical, so no
      further distinction is possible this way.
      Anyway, Prolifics "checkChipVersion.exe"-tool is definitely able to
      distinguish for example between the X/HX and the TA chips, so there
      must be a possibility to improve the distinction further...
      Signed-off-by: NFrank Schäfer <fschaefer.oss@googlemail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      034d1527
    • F
      pl2303: improve the chip type information output on startup · a77a8c23
      Frank Schäfer 提交于
      The chip type distinction is getting more and more relevant and
      complicating, so always print the chip type.
      Printing a name string is also much better than just printing an
      internal index number.
      Signed-off-by: NFrank Schäfer <fschaefer.oss@googlemail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a77a8c23
    • F
      pl2303: simplify the else-if contruct for type_1 chips in pl2303_startup() · 73b583af
      Frank Schäfer 提交于
      There is no need for two else-if constructs for the type_1 chip
      detection in pl2303_startup(), so merge them.
      Signed-off-by: NFrank Schäfer <fschaefer.oss@googlemail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      73b583af
  4. 13 8月, 2013 7 次提交
  5. 01 8月, 2013 1 次提交
  6. 30 7月, 2013 1 次提交
  7. 24 7月, 2013 5 次提交
  8. 18 6月, 2013 1 次提交
    • G
      USB: serial: make minor allocation dynamic · e5b1e206
      Greg Kroah-Hartman 提交于
      This moves the allocation of minor device numbers from a static array to
      be dynamic, using the idr interface.  This means that you could
      potentially get "gaps" in a minor number range for a single USB serial
      device with multiple ports, but all should still work properly.
      
      We remove the 'minor' field from the usb_serial structure, as it no
      longer makes any sense for it (use the field in the usb_serial_port
      structure if you really want to know this number), and take the fact
      that we were overloading a number in this field to determine if we had
      initialized the minor numbers or not, and just use a flag variable
      instead.
      
      Note, we still have the limitation of 255 USB to serial devices in the
      system, as that is all we are registering with the TTY layer at this
      point in time.
      Tested-by: NTobias Winter <tobias@linuxdingsda.de>
      Reviewed-by: NJohan Hovold <jhovold@gmail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e5b1e206
  9. 11 6月, 2013 2 次提交
    • G
      USB: serial: ports: add minor and port number · 1143832e
      Greg Kroah-Hartman 提交于
      The usb_serial_port structure had the number field, which was the minor
      number for the port, which almost no one really cared about.  They
      really wanted the number of the port within the device, which you had to
      subtract from the minor of the parent usb_serial_device structure.  To
      clean this up, provide the real minor number of the port, and the number
      of the port within the serial device separately, as these numbers might
      not be related in the future.
      
      Bonus is that this cleans up a lot of logic in the drivers, and saves
      lines overall.
      Tested-by: NTobias Winter <tobias@linuxdingsda.de>
      Reviewed-by: NJohan Hovold <jhovold@gmail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      --
       drivers/staging/serqt_usb2/serqt_usb2.c |   21 +++--------
       drivers/usb/serial/ark3116.c            |    2 -
       drivers/usb/serial/bus.c                |    6 +--
       drivers/usb/serial/console.c            |    2 -
       drivers/usb/serial/cp210x.c             |    2 -
       drivers/usb/serial/cypress_m8.c         |    4 +-
       drivers/usb/serial/digi_acceleport.c    |    6 ---
       drivers/usb/serial/f81232.c             |    5 +-
       drivers/usb/serial/garmin_gps.c         |    6 +--
       drivers/usb/serial/io_edgeport.c        |   58 ++++++++++++--------------------
       drivers/usb/serial/io_ti.c              |   21 ++++-------
       drivers/usb/serial/keyspan.c            |   29 +++++++---------
       drivers/usb/serial/metro-usb.c          |    4 +-
       drivers/usb/serial/mos7720.c            |   37 +++++++++-----------
       drivers/usb/serial/mos7840.c            |   52 +++++++++-------------------
       drivers/usb/serial/opticon.c            |    2 -
       drivers/usb/serial/pl2303.c             |    2 -
       drivers/usb/serial/quatech2.c           |    7 +--
       drivers/usb/serial/sierra.c             |    2 -
       drivers/usb/serial/ti_usb_3410_5052.c   |   10 ++---
       drivers/usb/serial/usb-serial.c         |    7 ++-
       drivers/usb/serial/usb_wwan.c           |    2 -
       drivers/usb/serial/whiteheat.c          |   20 +++++------
       include/linux/usb/serial.h              |    6 ++-
       24 files changed, 133 insertions(+), 180 deletions(-)
      1143832e
    • J
      USB: pl2303: fix device initialisation at open · 2d8f4447
      Johan Hovold 提交于
      Do not use uninitialised termios data to determine when to configure the
      device at open.
      
      This also prevents stack data from leaking to userspace in the OOM error
      path.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: NJohan Hovold <jhovold@gmail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      2d8f4447
  10. 04 6月, 2013 1 次提交
  11. 30 5月, 2013 1 次提交
  12. 26 3月, 2013 6 次提交
  13. 22 3月, 2013 1 次提交
  14. 16 1月, 2013 3 次提交
    • J
      TTY: switch tty_flip_buffer_push · 2e124b4a
      Jiri Slaby 提交于
      Now, we start converting tty buffer functions to actually use
      tty_port. This will allow us to get rid of the need of tty in many
      call sites. Only tty_port will needed and hence no more
      tty_port_tty_get in those paths.
      
      Now, the one where most of tty_port_tty_get gets removed:
      tty_flip_buffer_push.
      
      IOW we also closed all the races in drivers not using tty_port_tty_get
      at all yet.
      
      Also we move tty_flip_buffer_push declaration from include/linux/tty.h
      to include/linux/tty_flip.h to all others while we are changing it
      anyway.
      Signed-off-by: NJiri Slaby <jslaby@suse.cz>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      2e124b4a
    • J
      TTY: switch tty_insert_flip_char · 92a19f9c
      Jiri Slaby 提交于
      Now, we start converting tty buffer functions to actually use
      tty_port. This will allow us to get rid of the need of tty in many
      call sites. Only tty_port will needed and hence no more
      tty_port_tty_get in those paths.
      
      tty_insert_flip_char is the next one to proceed. This one is used all
      over the code, so the patch is huge.
      Signed-off-by: NJiri Slaby <jslaby@suse.cz>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      92a19f9c
    • J
      TTY: convert more flipping functions · 2f693357
      Jiri Slaby 提交于
      Now, we start converting tty buffer functions to actually use
      tty_port. This will allow us to get rid of the need of tty pointer in
      many call sites. Only tty_port will be needed and hence no more
      tty_port_tty_get calls in those paths.
      
      Now 4 string flipping ones are on turn:
      * tty_insert_flip_string_flags
      * tty_insert_flip_string_fixed_flag
      * tty_prepare_flip_string
      * tty_prepare_flip_string_flags
      Signed-off-by: NJiri Slaby <jslaby@suse.cz>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      2f693357
  15. 17 10月, 2012 1 次提交
  16. 18 9月, 2012 2 次提交
  17. 17 7月, 2012 1 次提交
  18. 09 5月, 2012 1 次提交
    • G
      USB: serial: rework usb_serial_register/deregister_drivers() · 68e24113
      Greg Kroah-Hartman 提交于
      This reworks the usb_serial_register_drivers() and
      usb_serial_deregister_drivers() to not need a pointer to a struct
      usb_driver anymore.  The usb_driver structure is now created dynamically
      and registered and unregistered as needed.
      
      This saves lines of code in each usb-serial driver.  All in-kernel users
      of these functions were also fixed up at this time.  The pl2303 driver
      was tested that everything worked properly.
      
      Thanks for the idea to do this from Alan Stern.
      
      Cc: Adhir Ramjiawan <adhirramjiawan0@gmail.com>
      Cc: Alan Stern <stern@rowland.harvard.edu>
      Cc: Al Borchers <alborchers@steinerpoint.com>
      Cc: Aleksey Babahin <tamerlan311@gmail.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Andrew Worsley <amworsley@gmail.com>
      Cc: Bart Hartgers <bart.hartgers@gmail.com>
      Cc: Bill Pemberton <wfp5p@virginia.edu>
      Cc: Dan Carpenter <error27@gmail.com>
      Cc: Dan Williams <dcbw@redhat.com>
      Cc: Donald Lee <donald@asix.com.tw>
      Cc: Eric Dumazet <eric.dumazet@gmail.com>
      Cc: "Eric W. Biederman" <ebiederm@xmission.com>
      Cc: Felipe Balbi <balbi@ti.com>
      Cc: Gary Brubaker <xavyer@ix.netcom.com>
      Cc: Jesper Juhl <jj@chaosbits.net>
      Cc: Jiri Kosina <jkosina@suse.cz>
      Cc: Johan Hovold <jhovold@gmail.com>
      Cc: Julia Lawall <julia@diku.dk>
      Cc: Kautuk Consul <consul.kautuk@gmail.com>
      Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Cc: Lonnie Mendez <dignome@gmail.com>
      Cc: Matthias Bruestle and Harald Welte <support@reiner-sct.com>
      Cc: Matthias Urlichs <smurf@smurf.noris.de>
      Cc: Mauro Carvalho Chehab <mchehab@redhat.com>
      Cc: Michal Sroczynski <msroczyn@gmail.com>
      Cc: "Michał Wróbel" <michal.wrobel@flytronic.pl>
      Cc: Oliver Neukum <oliver@neukum.name>
      Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
      Cc: Peter Berger <pberger@brimson.com>
      Cc: Preston Fick <preston.fick@silabs.com>
      Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
      Cc: Rigbert Hamisch <rigbert@gmx.de>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Simon Arlott <simon@fire.lp0.eu>
      Cc: Support Department <support@connecttech.com>
      Cc: Thomas Tuttle <ttuttle@chromium.org>
      Cc: Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de>
      Cc: Wang YanQing <Udknight@gmail.com>
      Cc: William Greathouse <wgreathouse@smva.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      68e24113