#! /bin/sh
# 
# Laptop mode tools module: Intel HDA integrated audio power saving mode.
#

if [ x$CONTROL_INTEL_HDA_POWER = x1 ]  || [ x$ENABLE_AUTO_MODULES = x1 -a x$CONTROL_INTEL_HDA_POWER = xauto ]; then
    if [ $ON_AC -eq 1 ]; then
		if [ "$ACTIVATE" -eq 1 ]; then
			INTEL_HDA_POWERSAVE="$LM_AC_INTEL_HDA_POWERSAVE"
		else
			INTEL_HDA_POWERSAVE="$NOLM_AC_INTEL_HDA_POWERSAVE"
		fi
    else
	    INTEL_HDA_POWERSAVE="$BATT_INTEL_HDA_POWERSAVE"
    fi

    # Handle Intel HDA Power Save
    if [ -w /sys/module/snd_hda_intel/parameters/power_save ]; then
        if [ x$INTEL_HDA_POWERSAVE = x1 ]; then
                echo $INTEL_HDA_DEVICE_TIMEOUT > /sys/module/snd_hda_intel/parameters/power_save
                log "VERBOSE" "Intel HDA power save mode enabled with timeout $INTEL_HDA_DEVICE_TIMEOUT."
                if [ -c /dev/dsp ]; then
                    # This can fail if the audio device is busy.
                    # Since this failure is non-fatal (worst case is that the timer changes
                    # don't get activated), we don't bother if it was successful or not
                    #(exec 2>/dev/null; echo 1 > /dev/dsp;)
                    # Better way
                    echo 1 2>/dev/null >/dev/dsp
                    log "VERBOSE" "Initialize timer change by close/open /dev/dsp"
                fi
        else
                echo 0 > /sys/module/snd_hda_intel/parameters/power_save
                log "VERBOSE" "Intel HDA power save mode disabled."
        fi
    else
            log "VERBOSE" "Intel HDA power saving is not available on this system."
    fi

    # Handle Intel HDA Controller Power Savings.
    if [ x$INTEL_HDA_DEVICE_CONTROLLER = x1 -a x$INTEL_HDA_POWERSAVE = x1 ]; then
        POWER_SAVE="Y"
    else
        POWER_SAVE="N"
    fi

    if [ -w /sys/module/snd_hda_intel/parameters/power_save_controller ]; then
        echo $POWER_SAVE > /sys/module/snd_hda_intel/parameters/power_save_controller
        log "VERBOSE" "Intel HDA Controller power save set to $POWER_SAVE."
    else
        log "VERBOSE" "Sound Card doesn't seem to support Controller Power Save."
    fi
else
	log "VERBOSE" "Intel HDA audio power setting is disabled."
fi

