All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] Dell Latitude freefall driver (ACPI SMO8800/SMO8810)
@ 2014-05-03 10:47 Pali Rohár
  2014-05-03 10:47 ` [PATCH 1/2] platform: x86: dell-smo8800: " Pali Rohár
  2014-05-03 10:47 ` [PATCH 2/2] Documentation: Rename hpfall.c => freefall.c, fixes for Dell Pali Rohár
  0 siblings, 2 replies; 20+ messages in thread
From: Pali Rohár @ 2014-05-03 10:47 UTC (permalink / raw)
  To: Matthew Garrett, Randy Dunlap
  Cc: linux-kernel, platform-driver-x86, linux-doc, Sonal Santan,
	Pali Rohár

This patch series add dell-smo8800.ko driver and update program hpfall.c

Pali Rohár (2):
  platform: x86: dell-smo8800: Dell Latitude freefall driver (ACPI
    SMO8800/SMO8810)
  Documentation: Rename hpfall.c => freefall.c, fixes for Dell

 Documentation/laptops/00-INDEX      |    4 +-
 Documentation/laptops/freefall.c    |  171 +++++++++++++++++++++++
 Documentation/laptops/hpfall.c      |  146 --------------------
 drivers/platform/x86/Kconfig        |   10 ++
 drivers/platform/x86/Makefile       |    1 +
 drivers/platform/x86/dell-smo8800.c |  253 +++++++++++++++++++++++++++++++++++
 6 files changed, 437 insertions(+), 148 deletions(-)
 create mode 100644 Documentation/laptops/freefall.c
 delete mode 100644 Documentation/laptops/hpfall.c
 create mode 100644 drivers/platform/x86/dell-smo8800.c

-- 
1.7.9.5


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 1/2] platform: x86: dell-smo8800: Dell Latitude freefall driver (ACPI SMO8800/SMO8810)
  2014-05-03 10:47 [PATCH 0/2] Dell Latitude freefall driver (ACPI SMO8800/SMO8810) Pali Rohár
@ 2014-05-03 10:47 ` Pali Rohár
  2014-05-07 16:29   ` One Thousand Gnomes
                     ` (2 more replies)
  2014-05-03 10:47 ` [PATCH 2/2] Documentation: Rename hpfall.c => freefall.c, fixes for Dell Pali Rohár
  1 sibling, 3 replies; 20+ messages in thread
From: Pali Rohár @ 2014-05-03 10:47 UTC (permalink / raw)
  To: Matthew Garrett, Randy Dunlap
  Cc: linux-kernel, platform-driver-x86, linux-doc, Sonal Santan,
	Pali Rohár

This acpi driver provide supports for freefall sensors SMO8800/SMO8810 which
can be found on Dell Latitude laptops. Driver register /dev/freefall misc
device which has same interface as driver hp_accel freefall driver. So any
existing applications for HP freefall sensor /dev/freefall will work for with
this new driver for Dell Latitude laptops too.

Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
Cc: Sonal Santan <sonal.santan@gmail.com>
---
 drivers/platform/x86/Kconfig        |   10 ++
 drivers/platform/x86/Makefile       |    1 +
 drivers/platform/x86/dell-smo8800.c |  253 +++++++++++++++++++++++++++++++++++
 3 files changed, 264 insertions(+)
 create mode 100644 drivers/platform/x86/dell-smo8800.c

diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig
index 27df2c5..f0c2e45 100644
--- a/drivers/platform/x86/Kconfig
+++ b/drivers/platform/x86/Kconfig
@@ -127,6 +127,16 @@ config DELL_WMI_AIO
 	  To compile this driver as a module, choose M here: the module will
 	  be called dell-wmi-aio.
 
+config DELL_SMO8800
+	tristate "Dell Latitude freefall driver (ACPI SMO8800/SMO8810)"
+	depends ON ACPI
+	---help---
+	  Say Y here if you want to support SMO8800/SMO8810 freefall device
+	  on Dell Latitude laptops.
+
+	  To compile this driver as a module, choose M here: the module will
+	  be called dell-smo8800.
+
 
 config FUJITSU_LAPTOP
 	tristate "Fujitsu Laptop Extras"
diff --git a/drivers/platform/x86/Makefile b/drivers/platform/x86/Makefile
index 1a2eafc..c4ca428 100644
--- a/drivers/platform/x86/Makefile
+++ b/drivers/platform/x86/Makefile
@@ -13,6 +13,7 @@ obj-$(CONFIG_COMPAL_LAPTOP)	+= compal-laptop.o
 obj-$(CONFIG_DELL_LAPTOP)	+= dell-laptop.o
 obj-$(CONFIG_DELL_WMI)		+= dell-wmi.o
 obj-$(CONFIG_DELL_WMI_AIO)	+= dell-wmi-aio.o
+obj-$(CONFIG_DELL_SMO8800)	+= dell-smo8800.o
 obj-$(CONFIG_ACER_WMI)		+= acer-wmi.o
 obj-$(CONFIG_ACERHDF)		+= acerhdf.o
 obj-$(CONFIG_HP_ACCEL)		+= hp_accel.o
