Commit graph

413477 commits

Author SHA1 Message Date
Rebecca Schultz Zavin
b15934b62d gpu: ion: Use alloc_pages instead of vmalloc from the system heap
With this change the ion_system_heap will only use kernel address
space when the memory is mapped into the kernel (rare case).

Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com>
[jstultz: modified patch to apply to staging directory]
Signed-off-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-14 08:55:37 -08:00
Rebecca Schultz Zavin
b892bf75b2 ion: Switch ion to use dma-buf
Ion now uses dma-buf file descriptors to share
buffers with userspace.  Ion becomes a dma-buf
exporter and any driver that can import dma-bufs
can now import ion file descriptors.

Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com>
[jstultz: modified patch to apply to staging directory]
Signed-off-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-14 08:55:37 -08:00
KyongHo Cho
54ac078421 gpu: ion: several bugfixes and enhancements of ION
1. Verifying if the size of memory allocation in ion_alloc() is aligned
by PAGE_SIZE at least. If it is not, this change makes the size to be
aligned by PAGE_SIZE.

2. Unmaps all mappings to the kernel and DMA address spaces when
destroying ion_buffer in ion_buffer_destroy(). This prevents leaks in
those virtual address spaces.

3. Makes the return value of ion_alloc() to be explicit Linux error code
when it fails to allocate a buffer.

4. Makes ion_alloc() implementation simpler. Removes 'goto' statement and
relavant call to ion_buffer_put().

5. Checks if the task is valid before calling put_task_struct() due
to failure on creating a ion client in ion_client_create().

6. Returns error when buffer allocation requested by userspace is failed.

Signed-off-by: KyongHo Cho <pullip.cho@samsung.com>
[jstultz: modified patch to apply to staging directory]
Signed-off-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-14 08:55:37 -08:00
Rebecca Schultz Zavin
2991b7a044 ion: Add reserve function to ion
Rather than requiring each platform call memblock_remove or reserve
from the board file, add this to ion

Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com>
[jstultz: modified patch to apply to staging directory]
Signed-off-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-14 08:55:36 -08:00
Rebecca Schultz Zavin
4d5ca3299f ion: Switch map/unmap dma api to sg_tables
Switch these api's from scatterlists to sg_tables

Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com>
[jstultz: modified patch to apply to staging directory]
Signed-off-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-14 08:55:36 -08:00
Colin Cross
0f3cbb59ec gpu: ion: ion_carveout_heap: fix for 3.4
__arch_ioremap is no longer available, use __arm_ioremap instead.

Signed-off-by: Colin Cross <ccross@android.com>
[jstultz: modified patch to apply to staging directory]
Signed-off-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-14 08:55:36 -08:00
Rebecca Schultz Zavin
c30707be12 gpu: ion: Add ION Memory Manager
Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com>
[jstultz: Squished in Colin Cross' move to staging change,
also disables ION from the build, as it won't compile till
the end of the patchset]
Signed-off-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-14 08:50:15 -08:00
H Hartley Sweeten
530376bfb7 staging: comedi: ni_at_a2150: fix an always true condition test
As pointed out by the kbuild test robot, and Ian Abbott, the dma >= 0 test
is always true because dma is unsigned. This generates a warn message:

drivers/staging/comedi/drivers/ni_at_a2150.c:715 a2150_attach()
  warn: always true condition '(dma >= 0) => (0-u32max >= 0)'

Fix the test as suggested by Ian Abbott.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reported-by: kbuild test robot <fengguang.wu@intel.com>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-10 23:16:24 -08:00
Eli Billauer
b774930e08 staging: xillybus: Removed force to be a module
The driver was forced to "module only" following a previous failure to build
into the kernel. The problem was resolved several months ago.

This has been successfully tested with "make allyesconfig" on x86_64.

Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Eli Billauer <eli.billauer@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-10 23:16:24 -08:00
Malcolm Priestley
c995c2f9ef staging: vt6656: Move double definition of MAX_RATE to device_cfg.h
Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-10 23:14:26 -08:00
Malcolm Priestley
8f248dae13 staging: vt6656: [BUG] BBvUpdatePreEDThreshold Always set sensitivity on bScanning
byBBPreEDIndex value is initially 0, this means that from
cold BBvUpdatePreEDThreshold is never set.

