|
@@ -1695,14 +1695,17 @@ static int tvaudio_s_ctrl(struct v4l2_subdev *sd,
|
|
|
case V4L2_CID_AUDIO_BALANCE:
|
|
|
{
|
|
|
int volume, balance;
|
|
|
+
|
|
|
if (!(desc->flags & CHIP_HAS_VOLUME))
|
|
|
break;
|
|
|
|
|
|
- volume = max(chip->left,chip->right);
|
|
|
+ volume = max(chip->left, chip->right);
|
|
|
balance = ctrl->value;
|
|
|
+ chip->left = (min(65536 - balance, 32768) * volume) / 32768;
|
|
|
+ chip->right = (min(balance, volume * (__u16)32768)) / 32768;
|
|
|
|
|
|
- chip_write(chip,desc->leftreg,desc->volfunc(chip->left));
|
|
|
- chip_write(chip,desc->rightreg,desc->volfunc(chip->right));
|
|
|
+ chip_write(chip, desc->leftreg, desc->volfunc(chip->left));
|
|
|
+ chip_write(chip, desc->rightreg, desc->volfunc(chip->right));
|
|
|
|
|
|
return 0;
|
|
|
}
|