Set up headphone path using amixer utility: ------------------------------------------- root@imx8mp-var-dart:~# headphone_test Simple mixer control 'Speaker Driver',0 Capabilities: pvolume pswitch Playback channels: Front Left - Front Right Limits: Playback 0 - 3 Mono: Front Left: Playback 1 [33%] [12.00dB] [off] Front Right: Playback 1 [33%] [12.00dB] [off] Simple mixer control 'HP Analog',0 Capabilities: pvolume Playback channels: Front Left - Front Right Limits: Playback 0 - 127 Mono: Front Left: Playback 100 [79%] [-13.50dB] Front Right: Playback 100 [79%] [-13.50dB] Simple mixer control 'HP Driver',0 Capabilities: pvolume pswitch Playback channels: Front Left - Front Right Limits: Playback 0 - 9 Mono: Front Left: Playback 5 [56%] [5.00dB] [on] Front Right: Playback 5 [56%] [5.00dB] [on] Simple mixer control 'HP Driver',0 Capabilities: pvolume pswitch Playback channels: Front Left - Front Right Limits: Playback 0 - 9 Mono: Front Left: Playback 5 [56%] [5.00dB] [on] Front Right: Playback 5 [56%] [5.00dB] [on] Simple mixer control 'HP Left',0 Capabilities: pswitch pswitch-joined Playback channels: Mono Mono: Playback [on] Simple mixer control 'HP Right',0 Capabilities: pswitch pswitch-joined Playback channels: Mono Mono: Playback [on] Simple mixer control 'Output Left From Left DAC',0 Capabilities: pswitch pswitch-joined Playback channels: Mono Mono: Playback [on] Simple mixer control 'Output Right From Right DAC',0 Capabilities: pswitch pswitch-joined Playback channels: Mono Mono: Playback [on] Simple mixer control 'DAC',0 Capabilities: pvolume Playback channels: Front Left - Front Right Limits: Playback 0 - 175 Mono: Front Left: Playback 130 [74%] [1.50dB] Front Right: Playback 130 [74%] [1.50dB] Read register 67: ----------------- root@imx8mp-var-dart:~# echo "01004300" > /sys/bus/i2c/devices/5-0018/reg cat /sys/bus/i2c/devices/5-0018/reg 01004380 <-- register 67 value 0x80 Read register 46: ----------------- root@imx8mp-var-dart:~# echo "01002e00" > /sys/bus/i2c/devices/5-0018/reg cat /sys/bus/i2c/devices/5-0018/reg 01002e00 <-- register 46 value 0x00 Read register 35: ----------------- root@imx8mp-var-dart:~# readreg 1 35 root@imx8mp-var-dart:~# echo "01012300" > /sys/bus/i2c/devices/5-0018/reg cat /sys/bus/i2c/devices/5-0018/reg 01012344 <-- register 35 value 0x44 Write 0x88 to register 35: -------------------------- root@imx8mp-var-dart:~# writereg 1 35 88 root@imx8mp-var-dart:~# echo "00012388" > /sys/bus/i2c/devices/5-0018/reg root@imx8mp-var-dart:~# echo "01012300" > /sys/bus/i2c/devices/5-0018/reg cat /sys/bus/i2c/devices/5-0018/reg 01012388 <-- register 35 value 0x88 Set PLL powered bit, register 5: -------------------------------- root@imx8mp-var-dart:~# echo "01000500" > /sys/bus/i2c/devices/5-0018/reg cat /sys/bus/i2c/devices/5-0018/reg 01000511 <-- pre-write register 5 value 0x11 root@imx8mp-var-dart:~# echo "00000591" > /sys/bus/i2c/devices/5-0018/reg root@imx8mp-var-dart:~# echo "01000500" > /sys/bus/i2c/devices/5-0018/reg cat /sys/bus/i2c/devices/5-0018/reg 01000591 <-- updated register 5 value 0x91 Set NDAC divider power bit, register 11: ---------------------------------------- root@imx8mp-var-dart:~# echo "01000b00" > /sys/bus/i2c/devices/5-0018/reg cat /sys/bus/i2c/devices/5-0018/reg 01000b01 <-- pre-write register 11 value 0x01 root@imx8mp-var-dart:~# echo "00000b81" > /sys/bus/i2c/devices/5-0018/reg root@imx8mp-var-dart:~# echo "01000b00" > /sys/bus/i2c/devices/5-0018/reg cat /sys/bus/i2c/devices/5-0018/reg 01000b81 <-- updated register 11 value 0x81 Set MDAC divider power bit, register 12: ---------------------------------------- root@imx8mp-var-dart:~# echo "01000c00" > /sys/bus/i2c/devices/5-0018/reg cat /sys/bus/i2c/devices/5-0018/reg 01000c01 <-- pre-write register 12 value 0x01 root@imx8mp-var-dart:~# echo "00000c81" > /sys/bus/i2c/devices/5-0018/reg root@imx8mp-var-dart:~# echo "01000c00" > /sys/bus/i2c/devices/5-0018/reg cat /sys/bus/i2c/devices/5-0018/reg 01000c81 <-- updated register 12 value 0x81 Set BCLK N-divider power bit, register 30: ---------------------------------------- root@imx8mp-var-dart:~# echo "01001e00" > /sys/bus/i2c/devices/5-0018/reg cat /sys/bus/i2c/devices/5-0018/reg 01001e01 <-- pre-write register 30 value 0x01 root@imx8mp-var-dart:~# echo "00001e81" > /sys/bus/i2c/devices/5-0018/reg root@imx8mp-var-dart:~# echo "01001e00" > /sys/bus/i2c/devices/5-0018/reg cat /sys/bus/i2c/devices/5-0018/reg 01001e81 <-- updated register 30 value 0x81 Read DAC interrupt flags, registers 44, 46: ------------------------------------------- root@imx8mp-var-dart:~# echo "01002c00" > /sys/bus/i2c/devices/5-0018/reg cat /sys/bus/i2c/devices/5-0018/reg 01002c00 <-- register 44 value 0x00 root@imx8mp-var-dart:~# echo "01002e00" > /sys/bus/i2c/devices/5-0018/reg cat /sys/bus/i2c/devices/5-0018/reg 01002e00 <-- register 44 value 0x00 Read headset detection register 67: ----------------------------------- root@imx8mp-var-dart:~# readreg 67 root@imx8mp-var-dart:~# echo "01004300" > /sys/bus/i2c/devices/5-0018/reg cat /sys/bus/i2c/devices/5-0018/reg 01004380 <-- register 67 value 0x80 *** Headset is plugged into jack here *** Read DAC interrupt flags, registers 44, 46: ------------------------------------------- root@imx8mp-var-dart:~# echo "01002c00" > /sys/bus/i2c/devices/5-0018/reg cat /sys/bus/i2c/devices/5-0018/reg 01002c00 <-- register 44 value 0x00 root@imx8mp-var-dart:~# echo "01002e00" > /sys/bus/i2c/devices/5-0018/reg cat /sys/bus/i2c/devices/5-0018/reg 01002e00 <-- register 44 value 0x00 Read headset detection register 67: ----------------------------------- root@imx8mp-var-dart:~# echo "01004300" > /sys/bus/i2c/devices/5-0018/reg cat /sys/bus/i2c/devices/5-0018/reg 01004380 <-- register 67 value 0x80