Staging: add poch driver
This is the first cut at a driver for the Redrapids Pocket Change CardBus devices. Receiving data seems to work properly, but overflows happen on transmit. Still needs more hardware debugging to work properly. (cleaned up to use proper driver core api functions by Greg) From: Vijay Kumar <vijaykumar@bravegnu.org> Cc: Alexey Zaytsev <alexey.zaytsev@gmail.com> Cc: Jaya Kumar <jayakumar.lkml@gmail.com> Cc: Ken Sienski <sienski@redrapids.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
Родитель
0c74433e31
Коммит
a14edddac9
|
@ -45,4 +45,6 @@ source "drivers/staging/at76_usb/Kconfig"
|
|||
|
||||
source "drivers/staging/pcc-acpi/Kconfig"
|
||||
|
||||
source "drivers/staging/poch/Kconfig"
|
||||
|
||||
endif # STAGING
|
||||
|
|
|
@ -14,3 +14,4 @@ obj-$(CONFIG_PRISM2_USB) += wlan-ng/
|
|||
obj-$(CONFIG_ECHO) += echo/
|
||||
obj-$(CONFIG_USB_ATMEL) += at76_usb/
|
||||
obj-$(CONFIG_PCC_ACPI) += pcc-acpi/
|
||||
obj-$(CONFIG_POCH) += poch/
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
config POCH
|
||||
tristate "Redrapids Pocket Change CardBus support"
|
||||
depends on PCI && UIO
|
||||
default N
|
||||
---help---
|
||||
Enable support for Redrapids Pocket Change CardBus devices.
|
|
@ -0,0 +1 @@
|
|||
obj-$(CONFIG_POCH) += poch.o
|
|
@ -0,0 +1,7 @@
|
|||
TODO:
|
||||
- fix transmit overflows
|
||||
- audit userspace interfaces
|
||||
- get reserved major/minor if needed
|
||||
|
||||
Please send patches to Greg Kroah-Hartman <greg@kroah.com> and
|
||||
Vijay Kumar <vijaykumar@bravegnu.org> and Jaya Kumar <jayakumar.lkml@gmail.com>
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -0,0 +1,29 @@
|
|||
/*
|
||||
* User-space DMA and UIO based Redrapids Pocket Change CardBus driver
|
||||
*
|
||||
* Copyright 2008 Vijay Kumar <vijaykumar@bravegnu.org>
|
||||
*
|
||||
* Part of userspace API. Should be moved to a header file in
|
||||
* include/linux for final version.
|
||||
*
|
||||
*/
|
||||
struct poch_cbuf_header {
|
||||
__s32 group_size_bytes;
|
||||
__s32 group_count;
|
||||
__s32 group_offsets[0];
|
||||
};
|
||||
|
||||
struct poch_counters {
|
||||
__u32 fifo_empty;
|
||||
__u32 fifo_overflow;
|
||||
__u32 pll_unlock;
|
||||
};
|
||||
|
||||
#define POCH_IOC_NUM '9'
|
||||
|
||||
#define POCH_IOC_TRANSFER_START _IO(POCH_IOC_NUM, 0)
|
||||
#define POCH_IOC_TRANSFER_STOP _IO(POCH_IOC_NUM, 1)
|
||||
#define POCH_IOC_GET_COUNTERS _IOR(POCH_IOC_NUM, 2, \
|
||||
struct poch_counters)
|
||||
#define POCH_IOC_SYNC_GROUP_FOR_USER _IO(POCH_IOC_NUM, 3)
|
||||
#define POCH_IOC_SYNC_GROUP_FOR_DEVICE _IO(POCH_IOC_NUM, 4)
|
Загрузка…
Ссылка в новой задаче