static int pcm20_setvol(struct pcm20_device *dev, int vol) { if(vol == dev->curvol) { /* requested volume = current */ if (dev->muted) { /* user is unmuting the card */ dev->muted = 0; aci_write_cmd(0xa3,0x00); /* enable card */ } return 0; } if(vol == 0) { /* volume = 0 means mute the card */ aci_write_cmd(0x3d, 0x20); aci_write_cmd(0x35, 0x20); return 0; } dev->muted = 0; aci_write_cmd(0x3d, 32-vol); /* Right Channel */ aci_write_cmd(0x35, 32-vol); /* Left Channel */ dev->curvol = vol; return 0; }
static void pcm20_mute(struct pcm20_device *dev) { dev->muted = 1; aci_write_cmd(0xa3,0x01); }
static int pcm20_stereo(struct pcm20_device *dev, unsigned char stereo) { dev->stereo = stereo; return aci_write_cmd(ACI_SET_TUNERMONO, !stereo); }
static int pcm20_mute(struct pcm20_device *dev, unsigned char mute) { dev->muted = mute; return aci_write_cmd(ACI_SET_TUNERMUTE, mute); }