[bootlin/training-materials updates] master: kernel: remove deprecated input_polled_dev subsystem (58e6bc3d)

Alexandre Belloni alexandre.belloni at bootlin.com
Wed Nov 18 23:40:37 CET 2020


Repository : https://github.com/bootlin/training-materials
On branch  : master
Link       : https://github.com/bootlin/training-materials/commit/58e6bc3d1c3de8bb324348d17e59f43e53b52585

>---------------------------------------------------------------

commit 58e6bc3d1c3de8bb324348d17e59f43e53b52585
Author: Alexandre Belloni <alexandre.belloni at bootlin.com>
Date:   Wed Nov 18 23:40:37 2020 +0100

    kernel: remove deprecated input_polled_dev subsystem
    
    Signed-off-by: Alexandre Belloni <alexandre.belloni at bootlin.com>


>---------------------------------------------------------------

58e6bc3d1c3de8bb324348d17e59f43e53b52585
 labs/kernel-i2c-input-interface/device-pointers.c  |   2 +-
 .../input-device-attributes.c                      |   1 -
 .../input-notification.c                           |   8 +-
 .../kernel-i2c-input-interface.tex                 |  33 +-
 slides/kernel-input/input-subsystem-diagram.dia    | 733 +++++++++++----------
 slides/kernel-input/kernel-input.tex               |  50 +-
 6 files changed, 396 insertions(+), 431 deletions(-)

diff --git a/labs/kernel-i2c-input-interface/device-pointers.c b/labs/kernel-i2c-input-interface/device-pointers.c
index 46f0d9d7..658c0a7b 100644
--- a/labs/kernel-i2c-input-interface/device-pointers.c
+++ b/labs/kernel-i2c-input-interface/device-pointers.c
@@ -1,2 +1,2 @@
 nunchuk->i2c_client = client;
-polled_input->private = nunchuk;
+input_set_drvdata(input, nunchuk);
diff --git a/labs/kernel-i2c-input-interface/input-device-attributes.c b/labs/kernel-i2c-input-interface/input-device-attributes.c
index 87257c08..8dea4e1e 100644
--- a/labs/kernel-i2c-input-interface/input-device-attributes.c
+++ b/labs/kernel-i2c-input-interface/input-device-attributes.c
@@ -1,4 +1,3 @@
-input = polled_input->input;
 input->name = "Wii Nunchuk";
 input->id.bustype = BUS_I2C;
 
diff --git a/labs/kernel-i2c-input-interface/input-notification.c b/labs/kernel-i2c-input-interface/input-notification.c
index e11de43f..ffcccfa6 100644
--- a/labs/kernel-i2c-input-interface/input-notification.c
+++ b/labs/kernel-i2c-input-interface/input-notification.c
@@ -1,5 +1,3 @@
-input_event(polled_input->input,
-	    EV_KEY, BTN_Z, zpressed);
-input_event(polled_input->input,
-	    EV_KEY, BTN_C, cpressed);
-input_sync(polled_input->input);
+input_event(input, EV_KEY, BTN_Z, zpressed);
+input_event(input, EV_KEY, BTN_C, cpressed);
+input_sync(input);
diff --git a/labs/kernel-i2c-input-interface/kernel-i2c-input-interface.tex b/labs/kernel-i2c-input-interface/kernel-i2c-input-interface.tex
index ba9ddf5e..ee2f463b 100644
--- a/labs/kernel-i2c-input-interface/kernel-i2c-input-interface.tex
+++ b/labs/kernel-i2c-input-interface/kernel-i2c-input-interface.tex
@@ -20,10 +20,10 @@ its state has changed. Therefore, the only way to access device data
 and detect changes is to regularly poll its registers, using the input
 polling API described in the lectures.
 
-Rebuild your kernel with static support for polled input device
-(\kconfigval{CONFIG_INPUT_POLLDEV}{y}) and for event interface
-(\kconfig{CONFIG_INPUT_EVDEV}) support. With the default configuration,
-these features are available as modules, which is less convenient.
+Rebuild your kernel with static support event interface
+(\kconfig{CONFIG_INPUT_EVDEV}) support. With the default
+configuration, this feature is available as a module, which is less
+convenient.
 
 Update and reboot your kernel.
 
@@ -33,19 +33,14 @@ The first thing to do is to add an input device to the system. Here are
 the steps to do it:
 
 \begin{itemize}
-\item Declare a pointer to an \ksym{input_polled_dev} structure in the
-      \code{probe} routine. You can call it \code{polled_input}.
+\item Declare a pointer to an \ksym{input_dev} structure in the
+      \code{probe} routine. You can call it \code{input}.
       You can't use a global variable because your driver needs to be
       able to support multiple devices.
 \item Allocate such a structure in the same function, using the
-      \kfunc{devm_input_allocate_polled_device} function.
-\item Also declare a pointer to an \ksym{input_dev} structure. You can
-      call it \code{input}. We won't need to allocate it, because it
-      is already part of the \ksym{input_polled_dev} structure,
-      and allocated at the same time.
-      We will use this as a shortcut to keep the code simple.
+      \kfunc{devm_input_allocate_device} function.
 \item Still in the \code{probe()} function, add the input device to
-      the system by calling \kfunc{input_register_polled_device};
+      the system by calling \kfunc{input_register_device};
 \end{itemize}
 
 At this stage, first make sure that your module compiles well (add
@@ -73,7 +68,7 @@ and registered in the \code{probe()} routine.
 
 Fortunately, in our case, there's nothing to do, as everything
 was allocated with \code{devm_} functions. Even the unregistration
-of the \ksym{input_polled_dev} structure is automated. 
+of the \ksym{input_dev} structure is automated. 
 
 Recompile your module, and load it and remove it multiple times, to
 make sure that everything is properly registered and automatically
@@ -104,10 +99,10 @@ It's time to implement the routine which will poll the nunchuk registers
 at a regular interval.
 
 Create a \code{nunchuk_poll()} function with the right prototype (find
-it by looking at the definition of the \ksym{input_polled_dev} structure.
+it by looking at the definition of the \ksym{input_setup_polling} function.)
 
 In this function, you will have to read the nunchuk registers. However,
-as you can see, the prototype of the \code{poll()} routine doesn't
+as you can see, the prototype of the \code{poll_fn()} routine doesn't
 carry any information about the \ksym{i2c_client} structure you will
 need to communicate with the device. That's normal as the input
 subsystem is generic, and can't be bound to any specific bus.
@@ -162,7 +157,7 @@ don't want to enable a device with incomplete information or when it is
 not completely yet (there could be race conditions).
 
 So, back to the \code{nunchuk_poll()} function, you will first need to
-retrieve the I2C physical device from the \ksym{input_polled_dev}
+retrieve the I2C physical device from the \ksym{input_dev}
 structure. That's where you will use your private \code{nunchuk}
 structure.
 
@@ -176,8 +171,8 @@ reading registers fails, you can use a \code{return;} statement instead
 of \code{return value;}}.
 
 At the end of the polling routine, the last thing to do is post the events
