All of lore.kernel.org
 help / color / mirror / Atom feed
From: Len Brown <lenb@kernel.org>
To: Matthew Garrett <mjg59@srcf.ucam.org>
Cc: "Brian S. Julin" <bri@abrij.org>,
	linux-acpi@vger.kernel.org,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	greg@kroah.com
Subject: (unknown)
Date: Fri, 09 Jan 2009 17:34:08 -0500 (EST)	[thread overview]
Message-ID: <alpine.LFD.2.00.0901091731540.20020@localhost.localdomain> (raw)
In-Reply-To: <alpine.LFD.2.00.0901090112190.4091@localhost.localdomain>

From: Matthew Garrett <mjg59@srcf.ucam.org>

Matthew,
Here is the version in my tree -- refreshed to live in 
drivers/platform/x86/.

cheers,
-Len

oqo-wmi provides a WMI-based interface to backlight and rfkill control on
model 2 OQO devices. It was originally written by Brian Julin
(<bri@abrij.org>) - I've ported it to the rfkill layer and tidied it up a
little.

Signed-off-by: Matthew Garrett <mjg@redhat.com>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 MAINTAINERS                    |    5 +
 drivers/platform/x86/Kconfig   |   13 +
 drivers/platform/x86/Makefile  |    1 +
 drivers/platform/x86/oqo-wmi.c |  941 ++++++++++++++++++++++++++++++++++++++++
 4 files changed, 960 insertions(+), 0 deletions(-)
 create mode 100644 drivers/platform/x86/oqo-wmi.c

diff --git a/MAINTAINERS b/MAINTAINERS
index 57e0309..fef4adb 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3239,6 +3239,11 @@ M:	robert.richter@amd.com
 L:	oprofile-list@lists.sf.net
 S:	Maintained
 
+OQO WMI EXTRAS DRIVER
+P:	Matthew Garrett
+M:	mjg59@srcf.ucam.org
+S:	Maintained
+
 ORACLE CLUSTER FILESYSTEM 2 (OCFS2)
 P:	Mark Fasheh
 M:	mfasheh@suse.com
diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig
index 9e8f948..017fb81 100644
--- a/drivers/platform/x86/Kconfig
+++ b/drivers/platform/x86/Kconfig
@@ -132,6 +132,19 @@ config MSI_LAPTOP
 
 	  If you have an MSI S270 laptop, say Y or M here.
 
+config OQO_WMI
+       tristate "OQO WMI extras"
+       depends on ACPI_WMI
+       depends on INPUT
+       depends on RFKILL
+       depends on BACKLIGHT_CLASS_DEVICE
+       help
+         Say Y here if you want to support rfkill and backlight control on
+         series 2 OQO handheld devices.
+
+         To compile this driver as a module, choose M here: the module will
+         be called oqo-wmi.
+
 config PANASONIC_LAPTOP
 	tristate "Panasonic Laptop Extras"
 	depends on INPUT && ACPI
diff --git a/drivers/platform/x86/Makefile b/drivers/platform/x86/Makefile
index e290651..37ac07f 100644
--- a/drivers/platform/x86/Makefile
+++ b/drivers/platform/x86/Makefile
@@ -13,6 +13,7 @@ obj-$(CONFIG_TC1100_WMI)	+= tc1100-wmi.o
 obj-$(CONFIG_SONY_LAPTOP)	+= sony-laptop.o
 obj-$(CONFIG_THINKPAD_ACPI)	+= thinkpad_acpi.o
 obj-$(CONFIG_FUJITSU_LAPTOP)	+= fujitsu-laptop.o
+obj-$(CONFIG_OQO_WMI)		+= oqo-wmi.o
 obj-$(CONFIG_PANASONIC_LAPTOP)	+= panasonic-laptop.o
 obj-$(CONFIG_INTEL_MENLOW)	+= intel_menlow.o
 obj-$(CONFIG_ACPI_WMI)		+= wmi.o
