setenv _bscriptver "v1.07"

echo "## Gateworks Ventana Yocto Bootscript ${_bscriptver} ####################"

## First: Memory Allocations ###################################################
if test -z "${mem}" ; then
    echo "Detected ${mem_mb}MB DRAM - adjusting CMA memory allocation..."

    # Freescale doesn't provide a 'best practice' for choosing CMA. We determine
    # it using following formula (please customize mem to your own req's):
    #  cma=min(((${mem_mb}/2) - round(${mem_mb}*.125))M, 384M)
    if itest.s "x${mem_mb}" == "x256" ; then
	setenv mem "cma=96M"
    elif itest.s "x${mem_mb}" == "x512" ; then
	setenv mem "cma=192M"
    else
	setenv mem "cma=384M"
    fi
fi

if itest.s "x${mem}" == "xNA" ; then
    echo "Leaving CMA alone..."
else
    setenv extra "${extra}" "${mem}"
    echo "Memory configuration used from env mem: $mem"
fi

## Second: Video Options #######################################################
if test -z "${video}" ; then
    # locally used variables
    setenv fb_num 0
    setenv lvds_flag
    setenv hdmi_flag
    setenv cvbs_flag
    setenv max_disp 3 # 0-3 displays

    # Default displays to display if displays is empty
    if test -z "${displays}"; then
	setenv displays "${display}"
    fi

    # Detect HDMI if displays is empty (HDMI)
    if test -z "${displays}" ; then
	i2c dev 2
	if hdmidet ; then # HDMI
	    setenv displays "HDMI"
	    echo "HDMI Detected"
	fi
    fi

    echo "Display(s) to configure: ${displays}"

    # Configure displays
    for disp in ${displays} ; do
	if itest.s "x${disp}" == "xHDMI" ; then
	    if test -z "${hdmi_flag}" ; then # Only allow one HDMI display
		setenv hdmi_flag 1
		test -n "${hdmi}" || hdmi=1080p
		if itest.s "x${hdmi}" == "x1080p" ; then
		    setenv hdmi "1920x1080M@60"
		elif itest.s "x${hdmi}" == "x720p" ; then
		    setenv hdmi "1280x720M@60"
		elif itest.s "x${hdmi}" == "x480p" ; then
		    setenv hdmi "720x480M@60"
		fi
		setenv video "${video}" "video=mxcfb${fb_num}:dev=hdmi,${hdmi},if=RGB24,bpp=32"

		echo "Setting HDMI Display to mxcfb${fb_num}"
		setexpr fb_num ${fb_num} + 1
	    fi

	# Freescale MCIMX-LVDS1 10" XGA Touchscreen Display
	elif itest.s "x${disp}" == "xHannstar-XGA" ; then
	    if test -z "${lvds_flag}" ; then # Only allow one LVDS display
		setenv lvds_flag 1
		setenv video "${video}" "video=mxcfb${fb_num}:dev=ldb,bpp=32,LDB-XGA,if=RGB666"

		# Configure timings
		setenv display "Hannstar-XGA"

		echo "Setting Hannstar-XGA Display to mxcfb${fb_num}"
		setexpr fb_num ${fb_num} + 1
	    fi

	# GW17029 DLC700JMGT4 7" WSVGA Touchscreen Display
	elif itest.s "x${disp}" == "xDLC700JMGT4" ; then
	    if test -z "${lvds_flag}" ; then # Only allow one LVDS display
		setenv lvds_flag 1
		setenv video "${video}" "video=mxcfb${fb_num}:dev=ldb,bpp=32,LDB-WSVGA,if=RGB666"

		# Configure timings
		setenv display "DLC700JMGT4"

		echo "Setting DLC700JMGT4 Display to mxcfb${fb_num}"
		setexpr fb_num ${fb_num} + 1
	    fi

	# GW17030 DLC800FIGT3 8" XGA Touchscreen Display"
	elif itest.s "x${disp}" == "xDLC800FIGT3" ; then
	    if test -z "${lvds_flag}" ; then # Only allow one LVDS display
		setenv lvds_flag 1
		setenv video "${video}" "video=mxcfb${fb_num}:dev=ldb,bpp=32,LDB-XGA,if=RGB666"

		# Configure timings
		setenv display "DLC800FIGT3"

		echo "Setting DLC800FIGT3 Display to mxcfb${fb_num}"
		setexpr fb_num ${fb_num} + 1
	    fi

	elif itest.s "x${disp}" == "xCVBS" ; then
	    if test -z "${cvbs_flag}" ; then # Only allow one CVBS display
		setenv cvbs_flag 1
		setenv video "${video}" "video=mxcfb${fb_num}:dev=adv739x,BT656-NTSC,if=BT656,fbpix=RGB565,bpp=32"

		echo "Setting CVBS Display to mxcfb${fb_num}"
		setexpr fb_num ${fb_num} + 1
	    fi

	elif itest.s "x${disp}" == "xnone" ; then
	    # Reset fb_num to mark all displays to 'off'
	    setenv fb_num 0

	else
	    echo "${disp} is an unsupported display type"
	    echo "Valid Displays: HDMI|Hannstar-XGA|DLC700JMGT4|DLC800FIGT3|CVBS"
	fi
    done

    # Mark the rest of the displays to 'off'
    while test "${fb_num}" -le "${max_disp}" ; do
	setenv video "${video}" "video=mxcfb${fb_num}:off"
	setexpr fb_num ${fb_num} + 1
    done

    # Set only if video is set
    if test -n "${video}" ; then
	setenv video "${video}"
    fi
fi
setenv extra "${extra}" galcore.initgpu3DMinClock=3
echo "Video configuration used from env video: ${video}"

echo "## End Gateworks Ventana Yocto Bootscript ${_bscriptver} ################"
