staging: comedi: drivers (core): don't BUG_ON due to faulty drivers
The postconfig for drivers that support async commands currently can
BUG_ON if the subdevice was improperly configured by the driver.
Change the BUG_ON so that a dev_warn() is output and the postconfig
returns -EINVAL. This will prevent the comedi core from attaching to
the faulty driver but does not BUG the kernel.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
staging: comedi: drivers (core): factor out async subdevice postconfig
Factor the setup of an async subdevice out of postconfig(). This allows
bringing the code back a couple indents and makes the postconfig a bit
clearer.
For aesthetic reasons, rename postconfig() to __comedi_device_postconfig().
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Hopefully all of the arch-specific problems are now resolved, so let's
let this subsystem be enabled on all arches. If there are problems
found, we will fix them up.
Cc: Ian Abbott <abbotti@mev.co.uk> Cc: H Hartley Sweeten <hartleys@visionengravers.com> Cc: Bernd Porr <mail@berndporr.me.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Ian Abbott [Mon, 21 Jan 2013 17:21:23 +0000 (17:21 +0000)]
staging: comedi: Allow comedi on ARM
Bernd Porr reports success getting comedi to work on ARM. He writes:
"""
comedi works nicely on the Raspberry PI. I've compiled the rpi kernel
with comedi enabled and it works with the USBDUX-sigma (need to test the
other boards). With comedirecord running I can plot one channel at 1kHz
without buffer overflow (resulting to 70% load).
So, I guess we just need to add "ARM" to Kconfig in the comedi subdir?
depends on BROKEN || FRV || M32R || MN10300 || SUPERH || TILE || X86 || ARM
I'm running just now 3.2.27 but also the development kernel compiles
with ARM enabled (haven't tested yet).
/Bernd
"""
Enable the COMEDI config option to be selected for ARM.
Chen Gang [Mon, 21 Jan 2013 09:36:33 +0000 (17:36 +0800)]
staging: tidspbridge/pmgr: another using strlcpy instead of strncpy
The fields must be null-terminated,
or next strstr in dcd_get_objects, will cause issue
additoinal info:
nldr_create may call cod_get_base_name, let sz_zl_file to get name (sz_name)
and then call dcd_get_objects, passing sz_zl_file as a name string.
Signed-off-by: Chen Gang <gang.chen@asianux.com> Cc: Omar Ramirez Luna <omar.ramirez@copitl.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Stefan Hajnoczi [Sat, 19 Jan 2013 10:18:44 +0000 (11:18 +0100)]
staging: line6: clean up line6_variax_process_message()
Previous versions of the line6 driver snooped MIDI traffic in order to
make device state accessible via sysfs attributes. This involved a lot
of logic in line6_variax_process_message() that has since been removed.
Drop unused conditionals in line6_variax_process_message().
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Stefan Hajnoczi [Sat, 19 Jan 2013 10:18:43 +0000 (11:18 +0100)]
staging: line6: clean up line6_pod_process_message()
Previous versions of the line6 driver snooped MIDI traffic in order to
make device state accessible via sysfs attributes. This involved a lot
of logic in line6_pod_process_message() that has since been removed.
Drop unused conditionals in line6_pod_process_message() and reduce the
levels of indentation. Only two MIDI messages are still tracked: the
POD version message on startup and monitor level changes originating
from the device.
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Stefan Hajnoczi [Sat, 19 Jan 2013 08:59:00 +0000 (09:59 +0100)]
staging: line6: drop CONFIG_LINE6_USB_DUMP_PCM
The CONFIG_LINE6_USB_DUMP_PCM config option prints a hexdump of PCM
audio data as URBs are sent and received. The usbmon feature should be
used instead of manually dumping PCM URBs. There are a few advantages
to using usbmon:
* Can be turned on/off at runtime
* Provides full USB-level traffic
* tcpdump and wireshark support for powerful analysis
* No driver-specific code is required
This is the last user of line6_write_hexdump() so we drop it too.
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Dan Magenheimer [Fri, 18 Jan 2013 21:24:24 +0000 (13:24 -0800)]
staging: zcache: rename ramster to zcache
[V2: no code changes, patchset now generated via git format-patch -M]
In staging, rename ramster to zcache
The original zcache in staging was a "demo" version, and this new zcache
is a significant rewrite. While certain disagreements were being resolved,
both "old zcache" and "new zcache" needed to reside in the staging tree
simultaneously. In order to minimize code change and churn, the newer
version of zcache was temporarily merged into the "ramster" staging driver
which, prior to that, had at one time heavily leveraged the older version
of zcache. So, recently, "new zcache" resided in the ramster directory.
Got that? No? Sorry, temporary political compromises are rarely pretty.
The older version of zcache is no longer being maintained and has now
been removed from the staging tree. So now the newer version of zcache
can rightfully reclaim sole possession of the name "zcache".
FYI, this [PATCH 2/5] is simply a "git mv" generated by "git format-patch -M".
Signed-off-by: Dan Magenheimer <dan.magenheimer@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This function was originally in the addi-data "common" code and
required using pointer math to access the boardinfo data using
the void * 'dev->driver->board_name'. Now that the function is
local to this driver we can access the boardinfo directly and
remove the pointer math.
Rename the function so it has namespace associated with this
driver.
Also, for aesthetic reasons, globally rename the local variable used
for the boardinfo pointer from 'this_board' to 'board',
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
staging: comedi: addi_apci_16xx: redefine the boardinfo
Currently this driver uses the struct addi_board from the addi-data
"common" code to define the boardinfo. This struct contains a lot
of information that is not used in this driver.
Introduce a private struct in the driver that just contains the
needed information.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
staging: comedi: addi_apci_16xx: remove need for comedi_board()
Currently this driver uses the total number of channels, stored
in the boardinfo, in a number of the subdevice insn_* functions.
This information is already available in the subdevice as 's->n_chan'.
Use that instead of needing to get the board pointer first.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The comedi subdevice in this driver is a simple digital i/o
device.
Currently, the code abuses the comedi API by redefining the
COMEDI_SUBD_SERIAL type as COMEDI_SUBD_TTLIO and using that
for the 's->type'. Remove the defines and use the proper type,
COMEDI_SUBD_DIO.
The current code also sets the subdev_flags SDF_GROUND and SDF_COMMON
for the subdevice. These flags really only have meaning for analog
subdevices. Remove them.
All the boards supported by this driver use the same functions for
the subdevice 'insn_*' operations. Remove this information from
the boardinfo and set the s->insn_* operations directly in the init.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
staging: comedi: addi_apci_16xx: simplify PCI bar reading
The boards supported by this driver do not have an eeprom. Knowing
this information allows simplifying the code that reads the PCI
bars to get the iobase addresses.
The only 'iobase' actually used by this driver is found in PCI
bar 0. Don't bother reading the other PCI bars.
Also, since 'dw_AiBase' is not ioremap'ed we can remove the check
and iounmap in the detach.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
staging: comedi: addi_apci_16xx: separate from addi_common.c
This driver is for two simple ttl digital output boards. One with
48 channels the other with 96. Using the addi-data "common" code
introduces a lot of bloat.
Copy the code in addi_common.c to this driver and remove the #include
that caused addi_common.c to be compiled with this driver. This will
allow removing the bloat.
Rename the auto_attach and detach functions so they have namespace
associated with this driver.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Many of the ADDI-DATA drivers have a "watchdog" subdevice that can
be used to monitor digital output activity. All the digital outputs
are released (set to 0) if the digital outputs are not accessed, or
the watchdog it not pinged, before the timeout of the watchdog
occurs. The only difference in the drivers for the watchdog subdevice
is the base address used to talk to the watchdog registers.
Instead of duplicating the code needed to support this watchdog,
introduce a helper module, similar to the 8255 module. This module
will be select'ed by the drivers that can use it.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
staging: comedi: addi_apci_2200: cleanup digital output subdevice
The board supported by this driver always has a digital output subdevice.
Remove the boardinfo for it and just open-code the relevant data in the
subdevice init.
Remove the SDF_GROUND and SDF_COMMON from the subdevice 'subdev_flags'.
These flags only have meaning for analog input/output subdevices. Also,
remove the SDF_READABLE flag, it is not required by output only subdevices.
Remove the subdevice 'len_chanlist' initialization. This variable only
has meaning for subdevices that support asynchronous commands.
Remove the subdevice 'io_bits' initialization. Digital output subdevices
don't use this variable.
Remove the subdevice function pointers that evaluate to NULL based on the
boardinfo data.
Move the apci2200_do_insn_bits() function from the hwdrv_apci2200.c file
into the main driver file.
For aesthetic reasons, rename the #define used for the register used to
read/write the digital outputs..
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
staging: comedi: addi_apci_2200: cleanup digital input subdevice
The board supported by this driver always has a digital input subdevice.
Remove the boardinfo for it and just open-code the relevant data in the
subdevice init.
Remove the SDF_GROUND and SDF_COMMON from the subdevice 'subdev_flags'.
These flags only have meaning for analog input/output subdevices.
Remove the subdevice 'len_chanlist' initialization. This variable only
has meaning for subdevices that support asynchronous commands.
Remove the subdevice 'io_bits' initialization. Digital input subdevices
don't use this variable.
Remove the subdevice function pointers that evaluate to NULL based on the
boardinfo data.
Move the apci2200_di_insn_bits() function from the hwdrv_apci2200.c file
into the main driver file.
For aesthetic reasons, rename the #define used for the register used to
read the digital inputs.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
staging: comedi: addi_apci_2200: remove use of devpriv->s_EeParameters
This driver no longer reads the eeprom to find the board specific data,
all the necessary data is in the boardinfo. Use the boardinfo directly
instead of passing it through devpriv->s_EeParameters.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
staging: comedi: addi_apci_2200: simplify the PCI bar reading
The board supported by this driver has a 93x76 eeprom. Knowing this
information allows simplifying the code that reads the PCI bars to
get the iobase addresses.
Also, since the 'dw_AiBase' is not ioremap'ed we can remove the iounmap
in the detach.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
staging: comedi: addi_apci_2200: separate from addi_common.c
This driver is for a simple 16 channel digital output (relays), 8 channel
digital input board. Using the addi-data "common" code introduces a lot
of bloat.
Copy the code in addi_common.c to this driver and remove the #include
that caused addi_common.c to be compiled with this driver. This will
allow removing the bloat.
Rename the auto_attach and detach functions so they have namespace
associated with this driver.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
John Stultz [Fri, 11 Jan 2013 23:46:22 +0000 (15:46 -0800)]
staging: alarm-dev: Drop pre Android 1.0 _OLD ioctls
Per Colin's comment:
"The "support old userspace code" comment for those two ioctls has
been there since pre-Android 1.0. Those apis are not exposed to
Android apps, I don't see any problem deleting them."
Thus this patch removes the ANDROID_ALARM_SET_OLD and
ANDROID_ALARM_SET_AND_WAIT_OLD ioctl compatability
logic.
Cc: Serban Constantinescu <serban.constantinescu@arm.com> Cc: Arve Hjønnevåg <arve@android.com> Cc: Colin Cross <ccross@google.com> Cc: Android Kernel Team <kernel-team@android.com> Signed-off-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Peter Huewe [Mon, 14 Jan 2013 21:00:48 +0000 (22:00 +0100)]
staging/comedi: Add macro for registering a comedi PCMCIA driver
This patch introduces a new macro 'module_comedi_pcmcia_driver'
for comedi PCMCIA drivers which do not do anything special in module
init/exit. This eliminates a lot of boilerplate.
Adapted from 'module_comedi_pci_driver'
Signed-off-by: Peter Huewe <peterhuewe@gmx.de> Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
staging: comedi: comedi_buf: remove noise in comedi_buf_read_free()
If an attempt is made to free more bytes than have been allocated
a dev_info message is output and the number of bytes to free is
adjusted to the allocated size.
Telling the user this happened is just noise. Remove the message.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbobbi@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
staging: comedi: comedi_buf: remove noise in comedi_buf_write_free()
If an attempt is made to free more bytes than have been allocated
a dev_info message is output and the number of bytes to free is
adjusted to the allocated size.
Telling the user this happened is just noise. Remove the message.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbobbi@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
staging: comedi: comedi_buf: reorder exported function prototypes
For aesthetic reasons, reorder the prototypes for the exported
comedi_buf_* functions in comedidev.h to follow the function
declarations in comedi_buf.c.
Also, change a couple of the return values from 'unsigned' to
'unsigned int' to match the value actually returned.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This helper function is only called by the comedi core in comedi_buf.c
and comedi_fops.c. For aesthetic reasons, move it to comedi_buf.c and
remove the inline. Move the prototype from comedidev.h to comedi_internal.h
so it's not exposed outside the comedi core.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Use the helper comedi_buf_write_n_allocated() to clarify the check
to make sure the number of bytes to free is not more than the number
of bytes allocated.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Refactor this function so there is a single return point and only
one BUG_ON check. The BUG_ON needs to be looked at to see if it
can be safely removed.
Clarify the test in the munge loop that checks for a block copy
that would extend pass the end of the prealloc_buf.
Reword the comment about the need for the smp_wmb().
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
staging: comedi: comedi_buf: factor out common comedi_buf_write_alloc_* code
The only difference between comedi_buf_write_alloc() and the *_strict()
version is that the *_strict() one will only allocate the chunk if it
can completely fulfill the request.
Factor out the common code and add a flag parameter to indicate the 'strict'
usage. Change the exported functions so they are just wrappers around the
common function.
Cleanup the common function a bit and use the comedi_buf_write_n_available()
helper to determine the number of bytes available.
comedi_buf_write_n_available() is not used outside this module so make it
static. Since the only caller is __comedi_buf_write_alloc(), which will
always have a valid async pointer and already has a memory barrier, we
can remove the unnecessary (async == NULL) test as well as the smp_mb().
Also, the rounding of the sample size can be removed since the caller
does not need it.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
staging: comedi: comedi_buf: factor out new buffer allocation code
The function comedi_buf_alloc() first frees any allocated buffer then,
optionally, allocates a new buffer.
Factor out the new buffer allocation code to a new function. This
allows reducing the indent level and makes the code a bit cleaner.
Also, cleanup to factored out code to make it a bit more concise.
Use a local variable for the current comedi_buf_page being allocated.
This cleans up the ugly line breaks used to keep the lines < 80 chars.
Move the #ifdef'ery for the page protection determination out of the
vmap() call.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>