#!/bin/sh

usage()
{
	cat << EOF
	Usage: `basename $0` linux_dir patch_dir rev
ex: `basename $0` HOME/linux/ /tmp/patches v5.1..v5.2
EOF

	exit 1
}

if [ $# -ne 3 ]; then
	usage
fi

LINUX_DIR=$(realpath "$1")
shift
PATCH_DIR=$(realpath "$1")
shift
REV=$1

if [ ! -d ${LINUX_DIR} ]; then
	echo "No directory ${LINUX_DIR}"
	exit 1
fi

mkdir -p ${PATCH_DIR}

cd ${LINUX_DIR}
git format-patch -o ${PATCH_DIR} ${REV} \
    drivers/gpu/drm/*.c \
    drivers/gpu/drm/*.h \
    drivers/gpu/drm/amd/ \
    drivers/gpu/drm/i915/ \
    drivers/gpu/drm/radeon/ \
    drivers/gpu/drm/scheduler/ \
    drivers/gpu/drm/ttm/ \
    drivers/dma-buf/dma-fence.c \
    drivers/dma-buf/dma-fence-array.c \
    drivers/dma-buf/dma-fence-chain.c \
    drivers/dma-buf/dma-resv.c \
    drivers/dma-buf/sync_file.c \
    drivers/video/hdmi.c \
    include/drm/*.h \
    include/drm/ttm/ \
    include/uapi/drm/*.h \
    include/linux/hdmi.h \
    include/linux/dma-fence.h \
    include/linux/dma-fence-array.h \
    include/linux/dma-fence-chain.h \
    include/linux/sync_file.h \
    ':!drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_*' \
    ':!drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler*' \
    ':!drivers/gpu/drm/amd/amdkfd/*' \
    ':!drivers/gpu/drm/i915/display/intel_acpi.c' \
    ':!drivers/gpu/drm/i915/gvt/*' \
    ':!drivers/gpu/drm/i915/selftests/*' \
    ':!drivers/gpu/drm/i915/gt/selftest*' \
    ':!drivers/gpu/drm/i915/gt/st_shmem_utils.c' \
    ':!drivers/gpu/drm/i915/gem/selftests/*' \
    ':!drivers/gpu/drm/i915/i915_trace*' \
    ':!drivers/gpu/drm/selftests/*' \
    ':!drivers/gpu/drm/drm_bufs*' \
    ':!drivers/gpu/drm/drm_bridge_connector*' \
    ':!drivers/gpu/drm/drm_context*' \
    ':!drivers/gpu/drm/drm_dma*' \
    ':!drivers/gpu/drm/drm_dp_cec*' \
    ':!drivers/gpu/drm/drm_edid_load*' \
    ':!drivers/gpu/drm/drm_fb_cma_helper*' \
    ':!drivers/gpu/drm/drm_gem_cma_helper*' \
    ':!drivers/gpu/drm/drm_gem_framebuffer_helper*' \
    ':!drivers/gpu/drm/drm_gem_shmem_helper*' \
    ':!drivers/gpu/drm/drm_gem_ttm_helper*' \
    ':!drivers/gpu/drm/drm_hdcp*' \
    ':!drivers/gpu/drm/drm_kms_helper*' \
    ':!drivers/gpu/drm/drm_legacy_misc*' \
    ':!drivers/gpu/drm/drm_lease*' \
    ':!drivers/gpu/drm/drm_lock*' \
    ':!drivers/gpu/drm/drm_managed*' \
    ':!drivers/gpu/drm/drm_mipi_dbi*' \
    ':!drivers/gpu/drm/drm_of*' \
    ':!drivers/gpu/drm/drm_scatter*' \
    ':!drivers/gpu/drm/drm_simple*' \
    ':!drivers/gpu/drm/drm_trace*' \
    ':!drivers/gpu/drm/drm_vm*' \
    ':!drivers/gpu/drm/drm_*vram*' \
    ':!drivers/gpu/drm/amd/radeon/radeon_atpx_handler*' \
    ':!include/drm/bridge/*' \
    ':!include/drm/intel-gtt*' \
    ':!include/drm/tinydrm/*' \
    ':!include/drm/drm_bridge_connector*' \
    ':!include/drm/drm_fb_cma_helper.h*' \
    ':!include/drm/drm_gem_cma*' \
    ':!include/drm/drm_gem_shmem*' \
    ':!include/drm/drm_gem_ttm_helper*' \
    ':!include/drm/drm_lease*' \
    ':!include/drm/drm_managed*' \
    ':!include/drm/drm_mipi_dsi*' \
    ':!include/drm/drm_mipi_dbi*' \
    ':!include/drm/drm_simple_kms_helper*' \
    ':!include/drm/drm_of*' \
    ':!include/drm/gma*' \
    ':!include/drm/drm_*vram*' \
    ':!include/drm/i915_mei_hdcp_interface*' \
    ':!include/uapi/drm/etnaviv*' \
    ':!include/uapi/drm/exynos_drm*' \
    ':!include/uapi/drm/lima*' \
    ':!include/uapi/drm/msm*' \
    ':!include/uapi/drm/omap*' \
    ':!include/uapi/drm/panfrost*' \
    ':!include/uapi/drm/v3d*' \
    ':!include/uapi/drm/vc4*' \
    ':!*Makefile' \
    ':!*Kconfig*'

# Fixup some paths
for file in ${PATCH_DIR}/*; do
	sed -i '' 's/\([ab]\)\/drivers\/video\/hdmi/\1\/linuxkpi\/gplv2\/src\/linux_hdmi/' ${file}
done
