Go to the source code of this file.
Defines | |
| #define | DRIVER_NAME "most-sync" | 
| #define | PR DRIVER_NAME ": " | 
Functions | |
| static int | most_sync_probe (struct most_dev *) | 
| static int | most_sync_remove (struct most_dev *) | 
| static void | most_sync_int_handler (struct most_dev *, unsigned int) | 
| static int | most_sync_do_open (struct inode *, struct file *) | 
| static int | most_sync_do_release (struct inode *, struct file *) | 
| static ssize_t | most_sync_do_read (struct file *, char __user *, size_t, loff_t *) | 
| static ssize_t | most_sync_do_write (struct file *, const char __user *, size_t, loff_t *) | 
| static int | most_sync_do_ioctl (struct inode *, struct file *, unsigned int, unsigned long) | 
| static int | most_sync_do_setup_tx (struct file *, unsigned long) | 
| static int | most_sync_do_setup_rx (struct file *, unsigned long) | 
| static void | most_sync_stop_rx (struct most_sync_file *file) | 
| static void | most_sync_stop_tx (struct most_sync_file *file) | 
| ssize_t | most_sync_read (struct file *filp, void *buff, size_t count, struct rtnrt_memcopy_desc *copy) | 
| ssize_t | most_sync_write (struct file *filp, void *buff, size_t count, struct rtnrt_memcopy_desc *copy) | 
| int | most_sync_setup_rx (struct file *filp, struct frame_part *frame_part) | 
| int | most_sync_setup_tx (struct file *filp, struct frame_part *frame_part) | 
| static int __init | most_sync_init (void) | 
| static void __exit | most_sync_exit (void) | 
Variables | |
| static char * | version = "$Rev: 639 $" | 
| most_sync_dev * | most_sync_devices [MOST_DEVICE_NUMBER] | 
| long | sw_rx_buffer_size = STD_MOST_FRAMES_PER_SEC | 
| long | sw_tx_buffer_size = STD_MOST_FRAMES_PER_SEC | 
| long | hw_rx_buffer_size = 44 | 
| long | hw_tx_buffer_size = 44 | 
| static struct file_operations | most_sync_file_operations | 
| static struct most_high_driver | most_sync_high_driver | 
Definition in file most-sync-m.c.
| #define DRIVER_NAME "most-sync" | 
The name of the driver.
Definition at line 52 of file most-sync-m.c.
| #define PR DRIVER_NAME ": " | 
The prefix for printk outputs.
Definition at line 57 of file most-sync-m.c.
| static int most_sync_probe | ( | struct most_dev * | most_dev | ) |  [static] | 
        
Gets called by the MOST driver when a new MOST device was discovered.
0 on success, an error code on failure Definition at line 182 of file most-sync-m.c.
References most_sync_dev::cdev, most_sync_dev::config_lock_rx, most_sync_dev::config_lock_tx, most_sync_dev::file_list, most_sync_dev::most_dev, MOST_DEV_CARDNUMBER, MOST_DEV_MAJOR, MOST_DEVICE_NUMBER, most_sync_devices, MOST_SYNC_MINOR_OFFSET, MOST_SYNC_OPENS, most_sync_dev::open_count, PR, pr_sync_debug, most_sync_dev::receiver_count, return_value_if_fails_dbg, rtnrt_warn, most_sync_dev::rx_queue, most_sync_dev::transmitter_count, and most_sync_dev::tx_queue.
| static int most_sync_remove | ( | struct most_dev * | dev | ) |  [static] | 
        
Gets called by the MOST Base driver when a MOST device was removed.
| dev | the most_dev that was discovered | 
0 on success, an error code on failure Definition at line 242 of file most-sync-m.c.
References most_sync_dev::cdev, MOST_DEV_CARDNUMBER, most_sync_devices, PR, and pr_sync_debug.
| static void most_sync_int_handler | ( | struct most_dev * | dev, | |
| unsigned int | intstatus | |||
| ) |  [static] | 
        
