aboutsummarylogtreecommitdiffstats
path: root/0001-Add-support-for-BUS_VIRTUAL.patch
blob: 58c89c7f9d5160df0793ac385cbf6c080011f040 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
From 90a64d7efe111a10b623e179b040bdf5c5e1d406 Mon Sep 17 00:00:00 2001
From: Dorian Stoll <dorian.stoll@tmsp.io>
Date: Sat, 27 Jun 2020 18:21:11 +0200
Subject: [PATCH 01/16] Add support for BUS_VIRTUAL

This is needed to support IPTS devices through the iptsd userspace
daemon. It exposes the touchscreen / stylus as uinput, since the parsing
of raw IPTS data needs to happen in userspace.

Because these devices are not backed by an actual bus, they are created
as BUS_VIRTUAL.

Signed-off-by: Dorian Stoll <dorian.stoll@tmsp.io>
---
 libwacom/libwacom-database.c | 4 ++++
 libwacom/libwacom.c          | 5 +++++
 libwacom/libwacom.h          | 1 +
 test/test-tablet-validity.c  | 1 +
 test/test_data_files.py      | 1 +
 tools/debug-device.c         | 1 +
 6 files changed, 13 insertions(+)

diff --git a/libwacom/libwacom-database.c b/libwacom/libwacom-database.c
index 0dfb5f0..0f1b180 100644
--- a/libwacom/libwacom-database.c
+++ b/libwacom/libwacom-database.c
@@ -130,6 +130,8 @@ bus_from_str (const char *str)
 		return WBUSTYPE_BLUETOOTH;
 	if (g_str_equal(str, "i2c"))
 		return WBUSTYPE_I2C;
+	if (g_str_equal(str, "virt"))
+		return WBUSTYPE_VIRTUAL;
 	return WBUSTYPE_UNKNOWN;
 }
 
@@ -148,6 +150,8 @@ bus_to_str (WacomBusType bus)
 		return "bluetooth";
 	case WBUSTYPE_I2C:
 		return "i2c";
+	case WBUSTYPE_VIRTUAL:
+		return "virt";
 	}
 	g_assert_not_reached ();
 }
diff --git a/libwacom/libwacom.c b/libwacom/libwacom.c
index 349608d..b6d1f4c 100644
--- a/libwacom/libwacom.c
+++ b/libwacom/libwacom.c
@@ -149,6 +149,10 @@ get_bus_vid_pid (GUdevDevice  *device,
 		*bus = WBUSTYPE_I2C;
 		retval = TRUE;
 		break;
+	case 6:
+		*bus = WBUSTYPE_VIRTUAL;
+		retval = TRUE;
+		break;
 	}
 
 out:
@@ -1022,6 +1026,7 @@ static void print_match(int fd, const WacomMatch *match)
 		case WBUSTYPE_USB:		bus_name = "usb";	break;
 		case WBUSTYPE_SERIAL:		bus_name = "serial";	break;
 		case WBUSTYPE_I2C:		bus_name = "i2c";	break;
+		case WBUSTYPE_VIRTUAL:		bus_name = "virt";	break;
 		case WBUSTYPE_UNKNOWN:		bus_name = "unknown";	break;
 		default:			g_assert_not_reached(); break;
 	}
diff --git a/libwacom/libwacom.h b/libwacom/libwacom.h
index c0d380c..a4fbb17 100644
--- a/libwacom/libwacom.h
+++ b/libwacom/libwacom.h
@@ -154,6 +154,7 @@ typedef enum {
 	WBUSTYPE_SERIAL,	/**< Serial tablet */
 	WBUSTYPE_BLUETOOTH,	/**< Bluetooth tablet */
 	WBUSTYPE_I2C,		/**< I2C tablet */
+	WBUSTYPE_VIRTUAL,	/**< Virtual (uinput) tablet */
 } WacomBusType;
 
 /**
diff --git a/test/test-tablet-validity.c b/test/test-tablet-validity.c
index 69d34c8..964fce0 100644
--- a/test/test-tablet-validity.c
+++ b/test/test-tablet-validity.c
@@ -177,6 +177,7 @@ assert_vidpid(WacomBusType bus, int vid, int pid)
 			break;
 		case WBUSTYPE_BLUETOOTH:
 		case WBUSTYPE_I2C:
+		case WBUSTYPE_VIRTUAL:
 			g_assert_cmpint(vid, >, 0);
 			g_assert_cmpint(pid, >, 0);
 			break;
diff --git a/test/test_data_files.py b/test/test_data_files.py
index 9385b1c..f76c3f3 100755
--- a/test/test_data_files.py
+++ b/test/test_data_files.py
@@ -47,6 +47,7 @@ def test_device_match(tabletfile):
             "bluetooth",
             "i2c",
             "serial",
+            "virt",
         ], f"{tabletfile}: unknown bus type"
         assert re.match(
             "[0-9a-f]{4}", vid
diff --git a/tools/debug-device.c b/tools/debug-device.c
index 2cdac20..51ec53e 100644
--- a/tools/debug-device.c
+++ b/tools/debug-device.c
@@ -122,6 +122,7 @@ handle_device(WacomDeviceDatabase *db, const char *path)
 			case WBUSTYPE_SERIAL: busstr = "SERIAL"; break;
 			case WBUSTYPE_BLUETOOTH: busstr = "BLUETOOTH"; break;
 			case WBUSTYPE_I2C: busstr = "I2C"; break;
+			case WBUSTYPE_VIRTUAL: busstr = "VIRTUAL"; break;
 		}
 		func(libwacom_get_bustype, "%s", busstr);
 	}
-- 
2.45.1