<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/drivers/staging/comedi, branch v3.14.2</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>staging: comedi: fix circular locking dependency in comedi_mmap()</title>
<updated>2014-04-27T00:19:03+00:00</updated>
<author>
<name>Ian Abbott</name>
<email>abbotti@mev.co.uk</email>
</author>
<published>2014-04-10T18:41:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=541d5f25b500f84ed324df3e2b06f2235cefae52'/>
<id>541d5f25b500f84ed324df3e2b06f2235cefae52</id>
<content type='text'>
commit b34aa86f12e8848ba453215602c8c50fa63c4cb3 upstream.

Mmapping a comedi data buffer with lockdep checking enabled produced the
following kernel debug messages:

======================================================
[ INFO: possible circular locking dependency detected ]
3.5.0-rc3-ija1+ #9 Tainted: G         C
-------------------------------------------------------
comedi_test/4160 is trying to acquire lock:
 (&amp;dev-&gt;mutex#2){+.+.+.}, at: [&lt;ffffffffa00313f4&gt;] comedi_mmap+0x57/0x1d9 [comedi]

but task is already holding lock:
 (&amp;mm-&gt;mmap_sem){++++++}, at: [&lt;ffffffff810c96fe&gt;] vm_mmap_pgoff+0x41/0x76

which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:

-&gt; #1 (&amp;mm-&gt;mmap_sem){++++++}:
       [&lt;ffffffff8106d0e8&gt;] lock_acquire+0x97/0x105
       [&lt;ffffffff810ce3bc&gt;] might_fault+0x6d/0x90
       [&lt;ffffffffa0031ffb&gt;] do_devinfo_ioctl.isra.7+0x11e/0x14c [comedi]
       [&lt;ffffffffa003227f&gt;] comedi_unlocked_ioctl+0x256/0xe48 [comedi]
       [&lt;ffffffff810f7fcd&gt;] vfs_ioctl+0x18/0x34
       [&lt;ffffffff810f87fd&gt;] do_vfs_ioctl+0x382/0x43c
       [&lt;ffffffff810f88f9&gt;] sys_ioctl+0x42/0x65
       [&lt;ffffffff81415c62&gt;] system_call_fastpath+0x16/0x1b

-&gt; #0 (&amp;dev-&gt;mutex#2){+.+.+.}:
       [&lt;ffffffff8106c528&gt;] __lock_acquire+0x101d/0x1591
       [&lt;ffffffff8106d0e8&gt;] lock_acquire+0x97/0x105
       [&lt;ffffffff8140c894&gt;] mutex_lock_nested+0x46/0x2a4
       [&lt;ffffffffa00313f4&gt;] comedi_mmap+0x57/0x1d9 [comedi]
       [&lt;ffffffff810d5816&gt;] mmap_region+0x281/0x492
       [&lt;ffffffff810d5c92&gt;] do_mmap_pgoff+0x26b/0x2a7
       [&lt;ffffffff810c971a&gt;] vm_mmap_pgoff+0x5d/0x76
       [&lt;ffffffff810d493f&gt;] sys_mmap_pgoff+0xc7/0x10d
       [&lt;ffffffff81004d36&gt;] sys_mmap+0x16/0x20
       [&lt;ffffffff81415c62&gt;] system_call_fastpath+0x16/0x1b

other info that might help us debug this:

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(&amp;mm-&gt;mmap_sem);
                               lock(&amp;dev-&gt;mutex#2);
                               lock(&amp;mm-&gt;mmap_sem);
  lock(&amp;dev-&gt;mutex#2);

 *** DEADLOCK ***

To avoid the circular dependency, just try to get the lock in
`comedi_mmap()` instead of blocking.  Since the comedi device's main mutex
is heavily used, do a down-read of its `attach_lock` rwsemaphore
instead.  Trying to down-read `attach_lock` should only fail if
some task has down-write locked it, and that is only done while the
comedi device is being attached to or detached from a low-level hardware
device.

Unfortunately, acquiring the `attach_lock` doesn't prevent another
task replacing the comedi data buffer we are trying to mmap.  The
details of the buffer are held in a `struct comedi_buf_map` and pointed
to by `s-&gt;async-&gt;buf_map` where `s` is the comedi subdevice whose buffer
we are trying to map.  The `struct comedi_buf_map` is already reference
counted with a `struct kref`, so we can stop it being freed prematurely.

Modify `comedi_mmap()` to call new function
`comedi_buf_map_from_subdev_get()` to read the subdevice's current
buffer map pointer and increment its reference instead of accessing
`async-&gt;buf_map` directly.  Call `comedi_buf_map_put()` to decrement the
reference once the buffer map structure has been dealt with.  (Note that
`comedi_buf_map_put()` does nothing if passed a NULL pointer.)

`comedi_buf_map_from_subdev_get()` checks the subdevice's buffer map
pointer has been set and the buffer map has been initialized enough for
`comedi_mmap()` to deal with it (specifically, check the `n_pages`
member has been set to a non-zero value).  If all is well, the buffer
map's reference is incremented and a pointer to it is returned.  The
comedi subdevice's spin-lock is used to protect the checks.  Also use
the spin-lock in `__comedi_buf_alloc()` and `__comedi_buf_free()` to
protect changes to the subdevice's buffer map structure pointer and the
buffer map structure's `n_pages` member.  (This checking of `n_pages` is
a bit clunky and I [Ian Abbott] plan to deal with it in the future.)

Signed-off-by: Ian Abbott &lt;abbotti@mev.co.uk&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit b34aa86f12e8848ba453215602c8c50fa63c4cb3 upstream.

Mmapping a comedi data buffer with lockdep checking enabled produced the
following kernel debug messages:

======================================================
[ INFO: possible circular locking dependency detected ]
3.5.0-rc3-ija1+ #9 Tainted: G         C
-------------------------------------------------------
comedi_test/4160 is trying to acquire lock:
 (&amp;dev-&gt;mutex#2){+.+.+.}, at: [&lt;ffffffffa00313f4&gt;] comedi_mmap+0x57/0x1d9 [comedi]

but task is already holding lock:
 (&amp;mm-&gt;mmap_sem){++++++}, at: [&lt;ffffffff810c96fe&gt;] vm_mmap_pgoff+0x41/0x76

which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:

-&gt; #1 (&amp;mm-&gt;mmap_sem){++++++}:
       [&lt;ffffffff8106d0e8&gt;] lock_acquire+0x97/0x105
       [&lt;ffffffff810ce3bc&gt;] might_fault+0x6d/0x90
       [&lt;ffffffffa0031ffb&gt;] do_devinfo_ioctl.isra.7+0x11e/0x14c [comedi]
       [&lt;ffffffffa003227f&gt;] comedi_unlocked_ioctl+0x256/0xe48 [comedi]
       [&lt;ffffffff810f7fcd&gt;] vfs_ioctl+0x18/0x34
       [&lt;ffffffff810f87fd&gt;] do_vfs_ioctl+0x382/0x43c
       [&lt;ffffffff810f88f9&gt;] sys_ioctl+0x42/0x65
       [&lt;ffffffff81415c62&gt;] system_call_fastpath+0x16/0x1b

-&gt; #0 (&amp;dev-&gt;mutex#2){+.+.+.}:
       [&lt;ffffffff8106c528&gt;] __lock_acquire+0x101d/0x1591
       [&lt;ffffffff8106d0e8&gt;] lock_acquire+0x97/0x105
       [&lt;ffffffff8140c894&gt;] mutex_lock_nested+0x46/0x2a4
       [&lt;ffffffffa00313f4&gt;] comedi_mmap+0x57/0x1d9 [comedi]
       [&lt;ffffffff810d5816&gt;] mmap_region+0x281/0x492
       [&lt;ffffffff810d5c92&gt;] do_mmap_pgoff+0x26b/0x2a7
       [&lt;ffffffff810c971a&gt;] vm_mmap_pgoff+0x5d/0x76
       [&lt;ffffffff810d493f&gt;] sys_mmap_pgoff+0xc7/0x10d
       [&lt;ffffffff81004d36&gt;] sys_mmap+0x16/0x20
       [&lt;ffffffff81415c62&gt;] system_call_fastpath+0x16/0x1b

other info that might help us debug this:

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(&amp;mm-&gt;mmap_sem);
                               lock(&amp;dev-&gt;mutex#2);
                               lock(&amp;mm-&gt;mmap_sem);
  lock(&amp;dev-&gt;mutex#2);

 *** DEADLOCK ***

To avoid the circular dependency, just try to get the lock in
`comedi_mmap()` instead of blocking.  Since the comedi device's main mutex
is heavily used, do a down-read of its `attach_lock` rwsemaphore
instead.  Trying to down-read `attach_lock` should only fail if
some task has down-write locked it, and that is only done while the
comedi device is being attached to or detached from a low-level hardware
device.

Unfortunately, acquiring the `attach_lock` doesn't prevent another
task replacing the comedi data buffer we are trying to mmap.  The
details of the buffer are held in a `struct comedi_buf_map` and pointed
to by `s-&gt;async-&gt;buf_map` where `s` is the comedi subdevice whose buffer
we are trying to map.  The `struct comedi_buf_map` is already reference
counted with a `struct kref`, so we can stop it being freed prematurely.

Modify `comedi_mmap()` to call new function
`comedi_buf_map_from_subdev_get()` to read the subdevice's current
buffer map pointer and increment its reference instead of accessing
`async-&gt;buf_map` directly.  Call `comedi_buf_map_put()` to decrement the
reference once the buffer map structure has been dealt with.  (Note that
`comedi_buf_map_put()` does nothing if passed a NULL pointer.)

`comedi_buf_map_from_subdev_get()` checks the subdevice's buffer map
pointer has been set and the buffer map has been initialized enough for
`comedi_mmap()` to deal with it (specifically, check the `n_pages`
member has been set to a non-zero value).  If all is well, the buffer
map's reference is incremented and a pointer to it is returned.  The
comedi subdevice's spin-lock is used to protect the checks.  Also use
the spin-lock in `__comedi_buf_alloc()` and `__comedi_buf_free()` to
protect changes to the subdevice's buffer map structure pointer and the
buffer map structure's `n_pages` member.  (This checking of `n_pages` is
a bit clunky and I [Ian Abbott] plan to deal with it in the future.)

Signed-off-by: Ian Abbott &lt;abbotti@mev.co.uk&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>staging: comedi: 8255_pci: initialize MITE data window</title>
<updated>2014-04-27T00:19:03+00:00</updated>
<author>
<name>Ian Abbott</name>
<email>abbotti@mev.co.uk</email>
</author>
<published>2014-03-13T15:30:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=a0409781aaa8cea0daed9292ec0bd7326ba13368'/>
<id>a0409781aaa8cea0daed9292ec0bd7326ba13368</id>
<content type='text'>
commit 268d1e799663b795cba15c64f5d29407786a9dd4 upstream.

According to National Instruments' PCI-DIO-96/PXI-6508/PCI-6503 User
Manual, the physical address in PCI BAR1 needs to be OR'ed with 0x80 and
written to register offset 0xC0 in the "MITE" registers (BAR0).  Do so
during initialization of the National Instruments boards handled by the
"8255_pci" driver.  The boards were previously handled by the
"ni_pcidio" driver, where the initialization was done by `mite_setup()`
in the "mite" module.  The "mite" module comes with too much extra
baggage for the "8255_pci" driver to deal with so use a local, simpler
initialization function.

Signed-off-by: Ian Abbott &lt;abbotti@mev.co.uk&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 268d1e799663b795cba15c64f5d29407786a9dd4 upstream.

According to National Instruments' PCI-DIO-96/PXI-6508/PCI-6503 User
Manual, the physical address in PCI BAR1 needs to be OR'ed with 0x80 and
written to register offset 0xC0 in the "MITE" registers (BAR0).  Do so
during initialization of the National Instruments boards handled by the
"8255_pci" driver.  The boards were previously handled by the
"ni_pcidio" driver, where the initialization was done by `mite_setup()`
in the "mite" module.  The "mite" module comes with too much extra
baggage for the "8255_pci" driver to deal with so use a local, simpler
initialization function.

Signed-off-by: Ian Abbott &lt;abbotti@mev.co.uk&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>staging: comedi: usbduxsigma: fix unaligned dereferences</title>
<updated>2014-02-07T19:08:46+00:00</updated>
<author>
<name>Ian Abbott</name>
<email>abbotti@mev.co.uk</email>
</author>
<published>2014-01-21T17:39:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=791771e4e0587652e193ac8920e14911045a1dc8'/>
<id>791771e4e0587652e193ac8920e14911045a1dc8</id>
<content type='text'>
There are a couple of dereferences such as `*(uint32_t
*)(devpriv-&gt;insn_buf + 1)` that are unaligned as `devpriv-&gt;insn_buf` is
of type `uint8_t *`.  This works on x86 architecture but may not be
supported on other architectures.  Call `get_unalign()` to perform the
unaligned dereferences.

Signed-off-by: Ian Abbott &lt;abbotti@mev.co.uk&gt;
Cc: Bernd Porr &lt;mail@berndporr.me.uk&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There are a couple of dereferences such as `*(uint32_t
*)(devpriv-&gt;insn_buf + 1)` that are unaligned as `devpriv-&gt;insn_buf` is
of type `uint8_t *`.  This works on x86 architecture but may not be
supported on other architectures.  Call `get_unalign()` to perform the
unaligned dereferences.

Signed-off-by: Ian Abbott &lt;abbotti@mev.co.uk&gt;
Cc: Bernd Porr &lt;mail@berndporr.me.uk&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>staging: comedi: fix too early cleanup in comedi_auto_config()</title>
<updated>2014-02-07T19:08:46+00:00</updated>
<author>
<name>Ian Abbott</name>
<email>abbotti@mev.co.uk</email>
</author>
<published>2014-01-21T17:06:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=f1ffdfcc52744ed264041741020364cfbad9c0de'/>
<id>f1ffdfcc52744ed264041741020364cfbad9c0de</id>
<content type='text'>
`comedi_auto_config()` is usually called from the probe routine of a
low-level comedi driver to allocate and auto-configure a comedi device.
Part of this involves calling the low-level driver's `auto_attach()`
handler, and if that is successful, `comedi_device_postconfig()` tries
to complete the configuration of the comedi device.  If either of those
fail, `comedi_device_detach()` is called to clean up, and
`comedi_release_hardware_device()` is called to remove the dynamically
allocated comedi device.

Unfortunately, `comedi_device_detach()` clears the `hw_dev` member of
the `struct comedi_device` (indirectly via `comedi_clear_hw_dev()`), and
that stops `comedi_release_hardware_device()` finding the comedi device
associated with the hardware device, so the comedi device won't be
removed properly.

Since `comedi_release_hardware_device()` also calls
`comedi_device_detach()` (assuming it finds the comedi device associated
with the hardware device), the fix is to remove the direct call to
`comedi_device_detach()` from `comedi_auto_config()` and let the call to
`comedi_release_hardware_device()` take care of it.

Signed-off-by: Ian Abbott &lt;abbotti@mev.co.uk&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
`comedi_auto_config()` is usually called from the probe routine of a
low-level comedi driver to allocate and auto-configure a comedi device.
Part of this involves calling the low-level driver's `auto_attach()`
handler, and if that is successful, `comedi_device_postconfig()` tries
to complete the configuration of the comedi device.  If either of those
fail, `comedi_device_detach()` is called to clean up, and
`comedi_release_hardware_device()` is called to remove the dynamically
allocated comedi device.

Unfortunately, `comedi_device_detach()` clears the `hw_dev` member of
the `struct comedi_device` (indirectly via `comedi_clear_hw_dev()`), and
that stops `comedi_release_hardware_device()` finding the comedi device
associated with the hardware device, so the comedi device won't be
removed properly.

Since `comedi_release_hardware_device()` also calls
`comedi_device_detach()` (assuming it finds the comedi device associated
with the hardware device), the fix is to remove the direct call to
`comedi_device_detach()` from `comedi_auto_config()` and let the call to
`comedi_release_hardware_device()` take care of it.

Signed-off-by: Ian Abbott &lt;abbotti@mev.co.uk&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>staging: comedi: adv_pci1710: fix analog output readback value</title>
<updated>2014-02-07T17:19:30+00:00</updated>
<author>
<name>H Hartley Sweeten</name>
<email>hsweeten@visionengravers.com</email>
</author>
<published>2014-02-05T21:59:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=1e85c1ea1ff2a60659e790ef8ec76c7339445841'/>
<id>1e85c1ea1ff2a60659e790ef8ec76c7339445841</id>
<content type='text'>
The last value written to a analog output channel is cached in the
private data of this driver for readback.

Currently, the wrong value is cached in the (*insn_write) functions.
The current code stores the data[n] value for readback afer the loop
has written all the values. At this time 'n' points past the end of
the data array.

Fix the functions by using a local variable to hold the data being
written to the analog output channel. This variable is then used
after the loop is complete to store the readback value. The current
value is retrieved before the loop in case no values are actually
written..

Signed-off-by: H Hartley Sweeten &lt;hsweeten@visionengravers.com&gt;
Reviewed-by: Ian Abbott &lt;abbotti@mev.co.uk&gt;
Cc: stable &lt;stable@vger.kernel.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The last value written to a analog output channel is cached in the
private data of this driver for readback.

Currently, the wrong value is cached in the (*insn_write) functions.
The current code stores the data[n] value for readback afer the loop
has written all the values. At this time 'n' points past the end of
the data array.

Fix the functions by using a local variable to hold the data being
written to the analog output channel. This variable is then used
after the loop is complete to store the readback value. The current
value is retrieved before the loop in case no values are actually
written..

Signed-off-by: H Hartley Sweeten &lt;hsweeten@visionengravers.com&gt;
Reviewed-by: Ian Abbott &lt;abbotti@mev.co.uk&gt;
Cc: stable &lt;stable@vger.kernel.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Staging: comedi: fix extra whitespace style issues in ni_mio_common.c.</title>
<updated>2014-01-13T23:04:52+00:00</updated>
<author>
<name>Chase Southwood</name>
<email>chase.southwood@yahoo.com</email>
</author>
<published>2014-01-11T04:03:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=69ba83585a22091455fdbf7f8b3ddc4788b401e2'/>
<id>69ba83585a22091455fdbf7f8b3ddc4788b401e2</id>
<content type='text'>
This patch for ni_mio_common.c removes extra whitespace causing
checkpatch.pl warnings.

Signed-off-by: Chase Southwood &lt;chase.southwood@yahoo.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch for ni_mio_common.c removes extra whitespace causing
checkpatch.pl warnings.

Signed-off-by: Chase Southwood &lt;chase.southwood@yahoo.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Staging: comedi: fix indentation coding style issue in ni_mio_common.c.</title>
<updated>2014-01-13T23:04:52+00:00</updated>
<author>
<name>Chase Southwood</name>
<email>chase.southwood@yahoo.com</email>
</author>
<published>2014-01-11T04:02:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=b9ede3154a4342434c155a7e4daa3915fc9769b1'/>
<id>b9ede3154a4342434c155a7e4daa3915fc9769b1</id>
<content type='text'>
This patch for ni_mio_common.c fixes several indentation warnings from
checkpatch.pl.

Signed-off-by: Chase Southwood &lt;chase.southwood@yahoo.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch for ni_mio_common.c fixes several indentation warnings from
checkpatch.pl.

Signed-off-by: Chase Southwood &lt;chase.southwood@yahoo.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Staging: comedi: fix numerous brace coding style issues in ni_mio_common.c.</title>
<updated>2014-01-13T23:04:52+00:00</updated>
<author>
<name>Chase Southwood</name>
<email>chase.southwood@yahoo.com</email>
</author>
<published>2014-01-11T04:02:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=bc4615561fc3df0826ac9a93876770cdbf673a80'/>
<id>bc4615561fc3df0826ac9a93876770cdbf673a80</id>
<content type='text'>
This patch for ni_mio_common.c removes many unneccesary braces to fix
checkpatch.pl warnings.

Signed-off-by: Chase Southwood &lt;chase.southwood@yahoo.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch for ni_mio_common.c removes many unneccesary braces to fix
checkpatch.pl warnings.

Signed-off-by: Chase Southwood &lt;chase.southwood@yahoo.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>comedi: Humusoft MF634 and MF624 DAQ cards driver</title>
<updated>2014-01-13T23:03:12+00:00</updated>
<author>
<name>Rostislav Lisovy</name>
<email>lisovy@gmail.com</email>
</author>
<published>2014-01-09T22:46:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=04b565021a83ae1940f1f9b801d3ce5b5fc8ee1e'/>
<id>04b565021a83ae1940f1f9b801d3ce5b5fc8ee1e</id>
<content type='text'>
This patch adds Comedi driver for Humusoft MF634 (PCIe) and
MF624 (PCI) data acquisition cards. The legacy card Humusoft
MF614 is not supported. More info about the cards may be found
at http://humusoft.cz/produkty/datacq/
The driver was tested with both cards. Everything seems to work
properly. Just the basic functionality of the card (DIO, ADC, DAC)
is supported by this driver.

Signed-off-by: Rostislav Lisovy &lt;lisovy@gmail.com&gt;
Reviewed-by: Ian Abbott &lt;abbotti@mev.co.uk&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch adds Comedi driver for Humusoft MF634 (PCIe) and
MF624 (PCI) data acquisition cards. The legacy card Humusoft
MF614 is not supported. More info about the cards may be found
at http://humusoft.cz/produkty/datacq/
The driver was tested with both cards. Everything seems to work
properly. Just the basic functionality of the card (DIO, ADC, DAC)
is supported by this driver.

Signed-off-by: Rostislav Lisovy &lt;lisovy@gmail.com&gt;
Reviewed-by: Ian Abbott &lt;abbotti@mev.co.uk&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Staging: comedi: amcc_s5933: "no space before tabs" coding style fixes.</title>
<updated>2014-01-11T20:41:56+00:00</updated>
<author>
<name>Michal Kwiatkowski</name>
<email>michaelflowersky@geekingspree.com</email>
</author>
<published>2014-01-09T22:58:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=509e42e1d35350cc5c1bbf1800a0d743be16a63a'/>
<id>509e42e1d35350cc5c1bbf1800a0d743be16a63a</id>
<content type='text'>
Fixed a coding style issues.

Signed-off-by: Michal Kwiatkowski &lt;michaelflowersky@geekingspree.com&gt;
Reviewed-by: Ian Abbott &lt;abbotti@mev.co.uk&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixed a coding style issues.

Signed-off-by: Michal Kwiatkowski &lt;michaelflowersky@geekingspree.com&gt;
Reviewed-by: Ian Abbott &lt;abbotti@mev.co.uk&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
