DB820c Lineout3 mixers for audio playback


#1

Hi,

Currently we are using below link mixers for playback on headphones for DB820c. https://git.linaro.org/people/srinivas.kandagatla/alsa-lib.git/tree/src/conf/ucm/DB820c/HiFi?h=db820c&id=33af7b8ba4f132fc4185063a0a8c5534ef7bc050

In addition to playback on Headphones, we are trying to enable LINEOUT3 for audio playback. Can some please provide the mixer path settings to enable LINEOUT3 without conflicting with Headphone mixers.
@ndec
@srini

Thanks,
Arun


#2

Hi Arun,
TBH I have no way to try out lineouts on my board.
I think the codec driver has all the code to drive lineouts.
Lines out in WCC9335 are wired up as:
Interpolator3 -> DAC3 ->LINEOUT1_P/LINEOUT1_M
Interpolator4 -> DAC4 ->LINEOUT2_P/LINEOUT2_M
Interpolator5 -> DAC5 ->LINEOUT3 (Single ended )
Interpolator6 -> DAC6 ->LINEOUT4 (Single ended )

Typical mixer settings for all LINE_OUTs would look like this:
cset “name=‘SLIM RX0 MUX’ ZERO”
cset “name=‘SLIM RX1 MUX’ ZERO”
cset “name=‘SLIM RX2 MUX’ ZERO”
cset “name=‘SLIM RX3 MUX’ ZERO”
cset “name=‘SLIM RX4 MUX’ ZERO”
cset “name=‘SLIM RX5 MUX’ AIF4_PB”
cset “name=‘SLIM RX6 MUX’ AIF4_PB”
cset “name=‘SLIM RX7 MUX’ ZERO”
cset “name=‘SLIMBUS_6_RX Audio Mixer MultiMedia2’ 1”
cset “name=‘RX INT3_2 MUX’ RX5”
cset “name=‘RX INT4_2 MUX’ RX6”
cset “name=‘RX INT5_2 MUX’ RX5”
cset “name=‘RX INT6_2 MUX’ RX5”
cset “name=‘RX5 Digital Volume’ 68”
cset “name=‘RX6 Digital Volume’ 68”

Note ‘RX INT3_2 MUX’ RX5" is the mixer that controls the interpoloator input mux also used to control the L/R channels You can select this as required for your usecase.

Thanks,
srini


#3

Thanks Srini.

I am using following mixers in HiFi file,
SectionVerb {

    EnableSequence [
            cdev "hw:0"
            cset "name='SLIM RX0 MUX' ZERO"
            cset "name='SLIM RX1 MUX' ZERO"
            cset "name='SLIM RX2 MUX' ZERO"
            cset "name='SLIM RX3 MUX' ZERO"
            cset "name='SLIM RX4 MUX' ZERO"
            cset "name='SLIM RX5 MUX' AIF4_PB"
            cset "name='SLIM RX6 MUX' AIF4_PB"
            cset "name='SLIM RX7 MUX' ZERO"
            cset "name='RX INT1_2 MUX' RX5"
            cset "name='RX INT2_2 MUX' RX6"
            ## gain to  0dB
            cset "name='RX5 Digital Volume' 68"
            ## gain to  0dB
            cset "name='RX6 Digital Volume' 68"
            cset "name='SLIMBUS_6_RX Audio Mixer MultiMedia2' 1"
            cset "name='MultiMedia3 Mixer SLIMBUS_0_TX' 1"
            cset "name='RX INT1 DEM MUX' CLSH_DSM_OUT"
            cset "name='RX INT2 DEM MUX' CLSH_DSM_OUT"
            cset "name='AIF1_CAP Mixer SLIM TX0' 1"
            cset "name='SLIM TX0 MUX' DEC0"
            cset "name='ADC2 Volume' 12"
            cset "name='ADC MUX0' AMIC"
            cset "name='AMIC MUX0' ADC2"
    ]

    DisableSequence [
            cdev "hw:0"
            cset "name='SLIMBUS_6_RX Audio Mixer MultiMedia2' 0"
            cset "name='MultiMedia3 Mixer SLIMBUS_0_TX' 0"
    ]

    # ALSA PCM
    Value {
            # ALSA PCM device for HiFi
            PlaybackPCM "plughw:0,1"
            CapturePCM "plughw:0,2"
    }

}