This means that sensitivity may be in an ambiguous state,
failing to scan any wireless points or at least distant ones.

Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-10 23:14:26 -08:00
Malcolm Priestley
51934e7f89 staging: vt6656: Replace pStatistic->abyTxPktInfo with struct vnt_tx_pkt_info
Change s_vSaveTxPktInfo and BSSvUpdateNodeTxCounter to use vnt_tx_pkt_info
relayed to BSSvUpdateNodeTxCounter via INTnsProcessData.

pStatistic->abyTxPktInfo[byPktNum].byBroadMultiUni is unused and discarded.

Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-10 23:14:26 -08:00
Malcolm Priestley
9a450f9a7a staging: vt6656: s_uCalculateLinkQual use netstats rx values
Use netstats rx_packets and rx_frame_errors.

Add frame errors to RXbBulkInProcessData

The current scStatistic.RxFcsErrCnt only records
USB errors not frame errors.

The scStatistic.RxOkCnt only recorded successful USB
transfers not actual successfully received packets.

So a more accurate reading is to use netstats rx_packets and
rx_frame_errors.

Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-10 23:14:26 -08:00
Malcolm Priestley
854f775a12 staging: vt6656: Get wireless stats qual.qual directly from s_uCalculateLinkQual
Calculate the qual from the tx_packets and wstats.discard.retries and
apply to wstats.qual.qual

Discard pDevice->scStatistic.LinkQuality.

Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-10 23:14:26 -08:00
Malcolm Priestley
ae27b1428e staging: vt6656: Remove STAvUpdateTDStatCounter and apply directly to stats
Apply directly to net_device_stats and wireless stats.

tx_bytes are relayed from s_vSaveTxPktInfo via scStatistic,
so collect them there.

All other statistics in STAvUpdateTDStatCounter are dead code
and don't reach user.

Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-10 23:14:26 -08:00
ZHAO Gang
57cc0279f5 staging: et131x: remove unnecessary pointer typecast
Signed-off-by: ZHAO Gang <gamerh2o@gmail.com>
Acked-by: Mark Einon <mark.einon@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-10 23:12:13 -08:00
ZHAO Gang
c31c135e7a staging: et131x: remove item that have been done in TODO file
Signed-off-by: ZHAO Gang <gamerh2o@gmail.com>
Acked-by: Mark Einon <mark.einon@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-10 23:12:13 -08:00
ZHAO Gang
297bb9dbc8 staging: et131x: reduce split lines in nic_rx_pkts
Signed-off-by: ZHAO Gang <gamerh2o@gmail.com>
Acked-by: Mark Einon <mark.einon@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-10 23:12:13 -08:00
ZHAO Gang
39bdb4a02b staging: et131x: reduce split lines in nic_return_rfd
Signed-off-by: ZHAO Gang <gamerh2o@gmail.com>
Acked-by: Mark Einon <mark.einon@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-10 23:12:13 -08:00
ZHAO Gang
f876f59e45 staging: et131x: reduce split lines in et131x_rx_dma_memory_free
Signed-off-by: ZHAO Gang <gamerh2o@gmail.com>
Acked-by: Mark Einon <mark.einon@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-10 23:12:13 -08:00
ZHAO Gang
bad5d26f22 staging: et131x: reduce split lines in et131x_rx_dma_memory_alloc
Signed-off-by: ZHAO Gang <gamerh2o@gmail.com>
Acked-by: Mark Einon <mark.einon@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-10 23:12:12 -08:00
ZHAO Gang
efc5681747 staging: et131x: reduce split lines in et131x_config_rx_dma_regs
Signed-off-by: ZHAO Gang <gamerh2o@gmail.com>
Acked-by: Mark Einon <mark.einon@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-10 23:12:12 -08:00
Paul Gortmaker
4ed296ef28 lustre: delete pointless wait queue related casts.
These serve no purpose at all, and can only mask real type
clash issues that one would want to actually see.

Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-10 19:40:40 -08:00
Mikhail Pershin
97a062b419 staging/lustre/seq: remove seq_{query,handle}
This is only part of the original Lustre tree commit. Main part of the
original commit modifies server side code.

