Linux Input/HID development
 help / color / mirror / Atom feed
* [PATCH V2] input synaptics-rmi4: Reorder declarations in rmi_bus.c
From: Christopher Heiny @ 2013-12-06  0:29 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: Linux Input, Christopher Heiny, Andrew Duggan, Vincent Huang,
	Vivian Ly, Daniel Rosenberg, Jean Delvare, Joerie de Gram,
	Linus Walleij, Benjamin Tissoires

This patch implements changes to the synaptics-rmi4 branch of
Dmitry's input tree.  The base for the patch is commit
8ca01dc61a42b6f7bcba052a8c084000f7057a34.

This patch primarily reorders the various declarations in rmi_bus.c in order to
group related elements together, along with some typo fixes.  The code is still
horribly broken, but this change should make the following fixes easier to
 review.

Signed-off-by: Christopher Heiny <cheiny@synaptics.com>
Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: Jean Delvare <khali@linux-fr.org>
Cc: Linus Walleij <linus.walleij@stericsson.com>
Cc: Joerie de Gram <j.de.gram@gmail.com>
Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com>

---
 drivers/input/rmi4/rmi_bus.c | 189 +++++++++++++++++++++----------------------
 1 file changed, 90 insertions(+), 99 deletions(-)

diff --git a/drivers/input/rmi4/rmi_bus.c b/drivers/input/rmi4/rmi_bus.c
index 88f60ca..d9c450b 100644
--- a/drivers/input/rmi4/rmi_bus.c
+++ b/drivers/input/rmi4/rmi_bus.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2012 Synaptics Incorporated
+ * Copyright (c) 2011-2013 Synaptics Incorporated
  * Copyright (c) 2011 Unixphere
  *
  * This program is free software; you can redistribute it and/or modify it
@@ -19,77 +19,20 @@
 #include "rmi_bus.h"
 #include "rmi_driver.h"
 
-static int rmi_function_match(struct device *dev, struct device_driver *drv)
-{
-	struct rmi_function_handler *handler = to_rmi_function_handler(drv);
-	struct rmi_function *fn = to_rmi_function(dev);
-
-	return fn->fd.function_number == handler->func;
-}
-
-static int rmi_bus_match(struct device *dev, struct device_driver *drv)
-{
-	bool physical = rmi_is_physical_device(dev);
-
-	/* First see if types are not compatible */
-	if (physical != rmi_is_physical_driver(drv))
-		return 0;
-
-	return physical || rmi_function_match(dev, drv);
-}
-
-struct bus_type rmi_bus_type = {
-	.match		= rmi_bus_match,
-	.name		= "rmi",
-};
-
-#ifdef CONFIG_RMI4_DEBUG
-
-static struct dentry *rmi_debugfs_root;
-
-static void rmi_bus_setup_debugfs(void)
-{
-	rmi_debugfs_root = debugfs_create_dir(rmi_bus_type.name, NULL);
-	if (!rmi_debugfs_root)
-		pr_err("%s: Failed to create debugfs root\n",
-		       __func__);
-}
-
-static void rmi_bus_teardown_debugfs(void)
-{
-	if (rmi_debugfs_root)
-		debugfs_remove_recursive(rmi_debugfs_root);
-}
-
-#else
-
-static void rmi_bus_setup_debugfs(void)
-{
-}
-
-static void rmi_bus_teardown_debugfs(void)
-{
-}
-
-#endif
-
-
 /*
  * RMI Physical devices
  *
  * Physical RMI device consists of several functions serving particular
- * purpose. For example F11 is a 2D touch sensor while F10 is a generic
+ * purpose. For example F11 is a 2D touch sensor while F01 is a generic
  * function present in every RMI device.
  */
 
 static void rmi_release_device(struct device *dev)
 {
 	struct rmi_device *rmi_dev = to_rmi_device(dev);
-
 	kfree(rmi_dev);
 }
 