SectionDevice.“Headphones” {
Comment “Headphones playback”

    EnableSequence [
            cdev "hw:0"
            cset "name='SLIM RX0 MUX' ZERO"
            cset "name='SLIM RX1 MUX' ZERO"
            cset "name='SLIM RX2 MUX' ZERO"
            cset "name='SLIM RX3 MUX' ZERO"
            cset "name='SLIM RX4 MUX' ZERO"
            cset "name='SLIM RX5 MUX' AIF4_PB"
            cset "name='SLIM RX6 MUX' AIF4_PB"
            cset "name='SLIM RX7 MUX' ZERO"
            cset "name='RX INT1_2 MUX' RX5"
            cset "name='RX INT2_2 MUX' RX6"
            ## gain to  0dB
            cset "name='RX5 Digital Volume' 68"
            ## gain to  0dB
            cset "name='RX6 Digital Volume' 68"
            cset "name='SLIMBUS_6_RX Audio Mixer MultiMedia2' 1"
            cset "name='RX INT1 DEM MUX' CLSH_DSM_OUT"
            cset "name='RX INT2 DEM MUX' CLSH_DSM_OUT"
    ]

    DisableSequence [
            cdev "hw:0"
            cset "name='RX5 Digital Volume' 0"
            cset "name='RX6 Digital Volume' 0"
            cset "name='SLIM RX5 MUX' ZERO"
            cset "name='SLIM RX6 MUX' ZERO"
            cset "name='SLIMBUS_6_RX Audio Mixer MultiMedia2' 0"
    ]

    Value {
            PlaybackChannels "2"
    }

}

SectionDevice.“Handset” {
Comment “Headset Microphone”

    EnableSequence [
            cdev "hw:0"
            cset "name='MultiMedia3 Mixer SLIMBUS_0_TX' 1"
            cset "name='AIF1_CAP Mixer SLIM TX0' 1"
            cset "name='SLIM TX0 MUX' DEC0"
            cset "name='ADC2 Volume' 12"
            cset "name='ADC MUX0' AMIC"
            cset "name='AMIC MUX0' ADC2"
    ]

    DisableSequence [
            cdev "hw:0"
            cset "name='MultiMedia3 Mixer SLIMBUS_0_TX' 0"
            cset "name='AIF1_CAP Mixer SLIM TX0' 0"
            cset "name='AMIC MUX0' ZERO"
            cset "name='SLIM TX0 MUX' ZERO"
            cset "name='ADC2 Volume' 0"
    ]

    Value {
            CaptureChannels "1"
    }

}
SectionDevice.“Speaker” {
Comment “Playback on Speaker”

    EnableSequence[
            cdev "hw:0"
            cset "name='SLIM RX0 MUX' ZERO"
            cset "name='SLIM RX1 MUX' ZERO"
            cset "name='SLIM RX2 MUX' ZERO"
            cset "name='SLIM RX3 MUX' ZERO"
            cset "name='SLIM RX4 MUX' ZERO"
            cset "name='SLIM RX5 MUX' AIF4_PB"
            cset "name='SLIM RX6 MUX' AIF4_PB"
            cset "name='SLIM RX7 MUX' ZERO"
            cset "name='SLIMBUS_6_RX Audio Mixer MultiMedia2' 1"
            cset "name='RX INT5_2 MUX' RX5"
            ## gain to  0dB
            cset "name='RX5 Digital Volume' 68"
            ## gain to  0dB
            cset "name='RX6 Digital Volume' 68"
    ]

    DisableSequence[
            cdev "hw:0"
            cset "name='SLIM RX5 MUX' ZERO"
            cset "name='SLIM RX6 MUX' ZERO"
            cset "name='SLIMBUS_6_RX Audio Mixer MultiMedia2' 0"
    ]

    Value {
            PlaybackChannels "2"
    }

}

In pulseAudio volume control menu, I am able to see both Headphones and Lineout Speaker. If lineout Speaker is selected then audio is heard on both linout Speaker and headphones. Seems i am not disabling headphone path while selecting speaker and vice versa. I need disable sequence of mixers. can you please help me on this.
@srini
@ndec

Thanks,
Arun


#4

Please make sure that Secondary Interpolator muxes are reset to ZERO in disable path.

cset “name=‘RX INT1_2 MUX’ ZERO”
cset “name=‘RX INT2_2 MUX’ ZERO”

Adding above to the headset disable Sequence should help, You should also do the same thing with Speakers too with there interpolator muxes!

–srini


#5

Thanks Srini
I have added the mixers to make the secondary Interpolators to ZERO. After making the changes and if the device is changed from Headphones to Speaker, Nothing is heard on both headphones and speaker.

Headphones disable sequence,
DisableSequence [
cdev “hw:0”
cset “name=‘RX INT1_2 MUX’ ZERO”
cset “name=‘RX INT2_2 MUX’ ZERO”
cset “name=‘RX5 Digital Volume’ 0”
cset “name=‘RX6 Digital Volume’ 0”
cset “name=‘SLIM RX5 MUX’ ZERO”
cset “name=‘SLIM RX6 MUX’ ZERO”
cset “name=‘SLIMBUS_6_RX Audio Mixer MultiMedia2’ 0”
]

Speaker Disable Sequence,
DisableSequence[
cdev “hw:0”
cset “name=‘RX INT5_2 MUX’ ZERO”
cset “name=‘SLIM RX5 MUX’ ZERO”
cset “name=‘SLIM RX6 MUX’ ZERO”
cset “name=‘SLIMBUS_6_RX Audio Mixer MultiMedia2’ 0”
]

@srini
@ndec

Thanks,
Arun