Lustre-change: http://review.whamcloud.com/6765
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-3467
Signed-off-by: Mikhail Pershin <mike.pershin@intel.com>
Reviewed-by: Alex Zhuravlev <alexey.zhuravlev@intel.com>
Reviewed-by: wangdi <di.wang@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
Signed-off-by: Peng Tao <bergwolf@gmail.com>
Signed-off-by: Andreas Dilger <andreas.dilger@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-10 18:27:28 -08:00
Mikhail Pershin
a7c6d5a6e7 staging/lustre/target: move OUT to the unified target code
- Move OUT handler to the unified target code, so it can be
  used by both MDS and OST.

Lustre-change: http://review.whamcloud.com/6763
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-3467
Signed-off-by: Mikhail Pershin <mike.pershin@intel.com>
Reviewed-by: Alex Zhuravlev <alexey.zhuravlev@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
[pick client side of change. target is mostly server side code -- PengTao]
Signed-off-by: Peng Tao <bergwolf@gmail.com>
Signed-off-by: Andreas Dilger <andreas.dilger@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-10 18:26:35 -08:00
JC Lafoucriere
a720b79062 staging/lustre/api: HSM import uses new released pattern
Import creates a released file using new RAID pattern flag
Import used a new ioctl() to implement the import in the
client kernel.

Lustre-change: http://review.whamcloud.com/6536
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-3363
Signed-off-by: JC Lafoucriere <jacques-charles.lafoucriere@cea.fr>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: Jinshan Xiong <jinshan.xiong@intel.com>
[Fix up kuid_t/guid_t conversion in llite/file.c -- Peng Tao]
Signed-off-by: Peng Tao <bergwolf@gmail.com>
Signed-off-by: Andreas Dilger <andreas.dilger@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-10 18:22:56 -08:00
Doug Oucharek
e75fb87f86 staging/lustre/lnet: Add LNet Router Priority parameter
This change adds a priority parameter to the route module settings.
This paramter can be >= 0. Like hops, the lower the prioirty number
the higher the priority.  So lower numbered priorities will be
selected over higher numbers.

Lustre-change: http://review.whamcloud.com/5663
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-2934
Signed-off-by: Doug Oucharek <doug.s.oucharek@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: Amir Shehata <amir.shehata@intel.com>
Reviewed-by: Isaac Huang <he.huang@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
Signed-off-by: Peng Tao <bergwolf@gmail.com>
Signed-off-by: Andreas Dilger <andreas.dilger@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-10 18:22:55 -08:00
Peng Tao
32d3b6de68 staging/lustre: remove server macros from lustre_net.h
These macros are only used on server side.

Cc: Andreas Dilger <andreas.dilger@intel.com>
Signed-off-by: Peng Tao <bergwolf@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-10 18:22:55 -08:00
Nitin Cupta
c3e3e88adc zsmalloc: add more comment
This patch adds lots of comments and it will help others
to review and enhance.

Signed-off-by: Seth Jennings <sjenning@linux.vnet.ibm.com>
Signed-off-by: Nitin Gupta <ngupta@vflare.org>
Signed-off-by: Minchan Kim <minchan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-10 18:20:05 -08:00
Minchan Kim
1b945aeef0 zsmalloc: add Kconfig for enabling page table method
Zsmalloc has two methods 1) copy-based and 2) pte based to
access objects that span two pages.
You can see history why we supported two approach from [1].

But it was bad choice that adding hard coding to select arch
which want to use pte based method because there are lots of
SoC in an architecure and they can have different cache size,
CPU speed and so on so it would be better to expose it to user
as selectable Kconfig option like Andrew Morton suggested.

[1] https://lkml.org/lkml/2012/7/11/58

Acked-by: Nitin Gupta <ngupta@vflare.org>
Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Signed-off-by: Minchan Kim <minchan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-10 18:20:05 -08:00
Greg Kroah-Hartman
99ec297ad6 staging: btmtk_usb: remove driver
No one seems to be working on it anymore, and it really should be merged
into the already-existing btusb driver.  Also, there is not any proper
author attribution on the code (it was copied from the in-kernel
driver...)

If someone wants to pick this back up, we can easily revert this, but
for now, delete the driver.

Cc: Yu-Chen, Cho <acho@suse.com>
Cc: Jay Hung <jay.hung@mediatek.com>
Cc: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-08 17:33:16 -08:00
Daniel Dodge
588c31eacd Drivers: Staging: ft1000: Fixed C99 // comments styling issue
This patch removes C99 style comments from the driver and whenever
possible attempts to match coding style of the rest of the driver.

