summaryrefslogtreecommitdiff
path: root/drivers/staging/comedi
AgeCommit message (Collapse)Author
2014-08-01staging: comedi: addi_apci_1564: remove diagnostic interrupt support codeChase Southwood
As per Ian, at this point in time it is not worth implementing an async command interface for diagnostic interrupts for this board. As this is the case, this patch removes the code which supports such interrupts as it is now unused. This includes removing apci1564_do_read(), which was the insn_read operation for the digital output subdevice, since all it was doing was reading the current diagnostic interrupt type and returning it in 'data'. This doesn't follow the comedi API and this operation can be emulated by the comedi core anyway since the insn_bits operation follows the comedi API. So it is safe to simply remove this function. Signed-off-by: Chase Southwood <chase.southwood@gmail.com> Reviewed-by: Ian Abbott <abbotti@mev.co.uk> Cc: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-08-01staging: comedi: addi_apci_1564: add subdevice to check diagnostic statusChase Southwood
This board provides VCC/CC diagnostic information, and it also supports diagnostic interrupts. However, as per Ian, these interrupts aren't very useful and it is enough to simply provide an interface for accessing the diagnostic status on-demand. This patch adds a 2-channel digital input subdevice with an insn_bits handler to access this information. Signed-off-by: Chase Southwood <chase.southwood@gmail.com> Reviewed-by: Ian Abbott <abbotti@mev.co.uk> Cc: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-08-01staging: comedi: ii_pci20kc: request and ioremap memoryIan Abbott
The "ii_pci20kc" module is a comedi driver for Intelligent Instruments PCI-20001C carrier board and modules. Despite the name, this is actually an ISA board and uses 1K of ISA memory space (below 1M) for the main board plus up to three modules. The address is set by hardware jumpers. When the board is attached to Comedi via the `COMEDI_DEVCONFIG` ioctl and the driver's legacy "attach" handler, the base address is passed in. The driver currently uses that address as-is, which is a bad idea. It doesn't even reserve the memory region. Fix that by sanity checking the passed in address, reserving the memory region and ioremapping it. Replace the current "detach" handler `comedi_legacy_detach()` with a new handler `ii20k_detach()` which unmaps the memory and releases the region. Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-08-01staging: comedi: ni_tio: remove some dead codeDan Carpenter
These conditions can never be true because "i" is always one more than NI_660X_MAX_RTSI_CHAN after the loop. Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com> Reviewed-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-07-30staging: comedi: amplc_dio200: use the comedi_device 'mmio' memberH Hartley Sweeten
The amplc_dio200_common module currently uses a union in the private data to determine if the hardware uses port or memory mapped I/O. Use the new 'mmio' member in the comedi_device for the ioremap'ed base address and remove all the union code. 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>
2014-07-30staging: comedi: ii_pci20kc: use the comedi_device 'mmio' memberH Hartley Sweeten
Use the new 'mmio' member in the comedi_device for the __iomem * base address. Since this was the only member in the private data, remove the struct and its allocation. This legacy driver is a bit strange. The base address of the board is passed to the (*attach) using by the user using the comedi_config utiltiy. This base address is currently not ioremap'ed and is simply cast to a void __iomem *. I'm not sure if this is correct. Add a comment so it will be addressed later. 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>
2014-07-30staging: comedi: ni_labpc: use the comedi_device 'mmio' memberH Hartley Sweeten
Use the new 'mmio' member in the comedi_device for the ioremap'ed base address. Only the ni_labpc_pci module does the ioremap, its also the only module that sets the 'has_mmio' member in the boardinfo. Remove this member from the boardinfo and use dev->mmio to determine if the I/O is memory mapped. 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>
2014-07-30staging: comedi: ni_labpc: refactor labpc_8255_mmio()H Hartley Sweeten
Refactor the 8255 support code in preperation for using the comedi_device 'mmio' member. 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>
2014-07-30staging: comedi: ni_labpc: don't pass dev->iobase to labpc_counter_set_mode()H Hartley Sweeten
Use the comedi_device parameter that is passed to this function to find the dev->iobase so it does not have to be included in each call. 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>
2014-07-30staging: comedi: ni_labpc: don't pass dev->iobase to labpc_counter_load()H Hartley Sweeten
Use the comedi_device parameter that is passed to this function to find the dev->iobase so it does not have to be included in each call. 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>
2014-07-30staging: comedi: ni_labpc: pass comedi_device to the I/O callbacksH Hartley Sweeten
This driver uses some callbacks in the private data to handle the port mapped or memory mapped I/O used to access the hardware. Pass the comedi_device pointer to the helper functions so that the base address can be found and does not need to be included in each call. Also, remove the inline from the helper functions. 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>
2014-07-30staging: comedi: mite: use the comedi_device 'mmio' memberH Hartley Sweeten
Use the new 'mmio' member in the comedi_device for the ioremap'ed 'daq_io_addr'. Move the iounmap of this address from mite_detach() to the drivers that use the mite module. 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>
2014-07-30staging: comedi: mite: pass comedi_device to mite_setup()H Hartley Sweeten
For aesthetics, pass the comedi_device to mite_setup() and mite_setup2() so that the dev->class_dev can be used in the dev_{level} message to make the messages have consistancy with the other comedi drivers. Remove the extra dev_warn() noise in the drivers when mite_setup() fails. Rename the 'use_iodwbsr_1' parameter and change it to a bool. 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>
2014-07-30staging: comedi: mite: inline mite_setup()H Hartley Sweeten
This exported function simply calls mite_setup2() with the 'use_iodsbsr_1' parameter set to 0. Inline the simple function and remove the EXPORT_SYMBOL_GPL. 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>
2014-07-30staging: comedi: s626: use the comedi_device 'mmio' memberH Hartley Sweeten
Use the new 'mmio' member in the comedi_device for the ioremap'ed base address. 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>
2014-07-30staging: comedi: rtd520: use the comedi_device 'mmio' memberH Hartley Sweeten
Use the new 'mmio' member in the comedi_device for the ioremap'ed base address of PCI bar 2. 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>
2014-07-30staging: comedi: cb_pcidas64: use the comedi_device 'mmio' memberH Hartley Sweeten
Use the new 'mmio' member in the comedi_device for the ioremap'ed base address of PCI bar 3. 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>
2014-07-30staging: comedi: ni_670x: use the comedi_device 'mmio' memberH Hartley Sweeten
Use the new 'mmio' member in the comedi_device for the ioremap'ed base address. 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>
2014-07-30staging: comedi: ni_6527: iounmap resource when detachedH Hartley Sweeten
PCI bar 1 is ioremap'ed during the (*auto_attach). This resource needs to be iounmap'ed when the driver is (*detach)ed. 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>
2014-07-30staging: comedi: ni_6527: use the comedi_device 'mmio' memberH Hartley Sweeten
Use the new 'mmio' member in the comedi_device for the ioremap'ed base address. 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>
2014-07-30staging: comedi: dt3000: use the comedi_device 'mmio' memberH Hartley Sweeten
Use the new 'mmio' member in the comedi_device for the ioremap'ed base address. 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>
2014-07-30staging: comedi: daqboard2000: use the comedi_device 'mmio' memberH Hartley Sweeten
Use the new 'mmio' member in the comedi_device for the ioremap'ed base address. 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>
2014-07-30staging: comedi: addi_apci_3xxx: use the comedi_device 'mmio' memberH Hartley Sweeten
Use the new 'mmio' member in the comedi_device for the ioremap'ed base address. 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>
2014-07-30staging: comedi: icp_multi: use the comedi_device 'mmio' memberH Hartley Sweeten
Use the new 'mmio' member in the comedi_device for the ioremap'ed base address. 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>
2014-07-30staging: comedi: mf6x4: use the comedi_device 'mmio' memberH Hartley Sweeten
Use the new 'mmio' member in the comedi_device for the ioremap'ed base address. 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>
2014-07-30staging: comedi: me_daq: use the comedi_device 'mmio' memberH Hartley Sweeten
Use the new 'mmio' member in the comedi_device for the ioremap'ed base address. 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>
2014-07-30staging: comedi: gsc_hpdi: use the comedi_device 'mmio' memberH Hartley Sweeten
Use the new 'mmio' member in the comedi_device for the ioremap'ed base address. 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>
2014-07-30staging: comedi: ni_65xx: use the comedi_device 'mmio' memberH Hartley Sweeten
Use the new 'mmio' member in the comedi_device for the ioremap'ed base address. Since this was the only member in the private data, remove the struct and its allocation. 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>
2014-07-30staging: comedi: 8255_pci: use the comedi_device 'mmio' memberH Hartley Sweeten
Use the new 'mmio' member in the comedi_device for the ioremap'ed base address. Since this was the only member in the private data, remove the struct and its allocation. 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>
2014-07-30staging: comedi: add an 'mmio' member to comedi_deviceH Hartley Sweeten
All the comedi drivers that use memory mapped io currently have a void __iomem * member in their private data for the driver. For some of the drivers this is actually the only member in that data. For convienence, add a new member to the comedi_device for this void __iomem *. 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>
2014-07-30staging: comedi: amplc_pci230: tidy up stuct pci230_privateIan Abbott
Align the member comments a bit better in the declaration of `struct pci230_private`. Also remove the heading comment as it is just a boilerplate comedi comment. Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-07-30staging: comedi: amplc_pci230: no need to initialize named members to zeroIan Abbott
The members of the elements of `pci230_boards[]` that are not explicitly named in their initializers will be initialized to 0 automatically, so there is no need to initialize them to 0 explicitly. Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-07-30staging: comedi: amplc_pci230: add whitespace to pci230_boards[]Ian Abbott
Add a bit of whitespace to the initializer of `pci230_boards[]` for aesthetic reasons. Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-07-30staging: comedi: amplc_pci230: no need for '&function'Ian Abbott
Remove the "address-of" operator when the operand is a function. Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-07-30staging: comedi: amplc_pci230: remove some indentation in ↵Ian Abbott
pci230_ai_check_chanlist() A few lines in `pci230_ai_check_chanlist()` are indented one level too much, so remove the excess indentation. Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-07-30staging: comedi: amplc_pci230: omit '!= 0' from logical expressionsIan Abbott
Since anything non-zero is logically "true", don't bother doing "not-equal" comparisons with zero. Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-07-30staging: comedi: amplc_pci230: don't begin line with binary operatorIan Abbott
If an expression involving a binary operator needs to be split across two lines, put the split after the operator. Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-07-30staging: comedi: amplc_pci230: add whitespace to register valuesIan Abbott
Several macros are defined for bit-field values within hardware registers. They are defined as left-shifted values. Add some whitespace around the left-shift operator. Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-07-30staging: comedi: amplc_pci230: remove PCI230_TEST_BIT()Ian Abbott
The `PCI230_TEST_BIT()` macro is never used. Remove it. Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-07-30staging: comedi: amplc_pci230: remove PCI230_ADC_CONVIan Abbott
The macro `PCI230_ADC_CONV` is never used. Just remove it. (At one time, the value was written to the `PCI230_ADCSWTRIG` register to trigger a conversion, but any value would do, and the driver no longer uses that register to trigger conversions anyway.) Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-07-30staging: comedi: amplc_pci230: remove unused settling time constantsIan Abbott
The macro constants `PCI230_DAC_SETTLE`, `PCI230_ADC_SETTLE` and `PCI230_MUX_SETTLE` are never used. Just remove them. Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-07-30staging: comedi: amplc_pci230: usleep_range is preferred over udelayIan Abbott
Fix checkpatch issue: "CHECK: usleep_range is preferred over udelay; see Documentation/timers/timers-howto.txt". I picked 100 us as a reasonable upper bound, but it's not that critical. Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-07-30staging: comedi: amplc_pci230: alignment should match open parenthesisIan Abbott
Fix checkpatch issue: "CHECK: Alignment should match open parenthesis". Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-07-30staging: comedi: amplc_pci230: blank lines aren't necessary before a close ↵Ian Abbott
brace '}' Fix checkpatch issues: "CHECK: Blank lines aren't necessary before a close brace '}'". Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-07-30staging: comedi: amplc_pci230: logical continuations should be on the ↵Ian Abbott
previous line Fix checkpatch issues "CHECK: Logical continuations should be on the previous line". Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-07-30staging: comedi: amplc_pci230: fix checkpatch line over 80 charactersIan Abbott
Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-07-30staging: comedi: amplc_pci230: reformat a load of commentsIan Abbott
Reformat a load of comments to fit in with the preferred coding style, including the copyright and driver description comments at the top of the file. Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-07-30staging: comedi: ni_tiocmd: introduce ni_tio_acknowledge()H Hartley Sweeten
The external callers of ni_tio_acknowledge_and_confirm() only call this function to ack any pending errors or interrupts before starting a new async command. Only the internal code in ni_tiocmd uses the data that is optionally returned by this function. Remove the export from ni_tio_acknowledge_and_confirm() and introduce a new exported function that handles passing the NULL params. 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>
2014-07-30staging: comedi: ni_tiocmd: tidy up ni_tio_input_cmd()H Hartley Sweeten
The cmd->start_src is validated in the (*do_cmdtest) before this function is called. All valid trigger sources are handled so the default BUG() case can never occure. For aesthetics, refactor the switch into if/else tests and remove the BUG(). For aesthetics, rename the local variable 'retval' to simply 'ret'. 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>
2014-07-30staging: comedi: ni_tiocmd: tidy up ni_tio_input_inttrig()H Hartley Sweeten
Remove the BUG_ON(counter == NULL). If this can never happen and it if did the driver should have died long before this function is called. For aesthetics, rename the local variable 'retval' to simply 'ret'. 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>