static void __init attach_opl3sa2_mixer(struct address_info *hw_config, int card) { struct mixer_operations* mixer_operations; opl3sa2_mixerdata* devc; /* Install master mixer */ if(chipset[card] == CHIPSET_OPL3SA3) { mixer_operations = &opl3sa3_mixer_operations; } else { mixer_operations = &opl3sa2_mixer_operations; } if((devc = &opl3sa2_data[card])) { devc->cfg_port = hw_config->io_base; opl3sa2_mixer[card] = sound_install_mixer(MIXER_DRIVER_VERSION, mixer_operations->name, mixer_operations, sizeof(struct mixer_operations), devc); if(opl3sa2_mixer[card] < 0) { printk(KERN_ERR "opl3sa2: Could not install %s master mixer\n", mixer_operations->name); } else opl3sa2_mixer_reset(devc, card); } }
void attach_awacs( struct address_info *hw_config ) { int audio_flags = 0; int format_mask = AFMT_S16_LE; awacs_devc_t *devc; struct audio_driver *driver = &awacs_audio_driver; #if 0 printk( "attach_awacs() - %s %d\n\r", __FILE__, __LINE__ ); #endif devc = (awacs_devc_t *) vmalloc( sizeof(awacs_devc_t) ); memset( devc, 0, sizeof(awacs_devc_t) ); if ((devc->dev = sound_install_audiodrv (AUDIO_DRIVER_VERSION, hw_config->name, driver, sizeof (struct audio_driver), audio_flags, format_mask, devc, -1, -1)) < 0) { printk( "sound_install_audiodrv - rc = %d - %s %d\n\r", devc->dev, __FILE__, __LINE__ ); return; } if ( (devc->mixer_dev = sound_install_mixer( MIXER_DRIVER_VERSION, hw_config->name, (struct mixer_operations *)&awacs_mixer_driver, sizeof(struct mixer_operations), devc)) < 0 ) { printk( "sound_install_mixer - rc = %d - %s %d\n\r", devc->dev, __FILE__, __LINE__ ); return; } awacs_devs[awacs_num_devs].dev = devc->dev; awacs_devs[awacs_num_devs].mixer = devc->mixer_dev; awacs_devs[awacs_num_devs].devc = devc; awacs_num_devs++; devc->audio_bits = 16; devc->audio_channels = 2; devc->audio_speed = 22050; memset( devc->mach_dev_name, sizeof(devc->mach_dev_name), 0 ); strcpy( devc->mach_dev_name, hw_config->name ); return; }
static void __init attach_opl3sa2_mss(struct address_info *hw_config) { char mixer_name[64]; /* Create pretty names for mixer stuff */ strncpy(mixer_name, chipset_name, 16); strncat(mixer_name, " and AD1848 (through MSS)", 64); strncpy(opl3sa2_mixer_operations.name, chipset_name, 16); strncat(opl3sa2_mixer_operations.name, "-AD1848", 64); /* Install master mixer */ devc->ad_mixer_dev = -1; if((opl3sa2_mixer = sound_install_mixer(MIXER_DRIVER_VERSION, mixer_name, &opl3sa2_mixer_operations, sizeof(struct mixer_operations), devc)) < 0) { printk(KERN_ERR "Could not install %s master mixer\n", chipset_name); return; } opl3sa2_mixer_reset(devc); attach_ms_sound(hw_config, THIS_MODULE); /* Slot 0 */ if(hw_config->slots[0] != -1) { /* Did the MSS driver install? */ if(num_mixers == (opl3sa2_mixer + 2)) { /* The MSS mixer is installed */ devc->ad_mixer_dev = audio_devs[hw_config->slots[0]]->mixer_dev; /* Reroute mixers appropiately */ AD1848_REROUTE(SOUND_MIXER_LINE1, SOUND_MIXER_CD); AD1848_REROUTE(SOUND_MIXER_LINE2, SOUND_MIXER_SYNTH); AD1848_REROUTE(SOUND_MIXER_LINE3, SOUND_MIXER_LINE); } } }