ICEMT
outl(substream->runtime->dma_addr, ICEMT(ice, PLAYBACK_ADDR));
outw((ice->playback_pro_size >> 2) - 1, ICEMT(ice, PLAYBACK_SIZE));
outw((snd_pcm_lib_period_bytes(substream) >> 2) - 1, ICEMT(ice, PLAYBACK_COUNT));
outl(substream->runtime->dma_addr, ICEMT(ice, CAPTURE_ADDR));
outw((ice->capture_pro_size >> 2) - 1, ICEMT(ice, CAPTURE_SIZE));
outw((snd_pcm_lib_period_bytes(substream) >> 2) - 1, ICEMT(ice, CAPTURE_COUNT));
if (!(inl(ICEMT(ice, PLAYBACK_CONTROL)) & ICE1712_PLAYBACK_START))
ptr = ice->playback_pro_size - (inw(ICEMT(ice, PLAYBACK_SIZE)) << 2);
if (!(inl(ICEMT(ice, PLAYBACK_CONTROL)) & ICE1712_CAPTURE_START_SHADOW))
ptr = ice->capture_pro_size - (inw(ICEMT(ice, CAPTURE_SIZE)) << 2);
return (inb(ICEMT(ice, RATE)) & ICE1712_SPDIF_MASTER) ? 1 : 0;
outb(index, ICEMT(ice, MONITOR_INDEX));
outw(val, ICEMT(ice, MONITOR_VOLUME));
snd_iprintf(buffer, " PSDOUT03 : 0x%04x\n", (unsigned)inw(ICEMT(ice, ROUTE_PSDOUT03)));
snd_iprintf(buffer, " CAPTURE : 0x%08x\n", inl(ICEMT(ice, ROUTE_CAPTURE)));
snd_iprintf(buffer, " SPDOUT : 0x%04x\n", (unsigned)inw(ICEMT(ice, ROUTE_SPDOUT)));
snd_iprintf(buffer, " RATE : 0x%02x\n", (unsigned)inb(ICEMT(ice, RATE)));
val = xlate[inb(ICEMT(ice, RATE)) & 15];
oval = inb(ICEMT(ice, RATE));
outb(oval | ICE1712_SPDIF_MASTER, ICEMT(ice, RATE));
change = inb(ICEMT(ice, RATE)) != oval;
(inb(ICEMT(ice, RATE)) & ICE1712_SPDIF_MASTER))
old_cmd = inb(ICEMT(ice, AC97_CMD));
val = inw(ICEMT(ice, ROUTE_PSDOUT03));
cval = inl(ICEMT(ice, ROUTE_CAPTURE));
outb(reg, ICEMT(ice, AC97_INDEX));
outw(val, ICEMT(ice, AC97_DATA));
val = old_val = inw(ICEMT(ice, ROUTE_PSDOUT03));
outw(val, ICEMT(ice, ROUTE_PSDOUT03));
val = old_val = inl(ICEMT(ice, ROUTE_CAPTURE));
outb(old_cmd | ICE1712_AC97_WRITE, ICEMT(ice, AC97_CMD));
outl(val, ICEMT(ice, ROUTE_CAPTURE));
if ((inb(ICEMT(ice, AC97_CMD)) & ICE1712_AC97_WRITE) == 0)
val = inw(ICEMT(ice, ROUTE_SPDOUT));
val = old_val = inw(ICEMT(ice, ROUTE_SPDOUT));
outw(val, ICEMT(ice, ROUTE_SPDOUT));
ucontrol->value.integer.value[0] = inb(ICEMT(ice, MONITOR_RATE));
change = inb(ICEMT(ice, MONITOR_RATE)) != ucontrol->value.integer.value[0];
outb(ucontrol->value.integer.value[0], ICEMT(ice, MONITOR_RATE));
outb(idx, ICEMT(ice, MONITOR_PEAKINDEX));
ucontrol->value.integer.value[idx] = inb(ICEMT(ice, MONITOR_PEAKDATA));
old_cmd = inb(ICEMT(ice, AC97_CMD));
outb(reg, ICEMT(ice, AC97_INDEX));
outb(old_cmd | ICE1712_AC97_READ, ICEMT(ice, AC97_CMD));
if ((inb(ICEMT(ice, AC97_CMD)) & ICE1712_AC97_READ) == 0)
return inw(ICEMT(ice, AC97_DATA));
outb(0x00, ICEMT(ice, IRQ));
outb(ICE1712_MULTI_CAPTURE | ICE1712_MULTI_PLAYBACK, ICEMT(ice, IRQ));
ucontrol->value.integer.value[0] = inb(ICEMT(ice, MONITOR_ROUTECTRL)) & ICE1712_ROUTE_AC97 ? 1 : 0;
val = inb(ICEMT(ice, MONITOR_ROUTECTRL));
outb(nval, ICEMT(ice, MONITOR_ROUTECTRL));
ice->pm_saved_spdif_ctrl = inw(ICEMT(ice, ROUTE_SPDOUT));
ice->pm_saved_route = inw(ICEMT(ice, ROUTE_PSDOUT03));
outb(inb(ICEMT(ice, RATE)) | ICE1712_SPDIF_MASTER,
ICEMT(ice, RATE));
outw(ice->pm_saved_spdif_ctrl, ICEMT(ice, ROUTE_SPDOUT));
outw(ice->pm_saved_route, ICEMT(ice, ROUTE_PSDOUT03));
unsigned char mtstat = inb(ICEMT(ice, IRQ));
outb(ICE1712_MULTI_PBKSTATUS, ICEMT(ice, IRQ));
outb(ICE1712_MULTI_CAPSTATUS, ICEMT(ice, IRQ));
old = inl(ICEMT(ice, PLAYBACK_CONTROL));
outl(old, ICEMT(ice, PLAYBACK_CONTROL));
old = inl(ICEMT(ice, PLAYBACK_CONTROL));
outl(old, ICEMT(ice, PLAYBACK_CONTROL));
if (inb(ICEMT(ice, PLAYBACK_CONTROL)) & (ICE1712_CAPTURE_START_SHADOW|
old = inb(ICEMT(ice, RATE));
outb(val, ICEMT(ice, RATE));