diff --git a/drivers/platform/x86/dell-smo8800.c b/drivers/platform/x86/dell-smo8800.c
new file mode 100644
index 0000000..4aabb74
--- /dev/null
+++ b/drivers/platform/x86/dell-smo8800.c
@@ -0,0 +1,253 @@
+/*
+ *  dell-smo8800.c - Dell Latitude ACPI SMO8800/SMO8810 freefall sensor driver
+ *
+ *  Copyright (C) 2012 Sonal Santan <sonal.santan@gmail.com>
+ *  Copyright (C) 2014 Pali Rohár <pali.rohar@gmail.com>
+ *
+ *  This is loosely based on lis3lv02d driver.
+ *
+ *  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.
+ */
+
+#define DRIVER_NAME "smo8800"
+#define pr_fmt(fmt) DRIVER_NAME ": " fmt
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/acpi.h>
+#include <linux/interrupt.h>
+#include <linux/miscdevice.h>
+
+struct smo8800_device {
+	u32 irq;                     /* acpi device irq */
+	atomic_t count;              /* count after last read */
+	struct miscdevice miscdev;   /* for /dev/freefall */
+	unsigned long misc_opened;   /* whether the device is open */
+	wait_queue_head_t misc_wait; /* Wait queue for the misc dev */
+	struct device *dev;          /* acpi device */
+};
+
+static irqreturn_t smo8800_interrupt_quick(int irq, void *data)
+{
+	struct smo8800_device *smo8800 = data;
+	atomic_inc(&smo8800->count);
+	wake_up_interruptible(&smo8800->misc_wait);
+	return IRQ_WAKE_THREAD;
+}
+
+static irqreturn_t smo8800_interrupt_thread(int irq, void *data)
+{
+	struct smo8800_device *smo8800 = data;
+	dev_info(smo8800->dev, "detected free fall\n");
+	return IRQ_HANDLED;
+}
+
+static acpi_status smo8800_get_resource(struct acpi_resource *resource,
+					void *context)
+{
+	struct acpi_resource_extended_irq *irq;
+
+	if (resource->type != ACPI_RESOURCE_TYPE_EXTENDED_IRQ)
+		return AE_OK;
+
+	irq = &resource->data.extended_irq;
+	if (!irq || !irq->interrupt_count)
+		return AE_OK;
+
+	*((u32 *)context) = irq->interrupts[0];
+	return AE_CTRL_TERMINATE;
+}
+
+static u32 smo8800_get_irq(struct acpi_device *device)
+{
+	u32 irq = 0;
+	acpi_status status;
+
+	status = acpi_walk_resources(device->handle, METHOD_NAME__CRS,
+				     smo8800_get_resource, &irq);
+	if (ACPI_FAILURE(status)) {
+		dev_err(&device->dev, "acpi_walk_resources failed\n");
+		return 0;
+	}
+
+	return irq;
+}
+
+static ssize_t smo8800_misc_read(struct file *file, char __user *buf,
+				 size_t count, loff_t *pos)
+{
+	struct smo8800_device *smo8800 = container_of(file->private_data,
+					 struct smo8800_device, miscdev);
+
+	DECLARE_WAITQUEUE(wait, current);
+	u32 data;
+	unsigned char byte_data;
+	ssize_t retval = 1;
+
+	if (count < 1)
+		return -EINVAL;
+
+	add_wait_queue(&smo8800->misc_wait, &wait);
+	while (true) {
+		set_current_state(TASK_INTERRUPTIBLE);
+		data = atomic_xchg(&smo8800->count, 0);
+		if (data)
+			break;
+
+		if (file->f_flags & O_NONBLOCK) {
+			retval = -EAGAIN;
+			goto out;
+		}
+
+		if (signal_pending(current)) {
+			retval = -ERESTARTSYS;
+			goto out;
+		}
+
+		schedule();
+	}
+
+	if (data < 255)
+		byte_data = data;
+	else
+		byte_data = 255;
+
+	/* make sure we are not going into copy_to_user() with
+	 * TASK_INTERRUPTIBLE state */
+	set_current_state(TASK_RUNNING);
+	if (copy_to_user(buf, &byte_data, sizeof(byte_data)))
+		retval = -EFAULT;
+
+out:
+	__set_current_state(TASK_RUNNING);
+	remove_wait_queue(&smo8800->misc_wait, &wait);
+
+	return retval;
+}
+
+static int smo8800_misc_open(struct inode *inode, struct file *file)
+{
+	struct smo8800_device *smo8800 = container_of(file->private_data,
+					 struct smo8800_device, miscdev);
+
+	if (test_and_set_bit(0, &smo8800->misc_opened))
+		return -EBUSY; /* already open */
+
+	atomic_set(&smo8800->count, 0);
+	return 0;
+}
+
+static int smo8800_misc_release(struct inode *inode, struct file *file)
+{
+	struct smo8800_device *smo8800 = container_of(file->private_data,
+					 struct smo8800_device, miscdev);
+
+	clear_bit(0, &smo8800->misc_opened); /* release the device */
+	return 0;
+}
+
+static const struct file_operations smo8800_misc_fops = {
+	.owner = THIS_MODULE,
+	.read = smo8800_misc_read,
+	.open = smo8800_misc_open,
+	.release = smo8800_misc_release,
+};
+
+static int smo8800_add(struct acpi_device *device)
+{
+	int err;
+	struct smo8800_device *smo8800;
+
+	if (!device)
+		return -EINVAL;
+
+	smo8800 = devm_kzalloc(&device->dev, sizeof(*smo8800), GFP_KERNEL);
+	if (!smo8800) {
+		dev_err(&device->dev, "failed to allocate device data\n");
+		return -ENOMEM;
+	}
+
+	smo8800->dev = &device->dev;
+	smo8800->miscdev.minor = MISC_DYNAMIC_MINOR;
+	smo8800->miscdev.name = "freefall";
+	smo8800->miscdev.fops = &smo8800_misc_fops;
+
+	init_waitqueue_head(&smo8800->misc_wait);
+
+	err = misc_register(&smo8800->miscdev);
+	if (err) {
+		dev_err(&device->dev, "failed to register misc dev: %d\n", err);
+		return err;
+	}
+
+	atomic_set(&smo8800->count, 0);
+	device->driver_data = smo8800;
+
+	smo8800->irq = smo8800_get_irq(device);
+	if (!smo8800->irq) {
+		dev_err(&device->dev, "failed to obtain IRQ\n");
+		err = -EINVAL;
+		goto error;
+	}
+
+	err = request_threaded_irq(smo8800->irq, smo8800_interrupt_quick,
+				   smo8800_interrupt_thread,
+				   IRQF_TRIGGER_RISING | IRQF_ONESHOT,
+				   DRIVER_NAME, smo8800);
+	if (err) {
+		dev_err(&device->dev,
+			"failed to request thread for IRQ %d: %d\n",
+			smo8800->irq, err);
+		goto error;
+	}
+
+	dev_info(&device->dev, "device /dev/freefall registered with IRQ %d\n",
+		 smo8800->irq);
+	return 0;
+
+error:
+	misc_deregister(&smo8800->miscdev);
+	return err;
+}
+
+static int smo8800_remove(struct acpi_device *device)
+{
+	struct smo8800_device *smo8800 = device->driver_data;
+	free_irq(smo8800->irq, smo8800);
+	misc_deregister(&smo8800->miscdev);
+	dev_info(&device->dev, "device /dev/freefall unregistered\n");
+	return 0;
+}
+
+static const struct acpi_device_id smo8800_ids[] = {
+	{ "SMO8800", 0 },
+	{ "SMO8810", 0 },
+	{ "", 0 },
+};
+
+MODULE_DEVICE_TABLE(acpi, smo8800_ids);
+
+static struct acpi_driver smo8800_driver = {
+	.name = DRIVER_NAME,
+	.class = "Latitude",
+	.ids = smo8800_ids,
+	.ops = {
+		.add = smo8800_add,
+		.remove = smo8800_remove,
+	},
+	.owner = THIS_MODULE,
+};
+
+module_acpi_driver(smo8800_driver);
+
+MODULE_DESCRIPTION("Dell Latitude freefall driver (ACPI SMO8800/SMO8810)");
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Sonal Santan, Pali Rohár");
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 2/2] Documentation: Rename hpfall.c => freefall.c, fixes for Dell
  2014-05-03 10:47 [PATCH 0/2] Dell Latitude freefall driver (ACPI SMO8800/SMO8810) Pali Rohár
  2014-05-03 10:47 ` [PATCH 1/2] platform: x86: dell-smo8800: " Pali Rohár
@ 2014-05-03 10:47 ` Pali Rohár
  2014-06-11  8:02   ` [PATCH v2] " Pali Rohár
  1 sibling, 1 reply; 20+ messages in thread
From: Pali Rohár @ 2014-05-03 10:47 UTC (permalink / raw)
  To: Matthew Garrett, Randy Dunlap
  Cc: linux-kernel, platform-driver-x86, linux-doc, Sonal Santan,
	Pali Rohár

Dell kernel driver dell-smo8800 provides same freefall interface as hp_accel so
program hpfall.c works also on Dell laptops. So rename it to freefall.c.

Dell driver does not provide hp::hddprotect led so make sure that freefall.c
works also if hp::hddprotect does not exist in sysfs.

Additionally write info to syslog.

Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
Cc: Sonal Santan <sonal.santan@gmail.com>
---
 Documentation/laptops/00-INDEX   |    4 +-
 Documentation/laptops/freefall.c |  171 ++++++++++++++++++++++++++++++++++++++
 Documentation/laptops/hpfall.c   |  146 --------------------------------
 3 files changed, 173 insertions(+), 148 deletions(-)
 create mode 100644 Documentation/laptops/freefall.c
 delete mode 100644 Documentation/laptops/hpfall.c

diff --git a/Documentation/laptops/00-INDEX b/Documentation/laptops/00-INDEX
index d13b9a9..d399ae1 100644
--- a/Documentation/laptops/00-INDEX
+++ b/Documentation/laptops/00-INDEX
@@ -8,8 +8,8 @@ disk-shock-protection.txt
 	- information on hard disk shock protection.
 dslm.c
 	- Simple Disk Sleep Monitor program
-hpfall.c
-	- (HP) laptop accelerometer program for disk protection.
+freefall.c
+	- (HP/DELL) laptop accelerometer program for disk protection.
 laptop-mode.txt
 	- how to conserve battery power using laptop-mode.
 sony-laptop.txt
diff --git a/Documentation/laptops/freefall.c b/Documentation/laptops/freefall.c
new file mode 100644
index 0000000..4d4d90a
--- /dev/null
+++ b/Documentation/laptops/freefall.c
@@ -0,0 +1,171 @@
+/* Disk protection for HP/DELL machines.
+ *
+ * Copyright 2008 Eric Piel
+ * Copyright 2009 Pavel Machek <pavel@ucw.cz>
+ * Copyright 2012 Sonal Santan
+ * Copyright 2014 Pali Rohár <pali.rohar@gmail.com>
+ *
+ * GPLv2.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <string.h>
+#include <stdint.h>
+#include <errno.h>
+#include <signal.h>
+#include <sys/mman.h>
+#include <sched.h>
+#include <syslog.h>
+
+static int noled;
+static char unload_heads_path[64];
+static char device_path[32];
+static const char app_name[] = "FREE FALL";
+
+static int set_unload_heads_path(char *device)
+{
+	char devname[64];
+
+	if (strlen(device) <= 5 || strncmp(device, "/dev/", 5) != 0)
+		return -EINVAL;
+	strncpy(devname, device + 5, sizeof(devname) - 1);
+	strncpy(device_path, device, sizeof(device_path) - 1);
+
+	snprintf(unload_heads_path, sizeof(unload_heads_path) - 1,
+				"/sys/block/%s/device/unload_heads", devname);
+	return 0;
+}
+
+static int valid_disk(void)
+{
+	int fd = open(unload_heads_path, O_RDONLY);
+	if (fd < 0) {
+		perror(unload_heads_path);
+		return 0;
+	}
+
+	close(fd);
+	return 1;
+}
+
+static void write_int(char *path, int i)
+{
+	char buf[1024];
+	int fd = open(path, O_RDWR);
+	if (fd < 0) {
+		perror("open");
+		exit(1);
+	}
+	sprintf(buf, "%d", i);
+	if (write(fd, buf, strlen(buf)) != strlen(buf)) {
+		perror("write");
+		exit(1);
+	}
+	close(fd);
+}
+
+static void set_led(int on)
+{
+	if (noled)
+		return;
+	write_int("/sys/class/leds/hp::hddprotect/brightness", on);
+}
+
+static void protect(int seconds)
+{
+	const char *str = (seconds == 0) ? "Unparked" : "Parked";
+	write_int(unload_heads_path, seconds*1000);
+	syslog(LOG_INFO, "%s %s disk head\n", str, device_path);
+}
+
+static int on_ac(void)
+{
+	/* /sys/class/power_supply/AC0/online */
+	return 1;
+}
+
+static int lid_open(void)
+{
+	/* /proc/acpi/button/lid/LID/state */
+	return 1;
+}
+
+static void ignore_me(int signum)
+{
+	protect(0);
+	set_led(0);
+}
+
+int main(int argc, char **argv)
+{
+	int fd, ret;
+	struct stat st;
+	struct sched_param param;
+
+	if (argc == 1)
+		ret = set_unload_heads_path("/dev/sda");
+	else if (argc == 2)
+		ret = set_unload_heads_path(argv[1]);
+	else
+		ret = -EINVAL;
+
+	if (ret || !valid_disk()) {
+		fprintf(stderr, "usage: %s <device> (default: /dev/sda)\n",
+				argv[0]);
+		exit(1);
+	}
+
+	fd = open("/dev/freefall", O_RDONLY);
+	if (fd < 0) {
+		perror("/dev/freefall");
+		return EXIT_FAILURE;
+	}
+
+	if (stat("/sys/class/leds/hp::hddprotect/brightness", &st))
+		noled = 1;
+
+	if (daemon(0, 0) != 0) {
+		perror("daemon");
+		return EXIT_FAILURE;
+	}
+
+	openlog(app_name,  LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
+
+	param.sched_priority = sched_get_priority_max(SCHED_FIFO);
+	sched_setscheduler(0, SCHED_FIFO, &param);
+	mlockall(MCL_CURRENT|MCL_FUTURE);
+
+	signal(SIGALRM, ignore_me);
+
+	for (;;) {
+		unsigned char count;
+
+		ret = read(fd, &count, sizeof(count));
+		alarm(0);
+		if ((ret == -1) && (errno == EINTR)) {
+			/* Alarm expired, time to unpark the heads */
+			continue;
+		}
+
+		if (ret != sizeof(count)) {
+			perror("read");
+			break;
+		}
+
+		protect(21);
+		set_led(1);
+		if (1 || on_ac() || lid_open())
+			alarm(2);
+		else
+			alarm(20);
+	}
+
+	closelog();
+	close(fd);
+	return EXIT_SUCCESS;
+}
diff --git a/Documentation/laptops/hpfall.c b/Documentation/laptops/hpfall.c
deleted file mode 100644
index b85dbba..0000000
--- a/Documentation/laptops/hpfall.c
+++ /dev/null
@@ -1,146 +0,0 @@
-/* Disk protection for HP machines.
- *
- * Copyright 2008 Eric Piel
- * Copyright 2009 Pavel Machek <pavel@ucw.cz>
- *
- * GPLv2.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <string.h>
-#include <stdint.h>
-#include <errno.h>
-#include <signal.h>
-#include <sys/mman.h>
-#include <sched.h>
-
-char unload_heads_path[64];
-
-int set_unload_heads_path(char *device)
-{
-	char devname[64];
-
-	if (strlen(device) <= 5 || strncmp(device, "/dev/", 5) != 0)
-		return -EINVAL;
-	strncpy(devname, device + 5, sizeof(devname));
-
-	snprintf(unload_heads_path, sizeof(unload_heads_path) - 1,
-				"/sys/block/%s/device/unload_heads", devname);
-	return 0;
-}
-int valid_disk(void)
-{
-	int fd = open(unload_heads_path, O_RDONLY);
-	if (fd < 0) {
-		perror(unload_heads_path);
-		return 0;
-	}
-
-	close(fd);
-	return 1;
-}
-
-void write_int(char *path, int i)
-{
-	char buf[1024];
-	int fd = open(path, O_RDWR);
-	if (fd < 0) {
-		perror("open");
-		exit(1);
-	}
-	sprintf(buf, "%d", i);
-	if (write(fd, buf, strlen(buf)) != strlen(buf)) {
-		perror("write");
-		exit(1);
-	}
-	close(fd);
-}
-
-void set_led(int on)
-{
-	write_int("/sys/class/leds/hp::hddprotect/brightness", on);
-}
-
-void protect(int seconds)
-{
-	write_int(unload_heads_path, seconds*1000);
-}
-
-int on_ac(void)
-{
-//	/sys/class/power_supply/AC0/online
-}
-
-int lid_open(void)
-{
-//	/proc/acpi/button/lid/LID/state
-}
-
-void ignore_me(void)
-{
-	protect(0);
-	set_led(0);
-}
-
-int main(int argc, char **argv)
-{
-	int fd, ret;
-	struct sched_param param;
-
-	if (argc == 1)
-		ret = set_unload_heads_path("/dev/sda");
-	else if (argc == 2)
-		ret = set_unload_heads_path(argv[1]);
-	else
-		ret = -EINVAL;
-
-	if (ret || !valid_disk()) {
-		fprintf(stderr, "usage: %s <device> (default: /dev/sda)\n",
-				argv[0]);
-		exit(1);
-	}
-
-	fd = open("/dev/freefall", O_RDONLY);
-	if (fd < 0) {
-		perror("/dev/freefall");
-		return EXIT_FAILURE;
-	}
-
-	daemon(0, 0);
-	param.sched_priority = sched_get_priority_max(SCHED_FIFO);
-	sched_setscheduler(0, SCHED_FIFO, &param);
-	mlockall(MCL_CURRENT|MCL_FUTURE);
-
-	signal(SIGALRM, ignore_me);
-
-	for (;;) {
-		unsigned char count;
-
-		ret = read(fd, &count, sizeof(count));
-		alarm(0);
-		if ((ret == -1) && (errno == EINTR)) {
-			/* Alarm expired, time to unpark the heads */
-			continue;
-		}
-
-		if (ret != sizeof(count)) {
-			perror("read");
-			break;
-		}
-
-		protect(21);
-		set_led(1);
-		if (1 || on_ac() || lid_open())
-			alarm(2);
-		else
-			alarm(20);
-	}
-
-	close(fd);
-	return EXIT_SUCCESS;
-}
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* Re: [PATCH 1/2] platform: x86: dell-smo8800: Dell Latitude freefall driver (ACPI SMO8800/SMO8810)
  2014-05-03 10:47 ` [PATCH 1/2] platform: x86: dell-smo8800: " Pali Rohár
