Lines Matching +full:0 +full:x02020000
77 * Add 4 capture channels. (SPDIF only comes in on channel 0. )
164 { .serial = 0x10131102,
182 { .serial = 0x10121102,
188 { .serial = 0x10021102,
192 { .serial = 0x10051102,
196 { .serial = 0x10061102,
201 { .serial = 0x10071102,
211 { .serial = 0x100a1102,
215 .spi_dac = 0x4021 } ,
222 { .serial = 0x10111102,
226 .spi_dac = 0x4021 } ,
231 { .serial = 0x10041102,
234 .i2c_adc = 0,
235 .spi_dac = 0x0124
243 { .serial = 0x10091462,
248 { .serial = 0x10091102,
252 .spi_dac = 0x4021 } ,
257 { .serial = 0x1458a006,
266 { .serial = 0x30381297,
275 { .serial = 0x30411297,
279 { .serial = 0,
302 .fifo_size = 0,
311 #if 0 /* FIXME: looks like 44.1kHz capture causes noisy output on 48kHz */
328 .fifo_size = 0,
370 if (data > 0xffff) /* Only 16bit values allowed */ in snd_ca0106_spi_write()
372 tmp = snd_ca0106_ptr_read(emu, reg, 0); in snd_ca0106_spi_write()
373 reset = (tmp & ~0x3ffff) | 0x20000; /* Set xxx20000 */ in snd_ca0106_spi_write()
374 set = reset | 0x10000; /* Set xxx1xxxx */ in snd_ca0106_spi_write()
375 snd_ca0106_ptr_write(emu, reg, 0, reset | data); in snd_ca0106_spi_write()
376 tmp = snd_ca0106_ptr_read(emu, reg, 0); /* write post */ in snd_ca0106_spi_write()
377 snd_ca0106_ptr_write(emu, reg, 0, set | data); in snd_ca0106_spi_write()
379 /* Wait for status bit to return to 0 */ in snd_ca0106_spi_write()
380 for (n = 0; n < 100; n++) { in snd_ca0106_spi_write()
382 tmp = snd_ca0106_ptr_read(emu, reg, 0); in snd_ca0106_spi_write()
383 if (!(tmp & 0x10000)) { in snd_ca0106_spi_write()
384 result = 0; in snd_ca0106_spi_write()
390 snd_ca0106_ptr_write(emu, reg, 0, reset | data); in snd_ca0106_spi_write()
391 tmp = snd_ca0106_ptr_read(emu, reg, 0); /* Write post */ in snd_ca0106_spi_write()
392 return 0; in snd_ca0106_spi_write()
401 int timeout = 0; in snd_ca0106_i2c_write()
404 if ((reg > 0x7f) || (value > 0x1ff)) { in snd_ca0106_i2c_write()
411 dev_dbg(emu->card->dev, "I2C-write:reg=0x%x, value=0x%x\n", reg, value); in snd_ca0106_i2c_write()
414 /* snd_ca0106_ptr_write(emu, I2C_D0, 0, tmp); */ in snd_ca0106_i2c_write()
417 snd_ca0106_ptr_write(emu, I2C_D1, 0, tmp); in snd_ca0106_i2c_write()
419 for (retry = 0; retry < 10; retry++) { in snd_ca0106_i2c_write()
421 //tmp = snd_ca0106_ptr_read(emu, I2C_A, 0); in snd_ca0106_i2c_write()
423 tmp = 0; in snd_ca0106_i2c_write()
425 snd_ca0106_ptr_write(emu, I2C_A, 0, tmp); in snd_ca0106_i2c_write()
429 status = snd_ca0106_ptr_read(emu, I2C_A, 0); in snd_ca0106_i2c_write()
430 /*dev_dbg(emu->card->dev, "I2C:status=0x%x\n", status);*/ in snd_ca0106_i2c_write()
432 if ((status & I2C_A_ADC_START) == 0) in snd_ca0106_i2c_write()
439 if ((status & I2C_A_ADC_ABORT) == 0) in snd_ca0106_i2c_write()
448 return 0; in snd_ca0106_i2c_write()
484 0,
491 0,
499 snd_ca0106_ptr_write(chip, SPCS0 + idx, 0, in restore_spdif_bits()
510 return (details->spi_dac & 0xf000) >> (4 * 3); in snd_ca0106_channel_dac()
512 return (details->spi_dac & 0x0f00) >> (4 * 2); in snd_ca0106_channel_dac()
514 return (details->spi_dac & 0x00f0) >> (4 * 1); in snd_ca0106_channel_dac()
516 return (details->spi_dac & 0x000f) >> (4 * 0); in snd_ca0106_channel_dac()
521 return 0; in snd_ca0106_channel_dac()
539 if (snd_ca0106_spi_write(chip, chip->spi_dac_reg[reg]) != 0) in snd_ca0106_pcm_power_dac()
542 return 0; in snd_ca0106_pcm_power_dac()
579 if (err < 0) in snd_ca0106_pcm_open_playback_channel()
581 err = snd_pcm_hw_constraint_step(runtime, 0, SNDRV_PCM_HW_PARAM_PERIOD_BYTES, 64); in snd_ca0106_pcm_open_playback_channel()
582 if (err < 0) in snd_ca0106_pcm_open_playback_channel()
589 if (err < 0) in snd_ca0106_pcm_open_playback_channel()
595 return 0; in snd_ca0106_pcm_open_playback_channel()
604 chip->playback_channels[epcm->channel_id].use = 0; in snd_ca0106_pcm_close_playback()
611 err = snd_ca0106_pcm_power_dac(chip, epcm->channel_id, 0); in snd_ca0106_pcm_close_playback()
612 if (err < 0) in snd_ca0106_pcm_close_playback()
617 return 0; in snd_ca0106_pcm_close_playback()
674 if (err < 0) in snd_ca0106_pcm_open_capture_channel()
676 …//snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_PERIOD_SIZE, &hw_constraints_capture_p… in snd_ca0106_pcm_open_capture_channel()
677 err = snd_pcm_hw_constraint_step(runtime, 0, SNDRV_PCM_HW_PARAM_PERIOD_BYTES, 64); in snd_ca0106_pcm_open_capture_channel()
678 if (err < 0) in snd_ca0106_pcm_open_capture_channel()
680 return 0; in snd_ca0106_pcm_open_capture_channel()
689 chip->capture_channels[epcm->channel_id].use = 0; in snd_ca0106_pcm_close_capture()
691 return 0; in snd_ca0106_pcm_close_capture()
696 return snd_ca0106_pcm_open_capture_channel(substream, 0); in snd_ca0106_pcm_open_0_capture()
724 u32 hcfg_set = 0x00000000; in snd_ca0106_pcm_prepare_playback()
726 u32 reg40_mask = 0x30000 << (channel<<1); in snd_ca0106_pcm_prepare_playback()
727 u32 reg40_set = 0; in snd_ca0106_pcm_prepare_playback()
730 …u32 reg71_mask = 0x03030000 ; /* Global. Set SPDIF rate. We only support 44100 to spdif, not to DA… in snd_ca0106_pcm_prepare_playback()
731 u32 reg71_set = 0; in snd_ca0106_pcm_prepare_playback()
735 #if 0 /* debug */ in snd_ca0106_pcm_prepare_playback()
737 "prepare:channel_number=%d, rate=%d, format=0x%x, " in snd_ca0106_pcm_prepare_playback()
756 reg40_set = 0x10000 << (channel<<1); in snd_ca0106_pcm_prepare_playback()
757 reg71_set = 0x01010000; in snd_ca0106_pcm_prepare_playback()
760 reg40_set = 0; in snd_ca0106_pcm_prepare_playback()
761 reg71_set = 0; in snd_ca0106_pcm_prepare_playback()
764 reg40_set = 0x20000 << (channel<<1); in snd_ca0106_pcm_prepare_playback()
765 reg71_set = 0x02020000; in snd_ca0106_pcm_prepare_playback()
768 reg40_set = 0x30000 << (channel<<1); in snd_ca0106_pcm_prepare_playback()
769 reg71_set = 0x03030000; in snd_ca0106_pcm_prepare_playback()
772 reg40_set = 0; in snd_ca0106_pcm_prepare_playback()
773 reg71_set = 0; in snd_ca0106_pcm_prepare_playback()
780 hcfg_set = 0; in snd_ca0106_pcm_prepare_playback()
786 hcfg_set = 0; in snd_ca0106_pcm_prepare_playback()
792 reg40 = snd_ca0106_ptr_read(emu, 0x40, 0); in snd_ca0106_pcm_prepare_playback()
794 snd_ca0106_ptr_write(emu, 0x40, 0, reg40); in snd_ca0106_pcm_prepare_playback()
795 reg71 = snd_ca0106_ptr_read(emu, 0x71, 0); in snd_ca0106_pcm_prepare_playback()
797 snd_ca0106_ptr_write(emu, 0x71, 0, reg71); in snd_ca0106_pcm_prepare_playback()
800 for(i=0; i < runtime->periods; i++) { in snd_ca0106_pcm_prepare_playback()
807 snd_ca0106_ptr_write(emu, PLAYBACK_LIST_PTR, channel, 0); in snd_ca0106_pcm_prepare_playback()
810 /* FIXME test what 0 bytes does. */ in snd_ca0106_pcm_prepare_playback()
811 snd_ca0106_ptr_write(emu, PLAYBACK_PERIOD_SIZE, channel, 0); // buffer size in bytes in snd_ca0106_pcm_prepare_playback()
812 snd_ca0106_ptr_write(emu, PLAYBACK_POINTER, channel, 0); in snd_ca0106_pcm_prepare_playback()
813 snd_ca0106_ptr_write(emu, 0x07, channel, 0x0); in snd_ca0106_pcm_prepare_playback()
814 snd_ca0106_ptr_write(emu, 0x08, channel, 0); in snd_ca0106_pcm_prepare_playback()
815 snd_ca0106_ptr_write(emu, PLAYBACK_MUTE, 0x0, 0x0); /* Unmute output */ in snd_ca0106_pcm_prepare_playback()
816 #if 0 in snd_ca0106_pcm_prepare_playback()
817 snd_ca0106_ptr_write(emu, SPCS0, 0, in snd_ca0106_pcm_prepare_playback()
820 SPCS_GENERATIONSTATUS | 0x00001200 | in snd_ca0106_pcm_prepare_playback()
821 0x00000000 | SPCS_EMPHASIS_NONE | SPCS_COPYRIGHT ); in snd_ca0106_pcm_prepare_playback()
824 return 0; in snd_ca0106_pcm_prepare_playback()
835 u32 hcfg_set = 0x00000000; in snd_ca0106_pcm_prepare_capture()
837 u32 over_sampling=0x2; in snd_ca0106_pcm_prepare_capture()
838 u32 reg71_mask = 0x0000c000 ; /* Global. Set ADC rate. */ in snd_ca0106_pcm_prepare_capture()
839 u32 reg71_set = 0; in snd_ca0106_pcm_prepare_capture()
842 #if 0 /* debug */ in snd_ca0106_pcm_prepare_capture()
844 "prepare:channel_number=%d, rate=%d, format=0x%x, " in snd_ca0106_pcm_prepare_capture()
861 reg71_set = 0x00004000; in snd_ca0106_pcm_prepare_capture()
864 reg71_set = 0; in snd_ca0106_pcm_prepare_capture()
867 reg71_set = 0x00008000; in snd_ca0106_pcm_prepare_capture()
868 over_sampling=0xa; in snd_ca0106_pcm_prepare_capture()
871 reg71_set = 0x0000c000; in snd_ca0106_pcm_prepare_capture()
872 over_sampling=0xa; in snd_ca0106_pcm_prepare_capture()
875 reg71_set = 0; in snd_ca0106_pcm_prepare_capture()
882 hcfg_set = 0; in snd_ca0106_pcm_prepare_capture()
888 hcfg_set = 0; in snd_ca0106_pcm_prepare_capture()
894 reg71 = snd_ca0106_ptr_read(emu, 0x71, 0); in snd_ca0106_pcm_prepare_capture()
896 snd_ca0106_ptr_write(emu, 0x71, 0, reg71); in snd_ca0106_pcm_prepare_capture()
904 "prepare:channel_number=%d, rate=%d, format=0x%x, channels=%d, " in snd_ca0106_pcm_prepare_capture()
910 snd_ca0106_ptr_write(emu, 0x13, channel, 0); in snd_ca0106_pcm_prepare_capture()
913 snd_ca0106_ptr_write(emu, CAPTURE_POINTER, channel, 0); in snd_ca0106_pcm_prepare_capture()
915 return 0; in snd_ca0106_pcm_prepare_capture()
926 int result = 0; in snd_ca0106_pcm_trigger_playback()
928 u32 basic = 0; in snd_ca0106_pcm_trigger_playback()
929 u32 extended = 0; in snd_ca0106_pcm_trigger_playback()
931 int running = 0; in snd_ca0106_pcm_trigger_playback()
941 running = 0; in snd_ca0106_pcm_trigger_playback()
953 basic |= (0x1 << channel); in snd_ca0106_pcm_trigger_playback()
954 extended |= (0x10 << channel); in snd_ca0106_pcm_trigger_playback()
957 /* dev_dbg(emu->card->dev, "basic=0x%x, extended=0x%x\n",basic, extended); */ in snd_ca0106_pcm_trigger_playback()
962 bits = snd_ca0106_ptr_read(emu, EXTENDED_INT_MASK, 0); in snd_ca0106_pcm_trigger_playback()
964 snd_ca0106_ptr_write(emu, EXTENDED_INT_MASK, 0, bits); in snd_ca0106_pcm_trigger_playback()
965 bits = snd_ca0106_ptr_read(emu, BASIC_INTERRUPT, 0); in snd_ca0106_pcm_trigger_playback()
967 snd_ca0106_ptr_write(emu, BASIC_INTERRUPT, 0, bits); in snd_ca0106_pcm_trigger_playback()
971 bits = snd_ca0106_ptr_read(emu, BASIC_INTERRUPT, 0); in snd_ca0106_pcm_trigger_playback()
973 snd_ca0106_ptr_write(emu, BASIC_INTERRUPT, 0, bits); in snd_ca0106_pcm_trigger_playback()
974 bits = snd_ca0106_ptr_read(emu, EXTENDED_INT_MASK, 0); in snd_ca0106_pcm_trigger_playback()
976 snd_ca0106_ptr_write(emu, EXTENDED_INT_MASK, 0, bits); in snd_ca0106_pcm_trigger_playback()
993 int result = 0; in snd_ca0106_pcm_trigger_capture()
997 …snd_ca0106_ptr_write(emu, EXTENDED_INT_MASK, 0, snd_ca0106_ptr_read(emu, EXTENDED_INT_MASK, 0) | (… in snd_ca0106_pcm_trigger_capture()
998 …snd_ca0106_ptr_write(emu, BASIC_INTERRUPT, 0, snd_ca0106_ptr_read(emu, BASIC_INTERRUPT, 0)|(0x100<… in snd_ca0106_pcm_trigger_capture()
1002 …snd_ca0106_ptr_write(emu, BASIC_INTERRUPT, 0, snd_ca0106_ptr_read(emu, BASIC_INTERRUPT, 0) & ~(0x1… in snd_ca0106_pcm_trigger_capture()
1003 …snd_ca0106_ptr_write(emu, EXTENDED_INT_MASK, 0, snd_ca0106_ptr_read(emu, EXTENDED_INT_MASK, 0) & ~… in snd_ca0106_pcm_trigger_capture()
1004 epcm->running = 0; in snd_ca0106_pcm_trigger_capture()
1025 return 0; in snd_ca0106_pcm_pointer_playback()
1040 return 0; in snd_ca0106_pcm_pointer_playback()
1050 snd_pcm_uframes_t ptr, ptr1, ptr2 = 0; in snd_ca0106_pcm_pointer_capture()
1054 return 0; in snd_ca0106_pcm_pointer_capture()
1062 dev_dbg(emu->card->dev, "ptr1 = 0x%lx, ptr2=0x%lx, ptr=0x%lx, " in snd_ca0106_pcm_pointer_capture()
1063 "buffer_size = 0x%x, period_size = 0x%x, bits=%d, rate=%d\n", in snd_ca0106_pcm_pointer_capture()
1173 err = snd_ac97_bus(chip->card, 0, &ops, NULL, &pbus); in snd_ca0106_ac97()
1174 if (err < 0) in snd_ca0106_ac97()
1178 memset(&ac97, 0, sizeof(ac97)); in snd_ca0106_ac97()
1207 stat76 = snd_ca0106_ptr_read(chip, EXTENDED_INT, 0); in snd_ca0106_interrupt()
1209 dev_dbg(emu->card->dev, "interrupt status = 0x%08x, stat76=0x%08x\n", in snd_ca0106_interrupt()
1211 dev_dbg(emu->card->dev, "ptr=0x%08x\n", in snd_ca0106_interrupt()
1212 snd_ca0106_ptr_read(chip, PLAYBACK_POINTER, 0)); in snd_ca0106_interrupt()
1214 mask = 0x11; /* 0x1 for one half, 0x10 for the other half period. */ in snd_ca0106_interrupt()
1215 for(i = 0; i < 4; i++) { in snd_ca0106_interrupt()
1230 mask = 0x110000; /* 0x1 for one half, 0x10 for the other half period. */ in snd_ca0106_interrupt()
1231 for(i = 0; i < 4; i++) { in snd_ca0106_interrupt()
1247 snd_ca0106_ptr_write(chip, EXTENDED_INT, 0, stat76); in snd_ca0106_interrupt()
1289 if (err < 0) in snd_ca0106_pcm()
1295 case 0: in snd_ca0106_pcm()
1317 pcm->info_flags = 0; in snd_ca0106_pcm()
1338 if (err < 0) in snd_ca0106_pcm()
1343 return 0; in snd_ca0106_pcm()
1348 SPI_REG(SPI_LDA1_REG, SPI_DA_BIT_0dB), /* 0dB dig. attenuation */
1357 SPI_REG(9, 0x00),
1359 SPI_REG(12, 0x00),
1366 { 0x17, 0x00 }, /* Reset */
1367 { 0x07, 0x00 }, /* Timeout */
1368 { 0x0b, 0x22 }, /* Interface control */
1369 { 0x0c, 0x22 }, /* Master mode control */
1370 { 0x0d, 0x08 }, /* Powerdown control */
1371 { 0x0e, 0xcf }, /* Attenuation Left 0x01 = -103dB, 0xff = 24dB */
1372 { 0x0f, 0xcf }, /* Attenuation Right 0.5dB steps */
1373 { 0x10, 0x7b }, /* ALC Control 1 */
1374 { 0x11, 0x00 }, /* ALC Control 2 */
1375 { 0x12, 0x32 }, /* ALC Control 3 */
1376 { 0x13, 0x00 }, /* Noise gate control */
1377 { 0x14, 0xa6 }, /* Limiter control */
1378 { 0x15, ADC_MUX_LINEIN }, /* ADC Mixer control */
1386 outl(0, chip->port + CA0106_INTE); in ca0106_init_chip()
1389 * Init to 0x02109204 : in ca0106_init_chip()
1390 * Clock accuracy = 0 (1000ppm) in ca0106_init_chip()
1393 * Source Number = 0 (Unspecified) in ca0106_init_chip()
1396 * Mode = 0 (Mode 0) in ca0106_init_chip()
1397 * Emphasis = 0 (None) in ca0106_init_chip()
1399 * AN = 0 (Audio data) in ca0106_init_chip()
1400 * P = 0 (Consumer) in ca0106_init_chip()
1405 SPCS_GENERATIONSTATUS | 0x00001200 | in ca0106_init_chip()
1406 0x00000000 | SPCS_EMPHASIS_NONE | SPCS_COPYRIGHT; in ca0106_init_chip()
1408 chip->spdif_str_bits[0] = chip->spdif_bits[0] = def_bits; in ca0106_init_chip()
1414 snd_ca0106_ptr_write(chip, SPCS1, 0, chip->spdif_str_bits[1]); in ca0106_init_chip()
1415 snd_ca0106_ptr_write(chip, SPCS0, 0, chip->spdif_str_bits[0]); in ca0106_init_chip()
1416 snd_ca0106_ptr_write(chip, SPCS2, 0, chip->spdif_str_bits[2]); in ca0106_init_chip()
1417 snd_ca0106_ptr_write(chip, SPCS3, 0, chip->spdif_str_bits[3]); in ca0106_init_chip()
1419 snd_ca0106_ptr_write(chip, PLAYBACK_MUTE, 0, 0x00fc0000); in ca0106_init_chip()
1420 snd_ca0106_ptr_write(chip, CAPTURE_MUTE, 0, 0x00fc0000); in ca0106_init_chip()
1422 /* Write 0x8000 to AC97_REC_GAIN to mute it. */ in ca0106_init_chip()
1424 outw(0x8000, chip->port + CA0106_AC97DATA); in ca0106_init_chip()
1425 #if 0 /* FIXME: what are these? */ in ca0106_init_chip()
1426 snd_ca0106_ptr_write(chip, SPCS0, 0, 0x2108006); in ca0106_init_chip()
1427 snd_ca0106_ptr_write(chip, 0x42, 0, 0x2108006); in ca0106_init_chip()
1428 snd_ca0106_ptr_write(chip, 0x43, 0, 0x2108006); in ca0106_init_chip()
1429 snd_ca0106_ptr_write(chip, 0x44, 0, 0x2108006); in ca0106_init_chip()
1433 /* snd_ca0106_ptr_write(chip, SPDIF_SELECT2, 0, 0xf0f003f); */ in ca0106_init_chip()
1436 snd_ca0106_ptr_write(chip, SPDIF_SELECT1, 0, 0xf); in ca0106_init_chip()
1437 /* 0x0b000000 for digital, 0x000b0000 for analog, from win2000 drivers. in ca0106_init_chip()
1438 * Use 0x000f0000 for surround71 in ca0106_init_chip()
1440 snd_ca0106_ptr_write(chip, SPDIF_SELECT2, 0, 0x000f0000); in ca0106_init_chip()
1442 chip->spdif_enable = 0; /* Set digital SPDIF output off */ in ca0106_init_chip()
1443 /*snd_ca0106_ptr_write(chip, 0x45, 0, 0);*/ /* Analogue out */ in ca0106_init_chip()
1444 /*snd_ca0106_ptr_write(chip, 0x45, 0, 0xf00);*/ /* Digital out */ in ca0106_init_chip()
1446 /* goes to 0x40c80000 when doing SPDIF IN/OUT */ in ca0106_init_chip()
1447 snd_ca0106_ptr_write(chip, CAPTURE_CONTROL, 0, 0x40c81000); in ca0106_init_chip()
1451 snd_ca0106_ptr_write(chip, CAPTURE_CONTROL, 1, 0xffffffff); in ca0106_init_chip()
1453 snd_ca0106_ptr_write(chip, CAPTURE_CONTROL, 2, 0x30300000); in ca0106_init_chip()
1454 /* SPDIF IN Volume, 0x70 = (vol & 0x3f) | 0x40 */ in ca0106_init_chip()
1455 snd_ca0106_ptr_write(chip, CAPTURE_CONTROL, 3, 0x00700000); in ca0106_init_chip()
1457 snd_ca0106_ptr_write(chip, PLAYBACK_ROUTING1, 0, 0x32765410); in ca0106_init_chip()
1458 snd_ca0106_ptr_write(chip, PLAYBACK_ROUTING2, 0, 0x76767676); in ca0106_init_chip()
1459 snd_ca0106_ptr_write(chip, CAPTURE_ROUTING1, 0, 0x32765410); in ca0106_init_chip()
1460 snd_ca0106_ptr_write(chip, CAPTURE_ROUTING2, 0, 0x76767676); in ca0106_init_chip()
1462 for (ch = 0; ch < 4; ch++) { in ca0106_init_chip()
1464 snd_ca0106_ptr_write(chip, CAPTURE_VOLUME1, ch, 0x30303030); in ca0106_init_chip()
1465 snd_ca0106_ptr_write(chip, CAPTURE_VOLUME2, ch, 0x30303030); in ca0106_init_chip()
1466 #if 0 /* Mute */ in ca0106_init_chip()
1467 snd_ca0106_ptr_write(chip, PLAYBACK_VOLUME1, ch, 0x40404040); in ca0106_init_chip()
1468 snd_ca0106_ptr_write(chip, PLAYBACK_VOLUME2, ch, 0x40404040); in ca0106_init_chip()
1469 snd_ca0106_ptr_write(chip, PLAYBACK_VOLUME1, ch, 0xffffffff); in ca0106_init_chip()
1470 snd_ca0106_ptr_write(chip, PLAYBACK_VOLUME2, ch, 0xffffffff); in ca0106_init_chip()
1475 snd_ca0106_ptr_write(chip, CAPTURE_SOURCE, 0x0, 0x333300e4); in ca0106_init_chip()
1481 snd_ca0106_ptr_write(chip, CAPTURE_SOURCE, 0x0, 0x444400e4); in ca0106_init_chip()
1487 snd_ca0106_ptr_write(chip, CAPTURE_SOURCE, 0x0, 0x333300e4); in ca0106_init_chip()
1498 outl(0x0, chip->port + CA0106_GPIO); in ca0106_init_chip()
1499 /* outl(0x00f0e000, chip->port + CA0106_GPIO); */ /* Analog */ in ca0106_init_chip()
1500 outl(0x005f5301, chip->port + CA0106_GPIO); /* Analog */ in ca0106_init_chip()
1506 outl(0x0, chip->port + CA0106_GPIO); in ca0106_init_chip()
1507 /* outl(0x00f0e000, chip->port + CA0106_GPIO); */ /* Analog */ in ca0106_init_chip()
1508 outl(0x005f5301, chip->port + CA0106_GPIO); /* Analog */ in ca0106_init_chip()
1510 outl(0x0, chip->port + CA0106_GPIO); in ca0106_init_chip()
1511 outl(0x005f03a3, chip->port + CA0106_GPIO); /* Analog */ in ca0106_init_chip()
1512 /* outl(0x005f02a2, chip->port + CA0106_GPIO); */ /* SPDIF */ in ca0106_init_chip()
1514 snd_ca0106_intr_enable(chip, 0x105); /* Win2000 uses 0x1e0 */ in ca0106_init_chip()
1517 /* 0x1000 causes AC3 to fails. Maybe it effects 24 bit output. */ in ca0106_init_chip()
1518 /* outl(0x00001409, chip->port + CA0106_HCFG); */ in ca0106_init_chip()
1519 /* outl(0x00000009, chip->port + CA0106_HCFG); */ in ca0106_init_chip()
1528 /* dev_dbg(emu->card->dev, "I2C:array size=0x%x\n", size); */ in ca0106_init_chip()
1529 for (n = 0; n < size; n++) in ca0106_init_chip()
1530 snd_ca0106_i2c_write(chip, i2c_adc_init[n][0], in ca0106_init_chip()
1532 for (n = 0; n < 4; n++) { in ca0106_init_chip()
1533 chip->i2c_capture_volume[n][0] = 0xcf; in ca0106_init_chip()
1534 chip->i2c_capture_volume[n][1] = 0xcf; in ca0106_init_chip()
1546 for (n = 0; n < size; n++) { in ca0106_init_chip()
1562 snd_ca0106_ptr_write(chip, BASIC_INTERRUPT, 0, 0); in ca0106_stop_chip()
1563 outl(0, chip->port + CA0106_INTE); in ca0106_stop_chip()
1564 snd_ca0106_ptr_write(chip, EXTENDED_INT_MASK, 0, 0); in ca0106_stop_chip()
1568 outl(0, chip->port + CA0106_HCFG); in ca0106_stop_chip()
1583 if (err < 0) in snd_ca0106_create()
1597 if (err < 0) in snd_ca0106_create()
1599 chip->port = pci_resource_start(pci, 0); in snd_ca0106_create()
1633 "subsystem=0x%x. Forced to subsystem=0x%x\n", in snd_ca0106_create()
1637 sprintf(card->longname, "%s at 0x%lx irq %i", in snd_ca0106_create()
1640 ca0106_init_chip(chip, 0); in snd_ca0106_create()
1641 return 0; in snd_ca0106_create()
1658 midi->port + idx, 0); in ca0106_midi_read()
1663 snd_ca0106_ptr_write((struct snd_ca0106 *)(midi->dev_id), midi->port + idx, 0, data); in ca0106_midi_write()
1720 err = ca_midi_init(chip, midi, 0, name); in snd_ca0106_midi()
1721 if (err < 0) in snd_ca0106_midi()
1724 return 0; in snd_ca0106_midi()
1745 if (err < 0) in __snd_ca0106_probe()
1750 if (err < 0) in __snd_ca0106_probe()
1754 for (i = 0; i < 4; i++) { in __snd_ca0106_probe()
1756 if (err < 0) in __snd_ca0106_probe()
1763 if (err < 0) in __snd_ca0106_probe()
1767 if (err < 0) in __snd_ca0106_probe()
1772 if (err < 0) in __snd_ca0106_probe()
1781 if (err < 0) in __snd_ca0106_probe()
1786 return 0; in __snd_ca0106_probe()
1807 return 0; in snd_ca0106_suspend()
1822 for (i = 0; i < ARRAY_SIZE(chip->spi_dac_reg); i++) in snd_ca0106_resume()
1827 return 0; in snd_ca0106_resume()
1838 { PCI_VDEVICE(CREATIVE, 0x0007), 0 }, /* Audigy LS or Live 24bit */
1839 { 0, }