Olaf Hering [Wed, 14 Jul 2004 08:02:24 +0000 (01:02 -0700)]
[PATCH] USB: fix SN9C10[12] driver for ia64
On Sun, Jul 11, Luca Risolia wrote:
> This single patch contains some updates and cleanups for
> the W996[87]CF driver and a new experimental V4L2 driver
> for SONiX SN9C10[12] PC Camera Controllers connected to various
> image sensors. I have not divided the patch in two logical
> sub-patches becouse of two independent changes in one common
> file, KConfigure. Since this mailing list refused the patch,
> due to its size, I have uploaded it here, as
> Documentation/SubmittingPatches suggests:
I need this patch for x86_64.
CC [M] drivers/usb/media/sn9c102_core.o
In file included from drivers/usb/media/sn9c102.h:34,
from drivers/usb/media/sn9c102_core.c:43:
include/asm/rwsem.h:55: error: redefinition of `struct rw_semaphore'
In file included from drivers/usb/media/sn9c102.h:34,
from drivers/usb/media/sn9c102_core.c:43:
include/asm/rwsem.h:79:1: warning: "__RWSEM_INITIALIZER" redefined
In file included from include/linux/rwsem.h:25,
from include/asm/semaphore.h:43,
from include/linux/sched.h:18,
from include/linux/module.h:10,
from drivers/usb/media/sn9c102_core.c:21:
include/linux/rwsem-spinlock.h:49:1: warning: this is the location of the previous definition
include/asm/rwsem.h:87: warning: static declaration for `init_rwsem' follows non-static
include/asm/rwsem.h:100: warning: `__down_read' declared inline after being called
include/asm/rwsem.h:100: warning: static declaration for `__down_read' follows non-static
include/asm/rwsem.h:122: warning: `__down_read_trylock' declared inline after being called
include/asm/rwsem.h:122: warning: static declaration for `__down_read_trylock' follows non-static
include/asm/rwsem.h:146: warning: `__down_write' declared inline after being called
include/asm/rwsem.h:146: warning: static declaration for `__down_write' follows non-static
include/asm/rwsem.h:171: warning: `__down_write_trylock' declared inline after being called
include/asm/rwsem.h:171: warning: static declaration for `__down_write_trylock' follows non-static
include/asm/rwsem.h:184: warning: `__up_read' declared inline after being called
include/asm/rwsem.h:184: warning: static declaration for `__up_read' follows non-static
include/asm/rwsem.h:208: warning: `__up_write' declared inline after being called
include/asm/rwsem.h:208: warning: static declaration for `__up_write' follows non-static
include/asm/rwsem.h:233: warning: `__downgrade_write' declared inline after being called
include/asm/rwsem.h:233: warning: static declaration for `__downgrade_write' follows non-static
make[3]: *** [drivers/usb/media/sn9c102_core.o] Error 1
This involved reworking the usb_serial_debug_data() function too.
Based on a request from SuSE, and numerous user confusions with how
to enable this option. Now that all usb-serial drivers are using
module_param() it can be set from the boot command line if the drivers
are built into the kernel.
[PATCH] Updates for W99[87]CF and new SN9C10[12] driver
This single patch contains some updates and cleanups for
the W996[87]CF driver and a new experimental V4L2 driver
for SONiX SN9C10[12] PC Camera Controllers connected to various
image sensors. I have not divided the patch in two logical
sub-patches becouse of two independent changes in one common
file, KConfigure.
More informations about the SN9C10[12] can be found below in the
documentation. The driver is marked as "EXPERIMENTAL", meaning
that there are no known bugs, but further testing is necessary
before considering it stable. This the first driver using the new
SBGGR8 video format, which has been recently added to the mainline
kernel, so there are no available user application at the moment:
this is one more reason why it should be in the kernel now.
Changes in W996[87]CF:
- remove w9968cf_externaldef.h now that ovcamchip.h is in the kernel;
- mark user pointers with __user in a cleaner way to avoid sparse
warnings;
- use appropriate exclusive wait macro during open();
- replace info(), err(), warn() with dev_info(), dev_err(), dev_warn(),
pr_debug(), pr_info();
- replace usb_unlink_urb() + wait_for_completion() with usb_kill_urb();
- fix memory offsets for buffers in the chip to be used with generic
image sensors;
- 'vppmod_load', 'debug', 'specific_debug' and 'simcams' module
parameters are now writeable by default;
- fix possible race conditions between disconnect() and open();
- add automatic 'ovcamchip' module loading option with 'ovmod_load'
module parameter;
- get rid of deprecated intermodule communication routines and use the
correct module registration/unregistration approach;
- remove period at the end of kernel messages;
- fix several typos;
- use MODULE_VERSION() macro;
- other small internal cleanups;
- documentation updates.
David Brownell [Wed, 14 Jul 2004 08:00:36 +0000 (01:00 -0700)]
[PATCH] USB: usb ethernet gadget, minor fixes + basic OTG support
Update CDC Ethernet/RNDIS gadget driver to the latest:
- Basics of OTG support: providing the OTG descriptor
in each configuration (as needed). No HNP yet.
- Stop issuing partial-packet reads. There's some hardware that
only counts reads in packets, not bytes, so let's not bother.
There are still software checks to catch framing gone wild.
- Fix a small bug that crept in with a memory leak fix: after
RNDIS requests, ep0 responses would use the RNDIS completion
handler even for non-RNDIS requests.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
David Brownell [Wed, 14 Jul 2004 08:00:19 +0000 (01:00 -0700)]
[PATCH] USB: usb gadget zero, basic OTG updates
This patch teaches "gadget zero" enough about OTG to pass simple USBCV
tests, mostly by including OTG descriptors in each configuration. It
tests and reports OTG status, as reported by the USB controller driver.
It also adds an option to build gadget zero to act as the designated
OTG "HNP Test Device", which exists primarily to trigger HNP. However,
it won't currently request HNP.
Includes other minor tweaks: delete a timer on disconnect, reset
the req->zero flag, don't autoresume after disconnect.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
David Brownell [Wed, 14 Jul 2004 08:00:02 +0000 (01:00 -0700)]
[PATCH] USB: usb gadget API updates
Gadget API updates, including new features:
- Adds several new optional calls that can be made to the
USB peripheral controller:
* VBUS session reporting, for use mostly by external
transcievers (such as isp1301). Detection of VBUS
power is the first step in enumeration, and usually
corresponds to a device being plugged into a hub.
* "Soft Connect" feature, wherein the D+ pullup is under
gadget driver control. This is a second step during
enumeration, which lets the hub see the new device.
(Based on a patch by Alex Sanks <alex@netchip.com>.)
* Control over VBUS current draw. So for example this is
what a gadget driver uses during SET_CONFIGURATION to
say "it's OK to draw 300 mA from VBUS to recharge".
- Basic interfaces to support device-side USB OTG. Feature
flags and descriptors are in <linux/usb_ch9.h> already.
* Reports whether the device has a Mini-AB port, so
that OTG support (desriptors etc) is required.
* Reports OTG device feature flags for HNP. (The OTG
spec requires user interfaces to report this stuff.)
Say if this is a B-Peripheral or an A-Peripheral.
* Says that usb_gadget_wakeup() is how to access SRP,
and usb_gadget_disconnect() is how to access HNP.
- Minor updates/cleanups to comments (Linux 2.5-->2.6 etc)
Currently there's no support for SRP-only OTG devices.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
David Brownell [Wed, 14 Jul 2004 07:59:25 +0000 (00:59 -0700)]
[PATCH] USB: usb serial gadget, add omap_udc
This lets the serial gadget work with another controller.
Tell serial about omap_udc. This driver still needs updating to
use the endpoint autoconfig suppport; like Gadget Zero, it
really shouldn't need _any_ hardware-specific #ifdeffery.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
David T. Hollis [Wed, 14 Jul 2004 07:51:11 +0000 (00:51 -0700)]
[PATCH] USB: ax8817x_unbind does not free the interrupt URB after unlinking
ax8817x_unbind does not free the interrupt URB after unlinking.
Noticed that the net->status already has a flag for link so my
private structure variable for link was redundant. Worked around
this and was able to kill off the unique ax8817x_get_link() function
in the process.
Signed-off-by: David Hollis <dhollis@davehollis.com> Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
David T. Hollis [Wed, 14 Jul 2004 07:48:36 +0000 (00:48 -0700)]
[PATCH] USB: usbnet:ax8817x - use interrupt URB for link detection
This patch uses the interrupt URB on the ax8817x for link detection.
This allows the driver to notify userspace when link drops/comes back
so it can take action such as run dhclient, etc.
I was also able to reduce the bind function by using some of the stock
mii_xxx calls as well as my own for handling initial link negotiation.
Signed-off-by: David Hollis <dhollis@davehollis.com> Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Alan Stern [Wed, 14 Jul 2004 07:48:19 +0000 (00:48 -0700)]
[PATCH] USB: Allow NULL argument in usb_unlink_urb() and usb_kill_urb()
It makes sense for APIs involved in cleanup activities (like kfree()) to
accept NULL arguments. Doing so frees drivers from the responsibility of
checking whether each resource was actually acquired before trying to
release it. Accordingly, this patch makes usb_unlink_urb() and
usb_kill_urb() accept a NULL pointer (which used to be acceptable until I
changed it) and notes explicitly in the kerneldoc that such arguments are
permitted.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Dan Streetman [Wed, 14 Jul 2004 07:47:36 +0000 (00:47 -0700)]
[PATCH] USB: fix usbfs mount options ignored bug
Ok here is a patch to make the mount options work. In addition to
implementing the remount function, it removes the parse_options() call
from usb_fill_super and adds a "ignore" flag around the mounting that gets
done in create_special_files. The parse_options call in usb_fill_super is
removed because it is not needed when remount is implemented. The
ignore_mount flag is needed because the simple_pin_fs function calls
remount with no mount options - i.e. it's not a real mount. So the mount
options would be cleared out. The ignore_mount flag causes the remount
function to only act on real mounts.
Alan Stern [Wed, 14 Jul 2004 07:46:59 +0000 (00:46 -0700)]
[PATCH] USB: Fix endianness bug in UHCI driver
This patch fixes a byte-swapping error in the UHCI driver. It has been
present since 2.6.6 and only got tracked down just now! Thanks a lot to
Michel Roelofs for all his help and testing.
This should be pushed through to Linus in time to appear in 2.6.8, if
possible.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Mika Kukkonen [Wed, 14 Jul 2004 07:46:38 +0000 (00:46 -0700)]
[PATCH] USB: Trivial fix to include/linux/usb.h
Hi Greg!
I am compiling allmodconfig with some extra gcc warnings enabled
(-W -Wno-unused -Wno-sign-compare -Winline -Wundef) and got this one:
CC [M] security/root_plug.o
In file included from security/root_plug.c:30:
include/linux/usb.h:358: warning: `inline' is not at beginning of declaration
Alan Stern [Wed, 14 Jul 2004 07:42:40 +0000 (00:42 -0700)]
[PATCH] USB: Remove hub's children upon unbinding
This patch fixes a logical hole in the hub driver. It's possible for the
driver to be unbound from a hub without physically unplugging the hub.
For example, writing 0 into the bConfigurationValue attribute file will
have this effect. When this happens, we need to make sure that all the
child devices of the hub are logically disconnected and their ports
disabled.
That's what this patch does. It's a little bit tricky because we can't
simply call usb_disconnect() from within the hub driver's disconnect()
routine. While that routine is running it holds the usb bus writelock,
but usb_disconnect() would try to acquire it again. Instead
schedule_work() is used, so after a brief delay the children will be
removed.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Alan Stern [Wed, 14 Jul 2004 07:41:28 +0000 (00:41 -0700)]
[PATCH] USB: Store pointer to usb_device in private hub structure
This patch adds a pointer to the hub's usb_device into the usb_hub private
structure. It's a small change, and permits a small amount of
simplification in a few spots, i.e., avoid calling interface_to_usbdev().
This doesn't really do much in itself, but it's a prerequisite for the
next patch. (A situation arises where we can't use the interface pointer
to find the usb_device because the interface might not exist.)
Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Alan Stern [Wed, 14 Jul 2004 07:36:54 +0000 (00:36 -0700)]
[PATCH] USB: Don't ask for string descriptor lengths
Okay, here's a revised patch (as332b). This tries first to ask for 255
bytes, and if that fails then it asks for the length and the full
descriptor. Hopefully nobody will object to applying this version...
You know, it occurs to me that the have_langid field in usb_device could
easily be eliminated. Just set string_langid to -1 during initialization
and test for whether or not it is >= 0. I'll do that some other time.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Alan Stern [Wed, 14 Jul 2004 07:29:19 +0000 (00:29 -0700)]
[PATCH] USB: Make hub driver use usb_kill_urb()
This is a rerun of as278, updated to match the current source. It changes
the hub driver, replacing calls to synchronous usb_unlink_urb() with
usb_kill_urb() and removing the machinery formerly needed to synchronize
the status URB handler with the rest of the driver.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Alan Stern [Wed, 14 Jul 2004 07:28:52 +0000 (00:28 -0700)]
[PATCH] USB: Add usb_kill_urb()
This patch is a slightly revised version of as277c, updated to match the
current source. The only difference from the older version is that this
makes urb->use_count into an atomic_t, to avoid the overhead of an extra
locking step each time an URB is submitted and given back. The important
features of this patch are:
-EPERM added to Documentation/usb/error-codes.txt.
Failure to use URB_ASYNC_UNLINK with usb_unlink_urb() is
deprecated in the documentation.
New ->reject and ->use_count fields added to struct urb.
The reject field is protected by urb->lock, and locking is
required only in usb_kill_urb() which doesn't have to be fast.
Single wait_queue used for all processes waiting inside
usb_kill_urb(). The wait queue is woken up only when an URB
is given back with ->reject set.
usb_rh_status_dequeue() changed to return int. It looks like
this function should be declared static; it's not used outside
the hcd.c file.
Prototype for unlink_urb() in struct usb_operations is changed
to include a status code argument. This is necessary so that
the different unlink paths can return -ENOENT and -ECONNRESET
as appropriate.
Support for synchronous usb_unlink_urb() has been removed;
such calls are passed to usb_kill_urb().
Kerneldoc for usb_unlink_urb() is updated.
usb_kill_urb() added to urb.c.
hc_simple() host driver is partially updated -- it should
compile but it won't really work right.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Matt Domsch [Thu, 1 Jul 2004 14:17:05 +0000 (10:17 -0400)]
[PATCH] EDD: x86-64 build fix
On Wed, Jun 30, 2004 at 01:22:21AM -0400, Jeff Garzik wrote:
> CC arch/x86_64/kernel/setup.o
> arch/x86_64/kernel/setup.c: In function `copy_edd':
> arch/x86_64/kernel/setup.c:415: error: `EDD_MBR_SIGNATURE' undeclared=20
> (first use in this function)
> arch/x86_64/kernel/setup.c:415: error: (Each undeclared identifier is=20
> reported only once
> arch/x86_64/kernel/setup.c:415: error: for each function it appears in.)
> arch/x86_64/kernel/setup.c:417: error: `EDD_MBR_SIG_NR' undeclared=20
> (first use in this function)
> make[1]: *** [arch/x86_64/kernel/setup.o] Error 1
> make: *** [arch/x86_64/kernel] Error 2
Arrgh. On i386 it's in include/asm-i386/setup.h On x86_64 it
belongs in include/asm-x86_64/bootsetup.h.
Patch below defines EDD_MBR_SIG_NR and EDD_MBR_SIGNATURE on x86_64.
Current 2.6.7 tree acts as if it is alway under memory pressure because
a recent change did a s/tcp_memory_pressure/tcp_prot.memory_pressure/.
The problem is tcp_prot.memory_pressure is a pointer, so it is always non-zero!
Rather than using *tcp_prot.memory_pressure, just go back to looking at
tcp_memory_pressure.
Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: David S. Miller <davem@redhat.com>
'strace' shows a problem with a missing release_task for self-reaping
clones that have been traced. We need to defer releasing them until the
tracer is done with them, but if the tracer dies, we need to handle that
case gracefully too.
We do that by having 'forget_original_parent()' generate a list of tasks
to release when this case happens.
Patch based on discussions on linux-kernel, and suggestions from Roland
McGrath <roland@redhat.com>.
[PATCH] enable SMP Opterons boot an NX-enabled x86 kernel
This fixes a corner-case NX bug: the x86 SMP kernel doesnt boot on SMP
Opterons if NX is enabled [and mem=nopentium is specified], due to
kernel-space NX protection preventing the SMP trampoline from being
executable.
Since the SMP trampoline is a rare case of 'dynamic code' executed by
the kernel (it has to be below 640K so it cannot be part of the kernel
text itself), i've added the necessary infrastructure to enable/disable
executability of specific kernel pages.
We cannot simply disable NX via the MSR because we've got the NX bits in
the kernel pagetables, which are set up before we do the SMP bootup.
The NX bit in the pagetables is undefined if EFER.NXE is 0, so we cannot
count on NX-capable CPUs not faulting when they encounter them.
I've tested the x86 kernel on a non-NX SMP x86 box and on an NX UP box,
on which i've also tested a simulated SMP trampoline, it all works fine.
- add infrastructure to enable/disable executability of kernel pages
The conversion to ANSI, caused a warning because the mulitcast code needs
a cast. dmi->dmi_addr is a u8 array, and fddi_addr is just a wrapper around a u8 array.
Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Russell King [Wed, 30 Jun 2004 19:28:19 +0000 (15:28 -0400)]
[PATCH] PCMCIA net device unplugging ordering fix
This is a rather old patch which re-orders the teardown of PCMCIA
network devices. Current device drivers remove the IO mappings,
interrupts, and free any PCMCIA windows before they unregister
themselves from the network layer.
This patch ensures that we first unregister from the network layer
before performing any teardown of resources or windows.
Note: the only card which has been tested in this patch is pcnet_cs.
[PATCH] get rid of __OPTIMIZE__ requirement in net drivers
Several network drivers have checks that they are only built with -O.
This breaks checking with sparse and other tools, and seems like a holdover from
when drivers were built out of tree and the kernel build system was less stable.
This patch gets rid of these.
Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
This started out from sparse warnings about calling with fddi_broadcast
that is declared const. This fixes that and gets rid of some of the namespace
pollution of this driver by moving the predicate function is_individual, is_broadcast, ...
as inline's in the one file that uses them.
Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Don Fry [Wed, 30 Jun 2004 19:20:36 +0000 (15:20 -0400)]
[PATCH] pcnet32: correctly program bcr32.
The pcnet32 driver was not correctly enabling MII autonegotiation after
booting when ppc firmware forced the speed/duplex mode of the chip.
After several conversations with AMD this patch corrects the problem.
I have tested this on hardware I have available (ia32 and ppc64) but I
would like wider audience testing of this patch.
Don Fry [Wed, 30 Jun 2004 19:20:18 +0000 (15:20 -0400)]
[PATCH] pcnet32: acknowledge all interrupts early.
A recent change I made broke pcnet32 in a way that allowed real hardware
to work, but broke VMWare. This patch acknowledges all interrupts early
in the pcnet32_interrupt while loop. Without this patch on real hardware
the first transmit operation would clear the 'init' interrupt, but in
VMWare it would rain interrupts. Keith Moore did more testing for me
on VMWare and I did a better job testing on hardware. Petr Vandrovec
correctly pointed out the source of the problem on lkml.
This patch is not needed for 2.4.27-rc1 unless my patch labeled
"pcnet32: recover after rx hang" is applied (which it has not).
Aaron Grothe [Tue, 29 Jun 2004 15:26:40 +0000 (08:26 -0700)]
[CRYPTO]: Add TEA and XTEA algorithms.
The following is a patch against 2.6.7 (should apply cleanly to 2.6.5 or
above). It implements the Tiny Encryption Algorithm (TEA) and the
Xtended TEA (XTEA) algorithms. TEA goes back to 1994 and is a good
algorithm espically for memory constrained systems. It is similar in
concept to the IDEA crypto. It does NOT have any patent restrictions
and has been put in the public domain by Wheeler and Needham. Tea is used
in quite a few products such as filesafe and even Microsoft's Xbox.
Signed-off-by: Aaron Grothe <ajgrothe@yahoo.com> Signed-off-by: James Morris <jmorris@redhat.com> Signed-off-by: David S. Miller <davem@redhat.com>
Russell King [Tue, 29 Jun 2004 19:26:07 +0000 (20:26 +0100)]
[ARM] Miscellaneous fixes
- Remove 'arc' machine name from Makefile
- clk_set_rate() should return non-zero atm.
- proc-sa1100.S doesn't need asm/ptrace.h
- update mach-types
- kill line of spaces in clock.h
Russell King [Tue, 29 Jun 2004 17:48:23 +0000 (18:48 +0100)]
[ARM] Move arch_adjust_zones to asm/memory.h
This places arch_adjust_zones along side ISA_DMA_THRESHOLD. These
two are related, but having them in separate files means its not
obvious that they are.
ISA_DMA_THRESHOLD is a DMA mask which must be defined such that it
matches the memory handed out by GFP_DMA, which in turn is controlled
by arch_adjust_zones.