@ 2014-05-07 16:29   ` One Thousand Gnomes
  2014-05-20  7:00   ` Valdis.Kletnieks
  2014-05-22 11:15   ` [PATCH v2] " Pali Rohár
  2 siblings, 0 replies; 20+ messages in thread
From: One Thousand Gnomes @ 2014-05-07 16:29 UTC (permalink / raw)
  To: Pali Rohár
  Cc: Matthew Garrett, Randy Dunlap, linux-kernel, platform-driver-x86,
	linux-doc, Sonal Santan

> +static irqreturn_t smo8800_interrupt_quick(int irq, void *data)
> +{
> +	struct smo8800_device *smo8800 = data;
> +	atomic_inc(&smo8800->count);
> +	wake_up_interruptible(&smo8800->misc_wait);
> +	return IRQ_WAKE_THREAD;
> +}
> +
> +static irqreturn_t smo8800_interrupt_thread(int irq, void *data)
> +{
> +	struct smo8800_device *smo8800 = data;
> +	dev_info(smo8800->dev, "detected free fall\n");

printk should be fast enough not to justify a thread, in fact the
threaded IRQ overhead is going to be higher than the printk IMHO.

I'm not entirely sure a printk is the useful response here either ?


> +static ssize_t smo8800_misc_read(struct file *file, char __user *buf,
> +				 size_t count, loff_t *pos)
> +{
> +	struct smo8800_device *smo8800 = container_of(file->private_data,
> +					 struct smo8800_device, miscdev);
> +
> +	DECLARE_WAITQUEUE(wait, current);
> +	u32 data;
> +	unsigned char byte_data;
> +	ssize_t retval = 1;
> +
> +	if (count < 1)
> +		return -EINVAL;

How can this occur ??

> +
> +	add_wait_queue(&smo8800->misc_wait, &wait);
> +	while (true) {
> +		set_current_state(TASK_INTERRUPTIBLE);
> +		data = atomic_xchg(&smo8800->count, 0);
> +		if (data)
> +			break;
> +
> +		if (file->f_flags & O_NONBLOCK) {
> +			retval = -EAGAIN;
> +			goto out;
> +		}
> +
> +		if (signal_pending(current)) {
> +			retval = -ERESTARTSYS;
> +			goto out;
> +		}
> +
> +		schedule();
> +	}

wait_event_interruptible ?

> +	if (copy_to_user(buf, &byte_data, sizeof(byte_data)))
> +		retval = -EFAULT;

put_user


> +static int smo8800_add(struct acpi_device *device)
> +{
> +	int err;
> +	struct smo8800_device *smo8800;
> +
> +	if (!device)
> +		return -EINVAL;

How can this occur ??

> +	atomic_set(&smo8800->count, 0);

Not needed - you can't see a count until it is open

> +	dev_info(&device->dev, "device /dev/freefall registered with IRQ %d\n",
> +		 smo8800->irq);

dev_dbg would be more appropriate. If every driver reported its
registration we'd drown in logs

> +	dev_info(&device->dev, "device /dev/freefall unregistered\n");

Ditto


Alan

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 1/2] platform: x86: dell-smo8800: Dell Latitude freefall driver (ACPI SMO8800/SMO8810)
  2014-05-03 10:47 ` [PATCH 1/2] platform: x86: dell-smo8800: " Pali Rohár
  2014-05-07 16:29   ` One Thousand Gnomes
@ 2014-05-20  7:00   ` Valdis.Kletnieks
  2014-05-20  8:56     ` Pali Rohár
  2014-05-22 11:15   ` [PATCH v2] " Pali Rohár
  2 siblings, 1 reply; 20+ messages in thread
From: Valdis.Kletnieks @ 2014-05-20  7:00 UTC (permalink / raw)
  To: Pali Rohár
  Cc: Matthew Garrett, Randy Dunlap, linux-kernel, platform-driver-x86,
	linux-doc, Sonal Santan

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

On Sat, 03 May 2014 12:47:56 +0200, Pali Rohár said:
> This acpi driver provide supports for freefall sensors SMO8800/SMO8810 which
> can be found on Dell Latitude laptops. Driver register /dev/freefall misc
> device which has same interface as driver hp_accel freefall driver. So any
> existing applications for HP freefall sensor /dev/freefall will work for with
> this new driver for Dell Latitude laptops too.

So just for grins, I tossed this patchset on top of next-20140519, and
it actually works on my Dell Latitude E6530. Tested with a controlled
drop of 3-4 inches, and I get the distinctive sound of a head park, and
the following in /var/log/messages:

May 20 02:46:22 turing-police kernel: [18839.158926] smo8800 SMO8810:00: detected free fall
May 20 02:46:22 turing-police FREE FALL[1337]: Parked /dev/sda disk head
May 20 02:46:24 turing-police FREE FALL[1337]: Unparked /dev/sda disk head

I did a quick read-through of the code, looks OK.  checkpatch complains about
missing blank lines after declarations in 3-4 places. Sparse and gcc have no
complaints. We've certainly merged much uglier code.  And it certainly makes
the world a better place for us Dell users.

So it's OK by me if Pali adds this to the signoffs after fixing the
checkpatch and the one serious nit below....

Tested-By: Valdis Kletnieks <valdis.kletnieks@vt.edu>
Acked-By: Valdis Kletnieks <valdis.kletnieks@vt.edu>

One nit:

> --- a/drivers/platform/x86/Kconfig
> +++ b/drivers/platform/x86/Kconfig
> @@ -127,6 +127,16 @@ config DELL_WMI_AIO
>  	  To compile this driver as a module, choose M here: the module will
>  	  be called dell-wmi-aio.
>  
> +config DELL_SMO8800
> +	tristate "Dell Latitude freefall driver (ACPI SMO8800/SMO8810)"
> +	depends ON ACPI