Signed-off-by: Daniel Dodge <danieldodgese@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-08 17:31:41 -08:00
Malcolm Priestley
9b89b04935 staging: vt6656: baseband.c clean up BBbVT3184Init
White space clean up and remove camel case from variables.

pDevice-> priv
ntStatus -> status
wLength ->length
pbyAddr -> addr
pbyAgc -> agc
wLengthAgc ->length_agc
abyArray -> array

Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-08 17:27:18 -08:00
Nick Hudson
9f8144c6ed staging: dwc2: don't issue traffic to LS devices in FS mode
I fell over the problem reported in
https://github.com/raspberrypi/linux/pull/390:

"Issuing low-speed packets when the root port is in full-speed mode
 causes the root port to stop responding. Explicitly fail when
 enqueuing URBs to a LS endpoint on a FS bus."

with my dwc2 testing in NetBSD, so I adapted the change to dwc2.

Signed-off-by: Nick Hudson <skrll@netbsd.org>
[paulz: fixed up the patch to compile under Linux, and tested it]
Signed-off-by: Paul Zimmerman <paulz@synopsys.com>
Tested-by: Stephen Warren <swarren@wwwdotorg.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-08 17:25:14 -08:00
Fabio Estevam
9aaf880ed4 imx-drm: Add mx6 hdmi transmitter support
Add mx6 hdmi transmitter support.

Original work has been done by Sascha Hauer and Tony Prisk.
Special thanks to Russell King for his carefully review, many bug fixes and
testing of the mx6 HDMI driver.

Tested on the following boards:
- mx6q sabresd
- mx6dl sabresd
- mx6solo wandboard

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-08 17:23:18 -08:00
H Hartley Sweeten
bf4063e6f4 staging: comedi: pcmuio: tidy up pcmuio_start_intr()
Refactor this function a bit to remove the need for an extra indent
level and cleanup some of the odd line breaks.

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>
2013-12-06 13:10:03 -08:00
H Hartley Sweeten
fc5ba1bd71 staging: comedi: pcmuio: tidy up pcmuio_attach()
Clean up the local variables, 'sdev_no' and 'asic' are both used in
simple for () loops. Use the local variable 'i' for both cases. The
'n_subdevs' variable is only used in one place, just remove it.

For aesthetics, add some whitespace to the subdevice init and reorder
it to follow the more typical style in comedi drivers.

Remove the unnecessary init of s->len_chanlist for subdevices that do
not support async commands (interrupts). The core will default it to
the correct value.

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>
2013-12-06 13:10:03 -08:00
H Hartley Sweeten
fbd66a7e87 staging: comedi: pcmuio: remove unneeded include
The <linux/slab.h> header is no longer needed by 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>
2013-12-06 13:10:03 -08:00
H Hartley Sweeten
d5f81755d6 staging: comedi: pcmuio: fix types of some private data variables
The 'enabled_mask' is a bit mask of the channels that are enabled
for interrupt detection and should be an unsigned int.

The 'stop_count' is a >= 0 value that is set by the unsigned int
cmd->stop_arg. Make it an unsigned int.

The 'active' and 'continuous' members are flags. Make them unsigned
int bit-fields to save a bit of space.

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>
2013-12-06 13:10:03 -08:00
H Hartley Sweeten
25ad998892 staging: comedi: pcmuio: document the spinlock_t variables
Add some comments about the two spinlock_t variables in the private
data. Also, add come comments for the functions that do not need to
lock/unlock the spinlock.

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>
2013-12-06 13:10:03 -08:00
H Hartley Sweeten
4344158f3e staging: comedi: pcmuio: add inline helpers to get the 'iobase', 'asic', and 'port'
To reduce the potential for bugs, and better document the code, introduce
some inline helper functions to consolidate the calculations needed to get
the 'iobase' for a given asic and the 'asic' and 'port' associated with a
given subdevice.

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>
2013-12-06 13:10:03 -08:00
H Hartley Sweeten
d3d2d75da5 staging: comedi: pcmuio: remove unnecessary mask of triggered channels
The 'triggered' value is read directly from the three trigger id
registers and does not have any extra data that needs masked off.
Remove the 'mytrig' local variable and just use 'triggered' directly.

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>
2013-12-06 13:10:02 -08:00
H Hartley Sweeten
beecd01b72 staging: comedi: pcmuio: fix pcmuio_dio_insn_bits()
This dio subdevice (*insn_bits) function does not follow the "norm"
for comedi drivers. It also _appears_ to return the incorrect state
of the channels.

