From 757ad00b50221354b0d43013a6fb385491b0d0fe Mon Sep 17 00:00:00 2001 From: Toshaan Bharvani Date: Wed, 24 Jan 2024 14:20:33 +0100 Subject: [PATCH] initial package creation Signed-off-by: Toshaan Bharvani --- SOURCES/60-intel-ipu6.rules | 24 +++++ SOURCES/intel_ipu6_isys.conf | 3 + SOURCES/v4l2-relayd-adl | 15 ++++ SOURCES/v4l2-relayd-tgl | 15 ++++ SPECS/ipu6-camera-hal.spec | 168 +++++++++++++++++++++++++++++++++++ 5 files changed, 225 insertions(+) create mode 100644 SOURCES/60-intel-ipu6.rules create mode 100644 SOURCES/intel_ipu6_isys.conf create mode 100644 SOURCES/v4l2-relayd-adl create mode 100644 SOURCES/v4l2-relayd-tgl create mode 100644 SPECS/ipu6-camera-hal.spec diff --git a/SOURCES/60-intel-ipu6.rules b/SOURCES/60-intel-ipu6.rules new file mode 100644 index 0000000..123a415 --- /dev/null +++ b/SOURCES/60-intel-ipu6.rules @@ -0,0 +1,24 @@ +# Tiger Lake +SUBSYSTEM=="pci", ATTR{vendor}=="0x8086", ATTR{device}=="0x9a19", GOTO="ipu6" +# Alder Lake-N +SUBSYSTEM=="pci", ATTR{vendor}=="0x8086", ATTR{device}=="0x465d", GOTO="ipu6ep" +# Alder Lake-P +SUBSYSTEM=="pci", ATTR{vendor}=="0x8086", ATTR{device}=="0x462e", GOTO="ipu6ep" +# Raptor Lake-P +SUBSYSTEM=="pci", ATTR{vendor}=="0x8086", ATTR{device}=="0xa75d", GOTO="ipu6ep" + +GOTO="ipu6_end" + +LABEL="ipu6" +RUN+="/bin/ln -sf /usr/lib64/ipu6/libcamhal.so /run/libcamhal.so" +RUN+="/bin/ln -sf /usr/share/defaults/etc/ipu6/v4l2-relayd /run/v4l2-relayd" +GOTO="ipu6_end" + +LABEL="ipu6ep" +RUN+="/bin/ln -sf /usr/lib64/ipu6ep/libcamhal.so /run/libcamhal.so" +RUN+="/bin/ln -sf /usr/share/defaults/etc/ipu6ep/v4l2-relayd /run/v4l2-relayd" +GOTO="ipu6_end" + +LABEL="ipu6_end" + +KERNEL=="ipu-psys0", TAG+="uaccess" diff --git a/SOURCES/intel_ipu6_isys.conf b/SOURCES/intel_ipu6_isys.conf new file mode 100644 index 0000000..0ea144d --- /dev/null +++ b/SOURCES/intel_ipu6_isys.conf @@ -0,0 +1,3 @@ +# Move the special isys /dev/video# node out of the way of +# normal v4l2 devices such as v4l2loopback +options intel_ipu6_isys video_nr=8,9,10,11,12,13,14,15 diff --git a/SOURCES/v4l2-relayd-adl b/SOURCES/v4l2-relayd-adl new file mode 100644 index 0000000..97aea20 --- /dev/null +++ b/SOURCES/v4l2-relayd-adl @@ -0,0 +1,15 @@ +# GStreamer source element name: +VIDEOSRC="icamerasrc" +#SPLASHSRC="filesrc location=/.../splash.png ! pngdec ! imagefreeze num-buffers=4 ! videoscale ! videoconvert" + +# Output format, width, height, and frame rate: +FORMAT=NV12 +WIDTH=1280 +HEIGHT=720 +FRAMERATE=30/1 + +# Virtual video device name: +CARD_LABEL="Intel MIPI Camera" + +# Extra options to pass to v4l2-relayd: +#EXTRA_OPTS=-d diff --git a/SOURCES/v4l2-relayd-tgl b/SOURCES/v4l2-relayd-tgl new file mode 100644 index 0000000..4453b45 --- /dev/null +++ b/SOURCES/v4l2-relayd-tgl @@ -0,0 +1,15 @@ +# GStreamer source element name: +VIDEOSRC="icamerasrc" +#SPLASHSRC="filesrc location=/.../splash.png ! pngdec ! imagefreeze num-buffers=4 ! videoscale ! videoconvert" + +# Output format, width, height, and frame rate: +FORMAT=YUY2 +WIDTH=1280 +HEIGHT=720 +FRAMERATE=30/1 + +# Virtual video device name: +CARD_LABEL="Intel MIPI Camera" + +# Extra options to pass to v4l2-relayd: +#EXTRA_OPTS=-d diff --git a/SPECS/ipu6-camera-hal.spec b/SPECS/ipu6-camera-hal.spec new file mode 100644 index 0000000..19053ea --- /dev/null +++ b/SPECS/ipu6-camera-hal.spec @@ -0,0 +1,168 @@ +%global commit 884b81aae0ea19a974eb8ccdaeef93038136bdd4 +%global commitdate 20230208 +%global shortcommit %(c=%{commit}; echo ${c:0:7}) + +# We want to specify multiple separate build-dirs for the different variants +%global __cmake_in_source_build 1 + +Name: ipu6-camera-hal +Summary: Hardware abstraction layer for Intel IPU6 +URL: https://github.com/intel/ipu6-camera-hal +Version: 0.0 +Release: 16.%{commitdate}git%{shortcommit}%{?dist} +License: Apache-2.0 + +Source0: https://github.com/intel/%{name}/archive/%{commit}/%{name}-%{shortcommit}.tar.gz +Source1: 60-intel-ipu6.rules +Source2: v4l2-relayd-adl +Source3: v4l2-relayd-tgl +Source4: intel_ipu6_isys.conf + +# Patches + +BuildRequires: systemd-rpm-macros +BuildRequires: ipu6-camera-bins-devel +BuildRequires: cmake +BuildRequires: gcc +BuildRequires: g++ +BuildRequires: expat-devel + +ExclusiveArch: x86_64 + +Requires: ipu6-camera-bins + +%description +ipu6-camera-hal provides the basic hardware access APIs for IPU6. + +%package devel +Summary: IPU6 header files for HAL +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: ipu6-camera-bins-devel + +%description devel +This provides the necessary header files for IPU6 HAL development. + +%prep +%autosetup -p1 -n %{name}-%{commit} + + +%build +for i in ipu6 ipu6ep; do + export PKG_CONFIG_PATH=%{_libdir}/$i/pkgconfig/ + export LDFLAGS="$RPM_LD_FLAGS -Wl,-rpath=%{_libdir}/$i" + sed -i.orig "s|/usr/share/defaults/etc/camera/|/usr/share/defaults/etc/$i/|g" \ + src/platformdata/PlatformData.h + mkdir $i && pushd $i + %cmake -DCMAKE_BUILD_TYPE=Release -DIPU_VER=$i \ + -DENABLE_VIRTUAL_IPU_PIPE=OFF -DUSE_PG_LITE_PIPE=ON \ + -DUSE_STATIC_GRAPH=OFF .. + %make_build + popd + mv src/platformdata/PlatformData.h.orig src/platformdata/PlatformData.h +done + + +%install +for i in ipu6 ipu6ep; do + pushd $i + %make_install + mkdir %{buildroot}%{_libdir}/$i + mv %{buildroot}%{_libdir}/libcamhal.so %{buildroot}%{_libdir}/$i/ + mv %{buildroot}%{_datadir}/defaults/etc/camera %{buildroot}%{_datadir}/defaults/etc/$i + popd +done + +# We don't want static libs +rm %{buildroot}%{_libdir}/libcamhal.a + +# symbolic link + udev is used to resolve the library name conflict. +ln -sf %{_rundir}/libcamhal.so %{buildroot}%{_libdir}/libcamhal.so +install -p -m 0644 -D %{SOURCE1} %{buildroot}%{_udevrulesdir}/60-intel-ipu6.rules + +# Make sure libcamhal.so can be found when building code on systems without an IPU6 +sed -i -e "s|}/lib64|}/lib64/ipu6|" %{buildroot}%{_libdir}/pkgconfig/libcamhal.pc + +# v4l2-relayd configuration examples +install -p -D -m 0644 %{SOURCE2} %{buildroot}%{_datadir}/defaults/etc/ipu6ep/v4l2-relayd +install -p -D -m 0644 %{SOURCE3} %{buildroot}%{_datadir}/defaults/etc/ipu6/v4l2-relayd + +# Make kmod-intel-ipu6 use /dev/video7 leaving /dev/video0 for loopback +install -p -D -m 0644 %{SOURCE4} %{buildroot}%{_modprobedir}/intel_ipu6_isys.conf + + +%post +# skip triggering if udevd isn't even accessible, e.g. containers or +# rpm-ostree-based systems +if [ -S /run/udev/control ]; then + /usr/bin/udevadm control --reload + /usr/bin/udevadm trigger /sys/devices/pci0000:00/0000:00:05.0 +fi + + +%files +%license LICENSE +%{_libdir}/*/libcamhal.so +%{_libdir}/libcamhal.so +%{_datadir}/defaults/etc/* +%{_modprobedir}/intel_ipu6_isys.conf +%{_udevrulesdir}/60-intel-ipu6.rules + + +%files devel +%{_includedir}/libcamhal +%{_libdir}/pkgconfig/libcamhal.pc + + +%changelog +* Tue Oct 10 2023 Hans de Goede - 0.0-16.20230208git884b81a +- Update /lib/modprobe.d/intel_ipu6_isys.conf for newer versions of + intel-ipu6-kmod creating up to 8 /dev/video# nodes + +* Tue Aug 08 2023 Kate Hsuan - 0.0-15.20230208git884b81a +- Updated to commit 884b81aae0ea19a974eb8ccdaeef93038136bdd4 + +* Thu Aug 03 2023 RPM Fusion Release Engineering - 0.0-14.20221112gitcc0b859 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Thu Jun 8 2023 Hans de Goede - 0.0-13.20221112gitcc0b859 +- Add Raptor Lake IPU6EP PCI-id to 60-intel-ipu6.rules + +* Tue May 30 2023 Kate Hsuan - 0.0-12.20221112gitcc0b859 +- Fix 11 and skip udev command for container and rpm-ostree environments + +* Mon May 29 2023 Kate Hsuan - 0.0-11.20221112gitcc0b859 +- Add a sysfs path check for rpm-ostree since udev is unable to access in a container + +* Mon May 15 2023 Hans de Goede - 0.0-10.20221112gitcc0b859 +- Add intel_ipu6_isys.conf to make ipu6-driver not clobber /dev/video0 + +* Mon May 08 2023 Kate Hsuan - 0.0-9.20221112gitcc0b859 +- Fix settings for Tiger lake CPU + +* Wed Mar 22 2023 Kate Hsuan - 0.0-8.20221112gitcc0b859 +- Included v4l2-relayd configuration examples + +* Mon Mar 20 2023 Kate Hsuan - 0.0-7.20221112gitcc0b859 +- udev rules for supporting v4l2-relayd + +* Wed Feb 15 2023 Kate Hsuan - 0.0-6.20221112gitcc0b859 +- Allow ordinary users to access the camera + +* Fri Feb 3 2023 Kate Hsuan - 0.0-5.20221112gitcc0b859 +- Patch path settings for the configuration files +- Remove udev workaround +- Fix rpmlint warnings + +* Tue Jan 31 2023 Kate Hsuan - 0.0-4.20221112gitcc0b859 +- Remove udev scripts and the simplified rules are used +- Fix and patch gcc13 compile issues + +* Tue Jan 17 2023 Kate Hsuan - 0.0-3.20221112gitcc0b859 +- Add symbolic link for camera configuration files + +* Fri Nov 25 2022 Kate Hsuan - 0.0-2.20221112gitcc0b859 +- push udev rules +- format and style fixes + +* Fri Nov 25 2022 Kate Hsuan - 0.0-1.20221112gitcc0b859 +- First commit