コード例 #1
0
ファイル: opl3sa2.c プロジェクト: liexusong/Linux-2.4.16
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);
	}
}
コード例 #2
0
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;
}
コード例 #3
0
ファイル: opl3sa2.c プロジェクト: dmgerman/original
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);
		}
	}
}