diff --git a/drivers/platform/x86/oqo-wmi.c b/drivers/platform/x86/oqo-wmi.c
new file mode 100644
index 0000000..940e605
--- /dev/null
+++ b/drivers/platform/x86/oqo-wmi.c
@@ -0,0 +1,941 @@
+/*
+ *  OQO WMI UPMC Extras
+ *
+ *  Copyright (C) 2008 Brian S. Julin <bri@abrij.org>
+ *
+ *  Based on acer-wmi:
+ *    Copyright (C) 2007-2008	Carlos Corbacho <cathectic@gmail.com>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+/*
+ * NOTE: You need to turn SMI on in BIOS (if dmidecode works, you already have)
+ * NOTE: acpi-wmi support mandatory
+ * NOTE: backlight and inputdev support a must, ifdefs will come later
+ */
+
+/*
+ *
+ *  0.3: added WLAN enable switch, restore settings on unload,
+ *       resume/suspend handling
+ *  0.2: Still not production-ready, but added ambient light sensor,
+ *       backlight, and it prints the unit serial number to dmesg (do
+ *       not know where to make that available to userspace yet.)
+ *  0.1: This is a first cut.  Plan to reboot after playing with this.
+ */
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/types.h>
+#include <linux/dmi.h>
+#include <linux/backlight.h>
+#include <linux/leds.h>
+#include <linux/platform_device.h>
+#include <linux/acpi.h>
+#include <linux/i8042.h>
+#include <linux/input-polldev.h>
+#include <linux/rfkill.h>
+
+#include <acpi/acpi_drivers.h>
+
+MODULE_AUTHOR("Brian Julin");
+MODULE_DESCRIPTION("OQO UPMC WMI Extras Driver");
+MODULE_LICENSE("GPL");
+
+#define OQO_LOGPREFIX "oqo-wmi: "
+#define OQO_ERR KERN_ERR OQO_LOGPREFIX
+#define OQO_NOTICE KERN_NOTICE OQO_LOGPREFIX
+#define OQO_INFO KERN_INFO OQO_LOGPREFIX
+
+#define OQO_KINE_MAXTRY 3
+
+/* Store defined devices globally since we only have one instance. */
+static struct platform_device *oqo_platform_device;
+static struct backlight_device *oqo_backlight_device;
+static struct rfkill *oqo_rfkill;
+static struct input_dev *oqo_kine;
+static struct input_polled_dev *oqo_kine_polled;
+
+/* Likewise store current and original settings globally. */
+struct oqo_settings {
+	int lid_wakes;		/* not sure if ACPI handles/needs help here */
+	int kine_itvl;
+	int bl_bright;
+};
+
+static struct oqo_settings orig, curr;
+
+/* Some of this code is left like in acer-wmi so we can add the older
+   Model 01 and any future models more easily, but we should not expect
+   it to be as complicated as Acer given each model is a leap rather than
+   a subtle variant on the last, so we aren't using "quirks" perse.  Not
+   sure if there is any real difference for our purposes between the o2
+   and e2.
+*/
+struct oqo_model {
+	const char *model;
+	u16 model_subs;
+};
+#define MODEL_SUB_OQO_O2_SMB0 3
+
+static struct oqo_model oqo_models[] = {
+	{
+	 .model = "Model 2",
+	 .model_subs = MODEL_SUB_OQO_O2_SMB0,
+	 },
+	{}
+};
+
+static struct oqo_model *model;
+
+static int force;
+module_param(force, bool, 0644);
+MODULE_PARM_DESC(force, "Force WMI detection even if DMI detection failed");
+
+/*
+ * OQO Model 2 SMBUS registers
+ * We are just using WMI to read the Cx700 smbus, to share the
+ * ACPI mutex (what may also eventually work in VMs/win32)
+ * Using i2c-viapro directly could interfere with PM.
+ */
+
+#define OQO_O2_SMB0_WWAN_DSBL_ADDR	0x19
+#define OQO_O2_SMB0_WWAN_DSBL_MASK	0x02
+#define OQO_O2_SMB0_LUMIN_LO		0x20
+#define OQO_O2_SMB0_LUMIN_HI		0x21
+#define OQO_O2_SMB0_BL_LO		0x26
+#define OQO_O2_SMB0_BL_HI		0x27
+#define OQO_O2_SMB0_ACCEL_POLL_ITVL	0x45
+#define OQO_O2_SMB0_ACCEL_XLO		0x50
+#define OQO_O2_SMB0_ACCEL_XHI		0x51
+#define OQO_O2_SMB0_ACCEL_YLO		0x52
+#define OQO_O2_SMB0_ACCEL_YHI		0x53
+#define OQO_O2_SMB0_ACCEL_ZLO		0x54
+#define OQO_O2_SMB0_ACCEL_ZHI		0x55
+/* These may be handled by ACPI not sure yet. */
+#define OQO_O2_SMB0_LID_WAKES_ADDR	0x58
+#define OQO_O2_SMB0_LID_WAKES_MASK	0x08
+
+#define OQO_O2_SMB0_SERIAL_START	0x70
+#define OQO_O2_SMB0_SERIAL_LEN		11
+
+static char oqo_sn[OQO_O2_SMB0_SERIAL_LEN + 1];
+
+/* Other addresses I have noticed used on the 02 SMBUS (from DSDT and whatnot)
+ *
+ * These are not used because the linux ACPI drivers work fine on them
+ *
+ * 0x0A -- processor sleep mode?
+ * 0x0C -- ACPI events, probably clears when read.
+ * 0x30 -- thermal zone
+ *      There is something going on at 0x31 through 0x34 which is likely
+ *      also thermal.  The values change over time.  Have not figured that
+ *      out yet.
+ * 0x41 -- AC detect
+ * 0x42 -- LID button   ACTUALLY THIS DOES NOT WORK AND NEEDS TO BE FIXED
+ * 0xa0 and 0xa1 -- battery something (presence? state?)
+ * 0xa4 to 0xcf -- battery info (0xc8-0xca contains "OQO")
+ * 0xd4 to 0xef -- other battery stats
+ */
+
+/*
+ * OQO method GUIDs
+ */
+#define OQO_O2_AMW0_GUID "ABBC0F6D-8EA1-11D1-00A0-C90629100000"
+MODULE_ALIAS("wmi:ABBC0F6D-8EA1-11D1-00A0-C90629100000");
+
+/*
+ * Interface type flags
+ */
+enum interface_type {
+	OQO_O2_AMW0,
+};
+
+/* Each low-level interface must define at least some of the following */
+struct wmi_interface {
+	/* The WMI device type */
+	u32 type;
+};
+
+static struct wmi_interface AMW0_interface = {
+	.type = OQO_O2_AMW0,
+};
+
+/* The detected/chosen interface */
+static struct wmi_interface *interface;
+
+static int dmi_matched(const struct dmi_system_id *dmi)
+{
+	model = dmi->driver_data;
+	/*
+	 * Detect which ACPI-WMI interface we're using.
+	 */
+	if (wmi_has_guid(OQO_O2_AMW0_GUID))
+		interface = &AMW0_interface;
+
+	return 0;
+}
+
+static struct dmi_system_id oqo_dmis[] = {
+	{
+	 .callback = dmi_matched,
+	 .ident = "OQO 02",
+	 .matches = {
+		     DMI_MATCH(DMI_SYS_VENDOR, "OQO Inc."),
+		     DMI_MATCH(DMI_PRODUCT_NAME, "OQO Model 2"),
+		     },
+	 .driver_data = oqo_models + 0,
+	 },
+	{}
+};
+
+/*
+ * AMW0 (V1) interface on OQO Model 2
+ *
+ * wmba: has four functions selected by int arg 1.  arg2 is 3 byte buffer.
+ *       1: performs GETB method on the SMBUS using bytes 0, 1 of Arg2
+ *          returns a buffer object containing a single byte
+ *       2: performs SETB on SMBUS using bytes 0, 1, 2 of Arg2
+ *          returns 0 as int.
+ *       3: dumps 256 values into a given SMBUS register (not used here)
+ *          returns 0 as int.
+ *       4: puts byte 0 of arg2 into some sort of busy flag.  Some ACPI
+ *          funcs check this (==0) to decide if SMBUS operations are safe.
+ *          returns 0 as int.
+ * wmbb: simply returns the busy flag set by wmba #4
+ */
+static acpi_status oqo_smbus_getb(u8 addr, u8 *result)
+{
+	struct acpi_buffer input, res;
+	acpi_status status;
+	union acpi_object *obj;
+	u32 arg2;
+
+	input.length = 4;
+	input.pointer = &arg2;
+	res.length = ACPI_ALLOCATE_BUFFER;
+	res.pointer = NULL;
+
+	arg2 = addr;
+	arg2 <<= 8;
+	arg2 |= 0x12;		/* HOSTCMD */
+
+	status = wmi_evaluate_method(OQO_O2_AMW0_GUID, 1, 1, &input, &res);
+
+	if (status != AE_OK)
+		return status;
+
+	obj = (union acpi_object *)res.pointer;
+	if (!obj)
+		return AE_NULL_OBJECT;
+
+	if (obj->type != ACPI_TYPE_BUFFER
+	    || obj->buffer.length != 1 || obj->buffer.pointer == NULL) {
+		kfree(obj);
+		return AE_TYPE;
+	}
+	*result = ((u8 *) (obj->buffer.pointer))[0];
+	kfree(obj);
+	return status;
+}
+
+static acpi_status oqo_smbus_setb(u8 addr, u8 val)
+{
+	struct acpi_buffer input, res;
+	acpi_status status;
+	union acpi_object *obj;
+	u32 arg2;
+
+	input.length = 4;
+	input.pointer = &arg2;
+	res.length = ACPI_ALLOCATE_BUFFER;
+	res.pointer = NULL;
+
+	arg2 = val;
+	arg2 <<= 8;
+	arg2 |= addr;
+	arg2 <<= 8;
+	arg2 |= 0x12;		/* HOSTCMD */
+
+	status = wmi_evaluate_method(OQO_O2_AMW0_GUID, 1, 2, &input, &res);
+
+	if (status != AE_OK)
+		return status;
+
+	obj = (union acpi_object *)res.pointer;
+	if (!obj)
+		return AE_NULL_OBJECT;
+
+	if (obj->type != ACPI_TYPE_INTEGER) {
+		kfree(obj);
+		return AE_TYPE;
+	}
+	kfree(obj);
+	return status;
+}
+
+/*
+ * We assume we are the only one using this ...ahem... "lock" on
+ * the SMBUS because it would be pathetically noneffective otherwise.
+ *
+ * Nonzero silly_lock will keep certain ACPI routines away from the
+ * SMBUS (if they aren't already on it when you call it.)  Zero
+ *  silly_lock will let them back on
+ *
+ * This is probably useful before sleeping the system, and one
+ * waits until any ACPI funcs would have long finished before
+ * proceeding.  It seems harmless enough and will work to wrap
+ * more accesses with it.
+ */
+static acpi_status oqo_lock_smbus(int silly_lock)
+{
+	struct acpi_buffer input, res;
+	acpi_status status;
+	union acpi_object *obj;
+	u32 arg2;
+
+	input.length = 4;
+	input.pointer = &arg2;
+	res.length = ACPI_ALLOCATE_BUFFER;
+	res.pointer = NULL;
+
+	arg2 = !!silly_lock;
+
+	status = wmi_evaluate_method(OQO_O2_AMW0_GUID, 1, 4, &input, &res);
+
+	if (status != AE_OK)
+		return status;
+
+	obj = (union acpi_object *)res.pointer;
+	if (!obj)
+		return AE_NULL_OBJECT;
+
+	if (obj->type != ACPI_TYPE_INTEGER) {
+		kfree(obj);
+		return AE_TYPE;
+	}
+	kfree(obj);
+	return status;
+}
+
+static int smread_s16(u8 hi_addr, u8 lo_addr)
+{
+	s16 ret = -1;
+	acpi_status status;
+	u8 r;
+
+	/* Keep some ACPI routines off the SMBUS */
+	status = oqo_lock_smbus(1);
+	if (ACPI_FAILURE(status))
+		goto skip;
+
+	status = oqo_smbus_getb(hi_addr, &r);
+	if (ACPI_FAILURE(status))
+		goto skip;
+
+	ret = r;
+	ret <<= 8;
+
+	status = oqo_smbus_getb(lo_addr, &r);
+	if (ACPI_FAILURE(status)) {
+		ret = -1;
+		goto skip;
+	}
+
+	ret |= r;
+	ret &= 0x7fff;
+skip:
+	/* Let ACPI routines back on the SMBUS */
+	status = oqo_lock_smbus(0);
+	if (ACPI_FAILURE(status))
+		return -1;
+	return (int)ret;
+}
+
+static int smwrite_s16(u8 hi_addr, u8 lo_addr, s16 val)
+{
+	acpi_status status;
+	u8 r;
+	int ret = -1;
+
+	status = oqo_lock_smbus(1);
+	if (ACPI_FAILURE(status))
+		goto skip;
+
+	r = (val >> 8) & 0x7f;
+	status = oqo_smbus_setb(hi_addr, r);
+	if (ACPI_FAILURE(status))
+		goto skip;
+
+	r = val & 0xff;
+	status = oqo_smbus_setb(lo_addr, r);
+	if (ACPI_FAILURE(status))
+		goto skip;
+
+	ret = 0;
+skip:
+	status = oqo_lock_smbus(0);
+	if (ACPI_FAILURE(status))
+		return -1;
+	return ret;
+}
+
+static int smread_u8(u8 addr)
+{
+	int ret = -1;
+	acpi_status status;
+	u8 r;
+
+	status = oqo_lock_smbus(1);
+	if (ACPI_FAILURE(status))
+		goto skip;
+
+	status = oqo_smbus_getb(addr, &r);
+	if (ACPI_FAILURE(status))
+		goto skip;
+
+	ret = r;
+skip:
+	status = oqo_lock_smbus(0);
+	if (ACPI_FAILURE(status))
+		return -1;
+	return (int)ret;
+}
+
+static int smwrite_u8(u8 addr, u8 val)
+{
+	acpi_status status;
+	int ret = -1;
+
+	status = oqo_lock_smbus(1);
+	if (ACPI_FAILURE(status))
+		goto skip;
+
+	status = oqo_smbus_setb(addr, val);
+	if (ACPI_FAILURE(status))
+		goto skip;
+
+	ret = 0;
+skip:
+	status = oqo_lock_smbus(0);
+	if (ACPI_FAILURE(status))
+		return -1;
+	return ret;
+}
+
+/*
+ * Accelerometer inputdev
+ */
+
+/*
+ * Get a reading of the accelerometer from the firwmware and push
+ * it to an inputdev.
+ *
+ * Also the ambient light detector hitch-hikes on the inputdev, since
+ * it could be useful in some of the same applications for accelerometers.
+ *
+ * Available information and a bit of poking have not found a
+ * way to freeze a snapshot of the accelerometer data, so we have
+ * to do consistency checks to reduce the odds that we mix low
+ * and high bytes from different updates.
+ *
+ * Unfortunately SMBUS access is very slow (11ms) and the firmware API
+ * does not provide 2-byte transfers, so mixed readings happen and
+ * have to be corrected a lot.  (Do not know why; it should be a
+ * multi-kHz.. bus and the reads take only a hundred-ish cycles/byte.
+ * It is not the ACPI function -- it is slow on i2c-viapro as well.)
+ *
+ * Since there is such a big time lag between readings, the axis
+ * are decoupled and reported separately on different timelines as
+ * different events rather than as a set.
+ */
+static acpi_status oqo_read_kine(int *good, s16 *x, s16 *y, s16 *z,
+				 u16 *lumin)
+{
+	u8 hiregs[4] = { OQO_O2_SMB0_ACCEL_XHI,
+		OQO_O2_SMB0_ACCEL_YHI,
+		OQO_O2_SMB0_ACCEL_ZHI,
+		OQO_O2_SMB0_LUMIN_HI
+	};
+	u8 loregs[4] = { OQO_O2_SMB0_ACCEL_XLO,
+		OQO_O2_SMB0_ACCEL_YLO,
+		OQO_O2_SMB0_ACCEL_ZLO,
+		OQO_O2_SMB0_LUMIN_LO
+	};
+
+	short ax[4] = { ABS_X, ABS_Y, ABS_Z, ABS_MISC };
+	u8 realgood = 0;
+	u16 res[4];
+	acpi_status status;
+	int i;
+
+	*good = 0;
+
+	/* Routine: Starting with the lo byte, read lo/hi bytes
+	   alternately until two lo byte readings, match.  Then
+	   take that reading and combine it with the hi reading
+	   sandwiched between.  Errors can still happen when
+	   jittering at wrap boundaries, but should be rare.
+
+	   Don't use this for missile guidance.
+
+	   Userspace post-processing error detection encouraged.
+	 */
+	for (i = 0; i < 4; i++) {
+		int maxtry;
+		u32 log;
+		u8 r, lo, hi;
+
+		lo = loregs[i];
+		hi = hiregs[i];
+		log = 0;
+
+#define LOGRES(reg)  do { \
+			status = oqo_smbus_getb(reg, &r);		\
+			log <<= 8; log |= r; log &= 0xffffff;		\
+			if (ACPI_FAILURE(status))			\
+				goto leave;				\
+		} while (0)
+
+		maxtry = OQO_KINE_MAXTRY + 1;
+		while (maxtry) {
+			LOGRES(lo);
+			if (maxtry <= OQO_KINE_MAXTRY &&
+			    (log >> 16) == (log & 0xff)) {
+				*(res + i) = log & 0xffff;
+				break;
+			}
+			LOGRES(hi);
+			maxtry--;
+		}
+
+		if (maxtry == OQO_KINE_MAXTRY)
+			realgood |= 1 << i;
+
+		if (maxtry) {
+			*good |= 1 << i;
+			/* JIC CYA: this bit may be reserved */
+			res[3] &= 0x7fff;
+			input_report_abs(oqo_kine, ax[i], (s16) res[i]);
+		}
+		/* else we had trouble getting the reading to lock
+		   and we skip reporting this axis.
+		 */
+	}
+
+	*x = (u16) res[0];
+	*y = (u16) res[1];
+	*z = (u16) res[2];
+	*lumin = (u16) res[3];
+	return status;
+leave:
+	return status;
+}
+
+/*
+ * Generic Device (interface-independent)
+ */
+
+static void oqo_kine_poll(struct input_polled_dev *dev)
+{
+	s16 x, y, z;
+	u16 lumin;
+	int good;
+	/*      struct timeval tv1, tv2; */
+
+	if (dev != oqo_kine_polled)
+		return;
+	if (orig.kine_itvl < 0)
+		return;
+
+	x = y = z = 0;
+	oqo_read_kine(&good, &x, &y, &z, &lumin);
+}
+
+static int __devinit oqo_kine_init(void)
+{
+	int err;
+
+	oqo_kine = input_allocate_device();
+	if (!oqo_kine)
+		return -ENOMEM;
+
+	oqo_kine->name = "OQO embedded accelerometer";
+	oqo_kine->phys = "platform:oqo-wmi:kine";
+	oqo_kine->id.bustype = 0;
+	oqo_kine->id.vendor = 0;
+	oqo_kine->id.product = 2;
+	oqo_kine->id.version = 0;
+	oqo_kine->evbit[0] = BIT_MASK(EV_ABS);
+	set_bit(ABS_X, oqo_kine->absbit);
+	set_bit(ABS_Y, oqo_kine->absbit);
+	set_bit(ABS_Z, oqo_kine->absbit);
+	set_bit(ABS_MISC, oqo_kine->absbit);
+	oqo_kine->absmin[ABS_X] =
+	    oqo_kine->absmin[ABS_Y] =
+	    oqo_kine->absmin[ABS_Z] = oqo_kine->absmin[ABS_MISC] = -32768;
+	oqo_kine->absmax[ABS_X] =
+	    oqo_kine->absmax[ABS_Y] =
+	    oqo_kine->absmax[ABS_Z] = oqo_kine->absmax[ABS_MISC] = 32767;
+
+	memcpy(oqo_kine->dev.bus_id, "kine", 4);
+
+	oqo_kine_polled = input_allocate_polled_device();
+	if (!oqo_kine_polled) {
+		err = -ENOMEM;
+		goto bail0;
+	}
+
+	oqo_kine_polled->poll = oqo_kine_poll;
+	oqo_kine_polled->poll_interval = 250;
+	oqo_kine_polled->input = oqo_kine;
+
+	orig.kine_itvl = -1;	/* prevent callback from running */
+	err = input_register_polled_device(oqo_kine_polled);
+	if (err) {
+		printk(OQO_ERR "Failed to register OQO kine input\n");
+		goto bail1;
+	}
+
+	/* This will allow the callback to run now if successful. */
+	orig.kine_itvl = smread_u8(OQO_O2_SMB0_ACCEL_POLL_ITVL);
+	smwrite_u8(OQO_O2_SMB0_ACCEL_POLL_ITVL, 250);
+	curr.kine_itvl = smread_u8(OQO_O2_SMB0_ACCEL_POLL_ITVL);
+	if (orig.kine_itvl < 0 || curr.kine_itvl != 250) {
+		printk(OQO_ERR "Test communication with kine sensor failed\n");
+		err = -ENODEV;
+		goto bail2;
+	}
+
+	printk(OQO_INFO "Created OQO kine input.\n");
+	printk(OQO_INFO "Firmware interval %ims, driver interval %ims\n",
+	       curr.kine_itvl, oqo_kine_polled->poll_interval);
+	return 0;
+bail2:
+	input_unregister_polled_device(oqo_kine_polled);
+bail1:
+	input_free_polled_device(oqo_kine_polled);	/* frees oqo_kine */
+	return err;
+bail0:
+	input_free_device(oqo_kine);
+	return err;
+}
+
+static void __devexit oqo_kine_fini(void)
+{
+	smwrite_u8(OQO_O2_SMB0_ACCEL_POLL_ITVL, orig.kine_itvl);
+	input_unregister_polled_device(oqo_kine_polled);
+	input_free_polled_device(oqo_kine_polled);
+}
+
+/*
+ * Backlight device
+ */
+static int read_brightness(struct backlight_device *bd)
+{
+	return (int)smread_s16(OQO_O2_SMB0_BL_HI, OQO_O2_SMB0_BL_LO);
+}
+
+static int update_bl_status(struct backlight_device *bd)
+{
+	return smwrite_s16(OQO_O2_SMB0_BL_HI,
+			   OQO_O2_SMB0_BL_LO, (s16) bd->props.brightness);
+}
+
+static struct backlight_ops oqo_bl_ops = {
+	.get_brightness = read_brightness,
+	.update_status = update_bl_status,
+};
+
+static int __devinit oqo_backlight_init(struct device *dev)
+{
+	struct backlight_device *bd;
+
+	/*
+	 * It would be nice if someone would figure out how backlights
+	 * like these, which are not driven through the video hardware,
+	 * are supposed to find their associated fb and bind to it (and
+	 * rebind when fb drivers change.
+	 *
+	 * Most extras backlights just shove a junk name in like we do here,
+	 * and don't end up integrated with fbcon sysfs as a result.
+	 */
+	bd = backlight_device_register("oqo-bl", dev, NULL, &oqo_bl_ops);
+
+	if (IS_ERR(bd)) {
+		printk(OQO_ERR "Could not register OQO backlight device\n");
+		oqo_backlight_device = NULL;
+		return PTR_ERR(bd);
+	}
+
+	oqo_backlight_device = bd;
+	bd->props.max_brightness = 0x7fff;
+	curr.bl_bright = orig.bl_bright = bd->props.brightness =
+	    read_brightness(NULL);
+
+	if (bd->props.brightness < 0)
+		goto fail;
+
+	backlight_update_status(bd);
+	printk(OQO_INFO "Found backlight set at %i\n", bd->props.brightness);
+	return 0;
+
+fail:
+	backlight_device_unregister(oqo_backlight_device);
+	oqo_backlight_device = NULL;
+	return -ENODEV;
+}
+
+static void __devexit oqo_backlight_fini(void)
+{
+	if (!oqo_backlight_device)
+		return;
+	oqo_backlight_device->props.brightness = orig.bl_bright;
+	backlight_update_status(oqo_backlight_device);
+	backlight_device_unregister(oqo_backlight_device);
+}
+
+/*
+ * RFKill device
+ */
+
+static int oqo_rfkill_get(void *data, enum rfkill_state *state)
+{
+	int res;
+
+	res = smread_u8(OQO_O2_SMB0_WWAN_DSBL_ADDR);
+	if (res < 0)
+		return res;
+
+	res &= OQO_O2_SMB0_WWAN_DSBL_MASK;
+
+	if (res)
+		*state = RFKILL_STATE_SOFT_BLOCKED;
+	else
+		*state = RFKILL_STATE_UNBLOCKED;
+
+	return 0;
+}
+
+static int oqo_rfkill_toggle(void *data, enum rfkill_state state)
+{
+	int res;
+
+	res = smread_u8(OQO_O2_SMB0_WWAN_DSBL_ADDR);
+
+	if (state == RFKILL_STATE_UNBLOCKED)
+		res &= ~OQO_O2_SMB0_WWAN_DSBL_MASK;
+	else
+		res |= OQO_O2_SMB0_WWAN_DSBL_MASK;
+
+	return smwrite_u8(OQO_O2_SMB0_WWAN_DSBL_ADDR, res);
+}
+
+static int __devinit oqo_rfkill_init(struct device *dev)
+{
+	int res;
+
+	oqo_rfkill = rfkill_allocate(dev, RFKILL_TYPE_WWAN);
+	if (!oqo_rfkill)
+		return -ENODEV;
+
+	res = smread_u8(OQO_O2_SMB0_WWAN_DSBL_ADDR);
+	res &= OQO_O2_SMB0_WWAN_DSBL_MASK;
+
+	oqo_rfkill->name = "oqo-wwan";
+	if (res)
+		oqo_rfkill->state = RFKILL_STATE_SOFT_BLOCKED;
+	else
+		oqo_rfkill->state = RFKILL_STATE_UNBLOCKED;
+
+	oqo_rfkill->get_state = oqo_rfkill_get;
+	oqo_rfkill->toggle_radio = oqo_rfkill_toggle;
+	oqo_rfkill->user_claim_unsupported = 1;
+
+	res = rfkill_register(oqo_rfkill);
+
+	if (res)
+		rfkill_free(oqo_rfkill);
+
+	return res;
+}
+
+static void __devexit oqo_rfkill_fini(void)
+{
+	if (!oqo_rfkill)
+		return;
+	rfkill_unregister(oqo_rfkill);
+}
+
+/*
+ * Platform device
+ */
+
+static int __devinit oqo_platform_probe(struct platform_device *device)
+{
+	int err;
+	int i;
+	char *troubleok = "trouble, but continuing.\n";
+
+	memset(oqo_sn, 0, OQO_O2_SMB0_SERIAL_LEN + 1);
+	for (i = 0; i < OQO_O2_SMB0_SERIAL_LEN; i++) {
+		err = oqo_smbus_getb(OQO_O2_SMB0_SERIAL_START + i, oqo_sn + i);
+		if (err) {
+			printk(OQO_ERR "Serial number check failed.\n");
+			return err;
+		}
+	}
+	printk(OQO_INFO "Found OQO with serial number %s.\n", oqo_sn);
+
+	err = oqo_backlight_init(&device->dev);
+	if (err)
+		printk(OQO_ERR "Backlight init %s", troubleok);
+
+	err = oqo_rfkill_init(&device->dev);
+	if (err)
+		printk(OQO_ERR "RFKill init %s", troubleok);
+
+	/* LID does not work at all yet, and this may be taken
+	   care of by ACPI.
+	 */
+	orig.lid_wakes = smread_u8(OQO_O2_SMB0_LID_WAKES_ADDR);
+	orig.lid_wakes &= OQO_O2_SMB0_LID_WAKES_MASK;
+	orig.lid_wakes = curr.lid_wakes = !!orig.lid_wakes;
+	if (orig.lid_wakes < 0) {
+		printk(OQO_ERR "Wake on LID event %s", troubleok);
+	} else {
+		printk(OQO_INFO "Wake on LID is %s.\n",
+		       (orig.lid_wakes ? "on" : "off"));
+	}
+
+	err = oqo_kine_init();
+	return err;
+}
+
+static int oqo_platform_remove(struct platform_device *device)
+{
+	oqo_backlight_fini();
+	oqo_rfkill_fini();
+	oqo_kine_fini();
+
+	return 0;
+}
+
+#ifdef CONFIG_PM
+
+static int oqo_platform_suspend(struct platform_device *dev, pm_message_t state)
+{
+	if (!interface)
+		return -ENOMEM;
+
+	/* This sticks during boot so do not turn it entirely off */
+	if (oqo_backlight_device) {
+		curr.bl_bright = read_brightness(oqo_backlight_device);
+		smwrite_s16(OQO_O2_SMB0_BL_HI, OQO_O2_SMB0_BL_LO, 256);
+	}
+	return 0;
+}
+
+static int oqo_platform_resume(struct platform_device *device)
+{
+	if (!interface)
+		return -ENOMEM;
+
+	if (oqo_backlight_device) {
+		smwrite_s16(OQO_O2_SMB0_BL_HI,
+			    OQO_O2_SMB0_BL_LO, curr.bl_bright);
+	}
+
+	return 0;
+}
+
+#else
+#define oqo_platform_suspend NULL
+#define oqo_platform_resume  NULL
+#endif
+
+static struct platform_driver oqo_platform_driver = {
+	.driver = {
+		   .name = "oqo-wmi",
+		   .owner = THIS_MODULE,
+		   },
+	.probe = oqo_platform_probe,
+	.remove = oqo_platform_remove,
+	.suspend = oqo_platform_suspend,
+	.resume = oqo_platform_resume,
+};
+
+static int __init oqo_wmi_init(void)
+{
+	int err;
+
+	dmi_check_system(oqo_dmis);
+
+	if (!interface && force) {
+		model = oqo_models;
+		if (wmi_has_guid(OQO_O2_AMW0_GUID))
+			interface = &AMW0_interface;
+	}
+
+	if (!interface) {
+		printk(OQO_ERR "No or unsupported WMI interface. Aborting.\n");
+		printk(OQO_ERR "Hint: Get dmidecode working and try again.\n");
+		printk(OQO_ERR "(Check \"System Management BIOS\" in BIOS)\n");
+		if (!force)
+			printk(OQO_ERR "Use the force option to skip DMI"
+			       " checking\n");
+		return -ENODEV;
+	}
+
+	err = platform_driver_register(&oqo_platform_driver);
+	if (err) {
+		printk(OQO_ERR "platform_driver_register gave %d.\n", err);
+		goto bail0;
+	}
+
+	oqo_platform_device = platform_device_alloc("oqo-wmi", -1);
+	if (!oqo_platform_device) {
+		printk(OQO_ERR "Could not allocate platform device.\n");
+		err = -ENOMEM;
+		goto bail1;
+	}
+
+	err = platform_device_add(oqo_platform_device);
+	if (err) {
+		printk(OQO_ERR "platform_device_add gave %d.\n", err);
+		platform_device_put(oqo_platform_device);
+		goto bail1;
+	}
+
+	return 0;
+
+bail1:
+	platform_driver_unregister(&oqo_platform_driver);
+bail0:
+	return err;
+}
+
+static void __exit oqo_wmi_fini(void)
+{
+	platform_device_del(oqo_platform_device);
+	platform_driver_unregister(&oqo_platform_driver);
+
+	return;
+}
+
+module_init(oqo_wmi_init);
+module_exit(oqo_wmi_fini);
-- 
1.6.1.76.gc123b


