Go to the source code of this file.
Defines | |
| #define | DRIVER_NAME "most-alsa" | 
| #define | PR DRIVER_NAME ": " | 
| #define | MOST_SYNC_DEV_TEMPLATE "/dev/mostsync%d" | 
Functions | |
| static int | snd_most_playback_setup_sync_file (struct most_alsa_dev *alsa_dev, struct file **filp) | 
| static int | snd_most_playback_thread (void *data) | 
| static int | snd_most_playback_open (struct snd_pcm_substream *substream) | 
| static int | snd_most_playback_close (struct snd_pcm_substream *substream) | 
| static int | snd_most_playback_hw_params (struct snd_pcm_substream *substream, struct snd_pcm_hw_params *hw_params) | 
| static int | snd_most_playback_hw_free (struct snd_pcm_substream *substream) | 
| static int | snd_most_playback_prepare (struct snd_pcm_substream *substream) | 
| static int | snd_most_playback_trigger (struct snd_pcm_substream *substream, int cmd) | 
| static snd_pcm_uframes_t | snd_most_playback_pointer (struct snd_pcm_substream *substream) | 
| static int | snd_most_capture_setup_sync_file (struct most_alsa_dev *alsa_dev, struct file **filp) | 
| static int | snd_most_capture_thread (void *data) | 
| static int | snd_most_capture_open (struct snd_pcm_substream *substream) | 
| static int | snd_most_capture_close (struct snd_pcm_substream *substream) | 
| static int | snd_most_capture_hw_params (struct snd_pcm_substream *substream, struct snd_pcm_hw_params *hw_params) | 
| static int | snd_most_capture_hw_free (struct snd_pcm_substream *substream) | 
| static int | snd_most_capture_prepare (struct snd_pcm_substream *substream) | 
| static int | snd_most_capture_trigger (struct snd_pcm_substream *substream, int cmd) | 
| static snd_pcm_uframes_t | snd_most_capture_pointer (struct snd_pcm_substream *substream) | 
| static int __devinit | snd_most_new_pcm (struct most_alsa_dev *alsa_dev) | 
| static void | snd_most_free (struct snd_card *card) | 
| static int __devinit | snd_most_create (struct snd_card *card, struct most_dev *most_dev) | 
| static int | most_alsa_remove (struct most_dev *most_dev) | 
| static int | most_alsa_probe (struct most_dev *most_dev) | 
| static void | most_alsa_int_handler (struct most_dev *dev, unsigned int intstatus) | 
| static int __init | most_alsa_init (void) | 
| static void __exit | most_alsa_exit (void) | 
Variables | |
| static char * | version = "$Rev: 641 $" | 
| most_alsa_dev * | most_alsa_devices [MOST_DEVICE_NUMBER] | 
| static int | index [SNDRV_CARDS] = SNDRV_DEFAULT_IDX | 
| static char * | id [SNDRV_CARDS] = SNDRV_DEFAULT_STR | 
| static int | enable [SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP | 
| static int | playback_offset [SNDRV_CARDS] = { [0 ... SNDRV_CARDS-1] = 0 } | 
| static int | capture_offset [SNDRV_CARDS] = { [0 ... SNDRV_CARDS-1] = 0 } | 
| static struct snd_pcm_hardware | snd_most_playback_hw | 
| static struct snd_pcm_hardware | snd_most_capture_hw | 
| static struct snd_pcm_ops | snd_most_playback_ops | 
| static struct snd_pcm_ops | snd_most_capture_ops | 
| static struct most_high_driver | most_alsa_high_driver | 
Definition in file most-alsa.c.
| #define DRIVER_NAME "most-alsa" | 
The name of the driver.
Definition at line 51 of file most-alsa.c.
Referenced by most_alsa_exit(), most_alsa_init(), most_base_exit(), most_base_init(), most_nets_exit(), most_nets_init(), most_pci_exit(), most_pci_init(), most_sync_exit(), most_sync_init(), most_sync_rt_exit(), and most_sync_rt_init().
| #define PR DRIVER_NAME ": " | 
The prefix for printk outputs.
Definition at line 56 of file most-alsa.c.
Referenced by dma_allocate(), dma_deallocate(), get_license(), handle_interrupt(), intset(), ioctl_irq_reset(), ioctl_irq_set(), ioctl_read_int(), ioctl_read_regblock(), ioctl_read_register(), ioctl_write_regblock(), ioctl_write_register(), keyctrl_reset(), manage_usage(), most_alsa_exit(), most_alsa_init(), most_alsa_probe(), most_alsa_remove(), most_nets_open(), most_nets_release(), most_sync_do_open(), most_sync_do_release(), most_sync_int_handler(), most_sync_nrt_close(), most_sync_nrt_open(), most_sync_nrt_setup_rx(), most_sync_probe(), most_sync_read(), most_sync_remove(), most_sync_rt_interrupt_handler(), most_sync_rt_probe(), most_sync_rt_remove(), most_sync_write(), nets_probe(), nets_remove(), probe(), readreg_int(), revision(), rxbuf_alloc(), rxbuf_get(), rxbuf_put(), snd_most_capture_close(), snd_most_capture_hw_free(), snd_most_capture_hw_params(), snd_most_capture_open(), snd_most_capture_prepare(), snd_most_capture_setup_sync_file(), snd_most_capture_thread(), snd_most_capture_trigger(), snd_most_new_pcm(), snd_most_playback_close(), snd_most_playback_hw_free(), snd_most_playback_hw_params(), snd_most_playback_open(), snd_most_playback_prepare(), snd_most_playback_setup_sync_file(), snd_most_playback_thread(), snd_most_playback_trigger(), txbuf_alloc(), txbuf_get(), txbuf_put(), and writereg_int().
| #define MOST_SYNC_DEV_TEMPLATE "/dev/mostsync%d" | 
Template for a MOST synchronous file
Definition at line 61 of file most-alsa.c.
Referenced by snd_most_capture_setup_sync_file(), and snd_most_playback_setup_sync_file().
| static int snd_most_playback_setup_sync_file | ( | struct most_alsa_dev * | alsa_dev, | |
| struct file ** | filp | |||
| ) |  [static] | 
        
Sets up the MOST synchronous transmission for playback.
| [in] | alsa_dev | the MOST ALSA device | 
| [out] | filp | the struct file that is set to the newly created file pointer | 
Definition at line 147 of file most-alsa.c.
References most_alsa_dev::card, frame_part::count, most_alsa_dev::most_dev, MOST_DEV_CARDNUMBER, MOST_SYNC_DEV_TEMPLATE, most_sync_setup_tx(), frame_part::offset, playback_offset, PR, and rtnrt_warn.
Referenced by snd_most_playback_thread().
| static int snd_most_playback_thread | ( | void * | data | ) |  [static] | 
        
Kernel thread that read the audio data from the ALSA buffer and calls most_sync_write(). It gets triggered from the interrupt handler
| [in] | data | the struct most_alsa_dev | 
Definition at line 190 of file most-alsa.c.
References most_sync_write(), most_alsa_dev::p_buf_setup_sema, most_alsa_dev::p_buffer_mutex, most_alsa_dev::p_completion, most_alsa_dev::p_cur_period, most_alsa_dev::p_event, most_alsa_dev::p_silent, most_alsa_dev::p_substream, most_alsa_dev::p_thread_id, most_alsa_dev::p_thread_sema, PR, pr_alsa_debug, rtnrt_memmove(), rtnrt_warn, snd_most_playback_setup_sync_file(), and swap_bytes().
Referenced by snd_most_playback_open().
| static int snd_most_playback_open | ( | struct snd_pcm_substream * | substream | ) |  [static] | 
        
Opens the playback stream. Initialises the snd_most_playback_hw structure and assigns it to the hw element of the runtime. Creates the kernel thread.
| [in,out] | substream | the ALSA substream | 
Definition at line 334 of file most-alsa.c.
References hw_tx_buffer_size, most_alsa_dev::p_buf_setup_sema, most_alsa_dev::p_buffer_mutex, most_alsa_dev::p_completion, most_alsa_dev::p_cur_period, most_alsa_dev::p_event, most_alsa_dev::p_silent, most_alsa_dev::p_substream, most_alsa_dev::p_thread_id, most_alsa_dev::p_thread_sema, PR, pr_alsa_debug, rtnrt_warn, snd_most_playback_hw, snd_most_playback_thread(), and sw_tx_buffer_size.
| static int snd_most_playback_close | ( | struct snd_pcm_substream * | substream | ) |  [static] | 
        
Closes the substream. Kills the kernel thread.
| [in] | substream | the ALSA substream | 
Definition at line 393 of file most-alsa.c.
References most_alsa_dev::p_completion, most_alsa_dev::p_substream, most_alsa_dev::p_thread_id, PR, and pr_alsa_debug.
| static int snd_most_playback_hw_params | ( | struct snd_pcm_substream * | substream, | |
| struct snd_pcm_hw_params * | hw_params | |||
| ) |  [static] | 
        
Sets up the hardware. Triggers the mutex that signalises the kernel thread that the buffer has been setup initially.
| [in] | substream | the ALSA substream | 
| [in] | hw_params | the hardware parameters | 
Definition at line 417 of file most-alsa.c.
References most_alsa_dev::most_dev, most_alsa_dev::p_buf_setup_sema, most_alsa_dev::p_buffer_mutex, most_alsa_dev::p_silent, PR, pr_alsa_debug, and rtnrt_warn.
| static int snd_most_playback_hw_free | ( | struct snd_pcm_substream * | substream | ) |  [static] | 
        
Reverts the setup of the hardware. Frees the buffer.
| [in] | substream | the ALSA substream | 
Definition at line 453 of file most-alsa.c.
References most_alsa_dev::p_silent, PR, and pr_alsa_debug.
| static int snd_most_playback_prepare | ( | struct snd_pcm_substream * | substream | ) |  [static] | 
        
Prepare handler. Only modifies the position pointer for the buffer.
| [in] | substream | the ALSA substream | 
Definition at line 470 of file most-alsa.c.
References most_alsa_dev::p_cur_period, PR, and pr_alsa_debug.
| static int snd_most_playback_trigger | ( | struct snd_pcm_substream * | substream, | |
| int | cmd | |||
| ) |  [static] | 
        
Trigger handler. Gets called on start and stop. Modifies the playback_silent member of the struct most_alsa_dev.
| [in] | substream | the ALSA substream | 
| [in] | cmd | the command -- either SNDRV_PCM_TRIGGER_START or SNDRV_PCM_TRIGGER_START | 
Definition at line 501 of file most-alsa.c.
References most_alsa_dev::p_silent, PR, and pr_alsa_debug.
| static snd_pcm_uframes_t snd_most_playback_pointer | ( | struct snd_pcm_substream * | substream | ) |  [static] | 
        
Pointer handler. Returns the current position of the buffer access in the kernel thread.
| [in] | substream | the ALSA substream | 
Definition at line 526 of file most-alsa.c.
References most_alsa_dev::p_cur_period.
| static int snd_most_capture_setup_sync_file | ( | struct most_alsa_dev * | alsa_dev, | |
| struct file ** | filp | |||
| ) |  [static] | 
        
Sets up the MOST synchronous reception for capture.
| [in] | alsa_dev | the MOST ALSA device | 
| [out] | filp | the struct file that is set to the newly created file pointer | 
Definition at line 547 of file most-alsa.c.
References capture_offset, most_alsa_dev::card, frame_part::count, most_alsa_dev::most_dev, MOST_DEV_CARDNUMBER, MOST_SYNC_DEV_TEMPLATE, most_sync_setup_rx(), frame_part::offset, PR, and rtnrt_warn.
Referenced by snd_most_capture_thread().
| static int snd_most_capture_thread | ( | void * | data | ) |  [static] | 
        
Kernel thread that read the audio data from the MOST buffer by calling most_sync_read() and writes it into the ALSA buffer. It gets triggered from the interrupt handler
| [in] | data | the struct most_alsa_dev | 
Definition at line 590 of file most-alsa.c.
References most_alsa_dev::c_buf_setup_sema, most_alsa_dev::c_buffer_mutex, most_alsa_dev::c_completion, most_alsa_dev::c_cur_period, most_alsa_dev::c_silent, most_alsa_dev::c_substream, most_alsa_dev::c_thread_id, most_alsa_dev::c_thread_sema, most_sync_read(), PR, pr_alsa_debug, rtnrt_memmove(), snd_most_capture_setup_sync_file(), and swap_bytes().
Referenced by snd_most_capture_open().
| static int snd_most_capture_open | ( | struct snd_pcm_substream * | substream | ) |  [static] | 
        
Opens the capture stream. Initialises the snd_most_capture_hw structure and assigns it to the hw element of the runtime. Creates the kernel thread.
| [in,out] | substream | the ALSA substream | 
Definition at line 706 of file most-alsa.c.
References most_alsa_dev::c_buf_setup_sema, most_alsa_dev::c_buffer_mutex, most_alsa_dev::c_completion, most_alsa_dev::c_cur_period, most_alsa_dev::c_silent, most_alsa_dev::c_substream, most_alsa_dev::c_thread_id, most_alsa_dev::c_thread_sema, hw_tx_buffer_size, PR, pr_alsa_debug, rtnrt_warn, snd_most_capture_thread(), and sw_tx_buffer_size.
| static int snd_most_capture_close | ( | struct snd_pcm_substream * | substream | ) |  [static] | 
        
Closes the substream. Closes the MOST synchronous device.
| [in] | substream | the ALSA substream | 
Definition at line 764 of file most-alsa.c.
References most_alsa_dev::c_completion, most_alsa_dev::c_substream, most_alsa_dev::c_thread_id, PR, and pr_alsa_debug.
| static int snd_most_capture_hw_params | ( | struct snd_pcm_substream * | substream, | |
| struct snd_pcm_hw_params * | hw_params | |||
| ) |  [static] | 
        
Sets up the hardware. Triggers the mutex that signalises the kernel thread that the buffer has been setup initially.
| [in] | substream | the ALSA substream | 
| [in] | hw_params | the hardware parameters | 
Definition at line 788 of file most-alsa.c.
References most_alsa_dev::c_buf_setup_sema, most_alsa_dev::c_buffer_mutex, most_alsa_dev::c_silent, most_alsa_dev::most_dev, PR, pr_alsa_debug, and rtnrt_warn.
| static int snd_most_capture_hw_free | ( | struct snd_pcm_substream * | substream | ) |  [static] | 
        
Reverts the setup of the hardware. Frees the buffer.
| [in] | substream | the ALSA substream | 
Definition at line 824 of file most-alsa.c.
References most_alsa_dev::c_silent, PR, and pr_alsa_debug.
| static int snd_most_capture_prepare | ( | struct snd_pcm_substream * | substream | ) |  [static] | 
        
Prepare handler. Only modifies the position pointer for the buffer.
| [in] | substream | the ALSA substream | 
Definition at line 841 of file most-alsa.c.
References most_alsa_dev::c_cur_period, PR, and pr_alsa_debug.
| static int snd_most_capture_trigger | ( | struct snd_pcm_substream * | substream, | |
| int | cmd | |||
| ) |  [static] | 
        
Trigger handler. Gets called on start and stop. Modifies the capture_silent member of the struct most_alsa_dev.
| [in] | substream | the ALSA substream | 
| [in] | cmd | the command -- either SNDRV_PCM_TRIGGER_START or SNDRV_PCM_TRIGGER_START | 
Definition at line 872 of file most-alsa.c.
References most_alsa_dev::c_silent, PR, and pr_alsa_debug.
| static snd_pcm_uframes_t snd_most_capture_pointer | ( | struct snd_pcm_substream * | substream | ) |  [static] | 
        
Pointer handler. Returns the current position of the buffer access in the kernel thread.
| [in] | substream | the ALSA substream | 
Definition at line 897 of file most-alsa.c.
References most_alsa_dev::c_cur_period.
| static int __devinit snd_most_new_pcm | ( | struct most_alsa_dev * | alsa_dev | ) |  [static] | 
        
Sets up the PCM device in ALSA.
| [in,out] | alsa_dev | the most_alsa_dev structure | 
Definition at line 946 of file most-alsa.c.
References most_alsa_dev::card, hw_rx_buffer_size, hw_tx_buffer_size, most_alsa_dev::pcm, PR, and rtnrt_warn.
Referenced by most_alsa_probe().
| static void snd_most_free | ( | struct snd_card * | card | ) |  [static] | 
        
Deinitialises the struct most_alsa_dev elements
| card | the sound card | 
Definition at line 992 of file most-alsa.c.
Referenced by snd_most_create().
| static int __devinit snd_most_create | ( | struct snd_card * | card, | |
| struct most_dev * | most_dev | |||
| ) |  [static] | 
        
Creates the ALSA MOST Device and stores the data.
| card | the soundcard | |
| most_dev | the MOST device | 
Definition at line 1004 of file most-alsa.c.
References ALSA_DEV, most_alsa_dev::card, most_alsa_dev::most_dev, and snd_most_free().
Referenced by most_alsa_probe().
| static int most_alsa_remove | ( | struct most_dev * | most_dev | ) |  [static] | 
        
Gets called by the MOST Base driver when a MOST device was removed.
0 on success, an error code on failure Definition at line 1025 of file most-alsa.c.
References most_alsa_dev::card, most_alsa_devices, most_alsa_dev::most_dev, MOST_DEV_CARDNUMBER, PR, and pr_alsa_debug.
| static int most_alsa_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 1044 of file most-alsa.c.
References ALSA_DEV, most_dev::card_number, enable, index, most_alsa_devices, MOST_DEV_CARDNUMBER, PR, pr_alsa_debug, snd_most_create(), and snd_most_new_pcm().
| static void most_alsa_int_handler | ( | struct most_dev * | dev, | |
| unsigned int | intstatus | |||
| ) |  [static] | 
        
Interrupt handler. Wakes up the kernel thread. The reason why not the blocking facility of most_sync_write() is used is that the buffer is not filled entirely and the latency is kept small.
| [in] | dev | the MOST device | 
| [in] | intstatus | the interrupt status which is used to discriminiate between receive and transmit interrupts | 
Definition at line 1102 of file most-alsa.c.
References IESTX, most_alsa_devices, MOST_DEV_CARDNUMBER, most_alsa_dev::p_event, and most_alsa_dev::p_thread_id.
| static int __init most_alsa_init | ( | void | ) |  [static] | 
        
This function gets called if the kernel loads this module.
Definition at line 1139 of file most-alsa.c.
References DRIVER_NAME, most_alsa_high_driver, most_register_high_driver(), PR, rtnrt_info, and version.
| static void __exit most_alsa_exit | ( | void | ) |  [static] | 
        
This function gets called if the Kernel removes this module.
Definition at line 1157 of file most-alsa.c.
References DRIVER_NAME, most_alsa_high_driver, most_deregister_high_driver(), PR, rtnrt_info, and version.
char* version = "$Rev: 641 $" [static]           | 
        
Variable that holds the version.
Definition at line 70 of file most-alsa.c.
Referenced by most_alsa_exit(), most_alsa_init(), most_base_exit(), most_base_seq_start(), most_nets_exit(), most_nets_init(), most_pci_exit(), most_pci_init(), most_sync_exit(), most_sync_init(), most_sync_rt_exit(), and most_sync_rt_init().
| struct most_alsa_dev* most_alsa_devices[MOST_DEVICE_NUMBER] | 
Array for each device.
Definition at line 75 of file most-alsa.c.
Referenced by most_alsa_int_handler(), most_alsa_probe(), and most_alsa_remove().
int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX [static]           | 
        
Index value for the MOST sound device.
Definition at line 84 of file most-alsa.c.
Referenced by most_alsa_probe().
char* id[SNDRV_CARDS] = SNDRV_DEFAULT_STR [static]           | 
        
IDs for the MOST sound card.
Definition at line 89 of file most-alsa.c.
int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP [static]           | 
        
Whether the card should be enabled or not.
Definition at line 94 of file most-alsa.c.
Referenced by most_alsa_probe().
int playback_offset[SNDRV_CARDS] = { [0 ... SNDRV_CARDS-1] = 0 } [static]           | 
        
The offset in bytes for accessing the buffer for the synchronous transfer in transmit direction.
struct frame_part
Definition at line 103 of file most-alsa.c.
Referenced by snd_most_playback_setup_sync_file().
int capture_offset[SNDRV_CARDS] = { [0 ... SNDRV_CARDS-1] = 0 } [static]           | 
        
The offset in bytes for accessing the buffer for the synchronous transfer in receive direction.
struct frame_part
Definition at line 112 of file most-alsa.c.
Referenced by snd_most_capture_setup_sync_file().
struct snd_pcm_hardware snd_most_playback_hw [static]           | 
        
Initial value:
 {
    .info               = (SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_MMAP),
    .formats            = SNDRV_PCM_FMTBIT_S16_LE,
    .rates              = SNDRV_PCM_RATE_44100,
    .rate_min           = 44100,
    .rate_max           = 44100,
    .channels_min       = 2,
    .channels_max       = 2,
    .periods_min        = 2,
    .periods_max        = 8
}
Definition at line 314 of file most-alsa.c.
Referenced by snd_most_playback_open().
struct snd_pcm_hardware snd_most_capture_hw [static]           | 
        
Initial value:
 {
    .info               = (SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_MMAP),
    .formats            = SNDRV_PCM_FMTBIT_S16_LE,
    .rates              = SNDRV_PCM_RATE_44100,
    .rate_min           = 44100,
    .rate_max           = 44100,
    .channels_min       = 2,
    .channels_max       = 2,
    .periods_min        = 2,
    .periods_max        = 8
}
Definition at line 686 of file most-alsa.c.
struct snd_pcm_ops snd_most_playback_ops [static]           | 
        
Initial value:
 {
    .open       = snd_most_playback_open,
    .close      = snd_most_playback_close,
    .ioctl      = snd_pcm_lib_ioctl,
    .hw_params  = snd_most_playback_hw_params,
    .hw_free    = snd_most_playback_hw_free,
    .prepare    = snd_most_playback_prepare,
    .trigger    = snd_most_playback_trigger,
    .pointer    = snd_most_playback_pointer,
}
Definition at line 914 of file most-alsa.c.
struct snd_pcm_ops snd_most_capture_ops [static]           | 
        
Initial value:
 {
    .open       = snd_most_capture_open,
    .close      = snd_most_capture_close,
    .ioctl      = snd_pcm_lib_ioctl,
    .hw_params  = snd_most_capture_hw_params,
    .hw_free    = snd_most_capture_hw_free,
    .prepare    = snd_most_capture_prepare,
    .trigger    = snd_most_capture_trigger,
    .pointer    = snd_most_capture_pointer,
}
Definition at line 928 of file most-alsa.c.
struct most_high_driver most_alsa_high_driver [static]           | 
        
Initial value:
 {
    .name               = "most-alsa",
    .sema_list          = LIST_HEAD_INIT(most_alsa_high_driver.sema_list),
    .spin_list          = LIST_HEAD_INIT(most_alsa_high_driver.spin_list),
    .probe              = most_alsa_probe,
    .remove             = most_alsa_remove,
    .int_handler        = most_alsa_int_handler,
    .interrupt_mask     = (IESTX | IESRX)
}
Definition at line 1120 of file most-alsa.c.
Referenced by most_alsa_exit(), and most_alsa_init().
 1.5.0