1. 22 7月, 2008 21 次提交
    • D
      usb gadget: new "CDC Composite" gadget driver · 19e20680
      David Brownell 提交于
      This is a simple example of a composite gadget, combining two
      Communications Class Device (CDC) functions:  ECM and ACM.
      
      This provides a clear example of how the composite gadget framework
      is intended to work.  It's surprising that MS-Windows (or at least,
      XP and previous) won't "just work" with something this simple...
      
      One /proc/bus/usb/devices listing looks like:
      
        T:  Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 46 Spd=480 MxCh= 0
        D:  Ver= 2.00 Cls=02(comm.) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
        P:  Vendor=0525 ProdID=a4aa Rev= 3.01
        S:  Manufacturer=Linux 2.6.26-rc6-pnut with net2280
        S:  Product=CDC Composite Gadget
        C:* #Ifs= 4 Cfg#= 1 Atr=c0 MxPwr=  2mA
        I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether
        E:  Ad=83(I) Atr=03(Int.) MxPS=  16 Ivl=32ms
        I:  If#= 1 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
        I:* If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
        E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
        E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
        I:* If#= 2 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=cdc_acm
        E:  Ad=86(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
        I:* If#= 3 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_acm
        E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
        E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      
      Not all USB peripheral controller hardware can support this driver.
      All the highspeed-capable peripheral controllers with drivers now in
      the mainline kernel seem to support this, as does omap_udc.  But
      many full speed controllers don't have enough endpoints, or (as with
      the PXA controllers) don't support altsettings.
      
      Lightly tested.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      19e20680
    • D
      usb ethernet gadget: split RNDIS function · 45fe3b8e
      David Brownell 提交于
      This is a RNDIS function driver, extracted from the all-in-one
      Ethernet gadget driver.
      
      Lightly tested ... there seems to be a pre-existing problem when
      talking to Windows XP SP2, not quite sure what's up with that yet.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      45fe3b8e
    • D
      usb ethernet gadget: split CDC Ethernet function · da741b8c
      David Brownell 提交于
      This is a "CDC Ethernet" (ECM) function driver, extracted from the
      all-in-one Ethernet gadget driver.
      
      This is a good example of how to implement interface altsettings.
      In fact it's currently the only such example in the gadget stack,
      pending addition of OBEX support.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      da741b8c
    • D
      usb ethernet gadget: split CDC Subset function · 8a40819e
      David Brownell 提交于
      This is a simple "CDC Subset" (and MCCI "SAFE") function driver, extracted
      from the all-in-one Ethernet gadget driver.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      8a40819e
    • D
      usb ethernet gadget: split out network core · 2b3d942c
      David Brownell 提交于
      Abstract the peripheral side Ethernet-over-USB link layer code from
      the all-in-one Ethernet gadget driver into a component that can be
      called by various functions, so the various flavors can be split
      apart and selectively reused.
      
      A notable difference from the approach taken with the serial link
      layer code (beyond talking to NET not TTY) is that because of the
      initialization requirements, this only supports one network link.
      (And one set of Ethernet link addresses.)
      
      That is, each configuration may have only one instance of a network
      function.  This doesn't change behavior; the current code has that
      same restriction.  If you want multiple logical links, that can
      easily be done using network layer tools.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      2b3d942c
    • D
      usb gadget: RNDIS cleanups · 15b2d2b5
      David Brownell 提交于
      Some cleanup to the RNDIS code:
      
       - Minor bugfix:  rndis_unit() is supposed to put the link into the
         RNDIS_UNINITIALIZED state, which does not mean "unused".  There's
         a separate method to stop using the link.  (Bug doesn't affect
         anything right now because of how the code is used.)
      
       - Reduce coupling between RNDIS code and its user(s), in preparation
         for updates in that code:
      
          * Decouple RNDIS_RESPONSE_AVAILABLE notifications from net_device
            by passing just a void* handle.  (Also, remove the unused return
            value of the notification callback.)
          * When it needs a copy of net_device stats, just ask for it
      
       - Remove unused/untested code backing various never-used OIDs:
      
          * RNDIS_PM, RNDIS_WAKEUP ... "should" get implemented, but the
            relevant docs were unclear, ambguous, and incomplete.  Someone
            with access to the Hidden Gospels (maybe in the EU?) might be
            able to figure out what this should do.
          * RNDIS_OPTIONAL_STATS ... as the name suggests, optional.  Never
            implemented in part because not all the semantics were clear.
          * OID_GEN_RNDIS_CONFIG_PARAMETER, which has been #if 0 forever.
      
       - A few small whitespace fixes
      
      Plus switch the VERBOSE symbol over to the newer VERBOSE_DEBUG style.
      
      There should be no functional changes because of this patch; it's a
      net source code shrink (because of the dead/unused code removal) and
      a small object code shrink (a couple hundred bytes on ARMv5).
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      15b2d2b5
    • D
      usb gadget serial: use composite gadget framework · 7bb5ea54
      David Brownell 提交于
      This switches the serial gadget over to using the new "function"
      versions of the serial port interfacing code.  The remaining code
      in the main source file is quite small...
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      7bb5ea54
    • D
      usb gadget serial: split out generic serial function · 61d8baea
      David Brownell 提交于
      Split out the generic serial support into a "function driver".  This
      closely mimics the ACM support, but with a MUCH simpler control model.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      61d8baea
    • D
      usb gadget serial: split out CDC ACM function · 4d5a73dc
      David Brownell 提交于
      Split out CDC ACM parts of "gadget serial" to a "function driver".
      Some key structural differences from the previous ACM support, shared
      with with the generic serial function (next patch):
      
       - As a function driver, it can be combined with other functions.
         One gadget configuration could offer both serial and network
         links, as an example.
      
       - One serial port can be exposed in multiple configurations;
         the /dev/ttyGS0 node could be exposed regardless of which
         config the host selected.
      
       - One configuration can expose multiple serial ports, such as
         ttyGS0, ttyGS1, ttyGS2, and ttyGS3.
      
      This code should be a lot easier to understand than the previous
      all-in-one-big-file version of the driver.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      4d5a73dc
    • D
      usb gadget zero: use composite gadget framework · 097db1d0
      David Brownell 提交于
      Update Gadget Zero to use the more modular versions of the loopback
      and source/sink configuration drivers which build on the new gadget
      framework code.
      
      The core code is a LOT simpler, and it should be much easier now to
      understand how the parts fit together.  The conversion is an overall
      source shrink in terms of this gadget, since it uses more midlayer
      support.  However, it's an overall increase in object size because
      there's less sharing between the two configurations (improves code
      clarity) and because the midlayer is a bit more functional than this
      driver actually needs.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      097db1d0
    • D
      usb gadget zero: split out loopback config · e5760fda
      David Brownell 提交于
      This splits the gadget zero "loopback" configuration into a standalone
      "configuration driver", building on the composite gadget framework code.
      It doesn't yet pull the original code out of gadget zero or update how
      that driver is built.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      e5760fda
    • D
      usb gadget zero: split out source/sink config · a400cadc
      David Brownell 提交于
      This splits the gadget zero "source/sink" configuration into a standalone
      "configuration driver", building on the composite gadget framework code.
      It doesn't yet pull the original code out of gadget zero or update how
      that driver is built.
      
      Neither this, nor its sibling "loopback" configuration, is a function
      driver that can be combined with other functions.  (The host "usbtest"
      driver wouldn't know how to deal with that!)  However the code becomes
      simpler because of this conversion, so it's a net win.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      a400cadc
    • D
      usb gadget: composite gadget core · 40982be5
      David Brownell 提交于
      Add <linux/usb/composite.h> interfaces for composite gadget drivers, and
      basic implementation support behind it:
      
        - struct usb_function ... groups one or more interfaces into a function
          managed as one unit within a configuration, to which it's added by
          usb_add_function().
      
        - struct usb_configuration ... groups one or more such functions into
          a configuration managed as one unit by a driver, to which it's added
          by usb_add_config().  These operate at either high or full/low speeds
          and at a given bMaxPower.
      
        - struct usb_composite_driver ... groups one or more such configurations
          into a gadget driver, which may be registered or unregistered.
      
        - struct usb_composite_dev ... a usb_composite_driver manages this; it
          wraps the usb_gadget exposed by the controller driver.
      
      This also includes some basic kerneldoc.
      
      How to use it (the short version):  provide a usb_composite_driver with a
      bind() that calls usb_add_config() for each of the needed configurations.
      The configurations in turn have bind() calls, which will usb_add_function()
      for each function required.  Each function's bind() allocates resources
      needed to perform its tasks, like endpoints; sometimes configurations will
      allocate resources too.
      
      Separate patches will convert most gadget drivers to this infrastructure.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      40982be5
    • D
      usb gadget: descriptor copying support · a4c39c41
      David Brownell 提交于
      Define three new descriptor manipulation utilities, for use when
      setting up functions that may have multiple instances:
      
      	usb_copy_descriptors() to copy a vector of descriptors
      	usb_free_descriptors() to free the copy
      	usb_find_endpoint() to find a copied version
      
      These will be used as follows.  Functions will continue to have static
      tables of descriptors they update, now used as __initdata templates.
      
      When a function creates a new instance, it patches those tables with
      relevant interface and string IDs, plus endpoint assignments.  Then it
      copies those morphed descriptors, associates the copies with the new
      function instance, and records the endpoint descriptors to use when
      activating the endpoints.  When initialization is done, only the copies
      remain in memory.  The copies are freed on driver removal.
      
      This ensures that each instance has descriptors which hold the right
      instance-specific data.  Two instances in the same configuration will
      obviously never share the same interface IDs or use the same endpoints.
      Instances in different configurations won't do so either, which means
      this is slightly less memory-efficient in some cases.
      
      This also includes a bugfix to the epautoconf code that shows up with
      this usage model.  It must replace the previous endpoint number when
      updating the template descriptors, not just mask in a few more bits.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      a4c39c41
    • D
      usb gadget: use new serial core · a7707adf
      David Brownell 提交于
      Teach "gadget serial" to use the new abstracted (and bugfixed) TTY glue,
      and remove all the orignal tangled-up code.  Update the documentation
      accordingly.  This is a net object code shrink and cleanup; it should
      make it a lot easier to see how the TTY glue should accomodate updates
      to the TTY layer, be bugfixed, etc.
      
      Notable behavior changes include:  it can now support getty even when
      there's no USB connection; it fits properly into the mdev/udev world;
      and RX handling is better (throttling works, and low latency).
      
      Configurations with scripts setting up the /dev/ttygserial device node
      (with "experimental" major number) may want to change that to be a
      symlink pointing to the /dev/ttyGS0 file, as a migration aid; else,
      just switch entirely over to mdev/udev.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      a7707adf
    • D
      usb gadget: split out serial core · c1dca562
      David Brownell 提交于
      This abstracts the "gadget serial" driver TTY glue into a separate
      component, cleaning it up and disentangling it from connection state.
      
      It also changed some behaviors for the better:
      
        - Stops using "experimental" major #127, and switches over to
          having the TTY layer allocate the dev_t numbers.
          
        - Provides /sys/class/tty/ttyGS* nodes, thus mdev/udev support.
          (Note "mdev" hotplug bug in Busybox v1.7.2: /dev/ttyGS0 will
          be a *block* device without CONFIG_SYSFS_DEPRECATED_V2.)
      
        - The tty nodes no longer reject opens when there's no host.
          Now they can support normal getty configs in /etc/inttab...
      
        - Now implements RX throttling.  When the line discipline says
          it doesn't want any more data, only packets in flight will be
          delivered (currently, max 1K/8K at full/high speeds) until it
          unthrottles the data.
      
        - Supports low_latency.  This is a good policy for all USB serial
          adapters, since it eliminates scheduler overhead on RX paths.
      
      This also includes much cleanup including better comments, fixing
      memory leaks and other bugs (including some locking fixes), messaging
      cleanup, and an interface audit and tightening.  This added up to a
      significant object code shrinkage, on the order of 20% (!) depending
      on CPU and compiler.
      
      A separate patch actually kicks in this new code, using the functions
      declared in this new header, and removes the previous glue.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      c1dca562
    • D
      USB: at91_udc: updated fifo sizes · bb24280f
      David Brownell 提交于
      It turns out newer versions of the AT91 UDC hardware have increased
      sizes of some of the FIFOs.  Reporting that is a Good Thing.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      bb24280f
    • A
      USB: rndis: switch to seq_files · e184d5fc
      Alexey Dobriyan 提交于
      Signed-off-by: NAlexey Dobriyan <adobriyan@gmail.com>
      Cc: David Brownell <david-b@pacbell.net>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      e184d5fc
    • A
      USB: remove CVS keywords · ea05af61
      Adrian Bunk 提交于
      This patch removes CVS keywords that weren't updated for a long time
      from comments.
      Signed-off-by: NAdrian Bunk <bunk@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      ea05af61
    • K
      USB: usb dev_set_name() instead of dev->bus_id · 0031a06e
      Kay Sievers 提交于
      The bus_id field is going away, use the dev_set_name() function
      to set it properly.
      Signed-off-by: NKay Sievers <kay.sievers@vrfy.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      0031a06e
    • K
      USB: usb dev_name() instead of dev->bus_id · 7071a3ce
      Kay Sievers 提交于
      The bus_id field is going away, use the dev_name() function instead.
      Signed-off-by: NKay Sievers <kay.sievers@vrfy.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      7071a3ce
  2. 10 7月, 2008 2 次提交
  3. 03 7月, 2008 2 次提交
  4. 21 6月, 2008 1 次提交
  5. 16 6月, 2008 1 次提交
  6. 02 6月, 2008 1 次提交
  7. 30 5月, 2008 1 次提交
    • L
      USB: fsl_usb2_udc: fix recursive lock · 185e3dea
      Li Yang 提交于
      UDC needs to release lock before calling out to gadget driver, since
      it may need to reenter.  The change fixes kernel BUG observed on rt
      kernel.
      
      > kernel BUG at kernel/rtmutex.c:683!
      > stopped custom tracer.
      > Oops: Exception in kernel mode, sig: 5 [#1]
      > PREEMPT MPC834x ITX
      > NIP: c021629c LR: c0216270 CTR: 00000000
      > REGS: df761d70 TRAP: 0700   Not tainted  (2.6.23.9-rt13)
      > MSR: 00021032 <ME,IR,DR>  CR: 28000022  XER: 00000000
      > TASK = df632080[241] 'IRQ-38' THREAD: df760000
      > GPR00: 00000001 df761e20 df632080 00000000 11111111 00000000 df761e6c
      > 00000000
      > GPR08: df761e48 00000000 df761e50 00000000 80000000 ede5cdde 1fffd000
      > 00800000
      > GPR16: ffffffff 00000000 007fff00 00000040 00000000 007ffeb0 00000000
      > 1fff8b08
      > GPR24: 00000000 00000026 00000000 df79a320 c026b2e8 c02240bc 00009032
      > df79a320
      > NIP [c021629c] rt_spin_lock_slowlock+0x9c/0x200
      > LR [c0216270] rt_spin_lock_slowlock+0x70/0x200
      > Call Trace:
      > [df761e20] [c0216270] rt_spin_lock_slowlock+0x70/0x200 (unreliable)
      > [df761e90] [c0182828] fsl_ep_disable+0xcc/0x154
      > [df761eb0] [c0184d30] eth_reset_config+0x88/0x1d0
      > [df761ed0] [c0184ec0] eth_disconnect+0x48/0x64
      > [df761ef0] [c01831a4] reset_queues+0x60/0x78
      > [df761f00] [c0183b74] fsl_udc_irq+0x9b8/0xa58
      > [df761f50] [c003ef30] handle_IRQ_event+0x64/0x100
      > [df761f80] [c003f758] thread_simple_irq+0x6c/0xc8
      > [df761fa0] [c003f888] do_irqd+0xd4/0x2e4
      > [df761fd0] [c0032284] kthread+0x50/0x8c
      > [df761ff0] [c000f9b4] kernel_thread+0x44/0x60
      Signed-off-by: NLi Yang <leoli@freescale.com>
      Cc: Eugene T. Bordenkircher <Eugene_Bordenkircher@selinc.com>
      Acked-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      185e3dea
  8. 21 5月, 2008 1 次提交
  9. 19 5月, 2008 1 次提交
    • R
      [ARM] pxa: separate PXA25x and PXA27x UDC register definitions · 284d115e
      Russell King 提交于
      The PXA25x and PXA27x USB device controller register definitions are
      different.  Currently, they live side by side in pxa-regs.h, but only
      one set is available depending on the setting of PXA25x or PXA27x.
      
      This means that if we build to support both PXA25x and PXA27x, the
      PXA27x definitions are unavailable, even to PXA27x specific code.
      
      Remove these definitions from pxa-regs.h, and place them in separate
      files.  Include these files where appropriate.
      
      Note: according to the dependencies in drivers/usb/gadget/Kconfig,
      we do not support the UDC on PXA27x nor PXA3xx CPUs, so remove the
      platform devices from pxa27x.c and pxa3xx.c.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      284d115e
  10. 15 5月, 2008 7 次提交
    • D
      USB: atmel_usba_udc fixes, mostly disconnect() · 40517707
      David Brownell 提交于
      Various fixes to Atmel's high speed UDC driver.
      
        * Issue some missing disconnect() calls.  Currently they are only made
          when VBUS power goes away (on boards where the driver can sense such
          changes), but that's not enough for gadget drivers to clean out all
          the state that's needed.  Missing calls were:
      
            - After USB reset, before starting enumeration.
            - When unregistering a gadget driver, before unbind().
      
        * Don't assume gadget drivers provide disconnect callbacks; make sure
          to not call through a null pointer!
      
        * When the driver doesn't provide an unbind() callback, refuse to
          unregister it.
      
      Also remove two bogus "error" messages:
      
        * Related to mis-handling of disconnect() ... don't emit error messages
          for disconnect() handlers that disable endpoints.  All of them should
          be doing that; the problem is (unfixed) oddness in atmel_usba_udc.
      
        * Don't emit a diagnostic for a curious and transient nonfatal error
          that shows up sometimes with EP0.
      
      Those messages spammed syslog, for no good reason.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Acked-by: NHaavard Skinnemoen <haavard.skinnemoen@atmel.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      40517707
    • R
      USB: pxa27x_udc: minor fixes · 5a59bc54
      Robert Jarzmik 提交于
      Minor fixes to pxa27x udc driver :
       - don't clobber driver model bus_id field
       - wrong endianess fix (no functional change; cpu is little-endian)
       - double udc disable fix
       - resume/suspend fix (OTG hold bit)
       - make driver pxa27x dependant (check cpu at runtime)
      Signed-off-by: NRobert Jarzmik <rjarzmik@free.fr>
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      5a59bc54
    • D
      USB: serial gadget: descriptor cleanup · b9370332
      David Brownell 提交于
      Bugfix some serial gadget descriptors:
      
       - Stop mangling the low bits (controller type ID) of bcdDevice;
         just use the high bits for a driver revision code.
      
       - Serial numbers that aren't specific to individual devices
         are useless; stop reporting "0" for this.
      
       - Since it's not part of a CDC-conformant function, the "bulk only"
         configuration shouldn't be using "CDC Data" as its interface class.
         Switch over to using CLASS_VENDOR_SPEC (different value, 0xff).
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Cc: Al Borchers <alborchers@steinerpoint.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      b9370332
    • D
      USB: serial gadget: simplify endpoint handling · 734d37c6
      David Brownell 提交于
      Switch serial gadget away from a *very* old idiom:  just remember
      the endpoints we'll be using, instead of looking them up by name
      each time.  This is a net code and data (globals) shrink.
      
      Also fix a small memory leak in the rmmod path, by working the
      same as the disconnect code.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Cc: Al Borchers <alborchers@steinerpoint.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      734d37c6
    • D
      USB: serial gadget: remove needless data structure · 2c2d28a0
      David Brownell 提交于
      This removes a needless data structure from the serial gadget code;
      it's a small code shrink, and a larger data shrink.
      
      Since "struct usb_request" already has a "struct list_head" reserved
      for use by gadget drivers, the serial gadget code doesn't need to
      allocate wrapper structs to hold that list ... it can (and should!)
      just use the list_head provided for that exact use.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Cc: Al Borchers <alborchers@steinerpoint.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      2c2d28a0
    • D
      USB: serial gadget: cleanup/reorg · 9079e91b
      David Brownell 提交于
      Some cleanup/reorg of g_serial ... simplifying it, and disentangling
      its structure so morphing it into a "function" driver (combinable with
      other interfaces) should be less painful.
      
       - Remove most forward declarations
           * put tty and gadget driver structs after their contents
           * snug module init/exit decls next to their functions
           * reordered some functions
      
       - Other cleanup:
           * convert a funky macro to an inline function
           * snug up module params next to their declarations
           * add missing driver.owner
           * add separator lines between major driver sections
      
       - Add comments re potential parameter/#define changes:
           * only supports one port (shrank GS_NUM_PORTS)
           * changing from 9600-8-N-1 affects multiple sites
      
       - Remove net2280-specific optimization ... it was being done
         way too late, can be done by net2280 module options, and in
         any case doesn't matter at any sane serial data rates.
      
      There are no behavioral changes, but the macro thing saves I-space.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Cc: Al Borchers <alborchers@steinerpoint.com>
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      
      9079e91b
    • H
      usb: fix integer as NULL pointer warnings found by sparse · af3d305c
      Harvey Harrison 提交于
      drivers/usb/host/ohci-sm501.c:93:24: warning: Using plain integer as NULL pointer
      drivers/usb/gadget/amd5536udc.c:3254:9: warning: Using plain integer as NULL pointer
      drivers/usb/gadget/amd5536udc.c:3267:9: warning: Using plain integer as NULL pointer
      drivers/usb/gadget/amd5536udc.c:3277:9: warning: Using plain integer as NULL pointer
      drivers/usb/gadget/amd5536udc.c:3285:9: warning: Using plain integer as NULL pointer
      drivers/usb/gadget/amd5536udc.c:3293:9: warning: Using plain integer as NULL pointer
      Signed-off-by: NHarvey Harrison <harvey.harrison@gmail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      af3d305c
  11. 03 5月, 2008 2 次提交