Interrupt handler of a synchronous driver.
| [in] | dev | the MOST device | 
| [in] | intstatus | the interrupt status register content | 
Definition at line 265 of file most-sync-m.c.
References dma_buffer::addr_virt, assert, most_sync_dev::hw_receive_buf, most_sync_dev::hw_transmit_buf, ISSRX, ISSTX, measuring_receive_isr_start(), measuring_receive_isr_wakeup(), most_sync_dev::most_dev, MOST_DEV_CARDNUMBER, MOST_PCI_SRXCTRL_REG, MOST_PCI_STXCTRL_REG, most_readreg, most_sync_devices, PR, pr_irq_debug, rtnrt_warn, most_sync_dev::rx_current_page, most_sync_dev::rx_queue, rxbuf_put(), dma_buffer::size, SRXPP, STXPP, most_sync_dev::sw_receive_buf, most_sync_dev::sw_transmit_buf, most_sync_dev::tx_current_page, most_sync_dev::tx_queue, and txbuf_get().
| static int most_sync_do_open | ( | struct inode * | inode, | |
| struct file * | filp | |||
| ) |  [static] | 
        
Open the device. Create a per-file structure. There's no fixed file count per device, so the open() method cannot fail. The setup ioctl() method of the opened device can fail.
| inode | the inode | |
| filp | the file pointer | 
Definition at line 395 of file most-sync-m.c.
References most_sync_dev::file_list, most_sync_file::list, most_dev::lock, most_sync_dev::most_dev, MOST_DEV_CARDNUMBER, most_manage_usage, MOST_SYNC_OPENS, most_sync_dev::open_count, PR, pr_sync_debug, rtnrt_err, and most_sync_file::sync_dev.
| static int most_sync_do_release | ( | struct inode * | inode, | |
| struct file * | filp | |||
| ) |  [static] | 
        
Releases the driver. Deletes the file from the global list of open files per device and frees the memory.
| inode | the inode | |
| filp | the file pointer | 
Definition at line 456 of file most-sync-m.c.
References most_sync_dev::config_lock_rx, most_sync_dev::config_lock_tx, most_sync_file::list, most_dev::lock, most_sync_dev::most_dev, MOST_DEV_CARDNUMBER, most_manage_usage, most_sync_last_closed_rx, most_sync_last_closed_tx, most_sync_stop_rx(), most_sync_stop_tx(), most_sync_dev::open_count, PR, pr_sync_debug, most_sync_dev::receiver_count, most_sync_file::rx_running, most_sync_file::sync_dev, most_sync_dev::transmitter_count, and most_sync_file::tx_running.
| static ssize_t most_sync_do_read | ( | struct file * | filp, | |
| char __user * | buff, | |||
| size_t | count, | |||
| loff_t * | offp | |||
| ) |  [static] | 
        
Read method for a synchronous MOST device
| filp | the file pointer of Linux, holds the private_data which is of type struct most_sync_file. | |
| buff | the userspace buffer that contains the destination | |
| count | the number of bytes allocated for buff  | |
| offp | used together with llseek system call, unused here | 
Definition at line 558 of file most-sync-m.c.
References most_sync_read(), and rtnrt_copy_to_user().
| static ssize_t most_sync_do_write | ( | struct file * | filp, | |
| const char __user * | buff, | |||
| size_t | count, | |||
| loff_t * | offp | |||
| ) |  [static] | 
        
Write method for a synchronous MOST device
| filp | the file pointer of Linux, holds the private_data which is of type struct most_sync_file. | |
| buff | the userspace buffer that contains the destination | |
| count | the number of bytes allocated for buff  | |
| offp | used together with llseek system call, unused here | 
Definition at line 632 of file most-sync-m.c.
References most_sync_write(), and rtnrt_copy_from_user().
| static int most_sync_do_ioctl | ( | struct inode * | inode, | |
| struct file * | filp, | |||
| unsigned int | cmd, | |||
| unsigned long | arg | |||
| ) |  [static] | 
        