Use the comedi_dio_update_state() helper to handle the boilerplate
for updating the output channel state. Due to the hardware we then
need to invert the state and mask the input channels before updating
the outputs.

Then read the hardware and invert the result to get the current true
state of the dio channels.

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>
2013-12-06 13:10:02 -08:00
H Hartley Sweeten
063b590413 staging: comedi: pcmuio: remove subdevice private data
The subdevice private data is only needed for each 'asic' not for each
subdevice. Since the 'asic' can be calculated easily from the subdevice
we can merge the subdevice private data members directly into the
private data.

This removes the need to kcalloc/free the subdevice private data and
saves a bit of space.

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>
2013-12-06 13:10:02 -08:00
H Hartley Sweeten
0d1ead4809 staging: comedi: pcmuio: remove 'asic' member from subdevice private data
The 'asic' associated with a subdevice can be easily calculated. The
functions that use this member in the subdevice private data can only
be called by the subdevices that support interrupts. Just calculate
the 'asic' when needed and remove the member variable and sanity checks.

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>
2013-12-06 13:10:02 -08:00
H Hartley Sweeten
741ba8cdf0 staging: comedi: pcmuio: tidy up pcmuio_handle_asic_interrupt()
Unfortunatly, since there could be two asics, we can't use dev->read_subdev
to get the subdevice. But, the comedi_subdevice associated with the 'asic'
can easily be calculated. This allows removing the for () loop that searched
for the correct subdevice.

Tidy up the function.

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>
2013-12-06 13:10:02 -08:00
H Hartley Sweeten
099ec87df0 staging: comedi: pcmuio: spinlock protect pcmuio_{write, read}()
Currently only the pcmuio_handle_asic_interrupt() function uses the
spinlock in the private data to protect the read of the paged interrupt
id registers. All accesses to the paged registers should be protected
to ensure that the page is not changed until the access is complete.
Move the lock/unlock into the pcmuio_{write,read}() functions to make
sure the access completes correctly. Rename the spinlock to variable
to clarify its use.

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>
2013-12-06 13:10:02 -08:00
H Hartley Sweeten
04426acfb8 staging: comedi: pcmuio: fix interrupt requests
Legacy (ISA) interrupts are not sharable so this driver should not
be passing the IRQF_SHARED flag when requesting the interrupts.

This driver supports two board types:
  PCM-UIO48 with one asic (one interrupt source)
  PCM-UIO96 with two asics (two interrupt sources)

The PCM-UIO96 has a jumper that allows the two interrupt sources to
share an interrupt. This is safe for legacy interrupts as long as
the "shared" interrupt is handled by a single driver.

Modify the request_irq() code in this driver to correctly request the
interrupts. For the PCM-UI048 case (one asic) only one request_irq()
is needed. For the PCM-UIO96 (two asics) there are three cases:

  1) irq is shared, one request_irq() call
  2) only one asic has an irq, one request_irq() call
  3) two irqs, two request_irq() calls

The irq for the first asic (dev->irq) will be requested during the
attach if required. The comedi core will handle the freeing of this
irq during the detach.

The irq for the second asic (devpriv->irq2) will also be requested
during the attach if required. The freeing of this irq will be
handled by the driver during the detach.

Move the board reset and interrupt request code so it occurs early
in the attach. We can then check dev->irq and devpriv->irq2 to see
if the subdevice command support actually needs to be initialized.

This also simplifies the interrupt handler. The irq can be simply
checked against dev->irq and devpriv->irq2 to see which asic caused
the interrupt.

Add a call to pcmuio_reset() in the (*detach) to make sure the
interrupts are disabled before freeing the irqs.

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>
2013-12-06 13:10:02 -08:00
H Hartley Sweeten
7a68ef933b staging: comedi: ni_pcidio: use dev->read_subdev
Use the dev->read_subdev that was setup in the device attach instead
of accessing the dev->subdevices array directly.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-06 13:07:17 -08:00
H Hartley Sweeten
de1e27a6df staging: comedi: ni_pcidio: factor board reset out of attach
Factor the code that resets the board and disables the interrupts out
of the attach.

Move the reset so it happens before the subdevices are initialized.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-12-06 13:07:17 -08:00