-and notify the \code{input} core. Assuming that \code{polled_input} is the
-name of the \code{input_polled_dev} parameter of your polling routine:
+and notify the \code{input} core. Assuming that \code{input} is the
+name of the \code{input_dev} parameter of your polling routine:
 
 \sourcecode{labs/kernel-i2c-input-interface/input-notification.c}
 
diff --git a/slides/kernel-input/input-subsystem-diagram.dia b/slides/kernel-input/input-subsystem-diagram.dia
index a083cbca..6f990e7f 100644
--- a/slides/kernel-input/input-subsystem-diagram.dia
+++ b/slides/kernel-input/input-subsystem-diagram.dia
@@ -78,80 +78,10 @@
         <dia:int val="1"/>
       </dia:attribute>
       <dia:connections>
-        <dia:connection handle="1" to="O16" connection="1"/>
-      </dia:connections>
-    </dia:object>
-    <dia:object type="Standard - ZigZagLine" version="1" id="O1">
-      <dia:attribute name="obj_pos">
-        <dia:point val="22.25,19"/>
-      </dia:attribute>
-      <dia:attribute name="obj_bb">
-        <dia:rectangle val="22.2,18.95;25.55,20.1"/>
-      </dia:attribute>
-      <dia:attribute name="orth_points">
-        <dia:point val="22.25,19"/>
-        <dia:point val="22.25,19.4"/>
-        <dia:point val="25.5,19.4"/>
-        <dia:point val="25.5,20.05"/>
-      </dia:attribute>
-      <dia:attribute name="orth_orient">
-        <dia:enum val="1"/>
-        <dia:enum val="0"/>
-        <dia:enum val="1"/>
-      </dia:attribute>
-      <dia:attribute name="autorouting">
-        <dia:boolean val="false"/>
-      </dia:attribute>
-      <dia:connections>
-        <dia:connection handle="0" to="O5" connection="6"/>
-        <dia:connection handle="1" to="O14" connection="1"/>
-      </dia:connections>
-    </dia:object>
-    <dia:object type="Standard - ZigZagLine" version="1" id="O2">
-      <dia:attribute name="obj_pos">
-        <dia:point val="22.25,19"/>
-      </dia:attribute>
-      <dia:attribute name="obj_bb">
-        <dia:rectangle val="19.45,18.95;22.3,20.1"/>
-      </dia:attribute>
-      <dia:attribute name="orth_points">
-        <dia:point val="22.25,19"/>
-        <dia:point val="22.25,19.4"/>
-        <dia:point val="19.5,19.4"/>
-        <dia:point val="19.5,20.05"/>
-      </dia:attribute>
-      <dia:attribute name="orth_orient">
-        <dia:enum val="1"/>
-        <dia:enum val="0"/>
-        <dia:enum val="1"/>
-      </dia:attribute>
-      <dia:attribute name="autorouting">
-        <dia:boolean val="false"/>
-      </dia:attribute>
-      <dia:connections>
-        <dia:connection handle="0" to="O5" connection="6"/>
-        <dia:connection handle="1" to="O12" connection="1"/>
-      </dia:connections>
-    </dia:object>
-    <dia:object type="Standard - Line" version="0" id="O3">
-      <dia:attribute name="obj_pos">
-        <dia:point val="22.25,16.05"/>
-      </dia:attribute>
-      <dia:attribute name="obj_bb">
-        <dia:rectangle val="22.2,16;22.3,17.05"/>
-      </dia:attribute>
-      <dia:attribute name="conn_endpoints">
-        <dia:point val="22.25,16.05"/>
-        <dia:point val="22.25,17"/>
-      </dia:attribute>
-      <dia:attribute name="numcp">
-        <dia:int val="1"/>
-      </dia:attribute>
-      <dia:connections>
-        <dia:connection handle="1" to="O5" connection="1"/>
+        <dia:connection handle="1" to="O7" connection="1"/>
       </dia:connections>
     </dia:object>
-    <dia:object type="Standard - Box" version="0" id="O4">
+    <dia:object type="Standard - Box" version="0" id="O1">
       <dia:attribute name="obj_pos">
         <dia:point val="22,0"/>
       </dia:attribute>
@@ -180,36 +110,7 @@
         <dia:boolean val="true"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Box" version="0" id="O5">
-      <dia:attribute name="obj_pos">
-        <dia:point val="18,17"/>
-      </dia:attribute>
-      <dia:attribute name="obj_bb">
-        <dia:rectangle val="17.95,16.95;26.55,19.05"/>
-      </dia:attribute>
-      <dia:attribute name="elem_corner">
-        <dia:point val="18,17"/>
-      </dia:attribute>
-      <dia:attribute name="elem_width">
-        <dia:real val="8.5"/>
-      </dia:attribute>
-      <dia:attribute name="elem_height">
-        <dia:real val="2"/>
-      </dia:attribute>
-      <dia:attribute name="border_width">
-        <dia:real val="0.10000000149011612"/>
-      </dia:attribute>
-      <dia:attribute name="border_color">
-        <dia:color val="#a32804"/>
-      </dia:attribute>
-      <dia:attribute name="inner_color">
-        <dia:color val="#ffd192"/>
-      </dia:attribute>
-      <dia:attribute name="show_background">
-        <dia:boolean val="true"/>
-      </dia:attribute>
-    </dia:object>
-    <dia:object type="Standard - Line" version="0" id="O6">
+    <dia:object type="Standard - Line" version="0" id="O2">
       <dia:attribute name="obj_pos">
         <dia:point val="10,3"/>
       </dia:attribute>