Implements the ioctl method of a MOST Synchronous device.
| inode | the inode (unused here) | |
| filp | the file pointer of Linux, holds the private_data which is of type struct most_sync_file. | |
| cmd | the ioctl command value | |
| arg | the ioctl argument | 
Definition at line 650 of file most-sync-m.c.
References most_sync_do_setup_rx(), most_sync_do_setup_tx(), MOST_SYNC_IOCTL_MAGIC, MOST_SYNC_SETUP_RX, and MOST_SYNC_SETUP_TX.
| static int most_sync_do_setup_tx | ( | struct file * | filp, | |
| unsigned long | ioctl_arg | |||
| ) |  [inline, static] | 
        
See documentation of MOST_SYNC_SETUP_TX.
| filp | the Linux struct file | |
| ioctl_arg | the already checked ioctl argument | 
Definition at line 774 of file most-sync-m.c.
References most_sync_setup_tx().
Referenced by most_sync_do_ioctl().
| static int most_sync_do_setup_rx | ( | struct file * | filp, | |
| unsigned long | ioctl_arg | |||
| ) |  [inline, static] | 
        
See documentation of MOST_SYNC_SETUP_RX.
| filp | the Linux struct file | |
| ioctl_arg | the already checked ioctl argument | 
Definition at line 727 of file most-sync-m.c.
References most_sync_setup_rx().
Referenced by most_sync_do_ioctl().
| static void most_sync_stop_rx | ( | struct most_sync_file * | file | ) |  [inline, static] | 
        
Stops reception (of the whole device) See p. 33 of OS8604 specification
| [in,out] | file | the MOST synchronous file structure | 
Definition at line 356 of file most-sync-m.c.
References most_sync_stop_rx_common, and most_sync_file::sync_dev.
Referenced by most_sync_do_release(), and most_sync_setup_rx().
| static void most_sync_stop_tx | ( | struct most_sync_file * | file | ) |  [inline, static] | 
        
Stops transmission (of the whole device) See p. 33 of OS8604 specification
| [in,out] | file | the MOST synchronous file structure | 
Definition at line 367 of file most-sync-m.c.
References most_sync_stop_tx_common, and most_sync_file::sync_dev.
Referenced by most_sync_do_release(), and most_sync_setup_tx().
| ssize_t most_sync_read | ( | struct file * | filp, | |
| void * | buff, | |||
| size_t | count, | |||
| struct rtnrt_memcopy_desc * | copy | |||
| ) | 
Read implementation for a synchronous MOST device. Can be called from other kernel modules.
| filp | the file pointer of Linux, holds the private_data which is of type struct most_sync_file. | |
| buff | the userspace buffer that contains the destination | |
| count | the number of bytes allocated for buff  | |
| copy | how the memory must be copied | 
Definition at line 497 of file most-sync-m.c.
References most_sync_dev::config_lock_rx, most_sync_file::part_rx, PR, pr_sync_debug, most_sync_file::reader_index, return_value_if_fails, rtnrt_err, most_sync_dev::rx_queue, most_sync_file::rx_running, rxbuf_get(), rxbuf_is_empty(), most_sync_dev::sw_receive_buf, and most_sync_file::sync_dev.
Referenced by most_sync_do_read(), and snd_most_capture_thread().
| ssize_t most_sync_write | ( | struct file * | filp, | |
| void * | buff, | |||
| size_t | count, | |||
| struct rtnrt_memcopy_desc * | copy | |||
| ) | 
Write implementation for a synchronous MOST device. Can be called from other kernel modules.
| filp | the file pointer of Linux, holds the private_data which is of type struct most_sync_file. | |
| buff | the userspace buffer that contains the destination | |
| count | the number of bytes allocated for buff  | |
| copy | how the memory must be copied | 
Definition at line 570 of file most-sync-m.c.
References most_sync_dev::config_lock_tx, most_sync_file::part_tx, PR, pr_sync_debug, return_value_if_fails, rtnrt_err, most_sync_dev::sw_transmit_buf, most_sync_file::sync_dev, most_sync_dev::tx_queue, most_sync_file::tx_running, txbuf_is_full(), txbuf_put(), and most_sync_file::writer_index.
Referenced by most_sync_do_write(), and snd_most_playback_thread().
| int most_sync_setup_rx | ( | struct file * | filp, | |
| struct frame_part * | frame_part | |||
| ) | 
See documentation of MOST_SYNC_SETUP_RX. Can be called from other kernel modules.
| filp | the file pointer of Linux, holds the private_data which is of type struct most_sync_file. | |
| frame_part | the frame part for which the reader should be set up | 
Definition at line 699 of file most-sync-m.c.
References most_sync_dev::config_lock_rx, hw_rx_buffer_size, most_sync_setup_rx_common, most_sync_stop_rx(), most_sync_file::rx_running, sw_rx_buffer_size, and most_sync_file::sync_dev.
Referenced by most_sync_do_setup_rx(), and snd_most_capture_setup_sync_file().
| int most_sync_setup_tx | ( | struct file * | filp, | |
| struct frame_part * | frame_part | |||
| ) | 
See documentation of MOST_SYNC_SETUP_TX.
| filp | the file pointer of Linux, holds the private_data which is of type struct most_sync_file. | |
| frame_part | the frame part for which the writer should be set up | 
Definition at line 746 of file most-sync-m.c.
References most_sync_dev::config_lock_tx, hw_tx_buffer_size, most_sync_setup_tx_common, most_sync_stop_tx(), sw_tx_buffer_size, most_sync_file::sync_dev, and most_sync_file::tx_running.
Referenced by most_sync_do_setup_tx(), and snd_most_playback_setup_sync_file().
| static int __init most_sync_init | ( | void | ) |  [static] | 
        
