#include "rk2928_codec.h"
+#define SPK_CTL RK2928_PIN1_PA0
+
static struct rk2928_codec_data {
struct device *dev;
int regbase;
if(!rk2928_data.hdmi_enable)
rk2928_write(codec, CODEC_REG_DAC_MUTE, v_MUTE_DAC(0));
rk2928_data.mute = 0;
+ if(SPK_CTL != INVALID_GPIO) {
+ gpio_direction_output(SPK_CTL, GPIO_HIGH);
+ }
}
else {
rk2928_write(codec, CODEC_REG_ADC_PGA_GAIN, 0xFF);
case SNDRV_PCM_TRIGGER_SUSPEND:
case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
+ if(SPK_CTL != INVALID_GPIO) {
+ gpio_direction_output(SPK_CTL, GPIO_LOW);
+ }
rk2928_write(codec, CODEC_REG_DAC_MUTE, v_MUTE_DAC(1));
rk2928_data.mute = 1;
}
// Select SDI input from internal audio codec
writel(0x04000400, RK2928_GRF_BASE + GRF_SOC_CON0);
+ if(SPK_CTL != INVALID_GPIO) {
+ ret = gpio_request(SPK_CTL, NULL);
+ if (ret != 0) {
+ gpio_free(SPK_CTL);
+ }
+ else
+ gpio_direction_output(SPK_CTL, GPIO_LOW);
+ }
// Mute and Power off codec
rk2928_write(codec, CODEC_REG_DAC_MUTE, v_MUTE_DAC(1));
rk2928_set_bias_level(codec, SND_SOC_BIAS_OFF);