summaryrefslogtreecommitdiffstats
path: root/0002-NOT_FOR_UPSTREAM-staging-nvec-move-led-init-out-of-p.patch
diff options
context:
space:
mode:
authorNicolas Chauvet <kwizart@gmail.com>2014-06-02 21:51:28 +0200
committerNicolas Chauvet <kwizart@gmail.com>2014-07-07 16:21:17 +0200
commit33114ec6ba07e8ce38353b92a0554f9a71e83535 (patch)
tree2ef3cb36cdb930e79ff9dc7d0b12e0ad69b59790 /0002-NOT_FOR_UPSTREAM-staging-nvec-move-led-init-out-of-p.patch
parenta34e5ddbb0300885755e268f2f9ddab6bdbd284c (diff)
downloadkernel-33114ec6ba07e8ce38353b92a0554f9a71e83535.tar.gz
kernel-33114ec6ba07e8ce38353b92a0554f9a71e83535.tar.xz
kernel-33114ec6ba07e8ce38353b92a0554f9a71e83535.zip
Add marvin24s patches
Diffstat (limited to '0002-NOT_FOR_UPSTREAM-staging-nvec-move-led-init-out-of-p.patch')
-rw-r--r--0002-NOT_FOR_UPSTREAM-staging-nvec-move-led-init-out-of-p.patch129
1 files changed, 129 insertions, 0 deletions
diff --git a/0002-NOT_FOR_UPSTREAM-staging-nvec-move-led-init-out-of-p.patch b/0002-NOT_FOR_UPSTREAM-staging-nvec-move-led-init-out-of-p.patch
new file mode 100644
index 00000000..b5f914be
--- /dev/null
+++ b/0002-NOT_FOR_UPSTREAM-staging-nvec-move-led-init-out-of-p.patch
@@ -0,0 +1,129 @@
+From 207bed1a3e5b0a1c2f824b986d55972c31e99938 Mon Sep 17 00:00:00 2001
+From: Marc Dietrich <marvin24@gmx.de>
+Date: Sun, 17 Jun 2012 19:53:33 +0200
+Subject: [PATCH 2/6] NOT_FOR_UPSTREAM: staging: nvec: move led init out of
+ probe to its own function
+
+Moves the led init to its own function. This is in preparation to
+the following speaker mute inclusion via a gpio driver.
+
+Signed-off-by: Marc Dietrich <marvin24@gmx.de>
+---
+ drivers/staging/nvec/nvec_paz00.c | 73 +++++++++++++++++++--------------------
+ 1 file changed, 35 insertions(+), 38 deletions(-)
+
+diff --git a/drivers/staging/nvec/nvec_paz00.c b/drivers/staging/nvec/nvec_paz00.c
+index 934b796..a10385d 100644
+--- a/drivers/staging/nvec/nvec_paz00.c
++++ b/drivers/staging/nvec/nvec_paz00.c
+@@ -11,72 +11,69 @@
+ *
+ */
+
+-#include <linux/module.h>
+ #include <linux/err.h>
+-#include <linux/slab.h>
+ #include <linux/leds.h>
++#include <linux/module.h>
++#include <linux/slab.h>
+ #include <linux/platform_device.h>
+ #include "nvec.h"
+
+-#define to_nvec_led(led_cdev) \
+- container_of(led_cdev, struct nvec_led, cdev)
++#define NVEC_LED_MAX 8
+
+-#define NVEC_LED_REQ {'\x0d', '\x10', '\x45', '\x10', '\x00'}
++enum nvec_oem0_subcmds {
++ EXEC_EC_CMD = 0x10,
++};
+
+-#define NVEC_LED_MAX 8
++enum nvec_oem0_ec_cmds {
++ SET_DEVICE_STATUS = 0x45,
++};
+
+-struct nvec_led {
+- struct led_classdev cdev;
++struct nvec_paz00_struct {
+ struct nvec_chip *nvec;
++ struct led_classdev *led_dev;
+ };
+
++struct nvec_paz00_struct nvec_paz00;
++
+ static void nvec_led_brightness_set(struct led_classdev *led_cdev,
+ enum led_brightness value)
+ {
+- struct nvec_led *led = to_nvec_led(led_cdev);
+- unsigned char buf[] = NVEC_LED_REQ;
+- buf[4] = value;
+-
+- nvec_write_async(led->nvec, buf, sizeof(buf));
+-
+- led->cdev.brightness = value;
++ unsigned char buf[] = { NVEC_OEM0, EXEC_EC_CMD, SET_DEVICE_STATUS,
++ '\x10', value };
+
++ nvec_paz00.led_dev->brightness = value;
++ nvec_write_async(nvec_paz00.nvec, buf, sizeof(buf));
+ }
+
+-static int nvec_paz00_probe(struct platform_device *pdev)
++static int paz00_init_leds(struct device *dev)
+ {
+- struct nvec_chip *nvec = dev_get_drvdata(pdev->dev.parent);
+- struct nvec_led *led;
+- int ret = 0;
+-
+- led = devm_kzalloc(&pdev->dev, sizeof(*led), GFP_KERNEL);
+- if (led == NULL)
++ nvec_paz00.led_dev = devm_kzalloc(dev, sizeof(struct led_classdev),
++ GFP_KERNEL);
++ if (!nvec_paz00.led_dev)
+ return -ENOMEM;
+
+- led->cdev.max_brightness = NVEC_LED_MAX;
++ nvec_paz00.led_dev->max_brightness = NVEC_LED_MAX;
++ nvec_paz00.led_dev->brightness_set = nvec_led_brightness_set;
++ nvec_paz00.led_dev->brightness = 0;
++ nvec_paz00.led_dev->name = "paz00-led";
++ nvec_paz00.led_dev->flags |= LED_CORE_SUSPENDRESUME;
+
+- led->cdev.brightness_set = nvec_led_brightness_set;
+- led->cdev.name = "paz00-led";
+- led->cdev.flags |= LED_CORE_SUSPENDRESUME;
+- led->nvec = nvec;
+-
+- platform_set_drvdata(pdev, led);
++ return led_classdev_register(dev, nvec_paz00.led_dev);
++}
+
+- ret = led_classdev_register(&pdev->dev, &led->cdev);
+- if (ret < 0)
+- return ret;
++static int nvec_paz00_probe(struct platform_device *pdev)
++{
++ struct nvec_chip *nvec = dev_get_drvdata(pdev->dev.parent);
+
+- /* to expose the default value to userspace */
+- led->cdev.brightness = 0;
++ platform_set_drvdata(pdev, &nvec_paz00);
++ nvec_paz00.nvec = nvec;
+
+- return 0;
++ return paz00_init_leds(&pdev->dev);
+ }
+
+ static int nvec_paz00_remove(struct platform_device *pdev)
+ {
+- struct nvec_led *led = platform_get_drvdata(pdev);
+-
+- led_classdev_unregister(&led->cdev);
++ led_classdev_unregister(nvec_paz00.led_dev);
+
+ return 0;
+ }
+--
+1.8.3.1
+