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.
308 { 0x122D, 0x50DC, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* PCI168/3328 */
309 { 0x122D, 0x80DA, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* 3328 */
310 { 0, }
331 return 0; in snd_azf3328_io_reg_setb()
451 #define AZF_MUTE_BIT 0x80
500 snd_azf3328_mixer_outw(chip, IDX_MIXER_RESET, 0x0000); in snd_azf3328_mixer_reset()
511 "missing %s emulation for AC97 register 0x%02x!\n", in snd_azf3328_mixer_ac97_map_unsupported()
519 #define AZF_REG_MASK 0x3f
520 #define AZF_AC97_REG_UNSUPPORTED 0x8000
521 #define AZF_AC97_REG_REAL_IO_READ 0x4000
522 #define AZF_AC97_REG_REAL_IO_WRITE 0x2000
525 #define AZF_AC97_REG_EMU_IO_READ 0x0400
526 #define AZF_AC97_REG_EMU_IO_WRITE 0x0200
611 /* mask 0x7c00 is
633 * (better don't use 0x68 since there's a PCI368 as well).
636 azf_emulated_ac97_vendor_id = 0x415a5401;
643 unsigned short reg_val = 0; in snd_azf3328_mixer_ac97_read()
677 reg_val |= 0; in snd_azf3328_mixer_ac97_read()
683 reg_val = azf_emulated_ac97_vendor_id & 0xffff; in snd_azf3328_mixer_ac97_read()
754 memset(&ac97, 0, sizeof(ac97)); in snd_azf3328_mixer_new()
767 rc = snd_ac97_bus(chip->card, 0, &ops, NULL, &bus); in snd_azf3328_mixer_new()
793 unsigned char curr_vol_left = 0, curr_vol_right = 0; in snd_azf3328_mixer_write_volume_gradually()
794 int left_change = 0, right_change = 0; in snd_azf3328_mixer_write_volume_gradually()
809 curr_vol_right = inb(portbase + 0); in snd_azf3328_mixer_write_volume_gradually()
820 left_change = 0; in snd_azf3328_mixer_write_volume_gradually()
829 outb(curr_vol_right, portbase + 0); in snd_azf3328_mixer_write_volume_gradually()
831 right_change = 0; in snd_azf3328_mixer_write_volume_gradually()
859 r->reg = val & 0xff; in snd_azf3328_mixer_reg_decode()
860 r->lchan_shift = (val >> 8) & 0x0f; in snd_azf3328_mixer_reg_decode()
861 r->rchan_shift = (val >> 12) & 0x0f; in snd_azf3328_mixer_reg_decode()
862 r->mask = (val >> 16) & 0xff; in snd_azf3328_mixer_reg_decode()
865 r->enum_c = (val >> 26) & 0x0f; in snd_azf3328_mixer_reg_decode()
876 .private_value = COMPOSE_MIXER_REG(reg, shift, 0, 0x1, invert, 0, 0), \
883 .private_value = COMPOSE_MIXER_REG(reg, 8, 0, mask, invert, 1, 0), \
890 .private_value = COMPOSE_MIXER_REG(reg, is_right_chan ? 0 : 8, 0, mask, 1, 0, 0), \
897 .private_value = COMPOSE_MIXER_REG(reg, shift, 0, mask, invert, 0, 0), \
904 .private_value = COMPOSE_MIXER_REG(reg, shift, 0, 0, 0, 0, enum_c), \
917 uinfo->value.integer.min = 0; in snd_azf3328_info_mixer()
919 return 0; in snd_azf3328_info_mixer()
936 ucontrol->value.integer.value[0] = val; in snd_azf3328_get_mixer()
946 ucontrol->value.integer.value[0], ucontrol->value.integer.value[1], in snd_azf3328_get_mixer()
948 return 0; in snd_azf3328_get_mixer()
961 val = ucontrol->value.integer.value[0] & reg.mask; in snd_azf3328_put_mixer()
973 if (reg.mask >= 0x07) /* it's a volume control, so better take care */ in snd_azf3328_put_mixer()
975 chip, reg.reg, nreg >> 8, nreg & 0xff, in snd_azf3328_put_mixer()
978 0); in snd_azf3328_put_mixer()
984 reg.reg, ucontrol->value.integer.value[0], ucontrol->value.integer.value[1], in snd_azf3328_put_mixer()
1042 ucontrol->value.enumerated.item[0] = (val >> 8) & (reg.enum_c - 1); in snd_azf3328_get_mixer_enum()
1043 ucontrol->value.enumerated.item[1] = (val >> 0) & (reg.enum_c - 1); in snd_azf3328_get_mixer_enum()
1045 ucontrol->value.enumerated.item[0] = (val >> reg.lchan_shift) & (reg.enum_c - 1); in snd_azf3328_get_mixer_enum()
1049 reg.reg, val, ucontrol->value.enumerated.item[0], ucontrol->value.enumerated.item[1], in snd_azf3328_get_mixer_enum()
1051 return 0; in snd_azf3328_get_mixer_enum()
1066 if (ucontrol->value.enumerated.item[0] > reg.enum_c - 1U || in snd_azf3328_put_mixer_enum()
1069 val = (ucontrol->value.enumerated.item[0] << 8) | in snd_azf3328_put_mixer_enum()
1070 (ucontrol->value.enumerated.item[1] << 0); in snd_azf3328_put_mixer_enum()
1072 if (ucontrol->value.enumerated.item[0] > reg.enum_c - 1U) in snd_azf3328_put_mixer_enum()
1075 val |= (ucontrol->value.enumerated.item[0] << reg.lchan_shift); in snd_azf3328_put_mixer_enum()
1087 AZF3328_MIXER_VOL_STEREO("Master Playback Volume", IDX_MIXER_PLAY_MASTER, 0x1f, 1),
1090 IDX_MIXER_WAVEOUT, 0x1f, 1),
1094 AZF3328_MIXER_VOL_STEREO("FM Playback Volume", IDX_MIXER_FMSYNTH, 0x1f, 1),
1096 AZF3328_MIXER_VOL_STEREO("CD Playback Volume", IDX_MIXER_CDAUDIO, 0x1f, 1),
1098 AZF3328_MIXER_VOL_STEREO("Capture Volume", IDX_MIXER_REC_VOLUME, 0x0f, 0),
1099 AZF3328_MIXER_ENUM("Capture Source", IDX_MIXER_REC_SELECT, 8, 0),
1101 AZF3328_MIXER_VOL_MONO("Mic Playback Volume", IDX_MIXER_MIC, 0x1f, 1),
1102 AZF3328_MIXER_SWITCH("Mic Boost (+20dB)", IDX_MIXER_MIC, 6, 0),
1104 AZF3328_MIXER_VOL_STEREO("Line Playback Volume", IDX_MIXER_LINEIN, 0x1f, 1),
1106 AZF3328_MIXER_VOL_SPECIAL("Beep Playback Volume", IDX_MIXER_PCBEEP, 0x0f, 1, 1),
1108 AZF3328_MIXER_VOL_STEREO("Video Playback Volume", IDX_MIXER_VIDEO, 0x1f, 1),
1110 AZF3328_MIXER_VOL_STEREO("Aux Playback Volume", IDX_MIXER_AUX, 0x1f, 1),
1112 AZF3328_MIXER_VOL_MONO("Modem Playback Volume", IDX_MIXER_MODEMOUT, 0x1f, 1),
1114 AZF3328_MIXER_VOL_MONO("Modem Capture Volume", IDX_MIXER_MODEMIN, 0x1f, 1),
1118 AZF3328_MIXER_VOL_SPECIAL("Tone Control - Treble", IDX_MIXER_BASSTREBLE, 0x07, 1, 0),
1119 AZF3328_MIXER_VOL_SPECIAL("Tone Control - Bass", IDX_MIXER_BASSTREBLE, 0x07, 9, 0),
1120 AZF3328_MIXER_SWITCH("3D Control - Switch", IDX_MIXER_ADVCTL2, 13, 0),
1121 AZF3328_MIXER_VOL_SPECIAL("3D Control - Width", IDX_MIXER_ADVCTL1, 0x07, 1, 0), /* "3D Width" */
1122 AZF3328_MIXER_VOL_SPECIAL("3D Control - Depth", IDX_MIXER_ADVCTL1, 0x03, 8, 0), /* "Hifi 3D" */
1124 AZF3328_MIXER_SWITCH("0", IDX_MIXER_ADVCTL2, 0, 0),
1125 AZF3328_MIXER_SWITCH("1", IDX_MIXER_ADVCTL2, 1, 0),
1126 AZF3328_MIXER_SWITCH("2", IDX_MIXER_ADVCTL2, 2, 0),
1127 AZF3328_MIXER_SWITCH("3", IDX_MIXER_ADVCTL2, 3, 0),
1128 AZF3328_MIXER_SWITCH("4", IDX_MIXER_ADVCTL2, 4, 0),
1129 AZF3328_MIXER_SWITCH("5", IDX_MIXER_ADVCTL2, 5, 0),
1130 AZF3328_MIXER_SWITCH("6", IDX_MIXER_ADVCTL2, 6, 0),
1131 AZF3328_MIXER_SWITCH("7", IDX_MIXER_ADVCTL2, 7, 0),
1132 AZF3328_MIXER_SWITCH("8", IDX_MIXER_ADVCTL2, 8, 0),
1133 AZF3328_MIXER_SWITCH("9", IDX_MIXER_ADVCTL2, 9, 0),
1134 AZF3328_MIXER_SWITCH("10", IDX_MIXER_ADVCTL2, 10, 0),
1135 AZF3328_MIXER_SWITCH("11", IDX_MIXER_ADVCTL2, 11, 0),
1136 AZF3328_MIXER_SWITCH("12", IDX_MIXER_ADVCTL2, 12, 0),
1137 AZF3328_MIXER_SWITCH("13", IDX_MIXER_ADVCTL2, 13, 0),
1138 AZF3328_MIXER_SWITCH("14", IDX_MIXER_ADVCTL2, 14, 0),
1139 AZF3328_MIXER_SWITCH("15", IDX_MIXER_ADVCTL2, 15, 0),
1144 { IDX_MIXER_PLAY_MASTER, MIXER_MUTE_MASK|0x1f1f },
1145 { IDX_MIXER_MODEMOUT, MIXER_MUTE_MASK|0x1f1f },
1146 { IDX_MIXER_BASSTREBLE, 0x0000 },
1147 { IDX_MIXER_PCBEEP, MIXER_MUTE_MASK|0x1f1f },
1148 { IDX_MIXER_MODEMIN, MIXER_MUTE_MASK|0x1f1f },
1149 { IDX_MIXER_MIC, MIXER_MUTE_MASK|0x001f },
1150 { IDX_MIXER_LINEIN, MIXER_MUTE_MASK|0x1f1f },
1151 { IDX_MIXER_CDAUDIO, MIXER_MUTE_MASK|0x1f1f },
1152 { IDX_MIXER_VIDEO, MIXER_MUTE_MASK|0x1f1f },
1153 { IDX_MIXER_AUX, MIXER_MUTE_MASK|0x1f1f },
1154 { IDX_MIXER_WAVEOUT, MIXER_MUTE_MASK|0x1f1f },
1155 { IDX_MIXER_FMSYNTH, MIXER_MUTE_MASK|0x1f1f },
1156 { IDX_MIXER_REC_VOLUME, MIXER_MUTE_MASK|0x0707 },
1173 snd_azf3328_mixer_outw(chip, IDX_MIXER_RESET, 0x0000); in snd_azf3328_mixer_new()
1176 for (idx = 0; idx < ARRAY_SIZE(snd_azf3328_init_values); ++idx) { in snd_azf3328_mixer_new()
1178 snd_azf3328_init_values[idx][0], in snd_azf3328_mixer_new()
1184 for (idx = 0; idx < ARRAY_SIZE(snd_azf3328_mixer_controls); in snd_azf3328_mixer_new()
1187 if (err < 0) in snd_azf3328_mixer_new()
1193 return 0; in snd_azf3328_mixer_new()
1205 u16 val = 0xff00; in snd_azf3328_codec_setfmt()
1206 u8 freq = 0; in snd_azf3328_codec_setfmt()
1229 /* val = 0xff07; 3m27.993s (65301Hz; -> 64000Hz???) hmm, 66120, 65967, 66123 */ in snd_azf3328_codec_setfmt()
1230 /* val = 0xff09; 17m15.098s (13123,478Hz; -> 12000Hz???) hmm, 13237.2Hz? */ in snd_azf3328_codec_setfmt()
1231 /* val = 0xff0a; 47m30.599s (4764,891Hz; -> 4800Hz???) yup, 4803Hz */ in snd_azf3328_codec_setfmt()
1232 /* val = 0xff0c; 57m0.510s (4010,263Hz; -> 4000Hz???) yup, 4003Hz */ in snd_azf3328_codec_setfmt()
1233 /* val = 0xff05; 5m11.556s (... -> 44100Hz) */ in snd_azf3328_codec_setfmt()
1234 /* val = 0xff03; 10m21.529s (21872,463Hz; -> 22050Hz???) */ in snd_azf3328_codec_setfmt()
1235 /* val = 0xff0f; 20m41.883s (10937,993Hz; -> 11025Hz???) */ in snd_azf3328_codec_setfmt()
1236 /* val = 0xff0d; 41m23.135s (5523,600Hz; -> 5512Hz???) */ in snd_azf3328_codec_setfmt()
1237 /* val = 0xff0e; 28m30.777s (8017Hz; -> 8000Hz???) */ in snd_azf3328_codec_setfmt()
1296 "6AH_update mask 0x%04x do_mask %d: val 0x%04x\n", in snd_azf3328_ctrl_reg_6AH_update()
1421 #if 0 in snd_azf3328_pcm_prepare()
1428 #if 0 in snd_azf3328_pcm_prepare()
1436 return 0; in snd_azf3328_pcm_prepare()
1445 int result = 0; in snd_azf3328_pcm_trigger()
1476 snd_azf3328_codec_outw(codec, IDX_IO_CODEC_IRQTYPE, 0xffff); in snd_azf3328_pcm_trigger()
1491 /* FIXME: what is this value (0x0010)??? */ in snd_azf3328_pcm_trigger()
1496 0x0000); in snd_azf3328_pcm_trigger()
1515 chip, 0 in snd_azf3328_pcm_trigger()
1560 snd_azf3328_ctrl_codec_activity(chip, codec->type, 0); in snd_azf3328_pcm_trigger()
1566 chip, 0 in snd_azf3328_pcm_trigger()
1613 dev_dbg(substream->pcm->card->dev, "%08li %s @ 0x%8lx, frames %8ld\n", in snd_azf3328_pcm_pointer()
1652 0x02, in snd_azf3328_gameport_set_counter_frequency()
1653 (freq_cfg & 1) != 0 in snd_azf3328_gameport_set_counter_frequency()
1657 0x04, in snd_azf3328_gameport_set_counter_frequency()
1658 (freq_cfg & 2) != 0 in snd_azf3328_gameport_set_counter_frequency()
1693 res = 0; in snd_azf3328_gameport_open()
1702 snd_azf3328_gameport_axis_circuit_enable(chip, (res == 0)); in snd_azf3328_gameport_open()
1715 snd_azf3328_gameport_axis_circuit_enable(chip, 0); in snd_azf3328_gameport_close()
1730 return 0; in snd_azf3328_gameport_cooked_read()
1734 *buttons = (~(val) >> 4) & 0xf; in snd_azf3328_gameport_cooked_read()
1748 for (i = 0; i < ARRAY_SIZE(chip->axes); ++i) { in snd_azf3328_gameport_cooked_read()
1750 val = (i << 4) | 0x0f; in snd_azf3328_gameport_cooked_read()
1765 val = 0x03; /* we're able to monitor axes 1 and 2 only */ in snd_azf3328_gameport_cooked_read()
1768 snd_azf3328_game_outw(chip, IDX_GAME_AXIS_VALUE, 0xffff); in snd_azf3328_gameport_cooked_read()
1771 for (i = 0; i < ARRAY_SIZE(chip->axes); i++) { in snd_azf3328_gameport_cooked_read()
1773 if (axes[i] == 0xffff) in snd_azf3328_gameport_cooked_read()
1778 axes[0], axes[1], axes[2], axes[3], *buttons); in snd_azf3328_gameport_cooked_read()
1780 return 0; in snd_azf3328_gameport_cooked_read()
1806 snd_azf3328_gameport_legacy_address_enable(chip, 0); in snd_azf3328_gameport()
1810 snd_azf3328_gameport_axis_circuit_enable(chip, 0); in snd_azf3328_gameport()
1814 return 0; in snd_azf3328_gameport()
1824 snd_azf3328_gameport_irq_enable(chip, 0); in snd_azf3328_gameport_free()
1916 snd_azf3328_ctrl_outb(chip, IDX_IO_TIMER_VALUE + 3, 0x07); in snd_azf3328_interrupt()
1974 .fifo_size = 0,
1998 .mask = 0,
2017 snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_RATE, in snd_azf3328_pcm_open()
2020 return 0; in snd_azf3328_pcm_open()
2049 return 0; in snd_azf3328_pcm_close()
2089 if (err < 0) in snd_azf3328_pcm()
2097 pcm->info_flags = 0; in snd_azf3328_pcm()
2107 1, 0, &pcm); in snd_azf3328_pcm()
2108 if (err < 0) in snd_azf3328_pcm()
2114 pcm->info_flags = 0; in snd_azf3328_pcm()
2121 return 0; in snd_azf3328_pcm()
2158 return 0; in snd_azf3328_timer_start()
2173 will never end (value 0x03 is kept shown in control byte). in snd_azf3328_timer_stop()
2174 Simply manually poking 0x04 _once_ immediately successfully stops in snd_azf3328_timer_stop()
2176 snd_azf3328_ctrl_outb(chip, IDX_IO_TIMER_VALUE + 3, 0x04); in snd_azf3328_timer_stop()
2178 return 0; in snd_azf3328_timer_stop()
2188 return 0; in snd_azf3328_timer_precise_resolution()
2211 tid.subdevice = 0; in snd_azf3328_timer()
2217 if (err < 0) in snd_azf3328_timer()
2228 err = 0; in snd_azf3328_timer()
2247 #if 0
2276 "ctrl_io 0x%lx, game_io 0x%lx, mpu_io 0x%lx, " in snd_azf3328_debug_show_ports()
2277 "opl3_io 0x%lx, mixer_io 0x%lx, irq %d\n", in snd_azf3328_debug_show_ports()
2283 snd_azf3328_game_inb(chip, 0), in snd_azf3328_debug_show_ports()
2290 for (tmp = 0; tmp < 0x07; tmp += 1) in snd_azf3328_debug_show_ports()
2292 "mpu_io 0x%04x\n", inb(chip->mpu_io + tmp)); in snd_azf3328_debug_show_ports()
2294 for (tmp = 0; tmp <= 0x07; tmp += 1) in snd_azf3328_debug_show_ports()
2296 "0x%02x: game200 0x%04x, game208 0x%04x\n", in snd_azf3328_debug_show_ports()
2297 tmp, inb(0x200 + tmp), inb(0x208 + tmp)); in snd_azf3328_debug_show_ports()
2299 for (tmp = 0; tmp <= 0x01; tmp += 1) in snd_azf3328_debug_show_ports()
2301 "0x%02x: mpu300 0x%04x, mpu310 0x%04x, mpu320 0x%04x, " in snd_azf3328_debug_show_ports()
2302 "mpu330 0x%04x opl388 0x%04x opl38c 0x%04x\n", in snd_azf3328_debug_show_ports()
2304 inb(0x300 + tmp), in snd_azf3328_debug_show_ports()
2305 inb(0x310 + tmp), in snd_azf3328_debug_show_ports()
2306 inb(0x320 + tmp), in snd_azf3328_debug_show_ports()
2307 inb(0x330 + tmp), in snd_azf3328_debug_show_ports()
2308 inb(0x388 + tmp), in snd_azf3328_debug_show_ports()
2309 inb(0x38c + tmp)); in snd_azf3328_debug_show_ports()
2311 for (tmp = 0; tmp < AZF_IO_SIZE_CTRL; tmp += 2) in snd_azf3328_debug_show_ports()
2313 "ctrl 0x%02x: 0x%04x\n", in snd_azf3328_debug_show_ports()
2316 for (tmp = 0; tmp < AZF_IO_SIZE_MIXER; tmp += 2) in snd_azf3328_debug_show_ports()
2318 "mixer 0x%02x: 0x%04x\n", in snd_azf3328_debug_show_ports()
2334 if (err < 0) in snd_azf3328_create()
2351 if (err < 0) in snd_azf3328_create()
2354 chip->ctrl_io = pci_resource_start(pci, 0); in snd_azf3328_create()
2392 if (err < 0) in snd_azf3328_create()
2407 snd_azf3328_ctrl_codec_activity(chip, codec_type, 0); in snd_azf3328_create()
2415 return 0; in snd_azf3328_create()
2436 if (err < 0) in __snd_azf3328_probe()
2444 if (err < 0) in __snd_azf3328_probe()
2450 card, 0, in __snd_azf3328_probe()
2455 if (err < 0) { in __snd_azf3328_probe()
2456 dev_err(card->dev, "no MPU-401 device at 0x%lx?\n", in __snd_azf3328_probe()
2462 err = snd_azf3328_timer(chip, 0); in __snd_azf3328_probe()
2463 if (err < 0) in __snd_azf3328_probe()
2467 if (err < 0) in __snd_azf3328_probe()
2471 OPL3_HW_AUTO, 1, &opl3) < 0) { in __snd_azf3328_probe()
2472 dev_err(card->dev, "no OPL3 device at 0x%lx-0x%lx?\n", in __snd_azf3328_probe()
2476 /* need to use IDs 1, 2 since ID 0 is snd_azf3328_timer above */ in __snd_azf3328_probe()
2478 if (err < 0) in __snd_azf3328_probe()
2480 err = snd_opl3_hwdep_new(opl3, 0, 1, NULL); in __snd_azf3328_probe()
2481 if (err < 0) in __snd_azf3328_probe()
2486 sprintf(card->longname, "%s at 0x%lx, irq %i", in __snd_azf3328_probe()
2490 if (err < 0) in __snd_azf3328_probe()
2509 return 0; in __snd_azf3328_probe()
2524 for (reg = 0; reg < count; ++reg) { in snd_azf3328_suspend_regs()
2526 dev_dbg(chip->card->dev, "suspend: io 0x%04lx: 0x%08x\n", in snd_azf3328_suspend_regs()
2542 for (reg = 0; reg < count; ++reg) { in snd_azf3328_resume_regs()
2545 "resume: io 0x%04lx: 0x%08x --> 0x%08x\n", in snd_azf3328_resume_regs()
2576 /* unfortunately with 32bit transfers, IDX_MIXER_PLAY_MASTER (0x02) in snd_azf3328_resume_ac97()
2577 and IDX_MIXER_RESET (offset 0x00) get touched at the same time, in snd_azf3328_resume_ac97()
2608 return 0; in snd_azf3328_suspend()
2630 return 0; in snd_azf3328_resume()