Lowercase ON.  Not sure how this escaped, Kbuild barfs on it.


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

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 1/2] platform: x86: dell-smo8800: Dell Latitude freefall driver (ACPI SMO8800/SMO8810)
  2014-05-20  7:00   ` Valdis.Kletnieks
@ 2014-05-20  8:56     ` Pali Rohár
  2014-05-20 18:02       ` Valdis.Kletnieks
  0 siblings, 1 reply; 20+ messages in thread
From: Pali Rohár @ 2014-05-20  8:56 UTC (permalink / raw)
  To: Valdis.Kletnieks
  Cc: Matthew Garrett, Randy Dunlap, linux-kernel, platform-driver-x86,
	linux-doc, Sonal Santan

[-- Attachment #1: Type: Text/Plain, Size: 2528 bytes --]

On Tuesday 20 May 2014 09:00:05 Valdis.Kletnieks@vt.edu wrote:
> On Sat, 03 May 2014 12:47:56 +0200, Pali Rohár said:
> > This acpi driver provide supports for freefall sensors
> > SMO8800/SMO8810 which can be found on Dell Latitude
> > laptops. Driver register /dev/freefall misc device which
> > has same interface as driver hp_accel freefall driver. So
> > any existing applications for HP freefall sensor
> > /dev/freefall will work for with this new driver for Dell
> > Latitude laptops too.
> 
> So just for grins, I tossed this patchset on top of
> next-20140519, and it actually works on my Dell Latitude
> E6530. Tested with a controlled drop of 3-4 inches, and I get
> the distinctive sound of a head park, and the following in
> /var/log/messages:
> 
> May 20 02:46:22 turing-police kernel: [18839.158926] smo8800
> SMO8810:00: detected free fall May 20 02:46:22 turing-police
> FREE FALL[1337]: Parked /dev/sda disk head May 20 02:46:24
> turing-police FREE FALL[1337]: Unparked /dev/sda disk head
> 
> I did a quick read-through of the code, looks OK.  checkpatch
> complains about missing blank lines after declarations in 3-4
> places. Sparse and gcc have no complaints. We've certainly
> merged much uglier code.  And it certainly makes the world a
> better place for us Dell users.
> 

Hm? Which errors? Here is output from checkpacth:

total: 0 errors, 0 warnings, 276 lines checked

0001-platform-x86-dell-smo8800-Dell-Latitude-freefall-dri.patch 
has no obvious style problems and is ready for submission.

total: 0 errors, 0 warnings, 181 lines checked

0002-Documentation-Rename-hpfall.c-freefall.c-fixes-for-D.patch 
has no obvious style problems and is ready for submission.

> So it's OK by me if Pali adds this to the signoffs after
> fixing the checkpatch and the one serious nit below....
> 
> Tested-By: Valdis Kletnieks <valdis.kletnieks@vt.edu>
> Acked-By: Valdis Kletnieks <valdis.kletnieks@vt.edu>
> 
> One nit:
> > --- a/drivers/platform/x86/Kconfig
> > +++ b/drivers/platform/x86/Kconfig
> > @@ -127,6 +127,16 @@ config DELL_WMI_AIO
> > 
> >  	  To compile this driver as a module, choose M here: the
> >  	  module will be called dell-wmi-aio.
> > 
> > +config DELL_SMO8800
> > +	tristate "Dell Latitude freefall driver (ACPI
> > SMO8800/SMO8810)" +	depends ON ACPI
> 
> Lowercase ON.  Not sure how this escaped, Kbuild barfs on it.

I will send new version with some changes from Sonal.

-- 
Pali Rohár
pali.rohar@gmail.com

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 1/2] platform: x86: dell-smo8800: Dell Latitude freefall driver (ACPI SMO8800/SMO8810)
  2014-05-20  8:56     ` Pali Rohár
@ 2014-05-20 18:02       ` Valdis.Kletnieks
  2014-05-20 18:10         ` Pali Rohár
  0 siblings, 1 reply; 20+ messages in thread
From: Valdis.Kletnieks @ 2014-05-20 18:02 UTC (permalink / raw)
  To: Pali Rohár
  Cc: Matthew Garrett, Randy Dunlap, linux-kernel, platform-driver-x86,
	linux-doc, Sonal Santan

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

On Tue, 20 May 2014 10:56:47 +0200, Pali Rohár said:

> Hm? Which errors? Here is output from checkpacth:
>
> total: 0 errors, 0 warnings, 276 lines checked
>
> 0001-platform-x86-dell-smo8800-Dell-Latitude-freefall-dri.patch
> has no obvious style problems and is ready for submission.
>
> total: 0 errors, 0 warnings, 181 lines checked
>
> 0002-Documentation-Rename-hpfall.c-freefall.c-fixes-for-D.patch
> has no obvious style problems and is ready for submission.

Hmm.. what tree are you building against?  I wonder if your checkpatch is
a different version than mine (next-20140519).  What I see:

[/usr/src/linux-next] scripts/checkpatch.pl patches/freefall.1
WARNING: Missing a blank line after declarations
#135: FILE: drivers/platform/x86/dell-smo8800.c:41:
+       struct smo8800_device *smo8800 = data;
+       atomic_inc(&smo8800->count);

WARNING: Missing a blank line after declarations
#143: FILE: drivers/platform/x86/dell-smo8800.c:49:
+       struct smo8800_device *smo8800 = data;
+       dev_info(smo8800->dev, "detected free fall\n");

WARNING: Missing a blank line after declarations
#318: FILE: drivers/platform/x86/dell-smo8800.c:224:
+       struct smo8800_device *smo8800 = device->driver_data;
+       free_irq(smo8800->irq, smo8800);

total: 0 errors, 3 warnings, 276 lines checked

patches/freefall.1 has style problems, please review.