This function gets called if the kernel loads this module.
Definition at line 794 of file most-sync-m.c.
References DRIVER_NAME, most_register_high_driver(), most_sync_high_driver, print_measuring_warning(), rtnrt_info, and version.
| static void __exit most_sync_exit | ( | void | ) |  [static] | 
        
This function gets called if the Kernel removes this module.
Definition at line 813 of file most-sync-m.c.
References DRIVER_NAME, most_deregister_high_driver(), most_sync_high_driver, rtnrt_info, and version.
char* version = "$Rev: 639 $" [static]           | 
        
Variable that holds the version.
Definition at line 62 of file most-sync-m.c.
| struct most_sync_dev* most_sync_devices[MOST_DEVICE_NUMBER] | 
Array for each device.
Definition at line 69 of file most-sync-m.c.
Referenced by most_sync_int_handler(), most_sync_probe(), and most_sync_remove().
| long sw_rx_buffer_size = STD_MOST_FRAMES_PER_SEC | 
Module parameter that holds the size of the software receive buffer in number of stored frame parts.
Definition at line 92 of file most-sync-m.c.
| long sw_tx_buffer_size = STD_MOST_FRAMES_PER_SEC | 
Module parameter that holds the size of the software transmit buffer in number of stored frame parts.
Definition at line 97 of file most-sync-m.c.
| long hw_rx_buffer_size = 44 | 
Module parameter that holds the size of the hardware receive buffer in number of stored frame parts.
Definition at line 102 of file most-sync-m.c.
| long hw_tx_buffer_size = 44 | 
Module parameter that holds the size of the hardware transmit buffer in number of stored frame parts.
Definition at line 107 of file most-sync-m.c.
struct file_operations most_sync_file_operations [static]           | 
        
Initial value:
 {
    .owner   = THIS_MODULE,
    .open    = most_sync_do_open,
    .ioctl   = most_sync_do_ioctl,
    .release = most_sync_do_release,
    .read    = most_sync_do_read,
    .write   = most_sync_do_write
}
Definition at line 135 of file most-sync-m.c.
struct most_high_driver most_sync_high_driver [static]           | 
        
Initial value:
 {
    .name               = "most-sync",
    .sema_list          = LIST_HEAD_INIT(most_sync_high_driver.sema_list),
    .spin_list          = LIST_HEAD_INIT(most_sync_high_driver.spin_list),
    .probe              = most_sync_probe,
    .remove             = most_sync_remove,
    .int_handler        = most_sync_int_handler,
    .interrupt_mask     = (IESTX | IESRX)
}
Definition at line 376 of file most-sync-m.c.
Referenced by most_sync_exit(), and most_sync_init().
 1.5.0