@@ -224,7 +125,7 @@
         <dia:int val="1"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Box" version="0" id="O7">
+    <dia:object type="Standard - Box" version="0" id="O3">
       <dia:attribute name="obj_pos">
         <dia:point val="17.5,10.87"/>
       </dia:attribute>
@@ -253,7 +154,7 @@
         <dia:boolean val="true"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Box" version="0" id="O8">
+    <dia:object type="Standard - Box" version="0" id="O4">
       <dia:attribute name="obj_pos">
         <dia:point val="17.5,4.05"/>
       </dia:attribute>
@@ -282,12 +183,12 @@
         <dia:boolean val="true"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O9">
+    <dia:object type="Standard - Text" version="1" id="O5">
       <dia:attribute name="obj_pos">
         <dia:point val="26,1"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="22.7675,0.64125;29.2325,1.35875"/>
+        <dia:rectangle val="23.0175,0.531841;28.9825,1.46816"/>
       </dia:attribute>
       <dia:attribute name="text">
         <dia:composite type="text">
@@ -301,7 +202,7 @@
             <dia:real val="0.80000000000000004"/>
           </dia:attribute>
           <dia:attribute name="pos">
-            <dia:point val="26,1.22125"/>
+            <dia:point val="26,1.2704"/>
           </dia:attribute>
           <dia:attribute name="color">
             <dia:color val="#000000"/>
@@ -315,15 +216,15 @@
         <dia:enum val="2"/>
       </dia:attribute>
       <dia:connections>
-        <dia:connection handle="0" to="O4" connection="8"/>
+        <dia:connection handle="0" to="O1" connection="8"/>
       </dia:connections>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O10">
+    <dia:object type="Standard - Text" version="1" id="O6">
       <dia:attribute name="obj_pos">
         <dia:point val="26,5.05"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="23.0512,4.69125;28.9488,5.40875"/>
+        <dia:rectangle val="23.235,4.58184;28.765,5.51816"/>
       </dia:attribute>
       <dia:attribute name="text">
         <dia:composite type="text">
@@ -337,176 +238,7 @@
             <dia:real val="0.80000000000000004"/>
           </dia:attribute>
           <dia:attribute name="pos">
-            <dia:point val="26,5.27125"/>
-          </dia:attribute>
-          <dia:attribute name="color">
-            <dia:color val="#000000"/>
-          </dia:attribute>
-          <dia:attribute name="alignment">
-            <dia:enum val="1"/>
-          </dia:attribute>
-        </dia:composite>
-      </dia:attribute>
-      <dia:attribute name="valign">
-        <dia:enum val="2"/>
-      </dia:attribute>
-      <dia:connections>
-        <dia:connection handle="0" to="O8" connection="8"/>
-      </dia:connections>
-    </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O11">
-      <dia:attribute name="obj_pos">
-        <dia:point val="22.25,18"/>
-      </dia:attribute>
-      <dia:attribute name="obj_bb">
-        <dia:rectangle val="20.6163,17.2413;23.8837,18.7587"/>
-      </dia:attribute>
-      <dia:attribute name="text">
-        <dia:composite type="text">
-          <dia:attribute name="string">
-            <dia:string>#polled input
-subsystem#</dia:string>
-          </dia:attribute>
-          <dia:attribute name="font">
-            <dia:font family="Latin Modern Sans" style="0" name="Courier"/>
-          </dia:attribute>
-          <dia:attribute name="height">
-            <dia:real val="0.80000000000000004"/>
-          </dia:attribute>
-          <dia:attribute name="pos">
-            <dia:point val="22.25,17.8212"/>
-          </dia:attribute>
-          <dia:attribute name="color">
-            <dia:color val="#000000"/>
-          </dia:attribute>
-          <dia:attribute name="alignment">
-            <dia:enum val="1"/>
-          </dia:attribute>
-        </dia:composite>
-      </dia:attribute>
-      <dia:attribute name="valign">
-        <dia:enum val="2"/>
-      </dia:attribute>
-      <dia:connections>
-        <dia:connection handle="0" to="O5" connection="8"/>
-      </dia:connections>
-    </dia:object>
-    <dia:object type="Standard - Box" version="0" id="O12">
-      <dia:attribute name="obj_pos">
-        <dia:point val="17,20.05"/>
-      </dia:attribute>
-      <dia:attribute name="obj_bb">
-        <dia:rectangle val="16.95,20;22.05,22.1"/>
-      </dia:attribute>
-      <dia:attribute name="elem_corner">
-        <dia:point val="17,20.05"/>
-      </dia:attribute>
-      <dia:attribute name="elem_width">
-        <dia:real val="5"/>
-      </dia:attribute>
-      <dia:attribute name="elem_height">
-        <dia:real val="2"/>
-      </dia:attribute>
-      <dia:attribute name="border_width">
-        <dia:real val="0.10000000149011612"/>
-      </dia:attribute>
-      <dia:attribute name="border_color">
-        <dia:color val="#2f004a"/>
-      </dia:attribute>
-      <dia:attribute name="inner_color">
-        <dia:color val="#efb9ff"/>
-      </dia:attribute>
-      <dia:attribute name="show_background">
-        <dia:boolean val="true"/>
-      </dia:attribute>
-    </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O13">
-      <dia:attribute name="obj_pos">
-        <dia:point val="19.5,21.05"/>
-      </dia:attribute>
-      <dia:attribute name="obj_bb">
-        <dia:rectangle val="17.8663,20.2912;21.1337,21.8087"/>
-      </dia:attribute>
-      <dia:attribute name="text">
-        <dia:composite type="text">
-          <dia:attribute name="string">
-            <dia:string>#polled input
-driver 1#</dia:string>
-          </dia:attribute>
-          <dia:attribute name="font">
-            <dia:font family="Latin Modern Sans" style="0" name="Courier"/>
-          </dia:attribute>
-          <dia:attribute name="height">
-            <dia:real val="0.80000000000000004"/>
-          </dia:attribute>
-          <dia:attribute name="pos">
-            <dia:point val="19.5,20.8712"/>
-          </dia:attribute>
-          <dia:attribute name="color">
-            <dia:color val="#000000"/>
-          </dia:attribute>
-          <dia:attribute name="alignment">
-            <dia:enum val="1"/>
-          </dia:attribute>
-        </dia:composite>
-      </dia:attribute>
-      <dia:attribute name="valign">
-        <dia:enum val="2"/>
-      </dia:attribute>
-      <dia:connections>
-        <dia:connection handle="0" to="O12" connection="8"/>
-      </dia:connections>
-    </dia:object>
-    <dia:object type="Standard - Box" version="0" id="O14">
-      <dia:attribute name="obj_pos">
-        <dia:point val="23,20.05"/>
-      </dia:attribute>
-      <dia:attribute name="obj_bb">
-        <dia:rectangle val="22.95,20;28.05,22.1"/>
-      </dia:attribute>
-      <dia:attribute name="elem_corner">
-        <dia:point val="23,20.05"/>
-      </dia:attribute>
-      <dia:attribute name="elem_width">
-        <dia:real val="5"/>
-      </dia:attribute>
-      <dia:attribute name="elem_height">
-        <dia:real val="2"/>
-      </dia:attribute>
-      <dia:attribute name="border_width">
-        <dia:real val="0.10000000149011612"/>
-      </dia:attribute>
-      <dia:attribute name="border_color">
-        <dia:color val="#2f004a"/>
-      </dia:attribute>
-      <dia:attribute name="inner_color">
-        <dia:color val="#efb9ff"/>
-      </dia:attribute>
-      <dia:attribute name="show_background">
-        <dia:boolean val="true"/>
-      </dia:attribute>
-    </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O15">
-      <dia:attribute name="obj_pos">
-        <dia:point val="25.5,21.05"/>
-      </dia:attribute>
-      <dia:attribute name="obj_bb">
-        <dia:rectangle val="23.8663,20.2912;27.1337,21.8087"/>
-      </dia:attribute>
-      <dia:attribute name="text">
-        <dia:composite type="text">
-          <dia:attribute name="string">
-            <dia:string>#polled input
-driver 2#</dia:string>
-          </dia:attribute>
-          <dia:attribute name="font">
-            <dia:font family="Latin Modern Sans" style="0" name="Courier"/>
-          </dia:attribute>
-          <dia:attribute name="height">
-            <dia:real val="0.80000000000000004"/>
-          </dia:attribute>
-          <dia:attribute name="pos">
-            <dia:point val="25.5,20.8712"/>
+            <dia:point val="26,5.3204"/>
           </dia:attribute>
           <dia:attribute name="color">
             <dia:color val="#000000"/>
@@ -520,10 +252,10 @@ driver 2#</dia:string>
         <dia:enum val="2"/>
       </dia:attribute>
       <dia:connections>
-        <dia:connection handle="0" to="O14" connection="8"/>
+        <dia:connection handle="0" to="O4" connection="8"/>
       </dia:connections>
     </dia:object>
-    <dia:object type="Standard - Box" version="0" id="O16">
+    <dia:object type="Standard - Box" version="0" id="O7">
       <dia:attribute name="obj_pos">
         <dia:point val="29,20"/>
       </dia:attribute>
@@ -552,18 +284,18 @@ driver 2#</dia:string>
         <dia:boolean val="true"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O17">
+    <dia:object type="Standard - Text" version="1" id="O8">
       <dia:attribute name="obj_pos">
         <dia:point val="31.5,21"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="30.4163,20.2413;32.5838,21.7587"/>
+        <dia:rectangle val="30.4375,20.0967;32.5859,21.9033"/>
       </dia:attribute>
       <dia:attribute name="text">
         <dia:composite type="text">
           <dia:attribute name="string">
             <dia:string>#input
-driver A#</dia:string>
+driver C#</dia:string>
           </dia:attribute>
           <dia:attribute name="font">
             <dia:font family="Latin Modern Sans" style="0" name="Courier"/>
@@ -572,7 +304,7 @@ driver A#</dia:string>
             <dia:real val="0.80000000000000004"/>
           </dia:attribute>
           <dia:attribute name="pos">
-            <dia:point val="31.5,20.8212"/>
+            <dia:point val="31.5,20.8587"/>
           </dia:attribute>
           <dia:attribute name="color">
             <dia:color val="#000000"/>
@@ -586,15 +318,15 @@ driver A#</dia:string>
         <dia:enum val="2"/>
       </dia:attribute>
       <dia:connections>
-        <dia:connection handle="0" to="O16" connection="8"/>
+        <dia:connection handle="0" to="O7" connection="8"/>
       </dia:connections>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O18">
+    <dia:object type="Standard - Text" version="1" id="O9">
       <dia:attribute name="obj_pos">
         <dia:point val="38.8969,2.6"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="38.8969,2.02;42.1294,2.7375"/>
+        <dia:rectangle val="38.8969,1.86144;41.7519,2.79776"/>
       </dia:attribute>
       <dia:attribute name="text">
         <dia:composite type="text">
@@ -622,12 +354,12 @@ driver A#</dia:string>
         <dia:enum val="3"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O19">
+    <dia:object type="Standard - Text" version="1" id="O10">
       <dia:attribute name="obj_pos">
         <dia:point val="40.1969,3.85"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="40.1969,3.27;42.0444,3.9875"/>
+        <dia:rectangle val="40.1969,3.11144;41.9144,4.04776"/>
       </dia:attribute>
       <dia:attribute name="text">
         <dia:composite type="text">
@@ -655,7 +387,7 @@ driver A#</dia:string>
         <dia:enum val="3"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Line" version="0" id="O20">
+    <dia:object type="Standard - Line" version="0" id="O11">
       <dia:attribute name="obj_pos">
         <dia:point val="26,2"/>
       </dia:attribute>
@@ -679,11 +411,11 @@ driver A#</dia:string>
         <dia:real val="0.5"/>
       </dia:attribute>
       <dia:connections>
-        <dia:connection handle="0" to="O4" connection="6"/>
-        <dia:connection handle="1" to="O8" connection="1"/>
+        <dia:connection handle="0" to="O1" connection="6"/>
+        <dia:connection handle="1" to="O4" connection="1"/>
       </dia:connections>
     </dia:object>
-    <dia:object type="Standard - Line" version="0" id="O21">
+    <dia:object type="Standard - Line" version="0" id="O12">
       <dia:attribute name="obj_pos">
         <dia:point val="26,9.19"/>
       </dia:attribute>
@@ -707,11 +439,11 @@ driver A#</dia:string>
         <dia:real val="0.5"/>
       </dia:attribute>
       <dia:connections>
-        <dia:connection handle="0" to="O22" connection="6"/>
-        <dia:connection handle="1" to="O7" connection="1"/>
+        <dia:connection handle="0" to="O13" connection="6"/>
+        <dia:connection handle="1" to="O3" connection="1"/>
       </dia:connections>
     </dia:object>
-    <dia:object type="Standard - Box" version="0" id="O22">
+    <dia:object type="Standard - Box" version="0" id="O13">
       <dia:attribute name="obj_pos">
         <dia:point val="17.5,7.19"/>
       </dia:attribute>
@@ -740,12 +472,12 @@ driver A#</dia:string>
         <dia:boolean val="true"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O23">
+    <dia:object type="Standard - Text" version="1" id="O14">
       <dia:attribute name="obj_pos">
         <dia:point val="26,8.19"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="23.1225,7.83125;28.8775,8.54875"/>
+        <dia:rectangle val="23.24,7.72184;28.76,8.65816"/>
       </dia:attribute>
       <dia:attribute name="text">
         <dia:composite type="text">
@@ -759,7 +491,7 @@ driver A#</dia:string>
             <dia:real val="0.80000000000000004"/>
           </dia:attribute>
           <dia:attribute name="pos">
-            <dia:point val="26,8.41125"/>
+            <dia:point val="26,8.4604"/>
           </dia:attribute>
           <dia:attribute name="color">
             <dia:color val="#000000"/>
@@ -773,10 +505,10 @@ driver A#</dia:string>
         <dia:enum val="2"/>
       </dia:attribute>
       <dia:connections>
-        <dia:connection handle="0" to="O22" connection="8"/>
+        <dia:connection handle="0" to="O13" connection="8"/>
       </dia:connections>
     </dia:object>
-    <dia:object type="Standard - Line" version="0" id="O24">
+    <dia:object type="Standard - Line" version="0" id="O15">
       <dia:attribute name="obj_pos">
         <dia:point val="26,6.05"/>
       </dia:attribute>
@@ -800,16 +532,16 @@ driver A#</dia:string>
         <dia:real val="0.5"/>
       </dia:attribute>
       <dia:connections>
-        <dia:connection handle="0" to="O8" connection="6"/>
-        <dia:connection handle="1" to="O22" connection="8"/>
+        <dia:connection handle="0" to="O4" connection="6"/>
+        <dia:connection handle="1" to="O13" connection="8"/>
       </dia:connections>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O25">
+    <dia:object type="Standard - Text" version="1" id="O16">
       <dia:attribute name="obj_pos">
         <dia:point val="26,13.435"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="24.3313,12.6763;27.6687,14.1938"/>
+        <dia:rectangle val="24.505,12.5771;27.495,14.2929"/>
       </dia:attribute>
       <dia:attribute name="text">
         <dia:composite type="text">
@@ -824,7 +556,7 @@ subsystem#</dia:string>
             <dia:real val="0.80000000000000004"/>
           </dia:attribute>
           <dia:attribute name="pos">
-            <dia:point val="26,13.2563"/>
+            <dia:point val="26,13.3028"/>
           </dia:attribute>
           <dia:attribute name="color">
             <dia:color val="#000000"/>
@@ -838,51 +570,15 @@ subsystem#</dia:string>
         <dia:enum val="2"/>
       </dia:attribute>
       <dia:connections>
-        <dia:connection handle="0" to="O7" connection="8"/>
-      </dia:connections>
-    </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O26">
-      <dia:attribute name="obj_pos">
-        <dia:point val="25.5,21.05"/>
-      </dia:attribute>
-      <dia:attribute name="obj_bb">
-        <dia:rectangle val="25.5,20.47;25.5,21.1875"/>
-      </dia:attribute>
-      <dia:attribute name="text">
-        <dia:composite type="text">
-          <dia:attribute name="string">
-            <dia:string>##</dia:string>
-          </dia:attribute>
-          <dia:attribute name="font">
-            <dia:font family="Latin Modern Sans" style="0" name="Courier"/>
-          </dia:attribute>
-          <dia:attribute name="height">
-            <dia:real val="0.80000000000000004"/>
-          </dia:attribute>
-          <dia:attribute name="pos">
-            <dia:point val="25.5,21.05"/>
-          </dia:attribute>
-          <dia:attribute name="color">
-            <dia:color val="#000000"/>
-          </dia:attribute>
-          <dia:attribute name="alignment">
-            <dia:enum val="0"/>
-          </dia:attribute>
-        </dia:composite>
-      </dia:attribute>
-      <dia:attribute name="valign">
-        <dia:enum val="3"/>
-      </dia:attribute>
-      <dia:connections>
-        <dia:connection handle="0" to="O14" connection="8"/>
+        <dia:connection handle="0" to="O3" connection="8"/>
       </dia:connections>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O27">
+    <dia:object type="Standard - Text" version="1" id="O17">
       <dia:attribute name="obj_pos">
         <dia:point val="31.5,21"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="31.5,20.42;31.5,21.1375"/>
+        <dia:rectangle val="31.5,20.2614;31.5,21.1978"/>
       </dia:attribute>
       <dia:attribute name="text">
         <dia:composite type="text">
@@ -910,15 +606,15 @@ subsystem#</dia:string>
         <dia:enum val="3"/>
       </dia:attribute>
       <dia:connections>
-        <dia:connection handle="0" to="O16" connection="8"/>
+        <dia:connection handle="0" to="O7" connection="8"/>
       </dia:connections>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O28">
