#!/bin/bash

PATH=/sbin:$PATH

export LC_ALL=C

echo "loongson LLC Device:"
lspci |grep -E '7a25|7a36' 2>&1
echo

echo "uname -a:"
uname -a
echo

echo "/proc/version:"
cat /proc/version
echo

if command -v dmesg >/dev/null 2>&1; then
	echo "dmesg:"
	dmesg | grep -iE 'loonggpu|vga'
	echo
fi

if command -v lscpi >/dev/null 2>&1; then
	echo "lspci 'display controller [040?]':"
	for device in $(lspci -mn | awk '{ if ($2 ~ "\"040[0-2]\"") { print $1 } }'); do
		LC_ALL=C lspci -vvnn -s $device
	done
fi

echo "show dri info:"
ls -l /dev/dri/* 2>/dev/null
echo

echo "LOONGGPU library files installed:"
ls -l \
   	/usr/lib/*-linux-gnu*/libEGL.* \
	/usr/lib/*-linux-gnu*/libGL.* \
	/usr/lib/*-linux-gnu*/libGLES*.* \
   	/usr/lib/*-linux-gnu*/libGLX_* \
   	/usr/lib/*-linux-gnu*/libEGL_* \
	/usr/lib/xorg/modules/*glx* \
	/usr/lib/xorg/modules/*/*glx* \
	/var/log/Xorg.*.log* \
	2>/dev/null

ls -la	\
   	/et/init.d/vga_* \
   	/etc/systemcd/system/loonggl* \
	/usr/lib/loong-gnucomp/ \
	/usr/lib/loong-guncomp/lib/*/ \
	/usr/lib/*-linux-gnu*/loonggpu/ \
	/usr/lib/*-linux-gnu*/loonggpu/*/ \
	/usr/lib/*-linux-gnu*/dri/ \
	/etc/X11/xorg.conf.d/ \
	/usr/share/X11/xorg.conf.d/ \
	2>/dev/null
echo

echo "/etc/modprobe.d:"
ls -la /etc/modprobe.d/
echo
grep -ri loonggpu /etc/modprobe.d/
echo

echo "/etc/modules-load.d:"
ls -la /etc/modules /etc/modules-load.d/ 2>&1
echo

echo "loonggpu conf:"
ls -l \
	/usr/share/glvnd/egl_vendor.d/*loonggpu.json \
	2>/dev/null
echo

echo "cat /etc/loonggpu/loonggpu_driver.conf"
cat /etc/loonggpu/loonggpu_driver.conf
echo

echo "Config and logfiles:"
echo
for file in \
	/usr/share/glvnd/egl_vendor.d/*loonggpu.json \
	$(ls -dt $HOME/.local/share/xorg/Xorg.*.log* 2>/dev/null | head -n 2) \
	$(ls -dt /var/log/Xorg.*.log* 2>/dev/null | head -n 2)
do
	if [ -f "$file" ] && [ -r "$file" ]; then
		echo "********** $file ********"
		cat "$file"
		echo "######### $file ##########"
		echo
	fi
done
echo

# Check if lsinitrd or lsinitramfs command exists
if command -v lsinitrd >/dev/null 2>&1; then
    LSINITCMD="lsinitrd"
elif command -v lsinitramfs >/dev/null 2>&1; then
    LSINITCMD="lsinitramfs"
else
    echo "lsinitrd/lsinitramfs command not found. Please install it to run this script."
fi
echo

# Check if initrd.img exists
if [ -e /boot/initrd.img-$(uname -r) ]; then
    echo "lsintrd:"
    ls -la /boot/initrd.img-$(uname -r) 2>/dev/null

    # Execute lsinitrd/lsinitramfs command
    $LSINITCMD "/boot/initrd.img-$(uname -r)" | grep -E 'loonggpu|lg100' 2>/dev/null
# Check if initramfs exists
elif [ -e /boot/initramfs-$(uname -r) ]; then
    echo "lsinitramfs:"
    ls -la /boot/initramfs-$(uname -r) 2>/dev/null

    # Execute lsinitrd/lsinitramfs command
    $LSINITCMD /boot/initramfs-$(uname -r) | grep -E 'loonggpu|lg100' 2>/dev/null
else
    echo "initramfs not found."
fi

echo 

if [ -d /run/systemd/system ]; then
	echo "********** Xorg (journald) **********"
	journalctl -b _COMM=Xorg --no-pager -o short-monotonic --no-hostname --no-full
	echo "########## Xorg (journald) ##########"
	echo
fi

echo "Kernel modules: loonggpu.ko"
find /lib/modules -name "loonggpu*.ko"
echo

echo "lsmod:"
lsmod
echo

echo "xrandr:"
test ! -x /usr/bin/xrandr || xrandr 2>&1
echo


exit 0
