diff --git a/scripts/patch-hid-16.04.sh b/scripts/patch-hid-16.04.sh deleted file mode 100755 index 390a7d42d4..0000000000 --- a/scripts/patch-hid-16.04.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash -e -LINUX_BRANCH=$(uname -r) - -# Get the required tools and headers to build the kernel -sudo apt-get install libusb-1.0-0-dev -sudo apt-get install linux-headers-generic build-essential -sudo apt-get install libssl-dev - -# Get the linux kernel and change into source tree -[ ! -d ubuntu-xenial ] && git clone git://kernel.ubuntu.com/ubuntu/ubuntu-xenial.git --depth 1 -cd ubuntu-xenial -sudo git reset --hard - -# Apply UVC formats patch for RealSense devices -patch -p1 < ../scripts/realsense-hid-device_ubuntu16.patch - -# Copy configuration -cp /usr/src/linux-headers-$(uname -r)/.config . -cp /usr/src/linux-headers-$(uname -r)/Module.symvers . - -# Basic build so we can build the accel and gyro modules -make scripts oldconfig modules_prepare - -# Build accel & gyro module -KBASE=`pwd` -cd drivers/media/usb/uvc -cp $KBASE/Module.symvers . -make -C $KBASE M=$KBASE/drivers/iio/accel modules -make -C $KBASE M=$KBASE/drivers/iio/gyro modules - -# Copy to sane location -sudo cp $KBASE/drivers/iio/accel/hid-sensor-accel-3d.ko ~/$LINUX_BRANCH-hid-sensor-accel-3d.ko -sudo cp $KBASE/drivers/iio/gyro/hid-sensor-gyro-3d.ko ~/$LINUX_BRANCH-hid-sensor-gyro-3d.ko - -# Unload existing module if installed -echo "Unloading existing accel and gyro modules..." -sudo modprobe -r hid-sensor-accel-3d -sudo modprobe -r hid-sensor-gyro-3d - -# Delete existing module -sudo rm /lib/modules/`uname -r`/kernel/drivers/iio/accel/hid-sensor-accel-3d.ko -sudo rm /lib/modules/`uname -r`/kernel/drivers/iio/gyro/hid-sensor-gyro-3d.ko - -# Copy out to module directory -sudo cp ~/$LINUX_BRANCH-hid-sensor-accel-3d.ko /lib/modules/`uname -r`/kernel/drivers/iio/accel/hid-sensor-accel-3d.ko -sudo cp ~/$LINUX_BRANCH-hid-sensor-gyro-3d.ko /lib/modules/`uname -r`/kernel/drivers/iio/gyro/hid-sensor-gyro-3d.ko - -# load the new module -sudo modprobe hid-sensor-accel-3d -sudo modprobe hid-sensor-gyro-3d -echo "Script has completed." diff --git a/scripts/patch-realsense-ubuntu-lts-hwe.sh b/scripts/patch-realsense-ubuntu-lts-hwe.sh index 03d14cf92c..8603def10a 100755 --- a/scripts/patch-realsense-ubuntu-lts-hwe.sh +++ b/scripts/patch-realsense-ubuntu-lts-hwe.sh @@ -95,13 +95,13 @@ k_tick=$(echo ${kernel_version[2]} | awk -F'-' '{print $2}') [ $k_maj_min -ge 600 ] && skip_plf_patch=1 [ $k_maj_min -ge 605 ] && skip_md_patch=1 -# Construct branch name from distribution codename {xenial,bionic,..} and kernel version +# Construct branch name from distribution codename {bionic,focal...} and kernel version # ubuntu_codename=`. /etc/os-release; echo ${UBUNTU_CODENAME/*, /}` ubuntu_codename=${ubuntu_codename:-$(lsb_release -c|cut -f2)} if [ -z "${ubuntu_codename}" ]; then - # Trusty Tahr shall use xenial code base - ubuntu_codename="xenial" + # Trusty Tahr shall use bionic code base + ubuntu_codename="bionic" retpoline_retrofit=1 fi @@ -109,17 +109,13 @@ kernel_branch=$(choose_kernel_branch ${LINUX_BRANCH} ${ubuntu_codename}) kernel_name="ubuntu-${ubuntu_codename}" echo -e "\e[32mCreate patches workspace in \e[93m${kernel_name} \e[32mfolder\n\e[0m" -#Distribution-specific packages -if { [ ${ubuntu_codename} != "xenial" ]; } ; -then - require_package libelf-dev - require_package elfutils - #Ubuntu 18.04 kernel 4.18 + 20.04/ 5.4 - require_package bison - require_package flex - # required if kernel >=5.11 - require_package dwarves -fi +require_package libelf-dev +require_package elfutils +#Ubuntu 18.04 kernel 4.18 + 20.04/ 5.4 +require_package bison +require_package flex +# required if kernel >=5.11 +require_package dwarves # Get the linux kernel and change into source tree if [ ! -d ${kernel_name} ]; then diff --git a/scripts/patch-realsense-ubuntu-lts.sh b/scripts/patch-realsense-ubuntu-lts.sh index bef4ac7540..a5d65b48c8 100755 --- a/scripts/patch-realsense-ubuntu-lts.sh +++ b/scripts/patch-realsense-ubuntu-lts.sh @@ -75,12 +75,12 @@ if [[ ( ${xhci_patch} -eq 1 ) && ( ${k_maj_min} -ne 404 ) ]]; then exit 1 fi -# Construct branch name from distribution codename {xenial,bionic,..} and kernel version +# Construct branch name from distribution codename {bionic, focal...} and kernel version ubuntu_codename=`. /etc/os-release; echo ${UBUNTU_CODENAME/*, /}` if [ -z "${ubuntu_codename}" ]; then - # Trusty Tahr shall use xenial code base - ubuntu_codename="xenial" + # Trusty Tahr shall use bionic code base + ubuntu_codename="bionic" retpoline_retrofit=1 fi diff --git a/scripts/patch-realsense-ubuntu-odroid-xu4-4.14.sh b/scripts/patch-realsense-ubuntu-odroid-xu4-4.14.sh index e133fb0f19..099e7da16a 100755 --- a/scripts/patch-realsense-ubuntu-odroid-xu4-4.14.sh +++ b/scripts/patch-realsense-ubuntu-odroid-xu4-4.14.sh @@ -43,14 +43,6 @@ PLATFORM=$(uname -n) #fi kernel_branch="master" echo "Kernel branch: " $kernel_branch -# Construct branch name from distribution codename {xenial,bionic,..} and kernel version -#ubuntu_codename=`. /etc/os-release; echo ${UBUNTU_CODENAME/*, /}` -#if [ -z "$UBUNTU_CODENAME" ]; -#then - # Trusty Tahr shall use xenial code base -# ubuntu_codename="xenial" -# retpoline_retrofit=1 -#fi ubuntu_codename="bionic" #kernel_name="ubuntu-${ubuntu_codename}-$kernel_branch" diff --git a/scripts/patch-realsense-ubuntu-odroid.sh b/scripts/patch-realsense-ubuntu-odroid.sh index 60e336700d..2bc055cd8f 100755 --- a/scripts/patch-realsense-ubuntu-odroid.sh +++ b/scripts/patch-realsense-ubuntu-odroid.sh @@ -39,12 +39,12 @@ else kernel_branch=$(choose_kernel_branch $LINUX_BRANCH) fi echo "Kernel branch: " $kernel_branch -# Construct branch name from distribution codename {xenial,bionic,..} and kernel version +# Construct branch name from distribution codename {bionic, focal...} and kernel version ubuntu_codename=`. /etc/os-release; echo ${UBUNTU_CODENAME/*, /}` if [ -z "$UBUNTU_CODENAME" ]; then - # Trusty Tahr shall use xenial code base - ubuntu_codename="xenial" + # Trusty Tahr shall use bionic code base + ubuntu_codename="bionic" retpoline_retrofit=1 fi diff --git a/scripts/patch-realsense-ubuntu-xenial-joule.sh b/scripts/patch-realsense-ubuntu-xenial-joule.sh deleted file mode 100755 index 432de2f757..0000000000 --- a/scripts/patch-realsense-ubuntu-xenial-joule.sh +++ /dev/null @@ -1,91 +0,0 @@ -#!/bin/bash - -if [ $(ls /dev/video* | wc -l) -ne 0 ]; -then - read -p "Remove all RealSense cameras attached. Hit any key when ready" -fi - -#Include usability functions -source ./scripts/patch-utils.sh - -#Additional packages to build patch -require_package libusb-1.0-0-dev -require_package libssl-dev - -# Get the required tools and headers to build the kernel -sudo apt-get install linux-headers-generic build-essential git - -LINUX_BRANCH=$(uname -r) - -kernel_name="xenial" -# Get the linux kernel and change into source tree -[ ! -d ${kernel_name} ] && git clone https://git.launchpad.net/~wenchien/+git/xenial --depth 1 -cd ${kernel_name} - -# Verify that there are no trailing changes., warn the user to make corrective action if needed -if [ $(git status | grep 'modified:' | wc -l) -ne 0 ]; -then - echo -e "\e[36mThe kernel has modified files:\e[0m" - git status | grep 'modified:' - echo -e "\e[36mProceeding will reset all local kernel changes. Press 'n' within 10 seconds to abort the procedure" - read -t 10 -r -p "Do you want to proceed? [Y/n]" response - response=${response,,} # tolower - if [[ $response =~ ^(n|N)$ ]]; - then - echo -e "\e[41mScript has been aborted on user requiest. Please resolve the modified files are rerun\e[0m" - exit 1 - else - echo -e "\e[0m" - printf "Resetting local changes in %s folder\n " ${kernel_name} - git reset --hard - echo -e "\e[32mUpdate the folder content with the latest from mainline branch\e[0m" - git pull origin master - fi -fi - -#Check if we need to apply patches or get reload stock drivers (Developers' option) -[ "$#" -ne 0 -a "$1" == "reset" ] && reset_driver=1 || reset_driver=0 - -if [ $reset_driver -eq 1 ]; -then - echo -e "\e[43mUser requested to rebuild and reinstall ubuntu-xenial stock drivers\e[0m" -else - # Patching kernel for RealSense devices - echo -e "\e[32mApplying realsense-metadata patch\e[0m" - patch -p1 < ../scripts/realsense-metadata-ubuntu-xenial-joule.patch - echo -e "\e[32mApplying realsense-hid patch\e[0m" - patch -p1 < ../scripts/realsense-hid-ubuntu-xenial-joule.patch -fi - -# Copy configuration -sudo cp /usr/src/linux-headers-$(uname -r)/.config . -sudo cp /usr/src/linux-headers-$(uname -r)/Module.symvers . - -# Basic build so we can build just the uvcvideo module -#yes "" | make silentoldconfig modules_prepare -make silentoldconfig modules_prepare - -# Build the uvc, accel and gyro modules -KBASE=`pwd` -cd drivers/media/usb/uvc -sudo cp $KBASE/Module.symvers . -echo -e "\e[32mCompiling uvc module\e[0m" -make -C $KBASE M=$KBASE/drivers/media/usb/uvc/ modules -echo -e "\e[32mCompiling accelerometer and gyro modules\e[0m" -make -C $KBASE M=$KBASE/drivers/iio/accel modules -make -C $KBASE M=$KBASE/drivers/iio/gyro modules - -# Copy the patched modules to a sane location -sudo cp $KBASE/drivers/media/usb/uvc/uvcvideo.ko ~/$LINUX_BRANCH-uvcvideo.ko -sudo cp $KBASE/drivers/iio/accel/hid-sensor-accel-3d.ko ~/$LINUX_BRANCH-hid-sensor-accel-3d.ko -sudo cp $KBASE/drivers/iio/gyro/hid-sensor-gyro-3d.ko ~/$LINUX_BRANCH-hid-sensor-gyro-3d.ko - -echo -e "\e[32mPatched kernels modules created successfully\n\e[0m" - -# Load the newly built modules -try_module_insert uvcvideo ~/$LINUX_BRANCH-uvcvideo.ko /lib/modules/`uname -r`/kernel/drivers/media/usb/uvc/uvcvideo.ko -try_module_insert hid-sensor-accel-3d ~/$LINUX_BRANCH-hid-sensor-accel-3d.ko /lib/modules/`uname -r`/kernel/drivers/iio/accel/hid-sensor-accel-3d.ko -try_module_insert hid-sensor-gyro-3d ~/$LINUX_BRANCH-hid-sensor-gyro-3d.ko /lib/modules/`uname -r`/kernel/drivers/iio/gyro/hid-sensor-gyro-3d.ko - - -echo -e "\e[92m\n\e[1mScript has completed. Please consult the installation guide for further instruction.\n\e[0m" diff --git a/scripts/patch-ubuntu-kernel-4.16.sh b/scripts/patch-ubuntu-kernel-4.16.sh index 2a0569bd86..b676ad5a23 100755 --- a/scripts/patch-ubuntu-kernel-4.16.sh +++ b/scripts/patch-ubuntu-kernel-4.16.sh @@ -36,12 +36,12 @@ retpoline_retrofit=0 LINUX_BRANCH=$(uname -r) -# Construct branch name from distribution codename {xenial,bionic,..} and kernel version +# Construct branch name from distribution codename {bionic, focal...} and kernel version ubuntu_codename=`. /etc/os-release; echo ${UBUNTU_CODENAME/*, /}` if [ -z "${ubuntu_codename}" ]; then - # Trusty Tahr shall use xenial code base - ubuntu_codename="xenial" + # Trusty Tahr shall use bionic code base + ubuntu_codename="bionic" retpoline_retrofit=1 fi diff --git a/scripts/patch-utils-hwe.sh b/scripts/patch-utils-hwe.sh index ed8fb22cae..52e8390db0 100644 --- a/scripts/patch-utils-hwe.sh +++ b/scripts/patch-utils-hwe.sh @@ -20,16 +20,6 @@ function require_package { fi } -#Based on the current kernel version select the branch name to fetch the kernel source code -# The reference name are pulled here : http://kernel.ubuntu.com/git/ubuntu/ubuntu-xenial.git/ -# As of Jun 19 -# Branch Commit message Author Age -# hwe UBUNTU: Ubuntu-hwe-4.15.0-24.26~16.04.1 Andy Whitcroft 6 days -# hwe-edge UBUNTU: Ubuntu-hwe-4.15.0-23.25~16.04.1 Kleber Sacilotto de Souza 4 weeks -# hwe-zesty UBUNTU: Ubuntu-hwe-4.10.0-43.47~16.04.1 Thadeu Lima de Souza Cascardo 6 months -# master UBUNTU: Ubuntu-4.4.0-128.154 Stefan Bader 4 weeks -# master-next UBUNTU: SAUCE: Redpine: fix soft-ap invisible issue Sanjay Kumar Konduri 2 days - # As of Jun 21, 2020 #Ubuntu bionic repo : http://kernel.ubuntu.com/git/ubuntu/ubuntu-bionic.git/ # hwe UBUNTU: Ubuntu-hwe-5.3.0-56.50~18.04.1 Kleber Sacilotto de Souza 3 weeks @@ -47,31 +37,7 @@ function choose_kernel_branch { # Split the kernel version string IFS='.' read -a kernel_version <<< "$1" - if [ "$2" == "xenial" ]; - then - case "${kernel_version[1]}" in - "4") # Kernel 4.4. is managed on master branch - echo master - ;; - "8") # kernel 4.8 is deprecated and available via explicit tags. Currently on 4.8.0-58 - echo Ubuntu-hwe-4.8.0-58.63_16.04.1 - ;; - "10") # kernel 4.10 is managed on branch hwe-zesty as of 1.1.2018 - echo hwe-zesty - ;; - "13") # kernel 4.13 is on hwe branch and replaced with 4.15. Provide source from a tagged version instead (back-compat) - echo Ubuntu-hwe-4.13.0-45.50_16.04.1 - ;; - "15") # kernel 4.15 for Ubuntu xenial is either hwe or hwe-edge - echo hwe - ;; - *) - #error message shall be redirected to stderr to be printed properly - echo -e "\e[31mUnsupported kernel version $1 . The patches are maintained for Ubuntu16 (Xenial) with LTS kernel versions 4.4, 4.8, 4.10, 4.13 and 4.15\e[0m" >&2 - exit 1 - ;; - esac - elif [ "$2" == "bionic" ]; + if [ "$2" == "bionic" ]; then case "${kernel_version[0]}.${kernel_version[1]}" in "4.15") # kernel 4.15 for Ubuntu 18/Bionic Beaver diff --git a/scripts/patch-utils.sh b/scripts/patch-utils.sh index 9f027cfc68..00e450a438 100755 --- a/scripts/patch-utils.sh +++ b/scripts/patch-utils.sh @@ -20,15 +20,6 @@ function require_package { fi } -#Based on the current kernel version select the branch name to fetch the kernel source code -# The reference name are pulled here : http://kernel.ubuntu.com/git/ubuntu/ubuntu-xenial.git/ -# As of Jun 19 -# Branch Commit message Author Age -# hwe UBUNTU: Ubuntu-hwe-4.15.0-24.26~16.04.1 Andy Whitcroft 6 days -# hwe-edge UBUNTU: Ubuntu-hwe-4.15.0-23.25~16.04.1 Kleber Sacilotto de Souza 4 weeks -# hwe-zesty UBUNTU: Ubuntu-hwe-4.10.0-43.47~16.04.1 Thadeu Lima de Souza Cascardo 6 months -# master UBUNTU: Ubuntu-4.4.0-128.154 Stefan Bader 4 weeks -# master-next UBUNTU: SAUCE: Redpine: fix soft-ap invisible issue Sanjay Kumar Konduri 2 days # As of Jun 21, 2020 #Ubuntu bionic repo : http://kernel.ubuntu.com/git/ubuntu/ubuntu-bionic.git/ @@ -47,31 +38,7 @@ function choose_kernel_branch { # Split the kernel version string IFS='.' read -a kernel_version <<< "$1" - if [ "$2" == "xenial" ]; - then - case "${kernel_version[1]}" in - "4") # Kernel 4.4. is managed on master branch - echo master - ;; - "8") # kernel 4.8 is deprecated and available via explicit tags. Currently on 4.8.0-58 - echo Ubuntu-hwe-4.8.0-58.63_16.04.1 - ;; - "10") # kernel 4.10 is managed on branch hwe-zesty as of 1.1.2018 - echo hwe-zesty - ;; - "13") # kernel 4.13 is on hwe branch and replaced with 4.15. Provide source from a tagged version instead (back-compat) - echo Ubuntu-hwe-4.13.0-45.50_16.04.1 - ;; - "15") # kernel 4.15 for Ubuntu xenial is either hwe or hwe-edge - echo hwe - ;; - *) - #error message shall be redirected to stderr to be printed properly - echo -e "\e[31mUnsupported kernel version $1 . The patches are maintained for Ubuntu16 (Xenial) with LTS kernel versions 4.4, 4.8, 4.10, 4.13 and 4.15\e[0m" >&2 - exit 1 - ;; - esac - elif [ "$2" == "bionic" ]; + if [ "$2" == "bionic" ]; then case "${kernel_version[0]}.${kernel_version[1]}" in "4.15") # kernel 4.15 for Ubuntu 18/Bionic Beaver diff --git a/scripts/patch-uvcvideo-16.04.simple.sh b/scripts/patch-uvcvideo-16.04.simple.sh deleted file mode 100755 index 6a860b938e..0000000000 --- a/scripts/patch-uvcvideo-16.04.simple.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/bash -e -LINUX_BRANCH=$(uname -r) - -# Get the required tools and headers to build the kernel -sudo apt-get install libusb-1.0-0-dev -sudo apt-get install linux-headers-generic build-essential -sudo apt-get install libssl-dev - -# Get the linux kernel and change into source tree -[ ! -d ubuntu-xenial ] && git clone git://kernel.ubuntu.com/ubuntu/ubuntu-xenial.git --depth 1 -cd ubuntu-xenial -sudo git reset --hard - -# Apply UVC formats patch for RealSense devices -patch -p1 < ../scripts/realsense-camera-formats_ubuntu16.patch - -# Copy configuration -cp /usr/src/linux-headers-$(uname -r)/.config . -cp /usr/src/linux-headers-$(uname -r)/Module.symvers . - -# Basic build so we can build just the uvcvideo module -make scripts oldconfig modules_prepare - -# Build the uvc modules -KBASE=`pwd` -cd drivers/media/usb/uvc -cp $KBASE/Module.symvers . -make -C $KBASE M=$KBASE/drivers/media/usb/uvc/ modules - -# Copy to sane location -sudo cp $KBASE/drivers/media/usb/uvc/uvcvideo.ko ~/$LINUX_BRANCH-uvcvideo.ko - -# Unload existing module if installed -echo "Unloading existing uvcvideo driver..." -sudo modprobe -r uvcvideo - -# Delete existing module -sudo rm /lib/modules/`uname -r`/kernel/drivers/media/usb/uvc/uvcvideo.ko - -# Copy out to module directory -sudo cp ~/$LINUX_BRANCH-uvcvideo.ko /lib/modules/`uname -r`/kernel/drivers/media/usb/uvc/uvcvideo.ko - -# load the new module -sudo modprobe uvcvideo -echo "Script has completed. Please consult the installation guide for further instruction." diff --git a/scripts/patch-uvcvideo-fc23.sh b/scripts/patch-uvcvideo-fc23.sh deleted file mode 100755 index 92d05bbe3f..0000000000 --- a/scripts/patch-uvcvideo-fc23.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash -e -# -# Fedora 23 basically used Linux 4.4.x kernel already. -# This script downloads the kernel src RPM matched your current system, -# extracts the source then builds patched UVC module. - -PATCH=`pwd`/`dirname ${BASH_SOURCE[0]}`/realsense-camera-formats.patch - -# Install the fedora maintainer tool and kernel module development packages -echo "Intall Fedora kernel development tools" -sudo dnf install fedora-packager kernel-devel - -# Download and install kernel source RPM -RELEASE=`uname -r` # e.g. 4.4.6-300.fc23.x86_64 -RPMFILE=kernel-`echo $RELEASE | cut -d . -f 1-4`.src.rpm -if [ ! -f $RPMFILE ]; then - echo "Download Fedora Linux kernel source RPM ... (~100MB)" - koji download-build --arch=src $RPMFILE -fi - -# Package dependency check -echo "Checking required packages ..." -sudo dnf builddep $RPMFILE - -# Install kernel source and prepare build, take time and space ... (~1.2GB) -CONFIG_LOCATION=/usr/src/kernels/$RELEASE -rpm -Uvh $RPMFILE 2> /dev/null # ignore warnings, install to ~/rpmbuild -cd ~/rpmbuild/SPECS -rpmbuild -bp --target=$(uname -m) kernel.spec 2> /dev/null - -# Here is the trick, not build the whole RPM but patched UVC module only -cd `find ../BUILD -type d -name linux-$RELEASE` -cp $CONFIG_LOCATION/.config . -cp $CONFIG_LOCATION/Module.symvers . -patch -p1 < $PATCH -# TODO: This is to align vermagic parameter in the module; -# there might be a straightforward way better than this -LOCAL=-`echo $RELEASE | cut -d - -f 2` # e.g. -300.fc23.x86_64 -LOCALVERSION=$LOCAL make modules_prepare -make M=drivers/media/usb/uvc modules - -# Unload existing module if installed -# TODO: Fedora has enabled compressed module in xz format, -# yet currently we insert a new uvcvideo.ko but not -# backup nor replace original uvcvideo.ko.xz -echo "Replace existing uvcvideo driver" -sudo modprobe -r uvcvideo -sudo cp -f drivers/media/usb/uvc/uvcvideo.ko /lib/modules/$RELEASE/kernel/drivers/media/usb/uvc/ -sudo modprobe uvcvideo - -echo "Script has completed. Please consult the installation guide for further instruction." diff --git a/scripts/patch-xhci-realsense-ubuntu-xenial.sh b/scripts/patch-xhci-realsense-ubuntu-xenial.sh deleted file mode 100755 index 435f9f9081..0000000000 --- a/scripts/patch-xhci-realsense-ubuntu-xenial.sh +++ /dev/null @@ -1,83 +0,0 @@ -#!/bin/bash - -set -e - -echo -e "\033[0;31m\nThis script is solely for DSO-1369 - Failing Reliability Testing." -echo -e "\033[0;31mThis script will attempt to install Linux Kernel on this machine." -echo -e "\033[0;31m\n**RUNNING THIS SCRIPT IS AT YOUR OWN RISK!**\n" -read -r -p "Do you want to proceed? [Y/n]" response -response=${response,,} # tolower -if [[ $response =~ ^(n|N)$ ]]; -then -echo -e "\033[0;31m\nScript Aborted!" -exit 1 -fi - -set -e - -#Include usability functions -source ./scripts/patch-utils.sh - -#Additional packages to build patch -require_package libusb-1.0-0-dev -require_package libssl-dev - -# Get the required tools and headers to build the kernel -sudo apt-get install linux-headers-generic build-essential git - -kernel_name="ubuntu-xenial" -# Get the linux kernel and change into source tree -[ ! -d ${kernel_name} ] && git clone git://kernel.ubuntu.com/ubuntu/ubuntu-xenial.git --depth 1 -cd ${kernel_name} - -# Verify that there are no trailing changes., warn the user to make corrective action if needed -if [ $(git status | grep 'modified:' | wc -l) -ne 0 ]; -then - echo -e "\e[36mThe kernel has modified files:\e[0m" - git status | grep 'modified:' - echo -e "\e[36mProceeding will reset all local kernel changes. Press 'n' within 10 seconds to abort the procedure" - read -t 10 -r -p "Do you want to proceed? [Y/n]" response - response=${response,,} # tolower - if [[ $response =~ ^(n|N)$ ]]; - then - echo -e "\e[41mScript has been aborted on user requiest. Please resolve the modified files are rerun\e[0m" - exit 1 - else - echo -e "\e[0m" - printf "Resetting local changes in %s folder\n " ${kernel_name} - git reset --hard - echo -e "\e[32mUpdate the folder content with the latest from mainline branch\e[0m" - git pull origin master - fi -fi - -# LibRealSense and XHCI patches -echo -e "\e[32mApplying realsense-uvc patch\e[0m" -patch -p1 < "../scripts/realsense-camera-formats_ubuntu-xenial.patch" -echo -e "\e[32mApplying realsense-metadata patch\e[0m" -patch -p1 < "../scripts/realsense-metadata-ubuntu-xenial.patch" -echo -e "\e[32mApplying realsense-hid patch\e[0m" -patch -p1 < "../scripts/realsense-hid-ubuntu-xenial.patch" -echo -e "\e[32mApplying 01-xhci-Add-helper-to-get-hardware-dequeue-pointer-for patch\e[0m" -patch -p1 < "../scripts/01-xhci-Add-helper-to-get-hardware-dequeue-pointer-for.patch" -echo -e "\e[32mApplying 02-xhci-Add-stream-id-to-to-xhci_dequeue_state-structur patch\e[0m" -patch -p1 < "../scripts/02-xhci-Add-stream-id-to-to-xhci_dequeue_state-structur.patch" -echo -e "\e[32mApplying 03-xhci-Find-out-where-an-endpoint-or-stream-stopped-fr patch\e[0m" -patch -p1 < "../scripts/03-xhci-Find-out-where-an-endpoint-or-stream-stopped-fr.patch" -echo -e "\e[32mApplying 04-xhci-remove-unused-stopped_td-pointer patch\e[0m" -patch -p1 < "../scripts/04-xhci-remove-unused-stopped_td-pointer.patch" - -# Copy Kernel configuration files -sudo cp /usr/src/linux-headers-$(uname -r)/.config . -sudo cp /usr/src/linux-headers-$(uname -r)/Module.symvers . - -# Compile and Install the patched Kernel -make silentoldconfig modules_prepare -sudo make -j8 -sudo make modules -j8 -sudo make modules_install -j8 -sudo make install - -echo -e "\e[92m\n\e[1m`sudo make kernelrelease` Kernel has been successfully installed." -echo -e "\e[92m\n\e[1mScript has completed. Please reboot and load the newly installed Kernel from GRUB list.\n\e[0m" - diff --git a/scripts/realsense-camera-formats-xenial-Ubuntu-hwe-4.13.0-45.50_16.04.1.patch b/scripts/realsense-camera-formats-xenial-Ubuntu-hwe-4.13.0-45.50_16.04.1.patch deleted file mode 100644 index 5ba9b17d74..0000000000 --- a/scripts/realsense-camera-formats-xenial-Ubuntu-hwe-4.13.0-45.50_16.04.1.patch +++ /dev/null @@ -1,173 +0,0 @@ -From 40c5c21a9613165904cca37f5d15632b442987bc Mon Sep 17 00:00:00 2001 -From: Evgeni Raikhel -From: icarpis -Date: Thu, 30 Aug 2018 16:07:01 +0300 -Subject: [PATCH] realsense formats patch for kernel 4.13 - -Signed-off-by: Evgeni Raikhel ---- - drivers/media/usb/uvc/uvc_driver.c | 52 ++++++++++++++++++++++++++++++++++++ - drivers/media/usb/uvc/uvcvideo.h | 34 +++++++++++++++++++++++ - drivers/media/v4l2-core/v4l2-ioctl.c | 8 +++++- - include/uapi/linux/videodev2.h | 8 ++++++ - 4 files changed, 101 insertions(+), 1 deletion(-) - -diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c -index 70842c5..2c92aa0 100644 ---- a/drivers/media/usb/uvc/uvc_driver.c -+++ b/drivers/media/usb/uvc/uvc_driver.c -@@ -203,6 +203,63 @@ static struct uvc_format_desc uvc_fmts[] = { - .guid = UVC_GUID_FORMAT_INZI, - .fcc = V4L2_PIX_FMT_INZI, - }, -+ { -+ .name = "Luminosity data 8-bit (L8)", -+ .guid = UVC_GUID_FORMAT_L8, -+ .fcc = V4L2_PIX_FMT_GREY, -+ }, -+ { -+ .name = "Depth data 16-bit (D16)", -+ .guid = UVC_GUID_FORMAT_D16, -+ .fcc = V4L2_PIX_FMT_Z16, -+ }, -+ { -+ .name = "Packed raw data 10-bit", -+ .guid = UVC_GUID_FORMAT_W10, -+ .fcc = V4L2_PIX_FMT_W10, -+ }, -+ { -+ .name = "Confidence data (C )", -+ .guid = UVC_GUID_FORMAT_CONFIDENCE_MAP, -+ .fcc = V4L2_PIX_FMT_CONFIDENCE_MAP, -+ }, -+ /* FishEye 8-bit monochrome */ -+ { -+ .name = "Raw data 8-bit (RAW8)", -+ .guid = UVC_GUID_FORMAT_RAW8, -+ .fcc = V4L2_PIX_FMT_GREY, -+ }, -+ /* Legacy/Development formats for backward-compatibility*/ -+ { -+ .name = "Raw data 16-bit (RW16)", -+ .guid = UVC_GUID_FORMAT_RW16, -+ .fcc = V4L2_PIX_FMT_RW16, -+ }, -+ { -+ .name = "16-bit Bayer BGBG/GRGR", -+ .guid = UVC_GUID_FORMAT_BAYER16, -+ .fcc = V4L2_PIX_FMT_SBGGR16, -+ }, -+ { -+ .name = "Frame Grabber (FG )", -+ .guid = UVC_GUID_FORMAT_FG, -+ .fcc = V4L2_PIX_FMT_FG, -+ }, -+ { -+ .name = "SR300 Depth/Confidence (INZC)", -+ .guid = UVC_GUID_FORMAT_INZC, -+ .fcc = V4L2_PIX_FMT_INZC, -+ }, -+ { -+ .name = "Relative IR (PAIR)", -+ .guid = UVC_GUID_FORMAT_PAIR, -+ .fcc = V4L2_PIX_FMT_PAIR, -+ }, -+ { -+ .name = "Z16 Huffman Compression", -+ .guid = UVC_GUID_FORMAT_Z16H, -+ .fcc = V4L2_PIX_FMT_Z16H, -+ }, - }; - - /* ------------------------------------------------------------------------ -diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h -index 15e415e..1ade6ee 100644 ---- a/drivers/media/usb/uvc/uvcvideo.h -+++ b/drivers/media/usb/uvc/uvcvideo.h -@@ -152,6 +155,43 @@ - #define UVC_GUID_FORMAT_INVI \ - { 'I', 'N', 'V', 'I', 0xdb, 0x57, 0x49, 0x5e, \ - 0x8e, 0x3f, 0xf4, 0x79, 0x53, 0x2b, 0x94, 0x6f} -+#define UVC_GUID_FORMAT_L8 \ -+ { '2', 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_D16 \ -+ { 'P', 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_W10 \ -+ { 'W', '1', '0', ' ', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_RAW8 \ -+ { 'R', 'A', 'W', '8', 0x66, 0x1a, 0x42, 0xa2, \ -+ 0x90, 0x65, 0xd0, 0x18, 0x14, 0xa8, 0xef, 0x8a} -+#define UVC_GUID_FORMAT_CONFIDENCE_MAP \ -+ { 'C', ' ', ' ', ' ', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+/* Legacy/Development formats */ -+#define UVC_GUID_FORMAT_RW16 \ -+ { 'R', 'W', '1', '6', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_BAYER16 \ -+ { 'R', 'W', '1', '6', 0x66, 0x1a, 0x42, 0xa2, \ -+ 0x90, 0x65, 0xd0, 0x18, 0x14, 0xa8, 0xef, 0x8a} -+#define UVC_GUID_FORMAT_BAYER16 \ -+ { 'R', 'W', '1', '6', 0x66, 0x1a, 0x42, 0xa2, \ -+ 0x90, 0x65, 0xd0, 0x18, 0x14, 0xa8, 0xef, 0x8a} -+#define UVC_GUID_FORMAT_FG \ -+ { 'F', 'G', ' ', ' ', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_INZC \ -+ { 'I', 'N', 'Z', 'C', 0x02, 0xb6, 0x0f, 0x48, \ -+ 0x97, 0x8c, 0xe4, 0xe8, 0x8a, 0xe8, 0x9b, 0x89} -+#define UVC_GUID_FORMAT_PAIR \ -+ { 'P', 'A', 'I', 'R', 0x36, 0x85, 0x41, 0x48, \ -+ 0xb6, 0xbf, 0x8f, 0xc6, 0xff, 0xb0, 0x83, 0xa8} -+ #define UVC_GUID_FORMAT_Z16H \ -+ { 'Z', '1', '6', 'H', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} - - /* ------------------------------------------------------------------------ - * Driver specific constants. -diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c -index cab63bb..f9fcf13 100644 ---- a/drivers/media/v4l2-core/v4l2-ioctl.c -+++ b/drivers/media/v4l2-core/v4l2-ioctl.c -@@ -1239,7 +1239,14 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt) - case V4L2_TCH_FMT_TU08: descr = "8-bit unsigned touch data"; break; - case V4L2_META_FMT_VSP1_HGO: descr = "R-Car VSP1 1-D Histogram"; break; - case V4L2_META_FMT_VSP1_HGT: descr = "R-Car VSP1 2-D Histogram"; break; -- -+ /* Librealsense Legacy/Development formats*/ -+ case V4L2_PIX_FMT_RW16: descr = "16-bit Raw data"; break; -+ case V4L2_PIX_FMT_W10: descr = "10-bit packed 8888[2222]"; break; -+ case V4L2_PIX_FMT_CONFIDENCE_MAP: descr = "4-bit per pixel packed"; break; -+ case V4L2_PIX_FMT_FG: descr = "Frame Grabber (FG )"; break; -+ case V4L2_PIX_FMT_INZC: descr = "Planar Depth/Confidence (INZC)"; break; -+ case V4L2_PIX_FMT_PAIR: descr = "Relative IR (PAIR)"; break; -+ case V4L2_PIX_FMT_Z16H: descr = "Z16 Huffman Compression"; break; - default: - /* Compressed formats */ - flags = V4L2_FMT_FLAG_COMPRESSED; -diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h -index 45cf735..6944a02 100644 ---- a/include/uapi/linux/videodev2.h -+++ b/include/uapi/linux/videodev2.h -@@ -662,6 +662,15 @@ struct v4l2_pix_format { - #define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ') /* Depth data 16-bit */ - #define V4L2_PIX_FMT_MT21C v4l2_fourcc('M', 'T', '2', '1') /* Mediatek compressed block mode */ - #define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I') /* Intel Planar Greyscale 10-bit and Depth 16-bit */ -+#define V4L2_PIX_FMT_RW16 v4l2_fourcc('R', 'W', '1', '6') /* Raw data 16-bit */ -+#define V4L2_PIX_FMT_W10 v4l2_fourcc('W', '1', '0', ' ') /* Packed raw data 10-bit */ -+#define V4L2_PIX_FMT_CONFIDENCE_MAP v4l2_fourcc('C', ' ', ' ', ' ') /* Two pixels in one byte */ -+ -+/* Librealsense development*/ -+#define V4L2_PIX_FMT_FG v4l2_fourcc('F', 'G', ' ', ' ') /* Frame Grabber */ -+#define V4L2_PIX_FMT_INZC v4l2_fourcc('I', 'N', 'Z', 'C') /* Planar Depth/Confidence */ -+#define V4L2_PIX_FMT_PAIR v4l2_fourcc('P', 'A', 'I', 'R') /* Relative IR */ -+#define V4L2_PIX_FMT_Z16H v4l2_fourcc('Z', '1', '6', 'H') /* Depth Z16 custom Huffman Code compression*/ - - /* SDR formats - used only for Software Defined Radio devices */ - #define V4L2_SDR_FMT_CU8 v4l2_fourcc('C', 'U', '0', '8') /* IQ u8 */ --- -2.7.4 - diff --git a/scripts/realsense-camera-formats-xenial-Ubuntu-hwe-4.8.0-58.63_16.04.1.patch b/scripts/realsense-camera-formats-xenial-Ubuntu-hwe-4.8.0-58.63_16.04.1.patch deleted file mode 100644 index 45d1a84229..0000000000 --- a/scripts/realsense-camera-formats-xenial-Ubuntu-hwe-4.8.0-58.63_16.04.1.patch +++ /dev/null @@ -1,253 +0,0 @@ -From ceb29b08b480a2a6a5e9dccf396a284378268037 Mon Sep 17 00:00:00 2001 -From: aangerma -From: Evgeni Raikhel -From: icarpis - -Date: Thu, 30 Aug 2018 16:07:01 +0300 -Subject: [PATCH] [PATCH] RS400 ,SR300, RS500 pixel formats - -Signed-off-by: Evgeni Raikhel ---- - drivers/media/usb/uvc/Makefile | 1 + - drivers/media/usb/uvc/uvc_driver.c | 55 ++++++++++++++++++++++++++++++++++++ - drivers/media/usb/uvc/uvcvideo.h | 35 ++++++++++++++++++++++- - drivers/media/v4l2-core/v4l2-ioctl.c | 5 ++++ - include/uapi/linux/videodev2.h | 6 ++++ - 5 files changed, 101 insertions(+), 1 deletion(-) - -diff --git a/drivers/media/usb/uvc/Makefile b/drivers/media/usb/uvc/Makefile -index c26d12f..d86cf22 100644 ---- a/drivers/media/usb/uvc/Makefile -+++ b/drivers/media/usb/uvc/Makefile -@@ -1,3 +1,4 @@ -+CONFIG_MODULE_SIG=n - uvcvideo-objs := uvc_driver.o uvc_queue.o uvc_v4l2.o uvc_video.o uvc_ctrl.o \ - uvc_status.o uvc_isight.o uvc_debugfs.o - ifeq ($(CONFIG_MEDIA_CONTROLLER),y) -diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c -index cde43b6..54bd175 100644 ---- a/drivers/media/usb/uvc/uvc_driver.c -+++ b/drivers/media/usb/uvc/uvc_driver.c -@@ -168,6 +168,108 @@ static struct uvc_format_desc uvc_fmts[] = { - .guid = UVC_GUID_FORMAT_RW10, - .fcc = V4L2_PIX_FMT_SRGGB10P, - }, -+ { -+ .name = "Raw data 8-bit (RAW8)", -+ .guid = UVC_GUID_FORMAT_RAW8, -+ .fcc = V4L2_PIX_FMT_GREY, -+ }, -+ { -+ .name = "Raw data 16-bit (RW16)", -+ .guid = UVC_GUID_FORMAT_RW16, -+ .fcc = V4L2_PIX_FMT_RW16, -+ }, -+ { -+ .name = "Depth 16-bit (INVZ)", -+ .guid = UVC_GUID_FORMAT_INVZ, -+ .fcc = V4L2_PIX_FMT_Z16, -+ }, -+ { -+ .name = "Depth:IR 16:8 24-bit (INZI)", -+ .guid = UVC_GUID_FORMAT_INZI, -+ .fcc = V4L2_PIX_FMT_INZI, -+ }, -+ { -+ .name = "Depth 16-bit (INVR)", -+ .guid = UVC_GUID_FORMAT_INVR, -+ .fcc = V4L2_PIX_FMT_INVR, -+ }, -+ { -+ .name = "Depth:IR 16:8 24-bit (INRI)", -+ .guid = UVC_GUID_FORMAT_INRI, -+ .fcc = V4L2_PIX_FMT_INRI, -+ }, -+ { -+ .name = "Infrared 8-bit (INVI)", -+ .guid = UVC_GUID_FORMAT_INVI, -+ .fcc = V4L2_PIX_FMT_GREY, -+ }, -+ { -+ .name = "FlickerIR 8-bit (RELI)", -+ .guid = UVC_GUID_FORMAT_RELI, -+ .fcc = V4L2_PIX_FMT_RELI, -+ }, -+ { -+ .name = "Luminosity data 8-bit (L8)", -+ .guid = UVC_GUID_FORMAT_L8, -+ .fcc = V4L2_PIX_FMT_GREY, -+ }, -+ { -+ .name = "Luminosity data 16-bit (L16)", -+ .guid = UVC_GUID_FORMAT_L16, -+ .fcc = V4L2_PIX_FMT_Y16, -+ }, -+ { -+ .name = "Depth data 16-bit (D16)", -+ .guid = UVC_GUID_FORMAT_D16, -+ .fcc = V4L2_PIX_FMT_Z16, -+ }, -+ { -+ .name = "16-bit Bayer BGBG/GRGR", -+ .guid = UVC_GUID_FORMAT_BAYER16, -+ .fcc = V4L2_PIX_FMT_SBGGR16, -+ }, -+ { -+ .name = "Packed raw data 10-bit", -+ .guid = UVC_GUID_FORMAT_W10, -+ .fcc = V4L2_PIX_FMT_W10, -+ }, -+ { -+ .name = "Confidence data (C )", -+ .guid = UVC_GUID_FORMAT_CONFIDENCE_MAP, -+ .fcc = V4L2_PIX_FMT_CONFIDENCE_MAP, -+ }, -+ /* FishEye 8-bit monochrome */ -+ { -+ .name = "Raw data 8-bit (RAW8)", -+ .guid = UVC_GUID_FORMAT_RAW8, -+ .fcc = V4L2_PIX_FMT_GREY, -+ }, -+ /* Legacy/Development formats for backward-compatibility*/ -+ { -+ .name = "Raw data 16-bit (RW16)", -+ .guid = UVC_GUID_FORMAT_RW16, -+ .fcc = V4L2_PIX_FMT_RW16, -+ }, -+ { -+ .name = "Frame Grabber (FG )", -+ .guid = UVC_GUID_FORMAT_FG, -+ .fcc = V4L2_PIX_FMT_FG, -+ }, -+ { -+ .name = "SR300 Depth/Confidence (INZC)", -+ .guid = UVC_GUID_FORMAT_INZC, -+ .fcc = V4L2_PIX_FMT_INZC, -+ }, -+ { -+ .name = "Relative IR (PAIR)", -+ .guid = UVC_GUID_FORMAT_PAIR, -+ .fcc = V4L2_PIX_FMT_PAIR, -+ }, -+ { -+ .name = "Z16 Huffman Compression", -+ .guid = UVC_GUID_FORMAT_Z16H, -+ .fcc = V4L2_PIX_FMT_Z16H, -+ }, - }; - - /* ------------------------------------------------------------------------ -diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h -index 7e4d3ee..e517d8f 100644 ---- a/drivers/media/usb/uvc/uvcvideo.h -+++ b/drivers/media/usb/uvc/uvcvideo.h -@@ -131,6 +131,60 @@ - #define UVC_GUID_FORMAT_RW10 \ - { 'R', 'W', '1', '0', 0x00, 0x00, 0x10, 0x00, \ - 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_RAW8 \ -+ { 'R', 'A', 'W', '8', 0x66, 0x1a, 0x42, 0xa2, \ -+ 0x90, 0x65, 0xd0, 0x18, 0x14, 0xa8, 0xef, 0x8a} -+#define UVC_GUID_FORMAT_RW16 \ -+ { 'R', 'W', '1', '6', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_INVZ \ -+ { 'I', 'N', 'V', 'Z', 0x90, 0x2d, 0x58, 0x4a, \ -+ 0x92, 0x0b, 0x77, 0x3f, 0x1f, 0x2c, 0x55, 0x6b} -+#define UVC_GUID_FORMAT_INZI \ -+ { 'I', 'N', 'Z', 'I', 0x66, 0x1a, 0x42, 0xa2, \ -+ 0x90, 0x65, 0xd0, 0x18, 0x14, 0xa8, 0xef, 0x8a} -+#define UVC_GUID_FORMAT_INVR \ -+ { 'I', 'N', 'V', 'R', 0x90, 0x2d, 0x58, 0x4a, \ -+ 0x92, 0x0b, 0x77, 0x3f, 0x1f, 0x2c, 0x55, 0x6b} -+#define UVC_GUID_FORMAT_INRI \ -+ { 'I', 'N', 'R', 'I', 0x90, 0x2d, 0x58, 0x4a, \ -+ 0x92, 0x0b, 0x77, 0x3f, 0x1f, 0x2c, 0x55, 0x6b} -+#define UVC_GUID_FORMAT_INVI \ -+ { 'I', 'N', 'V', 'I', 0xdb, 0x57, 0x49, 0x5e, \ -+ 0x8e, 0x3f, 0xf4, 0x79, 0x53, 0x2b, 0x94, 0x6f} -+#define UVC_GUID_FORMAT_RELI \ -+ { 'R', 'E', 'L', 'I', 0x14, 0x13, 0x43, 0xf9, \ -+ 0xa7, 0x5a, 0xee, 0x6b, 0xbf, 0x01, 0x2e, 0x23} -+#define UVC_GUID_FORMAT_L8 \ -+ { '2', 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_L16 \ -+ { 'Q', 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_D16 \ -+ { 'P', 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_BAYER16 \ -+ { 'R', 'W', '1', '6', 0x66, 0x1a, 0x42, 0xa2, \ -+ 0x90, 0x65, 0xd0, 0x18, 0x14, 0xa8, 0xef, 0x8a} -+#define UVC_GUID_FORMAT_W10 \ -+ { 'W', '1', '0', ' ', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_CONFIDENCE_MAP \ -+ { 'C', ' ', ' ', ' ', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_FG \ -+ { 'F', 'G', ' ', ' ', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_INZC \ -+ { 'I', 'N', 'Z', 'C', 0x02, 0xb6, 0x0f, 0x48, \ -+ 0x97, 0x8c, 0xe4, 0xe8, 0x8a, 0xe8, 0x9b, 0x89} -+#define UVC_GUID_FORMAT_PAIR \ -+ { 'P', 'A', 'I', 'R', 0x36, 0x85, 0x41, 0x48, \ -+ 0xb6, 0xbf, 0x8f, 0xc6, 0xff, 0xb0, 0x83, 0xa8} -+#define UVC_GUID_FORMAT_Z16H \ -+ { 'Z', '1', '6', 'H', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} - - /* ------------------------------------------------------------------------ - * Driver specific constants. -diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c -index 51a0fa1..391c2b3 100644 ---- a/drivers/media/v4l2-core/v4l2-ioctl.c -+++ b/drivers/media/v4l2-core/v4l2-ioctl.c -@@ -1243,6 +1243,17 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt) - case V4L2_SDR_FMT_CS8: descr = "Complex S8"; break; - case V4L2_SDR_FMT_CS14LE: descr = "Complex S14LE"; break; - case V4L2_SDR_FMT_RU12LE: descr = "Real U12LE"; break; -+ case V4L2_PIX_FMT_Y8I: descr = "8-bit Greyscale L/R interleaved"; break; -+ case V4L2_PIX_FMT_Y12I: descr = "12-bit Grey L/R interleaved"; break; -+ case V4L2_PIX_FMT_Z16: descr = "16-bit Depth data"; break; -+ case V4L2_PIX_FMT_RW16: descr = "16-bit Raw data"; break; -+ case V4L2_PIX_FMT_INZI: descr = "32-bit IR:Depth 10:16"; break; -+ case V4L2_PIX_FMT_W10: descr = "10-bit packed 8888[2222]"; break; -+ case V4L2_PIX_FMT_CONFIDENCE_MAP: descr = "4-bit per pixel packed"; break; -+ case V4L2_PIX_FMT_FG: descr = "Frame Grabber (FG )"; break; -+ case V4L2_PIX_FMT_INZC: descr = "Planar Depth/Confidence (INZC)"; break; -+ case V4L2_PIX_FMT_PAIR: descr = "Relative IR (PAIR)"; break; -+ case V4L2_PIX_FMT_Z16H: descr = "Z16 Huffman Compression"; break; - - default: - /* Compressed formats */ -diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h -index 724f43e..29bcba5 100644 ---- a/include/uapi/linux/videodev2.h -+++ b/include/uapi/linux/videodev2.h -@@ -627,6 +627,19 @@ struct v4l2_pix_format { - #define V4L2_PIX_FMT_Y8I v4l2_fourcc('Y', '8', 'I', ' ') /* Greyscale 8-bit L/R interleaved */ - #define V4L2_PIX_FMT_Y12I v4l2_fourcc('Y', '1', '2', 'I') /* Greyscale 12-bit L/R interleaved */ - #define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ') /* Depth data 16-bit */ -+#define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* Greyscale 16-bit */ -+#define V4L2_PIX_FMT_RW16 v4l2_fourcc('R', 'W', '1', '6') /* Raw data 16-bit */ -+#define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I') /* 24 Depth/IR 16:8 */ -+#define V4L2_PIX_FMT_INVR v4l2_fourcc('I', 'N', 'V', 'R') /* 16 Depth */ -+#define V4L2_PIX_FMT_INRI v4l2_fourcc('I', 'N', 'R', 'I') /* 24 Depth/IR 16:8 */ -+#define V4L2_PIX_FMT_RELI v4l2_fourcc('R', 'E', 'L', 'I') /* 8 IR alternating on off illumination */ -+#define V4L2_PIX_FMT_W10 v4l2_fourcc('W', '1', '0', ' ') /* Packed raw data 10-bit */ -+#define V4L2_PIX_FMT_CONFIDENCE_MAP v4l2_fourcc('C', ' ', ' ', ' ') /* Two pixels in one byte */ -+/* Librealsense development*/ -+#define V4L2_PIX_FMT_FG v4l2_fourcc('F', 'G', ' ', ' ') /* Frame Grabber */ -+#define V4L2_PIX_FMT_INZC v4l2_fourcc('I', 'N', 'Z', 'C') /* Planar Depth/Confidence */ -+#define V4L2_PIX_FMT_PAIR v4l2_fourcc('P', 'A', 'I', 'R') /* Relative IR */ -+#define V4L2_PIX_FMT_Z16H v4l2_fourcc('Z', '1', '6', 'H') /* Depth Z16 custom Huffman Code compression*/ - - /* SDR formats - used only for Software Defined Radio devices */ - #define V4L2_SDR_FMT_CU8 v4l2_fourcc('C', 'U', '0', '8') /* IQ u8 */ --- -2.7.4 - diff --git a/scripts/realsense-camera-formats-xenial-hwe-zesty.patch b/scripts/realsense-camera-formats-xenial-hwe-zesty.patch deleted file mode 100644 index 14da7e3e61..0000000000 --- a/scripts/realsense-camera-formats-xenial-hwe-zesty.patch +++ /dev/null @@ -1,246 +0,0 @@ -From 27e4e53acd1e4e4175bd2f4a5bc9ed19024d3113 Mon Sep 17 00:00:00 2001 -From: Dmitry Perchanov -Date: Sun, 21 Aug 2022 15:57:47 +0300 -Subject: [PATCH] Register realsense development formats. Xenial hwe-zesty, - Kernel 4.10 - -Signed-off-by: Dmitry Perchanov ---- - drivers/media/usb/uvc/uvc_driver.c | 92 ++++++++++++++++++++++++++++ - drivers/media/usb/uvc/uvcvideo.h | 48 +++++++++++++++ - drivers/media/v4l2-core/v4l2-ioctl.c | 10 ++- - include/uapi/linux/videodev2.h | 13 +++- - 4 files changed, 161 insertions(+), 2 deletions(-) - -diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c -index 04bf35063c4c..c79677e15658 100644 ---- a/drivers/media/usb/uvc/uvc_driver.c -+++ b/drivers/media/usb/uvc/uvc_driver.c -@@ -158,6 +158,11 @@ static struct uvc_format_desc uvc_fmts[] = { - .guid = UVC_GUID_FORMAT_Y12I, - .fcc = V4L2_PIX_FMT_Y12I, - }, -+ { -+ .name = "Greyscale 16 L/R (Y16I)", -+ .guid = UVC_GUID_FORMAT_Y16I, -+ .fcc = V4L2_PIX_FMT_Y16I, -+ }, - { - .name = "Depth data 16-bit (Z16)", - .guid = UVC_GUID_FORMAT_Z16, -@@ -188,6 +193,93 @@ static struct uvc_format_desc uvc_fmts[] = { - .guid = UVC_GUID_FORMAT_GR16, - .fcc = V4L2_PIX_FMT_SGRBG16, - }, -+ { -+ .name = "Raw data 8-bit (RAW8)", -+ .guid = UVC_GUID_FORMAT_RAW8, -+ .fcc = V4L2_PIX_FMT_GREY, -+ }, -+ { -+ .name = "Raw data 16-bit (RW16)", -+ .guid = UVC_GUID_FORMAT_RW16, -+ .fcc = V4L2_PIX_FMT_RW16, -+ }, -+ { -+ .name = "Depth 16-bit (INVZ)", -+ .guid = UVC_GUID_FORMAT_INVZ, -+ .fcc = V4L2_PIX_FMT_Z16, -+ }, -+ { -+ .name = "Depth:IR 16:8 24-bit (INZI)", -+ .guid = UVC_GUID_FORMAT_INZI, -+ .fcc = V4L2_PIX_FMT_INZI, -+ }, -+ { -+ .name = "Infrared 8-bit (INVI)", -+ .guid = UVC_GUID_FORMAT_INVI, -+ .fcc = V4L2_PIX_FMT_GREY, -+ }, -+ { -+ .name = "Luminosity data 8-bit (L8)", -+ .guid = UVC_GUID_FORMAT_L8, -+ .fcc = V4L2_PIX_FMT_GREY, -+ }, -+ { -+ .name = "Luminosity data 16-bit (L16)", -+ .guid = UVC_GUID_FORMAT_L16, -+ .fcc = V4L2_PIX_FMT_Y16, -+ }, -+ { -+ .name = "Depth data 16-bit (D16)", -+ .guid = UVC_GUID_FORMAT_D16, -+ .fcc = V4L2_PIX_FMT_Z16, -+ }, -+ { -+ .name = "16-bit Bayer BGBG/GRGR", -+ .guid = UVC_GUID_FORMAT_BAYER16, -+ .fcc = V4L2_PIX_FMT_SBGGR16, -+ }, -+ { -+ .name = "Packed raw data 10-bit", -+ .guid = UVC_GUID_FORMAT_W10, -+ .fcc = V4L2_PIX_FMT_W10, -+ }, -+ { -+ .name = "Confidence data (C )", -+ .guid = UVC_GUID_FORMAT_CONFIDENCE_MAP, -+ .fcc = V4L2_PIX_FMT_CONFIDENCE_MAP, -+ }, -+ /* FishEye 8-bit monochrome */ -+ { -+ .name = "Raw data 8-bit (RAW8)", -+ .guid = UVC_GUID_FORMAT_RAW8, -+ .fcc = V4L2_PIX_FMT_GREY, -+ }, -+ /* Legacy/Development formats for backward-compatibility*/ -+ { -+ .name = "Raw data 16-bit (RW16)", -+ .guid = UVC_GUID_FORMAT_RW16, -+ .fcc = V4L2_PIX_FMT_RW16, -+ }, -+ { -+ .name = "Frame Grabber (FG )", -+ .guid = UVC_GUID_FORMAT_FG, -+ .fcc = V4L2_PIX_FMT_FG, -+ }, -+ { -+ .name = "SR300 Depth/Confidence (INZC)", -+ .guid = UVC_GUID_FORMAT_INZC, -+ .fcc = V4L2_PIX_FMT_INZC, -+ }, -+ { -+ .name = "Relative IR (PAIR)", -+ .guid = UVC_GUID_FORMAT_PAIR, -+ .fcc = V4L2_PIX_FMT_PAIR, -+ }, -+ { -+ .name = "Z16 Huffman Compression", -+ .guid = UVC_GUID_FORMAT_Z16H, -+ .fcc = V4L2_PIX_FMT_Z16H, -+ }, - }; - - /* ------------------------------------------------------------------------ -diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h -index 3d6cc62f3cd2..cf89ab33feb6 100644 ---- a/drivers/media/usb/uvc/uvcvideo.h -+++ b/drivers/media/usb/uvc/uvcvideo.h -@@ -137,12 +137,60 @@ - #define UVC_GUID_FORMAT_Y12I \ - { 'Y', '1', '2', 'I', 0x00, 0x00, 0x10, 0x00, \ - 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_Y16I \ -+ { 'Y', '1', '6', 'I', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} - #define UVC_GUID_FORMAT_Z16 \ - { 'Z', '1', '6', ' ', 0x00, 0x00, 0x10, 0x00, \ - 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} - #define UVC_GUID_FORMAT_RW10 \ - { 'R', 'W', '1', '0', 0x00, 0x00, 0x10, 0x00, \ - 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_RAW8 \ -+ { 'R', 'A', 'W', '8', 0x66, 0x1a, 0x42, 0xa2, \ -+ 0x90, 0x65, 0xd0, 0x18, 0x14, 0xa8, 0xef, 0x8a} -+#define UVC_GUID_FORMAT_RW16 \ -+ { 'R', 'W', '1', '6', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_INVZ \ -+ { 'I', 'N', 'V', 'Z', 0x90, 0x2d, 0x58, 0x4a, \ -+ 0x92, 0x0b, 0x77, 0x3f, 0x1f, 0x2c, 0x55, 0x6b} -+#define UVC_GUID_FORMAT_INZI \ -+ { 'I', 'N', 'Z', 'I', 0x66, 0x1a, 0x42, 0xa2, \ -+ 0x90, 0x65, 0xd0, 0x18, 0x14, 0xa8, 0xef, 0x8a} -+#define UVC_GUID_FORMAT_INVI \ -+ { 'I', 'N', 'V', 'I', 0xdb, 0x57, 0x49, 0x5e, \ -+ 0x8e, 0x3f, 0xf4, 0x79, 0x53, 0x2b, 0x94, 0x6f} -+#define UVC_GUID_FORMAT_L8 \ -+ { '2', 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_L16 \ -+ { 'Q', 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_D16 \ -+ { 'P', 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_BAYER16 \ -+ { 'R', 'W', '1', '6', 0x66, 0x1a, 0x42, 0xa2, \ -+ 0x90, 0x65, 0xd0, 0x18, 0x14, 0xa8, 0xef, 0x8a} -+#define UVC_GUID_FORMAT_W10 \ -+ { 'W', '1', '0', ' ', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_CONFIDENCE_MAP \ -+ { 'C', ' ', ' ', ' ', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_FG \ -+ { 'F', 'G', ' ', ' ', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_INZC \ -+ { 'I', 'N', 'Z', 'C', 0x02, 0xb6, 0x0f, 0x48, \ -+ 0x97, 0x8c, 0xe4, 0xe8, 0x8a, 0xe8, 0x9b, 0x89} -+#define UVC_GUID_FORMAT_PAIR \ -+ { 'P', 'A', 'I', 'R', 0x36, 0x85, 0x41, 0x48, \ -+ 0xb6, 0xbf, 0x8f, 0xc6, 0xff, 0xb0, 0x83, 0xa8} -+#define UVC_GUID_FORMAT_Z16H \ -+ { 'Z', '1', '6', 'H', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} - - /* ------------------------------------------------------------------------ - * Driver specific constants. -diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c -index 0c3f238a2e76..ba436a17599f 100644 ---- a/drivers/media/v4l2-core/v4l2-ioctl.c -+++ b/drivers/media/v4l2-core/v4l2-ioctl.c -@@ -1130,6 +1130,7 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt) - case V4L2_PIX_FMT_Y10BPACK: descr = "10-bit Greyscale (Packed)"; break; - case V4L2_PIX_FMT_Y8I: descr = "Interleaved 8-bit Greyscale"; break; - case V4L2_PIX_FMT_Y12I: descr = "Interleaved 12-bit Greyscale"; break; -+ case V4L2_PIX_FMT_Y16I: descr = "Interleaved 16-bit Greyscale"; break; - case V4L2_PIX_FMT_Z16: descr = "16-bit Depth"; break; - case V4L2_PIX_FMT_PAL8: descr = "8-bit Palette"; break; - case V4L2_PIX_FMT_UV8: descr = "8-bit Chrominance UV 4-4"; break; -@@ -1217,7 +1218,14 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt) - case V4L2_TCH_FMT_DELTA_TD08: descr = "8-bit signed deltas"; break; - case V4L2_TCH_FMT_TU16: descr = "16-bit unsigned touch data"; break; - case V4L2_TCH_FMT_TU08: descr = "8-bit unsigned touch data"; break; -- -+ case V4L2_PIX_FMT_RW16: descr = "16-bit Raw data"; break; -+ case V4L2_PIX_FMT_INZI: descr = "32-bit IR:Depth 10:16"; break; -+ case V4L2_PIX_FMT_W10: descr = "10-bit packed 8888[2222]"; break; -+ case V4L2_PIX_FMT_CONFIDENCE_MAP: descr = "4-bit per pixel packed"; break; -+ case V4L2_PIX_FMT_FG: descr = "Frame Grabber (FG )"; break; -+ case V4L2_PIX_FMT_INZC: descr = "Planar Depth/Confidence (INZC)"; break; -+ case V4L2_PIX_FMT_PAIR: descr = "Relative IR (PAIR)"; break; -+ case V4L2_PIX_FMT_Z16H: descr = "Z16 Huffman Compression"; break; - default: - /* Compressed formats */ - flags = V4L2_FMT_FLAG_COMPRESSED; -diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h -index 45184a2ef66c..3196ac01d84f 100644 ---- a/include/uapi/linux/videodev2.h -+++ b/include/uapi/linux/videodev2.h -@@ -659,9 +659,20 @@ struct v4l2_pix_format { - #define V4L2_PIX_FMT_S5C_UYVY_JPG v4l2_fourcc('S', '5', 'C', 'I') /* S5C73M3 interleaved UYVY/JPEG */ - #define V4L2_PIX_FMT_Y8I v4l2_fourcc('Y', '8', 'I', ' ') /* Greyscale 8-bit L/R interleaved */ - #define V4L2_PIX_FMT_Y12I v4l2_fourcc('Y', '1', '2', 'I') /* Greyscale 12-bit L/R interleaved */ -+#define V4L2_PIX_FMT_Y16I v4l2_fourcc('Y', '1', '6', 'I') /* Greyscale 16-bit L/R interleaved */ - #define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ') /* Depth data 16-bit */ - #define V4L2_PIX_FMT_MT21C v4l2_fourcc('M', 'T', '2', '1') /* Mediatek compressed block mode */ -- -+#define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* Greyscale 16-bit */ -+#define V4L2_PIX_FMT_RW16 v4l2_fourcc('R', 'W', '1', '6') /* Raw data 16-bit */ -+#define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I') /* 24 Depth/IR 16:8 */ -+#define V4L2_PIX_FMT_W10 v4l2_fourcc('W', '1', '0', ' ') /* Packed raw data 10-bit */ -+#define V4L2_PIX_FMT_CONFIDENCE_MAP v4l2_fourcc('C', ' ', ' ', ' ') /* Two pixels in one byte */ -+ -+/* Librealsense development*/ -+#define V4L2_PIX_FMT_FG v4l2_fourcc('F', 'G', ' ', ' ') /* Frame Grabber */ -+#define V4L2_PIX_FMT_INZC v4l2_fourcc('I', 'N', 'Z', 'C') /* Planar Depth/Confidence */ -+#define V4L2_PIX_FMT_PAIR v4l2_fourcc('P', 'A', 'I', 'R') /* Relative IR */ -+#define V4L2_PIX_FMT_Z16H v4l2_fourcc('Z', '1', '6', 'H') /* Depth Z16 custom Huffman Code compression*/ - /* SDR formats - used only for Software Defined Radio devices */ - #define V4L2_SDR_FMT_CU8 v4l2_fourcc('C', 'U', '0', '8') /* IQ u8 */ - #define V4L2_SDR_FMT_CU16LE v4l2_fourcc('C', 'U', '1', '6') /* IQ u16le */ --- -2.37.1 - diff --git a/scripts/realsense-camera-formats-xenial-hwe.patch b/scripts/realsense-camera-formats-xenial-hwe.patch deleted file mode 100644 index d757a280b4..0000000000 --- a/scripts/realsense-camera-formats-xenial-hwe.patch +++ /dev/null @@ -1,217 +0,0 @@ -From 7a1bdea21fa4ec32d1a984a1a9459f2c6a02c61c Mon Sep 17 00:00:00 2001 -From: Dmitry Perchanov -Date: Sun, 21 Aug 2022 15:52:41 +0300 -Subject: [PATCH] Streaming formats for Ubuntu Xenial hwe Kernel 4.15 - -Signed-off-by: Dmitry Perchanov ---- - drivers/media/usb/uvc/Makefile | 1 + - drivers/media/usb/uvc/uvc_driver.c | 62 ++++++++++++++++++++++++++++ - drivers/media/usb/uvc/uvcvideo.h | 40 ++++++++++++++++++ - drivers/media/v4l2-core/v4l2-ioctl.c | 10 ++++- - include/uapi/linux/videodev2.h | 10 +++++ - 5 files changed, 122 insertions(+), 1 deletion(-) - -diff --git a/drivers/media/usb/uvc/Makefile b/drivers/media/usb/uvc/Makefile -index a4fe5b5d533f..cb5ee0955b5e 100644 ---- a/drivers/media/usb/uvc/Makefile -+++ b/drivers/media/usb/uvc/Makefile -@@ -1,4 +1,5 @@ - # SPDX-License-Identifier: GPL-2.0 -+CONFIG_MODULE_SIG=n - uvcvideo-objs := uvc_driver.o uvc_queue.o uvc_v4l2.o uvc_video.o uvc_ctrl.o \ - uvc_status.o uvc_isight.o uvc_debugfs.o - ifeq ($(CONFIG_MEDIA_CONTROLLER),y) -diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c -index 3fff6fabefac..2eca76e13d33 100644 ---- a/drivers/media/usb/uvc/uvc_driver.c -+++ b/drivers/media/usb/uvc/uvc_driver.c -@@ -158,6 +158,11 @@ static struct uvc_format_desc uvc_fmts[] = { - .guid = UVC_GUID_FORMAT_Y12I, - .fcc = V4L2_PIX_FMT_Y12I, - }, -+ { -+ .name = "Greyscale 16 L/R (Y16I)", -+ .guid = UVC_GUID_FORMAT_Y16I, -+ .fcc = V4L2_PIX_FMT_Y16I, -+ }, - { - .name = "Depth data 16-bit (Z16)", - .guid = UVC_GUID_FORMAT_Z16, -@@ -208,6 +213,63 @@ static struct uvc_format_desc uvc_fmts[] = { - .guid = UVC_GUID_FORMAT_HEVC, - .fcc = V4L2_PIX_FMT_HEVC, - }, -+ { -+ .name = "Luminosity data 8-bit (L8)", -+ .guid = UVC_GUID_FORMAT_L8, -+ .fcc = V4L2_PIX_FMT_GREY, -+ }, -+ { -+ .name = "Depth data 16-bit (D16)", -+ .guid = UVC_GUID_FORMAT_D16, -+ .fcc = V4L2_PIX_FMT_Z16, -+ }, -+ { -+ .name = "Packed raw data 10-bit", -+ .guid = UVC_GUID_FORMAT_W10, -+ .fcc = V4L2_PIX_FMT_W10, -+ }, -+ { -+ .name = "Confidence data (C )", -+ .guid = UVC_GUID_FORMAT_CONFIDENCE_MAP, -+ .fcc = V4L2_PIX_FMT_CONFIDENCE_MAP, -+ }, -+ /* FishEye 8-bit monochrome */ -+ { -+ .name = "Raw data 8-bit (RAW8)", -+ .guid = UVC_GUID_FORMAT_RAW8, -+ .fcc = V4L2_PIX_FMT_GREY, -+ }, -+ /* Legacy/Development formats for backward-compatibility*/ -+ { -+ .name = "Raw data 16-bit (RW16)", -+ .guid = UVC_GUID_FORMAT_RW16, -+ .fcc = V4L2_PIX_FMT_RW16, -+ }, -+ { -+ .name = "16-bit Bayer BGBG/GRGR", -+ .guid = UVC_GUID_FORMAT_BAYER16, -+ .fcc = V4L2_PIX_FMT_SBGGR16, -+ }, -+ { -+ .name = "Frame Grabber (FG )", -+ .guid = UVC_GUID_FORMAT_FG, -+ .fcc = V4L2_PIX_FMT_FG, -+ }, -+ { -+ .name = "SR300 Depth/Confidence (INZC)", -+ .guid = UVC_GUID_FORMAT_INZC, -+ .fcc = V4L2_PIX_FMT_INZC, -+ }, -+ { -+ .name = "Relative IR (PAIR)", -+ .guid = UVC_GUID_FORMAT_PAIR, -+ .fcc = V4L2_PIX_FMT_PAIR, -+ }, -+ { -+ .name = "Z16 Huffman Compression", -+ .guid = UVC_GUID_FORMAT_Z16H, -+ .fcc = V4L2_PIX_FMT_Z16H, -+ }, - }; - - /* ------------------------------------------------------------------------ -diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h -index 029fbf881d74..38b6aaa5938f 100644 ---- a/drivers/media/usb/uvc/uvcvideo.h -+++ b/drivers/media/usb/uvc/uvcvideo.h -@@ -138,6 +138,9 @@ - #define UVC_GUID_FORMAT_Y12I \ - { 'Y', '1', '2', 'I', 0x00, 0x00, 0x10, 0x00, \ - 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_Y16I \ -+ { 'Y', '1', '6', 'I', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} - #define UVC_GUID_FORMAT_Z16 \ - { 'Z', '1', '6', ' ', 0x00, 0x00, 0x10, 0x00, \ - 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -@@ -156,6 +159,43 @@ - #define UVC_GUID_FORMAT_HEVC \ - { 'H', 'E', 'V', 'C', 0x00, 0x00, 0x10, 0x00, \ - 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_L8 \ -+ { '2', 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_D16 \ -+ { 'P', 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_W10 \ -+ { 'W', '1', '0', ' ', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_RAW8 \ -+ { 'R', 'A', 'W', '8', 0x66, 0x1a, 0x42, 0xa2, \ -+ 0x90, 0x65, 0xd0, 0x18, 0x14, 0xa8, 0xef, 0x8a} -+#define UVC_GUID_FORMAT_CONFIDENCE_MAP \ -+ { 'C', ' ', ' ', ' ', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+/* Legacy/Development formats */ -+#define UVC_GUID_FORMAT_RW16 \ -+ { 'R', 'W', '1', '6', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_BAYER16 \ -+ { 'R', 'W', '1', '6', 0x66, 0x1a, 0x42, 0xa2, \ -+ 0x90, 0x65, 0xd0, 0x18, 0x14, 0xa8, 0xef, 0x8a} -+#define UVC_GUID_FORMAT_BAYER16 \ -+ { 'R', 'W', '1', '6', 0x66, 0x1a, 0x42, 0xa2, \ -+ 0x90, 0x65, 0xd0, 0x18, 0x14, 0xa8, 0xef, 0x8a} -+#define UVC_GUID_FORMAT_FG \ -+ { 'F', 'G', ' ', ' ', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_INZC \ -+ { 'I', 'N', 'Z', 'C', 0x02, 0xb6, 0x0f, 0x48, \ -+ 0x97, 0x8c, 0xe4, 0xe8, 0x8a, 0xe8, 0x9b, 0x89} -+#define UVC_GUID_FORMAT_PAIR \ -+ { 'P', 'A', 'I', 'R', 0x36, 0x85, 0x41, 0x48, \ -+ 0xb6, 0xbf, 0x8f, 0xc6, 0xff, 0xb0, 0x83, 0xa8} -+#define UVC_GUID_FORMAT_Z16H \ -+ { 'Z', '1', '6', 'H', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} - - /* ------------------------------------------------------------------------ - * Driver specific constants. -diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c -index 34d121170a57..d894beb6cd93 100644 ---- a/drivers/media/v4l2-core/v4l2-ioctl.c -+++ b/drivers/media/v4l2-core/v4l2-ioctl.c -@@ -1151,6 +1151,7 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt) - case V4L2_PIX_FMT_Y10BPACK: descr = "10-bit Greyscale (Packed)"; break; - case V4L2_PIX_FMT_Y8I: descr = "Interleaved 8-bit Greyscale"; break; - case V4L2_PIX_FMT_Y12I: descr = "Interleaved 12-bit Greyscale"; break; -+ case V4L2_PIX_FMT_Y16I: descr = "Interleaved 16-bit Greyscale"; break; - case V4L2_PIX_FMT_Z16: descr = "16-bit Depth"; break; - case V4L2_PIX_FMT_INZI: descr = "Planar 10:16 Greyscale Depth"; break; - case V4L2_PIX_FMT_PAL8: descr = "8-bit Palette"; break; -@@ -1248,7 +1249,14 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt) - case V4L2_TCH_FMT_TU08: descr = "8-bit unsigned touch data"; break; - case V4L2_META_FMT_VSP1_HGO: descr = "R-Car VSP1 1-D Histogram"; break; - case V4L2_META_FMT_VSP1_HGT: descr = "R-Car VSP1 2-D Histogram"; break; -- -+ /* Librealsense Legacy/Development formats*/ -+ case V4L2_PIX_FMT_RW16: descr = "16-bit Raw data"; break; -+ case V4L2_PIX_FMT_W10: descr = "10-bit packed 8888[2222]"; break; -+ case V4L2_PIX_FMT_CONFIDENCE_MAP: descr = "4-bit per pixel packed"; break; -+ case V4L2_PIX_FMT_FG: descr = "Frame Grabber (FG )"; break; -+ case V4L2_PIX_FMT_INZC: descr = "Planar Depth/Confidence (INZC)"; break; -+ case V4L2_PIX_FMT_PAIR: descr = "Relative IR (PAIR)"; break; -+ case V4L2_PIX_FMT_Z16H: descr = "Z16 Huffman Compression"; break; - default: - /* Compressed formats */ - flags = V4L2_FMT_FLAG_COMPRESSED; -diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h -index f1ed70857076..6286f73ae08d 100644 ---- a/include/uapi/linux/videodev2.h -+++ b/include/uapi/linux/videodev2.h -@@ -676,9 +676,19 @@ struct v4l2_pix_format { - #define V4L2_PIX_FMT_S5C_UYVY_JPG v4l2_fourcc('S', '5', 'C', 'I') /* S5C73M3 interleaved UYVY/JPEG */ - #define V4L2_PIX_FMT_Y8I v4l2_fourcc('Y', '8', 'I', ' ') /* Greyscale 8-bit L/R interleaved */ - #define V4L2_PIX_FMT_Y12I v4l2_fourcc('Y', '1', '2', 'I') /* Greyscale 12-bit L/R interleaved */ -+#define V4L2_PIX_FMT_Y16I v4l2_fourcc('Y', '1', '6', 'I') /* Greyscale 16-bit L/R interleaved */ - #define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ') /* Depth data 16-bit */ - #define V4L2_PIX_FMT_MT21C v4l2_fourcc('M', 'T', '2', '1') /* Mediatek compressed block mode */ - #define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I') /* Intel Planar Greyscale 10-bit and Depth 16-bit */ -+#define V4L2_PIX_FMT_RW16 v4l2_fourcc('R', 'W', '1', '6') /* Raw data 16-bit */ -+#define V4L2_PIX_FMT_W10 v4l2_fourcc('W', '1', '0', ' ') /* Packed raw data 10-bit */ -+#define V4L2_PIX_FMT_CONFIDENCE_MAP v4l2_fourcc('C', ' ', ' ', ' ') /* Two pixels in one byte */ -+ -+/* Librealsense development*/ -+#define V4L2_PIX_FMT_FG v4l2_fourcc('F', 'G', ' ', ' ') /* Frame Grabber */ -+#define V4L2_PIX_FMT_INZC v4l2_fourcc('I', 'N', 'Z', 'C') /* Planar Depth/Confidence */ -+#define V4L2_PIX_FMT_PAIR v4l2_fourcc('P', 'A', 'I', 'R') /* Relative IR */ -+#define V4L2_PIX_FMT_Z16H v4l2_fourcc('Z', '1', '6', 'H') /* Depth Z16 custom Huffman Code compression*/ - - /* SDR formats - used only for Software Defined Radio devices */ - #define V4L2_SDR_FMT_CU8 v4l2_fourcc('C', 'U', '0', '8') /* IQ u8 */ --- -2.37.1 - diff --git a/scripts/realsense-camera-formats-xenial-master.patch b/scripts/realsense-camera-formats-xenial-master.patch deleted file mode 100644 index 2d13fea5d8..0000000000 --- a/scripts/realsense-camera-formats-xenial-master.patch +++ /dev/null @@ -1,264 +0,0 @@ -From 5a856a80549a98f0a890530f0cda0461783c3aec Mon Sep 17 00:00:00 2001 -From: Dmitry Perchanov -Date: Sun, 21 Aug 2022 15:45:33 +0300 -Subject: [PATCH] RS4xx, ZR300, RS5 Pixel formats for kernel 4.4 Also include - development formats, Y16I - -Signed-off-by: Dmitry Perchanov ---- - drivers/media/usb/uvc/Makefile | 1 + - drivers/media/usb/uvc/uvc_driver.c | 96 ++++++++++++++++++++++++++++ - drivers/media/usb/uvc/uvcvideo.h | 57 +++++++++++++++++ - drivers/media/v4l2-core/v4l2-ioctl.c | 12 ++++ - include/uapi/linux/videodev2.h | 14 ++++ - 5 files changed, 180 insertions(+) - -diff --git a/drivers/media/usb/uvc/Makefile b/drivers/media/usb/uvc/Makefile -index c26d12fdb8f4..d86cf22155d1 100644 ---- a/drivers/media/usb/uvc/Makefile -+++ b/drivers/media/usb/uvc/Makefile -@@ -1,3 +1,4 @@ -+CONFIG_MODULE_SIG=n - uvcvideo-objs := uvc_driver.o uvc_queue.o uvc_v4l2.o uvc_video.o uvc_ctrl.o \ - uvc_status.o uvc_isight.o uvc_debugfs.o - ifeq ($(CONFIG_MEDIA_CONTROLLER),y) -diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c -index 8805f555e4c8..e618e65f5ea2 100644 ---- a/drivers/media/usb/uvc/uvc_driver.c -+++ b/drivers/media/usb/uvc/uvc_driver.c -@@ -158,6 +158,11 @@ static struct uvc_format_desc uvc_fmts[] = { - .guid = UVC_GUID_FORMAT_Y12I, - .fcc = V4L2_PIX_FMT_Y12I, - }, -+ { -+ .name = "Greyscale 16 L/R (Y16I)", -+ .guid = UVC_GUID_FORMAT_Y16I, -+ .fcc = V4L2_PIX_FMT_Y16I, -+ }, - { - .name = "Depth data 16-bit (Z16)", - .guid = UVC_GUID_FORMAT_Z16, -@@ -168,6 +173,97 @@ static struct uvc_format_desc uvc_fmts[] = { - .guid = UVC_GUID_FORMAT_RW10, - .fcc = V4L2_PIX_FMT_SRGGB10P, - }, -+ { -+ .name = "Raw data 8-bit (RAW8)", -+ .guid = UVC_GUID_FORMAT_RAW8, -+ .fcc = V4L2_PIX_FMT_GREY, -+ }, -+ { -+ .name = "Raw data 16-bit (RW16)", -+ .guid = UVC_GUID_FORMAT_RW16, -+ .fcc = V4L2_PIX_FMT_RW16, -+ }, -+ { -+ .name = "Depth 16-bit (INVZ)", -+ .guid = UVC_GUID_FORMAT_INVZ, -+ .fcc = V4L2_PIX_FMT_Z16, -+ }, -+ { -+ .name = "Depth:IR 16:8 24-bit (INZI)", -+ .guid = UVC_GUID_FORMAT_INZI, -+ .fcc = V4L2_PIX_FMT_INZI, -+ }, -+ { -+ .name = "Depth 16-bit (INVR)", -+ .guid = UVC_GUID_FORMAT_INVR, -+ .fcc = V4L2_PIX_FMT_INVR, -+ }, -+ { -+ .name = "Depth:IR 16:8 24-bit (INRI)", -+ .guid = UVC_GUID_FORMAT_INRI, -+ .fcc = V4L2_PIX_FMT_INRI, -+ }, -+ { -+ .name = "Infrared 8-bit (INVI)", -+ .guid = UVC_GUID_FORMAT_INVI, -+ .fcc = V4L2_PIX_FMT_GREY, -+ }, -+ { -+ .name = "FlickerIR 8-bit (RELI)", -+ .guid = UVC_GUID_FORMAT_RELI, -+ .fcc = V4L2_PIX_FMT_RELI, -+ }, -+ { -+ .name = "Luminosity data 8-bit (L8)", -+ .guid = UVC_GUID_FORMAT_L8, -+ .fcc = V4L2_PIX_FMT_GREY, -+ }, -+ { -+ .name = "Luminosity data 16-bit (L16)", -+ .guid = UVC_GUID_FORMAT_L16, -+ .fcc = V4L2_PIX_FMT_Y16, -+ }, -+ { -+ .name = "Depth data 16-bit (D16)", -+ .guid = UVC_GUID_FORMAT_D16, -+ .fcc = V4L2_PIX_FMT_Z16, -+ }, -+ { -+ .name = "16-bit Bayer BGBG/GRGR", -+ .guid = UVC_GUID_FORMAT_BAYER16, -+ .fcc = V4L2_PIX_FMT_SBGGR16, -+ }, -+ { -+ .name = "Packed raw data 10-bit", -+ .guid = UVC_GUID_FORMAT_W10, -+ .fcc = V4L2_PIX_FMT_W10, -+ }, -+ { -+ .name = "Confidence data (C )", -+ .guid = UVC_GUID_FORMAT_CONFIDENCE_MAP, -+ .fcc = V4L2_PIX_FMT_CONFIDENCE_MAP, -+ }, -+ /* Legacy/Development formats for backward-compatibility*/ -+ { -+ .name = "Frame Grabber (FG )", -+ .guid = UVC_GUID_FORMAT_FG, -+ .fcc = V4L2_PIX_FMT_FG, -+ }, -+ { -+ .name = "SR300 Depth/Confidence (INZC)", -+ .guid = UVC_GUID_FORMAT_INZC, -+ .fcc = V4L2_PIX_FMT_INZC, -+ }, -+ { -+ .name = "Relative IR (PAIR)", -+ .guid = UVC_GUID_FORMAT_PAIR, -+ .fcc = V4L2_PIX_FMT_PAIR, -+ }, -+ { -+ .name = "Z16 Huffman Compression", -+ .guid = UVC_GUID_FORMAT_Z16H, -+ .fcc = V4L2_PIX_FMT_Z16H, -+ }, - }; - - /* ------------------------------------------------------------------------ -diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h -index 7e4d3eea371b..a5ea1b4b7902 100644 ---- a/drivers/media/usb/uvc/uvcvideo.h -+++ b/drivers/media/usb/uvc/uvcvideo.h -@@ -125,12 +125,69 @@ - #define UVC_GUID_FORMAT_Y12I \ - { 'Y', '1', '2', 'I', 0x00, 0x00, 0x10, 0x00, \ - 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_Y16I \ -+ { 'Y', '1', '6', 'I', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} - #define UVC_GUID_FORMAT_Z16 \ - { 'Z', '1', '6', ' ', 0x00, 0x00, 0x10, 0x00, \ - 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} - #define UVC_GUID_FORMAT_RW10 \ - { 'R', 'W', '1', '0', 0x00, 0x00, 0x10, 0x00, \ - 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_RAW8 \ -+ { 'R', 'A', 'W', '8', 0x66, 0x1a, 0x42, 0xa2, \ -+ 0x90, 0x65, 0xd0, 0x18, 0x14, 0xa8, 0xef, 0x8a} -+#define UVC_GUID_FORMAT_RW16 \ -+ { 'R', 'W', '1', '6', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_INVZ \ -+ { 'I', 'N', 'V', 'Z', 0x90, 0x2d, 0x58, 0x4a, \ -+ 0x92, 0x0b, 0x77, 0x3f, 0x1f, 0x2c, 0x55, 0x6b} -+#define UVC_GUID_FORMAT_INZI \ -+ { 'I', 'N', 'Z', 'I', 0x66, 0x1a, 0x42, 0xa2, \ -+ 0x90, 0x65, 0xd0, 0x18, 0x14, 0xa8, 0xef, 0x8a} -+#define UVC_GUID_FORMAT_INVR \ -+ { 'I', 'N', 'V', 'R', 0x90, 0x2d, 0x58, 0x4a, \ -+ 0x92, 0x0b, 0x77, 0x3f, 0x1f, 0x2c, 0x55, 0x6b} -+#define UVC_GUID_FORMAT_INRI \ -+ { 'I', 'N', 'R', 'I', 0x90, 0x2d, 0x58, 0x4a, \ -+ 0x92, 0x0b, 0x77, 0x3f, 0x1f, 0x2c, 0x55, 0x6b} -+#define UVC_GUID_FORMAT_INVI \ -+ { 'I', 'N', 'V', 'I', 0xdb, 0x57, 0x49, 0x5e, \ -+ 0x8e, 0x3f, 0xf4, 0x79, 0x53, 0x2b, 0x94, 0x6f} -+#define UVC_GUID_FORMAT_RELI \ -+ { 'R', 'E', 'L', 'I', 0x14, 0x13, 0x43, 0xf9, \ -+ 0xa7, 0x5a, 0xee, 0x6b, 0xbf, 0x01, 0x2e, 0x23} -+#define UVC_GUID_FORMAT_L8 \ -+ { '2', 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_L16 \ -+ { 'Q', 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_D16 \ -+ { 'P', 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_BAYER16 \ -+ { 'R', 'W', '1', '6', 0x66, 0x1a, 0x42, 0xa2, \ -+ 0x90, 0x65, 0xd0, 0x18, 0x14, 0xa8, 0xef, 0x8a} -+#define UVC_GUID_FORMAT_W10 \ -+ { 'W', '1', '0', ' ', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_CONFIDENCE_MAP \ -+ { 'C', ' ', ' ', ' ', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_FG \ -+ { 'F', 'G', ' ', ' ', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_INZC \ -+ { 'I', 'N', 'Z', 'C', 0x02, 0xb6, 0x0f, 0x48, \ -+ 0x97, 0x8c, 0xe4, 0xe8, 0x8a, 0xe8, 0x9b, 0x89} -+#define UVC_GUID_FORMAT_PAIR \ -+ { 'P', 'A', 'I', 'R', 0x36, 0x85, 0x41, 0x48, \ -+ 0xb6, 0xbf, 0x8f, 0xc6, 0xff, 0xb0, 0x83, 0xa8} -+#define UVC_GUID_FORMAT_Z16H \ -+ { 'Z', '1', '6', 'H', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} - - /* ------------------------------------------------------------------------ - * Driver specific constants. -diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c -index 75bdcb4b7d57..ca906a9173fd 100644 ---- a/drivers/media/v4l2-core/v4l2-ioctl.c -+++ b/drivers/media/v4l2-core/v4l2-ioctl.c -@@ -1229,6 +1229,18 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt) - case V4L2_SDR_FMT_CS8: descr = "Complex S8"; break; - case V4L2_SDR_FMT_CS14LE: descr = "Complex S14LE"; break; - case V4L2_SDR_FMT_RU12LE: descr = "Real U12LE"; break; -+ case V4L2_PIX_FMT_Y8I: descr = "8-bit Greyscale L/R interleaved"; break; -+ case V4L2_PIX_FMT_Y12I: descr = "12-bit Grey L/R interleaved"; break; -+ case V4L2_PIX_FMT_Y16I: descr = "16-bit Grey L/R interleaved"; break; -+ case V4L2_PIX_FMT_Z16: descr = "16-bit Depth data"; break; -+ case V4L2_PIX_FMT_RW16: descr = "16-bit Raw data"; break; -+ case V4L2_PIX_FMT_INZI: descr = "32-bit IR:Depth 10:16"; break; -+ case V4L2_PIX_FMT_W10: descr = "10-bit packed 8888[2222]"; break; -+ case V4L2_PIX_FMT_CONFIDENCE_MAP: descr = "4-bit per pixel packed"; break; -+ case V4L2_PIX_FMT_FG: descr = "Frame Grabber (FG )"; break; -+ case V4L2_PIX_FMT_INZC: descr = "Planar Depth/Confidence (INZC)"; break; -+ case V4L2_PIX_FMT_PAIR: descr = "Relative IR (PAIR)"; break; -+ case V4L2_PIX_FMT_Z16H: descr = "Z16 Huffman Compression"; break; - - default: - /* Compressed formats */ -diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h -index 421d27413731..e49ee3858c23 100644 ---- a/include/uapi/linux/videodev2.h -+++ b/include/uapi/linux/videodev2.h -@@ -623,7 +623,21 @@ struct v4l2_pix_format { - #define V4L2_PIX_FMT_S5C_UYVY_JPG v4l2_fourcc('S', '5', 'C', 'I') /* S5C73M3 interleaved UYVY/JPEG */ - #define V4L2_PIX_FMT_Y8I v4l2_fourcc('Y', '8', 'I', ' ') /* Greyscale 8-bit L/R interleaved */ - #define V4L2_PIX_FMT_Y12I v4l2_fourcc('Y', '1', '2', 'I') /* Greyscale 12-bit L/R interleaved */ -+#define V4L2_PIX_FMT_Y16I v4l2_fourcc('Y', '1', '6', 'I') /* Greyscale 16-bit L/R interleaved */ - #define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ') /* Depth data 16-bit */ -+#define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* Greyscale 16-bit */ -+#define V4L2_PIX_FMT_RW16 v4l2_fourcc('R', 'W', '1', '6') /* Raw data 16-bit */ -+#define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I') /* 24 Depth/IR 16:8 */ -+#define V4L2_PIX_FMT_INVR v4l2_fourcc('I', 'N', 'V', 'R') /* 16 Depth */ -+#define V4L2_PIX_FMT_INRI v4l2_fourcc('I', 'N', 'R', 'I') /* 24 Depth/IR 16:8 */ -+#define V4L2_PIX_FMT_RELI v4l2_fourcc('R', 'E', 'L', 'I') /* 8 IR alternating on off illumination */ -+#define V4L2_PIX_FMT_W10 v4l2_fourcc('W', '1', '0', ' ') /* Packed raw data 10-bit */ -+#define V4L2_PIX_FMT_CONFIDENCE_MAP v4l2_fourcc('C', ' ', ' ', ' ') /* Two pixels in one byte */ -+/* Librealsense development*/ -+#define V4L2_PIX_FMT_FG v4l2_fourcc('F', 'G', ' ', ' ') /* Frame Grabber */ -+#define V4L2_PIX_FMT_INZC v4l2_fourcc('I', 'N', 'Z', 'C') /* Planar Depth/Confidence */ -+#define V4L2_PIX_FMT_PAIR v4l2_fourcc('P', 'A', 'I', 'R') /* Relative IR */ -+#define V4L2_PIX_FMT_Z16H v4l2_fourcc('Z', '1', '6', 'H') /* Depth Z16 custom Huffman Code compression*/ - - /* SDR formats - used only for Software Defined Radio devices */ - #define V4L2_SDR_FMT_CU8 v4l2_fourcc('C', 'U', '0', '8') /* IQ u8 */ --- -2.37.1 - diff --git a/scripts/realsense-camera-formats_fc25.patch b/scripts/realsense-camera-formats_fc25.patch deleted file mode 100644 index d0f88f3f8b..0000000000 --- a/scripts/realsense-camera-formats_fc25.patch +++ /dev/null @@ -1,142 +0,0 @@ -diff --git a/drivers/media/usb/uvc/Makefile b/drivers/media/usb/uvc/Makefile -index c26d12f..d86cf22 100644 ---- a/drivers/media/usb/uvc/Makefile -+++ b/drivers/media/usb/uvc/Makefile -@@ -1,3 +1,4 @@ -+CONFIG_MODULE_SIG=n - uvcvideo-objs := uvc_driver.o uvc_queue.o uvc_v4l2.o uvc_video.o uvc_ctrl.o \ - uvc_status.o uvc_isight.o uvc_debugfs.o - ifeq ($(CONFIG_MEDIA_CONTROLLER),y) -diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c -index d11fd6a..c819a39 100644 ---- a/drivers/media/usb/uvc/uvc_driver.c -+++ b/drivers/media/usb/uvc/uvc_driver.c -@@ -188,6 +188,61 @@ static struct uvc_format_desc uvc_fmts[] = { - .guid = UVC_GUID_FORMAT_H264, - .fcc = V4L2_PIX_FMT_H264, - }, -+ { -+ .name = "Raw data 8-bit (RAW8)", -+ .guid = UVC_GUID_FORMAT_RAW8, -+ .fcc = V4L2_PIX_FMT_RAW8, -+ }, -+ { -+ .name = "Raw data 10-bit (RW16)", -+ .guid = UVC_GUID_FORMAT_RW16, -+ .fcc = V4L2_PIX_FMT_RW16, -+ }, -+ { -+ .name = "Depth 16-bit (INVZ)", -+ .guid = UVC_GUID_FORMAT_INVZ, -+ .fcc = V4L2_PIX_FMT_INVZ, -+ }, -+ { -+ .name = "Depth:IR 16:8 24-bit (INZI)", -+ .guid = UVC_GUID_FORMAT_INZI, -+ .fcc = V4L2_PIX_FMT_INZI, -+ }, -+ { -+ .name = "Depth 16-bit (INVR)", -+ .guid = UVC_GUID_FORMAT_INVR, -+ .fcc = V4L2_PIX_FMT_INVR, -+ }, -+ { -+ .name = "Depth:IR 16:8 24-bit (INRI)", -+ .guid = UVC_GUID_FORMAT_INRI, -+ .fcc = V4L2_PIX_FMT_INRI, -+ }, -+ { -+ .name = "Infrared 8-bit (INVI)", -+ .guid = UVC_GUID_FORMAT_INVI, -+ .fcc = V4L2_PIX_FMT_INVI, -+ }, -+ { -+ .name = "FlickerIR 8-bit (RELI)", -+ .guid = UVC_GUID_FORMAT_RELI, -+ .fcc = V4L2_PIX_FMT_RELI, -+ }, -+ { -+ .name = "Luminosity data 8-bit (L8)", -+ .guid = UVC_GUID_FORMAT_L8, -+ .fcc = V4L2_PIX_FMT_Y8, -+ }, -+ { -+ .name = "Luminosity data 16-bit (L16)", -+ .guid = UVC_GUID_FORMAT_L16, -+ .fcc = V4L2_PIX_FMT_Y16, -+ }, -+ { -+ .name = "Depth data 16-bit (D16)", -+ .guid = UVC_GUID_FORMAT_D16, -+ .fcc = V4L2_PIX_FMT_Z16, -+ }, - }; - - /* ------------------------------------------------------------------------ -diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h -index f0f2391..6704db7 100644 ---- a/drivers/media/usb/uvc/uvcvideo.h -+++ b/drivers/media/usb/uvc/uvcvideo.h -@@ -127,6 +127,39 @@ - #define UVC_GUID_FORMAT_H264 \ - { 'H', '2', '6', '4', 0x00, 0x00, 0x10, 0x00, \ - 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_RAW8 \ -+ { 'R', 'A', 'W', '8', 0x66, 0x1a, 0x42, 0xa2, \ -+ 0x90, 0x65, 0xd0, 0x18, 0x14, 0xa8, 0xef, 0x8a} -+#define UVC_GUID_FORMAT_RW16 \ -+ { 'R', 'W', '1', '6', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_INVZ \ -+ { 'I', 'N', 'V', 'Z', 0x90, 0x2d, 0x58, 0x4a, \ -+ 0x92, 0x0b, 0x77, 0x3f, 0x1f, 0x2c, 0x55, 0x6b} -+#define UVC_GUID_FORMAT_INZI \ -+ { 'I', 'N', 'Z', 'I', 0x66, 0x1a, 0x42, 0xa2, \ -+ 0x90, 0x65, 0xd0, 0x18, 0x14, 0xa8, 0xef, 0x8a} -+#define UVC_GUID_FORMAT_INVR \ -+ { 'I', 'N', 'V', 'R', 0x90, 0x2d, 0x58, 0x4a, \ -+ 0x92, 0x0b, 0x77, 0x3f, 0x1f, 0x2c, 0x55, 0x6b} -+#define UVC_GUID_FORMAT_INRI \ -+ { 'I', 'N', 'R', 'I', 0x90, 0x2d, 0x58, 0x4a, \ -+ 0x92, 0x0b, 0x77, 0x3f, 0x1f, 0x2c, 0x55, 0x6b} -+#define UVC_GUID_FORMAT_INVI \ -+ { 'I', 'N', 'V', 'I', 0xdb, 0x57, 0x49, 0x5e, \ -+ 0x8e, 0x3f, 0xf4, 0x79, 0x53, 0x2b, 0x94, 0x6f} -+#define UVC_GUID_FORMAT_RELI \ -+ { 'R', 'E', 'L', 'I', 0x14, 0x13, 0x43, 0xf9, \ -+ 0xa7, 0x5a, 0xee, 0x6b, 0xbf, 0x01, 0x2e, 0x23} -+#define UVC_GUID_FORMAT_L8 \ -+ { '2', 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_L16 \ -+ { 'Q', 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_D16 \ -+ { 'P', 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} - - /* ------------------------------------------------------------------------ - * Driver specific constants. -diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h -index a0e87d1..7e00be4 100644 ---- a/include/uapi/linux/videodev2.h -+++ b/include/uapi/linux/videodev2.h -@@ -661,6 +661,18 @@ struct v4l2_pix_format { - #define V4L2_PIX_FMT_Y12I v4l2_fourcc('Y', '1', '2', 'I') /* Greyscale 12-bit L/R interleaved */ - #define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ') /* Depth data 16-bit */ - #define V4L2_PIX_FMT_MT21C v4l2_fourcc('M', 'T', '2', '1') /* Mediatek compressed block mode */ -+#define V4L2_PIX_FMT_Y8 v4l2_fourcc('Y', '8', ' ', ' ') /* Greyscale 8-bit */ -+#define V4L2_PIX_FMT_Y10 v4l2_fourcc('Y', '1', '0', ' ') /* Greyscale 10-bit */ -+#define V4L2_PIX_FMT_Y12 v4l2_fourcc('Y', '1', '2', ' ') /* Greyscale 12-bit */ -+#define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* Greyscale 16-bit */ -+#define V4L2_PIX_FMT_RAW8 v4l2_fourcc('R', 'A', 'W', '8') /* Raw data 8-bit */ -+#define V4L2_PIX_FMT_RW16 v4l2_fourcc('R', 'W', '1', '6') /* Raw data 16-bit */ -+#define V4L2_PIX_FMT_INVZ v4l2_fourcc('I', 'N', 'V', 'Z') /* 16 Depth */ -+#define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I') /* 24 Depth/IR 16:8 */ -+#define V4L2_PIX_FMT_INVR v4l2_fourcc('I', 'N', 'V', 'R') /* 16 Depth */ -+#define V4L2_PIX_FMT_INRI v4l2_fourcc('I', 'N', 'R', 'I') /* 24 Depth/IR 16:8 */ -+#define V4L2_PIX_FMT_INVI v4l2_fourcc('I', 'N', 'V', 'I') /* 8 IR */ -+#define V4L2_PIX_FMT_RELI v4l2_fourcc('R', 'E', 'L', 'I') /* 8 IR alternating on off illumination */ - - /* SDR formats - used only for Software Defined Radio devices */ -#define V4L2_SDR_FMT_CU8 v4l2_fourcc('C', 'U', '0', '8') /* IQ u8 */ diff --git a/scripts/realsense-camera-formats_ubuntu-xenial-v4.16.patch b/scripts/realsense-camera-formats_ubuntu-xenial-v4.16.patch deleted file mode 100644 index 4bb340319a..0000000000 --- a/scripts/realsense-camera-formats_ubuntu-xenial-v4.16.patch +++ /dev/null @@ -1,160 +0,0 @@ -From 574991645764df30366f9f2c319d5d9529eed5ba Mon Sep 17 00:00:00 2001 -From: icarpis -Date: Tue, 14 Aug 2018 10:18:09 +0300 -Date: Tue, 14 Aug 2018 10:54:48 +0300 -Subject: [PATCH] Patch D400/SR300/RS5 formats - ---- - drivers/media/usb/uvc/Makefile | 2 ++ - drivers/media/usb/uvc/uvc_driver.c | 37 ++++++++++++++++++++++++++++++++++++ - drivers/media/usb/uvc/uvcvideo.h | 28 ++++++++++++++++++++++++++- - drivers/media/v4l2-core/v4l2-dev.c | 1 + - drivers/media/v4l2-core/v4l2-ioctl.c | 3 +++ - include/uapi/linux/videodev2.h | 3 +++ - 6 files changed, 73 insertions(+), 1 deletion(-) - -diff --git a/drivers/media/usb/uvc/Makefile b/drivers/media/usb/uvc/Makefile -index 4f9eee4..71e0988 100644 ---- a/drivers/media/usb/uvc/Makefile -+++ b/drivers/media/usb/uvc/Makefile -@@ -1,4 +1,6 @@ - # SPDX-License-Identifier: GPL-2.0 -+CONFIG_MODULE_SIG=n -+ccflags-y := -DDRIVER_VERSION_SUFFIX=\".librealsense2-patch\" - uvcvideo-objs := uvc_driver.o uvc_queue.o uvc_v4l2.o uvc_video.o uvc_ctrl.o \ - uvc_status.o uvc_isight.o uvc_debugfs.o uvc_metadata.o - ifeq ($(CONFIG_MEDIA_CONTROLLER),y) -diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c -index fd387bf..90c2bc9 100644 ---- a/drivers/media/usb/uvc/uvc_driver.c -+++ b/drivers/media/usb/uvc/uvc_driver.c -@@ -209,6 +209,43 @@ static struct uvc_format_desc uvc_fmts[] = { - .guid = UVC_GUID_FORMAT_INZI, - .fcc = V4L2_PIX_FMT_INZI, - }, -+ { -+ .name = "Luminosity data 8-bit (L8)", -+ .guid = UVC_GUID_FORMAT_L8, -+ .fcc = V4L2_PIX_FMT_GREY, -+ }, -+ { -+ .name = "Depth data 16-bit (D16)", -+ .guid = UVC_GUID_FORMAT_D16, -+ .fcc = V4L2_PIX_FMT_Z16, -+ }, -+ { -+ .name = "Packed raw data 10-bit", -+ .guid = UVC_GUID_FORMAT_W10, -+ .fcc = V4L2_PIX_FMT_W10, -+ }, -+ { -+ .name = "Confidence data (C )", -+ .guid = UVC_GUID_FORMAT_CONFIDENCE_MAP, -+ .fcc = V4L2_PIX_FMT_CONFIDENCE_MAP, -+ }, -+ /* FishEye 8-bit monochrome */ -+ { -+ .name = "Raw data 8-bit (RAW8)", -+ .guid = UVC_GUID_FORMAT_RAW8, -+ .fcc = V4L2_PIX_FMT_GREY, -+ }, -+ /* Legacy formats for backward-compatibility*/ -+ { -+ .name = "Raw data 16-bit (RW16)", -+ .guid = UVC_GUID_FORMAT_RW16, -+ .fcc = V4L2_PIX_FMT_RW16, -+ }, -+ { -+ .name = "16-bit Bayer BGBG/GRGR", -+ .guid = UVC_GUID_FORMAT_BAYER16, -+ .fcc = V4L2_PIX_FMT_SBGGR16, -+ }, - }; - - /* ------------------------------------------------------------------------ -diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h -index d9e7c70..4d51e80 100644 ---- a/drivers/media/usb/uvc/uvcvideo.h -+++ b/drivers/media/usb/uvc/uvcvideo.h -@@ -153,6 +153,28 @@ - #define UVC_GUID_FORMAT_INVI \ - { 'I', 'N', 'V', 'I', 0xdb, 0x57, 0x49, 0x5e, \ - 0x8e, 0x3f, 0xf4, 0x79, 0x53, 0x2b, 0x94, 0x6f} -+#define UVC_GUID_FORMAT_L8 \ -+ { '2', 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_D16 \ -+ { 'P', 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_W10 \ -+ { 'W', '1', '0', ' ', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_RAW8 \ -+ { 'R', 'A', 'W', '8', 0x66, 0x1a, 0x42, 0xa2, \ -+ 0x90, 0x65, 0xd0, 0x18, 0x14, 0xa8, 0xef, 0x8a} -+#define UVC_GUID_FORMAT_CONFIDENCE_MAP \ -+ { 'C', ' ', ' ', ' ', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+/* Legacy formats */ -+#define UVC_GUID_FORMAT_RW16 \ -+ { 'R', 'W', '1', '6', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_BAYER16 \ -+ { 'R', 'W', '1', '6', 0x66, 0x1a, 0x42, 0xa2, \ -+ 0x90, 0x65, 0xd0, 0x18, 0x14, 0xa8, 0xef, 0x8a} - - #define UVC_GUID_FORMAT_D3DFMT_L8 \ - {0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, \ -@@ -163,7 +185,11 @@ - * Driver specific constants. - */ - --#define DRIVER_VERSION "1.1.1" -+#ifndef DRIVER_VERSION_SUFFIX -+#define DRIVER_VERSION_SUFFIX -+#endif -+ -+#define DRIVER_VERSION "1.1.1" DRIVER_VERSION_SUFFIX - - /* Number of isochronous URBs. */ - #define UVC_URBS 5 -diff --git a/drivers/media/v4l2-core/v4l2-dev.c b/drivers/media/v4l2-core/v4l2-dev.c -index 1d0b220..56df662 100644 ---- a/drivers/media/v4l2-core/v4l2-dev.c -+++ b/drivers/media/v4l2-core/v4l2-dev.c -@@ -1076,3 +1076,4 @@ MODULE_AUTHOR("Alan Cox, Mauro Carvalho Chehab "); - MODULE_DESCRIPTION("Device registrar for Video4Linux drivers v2"); - MODULE_LICENSE("GPL"); - MODULE_ALIAS_CHARDEV_MAJOR(VIDEO_MAJOR); -+MODULE_VERSION("librealsense2-patch"); -diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c -index 260288c..53c66dc 100644 ---- a/drivers/media/v4l2-core/v4l2-ioctl.c -+++ b/drivers/media/v4l2-core/v4l2-ioctl.c -@@ -1251,6 +1251,9 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt) - case V4L2_META_FMT_VSP1_HGO: descr = "R-Car VSP1 1-D Histogram"; break; - case V4L2_META_FMT_VSP1_HGT: descr = "R-Car VSP1 2-D Histogram"; break; - case V4L2_META_FMT_UVC: descr = "UVC payload header metadata"; break; -+ case V4L2_PIX_FMT_RW16: descr = "16-bit Raw data"; break; -+ case V4L2_PIX_FMT_W10: descr = "10-bit packed 8888[2222]"; break; -+ case V4L2_PIX_FMT_CONFIDENCE_MAP: descr = "4-bit/pixel 8-bit pack"; break; - - default: - /* Compressed formats */ -diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h -index 9827189..b6ce918 100644 ---- a/include/uapi/linux/videodev2.h -+++ b/include/uapi/linux/videodev2.h -@@ -668,6 +668,9 @@ struct v4l2_pix_format { - #define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ') /* Depth data 16-bit */ - #define V4L2_PIX_FMT_MT21C v4l2_fourcc('M', 'T', '2', '1') /* Mediatek compressed block mode */ - #define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I') /* Intel Planar Greyscale 10-bit and Depth 16-bit */ -+#define V4L2_PIX_FMT_RW16 v4l2_fourcc('R', 'W', '1', '6') /* Raw data 16-bit */ -+#define V4L2_PIX_FMT_W10 v4l2_fourcc('W', '1', '0', ' ') /* Packed raw data 10-bit */ -+#define V4L2_PIX_FMT_CONFIDENCE_MAP v4l2_fourcc('C', ' ', ' ', ' ') /* Two pixels in one byte */ - - /* 10bit raw bayer packed, 32 bytes for every 25 pixels, last LSB 6 bits unused */ - #define V4L2_PIX_FMT_IPU3_SBGGR10 v4l2_fourcc('i', 'p', '3', 'b') /* IPU3 packed 10-bit BGGR bayer */ --- -2.7.4 - diff --git a/scripts/realsense-camera-formats_ubuntu-xenial.patch b/scripts/realsense-camera-formats_ubuntu-xenial.patch deleted file mode 100644 index 979e44bc4a..0000000000 --- a/scripts/realsense-camera-formats_ubuntu-xenial.patch +++ /dev/null @@ -1,186 +0,0 @@ -From 2fb29ac45b298b1dbea7fca174b6e8b7d22e4fb3 Mon Sep 17 00:00:00 2001 -From: administrator -Date: Sun, 4 Jun 2017 17:30:59 +0300 -Subject: [PATCH] RS4xx and ZR300 Pixel formats patch - -Signed-off-by: administrator ---- - drivers/media/usb/uvc/Makefile | 1 + - drivers/media/usb/uvc/uvc_driver.c | 55 ++++++++++++++++++++++++++++++++++++ - drivers/media/usb/uvc/uvcvideo.h | 35 ++++++++++++++++++++++- - drivers/media/v4l2-core/v4l2-ioctl.c | 5 ++++ - include/uapi/linux/videodev2.h | 6 ++++ - 5 files changed, 101 insertions(+), 1 deletion(-) - -diff --git a/drivers/media/usb/uvc/Makefile b/drivers/media/usb/uvc/Makefile -index c26d12f..d86cf22 100644 ---- a/drivers/media/usb/uvc/Makefile -+++ b/drivers/media/usb/uvc/Makefile -@@ -1,3 +1,4 @@ -+CONFIG_MODULE_SIG=n - uvcvideo-objs := uvc_driver.o uvc_queue.o uvc_v4l2.o uvc_video.o uvc_ctrl.o \ - uvc_status.o uvc_isight.o uvc_debugfs.o - ifeq ($(CONFIG_MEDIA_CONTROLLER),y) -diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c -index 9b8ac20..9d44f8e 100644 ---- a/drivers/media/usb/uvc/uvc_driver.c -+++ b/drivers/media/usb/uvc/uvc_driver.c -@@ -168,6 +168,66 @@ static struct uvc_format_desc uvc_fmts[] = { - .guid = UVC_GUID_FORMAT_RW10, - .fcc = V4L2_PIX_FMT_SRGGB10P, - }, -+ { -+ .name = "Raw data 8-bit (RAW8)", -+ .guid = UVC_GUID_FORMAT_RAW8, -+ .fcc = V4L2_PIX_FMT_GREY, -+ }, -+ { -+ .name = "Raw data 16-bit (RW16)", -+ .guid = UVC_GUID_FORMAT_RW16, -+ .fcc = V4L2_PIX_FMT_RW16, -+ }, -+ { -+ .name = "Depth 16-bit (INVZ)", -+ .guid = UVC_GUID_FORMAT_INVZ, -+ .fcc = V4L2_PIX_FMT_Z16, -+ }, -+ { -+ .name = "Depth:IR 16:8 24-bit (INZI)", -+ .guid = UVC_GUID_FORMAT_INZI, -+ .fcc = V4L2_PIX_FMT_INZI, -+ }, -+ { -+ .name = "Depth 16-bit (INVR)", -+ .guid = UVC_GUID_FORMAT_INVR, -+ .fcc = V4L2_PIX_FMT_INVR, -+ }, -+ { -+ .name = "Depth:IR 16:8 24-bit (INRI)", -+ .guid = UVC_GUID_FORMAT_INRI, -+ .fcc = V4L2_PIX_FMT_INRI, -+ }, -+ { -+ .name = "Infrared 8-bit (INVI)", -+ .guid = UVC_GUID_FORMAT_INVI, -+ .fcc = V4L2_PIX_FMT_GREY, -+ }, -+ { -+ .name = "FlickerIR 8-bit (RELI)", -+ .guid = UVC_GUID_FORMAT_RELI, -+ .fcc = V4L2_PIX_FMT_RELI, -+ }, -+ { -+ .name = "Luminosity data 8-bit (L8)", -+ .guid = UVC_GUID_FORMAT_L8, -+ .fcc = V4L2_PIX_FMT_GREY, -+ }, -+ { -+ .name = "Luminosity data 16-bit (L16)", -+ .guid = UVC_GUID_FORMAT_L16, -+ .fcc = V4L2_PIX_FMT_Y16, -+ }, -+ { -+ .name = "Depth data 16-bit (D16)", -+ .guid = UVC_GUID_FORMAT_D16, -+ .fcc = V4L2_PIX_FMT_Z16, -+ }, -+ { -+ .name = "16-bit Bayer BGBG/GRGR", -+ .guid = UVC_GUID_FORMAT_BAYER16, -+ .fcc = V4L2_PIX_FMT_SBGGR16, -+ }, - }; - - /* ------------------------------------------------------------------------ -diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h -index 7e4d3ee..020dbb7 100644 ---- a/drivers/media/usb/uvc/uvcvideo.h -+++ b/drivers/media/usb/uvc/uvcvideo.h -@@ -115,7 +115,6 @@ - #define UVC_GUID_FORMAT_M420 \ - { 'M', '4', '2', '0', 0x00, 0x00, 0x10, 0x00, \ - 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -- - #define UVC_GUID_FORMAT_H264 \ - { 'H', '2', '6', '4', 0x00, 0x00, 0x10, 0x00, \ - 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -@@ -131,6 +130,43 @@ - #define UVC_GUID_FORMAT_RW10 \ - { 'R', 'W', '1', '0', 0x00, 0x00, 0x10, 0x00, \ - 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_RAW8 \ -+ { 'R', 'A', 'W', '8', 0x66, 0x1a, 0x42, 0xa2, \ -+ 0x90, 0x65, 0xd0, 0x18, 0x14, 0xa8, 0xef, 0x8a} -+#define UVC_GUID_FORMAT_RW16 \ -+ { 'R', 'W', '1', '6', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_INVZ \ -+ { 'I', 'N', 'V', 'Z', 0x90, 0x2d, 0x58, 0x4a, \ -+ 0x92, 0x0b, 0x77, 0x3f, 0x1f, 0x2c, 0x55, 0x6b} -+#define UVC_GUID_FORMAT_INZI \ -+ { 'I', 'N', 'Z', 'I', 0x66, 0x1a, 0x42, 0xa2, \ -+ 0x90, 0x65, 0xd0, 0x18, 0x14, 0xa8, 0xef, 0x8a} -+#define UVC_GUID_FORMAT_INVR \ -+ { 'I', 'N', 'V', 'R', 0x90, 0x2d, 0x58, 0x4a, \ -+ 0x92, 0x0b, 0x77, 0x3f, 0x1f, 0x2c, 0x55, 0x6b} -+#define UVC_GUID_FORMAT_INRI \ -+ { 'I', 'N', 'R', 'I', 0x90, 0x2d, 0x58, 0x4a, \ -+ 0x92, 0x0b, 0x77, 0x3f, 0x1f, 0x2c, 0x55, 0x6b} -+#define UVC_GUID_FORMAT_INVI \ -+ { 'I', 'N', 'V', 'I', 0xdb, 0x57, 0x49, 0x5e, \ -+ 0x8e, 0x3f, 0xf4, 0x79, 0x53, 0x2b, 0x94, 0x6f} -+#define UVC_GUID_FORMAT_RELI \ -+ { 'R', 'E', 'L', 'I', 0x14, 0x13, 0x43, 0xf9, \ -+ 0xa7, 0x5a, 0xee, 0x6b, 0xbf, 0x01, 0x2e, 0x23} -+#define UVC_GUID_FORMAT_L8 \ -+ { '2', 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_L16 \ -+ { 'Q', 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_D16 \ -+ { 'P', 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_BAYER16 \ -+ { 'R', 'W', '1', '6', 0x66, 0x1a, 0x42, 0xa2, \ -+ 0x90, 0x65, 0xd0, 0x18, 0x14, 0xa8, 0xef, 0x8a} -+ - - /* ------------------------------------------------------------------------ - * Driver specific constants. -diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c -index 7486af2..124dd35 100644 ---- a/drivers/media/v4l2-core/v4l2-ioctl.c -+++ b/drivers/media/v4l2-core/v4l2-ioctl.c -@@ -1229,6 +1229,11 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt) - case V4L2_SDR_FMT_CS8: descr = "Complex S8"; break; - case V4L2_SDR_FMT_CS14LE: descr = "Complex S14LE"; break; - case V4L2_SDR_FMT_RU12LE: descr = "Real U12LE"; break; -+ case V4L2_PIX_FMT_Y8I: descr = "8-bit Greyscale L/R interleaved"; break; -+ case V4L2_PIX_FMT_Y12I: descr = "12-bit Grey L/R interleaved"; break; -+ case V4L2_PIX_FMT_Z16: descr = "16-bit Depth data"; break; -+ case V4L2_PIX_FMT_RW16: descr = "16-bit Raw data"; break; -+ case V4L2_PIX_FMT_INZI: descr = "32-bit IR:Depth 10:16"; break; - - default: - /* Compressed formats */ -diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h -index 421d274..c41b5c0 100644 ---- a/include/uapi/linux/videodev2.h -+++ b/include/uapi/linux/videodev2.h -@@ -624,6 +624,12 @@ struct v4l2_pix_format { - #define V4L2_PIX_FMT_Y8I v4l2_fourcc('Y', '8', 'I', ' ') /* Greyscale 8-bit L/R interleaved */ - #define V4L2_PIX_FMT_Y12I v4l2_fourcc('Y', '1', '2', 'I') /* Greyscale 12-bit L/R interleaved */ - #define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ') /* Depth data 16-bit */ -+#define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* Greyscale 16-bit */ -+#define V4L2_PIX_FMT_RW16 v4l2_fourcc('R', 'W', '1', '6') /* Raw data 16-bit */ -+#define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I') /* 24 Depth/IR 16:8 */ -+#define V4L2_PIX_FMT_INVR v4l2_fourcc('I', 'N', 'V', 'R') /* 16 Depth */ -+#define V4L2_PIX_FMT_INRI v4l2_fourcc('I', 'N', 'R', 'I') /* 24 Depth/IR 16:8 */ -+#define V4L2_PIX_FMT_RELI v4l2_fourcc('R', 'E', 'L', 'I') /* 8 IR alternating on off illumination */ - - /* SDR formats - used only for Software Defined Radio devices */ - #define V4L2_SDR_FMT_CU8 v4l2_fourcc('C', 'U', '0', '8') /* IQ u8 */ --- -2.7.4 - diff --git a/scripts/realsense-fourcc-ioctl-ubuntu-xenial-joule.patch b/scripts/realsense-fourcc-ioctl-ubuntu-xenial-joule.patch deleted file mode 100644 index 7122eb5a71..0000000000 --- a/scripts/realsense-fourcc-ioctl-ubuntu-xenial-joule.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 85a54de5c8103ff7d12d6a2a5bef3a7c3ae35e00 Mon Sep 17 00:00:00 2001 -From: Evgeni Raikhel -Date: Mon, 10 Apr 2017 10:24:17 +0300 -Subject: [PATCH] Register format description with ioctls - ---- - drivers/media/v4l2-core/v4l2-ioctl.c | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c -index 7486af2c8ae4..fccb5606d5e6 100644 ---- a/drivers/media/v4l2-core/v4l2-ioctl.c -+++ b/drivers/media/v4l2-core/v4l2-ioctl.c -@@ -1229,6 +1229,11 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt) - case V4L2_SDR_FMT_CS8: descr = "Complex S8"; break; - case V4L2_SDR_FMT_CS14LE: descr = "Complex S14LE"; break; - case V4L2_SDR_FMT_RU12LE: descr = "Real U12LE"; break; -+ case V4L2_PIX_FMT_Y8I: descr = "8-bit Greyscale L/R interleaved"; break; -+ case V4L2_PIX_FMT_Y12I: descr = "12-bit Grey L/R interleaved"; break; -+ case V4L2_PIX_FMT_Z16: descr = "16-bit Depth data"; break; -+ case V4L2_PIX_FMT_RW16: descr = "16-bit Raw data"; break; -+ case V4L2_PIX_FMT_INZI: descr = "32-bit IR:Depth 10:16"; break; - - default: - /* Compressed formats */ --- -2.7.4 - diff --git a/scripts/realsense-hid-ubuntu-xenial-joule.patch b/scripts/realsense-hid-ubuntu-xenial-joule.patch deleted file mode 100644 index 907728d227..0000000000 --- a/scripts/realsense-hid-ubuntu-xenial-joule.patch +++ /dev/null @@ -1,178 +0,0 @@ -From cccb3a0d319e6b781dd580b45e5014c66a3dc14c Mon Sep 17 00:00:00 2001 -From: Pandruvada Srinivas -Date: Sun, 23 Oct 2016 17:24:46 -0400 -Subject: [PATCH] Enable HID metadata - -Signed-off-by: Avishag Angerman ---- - drivers/iio/accel/hid-sensor-accel-3d.c | 30 ++++++++++++++++++++++-------- - drivers/iio/gyro/hid-sensor-gyro-3d.c | 27 ++++++++++++++++++++------- - include/linux/hid-sensor-ids.h | 1 + - 3 files changed, 43 insertions(+), 15 deletions(-) - -diff --git a/drivers/iio/accel/hid-sensor-accel-3d.c b/drivers/iio/accel/hid-sensor-accel-3d.c -index ab1e238..403e921 100644 ---- a/drivers/iio/accel/hid-sensor-accel-3d.c -+++ b/drivers/iio/accel/hid-sensor-accel-3d.c -@@ -42,11 +42,13 @@ struct accel_3d_state { - struct hid_sensor_hub_callbacks callbacks; - struct hid_sensor_common common_attributes; - struct hid_sensor_hub_attribute_info accel[ACCEL_3D_CHANNEL_MAX]; -- u32 accel_val[ACCEL_3D_CHANNEL_MAX]; -+ /* Reserve for 3 channels + padding + timestamp */ -+ u32 accel_val[ACCEL_3D_CHANNEL_MAX + 3]; - int scale_pre_decml; - int scale_post_decml; - int scale_precision; - int value_offset; -+ int64_t timestamp; - }; - - static const u32 accel_3d_addresses[ACCEL_3D_CHANNEL_MAX] = { -@@ -87,7 +89,8 @@ static const struct iio_chan_spec accel_3d_channels[] = { - BIT(IIO_CHAN_INFO_SAMP_FREQ) | - BIT(IIO_CHAN_INFO_HYSTERESIS), - .scan_index = CHANNEL_SCAN_INDEX_Z, -- } -+ }, -+ IIO_CHAN_SOFT_TIMESTAMP(3) - }; - - /* Adjust channel real bits based on report descriptor */ -@@ -192,11 +195,11 @@ static const struct iio_info accel_3d_info = { - }; - - /* Function to push data to buffer */ --static void hid_sensor_push_data(struct iio_dev *indio_dev, const void *data, -- int len) -+static void hid_sensor_push_data(struct iio_dev *indio_dev, void *data, -+ int len, int64_t timestamp) - { - dev_dbg(&indio_dev->dev, "hid_sensor_push_data\n"); -- iio_push_to_buffers(indio_dev, data); -+ iio_push_to_buffers_with_timestamp(indio_dev, data, timestamp); - } - - /* Callback handler to send event after all samples are received and captured */ -@@ -208,10 +211,17 @@ static int accel_3d_proc_event(struct hid_sensor_hub_device *hsdev, - struct accel_3d_state *accel_state = iio_priv(indio_dev); - - dev_dbg(&indio_dev->dev, "accel_3d_proc_event\n"); -- if (atomic_read(&accel_state->common_attributes.data_ready)) -+ if (atomic_read(&accel_state->common_attributes.data_ready)) { -+ if (!accel_state->timestamp) -+ accel_state->timestamp = iio_get_time_ns(); -+ - hid_sensor_push_data(indio_dev, -- accel_state->accel_val, -- sizeof(accel_state->accel_val)); -+ accel_state->accel_val, -+ sizeof(accel_state->accel_val), -+ accel_state->timestamp); -+ -+ accel_state->timestamp = 0; -+ } - - return 0; - } -@@ -236,6 +246,10 @@ static int accel_3d_capture_sample(struct hid_sensor_hub_device *hsdev, - *(u32 *)raw_data; - ret = 0; - break; -+ case HID_USAGE_SENSOR_TIME_TIMESTAMP: -+ accel_state->timestamp = *(int64_t *)raw_data; -+ ret = 0; -+ break; - default: - break; - } -diff --git a/drivers/iio/gyro/hid-sensor-gyro-3d.c b/drivers/iio/gyro/hid-sensor-gyro-3d.c -index c67ce2a..b9c0894 100644 ---- a/drivers/iio/gyro/hid-sensor-gyro-3d.c -+++ b/drivers/iio/gyro/hid-sensor-gyro-3d.c -@@ -42,11 +42,13 @@ struct gyro_3d_state { - struct hid_sensor_hub_callbacks callbacks; - struct hid_sensor_common common_attributes; - struct hid_sensor_hub_attribute_info gyro[GYRO_3D_CHANNEL_MAX]; -- u32 gyro_val[GYRO_3D_CHANNEL_MAX]; -+ /* Reserve for 3 channels + padding + timestamp */ -+ u32 gyro_val[GYRO_3D_CHANNEL_MAX + 3]; - int scale_pre_decml; - int scale_post_decml; - int scale_precision; - int value_offset; -+ int64_t timestamp; - }; - - static const u32 gyro_3d_addresses[GYRO_3D_CHANNEL_MAX] = { -@@ -87,7 +89,8 @@ static const struct iio_chan_spec gyro_3d_channels[] = { - BIT(IIO_CHAN_INFO_SAMP_FREQ) | - BIT(IIO_CHAN_INFO_HYSTERESIS), - .scan_index = CHANNEL_SCAN_INDEX_Z, -- } -+ }, -+ IIO_CHAN_SOFT_TIMESTAMP(3) - }; - - /* Adjust channel real bits based on report descriptor */ -@@ -192,11 +195,11 @@ static const struct iio_info gyro_3d_info = { - }; - - /* Function to push data to buffer */ --static void hid_sensor_push_data(struct iio_dev *indio_dev, const void *data, -- int len) -+static void hid_sensor_push_data(struct iio_dev *indio_dev, void *data, -+ int len, int64_t timestamp) - { - dev_dbg(&indio_dev->dev, "hid_sensor_push_data\n"); -- iio_push_to_buffers(indio_dev, data); -+ iio_push_to_buffers_with_timestamp(indio_dev, data, timestamp); - } - - /* Callback handler to send event after all samples are received and captured */ -@@ -208,11 +211,17 @@ static int gyro_3d_proc_event(struct hid_sensor_hub_device *hsdev, - struct gyro_3d_state *gyro_state = iio_priv(indio_dev); - - dev_dbg(&indio_dev->dev, "gyro_3d_proc_event\n"); -- if (atomic_read(&gyro_state->common_attributes.data_ready)) -+ if (atomic_read(&gyro_state->common_attributes.data_ready)) { -+ if (!gyro_state->timestamp) -+ gyro_state->timestamp = iio_get_time_ns(); -+ - hid_sensor_push_data(indio_dev, - gyro_state->gyro_val, -- sizeof(gyro_state->gyro_val)); -+ sizeof(gyro_state->gyro_val), -+ gyro_state->timestamp); - -+ gyro_state->timestamp = 0; -+ } - return 0; - } - -@@ -236,6 +245,10 @@ static int gyro_3d_capture_sample(struct hid_sensor_hub_device *hsdev, - *(u32 *)raw_data; - ret = 0; - break; -+ case HID_USAGE_SENSOR_TIME_TIMESTAMP: -+ gyro_state->timestamp = *(int64_t *)raw_data; -+ ret = 0; -+ break; - default: - break; - } -diff --git a/include/linux/hid-sensor-ids.h b/include/linux/hid-sensor-ids.h -index f2ee90a..063aa1f 100644 ---- a/include/linux/hid-sensor-ids.h -+++ b/include/linux/hid-sensor-ids.h -@@ -95,6 +95,7 @@ - #define HID_USAGE_SENSOR_TIME_HOUR 0x200525 - #define HID_USAGE_SENSOR_TIME_MINUTE 0x200526 - #define HID_USAGE_SENSOR_TIME_SECOND 0x200527 -+#define HID_USAGE_SENSOR_TIME_TIMESTAMP 0x200529 - - /* Units */ - #define HID_USAGE_SENSOR_UNITS_NOT_SPECIFIED 0x00 --- -2.7.4 - diff --git a/scripts/realsense-hid-ubuntu-xenial-v4.16.patch b/scripts/realsense-hid-ubuntu-xenial-v4.16.patch deleted file mode 100644 index 7096cb7f35..0000000000 --- a/scripts/realsense-hid-ubuntu-xenial-v4.16.patch +++ /dev/null @@ -1,94 +0,0 @@ -From 3cd71dfdb89050b17a5e5e7c80c3d8e0cd02b196 Mon Sep 17 00:00:00 2001 -From: Srinivas Pandruvada -From: Evgeni -Date: Sun, 13 May 2018 10:49:26 -0400 - -Subject: [PATCH] Adding missing HID timestamp patch for Gyro sensor. - Ubuntu 18.04 Bionic Beaver with KErnel 4.15 - A symmetric patch for Accelerator was already upstreamed, - this patch was skipped from upstream - The patch was written by Srinivas Pandruvada ---- - drivers/iio/gyro/hid-sensor-gyro-3d.c | 30 +++++++++++++++++++++++------- - 1 file changed, 23 insertions(+), 7 deletions(-) - -diff --git a/drivers/iio/gyro/hid-sensor-gyro-3d.c b/drivers/iio/gyro/hid-sensor-gyro-3d.c -index f59995a..a4a5e9c 100644 ---- a/drivers/iio/gyro/hid-sensor-gyro-3d.c -+++ b/drivers/iio/gyro/hid-sensor-gyro-3d.c -@@ -42,11 +42,13 @@ struct gyro_3d_state { - struct hid_sensor_hub_callbacks callbacks; - struct hid_sensor_common common_attributes; - struct hid_sensor_hub_attribute_info gyro[GYRO_3D_CHANNEL_MAX]; -- u32 gyro_val[GYRO_3D_CHANNEL_MAX]; -+ /* Reserve for 3 channels + padding + timestamp */ -+ u32 gyro_val[GYRO_3D_CHANNEL_MAX + 3]; - int scale_pre_decml; - int scale_post_decml; - int scale_precision; - int value_offset; -+ int64_t timestamp; - }; - - static const u32 gyro_3d_addresses[GYRO_3D_CHANNEL_MAX] = { -@@ -87,7 +89,8 @@ static const struct iio_chan_spec gyro_3d_channels[] = { - BIT(IIO_CHAN_INFO_SAMP_FREQ) | - BIT(IIO_CHAN_INFO_HYSTERESIS), - .scan_index = CHANNEL_SCAN_INDEX_Z, -- } -+ }, -+ IIO_CHAN_SOFT_TIMESTAMP(3) - }; - - /* Adjust channel real bits based on report descriptor */ -@@ -191,11 +194,11 @@ static const struct iio_info gyro_3d_info = { - }; - - /* Function to push data to buffer */ --static void hid_sensor_push_data(struct iio_dev *indio_dev, const void *data, -- int len) -+static void hid_sensor_push_data(struct iio_dev *indio_dev, void *data, -+ int len, int64_t timestamp) - { - dev_dbg(&indio_dev->dev, "hid_sensor_push_data\n"); -- iio_push_to_buffers(indio_dev, data); -+ iio_push_to_buffers_with_timestamp(indio_dev, data, timestamp); - } - - /* Callback handler to send event after all samples are received and captured */ -@@ -207,10 +210,17 @@ static int gyro_3d_proc_event(struct hid_sensor_hub_device *hsdev, - struct gyro_3d_state *gyro_state = iio_priv(indio_dev); - - dev_dbg(&indio_dev->dev, "gyro_3d_proc_event\n"); -- if (atomic_read(&gyro_state->common_attributes.data_ready)) -+ if (atomic_read(&gyro_state->common_attributes.data_ready)) { -+ if (!gyro_state->timestamp) -+ gyro_state->timestamp = iio_get_time_ns(indio_dev); -+ - hid_sensor_push_data(indio_dev, - gyro_state->gyro_val, -- sizeof(gyro_state->gyro_val)); -+ sizeof(gyro_state->gyro_val), -+ gyro_state->timestamp); -+ -+ gyro_state->timestamp = 0; -+ } - - return 0; - } -@@ -235,6 +245,12 @@ static int gyro_3d_capture_sample(struct hid_sensor_hub_device *hsdev, - *(u32 *)raw_data; - ret = 0; - break; -+ case HID_USAGE_SENSOR_TIME_TIMESTAMP: -+ gyro_state->timestamp = -+ hid_sensor_convert_timestamp( -+ &gyro_state->common_attributes, -+ *(int64_t *)raw_data); -+ break; - default: - break; - } --- -2.7.4 - diff --git a/scripts/realsense-hid-xenial-Ubuntu-hwe-4.13.0-45.50_16.04.1.patch b/scripts/realsense-hid-xenial-Ubuntu-hwe-4.13.0-45.50_16.04.1.patch deleted file mode 100644 index b07b21d7c1..0000000000 --- a/scripts/realsense-hid-xenial-Ubuntu-hwe-4.13.0-45.50_16.04.1.patch +++ /dev/null @@ -1,108 +0,0 @@ -From 5ef00171f95a150a912f1d14645bcae25df203c9 Mon Sep 17 00:00:00 2001 -From: Srinivas Pandruvada -From: Evgeni Raikhel -Date: Tue, 13 Feb 2018 12:06:44 +0200 -Subject: [PATCH] Adding missing HID timestamp patch for Gyro sensor. - A symmetric patch for Accelerator was already upstreamed, - this patch was skipped from upstream - The patch was written by Srinivas Pandruvada - Additionally, timestamp management is fixed - ---- - drivers/iio/accel/hid-sensor-accel-3d.c | 1 + - drivers/iio/gyro/hid-sensor-gyro-3d.c | 31 ++++++++++++++++++++++++------- - 2 files changed, 25 insertions(+), 7 deletions(-) - -diff --git a/drivers/iio/accel/hid-sensor-accel-3d.c b/drivers/iio/accel/hid-sensor-accel-3d.c -index 2238a26..bbbd268 100644 ---- a/drivers/iio/accel/hid-sensor-accel-3d.c -+++ b/drivers/iio/accel/hid-sensor-accel-3d.c -@@ -287,6 +287,7 @@ static int accel_3d_capture_sample(struct hid_sensor_hub_device *hsdev, - hid_sensor_convert_timestamp( - &accel_state->common_attributes, - *(int64_t *)raw_data); -+ ret = 0; - break; - default: - break; -diff --git a/drivers/iio/gyro/hid-sensor-gyro-3d.c b/drivers/iio/gyro/hid-sensor-gyro-3d.c -index c67ce2a..7ffa8d6 100644 ---- a/drivers/iio/gyro/hid-sensor-gyro-3d.c -+++ b/drivers/iio/gyro/hid-sensor-gyro-3d.c -@@ -42,11 +42,13 @@ struct gyro_3d_state { - struct hid_sensor_hub_callbacks callbacks; - struct hid_sensor_common common_attributes; - struct hid_sensor_hub_attribute_info gyro[GYRO_3D_CHANNEL_MAX]; -- u32 gyro_val[GYRO_3D_CHANNEL_MAX]; -+ /* Reserve for 3 channels + padding + timestamp */ -+ u32 gyro_val[GYRO_3D_CHANNEL_MAX + 3]; - int scale_pre_decml; - int scale_post_decml; - int scale_precision; - int value_offset; -+ int64_t timestamp; - }; - - static const u32 gyro_3d_addresses[GYRO_3D_CHANNEL_MAX] = { -@@ -87,7 +89,8 @@ static const struct iio_chan_spec gyro_3d_channels[] = { - BIT(IIO_CHAN_INFO_SAMP_FREQ) | - BIT(IIO_CHAN_INFO_HYSTERESIS), - .scan_index = CHANNEL_SCAN_INDEX_Z, -- } -+ }, -+ IIO_CHAN_SOFT_TIMESTAMP(3) - }; - - /* Adjust channel real bits based on report descriptor */ -@@ -192,11 +195,11 @@ static const struct iio_info gyro_3d_info = { - }; - - /* Function to push data to buffer */ --static void hid_sensor_push_data(struct iio_dev *indio_dev, const void *data, -- int len) -+static void hid_sensor_push_data(struct iio_dev *indio_dev, void *data, -+ int len, int64_t timestamp) - { - dev_dbg(&indio_dev->dev, "hid_sensor_push_data\n"); -- iio_push_to_buffers(indio_dev, data); -+ iio_push_to_buffers_with_timestamp(indio_dev, data, timestamp); - } - - /* Callback handler to send event after all samples are received and captured */ -@@ -208,10 +211,17 @@ static int gyro_3d_proc_event(struct hid_sensor_hub_device *hsdev, - struct gyro_3d_state *gyro_state = iio_priv(indio_dev); - - dev_dbg(&indio_dev->dev, "gyro_3d_proc_event\n"); -- if (atomic_read(&gyro_state->common_attributes.data_ready)) -+ if (atomic_read(&gyro_state->common_attributes.data_ready)) { -+ if (!gyro_state->timestamp) -+ gyro_state->timestamp = iio_get_time_ns(indio_dev); -+ - hid_sensor_push_data(indio_dev, - gyro_state->gyro_val, -- sizeof(gyro_state->gyro_val)); -+ sizeof(gyro_state->gyro_val), -+ gyro_state->timestamp); -+ -+ gyro_state->timestamp = 0; -+ } - - return 0; - } -@@ -236,6 +246,13 @@ static int gyro_3d_capture_sample(struct hid_sensor_hub_device *hsdev, - *(u32 *)raw_data; - ret = 0; - break; -+ case HID_USAGE_SENSOR_TIME_TIMESTAMP: -+ gyro_state->timestamp = -+ hid_sensor_convert_timestamp( -+ &gyro_state->common_attributes, -+ *(int64_t *)raw_data); -+ ret = 0; -+ break; - default: - break; - } --- -2.7.4 - diff --git a/scripts/realsense-hid-xenial-Ubuntu-hwe-4.8.0-58.63_16.04.1.patch b/scripts/realsense-hid-xenial-Ubuntu-hwe-4.8.0-58.63_16.04.1.patch deleted file mode 100644 index bec11b3ef8..0000000000 --- a/scripts/realsense-hid-xenial-Ubuntu-hwe-4.8.0-58.63_16.04.1.patch +++ /dev/null @@ -1,182 +0,0 @@ -From 5ef00171f95a150a912f1d14645bcae25df203c9 Mon Sep 17 00:00:00 2001 -From: Srinivas Pandruvada -From: Evgeni Raikhel -Date: Tue, 13 Feb 2018 12:06:44 +0200 -Subject: [PATCH] Adding missing HID timestamp patch for Gyro sensor. - A symmetric patch for Accelerator was already upstreamed, - this patch was skipped from upstream - The patch was written by Srinivas Pandruvada - The version tag has been added to accel module so it will be also replaced regardless - of the target kernel version - ---- - drivers/iio/accel/hid-sensor-accel-3d.c | 30 ++++++++++++++++++++++-------- - drivers/iio/gyro/hid-sensor-gyro-3d.c | 28 +++++++++++++++++++++------- - include/linux/hid-sensor-ids.h | 1 + - 3 files changed, 44 insertions(+), 15 deletions(-) - -diff --git a/drivers/iio/accel/hid-sensor-accel-3d.c b/drivers/iio/accel/hid-sensor-accel-3d.c -index ab1e238..15b55a3 100644 ---- a/drivers/iio/accel/hid-sensor-accel-3d.c -+++ b/drivers/iio/accel/hid-sensor-accel-3d.c -@@ -42,11 +42,13 @@ struct accel_3d_state { - struct hid_sensor_hub_callbacks callbacks; - struct hid_sensor_common common_attributes; - struct hid_sensor_hub_attribute_info accel[ACCEL_3D_CHANNEL_MAX]; -- u32 accel_val[ACCEL_3D_CHANNEL_MAX]; -+ /* Reserve for 3 channels + padding + timestamp */ -+ u32 accel_val[ACCEL_3D_CHANNEL_MAX + 3]; - int scale_pre_decml; - int scale_post_decml; - int scale_precision; - int value_offset; -+ int64_t timestamp; - }; - - static const u32 accel_3d_addresses[ACCEL_3D_CHANNEL_MAX] = { -@@ -87,7 +89,8 @@ static const struct iio_chan_spec accel_3d_channels[] = { - BIT(IIO_CHAN_INFO_SAMP_FREQ) | - BIT(IIO_CHAN_INFO_HYSTERESIS), - .scan_index = CHANNEL_SCAN_INDEX_Z, -- } -+ }, -+ IIO_CHAN_SOFT_TIMESTAMP(3) - }; - - /* Adjust channel real bits based on report descriptor */ -@@ -192,11 +195,11 @@ static const struct iio_info accel_3d_info = { - }; - - /* Function to push data to buffer */ --static void hid_sensor_push_data(struct iio_dev *indio_dev, const void *data, -- int len) -+static void hid_sensor_push_data(struct iio_dev *indio_dev, void *data, -+ int len, int64_t timestamp) - { - dev_dbg(&indio_dev->dev, "hid_sensor_push_data\n"); -- iio_push_to_buffers(indio_dev, data); -+ iio_push_to_buffers_with_timestamp(indio_dev, data, timestamp); - } - - /* Callback handler to send event after all samples are received and captured */ -@@ -208,10 +211,17 @@ static int accel_3d_proc_event(struct hid_sensor_hub_device *hsdev, - struct accel_3d_state *accel_state = iio_priv(indio_dev); - - dev_dbg(&indio_dev->dev, "accel_3d_proc_event\n"); -- if (atomic_read(&accel_state->common_attributes.data_ready)) -+ if (atomic_read(&accel_state->common_attributes.data_ready)) { -+ if (!accel_state->timestamp) -+ accel_state->timestamp = iio_get_time_ns(indio_dev); -+ - hid_sensor_push_data(indio_dev, -- accel_state->accel_val, -- sizeof(accel_state->accel_val)); -+ accel_state->accel_val, -+ sizeof(accel_state->accel_val), -+ accel_state->timestamp); -+ -+ accel_state->timestamp = 0; -+ } - - return 0; - } -@@ -236,6 +246,10 @@ static int accel_3d_capture_sample(struct hid_sensor_hub_device *hsdev, - *(u32 *)raw_data; - ret = 0; - break; -+ case HID_USAGE_SENSOR_TIME_TIMESTAMP: // usec->nsec -+ accel_state->timestamp = (*(int64_t *)raw_data)*1000; -+ ret = 0; -+ break; - default: - break; - } -diff --git a/drivers/iio/gyro/hid-sensor-gyro-3d.c b/drivers/iio/gyro/hid-sensor-gyro-3d.c -index c67ce2a..859cdde 100644 ---- a/drivers/iio/gyro/hid-sensor-gyro-3d.c -+++ b/drivers/iio/gyro/hid-sensor-gyro-3d.c -@@ -42,11 +42,13 @@ struct gyro_3d_state { - struct hid_sensor_hub_callbacks callbacks; - struct hid_sensor_common common_attributes; - struct hid_sensor_hub_attribute_info gyro[GYRO_3D_CHANNEL_MAX]; -- u32 gyro_val[GYRO_3D_CHANNEL_MAX]; -+ /* Reserve for 3 channels + padding + timestamp */ -+ u32 gyro_val[GYRO_3D_CHANNEL_MAX + 3]; - int scale_pre_decml; - int scale_post_decml; - int scale_precision; - int value_offset; -+ int64_t timestamp; - }; - - static const u32 gyro_3d_addresses[GYRO_3D_CHANNEL_MAX] = { -@@ -87,7 +89,8 @@ static const struct iio_chan_spec gyro_3d_channels[] = { - BIT(IIO_CHAN_INFO_SAMP_FREQ) | - BIT(IIO_CHAN_INFO_HYSTERESIS), - .scan_index = CHANNEL_SCAN_INDEX_Z, -- } -+ }, -+ IIO_CHAN_SOFT_TIMESTAMP(3) - }; - - /* Adjust channel real bits based on report descriptor */ -@@ -192,11 +195,11 @@ static const struct iio_info gyro_3d_info = { - }; - - /* Function to push data to buffer */ --static void hid_sensor_push_data(struct iio_dev *indio_dev, const void *data, -- int len) -+static void hid_sensor_push_data(struct iio_dev *indio_dev, void *data, -+ int len, int64_t timestamp) - { - dev_dbg(&indio_dev->dev, "hid_sensor_push_data\n"); -- iio_push_to_buffers(indio_dev, data); -+ iio_push_to_buffers_with_timestamp(indio_dev, data, timestamp); - } - - /* Callback handler to send event after all samples are received and captured */ -@@ -208,10 +211,17 @@ static int gyro_3d_proc_event(struct hid_sensor_hub_device *hsdev, - struct gyro_3d_state *gyro_state = iio_priv(indio_dev); - - dev_dbg(&indio_dev->dev, "gyro_3d_proc_event\n"); -- if (atomic_read(&gyro_state->common_attributes.data_ready)) -+ if (atomic_read(&gyro_state->common_attributes.data_ready)) { -+ if (!gyro_state->timestamp) -+ gyro_state->timestamp = iio_get_time_ns(indio_dev); -+ - hid_sensor_push_data(indio_dev, - gyro_state->gyro_val, -- sizeof(gyro_state->gyro_val)); -+ sizeof(gyro_state->gyro_val), -+ gyro_state->timestamp); -+ -+ gyro_state->timestamp = 0; -+ } - - return 0; - } -@@ -236,6 +246,10 @@ static int gyro_3d_capture_sample(struct hid_sensor_hub_device *hsdev, - *(u32 *)raw_data; - ret = 0; - break; -+ case HID_USAGE_SENSOR_TIME_TIMESTAMP: // usec->nsec -+ gyro_state->timestamp = (*(int64_t *)raw_data)*1000; -+ ret = 0; -+ break; - default: - break; - } -diff --git a/include/linux/hid-sensor-ids.h b/include/linux/hid-sensor-ids.h -index f2ee90a..063aa1f 100644 ---- a/include/linux/hid-sensor-ids.h -+++ b/include/linux/hid-sensor-ids.h -@@ -95,6 +95,7 @@ - #define HID_USAGE_SENSOR_TIME_HOUR 0x200525 - #define HID_USAGE_SENSOR_TIME_MINUTE 0x200526 - #define HID_USAGE_SENSOR_TIME_SECOND 0x200527 -+#define HID_USAGE_SENSOR_TIME_TIMESTAMP 0x200529 - - /* Units */ - #define HID_USAGE_SENSOR_UNITS_NOT_SPECIFIED 0x00 --- -2.7.4 diff --git a/scripts/realsense-hid-xenial-hwe-zesty.patch b/scripts/realsense-hid-xenial-hwe-zesty.patch deleted file mode 100644 index 394876439a..0000000000 --- a/scripts/realsense-hid-xenial-hwe-zesty.patch +++ /dev/null @@ -1,90 +0,0 @@ -From 5ef00171f95a150a912f1d14645bcae25df203c9 Mon Sep 17 00:00:00 2001 -From: Srinivas Pandruvada -Date: Tue, 13 Feb 2018 12:06:44 +0200 -Subject: [PATCH] Adding missing HID timestamp patch for Gyro sensor. - A symmetric patch for Accelerator was already upstreamed, - this patch was skipped from upstream - The patch was written by Srinivas Pandruvada - ---- - drivers/iio/gyro/hid-sensor-gyro-3d.c | 28 +++++++++++++++++++++------- - 1 file changed, 21 insertions(+), 7 deletions(-) - -diff --git a/drivers/iio/gyro/hid-sensor-gyro-3d.c b/drivers/iio/gyro/hid-sensor-gyro-3d.c -index c67ce2a..7ff0dfe 100644 ---- a/drivers/iio/gyro/hid-sensor-gyro-3d.c -+++ b/drivers/iio/gyro/hid-sensor-gyro-3d.c -@@ -42,11 +42,13 @@ struct gyro_3d_state { - struct hid_sensor_hub_callbacks callbacks; - struct hid_sensor_common common_attributes; - struct hid_sensor_hub_attribute_info gyro[GYRO_3D_CHANNEL_MAX]; -- u32 gyro_val[GYRO_3D_CHANNEL_MAX]; -+ /* Reserve for 3 channels + padding + timestamp */ -+ u32 gyro_val[GYRO_3D_CHANNEL_MAX + 3]; - int scale_pre_decml; - int scale_post_decml; - int scale_precision; - int value_offset; -+ int64_t timestamp; - }; - - static const u32 gyro_3d_addresses[GYRO_3D_CHANNEL_MAX] = { -@@ -87,7 +89,8 @@ static const struct iio_chan_spec gyro_3d_channels[] = { - BIT(IIO_CHAN_INFO_SAMP_FREQ) | - BIT(IIO_CHAN_INFO_HYSTERESIS), - .scan_index = CHANNEL_SCAN_INDEX_Z, -- } -+ }, -+ IIO_CHAN_SOFT_TIMESTAMP(3) - }; - - /* Adjust channel real bits based on report descriptor */ -@@ -192,11 +195,11 @@ static const struct iio_info gyro_3d_info = { - }; - - /* Function to push data to buffer */ --static void hid_sensor_push_data(struct iio_dev *indio_dev, const void *data, -- int len) -+static void hid_sensor_push_data(struct iio_dev *indio_dev, void *data, -+ int len, int64_t timestamp) - { - dev_dbg(&indio_dev->dev, "hid_sensor_push_data\n"); -- iio_push_to_buffers(indio_dev, data); -+ iio_push_to_buffers_with_timestamp(indio_dev, data, timestamp); - } - - /* Callback handler to send event after all samples are received and captured */ -@@ -208,10 +211,17 @@ static int gyro_3d_proc_event(struct hid_sensor_hub_device *hsdev, - struct gyro_3d_state *gyro_state = iio_priv(indio_dev); - - dev_dbg(&indio_dev->dev, "gyro_3d_proc_event\n"); -- if (atomic_read(&gyro_state->common_attributes.data_ready)) -+ if (atomic_read(&gyro_state->common_attributes.data_ready)) { -+ if (!gyro_state->timestamp) -+ gyro_state->timestamp = iio_get_time_ns(indio_dev); -+ - hid_sensor_push_data(indio_dev, - gyro_state->gyro_val, -- sizeof(gyro_state->gyro_val)); -+ sizeof(gyro_state->gyro_val), -+ gyro_state->timestamp); -+ -+ gyro_state->timestamp = 0; -+ } - - return 0; - } -@@ -236,6 +246,10 @@ static int gyro_3d_capture_sample(struct hid_sensor_hub_device *hsdev, - *(u32 *)raw_data; - ret = 0; - break; -+ case HID_USAGE_SENSOR_TIME_TIMESTAMP: -+ gyro_state->timestamp = (*(int64_t *)raw_data)*1000; -+ ret = 0; -+ break; - default: - break; - } --- -2.7.4 - diff --git a/scripts/realsense-hid-xenial-hwe.patch b/scripts/realsense-hid-xenial-hwe.patch deleted file mode 100644 index 1944846906..0000000000 --- a/scripts/realsense-hid-xenial-hwe.patch +++ /dev/null @@ -1,111 +0,0 @@ -From 3cd71dfdb89050b17a5e5e7c80c3d8e0cd02b196 Mon Sep 17 00:00:00 2001 -From: Srinivas Pandruvada -From: Evgeni -Date: Sun, 13 May 2018 10:49:26 -0400 - -Subject: [PATCH] Adding missing HID timestamp patch for Gyro sensor. - Ubuntu 18.04 Bionic Beaver with Kernel 4.15 - A symmetric patch for Accelerator was already upstreamed, - this patch was skipped from upstream - The patch was written by Srinivas Pandruvada - Additionally, timestamp management is fixed - ---- - drivers/iio/accel/hid-sensor-accel-3d.c | 1 + - drivers/iio/gyro/hid-sensor-gyro-3d.c | 31 ++++++++++++++++++++++++------- - 2 files changed, 25 insertions(+), 7 deletions(-) - -diff --git a/drivers/iio/accel/hid-sensor-accel-3d.c b/drivers/iio/accel/hid-sensor-accel-3d.c -index c066a3b..3346631 100644 ---- a/drivers/iio/accel/hid-sensor-accel-3d.c -+++ b/drivers/iio/accel/hid-sensor-accel-3d.c -@@ -289,6 +289,7 @@ static int accel_3d_capture_sample(struct hid_sensor_hub_device *hsdev, - hid_sensor_convert_timestamp( - &accel_state->common_attributes, - *(int64_t *)raw_data); -+ ret = 0; - break; - default: - break; -diff --git a/drivers/iio/gyro/hid-sensor-gyro-3d.c b/drivers/iio/gyro/hid-sensor-gyro-3d.c -index f59995a..98cec98 100644 ---- a/drivers/iio/gyro/hid-sensor-gyro-3d.c -+++ b/drivers/iio/gyro/hid-sensor-gyro-3d.c -@@ -42,11 +42,13 @@ struct gyro_3d_state { - struct hid_sensor_hub_callbacks callbacks; - struct hid_sensor_common common_attributes; - struct hid_sensor_hub_attribute_info gyro[GYRO_3D_CHANNEL_MAX]; -- u32 gyro_val[GYRO_3D_CHANNEL_MAX]; -+ /* Reserve for 3 channels + padding + timestamp */ -+ u32 gyro_val[GYRO_3D_CHANNEL_MAX + 3]; - int scale_pre_decml; - int scale_post_decml; - int scale_precision; - int value_offset; -+ int64_t timestamp; - }; - - static const u32 gyro_3d_addresses[GYRO_3D_CHANNEL_MAX] = { -@@ -87,7 +89,8 @@ static const struct iio_chan_spec gyro_3d_channels[] = { - BIT(IIO_CHAN_INFO_SAMP_FREQ) | - BIT(IIO_CHAN_INFO_HYSTERESIS), - .scan_index = CHANNEL_SCAN_INDEX_Z, -- } -+ }, -+ IIO_CHAN_SOFT_TIMESTAMP(3) - }; - - /* Adjust channel real bits based on report descriptor */ -@@ -194,11 +197,11 @@ static const struct iio_info gyro_3d_info = { - }; - - /* Function to push data to buffer */ --static void hid_sensor_push_data(struct iio_dev *indio_dev, const void *data, -- int len) -+static void hid_sensor_push_data(struct iio_dev *indio_dev, void *data, -+ int len, int64_t timestamp) - { - dev_dbg(&indio_dev->dev, "hid_sensor_push_data\n"); -- iio_push_to_buffers(indio_dev, data); -+ iio_push_to_buffers_with_timestamp(indio_dev, data, timestamp); - } - - /* Callback handler to send event after all samples are received and captured */ -@@ -210,10 +213,17 @@ static int gyro_3d_proc_event(struct hid_sensor_hub_device *hsdev, - struct gyro_3d_state *gyro_state = iio_priv(indio_dev); - - dev_dbg(&indio_dev->dev, "gyro_3d_proc_event\n"); -- if (atomic_read(&gyro_state->common_attributes.data_ready)) -+ if (atomic_read(&gyro_state->common_attributes.data_ready)) { -+ if (!gyro_state->timestamp) -+ gyro_state->timestamp = iio_get_time_ns(indio_dev); -+ - hid_sensor_push_data(indio_dev, - gyro_state->gyro_val, -- sizeof(gyro_state->gyro_val)); -+ sizeof(gyro_state->gyro_val), -+ gyro_state->timestamp); -+ -+ gyro_state->timestamp = 0; -+ } - - return 0; - } -@@ -238,6 +248,13 @@ static int gyro_3d_capture_sample(struct hid_sensor_hub_device *hsdev, - *(u32 *)raw_data; - ret = 0; - break; -+ case HID_USAGE_SENSOR_TIME_TIMESTAMP: -+ gyro_state->timestamp = -+ hid_sensor_convert_timestamp( -+ &gyro_state->common_attributes, -+ *(int64_t *)raw_data); -+ ret = 0; -+ break; - default: - break; - } --- -2.7.4 - - diff --git a/scripts/realsense-hid-xenial-master.patch b/scripts/realsense-hid-xenial-master.patch deleted file mode 100644 index a81db30516..0000000000 --- a/scripts/realsense-hid-xenial-master.patch +++ /dev/null @@ -1,180 +0,0 @@ -From 5ef00171f95a150a912f1d14645bcae25df203c9 Mon Sep 17 00:00:00 2001 -From: Srinivas Pandruvada -From: Evgeni Raikhel -Date: Tue, 13 Feb 2018 12:06:44 +0200 -Subject: [PATCH] Adding missing HID timestamp patch for Gyro sensor. - A symmetric patch for Accelerator was already upstreamed, - this patch was skipped from upstream - The patch was written by Srinivas Pandruvada - Additionally, timestamp management is fixed - ---- - drivers/iio/gyro/hid-sensor-gyro-3d.c | 28 ++++++++++++++++++++------- - drivers/iio/gyro/hid-sensor-accel-3d.c | 28 ++++++++++++++++++++------- - 2 file changed, 56 insertions(+), 14 deletions(-) - -diff --git a/drivers/iio/accel/hid-sensor-accel-3d.c b/drivers/iio/accel/hid-sensor-accel-3d.c -index ab1e238..28262c4 100644 ---- a/drivers/iio/accel/hid-sensor-accel-3d.c -+++ b/drivers/iio/accel/hid-sensor-accel-3d.c -@@ -42,11 +42,13 @@ struct accel_3d_state { - struct hid_sensor_hub_callbacks callbacks; - struct hid_sensor_common common_attributes; - struct hid_sensor_hub_attribute_info accel[ACCEL_3D_CHANNEL_MAX]; -- u32 accel_val[ACCEL_3D_CHANNEL_MAX]; -+ /* Reserve for 3 channels + padding + timestamp */ -+ u32 accel_val[ACCEL_3D_CHANNEL_MAX + 3]; - int scale_pre_decml; - int scale_post_decml; - int scale_precision; - int value_offset; -+ int64_t timestamp; - }; - - static const u32 accel_3d_addresses[ACCEL_3D_CHANNEL_MAX] = { -@@ -87,7 +89,8 @@ static const struct iio_chan_spec accel_3d_channels[] = { - BIT(IIO_CHAN_INFO_SAMP_FREQ) | - BIT(IIO_CHAN_INFO_HYSTERESIS), - .scan_index = CHANNEL_SCAN_INDEX_Z, -- } -+ }, -+ IIO_CHAN_SOFT_TIMESTAMP(3) - }; - - /* Adjust channel real bits based on report descriptor */ -@@ -192,11 +195,11 @@ static const struct iio_info accel_3d_info = { - }; - - /* Function to push data to buffer */ --static void hid_sensor_push_data(struct iio_dev *indio_dev, const void *data, -- int len) -+static void hid_sensor_push_data(struct iio_dev *indio_dev, void *data, -+ int len, int64_t timestamp) - { - dev_dbg(&indio_dev->dev, "hid_sensor_push_data\n"); -- iio_push_to_buffers(indio_dev, data); -+ iio_push_to_buffers_with_timestamp(indio_dev, data, timestamp); - } - - /* Callback handler to send event after all samples are received and captured */ -@@ -208,10 +211,17 @@ static int accel_3d_proc_event(struct hid_sensor_hub_device *hsdev, - struct accel_3d_state *accel_state = iio_priv(indio_dev); - - dev_dbg(&indio_dev->dev, "accel_3d_proc_event\n"); -- if (atomic_read(&accel_state->common_attributes.data_ready)) -- hid_sensor_push_data(indio_dev, -- accel_state->accel_val, -- sizeof(accel_state->accel_val)); -+ if (atomic_read(&accel_state->common_attributes.data_ready)) { -+ if (!accel_state->timestamp) -+ accel_state->timestamp = iio_get_time_ns(); -+ -+ hid_sensor_push_data(indio_dev, -+ accel_state->accel_val, -+ sizeof(accel_state->accel_val), -+ accel_state->timestamp); -+ -+ accel_state->timestamp = 0; -+ } - - return 0; - } -@@ -236,6 +246,10 @@ static int accel_3d_capture_sample(struct hid_sensor_hub_device *hsdev, - *(u32 *)raw_data; - ret = 0; - break; -+ case HID_USAGE_SENSOR_TIME_TIMESTAMP: // usec->nsec -+ accel_state->timestamp = (*(int64_t *)raw_data)*1000; -+ ret = 0; -+ break; - default: - break; - } -diff --git a/drivers/iio/gyro/hid-sensor-gyro-3d.c b/drivers/iio/gyro/hid-sensor-gyro-3d.c -index c67ce2a..f45c5a2 100644 ---- a/drivers/iio/gyro/hid-sensor-gyro-3d.c -+++ b/drivers/iio/gyro/hid-sensor-gyro-3d.c -@@ -42,11 +42,13 @@ struct gyro_3d_state { - struct hid_sensor_hub_callbacks callbacks; - struct hid_sensor_common common_attributes; - struct hid_sensor_hub_attribute_info gyro[GYRO_3D_CHANNEL_MAX]; -- u32 gyro_val[GYRO_3D_CHANNEL_MAX]; -+ /* Reserve for 3 channels + padding + timestamp */ -+ u32 gyro_val[GYRO_3D_CHANNEL_MAX + 3]; - int scale_pre_decml; - int scale_post_decml; - int scale_precision; - int value_offset; -+ int64_t timestamp; - }; - - static const u32 gyro_3d_addresses[GYRO_3D_CHANNEL_MAX] = { -@@ -87,7 +89,8 @@ static const struct iio_chan_spec gyro_3d_channels[] = { - BIT(IIO_CHAN_INFO_SAMP_FREQ) | - BIT(IIO_CHAN_INFO_HYSTERESIS), - .scan_index = CHANNEL_SCAN_INDEX_Z, -- } -+ }, -+ IIO_CHAN_SOFT_TIMESTAMP(3) - }; - - /* Adjust channel real bits based on report descriptor */ -@@ -192,11 +195,11 @@ static const struct iio_info gyro_3d_info = { - }; - - /* Function to push data to buffer */ --static void hid_sensor_push_data(struct iio_dev *indio_dev, const void *data, -- int len) -+static void hid_sensor_push_data(struct iio_dev *indio_dev, void *data, -+ int len, int64_t timestamp) - { - dev_dbg(&indio_dev->dev, "hid_sensor_push_data\n"); -- iio_push_to_buffers(indio_dev, data); -+ iio_push_to_buffers_with_timestamp(indio_dev, data, timestamp); - } - - /* Callback handler to send event after all samples are received and captured */ -@@ -208,10 +211,17 @@ static int gyro_3d_proc_event(struct hid_sensor_hub_device *hsdev, - struct gyro_3d_state *gyro_state = iio_priv(indio_dev); - - dev_dbg(&indio_dev->dev, "gyro_3d_proc_event\n"); -- if (atomic_read(&gyro_state->common_attributes.data_ready)) -+ if (atomic_read(&gyro_state->common_attributes.data_ready)) { -+ if (!gyro_state->timestamp) -+ gyro_state->timestamp = iio_get_time_ns(); -+ - hid_sensor_push_data(indio_dev, -- gyro_state->gyro_val, -- sizeof(gyro_state->gyro_val)); -+ gyro_state->gyro_val, -+ sizeof(gyro_state->gyro_val), -+ gyro_state->timestamp); -+ -+ gyro_state->timestamp = 0; -+ } - - return 0; - } -@@ -236,6 +246,10 @@ static int gyro_3d_capture_sample(struct hid_sensor_hub_device *hsdev, - *(u32 *)raw_data; - ret = 0; - break; -+ case HID_USAGE_SENSOR_TIME_TIMESTAMP: // usec->nsec -+ gyro_state->timestamp = (*(int64_t *)raw_data)*1000; -+ ret = 0; -+ break; - default: - break; - } -diff --git a/include/linux/hid-sensor-ids.h b/include/linux/hid-sensor-ids.h -index f2ee90a..9a3a9db 100644 ---- a/include/linux/hid-sensor-ids.h -+++ b/include/linux/hid-sensor-ids.h -@@ -95,6 +95,7 @@ - #define HID_USAGE_SENSOR_TIME_HOUR 0x200525 - #define HID_USAGE_SENSOR_TIME_MINUTE 0x200526 - #define HID_USAGE_SENSOR_TIME_SECOND 0x200527 -+#define HID_USAGE_SENSOR_TIME_TIMESTAMP 0x200529 - - /* Units */ - #define HID_USAGE_SENSOR_UNITS_NOT_SPECIFIED 0x00 diff --git a/scripts/realsense-metadata-ubuntu-xenial-joule.patch b/scripts/realsense-metadata-ubuntu-xenial-joule.patch deleted file mode 100644 index d1c8acd628..0000000000 --- a/scripts/realsense-metadata-ubuntu-xenial-joule.patch +++ /dev/null @@ -1,335 +0,0 @@ -From bddbfd6bdeac42020ca7d0c807f094daa858e3db Mon Sep 17 00:00:00 2001 -From: administrator -Date: Sun, 23 Oct 2016 13:47:42 -0400 -Subject: [PATCH] Meta for MS XU - ---- - drivers/media/usb/uvc/uvc_driver.c | 45 ++++++++++++++++++++++++++++++++++++++ - drivers/media/usb/uvc/uvc_video.c | 19 +++++++++++----- - drivers/media/usb/uvc/uvcvideo.h | 3 ++- - 3 files changed, 61 insertions(+), 6 deletions(-) - -diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c -index 9b8ac20..227f23a 100644 ---- a/drivers/media/usb/uvc/uvc_driver.c -+++ b/drivers/media/usb/uvc/uvc_driver.c -@@ -2674,6 +2674,258 @@ static struct usb_device_id uvc_ids[] = { - .bInterfaceSubClass = 1, - .bInterfaceProtocol = 0, - .driver_info = UVC_QUIRK_FORCE_Y8 }, -+ /* Intel SR300 depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0aa5, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D400/PSR depth camera*/ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad1, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D410/ASR depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad2, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D415/ASRC depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad3, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D430/AWG depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad4, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D450/AWGT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad5, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D400 IMU Module */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0af2, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D420/PWG depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0af6, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D420_MM/PWGT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0afe, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D410_MM/ASRT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0aff, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D400_MM/PSRT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b00, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D430_MM/AWGCT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b01, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D460/DS5U depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b03, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D435/AWGC depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b07, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D405 S depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b0c, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel L500 depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b0d, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D410/USB2 Depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b15, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D415/USB2 Depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b16, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D435/USB2 Depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b17, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D435i depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b3a, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel L515 Pre-PRQ */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b3d, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel SR305 Depth Camera*/ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b48, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D416 Depth Camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b49, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D430i depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b4b, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D465 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b4d, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D405 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b5b, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D455 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b5c, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel L515 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b64, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, - /* Generic USB Video Class */ - { USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, 0) }, - {} -diff --git a/drivers/media/usb/uvc/uvc_video.c b/drivers/media/usb/uvc/uvc_video.c -index 2b276ab..70c1a51 100644 ---- a/drivers/media/usb/uvc/uvc_video.c -+++ b/drivers/media/usb/uvc/uvc_video.c -@@ -1233,8 +1233,13 @@ static void uvc_video_decode_bulk(struct urb *urb, struct uvc_streaming *stream, - do { - ret = uvc_video_decode_start(stream, buf, mem, len); - if (ret == -EAGAIN) -- buf = uvc_queue_next_buffer(&stream->queue, -- buf); -+ { -+ if (stream->dev->quirks & UVC_QUIRK_APPEND_UVC_HEADER) -+ { -+ uvc_video_decode_data(stream, buf, stream->bulk.header,256); -+ } -+ buf = uvc_queue_next_buffer(&stream->queue,buf); -+ } - } while (ret == -EAGAIN); - - /* If an error occurred skip the rest of the payload. */ -@@ -1266,9 +1271,13 @@ static void uvc_video_decode_bulk(struct urb *urb, struct uvc_streaming *stream, - if (!stream->bulk.skip_payload && buf != NULL) { - uvc_video_decode_end(stream, buf, stream->bulk.header, - stream->bulk.payload_size); -- if (buf->state == UVC_BUF_STATE_READY) -- buf = uvc_queue_next_buffer(&stream->queue, -- buf); -+ if (buf->state == UVC_BUF_STATE_READY) { -+ if (stream->dev->quirks & UVC_QUIRK_APPEND_UVC_HEADER) { -+ uvc_video_decode_data(stream, buf, stream->bulk.header, -+ stream->bulk.header_size); -+ } -+ buf = uvc_queue_next_buffer(&stream->queue, buf); -+ } - } - - stream->bulk.header_size = 0; -diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h -index 7e4d3ee..90f69a7 100644 ---- a/drivers/media/usb/uvc/uvcvideo.h -+++ b/drivers/media/usb/uvc/uvcvideo.h -@@ -143,7 +143,7 @@ - /* Maximum number of packets per URB. */ - #define UVC_MAX_PACKETS 32 - /* Maximum status buffer size in bytes of interrupt URB. */ --#define UVC_MAX_STATUS_SIZE 16 -+#define UVC_MAX_STATUS_SIZE 32 - - #define UVC_CTRL_CONTROL_TIMEOUT 300 - #define UVC_CTRL_STREAMING_TIMEOUT 5000 -@@ -164,6 +164,7 @@ - #define UVC_QUIRK_RESTRICT_FRAME_RATE 0x00000200 - #define UVC_QUIRK_RESTORE_CTRLS_ON_INIT 0x00000400 - #define UVC_QUIRK_FORCE_Y8 0x00000800 -+#define UVC_QUIRK_APPEND_UVC_HEADER 0x00001000 - - /* Format flags */ - #define UVC_FMT_FLAG_COMPRESSED 0x00000001 --- -2.7.4 - diff --git a/scripts/realsense-metadata-ubuntu-xenial-v4.16.patch b/scripts/realsense-metadata-ubuntu-xenial-v4.16.patch deleted file mode 100644 index e3a4f6119f..0000000000 --- a/scripts/realsense-metadata-ubuntu-xenial-v4.16.patch +++ /dev/null @@ -1,318 +0,0 @@ -From af04383d9816d971c7f11d99ab6e96fd946c4f22 Mon Sep 17 00:00:00 2001 -From: Evgeni Raikhel -From: Elad Zucker -From: icarpis -From: Guennadi Liakhovetski -Date: Tue, 14 Aug 2018 15:51:51 +0300 -Subject: [PATCH] D4M metadata enablement w/metanode kernel 4.16 - Enabling UVC Metadata D4M format according to a - pending patch https://patchwork.kernel.org/patch/10131589/ - Also extending it to additoinal SKUs. - This patchs drops the documentation chapter as unnecessary - ---- - drivers/media/usb/uvc/uvc_driver.c | 146 +++++++++++++++++++++++++++++++++++++ - drivers/media/usb/uvc/uvcvideo.h | 2 +- - include/uapi/linux/videodev2.h | 1 + - 3 files changed, 139 insertions(+), 1 deletion(-) - -diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c -index fd387bf..3219519 100644 ---- a/drivers/media/usb/uvc/uvc_driver.c -+++ b/drivers/media/usb/uvc/uvc_driver.c -@@ -2346,6 +2346,8 @@ static const struct uvc_device_info uvc_quirk_force_y8 = { - }; - - #define UVC_QUIRK_INFO(q) (kernel_ulong_t)&(struct uvc_device_info){.quirks = q} -+#define UVC_QUIRK_META(m) (kernel_ulong_t)&(struct uvc_device_info) \ -+ {.meta_format = m} - - /* - * The Logitech cameras listed below have their interface class set to -@@ -2819,6 +2821,258 @@ static const struct usb_device_id uvc_ids[] = { - .bInterfaceSubClass = 1, - .bInterfaceProtocol = 0, - .driver_info = (kernel_ulong_t)&uvc_quirk_force_y8 }, -+ /* Intel SR300 depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0aa5, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D400/PSR depth camera*/ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad1, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D410/ASR depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad2, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D415/ASRC depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad3, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D430/AWG depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad4, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D450/AWGT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad5, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D400 IMU Module */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0af2, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D420/PWG depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0af6, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D420_MM/PWGT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0afe, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D410_MM/ASRT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0aff, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D400_MM/PSRT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b00, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D430_MM/AWGCT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b01, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D460/DS5U depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b03, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D435/AWGC depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b07, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D405 S depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b0c, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel L500 depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b0d, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D410/USB2 Depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b15, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D415/USB2 Depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b16, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D435/USB2 Depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b17, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D435i depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b3a, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel L515 Pre-PRQ */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b3d, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel SR305 Depth Camera*/ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b48, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D416 Depth Camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b49, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D430i depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b4b, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D465 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b4d, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D405 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b5b, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D455 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b5c, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel L515 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b64, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, - /* Generic USB Video Class */ - { USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, UVC_PC_PROTOCOL_UNDEFINED) }, - { USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, UVC_PC_PROTOCOL_15) }, -diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h -index d9e7c70..8470b7f 100644 ---- a/drivers/media/usb/uvc/uvcvideo.h -+++ b/drivers/media/usb/uvc/uvcvideo.h -@@ -170,7 +170,7 @@ - /* Maximum number of packets per URB. */ - #define UVC_MAX_PACKETS 32 - /* Maximum status buffer size in bytes of interrupt URB. */ --#define UVC_MAX_STATUS_SIZE 16 -+#define UVC_MAX_STATUS_SIZE 32 - - #define UVC_CTRL_CONTROL_TIMEOUT 500 - #define UVC_CTRL_STREAMING_TIMEOUT 5000 -diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h -index 9827189..d947f9a 100644 ---- a/include/uapi/linux/videodev2.h -+++ b/include/uapi/linux/videodev2.h -@@ -695,6 +695,7 @@ struct v4l2_pix_format { - #define V4L2_META_FMT_VSP1_HGO v4l2_fourcc('V', 'S', 'P', 'H') /* R-Car VSP1 1-D Histogram */ - #define V4L2_META_FMT_VSP1_HGT v4l2_fourcc('V', 'S', 'P', 'T') /* R-Car VSP1 2-D Histogram */ - #define V4L2_META_FMT_UVC v4l2_fourcc('U', 'V', 'C', 'H') /* UVC Payload Header metadata */ -+#define V4L2_META_FMT_D4XX v4l2_fourcc('D', '4', 'X', 'X') /* D4XX Payload Header metadata */ - - /* priv field value to indicates that subsequent fields are valid. */ - #define V4L2_PIX_FMT_PRIV_MAGIC 0xfeedcafe --- -2.7.4 - diff --git a/scripts/realsense-metadata-xenial-Ubuntu-hwe-4.13.0-45.50_16.04.1.patch b/scripts/realsense-metadata-xenial-Ubuntu-hwe-4.13.0-45.50_16.04.1.patch deleted file mode 100644 index 72c3558831..0000000000 --- a/scripts/realsense-metadata-xenial-Ubuntu-hwe-4.13.0-45.50_16.04.1.patch +++ /dev/null @@ -1,355 +0,0 @@ -From a87f52b988cb9ead97c74755228a7801d749b81c Mon Sep 17 00:00:00 2001 -From: Elad Zucker -From: icarpis -Date: Sun, 18 Mar 2018 11:13:36 +0200 -Subject: [PATCH] added support for uvc metadata - -Signed-off-by: Evgeni Raikhel ---- - drivers/media/usb/uvc/uvc_driver.c | 144 +++++++++++++++++++++++++++++++++++++ - drivers/media/usb/uvc/uvc_video.c | 18 +++-- - drivers/media/usb/uvc/uvcvideo.h | 4 +- - 3 files changed, 151 insertions(+), 6 deletions(-) - -diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c -index 70842c5..9cdc50a 100644 ---- a/drivers/media/usb/uvc/uvc_driver.c -+++ b/drivers/media/usb/uvc/uvc_driver.c -@@ -2799,6 +2799,276 @@ static struct usb_device_id uvc_ids[] = { - .bInterfaceSubClass = 1, - .bInterfaceProtocol = 0, - .driver_info = UVC_QUIRK_FORCE_Y8 }, -+ /* Intel SR306 depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0aa3, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel SR300 depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0aa5, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D400/PSR depth camera*/ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad1, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D410/ASR depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad2, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D415/ASRC depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad3, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D430/AWG depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad4, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D450/AWGT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad5, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D400 IMU Module */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0af2, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D420/PWG depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0af6, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D420_MM/PWGT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0afe, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D410_MM/ASRT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0aff, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D400_MM/PSRT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b00, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D430_MM/AWGCT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b01, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D460/DS5U depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b03, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D435/AWGC depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b07, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D405 S depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b0c, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel L500 depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b0d, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D410/USB2 Depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b15, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D415/USB2 Depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b16, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D435/USB2 Depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b17, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D435i depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b3a, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel L515 Pre-PRQ */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b3d, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel SR305 Depth Camera*/ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b48, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D416 Depth Camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b49, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D430i depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b4b, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D465 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b4d, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D405 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b5b, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D455 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b5c, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel L515 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b64, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel L535 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b68, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, - /* Generic USB Video Class */ - { USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, UVC_PC_PROTOCOL_UNDEFINED) }, - { USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, UVC_PC_PROTOCOL_15) }, -diff --git a/drivers/media/usb/uvc/uvc_video.c b/drivers/media/usb/uvc/uvc_video.c -index fb86d6a..462dffb 100644 ---- a/drivers/media/usb/uvc/uvc_video.c -+++ b/drivers/media/usb/uvc/uvc_video.c -@@ -1226,8 +1226,13 @@ static void uvc_video_decode_bulk(struct urb *urb, struct uvc_streaming *stream, - do { - ret = uvc_video_decode_start(stream, buf, mem, len); - if (ret == -EAGAIN) -- buf = uvc_queue_next_buffer(&stream->queue, -- buf); -+ { -+ if (stream->dev->quirks & UVC_QUIRK_APPEND_UVC_HEADER) -+ { -+ uvc_video_decode_data(stream, buf, stream->bulk.header,256); -+ } -+ buf = uvc_queue_next_buffer(&stream->queue,buf); -+ } - } while (ret == -EAGAIN); - - /* If an error occurred skip the rest of the payload. */ -@@ -1259,8 +1264,13 @@ static void uvc_video_decode_bulk(struct urb *urb, struct uvc_streaming *stream, - if (!stream->bulk.skip_payload && buf != NULL) { - uvc_video_decode_end(stream, buf, stream->bulk.header, - stream->bulk.payload_size); -- if (buf->state == UVC_BUF_STATE_READY) -- uvc_queue_next_buffer(&stream->queue, buf); -+ if (buf->state == UVC_BUF_STATE_READY) { -+ if (stream->dev->quirks & UVC_QUIRK_APPEND_UVC_HEADER) { -+ uvc_video_decode_data(stream, buf, stream->bulk.header, -+ stream->bulk.header_size); -+ } -+ buf = uvc_queue_next_buffer(&stream->queue, buf); -+ } - } - - stream->bulk.header_size = 0; -diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h -index 15e415e..f6ab1dd 100644 ---- a/drivers/media/usb/uvc/uvcvideo.h -+++ b/drivers/media/usb/uvc/uvcvideo.h -@@ -201,8 +201,7 @@ - /* Maximum number of packets per URB. */ - #define UVC_MAX_PACKETS 32 - /* Maximum status buffer size in bytes of interrupt URB. */ --#define UVC_MAX_STATUS_SIZE 16 -- -+#define UVC_MAX_STATUS_SIZE 32 - #define UVC_CTRL_CONTROL_TIMEOUT 300 - #define UVC_CTRL_STREAMING_TIMEOUT 5000 - -@@ -222,6 +221,7 @@ - #define UVC_QUIRK_RESTRICT_FRAME_RATE 0x00000200 - #define UVC_QUIRK_RESTORE_CTRLS_ON_INIT 0x00000400 - #define UVC_QUIRK_FORCE_Y8 0x00000800 -+#define UVC_QUIRK_APPEND_UVC_HEADER 0x00001000 - - /* Format flags */ - #define UVC_FMT_FLAG_COMPRESSED 0x00000001 --- -2.7.4 - diff --git a/scripts/realsense-metadata-xenial-Ubuntu-hwe-4.8.0-58.63_16.04.1.patch b/scripts/realsense-metadata-xenial-Ubuntu-hwe-4.8.0-58.63_16.04.1.patch deleted file mode 100644 index 41371d228a..0000000000 --- a/scripts/realsense-metadata-xenial-Ubuntu-hwe-4.8.0-58.63_16.04.1.patch +++ /dev/null @@ -1,357 +0,0 @@ -From 6a837242353bf4f8d3ee19e6ff06983f345a7412 Mon Sep 17 00:00:00 2001 -From: Elad Zucker -From: icarpis -From: aangerma -Date: Thu, 30 Aug 2018 16:07:01 +0300 -Subject: [PATCH] added support for uvc metadata - -Signed-off-by: Evgeni Raikhel ---- - drivers/media/usb/uvc/uvc_driver.c | 268 ++++++++++++++++++++++++++++++++ - drivers/media/usb/uvc/uvc_video.c | 20 ++- - drivers/media/usb/uvc/uvcvideo.h | 55 ++++++- - 3 files changed, 142 insertions(+), 7 deletions(-) - -diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c -index 04bf350..5fd10f0 100644 ---- a/drivers/media/usb/uvc/uvc_driver.c -+++ b/drivers/media/usb/uvc/uvc_driver.c -@@ -2699,6 +2699,276 @@ static struct usb_device_id uvc_ids[] = { - .bInterfaceSubClass = 1, - .bInterfaceProtocol = 0, - .driver_info = UVC_QUIRK_FORCE_Y8 }, -+ /* Intel SR306 depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0aa3, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel SR300 depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0aa5, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D400/PSR depth camera*/ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad1, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D410/ASR depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad2, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D415/ASRC depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad3, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D430/AWG depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad4, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D450/AWGT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad5, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D400 IMU Module */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0af2, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D420/PWG depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0af6, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D420_MM/PWGT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0afe, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D410_MM/ASRT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0aff, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D400_MM/PSRT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b00, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D430_MM/AWGCT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b01, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D460/DS5U depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b03, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D435/AWGC depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b07, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D405 S depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b0c, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel L500 depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b0d, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D410/USB2 Depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b15, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D415/USB2 Depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b16, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D435/USB2 Depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b17, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D435i depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b3a, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel L515 Pre-PRQ*/ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b3d, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel SR305 Depth Camera*/ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b48, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D416 Depth Camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b49, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D430i depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b4b, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D465 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b4d, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D405 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b5b, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D455 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b5c, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel L515 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b64, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel L535 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b68, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, - /* Generic USB Video Class */ - { USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, UVC_PC_PROTOCOL_UNDEFINED) }, - { USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, UVC_PC_PROTOCOL_15) }, -diff --git a/drivers/media/usb/uvc/uvc_video.c b/drivers/media/usb/uvc/uvc_video.c -index f3c1c85..f69d749 100644 ---- a/drivers/media/usb/uvc/uvc_video.c -+++ b/drivers/media/usb/uvc/uvc_video.c -@@ -1228,8 +1229,13 @@ static void uvc_video_decode_bulk(struct urb *urb, struct uvc_streaming *stream, - do { - ret = uvc_video_decode_start(stream, buf, mem, len); - if (ret == -EAGAIN) -- buf = uvc_queue_next_buffer(&stream->queue, -- buf); -+ { -+ if (stream->dev->quirks & UVC_QUIRK_APPEND_UVC_HEADER) -+ { -+ uvc_video_decode_data(stream, buf, stream->bulk.header,256); -+ } -+ buf = uvc_queue_next_buffer(&stream->queue,buf); -+ } - } while (ret == -EAGAIN); - - /* If an error occurred skip the rest of the payload. */ -@@ -1261,9 +1267,13 @@ static void uvc_video_decode_bulk(struct urb *urb, struct uvc_streaming *stream, - if (!stream->bulk.skip_payload && buf != NULL) { - uvc_video_decode_end(stream, buf, stream->bulk.header, - stream->bulk.payload_size); -- if (buf->state == UVC_BUF_STATE_READY) -- buf = uvc_queue_next_buffer(&stream->queue, -- buf); -+ if (buf->state == UVC_BUF_STATE_READY) { -+ if (stream->dev->quirks & UVC_QUIRK_APPEND_UVC_HEADER) { -+ uvc_video_decode_data(stream, buf, stream->bulk.header, -+ stream->bulk.header_size); -+ } -+ buf = uvc_queue_next_buffer(&stream->queue, buf); -+ } - } - - stream->bulk.header_size = 0; -diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h -index 3d6cc62..e24b763 100644 ---- a/drivers/media/usb/uvc/uvcvideo.h -+++ b/drivers/media/usb/uvc/uvcvideo.h -@@ -143,8 +194,7 @@ - /* Maximum number of packets per URB. */ - #define UVC_MAX_PACKETS 32 - /* Maximum status buffer size in bytes of interrupt URB. */ --#define UVC_MAX_STATUS_SIZE 16 -- -+#define UVC_MAX_STATUS_SIZE 32 - #define UVC_CTRL_CONTROL_TIMEOUT 300 - #define UVC_CTRL_STREAMING_TIMEOUT 5000 - -@@ -164,6 +214,7 @@ - #define UVC_QUIRK_RESTRICT_FRAME_RATE 0x00000200 - #define UVC_QUIRK_RESTORE_CTRLS_ON_INIT 0x00000400 - #define UVC_QUIRK_FORCE_Y8 0x00000800 -+#define UVC_QUIRK_APPEND_UVC_HEADER 0x00001000 - - /* Format flags */ - #define UVC_FMT_FLAG_COMPRESSED 0x00000001 --- -2.7.4 - diff --git a/scripts/realsense-metadata-xenial-hwe-zesty.patch b/scripts/realsense-metadata-xenial-hwe-zesty.patch deleted file mode 100644 index 7b6c8c5450..0000000000 --- a/scripts/realsense-metadata-xenial-hwe-zesty.patch +++ /dev/null @@ -1,356 +0,0 @@ -From 6a837242353bf4f8d3ee19e6ff06983f345a7412 Mon Sep 17 00:00:00 2001 -From: Elad Zucker -From: icarpis -Date: Mon, 25 Sep 2017 11:36:52 +0300 -Subject: [PATCH] added support for uvc metadata - -Signed-off-by: Evgeni Raikhel ---- - drivers/media/usb/uvc/uvc_driver.c | 135 +++++++++++++++++++++++++++++++++++++ - drivers/media/usb/uvc/uvc_video.c | 19 ++++-- - drivers/media/usb/uvc/uvcvideo.h | 4 +- - 3 files changed, 142 insertions(+), 7 deletions(-) - -diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c -index 04bf350..5fd10f0 100644 ---- a/drivers/media/usb/uvc/uvc_driver.c -+++ b/drivers/media/usb/uvc/uvc_driver.c -@@ -2699,6 +2699,276 @@ static struct usb_device_id uvc_ids[] = { - .bInterfaceSubClass = 1, - .bInterfaceProtocol = 0, - .driver_info = UVC_QUIRK_FORCE_Y8 }, -+ /* Intel SR306 depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0aa3, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel SR300 depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0aa5, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D400/PSR depth camera*/ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad1, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D410/ASR depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad2, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D415/ASRC depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad3, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D430/AWG depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad4, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D450/AWGT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad5, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D400 IMU Module */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0af2, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D420/PWG depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0af6, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D420_MM/PWGT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0afe, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D410_MM/ASRT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0aff, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D400_MM/PSRT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b00, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D430_MM/AWGCT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b01, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D460/DS5U depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b03, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D435/AWGC depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b07, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D405 S depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b0c, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel L500 depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b0d, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D410/USB2 Depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b15, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D415/USB2 Depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b16, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D435/USB2 Depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b17, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D435i depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b3a, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel L515 Pre-PRQ */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b3d, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel SR305 Depth Camera*/ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b48, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D416 Depth Camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b49, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D430i depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b4b, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D465 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b4d, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D405 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b5b, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D455 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b5c, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel L515 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b64, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel L535 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b68, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, - /* Generic USB Video Class */ - { USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, UVC_PC_PROTOCOL_UNDEFINED) }, - { USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, UVC_PC_PROTOCOL_15) }, -diff --git a/drivers/media/usb/uvc/uvc_video.c b/drivers/media/usb/uvc/uvc_video.c -index f3c1c85..f69d749 100644 ---- a/drivers/media/usb/uvc/uvc_video.c -+++ b/drivers/media/usb/uvc/uvc_video.c -@@ -1228,8 +1228,13 @@ static void uvc_video_decode_bulk(struct urb *urb, struct uvc_streaming *stream, - do { - ret = uvc_video_decode_start(stream, buf, mem, len); - if (ret == -EAGAIN) -- buf = uvc_queue_next_buffer(&stream->queue, -- buf); -+ { -+ if (stream->dev->quirks & UVC_QUIRK_APPEND_UVC_HEADER) -+ { -+ uvc_video_decode_data(stream, buf, stream->bulk.header,256); -+ } -+ buf = uvc_queue_next_buffer(&stream->queue,buf); -+ } - } while (ret == -EAGAIN); - - /* If an error occurred skip the rest of the payload. */ -@@ -1261,9 +1266,13 @@ static void uvc_video_decode_bulk(struct urb *urb, struct uvc_streaming *stream, - if (!stream->bulk.skip_payload && buf != NULL) { - uvc_video_decode_end(stream, buf, stream->bulk.header, - stream->bulk.payload_size); -- if (buf->state == UVC_BUF_STATE_READY) -- buf = uvc_queue_next_buffer(&stream->queue, -- buf); -+ if (buf->state == UVC_BUF_STATE_READY) { -+ if (stream->dev->quirks & UVC_QUIRK_APPEND_UVC_HEADER) { -+ uvc_video_decode_data(stream, buf, stream->bulk.header, -+ stream->bulk.header_size); -+ } -+ buf = uvc_queue_next_buffer(&stream->queue, buf); -+ } - } - - stream->bulk.header_size = 0; -diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h -index 3d6cc62..e24b763 100644 ---- a/drivers/media/usb/uvc/uvcvideo.h -+++ b/drivers/media/usb/uvc/uvcvideo.h -@@ -155,8 +155,7 @@ - /* Maximum number of packets per URB. */ - #define UVC_MAX_PACKETS 32 - /* Maximum status buffer size in bytes of interrupt URB. */ --#define UVC_MAX_STATUS_SIZE 16 -- -+#define UVC_MAX_STATUS_SIZE 32 - #define UVC_CTRL_CONTROL_TIMEOUT 300 - #define UVC_CTRL_STREAMING_TIMEOUT 5000 - -@@ -176,6 +175,7 @@ - #define UVC_QUIRK_RESTRICT_FRAME_RATE 0x00000200 - #define UVC_QUIRK_RESTORE_CTRLS_ON_INIT 0x00000400 - #define UVC_QUIRK_FORCE_Y8 0x00000800 -+#define UVC_QUIRK_APPEND_UVC_HEADER 0x00001000 - - /* Format flags */ - #define UVC_FMT_FLAG_COMPRESSED 0x00000001 --- -2.7.4 - diff --git a/scripts/realsense-metadata-xenial-hwe.patch b/scripts/realsense-metadata-xenial-hwe.patch deleted file mode 100644 index 92df48b67f..0000000000 --- a/scripts/realsense-metadata-xenial-hwe.patch +++ /dev/null @@ -1,357 +0,0 @@ -From e94e55724236aabf8b8f9e0e140f8fa98ffd0315 Mon Sep 17 00:00:00 2001 -From: Evgeni -From: Elad Zucker -From: icarpis -Date: Sun, 13 May 2018 10:44:10 -0400 -Subject: [PATCH] Enabling UVC Metadata attributes with Ubuntu 18.04 -(Bionic Beaver) and Kernel version 4.15 - -Signed-off-by: Evgeni Raikhel - ---- - drivers/media/usb/uvc/uvc_driver.c | 144 +++++++++++++++++++++++++++++ - drivers/media/usb/uvc/uvc_video.c | 18 +++- - drivers/media/usb/uvc/uvcvideo.h | 3 +- - 3 files changed, 151 insertions(+), 5 deletions(-) - -diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c -index f50a2b148..534f49135 100644 ---- a/drivers/media/usb/uvc/uvc_driver.c -+++ b/drivers/media/usb/uvc/uvc_driver.c -@@ -2838,6 +2838,276 @@ static const struct usb_device_id uvc_ids[] = { - .bInterfaceSubClass = 1, - .bInterfaceProtocol = 0, - .driver_info = UVC_QUIRK_FORCE_Y8 }, -+ /* Intel SR306 depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0aa3, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel SR300 depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0aa5, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D400/PSR depth camera*/ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad1, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D410/ASR depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad2, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D415/ASRC depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad3, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D430/AWG depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad4, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D450/AWGT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad5, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D400 IMU Module */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0af2, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D420/PWG depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0af6, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D420_MM/PWGT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0afe, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D410_MM/ASRT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0aff, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D400_MM/PSRT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b00, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D430_MM/AWGCT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b01, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D460/DS5U depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b03, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D435/AWGC depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b07, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D405 S depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b0c, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel L500 depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b0d, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D410/USB2 Depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b15, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D415/USB2 Depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b16, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D435/USB2 Depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b17, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D435i depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b3a, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel L515 Pre-PRQ */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b3d, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel SR305 Depth Camera*/ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b48, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D416 Depth Camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b49, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D430i depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b4b, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D465 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b4d, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D405 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b5b, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D455 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b5c, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel L515 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b64, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel L535 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b68, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, - /* Generic USB Video Class */ - { USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, UVC_PC_PROTOCOL_UNDEFINED) }, - { USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, UVC_PC_PROTOCOL_15) }, -diff --git a/drivers/media/usb/uvc/uvc_video.c b/drivers/media/usb/uvc/uvc_video.c -index fb86d6af3..462dffb00 100644 ---- a/drivers/media/usb/uvc/uvc_video.c -+++ b/drivers/media/usb/uvc/uvc_video.c -@@ -1235,8 +1235,13 @@ static void uvc_video_decode_bulk(struct urb *urb, struct uvc_streaming *stream, - do { - ret = uvc_video_decode_start(stream, buf, mem, len); - if (ret == -EAGAIN) -- buf = uvc_queue_next_buffer(&stream->queue, -- buf); -+ { -+ if (stream->dev->quirks & UVC_QUIRK_APPEND_UVC_HEADER) -+ { -+ uvc_video_decode_data(stream, buf, stream->bulk.header,256); -+ } -+ buf = uvc_queue_next_buffer(&stream->queue,buf); -+ } - } while (ret == -EAGAIN); - - /* If an error occurred skip the rest of the payload. */ -@@ -1268,8 +1273,13 @@ static void uvc_video_decode_bulk(struct urb *urb, struct uvc_streaming *stream, - if (!stream->bulk.skip_payload && buf != NULL) { - uvc_video_decode_end(stream, buf, stream->bulk.header, - stream->bulk.payload_size); -- if (buf->state == UVC_BUF_STATE_READY) -- uvc_queue_next_buffer(&stream->queue, buf); -+ if (buf->state == UVC_BUF_STATE_READY) { -+ if (stream->dev->quirks & UVC_QUIRK_APPEND_UVC_HEADER) { -+ uvc_video_decode_data(stream, buf, stream->bulk.header, -+ stream->bulk.header_size); -+ } -+ buf = uvc_queue_next_buffer(&stream->queue, buf); -+ } - } - - stream->bulk.header_size = 0; -diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h -index 8c99aabef..15dd0cf8a 100644 ---- a/drivers/media/usb/uvc/uvcvideo.h -+++ b/drivers/media/usb/uvc/uvcvideo.h -@@ -205,7 +205,7 @@ - /* Maximum number of packets per URB. */ - #define UVC_MAX_PACKETS 32 - /* Maximum status buffer size in bytes of interrupt URB. */ --#define UVC_MAX_STATUS_SIZE 16 -+#define UVC_MAX_STATUS_SIZE 32 - - #define UVC_CTRL_CONTROL_TIMEOUT 500 - #define UVC_CTRL_STREAMING_TIMEOUT 5000 -@@ -226,6 +226,7 @@ - #define UVC_QUIRK_RESTRICT_FRAME_RATE 0x00000200 - #define UVC_QUIRK_RESTORE_CTRLS_ON_INIT 0x00000400 - #define UVC_QUIRK_FORCE_Y8 0x00000800 -+#define UVC_QUIRK_APPEND_UVC_HEADER 0x00001000 - - /* Format flags */ - #define UVC_FMT_FLAG_COMPRESSED 0x00000001 --- -2.17.0 - diff --git a/scripts/realsense-metadata-xenial-master.patch b/scripts/realsense-metadata-xenial-master.patch deleted file mode 100644 index 7b6c8c5450..0000000000 --- a/scripts/realsense-metadata-xenial-master.patch +++ /dev/null @@ -1,356 +0,0 @@ -From 6a837242353bf4f8d3ee19e6ff06983f345a7412 Mon Sep 17 00:00:00 2001 -From: Elad Zucker -From: icarpis -Date: Mon, 25 Sep 2017 11:36:52 +0300 -Subject: [PATCH] added support for uvc metadata - -Signed-off-by: Evgeni Raikhel ---- - drivers/media/usb/uvc/uvc_driver.c | 135 +++++++++++++++++++++++++++++++++++++ - drivers/media/usb/uvc/uvc_video.c | 19 ++++-- - drivers/media/usb/uvc/uvcvideo.h | 4 +- - 3 files changed, 142 insertions(+), 7 deletions(-) - -diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c -index 04bf350..5fd10f0 100644 ---- a/drivers/media/usb/uvc/uvc_driver.c -+++ b/drivers/media/usb/uvc/uvc_driver.c -@@ -2699,6 +2699,276 @@ static struct usb_device_id uvc_ids[] = { - .bInterfaceSubClass = 1, - .bInterfaceProtocol = 0, - .driver_info = UVC_QUIRK_FORCE_Y8 }, -+ /* Intel SR306 depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0aa3, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel SR300 depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0aa5, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D400/PSR depth camera*/ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad1, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D410/ASR depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad2, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D415/ASRC depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad3, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D430/AWG depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad4, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D450/AWGT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad5, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D400 IMU Module */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0af2, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D420/PWG depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0af6, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D420_MM/PWGT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0afe, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D410_MM/ASRT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0aff, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D400_MM/PSRT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b00, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D430_MM/AWGCT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b01, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D460/DS5U depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b03, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D435/AWGC depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b07, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D405 S depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b0c, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel L500 depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b0d, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D410/USB2 Depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b15, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D415/USB2 Depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b16, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D435/USB2 Depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b17, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D435i depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b3a, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel L515 Pre-PRQ */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b3d, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel SR305 Depth Camera*/ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b48, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D416 Depth Camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b49, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D430i depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b4b, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D465 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b4d, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D405 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b5b, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D455 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b5c, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel L515 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b64, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel L535 */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b68, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, - /* Generic USB Video Class */ - { USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, UVC_PC_PROTOCOL_UNDEFINED) }, - { USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, UVC_PC_PROTOCOL_15) }, -diff --git a/drivers/media/usb/uvc/uvc_video.c b/drivers/media/usb/uvc/uvc_video.c -index f3c1c85..f69d749 100644 ---- a/drivers/media/usb/uvc/uvc_video.c -+++ b/drivers/media/usb/uvc/uvc_video.c -@@ -1228,8 +1228,13 @@ static void uvc_video_decode_bulk(struct urb *urb, struct uvc_streaming *stream, - do { - ret = uvc_video_decode_start(stream, buf, mem, len); - if (ret == -EAGAIN) -- buf = uvc_queue_next_buffer(&stream->queue, -- buf); -+ { -+ if (stream->dev->quirks & UVC_QUIRK_APPEND_UVC_HEADER) -+ { -+ uvc_video_decode_data(stream, buf, stream->bulk.header,256); -+ } -+ buf = uvc_queue_next_buffer(&stream->queue,buf); -+ } - } while (ret == -EAGAIN); - - /* If an error occurred skip the rest of the payload. */ -@@ -1261,9 +1266,13 @@ static void uvc_video_decode_bulk(struct urb *urb, struct uvc_streaming *stream, - if (!stream->bulk.skip_payload && buf != NULL) { - uvc_video_decode_end(stream, buf, stream->bulk.header, - stream->bulk.payload_size); -- if (buf->state == UVC_BUF_STATE_READY) -- buf = uvc_queue_next_buffer(&stream->queue, -- buf); -+ if (buf->state == UVC_BUF_STATE_READY) { -+ if (stream->dev->quirks & UVC_QUIRK_APPEND_UVC_HEADER) { -+ uvc_video_decode_data(stream, buf, stream->bulk.header, -+ stream->bulk.header_size); -+ } -+ buf = uvc_queue_next_buffer(&stream->queue, buf); -+ } - } - - stream->bulk.header_size = 0; -diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h -index 3d6cc62..e24b763 100644 ---- a/drivers/media/usb/uvc/uvcvideo.h -+++ b/drivers/media/usb/uvc/uvcvideo.h -@@ -155,8 +155,7 @@ - /* Maximum number of packets per URB. */ - #define UVC_MAX_PACKETS 32 - /* Maximum status buffer size in bytes of interrupt URB. */ --#define UVC_MAX_STATUS_SIZE 16 -- -+#define UVC_MAX_STATUS_SIZE 32 - #define UVC_CTRL_CONTROL_TIMEOUT 300 - #define UVC_CTRL_STREAMING_TIMEOUT 5000 - -@@ -176,6 +175,7 @@ - #define UVC_QUIRK_RESTRICT_FRAME_RATE 0x00000200 - #define UVC_QUIRK_RESTORE_CTRLS_ON_INIT 0x00000400 - #define UVC_QUIRK_FORCE_Y8 0x00000800 -+#define UVC_QUIRK_APPEND_UVC_HEADER 0x00001000 - - /* Format flags */ - #define UVC_FMT_FLAG_COMPRESSED 0x00000001 --- -2.7.4 -