Symbol: ensoniq
sound/pci/ens1370.c
1005
struct ensoniq *ensoniq = snd_pcm_substream_chip(substream);
sound/pci/ens1370.c
1008
guard(spinlock)(&ensoniq->reg_lock);
sound/pci/ens1370.c
1009
if (inl(ES_REG(ensoniq, CONTROL)) & ES_ADC_EN) {
sound/pci/ens1370.c
1010
outl(ES_MEM_PAGEO(ES_PAGE_ADC), ES_REG(ensoniq, MEM_PAGE));
sound/pci/ens1370.c
1011
ptr = ES_REG_FCURR_COUNTI(inl(ES_REG(ensoniq, ADC_SIZE)));
sound/pci/ens1370.c
1086
struct ensoniq *ensoniq = snd_pcm_substream_chip(substream);
sound/pci/ens1370.c
1089
ensoniq->mode |= ES_MODE_PLAY1;
sound/pci/ens1370.c
1090
ensoniq->playback1_substream = substream;
sound/pci/ens1370.c
1093
scoped_guard(spinlock_irq, &ensoniq->reg_lock) {
sound/pci/ens1370.c
1094
if (ensoniq->spdif && ensoniq->playback2_substream == NULL)
sound/pci/ens1370.c
1095
ensoniq->spdif_stream = ensoniq->spdif_default;
sound/pci/ens1370.c
1109
struct ensoniq *ensoniq = snd_pcm_substream_chip(substream);
sound/pci/ens1370.c
1112
ensoniq->mode |= ES_MODE_PLAY2;
sound/pci/ens1370.c
1113
ensoniq->playback2_substream = substream;
sound/pci/ens1370.c
1116
scoped_guard(spinlock_irq, &ensoniq->reg_lock) {
sound/pci/ens1370.c
1117
if (ensoniq->spdif && ensoniq->playback1_substream == NULL)
sound/pci/ens1370.c
1118
ensoniq->spdif_stream = ensoniq->spdif_default;
sound/pci/ens1370.c
1132
struct ensoniq *ensoniq = snd_pcm_substream_chip(substream);
sound/pci/ens1370.c
1135
ensoniq->mode |= ES_MODE_CAPTURE;
sound/pci/ens1370.c
1136
ensoniq->capture_substream = substream;
sound/pci/ens1370.c
1151
struct ensoniq *ensoniq = snd_pcm_substream_chip(substream);
sound/pci/ens1370.c
1153
ensoniq->playback1_substream = NULL;
sound/pci/ens1370.c
1154
ensoniq->mode &= ~ES_MODE_PLAY1;
sound/pci/ens1370.c
1160
struct ensoniq *ensoniq = snd_pcm_substream_chip(substream);
sound/pci/ens1370.c
1162
ensoniq->playback2_substream = NULL;
sound/pci/ens1370.c
1163
guard(spinlock_irq)(&ensoniq->reg_lock);
sound/pci/ens1370.c
1165
ensoniq->u.es1370.pclkdiv_lock &= ~ES_MODE_PLAY2;
sound/pci/ens1370.c
1167
ensoniq->mode &= ~ES_MODE_PLAY2;
sound/pci/ens1370.c
1173
struct ensoniq *ensoniq = snd_pcm_substream_chip(substream);
sound/pci/ens1370.c
1175
ensoniq->capture_substream = NULL;
sound/pci/ens1370.c
1176
guard(spinlock_irq)(&ensoniq->reg_lock);
sound/pci/ens1370.c
1178
ensoniq->u.es1370.pclkdiv_lock &= ~ES_MODE_CAPTURE;
sound/pci/ens1370.c
1180
ensoniq->mode &= ~ES_MODE_CAPTURE;
sound/pci/ens1370.c
121
#define ES_REG(ensoniq, x) ((ensoniq)->port + ES_REG_##x)
sound/pci/ens1370.c
1216
static int snd_ensoniq_pcm(struct ensoniq *ensoniq, int device)
sound/pci/ens1370.c
1221
err = snd_pcm_new(ensoniq->card, CHIP_NAME "/1", device, 1, 1, &pcm);
sound/pci/ens1370.c
1232
pcm->private_data = ensoniq;
sound/pci/ens1370.c
1235
ensoniq->pcm1 = pcm;
sound/pci/ens1370.c
1238
&ensoniq->pci->dev, 64*1024, 128*1024);
sound/pci/ens1370.c
1250
static int snd_ensoniq_pcm2(struct ensoniq *ensoniq, int device)
sound/pci/ens1370.c
1255
err = snd_pcm_new(ensoniq->card, CHIP_NAME "/2", device, 1, 0, &pcm);
sound/pci/ens1370.c
1264
pcm->private_data = ensoniq;
sound/pci/ens1370.c
1267
ensoniq->pcm2 = pcm;
sound/pci/ens1370.c
1270
&ensoniq->pci->dev, 64*1024, 128*1024);
sound/pci/ens1370.c
1301
struct ensoniq *ensoniq = snd_kcontrol_chip(kcontrol);
sound/pci/ens1370.c
1303
guard(spinlock_irq)(&ensoniq->reg_lock);
sound/pci/ens1370.c
1304
ucontrol->value.iec958.status[0] = (ensoniq->spdif_default >> 0) & 0xff;
sound/pci/ens1370.c
1305
ucontrol->value.iec958.status[1] = (ensoniq->spdif_default >> 8) & 0xff;
sound/pci/ens1370.c
1306
ucontrol->value.iec958.status[2] = (ensoniq->spdif_default >> 16) & 0xff;
sound/pci/ens1370.c
1307
ucontrol->value.iec958.status[3] = (ensoniq->spdif_default >> 24) & 0xff;
sound/pci/ens1370.c
1314
struct ensoniq *ensoniq = snd_kcontrol_chip(kcontrol);
sound/pci/ens1370.c
1322
guard(spinlock_irq)(&ensoniq->reg_lock);
sound/pci/ens1370.c
1323
change = ensoniq->spdif_default != val;
sound/pci/ens1370.c
1324
ensoniq->spdif_default = val;
sound/pci/ens1370.c
1325
if (change && ensoniq->playback1_substream == NULL &&
sound/pci/ens1370.c
1326
ensoniq->playback2_substream == NULL)
sound/pci/ens1370.c
1327
outl(val, ES_REG(ensoniq, CHANNEL_STATUS));
sound/pci/ens1370.c
1344
struct ensoniq *ensoniq = snd_kcontrol_chip(kcontrol);
sound/pci/ens1370.c
1346
guard(spinlock_irq)(&ensoniq->reg_lock);
sound/pci/ens1370.c
1347
ucontrol->value.iec958.status[0] = (ensoniq->spdif_stream >> 0) & 0xff;
sound/pci/ens1370.c
1348
ucontrol->value.iec958.status[1] = (ensoniq->spdif_stream >> 8) & 0xff;
sound/pci/ens1370.c
1349
ucontrol->value.iec958.status[2] = (ensoniq->spdif_stream >> 16) & 0xff;
sound/pci/ens1370.c
1350
ucontrol->value.iec958.status[3] = (ensoniq->spdif_stream >> 24) & 0xff;
sound/pci/ens1370.c
1357
struct ensoniq *ensoniq = snd_kcontrol_chip(kcontrol);
sound/pci/ens1370.c
1365
guard(spinlock_irq)(&ensoniq->reg_lock);
sound/pci/ens1370.c
1366
change = ensoniq->spdif_stream != val;
sound/pci/ens1370.c
1367
ensoniq->spdif_stream = val;
sound/pci/ens1370.c
1368
if (change && (ensoniq->playback1_substream != NULL ||
sound/pci/ens1370.c
1369
ensoniq->playback2_substream != NULL))
sound/pci/ens1370.c
1370
outl(val, ES_REG(ensoniq, CHANNEL_STATUS));
sound/pci/ens1370.c
1383
struct ensoniq *ensoniq = snd_kcontrol_chip(kcontrol);
sound/pci/ens1370.c
1385
guard(spinlock_irq)(&ensoniq->reg_lock);
sound/pci/ens1370.c
1386
ucontrol->value.integer.value[0] = ensoniq->ctrl & ES_1373_SPDIF_THRU ? 1 : 0;
sound/pci/ens1370.c
1393
struct ensoniq *ensoniq = snd_kcontrol_chip(kcontrol);
sound/pci/ens1370.c
1399
guard(spinlock_irq)(&ensoniq->reg_lock);
sound/pci/ens1370.c
1400
change = (ensoniq->ctrl & ES_1373_SPDIF_THRU) != nval1;
sound/pci/ens1370.c
1401
ensoniq->ctrl &= ~ES_1373_SPDIF_THRU;
sound/pci/ens1370.c
1402
ensoniq->ctrl |= nval1;
sound/pci/ens1370.c
1403
ensoniq->cssr &= ~ES_1373_SPDIF_EN;
sound/pci/ens1370.c
1404
ensoniq->cssr |= nval2;
sound/pci/ens1370.c
1405
outl(ensoniq->ctrl, ES_REG(ensoniq, CONTROL));
sound/pci/ens1370.c
1406
outl(ensoniq->cssr, ES_REG(ensoniq, STATUS));
sound/pci/ens1370.c
1443
struct ensoniq *ensoniq = snd_kcontrol_chip(kcontrol);
sound/pci/ens1370.c
1446
guard(spinlock_irq)(&ensoniq->reg_lock);
sound/pci/ens1370.c
1447
if ((ensoniq->cssr & (ES_1373_REAR_BIT27|ES_1373_REAR_BIT26|
sound/pci/ens1370.c
1457
struct ensoniq *ensoniq = snd_kcontrol_chip(kcontrol);
sound/pci/ens1370.c
1463
guard(spinlock_irq)(&ensoniq->reg_lock);
sound/pci/ens1370.c
1464
change = (ensoniq->cssr & (ES_1373_REAR_BIT27|
sound/pci/ens1370.c
1466
ensoniq->cssr &= ~(ES_1373_REAR_BIT27|ES_1373_REAR_BIT26|ES_1373_REAR_BIT24);
sound/pci/ens1370.c
1467
ensoniq->cssr |= nval1;
sound/pci/ens1370.c
1468
outl(ensoniq->cssr, ES_REG(ensoniq, STATUS));
sound/pci/ens1370.c
1486
struct ensoniq *ensoniq = snd_kcontrol_chip(kcontrol);
sound/pci/ens1370.c
1489
guard(spinlock_irq)(&ensoniq->reg_lock);
sound/pci/ens1370.c
1490
if (ensoniq->ctrl & ES_1371_GPIO_OUT(4))
sound/pci/ens1370.c
1499
struct ensoniq *ensoniq = snd_kcontrol_chip(kcontrol);
sound/pci/ens1370.c
1503
guard(spinlock_irq)(&ensoniq->reg_lock);
sound/pci/ens1370.c
1504
ctrl = ensoniq->ctrl;
sound/pci/ens1370.c
1506
ensoniq->ctrl |= ES_1371_GPIO_OUT(4); /* switch line-in -> rear out */
sound/pci/ens1370.c
1508
ensoniq->ctrl &= ~ES_1371_GPIO_OUT(4);
sound/pci/ens1370.c
1509
changed = (ctrl != ensoniq->ctrl);
sound/pci/ens1370.c
1511
outl(ensoniq->ctrl, ES_REG(ensoniq, CONTROL));
sound/pci/ens1370.c
1526
struct ensoniq *ensoniq = ac97->private_data;
sound/pci/ens1370.c
1527
ensoniq->u.es1371.ac97 = NULL;
sound/pci/ens1370.c
1536
static int es1371_quirk_lookup(struct ensoniq *ensoniq,
sound/pci/ens1370.c
1540
if (ensoniq->pci->vendor == list->vid &&
sound/pci/ens1370.c
1541
ensoniq->pci->device == list->did &&
sound/pci/ens1370.c
1542
ensoniq->rev == list->rev)
sound/pci/ens1370.c
1564
static int snd_ensoniq_1371_mixer(struct ensoniq *ensoniq,
sound/pci/ens1370.c
1567
struct snd_card *card = ensoniq->card;
sound/pci/ens1370.c
1582
ac97.private_data = ensoniq;
sound/pci/ens1370.c
1584
ac97.pci = ensoniq->pci;
sound/pci/ens1370.c
1586
err = snd_ac97_mixer(pbus, &ac97, &ensoniq->u.es1371.ac97);
sound/pci/ens1370.c
1590
(!has_spdif && es1371_quirk_lookup(ensoniq, es1371_spdif_present))) {
sound/pci/ens1370.c
1594
ensoniq->spdif_default = ensoniq->spdif_stream =
sound/pci/ens1370.c
1596
outl(ensoniq->spdif_default, ES_REG(ensoniq, CHANNEL_STATUS));
sound/pci/ens1370.c
1598
if (ensoniq->u.es1371.ac97->ext_id & AC97_EI_SPDIF)
sound/pci/ens1370.c
1602
kctl = snd_ctl_new1(&snd_es1371_mixer_spdif[i], ensoniq);
sound/pci/ens1370.c
1611
if (ensoniq->u.es1371.ac97->ext_id & AC97_EI_SDAC) {
sound/pci/ens1370.c
1613
ensoniq->cssr &= ~(ES_1373_REAR_BIT27|ES_1373_REAR_BIT24);
sound/pci/ens1370.c
1614
ensoniq->cssr |= ES_1373_REAR_BIT26;
sound/pci/ens1370.c
1615
err = snd_ctl_add(card, snd_ctl_new1(&snd_ens1373_rear, ensoniq));
sound/pci/ens1370.c
1620
snd_pci_quirk_lookup(ensoniq->pci, ens1373_line_quirk)) {
sound/pci/ens1370.c
1622
ensoniq));
sound/pci/ens1370.c
1644
struct ensoniq *ensoniq = snd_kcontrol_chip(kcontrol);
sound/pci/ens1370.c
1647
guard(spinlock_irq)(&ensoniq->reg_lock);
sound/pci/ens1370.c
1648
ucontrol->value.integer.value[0] = ensoniq->ctrl & mask ? 1 : 0;
sound/pci/ens1370.c
1655
struct ensoniq *ensoniq = snd_kcontrol_chip(kcontrol);
sound/pci/ens1370.c
1661
guard(spinlock_irq)(&ensoniq->reg_lock);
sound/pci/ens1370.c
1662
change = (ensoniq->ctrl & mask) != nval;
sound/pci/ens1370.c
1663
ensoniq->ctrl &= ~mask;
sound/pci/ens1370.c
1664
ensoniq->ctrl |= nval;
sound/pci/ens1370.c
1665
outl(ensoniq->ctrl, ES_REG(ensoniq, CONTROL));
sound/pci/ens1370.c
1682
struct ensoniq *ensoniq = ak4531->private_data;
sound/pci/ens1370.c
1683
ensoniq->u.es1370.ak4531 = NULL;
sound/pci/ens1370.c
1686
static int snd_ensoniq_1370_mixer(struct ensoniq *ensoniq)
sound/pci/ens1370.c
1688
struct snd_card *card = ensoniq->card;
sound/pci/ens1370.c
1694
outw(ES_1370_CODEC_WRITE(AK4531_RESET, 0x02), ES_REG(ensoniq, 1370_CODEC));
sound/pci/ens1370.c
1695
inw(ES_REG(ensoniq, 1370_CODEC));
sound/pci/ens1370.c
1697
outw(ES_1370_CODEC_WRITE(AK4531_RESET, 0x03), ES_REG(ensoniq, 1370_CODEC));
sound/pci/ens1370.c
1698
inw(ES_REG(ensoniq, 1370_CODEC));
sound/pci/ens1370.c
1703
ak4531.private_data = ensoniq;
sound/pci/ens1370.c
1705
err = snd_ak4531_mixer(card, &ak4531, &ensoniq->u.es1370.ak4531);
sound/pci/ens1370.c
1709
err = snd_ctl_add(card, snd_ctl_new1(&snd_es1370_controls[idx], ensoniq));
sound/pci/ens1370.c
1721
static int snd_ensoniq_get_joystick_port(struct ensoniq *ensoniq, int dev)
sound/pci/ens1370.c
1733
dev_err(ensoniq->card->dev,
sound/pci/ens1370.c
1739
static int snd_ensoniq_get_joystick_port(struct ensoniq *ensoniq, int dev)
sound/pci/ens1370.c
1745
static int snd_ensoniq_create_gameport(struct ensoniq *ensoniq, int dev)
sound/pci/ens1370.c
1750
io_port = snd_ensoniq_get_joystick_port(ensoniq, dev);
sound/pci/ens1370.c
1761
dev_warn(ensoniq->card->dev,
sound/pci/ens1370.c
1769
dev_warn(ensoniq->card->dev,
sound/pci/ens1370.c
1777
ensoniq->gameport = gp = gameport_allocate_port();
sound/pci/ens1370.c
1779
dev_err(ensoniq->card->dev,
sound/pci/ens1370.c
1786
gameport_set_phys(gp, "pci%s/gameport0", pci_name(ensoniq->pci));
sound/pci/ens1370.c
1787
gameport_set_dev_parent(gp, &ensoniq->pci->dev);
sound/pci/ens1370.c
1790
ensoniq->ctrl |= ES_JYSTK_EN;
sound/pci/ens1370.c
1792
ensoniq->ctrl &= ~ES_1371_JOY_ASELM;
sound/pci/ens1370.c
1793
ensoniq->ctrl |= ES_1371_JOY_ASEL((io_port - 0x200) / 8);
sound/pci/ens1370.c
1795
outl(ensoniq->ctrl, ES_REG(ensoniq, CONTROL));
sound/pci/ens1370.c
1797
gameport_register_port(ensoniq->gameport);
sound/pci/ens1370.c
1802
static void snd_ensoniq_free_gameport(struct ensoniq *ensoniq)
sound/pci/ens1370.c
1804
if (ensoniq->gameport) {
sound/pci/ens1370.c
1805
int port = ensoniq->gameport->io;
sound/pci/ens1370.c
1807
gameport_unregister_port(ensoniq->gameport);
sound/pci/ens1370.c
1808
ensoniq->gameport = NULL;
sound/pci/ens1370.c
1809
ensoniq->ctrl &= ~ES_JYSTK_EN;
sound/pci/ens1370.c
1810
outl(ensoniq->ctrl, ES_REG(ensoniq, CONTROL));
sound/pci/ens1370.c
1815
static inline int snd_ensoniq_create_gameport(struct ensoniq *ensoniq, long port) { return -ENOSYS; }
sound/pci/ens1370.c
1816
static inline void snd_ensoniq_free_gameport(struct ensoniq *ensoniq) { }
sound/pci/ens1370.c
1826
struct ensoniq *ensoniq = entry->private_data;
sound/pci/ens1370.c
1830
str_on_off(ensoniq->ctrl & ES_JYSTK_EN));
sound/pci/ens1370.c
1833
str_on_off(ensoniq->ctrl & ES_1370_XCTL1));
sound/pci/ens1370.c
1835
str_on_off(ensoniq->ctrl & ES_1370_XCTL0));
sound/pci/ens1370.c
1838
(ES_1371_JOY_ASELI(ensoniq->ctrl) * 8) + 0x200);
sound/pci/ens1370.c
1842
static void snd_ensoniq_proc_init(struct ensoniq *ensoniq)
sound/pci/ens1370.c
1844
snd_card_ro_proc_new(ensoniq->card, "audiopci", ensoniq,
sound/pci/ens1370.c
1854
struct ensoniq *ensoniq = card->private_data;
sound/pci/ens1370.c
1856
snd_ensoniq_free_gameport(ensoniq);
sound/pci/ens1370.c
1858
outl(ES_1370_SERR_DISABLE, ES_REG(ensoniq, CONTROL)); /* switch everything off */
sound/pci/ens1370.c
1859
outl(0, ES_REG(ensoniq, SERIAL)); /* clear serial interface */
sound/pci/ens1370.c
1861
outl(0, ES_REG(ensoniq, CONTROL)); /* switch everything off */
sound/pci/ens1370.c
1862
outl(0, ES_REG(ensoniq, SERIAL)); /* clear serial interface */
sound/pci/ens1370.c
1885
static void snd_ensoniq_chip_init(struct ensoniq *ensoniq)
sound/pci/ens1370.c
1894
outl(ensoniq->ctrl, ES_REG(ensoniq, CONTROL));
sound/pci/ens1370.c
1895
outl(ensoniq->sctrl, ES_REG(ensoniq, SERIAL));
sound/pci/ens1370.c
1896
outl(ES_MEM_PAGEO(ES_PAGE_ADC), ES_REG(ensoniq, MEM_PAGE));
sound/pci/ens1370.c
1897
outl(ensoniq->dma_bug->addr, ES_REG(ensoniq, PHANTOM_FRAME));
sound/pci/ens1370.c
1898
outl(0, ES_REG(ensoniq, PHANTOM_COUNT));
sound/pci/ens1370.c
1900
outl(ensoniq->ctrl, ES_REG(ensoniq, CONTROL));
sound/pci/ens1370.c
1901
outl(ensoniq->sctrl, ES_REG(ensoniq, SERIAL));
sound/pci/ens1370.c
1902
outl(0, ES_REG(ensoniq, 1371_LEGACY));
sound/pci/ens1370.c
1903
if (es1371_quirk_lookup(ensoniq, es1371_ac97_reset_hack)) {
sound/pci/ens1370.c
1904
outl(ensoniq->cssr, ES_REG(ensoniq, STATUS));
sound/pci/ens1370.c
1910
outl(ensoniq->ctrl | ES_1371_SYNC_RES, ES_REG(ensoniq, CONTROL));
sound/pci/ens1370.c
1911
inl(ES_REG(ensoniq, CONTROL));
sound/pci/ens1370.c
1913
outl(ensoniq->ctrl, ES_REG(ensoniq, CONTROL));
sound/pci/ens1370.c
1915
snd_es1371_wait_src_ready(ensoniq);
sound/pci/ens1370.c
1916
outl(ES_1371_SRC_DISABLE, ES_REG(ensoniq, 1371_SMPRATE));
sound/pci/ens1370.c
1918
snd_es1371_src_write(ensoniq, idx, 0);
sound/pci/ens1370.c
1919
snd_es1371_src_write(ensoniq, ES_SMPREG_DAC1 + ES_SMPREG_TRUNC_N, 16 << 4);
sound/pci/ens1370.c
1920
snd_es1371_src_write(ensoniq, ES_SMPREG_DAC1 + ES_SMPREG_INT_REGS, 16 << 10);
sound/pci/ens1370.c
1921
snd_es1371_src_write(ensoniq, ES_SMPREG_DAC2 + ES_SMPREG_TRUNC_N, 16 << 4);
sound/pci/ens1370.c
1922
snd_es1371_src_write(ensoniq, ES_SMPREG_DAC2 + ES_SMPREG_INT_REGS, 16 << 10);
sound/pci/ens1370.c
1923
snd_es1371_src_write(ensoniq, ES_SMPREG_VOL_ADC, 1 << 12);
sound/pci/ens1370.c
1924
snd_es1371_src_write(ensoniq, ES_SMPREG_VOL_ADC + 1, 1 << 12);
sound/pci/ens1370.c
1925
snd_es1371_src_write(ensoniq, ES_SMPREG_VOL_DAC1, 1 << 12);
sound/pci/ens1370.c
1926
snd_es1371_src_write(ensoniq, ES_SMPREG_VOL_DAC1 + 1, 1 << 12);
sound/pci/ens1370.c
1927
snd_es1371_src_write(ensoniq, ES_SMPREG_VOL_DAC2, 1 << 12);
sound/pci/ens1370.c
1928
snd_es1371_src_write(ensoniq, ES_SMPREG_VOL_DAC2 + 1, 1 << 12);
sound/pci/ens1370.c
1929
snd_es1371_adc_rate(ensoniq, 22050);
sound/pci/ens1370.c
1930
snd_es1371_dac1_rate(ensoniq, 22050);
sound/pci/ens1370.c
1931
snd_es1371_dac2_rate(ensoniq, 22050);
sound/pci/ens1370.c
1938
snd_es1371_wait_src_ready(ensoniq);
sound/pci/ens1370.c
1939
outl(0, ES_REG(ensoniq, 1371_SMPRATE));
sound/pci/ens1370.c
1941
outl(ES_1371_CODEC_WRITE(0, 0), ES_REG(ensoniq, 1371_CODEC));
sound/pci/ens1370.c
1943
outb(ensoniq->uartc = 0x00, ES_REG(ensoniq, UART_CONTROL));
sound/pci/ens1370.c
1944
outb(0x00, ES_REG(ensoniq, UART_RES));
sound/pci/ens1370.c
1945
outl(ensoniq->cssr, ES_REG(ensoniq, STATUS));
sound/pci/ens1370.c
1951
struct ensoniq *ensoniq = card->private_data;
sound/pci/ens1370.c
1956
snd_ac97_suspend(ensoniq->u.es1371.ac97);
sound/pci/ens1370.c
1959
outw(ES_1370_CODEC_WRITE(AK4531_RESET, 0x02), ES_REG(ensoniq, 1370_CODEC));
sound/pci/ens1370.c
1960
inw(ES_REG(ensoniq, 1370_CODEC));
sound/pci/ens1370.c
1962
outw(ES_1370_CODEC_WRITE(AK4531_RESET, 0x03), ES_REG(ensoniq, 1370_CODEC));
sound/pci/ens1370.c
1963
inw(ES_REG(ensoniq, 1370_CODEC));
sound/pci/ens1370.c
1965
snd_ak4531_suspend(ensoniq->u.es1370.ak4531);
sound/pci/ens1370.c
1973
struct ensoniq *ensoniq = card->private_data;
sound/pci/ens1370.c
1975
snd_ensoniq_chip_init(ensoniq);
sound/pci/ens1370.c
1978
snd_ac97_resume(ensoniq->u.es1371.ac97);
sound/pci/ens1370.c
1980
snd_ak4531_resume(ensoniq->u.es1370.ak4531);
sound/pci/ens1370.c
1991
struct ensoniq *ensoniq = card->private_data;
sound/pci/ens1370.c
1997
spin_lock_init(&ensoniq->reg_lock);
sound/pci/ens1370.c
1998
mutex_init(&ensoniq->src_mutex);
sound/pci/ens1370.c
1999
ensoniq->card = card;
sound/pci/ens1370.c
2000
ensoniq->pci = pci;
sound/pci/ens1370.c
2001
ensoniq->irq = -1;
sound/pci/ens1370.c
2005
ensoniq->port = pci_resource_start(pci, 0);
sound/pci/ens1370.c
2007
IRQF_SHARED, KBUILD_MODNAME, ensoniq)) {
sound/pci/ens1370.c
2011
ensoniq->irq = pci->irq;
sound/pci/ens1370.c
2012
card->sync_irq = ensoniq->irq;
sound/pci/ens1370.c
2014
ensoniq->dma_bug =
sound/pci/ens1370.c
2016
if (!ensoniq->dma_bug)
sound/pci/ens1370.c
2020
ensoniq->rev = pci->revision;
sound/pci/ens1370.c
2023
ensoniq->ctrl = ES_1370_CDC_EN | ES_1370_SERR_DISABLE |
sound/pci/ens1370.c
2026
ensoniq->ctrl = ES_1370_CDC_EN | ES_1370_PCLKDIVO(ES_1370_SRTODIV(8000));
sound/pci/ens1370.c
2028
ensoniq->sctrl = 0;
sound/pci/ens1370.c
2030
ensoniq->ctrl = 0;
sound/pci/ens1370.c
2031
ensoniq->sctrl = 0;
sound/pci/ens1370.c
2032
ensoniq->cssr = 0;
sound/pci/ens1370.c
2034
ensoniq->ctrl |= ES_1371_GPIO_OUT(1); /* turn amplifier on */
sound/pci/ens1370.c
2036
if (es1371_quirk_lookup(ensoniq, es1371_ac97_reset_hack))
sound/pci/ens1370.c
2037
ensoniq->cssr |= ES_1371_ST_AC97_RST;
sound/pci/ens1370.c
2041
snd_ensoniq_chip_init(ensoniq);
sound/pci/ens1370.c
2043
snd_ensoniq_proc_init(ensoniq);
sound/pci/ens1370.c
2051
static void snd_ensoniq_midi_interrupt(struct ensoniq * ensoniq)
sound/pci/ens1370.c
2053
struct snd_rawmidi *rmidi = ensoniq->rmidi;
sound/pci/ens1370.c
2059
scoped_guard(spinlock, &ensoniq->reg_lock) {
sound/pci/ens1370.c
2060
mask = ensoniq->uartm & ES_MODE_INPUT ? ES_RXRDY : 0;
sound/pci/ens1370.c
2062
status = inb(ES_REG(ensoniq, UART_STATUS));
sound/pci/ens1370.c
2065
byte = inb(ES_REG(ensoniq, UART_DATA));
sound/pci/ens1370.c
2066
snd_rawmidi_receive(ensoniq->midi_input, &byte, 1);
sound/pci/ens1370.c
2071
guard(spinlock)(&ensoniq->reg_lock);
sound/pci/ens1370.c
2072
mask = ensoniq->uartm & ES_MODE_OUTPUT ? ES_TXRDY : 0;
sound/pci/ens1370.c
2074
status = inb(ES_REG(ensoniq, UART_STATUS));
sound/pci/ens1370.c
2077
if (snd_rawmidi_transmit(ensoniq->midi_output, &byte, 1) != 1) {
sound/pci/ens1370.c
2078
ensoniq->uartc &= ~ES_TXINTENM;
sound/pci/ens1370.c
2079
outb(ensoniq->uartc, ES_REG(ensoniq, UART_CONTROL));
sound/pci/ens1370.c
2082
outb(byte, ES_REG(ensoniq, UART_DATA));
sound/pci/ens1370.c
2089
struct ensoniq *ensoniq = substream->rmidi->private_data;
sound/pci/ens1370.c
2091
guard(spinlock_irq)(&ensoniq->reg_lock);
sound/pci/ens1370.c
2092
ensoniq->uartm |= ES_MODE_INPUT;
sound/pci/ens1370.c
2093
ensoniq->midi_input = substream;
sound/pci/ens1370.c
2094
if (!(ensoniq->uartm & ES_MODE_OUTPUT)) {
sound/pci/ens1370.c
2095
outb(ES_CNTRL(3), ES_REG(ensoniq, UART_CONTROL));
sound/pci/ens1370.c
2096
outb(ensoniq->uartc = 0, ES_REG(ensoniq, UART_CONTROL));
sound/pci/ens1370.c
2097
outl(ensoniq->ctrl |= ES_UART_EN, ES_REG(ensoniq, CONTROL));
sound/pci/ens1370.c
2104
struct ensoniq *ensoniq = substream->rmidi->private_data;
sound/pci/ens1370.c
2106
guard(spinlock_irq)(&ensoniq->reg_lock);
sound/pci/ens1370.c
2107
if (!(ensoniq->uartm & ES_MODE_OUTPUT)) {
sound/pci/ens1370.c
2108
outb(ensoniq->uartc = 0, ES_REG(ensoniq, UART_CONTROL));
sound/pci/ens1370.c
2109
outl(ensoniq->ctrl &= ~ES_UART_EN, ES_REG(ensoniq, CONTROL));
sound/pci/ens1370.c
2111
outb(ensoniq->uartc &= ~ES_RXINTEN, ES_REG(ensoniq, UART_CONTROL));
sound/pci/ens1370.c
2113
ensoniq->midi_input = NULL;
sound/pci/ens1370.c
2114
ensoniq->uartm &= ~ES_MODE_INPUT;
sound/pci/ens1370.c
2120
struct ensoniq *ensoniq = substream->rmidi->private_data;
sound/pci/ens1370.c
2122
guard(spinlock_irq)(&ensoniq->reg_lock);
sound/pci/ens1370.c
2123
ensoniq->uartm |= ES_MODE_OUTPUT;
sound/pci/ens1370.c
2124
ensoniq->midi_output = substream;
sound/pci/ens1370.c
2125
if (!(ensoniq->uartm & ES_MODE_INPUT)) {
sound/pci/ens1370.c
2126
outb(ES_CNTRL(3), ES_REG(ensoniq, UART_CONTROL));
sound/pci/ens1370.c
2127
outb(ensoniq->uartc = 0, ES_REG(ensoniq, UART_CONTROL));
sound/pci/ens1370.c
2128
outl(ensoniq->ctrl |= ES_UART_EN, ES_REG(ensoniq, CONTROL));
sound/pci/ens1370.c
2135
struct ensoniq *ensoniq = substream->rmidi->private_data;
sound/pci/ens1370.c
2137
guard(spinlock_irq)(&ensoniq->reg_lock);
sound/pci/ens1370.c
2138
if (!(ensoniq->uartm & ES_MODE_INPUT)) {
sound/pci/ens1370.c
2139
outb(ensoniq->uartc = 0, ES_REG(ensoniq, UART_CONTROL));
sound/pci/ens1370.c
2140
outl(ensoniq->ctrl &= ~ES_UART_EN, ES_REG(ensoniq, CONTROL));
sound/pci/ens1370.c
2142
outb(ensoniq->uartc &= ~ES_TXINTENM, ES_REG(ensoniq, UART_CONTROL));
sound/pci/ens1370.c
2144
ensoniq->midi_output = NULL;
sound/pci/ens1370.c
2145
ensoniq->uartm &= ~ES_MODE_OUTPUT;
sound/pci/ens1370.c
2151
struct ensoniq *ensoniq = substream->rmidi->private_data;
sound/pci/ens1370.c
2154
guard(spinlock_irqsave)(&ensoniq->reg_lock);
sound/pci/ens1370.c
2156
if ((ensoniq->uartc & ES_RXINTEN) == 0) {
sound/pci/ens1370.c
2159
inb(ES_REG(ensoniq, UART_DATA));
sound/pci/ens1370.c
2160
ensoniq->uartc |= ES_RXINTEN;
sound/pci/ens1370.c
2161
outb(ensoniq->uartc, ES_REG(ensoniq, UART_CONTROL));
sound/pci/ens1370.c
2164
if (ensoniq->uartc & ES_RXINTEN) {
sound/pci/ens1370.c
2165
ensoniq->uartc &= ~ES_RXINTEN;
sound/pci/ens1370.c
2166
outb(ensoniq->uartc, ES_REG(ensoniq, UART_CONTROL));
sound/pci/ens1370.c
2173
struct ensoniq *ensoniq = substream->rmidi->private_data;
sound/pci/ens1370.c
2176
guard(spinlock_irqsave)(&ensoniq->reg_lock);
sound/pci/ens1370.c
2178
if (ES_TXINTENI(ensoniq->uartc) == 0) {
sound/pci/ens1370.c
2179
ensoniq->uartc |= ES_TXINTENO(1);
sound/pci/ens1370.c
2181
while (ES_TXINTENI(ensoniq->uartc) == 1 &&
sound/pci/ens1370.c
2182
(inb(ES_REG(ensoniq, UART_STATUS)) & ES_TXRDY)) {
sound/pci/ens1370.c
2184
ensoniq->uartc &= ~ES_TXINTENM;
sound/pci/ens1370.c
2186
outb(byte, ES_REG(ensoniq, UART_DATA));
sound/pci/ens1370.c
2189
outb(ensoniq->uartc, ES_REG(ensoniq, UART_CONTROL));
sound/pci/ens1370.c
2192
if (ES_TXINTENI(ensoniq->uartc) == 1) {
sound/pci/ens1370.c
2193
ensoniq->uartc &= ~ES_TXINTENM;
sound/pci/ens1370.c
2194
outb(ensoniq->uartc, ES_REG(ensoniq, UART_CONTROL));
sound/pci/ens1370.c
2213
static int snd_ensoniq_midi(struct ensoniq *ensoniq, int device)
sound/pci/ens1370.c
2218
err = snd_rawmidi_new(ensoniq->card, "ES1370/1", device, 1, 1, &rmidi);
sound/pci/ens1370.c
2226
rmidi->private_data = ensoniq;
sound/pci/ens1370.c
2227
ensoniq->rmidi = rmidi;
sound/pci/ens1370.c
2237
struct ensoniq *ensoniq = dev_id;
sound/pci/ens1370.c
2240
if (ensoniq == NULL)
sound/pci/ens1370.c
2243
status = inl(ES_REG(ensoniq, STATUS));
sound/pci/ens1370.c
2247
scoped_guard(spinlock, &ensoniq->reg_lock) {
sound/pci/ens1370.c
2248
sctrl = ensoniq->sctrl;
sound/pci/ens1370.c
2255
outl(sctrl, ES_REG(ensoniq, SERIAL));
sound/pci/ens1370.c
2256
outl(ensoniq->sctrl, ES_REG(ensoniq, SERIAL));
sound/pci/ens1370.c
2260
snd_ensoniq_midi_interrupt(ensoniq);
sound/pci/ens1370.c
2261
if ((status & ES_DAC2) && ensoniq->playback2_substream)
sound/pci/ens1370.c
2262
snd_pcm_period_elapsed(ensoniq->playback2_substream);
sound/pci/ens1370.c
2263
if ((status & ES_ADC) && ensoniq->capture_substream)
sound/pci/ens1370.c
2264
snd_pcm_period_elapsed(ensoniq->capture_substream);
sound/pci/ens1370.c
2265
if ((status & ES_DAC1) && ensoniq->playback1_substream)
sound/pci/ens1370.c
2266
snd_pcm_period_elapsed(ensoniq->playback1_substream);
sound/pci/ens1370.c
2275
struct ensoniq *ensoniq;
sound/pci/ens1370.c
2286
sizeof(*ensoniq), &card);
sound/pci/ens1370.c
2289
ensoniq = card->private_data;
sound/pci/ens1370.c
2296
err = snd_ensoniq_1370_mixer(ensoniq);
sound/pci/ens1370.c
2301
err = snd_ensoniq_1371_mixer(ensoniq, spdif[dev], lineio[dev]);
sound/pci/ens1370.c
2305
err = snd_ensoniq_pcm(ensoniq, 0);
sound/pci/ens1370.c
2308
err = snd_ensoniq_pcm2(ensoniq, 1);
sound/pci/ens1370.c
2311
err = snd_ensoniq_midi(ensoniq, 0);
sound/pci/ens1370.c
2315
snd_ensoniq_create_gameport(ensoniq, dev);
sound/pci/ens1370.c
2323
ensoniq->port,
sound/pci/ens1370.c
2324
ensoniq->irq);
sound/pci/ens1370.c
496
static unsigned int snd_es1371_wait_src_ready(struct ensoniq * ensoniq)
sound/pci/ens1370.c
501
r = inl(ES_REG(ensoniq, 1371_SMPRATE));
sound/pci/ens1370.c
506
dev_err(ensoniq->card->dev, "wait src ready timeout 0x%lx [0x%x]\n",
sound/pci/ens1370.c
507
ES_REG(ensoniq, 1371_SMPRATE), r);
sound/pci/ens1370.c
511
static unsigned int snd_es1371_src_read(struct ensoniq * ensoniq, unsigned short reg)
sound/pci/ens1370.c
516
temp = orig = snd_es1371_wait_src_ready(ensoniq);
sound/pci/ens1370.c
522
outl(r, ES_REG(ensoniq, 1371_SMPRATE));
sound/pci/ens1370.c
525
temp = snd_es1371_wait_src_ready(ensoniq);
sound/pci/ens1370.c
530
temp = inl(ES_REG(ensoniq, 1371_SMPRATE));
sound/pci/ens1370.c
540
outl(r, ES_REG(ensoniq, 1371_SMPRATE));
sound/pci/ens1370.c
545
static void snd_es1371_src_write(struct ensoniq * ensoniq,
sound/pci/ens1370.c
550
r = snd_es1371_wait_src_ready(ensoniq) &
sound/pci/ens1370.c
554
outl(r | ES_1371_SRC_RAM_WE, ES_REG(ensoniq, 1371_SMPRATE));
sound/pci/ens1370.c
564
struct ensoniq *ensoniq = ak4531->private_data;
sound/pci/ens1370.c
568
dev_dbg(ensoniq->card->dev,
sound/pci/ens1370.c
570
reg, val, ES_1370_CODEC_WRITE(reg, val), ES_REG(ensoniq, 1370_CODEC));
sound/pci/ens1370.c
573
if (!(inl(ES_REG(ensoniq, STATUS)) & ES_1370_CSTAT)) {
sound/pci/ens1370.c
574
outw(ES_1370_CODEC_WRITE(reg, val), ES_REG(ensoniq, 1370_CODEC));
sound/pci/ens1370.c
579
dev_err(ensoniq->card->dev, "codec write timeout, status = 0x%x\n",
sound/pci/ens1370.c
580
inl(ES_REG(ensoniq, STATUS)));
sound/pci/ens1370.c
587
static inline bool is_ev1938(struct ensoniq *ensoniq)
sound/pci/ens1370.c
589
return ensoniq->pci->device == 0x8938;
sound/pci/ens1370.c
595
struct ensoniq *ensoniq = ac97->private_data;
sound/pci/ens1370.c
598
flag = is_ev1938(ensoniq) ? EV_1938_CODEC_MAGIC : 0;
sound/pci/ens1370.c
599
guard(mutex)(&ensoniq->src_mutex);
sound/pci/ens1370.c
601
if (!(inl(ES_REG(ensoniq, 1371_CODEC)) & ES_1371_CODEC_WIP)) {
sound/pci/ens1370.c
603
x = snd_es1371_wait_src_ready(ensoniq);
sound/pci/ens1370.c
606
ES_REG(ensoniq, 1371_SMPRATE));
sound/pci/ens1370.c
610
if ((inl(ES_REG(ensoniq, 1371_SMPRATE)) & 0x00870000) ==
sound/pci/ens1370.c
616
if ((inl(ES_REG(ensoniq, 1371_SMPRATE)) & 0x00870000) ==
sound/pci/ens1370.c
621
ES_REG(ensoniq, 1371_CODEC));
sound/pci/ens1370.c
623
snd_es1371_wait_src_ready(ensoniq);
sound/pci/ens1370.c
624
outl(x, ES_REG(ensoniq, 1371_SMPRATE));
sound/pci/ens1370.c
628
dev_err(ensoniq->card->dev, "codec write timeout at 0x%lx [0x%x]\n",
sound/pci/ens1370.c
629
ES_REG(ensoniq, 1371_CODEC), inl(ES_REG(ensoniq, 1371_CODEC)));
sound/pci/ens1370.c
635
struct ensoniq *ensoniq = ac97->private_data;
sound/pci/ens1370.c
638
flag = is_ev1938(ensoniq) ? EV_1938_CODEC_MAGIC : 0;
sound/pci/ens1370.c
640
mutex_lock(&ensoniq->src_mutex);
sound/pci/ens1370.c
642
if (!(inl(ES_REG(ensoniq, 1371_CODEC)) & ES_1371_CODEC_WIP)) {
sound/pci/ens1370.c
644
x = snd_es1371_wait_src_ready(ensoniq);
sound/pci/ens1370.c
647
ES_REG(ensoniq, 1371_SMPRATE));
sound/pci/ens1370.c
651
if ((inl(ES_REG(ensoniq, 1371_SMPRATE)) & 0x00870000) ==
sound/pci/ens1370.c
657
if ((inl(ES_REG(ensoniq, 1371_SMPRATE)) & 0x00870000) ==
sound/pci/ens1370.c
662
ES_REG(ensoniq, 1371_CODEC));
sound/pci/ens1370.c
664
snd_es1371_wait_src_ready(ensoniq);
sound/pci/ens1370.c
665
outl(x, ES_REG(ensoniq, 1371_SMPRATE));
sound/pci/ens1370.c
668
if (!(inl(ES_REG(ensoniq, 1371_CODEC)) & ES_1371_CODEC_WIP))
sound/pci/ens1370.c
673
x = inl(ES_REG(ensoniq, 1371_CODEC));
sound/pci/ens1370.c
675
if (is_ev1938(ensoniq)) {
sound/pci/ens1370.c
677
inl(ES_REG(ensoniq, CONTROL));
sound/pci/ens1370.c
678
x = inl(ES_REG(ensoniq, 1371_CODEC));
sound/pci/ens1370.c
680
mutex_unlock(&ensoniq->src_mutex);
sound/pci/ens1370.c
684
mutex_unlock(&ensoniq->src_mutex);
sound/pci/ens1370.c
686
dev_err(ensoniq->card->dev,
sound/pci/ens1370.c
688
ES_REG(ensoniq, 1371_CODEC), reg,
sound/pci/ens1370.c
689
inl(ES_REG(ensoniq, 1371_CODEC)));
sound/pci/ens1370.c
695
mutex_unlock(&ensoniq->src_mutex);
sound/pci/ens1370.c
696
dev_err(ensoniq->card->dev, "codec read timeout at 0x%lx [0x%x]\n",
sound/pci/ens1370.c
697
ES_REG(ensoniq, 1371_CODEC), inl(ES_REG(ensoniq, 1371_CODEC)));
sound/pci/ens1370.c
710
static void snd_es1371_adc_rate(struct ensoniq * ensoniq, unsigned int rate)
sound/pci/ens1370.c
714
guard(mutex)(&ensoniq->src_mutex);
sound/pci/ens1370.c
723
snd_es1371_src_write(ensoniq, ES_SMPREG_ADC + ES_SMPREG_TRUNC_N,
sound/pci/ens1370.c
728
snd_es1371_src_write(ensoniq, ES_SMPREG_ADC + ES_SMPREG_TRUNC_N,
sound/pci/ens1370.c
731
snd_es1371_src_write(ensoniq, ES_SMPREG_ADC + ES_SMPREG_INT_REGS,
sound/pci/ens1370.c
732
(snd_es1371_src_read(ensoniq, ES_SMPREG_ADC +
sound/pci/ens1370.c
735
snd_es1371_src_write(ensoniq, ES_SMPREG_ADC + ES_SMPREG_VFREQ_FRAC, freq & 0x7fff);
sound/pci/ens1370.c
736
snd_es1371_src_write(ensoniq, ES_SMPREG_VOL_ADC, n << 8);
sound/pci/ens1370.c
737
snd_es1371_src_write(ensoniq, ES_SMPREG_VOL_ADC + 1, n << 8);
sound/pci/ens1370.c
740
static void snd_es1371_dac1_rate(struct ensoniq * ensoniq, unsigned int rate)
sound/pci/ens1370.c
744
guard(mutex)(&ensoniq->src_mutex);
sound/pci/ens1370.c
746
r = (snd_es1371_wait_src_ready(ensoniq) & (ES_1371_SRC_DISABLE |
sound/pci/ens1370.c
749
outl(r, ES_REG(ensoniq, 1371_SMPRATE));
sound/pci/ens1370.c
750
snd_es1371_src_write(ensoniq, ES_SMPREG_DAC1 + ES_SMPREG_INT_REGS,
sound/pci/ens1370.c
751
(snd_es1371_src_read(ensoniq, ES_SMPREG_DAC1 +
sound/pci/ens1370.c
754
snd_es1371_src_write(ensoniq, ES_SMPREG_DAC1 + ES_SMPREG_VFREQ_FRAC, freq & 0x7fff);
sound/pci/ens1370.c
755
r = (snd_es1371_wait_src_ready(ensoniq) & (ES_1371_SRC_DISABLE |
sound/pci/ens1370.c
757
outl(r, ES_REG(ensoniq, 1371_SMPRATE));
sound/pci/ens1370.c
760
static void snd_es1371_dac2_rate(struct ensoniq * ensoniq, unsigned int rate)
sound/pci/ens1370.c
764
guard(mutex)(&ensoniq->src_mutex);
sound/pci/ens1370.c
766
r = (snd_es1371_wait_src_ready(ensoniq) & (ES_1371_SRC_DISABLE |
sound/pci/ens1370.c
769
outl(r, ES_REG(ensoniq, 1371_SMPRATE));
sound/pci/ens1370.c
770
snd_es1371_src_write(ensoniq, ES_SMPREG_DAC2 + ES_SMPREG_INT_REGS,
sound/pci/ens1370.c
771
(snd_es1371_src_read(ensoniq, ES_SMPREG_DAC2 +
sound/pci/ens1370.c
774
snd_es1371_src_write(ensoniq, ES_SMPREG_DAC2 + ES_SMPREG_VFREQ_FRAC,
sound/pci/ens1370.c
776
r = (snd_es1371_wait_src_ready(ensoniq) & (ES_1371_SRC_DISABLE |
sound/pci/ens1370.c
778
outl(r, ES_REG(ensoniq, 1371_SMPRATE));
sound/pci/ens1370.c
785
struct ensoniq *ensoniq = snd_pcm_substream_chip(substream);
sound/pci/ens1370.c
793
if (s == ensoniq->playback1_substream) {
sound/pci/ens1370.c
796
} else if (s == ensoniq->playback2_substream) {
sound/pci/ens1370.c
799
} else if (s == ensoniq->capture_substream)
sound/pci/ens1370.c
802
scoped_guard(spinlock, &ensoniq->reg_lock) {
sound/pci/ens1370.c
804
ensoniq->sctrl |= what;
sound/pci/ens1370.c
806
ensoniq->sctrl &= ~what;
sound/pci/ens1370.c
807
outl(ensoniq->sctrl, ES_REG(ensoniq, SERIAL));
sound/pci/ens1370.c
817
if (s == ensoniq->playback1_substream) {
sound/pci/ens1370.c
820
} else if (s == ensoniq->playback2_substream) {
sound/pci/ens1370.c
823
} else if (s == ensoniq->capture_substream) {
sound/pci/ens1370.c
828
scoped_guard(spinlock, &ensoniq->reg_lock) {
sound/pci/ens1370.c
830
ensoniq->ctrl |= what;
sound/pci/ens1370.c
832
ensoniq->ctrl &= ~what;
sound/pci/ens1370.c
833
outl(ensoniq->ctrl, ES_REG(ensoniq, CONTROL));
sound/pci/ens1370.c
849
struct ensoniq *ensoniq = snd_pcm_substream_chip(substream);
sound/pci/ens1370.c
853
ensoniq->p1_dma_size = snd_pcm_lib_buffer_bytes(substream);
sound/pci/ens1370.c
854
ensoniq->p1_period_size = snd_pcm_lib_period_bytes(substream);
sound/pci/ens1370.c
859
scoped_guard(spinlock_irq, &ensoniq->reg_lock) {
sound/pci/ens1370.c
860
ensoniq->ctrl &= ~ES_DAC1_EN;
sound/pci/ens1370.c
864
ensoniq->ctrl |= ES_1373_BYPASS_P1;
sound/pci/ens1370.c
866
ensoniq->ctrl &= ~ES_1373_BYPASS_P1;
sound/pci/ens1370.c
868
outl(ensoniq->ctrl, ES_REG(ensoniq, CONTROL));
sound/pci/ens1370.c
869
outl(ES_MEM_PAGEO(ES_PAGE_DAC), ES_REG(ensoniq, MEM_PAGE));
sound/pci/ens1370.c
870
outl(runtime->dma_addr, ES_REG(ensoniq, DAC1_FRAME));
sound/pci/ens1370.c
871
outl((ensoniq->p1_dma_size >> 2) - 1, ES_REG(ensoniq, DAC1_SIZE));
sound/pci/ens1370.c
872
ensoniq->sctrl &= ~(ES_P1_LOOP_SEL | ES_P1_PAUSE | ES_P1_SCT_RLD | ES_P1_MODEM);
sound/pci/ens1370.c
873
ensoniq->sctrl |= ES_P1_INT_EN | ES_P1_MODEO(mode);
sound/pci/ens1370.c
874
outl(ensoniq->sctrl, ES_REG(ensoniq, SERIAL));
sound/pci/ens1370.c
875
outl((ensoniq->p1_period_size >> snd_ensoniq_sample_shift[mode]) - 1,
sound/pci/ens1370.c
876
ES_REG(ensoniq, DAC1_COUNT));
sound/pci/ens1370.c
878
ensoniq->ctrl &= ~ES_1370_WTSRSELM;
sound/pci/ens1370.c
880
case 5512: ensoniq->ctrl |= ES_1370_WTSRSEL(0); break;
sound/pci/ens1370.c
881
case 11025: ensoniq->ctrl |= ES_1370_WTSRSEL(1); break;
sound/pci/ens1370.c
882
case 22050: ensoniq->ctrl |= ES_1370_WTSRSEL(2); break;
sound/pci/ens1370.c
883
case 44100: ensoniq->ctrl |= ES_1370_WTSRSEL(3); break;
sound/pci/ens1370.c
887
outl(ensoniq->ctrl, ES_REG(ensoniq, CONTROL));
sound/pci/ens1370.c
890
snd_es1371_dac1_rate(ensoniq, runtime->rate);
sound/pci/ens1370.c
897
struct ensoniq *ensoniq = snd_pcm_substream_chip(substream);
sound/pci/ens1370.c
901
ensoniq->p2_dma_size = snd_pcm_lib_buffer_bytes(substream);
sound/pci/ens1370.c
902
ensoniq->p2_period_size = snd_pcm_lib_period_bytes(substream);
sound/pci/ens1370.c
907
scoped_guard(spinlock_irq, &ensoniq->reg_lock) {
sound/pci/ens1370.c
908
ensoniq->ctrl &= ~ES_DAC2_EN;
sound/pci/ens1370.c
909
outl(ensoniq->ctrl, ES_REG(ensoniq, CONTROL));
sound/pci/ens1370.c
910
outl(ES_MEM_PAGEO(ES_PAGE_DAC), ES_REG(ensoniq, MEM_PAGE));
sound/pci/ens1370.c
911
outl(runtime->dma_addr, ES_REG(ensoniq, DAC2_FRAME));
sound/pci/ens1370.c
912
outl((ensoniq->p2_dma_size >> 2) - 1, ES_REG(ensoniq, DAC2_SIZE));
sound/pci/ens1370.c
913
ensoniq->sctrl &= ~(ES_P2_LOOP_SEL | ES_P2_PAUSE | ES_P2_DAC_SEN |
sound/pci/ens1370.c
915
ensoniq->sctrl |= ES_P2_INT_EN | ES_P2_MODEO(mode) |
sound/pci/ens1370.c
917
outl(ensoniq->sctrl, ES_REG(ensoniq, SERIAL));
sound/pci/ens1370.c
918
outl((ensoniq->p2_period_size >> snd_ensoniq_sample_shift[mode]) - 1,
sound/pci/ens1370.c
919
ES_REG(ensoniq, DAC2_COUNT));
sound/pci/ens1370.c
921
if (!(ensoniq->u.es1370.pclkdiv_lock & ES_MODE_CAPTURE)) {
sound/pci/ens1370.c
922
ensoniq->ctrl &= ~ES_1370_PCLKDIVM;
sound/pci/ens1370.c
923
ensoniq->ctrl |= ES_1370_PCLKDIVO(ES_1370_SRTODIV(runtime->rate));
sound/pci/ens1370.c
924
ensoniq->u.es1370.pclkdiv_lock |= ES_MODE_PLAY2;
sound/pci/ens1370.c
927
outl(ensoniq->ctrl, ES_REG(ensoniq, CONTROL));
sound/pci/ens1370.c
930
snd_es1371_dac2_rate(ensoniq, runtime->rate);
sound/pci/ens1370.c
937
struct ensoniq *ensoniq = snd_pcm_substream_chip(substream);
sound/pci/ens1370.c
941
ensoniq->c_dma_size = snd_pcm_lib_buffer_bytes(substream);
sound/pci/ens1370.c
942
ensoniq->c_period_size = snd_pcm_lib_period_bytes(substream);
sound/pci/ens1370.c
947
scoped_guard(spinlock_irq, &ensoniq->reg_lock) {
sound/pci/ens1370.c
948
ensoniq->ctrl &= ~ES_ADC_EN;
sound/pci/ens1370.c
949
outl(ensoniq->ctrl, ES_REG(ensoniq, CONTROL));
sound/pci/ens1370.c
950
outl(ES_MEM_PAGEO(ES_PAGE_ADC), ES_REG(ensoniq, MEM_PAGE));
sound/pci/ens1370.c
951
outl(runtime->dma_addr, ES_REG(ensoniq, ADC_FRAME));
sound/pci/ens1370.c
952
outl((ensoniq->c_dma_size >> 2) - 1, ES_REG(ensoniq, ADC_SIZE));
sound/pci/ens1370.c
953
ensoniq->sctrl &= ~(ES_R1_LOOP_SEL | ES_R1_MODEM);
sound/pci/ens1370.c
954
ensoniq->sctrl |= ES_R1_INT_EN | ES_R1_MODEO(mode);
sound/pci/ens1370.c
955
outl(ensoniq->sctrl, ES_REG(ensoniq, SERIAL));
sound/pci/ens1370.c
956
outl((ensoniq->c_period_size >> snd_ensoniq_sample_shift[mode]) - 1,
sound/pci/ens1370.c
957
ES_REG(ensoniq, ADC_COUNT));
sound/pci/ens1370.c
959
if (!(ensoniq->u.es1370.pclkdiv_lock & ES_MODE_PLAY2)) {
sound/pci/ens1370.c
960
ensoniq->ctrl &= ~ES_1370_PCLKDIVM;
sound/pci/ens1370.c
961
ensoniq->ctrl |= ES_1370_PCLKDIVO(ES_1370_SRTODIV(runtime->rate));
sound/pci/ens1370.c
962
ensoniq->u.es1370.pclkdiv_lock |= ES_MODE_CAPTURE;
sound/pci/ens1370.c
965
outl(ensoniq->ctrl, ES_REG(ensoniq, CONTROL));
sound/pci/ens1370.c
968
snd_es1371_adc_rate(ensoniq, runtime->rate);
sound/pci/ens1370.c
975
struct ensoniq *ensoniq = snd_pcm_substream_chip(substream);
sound/pci/ens1370.c
978
guard(spinlock)(&ensoniq->reg_lock);
sound/pci/ens1370.c
979
if (inl(ES_REG(ensoniq, CONTROL)) & ES_DAC1_EN) {
sound/pci/ens1370.c
980
outl(ES_MEM_PAGEO(ES_PAGE_DAC), ES_REG(ensoniq, MEM_PAGE));
sound/pci/ens1370.c
981
ptr = ES_REG_FCURR_COUNTI(inl(ES_REG(ensoniq, DAC1_SIZE)));
sound/pci/ens1370.c
990
struct ensoniq *ensoniq = snd_pcm_substream_chip(substream);
sound/pci/ens1370.c
993
guard(spinlock)(&ensoniq->reg_lock);
sound/pci/ens1370.c
994
if (inl(ES_REG(ensoniq, CONTROL)) & ES_DAC2_EN) {
sound/pci/ens1370.c
995
outl(ES_MEM_PAGEO(ES_PAGE_DAC), ES_REG(ensoniq, MEM_PAGE));
sound/pci/ens1370.c
996
ptr = ES_REG_FCURR_COUNTI(inl(ES_REG(ensoniq, DAC2_SIZE)));