WARNING: multiple messages have this Message-ID (diff)
From: Len Brown <lenb@kernel.org>
To: Matthew Garrett <mjg59@srcf.ucam.org>
Cc: "Brian S. Julin" <bri@abrij.org>,
	linux-acpi@vger.kernel.org,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	greg@kroah.com
Date: Fri, 09 Jan 2009 17:34:08 -0500 (EST)	[thread overview]
raw)
In-Reply-To: <alpine.LFD.2.00.0901090112190.4091@localhost.localdomain>

From: Matthew Garrett <mjg59@srcf.ucam.org>

Matthew,
Here is the version in my tree -- refreshed to live in 
drivers/platform/x86/.

cheers,
-Len

oqo-wmi provides a WMI-based interface to backlight and rfkill control on
model 2 OQO devices. It was originally written by Brian Julin
(<bri@abrij.org>) - I've ported it to the rfkill layer and tidied it up a
little.

Signed-off-by: Matthew Garrett <mjg@redhat.com>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 MAINTAINERS                    |    5 +
 drivers/platform/x86/Kconfig   |   13 +
 drivers/platform/x86/Makefile  |    1 +
 drivers/platform/x86/oqo-wmi.c |  941 ++++++++++++++++++++++++++++++++++++++++
 4 files changed, 960 insertions(+), 0 deletions(-)
 create mode 100644 drivers/platform/x86/oqo-wmi.c

diff --git a/MAINTAINERS b/MAINTAINERS
index 57e0309..fef4adb 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3239,6 +3239,11 @@ M:	robert.richter@amd.com
 L:	oprofile-list@lists.sf.net
 S:	Maintained
 
+OQO WMI EXTRAS DRIVER
+P:	Matthew Garrett
+M:	mjg59@srcf.ucam.org
+S:	Maintained
+
 ORACLE CLUSTER FILESYSTEM 2 (OCFS2)
 P:	Mark Fasheh
 M:	mfasheh@suse.com
diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig
index 9e8f948..017fb81 100644
--- a/drivers/platform/x86/Kconfig
+++ b/drivers/platform/x86/Kconfig
@@ -132,6 +132,19 @@ config MSI_LAPTOP
 
 	  If you have an MSI S270 laptop, say Y or M here.
 
+config OQO_WMI
+       tristate "OQO WMI extras"
+       depends on ACPI_WMI
+       depends on INPUT
+       depends on RFKILL
+       depends on BACKLIGHT_CLASS_DEVICE
+       help
+         Say Y here if you want to support rfkill and backlight control on
+         series 2 OQO handheld devices.
+
+         To compile this driver as a module, choose M here: the module will
+         be called oqo-wmi.
+
 config PANASONIC_LAPTOP
 	tristate "Panasonic Laptop Extras"
 	depends on INPUT && ACPI
diff --git a/drivers/platform/x86/Makefile b/drivers/platform/x86/Makefile
index e290651..37ac07f 100644
--- a/drivers/platform/x86/Makefile
+++ b/drivers/platform/x86/Makefile
@@ -13,6 +13,7 @@ obj-$(CONFIG_TC1100_WMI)	+= tc1100-wmi.o
 obj-$(CONFIG_SONY_LAPTOP)	+= sony-laptop.o
 obj-$(CONFIG_THINKPAD_ACPI)	+= thinkpad_acpi.o
 obj-$(CONFIG_FUJITSU_LAPTOP)	+= fujitsu-laptop.o
+obj-$(CONFIG_OQO_WMI)		+= oqo-wmi.o
 obj-$(CONFIG_PANASONIC_LAPTOP)	+= panasonic-laptop.o
 obj-$(CONFIG_INTEL_MENLOW)	+= intel_menlow.o
 obj-$(CONFIG_ACPI_WMI)		+= wmi.o