[/usr/src/linux-next] scripts/checkpatch.pl patches/freefall.2
WARNING: Missing a blank line after declarations
#126: FILE: Documentation/laptops/freefall.c:47:
+       int fd = open(unload_heads_path, O_RDONLY);
+       if (fd < 0) {

WARNING: Missing a blank line after declarations
#139: FILE: Documentation/laptops/freefall.c:60:
+       int fd = open(path, O_RDWR);
+       if (fd < 0) {

WARNING: Missing a blank line after declarations
#161: FILE: Documentation/laptops/freefall.c:82:
+       const char *str = (seconds == 0) ? "Unparked" : "Parked";
+       write_int(unload_heads_path, seconds*1000);

total: 0 errors, 3 warnings, 181 lines checked



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

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 1/2] platform: x86: dell-smo8800: Dell Latitude freefall driver (ACPI SMO8800/SMO8810)
  2014-05-20 18:02       ` Valdis.Kletnieks
@ 2014-05-20 18:10         ` Pali Rohár
  2014-05-20 18:36           ` Valdis.Kletnieks
  0 siblings, 1 reply; 20+ messages in thread
From: Pali Rohár @ 2014-05-20 18:10 UTC (permalink / raw)
  To: Valdis.Kletnieks
  Cc: Matthew Garrett, Randy Dunlap, linux-kernel, platform-driver-x86,
	linux-doc, Sonal Santan

[-- Attachment #1: Type: Text/Plain, Size: 943 bytes --]

On Tuesday 20 May 2014 20:02:41 Valdis.Kletnieks@vt.edu wrote:
> On Tue, 20 May 2014 10:56:47 +0200, Pali Rohár said:
> > Hm? Which errors? Here is output from checkpacth:
> > 
> > total: 0 errors, 0 warnings, 276 lines checked
> > 
> > 0001-platform-x86-dell-smo8800-Dell-Latitude-freefall-dri.pa
> > tch has no obvious style problems and is ready for
> > submission.
> > 
> > total: 0 errors, 0 warnings, 181 lines checked
> > 
> > 0002-Documentation-Rename-hpfall.c-freefall.c-fixes-for-D.pa
> > tch has no obvious style problems and is ready for
> > submission.
> 
> Hmm.. what tree are you building against?  I wonder if your
> checkpatch is a different version than mine (next-20140519). 

I'm using up-to-date linus tree, git rev 
60b5f90d0fac7585f1a43ccdad06787b97eda0ab

$ sha1sum scripts/checkpatch.pl
979ad287faf59d84d78825595ec97513a9d46fba  scripts/checkpatch.pl

-- 
Pali Rohár
pali.rohar@gmail.com

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 1/2] platform: x86: dell-smo8800: Dell Latitude freefall driver (ACPI SMO8800/SMO8810)
  2014-05-20 18:10         ` Pali Rohár
@ 2014-05-20 18:36           ` Valdis.Kletnieks
  0 siblings, 0 replies; 20+ messages in thread
From: Valdis.Kletnieks @ 2014-05-20 18:36 UTC (permalink / raw)
  To: Pali Rohár
  Cc: Matthew Garrett, Randy Dunlap, linux-kernel, platform-driver-x86,
	linux-doc, Sonal Santan

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

On Tue, 20 May 2014 20:10:28 +0200, Pali Rohár said:

> > Hmm.. what tree are you building against?  I wonder if your
> > checkpatch is a different version than mine (next-20140519).
> 
> I'm using up-to-date linus tree, git rev
> 60b5f90d0fac7585f1a43ccdad06787b97eda0ab

Ah, OK.  Linux-next tree has a bunch of changes to checkpatch.pl that
will probably go into the Linus tree during the next merge window, and
several of them address the "blank line after declarations" warning - they
roughly tripled the number of checks made for that case....

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

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH v2] platform: x86: dell-smo8800: Dell Latitude freefall driver (ACPI SMO8800/SMO8810)
  2014-05-03 10:47 ` [PATCH 1/2] platform: x86: dell-smo8800: " Pali Rohár
  2014-05-07 16:29   ` One Thousand Gnomes
  2014-05-20  7:00   ` Valdis.Kletnieks
@ 2014-05-22 11:15   ` Pali Rohár
  2014-05-28 13:31     ` Pali Rohár
  2 siblings, 1 reply; 20+ messages in thread
From: Pali Rohár @ 2014-05-22 11:15 UTC (permalink / raw)
  To: Matthew Garrett, Randy Dunlap, Valdis.Kletnieks
  Cc: linux-kernel, platform-driver-x86, One Thousand Gnomes,
	Pali Rohár, Sonal Santan

This acpi driver provide supports for freefall sensors SMO8800/SMO8810 which
can be found on Dell Latitude laptops. Driver register /dev/freefall misc
device which has same interface as driver hp_accel freefall driver. So any
existing applications for HP freefall sensor /dev/freefall will work for with
this new driver for Dell Latitude laptops too.

Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
Cc: Sonal Santan <sonal.santan@gmail.com>
Tested-By: Valdis Kletnieks <valdis.kletnieks@vt.edu>
Acked-By: Valdis Kletnieks <valdis.kletnieks@vt.edu>
---
Changes since v1:
* Fixed warnings: Missing a blank line after declarations
* Fixed Lowercase ON in Kconfig
* Fixed Alan's review problems by Sonal Santan
---
 drivers/platform/x86/Kconfig        |   10 ++
 drivers/platform/x86/Makefile       |    1 +
 drivers/platform/x86/dell-smo8800.c |  233 +++++++++++++++++++++++++++++++++++
 3 files changed, 244 insertions(+)
 create mode 100644 drivers/platform/x86/dell-smo8800.c

diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig
index 27df2c5..0e80401 100644
--- a/drivers/platform/x86/Kconfig
+++ b/drivers/platform/x86/Kconfig
@@ -127,6 +127,16 @@ config DELL_WMI_AIO
 	  To compile this driver as a module, choose M here: the module will
 	  be called dell-wmi-aio.
 
+config DELL_SMO8800
+	tristate "Dell Latitude freefall driver (ACPI SMO8800/SMO8810)"
+	depends on ACPI
+	---help---
+	  Say Y here if you want to support SMO8800/SMO8810 freefall device
+	  on Dell Latitude laptops.
+
+	  To compile this driver as a module, choose M here: the module will
+	  be called dell-smo8800.
+
 
 config FUJITSU_LAPTOP
 	tristate "Fujitsu Laptop Extras"
diff --git a/drivers/platform/x86/Makefile b/drivers/platform/x86/Makefile
index 1a2eafc..c4ca428 100644
--- a/drivers/platform/x86/Makefile
+++ b/drivers/platform/x86/Makefile
@@ -13,6 +13,7 @@ obj-$(CONFIG_COMPAL_LAPTOP)	+= compal-laptop.o
 obj-$(CONFIG_DELL_LAPTOP)	+= dell-laptop.o
 obj-$(CONFIG_DELL_WMI)		+= dell-wmi.o
 obj-$(CONFIG_DELL_WMI_AIO)	+= dell-wmi-aio.o
+obj-$(CONFIG_DELL_SMO8800)	+= dell-smo8800.o
 obj-$(CONFIG_ACER_WMI)		+= acer-wmi.o
 obj-$(CONFIG_ACERHDF)		+= acerhdf.o
 obj-$(CONFIG_HP_ACCEL)		+= hp_accel.o
diff --git a/drivers/platform/x86/dell-smo8800.c b/drivers/platform/x86/dell-smo8800.c
new file mode 100644
index 0000000..a653716
--- /dev/null
+++ b/drivers/platform/x86/dell-smo8800.c
@@ -0,0 +1,233 @@
+/*
+ *  dell-smo8800.c - Dell Latitude ACPI SMO8800/SMO8810 freefall sensor driver
+ *
+ *  Copyright (C) 2012 Sonal Santan <sonal.santan@gmail.com>
+ *  Copyright (C) 2014 Pali Rohár <pali.rohar@gmail.com>
+ *
+ *  This is loosely based on lis3lv02d driver.
+ *
+ *  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.
+ */
+
+#define DRIVER_NAME "smo8800"
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/acpi.h>
+#include <linux/interrupt.h>
+#include <linux/miscdevice.h>
+
+struct smo8800_device {
+	u32 irq;                     /* acpi device irq */
+	atomic_t counter;            /* count after last read */
+	struct miscdevice miscdev;   /* for /dev/freefall */
+	unsigned long misc_opened;   /* whether the device is open */
+	wait_queue_head_t misc_wait; /* Wait queue for the misc dev */
+	struct device *dev;          /* acpi device */
+};
+
+static irqreturn_t smo8800_interrupt_quick(int irq, void *data)
+{
+	struct smo8800_device *smo8800 = data;
+
+	atomic_inc(&smo8800->counter);
+	wake_up_interruptible(&smo8800->misc_wait);
+	return IRQ_WAKE_THREAD;
+}
+
+static irqreturn_t smo8800_interrupt_thread(int irq, void *data)
+{
+	struct smo8800_device *smo8800 = data;
+
+	dev_info(smo8800->dev, "detected free fall\n");
+	return IRQ_HANDLED;
+}
+
+static acpi_status smo8800_get_resource(struct acpi_resource *resource,
+					void *context)
+{
+	struct acpi_resource_extended_irq *irq;
+
+	if (resource->type != ACPI_RESOURCE_TYPE_EXTENDED_IRQ)
+		return AE_OK;
+
+	irq = &resource->data.extended_irq;
+	if (!irq || !irq->interrupt_count)
+		return AE_OK;
+
+	*((u32 *)context) = irq->interrupts[0];
+	return AE_CTRL_TERMINATE;
+}
+
+static u32 smo8800_get_irq(struct acpi_device *device)
+{
+	u32 irq = 0;
+	acpi_status status;
+
+	status = acpi_walk_resources(device->handle, METHOD_NAME__CRS,
+				     smo8800_get_resource, &irq);
+	if (ACPI_FAILURE(status)) {
+		dev_err(&device->dev, "acpi_walk_resources failed\n");
+		return 0;
+	}
+
+	return irq;
+}
+
+static ssize_t smo8800_misc_read(struct file *file, char __user *buf,
+				 size_t count, loff_t *pos)
+{
+	struct smo8800_device *smo8800 = container_of(file->private_data,
+					 struct smo8800_device, miscdev);
+
+	u32 data = 0;
+	unsigned char byte_data = 0;
+	ssize_t retval = 1;
+
+	if (count < 1)
+		return -EINVAL;
+
+	atomic_set(&smo8800->counter, 0);
+	retval = wait_event_interruptible(smo8800->misc_wait,
+				(data = atomic_xchg(&smo8800->counter, 0)));
+
+	if (retval)
+		return retval;
+
+	byte_data = 1;
+	retval = 1;
+
+	if (data < 255)
+		byte_data = data;
+	else
+		byte_data = 255;
+
+	if (put_user(byte_data, buf))
+		retval = -EFAULT;
+
+	return retval;
+}
+
+static int smo8800_misc_open(struct inode *inode, struct file *file)
+{
+	struct smo8800_device *smo8800 = container_of(file->private_data,
+					 struct smo8800_device, miscdev);
+
+	if (test_and_set_bit(0, &smo8800->misc_opened))
+		return -EBUSY; /* already open */
+
+	atomic_set(&smo8800->counter, 0);
+	return 0;
+}
+
+static int smo8800_misc_release(struct inode *inode, struct file *file)
+{
+	struct smo8800_device *smo8800 = container_of(file->private_data,
+					 struct smo8800_device, miscdev);
+
+	clear_bit(0, &smo8800->misc_opened); /* release the device */
+	return 0;
+}
+
+static const struct file_operations smo8800_misc_fops = {
+	.owner = THIS_MODULE,
+	.read = smo8800_misc_read,
+	.open = smo8800_misc_open,
+	.release = smo8800_misc_release,
+};
+
+static int smo8800_add(struct acpi_device *device)
+{
+	int err;
+	struct smo8800_device *smo8800;
+
+	smo8800 = devm_kzalloc(&device->dev, sizeof(*smo8800), GFP_KERNEL);
+	if (!smo8800) {
+		dev_err(&device->dev, "failed to allocate device data\n");
+		return -ENOMEM;
+	}
+
+	smo8800->dev = &device->dev;
+	smo8800->miscdev.minor = MISC_DYNAMIC_MINOR;
+	smo8800->miscdev.name = "freefall";
+	smo8800->miscdev.fops = &smo8800_misc_fops;
+
+	init_waitqueue_head(&smo8800->misc_wait);
+
+	err = misc_register(&smo8800->miscdev);
+	if (err) {
+		dev_err(&device->dev, "failed to register misc dev: %d\n", err);
+		return err;
+	}
+
+	device->driver_data = smo8800;
+
+	smo8800->irq = smo8800_get_irq(device);
+	if (!smo8800->irq) {
+		dev_err(&device->dev, "failed to obtain IRQ\n");
+		err = -EINVAL;
+		goto error;
+	}
+
+	err = request_threaded_irq(smo8800->irq, smo8800_interrupt_quick,
+				   smo8800_interrupt_thread,
+				   IRQF_TRIGGER_RISING | IRQF_ONESHOT,
+				   DRIVER_NAME, smo8800);
+	if (err) {
+		dev_err(&device->dev,
+			"failed to request thread for IRQ %d: %d\n",
+			smo8800->irq, err);
+		goto error;
+	}
+
+	dev_dbg(&device->dev, "device /dev/freefall registered with IRQ %d\n",
+		 smo8800->irq);
+	return 0;
+
+error:
+	misc_deregister(&smo8800->miscdev);
+	return err;
+}
+
+static int smo8800_remove(struct acpi_device *device)
+{
+	struct smo8800_device *smo8800 = device->driver_data;
+
+	free_irq(smo8800->irq, smo8800);
+	misc_deregister(&smo8800->miscdev);
+	dev_dbg(&device->dev, "device /dev/freefall unregistered\n");
+	return 0;
+}
+
+static const struct acpi_device_id smo8800_ids[] = {
+	{ "SMO8800", 0 },
+	{ "SMO8810", 0 },
+	{ "", 0 },
+};
+
+MODULE_DEVICE_TABLE(acpi, smo8800_ids);
+
+static struct acpi_driver smo8800_driver = {
+	.name = DRIVER_NAME,
+	.class = "Latitude",
+	.ids = smo8800_ids,
+	.ops = {
+		.add = smo8800_add,
+		.remove = smo8800_remove,
+	},
+	.owner = THIS_MODULE,
+};
+
+module_acpi_driver(smo8800_driver);
+
+MODULE_DESCRIPTION("Dell Latitude freefall driver (ACPI SMO8800/SMO8810)");
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Sonal Santan, Pali Rohár");
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* Re: [PATCH v2] platform: x86: dell-smo8800: Dell Latitude freefall driver (ACPI SMO8800/SMO8810)
  2014-05-22 11:15   ` [PATCH v2] " Pali Rohár
@ 2014-05-28 13:31     ` Pali Rohár
  2014-06-06 10:24       ` Pali Rohár
  0 siblings, 1 reply; 20+ messages in thread
From: Pali Rohár @ 2014-05-28 13:31 UTC (permalink / raw)
  To: Matthew Garrett
  Cc: Randy Dunlap, Valdis.Kletnieks, linux-kernel,
	platform-driver-x86, One Thousand Gnomes, Sonal Santan

[-- Attachment #1: Type: Text/Plain, Size: 1252 bytes --]

On Thursday 22 May 2014 13:15:48 Pali Rohár wrote:
> This acpi driver provide supports for freefall sensors
> SMO8800/SMO8810 which can be found on Dell Latitude laptops.
> Driver register /dev/freefall misc device which has same
> interface as driver hp_accel freefall driver. So any existing
> applications for HP freefall sensor /dev/freefall will work
> for with this new driver for Dell Latitude laptops too.
> 
> Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> Cc: Sonal Santan <sonal.santan@gmail.com>
> Tested-By: Valdis Kletnieks <valdis.kletnieks@vt.edu>
> Acked-By: Valdis Kletnieks <valdis.kletnieks@vt.edu>
> ---
> Changes since v1:
> * Fixed warnings: Missing a blank line after declarations
> * Fixed Lowercase ON in Kconfig
> * Fixed Alan's review problems by Sonal Santan
> ---
>  drivers/platform/x86/Kconfig        |   10 ++
>  drivers/platform/x86/Makefile       |    1 +
>  drivers/platform/x86/dell-smo8800.c |  233
> +++++++++++++++++++++++++++++++++++ 3 files changed, 244
> insertions(+)
>  create mode 100644 drivers/platform/x86/dell-smo8800.c
> 

After week there are no other objections.

Matthew Garrett, can you apply driver into platform tree?

-- 
Pali Rohár
pali.rohar@gmail.com

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v2] platform: x86: dell-smo8800: Dell Latitude freefall driver (ACPI SMO8800/SMO8810)
  2014-05-28 13:31     ` Pali Rohár
@ 2014-06-06 10:24       ` Pali Rohár
  0 siblings, 0 replies; 20+ messages in thread
From: Pali Rohár @ 2014-06-06 10:24 UTC (permalink / raw)
  To: Matthew Garrett
  Cc: Randy Dunlap, Valdis.Kletnieks, linux-kernel,
	platform-driver-x86, One Thousand Gnomes, Sonal Santan

[-- Attachment #1: Type: Text/Plain, Size: 1390 bytes --]

On Wednesday 28 May 2014 15:31:30 Pali Rohár wrote:
> On Thursday 22 May 2014 13:15:48 Pali Rohár wrote:
> > This acpi driver provide supports for freefall sensors
> > SMO8800/SMO8810 which can be found on Dell Latitude laptops.
> > Driver register /dev/freefall misc device which has same
> > interface as driver hp_accel freefall driver. So any
> > existing applications for HP freefall sensor /dev/freefall
> > will work for with this new driver for Dell Latitude
> > laptops too.
> > 
> > Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> > Cc: Sonal Santan <sonal.santan@gmail.com>
> > Tested-By: Valdis Kletnieks <valdis.kletnieks@vt.edu>
> > Acked-By: Valdis Kletnieks <valdis.kletnieks@vt.edu>
> > ---
> > Changes since v1:
> > * Fixed warnings: Missing a blank line after declarations
> > * Fixed Lowercase ON in Kconfig
> > * Fixed Alan's review problems by Sonal Santan
> > ---
> > 
> >  drivers/platform/x86/Kconfig        |   10 ++
> >  drivers/platform/x86/Makefile       |    1 +
> >  drivers/platform/x86/dell-smo8800.c |  233
> > 
> > +++++++++++++++++++++++++++++++++++ 3 files changed, 244
> > insertions(+)
> > 
> >  create mode 100644 drivers/platform/x86/dell-smo8800.c
> 
> After week there are no other objections.
> 
> Matthew Garrett, can you apply driver into platform tree?

PING.

-- 
Pali Rohár
pali.rohar@gmail.com

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH v2] Documentation: Rename hpfall.c => freefall.c, fixes for Dell
  2014-05-03 10:47 ` [PATCH 2/2] Documentation: Rename hpfall.c => freefall.c, fixes for Dell Pali Rohár
@ 2014-06-11  8:02   ` Pali Rohár
  2014-06-14  8:53     ` Pavel Machek
  2014-06-29  2:12     ` Randy Dunlap
  0 siblings, 2 replies; 20+ messages in thread
From: Pali Rohár @ 2014-06-11  8:02 UTC (permalink / raw)
  To: Matthew Garrett, Randy Dunlap, Pavel Machek, Valdis Kletnieks
  Cc: linux-doc, linux-kernel, platform-driver-x86, Pali Rohár,
	Sonal Santan

Dell kernel driver dell-smo8800 provides same freefall interface as hp_accel so
program hpfall.c works also on Dell laptops. So rename it to freefall.c.

Dell driver does not provide hp::hddprotect led so make sure that freefall.c
works also if hp::hddprotect does not exist in sysfs.

Additionally write info to syslog.

Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
Cc: Sonal Santan <sonal.santan@gmail.com>
---
Changes since v1:
* Fixed warnings: Missing a blank line after declarations
---
 Documentation/laptops/00-INDEX   |    4 +-
 Documentation/laptops/freefall.c |  177 ++++++++++++++++++++++++++++++++++++++
 Documentation/laptops/hpfall.c   |  146 -------------------------------
 3 files changed, 179 insertions(+), 148 deletions(-)
 create mode 100644 Documentation/laptops/freefall.c
 delete mode 100644 Documentation/laptops/hpfall.c

diff --git a/Documentation/laptops/00-INDEX b/Documentation/laptops/00-INDEX
index d13b9a9..d399ae1 100644
--- a/Documentation/laptops/00-INDEX
+++ b/Documentation/laptops/00-INDEX
@@ -8,8 +8,8 @@ disk-shock-protection.txt
 	- information on hard disk shock protection.
 dslm.c
 	- Simple Disk Sleep Monitor program
-hpfall.c
-	- (HP) laptop accelerometer program for disk protection.
+freefall.c
+	- (HP/DELL) laptop accelerometer program for disk protection.
 laptop-mode.txt
 	- how to conserve battery power using laptop-mode.
 sony-laptop.txt
diff --git a/Documentation/laptops/freefall.c b/Documentation/laptops/freefall.c
new file mode 100644
index 0000000..aab2ff0
--- /dev/null
+++ b/Documentation/laptops/freefall.c
@@ -0,0 +1,177 @@
+/* Disk protection for HP/DELL machines.
+ *
+ * Copyright 2008 Eric Piel
+ * Copyright 2009 Pavel Machek <pavel@ucw.cz>
+ * Copyright 2012 Sonal Santan
+ * Copyright 2014 Pali Rohár <pali.rohar@gmail.com>
+ *
+ * GPLv2.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <string.h>
+#include <stdint.h>
+#include <errno.h>
+#include <signal.h>
+#include <sys/mman.h>
+#include <sched.h>
+#include <syslog.h>
+
+static int noled;
+static char unload_heads_path[64];
+static char device_path[32];
+static const char app_name[] = "FREE FALL";
+
+static int set_unload_heads_path(char *device)
+{
+	char devname[64];
+
+	if (strlen(device) <= 5 || strncmp(device, "/dev/", 5) != 0)
+		return -EINVAL;
+	strncpy(devname, device + 5, sizeof(devname) - 1);
+	strncpy(device_path, device, sizeof(device_path) - 1);
+
+	snprintf(unload_heads_path, sizeof(unload_heads_path) - 1,
+				"/sys/block/%s/device/unload_heads", devname);
+	return 0;
+}
+
+static int valid_disk(void)
+{
+	int fd = open(unload_heads_path, O_RDONLY);
+
+	if (fd < 0) {
+		perror(unload_heads_path);
+		return 0;
+	}
+
+	close(fd);
+	return 1;
+}
+
+static void write_int(char *path, int i)
+{
+	char buf[1024];
+	int fd = open(path, O_RDWR);
+
+	if (fd < 0) {
+		perror("open");
+		exit(1);
+	}
+
+	sprintf(buf, "%d", i);
+
+	if (write(fd, buf, strlen(buf)) != strlen(buf)) {
+		perror("write");
+		exit(1);
+	}
+
+	close(fd);
+}
+
+static void set_led(int on)
+{
+	if (noled)
+		return;
+	write_int("/sys/class/leds/hp::hddprotect/brightness", on);
+}
+
+static void protect(int seconds)
+{
+	const char *str = (seconds == 0) ? "Unparked" : "Parked";
+
+	write_int(unload_heads_path, seconds*1000);
+	syslog(LOG_INFO, "%s %s disk head\n", str, device_path);
+}
+
+static int on_ac(void)
+{
+	/* /sys/class/power_supply/AC0/online */
+	return 1;
+}
+
+static int lid_open(void)
+{
+	/* /proc/acpi/button/lid/LID/state */
+	return 1;
+}
+
+static void ignore_me(int signum)
+{
+	protect(0);
+	set_led(0);
+}
+
+int main(int argc, char **argv)
+{
+	int fd, ret;
+	struct stat st;
+	struct sched_param param;
+
+	if (argc == 1)
+		ret = set_unload_heads_path("/dev/sda");
+	else if (argc == 2)
+		ret = set_unload_heads_path(argv[1]);
+	else
+		ret = -EINVAL;
+
+	if (ret || !valid_disk()) {
+		fprintf(stderr, "usage: %s <device> (default: /dev/sda)\n",
+				argv[0]);
+		exit(1);
+	}
+
+	fd = open("/dev/freefall", O_RDONLY);
+	if (fd < 0) {
+		perror("/dev/freefall");
+		return EXIT_FAILURE;
+	}
+
+	if (stat("/sys/class/leds/hp::hddprotect/brightness", &st))
+		noled = 1;
+
+	if (daemon(0, 0) != 0) {
+		perror("daemon");
+		return EXIT_FAILURE;
+	}
+
+	openlog(app_name, LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
+
+	param.sched_priority = sched_get_priority_max(SCHED_FIFO);
+	sched_setscheduler(0, SCHED_FIFO, &param);
+	mlockall(MCL_CURRENT|MCL_FUTURE);
+
+	signal(SIGALRM, ignore_me);
+
+	for (;;) {
+		unsigned char count;
+
+		ret = read(fd, &count, sizeof(count));
+		alarm(0);
+		if ((ret == -1) && (errno == EINTR)) {
+			/* Alarm expired, time to unpark the heads */
+			continue;
+		}
+
+		if (ret != sizeof(count)) {
+			perror("read");
+			break;
+		}
+
+		protect(21);
+		set_led(1);
+		if (1 || on_ac() || lid_open())
+			alarm(2);
+		else
+			alarm(20);
+	}
+
+	closelog();
+	close(fd);
+	return EXIT_SUCCESS;
+}
diff --git a/Documentation/laptops/hpfall.c b/Documentation/laptops/hpfall.c
deleted file mode 100644
index b85dbba..0000000
--- a/Documentation/laptops/hpfall.c
+++ /dev/null
@@ -1,146 +0,0 @@
-/* Disk protection for HP machines.
- *
- * Copyright 2008 Eric Piel
- * Copyright 2009 Pavel Machek <pavel@ucw.cz>
- *
- * GPLv2.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <string.h>
-#include <stdint.h>
-#include <errno.h>
-#include <signal.h>
-#include <sys/mman.h>
-#include <sched.h>
-
-char unload_heads_path[64];
-
-int set_unload_heads_path(char *device)
-{
-	char devname[64];
-
-	if (strlen(device) <= 5 || strncmp(device, "/dev/", 5) != 0)
-		return -EINVAL;
-	strncpy(devname, device + 5, sizeof(devname));
-
-	snprintf(unload_heads_path, sizeof(unload_heads_path) - 1,
-				"/sys/block/%s/device/unload_heads", devname);
-	return 0;
-}
-int valid_disk(void)
-{
-	int fd = open(unload_heads_path, O_RDONLY);
-	if (fd < 0) {
-		perror(unload_heads_path);
-		return 0;
-	}
-
-	close(fd);
-	return 1;
-}
-
-void write_int(char *path, int i)
-{
-	char buf[1024];
-	int fd = open(path, O_RDWR);
-	if (fd < 0) {
-		perror("open");
-		exit(1);
-	}
-	sprintf(buf, "%d", i);
-	if (write(fd, buf, strlen(buf)) != strlen(buf)) {
-		perror("write");
-		exit(1);
-	}
-	close(fd);
-}
-
-void set_led(int on)
-{
-	write_int("/sys/class/leds/hp::hddprotect/brightness", on);
-}
-
-void protect(int seconds)
-{
-	write_int(unload_heads_path, seconds*1000);
-}
-
-int on_ac(void)
-{
-//	/sys/class/power_supply/AC0/online
-}
-
-int lid_open(void)
-{
-//	/proc/acpi/button/lid/LID/state
-}
-
-void ignore_me(void)
-{
-	protect(0);
-	set_led(0);
-}
-
-int main(int argc, char **argv)
-{
-	int fd, ret;
-	struct sched_param param;
-
-	if (argc == 1)
-		ret = set_unload_heads_path("/dev/sda");
-	else if (argc == 2)
-		ret = set_unload_heads_path(argv[1]);
-	else
-		ret = -EINVAL;
-
-	if (ret || !valid_disk()) {
-		fprintf(stderr, "usage: %s <device> (default: /dev/sda)\n",
-				argv[0]);
-		exit(1);
-	}
-
-	fd = open("/dev/freefall", O_RDONLY);
-	if (fd < 0) {
-		perror("/dev/freefall");
-		return EXIT_FAILURE;
-	}
-
-	daemon(0, 0);
-	param.sched_priority = sched_get_priority_max(SCHED_FIFO);
-	sched_setscheduler(0, SCHED_FIFO, &param);
-	mlockall(MCL_CURRENT|MCL_FUTURE);
-
-	signal(SIGALRM, ignore_me);
-
-	for (;;) {
-		unsigned char count;
-
-		ret = read(fd, &count, sizeof(count));
-		alarm(0);
-		if ((ret == -1) && (errno == EINTR)) {
-			/* Alarm expired, time to unpark the heads */
-			continue;
-		}
-
-		if (ret != sizeof(count)) {
-			perror("read");
-			break;
-		}
-
-		protect(21);
-		set_led(1);
-		if (1 || on_ac() || lid_open())
-			alarm(2);
-		else
-			alarm(20);
-	}
-
-	close(fd);
-	return EXIT_SUCCESS;
-}
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* Re: [PATCH v2] Documentation: Rename hpfall.c => freefall.c, fixes for Dell
  2014-06-11  8:02   ` [PATCH v2] " Pali Rohár
@ 2014-06-14  8:53     ` Pavel Machek
  2014-06-16 11:55       ` Pali Rohár
  2014-06-29  2:12     ` Randy Dunlap
  1 sibling, 1 reply; 20+ messages in thread
From: Pavel Machek @ 2014-06-14  8:53 UTC (permalink / raw)
  To: Pali Roh?r
  Cc: Matthew Garrett, Randy Dunlap, Valdis Kletnieks, linux-doc,
	linux-kernel, platform-driver-x86, Sonal Santan

On Wed 2014-06-11 10:02:07, Pali Roh?r wrote:
> Dell kernel driver dell-smo8800 provides same freefall interface as hp_accel so
> program hpfall.c works also on Dell laptops. So rename it to freefall.c.
> 
> Dell driver does not provide hp::hddprotect led so make sure that freefall.c
> works also if hp::hddprotect does not exist in sysfs.
> 
> Additionally write info to syslog.
> 
> Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> Cc: Sonal Santan <sonal.santan@gmail.com>
> ---
> Changes since v1:
> * Fixed warnings: Missing a blank line after declarations
> ---
>  Documentation/laptops/00-INDEX   |    4 +-
>  Documentation/laptops/freefall.c |  177 ++++++++++++++++++++++++++++++++++++++
>  Documentation/laptops/hpfall.c   |  146 -------------------------------
>  3 files changed, 179 insertions(+), 148 deletions(-)
>  create mode 100644 Documentation/laptops/freefall.c
>  delete mode 100644 Documentation/laptops/hpfall.c

Acked-by: Pavel Machek <pavel@ucw.cz>

						Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v2] Documentation: Rename hpfall.c => freefall.c, fixes for Dell
  2014-06-14  8:53     ` Pavel Machek
@ 2014-06-16 11:55       ` Pali Rohár
  2014-06-27 19:08         ` Pali Rohár
  0 siblings, 1 reply; 20+ messages in thread
From: Pali Rohár @ 2014-06-16 11:55 UTC (permalink / raw)
  To: Matthew Garrett, Randy Dunlap
  Cc: Pavel Machek, Valdis Kletnieks, linux-doc, linux-kernel,
	platform-driver-x86, Sonal Santan

[-- Attachment #1: Type: Text/Plain, Size: 1346 bytes --]

On Saturday 14 June 2014 10:53:29 Pavel Machek wrote:
> On Wed 2014-06-11 10:02:07, Pali Roh?r wrote:
> > Dell kernel driver dell-smo8800 provides same freefall
> > interface as hp_accel so program hpfall.c works also on
> > Dell laptops. So rename it to freefall.c.
> > 
> > Dell driver does not provide hp::hddprotect led so make sure
> > that freefall.c works also if hp::hddprotect does not exist
> > in sysfs.
> > 
> > Additionally write info to syslog.
> > 
> > Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> > Cc: Sonal Santan <sonal.santan@gmail.com>
> > ---
> > Changes since v1:
> > * Fixed warnings: Missing a blank line after declarations
> > ---
> > 
> >  Documentation/laptops/00-INDEX   |    4 +-
> >  Documentation/laptops/freefall.c |  177
> >  ++++++++++++++++++++++++++++++++++++++
> >  Documentation/laptops/hpfall.c   |  146
> >  ------------------------------- 3 files changed, 179
> >  insertions(+), 148 deletions(-) create mode 100644
> >  Documentation/laptops/freefall.c delete mode 100644
> >  Documentation/laptops/hpfall.c
> 
> Acked-by: Pavel Machek <pavel@ucw.cz>
> 
> 						Pavel

Randy, Matthew: PING

first patch which implementing dell-smo8800.ko was merged, but 
this patch which updating documentation and fall daemon *not*.

-- 
Pali Rohár
pali.rohar@gmail.com

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v2] Documentation: Rename hpfall.c => freefall.c, fixes for Dell
  2014-06-16 11:55       ` Pali Rohár
@ 2014-06-27 19:08         ` Pali Rohár
  2014-06-27 20:25           ` Randy Dunlap
  0 siblings, 1 reply; 20+ messages in thread
From: Pali Rohár @ 2014-06-27 19:08 UTC (permalink / raw)
  To: Matthew Garrett
  Cc: Randy Dunlap, Pavel Machek, Valdis Kletnieks, linux-doc,
	linux-kernel, platform-driver-x86, Sonal Santan

[-- Attachment #1: Type: Text/Plain, Size: 1572 bytes --]

On Monday 16 June 2014 13:55:03 Pali Rohár wrote:
> On Saturday 14 June 2014 10:53:29 Pavel Machek wrote:
> > On Wed 2014-06-11 10:02:07, Pali Roh?r wrote:
> > > Dell kernel driver dell-smo8800 provides same freefall
> > > interface as hp_accel so program hpfall.c works also on
> > > Dell laptops. So rename it to freefall.c.
> > > 
> > > Dell driver does not provide hp::hddprotect led so make
> > > sure that freefall.c works also if hp::hddprotect does
> > > not exist in sysfs.
> > > 
> > > Additionally write info to syslog.
> > > 
> > > Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> > > Cc: Sonal Santan <sonal.santan@gmail.com>
> > > ---
> > > Changes since v1:
> > > * Fixed warnings: Missing a blank line after declarations
> > > ---
> > > 
> > >  Documentation/laptops/00-INDEX   |    4 +-
> > >  Documentation/laptops/freefall.c |  177
> > >  ++++++++++++++++++++++++++++++++++++++
> > >  Documentation/laptops/hpfall.c   |  146
> > >  ------------------------------- 3 files changed, 179
> > >  insertions(+), 148 deletions(-) create mode 100644
> > >  Documentation/laptops/freefall.c delete mode 100644
> > >  Documentation/laptops/hpfall.c
> > 
> > Acked-by: Pavel Machek <pavel@ucw.cz>
> > 
> > 						Pavel
> 
> Randy, Matthew: PING
> 
> first patch which implementing dell-smo8800.ko was merged, but
> this patch which updating documentation and fall daemon *not*.

PING.

What is with this patch? Why was still not set to Linus in doc or 
platform pull request?

-- 
Pali Rohár
pali.rohar@gmail.com

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v2] Documentation: Rename hpfall.c => freefall.c, fixes for Dell
  2014-06-27 19:08         ` Pali Rohár
@ 2014-06-27 20:25           ` Randy Dunlap
  0 siblings, 0 replies; 20+ messages in thread
From: Randy Dunlap @ 2014-06-27 20:25 UTC (permalink / raw)
  To: Pali Rohár, Matthew Garrett
  Cc: Pavel Machek, Valdis Kletnieks, linux-doc, linux-kernel,
	platform-driver-x86, Sonal Santan

On 06/27/14 12:08, Pali Rohár wrote:
> On Monday 16 June 2014 13:55:03 Pali Rohár wrote:
>> On Saturday 14 June 2014 10:53:29 Pavel Machek wrote:
>>> On Wed 2014-06-11 10:02:07, Pali Roh?r wrote:
>>>> Dell kernel driver dell-smo8800 provides same freefall
>>>> interface as hp_accel so program hpfall.c works also on
>>>> Dell laptops. So rename it to freefall.c.
>>>>
>>>> Dell driver does not provide hp::hddprotect led so make
>>>> sure that freefall.c works also if hp::hddprotect does
>>>> not exist in sysfs.
>>>>
>>>> Additionally write info to syslog.
>>>>
>>>> Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
>>>> Cc: Sonal Santan <sonal.santan@gmail.com>
>>>> ---
>>>> Changes since v1:
>>>> * Fixed warnings: Missing a blank line after declarations
>>>> ---
>>>>
>>>>  Documentation/laptops/00-INDEX   |    4 +-
>>>>  Documentation/laptops/freefall.c |  177
>>>>  ++++++++++++++++++++++++++++++++++++++
>>>>  Documentation/laptops/hpfall.c   |  146
>>>>  ------------------------------- 3 files changed, 179
>>>>  insertions(+), 148 deletions(-) create mode 100644
>>>>  Documentation/laptops/freefall.c delete mode 100644
>>>>  Documentation/laptops/hpfall.c
>>>
>>> Acked-by: Pavel Machek <pavel@ucw.cz>
>>>
>>> 						Pavel
>>
>> Randy, Matthew: PING
>>
>> first patch which implementing dell-smo8800.ko was merged, but
>> this patch which updating documentation and fall daemon *not*.
> 
> PING.
> 
> What is with this patch? Why was still not set to Linus in doc or 
> platform pull request?
> 

Sorry, I was on vacation this week, but that does not explain the previous
delays.

I'll merge it sometime this weekend.

Thanks.

-- 
~Randy

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v2] Documentation: Rename hpfall.c => freefall.c, fixes for Dell
  2014-06-11  8:02   ` [PATCH v2] " Pali Rohár
  2014-06-14  8:53     ` Pavel Machek
@ 2014-06-29  2:12     ` Randy Dunlap
  2014-07-07 18:15       ` Pali Rohár
  1 sibling, 1 reply; 20+ messages in thread
From: Randy Dunlap @ 2014-06-29  2:12 UTC (permalink / raw)
  To: Pali Rohár, Matthew Garrett, Pavel Machek, Valdis Kletnieks
  Cc: linux-doc, linux-kernel, platform-driver-x86, Sonal Santan

Hi,

This should really be done as 2 separate patches:
One to move/rename the file and one to make the changes/additions
to it for DELL.

Can you resend it as 2 patches like that, please?

Thanks... and sorry for the delay.


On 06/11/14 01:02, Pali Rohár wrote:
> Dell kernel driver dell-smo8800 provides same freefall interface as hp_accel so
> program hpfall.c works also on Dell laptops. So rename it to freefall.c.
> 
> Dell driver does not provide hp::hddprotect led so make sure that freefall.c
> works also if hp::hddprotect does not exist in sysfs.
> 
> Additionally write info to syslog.
> 
> Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> Cc: Sonal Santan <sonal.santan@gmail.com>
> ---
> Changes since v1:
> * Fixed warnings: Missing a blank line after declarations
> ---
>  Documentation/laptops/00-INDEX   |    4 +-
>  Documentation/laptops/freefall.c |  177 ++++++++++++++++++++++++++++++++++++++
>  Documentation/laptops/hpfall.c   |  146 -------------------------------
>  3 files changed, 179 insertions(+), 148 deletions(-)
>  create mode 100644 Documentation/laptops/freefall.c
>  delete mode 100644 Documentation/laptops/hpfall.c


-- 
~Randy

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v2] Documentation: Rename hpfall.c => freefall.c, fixes for Dell
  2014-06-29  2:12     ` Randy Dunlap
@ 2014-07-07 18:15       ` Pali Rohár
  2014-07-08 22:49         ` Randy Dunlap
  0 siblings, 1 reply; 20+ messages in thread
From: Pali Rohár @ 2014-07-07 18:15 UTC (permalink / raw)
  To: Randy Dunlap
  Cc: Matthew Garrett, Pavel Machek, Valdis Kletnieks, linux-doc,
	linux-kernel, platform-driver-x86, Sonal Santan

[-- Attachment #1: Type: Text/Plain, Size: 1433 bytes --]

Hello Randy, sorry but now I do not have any free time...

On Sunday 29 June 2014 04:12:17 Randy Dunlap wrote:
> Hi,
> 
> This should really be done as 2 separate patches:
> One to move/rename the file and one to make the
> changes/additions to it for DELL.
> 
> Can you resend it as 2 patches like that, please?
> 
> Thanks... and sorry for the delay.
> 
> On 06/11/14 01:02, Pali Rohár wrote:
> > Dell kernel driver dell-smo8800 provides same freefall
> > interface as hp_accel so program hpfall.c works also on
> > Dell laptops. So rename it to freefall.c.
> > 
> > Dell driver does not provide hp::hddprotect led so make sure
> > that freefall.c works also if hp::hddprotect does not exist
> > in sysfs.
> > 
> > Additionally write info to syslog.
> > 
> > Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> > Cc: Sonal Santan <sonal.santan@gmail.com>
> > ---
> > Changes since v1:
> > * Fixed warnings: Missing a blank line after declarations
> > ---
> > 
> >  Documentation/laptops/00-INDEX   |    4 +-
> >  Documentation/laptops/freefall.c |  177
> >  ++++++++++++++++++++++++++++++++++++++
> >  Documentation/laptops/hpfall.c   |  146
> >  ------------------------------- 3 files changed, 179
> >  insertions(+), 148 deletions(-) create mode 100644
> >  Documentation/laptops/freefall.c delete mode 100644
> >  Documentation/laptops/hpfall.c

-- 
Pali Rohár
pali.rohar@gmail.com

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v2] Documentation: Rename hpfall.c => freefall.c, fixes for Dell
  2014-07-07 18:15       ` Pali Rohár
@ 2014-07-08 22:49         ` Randy Dunlap
  0 siblings, 0 replies; 20+ messages in thread
From: Randy Dunlap @ 2014-07-08 22:49 UTC (permalink / raw)
  To: Pali Rohár
  Cc: Matthew Garrett, Pavel Machek, Valdis Kletnieks, linux-doc,
	linux-kernel, platform-driver-x86, Sonal Santan

On 07/07/2014 11:15 AM, Pali Rohár wrote:
> Hello Randy, sorry but now I do not have any free time...

a. It took me 7 minutes to split the patch into 2 patches as I requested.

b. In the future please do it like that.

c. Pavel asked me to go ahead and apply the patch. I will do that since
I have a few other patches to hpfall.c (freefall.c) that need to be applied.


> On Sunday 29 June 2014 04:12:17 Randy Dunlap wrote:
>> Hi,
>>
>> This should really be done as 2 separate patches:
>> One to move/rename the file and one to make the
>> changes/additions to it for DELL.
>>
>> Can you resend it as 2 patches like that, please?
>>
>> Thanks... and sorry for the delay.
>>
>> On 06/11/14 01:02, Pali Rohár wrote:
>>> Dell kernel driver dell-smo8800 provides same freefall
>>> interface as hp_accel so program hpfall.c works also on
>>> Dell laptops. So rename it to freefall.c.
>>>
>>> Dell driver does not provide hp::hddprotect led so make sure
>>> that freefall.c works also if hp::hddprotect does not exist
>>> in sysfs.
>>>
>>> Additionally write info to syslog.
>>>
>>> Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
>>> Cc: Sonal Santan <sonal.santan@gmail.com>
>>> ---
>>> Changes since v1:
>>> * Fixed warnings: Missing a blank line after declarations
>>> ---
>>>
>>>  Documentation/laptops/00-INDEX   |    4 +-
>>>  Documentation/laptops/freefall.c |  177
>>>  ++++++++++++++++++++++++++++++++++++++
>>>  Documentation/laptops/hpfall.c   |  146
>>>  ------------------------------- 3 files changed, 179
>>>  insertions(+), 148 deletions(-) create mode 100644
>>>  Documentation/laptops/freefall.c delete mode 100644
>>>  Documentation/laptops/hpfall.c
> 


-- 
~Randy

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2014-07-08 22:49 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-05-03 10:47 [PATCH 0/2] Dell Latitude freefall driver (ACPI SMO8800/SMO8810) Pali Rohár
2014-05-03 10:47 ` [PATCH 1/2] platform: x86: dell-smo8800: " Pali Rohár
2014-05-07 16:29   ` One Thousand Gnomes
2014-05-20  7:00   ` Valdis.Kletnieks
2014-05-20  8:56     ` Pali Rohár
2014-05-20 18:02       ` Valdis.Kletnieks
2014-05-20 18:10         ` Pali Rohár
2014-05-20 18:36           ` Valdis.Kletnieks
2014-05-22 11:15   ` [PATCH v2] " Pali Rohár
2014-05-28 13:31     ` Pali Rohár
2014-06-06 10:24       ` Pali Rohár
2014-05-03 10:47 ` [PATCH 2/2] Documentation: Rename hpfall.c => freefall.c, fixes for Dell Pali Rohár
2014-06-11  8:02   ` [PATCH v2] " Pali Rohár
2014-06-14  8:53     ` Pavel Machek
2014-06-16 11:55       ` Pali Rohár
2014-06-27 19:08         ` Pali Rohár
2014-06-27 20:25           ` Randy Dunlap
2014-06-29  2:12     ` Randy Dunlap
2014-07-07 18:15       ` Pali Rohár
2014-07-08 22:49         ` Randy Dunlap

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.