+    <dia:object type="Standard - Text" version="1" id="O18">
       <dia:attribute name="obj_pos">
         <dia:point val="26,13.27"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="26,12.69;26,13.4075"/>
+        <dia:rectangle val="26,12.5314;26,13.4678"/>
       </dia:attribute>
       <dia:attribute name="text">
         <dia:composite type="text">
@@ -946,7 +642,7 @@ subsystem#</dia:string>
         <dia:enum val="3"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Line" version="0" id="O29">
+    <dia:object type="Standard - Line" version="0" id="O19">
       <dia:attribute name="obj_pos">
         <dia:point val="17.5,13.435"/>
       </dia:attribute>
@@ -970,16 +666,16 @@ subsystem#</dia:string>
         <dia:enum val="1"/>
       </dia:attribute>
       <dia:connections>
-        <dia:connection handle="0" to="O7" connection="3"/>
-        <dia:connection handle="1" to="O7" connection="4"/>
+        <dia:connection handle="0" to="O3" connection="3"/>
+        <dia:connection handle="1" to="O3" connection="4"/>
       </dia:connections>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O30">
+    <dia:object type="Standard - Text" version="1" id="O20">
       <dia:attribute name="obj_pos">
         <dia:point val="26,11.785"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="23.815,11.205;28.185,11.9225"/>
+        <dia:rectangle val="23.9713,11.0464;28.0288,11.9828"/>
       </dia:attribute>
       <dia:attribute name="text">
         <dia:composite type="text">
@@ -1007,12 +703,12 @@ subsystem#</dia:string>
         <dia:enum val="3"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O31">
+    <dia:object type="Standard - Text" version="1" id="O21">
       <dia:attribute name="obj_pos">
         <dia:point val="26,15.47"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="24.2425,14.89;27.7575,15.6075"/>
+        <dia:rectangle val="24.3212,14.7314;27.6788,15.6678"/>
       </dia:attribute>
       <dia:attribute name="text">
         <dia:composite type="text">
@@ -1040,12 +736,12 @@ subsystem#</dia:string>
         <dia:enum val="3"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O32">
+    <dia:object type="Standard - Text" version="1" id="O22">
       <dia:attribute name="obj_pos">
         <dia:point val="26,15.37"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="26,14.79;26,15.5075"/>
+        <dia:rectangle val="26,14.6314;26,15.5678"/>
       </dia:attribute>
       <dia:attribute name="text">
         <dia:composite type="text">
@@ -1073,12 +769,12 @@ subsystem#</dia:string>
         <dia:enum val="3"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O33">
+    <dia:object type="Standard - Text" version="1" id="O23">
       <dia:attribute name="obj_pos">
         <dia:point val="26,15.47"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="26,14.89;26,15.6075"/>
+        <dia:rectangle val="26,14.7314;26,15.6678"/>
       </dia:attribute>
       <dia:attribute name="text">
         <dia:composite type="text">
@@ -1106,12 +802,12 @@ subsystem#</dia:string>
         <dia:enum val="3"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O34">
+    <dia:object type="Standard - Text" version="1" id="O24">
       <dia:attribute name="obj_pos">
         <dia:point val="26,13.02"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="26,12.44;26,13.1575"/>
+        <dia:rectangle val="26,12.2814;26,13.2178"/>
       </dia:attribute>
       <dia:attribute name="text">
         <dia:composite type="text">
@@ -1139,12 +835,12 @@ subsystem#</dia:string>
         <dia:enum val="3"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O35">
+    <dia:object type="Standard - Text" version="1" id="O25">
       <dia:attribute name="obj_pos">
         <dia:point val="31.1112,20.789"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="31.1112,20.209;31.1112,20.9265"/>
+        <dia:rectangle val="31.1112,20.0504;31.1112,20.9868"/>
       </dia:attribute>
       <dia:attribute name="text">
         <dia:composite type="text">
@@ -1172,5 +868,312 @@ subsystem#</dia:string>
         <dia:enum val="3"/>
       </dia:attribute>
     </dia:object>