diff --git a/drivers/platform/x86/oqo-wmi.c b/drivers/platform/x86/oqo-wmi.c
new file mode 100644
index 0000000..940e605
--- /dev/null
+++ b/drivers/platform/x86/oqo-wmi.c
@@ -0,0 +1,941 @@
+/*
+ *  OQO WMI UPMC Extras
+ *
+ *  Copyright (C) 2008 Brian S. Julin <bri@abrij.org>
+ *
+ *  Based on acer-wmi:
+ *    Copyright (C) 2007-2008	Carlos Corbacho <cathectic@gmail.com>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+/*
+ * NOTE: You need to turn SMI on in BIOS (if dmidecode works, you already have)
+ * NOTE: acpi-wmi support mandatory
+ * NOTE: backlight and inputdev support a must, ifdefs will come later
+ */
+
+/*
+ *
+ *  0.3: added WLAN enable switch, restore settings on unload,
+ *       resume/suspend handling
+ *  0.2: Still not production-ready, but added ambient light sensor,
+ *       backlight, and it prints the unit serial number to dmesg (do
+ *       not know where to make that available to userspace yet.)
+ *  0.1: This is a first cut.  Plan to reboot after playing with this.
+ */
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/types.h>
+#include <linux/dmi.h>
+#include <linux/backlight.h>
+#include <linux/leds.h>
+#include <linux/platform_device.h>
+#include <linux/acpi.h>
+#include <linux/i8042.h>
+#include <linux/input-polldev.h>
+#include <linux/rfkill.h>
+
+#include <acpi/acpi_drivers.h>
+
+MODULE_AUTHOR("Brian Julin");
+MODULE_DESCRIPTION("OQO UPMC WMI Extras Driver");
+MODULE_LICENSE("GPL");
+
+#define OQO_LOGPREFIX "oqo-wmi: "
+#define OQO_ERR KERN_ERR OQO_LOGPREFIX
+#define OQO_NOTICE KERN_NOTICE OQO_LOGPREFIX
+#define OQO_INFO KERN_INFO OQO_LOGPREFIX
+
+#define OQO_KINE_MAXTRY 3
+
+/* Store defined devices globally since we only have one instance. */
+static struct platform_device *oqo_platform_device;
+static struct backlight_device *oqo_backlight_device;
+static struct rfkill *oqo_rfkill;
+static struct input_dev *oqo_kine;
+static struct input_polled_dev *oqo_kine_polled;
+
+/* Likewise store current and original settings globally. */
+struct oqo_settings {
+	int lid_wakes;		/* not sure if ACPI handles/needs help here */
+	int kine_itvl;
+	int bl_bright;
+};
+
+static struct oqo_settings orig, curr;
+
+/* Some of this code is left like in acer-wmi so we can add the older
+   Model 01 and any future models more easily, but we should not expect
+   it to be as complicated as Acer given each model is a leap rather than
+   a subtle variant on the last, so we aren't using "quirks" perse.  Not
+   sure if there is any real difference for our purposes between the o2
+   and e2.
+*/
+struct oqo_model {
+	const char *model;
+	u16 model_subs;
+};
+#define MODEL_SUB_OQO_O2_SMB0 3
+
+static struct oqo_model oqo_models[] = {
+	{
+	 .model = "Model 2",
+	 .model_subs = MODEL_SUB_OQO_O2_SMB0,
+	 },
+	{}
+};
+
+static struct oqo_model *model;
+
+static int force;
+module_param(force, bool, 0644);
+MODULE_PARM_DESC(force, "Force WMI detection even if DMI detection failed");
+
+/*
+ * OQO Model 2 SMBUS registers
+ * We are just using WMI to read the Cx700 smbus, to share the
+ * ACPI mutex (what may also eventually work in VMs/win32)
+ * Using i2c-viapro directly could interfere with PM.
+ */
+
+#define OQO_O2_SMB0_WWAN_DSBL_ADDR	0x19
+#define OQO_O2_SMB0_WWAN_DSBL_MASK	0x02
+#define OQO_O2_SMB0_LUMIN_LO		0x20
+#define OQO_O2_SMB0_LUMIN_HI		0x21
+#define OQO_O2_SMB0_BL_LO		0x26
+#define OQO_O2_SMB0_BL_HI		0x27
+#define OQO_O2_SMB0_ACCEL_POLL_ITVL	0x45
+#define OQO_O2_SMB0_ACCEL_XLO		0x50
+#define OQO_O2_SMB0_ACCEL_XHI		0x51
+#define OQO_O2_SMB0_ACCEL_YLO		0x52
+#define OQO_O2_SMB0_ACCEL_YHI		0x53
+#define OQO_O2_SMB0_ACCEL_ZLO		0x54
+#define OQO_O2_SMB0_ACCEL_ZHI		0x55
+/* These may be handled by ACPI not sure yet. */
+#define OQO_O2_SMB0_LID_WAKES_ADDR	0x58
+#define OQO_O2_SMB0_LID_WAKES_MASK	0x08
+
+#define OQO_O2_SMB0_SERIAL_START	0x70
+#define OQO_O2_SMB0_SERIAL_LEN		11
+
+static char oqo_sn[OQO_O2_SMB0_SERIAL_LEN + 1];
+
+/* Other addresses I have noticed used on the 02 SMBUS (from DSDT and whatnot)
+ *
+ * These are not used because the linux ACPI drivers work fine on them
+ *
+ * 0x0A -- processor sleep mode?
+ * 0x0C -- ACPI events, probably clears when read.
+ * 0x30 -- thermal zone
+ *      There is something going on at 0x31 through 0x34 which is likely
+ *      also thermal.  The values change over time.  Have not figured that
+ *      out yet.
+ * 0x41 -- AC detect
+ * 0x42 -- LID button   ACTUALLY THIS DOES NOT WORK AND NEEDS TO BE FIXED
+ * 0xa0 and 0xa1 -- battery something (presence? state?)
+ * 0xa4 to 0xcf -- battery info (0xc8-0xca contains "OQO")
+ * 0xd4 to 0xef -- other battery stats
+ */
+
+/*
+ * OQO method GUIDs
+ */
+#define OQO_O2_AMW0_GUID "ABBC0F6D-8EA1-11D1-00A0-C90629100000"
+MODULE_ALIAS("wmi:ABBC0F6D-8EA1-11D1-00A0-C90629100000");
+
+/*
+ * Interface type flags
+ */
+enum interface_type {
+	OQO_O2_AMW0,
+};
+
+/* Each low-level interface must define at least some of the following */
+struct wmi_interface {
+	/* The WMI device type */
+	u32 type;
+};
+
+static struct wmi_interface AMW0_interface = {
+	.type = OQO_O2_AMW0,
+};
+
+/* The detected/chosen interface */
+static struct wmi_interface *interface;
+
+static int dmi_matched(const struct dmi_system_id *dmi)
+{
+	model = dmi->driver_data;
+	/*
+	 * Detect which ACPI-WMI interface we're using.
+	 */
+	if (wmi_has_guid(OQO_O2_AMW0_GUID))
+		interface = &AMW0_interface;
+
+	return 0;
+}
+
+static struct dmi_system_id oqo_dmis[] = {
+	{
+	 .callback = dmi_matched,
+	 .ident = "OQO 02",
+	 .matches = {
+		     DMI_MATCH(DMI_SYS_VENDOR, "OQO Inc."),
+		     DMI_MATCH(DMI_PRODUCT_NAME, "OQO Model 2"),
+		     },
+	 .driver_data = oqo_models + 0,
+	 },
+	{}
+};
+
+/*
+ * AMW0 (V1) interface on OQO Model 2
+ *
+ * wmba: has four functions selected by int arg 1.  arg2 is 3 byte buffer.
+ *       1: performs GETB method on the SMBUS using bytes 0, 1 of Arg2
+ *          returns a buffer object containing a single byte
+ *       2: performs SETB on SMBUS using bytes 0, 1, 2 of Arg2
+ *          returns 0 as int.
+ *       3: dumps 256 values into a given SMBUS register (not used here)
+ *          returns 0 as int.
+ *       4: puts byte 0 of arg2 into some sort of busy flag.  Some ACPI
+ *          funcs check this (==0) to decide if SMBUS operations are safe.
+ *          returns 0 as int.
+ * wmbb: simply returns the busy flag set by wmba #4
+ */
+static acpi_status oqo_smbus_getb(u8 addr, u8 *result)
+{
+	struct acpi_buffer input, res;
+	acpi_status status;
+	union acpi_object *obj;
+	u32 arg2;
+
+	input.length = 4;
+	input.pointer = &arg2;
+	res.length = ACPI_ALLOCATE_BUFFER;
+	res.pointer = NULL;
+
+	arg2 = addr;
+	arg2 <<= 8;
+	arg2 |= 0x12;		/* HOSTCMD */
+
+	status = wmi_evaluate_method(OQO_O2_AMW0_GUID, 1, 1, &input, &res);
+
+	if (status != AE_OK)
+		return status;
+
+	obj = (union acpi_object *)res.pointer;
+	if (!obj)
+		return AE_NULL_OBJECT;
+
+	if (obj->type != ACPI_TYPE_BUFFER
+	    || obj->buffer.length != 1 || obj->buffer.pointer == NULL) {
+		kfree(obj);
+		return AE_TYPE;
+	}
+	*result = ((u8 *) (obj->buffer.pointer))[0];
+	kfree(obj);
+	return status;
+}
+
+static acpi_status oqo_smbus_setb(u8 addr, u8 val)
+{
+	struct acpi_buffer input, res;
+	acpi_status status;
+	union acpi_object *obj;
+	u32 arg2;
+
+	input.length = 4;
+	input.pointer = &arg2;
+	res.length = ACPI_ALLOCATE_BUFFER;
+	res.pointer = NULL;
+
+	arg2 = val;
+	arg2 <<= 8;
+	arg2 |= addr;
+	arg2 <<= 8;
+	arg2 |= 0x12;		/* HOSTCMD */
+
+	status = wmi_evaluate_method(OQO_O2_AMW0_GUID, 1, 2, &input, &res);
+
+	if (status != AE_OK)
+		return status;
+
+	obj = (union acpi_object *)res.pointer;
+	if (!obj)
+		return AE_NULL_OBJECT;
+
+	if (obj->type != ACPI_TYPE_INTEGER) {
+		kfree(obj);
+		return AE_TYPE;
+	}
+	kfree(obj);
+	return status;
+}
+
+/*
+ * We assume we are the only one using this ...ahem... "lock" on
+ * the SMBUS because it would be pathetically noneffective otherwise.
+ *
+ * Nonzero silly_lock will keep certain ACPI routines away from the
+ * SMBUS (if they aren't already on it when you call it.)  Zero
+ *  silly_lock will let them back on
+ *
+ * This is probably useful before sleeping the system, and one
+ * waits until any ACPI funcs would have long finished before
+ * proceeding.  It seems harmless enough and will work to wrap
+ * more accesses with it.
+ */
+static acpi_status oqo_lock_smbus(int silly_lock)
+{
+	struct acpi_buffer input, res;
+	acpi_status status;
+	union acpi_object *obj;
+	u32 arg2;
+
+	input.length = 4;
+	input.pointer = &arg2;
+	res.length = ACPI_ALLOCATE_BUFFER;
+	res.pointer = NULL;
+
+	arg2 = !!silly_lock;
+
+	status = wmi_evaluate_method(OQO_O2_AMW0_GUID, 1, 4, &input, &res);
+
+	if (status != AE_OK)
+		return status;
+
+	obj = (union acpi_object *)res.pointer;
+	if (!obj)
+		return AE_NULL_OBJECT;
+
+	if (obj->type != ACPI_TYPE_INTEGER) {
+		kfree(obj);
+		return AE_TYPE;
+	}
+	kfree(obj);
+	return status;
+}
+
+static int smread_s16(u8 hi_addr, u8 lo_addr)
+{
+	s16 ret = -1;
+	acpi_status status;
+	u8 r;
+
+	/* Keep some ACPI routines off the SMBUS */
+	status = oqo_lock_smbus(1);
+	if (ACPI_FAILURE(status))
+		goto skip;
+
+	status = oqo_smbus_getb(hi_addr, &r);
+	if (ACPI_FAILURE(status))
+		goto skip;
+
+	ret = r;
+	ret <<= 8;
+
+	status = oqo_smbus_getb(lo_addr, &r);
+	if (ACPI_FAILURE(status)) {
+		ret = -1;
+		goto skip;
+	}
+
+	ret |= r;
+	ret &= 0x7fff;
+skip:
+	/* Let ACPI routines back on the SMBUS */
+	status = oqo_lock_smbus(0);
+	if (ACPI_FAILURE(status))
+		return -1;
+	return (int)ret;
+}
+
+static int smwrite_s16(u8 hi_addr, u8 lo_addr, s16 val)
+{
+	acpi_status status;
+	u8 r;
+	int ret = -1;
+
+	status = oqo_lock_smbus(1);
+	if (ACPI_FAILURE(status))
+		goto skip;
+
+	r = (val >> 8) & 0x7f;
+	status = oqo_smbus_setb(hi_addr, r);
+	if (ACPI_FAILURE(status))
+		goto skip;
+
+	r = val & 0xff;
+	status = oqo_smbus_setb(lo_addr, r);
+	if (ACPI_FAILURE(status))
+		goto skip;
+
+	ret = 0;
+skip:
+	status = oqo_lock_smbus(0);
+	if (ACPI_FAILURE(status))
+		return -1;
+	return ret;
+}
+
+static int smread_u8(u8 addr)
+{
+	int ret = -1;
+	acpi_status status;
+	u8 r;
+
+	status = oqo_lock_smbus(1);
+	if (ACPI_FAILURE(status))
+		goto skip;
+
+	status = oqo_smbus_getb(addr, &r);
+	if (ACPI_FAILURE(status))
+		goto skip;
+
+	ret = r;
+skip:
+	status = oqo_lock_smbus(0);
+	if (ACPI_FAILURE(status))
+		return -1;
+	return (int)ret;
+}
+
+static int smwrite_u8(u8 addr, u8 val)
+{
+	acpi_status status;
+	int ret = -1;
+
+	status = oqo_lock_smbus(1);
+	if (ACPI_FAILURE(status))
+		goto skip;
+
+	status = oqo_smbus_setb(addr, val);
+	if (ACPI_FAILURE(status))
+		goto skip;
+
+	ret = 0;
+skip:
+	status = oqo_lock_smbus(0);
+	if (ACPI_FAILURE(status))
+		return -1;
+	return ret;
+}
+
+/*
+ * Accelerometer inputdev
+ */
+
+/*
+ * Get a reading of the accelerometer from the firwmware and push
+ * it to an inputdev.
+ *
+ * Also the ambient light detector hitch-hikes on the inputdev, since
+ * it could be useful in some of the same applications for accelerometers.
+ *
+ * Available information and a bit of poking have not found a
+ * way to freeze a snapshot of the accelerometer data, so we have
+ * to do consistency checks to reduce the odds that we mix low
+ * and high bytes from different updates.
+ *
+ * Unfortunately SMBUS access is very slow (11ms) and the firmware API
+ * does not provide 2-byte transfers, so mixed readings happen and
+ * have to be corrected a lot.  (Do not know why; it should be a
+ * multi-kHz.. bus and the reads take only a hundred-ish cycles/byte.
+ * It is not the ACPI function -- it is slow on i2c-viapro as well.)
+ *
+ * Since there is such a big time lag between readings, the axis
+ * are decoupled and reported separately on different timelines as
+ * different events rather than as a set.
+ */
+static acpi_status oqo_read_kine(int *good, s16 *x, s16 *y, s16 *z,
+				 u16 *lumin)
+{
+	u8 hiregs[4] = { OQO_O2_SMB0_ACCEL_XHI,
+		OQO_O2_SMB0_ACCEL_YHI,
+		OQO_O2_SMB0_ACCEL_ZHI,
+		OQO_O2_SMB0_LUMIN_HI
+	};
+	u8 loregs[4] = { OQO_O2_SMB0_ACCEL_XLO,
+		OQO_O2_SMB0_ACCEL_YLO,
+		OQO_O2_SMB0_ACCEL_ZLO,
+		OQO_O2_SMB0_LUMIN_LO
+	};
+
+	short ax[4] = { ABS_X, ABS_Y, ABS_Z, ABS_MISC };
+	u8 realgood = 0;
+	u16 res[4];
+	acpi_status status;
+	int i;
+
+	*good = 0;
+
+	/* Routine: Starting with the lo byte, read lo/hi bytes
+	   alternately until two lo byte readings, match.  Then
+	   take that reading and combine it with the hi reading
+	   sandwiched between.  Errors can still happen when
+	   jittering at wrap boundaries, but should be rare.
+
+	   Don't use this for missile guidance.
+
+	   Userspace post-processing error detection encouraged.
+	 */
+	for (i = 0; i < 4; i++) {
+		int maxtry;
+		u32 log;
+		u8 r, lo, hi;
+
+		lo = loregs[i];
+		hi = hiregs[i];
+		log = 0;
+
+#define LOGRES(reg)  do { \
+			status = oqo_smbus_getb(reg, &r);		\
+			log <<= 8; log |= r; log &= 0xffffff;		\
+			if (ACPI_FAILURE(status))			\
+				goto leave;				\
+		} while (0)
+
+		maxtry = OQO_KINE_MAXTRY + 1;
+		while (maxtry) {
+			LOGRES(lo);
+			if (maxtry <= OQO_KINE_MAXTRY &&
+			    (log >> 16) == (log & 0xff)) {
+				*(res + i) = log & 0xffff;
+				break;
+			}
+			LOGRES(hi);
+			maxtry--;
+		}
+
+		if (maxtry == OQO_KINE_MAXTRY)
+			realgood |= 1 << i;
+
+		if (maxtry) {
+			*good |= 1 << i;
+			/* JIC CYA: this bit may be reserved */
+			res[3] &= 0x7fff;
+			input_report_abs(oqo_kine, ax[i], (s16) res[i]);
+		}
+		/* else we had trouble getting the reading to lock
+		   and we skip reporting this axis.
+		 */
+	}
+
+	*x = (u16) res[0];
+	*y = (u16) res[1];
+	*z = (u16) res[2];
+	*lumin = (u16) res[3];
+	return status;
+leave:
+	return status;
+}
+
+/*
+ * Generic Device (interface-independent)
+ */
+
+static void oqo_kine_poll(struct input_polled_dev *dev)
+{
+	s16 x, y, z;
+	u16 lumin;
+	int good;
+	/*      struct timeval tv1, tv2; */
+
+	if (dev != oqo_kine_polled)
+		return;
+	if (orig.kine_itvl < 0)
+		return;
+
+	x = y = z = 0;
+	oqo_read_kine(&good, &x, &y, &z, &lumin);
+}
+
+static int __devinit oqo_kine_init(void)
+{
+	int err;
+
+	oqo_kine = input_allocate_device();
+	if (!oqo_kine)
+		return -ENOMEM;
+
+	oqo_kine->name = "OQO embedded accelerometer";
+	oqo_kine->phys = "platform:oqo-wmi:kine";
+	oqo_kine->id.bustype = 0;
+	oqo_kine->id.vendor = 0;
+	oqo_kine->id.product = 2;
+	oqo_kine->id.version = 0;
+	oqo_kine->evbit[0] = BIT_MASK(EV_ABS);
+	set_bit(ABS_X, oqo_kine->absbit);
+	set_bit(ABS_Y, oqo_kine->absbit);
+	set_bit(ABS_Z, oqo_kine->absbit);
+	set_bit(ABS_MISC, oqo_kine->absbit);
+	oqo_kine->absmin[ABS_X] =
+	    oqo_kine->absmin[ABS_Y] =
+	    oqo_kine->absmin[ABS_Z] = oqo_kine->absmin[ABS_MISC] = -32768;
+	oqo_kine->absmax[ABS_X] =
+	    oqo_kine->absmax[ABS_Y] =
+	    oqo_kine->absmax[ABS_Z] = oqo_kine->absmax[ABS_MISC] = 32767;
+
+	memcpy(oqo_kine->dev.bus_id, "kine", 4);
+
+	oqo_kine_polled = input_allocate_polled_device();
+	if (!oqo_kine_polled) {
+		err = -ENOMEM;
+		goto bail0;
+	}
+
+	oqo_kine_polled->poll = oqo_kine_poll;
+	oqo_kine_polled->poll_interval = 250;
+	oqo_kine_polled->input = oqo_kine;
+
+	orig.kine_itvl = -1;	/* prevent callback from running */
+	err = input_register_polled_device(oqo_kine_polled);
+	if (err) {
+		printk(OQO_ERR "Failed to register OQO kine input\n");
+		goto bail1;
+	}
+
+	/* This will allow the callback to run now if successful. */
+	orig.kine_itvl = smread_u8(OQO_O2_SMB0_ACCEL_POLL_ITVL);
+	smwrite_u8(OQO_O2_SMB0_ACCEL_POLL_ITVL, 250);
+	curr.kine_itvl = smread_u8(OQO_O2_SMB0_ACCEL_POLL_ITVL);
+	if (orig.kine_itvl < 0 || curr.kine_itvl != 250) {
+		printk(OQO_ERR "Test communication with kine sensor failed\n");
+		err = -ENODEV;
+		goto bail2;
+	}
+
+	printk(OQO_INFO "Created OQO kine input.\n");
+	printk(OQO_INFO "Firmware interval %ims, driver interval %ims\n",
+	       curr.kine_itvl, oqo_kine_polled->poll_interval);
+	return 0;
+bail2:
+	input_unregister_polled_device(oqo_kine_polled);
+bail1:
+	input_free_polled_device(oqo_kine_polled);	/* frees oqo_kine */
+	return err;
+bail0:
+	input_free_device(oqo_kine);
+	return err;
+}
+
+static void __devexit oqo_kine_fini(void)
+{
+	smwrite_u8(OQO_O2_SMB0_ACCEL_POLL_ITVL, orig.kine_itvl);
+	input_unregister_polled_device(oqo_kine_polled);
+	input_free_polled_device(oqo_kine_polled);
+}
+
+/*
+ * Backlight device
+ */
+static int read_brightness(struct backlight_device *bd)
+{
+	return (int)smread_s16(OQO_O2_SMB0_BL_HI, OQO_O2_SMB0_BL_LO);
+}
+
+static int update_bl_status(struct backlight_device *bd)
+{
+	return smwrite_s16(OQO_O2_SMB0_BL_HI,
+			   OQO_O2_SMB0_BL_LO, (s16) bd->props.brightness);
+}
+
+static struct backlight_ops oqo_bl_ops = {
+	.get_brightness = read_brightness,
+	.update_status = update_bl_status,
+};
+
+static int __devinit oqo_backlight_init(struct device *dev)
+{
+	struct backlight_device *bd;
+
+	/*
+	 * It would be nice if someone would figure out how backlights
+	 * like these, which are not driven through the video hardware,
+	 * are supposed to find their associated fb and bind to it (and
+	 * rebind when fb drivers change.
+	 *
+	 * Most extras backlights just shove a junk name in like we do here,
+	 * and don't end up integrated with fbcon sysfs as a result.
+	 */
+	bd = backlight_device_register("oqo-bl", dev, NULL, &oqo_bl_ops);
+
+	if (IS_ERR(bd)) {
+		printk(OQO_ERR "Could not register OQO backlight device\n");
+		oqo_backlight_device = NULL;
+		return PTR_ERR(bd);
+	}
+
+	oqo_backlight_device = bd;
+	bd->props.max_brightness = 0x7fff;
+	curr.bl_bright = orig.bl_bright = bd->props.brightness =
+	    read_brightness(NULL);
+
+	if (bd->props.brightness < 0)
+		goto fail;
+
+	backlight_update_status(bd);
+	printk(OQO_INFO "Found backlight set at %i\n", bd->props.brightness);
+	return 0;
+
+fail:
+	backlight_device_unregister(oqo_backlight_device);
+	oqo_backlight_device = NULL;
+	return -ENODEV;
+}
+
+static void __devexit oqo_backlight_fini(void)
+{
+	if (!oqo_backlight_device)
+		return;
+	oqo_backlight_device->props.brightness = orig.bl_bright;
+	backlight_update_status(oqo_backlight_device);
+	backlight_device_unregister(oqo_backlight_device);
+}
+
+/*
+ * RFKill device
+ */
+
+static int oqo_rfkill_get(void *data, enum rfkill_state *state)
+{
+	int res;
+
+	res = smread_u8(OQO_O2_SMB0_WWAN_DSBL_ADDR);
+	if (res < 0)
+		return res;
+
+	res &= OQO_O2_SMB0_WWAN_DSBL_MASK;
+
+	if (res)
+		*state = RFKILL_STATE_SOFT_BLOCKED;
+	else
+		*state = RFKILL_STATE_UNBLOCKED;
+
+	return 0;
+}
+
+static int oqo_rfkill_toggle(void *data, enum rfkill_state state)
+{
+	int res;
+
+	res = smread_u8(OQO_O2_SMB0_WWAN_DSBL_ADDR);
+
+	if (state == RFKILL_STATE_UNBLOCKED)
+		res &= ~OQO_O2_SMB0_WWAN_DSBL_MASK;
+	else
+		res |= OQO_O2_SMB0_WWAN_DSBL_MASK;
+
+	return smwrite_u8(OQO_O2_SMB0_WWAN_DSBL_ADDR, res);
+}
+
+static int __devinit oqo_rfkill_init(struct device *dev)
+{
+	int res;
+
+	oqo_rfkill = rfkill_allocate(dev, RFKILL_TYPE_WWAN);
+	if (!oqo_rfkill)
+		return -ENODEV;
+
+	res = smread_u8(OQO_O2_SMB0_WWAN_DSBL_ADDR);
+	res &= OQO_O2_SMB0_WWAN_DSBL_MASK;
+
+	oqo_rfkill->name = "oqo-wwan";
+	if (res)
+		oqo_rfkill->state = RFKILL_STATE_SOFT_BLOCKED;
+	else
+		oqo_rfkill->state = RFKILL_STATE_UNBLOCKED;
+
+	oqo_rfkill->get_state = oqo_rfkill_get;
+	oqo_rfkill->toggle_radio = oqo_rfkill_toggle;
+	oqo_rfkill->user_claim_unsupported = 1;
+
+	res = rfkill_register(oqo_rfkill);
+
+	if (res)
+		rfkill_free(oqo_rfkill);
+
+	return res;
+}
+
+static void __devexit oqo_rfkill_fini(void)
+{
+	if (!oqo_rfkill)
+		return;
+	rfkill_unregister(oqo_rfkill);
+}
+
+/*
+ * Platform device
+ */
+
+static int __devinit oqo_platform_probe(struct platform_device *device)
+{
+	int err;
+	int i;
+	char *troubleok = "trouble, but continuing.\n";
+
+	memset(oqo_sn, 0, OQO_O2_SMB0_SERIAL_LEN + 1);
+	for (i = 0; i < OQO_O2_SMB0_SERIAL_LEN; i++) {
+		err = oqo_smbus_getb(OQO_O2_SMB0_SERIAL_START + i, oqo_sn + i);
+		if (err) {
+			printk(OQO_ERR "Serial number check failed.\n");
+			return err;
+		}
+	}
+	printk(OQO_INFO "Found OQO with serial number %s.\n", oqo_sn);
+
+	err = oqo_backlight_init(&device->dev);
+	if (err)
+		printk(OQO_ERR "Backlight init %s", troubleok);
+
+	err = oqo_rfkill_init(&device->dev);
+	if (err)
+		printk(OQO_ERR "RFKill init %s", troubleok);
+
+	/* LID does not work at all yet, and this may be taken
+	   care of by ACPI.
+	 */
+	orig.lid_wakes = smread_u8(OQO_O2_SMB0_LID_WAKES_ADDR);
+	orig.lid_wakes &= OQO_O2_SMB0_LID_WAKES_MASK;
+	orig.lid_wakes = curr.lid_wakes = !!orig.lid_wakes;
+	if (orig.lid_wakes < 0) {
+		printk(OQO_ERR "Wake on LID event %s", troubleok);
+	} else {
+		printk(OQO_INFO "Wake on LID is %s.\n",
+		       (orig.lid_wakes ? "on" : "off"));
+	}
+
+	err = oqo_kine_init();
+	return err;
+}
+
+static int oqo_platform_remove(struct platform_device *device)
+{
+	oqo_backlight_fini();
+	oqo_rfkill_fini();
+	oqo_kine_fini();
+
+	return 0;
+}
+
+#ifdef CONFIG_PM
+
+static int oqo_platform_suspend(struct platform_device *dev, pm_message_t state)
+{
+	if (!interface)
+		return -ENOMEM;
+
+	/* This sticks during boot so do not turn it entirely off */
+	if (oqo_backlight_device) {
+		curr.bl_bright = read_brightness(oqo_backlight_device);
+		smwrite_s16(OQO_O2_SMB0_BL_HI, OQO_O2_SMB0_BL_LO, 256);
+	}
+	return 0;
+}
+
+static int oqo_platform_resume(struct platform_device *device)
+{
+	if (!interface)
+		return -ENOMEM;
+
+	if (oqo_backlight_device) {
+		smwrite_s16(OQO_O2_SMB0_BL_HI,
+			    OQO_O2_SMB0_BL_LO, curr.bl_bright);
+	}
+
+	return 0;
+}
+
+#else
+#define oqo_platform_suspend NULL
+#define oqo_platform_resume  NULL
+#endif
+
+static struct platform_driver oqo_platform_driver = {
+	.driver = {
+		   .name = "oqo-wmi",
+		   .owner = THIS_MODULE,
+		   },
+	.probe = oqo_platform_probe,
+	.remove = oqo_platform_remove,
+	.suspend = oqo_platform_suspend,
+	.resume = oqo_platform_resume,
+};
+
+static int __init oqo_wmi_init(void)
+{
+	int err;
+
+	dmi_check_system(oqo_dmis);
+
+	if (!interface && force) {
+		model = oqo_models;
+		if (wmi_has_guid(OQO_O2_AMW0_GUID))
+			interface = &AMW0_interface;
+	}
+
+	if (!interface) {
+		printk(OQO_ERR "No or unsupported WMI interface. Aborting.\n");
+		printk(OQO_ERR "Hint: Get dmidecode working and try again.\n");
+		printk(OQO_ERR "(Check \"System Management BIOS\" in BIOS)\n");
+		if (!force)
+			printk(OQO_ERR "Use the force option to skip DMI"
+			       " checking\n");
+		return -ENODEV;
+	}
+
+	err = platform_driver_register(&oqo_platform_driver);
+	if (err) {
+		printk(OQO_ERR "platform_driver_register gave %d.\n", err);
+		goto bail0;
+	}
+
+	oqo_platform_device = platform_device_alloc("oqo-wmi", -1);
+	if (!oqo_platform_device) {
+		printk(OQO_ERR "Could not allocate platform device.\n");
+		err = -ENOMEM;
+		goto bail1;
+	}
+
+	err = platform_device_add(oqo_platform_device);
+	if (err) {
+		printk(OQO_ERR "platform_device_add gave %d.\n", err);
+		platform_device_put(oqo_platform_device);
+		goto bail1;
+	}
+
+	return 0;
+
+bail1:
+	platform_driver_unregister(&oqo_platform_driver);
+bail0:
+	return err;
+}
+
+static void __exit oqo_wmi_fini(void)
+{
+	platform_device_del(oqo_platform_device);
+	platform_driver_unregister(&oqo_platform_driver);
+
+	return;
+}
+
+module_init(oqo_wmi_init);
+module_exit(oqo_wmi_fini);
-- 
1.6.1.76.gc123b


  parent reply	other threads:[~2009-01-09 22:34 UTC|newest]

