summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBastien Nocera <hadess@hadess.net>2021-10-26 12:17:27 +0200
committerBastien Nocera <hadess@hadess.net>2021-10-27 00:14:41 +0200
commite78e11d8c59727aee2e6f03ce413ee73193e1937 (patch)
tree41ceddb27aa0747a591abeb96d85c14a1bfcc122
parenthwdb: Allow console users access to media* nodes (diff)
downloadsystemd-e78e11d8c59727aee2e6f03ce413ee73193e1937.tar.xz
systemd-e78e11d8c59727aee2e6f03ce413ee73193e1937.zip
hwdb: Tag IR cameras as such
So that front-ends can ignore them if they wish to. See https://gitlab.gnome.org/GNOME/cheese/-/merge_requests/4
-rw-r--r--hwdb.d/70-cameras.hwdb25
-rw-r--r--hwdb.d/meson.build1
-rwxr-xr-xhwdb.d/parse_hwdb.py3
-rw-r--r--rules.d/70-camera.rules9
-rw-r--r--rules.d/meson.build1
5 files changed, 39 insertions, 0 deletions
diff --git a/hwdb.d/70-cameras.hwdb b/hwdb.d/70-cameras.hwdb
new file mode 100644
index 0000000000..3a84792a18
--- /dev/null
+++ b/hwdb.d/70-cameras.hwdb
@@ -0,0 +1,25 @@
+# This file is part of systemd.
+#
+# Database for webcam and camera quirks.
+#
+# Permitted keys:
+# Specify if a camera is an infra-red camera
+# ID_INFRARED_CAMERA=1|0
+# Specify if a camera is front or rear facing
+# ID_CAMERA_DIRECTION=front|rear
+
+# Generic
+camera:usb:v*p*:name:*IR Camera*:
+ ID_INFRARED_CAMERA=1
+
+###########################################################
+# Philips
+###########################################################
+
+# Philips 346p1crh display
+camera:usb:v04f2pb612:name:*USB2.0 FHD UVC WebCam* IR Camer*:
+ ID_INFRARED_CAMERA=1
+ ID_CAMERA_DIRECTION=front
+
+camera:usb:v04f2pb612:name:*USB2.0 FHD UVC WebCam* USB2.0 F*:
+ ID_CAMERA_DIRECTION=front
diff --git a/hwdb.d/meson.build b/hwdb.d/meson.build
index fc6ee7c649..8ff044131c 100644
--- a/hwdb.d/meson.build
+++ b/hwdb.d/meson.build
@@ -28,6 +28,7 @@ hwdb_files_test = files('''
60-seat.hwdb
60-sensor.hwdb
70-analyzers.hwdb
+ 70-cameras.hwdb
70-joystick.hwdb
70-mouse.hwdb
70-pointingstick.hwdb
diff --git a/hwdb.d/parse_hwdb.py b/hwdb.d/parse_hwdb.py
index f385e52628..941adf28f7 100755
--- a/hwdb.d/parse_hwdb.py
+++ b/hwdb.d/parse_hwdb.py
@@ -74,6 +74,7 @@ TYPES = {'mouse': ('usb', 'bluetooth', 'ps2', '*'),
'keyboard': ('name', ),
'sensor': ('modalias', ),
'ieee1394-unit-function' : ('node', ),
+ 'camera': ('usb'),
}
# Patterns that are used to set general properties on a device
@@ -167,6 +168,8 @@ def property_grammar():
('ID_VENDOR_FROM_DATABASE', name_literal),
('ID_MODEL_FROM_DATABASE', name_literal),
('ID_TAG_MASTER_OF_SEAT', Literal('1')),
+ ('ID_INFRARED_CAMERA', Or((Literal('0'), Literal('1')))),
+ ('ID_CAMERA_DIRECTION', Or(('front', 'rear'))),
)
fixed_props = [Literal(name)('NAME') - Suppress('=') - val('VALUE')
for name, val in props]
diff --git a/rules.d/70-camera.rules b/rules.d/70-camera.rules
new file mode 100644
index 0000000000..b1053f2cbb
--- /dev/null
+++ b/rules.d/70-camera.rules
@@ -0,0 +1,9 @@
+# do not edit this file, it will be overwritten on update
+
+ACTION=="remove", GOTO="camera_end"
+
+SUBSYSTEM=="video4linux", ENV{ID_BUS}="usb" , \
+ IMPORT{builtin}="hwdb 'camera:usb:v$env{ID_VENDOR_ID}p$env{ID_MODEL_ID}:name:$attr{name}:'", \
+ GOTO="camera_end"
+
+LABEL="camera_end"
diff --git a/rules.d/meson.build b/rules.d/meson.build
index 598649a562..05c55a6b41 100644
--- a/rules.d/meson.build
+++ b/rules.d/meson.build
@@ -19,6 +19,7 @@ rules = files('''
60-persistent-v4l.rules
60-sensor.rules
60-serial.rules
+ 70-camera.rules
70-joystick.rules
70-mouse.rules
70-touchpad.rules