Lines Matching +full:0 +full:x1801

82  *    some custom data starting at 0x80. What kind of config settings
90 * - options snd-seq seq_default_timer_class=2 seq_default_timer_sclass=0
91 * seq_default_timer_card=0 seq_client_load=1 seq_default_timer_device=0
92 * seq_default_timer_subdevice=0 seq_default_timer_resolution=1000000
93 * - "timidity -iAv -B2,8 -Os -EFreverb=0"
94 * - "pmidi -p 128:0 jazz.mid"
105 * where a:b is the client number plus 0 usually, as given by aconnect above.
118 * - no DMA crackling on SiS735: 0x50DC/0x1801/16
119 * - unknown performance: 0x50DC/0x1801/10
217 "dump joy200 0x200 8", "dump mpu388 0x388 4", "dump joy 0xb400 8",
218 "dump codec00 0xa800 32", "dump mixer 0xb800 64", "dump synth 0xbc00 8",
226 static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */
244 AZF_CODEC_PLAYBACK = 0,
262 unsigned long ctrl_io; /* usually 0xb000, size 128 */
263 unsigned long game_io; /* usually 0xb400, size 8 */
264 unsigned long mpu_io; /* usually 0xb800, size 4 */
265 unsigned long opl3_io; /* usually 0xbc00, size 8 */
266 unsigned long mixer_io; /* usually 0xc000, size 64 */
292 /* register 0x6a is write-only, thus need to remember setting.
310 { 0x122D, 0x50DC, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* PCI168/3328 */
311 { 0x122D, 0x80DA, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* 3328 */
312 { 0, }
333 return 0; in snd_azf3328_io_reg_setb()
453 #define AZF_MUTE_BIT 0x80
502 snd_azf3328_mixer_outw(chip, IDX_MIXER_RESET, 0x0000); in snd_azf3328_mixer_reset()
513 "missing %s emulation for AC97 register 0x%02x!\n", in snd_azf3328_mixer_ac97_map_unsupported()
521 #define AZF_REG_MASK 0x3f
522 #define AZF_AC97_REG_UNSUPPORTED 0x8000
523 #define AZF_AC97_REG_REAL_IO_READ 0x4000
524 #define AZF_AC97_REG_REAL_IO_WRITE 0x2000
527 #define AZF_AC97_REG_EMU_IO_READ 0x0400
528 #define AZF_AC97_REG_EMU_IO_WRITE 0x0200
613 /* mask 0x7c00 is
635 * (better don't use 0x68 since there's a PCI368 as well).
638 azf_emulated_ac97_vendor_id = 0x415a5401;
645 unsigned short reg_val = 0; in snd_azf3328_mixer_ac97_read()
679 reg_val |= 0; in snd_azf3328_mixer_ac97_read()
685 reg_val = azf_emulated_ac97_vendor_id & 0xffff; in snd_azf3328_mixer_ac97_read()
756 memset(&ac97, 0, sizeof(ac97)); in snd_azf3328_mixer_new()
769 rc = snd_ac97_bus(chip->card, 0, &ops, NULL, &bus); in snd_azf3328_mixer_new()
795 unsigned char curr_vol_left = 0, curr_vol_right = 0; in snd_azf3328_mixer_write_volume_gradually()
796 int left_change = 0, right_change = 0; in snd_azf3328_mixer_write_volume_gradually()
811 curr_vol_right = inb(portbase + 0); in snd_azf3328_mixer_write_volume_gradually()
822 left_change = 0; in snd_azf3328_mixer_write_volume_gradually()
831 outb(curr_vol_right, portbase + 0); in snd_azf3328_mixer_write_volume_gradually()
833 right_change = 0; in snd_azf3328_mixer_write_volume_gradually()
861 r->reg = val & 0xff; in snd_azf3328_mixer_reg_decode()
862 r->lchan_shift = (val >> 8) & 0x0f; in snd_azf3328_mixer_reg_decode()
863 r->rchan_shift = (val >> 12) & 0x0f; in snd_azf3328_mixer_reg_decode()
864 r->mask = (val >> 16) & 0xff; in snd_azf3328_mixer_reg_decode()
867 r->enum_c = (val >> 26) & 0x0f; in snd_azf3328_mixer_reg_decode()
878 .private_value = COMPOSE_MIXER_REG(reg, shift, 0, 0x1, invert, 0, 0), \
885 .private_value = COMPOSE_MIXER_REG(reg, 8, 0, mask, invert, 1, 0), \
892 .private_value = COMPOSE_MIXER_REG(reg, is_right_chan ? 0 : 8, 0, mask, 1, 0, 0), \
899 .private_value = COMPOSE_MIXER_REG(reg, shift, 0, mask, invert, 0, 0), \
906 .private_value = COMPOSE_MIXER_REG(reg, shift, 0, 0, 0, 0, enum_c), \
919 uinfo->value.integer.min = 0; in snd_azf3328_info_mixer()
921 return 0; in snd_azf3328_info_mixer()
938 ucontrol->value.integer.value[0] = val; in snd_azf3328_get_mixer()
948 ucontrol->value.integer.value[0], ucontrol->value.integer.value[1], in snd_azf3328_get_mixer()
950 return 0; in snd_azf3328_get_mixer()
963 val = ucontrol->value.integer.value[0] & reg.mask; in snd_azf3328_put_mixer()
975 if (reg.mask >= 0x07) /* it's a volume control, so better take care */ in snd_azf3328_put_mixer()
977 chip, reg.reg, nreg >> 8, nreg & 0xff, in snd_azf3328_put_mixer()
980 0); in snd_azf3328_put_mixer()
986 reg.reg, ucontrol->value.integer.value[0], ucontrol->value.integer.value[1], in snd_azf3328_put_mixer()
1044 ucontrol->value.enumerated.item[0] = (val >> 8) & (reg.enum_c - 1); in snd_azf3328_get_mixer_enum()
1045 ucontrol->value.enumerated.item[1] = (val >> 0) & (reg.enum_c - 1); in snd_azf3328_get_mixer_enum()
1047 ucontrol->value.enumerated.item[0] = (val >> reg.lchan_shift) & (reg.enum_c - 1); in snd_azf3328_get_mixer_enum()
1051 reg.reg, val, ucontrol->value.enumerated.item[0], ucontrol->value.enumerated.item[1], in snd_azf3328_get_mixer_enum()
1053 return 0; in snd_azf3328_get_mixer_enum()
1068 if (ucontrol->value.enumerated.item[0] > reg.enum_c - 1U || in snd_azf3328_put_mixer_enum()
1071 val = (ucontrol->value.enumerated.item[0] << 8) | in snd_azf3328_put_mixer_enum()
1072 (ucontrol->value.enumerated.item[1] << 0); in snd_azf3328_put_mixer_enum()
1074 if (ucontrol->value.enumerated.item[0] > reg.enum_c - 1U) in snd_azf3328_put_mixer_enum()
1077 val |= (ucontrol->value.enumerated.item[0] << reg.lchan_shift); in snd_azf3328_put_mixer_enum()
1089 AZF3328_MIXER_VOL_STEREO("Master Playback Volume", IDX_MIXER_PLAY_MASTER, 0x1f, 1),
1092 IDX_MIXER_WAVEOUT, 0x1f, 1),
1096 AZF3328_MIXER_VOL_STEREO("FM Playback Volume", IDX_MIXER_FMSYNTH, 0x1f, 1),
1098 AZF3328_MIXER_VOL_STEREO("CD Playback Volume", IDX_MIXER_CDAUDIO, 0x1f, 1),
1100 AZF3328_MIXER_VOL_STEREO("Capture Volume", IDX_MIXER_REC_VOLUME, 0x0f, 0),
1101 AZF3328_MIXER_ENUM("Capture Source", IDX_MIXER_REC_SELECT, 8, 0),
1103 AZF3328_MIXER_VOL_MONO("Mic Playback Volume", IDX_MIXER_MIC, 0x1f, 1),
1104 AZF3328_MIXER_SWITCH("Mic Boost (+20dB)", IDX_MIXER_MIC, 6, 0),
1106 AZF3328_MIXER_VOL_STEREO("Line Playback Volume", IDX_MIXER_LINEIN, 0x1f, 1),
1108 AZF3328_MIXER_VOL_SPECIAL("Beep Playback Volume", IDX_MIXER_PCBEEP, 0x0f, 1, 1),
1110 AZF3328_MIXER_VOL_STEREO("Video Playback Volume", IDX_MIXER_VIDEO, 0x1f, 1),
1112 AZF3328_MIXER_VOL_STEREO("Aux Playback Volume", IDX_MIXER_AUX, 0x1f, 1),
1114 AZF3328_MIXER_VOL_MONO("Modem Playback Volume", IDX_MIXER_MODEMOUT, 0x1f, 1),
1116 AZF3328_MIXER_VOL_MONO("Modem Capture Volume", IDX_MIXER_MODEMIN, 0x1f, 1),
1120 AZF3328_MIXER_VOL_SPECIAL("Tone Control - Treble", IDX_MIXER_BASSTREBLE, 0x07, 1, 0),
1121 AZF3328_MIXER_VOL_SPECIAL("Tone Control - Bass", IDX_MIXER_BASSTREBLE, 0x07, 9, 0),
1122 AZF3328_MIXER_SWITCH("3D Control - Switch", IDX_MIXER_ADVCTL2, 13, 0),
1123 AZF3328_MIXER_VOL_SPECIAL("3D Control - Width", IDX_MIXER_ADVCTL1, 0x07, 1, 0), /* "3D Width" */
1124 AZF3328_MIXER_VOL_SPECIAL("3D Control - Depth", IDX_MIXER_ADVCTL1, 0x03, 8, 0), /* "Hifi 3D" */
1126 AZF3328_MIXER_SWITCH("0", IDX_MIXER_ADVCTL2, 0, 0),
1127 AZF3328_MIXER_SWITCH("1", IDX_MIXER_ADVCTL2, 1, 0),
1128 AZF3328_MIXER_SWITCH("2", IDX_MIXER_ADVCTL2, 2, 0),
1129 AZF3328_MIXER_SWITCH("3", IDX_MIXER_ADVCTL2, 3, 0),
1130 AZF3328_MIXER_SWITCH("4", IDX_MIXER_ADVCTL2, 4, 0),
1131 AZF3328_MIXER_SWITCH("5", IDX_MIXER_ADVCTL2, 5, 0),
1132 AZF3328_MIXER_SWITCH("6", IDX_MIXER_ADVCTL2, 6, 0),
1133 AZF3328_MIXER_SWITCH("7", IDX_MIXER_ADVCTL2, 7, 0),
1134 AZF3328_MIXER_SWITCH("8", IDX_MIXER_ADVCTL2, 8, 0),
1135 AZF3328_MIXER_SWITCH("9", IDX_MIXER_ADVCTL2, 9, 0),
1136 AZF3328_MIXER_SWITCH("10", IDX_MIXER_ADVCTL2, 10, 0),
1137 AZF3328_MIXER_SWITCH("11", IDX_MIXER_ADVCTL2, 11, 0),
1138 AZF3328_MIXER_SWITCH("12", IDX_MIXER_ADVCTL2, 12, 0),
1139 AZF3328_MIXER_SWITCH("13", IDX_MIXER_ADVCTL2, 13, 0),
1140 AZF3328_MIXER_SWITCH("14", IDX_MIXER_ADVCTL2, 14, 0),
1141 AZF3328_MIXER_SWITCH("15", IDX_MIXER_ADVCTL2, 15, 0),
1146 { IDX_MIXER_PLAY_MASTER, MIXER_MUTE_MASK|0x1f1f },
1147 { IDX_MIXER_MODEMOUT, MIXER_MUTE_MASK|0x1f1f },
1148 { IDX_MIXER_BASSTREBLE, 0x0000 },
1149 { IDX_MIXER_PCBEEP, MIXER_MUTE_MASK|0x1f1f },
1150 { IDX_MIXER_MODEMIN, MIXER_MUTE_MASK|0x1f1f },
1151 { IDX_MIXER_MIC, MIXER_MUTE_MASK|0x001f },
1152 { IDX_MIXER_LINEIN, MIXER_MUTE_MASK|0x1f1f },
1153 { IDX_MIXER_CDAUDIO, MIXER_MUTE_MASK|0x1f1f },
1154 { IDX_MIXER_VIDEO, MIXER_MUTE_MASK|0x1f1f },
1155 { IDX_MIXER_AUX, MIXER_MUTE_MASK|0x1f1f },
1156 { IDX_MIXER_WAVEOUT, MIXER_MUTE_MASK|0x1f1f },
1157 { IDX_MIXER_FMSYNTH, MIXER_MUTE_MASK|0x1f1f },
1158 { IDX_MIXER_REC_VOLUME, MIXER_MUTE_MASK|0x0707 },
1175 snd_azf3328_mixer_outw(chip, IDX_MIXER_RESET, 0x0000); in snd_azf3328_mixer_new()
1178 for (idx = 0; idx < ARRAY_SIZE(snd_azf3328_init_values); ++idx) { in snd_azf3328_mixer_new()
1180 snd_azf3328_init_values[idx][0], in snd_azf3328_mixer_new()
1186 for (idx = 0; idx < ARRAY_SIZE(snd_azf3328_mixer_controls); in snd_azf3328_mixer_new()
1189 if (err < 0) in snd_azf3328_mixer_new()
1195 return 0; in snd_azf3328_mixer_new()
1207 u16 val = 0xff00; in snd_azf3328_codec_setfmt()
1208 u8 freq = 0; in snd_azf3328_codec_setfmt()
1231 /* val = 0xff07; 3m27.993s (65301Hz; -> 64000Hz???) hmm, 66120, 65967, 66123 */ in snd_azf3328_codec_setfmt()
1232 /* val = 0xff09; 17m15.098s (13123,478Hz; -> 12000Hz???) hmm, 13237.2Hz? */ in snd_azf3328_codec_setfmt()
1233 /* val = 0xff0a; 47m30.599s (4764,891Hz; -> 4800Hz???) yup, 4803Hz */ in snd_azf3328_codec_setfmt()
1234 /* val = 0xff0c; 57m0.510s (4010,263Hz; -> 4000Hz???) yup, 4003Hz */ in snd_azf3328_codec_setfmt()
1235 /* val = 0xff05; 5m11.556s (... -> 44100Hz) */ in snd_azf3328_codec_setfmt()
1236 /* val = 0xff03; 10m21.529s (21872,463Hz; -> 22050Hz???) */ in snd_azf3328_codec_setfmt()
1237 /* val = 0xff0f; 20m41.883s (10937,993Hz; -> 11025Hz???) */ in snd_azf3328_codec_setfmt()
1238 /* val = 0xff0d; 41m23.135s (5523,600Hz; -> 5512Hz???) */ in snd_azf3328_codec_setfmt()
1239 /* val = 0xff0e; 28m30.777s (8017Hz; -> 8000Hz???) */ in snd_azf3328_codec_setfmt()
1298 "6AH_update mask 0x%04x do_mask %d: val 0x%04x\n", in snd_azf3328_ctrl_reg_6AH_update()
1423 #if 0 in snd_azf3328_pcm_prepare()
1430 #if 0 in snd_azf3328_pcm_prepare()
1438 return 0; in snd_azf3328_pcm_prepare()
1447 int result = 0; in snd_azf3328_pcm_trigger()
1478 snd_azf3328_codec_outw(codec, IDX_IO_CODEC_IRQTYPE, 0xffff); in snd_azf3328_pcm_trigger()
1493 /* FIXME: what is this value (0x0010)??? */ in snd_azf3328_pcm_trigger()
1498 0x0000); in snd_azf3328_pcm_trigger()
1517 chip, 0 in snd_azf3328_pcm_trigger()
1562 snd_azf3328_ctrl_codec_activity(chip, codec->type, 0); in snd_azf3328_pcm_trigger()
1568 chip, 0 in snd_azf3328_pcm_trigger()
1615 dev_dbg(substream->pcm->card->dev, "%08li %s @ 0x%8lx, frames %8ld\n", in snd_azf3328_pcm_pointer()
1654 0x02, in snd_azf3328_gameport_set_counter_frequency()
1655 (freq_cfg & 1) != 0 in snd_azf3328_gameport_set_counter_frequency()
1659 0x04, in snd_azf3328_gameport_set_counter_frequency()
1660 (freq_cfg & 2) != 0 in snd_azf3328_gameport_set_counter_frequency()
1695 res = 0; in snd_azf3328_gameport_open()
1704 snd_azf3328_gameport_axis_circuit_enable(chip, (res == 0)); in snd_azf3328_gameport_open()
1717 snd_azf3328_gameport_axis_circuit_enable(chip, 0); in snd_azf3328_gameport_close()
1732 return 0; in snd_azf3328_gameport_cooked_read()
1736 *buttons = (~(val) >> 4) & 0xf; in snd_azf3328_gameport_cooked_read()
1750 for (i = 0; i < ARRAY_SIZE(chip->axes); ++i) { in snd_azf3328_gameport_cooked_read()
1752 val = (i << 4) | 0x0f; in snd_azf3328_gameport_cooked_read()
1767 val = 0x03; /* we're able to monitor axes 1 and 2 only */ in snd_azf3328_gameport_cooked_read()
1770 snd_azf3328_game_outw(chip, IDX_GAME_AXIS_VALUE, 0xffff); in snd_azf3328_gameport_cooked_read()
1773 for (i = 0; i < ARRAY_SIZE(chip->axes); i++) { in snd_azf3328_gameport_cooked_read()
1775 if (axes[i] == 0xffff) in snd_azf3328_gameport_cooked_read()
1780 axes[0], axes[1], axes[2], axes[3], *buttons); in snd_azf3328_gameport_cooked_read()
1782 return 0; in snd_azf3328_gameport_cooked_read()
1808 snd_azf3328_gameport_legacy_address_enable(chip, 0); in snd_azf3328_gameport()
1812 snd_azf3328_gameport_axis_circuit_enable(chip, 0); in snd_azf3328_gameport()
1816 return 0; in snd_azf3328_gameport()
1826 snd_azf3328_gameport_irq_enable(chip, 0); in snd_azf3328_gameport_free()
1918 snd_azf3328_ctrl_outb(chip, IDX_IO_TIMER_VALUE + 3, 0x07); in snd_azf3328_interrupt()
1976 .fifo_size = 0,
2000 .mask = 0,
2019 snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_RATE, in snd_azf3328_pcm_open()
2022 return 0; in snd_azf3328_pcm_open()
2051 return 0; in snd_azf3328_pcm_close()
2091 if (err < 0) in snd_azf3328_pcm()
2099 pcm->info_flags = 0; in snd_azf3328_pcm()
2109 1, 0, &pcm); in snd_azf3328_pcm()
2110 if (err < 0) in snd_azf3328_pcm()
2116 pcm->info_flags = 0; in snd_azf3328_pcm()
2123 return 0; in snd_azf3328_pcm()
2160 return 0; in snd_azf3328_timer_start()
2175 will never end (value 0x03 is kept shown in control byte). in snd_azf3328_timer_stop()
2176 Simply manually poking 0x04 _once_ immediately successfully stops in snd_azf3328_timer_stop()
2178 snd_azf3328_ctrl_outb(chip, IDX_IO_TIMER_VALUE + 3, 0x04); in snd_azf3328_timer_stop()
2180 return 0; in snd_azf3328_timer_stop()
2190 return 0; in snd_azf3328_timer_precise_resolution()
2213 tid.subdevice = 0; in snd_azf3328_timer()
2219 if (err < 0) in snd_azf3328_timer()
2230 err = 0; in snd_azf3328_timer()
2249 #if 0
2278 "ctrl_io 0x%lx, game_io 0x%lx, mpu_io 0x%lx, " in snd_azf3328_debug_show_ports()
2279 "opl3_io 0x%lx, mixer_io 0x%lx, irq %d\n", in snd_azf3328_debug_show_ports()
2285 snd_azf3328_game_inb(chip, 0), in snd_azf3328_debug_show_ports()
2292 for (tmp = 0; tmp < 0x07; tmp += 1) in snd_azf3328_debug_show_ports()
2294 "mpu_io 0x%04x\n", inb(chip->mpu_io + tmp)); in snd_azf3328_debug_show_ports()
2296 for (tmp = 0; tmp <= 0x07; tmp += 1) in snd_azf3328_debug_show_ports()
2298 "0x%02x: game200 0x%04x, game208 0x%04x\n", in snd_azf3328_debug_show_ports()
2299 tmp, inb(0x200 + tmp), inb(0x208 + tmp)); in snd_azf3328_debug_show_ports()
2301 for (tmp = 0; tmp <= 0x01; tmp += 1) in snd_azf3328_debug_show_ports()
2303 "0x%02x: mpu300 0x%04x, mpu310 0x%04x, mpu320 0x%04x, " in snd_azf3328_debug_show_ports()
2304 "mpu330 0x%04x opl388 0x%04x opl38c 0x%04x\n", in snd_azf3328_debug_show_ports()
2306 inb(0x300 + tmp), in snd_azf3328_debug_show_ports()
2307 inb(0x310 + tmp), in snd_azf3328_debug_show_ports()
2308 inb(0x320 + tmp), in snd_azf3328_debug_show_ports()
2309 inb(0x330 + tmp), in snd_azf3328_debug_show_ports()
2310 inb(0x388 + tmp), in snd_azf3328_debug_show_ports()
2311 inb(0x38c + tmp)); in snd_azf3328_debug_show_ports()
2313 for (tmp = 0; tmp < AZF_IO_SIZE_CTRL; tmp += 2) in snd_azf3328_debug_show_ports()
2315 "ctrl 0x%02x: 0x%04x\n", in snd_azf3328_debug_show_ports()
2318 for (tmp = 0; tmp < AZF_IO_SIZE_MIXER; tmp += 2) in snd_azf3328_debug_show_ports()
2320 "mixer 0x%02x: 0x%04x\n", in snd_azf3328_debug_show_ports()
2336 if (err < 0) in snd_azf3328_create()
2353 if (err < 0) in snd_azf3328_create()
2356 chip->ctrl_io = pci_resource_start(pci, 0); in snd_azf3328_create()
2394 if (err < 0) in snd_azf3328_create()
2409 snd_azf3328_ctrl_codec_activity(chip, codec_type, 0); in snd_azf3328_create()
2417 return 0; in snd_azf3328_create()
2438 if (err < 0) in __snd_azf3328_probe()
2446 if (err < 0) in __snd_azf3328_probe()
2452 card, 0, in __snd_azf3328_probe()
2457 if (err < 0) { in __snd_azf3328_probe()
2458 dev_err(card->dev, "no MPU-401 device at 0x%lx?\n", in __snd_azf3328_probe()
2464 err = snd_azf3328_timer(chip, 0); in __snd_azf3328_probe()
2465 if (err < 0) in __snd_azf3328_probe()
2469 if (err < 0) in __snd_azf3328_probe()
2473 OPL3_HW_AUTO, 1, &opl3) < 0) { in __snd_azf3328_probe()
2474 dev_err(card->dev, "no OPL3 device at 0x%lx-0x%lx?\n", in __snd_azf3328_probe()
2478 /* need to use IDs 1, 2 since ID 0 is snd_azf3328_timer above */ in __snd_azf3328_probe()
2480 if (err < 0) in __snd_azf3328_probe()
2482 err = snd_opl3_hwdep_new(opl3, 0, 1, NULL); in __snd_azf3328_probe()
2483 if (err < 0) in __snd_azf3328_probe()
2488 sprintf(card->longname, "%s at 0x%lx, irq %i", in __snd_azf3328_probe()
2492 if (err < 0) in __snd_azf3328_probe()
2511 return 0; in __snd_azf3328_probe()
2527 for (reg = 0; reg < count; ++reg) { in snd_azf3328_suspend_regs()
2529 dev_dbg(chip->card->dev, "suspend: io 0x%04lx: 0x%08x\n", in snd_azf3328_suspend_regs()
2545 for (reg = 0; reg < count; ++reg) { in snd_azf3328_resume_regs()
2548 "resume: io 0x%04lx: 0x%08x --> 0x%08x\n", in snd_azf3328_resume_regs()
2579 /* unfortunately with 32bit transfers, IDX_MIXER_PLAY_MASTER (0x02) in snd_azf3328_resume_ac97()
2580 and IDX_MIXER_RESET (offset 0x00) get touched at the same time, in snd_azf3328_resume_ac97()
2611 return 0; in snd_azf3328_suspend()
2633 return 0; in snd_azf3328_resume()