Thread overview: 3367+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-11-27 19:05 [PATCH] misc: Add oqo-wmi driver for model 2 OQO backlight and rfkill control Matthew Garrett
2008-11-28 19:31 ` Len Brown
2008-11-29  3:35   ` Brian S. Julin
2008-11-29  4:50     ` Matthew Garrett
2008-12-03 19:55       ` Matthew Garrett
2008-12-03 22:55         ` Sven Wegener
2008-12-03 23:00         ` Andrew Morton
2008-12-04  1:28           ` Brian S. Julin
2009-01-09  6:13         ` Len Brown
2009-01-09 12:35           ` Matthew Garrett
2009-01-09 20:09             ` Len Brown
2009-01-09 22:34           ` Len Brown [this message]
2009-01-09 22:34             ` Len Brown
2017-03-28 21:11 (unknown), George Papadrosou
2017-03-30 10:55 (unknown), Sandeepa Prabhu
2017-04-03  6:14 (unknown), Adrian Gillian Bayford
2017-04-03  6:14 (unknown), Adrian Gillian Bayford
2017-04-04 19:31 (unknown), Kristi Nikolla
2017-04-05 16:35 (unknown), bunny43200
2017-04-05 16:53 (unknown), dowen
2017-04-05 17:06 (unknown), kgbok.kezyhumh
2017-04-05 17:30 (unknown), sekretariat.mzagorski-40QDpL200RxmR6Xm/wNWPw
2017-04-05 18:10 (unknown), alters
2017-04-06  6:03 (unknown), bendis.michal
2017-04-06  8:19 (unknown), bendis.michal
2017-04-06 11:45 (unknown), j.lahoda-aRb0bU7PRFPrBKCeMvbIDA
2017-04-06 13:43 (unknown), agiva
2017-04-06 13:49 (unknown), benjamin
2017-04-06 14:05 (unknown), jacqueline.pike
2017-04-06 19:09 (unknown), David Buckley
2017-04-08 19:20 (unknown), jbmplupus-Mmb7MZpHnFY
2017-04-09  0:27 (unknown), simon.a.t.hardy
2017-04-09  2:11 (unknown), jacqueline.pike
2017-04-09  6:12 (unknown), roeper
2017-04-09 14:11 (unknown), carmen.croonquist
2017-04-09 14:27 (unknown), weingart
2017-04-09 15:30 (unknown), jha
2017-04-09 20:48 (unknown), simon.a.t.hardy
2017-04-09 20:49 (unknown), xb1402456186
2017-04-09 21:15 (unknown), ujagu8185-Re5JQEeQqe8AvxtiuMwx3w
2017-04-09 22:03 (unknown), stef.ryckmans
2017-04-09 22:03 (unknown), zem.uchastok
2017-04-09 22:07 (unknown) askeeta
2017-04-10  0:41 (unknown), amin
2017-04-10  3:30 (unknown), hp
2017-04-10  5:46 (unknown), archerrp
2017-04-10  6:51 (unknown), kathleen.gilbert
2017-04-10  8:37 (unknown), kkaplanidou
2017-04-10  9:20 (unknown), nmckenna
2017-04-10 10:18 (unknown), rueggemann
2017-04-10 11:47 (unknown), office
2017-04-11 15:47 (unknown), energi
2017-04-13 15:58 (unknown), Scott Ellentuch
2017-04-14 19:14 (unknown) David Miller
2017-04-15 13:53 (unknown), smallgroups
2017-04-15 14:07 (unknown), energi
2017-04-15 14:16 (unknown), demorton
2017-04-15 15:00 (unknown), jbmplupus-Mmb7MZpHnFY
2017-04-16  3:17 (unknown), resson-epfaOiJH9AY
2017-04-16  3:33 (unknown), ohnesorge-wiek
2017-04-16  6:21 (unknown), shwx002
2017-04-16  8:21 (unknown), jha
2017-04-16  8:52 (unknown), geir.nuland
2017-04-16 15:48 (unknown), redbeardcharters
2017-04-16 16:31 (unknown), a.skucha
2017-04-16 16:37 (unknown), bfoster
2017-04-16 17:41 (unknown) askeeta
2017-04-16 17:44 (unknown), bkjf
2017-04-16 17:49 (unknown), zem.uchastok
2017-04-16 18:30 (unknown), r67
2017-04-16 18:32 (unknown), nathalie.colle
2017-04-16 18:50 (unknown), cbordinaro
2017-04-16 19:08 (unknown), athgregory
2017-04-16 20:59 (unknown), mitch_128
2017-04-16 21:22 (unknown), ujagu8185-Re5JQEeQqe8AvxtiuMwx3w
2017-04-16 22:46 (unknown), tammyehood
2017-04-16 23:02 (unknown), brian
2017-04-16 23:57 (unknown), muirs
2017-04-17  0:43 (unknown), John Ewalt
2017-04-17  2:06 (unknown), rlm85310
2017-04-17  2:26 (unknown), wvhyvcm.abyxg
2017-04-17  3:09 (unknown), bunny43200
2017-04-17  3:38 (unknown), kgbok.kezyhumh
2017-04-17  4:06 (unknown), nkosuta-f+iqBESB6gc
2017-04-17  7:56 (unknown), lucia.germino
2017-04-17  9:12 (unknown), kelley
2017-04-17 12:59 (unknown), openhackbangalore
2017-04-17 14:38 (unknown), energi
2017-04-17 15:20 (unknown), tchidrenplytoo
2017-04-17 18:00 (unknown), j.lahoda-aRb0bU7PRFPrBKCeMvbIDA
2017-04-18  1:56 (unknown), scotte
2017-04-18  2:53 (unknown), h.piontek
2017-04-18 10:57 (unknown) catherine.verge
2017-04-18 16:05 (unknown), rlm85310
2017-04-19  4:29 (unknown), kelley
2017-04-19 16:38 (unknown), amin
2017-04-19 20:46 (unknown), hp
2017-04-20  6:33 (unknown), rueggemann
2017-04-20 12:28 (unknown), h.gerritsen12
2017-04-21  7:38 (unknown), wesley.sydnor
2017-04-21  8:30 (unknown), scotte
2017-04-21  8:36 (unknown), joseph.x.hronec
2017-04-21  9:25 (unknown), delaware.orders
2017-04-21  9:51 (unknown), Kredit
2017-04-21 11:49 (unknown), kathleen.gilbert
2017-04-21 16:59 (unknown) Mr.Jerry Smith
2017-04-21 17:06 (unknown), Mr.Jerry Smith
2017-04-21 17:07 (unknown), Mr.Jerry Smith
2017-04-21 17:15 (unknown), Mr.Jerry Smith
2017-04-21 17:24 (unknown), Mr.Jerry Smith
2017-04-21 17:40 (unknown), Mr.Jerry Smith
2017-04-21 17:44 (unknown), Mr.Jerry Smith
2017-04-21 17:54 (unknown), Mr.Jerry Smith
2017-04-26  3:57 (unknown), prasad padiyar
2017-04-26  7:36 (unknown), glolariu
2017-04-26 11:54 (unknown) Shalini Chellathurai Saroja
2017-04-28  8:20 (unknown), Anatolij Gustschin
2017-04-28  8:36 (unknown), администратор
2017-04-28  8:36 (unknown), администратор
2017-04-28  8:36 (unknown), администратор
2017-04-28  8:36 (unknown), администратор
2017-04-28  9:09 (unknown), администратор
2017-04-29 15:25 (unknown), Dmitry Bazhenov
2017-05-01 18:59 [PATCHv2 1/1] IB/ipoib: add get_settings in ethtool Doug Ledford
     [not found] ` <1493665155.3041.186.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2017-05-04  5:24   ` (unknown), Zhu Yanjun