+    <dia:object type="Standard - Line" version="0" id="O26">
+      <dia:attribute name="obj_pos">
+        <dia:point val="20.5,16"/>
+      </dia:attribute>
+      <dia:attribute name="obj_bb">
+        <dia:rectangle val="20.45,15.95;20.55,20.05"/>
+      </dia:attribute>
+      <dia:attribute name="conn_endpoints">
+        <dia:point val="20.5,16"/>
+        <dia:point val="20.5,20"/>
+      </dia:attribute>
+      <dia:attribute name="numcp">
+        <dia:int val="1"/>
+      </dia:attribute>
+      <dia:connections>
+        <dia:connection handle="1" to="O27" connection="1"/>
+      </dia:connections>
+    </dia:object>
+    <dia:object type="Standard - Box" version="0" id="O27">
+      <dia:attribute name="obj_pos">
+        <dia:point val="18,20"/>
+      </dia:attribute>
+      <dia:attribute name="obj_bb">
+        <dia:rectangle val="17.95,19.95;23.05,22.05"/>
+      </dia:attribute>
+      <dia:attribute name="elem_corner">
+        <dia:point val="18,20"/>
+      </dia:attribute>
+      <dia:attribute name="elem_width">
+        <dia:real val="5"/>
+      </dia:attribute>
+      <dia:attribute name="elem_height">
+        <dia:real val="2"/>
+      </dia:attribute>
+      <dia:attribute name="border_width">
+        <dia:real val="0.10000000149011612"/>
+      </dia:attribute>
+      <dia:attribute name="border_color">
+        <dia:color val="#2f004a"/>
+      </dia:attribute>
+      <dia:attribute name="inner_color">
+        <dia:color val="#efb9ff"/>
+      </dia:attribute>
+      <dia:attribute name="show_background">
+        <dia:boolean val="true"/>
+      </dia:attribute>
+    </dia:object>
+    <dia:object type="Standard - Text" version="1" id="O28">
+      <dia:attribute name="obj_pos">
+        <dia:point val="20.5,21"/>
+      </dia:attribute>
+      <dia:attribute name="obj_bb">
+        <dia:rectangle val="19.4288,20.1318;21.5712,21.8682"/>
+      </dia:attribute>
+      <dia:attribute name="text">
+        <dia:composite type="text">
+          <dia:attribute name="string">
+            <dia:string>#input
+driver A#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="font">
+            <dia:font family="Latin Modern Sans" style="0" name="Courier"/>
+          </dia:attribute>
+          <dia:attribute name="height">
+            <dia:real val="0.80000000000000004"/>
+          </dia:attribute>
+          <dia:attribute name="pos">
+            <dia:point val="20.5,20.8704"/>
+          </dia:attribute>
+          <dia:attribute name="color">
+            <dia:color val="#000000"/>
+          </dia:attribute>
+          <dia:attribute name="alignment">
+            <dia:enum val="1"/>
+          </dia:attribute>
+        </dia:composite>
+      </dia:attribute>
+      <dia:attribute name="valign">
+        <dia:enum val="2"/>
+      </dia:attribute>
+      <dia:connections>
+        <dia:connection handle="0" to="O27" connection="8"/>
+      </dia:connections>
+    </dia:object>
+    <dia:object type="Standard - Text" version="1" id="O29">
+      <dia:attribute name="obj_pos">
+        <dia:point val="20.5,21"/>
+      </dia:attribute>
+      <dia:attribute name="obj_bb">
+        <dia:rectangle val="20.5,20.2614;20.5,21.1978"/>
+      </dia:attribute>
+      <dia:attribute name="text">
+        <dia:composite type="text">
+          <dia:attribute name="string">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="font">
+            <dia:font family="Latin Modern Sans" style="0" name="Courier"/>
+          </dia:attribute>
+          <dia:attribute name="height">
+            <dia:real val="0.80000000000000004"/>
+          </dia:attribute>
+          <dia:attribute name="pos">
+            <dia:point val="20.5,21"/>
+          </dia:attribute>
+          <dia:attribute name="color">
+            <dia:color val="#000000"/>
+          </dia:attribute>
+          <dia:attribute name="alignment">
+            <dia:enum val="0"/>
+          </dia:attribute>
+        </dia:composite>
+      </dia:attribute>
+      <dia:attribute name="valign">
+        <dia:enum val="3"/>
+      </dia:attribute>
+      <dia:connections>
+        <dia:connection handle="0" to="O27" connection="8"/>
+      </dia:connections>
+    </dia:object>
+    <dia:object type="Standard - Text" version="1" id="O30">
+      <dia:attribute name="obj_pos">
+        <dia:point val="20.1112,20.789"/>
+      </dia:attribute>
+      <dia:attribute name="obj_bb">
+        <dia:rectangle val="20.1112,20.0504;20.1112,20.9868"/>
+      </dia:attribute>
+      <dia:attribute name="text">
+        <dia:composite type="text">
+          <dia:attribute name="string">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="font">
+            <dia:font family="Latin Modern Sans" style="0" name="Courier"/>
+          </dia:attribute>
+          <dia:attribute name="height">
+            <dia:real val="0.80000000000000004"/>
+          </dia:attribute>
+          <dia:attribute name="pos">
+            <dia:point val="20.1112,20.789"/>
+          </dia:attribute>
+          <dia:attribute name="color">
+            <dia:color val="#000000"/>
+          </dia:attribute>
+          <dia:attribute name="alignment">
+            <dia:enum val="0"/>
+          </dia:attribute>
+        </dia:composite>
+      </dia:attribute>
+      <dia:attribute name="valign">
+        <dia:enum val="3"/>
+      </dia:attribute>
+    </dia:object>
+    <dia:object type="Standard - Line" version="0" id="O31">
+      <dia:attribute name="obj_pos">
+        <dia:point val="26,16"/>
+      </dia:attribute>
+      <dia:attribute name="obj_bb">
+        <dia:rectangle val="25.95,15.95;26.05,20.05"/>
+      </dia:attribute>
+      <dia:attribute name="conn_endpoints">
+        <dia:point val="26,16"/>
+        <dia:point val="26,20"/>
+      </dia:attribute>
+      <dia:attribute name="numcp">
+        <dia:int val="1"/>
+      </dia:attribute>
+      <dia:connections>
+        <dia:connection handle="0" to="O3" connection="6"/>
+        <dia:connection handle="1" to="O32" connection="1"/>
+      </dia:connections>
+    </dia:object>
+    <dia:object type="Standard - Box" version="0" id="O32">
+      <dia:attribute name="obj_pos">
+        <dia:point val="23.5,20"/>
+      </dia:attribute>
+      <dia:attribute name="obj_bb">
+        <dia:rectangle val="23.45,19.95;28.55,22.05"/>
+      </dia:attribute>
+      <dia:attribute name="elem_corner">
+        <dia:point val="23.5,20"/>
+      </dia:attribute>
+      <dia:attribute name="elem_width">
+        <dia:real val="5"/>
+      </dia:attribute>
+      <dia:attribute name="elem_height">
+        <dia:real val="2"/>
+      </dia:attribute>
+      <dia:attribute name="border_width">
+        <dia:real val="0.10000000149011612"/>
+      </dia:attribute>
+      <dia:attribute name="border_color">
+        <dia:color val="#2f004a"/>
+      </dia:attribute>
+      <dia:attribute name="inner_color">
+        <dia:color val="#efb9ff"/>
+      </dia:attribute>
+      <dia:attribute name="show_background">
+        <dia:boolean val="true"/>
+      </dia:attribute>
+    </dia:object>
+    <dia:object type="Standard - Text" version="1" id="O33">
+      <dia:attribute name="obj_pos">
+        <dia:point val="26,21"/>
+      </dia:attribute>
+      <dia:attribute name="obj_bb">
+        <dia:rectangle val="24.9288,20.0967;27.0947,21.9033"/>
+      </dia:attribute>
+      <dia:attribute name="text">
+        <dia:composite type="text">
+          <dia:attribute name="string">
+            <dia:string>#input
+driver B#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="font">
+            <dia:font family="Latin Modern Sans" style="0" name="Courier"/>
+          </dia:attribute>
+          <dia:attribute name="height">
+            <dia:real val="0.80000000000000004"/>
+          </dia:attribute>
+          <dia:attribute name="pos">
+            <dia:point val="26,20.8587"/>
+          </dia:attribute>
+          <dia:attribute name="color">
+            <dia:color val="#000000"/>
+          </dia:attribute>
+          <dia:attribute name="alignment">
+            <dia:enum val="1"/>
+          </dia:attribute>
+        </dia:composite>
+      </dia:attribute>
+      <dia:attribute name="valign">
+        <dia:enum val="2"/>
+      </dia:attribute>
+      <dia:connections>
+        <dia:connection handle="0" to="O32" connection="8"/>
+      </dia:connections>
+    </dia:object>
+    <dia:object type="Standard - Text" version="1" id="O34">
+      <dia:attribute name="obj_pos">
+        <dia:point val="26,21"/>
+      </dia:attribute>
+      <dia:attribute name="obj_bb">
+        <dia:rectangle val="26,20.2614;26,21.1978"/>
+      </dia:attribute>
+      <dia:attribute name="text">
+        <dia:composite type="text">
+          <dia:attribute name="string">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="font">
+            <dia:font family="Latin Modern Sans" style="0" name="Courier"/>
+          </dia:attribute>
+          <dia:attribute name="height">
+            <dia:real val="0.80000000000000004"/>
+          </dia:attribute>
+          <dia:attribute name="pos">
+            <dia:point val="26,21"/>
+          </dia:attribute>
+          <dia:attribute name="color">
+            <dia:color val="#000000"/>
+          </dia:attribute>
+          <dia:attribute name="alignment">
+            <dia:enum val="0"/>
+          </dia:attribute>
+        </dia:composite>
+      </dia:attribute>
+      <dia:attribute name="valign">
+        <dia:enum val="3"/>
+      </dia:attribute>
+      <dia:connections>
+        <dia:connection handle="0" to="O32" connection="8"/>
+      </dia:connections>
+    </dia:object>
+    <dia:object type="Standard - Text" version="1" id="O35">
+      <dia:attribute name="obj_pos">
+        <dia:point val="25.6112,20.789"/>
+      </dia:attribute>
+      <dia:attribute name="obj_bb">
+        <dia:rectangle val="25.6112,20.0504;25.6112,20.9868"/>
+      </dia:attribute>
+      <dia:attribute name="text">
+        <dia:composite type="text">
+          <dia:attribute name="string">
+            <dia:string>##</dia:string>
+          </dia:attribute>
+          <dia:attribute name="font">
+            <dia:font family="Latin Modern Sans" style="0" name="Courier"/>
+          </dia:attribute>
+          <dia:attribute name="height">
+            <dia:real val="0.80000000000000004"/>
+          </dia:attribute>
+          <dia:attribute name="pos">
+            <dia:point val="25.6112,20.789"/>
+          </dia:attribute>
+          <dia:attribute name="color">
+            <dia:color val="#000000"/>
+          </dia:attribute>
+          <dia:attribute name="alignment">
+            <dia:enum val="0"/>
+          </dia:attribute>
+        </dia:composite>
+      </dia:attribute>
+      <dia:attribute name="valign">
+        <dia:enum val="3"/>
+      </dia:attribute>
+    </dia:object>
   </dia:layer>
 </dia:diagram>
