summaryrefslogtreecommitdiffstats
path: root/0002-NOT_FOR_UPSTREAM-staging-nvec-move-led-init-out-of-p.patch
blob: b5f914beb656830e38e00c6d5dccbbd128d485cb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
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