2017-05-04 13:20 (unknown), Steve French
2017-05-10  7:23 (unknown), kelley
2017-05-11  1:02 (unknown), info
2017-05-14  3:19 (unknown), unixkeeper
2017-05-15 23:19 (unknown), bcohen
2017-05-15 23:49 (unknown), morice.diane
2017-05-16  3:06 (unknown), armiksanaye
2017-05-16  6:37 (unknown), momofr
2017-05-17  7:10 (unknown), 1.10.0812112155390.21775
2017-05-17 10:59 (unknown), anita.traylor
2017-05-17 13:39 (unknown), J Walker
2017-05-17 18:42 (unknown), stef.ryckmans
2017-05-18 13:40 (unknown), hp
2017-05-18 13:41 (unknown), alters
2017-05-18 14:13 (unknown), agiva
2017-05-18 16:47 (unknown), susan.christian
2017-05-18 19:22 (unknown), lucia.germino
2017-05-19  3:34 (unknown), openhackbangalore
2017-05-19  4:32 (unknown), archerrp
2017-05-19  6:45 (unknown), j.lahoda-aRb0bU7PRFPrBKCeMvbIDA
2017-05-19 11:45 (unknown), counselling-30L6jp03H7UtpYsHHOQ6Llpr/1R2p/CL
2017-05-19 12:56 (unknown), kindergartenchaos2
2017-05-19 13:31 (unknown), office
2017-05-19 14:51 (unknown), citydesk
2017-05-19 15:35 (unknown), susan.christian
2017-05-19 16:59 (unknown), zumbalisa
2017-05-20  0:26 (unknown), brian
2017-05-20  0:40 (unknown), sophie.norman
2017-05-20  1:09 (unknown), board
2017-05-20  8:14 (unknown), ecaterinasuciu09
2017-05-20  9:40 (unknown), mgriffit
2017-05-20 11:03 (unknown), pohut00
2017-05-20 11:47 (unknown), john.dahlberg
2017-05-20 12:27 (unknown), ajae
2017-05-20 14:29 (unknown), cv
2017-05-20 16:22 (unknown), alters
2017-05-20 17:45 (unknown), counselling-30L6jp03H7UtpYsHHOQ6Llpr/1R2p/CL
2017-05-20 18:58 (unknown), office
2017-05-20 20:00 (unknown), citydesk
2017-05-20 21:16 (unknown), h.gerritsen12
2017-05-21  8:42 (unknown), brucet
2017-05-21  8:55 (unknown), agiva
2017-05-21  8:55 (unknown), benjamin
2017-05-21  9:17 (unknown), jacqueline.pike
2017-05-21 11:13 (unknown), mariobronti
2017-05-21 11:38 (unknown), susan.christian
2017-05-21 11:59 (unknown), anita.traylor
2017-05-21 13:56 (unknown), sibolt.mulder-b60u5d1xRcFWk0Htik3J/w
2017-05-21 16:36 (unknown), x1kn8fk
2017-05-21 20:35 (unknown), armiksanaye
2017-05-22  0:57 (unknown), mari.kayhko
2017-05-22 16:10 (unknown), mitch_128
2017-05-22 20:39 (unknown), horizon
2017-05-22 22:32 (unknown), patientcentral
2017-05-23  2:19 (unknown), mdavis
2017-05-23  4:53 (unknown), nfrankiyamu
2017-05-23  7:38 (unknown), scotte
2017-05-23  8:42 (unknown), delaware.orders
2017-05-23  9:36 (unknown), bendis.michal
2017-05-23 16:24 (unknown), agiva
2017-05-23 16:29 (unknown), benjamin
2017-05-23 22:44 (unknown), noord-holland
2017-05-24  0:12 (unknown), bcohen
2017-05-24 16:26 (unknown), natasha.glauser
2017-05-26 16:33 (unknown) Anderson McEnany <
2017-05-26 16:33 (unknown) Anderson McEnany <
2017-05-31 11:36 (unknown), p.mueller-spz-hgw-Mmb7MZpHnFY
2017-05-31 14:53 (unknown), tjcrewvolcoordinator-Re5JQEeQqe8AvxtiuMwx3w
2017-06-01  0:43 (unknown), armouralumni
2017-06-01  1:55 (unknown), cdevries
2017-06-01  2:25 (unknown), kbennett
2017-06-01  2:26 (unknown), Dave Airlie
2017-06-01 20:40 (unknown), nbensoncole81
2017-06-02  6:04 (unknown), mari.kayhko
2017-06-02  8:02 (unknown), jessica.jones-PnMVE5gNl/Vkbu+0n/iG1Q
2017-06-03  5:45 (unknown), nfrankiyamu
2017-06-03  7:17 (unknown), nbensoncole81
2017-06-04 10:30 (unknown), Yuval Mintz
2017-06-04 19:55 (unknown), archerrp
2017-06-05  0:03 (unknown), nmckenna
2017-06-05  1:08 (unknown), rueggemann
2017-06-05  4:30 (unknown), citydesk
2017-06-05  5:43 (unknown), h.gerritsen12
2017-06-05 17:32 (unknown), armouralumni
2017-06-06  7:19 (unknown), From Lori J. Robinson
2017-06-06  7:19 (unknown), From Lori J. Robinson
2017-06-06  7:19 (unknown), From Lori J. Robinson
2017-06-06  7:19 (unknown), From Lori J. Robinson
2017-06-06 20:36 (unknown), dengx
2017-06-06 23:46 (unknown), mdavis
2017-06-07  3:19 (unknown), lucia.germino
2017-06-07  7:42 (unknown), morice.diane
2017-06-07 11:43 (unknown), nhossein4212003
2017-06-07 14:00 (unknown), 1.10.0812112155390.21775
2017-06-07 21:54 (unknown), agar2000
2017-06-07 22:30 (unknown), tammyehood
2017-06-08  3:14 (unknown), kgbok.kezyhumh
2017-06-08  3:14 (unknown), agar2000
2017-06-08  5:00 (unknown), noord-holland
2017-06-08  5:41 (unknown), Oliver Carter
2017-06-08 11:31 (unknown), helga.brickl
2017-06-08 12:51 (unknown), koopk
2017-06-08 13:07 (unknown), unsubscribe.me
2017-06-08 13:35 (unknown) Yuval Shaia
2017-06-08 14:09 (unknown), service
2017-06-08 15:18 (unknown), junplzen
2017-06-08 17:26 (unknown), natasha.glauser
2017-06-08 17:59 (unknown), kirola
2017-06-08 18:00 (unknown), beautyink
2017-06-08 22:14 (unknown), bcohen
2017-06-09  0:34 (unknown), richard
2017-06-09  0:39 (unknown), susan.christian
2017-06-09  1:31 (unknown), durrant
2017-06-09  2:06 (unknown), rueggemann
2017-06-09  3:35 (unknown), office
2017-06-09  4:30 (unknown), citydesk
2017-06-09  8:02 (unknown), kholloway
2017-06-09 10:47 (unknown), tjcrewvolcoordinator-Re5JQEeQqe8AvxtiuMwx3w
2017-06-09 12:45 (unknown), Mrs Alice Walton
2017-06-09 17:38 (unknown), nfrankiyamu
2017-06-09 18:57 (unknown), editor
2017-06-09 19:04 (unknown), armouralumni
2017-06-10  5:29 (unknown), agiva
2017-06-10  5:53 (unknown), jacqueline.pike
2017-06-10  7:07 (unknown), Youichi Kanno
2017-06-10  8:23 (unknown), kindergartenchaos2
2017-06-10 13:33 (unknown), iker-KvP5wT2u2U0
2017-06-10 14:34 (unknown), kbennett
2017-06-10 20:24 (unknown), board
2017-06-10 21:03 (unknown), morice.diane
2017-06-10 21:10 (unknown), mbalhoff
2017-06-11  0:20 (unknown), service
2017-06-11  2:29 (unknown), energi
2017-06-11  3:28 (unknown), redaccion
2017-06-11  4:42 (unknown), 1.10.0812112155390.21775
2017-06-11  7:27 (unknown), roeper
2017-06-11 16:35 (unknown), mitch_128
2017-06-11 18:16 (unknown), tammyehood
2017-06-12  7:28 (unknown), webmaster
2017-06-12 10:50 (unknown), sibolt.mulder-b60u5d1xRcFWk0Htik3J/w
2017-06-12 15:02 (unknown), amin
2017-06-12 16:44 (unknown), nfrankiyamu
2017-06-12 17:13 (unknown), armiksanaye
2017-06-12 19:12 (unknown), nhossein4212003
2017-06-12 21:36 (unknown), nbensoncole81
2017-06-13  4:22 (unknown), mitch_128
2017-06-13  4:35 (unknown), ujagu8185-Re5JQEeQqe8AvxtiuMwx3w
2017-06-13  4:53 (unknown), roeper
2017-06-13  8:14 (unknown), horizon
2017-06-13  9:35 (unknown), wvhyvcm.abyxg
2017-06-13  9:59 (unknown), lizdebeth_
2017-06-13 10:15 (unknown), nenep
2017-06-13 11:59 (unknown), susan.christian
2017-06-13 21:38 (unknown), douille.l
2017-06-14  1:06 (unknown), durrant
2017-06-14 10:27 (unknown), susan.christian
2017-06-14 11:42 (unknown), sophie.norman
2017-06-14 12:26 (unknown), sibolt.mulder-b60u5d1xRcFWk0Htik3J/w
2017-06-14 12:27 (unknown), board
2017-06-14 16:39 (unknown), nfrankiyamu
2017-06-14 19:31 (unknown), kholloway
2017-06-14 20:41 (unknown), angers
2017-06-14 21:25 (unknown), koopk
2017-06-14 22:19 (unknown), muirs
2017-06-15  8:37 (unknown), ecaterinasuciu09
2017-06-15 13:50 (unknown), pohut00
2017-06-15 14:56 (unknown), john.dahlberg
2017-06-15 17:35 (unknown), jeffrey.faulkenberg
2017-06-16 14:46 (unknown), roeper
2017-06-16 22:37 (unknown), kelley
2017-06-17 22:46 (unknown), rhsinfo
2017-06-18  3:09 (unknown), agar2000
2017-06-18 13:58 (unknown), membership
2017-06-18 14:27 (unknown), xa0ajutor
2017-06-19  9:36 (unknown), susan.christian
2017-06-19  9:57 (unknown), anita.traylor
2017-06-19 16:53 (unknown), armouralumni
2017-06-19 18:46 (unknown), chrisbi_anelyst
2017-06-19 19:58 (unknown), tjcrewvolcoordinator-Re5JQEeQqe8AvxtiuMwx3w
2017-06-20  0:47 (unknown), durrant
2017-06-20  6:29 (unknown), xa0ajutor
2017-06-20 16:31 (unknown), nfrankiyamu
2017-06-20 17:50 (unknown), editor
2017-06-20 18:45 (unknown), roeper
2017-06-20 22:49 (unknown), redaccion
2017-06-21  4:40 (unknown), kholloway
2017-06-21  6:16 (unknown), angers
2017-06-21  6:23 (unknown), chrisbi_anelyst
2017-06-21  7:32 (unknown), tjcrewvolcoordinator-Re5JQEeQqe8AvxtiuMwx3w
2017-06-21  7:43 (unknown), koopk
2017-06-21 20:10 (unknown), morice.diane
2017-06-22  2:13 (unknown), ecaterinasuciu09
2017-06-22  5:49 (unknown), noord-holland
2017-06-22 13:22 (unknown), jeffrey.faulkenberg
2017-06-22 20:22 (unknown), junplzen
2017-06-22 20:24 (unknown), koopk
2017-06-23  1:43 (unknown), horizon
2017-06-23  2:49 (unknown), mdavis
2017-06-23  4:50 (unknown), nkosuta-f+iqBESB6gc
2017-06-23  6:09 (unknown), Administrator
2017-06-23 12:26 (unknown), archerrp
2017-06-23 17:22 (unknown), richard
2017-06-23 19:27 (unknown), armouralumni
2017-06-24  0:04 (unknown), hastpass
2017-06-24  0:35 (unknown), citydesk
2017-06-24  2:32 (unknown), h.gerritsen12
2017-06-24  8:07 (unknown), j.lahoda-aRb0bU7PRFPrBKCeMvbIDA
2017-06-24 11:55 (unknown), natasha.glauser
2017-06-24 12:38 (unknown), redaccion
2017-06-24 15:03 (unknown), archerrp
2017-06-24 15:41 (unknown), benjamin
2017-06-24 19:38 (unknown), richard
2017-06-25  2:39 (unknown), bflove1-ntQ8I44N4zM
2017-06-25  3:57 (unknown), nfrankiyamu
2017-06-25  4:47 (unknown), h.gerritsen12
2017-06-25  5:14 (unknown), archerrp
2017-06-25  5:19 (unknown), nbensoncole81
2017-06-25 10:21 (unknown), richard
2017-06-25 13:23 (unknown), rueggemann
2017-06-25 16:49 (unknown), agar2000
2017-06-25 18:13 (unknown), citydesk
2017-06-25 20:10 (unknown), h.gerritsen12
2017-06-26  5:21 (unknown) Leon Romanovsky
2017-06-26  9:15 (unknown), beautyink
2017-06-26 10:22 (unknown), p.mueller-spz-hgw-Mmb7MZpHnFY
2017-06-26 15:03 (unknown), richard
2017-06-26 16:10 (unknown), susan.christian
2017-06-26 17:51 (unknown), rueggemann
2017-06-26 19:07 (unknown), eremias
2017-06-26 22:14 (unknown), citydesk
2017-06-26 22:58 (unknown), Anders Lind
2017-06-26 22:58 (unknown), Anders Lind
2017-06-27  0:08 (unknown), h.gerritsen12
2017-06-27  7:12 (unknown), loisc07
2017-06-27  7:15 (unknown), noord-holland
2017-06-27 11:59 (unknown), natasha.glauser
2017-06-28  3:22 (unknown), Administrator
2017-06-28  3:56 (unknown), системы администратор
2017-06-28  3:56 (unknown), системы администратор
2017-06-28  3:56 (unknown), системы администратор
2017-06-28  3:56 (unknown), системы администратор
2017-06-28  3:57 (unknown), системы администратор
2017-06-28 14:22 (unknown), tchidrenplytoo
2017-06-29 10:39 (unknown), lizdebeth_
2017-06-29 12:20 (unknown), The Post Office
2017-06-29 13:46 (unknown), kholloway
2017-06-29 19:05 (unknown), morice.diane
2017-06-30  1:14 (unknown), paloma.depping
2017-06-30  2:53 (unknown), 1.10.0812112155390.21775
2017-06-30  8:29 (unknown), sibolt.mulder-b60u5d1xRcFWk0Htik3J/w
2017-07-01 11:36 (unknown), p.mueller-spz-hgw-Mmb7MZpHnFY
2017-07-01 21:28 (unknown), redaccion
2017-07-02 10:14 (unknown), armouralumni
2017-07-02 18:44 (unknown), tchidrenplytoo
2017-07-02 20:26 (unknown), tabiadhawatef
2017-07-03  1:28 (unknown), h.piontek
2017-07-03  4:44 (unknown), beautyink
2017-07-03 12:43 (unknown), mitch_128
2017-07-03 13:30 (unknown), roeper
2017-07-03 13:54 (unknown), sm-yT/95SBIOhs
2017-07-03 14:13 (unknown), tammyehood
2017-07-04  4:17 (unknown), rueggemann
2017-07-04  6:01 (unknown), xa0ajutor
2017-07-04  8:52 (unknown), citydesk
2017-07-04 10:50 (unknown), h.gerritsen12
2017-07-04 16:38 (unknown), openhackbangalore
2017-07-04 18:35 (unknown), noord-holland
2017-07-04 19:53 (unknown), tchidrenplytoo
2017-07-04 21:02 (unknown), salome.khum
2017-07-04 22:53 (unknown), j.lahoda-aRb0bU7PRFPrBKCeMvbIDA
2017-07-05  0:06 (unknown), michele
2017-07-05  0:55 (unknown), helga.brickl
2017-07-05  6:42 (unknown), angers
2017-07-05  6:55 (unknown), agiva
2017-07-05  7:00 (unknown), benjamin
2017-07-05  8:06 (unknown), koopk
2017-07-05 15:15 (unknown), armouralumni
2017-07-05 15:57 (unknown), sibolt.mulder-b60u5d1xRcFWk0Htik3J/w
2017-07-05 21:18 (unknown), een
2017-07-06  0:55 (unknown), 이성근
2017-07-06  6:10 (unknown), armouralumni
2017-07-06 14:11 (unknown), een
2017-07-06 17:35 (unknown), simon.a.t.hardy
2017-07-07  0:30 (unknown), amin
2017-07-07  1:37 (unknown), zumbalisa
2017-07-07 17:21 (unknown), pooks005
2017-07-08 11:53 (unknown), Alfred chow
2017-07-08 16:07 (unknown), netgalley
2017-07-08 17:13 (unknown), horizon
2017-07-08 18:22 (unknown), Alfred chow
2017-07-08 18:22 (unknown), Alfred chow
2017-07-09 13:02 (unknown), smallgroups
2017-07-09 18:51 (unknown), pooks005
2017-07-09 20:52 (unknown), iker-KvP5wT2u2U0
2017-07-09 23:19 (unknown), Corporate Lenders
2017-07-09 23:19 (unknown), Corporate Lenders
2017-07-09 23:29 (unknown), brian
2017-07-10  3:39 (unknown), системы администратор
2017-07-10  3:45 (unknown), системы администратор
2017-07-10  3:45 (unknown), системы администратор
2017-07-10  3:45 (unknown), системы администратор
2017-07-10  3:45 (unknown), системы администратор
2017-07-10  3:47 (unknown), системы администратор
2017-07-10  4:42 (unknown), lipa
2017-07-10 10:06 (unknown), alters
2017-07-10 12:43 (unknown), brian
2017-07-10 12:51 (unknown), lucia.germino
2017-07-10 21:37 (unknown), roeper
2017-07-10 21:53 (unknown), agiva
2017-07-10 22:07 (unknown), jacqueline.pike
2017-07-11  0:07 (unknown), protecciondatos.es
2017-07-11 16:39 (unknown), indulge-HCInDj6vYHrk4FeknX8I/ZqQE7yCjDx5
2017-07-12  0:42 (unknown), associatebusiness2009
2017-07-12 11:22 (unknown), sterrenplan.kampen
2017-07-12 19:24 (unknown), patientcentral
2017-07-13  2:27 (unknown), tomsue2000
2017-07-13  3:37 (unknown), befragung
2017-07-13  4:49 (unknown), delaware.orders
2017-07-15 12:30 (unknown), Huaisheng HS1 Ye
2017-07-16  7:25 (unknown), kim.frederiksen
2017-07-17  1:09 (unknown), kathleen.gilbert
2017-07-17  1:20 (unknown), tchidrenplytoo
2017-07-17  2:32 (unknown), salome.khum
2017-07-17 15:31 (unknown), kathleen.gilbert
2017-07-17 15:42 (unknown), tchidrenplytoo
2017-07-17 17:30 (unknown), richard
2017-07-17 21:54 (unknown), citydesk
2017-07-17 23:02 (unknown), h.piontek
2017-07-18  4:09 (unknown), armouralumni
2017-07-18  4:32 (unknown), citydesk
2017-07-18  4:50 (unknown), ying.huang-ral2JQCrhuEAvxtiuMwx3w
2017-07-18  5:45 (unknown), h.gerritsen12
2017-07-18  6:22 (unknown), sorbisches.internat
2017-07-18 11:36 (unknown), shwx002
2017-07-18 12:45 (unknown), mitch_128
2017-07-18 13:52 (unknown), stef.ryckmans
2017-07-18 15:56 (unknown), bfoster
2017-07-18 20:17 (unknown), brian
2017-07-18 20:28 (unknown), lizdebeth_
2017-07-18 20:36 (unknown), bunny43200
2017-07-18 23:49 (unknown), helga.brickl
2017-07-19 11:11 (unknown), rhsinfo
2017-07-20  3:55 (unknown), mfr-6k8blvha/+BqlCpFK1mnLg
2017-07-20 18:43 (unknown), tbinh.minhnd
2017-07-23 23:48 (unknown), miteshriya
2017-07-25 10:27 (unknown), nick_c_huang
2017-07-25 14:56 (unknown), nhossein4212003
2017-07-25 16:36 (unknown), susan.christian
2017-07-25 18:45 (unknown), x1kn8fk
2017-07-25 18:53 (unknown), sibolt.mulder-b60u5d1xRcFWk0Htik3J/w
2017-07-25 20:01 (unknown), hp
2017-07-25 20:41 (unknown), sorbisches.internat
2017-07-25 23:24 (unknown), h.gerritsen12
2017-07-26  2:25 (unknown), tammyehood
2017-07-26  4:42 (unknown), horizon
2017-07-26  6:36 (unknown), nenep
2017-07-26 10:32 (unknown), Solen win2
2017-07-26 11:39 (unknown), chrisbi_anelyst
2017-07-26 12:48 (unknown), momofr
2017-07-26 14:20 (unknown), sterrenplan.kampen
2017-07-26 14:35 (unknown), venkatvenkatsubra
2017-07-26 20:08 (unknown), municlerk
2017-07-26 20:45 (unknown), een
2017-07-27  1:25 (unknown), info
2017-07-27  2:14 (unknown) ceph-devel
2017-07-27  2:16 (unknown) ceph-devel
2017-07-27  5:01 (unknown), hp
2017-07-27 13:00 (unknown), nfrankiyamu
2017-07-28  7:17 (unknown), doctornina
2017-07-28  7:44 (unknown), robert.berry
2017-07-28 16:02 (unknown), gdahl
2017-07-30 23:33 (unknown), daven bango
2017-07-31 10:50 (unknown), susan.christian
2017-07-31 11:33 (unknown), rhsinfo
2017-07-31 11:49 (unknown), kchristopher
2017-07-31 13:15 (unknown), sibolt.mulder-b60u5d1xRcFWk0Htik3J/w
2017-07-31 14:52 (unknown), horizon
2017-07-31 16:54 (unknown), bunny43200
2017-07-31 18:00 (unknown), robert.berry
2017-07-31 20:14 (unknown), x1kn8fk
2017-07-31 21:27 (unknown), natasha.glauser
2017-08-01  1:35 (unknown), xa0ajutor
2017-08-01  1:35 (unknown), amin
2017-08-01  3:31 (unknown), helga.brickl
2017-08-01  4:40 (unknown), durrant
2017-08-01 10:07 (unknown) Chris Ruehl
2017-08-01 12:35 (unknown), jha
2017-08-01 14:53 (unknown), Angela H. Whiteman
2017-08-01 16:33 (unknown), sterrenplan.kampen
2017-08-01 19:35 (unknown), anderslindgaard
2017-08-01 19:35 (unknown), anderslindgaard
2017-08-01 20:18 (unknown), stef.ryckmans
2017-08-01 21:03 (unknown), editor
2017-08-01 21:19 (unknown), tammyehood
2017-08-02  0:36 (unknown), richard
2017-08-02  1:05 (unknown), lizdebeth_
2017-08-02  1:19 (unknown), nenep
2017-08-02  3:45 (unknown), системы администратор
2017-08-02  3:45 (unknown), системы администратор
2017-08-02  3:45 (unknown), системы администратор
2017-08-02  3:45 (unknown), системы администратор
2017-08-02  3:45 (unknown), helga.brickl
2017-08-02  3:47 (unknown), системы администратор
2017-08-02  4:12 (unknown), Administrator
2017-08-02 11:47 (unknown), armiksanaye
2017-08-02 12:55 (unknown), tammyehood
2017-08-02 13:58 (unknown), Will
2017-08-02 15:40 (unknown), Erma
2017-08-02 17:07 (unknown), Margery
2017-08-02 17:31 (unknown), Edmond
2017-08-02 18:05 (unknown), Angela-63XfWfWBA5k
2017-08-03  5:21 (unknown), Houston
2017-08-03 14:01 (unknown), Nora Johnson
2017-08-03 19:52 (unknown), natasha.glauser
2017-08-04  5:04 (unknown), durrant
2017-08-04 23:59 (unknown), editor
2017-08-05 11:42 (unknown), Sriram Murthy
2017-08-05 12:35 (unknown), agar2000
2017-08-05 14:08 (unknown), simon.a.t.hardy
2017-08-06 23:55 (unknown), webmaster
2017-08-07  4:49 (unknown), sorbisches.internat
2017-08-07  7:38 (unknown), simon.a.t.hardy
2017-08-07 11:50 (unknown), 1.10.0812112155390.21775
2017-08-07 18:38 (unknown), mitch_128
2017-08-07 18:42 (unknown), susan.christian
2017-08-07 19:03 (unknown), sm-yT/95SBIOhs
2017-08-07 20:25 (unknown), editor
2017-08-07 21:05 (unknown), sibolt.mulder-b60u5d1xRcFWk0Htik3J/w
2017-08-07 23:50 (unknown), wvhyvcm.abyxg
2017-08-08  4:57 (unknown), wesley.sydnor
2017-08-08  5:57 (unknown), befragung
2017-08-08 14:49 (unknown) catherine.verge
2017-08-08 17:09 (unknown), tchidrenplytoo
2017-08-08 19:14 (unknown), eaya
2017-08-08 19:40 (unknown), citydesk
2017-08-08 20:55 (unknown), h.gerritsen12
2017-08-08 21:31 (unknown), michele
2017-08-09  0:04 (unknown), h.piontek
2017-08-09  0:41 (unknown), natasha.glauser
2017-08-09 10:20 (unknown), системы администратор
2017-08-09 10:20 (unknown), системы администратор
2017-08-09 10:20 (unknown), системы администратор
2017-08-09 10:20 (unknown), системы администратор
2017-08-09 10:21 (unknown), системы администратор
2017-08-09 13:53 (unknown), Administrador
2017-08-09 14:34 (unknown), shwx002
2017-08-09 19:36 (unknown), tammyehood
2017-08-09 19:40 (unknown), tchidrenplytoo
2017-08-09 20:25 (unknown), sterrenplan.kampen
2017-08-09 21:55 (unknown), horizon
2017-08-09 22:05 (unknown), helga.brickl
2017-08-09 23:06 (unknown), editor
2017-08-09 23:15 (unknown), wvhyvcm.abyxg
2017-08-09 23:53 (unknown), nenep
2017-08-10  0:03 (unknown), michele
2017-08-10  3:32 (unknown), kholloway
2017-08-10  9:38 (unknown), asn-request-tfHHCSmtYoI
2017-08-10 18:16 (unknown), simon.a.t.hardy
2017-08-10 21:08 (unknown), mitch_128
2017-08-10 21:36 (unknown), shriyashah
2017-08-10 22:02 (unknown), stef.ryckmans
2017-08-11  4:42 (unknown), lizdebeth_
2017-08-11  4:57 (unknown), nenep
2017-08-11  4:59 (unknown), Administrator
2017-08-11  6:08 (unknown), администратор 
2017-08-11  6:14 (unknown), администратор 
2017-08-11  6:14 (unknown), администратор 
2017-08-11  6:14 (unknown), администратор 
2017-08-11  6:14 (unknown), администратор 
2017-08-11  8:54 (unknown), helga.brickl
2017-08-11  9:18 (unknown), jonathan.malihan
2017-08-11 15:50 (unknown), 1.10.0812112155390.21775
2017-08-11 17:28 (unknown), rhsinfo
2017-08-11 20:11 (unknown), tammyehood
2017-08-11 22:09 (unknown), Chris
2017-08-12  1:11 (unknown), lizdebeth_
2017-08-12  1:27 (unknown), nenep
2017-08-12 12:05 (unknown), agar2000
2017-08-13 15:17 (unknown), bunny43200
2017-08-14 14:57 (unknown), linwoodrvsales
2017-08-14 15:35 (unknown), agar2000
2017-08-14 16:53 (unknown), durrant
2017-08-14 17:38 (unknown), amin
2017-08-14 19:30 (unknown), sterrenplan.kampen
2017-08-15  1:55 (unknown), richard
2017-08-15  2:57 (unknown), nfrankiyamu
2017-08-15  3:38 (unknown), rueggemann
2017-08-15  4:40 (unknown), mitch_128
2017-08-15  6:08 (unknown), eumann
2017-08-15  6:50 (unknown), demorton
2017-08-15  8:46 (unknown), ccc
2017-08-15 11:16 (unknown), wvhyvcm.abyxg
2017-08-15 14:23 (unknown), helga.brickl
2017-08-15 14:45 (unknown), een
2017-08-15 17:30 (unknown), simon.a.t.hardy
2017-08-15 17:31 (unknown), nnarroyo623
2017-08-16  2:03 (unknown), xa0ajutor
2017-08-16  5:46 (unknown), kim.frederiksen
2017-08-17 21:36 (unknown), Adam Richter
2017-08-18 17:42 (unknown) Rajneesh Bhardwaj
2017-08-20  2:58 (unknown), Solen win2
2017-08-22 13:31 (unknown), vinnakota chaitanya
2017-08-23  7:23 (unknown), Xuehan Xu
2017-08-25  0:32 (unknown), agiva
2017-08-26  5:43 (unknown), carol.dallstream-WaM/PvcBqAo
2017-08-26 14:48 (unknown), nfrankiyamu
2017-08-27 10:55 (unknown), agar2000
2017-08-28  6:48 (unknown), patientcentral
2017-08-28 13:22 (unknown), dengx
2017-08-28 17:29 (unknown), befragung
2017-08-29  3:02 (unknown) catherine.verge
2017-08-29  5:40 (unknown), morice.diane
2017-08-30  0:38 (unknown), ifalqi
2017-08-30  1:37 (unknown), municlerk
2017-08-30 18:32 [PATCH] default implementation for of_find_all_nodes(...) Artur Lorincz
     [not found] ` <1504117946-3958-1-git-send-email-larturus2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-09-24 15:50   ` (unknown), Artur Lorincz