diff --git a/slides/kernel-input/kernel-input.tex b/slides/kernel-input/kernel-input.tex
index 3d1aa1b1..92b7789c 100644
--- a/slides/kernel-input/kernel-input.tex
+++ b/slides/kernel-input/kernel-input.tex
@@ -150,50 +150,20 @@ static void usb_mouse_irq(struct urb *urb)
   \end{block}
 \end{frame}
 
-\begin{frame}[fragile]{Polled input subclass}
+\begin{frame}[fragile]{Polling input devices}
   \begin{itemize}
-  \item The input subsystem provides a subclass supporting simple input
+  \item The input subsystem provides an API to support simple input
     devices that {\em do not raise interrupts} but have to be {\em
       periodically scanned or polled} to detect changes in their
     state.
-  \item A {\em polled input device} is described by a
-    \kstruct{input_polled_dev} structure:
-    \begin{block}{}
-    \begin{minted}[fontsize=\footnotesize]{c}
-struct input_polled_dev {
-        void *private;
-        void (*open)(struct input_polled_dev *dev);
-        void (*close)(struct input_polled_dev *dev);
-        void (*poll)(struct input_polled_dev *dev);
-        unsigned int poll_interval; /* msec */
-        unsigned int poll_interval_max; /* msec */
-        unsigned int poll_interval_min; /* msec */
-        struct input_dev *input;
-/* private: */
-        struct delayed_work work;
-}
-    \end{minted}
-    \end{block}
-  \end{itemize}
-\end{frame}
-
-\begin{frame}[fragile]{Polled input subsystem API}
-  \begin{itemize}
-  \item Allocating the \kstruct{input_polled_dev} structure is
-    done using \kfunc{devm_input_allocate_polled_device}
-  \item Among the handlers of the \kstruct{input_polled_dev} only the
-    \code{poll()} method is mandatory, this function polls the device
-    and posts input events.
-  \item The fields \code{id}, \code{name}, \code{evbit} and \code{keybit} of
-    the \kstruct{input} structure must be initialized too.
-  \item If none of the \code{poll_interval} fields are filled then the
-    default poll interval is 500ms.
-  \item The device registration/unregistration is done with:
-    \begin{itemize}
-    \item \code{input_register_polled_device(struct input_polled_dev *dev)}.
-    \item Unregistration is automatic after using
-      \kfunc{devm_input_allocate_polled_device}!
-    \end{itemize}
+  \item Setting up polling is done using \kfunc{input_setup_polling}:
+    \code{int input_setup_polling(struct input_dev *dev, void (*poll_fn)(struct input_dev *dev));}
+  \item \code{poll_fn} is the function that will be called
+    periodically.
+  \item The polling interval can be set using
+    \kfunc{input_set_poll_interval} or
+    \kfunc{input_set_min_poll_interval} and
+    \kfunc{input_set_max_poll_interval}
   \end{itemize}
 \end{frame}
 




More information about the training-materials-updates mailing list