* [PATCH] psmouse: Expose drift duration for IBM trackpoints
From: haarp @ 2014-12-17 17:09 UTC (permalink / raw)
To: linux-input
[-- Attachment #1: Type: text/plain, Size: 3443 bytes --]
Hello,
IBM Trackpoints have a feature to compensate for drift by
recalibrating themselves periodically. If for 0.5 seconds
there is no change in position, it uses this as the new zero.
This happens often when the trackpoint is in fact being used.
This is frustrating.
Raising the time solves the problem.
IBM's Trackpoint Engineering Specifications offer a
configuration register for this (rstdft1). It just needs to
be exposed by the driver, as others already are.
Cheers!
-Mike
IBM Trackpoints have a feature to compensate for drift by recalibrating
themselves periodically. By default, if for 0.5 seconds there is no change in
position, it's used as the new zero. This duration is too low. Often, the
calibration happens when the trackpoint is in fact being used.
IBM's Trackpoint Engineering Specifications show a configuration register that
allows changing this duration, rstdft1.
Expose it via sysfs among the other settings.
Signed-off-by: Mike Murdoch <main.haarp@gmail.com>
--- a/drivers/input/mouse/trackpoint.h 2014-12-06 13:12:34.167917741 +0100
+++ b/drivers/input/mouse/trackpoint.h 2014-12-08 19:17:46.241131557 +0100
@@ -70,6 +70,9 @@
#define TP_UP_THRESH 0x5A /* Used to generate a 'click' on Z-axis */
#define TP_Z_TIME 0x5E /* How sharp of a press */
#define TP_JENKS_CURV 0x5D /* Minimum curvature for double click */
+#define TP_DRIFT_TIME 0x5F /* How long a 'hands off' condition */
+ /* must last (x*107ms) for drift */
+ /* correction to occur */
/*
* Toggling Flag bits
@@ -120,6 +123,7 @@
#define TP_DEF_UP_THRESH 0xFF
#define TP_DEF_Z_TIME 0x26
#define TP_DEF_JENKS_CURV 0x87
+#define TP_DEF_DRIFT_TIME 0x05
/* Toggles */
#define TP_DEF_MB 0x00
@@ -137,6 +141,7 @@ struct trackpoint_data
unsigned char draghys, mindrag;
unsigned char thresh, upthresh;
unsigned char ztime, jenks;
+ unsigned char drift_time;
/* toggles */
unsigned char press_to_select;
--- a/drivers/input/mouse/trackpoint.c 2014-12-06 13:12:34.167917741 +0100
+++ b/drivers/input/mouse/trackpoint.c 2014-12-06 16:03:09.587952302 +0100
@@ -227,6 +227,7 @@ TRACKPOINT_INT_ATTR(thresh, TP_THRESH, T
TRACKPOINT_INT_ATTR(upthresh, TP_UP_THRESH, TP_DEF_UP_THRESH);
TRACKPOINT_INT_ATTR(ztime, TP_Z_TIME, TP_DEF_Z_TIME);
TRACKPOINT_INT_ATTR(jenks, TP_JENKS_CURV, TP_DEF_JENKS_CURV);
+TRACKPOINT_INT_ATTR(drift_time, TP_DRIFT_TIME, TP_DEF_DRIFT_TIME);
TRACKPOINT_BIT_ATTR(press_to_select, TP_TOGGLE_PTSON, TP_MASK_PTSON, 0,
TP_DEF_PTSON);
@@ -249,6 +250,7 @@ static struct attribute *trackpoint_attr
&psmouse_attr_press_to_select.dattr.attr,
&psmouse_attr_skipback.dattr.attr,
&psmouse_attr_ext_dev.dattr.attr,
+ &psmouse_attr_drift_time.dattr.attr,
NULL
};
@@ -312,6 +314,7 @@ static int trackpoint_sync(struct psmous
TRACKPOINT_UPDATE(in_power_on_state, psmouse, tp, upthresh);
TRACKPOINT_UPDATE(in_power_on_state, psmouse, tp, ztime);
TRACKPOINT_UPDATE(in_power_on_state, psmouse, tp, jenks);
+ TRACKPOINT_UPDATE(in_power_on_state, psmouse, tp, drift_time);
/* toggles */
TRACKPOINT_UPDATE(in_power_on_state, psmouse, tp, press_to_select);
@@ -333,6 +336,7 @@ static void trackpoint_defaults(struct t
TRACKPOINT_SET_POWER_ON_DEFAULT(tp, ztime);
TRACKPOINT_SET_POWER_ON_DEFAULT(tp, jenks);
TRACKPOINT_SET_POWER_ON_DEFAULT(tp, inertia);
+ TRACKPOINT_SET_POWER_ON_DEFAULT(tp, drift_time);
/* toggles */
TRACKPOINT_SET_POWER_ON_DEFAULT(tp, press_to_select);
[-- Attachment #2: trackpoint_expose_drift_time.patch --]
[-- Type: text/x-patch, Size: 2956 bytes --]
IBM Trackpoints have a feature to compensate for drift by recalibrating
themselves periodically. By default, if for 0.5 seconds there is no change in
position, it's used as the new zero. This duration is too low. Often, the
calibration happens when the trackpoint is in fact being used.
IBM's Trackpoint Engineering Specifications show a configuration register that
allows changing this duration, rstdft1.
Expose it via sysfs among the other settings.
Signed-off-by: Mike Murdoch <main.haarp@gmail.com>
--- a/drivers/input/mouse/trackpoint.h 2014-12-06 13:12:34.167917741 +0100
+++ b/drivers/input/mouse/trackpoint.h 2014-12-08 19:17:46.241131557 +0100
@@ -70,6 +70,9 @@
#define TP_UP_THRESH 0x5A /* Used to generate a 'click' on Z-axis */
#define TP_Z_TIME 0x5E /* How sharp of a press */
#define TP_JENKS_CURV 0x5D /* Minimum curvature for double click */
+#define TP_DRIFT_TIME 0x5F /* How long a 'hands off' condition */
+ /* must last (x*107ms) for drift */
+ /* correction to occur */
/*
* Toggling Flag bits
@@ -120,6 +123,7 @@
#define TP_DEF_UP_THRESH 0xFF
#define TP_DEF_Z_TIME 0x26
#define TP_DEF_JENKS_CURV 0x87
+#define TP_DEF_DRIFT_TIME 0x05
/* Toggles */
#define TP_DEF_MB 0x00
@@ -137,6 +141,7 @@ struct trackpoint_data
unsigned char draghys, mindrag;
unsigned char thresh, upthresh;
unsigned char ztime, jenks;
+ unsigned char drift_time;
/* toggles */
unsigned char press_to_select;
--- a/drivers/input/mouse/trackpoint.c 2014-12-06 13:12:34.167917741 +0100
+++ b/drivers/input/mouse/trackpoint.c 2014-12-06 16:03:09.587952302 +0100
@@ -227,6 +227,7 @@ TRACKPOINT_INT_ATTR(thresh, TP_THRESH, T
TRACKPOINT_INT_ATTR(upthresh, TP_UP_THRESH, TP_DEF_UP_THRESH);
TRACKPOINT_INT_ATTR(ztime, TP_Z_TIME, TP_DEF_Z_TIME);
TRACKPOINT_INT_ATTR(jenks, TP_JENKS_CURV, TP_DEF_JENKS_CURV);
+TRACKPOINT_INT_ATTR(drift_time, TP_DRIFT_TIME, TP_DEF_DRIFT_TIME);
TRACKPOINT_BIT_ATTR(press_to_select, TP_TOGGLE_PTSON, TP_MASK_PTSON, 0,
TP_DEF_PTSON);
@@ -249,6 +250,7 @@ static struct attribute *trackpoint_attr
&psmouse_attr_press_to_select.dattr.attr,
&psmouse_attr_skipback.dattr.attr,
&psmouse_attr_ext_dev.dattr.attr,
+ &psmouse_attr_drift_time.dattr.attr,
NULL
};
@@ -312,6 +314,7 @@ static int trackpoint_sync(struct psmous
TRACKPOINT_UPDATE(in_power_on_state, psmouse, tp, upthresh);
TRACKPOINT_UPDATE(in_power_on_state, psmouse, tp, ztime);
TRACKPOINT_UPDATE(in_power_on_state, psmouse, tp, jenks);
+ TRACKPOINT_UPDATE(in_power_on_state, psmouse, tp, drift_time);
/* toggles */
TRACKPOINT_UPDATE(in_power_on_state, psmouse, tp, press_to_select);
@@ -333,6 +336,7 @@ static void trackpoint_defaults(struct t
TRACKPOINT_SET_POWER_ON_DEFAULT(tp, ztime);
TRACKPOINT_SET_POWER_ON_DEFAULT(tp, jenks);
TRACKPOINT_SET_POWER_ON_DEFAULT(tp, inertia);
+ TRACKPOINT_SET_POWER_ON_DEFAULT(tp, drift_time);
/* toggles */
TRACKPOINT_SET_POWER_ON_DEFAULT(tp, press_to_select);
^ permalink raw reply
* Re: [PATCH resend v2] input: Add new sun4i-lradc-keys driver
From: Dmitry Torokhov @ 2014-12-17 17:32 UTC (permalink / raw)
To: Hans de Goede
Cc: Maxime Ripard, linux-input-u79uwXL29TY76Z2rM5mHXA,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, devicetree,
linux-sunxi-/JYPxA39Uh5TLH3MbocFFw
In-Reply-To: <1418827411-13265-2-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
On Wednesday, December 17, 2014 03:43:31 PM Hans de Goede wrote:
> + /*
> + * lradc supports only one keypress at a time, release does not give
> + * any info as to which key was released, so we cache the keycode.
> + */
> + if ((ints & CHAN0_KEYDOWN_IRQ) && lradc->chan0_keycode == 0) {
> + val = readl(lradc->base + LRADC_DATA0) & 0x3f;
> + voltage = val * lradc->vref / 63;
> +
> + for (i = 0; i < lradc->chan0_map_count; i++) {
> + diff = abs(lradc->chan0_map[i].voltage - voltage);
> + if (diff < closest) {
> + closest = diff;
> + keycode = lradc->chan0_map[i].keycode;
> + }
> + }
> +
> + lradc->chan0_keycode = keycode;
> + input_report_key(lradc->input, lradc->chan0_keycode, 1);
> + }
> +
> + if (ints & CHAN0_KEYUP_IRQ) {
> + input_report_key(lradc->input, lradc->chan0_keycode, 0);
> + lradc->chan0_keycode = 0;
> + }
Can release and press be reported simultaneously? Should we process release
first?
Thanks.
--
Dmitry
^ permalink raw reply
* Re: [PATCH] Input: Add support for CLOCK_BOOTTIME
From: Dmitry Torokhov @ 2014-12-17 18:20 UTC (permalink / raw)
To: Aniroop Mathur; +Cc: linux-input, a.mathur, Thomas Gleixner, John Stultz
In-Reply-To: <1418748994-2875-1-git-send-email-aniroop.mathur@gmail.com>
Hi Aniroop,
On Tue, Dec 16, 2014 at 10:26:34PM +0530, Aniroop Mathur wrote:
> This patch adds support for CLOCK_BOOTTIME for input event timestamp.
> CLOCK_BOOTTIME includes suspend time, so it would allow aplications
> to get correct time difference between two events even when system
> resumes from suspend state.
>
> Signed-off-by: Aniroop Mathur <a.mathur@samsung.com>
> ---
> drivers/input/evdev.c | 33 +++++++++++++++++++++------------
> 1 file changed, 21 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
> index de05545..7825794 100644
> --- a/drivers/input/evdev.c
> +++ b/drivers/input/evdev.c
> @@ -28,6 +28,13 @@
> #include <linux/cdev.h>
> #include "input-compat.h"
>
> +enum clock_type {
> + REAL = 0,
> + MONO,
> + BOOT,
> + CLK_MAX
> +};
> +
> struct evdev {
> int open;
> struct input_handle handle;
> @@ -108,8 +115,9 @@ static void evdev_queue_syn_dropped(struct evdev_client *client)
> struct input_event ev;
> ktime_t time;
>
> - time = (client->clkid == CLOCK_MONOTONIC) ?
> - ktime_get() : ktime_get_real();
> + time = (client->clkid == CLOCK_REALTIME) ?
> + ktime_get_real() : (client->clkid == CLOCK_MONOTONIC) ?
> + ktime_get() : ktime_get_boottime();
>
> ev.time = ktime_to_timeval(time);
> ev.type = EV_SYN;
> @@ -159,7 +167,7 @@ static void __pass_event(struct evdev_client *client,
>
> static void evdev_pass_values(struct evdev_client *client,
> const struct input_value *vals, unsigned int count,
> - ktime_t mono, ktime_t real)
> + ktime_t *ev_time)
> {
> struct evdev *evdev = client->evdev;
> const struct input_value *v;
> @@ -169,8 +177,9 @@ static void evdev_pass_values(struct evdev_client *client,
> if (client->revoked)
> return;
>
> - event.time = ktime_to_timeval(client->clkid == CLOCK_MONOTONIC ?
> - mono : real);
> + event.time = ktime_to_timeval(client->clkid == CLOCK_REALTIME ?
> + ev_time[REAL] : client->clkid == CLOCK_MONOTONIC ?
> + ev_time[MONO] : ev_time[BOOT]);
This becomes unwieldy. Should we have client->clk_type instead of
client->clkid and convert CLOCK_* into your EVDEV_CLK_{REAL|MONO|BOOT}
when setting it in ioctl and then do
event.time = ktime_to_timeval(ev_time[client->clk_offset]);
>
> /* Interrupts are disabled, just acquire the lock. */
> spin_lock(&client->buffer_lock);
> @@ -198,21 +207,21 @@ static void evdev_events(struct input_handle *handle,
> {
> struct evdev *evdev = handle->private;
> struct evdev_client *client;
> - ktime_t time_mono, time_real;
> + ktime_t ev_time[CLK_MAX];
>
> - time_mono = ktime_get();
> - time_real = ktime_mono_to_real(time_mono);
> + ev_time[MONO] = ktime_get();
> + ev_time[REAL] = ktime_mono_to_real(ev_time[MONO]);
> + ev_time[BOOT] = ktime_get_boottime();
I do not think we want to use ktime_get_boottime() here; I'd rather you
use ktime_mono_to_anY(ev_time[MONO], TK_OFFS_BOOT) so that all 3 times
are consistent.
>
> rcu_read_lock();
>
> client = rcu_dereference(evdev->grab);
>
> if (client)
> - evdev_pass_values(client, vals, count, time_mono, time_real);
> + evdev_pass_values(client, vals, count, ev_time);
> else
> list_for_each_entry_rcu(client, &evdev->client_list, node)
> - evdev_pass_values(client, vals, count,
> - time_mono, time_real);
> + evdev_pass_values(client, vals, count, ev_time);
>
> rcu_read_unlock();
> }
> @@ -874,7 +883,7 @@ static long evdev_do_ioctl(struct file *file, unsigned int cmd,
> case EVIOCSCLOCKID:
> if (copy_from_user(&i, p, sizeof(unsigned int)))
> return -EFAULT;
> - if (i != CLOCK_MONOTONIC && i != CLOCK_REALTIME)
> + if (i != CLOCK_MONOTONIC && i != CLOCK_REALTIME && i != CLOCK_BOOTTIME)
> return -EINVAL;
> client->clkid = i;
> return 0;
> --
> 1.9.1
>
Thanks.
--
Dmitry
^ permalink raw reply
* Re: [RFC PATCHv2] fixp-arith: replace sin/cos table by a better precision one
From: Prashant Laddha (prladdha) @ 2014-12-17 19:11 UTC (permalink / raw)
To: Mauro Carvalho Chehab, Linux Media Mailing List
Cc: Mauro Carvalho Chehab, Dmitry Torokhov, Hans de Goede,
linux-input@vger.kernel.org
In-Reply-To: <10bb48a8efd28edbd9fea365fe8785e86331f8d2.1418823631.git.mchehab@osg.samsung.com>
[-- Attachment #1: Type: text/plain, Size: 1750 bytes --]
Hi Mauro,
I was able to test your patch with vivid sdr tone generation. It calls
sin/cos functions with radians as argument. I find that the sine wave
generated using fixp_sin32_rad() show discontinuities, especially around
90, 180 degrees. After debugging it further, these discontinuities seems
to be originating due to division of negative number. Please find it below
On 17/12/14 7:12 pm, "Mauro Carvalho Chehab" <mchehab@osg.samsung.com>
wrote:
>
>+ */
>+static inline s32 fixp_sin32_rad(u32 radians, u32 twopi)
> {
>+ int degrees;
>+ s32 v1, v2, dx, dy;
>+ s64 tmp;
>+ degrees = (radians * 360) / twopi;
Not sure if we should use higher precision here. But just a question - in
case, caller function uses higher precision for representing radians,
(radians * 360) can probably overflow, right ? So, could we possibly
specify on max precision for representing radian fraction cannot be more
than 18 bits.
>+ v1 = fixp_sin32(degrees);
>+ v2 = fixp_sin32(degrees + 1);
>+ dx = twopi / 360;
>+ dy = v2 - v1;
>+ tmp = radians - (degrees * twopi) / 360;
Same as above.
>+ tmp *= dy;
>+ do_div(tmp, dx);
tmp can go negative. do_div() cannot handle negative number. We could
probably avoid do_div and do tmp / dx here. If we want to use do_div(), we
could still do it by modifying radian to degree calculation.
tmp goes negative when the slope sine waveform is negative, that is 2nd
and 3rd quadrant. We could avoid it by deciding the quadrant based on
radians and then calling fixp_sin32(). I modified the function on lines of
fixp_sin32() and tested. It works fine. Attaching a diff for fixp-arith.h
for with the this change to avoid negative values of tmp in
fixp_sin32_rad().
>2.1.0
>
[-- Attachment #2: fixp-arith.diff --]
[-- Type: application/octet-stream, Size: 5055 bytes --]
diff --git a/include/linux/fixp-arith.h b/include/linux/fixp-arith.h
index 3089d73..5973429 100644
--- a/include/linux/fixp-arith.h
+++ b/include/linux/fixp-arith.h
@@ -29,59 +29,116 @@
#include <linux/types.h>
-/* The type representing fixed-point values */
-typedef s16 fixp_t;
-
-#define FRAC_N 8
-#define FRAC_MASK ((1<<FRAC_N)-1)
-
-/* Not to be used directly. Use fixp_{cos,sin} */
-static const fixp_t cos_table[46] = {
- 0x0100, 0x00FF, 0x00FF, 0x00FE, 0x00FD, 0x00FC, 0x00FA, 0x00F8,
- 0x00F6, 0x00F3, 0x00F0, 0x00ED, 0x00E9, 0x00E6, 0x00E2, 0x00DD,
- 0x00D9, 0x00D4, 0x00CF, 0x00C9, 0x00C4, 0x00BE, 0x00B8, 0x00B1,
- 0x00AB, 0x00A4, 0x009D, 0x0096, 0x008F, 0x0087, 0x0080, 0x0078,
- 0x0070, 0x0068, 0x005F, 0x0057, 0x004F, 0x0046, 0x003D, 0x0035,
- 0x002C, 0x0023, 0x001A, 0x0011, 0x0008, 0x0000
+static const s32 sin_table[] = {
+ 0x00000000, 0x023be165, 0x04779632, 0x06b2f1d2, 0x08edc7b6, 0x0b27eb5c,
+ 0x0d61304d, 0x0f996a26, 0x11d06c96, 0x14060b67, 0x163a1a7d, 0x186c6ddd,
+ 0x1a9cd9ac, 0x1ccb3236, 0x1ef74bf2, 0x2120fb82, 0x234815ba, 0x256c6f9e,
+ 0x278dde6e, 0x29ac379f, 0x2bc750e8, 0x2ddf003f, 0x2ff31bdd, 0x32037a44,
+ 0x340ff241, 0x36185aee, 0x381c8bb5, 0x3a1c5c56, 0x3c17a4e7, 0x3e0e3ddb,
+ 0x3fffffff, 0x41ecc483, 0x43d464fa, 0x45b6bb5d, 0x4793a20f, 0x496af3e1,
+ 0x4b3c8c11, 0x4d084650, 0x4ecdfec6, 0x508d9210, 0x5246dd48, 0x53f9be04,
+ 0x55a6125a, 0x574bb8e5, 0x58ea90c2, 0x5a827999, 0x5c135399, 0x5d9cff82,
+ 0x5f1f5ea0, 0x609a52d1, 0x620dbe8a, 0x637984d3, 0x64dd894f, 0x6639b039,
+ 0x678dde6d, 0x68d9f963, 0x6a1de735, 0x6b598ea1, 0x6c8cd70a, 0x6db7a879,
+ 0x6ed9eba0, 0x6ff389de, 0x71046d3c, 0x720c8074, 0x730baeec, 0x7401e4bf,
+ 0x74ef0ebb, 0x75d31a5f, 0x76adf5e5, 0x777f903b, 0x7847d908, 0x7906c0af,
+ 0x79bc384c, 0x7a6831b8, 0x7b0a9f8c, 0x7ba3751c, 0x7c32a67c, 0x7cb82884,
+ 0x7d33f0c8, 0x7da5f5a3, 0x7e0e2e31, 0x7e6c924f, 0x7ec11aa3, 0x7f0bc095,
+ 0x7f4c7e52, 0x7f834ecf, 0x7fb02dc4, 0x7fd317b3, 0x7fec09e1, 0x7ffb025e,
+ 0x7fffffff
};
+/**
+ * fixp_sin32() returns the sin of an angle in degrees
+ *
+ * @degrees: angle, in degrees. It can be positive or negative
+ *
+ * The returned value ranges from -0x7fffffff to +0x7fffffff.
+ */
-/* a: 123 -> 123.0 */
-static inline fixp_t fixp_new(s16 a)
+static inline s32 fixp_sin32(int degrees)
{
- return a<<FRAC_N;
-}
+ s32 ret;
+ bool negative = false;
-/* a: 0xFFFF -> -1.0
- 0x8000 -> 1.0
- 0x0000 -> 0.0
-*/
-static inline fixp_t fixp_new16(s16 a)
-{
- return ((s32)a)>>(16-FRAC_N);
-}
+ degrees = (degrees % 360 + 360) % 360;
+ if (degrees > 180) {
+ negative = true;
+ degrees -= 180;
+ }
+ if (degrees > 90)
+ degrees = 180 - degrees;
-static inline fixp_t fixp_cos(unsigned int degrees)
-{
- int quadrant = (degrees / 90) & 3;
- unsigned int i = degrees % 90;
-
- if (quadrant == 1 || quadrant == 3)
- i = 90 - i;
+ ret = sin_table[degrees];
- i >>= 1;
+ return negative ? -ret : ret;
- return (quadrant == 1 || quadrant == 2)? -cos_table[i] : cos_table[i];
}
-static inline fixp_t fixp_sin(unsigned int degrees)
-{
- return -fixp_cos(degrees + 90);
-}
+/* cos(x) = sin(x + 90 degrees) */
+#define fixp_cos32(v) fixp_sin32((v) + 90)
-static inline fixp_t fixp_mult(fixp_t a, fixp_t b)
+/*
+ * 16 bits variants
+ *
+ * The returned value ranges from -0x7fff to 0x7fff
+ */
+
+#define fixp_sin16(v) (fixp_sin32(v) >> 16)
+#define fixp_cos16(v) (fixp_cos32(v) >> 16)
+
+/**
+ * fixp_sin32_rad() - calculates the sin of an angle in radians
+ *
+ * @radians: angle, in radians
+ * @twopi: value to be used for 2*pi
+ *
+ * Provides a variant for the cases where just 360
+ * values is not enough. This function uses linear
+ * interpolation to a wider range of values given by
+ * twopi var.
+ *
+ * Experimental tests gave a maximum difference of
+ * 0.000038 between the value calculated by sin() and
+ * the one produced by this function, when twopi is
+ * equal to 360000. That seems to be enough precision
+ * for practical purposes.
+ */
+static inline s32 fixp_sin32_rad(u32 radians, u32 twopi)
{
- return ((s32)(a*b))>>FRAC_N;
+ int degrees;
+ s32 v1, v2, dx, dy;
+ s64 tmp;
+ u32 pi = twopi / 2;
+ s32 ret;
+ bool negative = false;
+
+ radians = (radians % twopi + twopi) % twopi;
+ if (radians > pi) {
+ negative = true;
+ radians -= pi;
+ }
+ if (radians > pi /2)
+ radians = pi - radians;
+
+ degrees = (radians * 360) / twopi;
+
+ v1 = fixp_sin32(degrees);
+ v2 = fixp_sin32(degrees + 1);
+
+ dx = twopi / 360;
+ dy = v2 - v1;
+
+ tmp = radians - (degrees * twopi) / 360;
+ do_div(tmp, dx);
+ ret = v1 + tmp;
+
+ return negative ? -ret : ret;
}
+/* cos(x) = sin(x + pi / 2 radians) */
+
+#define fixp_cos32_rad(rad, twopi) \
+ fixp_sin32_rad(rad + twopi / 4, twopi)
+
#endif
^ permalink raw reply related
* Elantech touchpad on Fujitsu E554 not working at all
From: Vincent Jaubert @ 2014-12-17 21:09 UTC (permalink / raw)
To: linux-input
My touchpad on my brand new Fujitsu E554 doesn't work at all.
Bios flashed with latest version.
The touchpad works correctly under windows 7.
Here is the partial output from "xinput -list" :
Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ USB Optical Mouse id=12 [slave pointer (2)]
⎜ ↳ Elantech PS/2 TrackPoint id=14 [slave pointer (2)]
⎜ ↳ ETPS/2 Elantech Touchpad id=15 [slave pointer (2)]
The trackpoint is working correctly since 3.18.0.
The touchpad doen't work at all.
With "dmesg | grep mouse", i got lot of :
[ 377.818193] psmouse serio2: Touchpad at isa0060/serio2/input0 lost
sync at byte 6
[ 377.818204] psmouse serio2: issuing reconnect request
I'm on Ubuntu 14.10 x86-64, with 3.18.0 kernel compiled from kernel.org sources.
Output of cat /proc/info :
Linux version 3.18.0-vanillaice (root@vincent-LIFEBOOK-E554) (gcc
version 4.9.1 (Ubuntu 4.9.1-16ubuntu6) ) #1 SMP Wed Dec 17 19:54:23
CET 2014
Outuput of lsb_release -rd :
Description: Ubuntu 14.10
Release: 14.10
Outuput of ver_linux :
Linux vincent-LIFEBOOK-E554 3.18.0-vanillaice #1 SMP Wed Dec 17
19:54:23 CET 2014 x86_64 x86_64 x86_64 GNU/Linux
Gnu C 4.9.1
Gnu make 4.0
binutils 2.24.90.20141014
util-linux 2.25.1
mount debug
module-init-tools 18
e2fsprogs 1.42.10
pcmciautils 018
PPP 2.4.5
Linux C Library 2.19
Dynamic linker (ldd) 2.19
Procps 3.3.9
Net-tools 1.60
Kbd 1.15.5
Sh-utils 8.23
wireless-tools 30
Modules Loaded isofs hid_generic usbhid hid ctr ccm arc4
snd_hda_codec_hdmi iwlmvm mac80211 snd_hda_codec_realtek
snd_hda_codec_generic iwlwifi rtsx_pci_ms memstick cfg80211 intel_rapl
x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel kvm
crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel
aes_x86_64 lrw gf128mul glue_helper ablk_helper cryptd snd_hda_intel
snd_hda_controller snd_hda_codec snd_hwdep joydev snd_pcm serio_raw
snd_seq_midi snd_seq_midi_event uvcvideo videobuf2_vmalloc snd_rawmidi
videobuf2_memops videobuf2_core snd_seq cdc_mbim qcserial cdc_wdm
v4l2_common cdc_ncm usb_wwan usbnet usbserial videodev media
snd_seq_device snd_timer snd btusb mei_me mei soundcore lpc_ich shpchp
i915 mac_hid drm_kms_helper ie31200_edac drm video i2c_algo_bit
edac_core intel_rst fujitsu_laptop rfcomm bnep bluetooth parport_pc
ppdev lp parport binfmt_misc rtsx_pci_sdmmc ahci libahci psmouse r8169
rtsx_pci mii
Output of cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 60
model name : Intel(R) Core(TM) i5-4210M CPU @ 2.60GHz
stepping : 3
microcode : 0x1c
cpu MHz : 800.007
cache size : 3072 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx
pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl
xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor
ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe
popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida
arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase
tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt
bugs :
bogomips : 5188.49
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 60
model name : Intel(R) Core(TM) i5-4210M CPU @ 2.60GHz
stepping : 3
microcode : 0x1c
cpu MHz : 800.312
cache size : 3072 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 2
apicid : 1
initial apicid : 1
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx
pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl
xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor
ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe
popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida
arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase
tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt
bugs :
bogomips : 5188.49
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:
processor : 2
vendor_id : GenuineIntel
cpu family : 6
model : 60
model name : Intel(R) Core(TM) i5-4210M CPU @ 2.60GHz
stepping : 3
microcode : 0x1c
cpu MHz : 800.007
cache size : 3072 KB
physical id : 0
siblings : 4
core id : 1
cpu cores : 2
apicid : 2
initial apicid : 2
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx
pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl
xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor
ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe
popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida
arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase
tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt
bugs :
bogomips : 5188.49
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:
processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 60
model name : Intel(R) Core(TM) i5-4210M CPU @ 2.60GHz
stepping : 3
microcode : 0x1c
cpu MHz : 800.109
cache size : 3072 KB
physical id : 0
siblings : 4
core id : 1
cpu cores : 2
apicid : 3
initial apicid : 3
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx
pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl
xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor
ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe
popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida
arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase
tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt
bugs :
bogomips : 5188.49
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:
output of cat /proc/modules
isofs 39720 1 - Live 0x0000000000000000
hid_generic 12559 0 - Live 0x0000000000000000
usbhid 52565 0 - Live 0x0000000000000000
hid 110066 2 hid_generic,usbhid, Live 0x0000000000000000
ctr 13049 1 - Live 0x0000000000000000
ccm 17731 1 - Live 0x0000000000000000
arc4 12608 2 - Live 0x0000000000000000
snd_hda_codec_hdmi 51974 1 - Live 0x0000000000000000
iwlmvm 251094 0 - Live 0x0000000000000000
mac80211 674115 1 iwlmvm, Live 0x0000000000000000
snd_hda_codec_realtek 79613 1 - Live 0x0000000000000000
snd_hda_codec_generic 68875 1 snd_hda_codec_realtek, Live 0x0000000000000000
iwlwifi 186039 1 iwlmvm, Live 0x0000000000000000
rtsx_pci_ms 18168 0 - Live 0x0000000000000000
memstick 16966 1 rtsx_pci_ms, Live 0x0000000000000000
cfg80211 513009 3 iwlmvm,mac80211,iwlwifi, Live 0x0000000000000000
intel_rapl 18783 0 - Live 0x0000000000000000
x86_pkg_temp_thermal 14205 0 - Live 0x0000000000000000
intel_powerclamp 18786 0 - Live 0x0000000000000000
coretemp 13441 0 - Live 0x0000000000000000
kvm_intel 148273 0 - Live 0x0000000000000000
kvm 466035 1 kvm_intel, Live 0x0000000000000000
crct10dif_pclmul 14307 0 - Live 0x0000000000000000
crc32_pclmul 13133 0 - Live 0x0000000000000000
ghash_clmulni_intel 13230 0 - Live 0x0000000000000000
aesni_intel 169590 2 - Live 0x0000000000000000
aes_x86_64 17131 1 aesni_intel, Live 0x0000000000000000
lrw 13287 1 aesni_intel, Live 0x0000000000000000
gf128mul 14951 1 lrw, Live 0x0000000000000000
glue_helper 13944 1 aesni_intel, Live 0x0000000000000000
ablk_helper 13597 1 aesni_intel, Live 0x0000000000000000
cryptd 20360 3 ghash_clmulni_intel,aesni_intel,ablk_helper, Live
0x0000000000000000
snd_hda_intel 30520 6 - Live 0x0000000000000000
snd_hda_controller 31872 1 snd_hda_intel, Live 0x0000000000000000
snd_hda_codec 139421 5
snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_codec_generic,snd_hda_intel,snd_hda_controller,
Live 0x0000000000000000
snd_hwdep 17698 1 snd_hda_codec, Live 0x0000000000000000
joydev 17344 0 - Live 0x0000000000000000
snd_pcm 105335 5
snd_hda_codec_hdmi,snd_hda_intel,snd_hda_controller,snd_hda_codec,
Live 0x0000000000000000
serio_raw 13434 0 - Live 0x0000000000000000
snd_seq_midi 13564 0 - Live 0x0000000000000000
snd_seq_midi_event 14899 1 snd_seq_midi, Live 0x0000000000000000
uvcvideo 81109 0 - Live 0x0000000000000000
videobuf2_vmalloc 13216 1 uvcvideo, Live 0x0000000000000000
snd_rawmidi 30876 1 snd_seq_midi, Live 0x0000000000000000
videobuf2_memops 13362 1 videobuf2_vmalloc, Live 0x0000000000000000
videobuf2_core 47079 1 uvcvideo, Live 0x0000000000000000
snd_seq 67178 2 snd_seq_midi,snd_seq_midi_event, Live 0x0000000000000000
cdc_mbim 13400 0 - Live 0x0000000000000000
qcserial 17286 0 - Live 0x0000000000000000
cdc_wdm 23109 1 cdc_mbim, Live 0x0000000000000000
v4l2_common 15682 1 videobuf2_core, Live 0x0000000000000000
cdc_ncm 30903 1 cdc_mbim, Live 0x0000000000000000
usb_wwan 19865 1 qcserial, Live 0x0000000000000000
usbnet 43806 2 cdc_mbim,cdc_ncm, Live 0x0000000000000000
usbserial 45100 2 qcserial,usb_wwan, Live 0x0000000000000000
videodev 158682 3 uvcvideo,videobuf2_core,v4l2_common, Live 0x0000000000000000
media 21963 2 uvcvideo,videodev, Live 0x0000000000000000
snd_seq_device 14497 3 snd_seq_midi,snd_rawmidi,snd_seq, Live 0x0000000000000000
snd_timer 29458 2 snd_pcm,snd_seq, Live 0x0000000000000000
snd 87611 22 snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_codec_generic,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_rawmidi,snd_seq,snd_seq_device,snd_timer,
Live 0x0000000000000000
btusb 32336 0 - Live 0x0000000000000000
mei_me 19568 0 - Live 0x0000000000000000
mei 87928 1 mei_me, Live 0x0000000000000000
soundcore 15052 2 snd_hda_codec,snd, Live 0x0000000000000000
lpc_ich 21093 0 - Live 0x0000000000000000
shpchp 37040 0 - Live 0x0000000000000000
i915 997306 6 - Live 0x0000000000000000
mac_hid 13227 0 - Live 0x0000000000000000
drm_kms_helper 98384 1 i915, Live 0x0000000000000000
ie31200_edac 12728 0 - Live 0x0000000000000000
drm 317398 5 i915,drm_kms_helper, Live 0x0000000000000000
video 20205 1 i915, Live 0x0000000000000000
i2c_algo_bit 13406 1 i915, Live 0x0000000000000000
edac_core 51809 1 ie31200_edac, Live 0x0000000000000000
intel_rst 12900 0 - Live 0x0000000000000000
fujitsu_laptop 18743 0 - Live 0x0000000000000000
rfcomm 69427 8 - Live 0x0000000000000000
bnep 19543 2 - Live 0x0000000000000000
bluetooth 461507 22 btusb,rfcomm,bnep, Live 0x0000000000000000
parport_pc 32741 0 - Live 0x0000000000000000
ppdev 17635 0 - Live 0x0000000000000000
lp 17759 0 - Live 0x0000000000000000
parport 42264 3 parport_pc,ppdev,lp, Live 0x0000000000000000
binfmt_misc 17424 1 - Live 0x0000000000000000
rtsx_pci_sdmmc 23190 0 - Live 0x0000000000000000
ahci 34019 3 - Live 0x0000000000000000
libahci 32190 1 ahci, Live 0x0000000000000000
psmouse 111475 0 - Live 0x0000000000000000
r8169 84648 0 - Live 0x0000000000000000
rtsx_pci 46889 2 rtsx_pci_ms,rtsx_pci_sdmmc, Live 0x0000000000000000
mii 13934 2 usbnet,r8169, Live 0x0000000000000000
cat /proc/ioports
0000-0cf7 : PCI Bus 0000:00
0000-001f : dma1
0020-0021 : pic1
0040-0043 : timer0
0050-0053 : timer1
0060-0060 : keyboard
0061-0061 : PNP0800:00
0062-0062 : PNP0C09:00
0062-0062 : EC data
0064-0064 : keyboard
0066-0066 : PNP0C09:00
0066-0066 : EC cmd
0070-0077 : rtc0
0080-008f : dma page reg
00a0-00a1 : pic2
00c0-00df : dma2
00f0-00ff : fpu
00f0-00f0 : PNP0C04:00
03c0-03df : vesafb
0410-0415 : ACPI CPU throttle
04d0-04d1 : pnp 00:01
0600-0603 : pnp 00:01
0604-0607 : pnp 00:01
0800-087f : pnp 00:01
0cf8-0cff : PCI conf1
0d00-ffff : PCI Bus 0000:00
1640-164f : pnp 00:01
1800-187f : pnp 00:01
1800-1803 : ACPI PM1a_EVT_BLK
1804-1805 : ACPI PM1a_CNT_BLK
1808-180b : ACPI PM_TMR
1820-182f : ACPI GPE0_BLK
1830-1833 : iTCO_wdt
1850-1850 : ACPI PM2_CNT_BLK
1860-187f : iTCO_wdt
1880-18ff : pnp 00:01
2000-2003 : pnp 00:01
2100-217f : pnp 00:01
2180-21ff : pnp 00:01
3000-3fff : PCI Bus 0000:02
3000-30ff : 0000:02:00.0
3000-30ff : r8169
4000-403f : 0000:00:02.0
4060-407f : 0000:00:1f.2
4060-407f : ahci
4080-4087 : 0000:00:1f.2
4080-4087 : ahci
4088-408f : 0000:00:1f.2
4088-408f : ahci
4090-4093 : 0000:00:1f.2
4090-4093 : ahci
4094-4097 : 0000:00:1f.2
4094-4097 : ahci
efa0-efbf : 0000:00:1f.3
f800-f87f : pnp 00:01
f880-f8ff : pnp 00:01
fc00-fc7f : pnp 00:01
fc80-fcff : pnp 00:01
fd00-fd7f : pnp 00:01
cat /proc/iomem
00000000-00000fff : reserved
00001000-0009cfff : System RAM
0009d000-0009ffff : reserved
000a0000-000bffff : PCI Bus 0000:00
000c0000-000cebff : Video ROM
000e0000-000fffff : reserved
000f0000-000fffff : System ROM
00100000-c431bfff : System RAM
01000000-017a4a44 : Kernel code
017a4a45-01d302ff : Kernel data
01e95000-01fdffff : Kernel bss
c431c000-c451dfff : reserved
c451e000-da64efff : System RAM
da64f000-dce3efff : reserved
dce3f000-dcf9efff : ACPI Non-volatile Storage
dcf9f000-dcffefff : ACPI Tables
dcfff000-dcffffff : System RAM
dd000000-df9fffff : reserved
dda00000-df9fffff : Graphics Stolen Memory
dfa00000-feafffff : PCI Bus 0000:00
dfa10000-dfa1ffff : pnp 00:00
e0000000-efffffff : 0000:00:02.0
f0000000-f03fffff : 0000:00:02.0
f0400000-f04fffff : PCI Bus 0000:02
f0400000-f0403fff : 0000:02:00.0
f0400000-f0403fff : r8169
f0500000-f05fffff : PCI Bus 0000:04
f0500000-f0500fff : 0000:04:00.0
f0500000-f0500fff : rtsx_pci
f0600000-f06fffff : PCI Bus 0000:03
f0600000-f0601fff : 0000:03:00.0
f0600000-f0601fff : iwlwifi
f0700000-f07fffff : PCI Bus 0000:02
f0700000-f0700fff : 0000:02:00.0
f0700000-f0700fff : r8169
f0800000-f080ffff : 0000:00:14.0
f0800000-f080ffff : xhci-hcd
f0810000-f0813fff : 0000:00:03.0
f0810000-f0813fff : ICH HD audio
f0814000-f0817fff : 0000:00:1b.0
f0814000-f0817fff : ICH HD audio
f0818000-f08180ff : 0000:00:1f.3
f0819000-f081900f : 0000:00:16.0
f0819000-f081900f : mei_me
f081c000-f081c7ff : 0000:00:1f.2
f081c000-f081c7ff : ahci
f8000000-fbffffff : PCI MMCONFIG 0000 [bus 00-3f]
f8000000-fbffffff : reserved
f8000000-fbffffff : pnp 00:00
fec00000-fec00fff : reserved
fec00000-fec003ff : IOAPIC 0
fed00000-fed003ff : HPET 0
fed00000-fed003ff : pnp 00:05
fed08000-fed08fff : reserved
fed08000-fed08fff : pnp 00:00
fed10000-fed19fff : reserved
fed10000-fed17fff : pnp 00:00
fed18000-fed18fff : pnp 00:00
fed19000-fed19fff : pnp 00:00
fed1c000-fed1ffff : reserved
fed1c000-fed1ffff : pnp 00:00
fed1f410-fed1f414 : iTCO_wdt
fed20000-fed3ffff : pnp 00:00
fed40000-fed44fff : pnp 00:00
fed45000-fed8ffff : pnp 00:00
fed90000-fed93fff : pnp 00:00
fee00000-fee00fff : Local APIC
fee00000-fee00fff : reserved
fef00000-feffffff : pnp 00:00
ffa20000-ffffffff : reserved
100000000-41f5fffff : System RAM
41f600000-41fffffff : RAM buffer
lspci -vvv
00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core
Processor DRAM Controller (rev 06)
Subsystem: Fujitsu Limited. Device 17a6
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort+ >SERR- <PERR- INTx-
Latency: 0
Capabilities: [e0] Vendor Specific Information: Len=0c <?>
00:02.0 VGA compatible controller: Intel Corporation 4th Gen Core
Processor Integrated Graphics Controller (rev 06) (prog-if 00 [VGA
controller])
Subsystem: Fujitsu Limited. Device 17af
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pin A routed to IRQ 28
Region 0: Memory at f0000000 (64-bit, non-prefetchable) [size=4M]
Region 2: Memory at e0000000 (64-bit, prefetchable) [size=256M]
Region 4: I/O ports at 4000 [size=64]
Expansion ROM at <unassigned> [disabled]
Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
Address: fee0f00c Data: 41b1
Capabilities: [d0] Power Management version 2
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [a4] PCI Advanced Features
AFCap: TP+ FLR+
AFCtrl: FLR-
AFStatus: TP-
Kernel driver in use: i915
00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core
Processor HD Audio Controller (rev 06)
Subsystem: Fujitsu Limited. Device 17c6
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 30
Region 0: Memory at f0810000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [50] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit-
Address: fee0f00c Data: 41d1
Capabilities: [70] Express (v1) Root Complex Integrated Endpoint, MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0
ExtTag- RBE-
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 128 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
Kernel driver in use: snd_hda_intel
00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset
Family USB xHCI (rev 04) (prog-if 30 [XHCI])
Subsystem: Fujitsu Limited. Device 17e1
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pin A routed to IRQ 24
Region 0: Memory at f0800000 (64-bit, non-prefetchable) [size=64K]
Capabilities: [70] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0-,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
Address: 00000000fee0300c Data: 4171
Kernel driver in use: xhci_hcd
00:16.0 Communication controller: Intel Corporation 8 Series/C220
Series Chipset Family MEI Controller #1 (rev 04)
Subsystem: Fujitsu Limited. Device 17dd
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pin A routed to IRQ 29
Region 0: Memory at f0819000 (64-bit, non-prefetchable) [size=16]
Capabilities: [50] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [8c] MSI: Enable+ Count=1/1 Maskable- 64bit+
Address: 00000000fee0f00c Data: 41c1
Kernel driver in use: mei_me
00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset
High Definition Audio Controller (rev 04)
Subsystem: Fujitsu Limited. Device 17ff
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 31
Region 0: Memory at f0814000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [50] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+
Address: 00000000fee0f00c Data: 4122
Capabilities: [70] Express (v1) Root Complex Integrated Endpoint, MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0
ExtTag- RBE-
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 128 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
Capabilities: [100 v1] Virtual Channel
Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
Arb: Fixed- WRR32- WRR64- WRR128-
Ctrl: ArbSelect=Fixed
Status: InProgress-
VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=01
Status: NegoPending- InProgress-
VC1: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
Ctrl: Enable+ ID=2 ArbSelect=Fixed TC/VC=04
Status: NegoPending- InProgress-
Kernel driver in use: snd_hda_intel
00:1c.0 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset
Family PCI Express Root Port #1 (rev d4) (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
I/O behind bridge: 0000f000-00000fff
Memory behind bridge: fff00000-000fffff
Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff
Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort+ <SERR- <PERR-
BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
Capabilities: [40] Express (v2) Root Port (Slot-), MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0
ExtTag- RBE+
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 128 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
LnkCap: Port #1, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s
<1us, L1 <4us
ClockPM- Surprise- LLActRep+ BwNot+
LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes Disabled- CommClk-
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x0, TrErr- Train- SlotClk+ DLActive-
BWMgmt- ABWMgmt-
RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
RootCap: CRSVisible-
RootSta: PME ReqID 0000, PMEStatus- PMEPending-
DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+, OBFF Via
WAKE# ARIFwd-
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF
Disabled ARIFwd-
LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-,
EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
Address: 00000000 Data: 0000
Capabilities: [90] Subsystem: Fujitsu Limited. Device 17d3
Capabilities: [a0] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use: pcieport
00:1c.3 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset
Family PCI Express Root Port #4 (rev d4) (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
I/O behind bridge: 00003000-00003fff
Memory behind bridge: f0700000-f07fffff
Prefetchable memory behind bridge: 00000000f0400000-00000000f04fffff
Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort+ <SERR- <PERR-
BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0
ExtTag- RBE+
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 128 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
LnkCap: Port #4, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s
<512ns, L1 <16us
ClockPM- Surprise- LLActRep+ BwNot+
LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive+
BWMgmt+ ABWMgmt-
SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
Slot #3, PowerLimit 10.000W; Interlock- NoCompl+
SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
Changed: MRL- PresDet- LinkState+
RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
RootCap: CRSVisible-
RootSta: PME ReqID 0000, PMEStatus- PMEPending-
DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+, OBFF Not
Supported ARIFwd-
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF
Disabled ARIFwd-
LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-,
EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
Address: 00000000 Data: 0000
Capabilities: [90] Subsystem: Fujitsu Limited. Device 17d3
Capabilities: [a0] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use: pcieport
00:1c.5 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset
Family PCI Express Root Port #6 (rev d4) (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Bus: primary=00, secondary=03, subordinate=03, sec-latency=0
I/O behind bridge: 0000f000-00000fff
Memory behind bridge: f0600000-f06fffff
Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff
Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort+ <SERR- <PERR-
BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0
ExtTag- RBE+
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 128 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
LnkCap: Port #6, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s
<512ns, L1 <16us
ClockPM- Surprise- LLActRep+ BwNot+
LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive+
BWMgmt+ ABWMgmt-
SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
Slot #5, PowerLimit 10.000W; Interlock- NoCompl+
SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
Changed: MRL- PresDet- LinkState+
RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
RootCap: CRSVisible-
RootSta: PME ReqID 0000, PMEStatus- PMEPending-
DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+, OBFF Not
Supported ARIFwd-
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF
Disabled ARIFwd-
LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-,
EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
Address: 00000000 Data: 0000
Capabilities: [90] Subsystem: Fujitsu Limited. Device 17d3
Capabilities: [a0] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use: pcieport
00:1c.7 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset
Family PCI Express Root Port #8 (rev d4) (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Bus: primary=00, secondary=04, subordinate=04, sec-latency=0
I/O behind bridge: 0000f000-00000fff
Memory behind bridge: f0500000-f05fffff
Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff
Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort+ <SERR- <PERR-
BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0
ExtTag- RBE+
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 128 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
LnkCap: Port #8, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s
<512ns, L1 <16us
ClockPM- Surprise- LLActRep+ BwNot+
LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive+
BWMgmt+ ABWMgmt-
SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
Slot #7, PowerLimit 10.000W; Interlock- NoCompl+
SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
Changed: MRL- PresDet- LinkState+
RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
RootCap: CRSVisible-
RootSta: PME ReqID 0000, PMEStatus- PMEPending-
DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+, OBFF Not
Supported ARIFwd-
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF
Disabled ARIFwd-
LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-,
EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
Address: 00000000 Data: 0000
Capabilities: [90] Subsystem: Fujitsu Limited. Device 17d3
Capabilities: [a0] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use: pcieport
00:1f.0 ISA bridge: Intel Corporation HM86 Express LPC Controller (rev 04)
Subsystem: Fujitsu Limited. Device 17c7
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Capabilities: [e0] Vendor Specific Information: Len=0c <?>
Kernel driver in use: lpc_ich
00:1f.2 SATA controller: Intel Corporation 8 Series/C220 Series
Chipset Family 6-port SATA Controller 1 [AHCI mode] (rev 04) (prog-if
01 [AHCI 1.0])
Subsystem: Fujitsu Limited. Device 17c9
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pin B routed to IRQ 26
Region 0: I/O ports at 4088 [size=8]
Region 1: I/O ports at 4094 [size=4]
Region 2: I/O ports at 4080 [size=8]
Region 3: I/O ports at 4090 [size=4]
Region 4: I/O ports at 4060 [size=32]
Region 5: Memory at f081c000 (32-bit, non-prefetchable) [size=2K]
Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
Address: fee0300c Data: 4191
Capabilities: [70] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot+,D3cold-)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [a8] SATA HBA v1.0 BAR4 Offset=00000004
Kernel driver in use: ahci
00:1f.3 SMBus: Intel Corporation 8 Series/C220 Series Chipset Family
SMBus Controller (rev 04)
Subsystem: Fujitsu Limited. Device 17cf
Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Interrupt: pin C routed to IRQ 7
Region 0: Memory at f0818000 (64-bit, non-prefetchable) [size=256]
Region 4: I/O ports at efa0 [size=32]
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd.
RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 0c)
Subsystem: Fujitsu Limited. Device 17a2
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 27
Region 0: I/O ports at 3000 [size=256]
Region 2: Memory at f0700000 (64-bit, non-prefetchable) [size=4K]
Region 4: Memory at f0400000 (64-bit, prefetchable) [size=16K]
Capabilities: [40] Power Management version 3
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
Address: 00000000fee0f00c Data: 41a1
Capabilities: [70] Express (v2) Endpoint, MSI 01
DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <512ns, L1 <64us
ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 4096 bytes
DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend-
LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency
L0s unlimited, L1 <64us
ClockPM+ Surprise- LLActRep- BwNot-
LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive-
BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR+, OBFF Via
message/WAKE#
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF Disabled
LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-,
EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [b0] MSI-X: Enable- Count=4 Masked-
Vector table: BAR=4 offset=00000000
PBA: BAR=4 offset=00000800
Capabilities: [d0] Vital Product Data
Unknown small resource type 00, will not decode more.
Capabilities: [100 v1] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
MalfTLP- ECRC- UnsupReq- ACSViol-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
MalfTLP- ECRC- UnsupReq- ACSViol-
UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+
MalfTLP+ ECRC- UnsupReq- ACSViol-
CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
AERCap: First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn-
Capabilities: [140 v1] Virtual Channel
Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
Arb: Fixed- WRR32- WRR64- WRR128-
Ctrl: ArbSelect=Fixed
Status: InProgress-
VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
Status: NegoPending- InProgress-
Capabilities: [160 v1] Device Serial Number 02-4a-11-fe-ff-b2-7f-e4
Capabilities: [170 v1] Latency Tolerance Reporting
Max snoop latency: 3145728ns
Max no snoop latency: 3145728ns
Kernel driver in use: r8169
03:00.0 Network controller: Intel Corporation Wireless 7260 (rev 73)
Subsystem: Intel Corporation Wireless-N 7260
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 32
Region 0: Memory at f0600000 (64-bit, non-prefetchable) [size=8K]
Capabilities: [c8] Power Management version 3
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+
Address: 00000000fee0100c Data: 4142
Capabilities: [40] Express (v2) Endpoint, MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <512ns, L1 unlimited
ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset+
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd+ ExtTag- PhantFunc- AuxPwr+ NoSnoop+ FLReset-
MaxPayload 128 bytes, MaxReadReq 128 bytes
DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend-
LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency
L0s <4us, L1 <32us
ClockPM+ Surprise- LLActRep- BwNot-
LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive-
BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Range B, TimeoutDis+, LTR+, OBFF Via WAKE#
DevCtl2: Completion Timeout: 16ms to 55ms, TimeoutDis-, LTR+, OBFF Disabled
LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-,
EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [100 v1] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
MalfTLP- ECRC- UnsupReq- ACSViol-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
MalfTLP- ECRC- UnsupReq- ACSViol-
UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+
MalfTLP+ ECRC- UnsupReq- ACSViol-
CESta: RxErr- BadTLP+ BadDLLP- Rollover- Timeout- NonFatalErr+
CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
Capabilities: [140 v1] Device Serial Number a0-a8-cd-ff-ff-a7-be-3a
Capabilities: [14c v1] Latency Tolerance Reporting
Max snoop latency: 3145728ns
Max no snoop latency: 3145728ns
Capabilities: [154 v1] Vendor Specific Information: ID=cafe Rev=1 Len=014 <?>
Kernel driver in use: iwlwifi
04:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd.
RTS5227 PCI Express Card Reader (rev 01)
Subsystem: Fujitsu Limited. Device 187f
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 25
Region 0: Memory at f0500000 (32-bit, non-prefetchable) [size=4K]
Capabilities: [40] Power Management version 3
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0-,D1+,D2+,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
Address: 00000000fee0f00c Data: 4181
Capabilities: [70] Express (v2) Endpoint, MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited
ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 512 bytes
DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend-
LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency
L0s unlimited, L1 <64us
ClockPM+ Surprise- LLActRep- BwNot-
LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk-
ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive-
BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Not Supported, TimeoutDis+, LTR+, OBFF
Via message/WAKE#
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF Disabled
LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-,
EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [100 v2] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
MalfTLP- ECRC- UnsupReq- ACSViol-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
MalfTLP- ECRC- UnsupReq- ACSViol-
UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+
MalfTLP+ ECRC- UnsupReq- ACSViol-
CESta: RxErr+ BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
AERCap: First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn-
Capabilities: [140 v1] Device Serial Number 00-00-00-01-00-4c-e0-00
Capabilities: [150 v1] Latency Tolerance Reporting
Max snoop latency: 3145728ns
Max no snoop latency: 3145728ns
Capabilities: [158 v1] L1 PM Substates
L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
PortCommonModeRestoreTime=60us PortTPowerOnTime=60us
Kernel driver in use: rtsx_pci
--------------------------------------------------
cat /proc/scsi/scsi
Attached devices:
Host: scsi2 Channel: 00 Id: 00 Lun: 00
Vendor: TSSTcorp Model: CDDVDW SU-208CB Rev: FU01
Type: CD-ROM ANSI SCSI revision: 05
Host: scsi4 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: SAMSUNG MZ7TE256 Rev: 200Q
Type: Direct-Access ANSI SCSI revision: 05
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* Re: [PATCH] Input: Add support for CLOCK_BOOTTIME
From: Aniroop Mathur @ 2014-12-17 21:33 UTC (permalink / raw)
To: Dmitry Torokhov
Cc: linux-input@vger.kernel.org, a.mathur, Thomas Gleixner,
John Stultz
In-Reply-To: <20141217182011.GA32399@dtor-ws>
Hello Mr. Torokhov,
On Wed, Dec 17, 2014 at 11:50 PM, Dmitry Torokhov
<dmitry.torokhov@gmail.com> wrote:
> Hi Aniroop,
>
> On Tue, Dec 16, 2014 at 10:26:34PM +0530, Aniroop Mathur wrote:
>> This patch adds support for CLOCK_BOOTTIME for input event timestamp.
>> CLOCK_BOOTTIME includes suspend time, so it would allow aplications
>> to get correct time difference between two events even when system
>> resumes from suspend state.
>>
>> Signed-off-by: Aniroop Mathur <a.mathur@samsung.com>
>> ---
>> drivers/input/evdev.c | 33 +++++++++++++++++++++------------
>> 1 file changed, 21 insertions(+), 12 deletions(-)
>>
>> diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
>> index de05545..7825794 100644
>> --- a/drivers/input/evdev.c
>> +++ b/drivers/input/evdev.c
>> @@ -28,6 +28,13 @@
>> #include <linux/cdev.h>
>> #include "input-compat.h"
>>
>> +enum clock_type {
>> + REAL = 0,
>> + MONO,
>> + BOOT,
>> + CLK_MAX
>> +};
>> +
>> struct evdev {
>> int open;
>> struct input_handle handle;
>> @@ -108,8 +115,9 @@ static void evdev_queue_syn_dropped(struct evdev_client *client)
>> struct input_event ev;
>> ktime_t time;
>>
>> - time = (client->clkid == CLOCK_MONOTONIC) ?
>> - ktime_get() : ktime_get_real();
>> + time = (client->clkid == CLOCK_REALTIME) ?
>> + ktime_get_real() : (client->clkid == CLOCK_MONOTONIC) ?
>> + ktime_get() : ktime_get_boottime();
>>
Is this okay ?
To improve readabilty,
how about adding a new funtion to get time depending upon clkid like below ?
time = get_clk_time(client->clkid);
static ktime_t get_clk_time(int id)
{
switch (id) {
case CLOCK_REALTIME: return ktime_get_real();
case CLOCK_MONOTONIC: return ktime_get();
case CLOCK_BOOTTIME: return ktime_get_bootime();
}
}
>> ev.time = ktime_to_timeval(time);
>> ev.type = EV_SYN;
>> @@ -159,7 +167,7 @@ static void __pass_event(struct evdev_client *client,
>>
>> static void evdev_pass_values(struct evdev_client *client,
>> const struct input_value *vals, unsigned int count,
>> - ktime_t mono, ktime_t real)
>> + ktime_t *ev_time)
>> {
>> struct evdev *evdev = client->evdev;
>> const struct input_value *v;
>> @@ -169,8 +177,9 @@ static void evdev_pass_values(struct evdev_client *client,
>> if (client->revoked)
>> return;
>>
>> - event.time = ktime_to_timeval(client->clkid == CLOCK_MONOTONIC ?
>> - mono : real);
>> + event.time = ktime_to_timeval(client->clkid == CLOCK_REALTIME ?
>> + ev_time[REAL] : client->clkid == CLOCK_MONOTONIC ?
>> + ev_time[MONO] : ev_time[BOOT]);
>
> This becomes unwieldy. Should we have client->clk_type instead of
> client->clkid and convert CLOCK_* into your EVDEV_CLK_{REAL|MONO|BOOT}
> when setting it in ioctl and then do
>
> event.time = ktime_to_timeval(ev_time[client->clk_offset]);
>
Sure, using clk_type would be better and improve code readability.
I am afraid how converting CLOCK_* into your
EVDEV_CLK_{REAL|MONO|BOOT} will help
because we cannot have ev_time array size more than CLK_MAX (3).
Did you mean to have following changes:
1. Add clk_type variable
struct evdev_client {
int clkid:
+ int clk_type;
}
2. Add new funtion for setting clk_type to improve readability
static int set_clk_type(struct evdev_client *client, int id)
{
switch (id) {
case CLOCK_REALTIME: client->clk_type = EV_REAL; break;
case CLOCK_MONOTONIC: client->clk_type = EV_MONO; break;
case CLOCK_BOOTTIME: client->clk_type = EV_BOOT; break;
default: return -1
}
return 0;
}
3. Addition in ioctl call
case EVIOCSCLOCKID:
...
if (!set_clk_type())
return -EINVAL;
client->clkid = i;
return 0;
4. Change in evdev_pass_values function
event.time = ktime_to_timeval(ev_time[client->clk_type]);
>>
>> /* Interrupts are disabled, just acquire the lock. */
>> spin_lock(&client->buffer_lock);
>> @@ -198,21 +207,21 @@ static void evdev_events(struct input_handle *handle,
>> {
>> struct evdev *evdev = handle->private;
>> struct evdev_client *client;
>> - ktime_t time_mono, time_real;
>> + ktime_t ev_time[CLK_MAX];
>>
>> - time_mono = ktime_get();
>> - time_real = ktime_mono_to_real(time_mono);
>> + ev_time[MONO] = ktime_get();
>> + ev_time[REAL] = ktime_mono_to_real(ev_time[MONO]);
>> + ev_time[BOOT] = ktime_get_boottime();
>
> I do not think we want to use ktime_get_boottime() here; I'd rather you
> use ktime_mono_to_anY(ev_time[MONO], TK_OFFS_BOOT) so that all 3 times
> are consistent.
>
Sure. I will send the updated patch with this change.
>>
>> rcu_read_lock();
>>
>> client = rcu_dereference(evdev->grab);
>>
>> if (client)
>> - evdev_pass_values(client, vals, count, time_mono, time_real);
>> + evdev_pass_values(client, vals, count, ev_time);
>> else
>> list_for_each_entry_rcu(client, &evdev->client_list, node)
>> - evdev_pass_values(client, vals, count,
>> - time_mono, time_real);
>> + evdev_pass_values(client, vals, count, ev_time);
>>
>> rcu_read_unlock();
>> }
>> @@ -874,7 +883,7 @@ static long evdev_do_ioctl(struct file *file, unsigned int cmd,
>> case EVIOCSCLOCKID:
>> if (copy_from_user(&i, p, sizeof(unsigned int)))
>> return -EFAULT;
>> - if (i != CLOCK_MONOTONIC && i != CLOCK_REALTIME)
>> + if (i != CLOCK_MONOTONIC && i != CLOCK_REALTIME && i != CLOCK_BOOTTIME)
>> return -EINVAL;
>> client->clkid = i;
>> return 0;
>> --
>> 1.9.1
>>
>
> Thanks.
>
> --
> Dmitry
Thanks,
Aniroop Mathur
^ permalink raw reply
* Re: [RFC PATCHv2] fixp-arith: replace sin/cos table by a better precision one
From: Mauro Carvalho Chehab @ 2014-12-17 21:54 UTC (permalink / raw)
To: Prashant Laddha (prladdha)
Cc: Linux Media Mailing List, Mauro Carvalho Chehab, Dmitry Torokhov,
Hans de Goede, linux-input@vger.kernel.org
In-Reply-To: <D0B7BE4F.27E4A%prladdha@cisco.com>
Em Wed, 17 Dec 2014 19:11:33 +0000
"Prashant Laddha (prladdha)" <prladdha@cisco.com> escreveu:
> Hi Mauro,
>
> I was able to test your patch with vivid sdr tone generation. It calls
> sin/cos functions with radians as argument. I find that the sine wave
> generated using fixp_sin32_rad() show discontinuities, especially around
> 90, 180 degrees. After debugging it further, these discontinuities seems
> to be originating due to division of negative number. Please find it below
>
> On 17/12/14 7:12 pm, "Mauro Carvalho Chehab" <mchehab@osg.samsung.com>
> wrote:
>
> >
> >+ */
> >+static inline s32 fixp_sin32_rad(u32 radians, u32 twopi)
> > {
> >+ int degrees;
> >+ s32 v1, v2, dx, dy;
> >+ s64 tmp;
> >+ degrees = (radians * 360) / twopi;
>
> Not sure if we should use higher precision here. But just a question - in
> case, caller function uses higher precision for representing radians,
> (radians * 360) can probably overflow, right ? So, could we possibly
> specify on max precision for representing radian fraction cannot be more
> than 18 bits.
True. We could call BUG_ON() if this routine is called with a
number of bits higher than a given amount.
>
> >+ v1 = fixp_sin32(degrees);
> >+ v2 = fixp_sin32(degrees + 1);
> >+ dx = twopi / 360;
> >+ dy = v2 - v1;
> >+ tmp = radians - (degrees * twopi) / 360;
>
> Same as above.
>
> >+ tmp *= dy;
> >+ do_div(tmp, dx);
>
> tmp can go negative. do_div() cannot handle negative number. We could
> probably avoid do_div and do tmp / dx here. If we want to use do_div(), we
> could still do it by modifying radian to degree calculation.
Well, we should then use div_s64(), as defined at include/linux/math64.h.
This is likely better than adding some magic.
> tmp goes negative when the slope sine waveform is negative, that is 2nd
> and 3rd quadrant. We could avoid it by deciding the quadrant based on
> radians and then calling fixp_sin32(). I modified the function on lines of
> fixp_sin32() and tested. It works fine. Attaching a diff for fixp-arith.h
> for with the this change to avoid negative values of tmp in
> fixp_sin32_rad().
Please check if the enclosed patch is better.
Thanks!
Mauro
fixp-arith: replace sin/cos table by a better precision one
The cos table used at fixp-arith.h has only 8 bits of precision.
That causes problems if it is reused on other drivers.
As some media drivers require a higher precision sin/cos
implementation, replace the current implementation by one that
will provide 32 bits precision.
The values generated by the new implementation matches the
32 bit precision of glibc's sin for an angle measured in
integer degrees.
It also provides support for fractional angles via linear
interpolation. On experimental calculus, when used a table
with a 0.001 degree angle, the maximum error for sin is
0.000038, with is likely good enough for practical purposes.
There are some logic there that seems to be specific to the
usage inside ff-memless.c. Move those logic to there, as they're
not needed elsewhere.
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
diff --git a/drivers/input/ff-memless.c b/drivers/input/ff-memless.c
index 74c0d8c6002a..fcc6c3368182 100644
--- a/drivers/input/ff-memless.c
+++ b/drivers/input/ff-memless.c
@@ -237,6 +237,18 @@ static u16 ml_calculate_direction(u16 direction, u16 force,
(force + new_force)) << 1;
}
+#define FRAC_N 8
+static inline s16 fixp_new16(s16 a)
+{
+ return ((s32)a) >> (16 - FRAC_N);
+}
+
+static inline s16 fixp_mult(s16 a, s16 b)
+{
+ a = ((s32)a * 0x100) / 0x7fff;
+ return ((s32)(a * b)) >> FRAC_N;
+}
+
/*
* Combine two effects and apply gain.
*/
@@ -247,7 +259,7 @@ static void ml_combine_effects(struct ff_effect *effect,
struct ff_effect *new = state->effect;
unsigned int strong, weak, i;
int x, y;
- fixp_t level;
+ s16 level;
switch (new->type) {
case FF_CONSTANT:
@@ -255,8 +267,8 @@ static void ml_combine_effects(struct ff_effect *effect,
level = fixp_new16(apply_envelope(state,
new->u.constant.level,
&new->u.constant.envelope));
- x = fixp_mult(fixp_sin(i), level) * gain / 0xffff;
- y = fixp_mult(-fixp_cos(i), level) * gain / 0xffff;
+ x = fixp_mult(fixp_sin16(i), level) * gain / 0xffff;
+ y = fixp_mult(-fixp_cos16(i), level) * gain / 0xffff;
/*
* here we abuse ff_ramp to hold x and y of constant force
* If in future any driver wants something else than x and y
diff --git a/drivers/media/usb/gspca/ov534.c b/drivers/media/usb/gspca/ov534.c
index 90f0d637cd9d..50b72f6dfdc6 100644
--- a/drivers/media/usb/gspca/ov534.c
+++ b/drivers/media/usb/gspca/ov534.c
@@ -810,21 +810,16 @@ static void sethue(struct gspca_dev *gspca_dev, s32 val)
s16 huesin;
s16 huecos;
- /* fixp_sin and fixp_cos accept only positive values, while
- * our val is between -90 and 90
- */
- val += 360;
-
/* According to the datasheet the registers expect HUESIN and
* HUECOS to be the result of the trigonometric functions,
* scaled by 0x80.
*
- * The 0x100 here represents the maximun absolute value
+ * The 0x7fff here represents the maximum absolute value
* returned byt fixp_sin and fixp_cos, so the scaling will
* consider the result like in the interval [-1.0, 1.0].
*/
- huesin = fixp_sin(val) * 0x80 / 0x100;
- huecos = fixp_cos(val) * 0x80 / 0x100;
+ huesin = fixp_sin16(val) * 0x80 / 0x7fff;
+ huecos = fixp_cos16(val) * 0x80 / 0x7fff;
if (huesin < 0) {
sccb_reg_write(gspca_dev, 0xab,
diff --git a/include/linux/fixp-arith.h b/include/linux/fixp-arith.h
index 3089d7382325..f3b3d2cbfcbe 100644
--- a/include/linux/fixp-arith.h
+++ b/include/linux/fixp-arith.h
@@ -1,6 +1,8 @@
#ifndef _FIXP_ARITH_H
#define _FIXP_ARITH_H
+#include <linux/math64.h>
+
/*
* Simplistic fixed-point arithmetics.
* Hmm, I'm probably duplicating some code :(
@@ -29,59 +31,126 @@
#include <linux/types.h>
-/* The type representing fixed-point values */
-typedef s16 fixp_t;
+static const s32 sin_table[] = {
+ 0x00000000, 0x023be165, 0x04779632, 0x06b2f1d2, 0x08edc7b6, 0x0b27eb5c,
+ 0x0d61304d, 0x0f996a26, 0x11d06c96, 0x14060b67, 0x163a1a7d, 0x186c6ddd,
+ 0x1a9cd9ac, 0x1ccb3236, 0x1ef74bf2, 0x2120fb82, 0x234815ba, 0x256c6f9e,
+ 0x278dde6e, 0x29ac379f, 0x2bc750e8, 0x2ddf003f, 0x2ff31bdd, 0x32037a44,
+ 0x340ff241, 0x36185aee, 0x381c8bb5, 0x3a1c5c56, 0x3c17a4e7, 0x3e0e3ddb,
+ 0x3fffffff, 0x41ecc483, 0x43d464fa, 0x45b6bb5d, 0x4793a20f, 0x496af3e1,
+ 0x4b3c8c11, 0x4d084650, 0x4ecdfec6, 0x508d9210, 0x5246dd48, 0x53f9be04,
+ 0x55a6125a, 0x574bb8e5, 0x58ea90c2, 0x5a827999, 0x5c135399, 0x5d9cff82,
+ 0x5f1f5ea0, 0x609a52d1, 0x620dbe8a, 0x637984d3, 0x64dd894f, 0x6639b039,
+ 0x678dde6d, 0x68d9f963, 0x6a1de735, 0x6b598ea1, 0x6c8cd70a, 0x6db7a879,
+ 0x6ed9eba0, 0x6ff389de, 0x71046d3c, 0x720c8074, 0x730baeec, 0x7401e4bf,
+ 0x74ef0ebb, 0x75d31a5f, 0x76adf5e5, 0x777f903b, 0x7847d908, 0x7906c0af,
+ 0x79bc384c, 0x7a6831b8, 0x7b0a9f8c, 0x7ba3751c, 0x7c32a67c, 0x7cb82884,
+ 0x7d33f0c8, 0x7da5f5a3, 0x7e0e2e31, 0x7e6c924f, 0x7ec11aa3, 0x7f0bc095,
+ 0x7f4c7e52, 0x7f834ecf, 0x7fb02dc4, 0x7fd317b3, 0x7fec09e1, 0x7ffb025e,
+ 0x7fffffff
+};
-#define FRAC_N 8
-#define FRAC_MASK ((1<<FRAC_N)-1)
+/**
+ * __fixp_sin32() returns the sin of an angle in degrees
+ *
+ * @degrees: angle, in degrees, from 0 to 360.
+ *
+ * The returned value ranges from -0x7fffffff to +0x7fffffff.
+ */
+static inline s32 __fixp_sin32(int degrees)
+{
+ s32 ret;
+ bool negative = false;
-/* Not to be used directly. Use fixp_{cos,sin} */
-static const fixp_t cos_table[46] = {
- 0x0100, 0x00FF, 0x00FF, 0x00FE, 0x00FD, 0x00FC, 0x00FA, 0x00F8,
- 0x00F6, 0x00F3, 0x00F0, 0x00ED, 0x00E9, 0x00E6, 0x00E2, 0x00DD,
- 0x00D9, 0x00D4, 0x00CF, 0x00C9, 0x00C4, 0x00BE, 0x00B8, 0x00B1,
- 0x00AB, 0x00A4, 0x009D, 0x0096, 0x008F, 0x0087, 0x0080, 0x0078,
- 0x0070, 0x0068, 0x005F, 0x0057, 0x004F, 0x0046, 0x003D, 0x0035,
- 0x002C, 0x0023, 0x001A, 0x0011, 0x0008, 0x0000
-};
+ if (degrees > 180) {
+ negative = true;
+ degrees -= 180;
+ }
+ if (degrees > 90)
+ degrees = 180 - degrees;
+ ret = sin_table[degrees];
-/* a: 123 -> 123.0 */
-static inline fixp_t fixp_new(s16 a)
-{
- return a<<FRAC_N;
+ return negative ? -ret : ret;
}
-/* a: 0xFFFF -> -1.0
- 0x8000 -> 1.0
- 0x0000 -> 0.0
-*/
-static inline fixp_t fixp_new16(s16 a)
+/**
+ * fixp_sin32() returns the sin of an angle in degrees
+ *
+ * @degrees: angle, in degrees. The angle can be positive or negative
+ *
+ * The returned value ranges from -0x7fffffff to +0x7fffffff.
+ */
+static inline s32 fixp_sin32(int degrees)
{
- return ((s32)a)>>(16-FRAC_N);
+ degrees = (degrees % 360 + 360) % 360;
+
+ return __fixp_sin32(degrees);
}
-static inline fixp_t fixp_cos(unsigned int degrees)
+/* cos(x) = sin(x + 90 degrees) */
+#define fixp_cos32(v) fixp_sin32((v) + 90)
+
+/*
+ * 16 bits variants
+ *
+ * The returned value ranges from -0x7fff to 0x7fff
+ */
+
+#define fixp_sin16(v) (fixp_sin32(v) >> 16)
+#define fixp_cos16(v) (fixp_cos32(v) >> 16)
+
+/**
+ * fixp_sin32_rad() - calculates the sin of an angle in radians
+ *
+ * @radians: angle, in radians
+ * @twopi: value to be used for 2*pi
+ *
+ * Provides a variant for the cases where just 360
+ * values is not enough. This function uses linear
+ * interpolation to a wider range of values given by
+ * twopi var.
+ *
+ * Experimental tests gave a maximum difference of
+ * 0.000038 between the value calculated by sin() and
+ * the one produced by this function, when twopi is
+ * equal to 360000. That seems to be enough precision
+ * for practical purposes.
+ *
+ * Please notice that two high numbers for twopi could cause
+ * overflows, so the routine will not allow values of twopi
+ * bigger than 1^18.
+ */
+static inline s32 fixp_sin32_rad(u32 radians, u32 twopi)
{
- int quadrant = (degrees / 90) & 3;
- unsigned int i = degrees % 90;
+ int degrees;
+ s32 v1, v2, dx, dy;
+ s64 tmp;
- if (quadrant == 1 || quadrant == 3)
- i = 90 - i;
+ /*
+ * Avoid too large values for twopi, as we don't want overflows.
+ */
+ BUG_ON(twopi > 1 << 18);
- i >>= 1;
+ degrees = (radians * 360) / twopi;
- return (quadrant == 1 || quadrant == 2)? -cos_table[i] : cos_table[i];
-}
+ degrees = (degrees % 360 + 360) % 360;
+ v1 = __fixp_sin32(degrees);
-static inline fixp_t fixp_sin(unsigned int degrees)
-{
- return -fixp_cos(degrees + 90);
-}
+ v2 = fixp_sin32(degrees + 1);
-static inline fixp_t fixp_mult(fixp_t a, fixp_t b)
-{
- return ((s32)(a*b))>>FRAC_N;
+ dx = twopi / 360;
+ dy = v2 - v1;
+
+ tmp = radians - (degrees * twopi) / 360;
+ tmp *= dy;
+
+ return v1 + div_s64(tmp, dx);
}
+/* cos(x) = sin(x + pi/2 radians) */
+
+#define fixp_cos32_rad(rad, twopi) \
+ fixp_sin32_rad(rad + twopi / 4, twopi)
+
#endif
^ permalink raw reply related
* Re: [PATCH] Input: Add support for CLOCK_BOOTTIME
From: Dmitry Torokhov @ 2014-12-17 22:03 UTC (permalink / raw)
To: Aniroop Mathur
Cc: linux-input@vger.kernel.org, a.mathur, Thomas Gleixner,
John Stultz
In-Reply-To: <CADYu30_n-mc8X8h+v4PX7Mq9TSyKY1Hh=zEeKBcHMDrikB9xmA@mail.gmail.com>
On Thu, Dec 18, 2014 at 03:03:26AM +0530, Aniroop Mathur wrote:
> Hello Mr. Torokhov,
>
> On Wed, Dec 17, 2014 at 11:50 PM, Dmitry Torokhov
> <dmitry.torokhov@gmail.com> wrote:
> > Hi Aniroop,
> >
> > On Tue, Dec 16, 2014 at 10:26:34PM +0530, Aniroop Mathur wrote:
> >> This patch adds support for CLOCK_BOOTTIME for input event timestamp.
> >> CLOCK_BOOTTIME includes suspend time, so it would allow aplications
> >> to get correct time difference between two events even when system
> >> resumes from suspend state.
> >>
> >> Signed-off-by: Aniroop Mathur <a.mathur@samsung.com>
> >> ---
> >> drivers/input/evdev.c | 33 +++++++++++++++++++++------------
> >> 1 file changed, 21 insertions(+), 12 deletions(-)
> >>
> >> diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
> >> index de05545..7825794 100644
> >> --- a/drivers/input/evdev.c
> >> +++ b/drivers/input/evdev.c
> >> @@ -28,6 +28,13 @@
> >> #include <linux/cdev.h>
> >> #include "input-compat.h"
> >>
> >> +enum clock_type {
> >> + REAL = 0,
> >> + MONO,
> >> + BOOT,
> >> + CLK_MAX
> >> +};
> >> +
> >> struct evdev {
> >> int open;
> >> struct input_handle handle;
> >> @@ -108,8 +115,9 @@ static void evdev_queue_syn_dropped(struct evdev_client *client)
> >> struct input_event ev;
> >> ktime_t time;
> >>
> >> - time = (client->clkid == CLOCK_MONOTONIC) ?
> >> - ktime_get() : ktime_get_real();
> >> + time = (client->clkid == CLOCK_REALTIME) ?
> >> + ktime_get_real() : (client->clkid == CLOCK_MONOTONIC) ?
> >> + ktime_get() : ktime_get_boottime();
> >>
>
> Is this okay ?
> To improve readabilty,
> how about adding a new funtion to get time depending upon clkid like below ?
> time = get_clk_time(client->clkid);
>
> static ktime_t get_clk_time(int id)
> {
> switch (id) {
>
> case CLOCK_REALTIME: return ktime_get_real();
> case CLOCK_MONOTONIC: return ktime_get();
> case CLOCK_BOOTTIME: return ktime_get_bootime();
> }
> }
Just open-code it in evdev_queue_syn_dropped() since there is only place
where we call it. And use clk_type instead of clock id-.
>
> >> ev.time = ktime_to_timeval(time);
> >> ev.type = EV_SYN;
> >> @@ -159,7 +167,7 @@ static void __pass_event(struct evdev_client *client,
> >>
> >> static void evdev_pass_values(struct evdev_client *client,
> >> const struct input_value *vals, unsigned int count,
> >> - ktime_t mono, ktime_t real)
> >> + ktime_t *ev_time)
> >> {
> >> struct evdev *evdev = client->evdev;
> >> const struct input_value *v;
> >> @@ -169,8 +177,9 @@ static void evdev_pass_values(struct evdev_client *client,
> >> if (client->revoked)
> >> return;
> >>
> >> - event.time = ktime_to_timeval(client->clkid == CLOCK_MONOTONIC ?
> >> - mono : real);
> >> + event.time = ktime_to_timeval(client->clkid == CLOCK_REALTIME ?
> >> + ev_time[REAL] : client->clkid == CLOCK_MONOTONIC ?
> >> + ev_time[MONO] : ev_time[BOOT]);
> >
> > This becomes unwieldy. Should we have client->clk_type instead of
> > client->clkid and convert CLOCK_* into your EVDEV_CLK_{REAL|MONO|BOOT}
> > when setting it in ioctl and then do
> >
> > event.time = ktime_to_timeval(ev_time[client->clk_offset]);
> >
>
> Sure, using clk_type would be better and improve code readability.
>
> I am afraid how converting CLOCK_* into your
> EVDEV_CLK_{REAL|MONO|BOOT} will help
> because we cannot have ev_time array size more than CLK_MAX (3).
>
> Did you mean to have following changes:
>
> 1. Add clk_type variable
> struct evdev_client {
> int clkid:
> + int clk_type;
> }
I meant replacing clkid with clk_type in evdev_client.
>
> 2. Add new funtion for setting clk_type to improve readability
> static int set_clk_type(struct evdev_client *client, int id)
evdev_set_clk_type() to keep with the style.
> {
> switch (id) {
>
> case CLOCK_REALTIME: client->clk_type = EV_REAL; break;
> case CLOCK_MONOTONIC: client->clk_type = EV_MONO; break;
> case CLOCK_BOOTTIME: client->clk_type = EV_BOOT; break;
> default: return -1
-EINVAL here, otherwise yes.
> }
>
> return 0;
> }
>
> 3. Addition in ioctl call
> case EVIOCSCLOCKID:
> ...
> if (!set_clk_type())
> return -EINVAL;
>
error = evdev_set_clktype(i);
if (error)
return error;
> client->clkid = i;
Drop this.
> return 0;
>
> 4. Change in evdev_pass_values function
> event.time = ktime_to_timeval(ev_time[client->clk_type]);
Yes.
>
> >>
> >> /* Interrupts are disabled, just acquire the lock. */
> >> spin_lock(&client->buffer_lock);
> >> @@ -198,21 +207,21 @@ static void evdev_events(struct input_handle *handle,
> >> {
> >> struct evdev *evdev = handle->private;
> >> struct evdev_client *client;
> >> - ktime_t time_mono, time_real;
> >> + ktime_t ev_time[CLK_MAX];
> >>
> >> - time_mono = ktime_get();
> >> - time_real = ktime_mono_to_real(time_mono);
> >> + ev_time[MONO] = ktime_get();
> >> + ev_time[REAL] = ktime_mono_to_real(ev_time[MONO]);
> >> + ev_time[BOOT] = ktime_get_boottime();
> >
> > I do not think we want to use ktime_get_boottime() here; I'd rather you
> > use ktime_mono_to_anY(ev_time[MONO], TK_OFFS_BOOT) so that all 3 times
> > are consistent.
> >
>
> Sure. I will send the updated patch with this change.
>
> >>
> >> rcu_read_lock();
> >>
> >> client = rcu_dereference(evdev->grab);
> >>
> >> if (client)
> >> - evdev_pass_values(client, vals, count, time_mono, time_real);
> >> + evdev_pass_values(client, vals, count, ev_time);
> >> else
> >> list_for_each_entry_rcu(client, &evdev->client_list, node)
> >> - evdev_pass_values(client, vals, count,
> >> - time_mono, time_real);
> >> + evdev_pass_values(client, vals, count, ev_time);
> >>
> >> rcu_read_unlock();
> >> }
> >> @@ -874,7 +883,7 @@ static long evdev_do_ioctl(struct file *file, unsigned int cmd,
> >> case EVIOCSCLOCKID:
> >> if (copy_from_user(&i, p, sizeof(unsigned int)))
> >> return -EFAULT;
> >> - if (i != CLOCK_MONOTONIC && i != CLOCK_REALTIME)
> >> + if (i != CLOCK_MONOTONIC && i != CLOCK_REALTIME && i != CLOCK_BOOTTIME)
> >> return -EINVAL;
> >> client->clkid = i;
> >> return 0;
> >> --
> >> 1.9.1
> >>
> >
> > Thanks.
> >
> > --
> > Dmitry
>
> Thanks,
> Aniroop Mathur
--
Dmitry
^ permalink raw reply
* Re: [PATCH v7 1/3] Input: add regulator haptic driver
From: Dmitry Torokhov @ 2014-12-17 22:06 UTC (permalink / raw)
To: Jaewon Kim
Cc: Kukjin Kim, linux-kernel, linux-samsung-soc, linux-input,
Chanwoo Choi, Hyunhee Kim
In-Reply-To: <1418787308-29019-2-git-send-email-jaewon02.kim@samsung.com>
HI Jaewon,
On Wed, Dec 17, 2014 at 12:35:06PM +0900, Jaewon Kim wrote:
> This patch adds support for haptic driver controlled by
> voltage of regulator. And this driver support for
> Force Feedback interface from input framework
>
> Signed-off-by: Jaewon Kim <jaewon02.kim@samsung.com>
> Signed-off-by: Hyunhee Kim <hyunhee.kim@samsung.com>
> Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
> Tested-by: Chanwoo Choi <cw00.choi@samsung.com>
> Reviewed-by: Chanwoo Choi <cw00.choi@samsung.com>
> Reviewed-by: Pankaj Dubey <pankaj.dubey@samsung.com>
Does the driver still work if you apply the patch below on top of yours?
Thanks.
--
Dmitry
Input: regulator-haptics - misc changes
From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
drivers/input/misc/Kconfig | 4 -
drivers/input/misc/regulator-haptic.c | 164 ++++++++++++++++++++-------------
2 files changed, 100 insertions(+), 68 deletions(-)
diff --git a/drivers/input/misc/Kconfig b/drivers/input/misc/Kconfig
index e5e556d..0b652c5 100644
--- a/drivers/input/misc/Kconfig
+++ b/drivers/input/misc/Kconfig
@@ -395,11 +395,11 @@ config INPUT_CM109
called cm109.
config INPUT_REGULATOR_HAPTIC
- tristate "regulator haptics support"
+ tristate "Regulator haptics support"
select INPUT_FF_MEMLESS
help
This option enables device driver support for the haptic controlled
- by regulator. This driver supports ff-memless interface
+ by a regulator. This driver supports ff-memless interface
from input framework.
To compile this driver as a module, choose M here: the
diff --git a/drivers/input/misc/regulator-haptic.c b/drivers/input/misc/regulator-haptic.c
index 16f5ec8..9426221 100644
--- a/drivers/input/misc/regulator-haptic.c
+++ b/drivers/input/misc/regulator-haptic.c
@@ -28,55 +28,78 @@ struct regulator_haptic {
struct work_struct work;
struct mutex mutex;
- bool enabled;
- bool suspend_state;
+ bool active;
+ bool suspended;
+
unsigned int max_volt;
unsigned int min_volt;
- unsigned int intensity;
unsigned int magnitude;
};
-static void regulator_haptic_enable(struct regulator_haptic *haptic, bool state)
+static int regulator_haptic_toggle(struct regulator_haptic *haptic, bool on)
{
int error;
- if (haptic->enabled == state)
- return;
+ if (haptic->active != on) {
+
+ error = on ? regulator_enable(haptic->regulator) :
+ regulator_disable(haptic->regulator);
+ if (error) {
+ dev_err(haptic->dev,
+ "failed to switch regulator %s: %d\n",
+ on ? "on" : "off", error);
+ return error;
+ }
+
+ haptic->active = on;
+ }
- error = state ? regulator_enable(haptic->regulator) :
- regulator_disable(haptic->regulator);
+ return 0;
+}
+
+static int regulator_haptic_set_voltage(struct regulator_haptic *haptic,
+ unsigned int magnitude)
+{
+ u64 volt_mag_multi;
+ unsigned int intensity;
+ int error;
+
+ volt_mag_multi = (u64)(haptic->max_volt - haptic->min_volt) * magnitude;
+ intensity = (unsigned int)(volt_mag_multi >> MAX_MAGNITUDE_SHIFT);
+
+ error = regulator_set_voltage(haptic->regulator,
+ intensity + haptic->min_volt,
+ haptic->max_volt);
if (error) {
- dev_err(haptic->dev, "cannot enable regulator\n");
- return;
+ dev_err(haptic->dev, "cannot set regulator voltage to %d: %d\n",
+ intensity + haptic->min_volt, error);
+ return error;
}
- haptic->enabled = state;
+ return 0;
}
static void regulator_haptic_work(struct work_struct *work)
{
struct regulator_haptic *haptic = container_of(work,
struct regulator_haptic, work);
+ unsigned int magnitude;
int error;
mutex_lock(&haptic->mutex);
- if (haptic->suspend_state)
- goto err;
+ if (haptic->suspended)
+ goto out;
- error = regulator_set_voltage(haptic->regulator,
- haptic->intensity + haptic->min_volt, haptic->max_volt);
- if (error) {
- dev_err(haptic->dev, "cannot set regulator voltage\n");
- goto err;
- }
+ magnitude = ACCESS_ONCE(haptic->magnitude);
- if (haptic->magnitude)
- regulator_haptic_enable(haptic, true);
- else
- regulator_haptic_enable(haptic, false);
+ error = regulator_haptic_set_voltage(haptic, magnitude);
+ if (error)
+ goto out;
-err:
+ regulator_haptic_toggle(haptic, magnitude != 0);
+
+out:
mutex_unlock(&haptic->mutex);
}
@@ -84,18 +107,11 @@ static int regulator_haptic_play_effect(struct input_dev *input, void *data,
struct ff_effect *effect)
{
struct regulator_haptic *haptic = input_get_drvdata(input);
- u64 volt_mag_multi;
haptic->magnitude = effect->u.rumble.strong_magnitude;
if (!haptic->magnitude)
haptic->magnitude = effect->u.rumble.weak_magnitude;
-
- volt_mag_multi = (u64)(haptic->max_volt - haptic->min_volt) *
- haptic->magnitude;
- haptic->intensity = (unsigned int)(volt_mag_multi >>
- MAX_MAGNITUDE_SHIFT);
-
schedule_work(&haptic->work);
return 0;
@@ -106,35 +122,32 @@ static void regulator_haptic_close(struct input_dev *input)
struct regulator_haptic *haptic = input_get_drvdata(input);
cancel_work_sync(&haptic->work);
- regulator_haptic_enable(haptic, false);
+ regulator_haptic_set_voltage(haptic, 0);
+ regulator_haptic_toggle(haptic, false);
}
-static int regulator_haptic_get_data(struct platform_device *pdev)
+static int __maybe_unused
+regulator_haptic_parse_dt(struct device *dev, struct regulator_haptic *haptic)
{
- struct device_node *node = pdev->dev.of_node;
- struct regulator_haptic_data *data = dev_get_platdata(&pdev->dev);
- struct regulator_haptic *haptic = platform_get_drvdata(pdev);
+ struct device_node *node;
int error;
- if (data) {
- haptic->max_volt = data->max_volt;
- haptic->min_volt = data->min_volt;
- } else if (pdev->dev.of_node) {
- error = of_property_read_u32(node, "max-microvolt",
- &haptic->max_volt);
- if (error) {
- dev_err(&pdev->dev, "cannot parse max-microvolt\n");
- return error;
- }
+ node = dev->of_node;
+ if(!node) {
+ dev_err(dev, "Missing dveice tree data\n");
+ return -EINVAL;
+ }
- error = of_property_read_u32(node, "min-microvolt",
- &haptic->min_volt);
- if (error) {
- dev_err(&pdev->dev, "cannot parse min-microvolt\n");
- return error;
- }
- } else {
- return -ENODEV;
+ error = of_property_read_u32(node, "max-microvolt", &haptic->max_volt);
+ if (error) {
+ dev_err(dev, "cannot parse max-microvolt\n");
+ return error;
+ }
+
+ error = of_property_read_u32(node, "min-microvolt", &haptic->min_volt);
+ if (error) {
+ dev_err(dev, "cannot parse min-microvolt\n");
+ return error;
}
return 0;
@@ -142,6 +155,7 @@ static int regulator_haptic_get_data(struct platform_device *pdev)
static int regulator_haptic_probe(struct platform_device *pdev)
{
+ const struct regulator_haptic_data *pdata = dev_get_platdata(&pdev->dev);
struct regulator_haptic *haptic;
struct input_dev *input_dev;
int error;
@@ -152,15 +166,19 @@ static int regulator_haptic_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, haptic);
haptic->dev = &pdev->dev;
- haptic->enabled = false;
- haptic->suspend_state = false;
mutex_init(&haptic->mutex);
INIT_WORK(&haptic->work, regulator_haptic_work);
- error = regulator_haptic_get_data(pdev);
- if (error) {
- dev_err(&pdev->dev, "failed to get voltage value\n");
- return error;
+ if (pdata) {
+ haptic->max_volt = pdata->max_volt;
+ haptic->min_volt = pdata->min_volt;
+ } else if (IS_ENABLED(CONFIG_OF)) {
+ error = regulator_haptic_parse_dt(&pdev->dev, haptic);
+ if (error)
+ return error;
+ } else {
+ dev_err(&pdev->dev, "Missing platform data\n");
+ return -EINVAL;
}
haptic->regulator = devm_regulator_get_exclusive(&pdev->dev, "haptic");
@@ -181,7 +199,7 @@ static int regulator_haptic_probe(struct platform_device *pdev)
input_set_capability(haptic->input_dev, EV_FF, FF_RUMBLE);
error = input_ff_create_memless(input_dev, NULL,
- regulator_haptic_play_effect);
+ regulator_haptic_play_effect);
if (error) {
dev_err(&pdev->dev, "failed to create force-feedback\n");
return error;
@@ -200,13 +218,16 @@ static int __maybe_unused regulator_haptic_suspend(struct device *dev)
{
struct platform_device *pdev = to_platform_device(dev);
struct regulator_haptic *haptic = platform_get_drvdata(pdev);
+ int error;
- mutex_lock(&haptic->mutex);
+ error = mutex_lock_interruptible(&haptic->mutex);
+ if (error)
+ return error;
- haptic->suspend_state = true;
+ regulator_haptic_set_voltage(haptic, 0);
+ regulator_haptic_toggle(haptic, false);
- if (haptic->enabled)
- regulator_haptic_enable(haptic, false);
+ haptic->suspended = true;
mutex_unlock(&haptic->mutex);
@@ -217,8 +238,19 @@ static int __maybe_unused regulator_haptic_resume(struct device *dev)
{
struct platform_device *pdev = to_platform_device(dev);
struct regulator_haptic *haptic = platform_get_drvdata(pdev);
+ unsigned int magnitude;
+
+ mutex_lock(&haptic->mutex);
+
+ haptic->suspended = false;
- haptic->suspend_state = false;
+ magnitude = ACCESS_ONCE(haptic->magnitude);
+ if (magnitude) {
+ regulator_haptic_set_voltage(haptic, magnitude);
+ regulator_haptic_toggle(haptic, true);
+ }
+
+ mutex_unlock(&haptic->mutex);
return 0;
}
^ permalink raw reply related
* Re: Elantech touchpad on Fujitsu E554 not working at all
From: ulrik.debie-os @ 2014-12-17 22:09 UTC (permalink / raw)
To: Vincent Jaubert; +Cc: linux-input
In-Reply-To: <CANWhK-ikUMJ8ZuX6VjoKgtb+o_OMKEU33y8ed=EQ9H-o2bOGLQ@mail.gmail.com>
Hi,
could you provide the dmesg lines after startup (or at least those that contain
the word "elantech") ?
Can you describe your mouse buttons please ? Are some located above/under
the touchpad ?
Maybe next week I'll find some time to look into it, I'm currently on ski
holidays.
Ulrik
On Wed, Dec 17, 2014 at 10:09:22PM +0100, Vincent Jaubert wrote:
> Date: Wed, 17 Dec 2014 22:09:22 +0100
> From: Vincent Jaubert <contact@vjaubert.com>
> To: linux-input@vger.kernel.org
> Subject: Elantech touchpad on Fujitsu E554 not working at all
> X-Mailing-List: linux-input@vger.kernel.org
>
> My touchpad on my brand new Fujitsu E554 doesn't work at all.
> Bios flashed with latest version.
> The touchpad works correctly under windows 7.
>
> Here is the partial output from "xinput -list" :
>
> Virtual core pointer id=2 [master pointer (3)]
> ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
> ⎜ ↳ USB Optical Mouse id=12 [slave pointer (2)]
> ⎜ ↳ Elantech PS/2 TrackPoint id=14 [slave pointer (2)]
> ⎜ ↳ ETPS/2 Elantech Touchpad id=15 [slave pointer (2)]
>
> The trackpoint is working correctly since 3.18.0.
> The touchpad doen't work at all.
>
> With "dmesg | grep mouse", i got lot of :
>
> [ 377.818193] psmouse serio2: Touchpad at isa0060/serio2/input0 lost
> sync at byte 6
> [ 377.818204] psmouse serio2: issuing reconnect request
>
> I'm on Ubuntu 14.10 x86-64, with 3.18.0 kernel compiled from kernel.org sources.
>
>
>
> Output of cat /proc/info :
> Linux version 3.18.0-vanillaice (root@vincent-LIFEBOOK-E554) (gcc
> version 4.9.1 (Ubuntu 4.9.1-16ubuntu6) ) #1 SMP Wed Dec 17 19:54:23
> CET 2014
>
> Outuput of lsb_release -rd :
> Description: Ubuntu 14.10
> Release: 14.10
>
> Outuput of ver_linux :
>
> Linux vincent-LIFEBOOK-E554 3.18.0-vanillaice #1 SMP Wed Dec 17
> 19:54:23 CET 2014 x86_64 x86_64 x86_64 GNU/Linux
>
> Gnu C 4.9.1
> Gnu make 4.0
> binutils 2.24.90.20141014
> util-linux 2.25.1
> mount debug
> module-init-tools 18
> e2fsprogs 1.42.10
> pcmciautils 018
> PPP 2.4.5
> Linux C Library 2.19
> Dynamic linker (ldd) 2.19
> Procps 3.3.9
> Net-tools 1.60
> Kbd 1.15.5
> Sh-utils 8.23
> wireless-tools 30
> Modules Loaded isofs hid_generic usbhid hid ctr ccm arc4
> snd_hda_codec_hdmi iwlmvm mac80211 snd_hda_codec_realtek
> snd_hda_codec_generic iwlwifi rtsx_pci_ms memstick cfg80211 intel_rapl
> x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel kvm
> crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel
> aes_x86_64 lrw gf128mul glue_helper ablk_helper cryptd snd_hda_intel
> snd_hda_controller snd_hda_codec snd_hwdep joydev snd_pcm serio_raw
> snd_seq_midi snd_seq_midi_event uvcvideo videobuf2_vmalloc snd_rawmidi
> videobuf2_memops videobuf2_core snd_seq cdc_mbim qcserial cdc_wdm
> v4l2_common cdc_ncm usb_wwan usbnet usbserial videodev media
> snd_seq_device snd_timer snd btusb mei_me mei soundcore lpc_ich shpchp
> i915 mac_hid drm_kms_helper ie31200_edac drm video i2c_algo_bit
> edac_core intel_rst fujitsu_laptop rfcomm bnep bluetooth parport_pc
> ppdev lp parport binfmt_misc rtsx_pci_sdmmc ahci libahci psmouse r8169
> rtsx_pci mii
>
> Output of cat /proc/cpuinfo
> processor : 0
> vendor_id : GenuineIntel
> cpu family : 6
> model : 60
> model name : Intel(R) Core(TM) i5-4210M CPU @ 2.60GHz
> stepping : 3
> microcode : 0x1c
> cpu MHz : 800.007
> cache size : 3072 KB
> physical id : 0
> siblings : 4
> core id : 0
> cpu cores : 2
> apicid : 0
> initial apicid : 0
> fpu : yes
> fpu_exception : yes
> cpuid level : 13
> wp : yes
> flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
> pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx
> pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl
> xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor
> ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe
> popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida
> arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase
> tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt
> bugs :
> bogomips : 5188.49
> clflush size : 64
> cache_alignment : 64
> address sizes : 39 bits physical, 48 bits virtual
> power management:
>
> processor : 1
> vendor_id : GenuineIntel
> cpu family : 6
> model : 60
> model name : Intel(R) Core(TM) i5-4210M CPU @ 2.60GHz
> stepping : 3
> microcode : 0x1c
> cpu MHz : 800.312
> cache size : 3072 KB
> physical id : 0
> siblings : 4
> core id : 0
> cpu cores : 2
> apicid : 1
> initial apicid : 1
> fpu : yes
> fpu_exception : yes
> cpuid level : 13
> wp : yes
> flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
> pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx
> pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl
> xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor
> ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe
> popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida
> arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase
> tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt
> bugs :
> bogomips : 5188.49
> clflush size : 64
> cache_alignment : 64
> address sizes : 39 bits physical, 48 bits virtual
> power management:
>
> processor : 2
> vendor_id : GenuineIntel
> cpu family : 6
> model : 60
> model name : Intel(R) Core(TM) i5-4210M CPU @ 2.60GHz
> stepping : 3
> microcode : 0x1c
> cpu MHz : 800.007
> cache size : 3072 KB
> physical id : 0
> siblings : 4
> core id : 1
> cpu cores : 2
> apicid : 2
> initial apicid : 2
> fpu : yes
> fpu_exception : yes
> cpuid level : 13
> wp : yes
> flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
> pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx
> pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl
> xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor
> ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe
> popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida
> arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase
> tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt
> bugs :
> bogomips : 5188.49
> clflush size : 64
> cache_alignment : 64
> address sizes : 39 bits physical, 48 bits virtual
> power management:
>
> processor : 3
> vendor_id : GenuineIntel
> cpu family : 6
> model : 60
> model name : Intel(R) Core(TM) i5-4210M CPU @ 2.60GHz
> stepping : 3
> microcode : 0x1c
> cpu MHz : 800.109
> cache size : 3072 KB
> physical id : 0
> siblings : 4
> core id : 1
> cpu cores : 2
> apicid : 3
> initial apicid : 3
> fpu : yes
> fpu_exception : yes
> cpuid level : 13
> wp : yes
> flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
> pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx
> pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl
> xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor
> ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe
> popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida
> arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase
> tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt
> bugs :
> bogomips : 5188.49
> clflush size : 64
> cache_alignment : 64
> address sizes : 39 bits physical, 48 bits virtual
> power management:
>
> output of cat /proc/modules
> isofs 39720 1 - Live 0x0000000000000000
> hid_generic 12559 0 - Live 0x0000000000000000
> usbhid 52565 0 - Live 0x0000000000000000
> hid 110066 2 hid_generic,usbhid, Live 0x0000000000000000
> ctr 13049 1 - Live 0x0000000000000000
> ccm 17731 1 - Live 0x0000000000000000
> arc4 12608 2 - Live 0x0000000000000000
> snd_hda_codec_hdmi 51974 1 - Live 0x0000000000000000
> iwlmvm 251094 0 - Live 0x0000000000000000
> mac80211 674115 1 iwlmvm, Live 0x0000000000000000
> snd_hda_codec_realtek 79613 1 - Live 0x0000000000000000
> snd_hda_codec_generic 68875 1 snd_hda_codec_realtek, Live 0x0000000000000000
> iwlwifi 186039 1 iwlmvm, Live 0x0000000000000000
> rtsx_pci_ms 18168 0 - Live 0x0000000000000000
> memstick 16966 1 rtsx_pci_ms, Live 0x0000000000000000
> cfg80211 513009 3 iwlmvm,mac80211,iwlwifi, Live 0x0000000000000000
> intel_rapl 18783 0 - Live 0x0000000000000000
> x86_pkg_temp_thermal 14205 0 - Live 0x0000000000000000
> intel_powerclamp 18786 0 - Live 0x0000000000000000
> coretemp 13441 0 - Live 0x0000000000000000
> kvm_intel 148273 0 - Live 0x0000000000000000
> kvm 466035 1 kvm_intel, Live 0x0000000000000000
> crct10dif_pclmul 14307 0 - Live 0x0000000000000000
> crc32_pclmul 13133 0 - Live 0x0000000000000000
> ghash_clmulni_intel 13230 0 - Live 0x0000000000000000
> aesni_intel 169590 2 - Live 0x0000000000000000
> aes_x86_64 17131 1 aesni_intel, Live 0x0000000000000000
> lrw 13287 1 aesni_intel, Live 0x0000000000000000
> gf128mul 14951 1 lrw, Live 0x0000000000000000
> glue_helper 13944 1 aesni_intel, Live 0x0000000000000000
> ablk_helper 13597 1 aesni_intel, Live 0x0000000000000000
> cryptd 20360 3 ghash_clmulni_intel,aesni_intel,ablk_helper, Live
> 0x0000000000000000
> snd_hda_intel 30520 6 - Live 0x0000000000000000
> snd_hda_controller 31872 1 snd_hda_intel, Live 0x0000000000000000
> snd_hda_codec 139421 5
> snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_codec_generic,snd_hda_intel,snd_hda_controller,
> Live 0x0000000000000000
> snd_hwdep 17698 1 snd_hda_codec, Live 0x0000000000000000
> joydev 17344 0 - Live 0x0000000000000000
> snd_pcm 105335 5
> snd_hda_codec_hdmi,snd_hda_intel,snd_hda_controller,snd_hda_codec,
> Live 0x0000000000000000
> serio_raw 13434 0 - Live 0x0000000000000000
> snd_seq_midi 13564 0 - Live 0x0000000000000000
> snd_seq_midi_event 14899 1 snd_seq_midi, Live 0x0000000000000000
> uvcvideo 81109 0 - Live 0x0000000000000000
> videobuf2_vmalloc 13216 1 uvcvideo, Live 0x0000000000000000
> snd_rawmidi 30876 1 snd_seq_midi, Live 0x0000000000000000
> videobuf2_memops 13362 1 videobuf2_vmalloc, Live 0x0000000000000000
> videobuf2_core 47079 1 uvcvideo, Live 0x0000000000000000
> snd_seq 67178 2 snd_seq_midi,snd_seq_midi_event, Live 0x0000000000000000
> cdc_mbim 13400 0 - Live 0x0000000000000000
> qcserial 17286 0 - Live 0x0000000000000000
> cdc_wdm 23109 1 cdc_mbim, Live 0x0000000000000000
> v4l2_common 15682 1 videobuf2_core, Live 0x0000000000000000
> cdc_ncm 30903 1 cdc_mbim, Live 0x0000000000000000
> usb_wwan 19865 1 qcserial, Live 0x0000000000000000
> usbnet 43806 2 cdc_mbim,cdc_ncm, Live 0x0000000000000000
> usbserial 45100 2 qcserial,usb_wwan, Live 0x0000000000000000
> videodev 158682 3 uvcvideo,videobuf2_core,v4l2_common, Live 0x0000000000000000
> media 21963 2 uvcvideo,videodev, Live 0x0000000000000000
> snd_seq_device 14497 3 snd_seq_midi,snd_rawmidi,snd_seq, Live 0x0000000000000000
> snd_timer 29458 2 snd_pcm,snd_seq, Live 0x0000000000000000
> snd 87611 22 snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_codec_generic,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_rawmidi,snd_seq,snd_seq_device,snd_timer,
> Live 0x0000000000000000
> btusb 32336 0 - Live 0x0000000000000000
> mei_me 19568 0 - Live 0x0000000000000000
> mei 87928 1 mei_me, Live 0x0000000000000000
> soundcore 15052 2 snd_hda_codec,snd, Live 0x0000000000000000
> lpc_ich 21093 0 - Live 0x0000000000000000
> shpchp 37040 0 - Live 0x0000000000000000
> i915 997306 6 - Live 0x0000000000000000
> mac_hid 13227 0 - Live 0x0000000000000000
> drm_kms_helper 98384 1 i915, Live 0x0000000000000000
> ie31200_edac 12728 0 - Live 0x0000000000000000
> drm 317398 5 i915,drm_kms_helper, Live 0x0000000000000000
> video 20205 1 i915, Live 0x0000000000000000
> i2c_algo_bit 13406 1 i915, Live 0x0000000000000000
> edac_core 51809 1 ie31200_edac, Live 0x0000000000000000
> intel_rst 12900 0 - Live 0x0000000000000000
> fujitsu_laptop 18743 0 - Live 0x0000000000000000
> rfcomm 69427 8 - Live 0x0000000000000000
> bnep 19543 2 - Live 0x0000000000000000
> bluetooth 461507 22 btusb,rfcomm,bnep, Live 0x0000000000000000
> parport_pc 32741 0 - Live 0x0000000000000000
> ppdev 17635 0 - Live 0x0000000000000000
> lp 17759 0 - Live 0x0000000000000000
> parport 42264 3 parport_pc,ppdev,lp, Live 0x0000000000000000
> binfmt_misc 17424 1 - Live 0x0000000000000000
> rtsx_pci_sdmmc 23190 0 - Live 0x0000000000000000
> ahci 34019 3 - Live 0x0000000000000000
> libahci 32190 1 ahci, Live 0x0000000000000000
> psmouse 111475 0 - Live 0x0000000000000000
> r8169 84648 0 - Live 0x0000000000000000
> rtsx_pci 46889 2 rtsx_pci_ms,rtsx_pci_sdmmc, Live 0x0000000000000000
> mii 13934 2 usbnet,r8169, Live 0x0000000000000000
>
> cat /proc/ioports
> 0000-0cf7 : PCI Bus 0000:00
> 0000-001f : dma1
> 0020-0021 : pic1
> 0040-0043 : timer0
> 0050-0053 : timer1
> 0060-0060 : keyboard
> 0061-0061 : PNP0800:00
> 0062-0062 : PNP0C09:00
> 0062-0062 : EC data
> 0064-0064 : keyboard
> 0066-0066 : PNP0C09:00
> 0066-0066 : EC cmd
> 0070-0077 : rtc0
> 0080-008f : dma page reg
> 00a0-00a1 : pic2
> 00c0-00df : dma2
> 00f0-00ff : fpu
> 00f0-00f0 : PNP0C04:00
> 03c0-03df : vesafb
> 0410-0415 : ACPI CPU throttle
> 04d0-04d1 : pnp 00:01
> 0600-0603 : pnp 00:01
> 0604-0607 : pnp 00:01
> 0800-087f : pnp 00:01
> 0cf8-0cff : PCI conf1
> 0d00-ffff : PCI Bus 0000:00
> 1640-164f : pnp 00:01
> 1800-187f : pnp 00:01
> 1800-1803 : ACPI PM1a_EVT_BLK
> 1804-1805 : ACPI PM1a_CNT_BLK
> 1808-180b : ACPI PM_TMR
> 1820-182f : ACPI GPE0_BLK
> 1830-1833 : iTCO_wdt
> 1850-1850 : ACPI PM2_CNT_BLK
> 1860-187f : iTCO_wdt
> 1880-18ff : pnp 00:01
> 2000-2003 : pnp 00:01
> 2100-217f : pnp 00:01
> 2180-21ff : pnp 00:01
> 3000-3fff : PCI Bus 0000:02
> 3000-30ff : 0000:02:00.0
> 3000-30ff : r8169
> 4000-403f : 0000:00:02.0
> 4060-407f : 0000:00:1f.2
> 4060-407f : ahci
> 4080-4087 : 0000:00:1f.2
> 4080-4087 : ahci
> 4088-408f : 0000:00:1f.2
> 4088-408f : ahci
> 4090-4093 : 0000:00:1f.2
> 4090-4093 : ahci
> 4094-4097 : 0000:00:1f.2
> 4094-4097 : ahci
> efa0-efbf : 0000:00:1f.3
> f800-f87f : pnp 00:01
> f880-f8ff : pnp 00:01
> fc00-fc7f : pnp 00:01
> fc80-fcff : pnp 00:01
> fd00-fd7f : pnp 00:01
>
>
> cat /proc/iomem
> 00000000-00000fff : reserved
> 00001000-0009cfff : System RAM
> 0009d000-0009ffff : reserved
> 000a0000-000bffff : PCI Bus 0000:00
> 000c0000-000cebff : Video ROM
> 000e0000-000fffff : reserved
> 000f0000-000fffff : System ROM
> 00100000-c431bfff : System RAM
> 01000000-017a4a44 : Kernel code
> 017a4a45-01d302ff : Kernel data
> 01e95000-01fdffff : Kernel bss
> c431c000-c451dfff : reserved
> c451e000-da64efff : System RAM
> da64f000-dce3efff : reserved
> dce3f000-dcf9efff : ACPI Non-volatile Storage
> dcf9f000-dcffefff : ACPI Tables
> dcfff000-dcffffff : System RAM
> dd000000-df9fffff : reserved
> dda00000-df9fffff : Graphics Stolen Memory
> dfa00000-feafffff : PCI Bus 0000:00
> dfa10000-dfa1ffff : pnp 00:00
> e0000000-efffffff : 0000:00:02.0
> f0000000-f03fffff : 0000:00:02.0
> f0400000-f04fffff : PCI Bus 0000:02
> f0400000-f0403fff : 0000:02:00.0
> f0400000-f0403fff : r8169
> f0500000-f05fffff : PCI Bus 0000:04
> f0500000-f0500fff : 0000:04:00.0
> f0500000-f0500fff : rtsx_pci
> f0600000-f06fffff : PCI Bus 0000:03
> f0600000-f0601fff : 0000:03:00.0
> f0600000-f0601fff : iwlwifi
> f0700000-f07fffff : PCI Bus 0000:02
> f0700000-f0700fff : 0000:02:00.0
> f0700000-f0700fff : r8169
> f0800000-f080ffff : 0000:00:14.0
> f0800000-f080ffff : xhci-hcd
> f0810000-f0813fff : 0000:00:03.0
> f0810000-f0813fff : ICH HD audio
> f0814000-f0817fff : 0000:00:1b.0
> f0814000-f0817fff : ICH HD audio
> f0818000-f08180ff : 0000:00:1f.3
> f0819000-f081900f : 0000:00:16.0
> f0819000-f081900f : mei_me
> f081c000-f081c7ff : 0000:00:1f.2
> f081c000-f081c7ff : ahci
> f8000000-fbffffff : PCI MMCONFIG 0000 [bus 00-3f]
> f8000000-fbffffff : reserved
> f8000000-fbffffff : pnp 00:00
> fec00000-fec00fff : reserved
> fec00000-fec003ff : IOAPIC 0
> fed00000-fed003ff : HPET 0
> fed00000-fed003ff : pnp 00:05
> fed08000-fed08fff : reserved
> fed08000-fed08fff : pnp 00:00
> fed10000-fed19fff : reserved
> fed10000-fed17fff : pnp 00:00
> fed18000-fed18fff : pnp 00:00
> fed19000-fed19fff : pnp 00:00
> fed1c000-fed1ffff : reserved
> fed1c000-fed1ffff : pnp 00:00
> fed1f410-fed1f414 : iTCO_wdt
> fed20000-fed3ffff : pnp 00:00
> fed40000-fed44fff : pnp 00:00
> fed45000-fed8ffff : pnp 00:00
> fed90000-fed93fff : pnp 00:00
> fee00000-fee00fff : Local APIC
> fee00000-fee00fff : reserved
> fef00000-feffffff : pnp 00:00
> ffa20000-ffffffff : reserved
> 100000000-41f5fffff : System RAM
> 41f600000-41fffffff : RAM buffer
>
> lspci -vvv
>
> 00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core
> Processor DRAM Controller (rev 06)
> Subsystem: Fujitsu Limited. Device 17a6
> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx-
> Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort+ >SERR- <PERR- INTx-
> Latency: 0
> Capabilities: [e0] Vendor Specific Information: Len=0c <?>
>
> 00:02.0 VGA compatible controller: Intel Corporation 4th Gen Core
> Processor Integrated Graphics Controller (rev 06) (prog-if 00 [VGA
> controller])
> Subsystem: Fujitsu Limited. Device 17af
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx+
> Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0
> Interrupt: pin A routed to IRQ 28
> Region 0: Memory at f0000000 (64-bit, non-prefetchable) [size=4M]
> Region 2: Memory at e0000000 (64-bit, prefetchable) [size=256M]
> Region 4: I/O ports at 4000 [size=64]
> Expansion ROM at <unassigned> [disabled]
> Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
> Address: fee0f00c Data: 41b1
> Capabilities: [d0] Power Management version 2
> Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> Capabilities: [a4] PCI Advanced Features
> AFCap: TP+ FLR+
> AFCtrl: FLR-
> AFStatus: TP-
> Kernel driver in use: i915
>
> 00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core
> Processor HD Audio Controller (rev 06)
> Subsystem: Fujitsu Limited. Device 17c6
> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx+
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0, Cache Line Size: 64 bytes
> Interrupt: pin A routed to IRQ 30
> Region 0: Memory at f0810000 (64-bit, non-prefetchable) [size=16K]
> Capabilities: [50] Power Management version 2
> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit-
> Address: fee0f00c Data: 41d1
> Capabilities: [70] Express (v1) Root Complex Integrated Endpoint, MSI 00
> DevCap: MaxPayload 128 bytes, PhantFunc 0
> ExtTag- RBE-
> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
> MaxPayload 128 bytes, MaxReadReq 128 bytes
> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
> Kernel driver in use: snd_hda_intel
>
> 00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset
> Family USB xHCI (rev 04) (prog-if 30 [XHCI])
> Subsystem: Fujitsu Limited. Device 17e1
> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx+
> Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0
> Interrupt: pin A routed to IRQ 24
> Region 0: Memory at f0800000 (64-bit, non-prefetchable) [size=64K]
> Capabilities: [70] Power Management version 2
> Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0-,D1-,D2-,D3hot+,D3cold+)
> Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
> Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
> Address: 00000000fee0300c Data: 4171
> Kernel driver in use: xhci_hcd
>
> 00:16.0 Communication controller: Intel Corporation 8 Series/C220
> Series Chipset Family MEI Controller #1 (rev 04)
> Subsystem: Fujitsu Limited. Device 17dd
> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx+
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0
> Interrupt: pin A routed to IRQ 29
> Region 0: Memory at f0819000 (64-bit, non-prefetchable) [size=16]
> Capabilities: [50] Power Management version 3
> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
> Capabilities: [8c] MSI: Enable+ Count=1/1 Maskable- 64bit+
> Address: 00000000fee0f00c Data: 41c1
> Kernel driver in use: mei_me
>
> 00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset
> High Definition Audio Controller (rev 04)
> Subsystem: Fujitsu Limited. Device 17ff
> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx+
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0, Cache Line Size: 64 bytes
> Interrupt: pin A routed to IRQ 31
> Region 0: Memory at f0814000 (64-bit, non-prefetchable) [size=16K]
> Capabilities: [50] Power Management version 2
> Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+
> Address: 00000000fee0f00c Data: 4122
> Capabilities: [70] Express (v1) Root Complex Integrated Endpoint, MSI 00
> DevCap: MaxPayload 128 bytes, PhantFunc 0
> ExtTag- RBE-
> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
> MaxPayload 128 bytes, MaxReadReq 128 bytes
> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
> Capabilities: [100 v1] Virtual Channel
> Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
> Arb: Fixed- WRR32- WRR64- WRR128-
> Ctrl: ArbSelect=Fixed
> Status: InProgress-
> VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
> Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
> Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=01
> Status: NegoPending- InProgress-
> VC1: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
> Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
> Ctrl: Enable+ ID=2 ArbSelect=Fixed TC/VC=04
> Status: NegoPending- InProgress-
> Kernel driver in use: snd_hda_intel
>
> 00:1c.0 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset
> Family PCI Express Root Port #1 (rev d4) (prog-if 00 [Normal decode])
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx-
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0, Cache Line Size: 64 bytes
> Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
> I/O behind bridge: 0000f000-00000fff
> Memory behind bridge: fff00000-000fffff
> Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff
> Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort+ <SERR- <PERR-
> BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
> PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
> Capabilities: [40] Express (v2) Root Port (Slot-), MSI 00
> DevCap: MaxPayload 128 bytes, PhantFunc 0
> ExtTag- RBE+
> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
> MaxPayload 128 bytes, MaxReadReq 128 bytes
> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
> LnkCap: Port #1, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s
> <1us, L1 <4us
> ClockPM- Surprise- LLActRep+ BwNot+
> LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes Disabled- CommClk-
> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> LnkSta: Speed 2.5GT/s, Width x0, TrErr- Train- SlotClk+ DLActive-
> BWMgmt- ABWMgmt-
> RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
> RootCap: CRSVisible-
> RootSta: PME ReqID 0000, PMEStatus- PMEPending-
> DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+, OBFF Via
> WAKE# ARIFwd-
> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF
> Disabled ARIFwd-
> LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
> Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
> Compliance De-emphasis: -6dB
> LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-,
> EqualizationPhase1-
> EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
> Address: 00000000 Data: 0000
> Capabilities: [90] Subsystem: Fujitsu Limited. Device 17d3
> Capabilities: [a0] Power Management version 3
> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> Kernel driver in use: pcieport
>
> 00:1c.3 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset
> Family PCI Express Root Port #4 (rev d4) (prog-if 00 [Normal decode])
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx-
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0, Cache Line Size: 64 bytes
> Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
> I/O behind bridge: 00003000-00003fff
> Memory behind bridge: f0700000-f07fffff
> Prefetchable memory behind bridge: 00000000f0400000-00000000f04fffff
> Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort+ <SERR- <PERR-
> BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
> PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
> Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
> DevCap: MaxPayload 128 bytes, PhantFunc 0
> ExtTag- RBE+
> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
> MaxPayload 128 bytes, MaxReadReq 128 bytes
> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
> LnkCap: Port #4, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s
> <512ns, L1 <16us
> ClockPM- Surprise- LLActRep+ BwNot+
> LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive+
> BWMgmt+ ABWMgmt-
> SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
> Slot #3, PowerLimit 10.000W; Interlock- NoCompl+
> SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
> Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
> SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
> Changed: MRL- PresDet- LinkState+
> RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
> RootCap: CRSVisible-
> RootSta: PME ReqID 0000, PMEStatus- PMEPending-
> DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+, OBFF Not
> Supported ARIFwd-
> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF
> Disabled ARIFwd-
> LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
> Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
> Compliance De-emphasis: -6dB
> LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-,
> EqualizationPhase1-
> EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
> Address: 00000000 Data: 0000
> Capabilities: [90] Subsystem: Fujitsu Limited. Device 17d3
> Capabilities: [a0] Power Management version 3
> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> Kernel driver in use: pcieport
>
> 00:1c.5 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset
> Family PCI Express Root Port #6 (rev d4) (prog-if 00 [Normal decode])
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx-
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0, Cache Line Size: 64 bytes
> Bus: primary=00, secondary=03, subordinate=03, sec-latency=0
> I/O behind bridge: 0000f000-00000fff
> Memory behind bridge: f0600000-f06fffff
> Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff
> Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort+ <SERR- <PERR-
> BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
> PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
> Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
> DevCap: MaxPayload 128 bytes, PhantFunc 0
> ExtTag- RBE+
> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
> MaxPayload 128 bytes, MaxReadReq 128 bytes
> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
> LnkCap: Port #6, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s
> <512ns, L1 <16us
> ClockPM- Surprise- LLActRep+ BwNot+
> LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive+
> BWMgmt+ ABWMgmt-
> SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
> Slot #5, PowerLimit 10.000W; Interlock- NoCompl+
> SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
> Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
> SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
> Changed: MRL- PresDet- LinkState+
> RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
> RootCap: CRSVisible-
> RootSta: PME ReqID 0000, PMEStatus- PMEPending-
> DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+, OBFF Not
> Supported ARIFwd-
> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF
> Disabled ARIFwd-
> LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
> Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
> Compliance De-emphasis: -6dB
> LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-,
> EqualizationPhase1-
> EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
> Address: 00000000 Data: 0000
> Capabilities: [90] Subsystem: Fujitsu Limited. Device 17d3
> Capabilities: [a0] Power Management version 3
> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> Kernel driver in use: pcieport
>
> 00:1c.7 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset
> Family PCI Express Root Port #8 (rev d4) (prog-if 00 [Normal decode])
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx-
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0, Cache Line Size: 64 bytes
> Bus: primary=00, secondary=04, subordinate=04, sec-latency=0
> I/O behind bridge: 0000f000-00000fff
> Memory behind bridge: f0500000-f05fffff
> Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff
> Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort+ <SERR- <PERR-
> BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
> PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
> Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
> DevCap: MaxPayload 128 bytes, PhantFunc 0
> ExtTag- RBE+
> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
> MaxPayload 128 bytes, MaxReadReq 128 bytes
> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
> LnkCap: Port #8, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s
> <512ns, L1 <16us
> ClockPM- Surprise- LLActRep+ BwNot+
> LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes Disabled- CommClk+
> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive+
> BWMgmt+ ABWMgmt-
> SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
> Slot #7, PowerLimit 10.000W; Interlock- NoCompl+
> SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
> Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
> SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
> Changed: MRL- PresDet- LinkState+
> RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
> RootCap: CRSVisible-
> RootSta: PME ReqID 0000, PMEStatus- PMEPending-
> DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+, OBFF Not
> Supported ARIFwd-
> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF
> Disabled ARIFwd-
> LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
> Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
> Compliance De-emphasis: -6dB
> LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-,
> EqualizationPhase1-
> EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
> Address: 00000000 Data: 0000
> Capabilities: [90] Subsystem: Fujitsu Limited. Device 17d3
> Capabilities: [a0] Power Management version 3
> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> Kernel driver in use: pcieport
>
> 00:1f.0 ISA bridge: Intel Corporation HM86 Express LPC Controller (rev 04)
> Subsystem: Fujitsu Limited. Device 17c7
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx-
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0
> Capabilities: [e0] Vendor Specific Information: Len=0c <?>
> Kernel driver in use: lpc_ich
>
> 00:1f.2 SATA controller: Intel Corporation 8 Series/C220 Series
> Chipset Family 6-port SATA Controller 1 [AHCI mode] (rev 04) (prog-if
> 01 [AHCI 1.0])
> Subsystem: Fujitsu Limited. Device 17c9
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx+
> Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0
> Interrupt: pin B routed to IRQ 26
> Region 0: I/O ports at 4088 [size=8]
> Region 1: I/O ports at 4094 [size=4]
> Region 2: I/O ports at 4080 [size=8]
> Region 3: I/O ports at 4090 [size=4]
> Region 4: I/O ports at 4060 [size=32]
> Region 5: Memory at f081c000 (32-bit, non-prefetchable) [size=2K]
> Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
> Address: fee0300c Data: 4191
> Capabilities: [70] Power Management version 3
> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot+,D3cold-)
> Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
> Capabilities: [a8] SATA HBA v1.0 BAR4 Offset=00000004
> Kernel driver in use: ahci
>
> 00:1f.3 SMBus: Intel Corporation 8 Series/C220 Series Chipset Family
> SMBus Controller (rev 04)
> Subsystem: Fujitsu Limited. Device 17cf
> Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx-
> Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Interrupt: pin C routed to IRQ 7
> Region 0: Memory at f0818000 (64-bit, non-prefetchable) [size=256]
> Region 4: I/O ports at efa0 [size=32]
>
> 02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd.
> RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 0c)
> Subsystem: Fujitsu Limited. Device 17a2
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx+
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0, Cache Line Size: 64 bytes
> Interrupt: pin A routed to IRQ 27
> Region 0: I/O ports at 3000 [size=256]
> Region 2: Memory at f0700000 (64-bit, non-prefetchable) [size=4K]
> Region 4: Memory at f0400000 (64-bit, prefetchable) [size=16K]
> Capabilities: [40] Power Management version 3
> Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
> Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
> Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
> Address: 00000000fee0f00c Data: 41a1
> Capabilities: [70] Express (v2) Endpoint, MSI 01
> DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <512ns, L1 <64us
> ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop-
> MaxPayload 128 bytes, MaxReadReq 4096 bytes
> DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend-
> LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency
> L0s unlimited, L1 <64us
> ClockPM+ Surprise- LLActRep- BwNot-
> LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
> ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
> LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive-
> BWMgmt- ABWMgmt-
> DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR+, OBFF Via
> message/WAKE#
> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF Disabled
> LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
> Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
> Compliance De-emphasis: -6dB
> LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-,
> EqualizationPhase1-
> EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> Capabilities: [b0] MSI-X: Enable- Count=4 Masked-
> Vector table: BAR=4 offset=00000000
> PBA: BAR=4 offset=00000800
> Capabilities: [d0] Vital Product Data
> Unknown small resource type 00, will not decode more.
> Capabilities: [100 v1] Advanced Error Reporting
> UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
> MalfTLP- ECRC- UnsupReq- ACSViol-
> UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
> MalfTLP- ECRC- UnsupReq- ACSViol-
> UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+
> MalfTLP+ ECRC- UnsupReq- ACSViol-
> CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
> CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
> AERCap: First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn-
> Capabilities: [140 v1] Virtual Channel
> Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
> Arb: Fixed- WRR32- WRR64- WRR128-
> Ctrl: ArbSelect=Fixed
> Status: InProgress-
> VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
> Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
> Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
> Status: NegoPending- InProgress-
> Capabilities: [160 v1] Device Serial Number 02-4a-11-fe-ff-b2-7f-e4
> Capabilities: [170 v1] Latency Tolerance Reporting
> Max snoop latency: 3145728ns
> Max no snoop latency: 3145728ns
> Kernel driver in use: r8169
>
> 03:00.0 Network controller: Intel Corporation Wireless 7260 (rev 73)
> Subsystem: Intel Corporation Wireless-N 7260
> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx+
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0, Cache Line Size: 64 bytes
> Interrupt: pin A routed to IRQ 32
> Region 0: Memory at f0600000 (64-bit, non-prefetchable) [size=8K]
> Capabilities: [c8] Power Management version 3
> Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+
> Address: 00000000fee0100c Data: 4142
> Capabilities: [40] Express (v2) Endpoint, MSI 00
> DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <512ns, L1 unlimited
> ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset+
> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> RlxdOrd+ ExtTag- PhantFunc- AuxPwr+ NoSnoop+ FLReset-
> MaxPayload 128 bytes, MaxReadReq 128 bytes
> DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend-
> LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency
> L0s <4us, L1 <32us
> ClockPM+ Surprise- LLActRep- BwNot-
> LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
> ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
> LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive-
> BWMgmt- ABWMgmt-
> DevCap2: Completion Timeout: Range B, TimeoutDis+, LTR+, OBFF Via WAKE#
> DevCtl2: Completion Timeout: 16ms to 55ms, TimeoutDis-, LTR+, OBFF Disabled
> LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
> Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
> Compliance De-emphasis: -6dB
> LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-,
> EqualizationPhase1-
> EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> Capabilities: [100 v1] Advanced Error Reporting
> UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
> MalfTLP- ECRC- UnsupReq- ACSViol-
> UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
> MalfTLP- ECRC- UnsupReq- ACSViol-
> UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+
> MalfTLP+ ECRC- UnsupReq- ACSViol-
> CESta: RxErr- BadTLP+ BadDLLP- Rollover- Timeout- NonFatalErr+
> CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
> AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
> Capabilities: [140 v1] Device Serial Number a0-a8-cd-ff-ff-a7-be-3a
> Capabilities: [14c v1] Latency Tolerance Reporting
> Max snoop latency: 3145728ns
> Max no snoop latency: 3145728ns
> Capabilities: [154 v1] Vendor Specific Information: ID=cafe Rev=1 Len=014 <?>
> Kernel driver in use: iwlwifi
>
> 04:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd.
> RTS5227 PCI Express Card Reader (rev 01)
> Subsystem: Fujitsu Limited. Device 187f
> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx+
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0, Cache Line Size: 64 bytes
> Interrupt: pin A routed to IRQ 25
> Region 0: Memory at f0500000 (32-bit, non-prefetchable) [size=4K]
> Capabilities: [40] Power Management version 3
> Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0-,D1+,D2+,D3hot+,D3cold+)
> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
> Address: 00000000fee0f00c Data: 4181
> Capabilities: [70] Express (v2) Endpoint, MSI 00
> DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited
> ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop-
> MaxPayload 128 bytes, MaxReadReq 512 bytes
> DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend-
> LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency
> L0s unlimited, L1 <64us
> ClockPM+ Surprise- LLActRep- BwNot-
> LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk-
> ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
> LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive-
> BWMgmt- ABWMgmt-
> DevCap2: Completion Timeout: Not Supported, TimeoutDis+, LTR+, OBFF
> Via message/WAKE#
> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF Disabled
> LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
> Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
> Compliance De-emphasis: -6dB
> LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-,
> EqualizationPhase1-
> EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> Capabilities: [100 v2] Advanced Error Reporting
> UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
> MalfTLP- ECRC- UnsupReq- ACSViol-
> UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
> MalfTLP- ECRC- UnsupReq- ACSViol-
> UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+
> MalfTLP+ ECRC- UnsupReq- ACSViol-
> CESta: RxErr+ BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
> CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
> AERCap: First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn-
> Capabilities: [140 v1] Device Serial Number 00-00-00-01-00-4c-e0-00
> Capabilities: [150 v1] Latency Tolerance Reporting
> Max snoop latency: 3145728ns
> Max no snoop latency: 3145728ns
> Capabilities: [158 v1] L1 PM Substates
> L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
> PortCommonModeRestoreTime=60us PortTPowerOnTime=60us
> Kernel driver in use: rtsx_pci
>
> --------------------------------------------------
>
> cat /proc/scsi/scsi
> Attached devices:
> Host: scsi2 Channel: 00 Id: 00 Lun: 00
> Vendor: TSSTcorp Model: CDDVDW SU-208CB Rev: FU01
> Type: CD-ROM ANSI SCSI revision: 05
> Host: scsi4 Channel: 00 Id: 00 Lun: 00
> Vendor: ATA Model: SAMSUNG MZ7TE256 Rev: 200Q
> Type: Direct-Access ANSI SCSI revision: 05
> --
> To unsubscribe from this list: send the line "unsubscribe linux-input" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* Re: Elantech touchpad on Fujitsu E554 not working at all
From: Vincent Jaubert @ 2014-12-17 22:26 UTC (permalink / raw)
To: ulrik.debie-os; +Cc: linux-input
In-Reply-To: <20141217220956.GA3730@lantern>
The touchpad has two regular buttons under it.
Enjoy ski !
dmesg | grep -i mouse
[ 0.976197] mousedev: PS/2 mouse device common for all mice
[ 1.698332] usb 1-9: Product: USB Optical Mouse
[ 1.704791] input: USB Optical Mouse as
/devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9:1.0/0003:0461:4D22.0001/input/input10
[ 1.704880] hid-generic 0003:0461:4D22.0001: input,hidraw0: USB HID
v1.11 Mouse [USB Optical Mouse] on usb-0000:00:14.0-9/input0
[ 2.606437] psmouse serio2: elantech: assuming hardware version 4
(with firmware version 0x570f01)
[ 2.641459] psmouse serio2: elantech: Synaptics capabilities query
result 0xc0, 0x14, 0x0c.
[ 197.641817] psmouse serio2: Touchpad at isa0060/serio2/input0 lost
sync at byte 6
[ 197.650024] psmouse serio2: Touchpad at isa0060/serio2/input0 lost
sync at byte 6
[ 197.658131] psmouse serio2: Touchpad at isa0060/serio2/input0 lost
sync at byte 6
[ 197.669019] psmouse serio2: Touchpad at isa0060/serio2/input0 lost
sync at byte 6
[ 197.677251] psmouse serio2: Touchpad at isa0060/serio2/input0 lost
sync at byte 6
[ 197.677262] psmouse serio2: issuing reconnect request
dmesg | grep -i elantech
[ 2.606437] psmouse serio2: elantech: assuming hardware version 4
(with firmware version 0x570f01)
[ 2.641459] psmouse serio2: elantech: Synaptics capabilities query
result 0xc0, 0x14, 0x0c.
[ 2.810696] input: Elantech PS/2 TrackPoint as
/devices/platform/i8042/serio2/input/input11
[ 2.851456] input: ETPS/2 Elantech Touchpad as
/devices/platform/i8042/serio2/input/input9
"Full" start of dmesg
[ 0.373715] UDP-Lite hash table entries: 8192 (order: 6, 262144 bytes)
[ 0.373780] NET: Registered protocol family 1
[ 0.373793] pci 0000:00:02.0: Video device with shadowed ROM
[ 0.373863] pci 0000:00:14.0: can't derive routing for PCI INT A
[ 0.373864] pci 0000:00:14.0: PCI INT A: no GSI
[ 0.373934] pci 0000:00:14.0: can't derive routing for PCI INT A
[ 0.373981] PCI: CLS 64 bytes, default 64
[ 0.374023] Trying to unpack rootfs image as initramfs...
[ 0.642830] Freeing initrd memory: 19180K (ffff880035a7a000 -
ffff880036d35000)
[ 0.642855] PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
[ 0.642857] software IO TLB [mem 0xd664f000-0xda64f000] (64MB)
mapped at [ffff8800d664f000-ffff8800da64efff]
[ 0.643024] RAPL PMU detected, hw unit 2^-14 Joules, API unit is
2^-32 Joules, 4 fixed counters 655360 ms ovfl timer
[ 0.643067] microcode: CPU0 sig=0x306c3, pf=0x10, revision=0x1c
[ 0.643073] microcode: CPU1 sig=0x306c3, pf=0x10, revision=0x1c
[ 0.643080] microcode: CPU2 sig=0x306c3, pf=0x10, revision=0x1c
[ 0.643087] microcode: CPU3 sig=0x306c3, pf=0x10, revision=0x1c
[ 0.643131] microcode: Microcode Update Driver: v2.00
<tigran@aivazian.fsnet.co.uk>, Peter Oruba
[ 0.643154] Scanning for low memory corruption every 60 seconds
[ 0.643450] futex hash table entries: 2048 (order: 5, 131072 bytes)
[ 0.643473] Initialise system trusted keyring
[ 0.643493] audit: initializing netlink subsys (disabled)
[ 0.643503] audit: type=2000 audit(1418854538.644:1): initialized
[ 0.643780] HugeTLB registered 2 MB page size, pre-allocated 0 pages
[ 0.644938] zpool: loaded
[ 0.644939] zbud: loaded
[ 0.645096] VFS: Disk quotas dquot_6.5.2
[ 0.645122] Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[ 0.645486] fuse init (API version 7.23)
[ 0.645557] msgmni has been set to 31888
[ 0.645606] Key type big_key registered
[ 0.645975] Key type asymmetric registered
[ 0.645978] Asymmetric key parser 'x509' registered
[ 0.646007] Block layer SCSI generic (bsg) driver version 0.4
loaded (major 252)
[ 0.646042] io scheduler noop registered
[ 0.646045] io scheduler deadline registered (default)
[ 0.646068] io scheduler cfq registered
[ 0.646501] pci_hotplug: PCI Hot Plug PCI Core version: 0.5
[ 0.646513] pciehp: PCI Express Hot Plug Controller Driver version: 0.4
[ 0.646554] vesafb: mode is 1920x1080x32, linelength=7680, pages=0
[ 0.646554] vesafb: scrolling: redraw
[ 0.646556] vesafb: Truecolor: size=8:8:8:8, shift=24:16:8:0
[ 0.646573] vesafb: framebuffer at 0xe0000000, mapped to
0xffffc90005c00000, using 8128k, total 8128k
[ 0.799811] Console: switching to colour frame buffer device 240x67
[ 0.952426] fb0: VESA VGA frame buffer device
[ 0.952448] intel_idle: MWAIT substates: 0x42120
[ 0.952449] intel_idle: v0.4 model 0x3C
[ 0.952450] intel_idle: lapic_timer_reliable_states 0xffffffff
[ 0.952745] ACPI: AC Adapter [AC] (on-line)
[ 0.952906] input: Lid Switch as
/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input0
[ 0.952931] ACPI: Lid Switch [LID]
[ 0.952959] input: Power Button as
/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input1
[ 0.952961] ACPI: Power Button [PWRB]
[ 0.952987] input: Sleep Button as
/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/input/input2
[ 0.952989] ACPI: Sleep Button [SLPB]
[ 0.953142] GHES: HEST is not enabled!
[ 0.953252] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled
[ 0.955483] Linux agpgart interface v0.103
[ 0.956570] brd: module loaded
[ 0.957058] loop: module loaded
[ 0.957232] libphy: Fixed MDIO Bus: probed
[ 0.957234] tun: Universal TUN/TAP device driver, 1.6
[ 0.957235] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
[ 0.957267] PPP generic driver version 2.4.2
[ 0.957367] xhci_hcd 0000:00:14.0: can't derive routing for PCI INT A
[ 0.957369] xhci_hcd 0000:00:14.0: PCI INT A: no GSI
[ 0.957392] xhci_hcd 0000:00:14.0: xHCI Host Controller
[ 0.957397] xhci_hcd 0000:00:14.0: new USB bus registered, assigned
bus number 1
[ 0.957486] xhci_hcd 0000:00:14.0: cache line size of 64 is not supported
[ 0.957504] xhci_hcd 0000:00:14.0: irq 24 for MSI/MSI-X
[ 0.957562] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[ 0.957564] usb usb1: New USB device strings: Mfr=3, Product=2,
SerialNumber=1
[ 0.957565] usb usb1: Product: xHCI Host Controller
[ 0.957566] usb usb1: Manufacturer: Linux 3.18.0-vanillaice xhci-hcd
[ 0.957567] usb usb1: SerialNumber: 0000:00:14.0
[ 0.957647] hub 1-0:1.0: USB hub found
[ 0.957672] hub 1-0:1.0: 14 ports detected
[ 0.962646] xhci_hcd 0000:00:14.0: xHCI Host Controller
[ 0.962650] xhci_hcd 0000:00:14.0: new USB bus registered, assigned
bus number 2
[ 0.962706] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003
[ 0.962708] usb usb2: New USB device strings: Mfr=3, Product=2,
SerialNumber=1
[ 0.962710] usb usb2: Product: xHCI Host Controller
[ 0.962712] usb usb2: Manufacturer: Linux 3.18.0-vanillaice xhci-hcd
[ 0.962713] usb usb2: SerialNumber: 0000:00:14.0
[ 0.962848] hub 2-0:1.0: USB hub found
[ 0.962859] hub 2-0:1.0: 4 ports detected
[ 0.963994] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 0.963999] ehci-pci: EHCI PCI platform driver
[ 0.964006] ehci-platform: EHCI generic platform driver
[ 0.964014] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[ 0.964016] ohci-pci: OHCI PCI platform driver
[ 0.964023] ohci-platform: OHCI generic platform driver
[ 0.964029] uhci_hcd: USB Universal Host Controller Interface driver
[ 0.964067] i8042: PNP: PS/2 Controller [PNP0303:KBC,PNP0f13:PS2M]
at 0x60,0x64 irq 1,12
[ 0.972173] i8042: Detected active multiplexing controller, rev 1.1
[ 0.976023] serio: i8042 KBD port at 0x60,0x64 irq 1
[ 0.976026] serio: i8042 AUX0 port at 0x60,0x64 irq 12
[ 0.976046] serio: i8042 AUX1 port at 0x60,0x64 irq 12
[ 0.976060] serio: i8042 AUX2 port at 0x60,0x64 irq 12
[ 0.976074] serio: i8042 AUX3 port at 0x60,0x64 irq 12
[ 0.976197] mousedev: PS/2 mouse device common for all mice
[ 0.976392] rtc_cmos 00:04: RTC can wake from S4
[ 0.976515] rtc_cmos 00:04: rtc core: registered rtc_cmos as rtc0
[ 0.976541] rtc_cmos 00:04: alarms up to one month, y3k, 242 bytes
nvram, hpet irqs
[ 0.976598] device-mapper: uevent: version 1.0.3
[ 0.976656] device-mapper: ioctl: 4.28.0-ioctl (2014-09-17)
initialised: dm-devel@redhat.com
[ 0.976669] Intel P-state driver initializing.
[ 0.976764] ledtrig-cpu: registered to indicate activity on CPUs
[ 0.976838] TCP: cubic registered
[ 0.976912] NET: Registered protocol family 10
[ 0.977143] NET: Registered protocol family 17
[ 0.977153] Key type dns_resolver registered
[ 0.977443] Loading compiled-in X.509 certificates
[ 0.978062] Loaded X.509 cert 'Magrathea: Glacier signing key:
564714df206debb3d65da7d25b1d5ce23f027ed0'
[ 0.978071] registered taskstats version 1
[ 0.979372] Key type trusted registered
[ 0.980489] Key type encrypted registered
[ 0.981598] AppArmor: AppArmor sha1 policy hashing enabled
[ 0.981601] ima: No TPM chip found, activating TPM-bypass!
[ 0.981617] evm: HMAC attrs: 0x1
[ 0.981908] Magic number: 10:369:300
[ 0.982004] rtc_cmos 00:04: setting system clock to 2014-12-17
22:15:39 UTC (1418854539)
[ 0.982055] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found
[ 0.982056] EDD information not available.
[ 0.982111] PM: Hibernation image not present or could not be loaded.
[ 0.999276] input: AT Translated Set 2 keyboard as
/devices/platform/i8042/serio0/input/input3
[ 1.047399] ACPI: Battery Slot [CMB1] (battery present)
[ 1.048127] Freeing unused kernel memory: 1384K (ffffffff81d32000 -
ffffffff81e8c000)
[ 1.048129] Write protecting the kernel read-only data: 12288k
[ 1.048882] Freeing unused kernel memory: 356K (ffff8800017a7000 -
ffff880001800000)
[ 1.049468] Freeing unused kernel memory: 384K (ffff880001ba0000 -
ffff880001c00000)
[ 1.057395] systemd-udevd[117]: starting version 208
[ 1.057717] random: systemd-udevd urandom read with 10 bits of
entropy available
[ 1.076545] rtsx_pci 0000:04:00.0: irq 25 for MSI/MSI-X
[ 1.076580] rtsx_pci 0000:04:00.0: rtsx_pci_acquire_irq:
pcr->msi_en = 1, pci->irq = 25
[ 1.077254] r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded
[ 1.077259] r8169 0000:02:00.0: can't disable ASPM; OS doesn't have
ASPM control
[ 1.078218] ahci 0000:00:1f.2: version 3.0
[ 1.078316] ahci 0000:00:1f.2: irq 26 for MSI/MSI-X
[ 1.078334] ahci 0000:00:1f.2: SSS flag set, parallel bus scan disabled
[ 1.078357] ahci 0000:00:1f.2: AHCI 0001.0300 32 slots 4 ports 6
Gbps 0x15 impl SATA mode
[ 1.078360] ahci 0000:00:1f.2: flags: 64bit ncq ilck stag pm led
clo pio slum part ems sxs apst
[ 1.083286] r8169 0000:02:00.0: irq 27 for MSI/MSI-X
[ 1.083737] r8169 0000:02:00.0 eth0: RTL8168g/8111g at
0xffffc900018d4000, e4:7f:b2:11:4a:02, XID 0c000800 IRQ 27
[ 1.083740] r8169 0000:02:00.0 eth0: jumbo features [frames: 9200
bytes, tx checksumming: ko]
[ 1.094803] scsi host0: ahci
[ 1.095059] scsi host1: ahci
[ 1.095144] scsi host2: ahci
[ 1.095232] scsi host3: ahci
[ 1.095309] scsi host4: ahci
[ 1.095360] ata1: SATA max UDMA/133 abar m2048@0xf081c000 port
0xf081c100 irq 26
[ 1.095362] ata2: DUMMY
[ 1.095364] ata3: SATA max UDMA/133 abar m2048@0xf081c000 port
0xf081c200 irq 26
[ 1.095365] ata4: DUMMY
[ 1.095367] ata5: SATA max UDMA/133 abar m2048@0xf081c000 port
0xf081c300 irq 26
[ 1.270930] usb 1-8: new full-speed USB device number 2 using xhci_hcd
[ 1.400232] usb 1-8: New USB device found, idVendor=8087, idProduct=07dc
[ 1.400235] usb 1-8: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 1.415019] ata1: SATA link down (SStatus 0 SControl 300)
[ 1.567113] usb 1-9: new low-speed USB device number 3 using xhci_hcd
[ 1.643132] tsc: Refined TSC clocksource calibration: 2593.993 MHz
[ 1.698327] usb 1-9: New USB device found, idVendor=0461, idProduct=4d22
[ 1.698330] usb 1-9: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[ 1.698332] usb 1-9: Product: USB Optical Mouse
[ 1.698474] usb 1-9: ep 0x81 - rounding interval to 64 microframes,
ep desc says 80 microframes
[ 1.701002] hidraw: raw HID events driver (C) Jiri Kosina
[ 1.703651] usbcore: registered new interface driver usbhid
[ 1.703653] usbhid: USB HID core driver
[ 1.704791] input: USB Optical Mouse as
/devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9:1.0/0003:0461:4D22.0001/input/input10
[ 1.704880] hid-generic 0003:0461:4D22.0001: input,hidraw0: USB HID
v1.11 Mouse [USB Optical Mouse] on usb-0000:00:14.0-9/input0
[ 1.739227] ata3: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
[ 1.744479] ata3.00: ACPI cmd 00/00:00:00:00:00:a0 (NOP) rejected
by device (Stat=0x51 Err=0x04)
[ 1.745219] ata3.00: ATAPI: TSSTcorp CDDVDW SU-208CB, FU01, max UDMA/100
[ 1.753743] ata3.00: ACPI cmd 00/00:00:00:00:00:a0 (NOP) rejected
by device (Stat=0x51 Err=0x04)
[ 1.753750] ata3.00: configured for UDMA/100
[ 1.759123] scsi 2:0:0:0: CD-ROM TSSTcorp CDDVDW
SU-208CB FU01 PQ: 0 ANSI: 5
[ 1.779142] sr 2:0:0:0: [sr0] scsi3-mmc drive: 24x/24x writer
dvd-ram cd/rw xa/form2 cdda tray
[ 1.779146] cdrom: Uniform CD-ROM driver Revision: 3.20
[ 1.779321] sr 2:0:0:0: Attached scsi CD-ROM sr0
[ 1.779402] sr 2:0:0:0: Attached scsi generic sg0 type 5
[ 1.863253] usb 1-11: new high-speed USB device number 4 using xhci_hcd
[ 2.050443] usb 1-11: config 1 has an invalid interface number: 12
but max is 4
[ 2.050447] usb 1-11: config 1 has an invalid interface number: 13
but max is 4
[ 2.050448] usb 1-11: config 1 has an invalid interface number: 13
but max is 4
[ 2.050449] usb 1-11: config 1 has no interface number 1
[ 2.050450] usb 1-11: config 1 has no interface number 4
[ 2.051548] usb 1-11: New USB device found, idVendor=1199, idProduct=9041
[ 2.051551] usb 1-11: New USB device strings: Mfr=1, Product=2,
SerialNumber=3
[ 2.051553] usb 1-11: Product: EM8805
[ 2.051554] usb 1-11: Manufacturer: Sierra Wireless, Incorporated
[ 2.099439] ata5: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[ 2.101366] ata5.00: ACPI cmd f5/00:00:00:00:00:a0 (SECURITY FREEZE
LOCK) filtered out
[ 2.101370] ata5.00: ACPI cmd b1/c1:00:00:00:00:a0 (DEVICE
CONFIGURATION OVERLAY) filtered out
[ 2.101517] ata5.00: failed to get NCQ Send/Recv Log Emask 0x1
[ 2.101519] ata5.00: ATA-9: SAMSUNG MZ7TE256HMHP-00004, EXT0200Q,
max UDMA/133
[ 2.101520] ata5.00: 500118192 sectors, multi 16: LBA48 NCQ (depth 31/32), AA
[ 2.101832] ata5.00: ACPI cmd f5/00:00:00:00:00:a0 (SECURITY FREEZE
LOCK) filtered out
[ 2.101835] ata5.00: ACPI cmd b1/c1:00:00:00:00:a0 (DEVICE
CONFIGURATION OVERLAY) filtered out
[ 2.101969] ata5.00: failed to get NCQ Send/Recv Log Emask 0x1
[ 2.102039] ata5.00: configured for UDMA/133
[ 2.102180] scsi 4:0:0:0: Direct-Access ATA SAMSUNG
MZ7TE256 200Q PQ: 0 ANSI: 5
[ 2.102393] sd 4:0:0:0: [sda] 500118192 512-byte logical blocks:
(256 GB/238 GiB)
[ 2.102406] sd 4:0:0:0: Attached scsi generic sg1 type 0
[ 2.102521] sd 4:0:0:0: [sda] Write Protect is off
[ 2.102523] sd 4:0:0:0: [sda] Mode Sense: 00 3a 00 00
[ 2.102558] sd 4:0:0:0: [sda] Write cache: enabled, read cache:
enabled, doesn't support DPO or FUA
[ 2.103259] sda: sda1 sda2 < sda5 sda6 sda7 sda8 > sda3
[ 2.103736] sd 4:0:0:0: [sda] Attached SCSI disk
[ 2.211876] EXT4-fs (sda8): mounted filesystem with ordered data
mode. Opts: (null)
[ 2.219474] usb 1-12: new high-speed USB device number 5 using xhci_hcd
[ 2.489092] usb 1-12: New USB device found, idVendor=04f2, idProduct=b413
[ 2.489095] usb 1-12: New USB device strings: Mfr=2, Product=1,
SerialNumber=0
[ 2.489097] usb 1-12: Product: FJ Camera
[ 2.489098] usb 1-12: Manufacturer: Chicony Electronics Co., Ltd.
[ 2.606437] psmouse serio2: elantech: assuming hardware version 4
(with firmware version 0x570f01)
[ 2.641459] psmouse serio2: elantech: Synaptics capabilities query
result 0xc0, 0x14, 0x0c.
[ 2.643828] Switched to clocksource tsc
[ 2.810696] input: Elantech PS/2 TrackPoint as
/devices/platform/i8042/serio2/input/input11
[ 2.851456] input: ETPS/2 Elantech Touchpad as
/devices/platform/i8042/serio2/input/input9
[ 4.092627] floppy0: no floppy controllers found
[ 4.175457] init: plymouth-upstart-bridge main process (190)
terminated with status 1
[ 4.175463] init: plymouth-upstart-bridge main process ended, respawning
[ 4.176404] init: plymouth-upstart-bridge main process (212)
terminated with status 1
[ 4.176410] init: plymouth-upstart-bridge main process ended, respawning
[ 4.225662] Adding 9357308k swap on /dev/sda7. Priority:-1
extents:1 across:9357308k SSFS
[ 4.270829] EXT4-fs (sda8): re-mounted. Opts: errors=remount-ro
[ 4.310924] systemd-udevd[363]: starting version 208
[ 4.348961] lp: driver loaded but no devices found
[ 4.357359] ppdev: user-space parallel port driver
[ 4.399108] EDAC MC: Ver: 3.0.0
[ 4.400840] input: Fujitsu FUJ02B1 as
/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:0a/FUJ02B1:00/input/input14
[ 4.400883] fujitsu_laptop: ACPI: Fujitsu FUJ02B1 [FJEX] (on)
[ 4.407596] EDAC ie31200: No ECC support
[ 4.408001] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
[ 4.411193] input: Fujitsu FUJ02E3 as
/devices/LNXSYSTM:00/LNXSYBUS:00/FUJ02E3:00/input/input15
[ 4.411237] fujitsu_laptop: ACPI: Fujitsu FUJ02E3 [FEXT] (on)
[ 4.415607] fujitsu_laptop: BTNI: [0x1010001]
[ 4.415704] fujitsu_laptop: driver 0.6.0 successfully loaded
[ 4.417255] mei_me 0000:00:16.0: irq 28 for MSI/MSI-X
[ 4.422236] [drm] Initialized drm 1.1.0 20060810
[ 4.440020] random: nonblocking pool is initialized
[ 4.461620] [drm] Memory usable by graphics device = 2048M
[ 4.461625] checking generic (e0000000 7f0000) vs hw (e0000000 10000000)
[ 4.461627] fb: switching to inteldrmfb from VESA VGA
[ 4.461646] Console: switching to colour dummy device 80x25
[ 4.461714] [drm] Replacing VGA console driver
[ 4.464797] cfg80211: Calling CRDA to update world regulatory domain
[ 4.471542] Bluetooth: Core ver 2.19
[ 4.471578] NET: Registered protocol family 31
[ 4.471580] Bluetooth: HCI device and connection manager initialized
[ 4.471586] Bluetooth: HCI socket layer initialized
[ 4.471589] Bluetooth: L2CAP socket layer initialized
[ 4.471597] Bluetooth: SCO socket layer initialized
[ 4.475968] usbcore: registered new interface driver btusb
[ 4.487835] Intel(R) Wireless WiFi driver for Linux, in-tree:
[ 4.487838] Copyright(c) 2003- 2014 Intel Corporation
[ 4.487869] i915 0000:00:02.0: irq 29 for MSI/MSI-X
[ 4.487895] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[ 4.487896] [drm] Driver supports precise vblank timestamp query.
[ 4.487920] vgaarb: device changed decodes:
PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem
[ 4.488022] iwlwifi 0000:03:00.0: irq 30 for MSI/MSI-X
[ 4.490340] Bluetooth: hci0: read Intel version: 370710018002030d41
[ 4.490342] Bluetooth: hci0: Intel device is already patched. patch num: 41
[ 4.495886] iwlwifi 0000:03:00.0: Direct firmware load for
iwlwifi-7260-10.ucode failed with error -2
[ 4.495890] iwlwifi 0000:03:00.0: Falling back to user helper
[ 4.516118] media: Linux media interface: v0.10
[ 4.526520] Linux video capture interface: v2.00
[ 4.535198] AVX2 version of gcm_enc/dec engaged.
[ 4.535201] AES CTR mode by8 optimization enabled
[ 4.630461] uvcvideo: Found UVC 1.00 device FJ Camera (04f2:b413)
[ 4.633171] usbcore: registered new interface driver usbserial
[ 4.633193] usbcore: registered new interface driver usbserial_generic
[ 4.633213] usbserial: USB Serial support registered for generic
[ 4.670022] input: FJ Camera as
/devices/pci0000:00/0000:00:14.0/usb1/1-12/1-12:1.0/input/input16
[ 4.670118] usbcore: registered new interface driver uvcvideo
[ 4.670119] USB Video Class driver (1.1.1)
[ 4.688098] usbcore: registered new interface driver qcserial
[ 4.688114] usbserial: USB Serial support registered for Qualcomm USB modem
[ 4.688893] usbcore: registered new interface driver cdc_ncm
[ 4.689065] qcserial 1-11:1.0: Qualcomm USB modem converter detected
[ 4.689178] usb 1-11: Qualcomm USB modem converter now attached to ttyUSB0
[ 4.694403] qcserial 1-11:1.2: Qualcomm USB modem converter detected
[ 4.698896] usbcore: registered new interface driver cdc_wdm
[ 4.699042] usb 1-11: Qualcomm USB modem converter now attached to ttyUSB1
[ 4.700552] audit: type=1400 audit(1418854543.208:2):
apparmor="STATUS" operation="profile_load" name="/sbin/dhclient"
pid=434 comm="apparmor_parser"
[ 4.700646] audit: type=1400 audit(1418854543.208:3):
apparmor="STATUS" operation="profile_load"
name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=434
comm="apparmor_parser"
[ 4.700710] audit: type=1400 audit(1418854543.208:4):
apparmor="STATUS" operation="profile_load"
name="/usr/lib/connman/scripts/dhclient-script" pid=434
comm="apparmor_parser"
[ 4.701536] qcserial 1-11:1.3: Qualcomm USB modem converter detected
[ 4.703809] usb 1-11: Qualcomm USB modem converter now attached to ttyUSB2
[ 4.742337] audit: type=1400 audit(1418854543.252:5):
apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient"
pid=500 comm="apparmor_parser"
[ 4.742481] audit: type=1400 audit(1418854543.252:6):
apparmor="STATUS" operation="profile_replace"
name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=500
comm="apparmor_parser"
[ 4.742590] audit: type=1400 audit(1418854543.252:7):
apparmor="STATUS" operation="profile_replace"
name="/usr/lib/connman/scripts/dhclient-script" pid=500
comm="apparmor_parser"
[ 4.766322] cdc_mbim 1-11:1.12: cdc-wdm0: USB WDM device
[ 4.766490] cdc_mbim 1-11:1.12 wwan0: register 'cdc_mbim' at
usb-0000:00:14.0-11, CDC MBIM, 62:59:06:ee:34:a6
[ 4.766519] usbcore: registered new interface driver cdc_mbim
[ 4.810113] iwlwifi 0000:03:00.0: loaded firmware version
25.222.9.0 op_mode iwlmvm
[ 4.836431] intel_rapl: Found RAPL domain package
[ 4.836435] intel_rapl: Found RAPL domain core
[ 4.836436] intel_rapl: Found RAPL domain uncore
[ 4.836438] intel_rapl: Found RAPL domain dram
[ 4.851269] iwlwifi 0000:03:00.0: Detected Intel(R) Wireless N
7260, REV=0x144
[ 4.851378] iwlwifi 0000:03:00.0: L1 Enabled - LTR Enabled
[ 4.851727] iwlwifi 0000:03:00.0: L1 Enabled - LTR Enabled
[ 5.069919] ieee80211 phy0: Selected rate control algorithm 'iwl-mvm-rs'
[ 5.280647] fbcon: inteldrmfb (fb0) is primary device
[ 5.281721] ACPI: Video Device [GFX0] (multi-head: yes rom: no post: no)
[ 5.281789] input: Video Bus as
/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input17
[ 5.281881] [drm] Initialized i915 1.6.0 20140905 for 0000:00:02.0 on minor 0
[ 5.283234] snd_hda_intel 0000:00:03.0: irq 31 for MSI/MSI-X
[ 5.283283] snd_hda_intel 0000:00:1b.0: irq 32 for MSI/MSI-X
[ 5.298094] sound hdaudioC1D0: ALC282: SKU not ready 0x909701f0
[ 5.298509] sound hdaudioC1D0: autoconfig: line_outs=1
(0x21/0x0/0x0/0x0/0x0) type:line
[ 5.298510] sound hdaudioC1D0: speaker_outs=1 (0x14/0x0/0x0/0x0/0x0)
[ 5.298512] sound hdaudioC1D0: hp_outs=1 (0x1b/0x0/0x0/0x0/0x0)
[ 5.298513] sound hdaudioC1D0: mono: mono_out=0x0
[ 5.298513] sound hdaudioC1D0: inputs:
[ 5.298515] sound hdaudioC1D0: Mic=0x18
[ 5.298516] sound hdaudioC1D0: Dock Mic=0x1a
[ 5.298517] sound hdaudioC1D0: Internal Mic=0x12
[ 5.302241] cfg80211: World regulatory domain updated:
[ 5.302243] cfg80211: DFS Master region: unset
[ 5.302243] cfg80211: (start_freq - end_freq @ bandwidth),
(max_antenna_gain, max_eirp), (dfs_cac_time)
[ 5.302244] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz),
(300 mBi, 2000 mBm), (N/A)
[ 5.302245] cfg80211: (2457000 KHz - 2482000 KHz @ 40000 KHz),
(300 mBi, 2000 mBm), (N/A)
[ 5.302246] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz),
(300 mBi, 2000 mBm), (N/A)
[ 5.302247] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz),
(300 mBi, 2000 mBm), (N/A)
[ 5.302248] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz),
(300 mBi, 2000 mBm), (N/A)
[ 5.306481] input: HDA Intel HDMI HDMI/DP,pcm=3 as
/devices/pci0000:00/0000:00:03.0/sound/card0/input18
[ 5.306673] input: HDA Intel HDMI HDMI/DP,pcm=7 as
/devices/pci0000:00/0000:00:03.0/sound/card0/input19
[ 5.306724] input: HDA Intel HDMI HDMI/DP,pcm=8 as
/devices/pci0000:00/0000:00:03.0/sound/card0/input20
[ 5.307386] input: HDA Intel PCH Mic as
/devices/pci0000:00/0000:00:1b.0/sound/card1/input21
[ 5.307647] input: HDA Intel PCH Dock Mic as
/devices/pci0000:00/0000:00:1b.0/sound/card1/input22
[ 5.307700] input: HDA Intel PCH Headphone as
/devices/pci0000:00/0000:00:1b.0/sound/card1/input23
[ 5.307751] input: HDA Intel PCH Dock Headphone as
/devices/pci0000:00/0000:00:1b.0/sound/card1/input24
[ 6.526173] Console: switching to colour frame buffer device 240x67
[ 6.655641] i915 0000:00:02.0: fb0: inteldrmfb frame buffer device
[ 6.655642] i915 0000:00:02.0: registered panic notifier
[ 6.681261] init: Error while reading from descriptor: Broken pipe
[ 6.683866] init: failsafe main process (705) killed by TERM signal
[ 6.725753] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 6.725756] Bluetooth: BNEP filters: protocol multicast
[ 6.725764] Bluetooth: BNEP socket layer initialized
[ 6.731297] Bluetooth: RFCOMM TTY layer initialized
[ 6.731307] Bluetooth: RFCOMM socket layer initialized
[ 6.731311] Bluetooth: RFCOMM ver 1.11
[ 6.979305] init: avahi-cups-reload main process (838) terminated
with status 1
[ 7.161342] systemd-logind[795]: New seat seat0.
[ 7.161869] systemd-logind[795]: Watching system buttons on
/dev/input/event8 (Fujitsu FUJ02E3)
[ 7.161926] systemd-logind[795]: Watching system buttons on
/dev/input/event10 (Video Bus)
[ 7.161978] systemd-logind[795]: Watching system buttons on
/dev/input/event7 (Fujitsu FUJ02B1)
[ 7.162025] systemd-logind[795]: Watching system buttons on
/dev/input/event1 (Power Button)
[ 7.162069] systemd-logind[795]: Watching system buttons on
/dev/input/event0 (Lid Switch)
[ 7.162113] systemd-logind[795]: Watching system buttons on
/dev/input/event2 (Sleep Button)
[ 7.176946] audit: type=1400 audit(1418854545.684:8):
apparmor="STATUS" operation="profile_load"
name="/usr/lib/lightdm/lightdm-guest-session" pid=830
comm="apparmor_parser"
[ 7.177035] audit: type=1400 audit(1418854545.684:9):
apparmor="STATUS" operation="profile_load" name="chromium" pid=830
comm="apparmor_parser"
[ 7.178114] audit: type=1400 audit(1418854545.684:10):
apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient"
pid=830 comm="apparmor_parser"
[ 7.178118] audit: type=1400 audit(1418854545.684:11):
apparmor="STATUS" operation="profile_replace"
name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=830
comm="apparmor_parser"
[ 7.178120] audit: type=1400 audit(1418854545.684:12):
apparmor="STATUS" operation="profile_replace"
name="/usr/lib/connman/scripts/dhclient-script" pid=830
comm="apparmor_parser"
[ 7.239460] audit: type=1400 audit(1418854545.748:13):
apparmor="STATUS" operation="profile_load"
name="/usr/lib/cups/backend/cups-pdf" pid=804 comm="apparmor_parser"
[ 7.239622] audit: type=1400 audit(1418854545.748:14):
apparmor="STATUS" operation="profile_load" name="/usr/sbin/cupsd"
pid=804 comm="apparmor_parser"
[ 7.239670] audit: type=1400 audit(1418854545.748:15):
apparmor="STATUS" operation="profile_load" name="third_party" pid=804
comm="apparmor_parser"
[ 7.240657] r8169 0000:02:00.0 eth0: link down
[ 7.241003] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 7.242366] iwlwifi 0000:03:00.0: L1 Enabled - LTR Enabled
[ 7.242645] iwlwifi 0000:03:00.0: L1 Enabled - LTR Enabled
[ 7.254316] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 7.430671] floppy0: no floppy controllers found
[ 7.802017] wlan0: authenticate with fa:9c:d6:a8:7f:e0
[ 7.803871] wlan0: send auth to fa:9c:d6:a8:7f:e0 (try 1/3)
[ 7.805702] wlan0: authenticated
[ 7.805837] iwlwifi 0000:03:00.0 wlan0: disabling HT as WMM/QoS is
not supported by the AP
[ 7.805840] iwlwifi 0000:03:00.0 wlan0: disabling VHT as WMM/QoS is
not supported by the AP
[ 7.806917] wlan0: associate with fa:9c:d6:a8:7f:e0 (try 1/3)
[ 7.809302] wlan0: RX AssocResp from fa:9c:d6:a8:7f:e0 (capab=0x411
status=0 aid=2)
[ 7.810731] wlan0: associated
[ 7.810749] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[ 7.835959] audit: type=1400 audit(1418854546.344:16):
apparmor="STATUS" operation="profile_load"
name="/usr/sbin/cups-browsed" pid=870 comm="apparmor_parser"
[ 9.650575] audit: type=1400 audit(1418854548.156:17):
apparmor="STATUS" operation="profile_load" name="/usr/bin/evince"
pid=830 comm="apparmor_parser"
[ 10.737631] init: plymouth-upstart-bridge main process ended, respawning
[ 10.746571] init: plymouth-upstart-bridge main process ended, respawning
[ 10.801280] systemd-logind[795]: Failed to start unit
user@112.service: Unknown unit: user@112.service
[ 10.801286] systemd-logind[795]: Failed to start user service:
Unknown unit: user@112.service
[ 10.803827] systemd-logind[795]: New session c1 of user lightdm.
[ 10.803840] systemd-logind[795]: Linked /tmp/.X11-unix/X0 to
/run/user/112/X11-display.
[ 14.197088] systemd-logind[795]: Failed to start unit
user@1000.service: Unknown unit: user@1000.service
[ 14.197093] systemd-logind[795]: Failed to start user service:
Unknown unit: user@1000.service
[ 14.199812] systemd-logind[795]: New session c2 of user vincent.
[ 14.199829] systemd-logind[795]: Linked /tmp/.X11-unix/X0 to
/run/user/1000/X11-display.
On Wed, Dec 17, 2014 at 11:09 PM, <ulrik.debie-os@e2big.org> wrote:
> Hi,
>
> could you provide the dmesg lines after startup (or at least those that contain
> the word "elantech") ?
>
> Can you describe your mouse buttons please ? Are some located above/under
> the touchpad ?
>
> Maybe next week I'll find some time to look into it, I'm currently on ski
> holidays.
>
> Ulrik
> On Wed, Dec 17, 2014 at 10:09:22PM +0100, Vincent Jaubert wrote:
>> Date: Wed, 17 Dec 2014 22:09:22 +0100
>> From: Vincent Jaubert <contact@vjaubert.com>
>> To: linux-input@vger.kernel.org
>> Subject: Elantech touchpad on Fujitsu E554 not working at all
>> X-Mailing-List: linux-input@vger.kernel.org
>>
>> My touchpad on my brand new Fujitsu E554 doesn't work at all.
>> Bios flashed with latest version.
>> The touchpad works correctly under windows 7.
>>
>> Here is the partial output from "xinput -list" :
>>
>> Virtual core pointer id=2 [master pointer (3)]
>> ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
>> ⎜ ↳ USB Optical Mouse id=12 [slave pointer (2)]
>> ⎜ ↳ Elantech PS/2 TrackPoint id=14 [slave pointer (2)]
>> ⎜ ↳ ETPS/2 Elantech Touchpad id=15 [slave pointer (2)]
>>
>> The trackpoint is working correctly since 3.18.0.
>> The touchpad doen't work at all.
>>
>> With "dmesg | grep mouse", i got lot of :
>>
>> [ 377.818193] psmouse serio2: Touchpad at isa0060/serio2/input0 lost
>> sync at byte 6
>> [ 377.818204] psmouse serio2: issuing reconnect request
>>
>> I'm on Ubuntu 14.10 x86-64, with 3.18.0 kernel compiled from kernel.org sources.
>>
>>
>>
>> Output of cat /proc/info :
>> Linux version 3.18.0-vanillaice (root@vincent-LIFEBOOK-E554) (gcc
>> version 4.9.1 (Ubuntu 4.9.1-16ubuntu6) ) #1 SMP Wed Dec 17 19:54:23
>> CET 2014
>>
>> Outuput of lsb_release -rd :
>> Description: Ubuntu 14.10
>> Release: 14.10
>>
>> Outuput of ver_linux :
>>
>> Linux vincent-LIFEBOOK-E554 3.18.0-vanillaice #1 SMP Wed Dec 17
>> 19:54:23 CET 2014 x86_64 x86_64 x86_64 GNU/Linux
>>
>> Gnu C 4.9.1
>> Gnu make 4.0
>> binutils 2.24.90.20141014
>> util-linux 2.25.1
>> mount debug
>> module-init-tools 18
>> e2fsprogs 1.42.10
>> pcmciautils 018
>> PPP 2.4.5
>> Linux C Library 2.19
>> Dynamic linker (ldd) 2.19
>> Procps 3.3.9
>> Net-tools 1.60
>> Kbd 1.15.5
>> Sh-utils 8.23
>> wireless-tools 30
>> Modules Loaded isofs hid_generic usbhid hid ctr ccm arc4
>> snd_hda_codec_hdmi iwlmvm mac80211 snd_hda_codec_realtek
>> snd_hda_codec_generic iwlwifi rtsx_pci_ms memstick cfg80211 intel_rapl
>> x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel kvm
>> crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel
>> aes_x86_64 lrw gf128mul glue_helper ablk_helper cryptd snd_hda_intel
>> snd_hda_controller snd_hda_codec snd_hwdep joydev snd_pcm serio_raw
>> snd_seq_midi snd_seq_midi_event uvcvideo videobuf2_vmalloc snd_rawmidi
>> videobuf2_memops videobuf2_core snd_seq cdc_mbim qcserial cdc_wdm
>> v4l2_common cdc_ncm usb_wwan usbnet usbserial videodev media
>> snd_seq_device snd_timer snd btusb mei_me mei soundcore lpc_ich shpchp
>> i915 mac_hid drm_kms_helper ie31200_edac drm video i2c_algo_bit
>> edac_core intel_rst fujitsu_laptop rfcomm bnep bluetooth parport_pc
>> ppdev lp parport binfmt_misc rtsx_pci_sdmmc ahci libahci psmouse r8169
>> rtsx_pci mii
>>
>> Output of cat /proc/cpuinfo
>> processor : 0
>> vendor_id : GenuineIntel
>> cpu family : 6
>> model : 60
>> model name : Intel(R) Core(TM) i5-4210M CPU @ 2.60GHz
>> stepping : 3
>> microcode : 0x1c
>> cpu MHz : 800.007
>> cache size : 3072 KB
>> physical id : 0
>> siblings : 4
>> core id : 0
>> cpu cores : 2
>> apicid : 0
>> initial apicid : 0
>> fpu : yes
>> fpu_exception : yes
>> cpuid level : 13
>> wp : yes
>> flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
>> pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx
>> pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl
>> xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor
>> ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe
>> popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida
>> arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase
>> tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt
>> bugs :
>> bogomips : 5188.49
>> clflush size : 64
>> cache_alignment : 64
>> address sizes : 39 bits physical, 48 bits virtual
>> power management:
>>
>> processor : 1
>> vendor_id : GenuineIntel
>> cpu family : 6
>> model : 60
>> model name : Intel(R) Core(TM) i5-4210M CPU @ 2.60GHz
>> stepping : 3
>> microcode : 0x1c
>> cpu MHz : 800.312
>> cache size : 3072 KB
>> physical id : 0
>> siblings : 4
>> core id : 0
>> cpu cores : 2
>> apicid : 1
>> initial apicid : 1
>> fpu : yes
>> fpu_exception : yes
>> cpuid level : 13
>> wp : yes
>> flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
>> pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx
>> pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl
>> xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor
>> ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe
>> popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida
>> arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase
>> tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt
>> bugs :
>> bogomips : 5188.49
>> clflush size : 64
>> cache_alignment : 64
>> address sizes : 39 bits physical, 48 bits virtual
>> power management:
>>
>> processor : 2
>> vendor_id : GenuineIntel
>> cpu family : 6
>> model : 60
>> model name : Intel(R) Core(TM) i5-4210M CPU @ 2.60GHz
>> stepping : 3
>> microcode : 0x1c
>> cpu MHz : 800.007
>> cache size : 3072 KB
>> physical id : 0
>> siblings : 4
>> core id : 1
>> cpu cores : 2
>> apicid : 2
>> initial apicid : 2
>> fpu : yes
>> fpu_exception : yes
>> cpuid level : 13
>> wp : yes
>> flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
>> pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx
>> pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl
>> xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor
>> ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe
>> popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida
>> arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase
>> tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt
>> bugs :
>> bogomips : 5188.49
>> clflush size : 64
>> cache_alignment : 64
>> address sizes : 39 bits physical, 48 bits virtual
>> power management:
>>
>> processor : 3
>> vendor_id : GenuineIntel
>> cpu family : 6
>> model : 60
>> model name : Intel(R) Core(TM) i5-4210M CPU @ 2.60GHz
>> stepping : 3
>> microcode : 0x1c
>> cpu MHz : 800.109
>> cache size : 3072 KB
>> physical id : 0
>> siblings : 4
>> core id : 1
>> cpu cores : 2
>> apicid : 3
>> initial apicid : 3
>> fpu : yes
>> fpu_exception : yes
>> cpuid level : 13
>> wp : yes
>> flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
>> pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx
>> pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl
>> xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor
>> ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe
>> popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida
>> arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase
>> tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt
>> bugs :
>> bogomips : 5188.49
>> clflush size : 64
>> cache_alignment : 64
>> address sizes : 39 bits physical, 48 bits virtual
>> power management:
>>
>> output of cat /proc/modules
>> isofs 39720 1 - Live 0x0000000000000000
>> hid_generic 12559 0 - Live 0x0000000000000000
>> usbhid 52565 0 - Live 0x0000000000000000
>> hid 110066 2 hid_generic,usbhid, Live 0x0000000000000000
>> ctr 13049 1 - Live 0x0000000000000000
>> ccm 17731 1 - Live 0x0000000000000000
>> arc4 12608 2 - Live 0x0000000000000000
>> snd_hda_codec_hdmi 51974 1 - Live 0x0000000000000000
>> iwlmvm 251094 0 - Live 0x0000000000000000
>> mac80211 674115 1 iwlmvm, Live 0x0000000000000000
>> snd_hda_codec_realtek 79613 1 - Live 0x0000000000000000
>> snd_hda_codec_generic 68875 1 snd_hda_codec_realtek, Live 0x0000000000000000
>> iwlwifi 186039 1 iwlmvm, Live 0x0000000000000000
>> rtsx_pci_ms 18168 0 - Live 0x0000000000000000
>> memstick 16966 1 rtsx_pci_ms, Live 0x0000000000000000
>> cfg80211 513009 3 iwlmvm,mac80211,iwlwifi, Live 0x0000000000000000
>> intel_rapl 18783 0 - Live 0x0000000000000000
>> x86_pkg_temp_thermal 14205 0 - Live 0x0000000000000000
>> intel_powerclamp 18786 0 - Live 0x0000000000000000
>> coretemp 13441 0 - Live 0x0000000000000000
>> kvm_intel 148273 0 - Live 0x0000000000000000
>> kvm 466035 1 kvm_intel, Live 0x0000000000000000
>> crct10dif_pclmul 14307 0 - Live 0x0000000000000000
>> crc32_pclmul 13133 0 - Live 0x0000000000000000
>> ghash_clmulni_intel 13230 0 - Live 0x0000000000000000
>> aesni_intel 169590 2 - Live 0x0000000000000000
>> aes_x86_64 17131 1 aesni_intel, Live 0x0000000000000000
>> lrw 13287 1 aesni_intel, Live 0x0000000000000000
>> gf128mul 14951 1 lrw, Live 0x0000000000000000
>> glue_helper 13944 1 aesni_intel, Live 0x0000000000000000
>> ablk_helper 13597 1 aesni_intel, Live 0x0000000000000000
>> cryptd 20360 3 ghash_clmulni_intel,aesni_intel,ablk_helper, Live
>> 0x0000000000000000
>> snd_hda_intel 30520 6 - Live 0x0000000000000000
>> snd_hda_controller 31872 1 snd_hda_intel, Live 0x0000000000000000
>> snd_hda_codec 139421 5
>> snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_codec_generic,snd_hda_intel,snd_hda_controller,
>> Live 0x0000000000000000
>> snd_hwdep 17698 1 snd_hda_codec, Live 0x0000000000000000
>> joydev 17344 0 - Live 0x0000000000000000
>> snd_pcm 105335 5
>> snd_hda_codec_hdmi,snd_hda_intel,snd_hda_controller,snd_hda_codec,
>> Live 0x0000000000000000
>> serio_raw 13434 0 - Live 0x0000000000000000
>> snd_seq_midi 13564 0 - Live 0x0000000000000000
>> snd_seq_midi_event 14899 1 snd_seq_midi, Live 0x0000000000000000
>> uvcvideo 81109 0 - Live 0x0000000000000000
>> videobuf2_vmalloc 13216 1 uvcvideo, Live 0x0000000000000000
>> snd_rawmidi 30876 1 snd_seq_midi, Live 0x0000000000000000
>> videobuf2_memops 13362 1 videobuf2_vmalloc, Live 0x0000000000000000
>> videobuf2_core 47079 1 uvcvideo, Live 0x0000000000000000
>> snd_seq 67178 2 snd_seq_midi,snd_seq_midi_event, Live 0x0000000000000000
>> cdc_mbim 13400 0 - Live 0x0000000000000000
>> qcserial 17286 0 - Live 0x0000000000000000
>> cdc_wdm 23109 1 cdc_mbim, Live 0x0000000000000000
>> v4l2_common 15682 1 videobuf2_core, Live 0x0000000000000000
>> cdc_ncm 30903 1 cdc_mbim, Live 0x0000000000000000
>> usb_wwan 19865 1 qcserial, Live 0x0000000000000000
>> usbnet 43806 2 cdc_mbim,cdc_ncm, Live 0x0000000000000000
>> usbserial 45100 2 qcserial,usb_wwan, Live 0x0000000000000000
>> videodev 158682 3 uvcvideo,videobuf2_core,v4l2_common, Live 0x0000000000000000
>> media 21963 2 uvcvideo,videodev, Live 0x0000000000000000
>> snd_seq_device 14497 3 snd_seq_midi,snd_rawmidi,snd_seq, Live 0x0000000000000000
>> snd_timer 29458 2 snd_pcm,snd_seq, Live 0x0000000000000000
>> snd 87611 22 snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_codec_generic,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_rawmidi,snd_seq,snd_seq_device,snd_timer,
>> Live 0x0000000000000000
>> btusb 32336 0 - Live 0x0000000000000000
>> mei_me 19568 0 - Live 0x0000000000000000
>> mei 87928 1 mei_me, Live 0x0000000000000000
>> soundcore 15052 2 snd_hda_codec,snd, Live 0x0000000000000000
>> lpc_ich 21093 0 - Live 0x0000000000000000
>> shpchp 37040 0 - Live 0x0000000000000000
>> i915 997306 6 - Live 0x0000000000000000
>> mac_hid 13227 0 - Live 0x0000000000000000
>> drm_kms_helper 98384 1 i915, Live 0x0000000000000000
>> ie31200_edac 12728 0 - Live 0x0000000000000000
>> drm 317398 5 i915,drm_kms_helper, Live 0x0000000000000000
>> video 20205 1 i915, Live 0x0000000000000000
>> i2c_algo_bit 13406 1 i915, Live 0x0000000000000000
>> edac_core 51809 1 ie31200_edac, Live 0x0000000000000000
>> intel_rst 12900 0 - Live 0x0000000000000000
>> fujitsu_laptop 18743 0 - Live 0x0000000000000000
>> rfcomm 69427 8 - Live 0x0000000000000000
>> bnep 19543 2 - Live 0x0000000000000000
>> bluetooth 461507 22 btusb,rfcomm,bnep, Live 0x0000000000000000
>> parport_pc 32741 0 - Live 0x0000000000000000
>> ppdev 17635 0 - Live 0x0000000000000000
>> lp 17759 0 - Live 0x0000000000000000
>> parport 42264 3 parport_pc,ppdev,lp, Live 0x0000000000000000
>> binfmt_misc 17424 1 - Live 0x0000000000000000
>> rtsx_pci_sdmmc 23190 0 - Live 0x0000000000000000
>> ahci 34019 3 - Live 0x0000000000000000
>> libahci 32190 1 ahci, Live 0x0000000000000000
>> psmouse 111475 0 - Live 0x0000000000000000
>> r8169 84648 0 - Live 0x0000000000000000
>> rtsx_pci 46889 2 rtsx_pci_ms,rtsx_pci_sdmmc, Live 0x0000000000000000
>> mii 13934 2 usbnet,r8169, Live 0x0000000000000000
>>
>> cat /proc/ioports
>> 0000-0cf7 : PCI Bus 0000:00
>> 0000-001f : dma1
>> 0020-0021 : pic1
>> 0040-0043 : timer0
>> 0050-0053 : timer1
>> 0060-0060 : keyboard
>> 0061-0061 : PNP0800:00
>> 0062-0062 : PNP0C09:00
>> 0062-0062 : EC data
>> 0064-0064 : keyboard
>> 0066-0066 : PNP0C09:00
>> 0066-0066 : EC cmd
>> 0070-0077 : rtc0
>> 0080-008f : dma page reg
>> 00a0-00a1 : pic2
>> 00c0-00df : dma2
>> 00f0-00ff : fpu
>> 00f0-00f0 : PNP0C04:00
>> 03c0-03df : vesafb
>> 0410-0415 : ACPI CPU throttle
>> 04d0-04d1 : pnp 00:01
>> 0600-0603 : pnp 00:01
>> 0604-0607 : pnp 00:01
>> 0800-087f : pnp 00:01
>> 0cf8-0cff : PCI conf1
>> 0d00-ffff : PCI Bus 0000:00
>> 1640-164f : pnp 00:01
>> 1800-187f : pnp 00:01
>> 1800-1803 : ACPI PM1a_EVT_BLK
>> 1804-1805 : ACPI PM1a_CNT_BLK
>> 1808-180b : ACPI PM_TMR
>> 1820-182f : ACPI GPE0_BLK
>> 1830-1833 : iTCO_wdt
>> 1850-1850 : ACPI PM2_CNT_BLK
>> 1860-187f : iTCO_wdt
>> 1880-18ff : pnp 00:01
>> 2000-2003 : pnp 00:01
>> 2100-217f : pnp 00:01
>> 2180-21ff : pnp 00:01
>> 3000-3fff : PCI Bus 0000:02
>> 3000-30ff : 0000:02:00.0
>> 3000-30ff : r8169
>> 4000-403f : 0000:00:02.0
>> 4060-407f : 0000:00:1f.2
>> 4060-407f : ahci
>> 4080-4087 : 0000:00:1f.2
>> 4080-4087 : ahci
>> 4088-408f : 0000:00:1f.2
>> 4088-408f : ahci
>> 4090-4093 : 0000:00:1f.2
>> 4090-4093 : ahci
>> 4094-4097 : 0000:00:1f.2
>> 4094-4097 : ahci
>> efa0-efbf : 0000:00:1f.3
>> f800-f87f : pnp 00:01
>> f880-f8ff : pnp 00:01
>> fc00-fc7f : pnp 00:01
>> fc80-fcff : pnp 00:01
>> fd00-fd7f : pnp 00:01
>>
>>
>> cat /proc/iomem
>> 00000000-00000fff : reserved
>> 00001000-0009cfff : System RAM
>> 0009d000-0009ffff : reserved
>> 000a0000-000bffff : PCI Bus 0000:00
>> 000c0000-000cebff : Video ROM
>> 000e0000-000fffff : reserved
>> 000f0000-000fffff : System ROM
>> 00100000-c431bfff : System RAM
>> 01000000-017a4a44 : Kernel code
>> 017a4a45-01d302ff : Kernel data
>> 01e95000-01fdffff : Kernel bss
>> c431c000-c451dfff : reserved
>> c451e000-da64efff : System RAM
>> da64f000-dce3efff : reserved
>> dce3f000-dcf9efff : ACPI Non-volatile Storage
>> dcf9f000-dcffefff : ACPI Tables
>> dcfff000-dcffffff : System RAM
>> dd000000-df9fffff : reserved
>> dda00000-df9fffff : Graphics Stolen Memory
>> dfa00000-feafffff : PCI Bus 0000:00
>> dfa10000-dfa1ffff : pnp 00:00
>> e0000000-efffffff : 0000:00:02.0
>> f0000000-f03fffff : 0000:00:02.0
>> f0400000-f04fffff : PCI Bus 0000:02
>> f0400000-f0403fff : 0000:02:00.0
>> f0400000-f0403fff : r8169
>> f0500000-f05fffff : PCI Bus 0000:04
>> f0500000-f0500fff : 0000:04:00.0
>> f0500000-f0500fff : rtsx_pci
>> f0600000-f06fffff : PCI Bus 0000:03
>> f0600000-f0601fff : 0000:03:00.0
>> f0600000-f0601fff : iwlwifi
>> f0700000-f07fffff : PCI Bus 0000:02
>> f0700000-f0700fff : 0000:02:00.0
>> f0700000-f0700fff : r8169
>> f0800000-f080ffff : 0000:00:14.0
>> f0800000-f080ffff : xhci-hcd
>> f0810000-f0813fff : 0000:00:03.0
>> f0810000-f0813fff : ICH HD audio
>> f0814000-f0817fff : 0000:00:1b.0
>> f0814000-f0817fff : ICH HD audio
>> f0818000-f08180ff : 0000:00:1f.3
>> f0819000-f081900f : 0000:00:16.0
>> f0819000-f081900f : mei_me
>> f081c000-f081c7ff : 0000:00:1f.2
>> f081c000-f081c7ff : ahci
>> f8000000-fbffffff : PCI MMCONFIG 0000 [bus 00-3f]
>> f8000000-fbffffff : reserved
>> f8000000-fbffffff : pnp 00:00
>> fec00000-fec00fff : reserved
>> fec00000-fec003ff : IOAPIC 0
>> fed00000-fed003ff : HPET 0
>> fed00000-fed003ff : pnp 00:05
>> fed08000-fed08fff : reserved
>> fed08000-fed08fff : pnp 00:00
>> fed10000-fed19fff : reserved
>> fed10000-fed17fff : pnp 00:00
>> fed18000-fed18fff : pnp 00:00
>> fed19000-fed19fff : pnp 00:00
>> fed1c000-fed1ffff : reserved
>> fed1c000-fed1ffff : pnp 00:00
>> fed1f410-fed1f414 : iTCO_wdt
>> fed20000-fed3ffff : pnp 00:00
>> fed40000-fed44fff : pnp 00:00
>> fed45000-fed8ffff : pnp 00:00
>> fed90000-fed93fff : pnp 00:00
>> fee00000-fee00fff : Local APIC
>> fee00000-fee00fff : reserved
>> fef00000-feffffff : pnp 00:00
>> ffa20000-ffffffff : reserved
>> 100000000-41f5fffff : System RAM
>> 41f600000-41fffffff : RAM buffer
>>
>> lspci -vvv
>>
>> 00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core
>> Processor DRAM Controller (rev 06)
>> Subsystem: Fujitsu Limited. Device 17a6
>> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
>> Stepping- SERR- FastB2B- DisINTx-
>> Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort-
>> <TAbort- <MAbort+ >SERR- <PERR- INTx-
>> Latency: 0
>> Capabilities: [e0] Vendor Specific Information: Len=0c <?>
>>
>> 00:02.0 VGA compatible controller: Intel Corporation 4th Gen Core
>> Processor Integrated Graphics Controller (rev 06) (prog-if 00 [VGA
>> controller])
>> Subsystem: Fujitsu Limited. Device 17af
>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
>> Stepping- SERR- FastB2B- DisINTx+
>> Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort-
>> <TAbort- <MAbort- >SERR- <PERR- INTx-
>> Latency: 0
>> Interrupt: pin A routed to IRQ 28
>> Region 0: Memory at f0000000 (64-bit, non-prefetchable) [size=4M]
>> Region 2: Memory at e0000000 (64-bit, prefetchable) [size=256M]
>> Region 4: I/O ports at 4000 [size=64]
>> Expansion ROM at <unassigned> [disabled]
>> Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
>> Address: fee0f00c Data: 41b1
>> Capabilities: [d0] Power Management version 2
>> Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
>> Capabilities: [a4] PCI Advanced Features
>> AFCap: TP+ FLR+
>> AFCtrl: FLR-
>> AFStatus: TP-
>> Kernel driver in use: i915
>>
>> 00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core
>> Processor HD Audio Controller (rev 06)
>> Subsystem: Fujitsu Limited. Device 17c6
>> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
>> Stepping- SERR- FastB2B- DisINTx+
>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
>> <TAbort- <MAbort- >SERR- <PERR- INTx-
>> Latency: 0, Cache Line Size: 64 bytes
>> Interrupt: pin A routed to IRQ 30
>> Region 0: Memory at f0810000 (64-bit, non-prefetchable) [size=16K]
>> Capabilities: [50] Power Management version 2
>> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
>> Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit-
>> Address: fee0f00c Data: 41d1
>> Capabilities: [70] Express (v1) Root Complex Integrated Endpoint, MSI 00
>> DevCap: MaxPayload 128 bytes, PhantFunc 0
>> ExtTag- RBE-
>> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
>> RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
>> MaxPayload 128 bytes, MaxReadReq 128 bytes
>> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
>> Kernel driver in use: snd_hda_intel
>>
>> 00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset
>> Family USB xHCI (rev 04) (prog-if 30 [XHCI])
>> Subsystem: Fujitsu Limited. Device 17e1
>> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
>> Stepping- SERR- FastB2B- DisINTx+
>> Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
>> <TAbort- <MAbort- >SERR- <PERR- INTx-
>> Latency: 0
>> Interrupt: pin A routed to IRQ 24
>> Region 0: Memory at f0800000 (64-bit, non-prefetchable) [size=64K]
>> Capabilities: [70] Power Management version 2
>> Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0-,D1-,D2-,D3hot+,D3cold+)
>> Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
>> Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
>> Address: 00000000fee0300c Data: 4171
>> Kernel driver in use: xhci_hcd
>>
>> 00:16.0 Communication controller: Intel Corporation 8 Series/C220
>> Series Chipset Family MEI Controller #1 (rev 04)
>> Subsystem: Fujitsu Limited. Device 17dd
>> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
>> Stepping- SERR- FastB2B- DisINTx+
>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
>> <TAbort- <MAbort- >SERR- <PERR- INTx-
>> Latency: 0
>> Interrupt: pin A routed to IRQ 29
>> Region 0: Memory at f0819000 (64-bit, non-prefetchable) [size=16]
>> Capabilities: [50] Power Management version 3
>> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
>> Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
>> Capabilities: [8c] MSI: Enable+ Count=1/1 Maskable- 64bit+
>> Address: 00000000fee0f00c Data: 41c1
>> Kernel driver in use: mei_me
>>
>> 00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset
>> High Definition Audio Controller (rev 04)
>> Subsystem: Fujitsu Limited. Device 17ff
>> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
>> Stepping- SERR- FastB2B- DisINTx+
>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
>> <TAbort- <MAbort- >SERR- <PERR- INTx-
>> Latency: 0, Cache Line Size: 64 bytes
>> Interrupt: pin A routed to IRQ 31
>> Region 0: Memory at f0814000 (64-bit, non-prefetchable) [size=16K]
>> Capabilities: [50] Power Management version 2
>> Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
>> Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+
>> Address: 00000000fee0f00c Data: 4122
>> Capabilities: [70] Express (v1) Root Complex Integrated Endpoint, MSI 00
>> DevCap: MaxPayload 128 bytes, PhantFunc 0
>> ExtTag- RBE-
>> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
>> RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
>> MaxPayload 128 bytes, MaxReadReq 128 bytes
>> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
>> Capabilities: [100 v1] Virtual Channel
>> Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
>> Arb: Fixed- WRR32- WRR64- WRR128-
>> Ctrl: ArbSelect=Fixed
>> Status: InProgress-
>> VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
>> Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
>> Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=01
>> Status: NegoPending- InProgress-
>> VC1: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
>> Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
>> Ctrl: Enable+ ID=2 ArbSelect=Fixed TC/VC=04
>> Status: NegoPending- InProgress-
>> Kernel driver in use: snd_hda_intel
>>
>> 00:1c.0 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset
>> Family PCI Express Root Port #1 (rev d4) (prog-if 00 [Normal decode])
>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
>> Stepping- SERR- FastB2B- DisINTx-
>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
>> <TAbort- <MAbort- >SERR- <PERR- INTx-
>> Latency: 0, Cache Line Size: 64 bytes
>> Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
>> I/O behind bridge: 0000f000-00000fff
>> Memory behind bridge: fff00000-000fffff
>> Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff
>> Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
>> <TAbort- <MAbort+ <SERR- <PERR-
>> BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
>> PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
>> Capabilities: [40] Express (v2) Root Port (Slot-), MSI 00
>> DevCap: MaxPayload 128 bytes, PhantFunc 0
>> ExtTag- RBE+
>> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
>> RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
>> MaxPayload 128 bytes, MaxReadReq 128 bytes
>> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
>> LnkCap: Port #1, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s
>> <1us, L1 <4us
>> ClockPM- Surprise- LLActRep+ BwNot+
>> LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes Disabled- CommClk-
>> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
>> LnkSta: Speed 2.5GT/s, Width x0, TrErr- Train- SlotClk+ DLActive-
>> BWMgmt- ABWMgmt-
>> RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
>> RootCap: CRSVisible-
>> RootSta: PME ReqID 0000, PMEStatus- PMEPending-
>> DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+, OBFF Via
>> WAKE# ARIFwd-
>> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF
>> Disabled ARIFwd-
>> LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
>> Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
>> Compliance De-emphasis: -6dB
>> LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-,
>> EqualizationPhase1-
>> EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
>> Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
>> Address: 00000000 Data: 0000
>> Capabilities: [90] Subsystem: Fujitsu Limited. Device 17d3
>> Capabilities: [a0] Power Management version 3
>> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
>> Kernel driver in use: pcieport
>>
>> 00:1c.3 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset
>> Family PCI Express Root Port #4 (rev d4) (prog-if 00 [Normal decode])
>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
>> Stepping- SERR- FastB2B- DisINTx-
>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
>> <TAbort- <MAbort- >SERR- <PERR- INTx-
>> Latency: 0, Cache Line Size: 64 bytes
>> Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
>> I/O behind bridge: 00003000-00003fff
>> Memory behind bridge: f0700000-f07fffff
>> Prefetchable memory behind bridge: 00000000f0400000-00000000f04fffff
>> Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
>> <TAbort- <MAbort+ <SERR- <PERR-
>> BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
>> PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
>> Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
>> DevCap: MaxPayload 128 bytes, PhantFunc 0
>> ExtTag- RBE+
>> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
>> RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
>> MaxPayload 128 bytes, MaxReadReq 128 bytes
>> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
>> LnkCap: Port #4, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s
>> <512ns, L1 <16us
>> ClockPM- Surprise- LLActRep+ BwNot+
>> LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
>> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
>> LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive+
>> BWMgmt+ ABWMgmt-
>> SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
>> Slot #3, PowerLimit 10.000W; Interlock- NoCompl+
>> SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
>> Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
>> SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
>> Changed: MRL- PresDet- LinkState+
>> RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
>> RootCap: CRSVisible-
>> RootSta: PME ReqID 0000, PMEStatus- PMEPending-
>> DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+, OBFF Not
>> Supported ARIFwd-
>> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF
>> Disabled ARIFwd-
>> LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
>> Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
>> Compliance De-emphasis: -6dB
>> LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-,
>> EqualizationPhase1-
>> EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
>> Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
>> Address: 00000000 Data: 0000
>> Capabilities: [90] Subsystem: Fujitsu Limited. Device 17d3
>> Capabilities: [a0] Power Management version 3
>> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
>> Kernel driver in use: pcieport
>>
>> 00:1c.5 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset
>> Family PCI Express Root Port #6 (rev d4) (prog-if 00 [Normal decode])
>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
>> Stepping- SERR- FastB2B- DisINTx-
>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
>> <TAbort- <MAbort- >SERR- <PERR- INTx-
>> Latency: 0, Cache Line Size: 64 bytes
>> Bus: primary=00, secondary=03, subordinate=03, sec-latency=0
>> I/O behind bridge: 0000f000-00000fff
>> Memory behind bridge: f0600000-f06fffff
>> Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff
>> Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
>> <TAbort- <MAbort+ <SERR- <PERR-
>> BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
>> PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
>> Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
>> DevCap: MaxPayload 128 bytes, PhantFunc 0
>> ExtTag- RBE+
>> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
>> RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
>> MaxPayload 128 bytes, MaxReadReq 128 bytes
>> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
>> LnkCap: Port #6, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s
>> <512ns, L1 <16us
>> ClockPM- Surprise- LLActRep+ BwNot+
>> LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
>> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
>> LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive+
>> BWMgmt+ ABWMgmt-
>> SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
>> Slot #5, PowerLimit 10.000W; Interlock- NoCompl+
>> SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
>> Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
>> SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
>> Changed: MRL- PresDet- LinkState+
>> RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
>> RootCap: CRSVisible-
>> RootSta: PME ReqID 0000, PMEStatus- PMEPending-
>> DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+, OBFF Not
>> Supported ARIFwd-
>> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF
>> Disabled ARIFwd-
>> LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
>> Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
>> Compliance De-emphasis: -6dB
>> LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-,
>> EqualizationPhase1-
>> EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
>> Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
>> Address: 00000000 Data: 0000
>> Capabilities: [90] Subsystem: Fujitsu Limited. Device 17d3
>> Capabilities: [a0] Power Management version 3
>> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
>> Kernel driver in use: pcieport
>>
>> 00:1c.7 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset
>> Family PCI Express Root Port #8 (rev d4) (prog-if 00 [Normal decode])
>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
>> Stepping- SERR- FastB2B- DisINTx-
>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
>> <TAbort- <MAbort- >SERR- <PERR- INTx-
>> Latency: 0, Cache Line Size: 64 bytes
>> Bus: primary=00, secondary=04, subordinate=04, sec-latency=0
>> I/O behind bridge: 0000f000-00000fff
>> Memory behind bridge: f0500000-f05fffff
>> Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff
>> Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
>> <TAbort- <MAbort+ <SERR- <PERR-
>> BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
>> PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
>> Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
>> DevCap: MaxPayload 128 bytes, PhantFunc 0
>> ExtTag- RBE+
>> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
>> RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
>> MaxPayload 128 bytes, MaxReadReq 128 bytes
>> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
>> LnkCap: Port #8, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s
>> <512ns, L1 <16us
>> ClockPM- Surprise- LLActRep+ BwNot+
>> LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes Disabled- CommClk+
>> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
>> LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive+
>> BWMgmt+ ABWMgmt-
>> SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
>> Slot #7, PowerLimit 10.000W; Interlock- NoCompl+
>> SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
>> Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
>> SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
>> Changed: MRL- PresDet- LinkState+
>> RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
>> RootCap: CRSVisible-
>> RootSta: PME ReqID 0000, PMEStatus- PMEPending-
>> DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+, OBFF Not
>> Supported ARIFwd-
>> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF
>> Disabled ARIFwd-
>> LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
>> Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
>> Compliance De-emphasis: -6dB
>> LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-,
>> EqualizationPhase1-
>> EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
>> Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
>> Address: 00000000 Data: 0000
>> Capabilities: [90] Subsystem: Fujitsu Limited. Device 17d3
>> Capabilities: [a0] Power Management version 3
>> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
>> Kernel driver in use: pcieport
>>
>> 00:1f.0 ISA bridge: Intel Corporation HM86 Express LPC Controller (rev 04)
>> Subsystem: Fujitsu Limited. Device 17c7
>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
>> Stepping- SERR- FastB2B- DisINTx-
>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
>> <TAbort- <MAbort- >SERR- <PERR- INTx-
>> Latency: 0
>> Capabilities: [e0] Vendor Specific Information: Len=0c <?>
>> Kernel driver in use: lpc_ich
>>
>> 00:1f.2 SATA controller: Intel Corporation 8 Series/C220 Series
>> Chipset Family 6-port SATA Controller 1 [AHCI mode] (rev 04) (prog-if
>> 01 [AHCI 1.0])
>> Subsystem: Fujitsu Limited. Device 17c9
>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
>> Stepping- SERR- FastB2B- DisINTx+
>> Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
>> <TAbort- <MAbort- >SERR- <PERR- INTx-
>> Latency: 0
>> Interrupt: pin B routed to IRQ 26
>> Region 0: I/O ports at 4088 [size=8]
>> Region 1: I/O ports at 4094 [size=4]
>> Region 2: I/O ports at 4080 [size=8]
>> Region 3: I/O ports at 4090 [size=4]
>> Region 4: I/O ports at 4060 [size=32]
>> Region 5: Memory at f081c000 (32-bit, non-prefetchable) [size=2K]
>> Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
>> Address: fee0300c Data: 4191
>> Capabilities: [70] Power Management version 3
>> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot+,D3cold-)
>> Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
>> Capabilities: [a8] SATA HBA v1.0 BAR4 Offset=00000004
>> Kernel driver in use: ahci
>>
>> 00:1f.3 SMBus: Intel Corporation 8 Series/C220 Series Chipset Family
>> SMBus Controller (rev 04)
>> Subsystem: Fujitsu Limited. Device 17cf
>> Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
>> Stepping- SERR- FastB2B- DisINTx-
>> Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
>> <TAbort- <MAbort- >SERR- <PERR- INTx-
>> Interrupt: pin C routed to IRQ 7
>> Region 0: Memory at f0818000 (64-bit, non-prefetchable) [size=256]
>> Region 4: I/O ports at efa0 [size=32]
>>
>> 02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd.
>> RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 0c)
>> Subsystem: Fujitsu Limited. Device 17a2
>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
>> Stepping- SERR- FastB2B- DisINTx+
>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
>> <TAbort- <MAbort- >SERR- <PERR- INTx-
>> Latency: 0, Cache Line Size: 64 bytes
>> Interrupt: pin A routed to IRQ 27
>> Region 0: I/O ports at 3000 [size=256]
>> Region 2: Memory at f0700000 (64-bit, non-prefetchable) [size=4K]
>> Region 4: Memory at f0400000 (64-bit, prefetchable) [size=16K]
>> Capabilities: [40] Power Management version 3
>> Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
>> Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
>> Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
>> Address: 00000000fee0f00c Data: 41a1
>> Capabilities: [70] Express (v2) Endpoint, MSI 01
>> DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <512ns, L1 <64us
>> ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
>> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
>> RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop-
>> MaxPayload 128 bytes, MaxReadReq 4096 bytes
>> DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend-
>> LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency
>> L0s unlimited, L1 <64us
>> ClockPM+ Surprise- LLActRep- BwNot-
>> LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
>> ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
>> LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive-
>> BWMgmt- ABWMgmt-
>> DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR+, OBFF Via
>> message/WAKE#
>> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF Disabled
>> LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
>> Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
>> Compliance De-emphasis: -6dB
>> LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-,
>> EqualizationPhase1-
>> EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
>> Capabilities: [b0] MSI-X: Enable- Count=4 Masked-
>> Vector table: BAR=4 offset=00000000
>> PBA: BAR=4 offset=00000800
>> Capabilities: [d0] Vital Product Data
>> Unknown small resource type 00, will not decode more.
>> Capabilities: [100 v1] Advanced Error Reporting
>> UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
>> MalfTLP- ECRC- UnsupReq- ACSViol-
>> UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
>> MalfTLP- ECRC- UnsupReq- ACSViol-
>> UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+
>> MalfTLP+ ECRC- UnsupReq- ACSViol-
>> CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
>> CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
>> AERCap: First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn-
>> Capabilities: [140 v1] Virtual Channel
>> Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
>> Arb: Fixed- WRR32- WRR64- WRR128-
>> Ctrl: ArbSelect=Fixed
>> Status: InProgress-
>> VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
>> Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
>> Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
>> Status: NegoPending- InProgress-
>> Capabilities: [160 v1] Device Serial Number 02-4a-11-fe-ff-b2-7f-e4
>> Capabilities: [170 v1] Latency Tolerance Reporting
>> Max snoop latency: 3145728ns
>> Max no snoop latency: 3145728ns
>> Kernel driver in use: r8169
>>
>> 03:00.0 Network controller: Intel Corporation Wireless 7260 (rev 73)
>> Subsystem: Intel Corporation Wireless-N 7260
>> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
>> Stepping- SERR- FastB2B- DisINTx+
>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
>> <TAbort- <MAbort- >SERR- <PERR- INTx-
>> Latency: 0, Cache Line Size: 64 bytes
>> Interrupt: pin A routed to IRQ 32
>> Region 0: Memory at f0600000 (64-bit, non-prefetchable) [size=8K]
>> Capabilities: [c8] Power Management version 3
>> Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
>> Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+
>> Address: 00000000fee0100c Data: 4142
>> Capabilities: [40] Express (v2) Endpoint, MSI 00
>> DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <512ns, L1 unlimited
>> ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset+
>> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
>> RlxdOrd+ ExtTag- PhantFunc- AuxPwr+ NoSnoop+ FLReset-
>> MaxPayload 128 bytes, MaxReadReq 128 bytes
>> DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend-
>> LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency
>> L0s <4us, L1 <32us
>> ClockPM+ Surprise- LLActRep- BwNot-
>> LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
>> ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
>> LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive-
>> BWMgmt- ABWMgmt-
>> DevCap2: Completion Timeout: Range B, TimeoutDis+, LTR+, OBFF Via WAKE#
>> DevCtl2: Completion Timeout: 16ms to 55ms, TimeoutDis-, LTR+, OBFF Disabled
>> LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
>> Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
>> Compliance De-emphasis: -6dB
>> LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-,
>> EqualizationPhase1-
>> EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
>> Capabilities: [100 v1] Advanced Error Reporting
>> UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
>> MalfTLP- ECRC- UnsupReq- ACSViol-
>> UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
>> MalfTLP- ECRC- UnsupReq- ACSViol-
>> UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+
>> MalfTLP+ ECRC- UnsupReq- ACSViol-
>> CESta: RxErr- BadTLP+ BadDLLP- Rollover- Timeout- NonFatalErr+
>> CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
>> AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
>> Capabilities: [140 v1] Device Serial Number a0-a8-cd-ff-ff-a7-be-3a
>> Capabilities: [14c v1] Latency Tolerance Reporting
>> Max snoop latency: 3145728ns
>> Max no snoop latency: 3145728ns
>> Capabilities: [154 v1] Vendor Specific Information: ID=cafe Rev=1 Len=014 <?>
>> Kernel driver in use: iwlwifi
>>
>> 04:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd.
>> RTS5227 PCI Express Card Reader (rev 01)
>> Subsystem: Fujitsu Limited. Device 187f
>> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
>> Stepping- SERR- FastB2B- DisINTx+
>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
>> <TAbort- <MAbort- >SERR- <PERR- INTx-
>> Latency: 0, Cache Line Size: 64 bytes
>> Interrupt: pin A routed to IRQ 25
>> Region 0: Memory at f0500000 (32-bit, non-prefetchable) [size=4K]
>> Capabilities: [40] Power Management version 3
>> Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0-,D1+,D2+,D3hot+,D3cold+)
>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
>> Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
>> Address: 00000000fee0f00c Data: 4181
>> Capabilities: [70] Express (v2) Endpoint, MSI 00
>> DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited
>> ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
>> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
>> RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop-
>> MaxPayload 128 bytes, MaxReadReq 512 bytes
>> DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend-
>> LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency
>> L0s unlimited, L1 <64us
>> ClockPM+ Surprise- LLActRep- BwNot-
>> LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk-
>> ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
>> LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive-
>> BWMgmt- ABWMgmt-
>> DevCap2: Completion Timeout: Not Supported, TimeoutDis+, LTR+, OBFF
>> Via message/WAKE#
>> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF Disabled
>> LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
>> Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
>> Compliance De-emphasis: -6dB
>> LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-,
>> EqualizationPhase1-
>> EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
>> Capabilities: [100 v2] Advanced Error Reporting
>> UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
>> MalfTLP- ECRC- UnsupReq- ACSViol-
>> UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
>> MalfTLP- ECRC- UnsupReq- ACSViol-
>> UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+
>> MalfTLP+ ECRC- UnsupReq- ACSViol-
>> CESta: RxErr+ BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
>> CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
>> AERCap: First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn-
>> Capabilities: [140 v1] Device Serial Number 00-00-00-01-00-4c-e0-00
>> Capabilities: [150 v1] Latency Tolerance Reporting
>> Max snoop latency: 3145728ns
>> Max no snoop latency: 3145728ns
>> Capabilities: [158 v1] L1 PM Substates
>> L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
>> PortCommonModeRestoreTime=60us PortTPowerOnTime=60us
>> Kernel driver in use: rtsx_pci
>>
>> --------------------------------------------------
>>
>> cat /proc/scsi/scsi
>> Attached devices:
>> Host: scsi2 Channel: 00 Id: 00 Lun: 00
>> Vendor: TSSTcorp Model: CDDVDW SU-208CB Rev: FU01
>> Type: CD-ROM ANSI SCSI revision: 05
>> Host: scsi4 Channel: 00 Id: 00 Lun: 00
>> Vendor: ATA Model: SAMSUNG MZ7TE256 Rev: 200Q
>> Type: Direct-Access ANSI SCSI revision: 05
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-input" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* [PATCH] Input: Add CLOCK_BOOTTIME Support
From: Aniroop Mathur @ 2014-12-17 23:07 UTC (permalink / raw)
To: dmitry.torokhov, dtor, linux-input; +Cc: aniroop.mathur, a.mathur
This patch adds support for CLOCK_BOOTTIME for input event timestamp.
CLOCK_BOOTTIME includes suspend time, so it would allow aplications
to get correct time difference between two events even when system
resumes from suspend state.
Signed-off-by: Aniroop Mathur <a.mathur@samsung.com>
---
drivers/input/evdev.c | 52 +++++++++++++++++++++++++++++++++++++--------------
1 file changed, 38 insertions(+), 14 deletions(-)
diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
index de05545..bfca214 100644
--- a/drivers/input/evdev.c
+++ b/drivers/input/evdev.c
@@ -28,6 +28,13 @@
#include <linux/cdev.h>
#include "input-compat.h"
+enum evdev_clock_type {
+ EV_CLK_REAL = 0,
+ EV_CLK_MONO,
+ EV_CLK_BOOT,
+ EV_CLK_MAX
+};
+
struct evdev {
int open;
struct input_handle handle;
@@ -49,12 +56,29 @@ struct evdev_client {
struct fasync_struct *fasync;
struct evdev *evdev;
struct list_head node;
- int clkid;
+ int clk_type;
bool revoked;
unsigned int bufsize;
struct input_event buffer[];
};
+static int evdev_set_clk_type(int id, struct evdev_client *client)
+{
+ switch (id) {
+
+ case CLOCK_REALTIME:
+ client->clk_type = EV_CLK_REAL; break;
+ case CLOCK_MONOTONIC:
+ client->clk_type = EV_CLK_MONO; break;
+ case CLOCK_BOOTTIME:
+ client->clk_type = EV_CLK_BOOT; break;
+ default:
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
/* flush queued events of type @type, caller must hold client->buffer_lock */
static void __evdev_flush_queue(struct evdev_client *client, unsigned int type)
{
@@ -108,8 +132,9 @@ static void evdev_queue_syn_dropped(struct evdev_client *client)
struct input_event ev;
ktime_t time;
- time = (client->clkid == CLOCK_MONOTONIC) ?
- ktime_get() : ktime_get_real();
+ time = (client->clk_type == EV_CLK_REAL) ?
+ ktime_get_real() : (client->clk_type == EV_CLK_MONO) ?
+ ktime_get() : ktime_get_boottime();
ev.time = ktime_to_timeval(time);
ev.type = EV_SYN;
@@ -159,7 +184,7 @@ static void __pass_event(struct evdev_client *client,
static void evdev_pass_values(struct evdev_client *client,
const struct input_value *vals, unsigned int count,
- ktime_t mono, ktime_t real)
+ ktime_t *ev_time)
{
struct evdev *evdev = client->evdev;
const struct input_value *v;
@@ -169,8 +194,7 @@ static void evdev_pass_values(struct evdev_client *client,
if (client->revoked)
return;
- event.time = ktime_to_timeval(client->clkid == CLOCK_MONOTONIC ?
- mono : real);
+ event.time = ktime_to_timeval(ev_time[client->clk_type]);
/* Interrupts are disabled, just acquire the lock. */
spin_lock(&client->buffer_lock);
@@ -198,21 +222,22 @@ static void evdev_events(struct input_handle *handle,
{
struct evdev *evdev = handle->private;
struct evdev_client *client;
- ktime_t time_mono, time_real;
+ ktime_t ev_time[EV_CLK_MAX];
- time_mono = ktime_get();
- time_real = ktime_mono_to_real(time_mono);
+ ev_time[EV_CLK_MONO] = ktime_get();
+ ev_time[EV_CLK_REAL] = ktime_mono_to_real(ev_time[EV_CLK_MONO]);
+ ev_time[EV_CLK_BOOT] = ktime_mono_to_any(ev_time[EV_CLK_BOOT],
+ TK_OFFS_BOOT);
rcu_read_lock();
client = rcu_dereference(evdev->grab);
if (client)
- evdev_pass_values(client, vals, count, time_mono, time_real);
+ evdev_pass_values(client, vals, count, ev_time);
else
list_for_each_entry_rcu(client, &evdev->client_list, node)
- evdev_pass_values(client, vals, count,
- time_mono, time_real);
+ evdev_pass_values(client, vals, count, ev_time);
rcu_read_unlock();
}
@@ -874,9 +899,8 @@ static long evdev_do_ioctl(struct file *file, unsigned int cmd,
case EVIOCSCLOCKID:
if (copy_from_user(&i, p, sizeof(unsigned int)))
return -EFAULT;
- if (i != CLOCK_MONOTONIC && i != CLOCK_REALTIME)
+ if (evdev_set_clk_type(i, client))
return -EINVAL;
- client->clkid = i;
return 0;
case EVIOCGKEYCODE:
--
1.9.1
^ permalink raw reply related
* Re: [PATCH] Input: Add support for CLOCK_BOOTTIME
From: Aniroop Mathur @ 2014-12-17 23:11 UTC (permalink / raw)
To: Dmitry Torokhov
Cc: linux-input@vger.kernel.org, a.mathur, Thomas Gleixner,
John Stultz
In-Reply-To: <20141217220323.GB32399@dtor-ws>
Hello Mr. Torokhov,
On Thu, Dec 18, 2014 at 3:33 AM, Dmitry Torokhov
<dmitry.torokhov@gmail.com> wrote:
> On Thu, Dec 18, 2014 at 03:03:26AM +0530, Aniroop Mathur wrote:
>> Hello Mr. Torokhov,
>>
>> On Wed, Dec 17, 2014 at 11:50 PM, Dmitry Torokhov
>> <dmitry.torokhov@gmail.com> wrote:
>> > Hi Aniroop,
>> >
>> > On Tue, Dec 16, 2014 at 10:26:34PM +0530, Aniroop Mathur wrote:
>> >> This patch adds support for CLOCK_BOOTTIME for input event timestamp.
>> >> CLOCK_BOOTTIME includes suspend time, so it would allow aplications
>> >> to get correct time difference between two events even when system
>> >> resumes from suspend state.
>> >>
>> >> Signed-off-by: Aniroop Mathur <a.mathur@samsung.com>
>> >> ---
>> >> drivers/input/evdev.c | 33 +++++++++++++++++++++------------
>> >> 1 file changed, 21 insertions(+), 12 deletions(-)
>> >>
>> >> diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
>> >> index de05545..7825794 100644
>> >> --- a/drivers/input/evdev.c
>> >> +++ b/drivers/input/evdev.c
>> >> @@ -28,6 +28,13 @@
>> >> #include <linux/cdev.h>
>> >> #include "input-compat.h"
>> >>
>> >> +enum clock_type {
>> >> + REAL = 0,
>> >> + MONO,
>> >> + BOOT,
>> >> + CLK_MAX
>> >> +};
>> >> +
>> >> struct evdev {
>> >> int open;
>> >> struct input_handle handle;
>> >> @@ -108,8 +115,9 @@ static void evdev_queue_syn_dropped(struct evdev_client *client)
>> >> struct input_event ev;
>> >> ktime_t time;
>> >>
>> >> - time = (client->clkid == CLOCK_MONOTONIC) ?
>> >> - ktime_get() : ktime_get_real();
>> >> + time = (client->clkid == CLOCK_REALTIME) ?
>> >> + ktime_get_real() : (client->clkid == CLOCK_MONOTONIC) ?
>> >> + ktime_get() : ktime_get_boottime();
>> >>
>>
>> Is this okay ?
>> To improve readabilty,
>> how about adding a new funtion to get time depending upon clkid like below ?
>> time = get_clk_time(client->clkid);
>>
>> static ktime_t get_clk_time(int id)
>> {
>> switch (id) {
>>
>> case CLOCK_REALTIME: return ktime_get_real();
>> case CLOCK_MONOTONIC: return ktime_get();
>> case CLOCK_BOOTTIME: return ktime_get_bootime();
>> }
>> }
>
> Just open-code it in evdev_queue_syn_dropped() since there is only place
> where we call it. And use clk_type instead of clock id-.
>
>>
>> >> ev.time = ktime_to_timeval(time);
>> >> ev.type = EV_SYN;
>> >> @@ -159,7 +167,7 @@ static void __pass_event(struct evdev_client *client,
>> >>
>> >> static void evdev_pass_values(struct evdev_client *client,
>> >> const struct input_value *vals, unsigned int count,
>> >> - ktime_t mono, ktime_t real)
>> >> + ktime_t *ev_time)
>> >> {
>> >> struct evdev *evdev = client->evdev;
>> >> const struct input_value *v;
>> >> @@ -169,8 +177,9 @@ static void evdev_pass_values(struct evdev_client *client,
>> >> if (client->revoked)
>> >> return;
>> >>
>> >> - event.time = ktime_to_timeval(client->clkid == CLOCK_MONOTONIC ?
>> >> - mono : real);
>> >> + event.time = ktime_to_timeval(client->clkid == CLOCK_REALTIME ?
>> >> + ev_time[REAL] : client->clkid == CLOCK_MONOTONIC ?
>> >> + ev_time[MONO] : ev_time[BOOT]);
>> >
>> > This becomes unwieldy. Should we have client->clk_type instead of
>> > client->clkid and convert CLOCK_* into your EVDEV_CLK_{REAL|MONO|BOOT}
>> > when setting it in ioctl and then do
>> >
>> > event.time = ktime_to_timeval(ev_time[client->clk_offset]);
>> >
>>
>> Sure, using clk_type would be better and improve code readability.
>>
>> I am afraid how converting CLOCK_* into your
>> EVDEV_CLK_{REAL|MONO|BOOT} will help
>> because we cannot have ev_time array size more than CLK_MAX (3).
>>
>> Did you mean to have following changes:
>>
>> 1. Add clk_type variable
>> struct evdev_client {
>> int clkid:
>> + int clk_type;
>> }
>
> I meant replacing clkid with clk_type in evdev_client.
>
>>
>> 2. Add new funtion for setting clk_type to improve readability
>> static int set_clk_type(struct evdev_client *client, int id)
>
>
> evdev_set_clk_type() to keep with the style.
>
>> {
>> switch (id) {
>>
>> case CLOCK_REALTIME: client->clk_type = EV_REAL; break;
>> case CLOCK_MONOTONIC: client->clk_type = EV_MONO; break;
>> case CLOCK_BOOTTIME: client->clk_type = EV_BOOT; break;
>> default: return -1
>
> -EINVAL here, otherwise yes.
>
>> }
>>
>> return 0;
>> }
>>
>> 3. Addition in ioctl call
>> case EVIOCSCLOCKID:
>> ...
>> if (!set_clk_type())
>> return -EINVAL;
>>
>
> error = evdev_set_clktype(i);
> if (error)
> return error;
>
>> client->clkid = i;
>
> Drop this.
>
>> return 0;
>>
>> 4. Change in evdev_pass_values function
>> event.time = ktime_to_timeval(ev_time[client->clk_type]);
>
> Yes.
>
>>
>> >>
>> >> /* Interrupts are disabled, just acquire the lock. */
>> >> spin_lock(&client->buffer_lock);
>> >> @@ -198,21 +207,21 @@ static void evdev_events(struct input_handle *handle,
>> >> {
>> >> struct evdev *evdev = handle->private;
>> >> struct evdev_client *client;
>> >> - ktime_t time_mono, time_real;
>> >> + ktime_t ev_time[CLK_MAX];
>> >>
>> >> - time_mono = ktime_get();
>> >> - time_real = ktime_mono_to_real(time_mono);
>> >> + ev_time[MONO] = ktime_get();
>> >> + ev_time[REAL] = ktime_mono_to_real(ev_time[MONO]);
>> >> + ev_time[BOOT] = ktime_get_boottime();
>> >
>> > I do not think we want to use ktime_get_boottime() here; I'd rather you
>> > use ktime_mono_to_anY(ev_time[MONO], TK_OFFS_BOOT) so that all 3 times
>> > are consistent.
>> >
>>
>> Sure. I will send the updated patch with this change.
>>
>> >>
>> >> rcu_read_lock();
>> >>
>> >> client = rcu_dereference(evdev->grab);
>> >>
>> >> if (client)
>> >> - evdev_pass_values(client, vals, count, time_mono, time_real);
>> >> + evdev_pass_values(client, vals, count, ev_time);
>> >> else
>> >> list_for_each_entry_rcu(client, &evdev->client_list, node)
>> >> - evdev_pass_values(client, vals, count,
>> >> - time_mono, time_real);
>> >> + evdev_pass_values(client, vals, count, ev_time);
>> >>
>> >> rcu_read_unlock();
>> >> }
>> >> @@ -874,7 +883,7 @@ static long evdev_do_ioctl(struct file *file, unsigned int cmd,
>> >> case EVIOCSCLOCKID:
>> >> if (copy_from_user(&i, p, sizeof(unsigned int)))
>> >> return -EFAULT;
>> >> - if (i != CLOCK_MONOTONIC && i != CLOCK_REALTIME)
>> >> + if (i != CLOCK_MONOTONIC && i != CLOCK_REALTIME && i != CLOCK_BOOTTIME)
>> >> return -EINVAL;
>> >> client->clkid = i;
>> >> return 0;
>> >> --
>> >> 1.9.1
>> >>
>> >
>> > Thanks.
>> >
>> > --
>> > Dmitry
>>
>> Thanks,
>> Aniroop Mathur
>
> --
> Dmitry
Thanks for the suggestions !!
I have sent you the updated patch with new changes done.
Thanks,
Aniroop
^ permalink raw reply
* Re: [PATCH] Input: Add CLOCK_BOOTTIME Support
From: Dmitry Torokhov @ 2014-12-17 23:17 UTC (permalink / raw)
To: Aniroop Mathur; +Cc: linux-input, a.mathur
In-Reply-To: <1418857674-6249-1-git-send-email-aniroop.mathur@gmail.com>
On Thu, Dec 18, 2014 at 04:37:54AM +0530, Aniroop Mathur wrote:
> This patch adds support for CLOCK_BOOTTIME for input event timestamp.
> CLOCK_BOOTTIME includes suspend time, so it would allow aplications
> to get correct time difference between two events even when system
> resumes from suspend state.
>
> Signed-off-by: Aniroop Mathur <a.mathur@samsung.com>
> ---
> drivers/input/evdev.c | 52 +++++++++++++++++++++++++++++++++++++--------------
> 1 file changed, 38 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
> index de05545..bfca214 100644
> --- a/drivers/input/evdev.c
> +++ b/drivers/input/evdev.c
> @@ -28,6 +28,13 @@
> #include <linux/cdev.h>
> #include "input-compat.h"
>
> +enum evdev_clock_type {
> + EV_CLK_REAL = 0,
> + EV_CLK_MONO,
> + EV_CLK_BOOT,
> + EV_CLK_MAX
> +};
> +
> struct evdev {
> int open;
> struct input_handle handle;
> @@ -49,12 +56,29 @@ struct evdev_client {
> struct fasync_struct *fasync;
> struct evdev *evdev;
> struct list_head node;
> - int clkid;
> + int clk_type;
> bool revoked;
> unsigned int bufsize;
> struct input_event buffer[];
> };
>
> +static int evdev_set_clk_type(int id, struct evdev_client *client)
> +{
> + switch (id) {
> +
> + case CLOCK_REALTIME:
> + client->clk_type = EV_CLK_REAL; break;
> + case CLOCK_MONOTONIC:
> + client->clk_type = EV_CLK_MONO; break;
> + case CLOCK_BOOTTIME:
> + client->clk_type = EV_CLK_BOOT; break;
Please put "break" on separate lines.
> + default:
> + return -EINVAL;
> + }
> +
> + return 0;
> +}
> +
> /* flush queued events of type @type, caller must hold client->buffer_lock */
> static void __evdev_flush_queue(struct evdev_client *client, unsigned int type)
> {
> @@ -108,8 +132,9 @@ static void evdev_queue_syn_dropped(struct evdev_client *client)
> struct input_event ev;
> ktime_t time;
>
> - time = (client->clkid == CLOCK_MONOTONIC) ?
> - ktime_get() : ktime_get_real();
> + time = (client->clk_type == EV_CLK_REAL) ?
> + ktime_get_real() : (client->clk_type == EV_CLK_MONO) ?
> + ktime_get() : ktime_get_boottime();
>
> ev.time = ktime_to_timeval(time);
> ev.type = EV_SYN;
> @@ -159,7 +184,7 @@ static void __pass_event(struct evdev_client *client,
>
> static void evdev_pass_values(struct evdev_client *client,
> const struct input_value *vals, unsigned int count,
> - ktime_t mono, ktime_t real)
> + ktime_t *ev_time)
> {
> struct evdev *evdev = client->evdev;
> const struct input_value *v;
> @@ -169,8 +194,7 @@ static void evdev_pass_values(struct evdev_client *client,
> if (client->revoked)
> return;
>
> - event.time = ktime_to_timeval(client->clkid == CLOCK_MONOTONIC ?
> - mono : real);
> + event.time = ktime_to_timeval(ev_time[client->clk_type]);
>
> /* Interrupts are disabled, just acquire the lock. */
> spin_lock(&client->buffer_lock);
> @@ -198,21 +222,22 @@ static void evdev_events(struct input_handle *handle,
> {
> struct evdev *evdev = handle->private;
> struct evdev_client *client;
> - ktime_t time_mono, time_real;
> + ktime_t ev_time[EV_CLK_MAX];
>
> - time_mono = ktime_get();
> - time_real = ktime_mono_to_real(time_mono);
> + ev_time[EV_CLK_MONO] = ktime_get();
> + ev_time[EV_CLK_REAL] = ktime_mono_to_real(ev_time[EV_CLK_MONO]);
> + ev_time[EV_CLK_BOOT] = ktime_mono_to_any(ev_time[EV_CLK_BOOT],
> + TK_OFFS_BOOT);
Nope, that should have read
ev_time[EV_CLK_BOOT] = ktime_mono_to_any(ev_time[EV_CLK_BOOT],
TK_OFFS_BOOT);
Thanks.
--
Dmitry
^ permalink raw reply
* Re: Potential bugs found in psmouse
From: Dmitry Torokhov @ 2014-12-17 23:21 UTC (permalink / raw)
To: Jia-Ju Bai; +Cc: linux-input
In-Reply-To: <000401d01812$91496a50$b3dc3ef0$@163.com>
[ Reposting what I replied in bugzilla... ]
Hi Jia-Ju,
On Monday, December 15, 2014 10:55:21 AM Jia-Ju Bai wrote:
> Recently I test linux device drivers 3.17.2, and find some potential bugs.
>
> The target file is drivers/input/mouse/psmouse-base.c, which is used to
> build psmouse.ko. I hope you can help me check my findings:
> [1] psmouse_switch_protocol is called by psmouse_connect when initializing
> the driver. However, psmouse_switch_protocol may be failed and return -1,
> but its return value is not checked in psmouse_connect. In my experiment of
> running the driver, when psmouse_switch_protocol in psmouse_connect is
> failed, the system crash will occur.
psmouse_connect() calls psmouse_switch_protocol with NULL as protocol
argument. When psmouse_switch_protocol() gets NULL as protocol it will not
fail. Do you actually have a crash trace?
Thanks.
--
Dmitry
^ permalink raw reply
* Re: PROBLEM: [HP Stream Notebook - 11-d010nr] clickpad malfunctions after performing a hardware click
From: Amordea Whiteoak @ 2014-12-17 23:23 UTC (permalink / raw)
To: Peter Hutterer; +Cc: Benjamin Tissoires, linux-input, Andrew Duggan
In-Reply-To: <20141217010936.GA6906@jelly.redhat.com>
> there are at least two options in there that are non-default, so maybe other
> options are different too. an xorg.log would be more useful here, or make
> sure that you don't have any custom configs in /etc/X11/xorg.conf.d/
> or an xorg.conf
Okay, to be absolutely, positively sure that I did not have any
remaining custom configurations from all my tinkering with the
clickpad, I decided just to reinstall Lubuntu from scratch. Then I
re-patched my system with Andrew's patch. The result is the same, the
right-click is still not working.
> * use libevdev's touchpad-edge-detector tool to scope out the min/max ranges
> of your touchpad
Here is the output of the touchpad-edge-detector tool. I pretty
thoroughly wove my finger around the touchpad several times until the
coordinates stopped changing completely.
Touchpad SYN1EDE:00 06CB:7442 on /dev/input/event9
Move one finger around the touchpad to detect the actual edges
Kernel says: x [1..4008], y [1..2266]
Touchpad sends: x [10..4008], y [0..2262]
Thanks again for all your help.
On Tue, Dec 16, 2014 at 8:09 PM, Peter Hutterer
<peter.hutterer@who-t.net> wrote:
> On Mon, Dec 15, 2014 at 03:05:04PM -0500, Amordea Whiteoak wrote:
>> > Strictly speaking, there is no right click button on clickpads. We
>> > emulate one with the software buttons in Xorg.
>> > IIRC, there were some "workarounds" in your original bugs which
>> > consist in disabling the software buttons area. Can you make sure that
>> > there is no left over from this?
>>
>> I learn new things about clickpads every day. :)
>>
>> To my knowledge, those configurations changes should reset upon reboot
>> and I never committed any of those lines to any of my startup files.
>> So we should be good there, I think. Just in case, I am enclosing the
>> output of my synclient -l, which should be the default configuration.
>
> there are at least two options in there that are non-default, so maybe other
> options are different too. an xorg.log would be more useful here, or make
> sure that you don't have any custom configs in /etc/X11/xorg.conf.d/
> or an xorg.conf
>
>> > If this still doesn't work, we wil need to check that the X and Y
>> > ranges reported by your clickpad are accurate and that the software
>> > buttons are properly activated.
>>
>> I don't know the testing methodology to use to provide positioning
>> data for my trackpad, but let me know if you need that and how you
>> want me to get it and I will be happy to provide.
>
> Two options:
> * use evtest or evemu-record to record the data and look at the output, or
> simpler
> * use libevdev's touchpad-edge-detector tool to scope out the min/max ranges
> of your touchpad
>
> Cheers,
> Peter
>
^ permalink raw reply
* [PATCH] Input: Add CLOCK_BOOTTIME support
From: Aniroop Mathur @ 2014-12-17 23:25 UTC (permalink / raw)
To: dmitry.torokhov, dtor, linux-input; +Cc: aniroop.mathur, a.mathur
This patch adds support for CLOCK_BOOTTIME for input event timestamp.
CLOCK_BOOTTIME includes suspend time, so it would allow aplications
to get correct time difference between two events even when system
resumes from suspend state.
Signed-off-by: Aniroop Mathur <a.mathur@samsung.com>
---
drivers/input/evdev.c | 57 ++++++++++++++++++++++++++++++++++++---------------
1 file changed, 41 insertions(+), 16 deletions(-)
diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
index de05545..914b498 100644
--- a/drivers/input/evdev.c
+++ b/drivers/input/evdev.c
@@ -28,6 +28,13 @@
#include <linux/cdev.h>
#include "input-compat.h"
+enum evdev_clock_type {
+ EV_CLK_REAL = 0,
+ EV_CLK_MONO,
+ EV_CLK_BOOT,
+ EV_CLK_MAX
+};
+
struct evdev {
int open;
struct input_handle handle;
@@ -49,12 +56,32 @@ struct evdev_client {
struct fasync_struct *fasync;
struct evdev *evdev;
struct list_head node;
- int clkid;
+ int clk_type;
bool revoked;
unsigned int bufsize;
struct input_event buffer[];
};
+static int evdev_set_clk_type(int id, struct evdev_client *client)
+{
+ switch (id) {
+
+ case CLOCK_REALTIME:
+ client->clk_type = EV_CLK_REAL;
+ break;
+ case CLOCK_MONOTONIC:
+ client->clk_type = EV_CLK_MONO;
+ break;
+ case CLOCK_BOOTTIME:
+ client->clk_type = EV_CLK_BOOT;
+ break;
+ default:
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
/* flush queued events of type @type, caller must hold client->buffer_lock */
static void __evdev_flush_queue(struct evdev_client *client, unsigned int type)
{
@@ -108,8 +135,9 @@ static void evdev_queue_syn_dropped(struct evdev_client *client)
struct input_event ev;
ktime_t time;
- time = (client->clkid == CLOCK_MONOTONIC) ?
- ktime_get() : ktime_get_real();
+ time = (client->clk_type == EV_CLK_REAL) ?
+ ktime_get_real() : (client->clk_type == EV_CLK_MONO) ?
+ ktime_get() : ktime_get_boottime();
ev.time = ktime_to_timeval(time);
ev.type = EV_SYN;
@@ -159,7 +187,7 @@ static void __pass_event(struct evdev_client *client,
static void evdev_pass_values(struct evdev_client *client,
const struct input_value *vals, unsigned int count,
- ktime_t mono, ktime_t real)
+ ktime_t *ev_time)
{
struct evdev *evdev = client->evdev;
const struct input_value *v;
@@ -169,8 +197,7 @@ static void evdev_pass_values(struct evdev_client *client,
if (client->revoked)
return;
- event.time = ktime_to_timeval(client->clkid == CLOCK_MONOTONIC ?
- mono : real);
+ event.time = ktime_to_timeval(ev_time[client->clk_type]);
/* Interrupts are disabled, just acquire the lock. */
spin_lock(&client->buffer_lock);
@@ -198,21 +225,22 @@ static void evdev_events(struct input_handle *handle,
{
struct evdev *evdev = handle->private;
struct evdev_client *client;
- ktime_t time_mono, time_real;
+ ktime_t ev_time[EV_CLK_MAX];
- time_mono = ktime_get();
- time_real = ktime_mono_to_real(time_mono);
+ ev_time[EV_CLK_MONO] = ktime_get();
+ ev_time[EV_CLK_REAL] = ktime_mono_to_real(ev_time[EV_CLK_MONO]);
+ ev_time[EV_CLK_BOOT] = ktime_mono_to_any(ev_time[EV_CLK_MONO],
+ TK_OFFS_BOOT);
rcu_read_lock();
client = rcu_dereference(evdev->grab);
if (client)
- evdev_pass_values(client, vals, count, time_mono, time_real);
+ evdev_pass_values(client, vals, count, ev_time);
else
list_for_each_entry_rcu(client, &evdev->client_list, node)
- evdev_pass_values(client, vals, count,
- time_mono, time_real);
+ evdev_pass_values(client, vals, count, ev_time);
rcu_read_unlock();
}
@@ -874,10 +902,7 @@ static long evdev_do_ioctl(struct file *file, unsigned int cmd,
case EVIOCSCLOCKID:
if (copy_from_user(&i, p, sizeof(unsigned int)))
return -EFAULT;
- if (i != CLOCK_MONOTONIC && i != CLOCK_REALTIME)
- return -EINVAL;
- client->clkid = i;
- return 0;
+ return evdev_set_clk_type(i, client);
case EVIOCGKEYCODE:
return evdev_handle_get_keycode(dev, p);
--
1.9.1
^ permalink raw reply related
* Re: [PATCH] psmouse: Expose drift duration for IBM trackpoints
From: Dmitry Torokhov @ 2014-12-17 23:31 UTC (permalink / raw)
To: haarp; +Cc: linux-input
In-Reply-To: <5491B8DB.6070102@gmail.com>
On Wed, Dec 17, 2014 at 06:09:47PM +0100, haarp wrote:
> Hello,
>
> IBM Trackpoints have a feature to compensate for drift by
> recalibrating themselves periodically. If for 0.5 seconds
> there is no change in position, it uses this as the new zero.
>
> This happens often when the trackpoint is in fact being used.
> This is frustrating.
>
> Raising the time solves the problem.
> IBM's Trackpoint Engineering Specifications offer a
> configuration register for this (rstdft1). It just needs to
> be exposed by the driver, as others already are.
>
> Cheers!
> -Mike
>
>
> IBM Trackpoints have a feature to compensate for drift by recalibrating
> themselves periodically. By default, if for 0.5 seconds there is no change in
> position, it's used as the new zero. This duration is too low. Often, the
> calibration happens when the trackpoint is in fact being used.
>
> IBM's Trackpoint Engineering Specifications show a configuration register that
> allows changing this duration, rstdft1.
>
> Expose it via sysfs among the other settings.
>
> Signed-off-by: Mike Murdoch <main.haarp@gmail.com>
Applied, thank you.
--
Dmitry
^ permalink raw reply
* Re: [PATCH] Input: Add CLOCK_BOOTTIME Support
From: Aniroop Mathur @ 2014-12-17 23:42 UTC (permalink / raw)
To: Dmitry Torokhov; +Cc: linux-input@vger.kernel.org, a.mathur
In-Reply-To: <20141217231730.GA21713@dtor-ws>
Hello Mr. Torokhov,
On Thu, Dec 18, 2014 at 4:47 AM, Dmitry Torokhov
<dmitry.torokhov@gmail.com> wrote:
> On Thu, Dec 18, 2014 at 04:37:54AM +0530, Aniroop Mathur wrote:
>> This patch adds support for CLOCK_BOOTTIME for input event timestamp.
>> CLOCK_BOOTTIME includes suspend time, so it would allow aplications
>> to get correct time difference between two events even when system
>> resumes from suspend state.
>>
>> Signed-off-by: Aniroop Mathur <a.mathur@samsung.com>
>> ---
>> drivers/input/evdev.c | 52 +++++++++++++++++++++++++++++++++++++--------------
>> 1 file changed, 38 insertions(+), 14 deletions(-)
>>
>> diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
>> index de05545..bfca214 100644
>> --- a/drivers/input/evdev.c
>> +++ b/drivers/input/evdev.c
>> @@ -28,6 +28,13 @@
>> #include <linux/cdev.h>
>> #include "input-compat.h"
>>
>> +enum evdev_clock_type {
>> + EV_CLK_REAL = 0,
>> + EV_CLK_MONO,
>> + EV_CLK_BOOT,
>> + EV_CLK_MAX
>> +};
>> +
>> struct evdev {
>> int open;
>> struct input_handle handle;
>> @@ -49,12 +56,29 @@ struct evdev_client {
>> struct fasync_struct *fasync;
>> struct evdev *evdev;
>> struct list_head node;
>> - int clkid;
>> + int clk_type;
>> bool revoked;
>> unsigned int bufsize;
>> struct input_event buffer[];
>> };
>>
>> +static int evdev_set_clk_type(int id, struct evdev_client *client)
>> +{
>> + switch (id) {
>> +
>> + case CLOCK_REALTIME:
>> + client->clk_type = EV_CLK_REAL; break;
>> + case CLOCK_MONOTONIC:
>> + client->clk_type = EV_CLK_MONO; break;
>> + case CLOCK_BOOTTIME:
>> + client->clk_type = EV_CLK_BOOT; break;
>
> Please put "break" on separate lines.
>
>> + default:
>> + return -EINVAL;
>> + }
>> +
>> + return 0;
>> +}
>> +
>> /* flush queued events of type @type, caller must hold client->buffer_lock */
>> static void __evdev_flush_queue(struct evdev_client *client, unsigned int type)
>> {
>> @@ -108,8 +132,9 @@ static void evdev_queue_syn_dropped(struct evdev_client *client)
>> struct input_event ev;
>> ktime_t time;
>>
>> - time = (client->clkid == CLOCK_MONOTONIC) ?
>> - ktime_get() : ktime_get_real();
>> + time = (client->clk_type == EV_CLK_REAL) ?
>> + ktime_get_real() : (client->clk_type == EV_CLK_MONO) ?
>> + ktime_get() : ktime_get_boottime();
>>
>> ev.time = ktime_to_timeval(time);
>> ev.type = EV_SYN;
>> @@ -159,7 +184,7 @@ static void __pass_event(struct evdev_client *client,
>>
>> static void evdev_pass_values(struct evdev_client *client,
>> const struct input_value *vals, unsigned int count,
>> - ktime_t mono, ktime_t real)
>> + ktime_t *ev_time)
>> {
>> struct evdev *evdev = client->evdev;
>> const struct input_value *v;
>> @@ -169,8 +194,7 @@ static void evdev_pass_values(struct evdev_client *client,
>> if (client->revoked)
>> return;
>>
>> - event.time = ktime_to_timeval(client->clkid == CLOCK_MONOTONIC ?
>> - mono : real);
>> + event.time = ktime_to_timeval(ev_time[client->clk_type]);
>>
>> /* Interrupts are disabled, just acquire the lock. */
>> spin_lock(&client->buffer_lock);
>> @@ -198,21 +222,22 @@ static void evdev_events(struct input_handle *handle,
>> {
>> struct evdev *evdev = handle->private;
>> struct evdev_client *client;
>> - ktime_t time_mono, time_real;
>> + ktime_t ev_time[EV_CLK_MAX];
>>
>> - time_mono = ktime_get();
>> - time_real = ktime_mono_to_real(time_mono);
>> + ev_time[EV_CLK_MONO] = ktime_get();
>> + ev_time[EV_CLK_REAL] = ktime_mono_to_real(ev_time[EV_CLK_MONO]);
>> + ev_time[EV_CLK_BOOT] = ktime_mono_to_any(ev_time[EV_CLK_BOOT],
>> + TK_OFFS_BOOT);
>
> Nope, that should have read
>
> ev_time[EV_CLK_BOOT] = ktime_mono_to_any(ev_time[EV_CLK_BOOT],
> TK_OFFS_BOOT);
>
Ahhh... okay need to change BOOT to MONO
> Thanks.
>
>
> --
> Dmitry
Thanks for the corrections !!
I have sent the updated the patch with new changes done.
Regards,
Aniroop
^ permalink raw reply
* Re: [PATCH] Input: Add CLOCK_BOOTTIME Support
From: Dmitry Torokhov @ 2014-12-17 23:51 UTC (permalink / raw)
To: Aniroop Mathur; +Cc: linux-input@vger.kernel.org, a.mathur
In-Reply-To: <CADYu309vPvHYsK4CqUM1kw0eX3AYpqo47Hthh_xCkO+yyV4Pxw@mail.gmail.com>
On Thu, Dec 18, 2014 at 05:12:29AM +0530, Aniroop Mathur wrote:
> Hello Mr. Torokhov,
>
> On Thu, Dec 18, 2014 at 4:47 AM, Dmitry Torokhov
> <dmitry.torokhov@gmail.com> wrote:
> > On Thu, Dec 18, 2014 at 04:37:54AM +0530, Aniroop Mathur wrote:
> >> This patch adds support for CLOCK_BOOTTIME for input event timestamp.
> >> CLOCK_BOOTTIME includes suspend time, so it would allow aplications
> >> to get correct time difference between two events even when system
> >> resumes from suspend state.
> >>
> >> Signed-off-by: Aniroop Mathur <a.mathur@samsung.com>
> >> ---
> >> drivers/input/evdev.c | 52 +++++++++++++++++++++++++++++++++++++--------------
> >> 1 file changed, 38 insertions(+), 14 deletions(-)
> >>
> >> diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
> >> index de05545..bfca214 100644
> >> --- a/drivers/input/evdev.c
> >> +++ b/drivers/input/evdev.c
> >> @@ -28,6 +28,13 @@
> >> #include <linux/cdev.h>
> >> #include "input-compat.h"
> >>
> >> +enum evdev_clock_type {
> >> + EV_CLK_REAL = 0,
> >> + EV_CLK_MONO,
> >> + EV_CLK_BOOT,
> >> + EV_CLK_MAX
> >> +};
> >> +
> >> struct evdev {
> >> int open;
> >> struct input_handle handle;
> >> @@ -49,12 +56,29 @@ struct evdev_client {
> >> struct fasync_struct *fasync;
> >> struct evdev *evdev;
> >> struct list_head node;
> >> - int clkid;
> >> + int clk_type;
> >> bool revoked;
> >> unsigned int bufsize;
> >> struct input_event buffer[];
> >> };
> >>
> >> +static int evdev_set_clk_type(int id, struct evdev_client *client)
> >> +{
> >> + switch (id) {
> >> +
> >> + case CLOCK_REALTIME:
> >> + client->clk_type = EV_CLK_REAL; break;
> >> + case CLOCK_MONOTONIC:
> >> + client->clk_type = EV_CLK_MONO; break;
> >> + case CLOCK_BOOTTIME:
> >> + client->clk_type = EV_CLK_BOOT; break;
> >
> > Please put "break" on separate lines.
> >
> >> + default:
> >> + return -EINVAL;
> >> + }
> >> +
> >> + return 0;
> >> +}
> >> +
> >> /* flush queued events of type @type, caller must hold client->buffer_lock */
> >> static void __evdev_flush_queue(struct evdev_client *client, unsigned int type)
> >> {
> >> @@ -108,8 +132,9 @@ static void evdev_queue_syn_dropped(struct evdev_client *client)
> >> struct input_event ev;
> >> ktime_t time;
> >>
> >> - time = (client->clkid == CLOCK_MONOTONIC) ?
> >> - ktime_get() : ktime_get_real();
> >> + time = (client->clk_type == EV_CLK_REAL) ?
> >> + ktime_get_real() : (client->clk_type == EV_CLK_MONO) ?
> >> + ktime_get() : ktime_get_boottime();
> >>
> >> ev.time = ktime_to_timeval(time);
> >> ev.type = EV_SYN;
> >> @@ -159,7 +184,7 @@ static void __pass_event(struct evdev_client *client,
> >>
> >> static void evdev_pass_values(struct evdev_client *client,
> >> const struct input_value *vals, unsigned int count,
> >> - ktime_t mono, ktime_t real)
> >> + ktime_t *ev_time)
> >> {
> >> struct evdev *evdev = client->evdev;
> >> const struct input_value *v;
> >> @@ -169,8 +194,7 @@ static void evdev_pass_values(struct evdev_client *client,
> >> if (client->revoked)
> >> return;
> >>
> >> - event.time = ktime_to_timeval(client->clkid == CLOCK_MONOTONIC ?
> >> - mono : real);
> >> + event.time = ktime_to_timeval(ev_time[client->clk_type]);
> >>
> >> /* Interrupts are disabled, just acquire the lock. */
> >> spin_lock(&client->buffer_lock);
> >> @@ -198,21 +222,22 @@ static void evdev_events(struct input_handle *handle,
> >> {
> >> struct evdev *evdev = handle->private;
> >> struct evdev_client *client;
> >> - ktime_t time_mono, time_real;
> >> + ktime_t ev_time[EV_CLK_MAX];
> >>
> >> - time_mono = ktime_get();
> >> - time_real = ktime_mono_to_real(time_mono);
> >> + ev_time[EV_CLK_MONO] = ktime_get();
> >> + ev_time[EV_CLK_REAL] = ktime_mono_to_real(ev_time[EV_CLK_MONO]);
> >> + ev_time[EV_CLK_BOOT] = ktime_mono_to_any(ev_time[EV_CLK_BOOT],
> >> + TK_OFFS_BOOT);
> >
> > Nope, that should have read
> >
> > ev_time[EV_CLK_BOOT] = ktime_mono_to_any(ev_time[EV_CLK_BOOT],
> > TK_OFFS_BOOT);
> >
>
> Ahhh... okay need to change BOOT to MONO
Ugh, apparently I failed to actually type properly what I meant. Glad
you still understood me ;)
Thanks.
--
Dmitry
^ permalink raw reply
* Re: [PATCH] Input: Add CLOCK_BOOTTIME support
From: Dmitry Torokhov @ 2014-12-17 23:51 UTC (permalink / raw)
To: Aniroop Mathur; +Cc: linux-input, a.mathur
In-Reply-To: <1418858700-6710-1-git-send-email-aniroop.mathur@gmail.com>
On Thu, Dec 18, 2014 at 04:55:00AM +0530, Aniroop Mathur wrote:
> This patch adds support for CLOCK_BOOTTIME for input event timestamp.
> CLOCK_BOOTTIME includes suspend time, so it would allow aplications
> to get correct time difference between two events even when system
> resumes from suspend state.
>
> Signed-off-by: Aniroop Mathur <a.mathur@samsung.com>
Applied with minor edits, thank you.
> ---
> drivers/input/evdev.c | 57 ++++++++++++++++++++++++++++++++++++---------------
> 1 file changed, 41 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
> index de05545..914b498 100644
> --- a/drivers/input/evdev.c
> +++ b/drivers/input/evdev.c
> @@ -28,6 +28,13 @@
> #include <linux/cdev.h>
> #include "input-compat.h"
>
> +enum evdev_clock_type {
> + EV_CLK_REAL = 0,
> + EV_CLK_MONO,
> + EV_CLK_BOOT,
> + EV_CLK_MAX
> +};
> +
> struct evdev {
> int open;
> struct input_handle handle;
> @@ -49,12 +56,32 @@ struct evdev_client {
> struct fasync_struct *fasync;
> struct evdev *evdev;
> struct list_head node;
> - int clkid;
> + int clk_type;
> bool revoked;
> unsigned int bufsize;
> struct input_event buffer[];
> };
>
> +static int evdev_set_clk_type(int id, struct evdev_client *client)
> +{
> + switch (id) {
> +
> + case CLOCK_REALTIME:
> + client->clk_type = EV_CLK_REAL;
> + break;
> + case CLOCK_MONOTONIC:
> + client->clk_type = EV_CLK_MONO;
> + break;
> + case CLOCK_BOOTTIME:
> + client->clk_type = EV_CLK_BOOT;
> + break;
> + default:
> + return -EINVAL;
> + }
> +
> + return 0;
> +}
> +
> /* flush queued events of type @type, caller must hold client->buffer_lock */
> static void __evdev_flush_queue(struct evdev_client *client, unsigned int type)
> {
> @@ -108,8 +135,9 @@ static void evdev_queue_syn_dropped(struct evdev_client *client)
> struct input_event ev;
> ktime_t time;
>
> - time = (client->clkid == CLOCK_MONOTONIC) ?
> - ktime_get() : ktime_get_real();
> + time = (client->clk_type == EV_CLK_REAL) ?
> + ktime_get_real() : (client->clk_type == EV_CLK_MONO) ?
> + ktime_get() : ktime_get_boottime();
>
> ev.time = ktime_to_timeval(time);
> ev.type = EV_SYN;
> @@ -159,7 +187,7 @@ static void __pass_event(struct evdev_client *client,
>
> static void evdev_pass_values(struct evdev_client *client,
> const struct input_value *vals, unsigned int count,
> - ktime_t mono, ktime_t real)
> + ktime_t *ev_time)
> {
> struct evdev *evdev = client->evdev;
> const struct input_value *v;
> @@ -169,8 +197,7 @@ static void evdev_pass_values(struct evdev_client *client,
> if (client->revoked)
> return;
>
> - event.time = ktime_to_timeval(client->clkid == CLOCK_MONOTONIC ?
> - mono : real);
> + event.time = ktime_to_timeval(ev_time[client->clk_type]);
>
> /* Interrupts are disabled, just acquire the lock. */
> spin_lock(&client->buffer_lock);
> @@ -198,21 +225,22 @@ static void evdev_events(struct input_handle *handle,
> {
> struct evdev *evdev = handle->private;
> struct evdev_client *client;
> - ktime_t time_mono, time_real;
> + ktime_t ev_time[EV_CLK_MAX];
>
> - time_mono = ktime_get();
> - time_real = ktime_mono_to_real(time_mono);
> + ev_time[EV_CLK_MONO] = ktime_get();
> + ev_time[EV_CLK_REAL] = ktime_mono_to_real(ev_time[EV_CLK_MONO]);
> + ev_time[EV_CLK_BOOT] = ktime_mono_to_any(ev_time[EV_CLK_MONO],
> + TK_OFFS_BOOT);
>
> rcu_read_lock();
>
> client = rcu_dereference(evdev->grab);
>
> if (client)
> - evdev_pass_values(client, vals, count, time_mono, time_real);
> + evdev_pass_values(client, vals, count, ev_time);
> else
> list_for_each_entry_rcu(client, &evdev->client_list, node)
> - evdev_pass_values(client, vals, count,
> - time_mono, time_real);
> + evdev_pass_values(client, vals, count, ev_time);
>
> rcu_read_unlock();
> }
> @@ -874,10 +902,7 @@ static long evdev_do_ioctl(struct file *file, unsigned int cmd,
> case EVIOCSCLOCKID:
> if (copy_from_user(&i, p, sizeof(unsigned int)))
> return -EFAULT;
> - if (i != CLOCK_MONOTONIC && i != CLOCK_REALTIME)
> - return -EINVAL;
> - client->clkid = i;
> - return 0;
> + return evdev_set_clk_type(i, client);
>
> case EVIOCGKEYCODE:
> return evdev_handle_get_keycode(dev, p);
> --
> 1.9.1
>
--
Dmitry
^ permalink raw reply
* Re: [PATCH] Input: Add CLOCK_BOOTTIME support
From: Aniroop Mathur @ 2014-12-17 23:53 UTC (permalink / raw)
To: Dmitry Torokhov; +Cc: linux-input@vger.kernel.org, a.mathur
In-Reply-To: <20141217235139.GD21713@dtor-ws>
On Thu, Dec 18, 2014 at 5:21 AM, Dmitry Torokhov
<dmitry.torokhov@gmail.com> wrote:
> On Thu, Dec 18, 2014 at 04:55:00AM +0530, Aniroop Mathur wrote:
>> This patch adds support for CLOCK_BOOTTIME for input event timestamp.
>> CLOCK_BOOTTIME includes suspend time, so it would allow aplications
>> to get correct time difference between two events even when system
>> resumes from suspend state.
>>
>> Signed-off-by: Aniroop Mathur <a.mathur@samsung.com>
>
> Applied with minor edits, thank you.
>
Thanks a lot Mr. Torokhov !! :)
Regards,
Aniroop
>> ---
>> drivers/input/evdev.c | 57 ++++++++++++++++++++++++++++++++++++---------------
>> 1 file changed, 41 insertions(+), 16 deletions(-)
>>
>> diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
>> index de05545..914b498 100644
>> --- a/drivers/input/evdev.c
>> +++ b/drivers/input/evdev.c
>> @@ -28,6 +28,13 @@
>> #include <linux/cdev.h>
>> #include "input-compat.h"
>>
>> +enum evdev_clock_type {
>> + EV_CLK_REAL = 0,
>> + EV_CLK_MONO,
>> + EV_CLK_BOOT,
>> + EV_CLK_MAX
>> +};
>> +
>> struct evdev {
>> int open;
>> struct input_handle handle;
>> @@ -49,12 +56,32 @@ struct evdev_client {
>> struct fasync_struct *fasync;
>> struct evdev *evdev;
>> struct list_head node;
>> - int clkid;
>> + int clk_type;
>> bool revoked;
>> unsigned int bufsize;
>> struct input_event buffer[];
>> };
>>
>> +static int evdev_set_clk_type(int id, struct evdev_client *client)
>> +{
>> + switch (id) {
>> +
>> + case CLOCK_REALTIME:
>> + client->clk_type = EV_CLK_REAL;
>> + break;
>> + case CLOCK_MONOTONIC:
>> + client->clk_type = EV_CLK_MONO;
>> + break;
>> + case CLOCK_BOOTTIME:
>> + client->clk_type = EV_CLK_BOOT;
>> + break;
>> + default:
>> + return -EINVAL;
>> + }
>> +
>> + return 0;
>> +}
>> +
>> /* flush queued events of type @type, caller must hold client->buffer_lock */
>> static void __evdev_flush_queue(struct evdev_client *client, unsigned int type)
>> {
>> @@ -108,8 +135,9 @@ static void evdev_queue_syn_dropped(struct evdev_client *client)
>> struct input_event ev;
>> ktime_t time;
>>
>> - time = (client->clkid == CLOCK_MONOTONIC) ?
>> - ktime_get() : ktime_get_real();
>> + time = (client->clk_type == EV_CLK_REAL) ?
>> + ktime_get_real() : (client->clk_type == EV_CLK_MONO) ?
>> + ktime_get() : ktime_get_boottime();
>>
>> ev.time = ktime_to_timeval(time);
>> ev.type = EV_SYN;
>> @@ -159,7 +187,7 @@ static void __pass_event(struct evdev_client *client,
>>
>> static void evdev_pass_values(struct evdev_client *client,
>> const struct input_value *vals, unsigned int count,
>> - ktime_t mono, ktime_t real)
>> + ktime_t *ev_time)
>> {
>> struct evdev *evdev = client->evdev;
>> const struct input_value *v;
>> @@ -169,8 +197,7 @@ static void evdev_pass_values(struct evdev_client *client,
>> if (client->revoked)
>> return;
>>
>> - event.time = ktime_to_timeval(client->clkid == CLOCK_MONOTONIC ?
>> - mono : real);
>> + event.time = ktime_to_timeval(ev_time[client->clk_type]);
>>
>> /* Interrupts are disabled, just acquire the lock. */
>> spin_lock(&client->buffer_lock);
>> @@ -198,21 +225,22 @@ static void evdev_events(struct input_handle *handle,
>> {
>> struct evdev *evdev = handle->private;
>> struct evdev_client *client;
>> - ktime_t time_mono, time_real;
>> + ktime_t ev_time[EV_CLK_MAX];
>>
>> - time_mono = ktime_get();
>> - time_real = ktime_mono_to_real(time_mono);
>> + ev_time[EV_CLK_MONO] = ktime_get();
>> + ev_time[EV_CLK_REAL] = ktime_mono_to_real(ev_time[EV_CLK_MONO]);
>> + ev_time[EV_CLK_BOOT] = ktime_mono_to_any(ev_time[EV_CLK_MONO],
>> + TK_OFFS_BOOT);
>>
>> rcu_read_lock();
>>
>> client = rcu_dereference(evdev->grab);
>>
>> if (client)
>> - evdev_pass_values(client, vals, count, time_mono, time_real);
>> + evdev_pass_values(client, vals, count, ev_time);
>> else
>> list_for_each_entry_rcu(client, &evdev->client_list, node)
>> - evdev_pass_values(client, vals, count,
>> - time_mono, time_real);
>> + evdev_pass_values(client, vals, count, ev_time);
>>
>> rcu_read_unlock();
>> }
>> @@ -874,10 +902,7 @@ static long evdev_do_ioctl(struct file *file, unsigned int cmd,
>> case EVIOCSCLOCKID:
>> if (copy_from_user(&i, p, sizeof(unsigned int)))
>> return -EFAULT;
>> - if (i != CLOCK_MONOTONIC && i != CLOCK_REALTIME)
>> - return -EINVAL;
>> - client->clkid = i;
>> - return 0;
>> + return evdev_set_clk_type(i, client);
>>
>> case EVIOCGKEYCODE:
>> return evdev_handle_get_keycode(dev, p);
>> --
>> 1.9.1
>>
>
> --
> Dmitry
^ permalink raw reply
* Re: Re: Potential bugs found in psmouse
From: Jia-Ju Bai @ 2014-12-18 0:02 UTC (permalink / raw)
To: dmitry.torokhov; +Cc: linux-input
Dear Sir,
Actually, I find that psmouse_attr_set_protocol checks
psmouse_switch_protocol's return vaule, but psmouse_connect does not. So I
let psmouse_switch_protocol() in psmouse_connect return -1 in purpose to
test the robustness of psmouse driver.
However, psmouse_switch_protocol() in psmouse_connect gets NULL as protocol
and it will not fail. I think you are right, and this error is unreal.
Thank you very much!
--
Jia-Ju Bai
^ permalink raw reply
* Re: [PATCH v7 1/3] Input: add regulator haptic driver
From: Jaewon Kim @ 2014-12-18 1:17 UTC (permalink / raw)
To: Dmitry Torokhov
Cc: Kukjin Kim, linux-kernel, linux-samsung-soc, linux-input,
Chanwoo Choi, Hyunhee Kim
In-Reply-To: <20141217220602.GC32399@dtor-ws>
Hi Dmity,
2014년 12월 18일 07:06에 Dmitry Torokhov 이(가) 쓴 글:
> HI Jaewon,
>
> On Wed, Dec 17, 2014 at 12:35:06PM +0900, Jaewon Kim wrote:
>> This patch adds support for haptic driver controlled by
>> voltage of regulator. And this driver support for
>> Force Feedback interface from input framework
>>
>> Signed-off-by: Jaewon Kim <jaewon02.kim@samsung.com>
>> Signed-off-by: Hyunhee Kim <hyunhee.kim@samsung.com>
>> Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
>> Tested-by: Chanwoo Choi <cw00.choi@samsung.com>
>> Reviewed-by: Chanwoo Choi <cw00.choi@samsung.com>
>> Reviewed-by: Pankaj Dubey <pankaj.dubey@samsung.com>
> Does the driver still work if you apply the patch below on top of yours?
>
> Thanks.
>
Yes, there is no problem to apply this one first.
Thanks to review my patches.
Thanks
Jaewon Kim
^ permalink raw reply
* Re: [PATCH v7 1/3] Input: add regulator haptic driver
From: Dmitry Torokhov @ 2014-12-18 1:20 UTC (permalink / raw)
To: Jaewon Kim
Cc: Kukjin Kim, linux-kernel, linux-samsung-soc, linux-input,
Chanwoo Choi, Hyunhee Kim
In-Reply-To: <54922B36.8050306@samsung.com>
On Thursday, December 18, 2014 10:17:42 AM Jaewon Kim wrote:
> Hi Dmity,
>
> 2014년 12월 18일 07:06에 Dmitry Torokhov 이(가) 쓴 글:
> > HI Jaewon,
> >
> > On Wed, Dec 17, 2014 at 12:35:06PM +0900, Jaewon Kim wrote:
> >> This patch adds support for haptic driver controlled by
> >> voltage of regulator. And this driver support for
> >> Force Feedback interface from input framework
> >>
> >> Signed-off-by: Jaewon Kim <jaewon02.kim@samsung.com>
> >> Signed-off-by: Hyunhee Kim <hyunhee.kim@samsung.com>
> >> Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
> >> Tested-by: Chanwoo Choi <cw00.choi@samsung.com>
> >> Reviewed-by: Chanwoo Choi <cw00.choi@samsung.com>
> >> Reviewed-by: Pankaj Dubey <pankaj.dubey@samsung.com>
> >
> > Does the driver still work if you apply the patch below on top of yours?
> >
> > Thanks.
>
> Yes, there is no problem to apply this one first.
Thank you. Then I'll fold it into yours and queue the driver for the next
release.
Thanks.
--
Dmitry
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox