--- mcore-src/trunk/mcore-tools/src/modules/basic-video/graphic.client.class.in 2017/04/07 08:00:51 2813 +++ mcore-src/trunk/mcore-tools/src/modules/basic-video/graphic.client.class.in 2018/11/16 13:43:52 2842 @@ -22,6 +22,8 @@ { local CONFIG local conf + local boardvendor + local write_zotac_quirk # rebuild 25-gfxcard.conf # always clear the config @@ -63,6 +65,45 @@ helper_graphic_add_configs ${MROOT}/${MCORE_CONFIG_PATH}/xorg/screen addconfig 'EndSection' fi + + # always disable hdmi port on zotac devices atm - fixme make it configurable like alx + CONFIG="${MROOT}@@SYSCONFDIR@@/X11/xorg.conf.d/30-fix-zotac.conf" + clearconfig + write_zotac_quirk=0 + if [ -e /sys/devices/virtual/dmi/id/board_vendor ] + then + boardvendor="$(< /sys/devices/virtual/dmi/id/board_vendor)" + # decapitalize + boardvendor="${boardvendor,,}" + case ${boardvendor} in + *zotac*) write_zotac_quirk=1 ;; + esac + fi + # some zotacs has as the board_vendor "filled by o.e.m" + # so we search the whole devices subtree for zotac vendor matches + # 0x19da="ZOTAC International (MCO) Ltd." + if [[ -n $(cat /sys/devices/*/*/subsystem_vendor | grep 0x19da) ]] + then + write_zotac_quirk=1 + fi + + if [ -f ${MCORE_CONFIG_PATH}/xorg/device/30-hdmi.conf ] + then + source ${MCORE_CONFIG_PATH}/xorg/device/30-hdmi.conf + case "${graphic_hdmi}" in + enabled) write_zotac_quirk=0 ;; + disabled) write_zotac_quirk=1 ;; + esac + fi + + if [[ ${write_zotac_quirk} = 1 ]] + then + addconfig "# Autogenerated by mcored" + addconfig "Section \"Monitor\"" + addconfig " Identifier \"LVDS1\"" + addconfig " Option \"Ignore\" \"True\"" + addconfig "EndSection" + fi } help_graphic_resolution() @@ -95,6 +136,14 @@ mecho " Selects the graphic card driver used by Xorg." } +help_graphic_hdmi() +{ + mecho "set graphic.hdmi [action]" + mecho " Available actions:" + mecho " enable - enables the hdmi port" + mecho " disable - disables the hdmi port" +} + # set_graphic_resolution ${value} set_graphic_resolution() { @@ -105,7 +154,7 @@ CONFIG="${MROOT}/${MCORE_CONFIG_PATH}/xorg/screen/20-resolution.conf" - case ${depth} in + case ${resolution} in *x*) clearconfig # do it for all supported color depth @@ -198,6 +247,24 @@ fi } +set_graphic_hdmi() +{ + local action="${CLASS_ARGV[0]}" + local CONFIG + + case "${action}" in + enable|disable) + CONFIG="${MCORE_CONFIG_PATH}/xorg/device/30-hdmi.conf" + clearconfig + addconfig "graphic_hdmi=\"${action}\"" + ;; + *) + help_graphic_driver + return 1 + ;; + esac +} + get_graphic_driver() { local action="${CLASS_ARGV[0]}" @@ -226,3 +293,12 @@ ;; esac } + +get_graphic_hdmi() +{ + local CONFIG="${MCORE_CONFIG_PATH}/xorg/device/30-hdmi.conf" + if [ -f ${CONFIG} ] + then + rvecho "$(< ${CONFIG})" + fi +}