2017-10-06 19:31   ` (unknown), Artur Lorincz
2017-10-08 16:28   ` (unknown), Artur Lorincz
2017-08-30 19:49 (unknown), susan.christian
2017-08-30 20:26 (unknown), anita.traylor
2017-08-31  0:58 (unknown), info
2017-08-31  1:39 (unknown) m.wierczynska
2017-08-31  4:52 (unknown), archerrp
2017-08-31  8:20 (unknown), jessica.jones-PnMVE5gNl/Vkbu+0n/iG1Q
2017-08-31  9:54 (unknown), info
2017-08-31 12:23 (unknown), mark.robinson
2017-08-31 15:40 (unknown), sterrenplan.kampen
2017-08-31 18:41 (unknown), helga.brickl
2017-09-01  1:48 (unknown), agar2000
2017-09-01  1:48 (unknown), doctornina
2017-09-01  2:30 (unknown), robert.berry
2017-09-01  4:05 (unknown), andrewf
2017-09-01  4:59 (unknown), adriix.addy
2017-09-01  6:21 (unknown), zita.latex
2017-09-01  8:16 (unknown), financialaid
2017-09-01 11:40 (unknown), witt.kohl
2017-09-01 15:00 (unknown), ujagu8185-Re5JQEeQqe8AvxtiuMwx3w
2017-09-01 15:30 (unknown), stef.ryckmans
2017-09-01 19:52 (unknown), sunaina
2017-09-01 20:58 (unknown), wvhyvcm.abyxg
2017-09-01 21:32 (unknown), nenep
2017-09-01 21:57 (unknown), umpvav-YDxpq3io04c
2017-09-01 22:51 (unknown), zumbalisa
2017-09-01 22:55 (unknown), redaccion
2017-09-02  0:58 (unknown), smallgroups
2017-09-02  1:59 (unknown), danielle.picarda2
2017-09-02  2:35 (unknown), jbmplupus-Mmb7MZpHnFY
2017-09-02  2:39 (unknown), een
2017-09-02  2:47 (unknown), nbensoncole81
2017-09-02  6:40 (unknown), simon.a.t.hardy
2017-09-02 23:56 (unknown), netgalley
2017-09-03 21:26 (unknown), cl_luzcc
2017-09-03 21:51 (unknown), xb028930336
2017-09-03 22:54 (unknown), sherrilyn
2017-09-04  2:13 (unknown), x1kn8fk
2017-09-04  2:33 (unknown), marketing
2017-09-04  5:14 (unknown), nelcastellodicarta
2017-09-04 12:17 (unknown), noord-holland
2017-09-04 23:46 (unknown), sterrenplan.kampen
2017-09-05  1:51 (unknown), halinajan-4Uo9UdwAbX8
2017-09-05  2:43 (unknown), xb028930336
2017-09-05 11:11 (unknown), inn
2017-09-05 12:51 (unknown), ifalqi
2017-09-05 14:02 (unknown), ecaterinasuciu09
2017-09-05 16:31 (unknown), mgriffit
2017-09-05 18:07 (unknown), bfoster
2017-09-05 18:38 (unknown), john.dahlberg
2017-09-05 23:34 (unknown), kkaplanidou
2017-09-06  3:57 (unknown), informationrequest
2017-09-07  4:02 (unknown), dengx
2017-09-07  7:05 (unknown), tabiadhawatef
2017-09-10  6:22 (unknown), Youichi Kanno
2017-09-11 19:35 (unknown) Helge Deller
2017-09-11 20:10 (unknown), roeper
2017-09-12 18:53 (unknown), pooks005
2017-09-12 19:16 (unknown), cl_luzcc
2017-09-12 19:45 (unknown), edo.hlaca
2017-09-12 22:07 (unknown), marketing
2017-09-13  4:21 (unknown), natasha.glauser
2017-09-13  8:56 (unknown), kindergartenchaos2
2017-09-15 17:01 (unknown), noreply
2017-09-15 17:29 (unknown), noreply
2017-09-15 17:30 (unknown), noreply
2017-09-19  7:47 (unknown), agar2000
2017-09-20  1:01 (unknown), ninfo
2017-09-21  7:47 (unknown), MAILER-DAEMON
2017-09-22  1:22 (unknown), unsubscribe.me
2017-09-22  1:55 (unknown), dengx
2017-09-22  3:39 (unknown), service
2017-09-22  8:41 (unknown), Adrian Gillian Bayford
2017-09-22 19:34 (unknown), John Michael
2017-09-27 17:41 (unknown), Michael Lyle
2017-09-27 19:12 (unknown), rlm85310
2017-09-27 19:30 (unknown), nbensoncole81
2017-09-28  0:21 (unknown), natasha.glauser
2017-09-28 15:08 (unknown), amin
2017-09-28 22:59 (unknown), rlm85310
2017-09-29  2:48 (unknown), Tina Aaron
2017-09-29  3:06 (unknown), jha
2017-09-29  7:26 (unknown), kelley
2017-09-29  7:44 (unknown), amin
2017-09-29 11:28 (unknown), cl_luzcc
2017-09-29 11:49 (unknown), roeper
2017-09-29 13:49 (unknown), marketing
2017-09-29 14:47 (unknown), nelcastellodicarta
2017-09-29 15:21 (unknown), natasha.glauser
2017-09-29 15:42 (unknown), noord-holland
2017-09-29 18:01 (unknown), clasico082
2017-09-29 21:29 (unknown), info
2017-09-30 14:07 (unknown), redaccion
2017-10-02 15:35 (unknown), nfrankiyamu
2017-10-02 17:38 (unknown), nbensoncole81
2017-10-02 18:00 (unknown), Solen win2
2017-10-02 18:06 (unknown), dengx
2017-10-02 20:31 (unknown), kchristopher
2017-10-03  0:03 (unknown), noord-holland
2017-10-03  0:14 (unknown), roeper
2017-10-03  0:55 (unknown), jbmplupus-Mmb7MZpHnFY
2017-10-03  7:38 (unknown), angers
2017-10-03  8:16 (unknown), morice.diane
2017-10-03  8:40 (unknown), koopk
2017-10-03 10:37 (unknown), edo.hlaca
2017-10-03 12:43 (unknown), marketing
2017-10-03 13:59 (unknown), nelcastellodicarta
2017-10-04  5:56 (unknown), morice.diane
2017-10-04 11:44 (unknown), susan.christian
2017-10-04 15:33 (unknown), membership
2017-10-04 16:11 (unknown), 1.10.0812112155390.21775
2017-10-05  6:53 (unknown), helga.brickl
2017-10-05  7:10 (unknown), mgriffit
2017-10-05 10:20 (unknown), jeffrey.faulkenberg
2017-10-05 14:24 (unknown), informationrequest
2017-10-05 15:34 (unknown), kindergartenchaos2
2017-10-06  1:43 (unknown), sophie.norman
2017-10-06  1:59 (unknown), edo.hlaca
2017-10-06  2:19 (unknown), sherrilyn
2017-10-06  5:16 (unknown), nelcastellodicarta
2017-10-06  8:31 (unknown), smallgroups
2017-10-06 11:55 (unknown), info
2017-10-07  0:31 (unknown), carmen.croonquist
2017-10-07  3:40 (unknown), agar2000
2017-10-07  4:45 (unknown), morice.diane
2017-10-08  1:26 (unknown), redaccion
2017-10-08  7:32 (unknown), cl_luzcc
2017-10-08  7:59 (unknown), edo.hlaca
2017-10-08  9:00 (unknown), pekka.enne
2017-10-08  9:52 (unknown), marketing
2017-10-08 11:08 (unknown), nelcastellodicarta
2017-10-08 14:15 (unknown), clasico082
2017-10-08 19:00 (unknown), matthias.foerster
2017-10-08 22:32 (unknown), natasha.glauser
2017-10-08 23:01 (unknown), susan.christian
2017-10-09  3:44 (unknown), roeper
2017-10-09  6:17 (unknown), durrant
2017-10-09  7:37 (unknown), Michael Lyle
2017-10-09 13:19 (unknown), carmen.croonquist
2017-10-09 15:06 (unknown), jha
2017-10-10 23:27 (unknown), editor
2017-10-11  4:11 (unknown), morice.diane
2017-10-11  7:34 (unknown), cl_luzcc
2017-10-11  8:20 (unknown), sherrilyn
2017-10-11  9:19 (unknown), pekka.enne
2017-10-11 11:49 (unknown), nelcastellodicarta
2017-10-11 19:29 (unknown), info
2017-10-11 19:55 (unknown), kindergartenchaos2
2017-10-11 22:32 (unknown), fwkz4811-DoVvmRvd3PAA2dtGD8cC2w
2017-10-12  3:08 (unknown), iker-KvP5wT2u2U0
2017-10-12  5:55 (unknown), xa0et.sirio
2017-10-12  8:17 (unknown), armouralumni
2017-10-12 11:46 (unknown), sophie.norman
2017-10-12 13:15 (unknown), mbalhoff
2017-10-12 13:53 (unknown), Andrew Clement
2017-10-12 14:09 (unknown), redaccion
2017-10-13  6:16 (unknown), nfrankiyamu
2017-10-13 17:15 (unknown), susan.christian
2017-10-14  6:44 (unknown), Ella Golan
2017-10-15  3:28 (unknown), redaccion
2017-10-15 11:15 (unknown), cl_luzcc
2017-10-15 11:49 (unknown), edo.hlaca
2017-10-15 12:04 (unknown), sherrilyn
2017-10-15 12:17 (unknown), Solen win2
2017-10-15 13:01 (unknown), pekka.enne
2017-10-15 13:57 (unknown), marketing
2017-10-15 15:13 (unknown), nelcastellodicarta
2017-10-15 18:29 (unknown), clasico082
2017-10-15 22:07 (unknown), info
2017-10-16  1:23 (unknown), fwkz4811-DoVvmRvd3PAA2dtGD8cC2w
2017-10-16 11:30 (unknown), kindergartenchaos2
2017-10-16 19:44 (unknown), iker-KvP5wT2u2U0
2017-10-17  0:33 (unknown), membership
2017-10-17  7:00 (unknown), lswedroe
2017-10-17 12:14 (unknown), dengx
2017-10-17 20:28 (unknown), kelley
2017-10-19 20:10 (unknown), pooks005
2017-10-19 22:54 (unknown), armouralumni
2017-10-20  3:19 (unknown), dengx
2017-10-20  8:42 (unknown), membership
2017-10-23 13:52 (unknown), Intl Agency
2017-10-25 12:10 (unknown), EG
2017-10-29  9:46 (unknown), Solen win
2017-11-01 23:35 (unknown), Roy Cockrum Foundation
2017-11-05  3:40 (unknown), Solen win
2017-11-06 19:51 (unknown), Qing Chang
2017-11-12 15:09 (unknown), Friedrich Mayrhofer
2017-11-12 15:09 (unknown), Friedrich Mayrhofer
2017-11-12 15:09 (unknown), Friedrich Mayrhofer
2017-11-12 15:10 (unknown), Mitesh Shah
2017-11-13  3:13 (unknown), Bounced mail
2017-11-15  9:18 (unknown) nanda_kishore_chinna
2017-11-15 14:44 (unknown), Qing Chang
2017-11-16 10:18 (unknown), Michal Hocko
2017-11-19 20:07 (unknown), Mitesh Shah
2017-11-20  2:36 (unknown), Robert Wang
2017-12-01  2:56 (unknown), Post Office
2017-12-01 14:22 (unknown), Rein Appeldoorn
2017-12-07 12:53 (unknown), Sistemas administrador
2017-12-12 16:06 (unknown), Solen win
2017-12-14 16:26 (unknown), Solen win
2017-12-17 17:28 (unknown), Solen win
2017-12-23 15:32 (unknown), 柯弼舜
2017-12-24  2:58 (unknown), 柯弼舜
2017-12-24  9:07 (unknown), Solen win
2017-12-30  2:10 (unknown), Arpit Patel
2017-12-30  4:37 (unknown), Adam Richter
2018-01-02 22:11 (unknown), Mr Sheng Li Hung
2018-01-09 21:23 (unknown), Emile Kenold
2018-01-10 10:27 (unknown), TimGuo
2018-01-11  3:22 (unknown), Active lender@
2018-01-16  2:16 (unknown) Jack.Ma
2018-01-16  2:23 (unknown) Jack.Ma
2018-01-23 13:36 (unknown), Mr Sheng Li Hung
2018-01-23 13:54 (unknown), Mr Sheng Li Hung
2018-01-25  7:23 (unknown), tirumalareddy marri
2018-01-27 13:25 (unknown), Jones
2018-01-27 13:48 (unknown), Jones
2018-01-27 13:48 (unknown), Jones
2018-01-28 17:01 (unknown), whoisthis TG
2018-01-28 17:06 (unknown), whoisthis TG
2018-01-29 14:17 (unknown), Jones
2018-01-29 16:30 (unknown), Jones
2018-01-29 16:30 (unknown), Jones
2018-01-29 16:55 (unknown), Jones
2018-01-29 17:17 (unknown), Jones
2018-01-29 17:17 (unknown), Jones
2018-01-29 17:17 (unknown), Jones
2018-01-29 17:17 (unknown), Jones
2018-01-29 17:17 (unknown), Jones
2018-01-29 17:17 (unknown), Jones
2018-02-02 12:15 (unknown), Robert Vasek
     [not found] <CALfDnQ8aCTywvhqOBkFv3qQOoME9wvTrKbQq8i8PCPOx2iBp=A@mail.gmail.com>
     [not found] ` <CALfDnQ-NihbhS=8C+ZfiKepj5x+Zd5uS2zH82-VrwV40A55s0w@mail.gmail.com>
2018-02-07 10:50   ` (unknown), Solen win
2018-02-08 14:40 (unknown), Automatic Email Delivery Software
2018-02-11  7:19 (unknown), Alfred Cheuk Chow
2018-02-11 16:07 (unknown), glolariu
2018-02-12  1:39 (unknown), Alfred Cheuk Chow
2018-02-12  1:39 (unknown), Alfred Cheuk Chow
2018-02-12  1:39 (unknown), Alfred Cheuk Chow
2018-02-12  1:39 (unknown), Alfred Cheuk Chow
2018-02-13 11:58 (unknown), Solen win
2018-02-13 12:43 (unknown), mavis lilian wanczyk
2018-02-13 22:56 (unknown), Alfred Cheuk Chow
2018-02-13 22:57 (unknown), Alfred Cheuk Chow
2018-02-13 22:57 (unknown), Alfred Cheuk Chow
2018-02-13 22:57 (unknown), Alfred Cheuk Chow
2018-02-13 22:57 (unknown), Alfred Cheuk Chow
2018-02-13 22:59 (unknown), Mitesh Shah
2018-02-17  1:45 (unknown), Ryan Ellis
2018-02-17  8:41 (unknown), Solen win
2018-02-17 15:29 (unknown), Ahmed Soliman
2018-02-23 15:54 (unknown), Adam Richter
     [not found] <[PATCH xf86-video-amdgpu 0/3] Add non-desktop and leasing support>