-/* Device type for physical RMI devices */
 struct device_type rmi_device_type = {
 	.name		= "rmi_sensor",
 	.release	= rmi_release_device,
@@ -118,7 +61,7 @@ static void rmi_physical_teardown_debugfs(struct rmi_device *rmi_dev)
 
 #else
 
-static void rmi_physocal_setup_debugfs(struct rmi_device *rmi_dev)
+static void rmi_physical_setup_debugfs(struct rmi_device *rmi_dev)
 {
 }
 
@@ -128,7 +71,6 @@ static void rmi_physical_teardown_debugfs(struct rmi_device *rmi_dev)
 
 #endif
 
-
 /**
  * rmi_register_physical_device - register a physical device connection on the RMI
  * bus.  Physical drivers provide communication from the devices on the bus to
@@ -174,7 +116,7 @@ int rmi_register_physical_device(struct rmi_phys_device *phys)
 
 	return 0;
 }
-EXPORT_SYMBOL(rmi_register_physical_device);
+EXPORT_SYMBOL_GPL(rmi_register_physical_device);
 
 /**
  * rmi_unregister_physical_device - unregister a physical device connection
@@ -191,18 +133,14 @@ void rmi_unregister_physical_device(struct rmi_phys_device *phys)
 EXPORT_SYMBOL(rmi_unregister_physical_device);
 
 
-/*
- * RMI Function devices and their handlers
- */
+/* Function specific stuff */
 
 static void rmi_release_function(struct device *dev)
 {
 	struct rmi_function *fn = to_rmi_function(dev);
-
 	kfree(fn);
 }
 
-/* Device type for RMI Function devices */
 struct device_type rmi_function_type = {
 	.name		= "rmi_function",
 	.release	= rmi_release_function,
@@ -244,35 +182,12 @@ static void rmi_function_teardown_debugfs(struct rmi_function *fn)
 
 #endif
 
-int rmi_register_function(struct rmi_function *fn)
+static int rmi_function_match(struct device *dev, struct device_driver *drv)
 {
-	struct rmi_device *rmi_dev = fn->rmi_dev;
-	int error;
-
-	dev_set_name(&fn->dev, "%s.fn%02x",
-		     dev_name(&rmi_dev->dev), fn->fd.function_number);
-
-	fn->dev.parent = &rmi_dev->dev;
-	fn->dev.type = &rmi_function_type;
-	fn->dev.bus = &rmi_bus_type;
-
-	error = device_register(&fn->dev);
-	if (error) {
-		dev_err(&rmi_dev->dev,
-			"Failed device_register function device %s\n",
-			dev_name(&fn->dev));
-	}
-
-	dev_dbg(&rmi_dev->dev, "Registered F%02X.\n", fn->fd.function_number);
-
-	rmi_function_setup_debugfs(fn);
-	return 0;
-}
+	struct rmi_function_handler *handler = to_rmi_function_handler(drv);
+	struct rmi_function *fn = to_rmi_function(dev);
 
-void rmi_unregister_function(struct rmi_function *fn)
-{
-	rmi_function_teardown_debugfs(fn);
-	device_unregister(&fn->dev);
+	return fn->fd.function_number == handler->func;
 }
 
 static int rmi_function_probe(struct device *dev)
@@ -302,6 +217,38 @@ static int rmi_function_remove(struct device *dev)
 	return 0;
 }
 
+int rmi_register_function(struct rmi_function *fn)
+{
+	struct rmi_device *rmi_dev = fn->rmi_dev;
+	int error;
+
+	dev_set_name(&fn->dev, "%s.fn%02x",
+		     dev_name(&rmi_dev->dev), fn->fd.function_number);
+
+	fn->dev.parent = &rmi_dev->dev;
+	fn->dev.type = &rmi_function_type;
+	fn->dev.bus = &rmi_bus_type;
+
+	error = device_register(&fn->dev);
+	if (error) {
+		dev_err(&rmi_dev->dev,
+			"Failed device_register function device %s\n",
+			dev_name(&fn->dev));
+		return error;
+	}
+
+	dev_dbg(&rmi_dev->dev, "Registered F%02X.\n", fn->fd.function_number);
+
+	rmi_function_setup_debugfs(fn);
+	return 0;
+}
+
+void rmi_unregister_function(struct rmi_function *fn)
+{
+	rmi_function_teardown_debugfs(fn);
+	device_unregister(&fn->dev);
+}
+
 /**
  * rmi_register_function_handler - register a handler for an RMI function
  * @handler: RMI handler that should be registered.
@@ -334,7 +281,7 @@ int __rmi_register_function_handler(struct rmi_function_handler *handler,
 
 	return 0;
 }
-EXPORT_SYMBOL(__rmi_register_function_handler);
+EXPORT_SYMBOL_GPL(__rmi_register_function_handler);
 
 /**
  * rmi_unregister_function_handler - unregister given RMI function handler
@@ -347,11 +294,55 @@ void rmi_unregister_function_handler(struct rmi_function_handler *handler)
 {
 	driver_unregister(&handler->driver);
 }
-EXPORT_SYMBOL(rmi_unregister_function_handler);
+EXPORT_SYMBOL_GPL(rmi_unregister_function_handler);
 
-/*
- * Bus registration and tear-down
- */
+/* Bus specific stuff */
+
+static int rmi_bus_match(struct device *dev, struct device_driver *drv)
+{
+	bool physical = rmi_is_physical_device(dev);
+
+	/* First see if types are not compatible */
+	if (physical != rmi_is_physical_driver(drv))
+		return 0;
+
+	return physical || rmi_function_match(dev, drv);
+}
+
+struct bus_type rmi_bus_type = {
+	.match		= rmi_bus_match,
+	.name		= "rmi",
+};
+
+#ifdef CONFIG_RMI4_DEBUG
+
+static struct dentry *rmi_debugfs_root;
+
+static void rmi_bus_setup_debugfs(void)
+{
+	rmi_debugfs_root = debugfs_create_dir(rmi_bus_type.name, NULL);
+	if (!rmi_debugfs_root)
+		pr_err("%s: Failed to create debugfs root\n",
+		       __func__);
+}
+
+static void rmi_bus_teardown_debugfs(void)
+{
+	if (rmi_debugfs_root)
+		debugfs_remove_recursive(rmi_debugfs_root);
+}
+
+#else
+
+static void rmi_bus_setup_debugfs(void)
+{
+}
+
+static void rmi_bus_teardown_debugfs(void)
+{
+}
+
+#endif
 
 static int __init rmi_bus_init(void)
 {

^ permalink raw reply related

* [PATCH v1] Fix kernel warning and failure
From: Srinivas Pandruvada @ 2013-12-06  0:34 UTC (permalink / raw)
  To: jkosina; +Cc: linux-input, Srinivas Pandruvada

v1:
Use platform driver capability to assign unique id.
In this way it is just one line change.

v0:
Use idr to allocate unique cell id

Srinivas Pandruvada (1):
  HID: hid-sensor-hub: Fix kernel warning and failure

 drivers/hid/hid-sensor-hub.c | 2 ++
 1 file changed, 2 insertions(+)

-- 
1.8.1.2


^ permalink raw reply

* [PATCH v1] HID: hid-sensor-hub: Fix kernel warning and failure
From: Srinivas Pandruvada @ 2013-12-06  0:34 UTC (permalink / raw)
  To: jkosina; +Cc: linux-input, Srinivas Pandruvada
In-Reply-To: <1386290065-31813-1-git-send-email-srinivas.pandruvada@linux.intel.com>

Fix kernel warning and failure to register sensor hub devices with MFD.
Now many devices has in-built sensor hubs. So by default this HID hub,
is properly parsed and register individual sensors as platform device
using MFD framework. But if a second sensor hub is attached via USB,
which has same sensors, it will result in kernel warning and failure
to register MFD cell as the platform device sysfs file name will be
same as created by in-built sensor hubs. This patch sets MFD cell id
to PLATFORM_DEVID_AUTO. In this way there will never
be duplicate sysfs file names.

Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
---
 drivers/hid/hid-sensor-hub.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/hid/hid-sensor-hub.c b/drivers/hid/hid-sensor-hub.c
index a184e19..8af2d90 100644
--- a/drivers/hid/hid-sensor-hub.c
+++ b/drivers/hid/hid-sensor-hub.c
@@ -573,6 +573,8 @@ static int sensor_hub_probe(struct hid_device *hdev,
 					goto err_free_names;
 			}
 			sd->hid_sensor_hub_client_devs[
+				sd->hid_sensor_client_cnt].id = PLATFORM_DEVID_AUTO;
+			sd->hid_sensor_hub_client_devs[
 				sd->hid_sensor_client_cnt].name = name;
 			sd->hid_sensor_hub_client_devs[
 				sd->hid_sensor_client_cnt].platform_data =
-- 
1.8.1.2


^ permalink raw reply related

* [PATCH] input synaptics-rmi4: elliminate multiple sensor support from rmi_f11.c
From: Andrew Duggan @ 2013-12-06  1:59 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: Linux Input, Christopher Heiny, Andrew Duggan, Vincent Huang,
	Vivian Ly, Daniel Rosenberg, Jean Delvare, Joerie de Gram,
	Linus Walleij, Benjamin Tissoires

This patch implements changes to the synaptics-rmi4 branch of
Dmitry's input tree.  The base for the patch is commit
8ca01dc61a42b6f7bcba052a8c084000f7057a34.

This patch elliminates support for multiple sensors in rmi_f11. This feature
has been removed from the RMI4 spec and no devices have every used multiple
F11 sensors on a single device.

Signed-off-by: Andrew Duggan <aduggan@synaptics.com>
---
 drivers/input/rmi4/rmi_f11.c | 374 +++++++++++++++++++------------------------
 include/linux/rmi.h          |  10 +-
 2 files changed, 170 insertions(+), 214 deletions(-)

diff --git a/drivers/input/rmi4/rmi_f11.c b/drivers/input/rmi4/rmi_f11.c
index 8984054..d3a9ba8 100644
--- a/drivers/input/rmi4/rmi_f11.c
+++ b/drivers/input/rmi4/rmi_f11.c
@@ -19,7 +19,6 @@
 #include <linux/slab.h>
 #include "rmi_driver.h"
 
-#define F11_MAX_NUM_OF_SENSORS		8
 #define F11_MAX_NUM_OF_FINGERS		10
 #define F11_MAX_NUM_OF_TOUCH_SHAPES	16
 
@@ -42,40 +41,23 @@
 
 /** A note about RMI4 F11 register structure.
  *
- *  There may be one or more individual 2D touch surfaces associated with an
- * instance for F11.  For example, a handheld device might have a touchscreen
- * display on the front, and a touchpad on the back.  F11 represents these touch
- * surfaces as individual sensors, up to 7 on a given RMI4 device.
- *
  * The properties for
  * a given sensor are described by its query registers.  The number of query
  * registers and the layout of their contents are described by the F11 device
- * queries as well as the per-sensor query information.  The query registers
- * for sensor[n+1] immediately follow those for sensor[n], so the start address
- * of the sensor[n+1] queries can only be computed if you know the size of the
- * sensor[n] queries.  Because each of the sensors may have different
- * properties, the size of the query registers for each sensor must be
- * calculated on a sensor by sensor basis.
+ * queries as well as the sensor query information.
  *
  * Similarly, each sensor has control registers that govern its behavior.  The
  * size and layout of the control registers for a given sensor can be determined
- * by parsing that sensors query registers.  The control registers for
- * sensor[n+1] immediately follow those for sensor[n], so you can only know
- * the start address for the sensor[n+1] controls if you know the size (and
- * location) of the sensor[n] controls.
+ * by parsing that sensors query registers.
  *
  * And in a likewise fashion, each sensor has data registers where it reports
  * its touch data and other interesting stuff.  The size and layout of a
  * sensors data registers must be determined by parsing its query registers.
- * The data registers for sensor[n+1] immediately follow those for sensor[n],
- * so you can only know the start address for the sensor[n+1] controls if you
- * know the size (and location) of the sensor[n] controls.
  *
  * The short story is that we need to read and parse a lot of query
- * registers in order to determine the attributes of a sensor[0].  Then
+ * registers in order to determine the attributes of a sensor. Then
  * we need to use that data to compute the size of the control and data
- * registers for sensor[0].  Once we have that figured out, we can then do
- * the same thing for each subsequent sensor.
+ * registers for sensor.
  *
  * The end result is that we have a number of structs that aren't used to
  * directly generate the input events, but their size, location and contents
@@ -811,7 +793,7 @@ struct f11_data {
 	struct f11_2d_ctrl dev_controls;
 	struct mutex dev_controls_mutex;
 	u16 rezero_wait_ms;
-	struct f11_2d_sensor sensors[F11_MAX_NUM_OF_SENSORS];
+	struct f11_2d_sensor sensor;
 };
 
 enum finger_state_values {
@@ -1519,10 +1501,10 @@ static int rmi_f11_get_query_parameters(struct rmi_device *rmi_dev,
 /* This operation is done in a number of places, so we have a handy routine
  * for it.
  */
-static void f11_set_abs_params(struct rmi_function *fn, int index)
+static void f11_set_abs_params(struct rmi_function *fn)
 {
 	struct f11_data *f11 = fn->data;
-	struct f11_2d_sensor *sensor = &f11->sensors[index];
+	struct f11_2d_sensor *sensor = &f11->sensor;
 	struct input_dev *input = sensor->input;
 	u16 device_x_max =
 		f11->dev_controls.ctrl0_9->sensor_max_x_pos;
@@ -1604,8 +1586,8 @@ static int rmi_f11_initialize(struct rmi_function *fn)
 	u16 control_base_addr;
 	u16 max_x_pos, max_y_pos, temp;
 	int rc;
-	int i;
 	struct rmi_device_platform_data *pdata = to_rmi_platform_data(rmi_dev);
+	struct f11_2d_sensor *sensor;
 
 	dev_dbg(&fn->dev, "Initializing F11 values for %s.\n",
 		 pdata->sensor_name);
@@ -1628,92 +1610,88 @@ static int rmi_f11_initialize(struct rmi_function *fn)
 		return rc;
 
 	query_offset = (query_base_addr + 1);
-	/* Increase with one since number of sensors is zero based */
-	for (i = 0; i < (f11->dev_query.nbr_of_sensors + 1); i++) {
-		struct f11_2d_sensor *sensor = &f11->sensors[i];
-		sensor->sensor_index = i;
-		sensor->fn = fn;
-
-		rc = rmi_f11_get_query_parameters(rmi_dev, &f11->dev_query,
-				&sensor->sens_query, query_offset);
-		if (rc < 0)
-			return rc;
-		query_offset += rc;
+	sensor = &f11->sensor;
+	sensor->fn = fn;
 
-		rc = f11_allocate_control_regs(fn,
-				&f11->dev_query, &sensor->sens_query,
-				&f11->dev_controls, control_base_addr);
-		if (rc < 0) {
-			dev_err(&fn->dev,
-				"Failed to allocate F11 control params.\n");
-			return rc;
-		}
+	rc = rmi_f11_get_query_parameters(rmi_dev, &f11->dev_query,
+			&sensor->sens_query, query_offset);
+	if (rc < 0)
+		return rc;
+	query_offset += rc;
 
-		rc = f11_read_control_regs(fn, &f11->dev_controls,
-				control_base_addr);
-		if (rc < 0) {
-			dev_err(&fn->dev,
-				"Failed to read F11 control params.\n");
-			return rc;
-		}
+	rc = f11_allocate_control_regs(fn,
+			&f11->dev_query, &sensor->sens_query,
+			&f11->dev_controls, control_base_addr);
+	if (rc < 0) {
+		dev_err(&fn->dev,
+			"Failed to allocate F11 control params.\n");
+		return rc;
+	}
 
-		if (i < pdata->f11_sensor_count) {
-			sensor->axis_align =
-				pdata->f11_sensor_data[i].axis_align;
-			sensor->type_a = pdata->f11_sensor_data[i].type_a;
-			sensor->sensor_type =
-					pdata->f11_sensor_data[i].sensor_type;
-		}
+	rc = f11_read_control_regs(fn, &f11->dev_controls,
+			control_base_addr);
+	if (rc < 0) {
+		dev_err(&fn->dev,
+			"Failed to read F11 control params.\n");
+		return rc;
+	}
 
-		rc = rmi_read_block(rmi_dev,
-			control_base_addr + F11_CTRL_SENSOR_MAX_X_POS_OFFSET,
-			(u8 *)&max_x_pos, sizeof(max_x_pos));
-		if (rc < 0)
-			return rc;
+	if (pdata->f11_sensor_data) {
+		sensor->axis_align =
+			pdata->f11_sensor_data->axis_align;
+		sensor->type_a = pdata->f11_sensor_data->type_a;
+		sensor->sensor_type =
+				pdata->f11_sensor_data->sensor_type;
+	}
 
-		rc = rmi_read_block(rmi_dev,
-			control_base_addr + F11_CTRL_SENSOR_MAX_Y_POS_OFFSET,
-			(u8 *)&max_y_pos, sizeof(max_y_pos));
-		if (rc < 0)
-			return rc;
+	rc = rmi_read_block(rmi_dev,
+		control_base_addr + F11_CTRL_SENSOR_MAX_X_POS_OFFSET,
+		(u8 *)&max_x_pos, sizeof(max_x_pos));
+	if (rc < 0)
+		return rc;
 
-		if (sensor->axis_align.swap_axes) {
-			temp = max_x_pos;
-			max_x_pos = max_y_pos;
-			max_y_pos = temp;
-		}
-		sensor->max_x = max_x_pos;
-		sensor->max_y = max_y_pos;
+	rc = rmi_read_block(rmi_dev,
+		control_base_addr + F11_CTRL_SENSOR_MAX_Y_POS_OFFSET,
+		(u8 *)&max_y_pos, sizeof(max_y_pos));
+	if (rc < 0)
+		return rc;
 
-		rc = f11_2d_construct_data(sensor);
-		if (rc < 0)
-			return rc;
+	if (sensor->axis_align.swap_axes) {
+		temp = max_x_pos;
+		max_x_pos = max_y_pos;
+		max_y_pos = temp;
+	}
+	sensor->max_x = max_x_pos;
+	sensor->max_y = max_y_pos;
 
-		ctrl = &f11->dev_controls;
-		if (sensor->axis_align.delta_x_threshold) {
-			ctrl->ctrl0_9->delta_x_threshold =
-				sensor->axis_align.delta_x_threshold;
-			rc = rmi_write_block(rmi_dev,
-					ctrl->ctrl0_9_address,
-					ctrl->ctrl0_9,
-					sizeof(*ctrl->ctrl0_9));
-			if (rc < 0)
-				dev_warn(&fn->dev, "Failed to write to delta_x_threshold %d. Code: %d.\n",
-					i, rc);
+	rc = f11_2d_construct_data(sensor);
+	if (rc < 0)
+		return rc;
 
-		}
+	ctrl = &f11->dev_controls;
+	if (sensor->axis_align.delta_x_threshold) {
+		ctrl->ctrl0_9->delta_x_threshold =
+			sensor->axis_align.delta_x_threshold;
+		rc = rmi_write_block(rmi_dev,
+				ctrl->ctrl0_9_address,
+				ctrl->ctrl0_9,
+				sizeof(*ctrl->ctrl0_9));
+		if (rc < 0)
+			dev_warn(&fn->dev, "Failed to write to delta_x_threshold. Code: %d.\n",
+				rc);
 
-		if (sensor->axis_align.delta_y_threshold) {
-			ctrl->ctrl0_9->delta_y_threshold =
-				sensor->axis_align.delta_y_threshold;
-			rc = rmi_write_block(rmi_dev,
-					ctrl->ctrl0_9_address,
-					ctrl->ctrl0_9,
-					sizeof(*ctrl->ctrl0_9));
-			if (rc < 0)
-				dev_warn(&fn->dev, "Failed to write to delta_y_threshold %d. Code: %d.\n",
-					i, rc);
-		}
+	}
+
+	if (sensor->axis_align.delta_y_threshold) {
+		ctrl->ctrl0_9->delta_y_threshold =
+			sensor->axis_align.delta_y_threshold;
+		rc = rmi_write_block(rmi_dev,
+				ctrl->ctrl0_9_address,
+				ctrl->ctrl0_9,
+				sizeof(*ctrl->ctrl0_9));
+		if (rc < 0)
+			dev_warn(&fn->dev, "Failed to write to delta_y_threshold. Code: %d.\n",
+				rc);
 	}
 
 	mutex_init(&f11->dev_controls_mutex);
@@ -1728,22 +1706,61 @@ static int rmi_f11_register_devices(struct rmi_function *fn)
 	struct input_dev *input_dev_mouse;
 	struct rmi_driver_data *driver_data = dev_get_drvdata(&rmi_dev->dev);
 	struct rmi_driver *driver = rmi_dev->driver;
-	int sensors_itertd = 0;
-	int i;
+	struct f11_2d_sensor *sensor = &f11->sensor;
 	int rc;
 
-	for (i = 0; i < (f11->dev_query.nbr_of_sensors + 1); i++) {
-		struct f11_2d_sensor *sensor = &f11->sensors[i];
-		sensors_itertd = i;
-		input_dev = input_allocate_device();
-		if (!input_dev) {
+	input_dev = input_allocate_device();
+	if (!input_dev) {
+		rc = -ENOMEM;
+		goto error_unregister;
+	}
+
+	sensor->input = input_dev;
+	if (driver->set_input_params) {
+		rc = driver->set_input_params(rmi_dev, input_dev);
+		if (rc < 0) {
+			dev_err(&fn->dev,
+			"%s: Error in setting input device.\n",
+			__func__);
+			goto error_unregister;
+		}
+	}
+	sprintf(sensor->input_phys, "%s.abs/input0",
+		dev_name(&fn->dev));
+	input_dev->phys = sensor->input_phys;
+	input_dev->dev.parent = &rmi_dev->dev;
+	input_set_drvdata(input_dev, f11);
+
+	set_bit(EV_SYN, input_dev->evbit);
+	set_bit(EV_ABS, input_dev->evbit);
+	input_set_capability(input_dev, EV_KEY, BTN_TOUCH);
+
+	f11_set_abs_params(fn);
+
+	if (sensor->sens_query.info.has_rel) {
+		set_bit(EV_REL, input_dev->evbit);
+		set_bit(REL_X, input_dev->relbit);
+		set_bit(REL_Y, input_dev->relbit);
+	}
+	rc = input_register_device(input_dev);
+	if (rc < 0) {
+		input_free_device(input_dev);
+		sensor->input = NULL;
+		goto error_unregister;
+	}
+
+	if (sensor->sens_query.info.has_rel) {
+		/*create input device for mouse events  */
+		input_dev_mouse = input_allocate_device();
+		if (!input_dev_mouse) {
 			rc = -ENOMEM;
 			goto error_unregister;
 		}
 
-		sensor->input = input_dev;
+		sensor->mouse_input = input_dev_mouse;
 		if (driver->set_input_params) {
-			rc = driver->set_input_params(rmi_dev, input_dev);
+			rc = driver->set_input_params(rmi_dev,
+				input_dev_mouse);
 			if (rc < 0) {
 				dev_err(&fn->dev,
 				"%s: Error in setting input device.\n",
@@ -1751,87 +1768,39 @@ static int rmi_f11_register_devices(struct rmi_function *fn)
 				goto error_unregister;
 			}
 		}
-		sprintf(sensor->input_phys, "%s.abs%d/input0",
-			dev_name(&fn->dev), i);
-		input_dev->phys = sensor->input_phys;
-		input_dev->dev.parent = &rmi_dev->dev;
-		input_set_drvdata(input_dev, f11);
-
-		set_bit(EV_SYN, input_dev->evbit);
-		set_bit(EV_ABS, input_dev->evbit);
-		input_set_capability(input_dev, EV_KEY, BTN_TOUCH);
-
-		f11_set_abs_params(fn, i);
-
-		if (sensor->sens_query.info.has_rel) {
-			set_bit(EV_REL, input_dev->evbit);
-			set_bit(REL_X, input_dev->relbit);
-			set_bit(REL_Y, input_dev->relbit);
-		}
-		rc = input_register_device(input_dev);
+		sprintf(sensor->input_phys_mouse, "%s.rel/input0",
+			dev_name(&fn->dev));
+		set_bit(EV_REL, input_dev_mouse->evbit);
+		set_bit(REL_X, input_dev_mouse->relbit);
+		set_bit(REL_Y, input_dev_mouse->relbit);
+
+		set_bit(BTN_MOUSE, input_dev_mouse->evbit);
+		/* Register device's buttons and keys */
+		set_bit(EV_KEY, input_dev_mouse->evbit);
+		set_bit(BTN_LEFT, input_dev_mouse->keybit);
+		set_bit(BTN_MIDDLE, input_dev_mouse->keybit);
+		set_bit(BTN_RIGHT, input_dev_mouse->keybit);
+
+		rc = input_register_device(input_dev_mouse);
 		if (rc < 0) {
-			input_free_device(input_dev);
-			sensor->input = NULL;
+			input_free_device(input_dev_mouse);
+			sensor->mouse_input = NULL;
 			goto error_unregister;
 		}
 
-		if (sensor->sens_query.info.has_rel) {
-			/*create input device for mouse events  */
-			input_dev_mouse = input_allocate_device();
-			if (!input_dev_mouse) {
-				rc = -ENOMEM;
-				goto error_unregister;
-			}
-
-			sensor->mouse_input = input_dev_mouse;
-			if (driver->set_input_params) {
-				rc = driver->set_input_params(rmi_dev,
-					input_dev_mouse);
-				if (rc < 0) {
-					dev_err(&fn->dev,
-					"%s: Error in setting input device.\n",
-					__func__);
-					goto error_unregister;
-				}
-			}
-			sprintf(sensor->input_phys_mouse, "%s.rel%d/input0",
-				dev_name(&fn->dev), i);
-			set_bit(EV_REL, input_dev_mouse->evbit);
-			set_bit(REL_X, input_dev_mouse->relbit);
-			set_bit(REL_Y, input_dev_mouse->relbit);
-
-			set_bit(BTN_MOUSE, input_dev_mouse->evbit);
-			/* Register device's buttons and keys */
-			set_bit(EV_KEY, input_dev_mouse->evbit);
-			set_bit(BTN_LEFT, input_dev_mouse->keybit);
-			set_bit(BTN_MIDDLE, input_dev_mouse->keybit);
-			set_bit(BTN_RIGHT, input_dev_mouse->keybit);
-
-			rc = input_register_device(input_dev_mouse);
-			if (rc < 0) {
-				input_free_device(input_dev_mouse);
-				sensor->mouse_input = NULL;
-				goto error_unregister;
-			}
-
-			set_bit(BTN_RIGHT, input_dev_mouse->keybit);
-		}
-
+		set_bit(BTN_RIGHT, input_dev_mouse->keybit);
 	}
 
 	return 0;
 
 error_unregister:
-	for (; sensors_itertd > 0; sensors_itertd--) {
-		if (f11->sensors[sensors_itertd].input) {
-			if (f11->sensors[sensors_itertd].mouse_input) {
-				input_unregister_device(
-				   f11->sensors[sensors_itertd].mouse_input);
-				f11->sensors[sensors_itertd].mouse_input = NULL;
-			}
-			input_unregister_device(f11->sensors[i].input);
-			f11->sensors[i].input = NULL;
+	if (f11->sensor.input) {
+		if (f11->sensor.mouse_input) {
+			input_unregister_device(f11->sensor.mouse_input);
+			f11->sensor.mouse_input = NULL;
 		}
+		input_unregister_device(f11->sensor.input);
+		f11->sensor.input = NULL;
 	}
 
 	return rc;
@@ -1840,28 +1809,22 @@ error_unregister:
 static void rmi_f11_free_devices(struct rmi_function *fn)
 {
 	struct f11_data *f11 = fn->data;
-	int i;
 
-	for (i = 0; i < (f11->dev_query.nbr_of_sensors + 1); i++) {
-		if (f11->sensors[i].input)
-			input_unregister_device(f11->sensors[i].input);
-		if (f11->sensors[i].mouse_input)
-			input_unregister_device(f11->sensors[i].mouse_input);
-	}
+	if (f11->sensor.input)
+		input_unregister_device(f11->sensor.input);
+	if (f11->sensor.mouse_input)
+		input_unregister_device(f11->sensor.mouse_input);
 }
 
 static int rmi_f11_config(struct rmi_function *fn)
 {
 	struct f11_data *f11 = fn->data;
-	int i;
 	int rc;
 
-	for (i = 0; i < (f11->dev_query.nbr_of_sensors + 1); i++) {
-		rc = f11_write_control_regs(fn, &f11->sensors[i].sens_query,
-				   &f11->dev_controls, fn->fd.query_base_addr);
-		if (rc < 0)
-			return rc;
-	}
+	rc = f11_write_control_regs(fn, &f11->sensor.sens_query,
+			   &f11->dev_controls, fn->fd.query_base_addr);
+	if (rc < 0)
+		return rc;
 
 	return 0;
 }
@@ -1874,19 +1837,16 @@ int rmi_f11_attention(struct rmi_function *fn,
 	u16 data_base_addr = fn->fd.data_base_addr;
 	u16 data_base_addr_offset = 0;
 	int error;
-	int i;
 
-	for (i = 0; i < f11->dev_query.nbr_of_sensors + 1; i++) {
-		error = rmi_read_block(rmi_dev,
-				data_base_addr + data_base_addr_offset,
-				f11->sensors[i].data_pkt,
-				f11->sensors[i].pkt_size);
-		if (error < 0)
-			return error;
+	error = rmi_read_block(rmi_dev,
+			data_base_addr + data_base_addr_offset,
+			f11->sensor.data_pkt,
+			f11->sensor.pkt_size);
+	if (error < 0)
+		return error;
 
-		rmi_f11_finger_handler(f11, &f11->sensors[i]);
-		data_base_addr_offset += f11->sensors[i].pkt_size;
-	}
+	rmi_f11_finger_handler(f11, &f11->sensor);
+	data_base_addr_offset += f11->sensor.pkt_size;
 
 	return 0;
 }
diff --git a/include/linux/rmi.h b/include/linux/rmi.h
index dc94dc1..735e978 100644
--- a/include/linux/rmi.h
+++ b/include/linux/rmi.h
@@ -222,13 +222,10 @@ struct rmi_device_platform_data_spi {
  * @spi_data - override default settings for SPI delays and SSB management (see
  * above).
  *
- * @f11_sensor_data - an array of platform data for individual F11 2D sensors.
- * @f11_sensor_count - the length of f11_sensor_data array.  Extra entries will
- * be ignored; if there are too few entries, all settings for the additional
- * sensors will be defaulted.
+ * @f11_sensor_data - platform data for the F11 2D sensor.
  * @f11_rezero_wait - if non-zero, this is how may milliseconds the F11 2D
- * sensor(s) will wait before being be rezeroed on exit from suspend.  If
- * this value is zero, the F11 2D sensor(s) will not be rezeroed on resume.
+ * sensor will wait before being be rezeroed on exit from suspend.  If
+ * this value is zero, the F11 2D sensor will not be rezeroed on resume.
  * @pre_suspend - this will be called before any other suspend operations are
  * done.
  * @power_management - overrides default touch sensor doze mode settings (see
@@ -266,7 +263,6 @@ struct rmi_device_platform_data {
 
 	/* function handler pdata */
 	struct rmi_f11_sensor_data *f11_sensor_data;
-	u8 f11_sensor_count;
 	u16 f11_rezero_wait;
 	struct rmi_f01_power_management power_management;
 	struct rmi_button_map *f19_button_map;
-- 
1.8.3.2


^ permalink raw reply related

* Re: [PATCH 02/15] input: sh_keysc: Restrict non-COMPILE_TEST compilation
From: Dmitry Torokhov @ 2013-12-06  3:20 UTC (permalink / raw)
  To: Simon Horman; +Cc: Laurent Pinchart, linux-sh, linux-arm-kernel, linux-input
In-Reply-To: <20131128073636.GD24146@verge.net.au>

On Thu, Nov 28, 2013 at 04:36:36PM +0900, Simon Horman wrote:
> On Wed, Nov 27, 2013 at 02:18:24AM +0100, Laurent Pinchart wrote:
> > Hardware supported by the driver is only found on SUPERH or
> > ARCH_SHMOBILE platforms. Restrict non-COMPILE_TEST compilation to them.
> > 
> > Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> > Cc: linux-input@vger.kernel.org
> > Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
> 
> Acked-by: Simon Horman <horms+renesas@verge.net.au>


Applied, thank you.

> 
> > ---
> >  drivers/input/keyboard/Kconfig | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/drivers/input/keyboard/Kconfig b/drivers/input/keyboard/Kconfig
> > index bb174c1..a673c9f 100644
> > --- a/drivers/input/keyboard/Kconfig
> > +++ b/drivers/input/keyboard/Kconfig
> > @@ -525,7 +525,7 @@ config KEYBOARD_SUNKBD
> >  
> >  config KEYBOARD_SH_KEYSC
> >  	tristate "SuperH KEYSC keypad support"
> > -	depends on SUPERH || ARM || COMPILE_TEST
> > +	depends on SUPERH || ARCH_SHMOBILE || COMPILE_TEST
> >  	help
> >  	  Say Y here if you want to use a keypad attached to the KEYSC block
> >  	  on SuperH processors such as sh7722 and sh7343.
> > -- 
> > 1.8.3.2
> > 
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-sh" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> > 

-- 
Dmitry

^ permalink raw reply

* Re: [PATCH] Input: use dev_get_platdata()
From: Dmitry Torokhov @ 2013-12-06  3:23 UTC (permalink / raw)
  To: Jingoo Han
  Cc: linux-input, 'Fugang Duan', 'Michael Hennerich',
	'Wan ZongShun', 'Josh Wu', 'Ferruh Yigit'
In-Reply-To: <000e01ceeff2$8b6f62e0$a24e28a0$%han@samsung.com>

On Tue, Dec 03, 2013 at 03:40:23PM +0900, Jingoo Han wrote:
> Use the wrapper function for retrieving the platform data instead
> of accessing dev->platform_data directly. This is a cosmetic change
> to make the code simpler and enhance the readability.
> 
> Signed-off-by: Jingoo Han <jg1.han@samsung.com>
> Acked-by: Fugang Duan <B38611@freescale.com>

Applied, thank you.

-- 
Dmitry

^ permalink raw reply

* Re: [PATCH v4] Input: wacom - add SW_MUTE_DEVICE to include/uapi/linux/input.h
From: Dmitry Torokhov @ 2013-12-06  3:37 UTC (permalink / raw)
  To: Ping Cheng; +Cc: linux-input, killertofu, chris, peter.hutterer, Ping Cheng
In-Reply-To: <1386100749-8827-1-git-send-email-pingc@wacom.com>

Hi Ping,

On Tue, Dec 03, 2013 at 11:59:09AM -0800, Ping Cheng wrote:
> New Intuos series models added a hardware switch to turn touch
> data on/off. The state of the switch is reported periodically
> from the tablet. To report the state, SW_MUTE_DEVICE is added
> in include/uapi/linux/input.h.
> 
> Reviewed_by: Chris Bagwell <chris@cnpbagwell.com>
> Acked-by: Peter Hutterer <peter.hutterer@who-t.net>
> Tested-by: Jason Gerecke <killertofu@gmail.com>
> Signed-off-by: Ping Cheng <pingc@wacom.com>
> ---
> v4: Changed SW_TOUCH to SW_MUTE_DEVICE as suggested by Dmitry.

I split SW_MUTE_DEVICE addition into a separate patch (want to push it
sooner rather than later) and applied both.

Thanks.

-- 
Dmitry

^ permalink raw reply

* [PATCH 3.4-stable][CVE] HID: picolcd_core: validate output report details
From: Kefeng Wang @ 2013-12-06  9:46 UTC (permalink / raw)
  To: Kees Cook, Jiri Kosina, Greg Kroah-Hartman
  Cc: stable, linux-input, wangkefeng.wang, guohanjun

From: Kees Cook <keescook@chromium.org>

Hi Kees, Jiri or Greg,

This patch has been backported to 3.2 stable tree.
It is a CVE bugfix, and looks applicable to stable-3.4.
It prevents from triggering a NULL dereference during
atrr file writing if a HID device send a malicious output
report.

NOTE:
Rename file drivers/hid/hid-picolcd_core.c
	->  drivers/hid/hid-picolcd.c.

===========

From: Kees Cook <keescook@chromium.org>
commit 1e87a2456b0227ca4ab881e19a11bb99d164e792 upstream.

A HID device could send a malicious output report that would cause the
picolcd HID driver to trigger a NULL dereference during attr file writing.

[jkosina@suse.cz: changed

	report->maxfield < 1

to

	report->maxfield != 1

as suggested by Bruno].

CVE-2013-2899

Signed-off-by: Kees Cook <keescook@chromium.org>
Cc: stable@kernel.org
Reviewed-by: Bruno Prémont <bonbons@linux-vserver.org>
Acked-by: Bruno Prémont <bonbons@linux-vserver.org>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
[Kefeng: backported to stable 3.4: adjust filename]
Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
---
 drivers/hid/hid-picolcd.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/hid/hid-picolcd.c b/drivers/hid/hid-picolcd.c
index 45c3433..95f9047 100644
--- a/drivers/hid/hid-picolcd.c
+++ b/drivers/hid/hid-picolcd.c
@@ -1424,7 +1424,7 @@ static ssize_t picolcd_operation_mode_store(struct device *dev,
 		buf += 10;
 		cnt -= 10;
 	}
-	if (!report)
+	if (!report || report->maxfield != 1)
 		return -EINVAL;
 
 	while (cnt > 0 && (buf[cnt-1] == '\n' || buf[cnt-1] == '\r'))
-- 
1.8.2.2

^ permalink raw reply related

* Re: [PATCH v2] input: don't call input_dev_release_keys() in resume
From: Oskar Andero @ 2013-12-06  9:56 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: linux-kernel@vger.kernel.org, linux-input@vger.kernel.org,
	Julian Shandorov, Makarov, Aleksej
In-Reply-To: <20131126021415.GB31517@core.coreip.homeip.net>

Hi Dmitry,

On 03:14 Tue 26 Nov     , Dmitry Torokhov wrote:
> Hi Oskar,
> 
> On Fri, Nov 22, 2013 at 02:27:04PM +0100, Oskar Andero wrote:
> > From: Aleksej Makarov <aleksej.makarov@sonymobile.com>
> > 
> > When waking up the platform by pressing a specific key, sending a
> > release on that key makes it impossible to react on the event in
> > user-space. This is fixed by moving the input_reset_device() call to
> > resume instead.
> > 
> > Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> > Reviewed-by: Radovan Lekanovic <radovan.lekanovic@sonymobile.com>
> > Signed-off-by: Aleksej Makarov <aleksej.makarov@sonymobile.com>
> > Signed-off-by: Oskar Andero <oskar.andero@sonymobile.com>
> > ---
> >  drivers/input/input.c | 11 +----------
> >  1 file changed, 1 insertion(+), 10 deletions(-)
> > 
> > diff --git a/drivers/input/input.c b/drivers/input/input.c
> > index 846ccdd..511d490 100644
> > --- a/drivers/input/input.c
> > +++ b/drivers/input/input.c
> > @@ -1676,22 +1676,13 @@ static int input_dev_suspend(struct device *dev)
> >  {
> >  	struct input_dev *input_dev = to_input_dev(dev);
> >  
> > -	mutex_lock(&input_dev->mutex);
> > -
> > -	if (input_dev->users)
> > -		input_dev_toggle(input_dev, false);
> > -
> > -	mutex_unlock(&input_dev->mutex);
> > +	input_reset_device(input_dev);
> >  
> >  	return 0;
> >  }
> >  
> >  static int input_dev_resume(struct device *dev)
> >  {
> > -	struct input_dev *input_dev = to_input_dev(dev);
> > -
> > -	input_reset_device(input_dev);
> 
> We still need to restore LED state after resume. Does the patch below
> work for you?

Finally found some time to test the patch! Not much left of the initial
one though. :)

The patch works for our use-case, i.e. wake-up the phone by pressing a
key and then be able to retrieve what key was pressed.
Please note that I haven't tested the LED/sound and hibernation parts
of the patch.

Thanks,
 Oskar

> 
> Input: don't call input_dev_release_keys() in resume
> 
> From: Aleksej Makarov <aleksej.makarov@sonymobile.com>
> 
> When waking up the platform by pressing a specific key, sending a
> release on that key makes it impossible to react on the event in
> user-space. This is fixed by moving the input_reset_device() call to
> resume instead.
> 
> [dmitry.torokhov@gmail.com: make sure we still restore LED/sound state
> after resume, handle hibernation properly]
> 
> Signed-off-by: Aleksej Makarov <aleksej.makarov@sonymobile.com>
> Signed-off-by: Oskar Andero <oskar.andero@sonymobile.com>
> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> ---
>  drivers/input/input.c |   76 +++++++++++++++++++++++++++++++++++++------------
>  1 file changed, 57 insertions(+), 19 deletions(-)
> 
> diff --git a/drivers/input/input.c b/drivers/input/input.c
> index 846ccdd..692435a 100644
> --- a/drivers/input/input.c
> +++ b/drivers/input/input.c
> @@ -1653,35 +1653,36 @@ static void input_dev_toggle(struct input_dev *dev, bool activate)
>   */
>  void input_reset_device(struct input_dev *dev)
>  {
> -	mutex_lock(&dev->mutex);
> +	unsigned long flags;
>  
> -	if (dev->users) {
> -		input_dev_toggle(dev, true);
> +	mutex_lock(&dev->mutex);
> +	spin_lock_irqsave(&dev->event_lock, flags);
>  
> -		/*
> -		 * Keys that have been pressed at suspend time are unlikely
> -		 * to be still pressed when we resume.
> -		 */
> -		spin_lock_irq(&dev->event_lock);
> -		input_dev_release_keys(dev);
> -		spin_unlock_irq(&dev->event_lock);
> -	}
> +	input_dev_toggle(dev, true);
> +	input_dev_release_keys(dev);
>  
> +	spin_unlock_irqrestore(&dev->event_lock, flags);
>  	mutex_unlock(&dev->mutex);
>  }
>  EXPORT_SYMBOL(input_reset_device);
>  
> -#ifdef CONFIG_PM
> +#ifdef CONFIG_PM_SLEEP
>  static int input_dev_suspend(struct device *dev)
>  {
>  	struct input_dev *input_dev = to_input_dev(dev);
>  
> -	mutex_lock(&input_dev->mutex);
> +	spin_lock_irq(&input_dev->event_lock);
>  
> -	if (input_dev->users)
> -		input_dev_toggle(input_dev, false);
> +	/*
> +	 * Keys that are pressed now are unlikely to be
> +	 * still pressed when we resume.
> +	 */
> +	input_dev_release_keys(input_dev);
>  
> -	mutex_unlock(&input_dev->mutex);
> +	/* Turn off LEDs and sounds, if any are active. */
> +	input_dev_toggle(input_dev, false);
> +
> +	spin_unlock_irq(&input_dev->event_lock);
>  
>  	return 0;
>  }
> @@ -1690,7 +1691,43 @@ static int input_dev_resume(struct device *dev)
>  {
>  	struct input_dev *input_dev = to_input_dev(dev);
>  
> -	input_reset_device(input_dev);
> +	spin_lock_irq(&input_dev->event_lock);
> +
> +	/* Restore state of LEDs and sounds, if any were active. */
> +	input_dev_toggle(input_dev, true);
> +
> +	spin_unlock_irq(&input_dev->event_lock);
> +
> +	return 0;
> +}
> +
> +static int input_dev_freeze(struct device *dev)
> +{
> +	struct input_dev *input_dev = to_input_dev(dev);
> +
> +	spin_lock_irq(&input_dev->event_lock);
> +
> +	/*
> +	 * Keys that are pressed now are unlikely to be
> +	 * still pressed when we resume.
> +	 */
> +	input_dev_release_keys(input_dev);
> +
> +	spin_unlock_irq(&input_dev->event_lock);
> +
> +	return 0;
> +}
> +
> +static int input_dev_poweroff(struct device *dev)
> +{
> +	struct input_dev *input_dev = to_input_dev(dev);
> +
> +	spin_lock_irq(&input_dev->event_lock);
> +
> +	/* Turn off LEDs and sounds, if any are active. */
> +	input_dev_toggle(input_dev, false);
> +
> +	spin_unlock_irq(&input_dev->event_lock);
>  
>  	return 0;
>  }
> @@ -1698,7 +1735,8 @@ static int input_dev_resume(struct device *dev)
>  static const struct dev_pm_ops input_dev_pm_ops = {
>  	.suspend	= input_dev_suspend,
>  	.resume		= input_dev_resume,
> -	.poweroff	= input_dev_suspend,
> +	.freeze		= input_dev_freeze,
> +	.poweroff	= input_dev_poweroff,
>  	.restore	= input_dev_resume,
>  };
>  #endif /* CONFIG_PM */
> @@ -1707,7 +1745,7 @@ static struct device_type input_dev_type = {
>  	.groups		= input_dev_attr_groups,
>  	.release	= input_dev_release,
>  	.uevent		= input_dev_uevent,
> -#ifdef CONFIG_PM
> +#ifdef CONFIG_PM_SLEEP
>  	.pm		= &input_dev_pm_ops,
>  #endif
>  };

^ permalink raw reply

* [PATCH] Input: samsung-keypad - favor platform data if present
From: Dmitry Torokhov @ 2013-12-06 10:02 UTC (permalink / raw)
  To: linux-input
  Cc: Sachin Kamat, Jingoo Han, Thomas Abraham, Joonyoung Shim,
	linux-kernel

We should be able to override firmware-provided parameters with in-kernel
data, if needed. To that effect favor platform data, if present, over
devicetree data.

Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
---
 drivers/input/keyboard/samsung-keypad.c | 36 +++++++++++++++++++--------------
 1 file changed, 21 insertions(+), 15 deletions(-)

diff --git a/drivers/input/keyboard/samsung-keypad.c b/drivers/input/keyboard/samsung-keypad.c
index 9ac8a1e..a7357ad 100644
--- a/drivers/input/keyboard/samsung-keypad.c
+++ b/drivers/input/keyboard/samsung-keypad.c
@@ -244,8 +244,8 @@ static void samsung_keypad_close(struct input_dev *input_dev)
 }
 
 #ifdef CONFIG_OF
-static struct samsung_keypad_platdata *samsung_keypad_parse_dt(
-				struct device *dev)
+static struct samsung_keypad_platdata *
+samsung_keypad_parse_dt(struct device *dev)
 {
 	struct samsung_keypad_platdata *pdata;
 	struct matrix_keymap_data *keymap_data;
@@ -253,17 +253,22 @@ static struct samsung_keypad_platdata *samsung_keypad_parse_dt(
 	struct device_node *np = dev->of_node, *key_np;
 	unsigned int key_count;
 
+	if (!np) {
+		dev_err(dev, "missing device tree data\n");
+		return ERR_PTR(-EINVAL);
+	}
+
 	pdata = devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL);
 	if (!pdata) {
 		dev_err(dev, "could not allocate memory for platform data\n");
-		return NULL;
+		return ERR_PTR(-ENOMEM);
 	}
 
 	of_property_read_u32(np, "samsung,keypad-num-rows", &num_rows);
 	of_property_read_u32(np, "samsung,keypad-num-columns", &num_cols);
 	if (!num_rows || !num_cols) {
 		dev_err(dev, "number of keypad rows/columns not specified\n");
-		return NULL;
+		return ERR_PTR(-EINVAL);
 	}
 	pdata->rows = num_rows;
 	pdata->cols = num_cols;
@@ -271,7 +276,7 @@ static struct samsung_keypad_platdata *samsung_keypad_parse_dt(
 	keymap_data = devm_kzalloc(dev, sizeof(*keymap_data), GFP_KERNEL);
 	if (!keymap_data) {
 		dev_err(dev, "could not allocate memory for keymap data\n");
-		return NULL;
+		return ERR_PTR(-ENOMEM);
 	}
 	pdata->keymap_data = keymap_data;
 
@@ -280,7 +285,7 @@ static struct samsung_keypad_platdata *samsung_keypad_parse_dt(
 	keymap = devm_kzalloc(dev, sizeof(uint32_t) * key_count, GFP_KERNEL);
 	if (!keymap) {
 		dev_err(dev, "could not allocate memory for keymap\n");
-		return NULL;
+		return ERR_PTR(-ENOMEM);
 	}
 	keymap_data->keymap = keymap;
 
@@ -294,16 +299,19 @@ static struct samsung_keypad_platdata *samsung_keypad_parse_dt(
 
 	if (of_get_property(np, "linux,input-no-autorepeat", NULL))
 		pdata->no_autorepeat = true;
+
 	if (of_get_property(np, "linux,input-wakeup", NULL))
 		pdata->wakeup = true;
 
 	return pdata;
 }
 #else
-static
-struct samsung_keypad_platdata *samsung_keypad_parse_dt(struct device *dev)
+static struct samsung_keypad_platdata *
+samsung_keypad_parse_dt(struct device *dev)
 {
-	return NULL;
+	dev_err(dev, "no platform data defined\n");
+
+	return ERR_PTR(-EINVAL);
 }
 #endif
 
@@ -318,13 +326,11 @@ static int samsung_keypad_probe(struct platform_device *pdev)
 	unsigned int keymap_size;
 	int error;
 
-	if (pdev->dev.of_node)
-		pdata = samsung_keypad_parse_dt(&pdev->dev);
-	else
-		pdata = dev_get_platdata(&pdev->dev);
+	pdata = dev_get_platdata(&pdev->dev);
 	if (!pdata) {
-		dev_err(&pdev->dev, "no platform data defined\n");
-		return -EINVAL;
+		pdata = samsung_keypad_parse_dt(&pdev->dev);
+		if (IS_ERR(pdata))
+			return PTR_ERR(pdata);
 	}
 
 	keymap_data = pdata->keymap_data;
-- 
1.8.3.1


-- 
Dmitry

^ permalink raw reply related

* Re: [PATCH] Input: samsung-keypad - favor platform data if present
From: Joonyoung Shim @ 2013-12-06 10:33 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: linux-input, Sachin Kamat, Jingoo Han, Thomas Abraham,
	linux-kernel
In-Reply-To: <20131206100215.GA27763@core.coreip.homeip.net>

Hi,

On 12/06/2013 07:02 PM, Dmitry Torokhov wrote:
> We should be able to override firmware-provided parameters with in-kernel
> data, if needed. To that effect favor platform data, if present, over
> devicetree data.
>
> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
> ---
>   drivers/input/keyboard/samsung-keypad.c | 36 +++++++++++++++++++--------------
>   1 file changed, 21 insertions(+), 15 deletions(-)

Acked-by: Joonyoung Shim <jy0922.shim@samsung.com>

Thanks.

^ permalink raw reply

* Re: [PATCH] i8042: bugfix for controller detection failure
From: Dmitry Torokhov @ 2013-12-06 16:14 UTC (permalink / raw)
  To: Pablo; +Cc: linux-input
In-Reply-To: <afgut4ql5ujewc30qasvonpu.1386341346081@email.android.com>

Hi Pablo,

On Fri, Dec 06, 2013 at 10:49:06PM +0800, Pablo wrote:
> Subject: [PATCH] i8042: bugfix for controller detection failure
> From: Zhong Jun <puretaurs@163.com>
> To: Dmitry Torokhov <dmitry.torokhov@gmail.com>, Dmitry Torokhov <dtor@mail.ru>, linux-input@vger.kernel.org
> 
>     if i8042 internal buffer is completely filled before i8042 
> initialization starting, function i8042_controller_check will fail because
> i8042_flush returns I8042_BUFFER_SIZE although i8042 internal buffer is 
> completely cleared and I8042_STR_OBF bit of i8042 status register is cleared.
>     To reproduce this bug, holding any key down while the kernel booting from 
> scratch. After system is up, no i8042 entry in /sys/bus/platform/devices directory and
> key press is not responded.

I believe this problem shoudl be fixed by commit
2f0d2604134880f739642fd7c3ae55db33c838e7

Thanks.

> 
> Signed-off-by: Zhong Jun <zhongjun@zte.com.cn>
> Tested-by: Zhong Jun <zhongjun@zte.com.cn>
> Reviewed-by: Wu Dongling <wudongling@zte.com.cn>
> Reviewed-by: Jiang Biao jiang.biao2@zte.com.cn
> 
> diff -up linux-2.6.32.61/drivers/input/serio/i8042.c.orig linux-2.6.32.61/drivers/input/serio/i8042.c
> --- linux-2.6.32.61/drivers/input/serio/i8042.c.orig    2013-11-29 16:42:37.788834724 +0800
> +++ linux-2.6.32.61/drivers/input/serio/i8042.c 2013-11-29 16:46:42.371877282 +0800
> @@ -194,7 +194,7 @@ static int i8042_flush(void)
> 
>         spin_unlock_irqrestore(&i8042_lock, flags);
> 
> -       return i;
> +       return i + (str & I8042_STR_OBF);
> }
> 
> /*
> @@ -781,7 +781,7 @@ static int __init i8042_check_aux(void)
> 
> static int i8042_controller_check(void)
> {
> -       if (i8042_flush() == I8042_BUFFER_SIZE) {
> +       if (i8042_flush() > I8042_BUFFER_SIZE) {
>                 printk(KERN_ERR "i8042.c: No controller found.\n");
>                 return -ENODEV;
>         }

-- 
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

* Re: [PATCH 3.4-stable][CVE] HID: picolcd_core: validate output report details
From: Kees Cook @ 2013-12-06 16:44 UTC (permalink / raw)
  To: Kefeng Wang
  Cc: Jiri Kosina, Greg Kroah-Hartman, # 3.4.x, linux-input, guohanjun
In-Reply-To: <1386323162-7676-1-git-send-email-wangkefeng.wang@huawei.com>

On Fri, Dec 6, 2013 at 1:46 AM, Kefeng Wang <wangkefeng.wang@huawei.com> wrote:
> Hi Kees, Jiri or Greg,
>
> This patch has been backported to 3.2 stable tree.
> It is a CVE bugfix, and looks applicable to stable-3.4.
> It prevents from triggering a NULL dereference during
> atrr file writing if a HID device send a malicious output
> report.
>
> NOTE:
> Rename file drivers/hid/hid-picolcd_core.c
>         ->  drivers/hid/hid-picolcd.c.

Ah! Good call, yes. This should be applied to stable-3.4. Thanks for
fixing it up!

-Kees

-- 
Kees Cook
Chrome OS Security

^ permalink raw reply

* synaptics: PS/2 touchpad isn't detected if a keyboard key is held down on boot
From: Andrey Moiseev @ 2013-12-06 17:22 UTC (permalink / raw)
  To: linux-input, linux-kernel, Dmitry Torokhov

This is an ancient bug, I noticed it since I bought my notebook.
Synaptics PS/2 touchpad is not detected and is not shown in
/dev/input/event* if I hold a keyboard key down when booting just
started.

^ permalink raw reply

* [git pull] Input updates for 3.13-rc3
From: Dmitry Torokhov @ 2013-12-07  9:37 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, linux-input

[-- Attachment #1: Type: text/plain, Size: 1851 bytes --]

Hi Linus,

Please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git for-linus
or
	master.kernel.org:/pub/scm/linux/kernel/git/dtor/input.git for-linus

to receive updates for the input subsystem. You will get an update to
ALPS to support devices on Dell XT2 (hopefully working better this time
around and although it is largish it should not affect any other ALPS
devices) and a tiny update to Elantech driver to support newer devices
as well. Also a coupe of new input event codes have been defined.

Changelog:
---------

Andrew Liu (1):
      Input: keyboard - "keycode & KEY_MAX" changes some keycode values

Christian Engelmayer (1):
      Input: usbtouchscreen - separate report and transmit buffer size handling

Dmitry Torokhov (1):
      Input: sur40 - suppress false uninitialized variable warning

Matt Walker (1):
      Input: elantech - add support for newer (August 2013) devices

Pali Rohár (1):
      Input: add key code for ambient light sensor button

Ping Cheng (1):
      Input: add SW_MUTE_DEVICE switch definition

Yunkang Tang (1):
      Input: ALPS - add support for DualPoint device on Dell XT2 model


Diffstat:
--------

 drivers/input/keyboard/adp5588-keys.c      |   3 +-
 drivers/input/keyboard/adp5589-keys.c      |   3 +-
 drivers/input/keyboard/bf54x-keys.c        |   3 +-
 drivers/input/misc/pcf8574_keypad.c        |   7 +-
 drivers/input/mouse/alps.c                 | 206 ++++++++++++++++++++++++++++-
 drivers/input/mouse/alps.h                 |   1 +
 drivers/input/mouse/elantech.c             |   1 +
 drivers/input/touchscreen/sur40.c          |   4 +-
 drivers/input/touchscreen/usbtouchscreen.c |  22 ++-
 include/uapi/linux/input.h                 |   3 +
 10 files changed, 239 insertions(+), 14 deletions(-)

-- 
Dmitry


[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply

* ADXL34X orientation definition
From: Dmitry Torokhov @ 2013-12-07  9:53 UTC (permalink / raw)
  To: Michael Hennerich; +Cc: linux-input

Hi Michael,

I was going though Coverity reports and it looks like definition of

#define ADXL346_2D_ORIENT(x)            (((x) & 0x3) >> 4)

is not correct as it will always evaluate to 0. Should the mask be 0x30
instead?

Thanks.

-- 
Dmitry

^ permalink raw reply

* Re: synaptics: PS/2 touchpad isn't detected if a keyboard key is held down on boot
From: Andrey Moiseev @ 2013-12-07 11:01 UTC (permalink / raw)
  To: linux-input, linux-kernel, Dmitry Torokhov, linux-hotplug
In-Reply-To: <CABWXVkMdyDNxG3QFOvyx4=6EiJQ5ik9aJxa7jQvtO+UJKwc8Fw@mail.gmail.com>

psmouse module is not loaded when I hold down a key on boot (when
GRUB2 says "loading vmlinuz"), and, in its turn, the PS/2 touchpad
doesn't work. Latest mainline kernel, latest stable one and probably
many older ones. I guess i8042's buffer gets full and that confuses
drivers somehow.

On Fri, Dec 6, 2013 at 9:22 PM, Andrey Moiseev <o2g.org.ru@gmail.com> wrote:
> This is an ancient bug, I noticed it since I bought my notebook.
> Synaptics PS/2 touchpad is not detected and is not shown in
> /dev/input/event* if I hold a keyboard key down when booting just
> started.

^ permalink raw reply

* Re: synaptics: PS/2 touchpad isn't detected if a keyboard key is held down on boot
From: Andrey Moiseev @ 2013-12-07 13:47 UTC (permalink / raw)
  To: linux-input, linux-kernel, Dmitry Torokhov, linux-hotplug
In-Reply-To: <CABWXVkMUFdRKNm76Vc3oJ+Ef9M_MS1xU2TKh=rdyv-t9Cq5V1w@mail.gmail.com>

I inserted a printk into ps2_handle_response(struct ps2dev *ps2dev,
unsigned char data) in "drivers/input/serio/libps2.c" and other
functions in the file.
It really eats scancodes from the keyboard, as I see (0x23 is the 'H'
press scancode). Seems like the scancodes are mixed with reasonable
values. Is it a bug in the controller? Got all this on Lenovo Ideapad
Y550P notebook with Synaptics PS/2 touchpad.

PS2 init
PS2 begin command
PS2 command
PS2 send byte
PS2 end command
PS2 begin command
PS2 command
PS2 send byte
PS2 end command
PS2 init
PS2 begin command
PS2 command
PS2 send byte
PS2 handle ack 0xfa
PS2 handle responce 0x23
PS2 adjust timeout
PS2 end command
PS2 init
PS2 begin command
PS2 command
PS2 send byte
PS2 handle ack 0xfa
PS2 handle responce 0xab
PS2 adjust timeout
PS2 handle responce 0x41
PS2 end command
PS2 begin command
PS2 command
PS2 send byte
PS2 handle ack 0xfa
PS2 end command
PS2 begin command
PS2 command
PS2 send byte
PS2 handle ack 0x23
PS2 handle ack 0xfa
PS2 send byte
PS2 handle ack 0xfa
PS2 end command
PS2 begin command
PS2 command
PS2 send byte
PS2 handle ack 0xfa
PS2 send byte
PS2 handle ack 0xfa
PS2 end command
PS2 begin command
PS2 command
PS2 send byte
PS2 handle ack 0xfa
PS2 end command

On Sat, Dec 7, 2013 at 3:01 PM, Andrey Moiseev <o2g.org.ru@gmail.com> wrote:
> psmouse module is not loaded when I hold down a key on boot (when
> GRUB2 says "loading vmlinuz"), and, in its turn, the PS/2 touchpad
> doesn't work. Latest mainline kernel, latest stable one and probably
> many older ones. I guess i8042's buffer gets full and that confuses
> drivers somehow.
>
> On Fri, Dec 6, 2013 at 9:22 PM, Andrey Moiseev <o2g.org.ru@gmail.com> wrote:
>> This is an ancient bug, I noticed it since I bought my notebook.
>> Synaptics PS/2 touchpad is not detected and is not shown in
>> /dev/input/event* if I hold a keyboard key down when booting just
>> started.

^ permalink raw reply

* [PATCH] Input: serio - fix sysfs layout
From: Dmitry Torokhov @ 2013-12-07 15:41 UTC (permalink / raw)
  To: linux-input; +Cc: Greg Kroah-Hartman, Thomas Hellstrom, linux-kernel

Restore previous layout of sysfs attributes that was broken by commit
3778a2129bcce84f684cc0017ed20d2524afd289 (input: serio: remove bus usage of
dev_attrs) which moved all serio device attributes into 'id' group, when
only 'type', 'proto', 'id', and 'extra' should be in 'id' group and the
rest of attributes should be attached directly to the device.

Reported-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
 drivers/input/serio/serio.c | 24 +++++++++++++++++-------
 1 file changed, 17 insertions(+), 7 deletions(-)

diff --git a/drivers/input/serio/serio.c b/drivers/input/serio/serio.c
index 98707fb..8f4c4ab 100644
--- a/drivers/input/serio/serio.c
+++ b/drivers/input/serio/serio.c
@@ -455,16 +455,26 @@ static DEVICE_ATTR_RO(type);
 static DEVICE_ATTR_RO(proto);
 static DEVICE_ATTR_RO(id);
 static DEVICE_ATTR_RO(extra);
-static DEVICE_ATTR_RO(modalias);
-static DEVICE_ATTR_WO(drvctl);
-static DEVICE_ATTR(description, S_IRUGO, serio_show_description, NULL);
-static DEVICE_ATTR(bind_mode, S_IWUSR | S_IRUGO, serio_show_bind_mode, serio_set_bind_mode);
 
 static struct attribute *serio_device_id_attrs[] = {
 	&dev_attr_type.attr,
 	&dev_attr_proto.attr,
 	&dev_attr_id.attr,
 	&dev_attr_extra.attr,
+	NULL
+};
+
+static struct attribute_group serio_id_attr_group = {
+	.name	= "id",
+	.attrs	= serio_device_id_attrs,
+};
+
+static DEVICE_ATTR_RO(modalias);
+static DEVICE_ATTR_WO(drvctl);
+static DEVICE_ATTR(description, S_IRUGO, serio_show_description, NULL);
+static DEVICE_ATTR(bind_mode, S_IWUSR | S_IRUGO, serio_show_bind_mode, serio_set_bind_mode);
+
+static struct attribute *serio_device_attrs[] = {
 	&dev_attr_modalias.attr,
 	&dev_attr_description.attr,
 	&dev_attr_drvctl.attr,
@@ -472,13 +482,13 @@ static struct attribute *serio_device_id_attrs[] = {
 	NULL
 };
 
-static struct attribute_group serio_id_attr_group = {
-	.name	= "id",
-	.attrs	= serio_device_id_attrs,
+static struct attribute_group serio_device_attr_group = {
+	.attrs	= serio_device_attrs,
 };
 
 static const struct attribute_group *serio_device_attr_groups[] = {
 	&serio_id_attr_group,
+	&serio_device_attr_group,
 	NULL
 };
 
-- 
1.8.3.1


-- 
Dmitry

^ permalink raw reply related

* Re: synaptics: PS/2 touchpad isn't detected if a keyboard key is held down on boot
From: Dmitry Torokhov @ 2013-12-07 16:02 UTC (permalink / raw)
  To: Andrey Moiseev; +Cc: linux-input, linux-kernel, linux-hotplug
In-Reply-To: <CABWXVkNXzxrZJiYshhsWFRf4fDgUL3=tmFtv23w=sZtZM7Rxgg@mail.gmail.com>

On Sat, Dec 07, 2013 at 05:47:09PM +0400, Andrey Moiseev wrote:
> I inserted a printk into ps2_handle_response(struct ps2dev *ps2dev,
> unsigned char data) in "drivers/input/serio/libps2.c" and other
> functions in the file.
> It really eats scancodes from the keyboard, as I see (0x23 is the 'H'
> press scancode). Seems like the scancodes are mixed with reasonable
> values. Is it a bug in the controller? 

Not necessarily... Can you boot with i8042.debug=1 and post full dmesg?

Thanks.

-- 
Dmitry

^ permalink raw reply

* Re: [PATCH] input synaptics-rmi4: elliminate multiple sensor support from rmi_f11.c
From: Dmitry Torokhov @ 2013-12-07 16:05 UTC (permalink / raw)
  To: Andrew Duggan
  Cc: Linux Input, Christopher Heiny, Vincent Huang, Vivian Ly,
	Daniel Rosenberg, Jean Delvare, Joerie de Gram, Linus Walleij,
	Benjamin Tissoires
In-Reply-To: <1386295167-866-1-git-send-email-aduggan@synaptics.com>

Hi Andrew,

On Thu, Dec 05, 2013 at 05:59:27PM -0800, Andrew Duggan wrote:
> This patch implements changes to the synaptics-rmi4 branch of
> Dmitry's input tree.  The base for the patch is commit
> 8ca01dc61a42b6f7bcba052a8c084000f7057a34.
> 
> This patch elliminates support for multiple sensors in rmi_f11. This feature
> has been removed from the RMI4 spec and no devices have every used multiple
> F11 sensors on a single device.
> 
> Signed-off-by: Andrew Duggan <aduggan@synaptics.com>

I am a bit confused here - has this been coordinated with recent
submission by Chris? I'd prefer if there was a single person from
Synaptics posting patches at the same time, so that I know they are
properly sequenced.

Thanks!

-- 
Dmitry

^ permalink raw reply

* Re: synaptics: PS/2 touchpad isn't detected if a keyboard key is held down on boot
From: Andrey Moiseev @ 2013-12-07 16:49 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: linux-input, linux-kernel, linux-hotplug
In-Reply-To: <20131207160246.GA11635@core.coreip.homeip.net>

Here is my dmesg. At boot 'H' key was held down.

[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.13.0-rc3-ARCH-dirty (o2genum@o2pc) (gcc version 4.8.2 (GCC) ) #10 SMP PREEMPT Sat Dec 7 20:25:41 MSK 2013
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-mainline i8042.debug=1 root=UUID=747f676b-e21a-443a-ac61-3f6c4aebb73d rw quiet
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009cfff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009d000-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000007b680fff] usable
[    0.000000] BIOS-e820: [mem 0x000000007b681000-0x000000007b6befff] reserved
[    0.000000] BIOS-e820: [mem 0x000000007b6bf000-0x000000007b757fff] usable
[    0.000000] BIOS-e820: [mem 0x000000007b758000-0x000000007b7befff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x000000007b7bf000-0x000000007b7e2fff] usable
[    0.000000] BIOS-e820: [mem 0x000000007b7e3000-0x000000007b7fefff] ACPI data
[    0.000000] BIOS-e820: [mem 0x000000007b7ff000-0x000000007b7fffff] usable
[    0.000000] BIOS-e820: [mem 0x000000007b800000-0x000000007bffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000e0000000-0x00000000efffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000feb00000-0x00000000feb03fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fec00fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed10000-0x00000000fed13fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed18000-0x00000000fed19fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed1b000-0x00000000fed1ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000ffe00000-0x00000000ffffffff] reserved
[    0.000000] NX (Execute Disable) protection: active
[    0.000000] SMBIOS 2.6 present.
[    0.000000] DMI: LENOVO 20035                           /Base Board Product Name, BIOS 1ECN33WW(V5.07) 03/17/2010
[    0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[    0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
[    0.000000] No AGP bridge found
[    0.000000] e820: last_pfn = 0x7b800 max_arch_pfn = 0x400000000
[    0.000000] MTRR default type: uncachable
[    0.000000] MTRR fixed ranges enabled:
[    0.000000]   00000-9FFFF write-back
[    0.000000]   A0000-BFFFF uncachable
[    0.000000]   C0000-EFFFF write-through
[    0.000000]   F0000-FFFFF write-combining
[    0.000000] MTRR variable ranges enabled:
[    0.000000]   0 base 000000000 mask FC0000000 write-back
[    0.000000]   1 base 0FFE00000 mask FFFE00000 write-protect
[    0.000000]   2 base 040000000 mask FC0000000 write-back
[    0.000000]   3 base 07C000000 mask FFC000000 uncachable
[    0.000000]   4 base 07B800000 mask FFF800000 uncachable
[    0.000000]   5 disabled
[    0.000000]   6 disabled
[    0.000000]   7 disabled
[    0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106
[    0.000000] Scanning 1 areas for low memory corruption
[    0.000000] Base memory trampoline at [ffff880000097000] 97000 size 24576
[    0.000000] init_memory_mapping: [mem 0x00000000-0x000fffff]
[    0.000000]  [mem 0x00000000-0x000fffff] page 4k
[    0.000000] BRK [0x01b3c000, 0x01b3cfff] PGTABLE
[    0.000000] BRK [0x01b3d000, 0x01b3dfff] PGTABLE
[    0.000000] BRK [0x01b3e000, 0x01b3efff] PGTABLE
[    0.000000] init_memory_mapping: [mem 0x7b400000-0x7b5fffff]
[    0.000000]  [mem 0x7b400000-0x7b5fffff] page 2M
[    0.000000] BRK [0x01b3f000, 0x01b3ffff] PGTABLE
[    0.000000] init_memory_mapping: [mem 0x78000000-0x7b3fffff]
[    0.000000]  [mem 0x78000000-0x7b3fffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x00100000-0x77ffffff]
[    0.000000]  [mem 0x00100000-0x001fffff] page 4k
[    0.000000]  [mem 0x00200000-0x77ffffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x7b600000-0x7b680fff]
[    0.000000]  [mem 0x7b600000-0x7b680fff] page 4k
[    0.000000] BRK [0x01b40000, 0x01b40fff] PGTABLE
[    0.000000] init_memory_mapping: [mem 0x7b6bf000-0x7b757fff]
[    0.000000]  [mem 0x7b6bf000-0x7b757fff] page 4k
[    0.000000] init_memory_mapping: [mem 0x7b7bf000-0x7b7e2fff]
[    0.000000]  [mem 0x7b7bf000-0x7b7e2fff] page 4k
[    0.000000] init_memory_mapping: [mem 0x7b7ff000-0x7b7fffff]
[    0.000000]  [mem 0x7b7ff000-0x7b7fffff] page 4k
[    0.000000] RAMDISK: [mem 0x378d4000-0x37c61fff]
[    0.000000] ACPI: RSDP 00000000000fe020 000024 (v02 LENOVO)
[    0.000000] ACPI: XSDT 000000007b7fe120 000084 (v01 LENOVO CB-01    00000001      01000013)
[    0.000000] ACPI: FACP 000000007b7fc000 0000F4 (v04 LENOVO CB-01    00000001 MSFT 01000013)
[    0.000000] ACPI: DSDT 000000007b7ef000 00992C (v02 LENOVO CB-01    00000001 MSFT 01000013)
[    0.000000] ACPI: FACS 000000007b76a000 000040
[    0.000000] ACPI: ASF! 000000007b7fd000 0000A5 (v32 INTEL  Calpella 00000001 MSFT 01000013)
[    0.000000] ACPI: HPET 000000007b7fb000 000038 (v01 LENOVO CB-01    00000001 MSFT 01000013)
[    0.000000] ACPI: APIC 000000007b7fa000 00008C (v02 INTEL  Calpella 00000001 MSFT 01000013)
[    0.000000] ACPI: MCFG 000000007b7f9000 00003C (v01 LENOVO CB-01    00000001 MSFT 01000013)
[    0.000000] ACPI: SLIX 000000007b7ee000 000176 (v01 LENOVO CB-01    00000001 MSFT 01000013)
[    0.000000] ACPI: BOOT 000000007b7eb000 000028 (v01 INTEL  Calpella 00000001 MSFT 01000013)
[    0.000000] ACPI: ASPT 000000007b7e7000 000034 (v04 INTEL  Calpella 00000001 MSFT 01000013)
[    0.000000] ACPI: WDRT 000000007b7e6000 000047 (v01 INTEL  Calpella 00000000 MSFT 01000013)
[    0.000000] ACPI: SSDT 000000007b7e5000 0009F1 (v01  PmRef    CpuPm 00003000 INTL 20051117)
[    0.000000] ACPI: SSDT 000000007b7e4000 000259 (v01  PmRef  Cpu0Tst 00003000 INTL 20051117)
[    0.000000] ACPI: SSDT 000000007b7e3000 00049F (v01  PmRef    ApTst 00003000 INTL 20051117)
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] No NUMA configuration found
[    0.000000] Faking a node at [mem 0x0000000000000000-0x000000007b7fffff]
[    0.000000] Initmem setup node 0 [mem 0x00000000-0x7b7fffff]
[    0.000000]   NODE_DATA [mem 0x7b7de000-0x7b7e2fff]
[    0.000000]  [ffffea0000000000-ffffea0001ffffff] PMD -> [ffff880078e00000-ffff88007adfffff] on node 0
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x00001000-0x00ffffff]
[    0.000000]   DMA32    [mem 0x01000000-0xffffffff]
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x00001000-0x0009cfff]
[    0.000000]   node   0: [mem 0x00100000-0x7b680fff]
[    0.000000]   node   0: [mem 0x7b6bf000-0x7b757fff]
[    0.000000]   node   0: [mem 0x7b7bf000-0x7b7e2fff]
[    0.000000]   node   0: [mem 0x7b7ff000-0x7b7fffff]
[    0.000000] On node 0 totalpages: 505563
[    0.000000]   DMA zone: 64 pages used for memmap
[    0.000000]   DMA zone: 21 pages reserved
[    0.000000]   DMA zone: 3996 pages, LIFO batch:0
[    0.000000]   DMA32 zone: 7840 pages used for memmap
[    0.000000]   DMA32 zone: 501567 pages, LIFO batch:31
[    0.000000] ACPI: PM-Timer IO Port: 0x408
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x01] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x04] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x05] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x05] lapic_id[0x00] disabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x06] lapic_id[0x00] disabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x07] lapic_id[0x00] disabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x08] lapic_id[0x00] disabled)
[    0.000000] ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0])
[    0.000000] IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-23
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[    0.000000] ACPI: IRQ0 used by override.
[    0.000000] ACPI: IRQ2 used by override.
[    0.000000] ACPI: IRQ9 used by override.
[    0.000000] Using ACPI (MADT) for SMP configuration information
[    0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000
[    0.000000] smpboot: Allowing 8 CPUs, 4 hotplug CPUs
[    0.000000] nr_irqs_gsi: 40
[    0.000000] PM: Registered nosave memory: [mem 0x0009d000-0x0009ffff]
[    0.000000] PM: Registered nosave memory: [mem 0x000a0000-0x000dffff]
[    0.000000] PM: Registered nosave memory: [mem 0x000e0000-0x000fffff]
[    0.000000] PM: Registered nosave memory: [mem 0x7b681000-0x7b6befff]
[    0.000000] PM: Registered nosave memory: [mem 0x7b758000-0x7b7befff]
[    0.000000] PM: Registered nosave memory: [mem 0x7b7e3000-0x7b7fefff]
[    0.000000] e820: [mem 0x7c000000-0xdfffffff] available for PCI devices
[    0.000000] Booting paravirtualized kernel on bare hardware
[    0.000000] setup_percpu: NR_CPUS:128 nr_cpumask_bits:128 nr_cpu_ids:8 nr_node_ids:1
[    0.000000] PERCPU: Embedded 29 pages/cpu @ffff88007b400000 s86272 r8192 d24320 u262144
[    0.000000] pcpu-alloc: s86272 r8192 d24320 u262144 alloc=1*2097152
[    0.000000] pcpu-alloc: [0] 0 1 2 3 4 5 6 7 
[    0.000000] Built 1 zonelists in Node order, mobility grouping on.  Total pages: 497638
[    0.000000] Policy zone: DMA32
[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-mainline i8042.debug=1 root=UUID=747f676b-e21a-443a-ac61-3f6c4aebb73d rw quiet
[    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[    0.000000] Checking aperture...
[    0.000000] No AGP bridge found
[    0.000000] Calgary: detecting Calgary via BIOS EBDA area
[    0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing!
[    0.000000] Memory: 1973032K/2022252K available (5151K kernel code, 815K rwdata, 1728K rodata, 1160K init, 1304K bss, 49220K reserved)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=8, Nodes=1
[    0.000000] Preemptible hierarchical RCU implementation.
[    0.000000] 	RCU dyntick-idle grace-period acceleration is enabled.
[    0.000000] 	Dump stacks of tasks blocking RCU-preempt GP.
[    0.000000] 	RCU restricting CPUs from NR_CPUS=128 to nr_cpu_ids=8.
[    0.000000] NR_IRQS:8448 nr_irqs:744 16
[    0.000000] Console: colour dummy device 80x25
[    0.000000] console [tty0] enabled
[    0.000000] allocated 8388608 bytes of page_cgroup
[    0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups
[    0.000000] hpet clockevent registered
[    0.000000] tsc: Fast TSC calibration using PIT
[    0.003333] tsc: Detected 2127.841 MHz processor
[    0.000004] Calibrating delay loop (skipped), value calculated using timer frequency.. 4257.00 BogoMIPS (lpj=7092803)
[    0.000007] pid_max: default: 32768 minimum: 301
[    0.000040] Security Framework initialized
[    0.000052] AppArmor: AppArmor disabled by boot time parameter
[    0.000053] Yama: becoming mindful.
[    0.000227] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes)
[    0.000932] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes)
[    0.001223] Mount-cache hash table entries: 256
[    0.001448] Initializing cgroup subsys memory
[    0.001456] Initializing cgroup subsys devices
[    0.001459] Initializing cgroup subsys freezer
[    0.001461] Initializing cgroup subsys net_cls
[    0.001462] Initializing cgroup subsys blkio
[    0.001486] CPU: Physical Processor ID: 0
[    0.001488] CPU: Processor Core ID: 0
[    0.001494] mce: CPU supports 9 MCE banks
[    0.001505] CPU0: Thermal monitoring enabled (TM1)
[    0.001516] Last level iTLB entries: 4KB 512, 2MB 7, 4MB 7
Last level dTLB entries: 4KB 512, 2MB 32, 4MB 32
tlb_flushall_shift: 6
[    0.001606] Freeing SMP alternatives memory: 20K (ffffffff819ef000 - ffffffff819f4000)
[    0.002796] ACPI: Core revision 20131115
[    0.012879] ACPI: All ACPI Tables successfully acquired
[    0.179442] ftrace: allocating 20458 entries in 80 pages
[    0.191816] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[    0.224806] smpboot: CPU0: Intel(R) Core(TM) i3 CPU       M 330  @ 2.13GHz (fam: 06, model: 25, stepping: 02)
[    0.330332] Performance Events: PEBS fmt1+, 16-deep LBR, Westmere events, Intel PMU driver.
[    0.330340] perf_event_intel: CPUID marked event: 'bus cycles' unavailable
[    0.330343] ... version:                3
[    0.330344] ... bit width:              48
[    0.330345] ... generic registers:      4
[    0.330346] ... value mask:             0000ffffffffffff
[    0.330347] ... max period:             000000007fffffff
[    0.330348] ... fixed-purpose events:   3
[    0.330349] ... event mask:             000000070000000f
[    0.357070] x86: Booting SMP configuration:
[    0.370446] NMI watchdog: enabled on all CPUs, permanently consumes one hw-PMU counter.
[    0.357072] .... node  #0, CPUs:      #1 #2 #3
[    0.410323] x86: Booted up 1 node, 4 CPUs
[    0.410328] smpboot: Total of 4 processors activated (17029.00 BogoMIPS)
[    0.412942] devtmpfs: initialized
[    0.416343] PM: Registering ACPI NVS region [mem 0x7b758000-0x7b7befff] (421888 bytes)
[    0.417415] RTC time: 16:39:27, date: 12/07/13
[    0.417460] NET: Registered protocol family 16
[    0.417574] cpuidle: using governor ladder
[    0.417576] cpuidle: using governor menu
[    0.417592] ACPI FADT declares the system doesn't support PCIe ASPM, so disable it
[    0.417594] ACPI: bus type PCI registered
[    0.417596] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
[    0.417675] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000)
[    0.417678] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820
[    0.438612] PCI: Using configuration type 1 for base access
[    0.438752] mtrr: your CPUs had inconsistent variable MTRR settings
[    0.438753] mtrr: probably your BIOS does not setup all CPUs.
[    0.438754] mtrr: corrected configuration.
[    0.439244] bio: create slab <bio-0> at 0
[    0.439371] ACPI: Added _OSI(Module Device)
[    0.439374] ACPI: Added _OSI(Processor Device)
[    0.439375] ACPI: Added _OSI(3.0 _SCP Extensions)
[    0.439377] ACPI: Added _OSI(Processor Aggregator Device)
[    0.443160] ACPI: Executed 1 blocks of module-level executable AML code
[    0.470309] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query ignored
[    0.470733] ACPI: SSDT 000000007b691c18 0003A0 (v01  PmRef  Cpu0Ist 00003000 INTL 20051117)
[    0.471190] ACPI: Dynamic OEM Table Load:
[    0.471192] ACPI: SSDT           (null) 0003A0 (v01  PmRef  Cpu0Ist 00003000 INTL 20051117)
[    0.471342] ACPI: SSDT 000000007b68f618 0005CD (v01  PmRef  Cpu0Cst 00003001 INTL 20051117)
[    0.471783] ACPI: Dynamic OEM Table Load:
[    0.471785] ACPI: SSDT           (null) 0005CD (v01  PmRef  Cpu0Cst 00003001 INTL 20051117)
[    0.497221] ACPI: SSDT 000000007b690a98 000303 (v01  PmRef    ApIst 00003000 INTL 20051117)
[    0.497727] ACPI: Dynamic OEM Table Load:
[    0.497729] ACPI: SSDT           (null) 000303 (v01  PmRef    ApIst 00003000 INTL 20051117)
[    0.510396] ACPI: SSDT 000000007b68ed98 000119 (v01  PmRef    ApCst 00003000 INTL 20051117)
[    0.510866] ACPI: Dynamic OEM Table Load:
[    0.510868] ACPI: SSDT           (null) 000119 (v01  PmRef    ApCst 00003000 INTL 20051117)
[    0.535990] ACPI: Interpreter enabled
[    0.536002] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S1_] (20131115/hwxface-580)
[    0.536009] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S2_] (20131115/hwxface-580)
[    0.536033] ACPI: (supports S0 S3 S4 S5)
[    0.536035] ACPI: Using IOAPIC for interrupt routing
[    0.536076] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[    0.536263] ACPI: No dock devices found.
[    0.621788] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-fe])
[    0.621795] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI]
[    0.621831] \_SB_.PCI0:_OSC invalid UUID
[    0.621833] _OSC request data:1 1f 0 
[    0.621837] acpi PNP0A08:00: _OSC failed (AE_ERROR); disabling ASPM
[    0.622688] ACPI: \_SB_.PCI0.PDRC: can't evaluate _ADR (0x5)
[    0.622691] ACPI: \_SB_.PCI0.MIR_: can't evaluate _ADR (0x5)
[    0.622703] PCI host bridge to bus 0000:00
[    0.622705] pci_bus 0000:00: root bus resource [bus 00-fe]
[    0.622708] pci_bus 0000:00: root bus resource [io  0x0000-0x0cf7]
[    0.622710] pci_bus 0000:00: root bus resource [io  0x0d00-0xffff]
[    0.622712] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff]
[    0.622714] pci_bus 0000:00: root bus resource [mem 0x7c000000-0xfeafffff]
[    0.622722] pci 0000:00:00.0: [8086:0044] type 00 class 0x060000
[    0.622742] DMAR: BIOS has allocated no shadow GTT; disabling IOMMU for graphics
[    0.622827] pci 0000:00:01.0: [8086:0045] type 01 class 0x060400
[    0.622864] pci 0000:00:01.0: PME# supported from D0 D3hot D3cold
[    0.622916] pci 0000:00:01.0: System wakeup disabled by ACPI
[    0.622993] pci 0000:00:1a.0: [8086:3b3c] type 00 class 0x0c0320
[    0.623376] pci 0000:00:1a.0: reg 0x10: [mem 0x99105c00-0x99105fff]
[    0.625583] pci 0000:00:1a.0: PME# supported from D0 D3hot D3cold
[    0.625668] pci 0000:00:1a.0: System wakeup disabled by ACPI
[    0.625718] pci 0000:00:1b.0: [8086:3b56] type 00 class 0x040300
[    0.625742] pci 0000:00:1b.0: reg 0x10: [mem 0x99100000-0x99103fff 64bit]
[    0.625842] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold
[    0.625905] pci 0000:00:1b.0: System wakeup disabled by ACPI
[    0.625946] pci 0000:00:1c.0: [8086:3b42] type 01 class 0x060400
[    0.626048] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold
[    0.626112] pci 0000:00:1c.0: System wakeup disabled by ACPI
[    0.626151] pci 0000:00:1c.1: [8086:3b44] type 01 class 0x060400
[    0.626253] pci 0000:00:1c.1: PME# supported from D0 D3hot D3cold
[    0.626351] pci 0000:00:1c.2: [8086:3b46] type 01 class 0x060400
[    0.626454] pci 0000:00:1c.2: PME# supported from D0 D3hot D3cold
[    0.626562] pci 0000:00:1d.0: [8086:3b34] type 00 class 0x0c0320
[    0.626942] pci 0000:00:1d.0: reg 0x10: [mem 0x99105800-0x99105bff]
[    0.629155] pci 0000:00:1d.0: PME# supported from D0 D3hot D3cold
[    0.629238] pci 0000:00:1d.0: System wakeup disabled by ACPI
[    0.629284] pci 0000:00:1e.0: [8086:2448] type 01 class 0x060401
[    0.629410] pci 0000:00:1e.0: System wakeup disabled by ACPI
[    0.629448] pci 0000:00:1f.0: [8086:3b09] type 00 class 0x060100
[    0.629647] pci 0000:00:1f.2: [8086:3b29] type 00 class 0x010601
[    0.629675] pci 0000:00:1f.2: reg 0x10: [io  0x5048-0x504f]
[    0.629687] pci 0000:00:1f.2: reg 0x14: [io  0x5054-0x5057]
[    0.629699] pci 0000:00:1f.2: reg 0x18: [io  0x5040-0x5047]
[    0.629710] pci 0000:00:1f.2: reg 0x1c: [io  0x5050-0x5053]
[    0.629722] pci 0000:00:1f.2: reg 0x20: [io  0x5020-0x503f]
[    0.629734] pci 0000:00:1f.2: reg 0x24: [mem 0x99105000-0x991057ff]
[    0.629802] pci 0000:00:1f.2: PME# supported from D3hot
[    0.629893] pci 0000:00:1f.3: [8086:3b30] type 00 class 0x0c0500
[    0.629915] pci 0000:00:1f.3: reg 0x10: [mem 0x99106000-0x991060ff 64bit]
[    0.629946] pci 0000:00:1f.3: reg 0x20: [io  0x5000-0x501f]
[    0.630105] pci 0000:01:00.0: [10de:0a34] type 00 class 0x030000
[    0.630120] pci 0000:01:00.0: reg 0x10: [mem 0x92000000-0x92ffffff]
[    0.630134] pci 0000:01:00.0: reg 0x14: [mem 0x80000000-0x8fffffff 64bit pref]
[    0.630148] pci 0000:01:00.0: reg 0x1c: [mem 0x90000000-0x91ffffff 64bit pref]
[    0.630158] pci 0000:01:00.0: reg 0x24: [io  0x4000-0x407f]
[    0.630168] pci 0000:01:00.0: reg 0x30: [mem 0xfff80000-0xffffffff pref]
[    0.630280] pci 0000:01:00.1: [10de:0be2] type 00 class 0x040300
[    0.630294] pci 0000:01:00.1: reg 0x10: [mem 0x93000000-0x93003fff]
[    0.630446] pci 0000:00:01.0: PCI bridge to [bus 01]
[    0.630449] pci 0000:00:01.0:   bridge window [io  0x4000-0x4fff]
[    0.630452] pci 0000:00:01.0:   bridge window [mem 0x92000000-0x930fffff]
[    0.630456] pci 0000:00:01.0:   bridge window [mem 0x80000000-0x91ffffff 64bit pref]
[    0.630544] acpiphp: Slot [1] registered
[    0.630551] pci 0000:00:1c.0: PCI bridge to [bus 02-05]
[    0.630556] pci 0000:00:1c.0:   bridge window [io  0x3000-0x3fff]
[    0.630562] pci 0000:00:1c.0:   bridge window [mem 0x98100000-0x990fffff]
[    0.630569] pci 0000:00:1c.0:   bridge window [mem 0x93100000-0x940fffff 64bit pref]
[    0.630690] pci 0000:06:00.0: [168c:002b] type 00 class 0x028000
[    0.630722] pci 0000:06:00.0: reg 0x10: [mem 0x97100000-0x9710ffff 64bit]
[    0.630868] pci 0000:06:00.0: supports D1
[    0.630870] pci 0000:06:00.0: PME# supported from D0 D1 D3hot
[    0.640219] pci 0000:00:1c.1: PCI bridge to [bus 06]
[    0.640230] pci 0000:00:1c.1:   bridge window [io  0x2000-0x2fff]
[    0.640239] pci 0000:00:1c.1:   bridge window [mem 0x97100000-0x980fffff]
[    0.640252] pci 0000:00:1c.1:   bridge window [mem 0x94100000-0x950fffff 64bit pref]
[    0.640408] pci 0000:07:00.0: [14e4:1692] type 00 class 0x020000
[    0.640452] pci 0000:07:00.0: reg 0x10: [mem 0x96100000-0x9610ffff 64bit]
[    0.640680] pci 0000:07:00.0: PME# supported from D3hot D3cold
[    0.640737] pci 0000:07:00.0: System wakeup disabled by ACPI
[    0.650242] pci 0000:00:1c.2: PCI bridge to [bus 07]
[    0.650254] pci 0000:00:1c.2:   bridge window [io  0x1000-0x1fff]
[    0.650259] pci 0000:00:1c.2:   bridge window [mem 0x96100000-0x970fffff]
[    0.650267] pci 0000:00:1c.2:   bridge window [mem 0x95100000-0x960fffff 64bit pref]
[    0.650353] pci 0000:00:1e.0: PCI bridge to [bus 08] (subtractive decode)
[    0.650366] pci 0000:00:1e.0:   bridge window [io  0x0000-0x0cf7] (subtractive decode)
[    0.650369] pci 0000:00:1e.0:   bridge window [io  0x0d00-0xffff] (subtractive decode)
[    0.650371] pci 0000:00:1e.0:   bridge window [mem 0x000a0000-0x000bffff] (subtractive decode)
[    0.650373] pci 0000:00:1e.0:   bridge window [mem 0x7c000000-0xfeafffff] (subtractive decode)
[    0.677353] ACPI: PCI Interrupt Link [LNKA] (IRQs 1 3 4 *5 6 7 10 12 14 15)
[    0.677413] ACPI: PCI Interrupt Link [LNKB] (IRQs 1 3 4 5 6 7 11 12 14 15) *10
[    0.677471] ACPI: PCI Interrupt Link [LNKC] (IRQs 1 3 4 5 6 7 10 12 14 15) *11
[    0.677528] ACPI: PCI Interrupt Link [LNKD] (IRQs 1 3 4 5 6 7 11 12 14 15) *10
[    0.677585] ACPI: PCI Interrupt Link [LNKE] (IRQs 1 3 4 5 6 7 10 12 14 15) *0, disabled.
[    0.677642] ACPI: PCI Interrupt Link [LNKF] (IRQs 1 3 4 5 6 7 *11 12 14 15)
[    0.677699] ACPI: PCI Interrupt Link [LNKG] (IRQs 1 3 4 5 6 7 10 12 14 15) *11
[    0.677756] ACPI: PCI Interrupt Link [LNKH] (IRQs 1 3 4 *5 6 7 11 12 14 15)
[    0.677805] ACPI: PCI Root Bridge [CPBG] (domain 0000 [bus ff])
[    0.677809] acpi PNP0A03:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI]
[    0.677814] acpi PNP0A03:00: _OSC failed (AE_NOT_FOUND); disabling ASPM
[    0.677888] PCI host bridge to bus 0000:ff
[    0.677891] pci_bus 0000:ff: root bus resource [bus ff]
[    0.677897] pci 0000:ff:00.0: [8086:2c62] type 00 class 0x060000
[    0.677943] pci 0000:ff:00.1: [8086:2d01] type 00 class 0x060000
[    0.677991] pci 0000:ff:02.0: [8086:2d10] type 00 class 0x060000
[    0.678037] pci 0000:ff:02.1: [8086:2d11] type 00 class 0x060000
[    0.678080] pci 0000:ff:02.2: [8086:2d12] type 00 class 0x060000
[    0.678122] pci 0000:ff:02.3: [8086:2d13] type 00 class 0x060000
[    0.678493] ACPI: Enabled 6 GPEs in block 00 to 3F
[    0.678501] ACPI: \_SB_.PCI0: notify handler is installed
[    0.678560] ACPI: \_SB_.CPBG: notify handler is installed
[    0.678571] Found 2 acpi root devices
[    0.678604] ACPI : EC: GPE = 0x17, I/O: command/status = 0x66, data = 0x62
[    0.678714] vgaarb: device added: PCI:0000:01:00.0,decodes=io+mem,owns=io+mem,locks=none
[    0.678717] vgaarb: loaded
[    0.678718] vgaarb: bridge control possible 0000:01:00.0
[    0.678760] PCI: Using ACPI for IRQ routing
[    0.688654] PCI: pci_cache_line_size set to 64 bytes
[    0.688788] e820: reserve RAM buffer [mem 0x0009d000-0x0009ffff]
[    0.688790] e820: reserve RAM buffer [mem 0x7b681000-0x7bffffff]
[    0.688792] e820: reserve RAM buffer [mem 0x7b758000-0x7bffffff]
[    0.688794] e820: reserve RAM buffer [mem 0x7b7e3000-0x7bffffff]
[    0.688795] e820: reserve RAM buffer [mem 0x7b800000-0x7bffffff]
[    0.688898] NetLabel: Initializing
[    0.688899] NetLabel:  domain hash size = 128
[    0.688900] NetLabel:  protocols = UNLABELED CIPSOv4
[    0.688919] NetLabel:  unlabeled traffic allowed by default
[    0.688949] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0, 0, 0, 0, 0
[    0.688954] hpet0: 8 comparators, 64-bit 14.318180 MHz counter
[    0.690986] Switched to clocksource hpet
[    0.695899] pnp: PnP ACPI init
[    0.695917] ACPI: bus type PNP registered
[    0.717714] pnp 00:00: [dma 4]
[    0.717752] pnp 00:00: Plug and Play ACPI device, IDs PNP0200 (active)
[    0.717778] pnp 00:01: Plug and Play ACPI device, IDs INT0800 (active)
[    0.717900] pnp 00:02: Plug and Play ACPI device, IDs PNP0103 (active)
[    0.717939] pnp 00:03: Plug and Play ACPI device, IDs PNP0c04 (active)
[    0.717963] pnp 00:04: disabling [io  0x164e-0x164f] because it overlaps 0000:00:1c.2 BAR 13 [io  0x1000-0x1fff]
[    0.718003] system 00:04: [io  0x0680-0x069f] has been reserved
[    0.718006] system 00:04: [io  0x0800-0x080f] has been reserved
[    0.718008] system 00:04: [io  0xffff] has been reserved
[    0.718010] system 00:04: [io  0xffff] has been reserved
[    0.718013] system 00:04: [io  0x0400-0x047f] could not be reserved
[    0.718015] system 00:04: [io  0x0500-0x057f] has been reserved
[    0.718019] system 00:04: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.718051] pnp 00:05: Plug and Play ACPI device, IDs PNP0b00 (active)
[    0.718083] pnp 00:06: Plug and Play ACPI device, IDs SYN0716 SYN0700 SYN0002 PNP0f13 (active)
[    0.718113] pnp 00:07: Plug and Play ACPI device, IDs PNP0303 (active)
[    0.718606] pnp 00:08: disabling [mem 0xfffff000-0xffffffff] because it overlaps 0000:01:00.0 BAR 6 [mem 0xfff80000-0xffffffff pref]
[    0.718638] system 00:08: [mem 0xfed1c000-0xfed1ffff] has been reserved
[    0.718641] system 00:08: [mem 0xfed10000-0xfed13fff] has been reserved
[    0.718643] system 00:08: [mem 0xfed18000-0xfed18fff] has been reserved
[    0.718645] system 00:08: [mem 0xfed19000-0xfed19fff] has been reserved
[    0.718648] system 00:08: [mem 0xe0000000-0xefffffff] has been reserved
[    0.718650] system 00:08: [mem 0xfed20000-0xfed3ffff] has been reserved
[    0.718652] system 00:08: [mem 0xfed45000-0xfed8ffff] has been reserved
[    0.718654] system 00:08: [mem 0xff000000-0xffffffff] could not be reserved
[    0.718657] system 00:08: [mem 0xfee00000-0xfeefffff] could not be reserved
[    0.718660] system 00:08: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.718708] pnp 00:09: Plug and Play ACPI device, IDs ENE0201 (active)
[    0.718831] pnp: PnP ACPI: found 10 devices
[    0.718833] ACPI: bus type PNP unregistered
[    0.725668] pci 0000:01:00.0: no compatible bridge window for [mem 0xfff80000-0xffffffff pref]
[    0.725719] pci 0000:01:00.0: BAR 6: assigned [mem 0x93080000-0x930fffff pref]
[    0.725723] pci 0000:00:01.0: PCI bridge to [bus 01]
[    0.725725] pci 0000:00:01.0:   bridge window [io  0x4000-0x4fff]
[    0.725729] pci 0000:00:01.0:   bridge window [mem 0x92000000-0x930fffff]
[    0.725732] pci 0000:00:01.0:   bridge window [mem 0x80000000-0x91ffffff 64bit pref]
[    0.725736] pci 0000:00:1c.0: PCI bridge to [bus 02-05]
[    0.725739] pci 0000:00:1c.0:   bridge window [io  0x3000-0x3fff]
[    0.725746] pci 0000:00:1c.0:   bridge window [mem 0x98100000-0x990fffff]
[    0.725751] pci 0000:00:1c.0:   bridge window [mem 0x93100000-0x940fffff 64bit pref]
[    0.725759] pci 0000:00:1c.1: PCI bridge to [bus 06]
[    0.725762] pci 0000:00:1c.1:   bridge window [io  0x2000-0x2fff]
[    0.725769] pci 0000:00:1c.1:   bridge window [mem 0x97100000-0x980fffff]
[    0.725774] pci 0000:00:1c.1:   bridge window [mem 0x94100000-0x950fffff 64bit pref]
[    0.725782] pci 0000:00:1c.2: PCI bridge to [bus 07]
[    0.725785] pci 0000:00:1c.2:   bridge window [io  0x1000-0x1fff]
[    0.725792] pci 0000:00:1c.2:   bridge window [mem 0x96100000-0x970fffff]
[    0.725797] pci 0000:00:1c.2:   bridge window [mem 0x95100000-0x960fffff 64bit pref]
[    0.725805] pci 0000:00:1e.0: PCI bridge to [bus 08]
[    0.725821] pci_bus 0000:00: resource 4 [io  0x0000-0x0cf7]
[    0.725823] pci_bus 0000:00: resource 5 [io  0x0d00-0xffff]
[    0.725825] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff]
[    0.725827] pci_bus 0000:00: resource 7 [mem 0x7c000000-0xfeafffff]
[    0.725829] pci_bus 0000:01: resource 0 [io  0x4000-0x4fff]
[    0.725831] pci_bus 0000:01: resource 1 [mem 0x92000000-0x930fffff]
[    0.725833] pci_bus 0000:01: resource 2 [mem 0x80000000-0x91ffffff 64bit pref]
[    0.725835] pci_bus 0000:02: resource 0 [io  0x3000-0x3fff]
[    0.725837] pci_bus 0000:02: resource 1 [mem 0x98100000-0x990fffff]
[    0.725839] pci_bus 0000:02: resource 2 [mem 0x93100000-0x940fffff 64bit pref]
[    0.725841] pci_bus 0000:06: resource 0 [io  0x2000-0x2fff]
[    0.725843] pci_bus 0000:06: resource 1 [mem 0x97100000-0x980fffff]
[    0.725845] pci_bus 0000:06: resource 2 [mem 0x94100000-0x950fffff 64bit pref]
[    0.725847] pci_bus 0000:07: resource 0 [io  0x1000-0x1fff]
[    0.725849] pci_bus 0000:07: resource 1 [mem 0x96100000-0x970fffff]
[    0.725851] pci_bus 0000:07: resource 2 [mem 0x95100000-0x960fffff 64bit pref]
[    0.725854] pci_bus 0000:08: resource 4 [io  0x0000-0x0cf7]
[    0.725856] pci_bus 0000:08: resource 5 [io  0x0d00-0xffff]
[    0.725858] pci_bus 0000:08: resource 6 [mem 0x000a0000-0x000bffff]
[    0.725860] pci_bus 0000:08: resource 7 [mem 0x7c000000-0xfeafffff]
[    0.725898] NET: Registered protocol family 2
[    0.726091] TCP established hash table entries: 16384 (order: 5, 131072 bytes)
[    0.726161] TCP bind hash table entries: 16384 (order: 6, 262144 bytes)
[    0.726250] TCP: Hash tables configured (established 16384 bind 16384)
[    0.726281] TCP: reno registered
[    0.726287] UDP hash table entries: 1024 (order: 3, 32768 bytes)
[    0.726307] UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes)
[    0.726387] NET: Registered protocol family 1
[    0.751130] pci 0000:01:00.0: Boot video device
[    0.751191] PCI: CLS 64 bytes, default 64
[    0.751240] Unpacking initramfs...
[    0.830311] Freeing initrd memory: 3640K (ffff8800378d4000 - ffff880037c62000)
[    0.830354] Simple Boot Flag at 0x44 set to 0x1
[    0.830570] Scanning for low memory corruption every 60 seconds
[    0.830914] audit: initializing netlink socket (disabled)
[    0.830954] type=2000 audit(1386434366.563:1): initialized
[    0.844182] HugeTLB registered 2 MB page size, pre-allocated 0 pages
[    0.845481] zbud: loaded
[    0.845672] VFS: Disk quotas dquot_6.5.2
[    0.845718] Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    0.845899] msgmni has been set to 3860
[    0.846287] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
[    0.846349] io scheduler noop registered
[    0.846351] io scheduler deadline registered
[    0.846381] io scheduler cfq registered (default)
[    0.846596] pcieport 0000:00:01.0: irq 40 for MSI/MSI-X
[    0.847065] pci_hotplug: PCI Hot Plug PCI Core version: 0.5
[    0.847080] pciehp: PCI Express Hot Plug Controller Driver version: 0.4
[    0.847127] vesafb: mode is 640x480x32, linelength=2560, pages=0
[    0.847128] vesafb: scrolling: redraw
[    0.847130] vesafb: Truecolor: size=8:8:8:8, shift=24:16:8:0
[    0.847251] vesafb: framebuffer at 0x91000000, mapped to 0xffffc90010400000, using 1216k, total 1216k
[    0.888867] Console: switching to colour frame buffer device 80x30
[    0.929312] fb0: VESA VGA frame buffer device
[    0.929324] intel_idle: MWAIT substates: 0x1120
[    0.929326] intel_idle: v0.4 model 0x25
[    0.929327] intel_idle: lapic_timer_reliable_states 0xffffffff
[    0.929481] GHES: HEST is not enabled!
[    0.929543] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[    0.930041] Linux agpgart interface v0.103
[    0.930113] i8042: PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:MSS0] at 0x60,0x64 irq 1,12
[    0.930126] i8042: [0] d1 -> i8042 (command)
[    0.930132] i8042: [0] df -> i8042 (parameter)
[    0.930138] i8042: [0] ff -> i8042 (command)
[    0.930198] i8042: [0] 23 <- i8042 (flush, kbd)
[    0.930222] i8042: [0] 20 -> i8042 (command)
[    0.930231] i8042: [0] 67 <- i8042 (return)
[    0.930285] i8042: [0] 20 -> i8042 (command)
[    0.930293] i8042: [0] 67 <- i8042 (return)
[    0.930300] i8042: [0] 60 -> i8042 (command)
[    0.932731] i8042: [0] 76 -> i8042 (parameter)
[    0.935388] i8042: [1] d3 -> i8042 (command)
[    0.938557] i8042: [1] 5a -> i8042 (parameter)
[    0.938565] i8042: [1]      -- i8042 (auxerr)
[    0.940211] i8042: [3] a9 -> i8042 (command)
[    0.940219] i8042: [3] 23 <- i8042 (return)
[    0.940239] i8042: [3] Interrupt 1, without any data
[    0.943719] i8042: [4] 60 -> i8042 (command)
[    0.946731] i8042: [4] 67 -> i8042 (parameter)
[    0.946743] serio: i8042 KBD port at 0x60,0x64 irq 1
[    0.946867] mousedev: PS/2 mouse device common for all mice
[    0.948785] i8042: [6] f2 -> i8042 (kbd-data)
[    0.948796] i8042: [6] 00 <- i8042 (interrupt, 0, 1)
[    0.948854] rtc_cmos 00:05: RTC can wake from S4
[    0.949019] rtc_cmos 00:05: rtc core: registered rtc_cmos as rtc0
[    0.949053] rtc_cmos 00:05: alarms up to one year, y3k, 242 bytes nvram, hpet irqs
[    0.949134] drop_monitor: Initializing network drop monitor service
[    0.949204] TCP: cubic registered
[    0.949326] NET: Registered protocol family 10
[    0.949533] NET: Registered protocol family 17
[    0.949546] Key type dns_resolver registered
[    0.949901] registered taskstats version 1
[    0.950565]   Magic number: 9:392:691
[    0.957376] i8042: [7] 60 -> i8042 (command)
[    0.960548] i8042: [9] 66 -> i8042 (parameter)
[    0.960567] rtc_cmos 00:05: setting system clock to 2013-12-07 16:39:27 UTC (1386434367)
[    0.960628] PM: Hibernation image not present or could not be loaded.
[    0.962636] i8042: [9] 60 -> i8042 (command)
[    0.965649] i8042: [11] 67 -> i8042 (parameter)
[    0.965670] i8042: [11] 5a <- i8042 (interrupt, 1, 0)
[    0.966669] Freeing unused kernel memory: 1160K (ffffffff818cd000 - ffffffff819ef000)
[    0.966672] Write protecting the kernel read-only data: 8192k
[    0.967662] i8042: [12] fa <- i8042 (interrupt, 0, 1)
[    0.968027] i8042: [12] f2 -> i8042 (kbd-data)
[    0.968249] i8042: [12] ab <- i8042 (interrupt, 0, 1)
[    0.969630] Freeing unused kernel memory: 980K (ffff88000150b000 - ffff880001600000)
[    0.970570] Freeing unused kernel memory: 320K (ffff8800017b0000 - ffff880001800000)
[    0.976683] i8042: [14] fa <- i8042 (interrupt, 0, 1)
[    0.978343] i8042: [15] ab <- i8042 (interrupt, 0, 1)
[    0.978930] systemd-udevd[57]: starting version 208
[    0.980041] i8042: [15] 41 <- i8042 (interrupt, 0, 1)
[    0.980057] i8042: [15] f5 -> i8042 (kbd-data)
[    0.981681] i8042: [16] 23 <- i8042 (interrupt, 0, 1)
[    0.982631] [drm] Initialized drm 1.1.0 20060810
[    0.983985] wmi: Mapper loaded
[    0.984709] i8042: [17] fa <- i8042 (interrupt, 0, 1)
[    0.984736] i8042: [17] ed -> i8042 (kbd-data)
[    0.984739] ACPI: Video Device [VGA] (multi-head: yes  rom: no  post: no)
[    0.986132] i8042: [17] 23 <- i8042 (interrupt, 0, 1)
[    0.989692] i8042: [18] fa <- i8042 (interrupt, 0, 1)
[    0.989721] i8042: [18] 00 -> i8042 (kbd-data)
[    0.994055] i8042: [19] fa <- i8042 (interrupt, 0, 1)
[    0.994079] i8042: [19] f3 -> i8042 (kbd-data)
[    1.000465] i8042: [21] fa <- i8042 (interrupt, 0, 1)
[    1.000485] i8042: [21] 00 -> i8042 (kbd-data)
[    1.006166] i8042: [23] fa <- i8042 (interrupt, 0, 1)
[    1.006204] i8042: [23] f4 -> i8042 (kbd-data)
[    1.012989] i8042: [25] fa <- i8042 (interrupt, 0, 1)
[    1.013139] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input1
[    1.020504] i8042: [27] 23 <- i8042 (interrupt, 0, 1)
[    1.026812] acpi device:0b: registered as cooling_device0
[    1.026938] input: Video Bus as /devices/LNXSYSTM:00/device:00/PNP0A08:00/device:09/LNXVIDEO:01/input/input2
[    1.028000] input: Power Button as /devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0e/PNP0C0C:00/input/input3
[    1.028005] ACPI: Power Button [PWRB]
[    1.028046] input: Sleep Button as /devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0e/PNP0C0E:00/input/input4
[    1.028049] ACPI: Sleep Button [SLPB]
[    1.028109] input: Lid Switch as /devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0e/PNP0C0D:00/input/input5
[    1.028143] ACPI: Lid Switch [LID0]
[    1.028204] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input6
[    1.028207] ACPI: Power Button [PWRF]
[    1.032472] checking generic (91000000 130000) vs hw (80000000 10000000)
[    1.032476] checking generic (91000000 130000) vs hw (90000000 2000000)
[    1.032477] fb: conflicting fb hw usage nouveaufb vs VESA VGA - removing generic driver
[    1.032495] Console: switching to colour dummy device 80x25
[    1.033206] nouveau  [  DEVICE][0000:01:00.0] BOOT0  : 0x0a5a00a2
[    1.033210] nouveau  [  DEVICE][0000:01:00.0] Chipset: GT216 (NVA5)
[    1.033212] nouveau  [  DEVICE][0000:01:00.0] Family : NV50
[    1.034746] nouveau  [   VBIOS][0000:01:00.0] checking PRAMIN for image...
[    1.090203] i8042: [48] a3 <- i8042 (interrupt, 0, 1)
[    1.164871] nouveau  [   VBIOS][0000:01:00.0] ... appears to be valid
[    1.164874] nouveau  [   VBIOS][0000:01:00.0] using image from PRAMIN
[    1.165013] nouveau  [   VBIOS][0000:01:00.0] BIT signature found
[    1.165016] nouveau  [   VBIOS][0000:01:00.0] version 70.16.1c.00.21
[    1.186752] nouveau 0000:01:00.0: irq 41 for MSI/MSI-X
[    1.186768] nouveau  [     PMC][0000:01:00.0] MSI interrupts enabled
[    1.186808] nouveau  [     PFB][0000:01:00.0] RAM type: DDR3
[    1.186810] nouveau  [     PFB][0000:01:00.0] RAM size: 1024 MiB
[    1.186812] nouveau  [     PFB][0000:01:00.0]    ZCOMP: 1920 tags
[    1.193268] nouveau  [    VOLT][0000:01:00.0] GPU voltage: 850000uv
[    1.216778] nouveau  [  PTHERM][0000:01:00.0] FAN control: none / external
[    1.216786] nouveau  [  PTHERM][0000:01:00.0] fan management: automatic
[    1.216793] nouveau  [  PTHERM][0000:01:00.0] internal sensor: yes
[    1.216865] nouveau  [     CLK][0000:01:00.0] 03: core 135 MHz shader 270 MHz memory 135 MHz
[    1.216868] nouveau  [     CLK][0000:01:00.0] 07: core 405 MHz shader 810 MHz memory 324 MHz
[    1.216872] nouveau  [     CLK][0000:01:00.0] 0f: core 550 MHz shader 1210 MHz memory 790 MHz
[    1.216915] nouveau  [     CLK][0000:01:00.0] --: core 405 MHz shader 810 MHz memory 324 MHz
[    1.217077] [TTM] Zone  kernel: Available graphics memory: 989576 kiB
[    1.217079] [TTM] Initializing pool allocator
[    1.217088] [TTM] Initializing DMA pool allocator
[    1.217100] nouveau  [     DRM] VRAM: 1024 MiB
[    1.217102] nouveau  [     DRM] GART: 1048576 MiB
[    1.217105] nouveau  [     DRM] TMDS table version 2.0
[    1.217107] nouveau  [     DRM] DCB version 4.0
[    1.217110] nouveau  [     DRM] DCB outp 00: 01010323 00010034
[    1.217112] nouveau  [     DRM] DCB outp 01: 02001300 00000000
[    1.217114] nouveau  [     DRM] DCB outp 02: 02022362 00020010
[    1.217115] nouveau  [     DRM] DCB conn 00: 00000040
[    1.217117] nouveau  [     DRM] DCB conn 01: 00000100
[    1.217119] nouveau  [     DRM] DCB conn 02: 00002261
[    1.262069] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[    1.262071] [drm] No driver support for vblank timestamp query.
[    1.262074] nouveau  [     DRM] ACPI backlight interface available, not registering our own
[    1.312004] nouveau  [     DRM] MM: using COPY for buffer copies
[    1.378061] nouveau  [     DRM] allocated 1366x768 fb: 0x70000, bo ffff880076b12400
[    1.378412] fbcon: nouveaufb (fb0) is primary device
[    1.830558] tsc: Refined TSC clocksource calibration: 2128.004 MHz
[    2.720296] Console: switching to colour frame buffer device 170x48
[    2.720896] nouveau 0000:01:00.0: fb0: nouveaufb frame buffer device
[    2.720898] nouveau 0000:01:00.0: registered panic notifier
[    2.720904] [drm] Initialized nouveau 1.1.1 20120801 for 0000:01:00.0 on minor 0
[    2.781027] SCSI subsystem initialized
[    2.785979] ACPI: bus type USB registered
[    2.786039] usbcore: registered new interface driver usbfs
[    2.786061] usbcore: registered new interface driver hub
[    2.786522] usbcore: registered new device driver usb
[    2.787074] libata version 3.00 loaded.
[    2.788578] ahci 0000:00:1f.2: version 3.0
[    2.788891] ahci 0000:00:1f.2: irq 42 for MSI/MSI-X
[    2.788948] ahci 0000:00:1f.2: SSS flag set, parallel bus scan disabled
[    2.789000] ahci 0000:00:1f.2: AHCI 0001.0300 32 slots 4 ports 3 Gbps 0x13 impl SATA mode
[    2.789007] ahci 0000:00:1f.2: flags: 64bit ncq sntf ilck stag pm led clo pio slum part ems sxs apst 
[    2.789274] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    2.789510] ehci-pci: EHCI PCI platform driver
[    2.803104] scsi0 : ahci
[    2.803592] scsi1 : ahci
[    2.803715] scsi2 : ahci
[    2.804500] scsi3 : ahci
[    2.805114] scsi4 : ahci
[    2.805363] ata1: SATA max UDMA/133 abar m2048@0x99105000 port 0x99105100 irq 42
[    2.805422] ata2: SATA max UDMA/133 abar m2048@0x99105000 port 0x99105180 irq 42
[    2.805425] ata3: DUMMY
[    2.805427] ata4: DUMMY
[    2.805432] ata5: SATA max UDMA/133 abar m2048@0x99105000 port 0x99105300 irq 42
[    2.805663] ehci-pci 0000:00:1a.0: EHCI Host Controller
[    2.805676] ehci-pci 0000:00:1a.0: new USB bus registered, assigned bus number 1
[    2.805696] ehci-pci 0000:00:1a.0: debug port 2
[    2.809687] ehci-pci 0000:00:1a.0: cache line size of 64 is not supported
[    2.809710] ehci-pci 0000:00:1a.0: irq 16, io mem 0x99105c00
[    2.816769] ehci-pci 0000:00:1a.0: USB 2.0 started, EHCI 1.00
[    2.816979] hub 1-0:1.0: USB hub found
[    2.816988] hub 1-0:1.0: 3 ports detected
[    2.817239] ehci-pci 0000:00:1d.0: EHCI Host Controller
[    2.817246] ehci-pci 0000:00:1d.0: new USB bus registered, assigned bus number 2
[    2.817260] ehci-pci 0000:00:1d.0: debug port 2
[    2.821197] ehci-pci 0000:00:1d.0: cache line size of 64 is not supported
[    2.821219] ehci-pci 0000:00:1d.0: irq 23, io mem 0x99105800
[    2.830120] ehci-pci 0000:00:1d.0: USB 2.0 started, EHCI 1.00
[    2.830223] Switched to clocksource tsc
[    2.830611] hub 2-0:1.0: USB hub found
[    2.830632] hub 2-0:1.0: 3 ports detected
[    3.123413] usb 1-1: new high-speed USB device number 2 using ehci-pci
[    3.126695] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[    3.127390] ata1.00: ATA-9: OCZ-VERTEX4, 1.5, max UDMA/133
[    3.127398] ata1.00: 250069680 sectors, multi 16: LBA48 NCQ (depth 31/32), AA
[    3.128201] ata1.00: configured for UDMA/133
[    3.128425] scsi 0:0:0:0: Direct-Access     ATA      OCZ-VERTEX4      1.5  PQ: 0 ANSI: 5
[    3.247461] hub 1-1:1.0: USB hub found
[    3.247625] hub 1-1:1.0: 6 ports detected
[    3.353282] usb 2-1: new high-speed USB device number 2 using ehci-pci
[    3.446596] ata2: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
[    3.459677] ata2.00: ATAPI: Optiarc DVD RW AD-7580S, F820, max UDMA/100
[    3.474591] ata2.00: configured for UDMA/100
[    3.477642] hub 2-1:1.0: USB hub found
[    3.477746] hub 2-1:1.0: 8 ports detected
[    3.477899] scsi 1:0:0:0: CD-ROM            Optiarc  DVD RW AD-7580S  F820 PQ: 0 ANSI: 5
[    3.546651] usb 1-1.4: new full-speed USB device number 3 using ehci-pci
[    3.743314] usb 2-1.3: new high-speed USB device number 3 using ehci-pci
[    3.796436] ata5: SATA link down (SStatus 0 SControl 300)
[    3.800088] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
[    3.800206] sd 0:0:0:0: [sda] Write Protect is off
[    3.800215] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    3.800282] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    3.803451]  sda: sda1 sda2 sda3
[    3.804130] sd 0:0:0:0: [sda] Attached SCSI disk
[    3.804470] sr0: scsi3-mmc drive: 62x/62x writer dvd-ram cd/rw xa/form2 cdda tray
[    3.804474] cdrom: Uniform CD-ROM driver Revision: 3.20
[    3.804735] sr 1:0:0:0: Attached scsi CD-ROM sr0
[    4.195399] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null)
[    4.270424] systemd[1]: systemd 208 running in system mode. (+PAM -LIBWRAP -AUDIT -SELINUX -IMA -SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ)
[    4.271582] systemd[1]: Set hostname to <o2pc>.
[    4.274329] random: systemd urandom read with 72 bits of entropy available
[    4.341107] systemd[1]: Cannot add dependency job for unit display-manager.service, ignoring: Unit display-manager.service failed to load: No such file or directory.
[    4.341540] systemd[1]: Starting Forward Password Requests to Wall Directory Watch.
[    4.341661] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[    4.341689] systemd[1]: Starting Remote File Systems.
[    4.341713] systemd[1]: Reached target Remote File Systems.
[    4.341732] systemd[1]: Starting Device-mapper event daemon FIFOs.
[    4.341791] systemd[1]: Listening on Device-mapper event daemon FIFOs.
[    4.341810] systemd[1]: Starting LVM2 metadata daemon socket.
[    4.341863] systemd[1]: Listening on LVM2 metadata daemon socket.
[    4.341882] systemd[1]: Starting /dev/initctl Compatibility Named Pipe.
[    4.341918] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe.
[    4.341936] systemd[1]: Starting Delayed Shutdown Socket.
[    4.341976] systemd[1]: Listening on Delayed Shutdown Socket.
[    4.342035] systemd[1]: Starting Arbitrary Executable File Formats File System Automount Point.
[    4.342219] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point.
[    4.342248] systemd[1]: Starting Dispatch Password Requests to Console Directory Watch.
[    4.342315] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[    4.342334] systemd[1]: Starting Paths.
[    4.342355] systemd[1]: Reached target Paths.
[    4.342372] systemd[1]: Starting Encrypted Volumes.
[    4.342391] systemd[1]: Reached target Encrypted Volumes.
[    4.342414] systemd[1]: Starting udev Kernel Socket.
[    4.342454] systemd[1]: Listening on udev Kernel Socket.
[    4.342476] systemd[1]: Starting udev Control Socket.
[    4.342518] systemd[1]: Listening on udev Control Socket.
[    4.342540] systemd[1]: Starting Journal Socket.
[    4.342625] systemd[1]: Listening on Journal Socket.
[    4.342666] systemd[1]: Mounting Huge Pages File System...
[    4.344185] systemd[1]: Started Set Up Additional Binary Formats.
[    4.344231] systemd[1]: Starting udev Coldplug all Devices...
[    4.344940] systemd[1]: Mounting Debug File System...
[    4.346524] systemd[1]: Starting Apply Kernel Variables...
[    4.347091] systemd[1]: Starting Setup Virtual Console...
[    4.353930] systemd[1]: Starting Create list of required static device nodes for the current kernel...
[    4.354487] systemd[1]: Mounting POSIX Message Queue File System...
[    4.357367] systemd[1]: Starting Load Kernel Modules...
[    4.357702] systemd[1]: Starting Journal Service...
[    4.358782] systemd[1]: Started Journal Service.
[    4.371482] EXT4-fs (sda2): re-mounted. Opts: discard
[    4.375670] i2c /dev entries driver
[    4.376362] systemd-journald[132]: Vacuuming done, freed 0 bytes
[    4.400629] ACPI Warning: 0x0000000000005000-0x000000000000501f SystemIO conflicts with Region \_SB_.PCI0.SBUS.SMBI 1 (20131115/utaddress-251)
[    4.400637] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
[    4.429366] systemd-udevd[157]: starting version 208
[    4.434254] systemd-journald[132]: Received request to flush runtime journal from PID 1
[    4.527006] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
[    4.533311] ene_ir: chip is 0x3926 - kbver = 0x00, rev = 0xd2
[    4.533313] ene_ir: PLL freq = 1000
[    4.533315] ene_ir: KB3926D or higher detected
[    4.533330] ene_ir: Firmware regs: cc 00
[    4.533331] ene_ir: Hardware features:
[    4.533332] ene_ir: * Uses GPIO 40 for IR demodulated input
[    4.533333] ene_ir: * Uses new style input buffer
[    4.533381] ene_ir: Hardware uses 2 extended buffers:
[    4.533382] ene_ir:   0xfa48 - len : 15
[    4.533384] ene_ir:   0xfa00 - len : 17
[    4.533385] ene_ir: Total buffer len = 40
[    4.538176] ACPI: AC Adapter [ACAD] (on-line)
[    4.555652] snd_hda_intel 0000:00:1b.0: irq 43 for MSI/MSI-X
[    4.557643] ACPI : EC: GPE storm detected(9 GPEs), transactions will use polling mode
[    4.559700] Registered IR keymap rc-rc6-mce
[    4.560655] input: ENE eHome Infrared Remote Receiver as /devices/virtual/rc/rc0/input7
[    4.560923] rc0: ENE eHome Infrared Remote Receiver as /devices/virtual/rc/rc0
[    4.566518] IR RC6 protocol handler initialized
[    4.566814] IR RC5(x) protocol handler initialized
[    4.567212] IR JVC protocol handler initialized
[    4.569200] IR NEC protocol handler initialized
[    4.570794] pps_core: LinuxPPS API ver. 1 registered
[    4.570798] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    4.571733] IR MCE Keyboard/mouse protocol handler initialized
[    4.571838] IR SANYO protocol handler initialized
[    4.571976] input: MCE IR Keyboard/Mouse (ene_ir) as /devices/virtual/input/input8
[    4.572324] PTP clock support registered
[    4.573220] ene_ir: driver has been successfully loaded
[    4.574320] IR Sony protocol handler initialized
[    4.576848] input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input9
[    4.578547] lirc_dev: IR Remote Control driver registered, major 249 
[    4.580568] tg3.c:v3.134 (Sep 16, 2013)
[    4.582159] rc rc0: lirc_dev: driver ir-lirc-codec (ene_ir) registered at minor = 0
[    4.582166] IR LIRC bridge handler initialized
[    4.587881] cfg80211: Calling CRDA to update world regulatory domain
[    4.589851] input: HDA Intel MID Front Headphone as /devices/pci0000:00/0000:00:1b.0/sound/card0/input11
[    4.590134] input: HDA Intel MID Mic as /devices/pci0000:00/0000:00:1b.0/sound/card0/input10
[    4.593140] ACPI Warning: 0x0000000000000428-0x000000000000042f SystemIO conflicts with Region \PMIO 1 (20131115/utaddress-251)
[    4.593148] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
[    4.593154] ACPI Warning: 0x0000000000000540-0x000000000000054f SystemIO conflicts with Region \GPIO 1 (20131115/utaddress-251)
[    4.593158] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
[    4.593160] ACPI Warning: 0x0000000000000530-0x000000000000053f SystemIO conflicts with Region \GPIO 1 (20131115/utaddress-251)
[    4.593165] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
[    4.593167] ACPI Warning: 0x0000000000000500-0x000000000000052f SystemIO conflicts with Region \GPIO 1 (20131115/utaddress-251)
[    4.593171] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
[    4.593173] lpc_ich: Resource conflict(s) found affecting gpio_ich
[    4.593242] libphy: tg3 mdio bus: probed
[    4.593957] hda_intel: Disabling MSI
[    4.593964] hda-intel 0000:01:00.1: Handle VGA-switcheroo audio client
[    4.603384] tg3 0000:07:00.0 eth0: Tigon3 [partno(BCM57780) rev 57780001] (PCI Express) MAC address 70:5a:b6:5f:4c:c4
[    4.603388] tg3 0000:07:00.0 eth0: attached PHY driver [Broadcom BCM57780] (mii_bus:phy_addr=700:01)
[    4.603391] tg3 0000:07:00.0 eth0: RXcsums[1] LinkChgREG[0] MIirq[0] ASF[0] TSOcap[1]
[    4.603393] tg3 0000:07:00.0 eth0: dma_rwctrl[76180000] dma_mask[64-bit]
[    4.618176] microcode: CPU0 sig=0x20652, pf=0x10, revision=0x9
[    4.624032] platform microcode: Direct firmware load failed with error -2
[    4.624038] platform microcode: Falling back to user helper
[    4.631780] ideapad_slidebar: Laptop model 'Lenovo IdeaPad Y550P'
[    4.672633] Adding 4190204k swap on /dev/sda3.  Priority:-1 extents:1 across:4190204k SSFS
[    4.696164] ACPI: Invalid active0 threshold
[    4.701631] ath: phy0: Enable LNA combining
[    4.704418] ath: phy0: ASPM enabled: 0x43
[    4.704422] ath: EEPROM regdomain: 0x6a
[    4.704424] ath: EEPROM indicates we should expect a direct regpair map
[    4.704427] ath: Country alpha2 being used: 00
[    4.704428] ath: Regpair used: 0x6a
[    4.709441] input: Ideapad extra buttons as /devices/platform/VPC2004:00/input/input12
[    4.716028] random: nonblocking pool is initialized
[    4.717198] Bluetooth: Core ver 2.17
[    4.717218] NET: Registered protocol family 31
[    4.717220] Bluetooth: HCI device and connection manager initialized
[    4.717231] Bluetooth: HCI socket layer initialized
[    4.717234] Bluetooth: L2CAP socket layer initialized
[    4.717240] Bluetooth: SCO socket layer initialized
[    4.719068] usbcore: registered new interface driver btusb
[    4.719106] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht'
[    4.719425] ieee80211 phy0: Atheros AR9285 Rev:2 mem=0xffffc90015200000, irq=17
[    4.727739] media: Linux media interface: v0.10
[    4.731785] Linux video capture interface: v2.00
[    4.740364] uvcvideo: Found UVC 1.00 device Lenovo EasyCamera (090c:7371)
[    4.796054] thermal LNXTHERM:00: registered as thermal_zone0
[    4.796059] ACPI: Thermal Zone [TZ00] (51 C)
[    4.801246] iTCO_vendor_support: vendor-support=0
[    4.803147] microcode: CPU1 sig=0x20652, pf=0x10, revision=0x9
[    4.803165] platform microcode: Direct firmware load failed with error -2
[    4.803168] platform microcode: Falling back to user helper
[    4.803903] iTCO_wdt: Intel TCO WatchDog Timer Driver v1.10
[    4.804016] iTCO_wdt: Found a HM55 TCO device (Version=2, TCOBASE=0x0460)
[    4.804188] iTCO_wdt: initialized. heartbeat=30 sec (nowayout=0)
[    4.816117] systemd-udevd[171]: renamed network interface eth0 to enp7s0
[    4.827947] microcode: CPU2 sig=0x20652, pf=0x10, revision=0x9
[    4.827967] platform microcode: Direct firmware load failed with error -2
[    4.827969] platform microcode: Falling back to user helper
[    4.832522] systemd-udevd[174]: renamed network interface wlan0 to wlp6s0
[    4.833834] microcode: CPU3 sig=0x20652, pf=0x10, revision=0x9
[    4.833865] platform microcode: Direct firmware load failed with error -2
[    4.833871] platform microcode: Falling back to user helper
[    4.836900] microcode: Microcode Update Driver: v2.00 <tigran@aivazian.fsnet.co.uk>, Peter Oruba
[    4.859130] kvm: disabled by bios
[    4.919434] input: Lenovo EasyCamera as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0/input/input13
[    4.919720] usbcore: registered new interface driver uvcvideo
[    4.919725] USB Video Class driver (1.1.1)
[    5.269471] ACPI: Battery Slot [BAT1] (battery present)
[    5.275917] input: HDA NVidia HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input17
[    5.276022] input: HDA NVidia HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input16
[    5.276113] input: HDA NVidia HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input15
[    5.276200] input: HDA NVidia HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input14
[    5.336683] IPv6: ADDRCONF(NETDEV_UP): wlp6s0: link is not ready
[    5.339221] tg3 0000:07:00.0: irq 44 for MSI/MSI-X
[    5.360249] IPv6: ADDRCONF(NETDEV_UP): enp7s0: link is not ready
[    5.405775] i8042: [1344] a8 -> i8042 (command)
[    5.405928] input: PC Speaker as /devices/platform/pcspkr/input/input18
[    5.406262] input: IdeaPad Slidebar as /devices/platform/ideapad_slidebar/input/input19
[    5.603395] tg3 0000:07:00.0 enp7s0: Link is down


On 12/07/2013 08:02 PM, Dmitry Torokhov wrote:
> On Sat, Dec 07, 2013 at 05:47:09PM +0400, Andrey Moiseev wrote:
>> I inserted a printk into ps2_handle_response(struct ps2dev *ps2dev,
>> unsigned char data) in "drivers/input/serio/libps2.c" and other
>> functions in the file.
>> It really eats scancodes from the keyboard, as I see (0x23 is the 'H'
>> press scancode). Seems like the scancodes are mixed with reasonable
>> values. Is it a bug in the controller? 
> 
> Not necessarily... Can you boot with i8042.debug=1 and post full dmesg?
> 
> Thanks.
> 


^ permalink raw reply

* Re: [PATCH] Input: serio - fix sysfs layout
From: Greg Kroah-Hartman @ 2013-12-07 17:12 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: linux-input, Thomas Hellstrom, linux-kernel
In-Reply-To: <20131207154116.GA9902@core.coreip.homeip.net>

On Sat, Dec 07, 2013 at 07:41:19AM -0800, Dmitry Torokhov wrote:
> Restore previous layout of sysfs attributes that was broken by commit
> 3778a2129bcce84f684cc0017ed20d2524afd289 (input: serio: remove bus usage of
> dev_attrs) which moved all serio device attributes into 'id' group, when
> only 'type', 'proto', 'id', and 'extra' should be in 'id' group and the
> rest of attributes should be attached directly to the device.

Ick, sorry about that.

> Reported-by: Thomas Hellstrom <thellstrom@vmware.com>
> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

^ permalink raw reply

* Sony DualShock4 - basic functions work, but looking to improve support
From: simon @ 2013-12-07 17:52 UTC (permalink / raw)
  To: Linux Input; +Cc: Antonio Ospite

[-- Attachment #1: Type: text/plain, Size: 507 bytes --]

Hi all,
I wanted to report that basic functions of the DualShock4 work under Linux
(USB connected), but I'd like to work on it to get everything working -
like we have on the DualShock3.

Attached are a couple of logs and the report descriptor.

Haptic/Rumble does not work, even though I have my machine patched to make
DualShock3 work.

If we look at the hidraw stream there's a lot (64 bytes) more there!
--
$ hexdump -v -e '64/1 "%02x " "\n"' < /dev/hidraw0
--

Anyone here want to collaborate?
Simon



[-- Attachment #2: lsusb_vv.txt --]
[-- Type: text/plain, Size: 2355 bytes --]


Bus 003 Device 002: ID 054c:05c4 Sony Corp. 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x054c Sony Corp.
  idProduct          0x05c4 
  bcdDevice            1.00
  iManufacturer           1 Sony Computer Entertainment
  iProduct                2 Wireless Controller
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           41
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xc0
      Self Powered
    MaxPower              500mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 No Subclass
      bInterfaceProtocol      0 None
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     467
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               5
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               5
Device Status:     0x0000
  (Bus Powered)

[-- Attachment #3: des.code --]
[-- Type: application/octet-stream, Size: 14490 bytes --]

0x05, 0x01,         /*  Usage Page (Desktop),               */
0x09, 0x05,         /*  Usage (Gamepad),                    */
0xA1, 0x01,         /*  Collection (Application),           */
0x85, 0x01,         /*      Report ID (1),                  */
0x09, 0x30,         /*      Usage (X),                      */
0x09, 0x31,         /*      Usage (Y),                      */
0x09, 0x32,         /*      Usage (Z),                      */
0x09, 0x35,         /*      Usage (Rz),                     */
0x15, 0x00,         /*      Logical Minimum (0),            */
0x26, 0xFF, 0x00,   /*      Logical Maximum (255),          */
0x75, 0x08,         /*      Report Size (8),                */
0x95, 0x04,         /*      Report Count (4),               */
0x81, 0x02,         /*      Input (Variable),               */
0x09, 0x39,         /*      Usage (Hat Switch),             */
0x15, 0x00,         /*      Logical Minimum (0),            */
0x25, 0x07,         /*      Logical Maximum (7),            */
0x35, 0x00,         /*      Physical Minimum (0),           */
0x46, 0x3B, 0x01,   /*      Physical Maximum (315),         */
0x65, 0x14,         /*      Unit (Degrees),                 */
0x75, 0x04,         /*      Report Size (4),                */
0x95, 0x01,         /*      Report Count (1),               */
0x81, 0x42,         /*      Input (Variable, Null State),   */
0x65, 0x00,         /*      Unit,                           */
0x05, 0x09,         /*      Usage Page (Button),            */
0x19, 0x01,         /*      Usage Minimum (01h),            */
0x29, 0x0E,         /*      Usage Maximum (0Eh),            */
0x15, 0x00,         /*      Logical Minimum (0),            */
0x25, 0x01,         /*      Logical Maximum (1),            */
0x75, 0x01,         /*      Report Size (1),                */
0x95, 0x0E,         /*      Report Count (14),              */
0x81, 0x02,         /*      Input (Variable),               */
0x06, 0x00, 0xFF,   /*      Usage Page (FF00h),             */
0x09, 0x20,         /*      Usage (20h),                    */
0x75, 0x06,         /*      Report Size (6),                */
0x95, 0x01,         /*      Report Count (1),               */
0x15, 0x00,         /*      Logical Minimum (0),            */
0x25, 0x7F,         /*      Logical Maximum (127),          */
0x81, 0x02,         /*      Input (Variable),               */
0x05, 0x01,         /*      Usage Page (Desktop),           */
0x09, 0x33,         /*      Usage (Rx),                     */
0x09, 0x34,         /*      Usage (Ry),                     */
0x15, 0x00,         /*      Logical Minimum (0),            */
0x26, 0xFF, 0x00,   /*      Logical Maximum (255),          */
0x75, 0x08,         /*      Report Size (8),                */
0x95, 0x02,         /*      Report Count (2),               */
0x81, 0x02,         /*      Input (Variable),               */
0x06, 0x00, 0xFF,   /*      Usage Page (FF00h),             */
0x09, 0x21,         /*      Usage (21h),                    */
0x95, 0x36,         /*      Report Count (54),              */
0x81, 0x02,         /*      Input (Variable),               */
0x85, 0x05,         /*      Report ID (5),                  */
0x09, 0x22,         /*      Usage (22h),                    */
0x95, 0x1F,         /*      Report Count (31),              */
0x91, 0x02,         /*      Output (Variable),              */
0x85, 0x04,         /*      Report ID (4),                  */
0x09, 0x23,         /*      Usage (23h),                    */
0x95, 0x24,         /*      Report Count (36),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x02,         /*      Report ID (2),                  */
0x09, 0x24,         /*      Usage (24h),                    */
0x95, 0x24,         /*      Report Count (36),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x08,         /*      Report ID (8),                  */
0x09, 0x25,         /*      Usage (25h),                    */
0x95, 0x03,         /*      Report Count (3),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x10,         /*      Report ID (16),                 */
0x09, 0x26,         /*      Usage (26h),                    */
0x95, 0x04,         /*      Report Count (4),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x11,         /*      Report ID (17),                 */
0x09, 0x27,         /*      Usage (27h),                    */
0x95, 0x02,         /*      Report Count (2),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x12,         /*      Report ID (18),                 */
0x06, 0x02, 0xFF,   /*      Usage Page (FF02h),             */
0x09, 0x21,         /*      Usage (21h),                    */
0x95, 0x0F,         /*      Report Count (15),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x13,         /*      Report ID (19),                 */
0x09, 0x22,         /*      Usage (22h),                    */
0x95, 0x16,         /*      Report Count (22),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x14,         /*      Report ID (20),                 */
0x06, 0x05, 0xFF,   /*      Usage Page (FF05h),             */
0x09, 0x20,         /*      Usage (20h),                    */
0x95, 0x10,         /*      Report Count (16),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x15,         /*      Report ID (21),                 */
0x09, 0x21,         /*      Usage (21h),                    */
0x95, 0x2C,         /*      Report Count (44),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x06, 0x80, 0xFF,   /*      Usage Page (FF80h),             */
0x85, 0x80,         /*      Report ID (128),                */
0x09, 0x20,         /*      Usage (20h),                    */
0x95, 0x06,         /*      Report Count (6),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x81,         /*      Report ID (129),                */
0x09, 0x21,         /*      Usage (21h),                    */
0x95, 0x06,         /*      Report Count (6),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x82,         /*      Report ID (130),                */
0x09, 0x22,         /*      Usage (22h),                    */
0x95, 0x05,         /*      Report Count (5),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x83,         /*      Report ID (131),                */
0x09, 0x23,         /*      Usage (23h),                    */
0x95, 0x01,         /*      Report Count (1),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x84,         /*      Report ID (132),                */
0x09, 0x24,         /*      Usage (24h),                    */
0x95, 0x04,         /*      Report Count (4),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x85,         /*      Report ID (133),                */
0x09, 0x25,         /*      Usage (25h),                    */
0x95, 0x06,         /*      Report Count (6),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x86,         /*      Report ID (134),                */
0x09, 0x26,         /*      Usage (26h),                    */
0x95, 0x06,         /*      Report Count (6),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x87,         /*      Report ID (135),                */
0x09, 0x27,         /*      Usage (27h),                    */
0x95, 0x23,         /*      Report Count (35),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x88,         /*      Report ID (136),                */
0x09, 0x28,         /*      Usage (28h),                    */
0x95, 0x22,         /*      Report Count (34),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x89,         /*      Report ID (137),                */
0x09, 0x29,         /*      Usage (29h),                    */
0x95, 0x02,         /*      Report Count (2),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x90,         /*      Report ID (144),                */
0x09, 0x30,         /*      Usage (30h),                    */
0x95, 0x05,         /*      Report Count (5),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x91,         /*      Report ID (145),                */
0x09, 0x31,         /*      Usage (31h),                    */
0x95, 0x03,         /*      Report Count (3),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x92,         /*      Report ID (146),                */
0x09, 0x32,         /*      Usage (32h),                    */
0x95, 0x03,         /*      Report Count (3),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0x93,         /*      Report ID (147),                */
0x09, 0x33,         /*      Usage (33h),                    */
0x95, 0x0C,         /*      Report Count (12),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xA0,         /*      Report ID (160),                */
0x09, 0x40,         /*      Usage (40h),                    */
0x95, 0x06,         /*      Report Count (6),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xA1,         /*      Report ID (161),                */
0x09, 0x41,         /*      Usage (41h),                    */
0x95, 0x01,         /*      Report Count (1),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xA2,         /*      Report ID (162),                */
0x09, 0x42,         /*      Usage (42h),                    */
0x95, 0x01,         /*      Report Count (1),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xA3,         /*      Report ID (163),                */
0x09, 0x43,         /*      Usage (43h),                    */
0x95, 0x30,         /*      Report Count (48),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xA4,         /*      Report ID (164),                */
0x09, 0x44,         /*      Usage (44h),                    */
0x95, 0x0D,         /*      Report Count (13),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xA5,         /*      Report ID (165),                */
0x09, 0x45,         /*      Usage (45h),                    */
0x95, 0x15,         /*      Report Count (21),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xA6,         /*      Report ID (166),                */
0x09, 0x46,         /*      Usage (46h),                    */
0x95, 0x15,         /*      Report Count (21),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xF0,         /*      Report ID (240),                */
0x09, 0x47,         /*      Usage (47h),                    */
0x95, 0x3F,         /*      Report Count (63),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xF1,         /*      Report ID (241),                */
0x09, 0x48,         /*      Usage (48h),                    */
0x95, 0x3F,         /*      Report Count (63),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xF2,         /*      Report ID (242),                */
0x09, 0x49,         /*      Usage (49h),                    */
0x95, 0x0F,         /*      Report Count (15),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xA7,         /*      Report ID (167),                */
0x09, 0x4A,         /*      Usage (4Ah),                    */
0x95, 0x01,         /*      Report Count (1),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xA8,         /*      Report ID (168),                */
0x09, 0x4B,         /*      Usage (4Bh),                    */
0x95, 0x01,         /*      Report Count (1),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xA9,         /*      Report ID (169),                */
0x09, 0x4C,         /*      Usage (4Ch),                    */
0x95, 0x08,         /*      Report Count (8),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xAA,         /*      Report ID (170),                */
0x09, 0x4E,         /*      Usage (4Eh),                    */
0x95, 0x01,         /*      Report Count (1),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xAB,         /*      Report ID (171),                */
0x09, 0x4F,         /*      Usage (4Fh),                    */
0x95, 0x39,         /*      Report Count (57),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xAC,         /*      Report ID (172),                */
0x09, 0x50,         /*      Usage (50h),                    */
0x95, 0x39,         /*      Report Count (57),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xAD,         /*      Report ID (173),                */
0x09, 0x51,         /*      Usage (51h),                    */
0x95, 0x0B,         /*      Report Count (11),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xAE,         /*      Report ID (174),                */
0x09, 0x52,         /*      Usage (52h),                    */
0x95, 0x01,         /*      Report Count (1),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xAF,         /*      Report ID (175),                */
0x09, 0x53,         /*      Usage (53h),                    */
0x95, 0x02,         /*      Report Count (2),               */
0xB1, 0x02,         /*      Feature (Variable),             */
0x85, 0xB0,         /*      Report ID (176),                */
0x09, 0x54,         /*      Usage (54h),                    */
0x95, 0x3F,         /*      Report Count (63),              */
0xB1, 0x02,         /*      Feature (Variable),             */
0xC0                /*  End Collection                      */

[-- Attachment #4: des.bin --]
[-- Type: application/octet-stream, Size: 467 bytes --]

[-- Attachment #5: jstest.txt --]
[-- Type: text/plain, Size: 1021 bytes --]

Driver version is 2.1.0.
Joystick (Sony Computer Entertainment Wireless Controller) has 8 axes (X, Y, Z, Rx, Ry, Rz, Hat0X, Hat0Y)
and 14 buttons (BtnX, BtnY, BtnZ, BtnTL, BtnTR, BtnTL2, BtnTR2, BtnSelect, BtnStart, BtnMode, BtnThumbL, BtnThumbR, ?, ?).
Testing ... (interrupt to exit)
Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3:off  4:off  5:off  6:off  7:off  8:off  9:off 10:off 11:off 12:off 13:off

Axes:  
0:     0  L-Thumbstick X (left -ve)
1:     0  L-Thumbstick Y (up -ve)
2:     0  R-Thumbstick X (left -ve)
3:     0  L-Trigger (released -ve)
4:     0  R-Trigger (released -ve)
5:     0  R-Thumbstick Y (up -ve)
6:     0  D-Pad X (left -ve)
7:     0  D-Pad Y (up -ve)
Buttons:  
0:off  Square
1:off  Cross
2:off  Circle
3:off  Triangle
4:off  L1 (Shoulder)
5:off  R1 (Shoulder)
6:off  L2 (Trigger) - also axis
7:off  R2 (Trigger) - also axis
8:off  Share
9:off  Options
10:off L-Thumbstick
11:off R-Thumbstick
12:off PS
13:off TouchPad

[-- Attachment #6: syslog.txt --]
[-- Type: text/plain, Size: 1216 bytes --]

Dec  7 09:59:31 womble kernel: [  190.548071] usb 3-2: new full-speed USB device number 2 using uhci_hcd
Dec  7 09:59:31 womble kernel: [  190.723988] usb 3-2: New USB device found, idVendor=054c, idProduct=05c4
Dec  7 09:59:31 womble kernel: [  190.724001] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Dec  7 09:59:31 womble kernel: [  190.724039] usb 3-2: Product: Wireless Controller
Dec  7 09:59:31 womble kernel: [  190.724049] usb 3-2: Manufacturer: Sony Computer Entertainment
Dec  7 09:59:32 womble mtp-probe: checking bus 3, device 2: "/sys/devices/pci0000:00/0000:00:1d.1/usb3/3-2"
Dec  7 09:59:32 womble mtp-probe: bus: 3, device: 2 was not an MTP device
Dec  7 09:59:32 womble kernel: [  191.302128] usbcore: registered new interface driver usbhid
Dec  7 09:59:32 womble kernel: [  191.302135] usbhid: USB HID core driver
Dec  7 09:59:32 womble kernel: [  191.397030] input: Sony Computer Entertainment Wireless Controller as /devices/pci0000:00/0000:00:1d.1/usb3/3-2/3-2:1.0/input/input7
Dec  7 09:59:32 womble kernel: [  191.397438] hid-generic 0003:054C:05C4.0001: input,hidraw0: USB HID v1.11 Gamepad [Sony Computer Entertainment Wireless Controller] on usb-0000:00:1d.1-2/input0

^ permalink raw reply

* [MailServer Notification]Attachment Blocking Notification
From: ExchangeNTTrendMicro @ 2013-12-07 17:53 UTC (permalink / raw)
  To: linux-input; +Cc: ospite

The des.bin has been blocked,
and Replace has been taken on 12/7/2013 9:52:56 AM.
Message details:
Server:WACOM-NT10
Sender: simon@mungewell.org;
Recipient:linux-input@vger.kernel.org;ospite@studenti.unina.it;
Subject:Sony DualShock4 - basic functions work, but looking to improve support
Attachment name:des.bin

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox