5 kx #
5 kx # rc.mesonfb - initial set up meson framebuffer
5 kx #
5 kx hdmimode=1080p60hz
5 kx
5 kx # Parse command line arguments
5 kx for arg in $(cat /proc/cmdline); do
5 kx case $arg in
5 kx hdmimode=*)
5 kx hdmimode="${arg#*=}"
5 kx ;;
5 kx esac
5 kx done
5 kx
5 kx outputmode=$hdmimode
5 kx
5 kx /bin/echo $outputmode > /sys/class/display/mode
5 kx
5 kx # Enable framebuffer device
5 kx /bin/echo 0 > /sys/class/graphics/fb0/blank
5 kx
5 kx # Blank fb1 to prevent static noise
5 kx /bin/echo 1 > /sys/class/graphics/fb1/blank
5 kx
5 kx # Disable framebuffer scaling
5 kx /bin/echo 0 > /sys/class/graphics/fb0/free_scale
5 kx /bin/echo 0 > /sys/class/graphics/fb1/free_scale
5 kx
5 kx
5 kx /bin/echo 1 > /sys/class/graphics/fb0/freescale_mode
5 kx
5 kx case $outputmode in
5 kx 480*)
5 kx /bin/echo 0 0 1279 719 > /sys/class/graphics/fb0/free_scale_axis
5 kx /bin/echo 0 0 1279 719 > /sys/class/graphics/fb0/window_axis
5 kx ;;
5 kx
5 kx 576*)
5 kx /bin/echo 0 0 1279 719 > /sys/class/graphics/fb0/free_scale_axis
5 kx /bin/echo 0 0 1279 719 > /sys/class/graphics/fb0/window_axis
5 kx ;;
5 kx
5 kx 720*)
5 kx /bin/echo 0 0 1279 719 > /sys/class/graphics/fb0/free_scale_axis
5 kx /bin/echo 0 0 1279 719 > /sys/class/graphics/fb0/window_axis
5 kx ;;
5 kx
5 kx 1080*)
5 kx /bin/echo 0 0 1919 1079 > /sys/class/graphics/fb0/free_scale_axis
5 kx /bin/echo 0 0 1919 1079 > /sys/class/graphics/fb0/window_axis
5 kx ;;
5 kx
5 kx 4k2k*)
5 kx /bin/echo 0 0 1919 1079 > /sys/class/graphics/fb0/free_scale_axis
5 kx /bin/echo 0 0 1919 1079 > /sys/class/graphics/fb0/window_axis
5 kx ;;
5 kx
5 kx *)
5 kx # outputmode = 720p
5 kx /bin/echo 720p > /sys/class/display/mode
5 kx /bin/echo 0 0 1279 719 > /sys/class/graphics/fb0/free_scale_axis
5 kx /bin/echo 0 0 1279 719 > /sys/class/graphics/fb0/window_axis
5 kx ;;
5 kx esac
5 kx
5 kx
5 kx # Set framebuffer geometry to match the resolution
5 kx case "$hdmimode" in
5 kx 720*)
5 kx /usr/sbin/fbset -fb /dev/fb0 -a -g 1280 720 1280 1440 32
5 kx ;;
5 kx 1080*)
5 kx /usr/sbin/fbset -fb /dev/fb0 -a -g 1920 1080 1920 3240 32
5 kx ;;
5 kx esac
5 kx /usr/sbin/fbset -fb /dev/fb1 -g 32 32 32 32 32
5 kx
5 kx # Include deinterlacer into default VFM map
5 kx /bin/echo rm default > /sys/class/vfm/map
5 kx /bin/echo add default decoder ppmgr deinterlace amvideo > /sys/class/vfm/map
5 kx
5 kx ################################################################
5 kx #
5 kx # If HDMI cable is connected during kernel start and the new
5 kx # outputmode is equal to current hdmimode then the screen is
5 kx # black.
5 kx #
5 kx # To wake up the monitor, we must reset outputmode.
5 kx # Only in this case, the driver will wake the display up.
5 kx #
5 kx # Instead we will have to reconnect hdmi cable.
5 kx #
5 kx outputmode=$(cat /sys/class/display/mode)
5 kx hpdstate=$(cat /sys/class/amhdmitx/amhdmitx0/hpd_state)
5 kx
5 kx if [ "$hpdstate" = "1" ]; then
5 kx # Blank fb0 to prevent static noise
5 kx /bin/echo 1 > /sys/class/graphics/fb0/blank
5 kx case $outputmode in
5 kx 720*)
5 kx /bin/echo 1080p60hz > /sys/class/display/mode
5 kx /bin/echo $outputmode > /sys/class/display/mode
5 kx ;;
5 kx
5 kx 1080*)
5 kx /bin/echo 720p60hz > /sys/class/display/mode
5 kx /bin/echo $outputmode > /sys/class/display/mode
5 kx ;;
5 kx *)
5 kx # probably nobody asks 480cvbs
5 kx /bin/echo 480cvbs > /sys/class/display/mode
5 kx /bin/echo $outputmode > /sys/class/display/mode
5 kx ;;
5 kx esac
5 kx # Enable framebuffer device
5 kx /bin/echo 0 > /sys/class/graphics/fb0/blank
5 kx fi
5 kx #
5 kx # End of HDMI cable reconnect trick.
5 kx #
5 kx ################################################################
5 kx
5 kx echo 0x10001 > /sys/class/graphics/fb0/free_scale
5 kx echo 0 > /sys/class/graphics/fb1/free_scale