2018-03-03  4:49 ` (unknown), Keith Packard
2018-03-05 17:06 (unknown) Meghana Madhyastha
2018-03-07  7:48 (unknown), Solen win
2018-03-23  3:05 (unknown), Mail Delivery Subsystem
2018-04-04 13:43 (unknown),  системы администратор
2018-04-06  1:18 (unknown), venkatvenkatsubra
2018-04-16  1:22 (unknown), Andrew Worsley
2018-04-20  8:02 (unknown) Christoph Hellwig
2018-04-20  8:02 ` (unknown), Christoph Hellwig
2018-05-04 15:21 (unknown), Mark Henry
2018-05-05 22:07 (unknown), Shane Missler
2018-05-14  6:33 (unknown), системы администратор
2018-05-14 17:30 (unknown), Jessica
2018-05-18 12:04 (unknown) DaeRyong Jeong
2018-05-25  3:26 (unknown), Bounced mail
2018-05-29  7:26 (unknown), администратор
2018-05-31 17:11 (unknown), Adam Richter via Containers
2018-06-13 15:48 (unknown), Ubaithullah Masood
2018-06-16  8:15 (unknown) Mrs Mavis Wanczyk
2018-06-23 21:08 (unknown), David Lechner
2018-07-05 10:36 (unknown), rosdi ablatiff
2018-07-06  1:26 (unknown), Dave Airlie
2018-07-28 10:14 (unknown), Andrew Martinez
2018-07-28 10:46 (unknown), Andrew Martinez
2018-07-29  9:58 (unknown) Sumitomo Rubber
2018-08-09  9:23 (unknown), системы администратор
2018-08-22  9:07 (unknown), системы администратор
2018-08-24  4:59 (unknown), Dave Airlie
2018-08-27 14:50 (unknown), Christoph Hellwig
2018-09-16 13:39 (unknown), iluminati
2018-09-19 19:57 (unknown), Saif Hasan
2018-10-09 15:55 (unknown), Oliver Carter
2018-10-19 14:40 (unknown), David Howells
2018-10-19 17:46 ` (unknown) David Miller
2018-10-19 20:51 ` (unknown) David Howells
2018-10-19 20:58   ` (unknown) David Miller
2018-10-21 16:25 (unknown), Michael Tirado
2018-10-31  0:38 (unknown), Ubaithullah Masood
2018-11-11  8:05 (unknown), Oliver Carter
2018-11-18  9:11 (unknown), Mrs. Maureen Hinckley
2018-11-18 20:40 (unknown), Major Dennis Hornbeck
2018-11-27  0:07 (unknown), Offer
2019-01-02 12:25 (unknown), Frank Wunderlich
2019-01-15  2:55 (unknown), Jens Axboe
2019-02-28  3:36 (unknown) Post Office
2019-03-01  3:34 (unknown) Automatic Email Delivery Software
2019-03-04  3:42 (unknown) Automatic Email Delivery Software
2019-03-19 14:41 (unknown) Maxim Levitsky
2019-03-21  1:51 (unknown) zhuchangchun
2019-03-29  0:36 (unknown) 邀请函
2019-04-04  5:56 (unknown) Mail Delivery Subsystem
2019-04-05  2:38 (unknown) Changbin Du
2019-04-10 11:14 Norbert Lange
2019-04-10 13:37 ` (unknown) Jan Kiszka
2019-04-10 14:36 ` (unknown) Jan Kiszka
     [not found]   ` <VI1PR05MB5917B5956F2E9365F10D6539F62E0@VI1PR05MB5917.eurprd05.prod.outlook.com>
2019-04-10 14:47     ` (unknown) Jan Kiszka
2019-04-10 15:02       ` (unknown) Lange Norbert
2019-04-10 16:46         ` (unknown) Jan Kiszka
2019-04-10 11:17 Norbert Lange
2019-04-10 14:15 ` (unknown) Jan Kiszka
2019-05-16  3:48 (unknown) Mail Delivery Subsystem
2019-05-26 11:51 (unknown) Thomas Meyer
2019-06-07  0:54 (unknown) Dave Airlie
2019-08-23  2:12 (unknown) Rob Herring
2019-09-12  8:09 (unknown) Gene Chen
2019-12-12 15:50 (unknown) 周琰杰 (Zhou Yanjie)
     [not found] <1187667350.235001.1580574902701.ref@mail.yahoo.com>
2020-02-01 16:35 ` (unknown) Mrs. Maureen Hinckley
2020-02-05  8:23 (unknown) Frau Huan Jlaying
2020-02-11 22:34 (unknown) Rajat Jain
2020-02-15  3:25 (unknown) mprim37 alcorta
2020-02-24  8:18 kernel panic: audit: backlog limit exceeded syzbot
2020-02-24 22:38 ` Paul Moore
2020-02-24 22:43   ` Eric Paris
2020-02-24 22:46     ` Paul Moore
     [not found]       ` <CAHC9VhQnbdJprbdTa_XcgUJaiwhzbnGMWJqHczU54UMk0AFCtw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2020-02-27 15:39         ` (unknown) Dmitry Vyukov via B.A.T.M.A.N
2020-03-04  9:42 (unknown) Julie Leach
2020-03-04 23:30 (unknown) Maria Alessandra Filippi
2020-03-05  0:26 (unknown) Maria Alessandra Filippi
2020-03-05  2:33 (unknown) Maria Alessandra Filippi
2020-03-05 10:46 (unknown) Juanito S. Galang
2020-03-05 10:46 (unknown) Juanito S. Galang
2020-03-05 10:46 (unknown) Juanito S. Galang
2020-03-05 10:46 (unknown) Juanito S. Galang
2020-03-05 10:46 (unknown) Juanito S. Galang
2020-03-05 10:46 (unknown) Juanito S. Galang
2020-03-05 10:47 (unknown) Juanito S. Galang
2020-03-09  7:34 (unknown) Michael J. Weirsky
2020-03-09  7:34 (unknown) Michael J. Weirsky
2020-03-09  7:34 (unknown) Michael J. Weirsky
2020-03-09  7:34 (unknown) Michael J. Weirsky
2020-03-09  7:37 (unknown) Michael J. Weirsky
2020-03-09  8:43 (unknown) Michael J. Weirsky
2020-03-17  0:11 (unknown) David Ibe
2020-03-17  0:11 (unknown) David Ibe
2020-03-27  8:36 (unknown) chenanqing
2020-03-27  9:20 (unknown) chenanqing
2020-04-23 23:06 (unknown) Azim Hashim Premji
2020-04-23 23:06 (unknown) Azim Hashim Premji
2020-05-08 22:58 (unknown) Barbara D Wilkins
2020-05-08 23:41 (unknown) Barbara D Wilkins
2020-05-08 23:51 (unknown) Barbara D Wilkins
2020-06-04 19:57 (unknown) David Shine
     [not found] <1327230475.528260.1591750200327.ref@mail.yahoo.com>
2020-06-10  0:50 ` (unknown) Celine Marchand
2020-06-27 21:52 (unknown) helen
2020-06-27 21:54 (unknown) helen
2020-06-27 21:58 (unknown) lookman joe
2020-06-27 21:58 (unknown) lookman joe
2020-06-27 21:58 (unknown) lookman joe
2020-06-30 17:56 (unknown) Vasiliy Kupriakov
2020-07-02 19:43 (unknown) Barr Anthony Calder
2020-07-22  4:45 (unknown) Darlehen Bedienung
2020-07-22  5:32 (unknown) Darlehen Bedienung
2020-07-22  5:32 (unknown) Darlehen Bedienung
2020-07-22  5:32 (unknown) Darlehen Bedienung

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=alpine.LFD.2.00.0901091731540.20020@localhost.localdomain \
    --to=lenb@kernel.org \
    --cc=bri@abrij.org \
    --cc=greg@kroah.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mjg59@srcf.ucam.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.