This patch fixes coding style and adds copyright notices.

Signed-off-by: Marc Dietrich <[email protected]>
---
 drivers/staging/nvec/TODO            |    5 +-
 drivers/staging/nvec/nvec-keytable.h |  225 +++++++++++++---------
 drivers/staging/nvec/nvec.c          |   20 ++-
 drivers/staging/nvec/nvec.h          |   38 +++-
 drivers/staging/nvec/nvec_kbd.c      |   56 ++++--
 drivers/staging/nvec/nvec_power.c    |  350 +++++++++++++++++-----------------
 drivers/staging/nvec/nvec_ps2.c      |   88 +++++----
 7 files changed, 446 insertions(+), 336 deletions(-)

diff --git a/drivers/staging/nvec/TODO b/drivers/staging/nvec/TODO
index 649d6b7..623e9bb 100644
--- a/drivers/staging/nvec/TODO
+++ b/drivers/staging/nvec/TODO
@@ -1,10 +1,7 @@
 ToDo list (incomplete, unordered)
-       - convert mouse, keyboard, and power to platform devices
-       - add copyright / driver author / license
        - add compile as module support
-       - move nvec devices to mfd cells?
-       - adjust to kernel style
        - fix clk usage
          should not be using clk_get_sys(), but clk_get(&pdev->dev, conn)
          where conn is either NULL if the device only has one clock, or
          the device specific name if it has multiple clocks.
+       - move half of the nvec init stuff to i2c-tegra.c
diff --git a/drivers/staging/nvec/nvec-keytable.h 
b/drivers/staging/nvec/nvec-keytable.h
index 6a1c4f7..1dc22cb 100644
--- a/drivers/staging/nvec/nvec-keytable.h
+++ b/drivers/staging/nvec/nvec-keytable.h
@@ -22,7 +22,8 @@
  */
 
 static unsigned short code_tab_102us[] = {
-       KEY_GRAVE,      // 0x00
+       /* 0x00 */
+       KEY_GRAVE,
        KEY_ESC,
        KEY_1,
        KEY_2,
@@ -38,7 +39,8 @@ static unsigned short code_tab_102us[] = {
        KEY_EQUAL,
        KEY_BACKSPACE,
        KEY_TAB,
-       KEY_Q,          // 0x10
+       /* 0x10 */
+       KEY_Q,
        KEY_W,
        KEY_E,
        KEY_R,
@@ -54,7 +56,8 @@ static unsigned short code_tab_102us[] = {
        KEY_LEFTCTRL,
        KEY_A,
        KEY_S,
-       KEY_D,          // 0x20
+       /* 0x20 */
+       KEY_D,
        KEY_F,
        KEY_G,
        KEY_H,
@@ -70,7 +73,8 @@ static unsigned short code_tab_102us[] = {
        KEY_X,
        KEY_C,
        KEY_V,
-       KEY_B,          // 0x30
+       /* 0x30 */
+       KEY_B,
        KEY_N,
        KEY_M,
        KEY_COMMA,
@@ -86,13 +90,15 @@ static unsigned short code_tab_102us[] = {
        KEY_F3,
        KEY_F4,
        KEY_F5,
-       KEY_F6,         // 0x40
+       /* 0x40 */
+       KEY_F6,
        KEY_F7,
        KEY_F8,
        KEY_F9,
        KEY_F10,
        KEY_FN,
-       0,              //VK_SCROLL
+       /* VK_SCROLL */
+       0,
        KEY_KP7,
        KEY_KP8,
        KEY_KP9,
@@ -102,52 +108,57 @@ static unsigned short code_tab_102us[] = {
        KEY_KP6,
        KEY_KPPLUS,
        KEY_KP1,
-       KEY_KP2,        // 0x50
+       /* 0x50 */
+       KEY_KP2,
        KEY_KP3,
        KEY_KP0,
        KEY_KPDOT,
-       KEY_MENU,               //VK_SNAPSHOT
+       /* VK_SNAPSHOT */
+       KEY_MENU,
        KEY_POWER,
-       KEY_102ND,              //VK_OEM_102   henry+ 0x2B (43) BACKSLASH have 
been used,change to use 0X56 (86)
-       KEY_F11,                //VK_F11
-       KEY_F12,                //VK_F12
-       0, 
-       0, 
-       0, 
-       0, 
-       0, 
-       0, 
-       0, 
-       0, // 60 
-       0,
-       0,
-       KEY_SEARCH, // add search key map 
-       0,              
-       0,
-       0,
-       0,      
-       0,              
-       0, 
-       0, 
-       0, 
-       0, 
-       0, 
-       0, 
-       0, 
-       0, // 70 
-       0,
-       0,
-       KEY_KP5,  //73 for JP keyboard '\' key, report 0x4c
-       0,              
-       0,
-       0,
-       0,      
-       0,              
-       0, 
-       0, 
-    0, 
-       0, 
-       KEY_KP9, //7d  for JP keyboard '|' key, report 0x49
+       /* VK_OEM_102 */
+       KEY_102ND,
+       KEY_F11,
+       KEY_F12,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       /* 0x60 */
+       0,
+       0,
+       0,
+       KEY_SEARCH,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       /* 0x70 */
+       0,
+       0,
+       0,
+       KEY_KP5,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       KEY_KP9,
 };
 
 static unsigned short extcode_tab_us102[] = {
@@ -167,27 +178,35 @@ static unsigned short extcode_tab_us102[] = {
        0,
        0,
        0,
-       0,              // 0xE0 0x10
+       /* 0x10 */
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
        0,
        0,
+       /* VK_MEDIA_NEXT_TRACK */
        0,
        0,
        0,
+       /* VK_RETURN */
        0,
+       KEY_RIGHTCTRL,
        0,
        0,
-       0,              //VK_MEDIA_NEXT_TRACK,
+       /* 0x20 */
+       KEY_MUTE,
+       /* VK_LAUNCH_APP1 */
        0,
+       /* VK_MEDIA_PLAY_PAUSE */
        0,
-       0,              //VK_RETURN,
-       KEY_RIGHTCTRL,          //VK_RCONTROL,
        0,
+       /* VK_MEDIA_STOP */
        0,
-       KEY_MUTE,       // 0xE0 0x20
-       0,              //VK_LAUNCH_APP1
-       0,              //VK_MEDIA_PLAY_PAUSE
        0,
-       0,              //VK_MEDIA_STOP
        0,
        0,
        0,
@@ -198,41 +217,54 @@ static unsigned short extcode_tab_us102[] = {
        0,
        0,
        0,
+       /* 0x30 */
+       KEY_VOLUMEUP,
        0,
-       KEY_VOLUMEUP,   // 0xE0 0x30
+       /* VK_BROWSER_HOME */
+       0,
+       0,
+       0,
+       /* VK_DIVIDE */
+       KEY_KPSLASH,
+       0,
+       /* VK_SNAPSHOT */
+       KEY_SYSRQ,
+       /* VK_RMENU */
+       KEY_RIGHTALT,
+       /* VK_OEM_NV_BACKLIGHT_UP */
+       0,
+       /* VK_OEM_NV_BACKLIGHT_DN */
+       0,
+       /* VK_OEM_NV_BACKLIGHT_AUTOTOGGLE */
+       0,
+       /* VK_OEM_NV_POWER_INFO */
+       0,
+       /* VK_OEM_NV_WIFI_TOGGLE */
+       0,
+       /* VK_OEM_NV_DISPLAY_SELECT */
+       0,
+       /* VK_OEM_NV_AIRPLANE_TOGGLE */
+       0,
+       /* 0x40 */
+       0,
+       KEY_LEFT,
        0,
-       0,              //VK_BROWSER_HOME
        0,
        0,
-       KEY_KPSLASH,    //VK_DIVIDE
        0,
-       KEY_SYSRQ,              //VK_SNAPSHOT
-       KEY_RIGHTALT,           //VK_RMENU
-       0,              //VK_OEM_NV_BACKLIGHT_UP
-       0,              //VK_OEM_NV_BACKLIGHT_DN
-       0,              //VK_OEM_NV_BACKLIGHT_AUTOTOGGLE
-       0,              //VK_OEM_NV_POWER_INFO
-       0,              //VK_OEM_NV_WIFI_TOGGLE
-       0,              //VK_OEM_NV_DISPLAY_SELECT
-       0,              //VK_OEM_NV_AIRPLANE_TOGGLE
-       0,              //0xE0 0x40
-       KEY_LEFT,               //VK_OEM_NV_RESERVED    henry+ for JP keyboard
-       0,              //VK_OEM_NV_RESERVED
-       0,              //VK_OEM_NV_RESERVED
-       0,              //VK_OEM_NV_RESERVED
-       0,              //VK_OEM_NV_RESERVED
        KEY_CANCEL,
        KEY_HOME,
        KEY_UP,
-       KEY_PAGEUP,             //VK_PRIOR
+       KEY_PAGEUP,
        0,
        KEY_LEFT,
        0,
        KEY_RIGHT,
        0,
        KEY_END,
-       KEY_DOWN,       // 0xE0 0x50
-       KEY_PAGEDOWN,           //VK_NEXT
+       /* 0x50 */
+       KEY_DOWN,
+       KEY_PAGEDOWN,
        KEY_INSERT,
        KEY_DELETE,
        0,
@@ -242,25 +274,34 @@ static unsigned short extcode_tab_us102[] = {
        0,
        0,
        0,
-       KEY_LEFTMETA,   //VK_LWIN
-       0,              //VK_RWIN
-       KEY_ESC,        //VK_APPS
-       KEY_KPMINUS, //for power button workaround
-       0, 
+       KEY_LEFTMETA,
+       0,
+       KEY_ESC,
+       KEY_KPMINUS,
+       0,
+       0,
+       0,
+       0,
+       0,
+       0,
+       /* VK_BROWSER_SEARCH */
+       0,
+       /* VK_BROWSER_FAVORITES */
+       0,
+       /* VK_BROWSER_REFRESH */
+       0,
+       /* VK_BROWSER_STOP */
+       0,
+       /* VK_BROWSER_FORWARD */
        0,
+       /* VK_BROWSER_BACK */
        0,
+       /* VK_LAUNCH_APP2 */
        0,
+       /* VK_LAUNCH_MAIL */
        0,
+       /* VK_LAUNCH_MEDIA_SELECT */
        0,
-       0,              //VK_BROWSER_SEARCH
-       0,              //VK_BROWSER_FAVORITES
-       0,              //VK_BROWSER_REFRESH
-       0,              //VK_BROWSER_STOP
-       0,              //VK_BROWSER_FORWARD
-       0,              //VK_BROWSER_BACK
-       0,              //VK_LAUNCH_APP2
-       0,              //VK_LAUNCH_MAIL
-       0,              //VK_LAUNCH_MEDIA_SELECT
 };
 
-static unsigned short* code_tabs[] = {code_tab_102us, extcode_tab_us102 };
+static unsigned short *code_tabs[] = { code_tab_102us, extcode_tab_us102 };
diff --git a/drivers/staging/nvec/nvec.c b/drivers/staging/nvec/nvec.c
index efdc8db..2d99f8a 100644
--- a/drivers/staging/nvec/nvec.c
+++ b/drivers/staging/nvec/nvec.c
@@ -1,11 +1,23 @@
-// #define DEBUG
-
-/* ToDo list (incomplete, unorderd)
-       - convert mouse, keyboard, and power to platform devices
-*/
+/*
+ * NVEC: NVIDIA compliant embedded controller interface
+ *
+ * Copyright (C) 2011 The AC100 Kernel Team <[email protected]>
+ *
+ * Authors:  Pierre-Hugues Husson <[email protected]>
+ *           Ilya Petrov <[email protected]>
+ *           Marc Dietrich <[email protected]>
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License.  See the file "COPYING" in the main directory of this archive
+ * for more details.
+ *
+ */
+
+/* #define DEBUG */
 
 #include <asm/io.h>
 #include <asm/irq.h>
+
 #include <linux/completion.h>
 #include <linux/interrupt.h>
 #include <linux/irq.h>
diff --git a/drivers/staging/nvec/nvec.h b/drivers/staging/nvec/nvec.h
index d9ff721..bdeb9da 100644
--- a/drivers/staging/nvec/nvec.h
+++ b/drivers/staging/nvec/nvec.h
@@ -1,3 +1,18 @@
+/*
+ * NVEC: NVIDIA compliant embedded controller interface
+ *
+ * Copyright (C) 2011 The AC100 Kernel Team <[email protected]>
+ *
+ * Authors:  Pierre-Hugues Husson <[email protected]>
+ *           Ilya Petrov <[email protected]>
+ *           Marc Dietrich <[email protected]>
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License.  See the file "COPYING" in the main directory of this archive
+ * for more details.
+ *
+ */
+
 #ifndef __LINUX_MFD_NVEC
 #define __LINUX_MFD_NVEC
 
@@ -16,7 +31,7 @@ typedef enum {
 } how_care;
 
 typedef enum {
-       NVEC_SYS=1,
+       NVEC_SYS = 1,
        NVEC_BAT,
        NVEC_KBD = 5,
        NVEC_PS2,
@@ -26,9 +41,9 @@ typedef enum {
 } nvec_event;
 
 typedef enum {
-       NVEC_WAIT,
-       NVEC_READ,
-       NVEC_WRITE
+       NVEC_WAIT,
+       NVEC_READ,
+       NVEC_WRITE
 } nvec_state;
 
 struct nvec_msg {
@@ -63,22 +78,27 @@ struct nvec_chip {
        struct work_struct rx_work, tx_work;
        struct nvec_msg *rx, *tx;
 
-/* sync write stuff */
+       /* sync write stuff */
        struct semaphore sync_write_mutex;
        struct completion sync_write;
        u16 sync_write_pending;
        struct nvec_msg *last_sync_msg;
 };
 
-extern void nvec_write_async(struct nvec_chip *nvec, unsigned char *data, 
short size);
+extern void nvec_write_async(struct nvec_chip *nvec, const unsigned char *data,
+                            short size);
 
 extern int nvec_register_notifier(struct nvec_chip *nvec,
-                struct notifier_block *nb, unsigned int events);
+                                 struct notifier_block *nb,
+                                 unsigned int events);
 
 extern int nvec_unregister_notifier(struct device *dev,
-               struct notifier_block *nb, unsigned int events);
+                                   struct notifier_block *nb,
+                                   unsigned int events);
 
-const char *nvec_send_msg(unsigned char *src, unsigned char *dst_size, 
how_care care_resp, void (*rt_handler)(unsigned char *data));
+const char *nvec_send_msg(unsigned char *src, unsigned char *dst_size,
+                         how_care care_resp,
+                         void (*rt_handler) (unsigned char *data));
 
 #define I2C_CNFG                       0x00
 #define I2C_CNFG_PACKET_MODE_EN                (1<<10)
diff --git a/drivers/staging/nvec/nvec_kbd.c b/drivers/staging/nvec/nvec_kbd.c
index cc81990..36f8060 100644
--- a/drivers/staging/nvec/nvec_kbd.c
+++ b/drivers/staging/nvec/nvec_kbd.c
@@ -1,14 +1,29 @@
+/*
+ * nvec_kbd: keyboard driver for a NVIDIA compliant embedded controller
+ *
+ * Copyright (C) 2011 The AC100 Kernel Team <[email protected]>
+ *
+ * Authors:  Pierre-Hugues Husson <[email protected]>
+ *           Marc Dietrich <[email protected]>
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License.  See the file "COPYING" in the main directory of this archive
+ * for more details.
+ *
+ */
+
 #include <linux/slab.h>
 #include <linux/input.h>
 #include <linux/delay.h>
 #include <linux/platform_device.h>
+
 #include "nvec-keytable.h"
 #include "nvec.h"
 
 #define ACK_KBD_EVENT {'\x05','\xed','\x01'}
 
 static unsigned char keycodes[ARRAY_SIZE(code_tab_102us)
-                       + ARRAY_SIZE(extcode_tab_us102)];
+                             + ARRAY_SIZE(extcode_tab_us102)];
 
 struct nvec_keys {
        struct input_dev *input;
@@ -19,7 +34,7 @@ struct nvec_keys {
 static struct nvec_keys keys_dev;
 
 static int nvec_keys_notifier(struct notifier_block *nb,
-                               unsigned long event_type, void *data)
+                             unsigned long event_type, void *data)
 {
        int code, state;
        unsigned char *msg = (unsigned char *)data;
@@ -28,16 +43,17 @@ static int nvec_keys_notifier(struct notifier_block *nb,
                nvec_size _size = (msg[0] & (3 << 5)) >> 5;
 
 /* power on/off button */
-               if(_size == NVEC_VAR_SIZE)
+               if (_size == NVEC_VAR_SIZE)
                        return NOTIFY_STOP;
 
-               if(_size == NVEC_3BYTES)
+               if (_size == NVEC_3BYTES)
                        msg++;
 
                code = msg[1] & 0x7f;
                state = msg[1] & 0x80;
 
-               input_report_key(keys_dev.input, code_tabs[_size][code], 
!state);
+               input_report_key(keys_dev.input, code_tabs[_size][code],
+                                !state);
                input_sync(keys_dev.input);
 
                return NOTIFY_STOP;
@@ -47,18 +63,18 @@ static int nvec_keys_notifier(struct notifier_block *nb,
 }
 
 static int nvec_kbd_event(struct input_dev *dev, unsigned int type,
-                               unsigned int code, int value)
+                         unsigned int code, int value)
 {
        unsigned char buf[] = ACK_KBD_EVENT;
        struct nvec_chip *nvec = keys_dev.nvec;
 
-       if(type==EV_REP)
+       if (type == EV_REP)
                return 0;
 
-       if(type!=EV_LED)
+       if (type != EV_LED)
                return -1;
 
-       if(code!=LED_CAPSL)
+       if (code != LED_CAPSL)
                return -1;
 
        buf[2] = !!value;
@@ -75,11 +91,11 @@ static int __devinit nvec_kbd_probe(struct platform_device 
*pdev)
 
        j = 0;
 
-       for(i = 0; i < ARRAY_SIZE(code_tab_102us); ++i)
+       for (i = 0; i < ARRAY_SIZE(code_tab_102us); ++i)
                keycodes[j++] = code_tab_102us[i];
 
-       for(i = 0; i < ARRAY_SIZE(extcode_tab_us102); ++i)
-               keycodes[j++]=extcode_tab_us102[i];
+       for (i = 0; i < ARRAY_SIZE(extcode_tab_us102); ++i)
+               keycodes[j++] = extcode_tab_us102[i];
 
        idev = input_allocate_device();
        idev->name = "Tegra nvec keyboard";
@@ -91,12 +107,12 @@ static int __devinit nvec_kbd_probe(struct platform_device 
*pdev)
        idev->keycodesize = sizeof(unsigned char);
        idev->keycodemax = ARRAY_SIZE(keycodes);
 
-       for( i = 0; i < ARRAY_SIZE(keycodes); ++i)
+       for (i = 0; i < ARRAY_SIZE(keycodes); ++i)
                set_bit(keycodes[i], idev->keybit);
 
        clear_bit(0, idev->keybit);
        err = input_register_device(idev);
-       if(err)
+       if (err)
                goto fail;
 
        keys_dev.input = idev;
@@ -124,10 +140,10 @@ fail:
 }
 
 static struct platform_driver nvec_kbd_driver = {
-       .probe  = nvec_kbd_probe,
-       .driver = {
-               .name   = "nvec-kbd",
-               .owner  = THIS_MODULE,
+       .probe  = nvec_kbd_probe,
+       .driver = {
+               .name = "nvec-kbd",
+               .owner = THIS_MODULE,
        },
 };
 
@@ -137,3 +153,7 @@ static int __init nvec_kbd_init(void)
 }
 
 module_init(nvec_kbd_init);
+
+MODULE_AUTHOR("Marc Dietrich <[email protected]>");
+MODULE_DESCRIPTION("NVEC keyboard driver");
+MODULE_LICENSE("GPL");
diff --git a/drivers/staging/nvec/nvec_power.c 
b/drivers/staging/nvec/nvec_power.c
index df164ad..bfaa0da 100644
--- a/drivers/staging/nvec/nvec_power.c
+++ b/drivers/staging/nvec/nvec_power.c
@@ -1,3 +1,17 @@
+/*
+ * nvec_power: power supply driver for a NVIDIA compliant embedded controller
+ *
+ * Copyright (C) 2011 The AC100 Kernel Team <[email protected]>
+ *
+ * Authors:  Ilya Petrov <[email protected]>
+ *           Marc Dietrich <[email protected]>
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License.  See the file "COPYING" in the main directory of this archive
+ * for more details.
+ *
+ */
+
 #include <linux/module.h>
 #include <linux/platform_device.h>
 #include <linux/err.h>
@@ -5,10 +19,10 @@
 #include <linux/slab.h>
 #include <linux/workqueue.h>
 #include <linux/delay.h>
+
 #include "nvec.h"
 
-struct nvec_power
-{
+struct nvec_power {
        struct notifier_block notifier;
        struct delayed_work poller;
        struct nvec_chip *nvec;
@@ -58,7 +72,8 @@ struct bat_response {
        u8 length;
        u8 sub_type;
        u8 status;
-       union { /* payload */
+       /* payload */
+       union {
                char plc[30];
                u16 plu;
                s16 pls;
@@ -69,18 +84,17 @@ static struct power_supply nvec_bat_psy;
 static struct power_supply nvec_psy;
 
 static int nvec_power_notifier(struct notifier_block *nb,
-                                unsigned long event_type, void *data)
+                              unsigned long event_type, void *data)
 {
-       struct nvec_power *power = container_of(nb, struct nvec_power, 
notifier);
+       struct nvec_power *power =
+           container_of(nb, struct nvec_power, notifier);
        struct bat_response *res = (struct bat_response *)data;
 
        if (event_type != NVEC_SYS)
                return NOTIFY_DONE;
 
-       if(res->sub_type == 0)
-       {
-               if (power->on != res->plu)
-               {
+       if (res->sub_type == 0) {
+               if (power->on != res->plu) {
                        power->on = res->plu;
                        power_supply_changed(&nvec_psy);
                }
@@ -89,8 +103,7 @@ static int nvec_power_notifier(struct notifier_block *nb,
        return NOTIFY_OK;
 }
 
-static const int bat_init[] =
-{
+static const int bat_init[] = {
        LAST_FULL_CHARGE_CAPACITY, DESIGN_CAPACITY, CRITICAL_CAPACITY,
        MANUFACTURER, MODEL, TYPE,
 };
@@ -100,116 +113,115 @@ static void get_bat_mfg_data(struct nvec_power *power)
        int i;
        char buf[] = { '\x02', '\x00' };
 
-       for (i = 0; i < ARRAY_SIZE(bat_init); i++)
-       {
+       for (i = 0; i < ARRAY_SIZE(bat_init); i++) {
                buf[1] = bat_init[i];
                nvec_write_async(power->nvec, buf, 2);
        }
 }
 
 static int nvec_power_bat_notifier(struct notifier_block *nb,
-                                unsigned long event_type, void *data)
+                                  unsigned long event_type, void *data)
 {
-       struct nvec_power *power = container_of(nb, struct nvec_power, 
notifier);
+       struct nvec_power *power =
+           container_of(nb, struct nvec_power, notifier);
        struct bat_response *res = (struct bat_response *)data;
        int status_changed = 0;
 
        if (event_type != NVEC_BAT)
                return NOTIFY_DONE;
 
-       switch(res->sub_type)
-       {
-               case SLOT_STATUS:
-                       if (res->plc[0] & 1)
-                       {
-                               if (power->bat_present == 0)
-                               {
-                                       status_changed = 1;
-                                       get_bat_mfg_data(power);
-                               }
-
-                               power->bat_present = 1;
-
-                               switch ((res->plc[0] >> 1) & 3)
-                               {
-                                       case 0:
-                                               power->bat_status = 
POWER_SUPPLY_STATUS_NOT_CHARGING;
-                                               break;
-                                       case 1:
-                                               power->bat_status = 
POWER_SUPPLY_STATUS_CHARGING;
-                                               break;
-                                       case 2:
-                                               power->bat_status = 
POWER_SUPPLY_STATUS_DISCHARGING;
-                                               break;
-                                       default:
-                                               power->bat_status = 
POWER_SUPPLY_STATUS_UNKNOWN;
-                               }
-                       } else {
-                               if (power->bat_present == 1)
-                                       status_changed = 1;
-
-                               power->bat_present = 0;
+       switch (res->sub_type) {
+       case SLOT_STATUS:
+               if (res->plc[0] & 1) {
+                       if (power->bat_present == 0) {
+                               status_changed = 1;
+                               get_bat_mfg_data(power);
+                       }
+
+                       power->bat_present = 1;
+
+                       switch ((res->plc[0] >> 1) & 3) {
+                       case 0:
+                               power->bat_status =
+                                   POWER_SUPPLY_STATUS_NOT_CHARGING;
+                               break;
+                       case 1:
+                               power->bat_status =
+                                   POWER_SUPPLY_STATUS_CHARGING;
+                               break;
+                       case 2:
+                               power->bat_status =
+                                   POWER_SUPPLY_STATUS_DISCHARGING;
+                               break;
+                       default:
                                power->bat_status = POWER_SUPPLY_STATUS_UNKNOWN;
                        }
-                       power->bat_cap = res->plc[1];
-                       if (status_changed)
-                               power_supply_changed(&nvec_bat_psy);
-                       break;
-               case VOLTAGE:
-                       power->bat_voltage_now = res->plu * 1000;
-                       break;
-               case TIME_REMAINING:
-                       power->time_remain = res->plu * 3600;
-                       break;
-               case CURRENT:
-                       power->bat_current_now = res->pls * 1000;
-                       break;
-               case AVERAGE_CURRENT:
-                       power->bat_current_avg = res->pls * 1000;
-                       break;
-               case CAPACITY_REMAINING:
-                       power->capacity_remain = res->plu * 1000;
-                       break;
-               case LAST_FULL_CHARGE_CAPACITY:
-                       power->charge_last_full = res->plu * 1000;
-                       break;
-               case DESIGN_CAPACITY:
-                       power->charge_full_design = res->plu * 1000;
-                       break;
-               case CRITICAL_CAPACITY:
-                       power->critical_capacity = res->plu * 1000;
-                       break;
-               case TEMPERATURE:
-                       power->bat_temperature = res->plu - 2732;
-                       break;
-               case MANUFACTURER:
-                       memcpy(power->bat_manu, &res->plc, res->length-2);
-                       power->bat_model[res->length-2] = '\0';
-                       break;
-               case MODEL:
-                       memcpy(power->bat_model, &res->plc, res->length-2);
-                       power->bat_model[res->length-2] = '\0';
-                       break;
-               case TYPE:
-                       memcpy(power->bat_type, &res->plc, res->length-2);
-                       power->bat_type[res->length-2] = '\0';
-                       /* this differs a little from the spec
-                          fill in more if you find some */
-                       if (!strncmp(power->bat_type, "Li", 30))
-                               power->bat_type_enum = 
POWER_SUPPLY_TECHNOLOGY_LION;
-                       else
-                               power->bat_type_enum = 
POWER_SUPPLY_TECHNOLOGY_UNKNOWN;
-                       break;
-               default:
-                       return NOTIFY_STOP;
+               } else {
+                       if (power->bat_present == 1)
+                               status_changed = 1;
+
+                       power->bat_present = 0;
+                       power->bat_status = POWER_SUPPLY_STATUS_UNKNOWN;
+               }
+               power->bat_cap = res->plc[1];
+               if (status_changed)
+                       power_supply_changed(&nvec_bat_psy);
+               break;
+       case VOLTAGE:
+               power->bat_voltage_now = res->plu * 1000;
+               break;
+       case TIME_REMAINING:
+               power->time_remain = res->plu * 3600;
+               break;
+       case CURRENT:
+               power->bat_current_now = res->pls * 1000;
+               break;
+       case AVERAGE_CURRENT:
+               power->bat_current_avg = res->pls * 1000;
+               break;
+       case CAPACITY_REMAINING:
+               power->capacity_remain = res->plu * 1000;
+               break;
+       case LAST_FULL_CHARGE_CAPACITY:
+               power->charge_last_full = res->plu * 1000;
+               break;
+       case DESIGN_CAPACITY:
+               power->charge_full_design = res->plu * 1000;
+               break;
+       case CRITICAL_CAPACITY:
+               power->critical_capacity = res->plu * 1000;
+               break;
+       case TEMPERATURE:
+               power->bat_temperature = res->plu - 2732;
+               break;
+       case MANUFACTURER:
+               memcpy(power->bat_manu, &res->plc, res->length - 2);
+               power->bat_model[res->length - 2] = '\0';
+               break;
+       case MODEL:
+               memcpy(power->bat_model, &res->plc, res->length - 2);
+               power->bat_model[res->length - 2] = '\0';
+               break;
+       case TYPE:
+               memcpy(power->bat_type, &res->plc, res->length - 2);
+               power->bat_type[res->length - 2] = '\0';
+               /* this differs a little from the spec
+                  fill in more if you find some */
+               if (!strncmp(power->bat_type, "Li", 30))
+                       power->bat_type_enum = POWER_SUPPLY_TECHNOLOGY_LION;
+               else
+                       power->bat_type_enum = POWER_SUPPLY_TECHNOLOGY_UNKNOWN;
+               break;
+       default:
+               return NOTIFY_STOP;
        }
 
        return NOTIFY_STOP;
 }
 
 static int nvec_power_get_property(struct power_supply *psy,
-                               enum power_supply_property psp,
-                               union power_supply_propval *val)
+                                  enum power_supply_property psp,
+                                  union power_supply_propval *val)
 {
        struct nvec_power *power = dev_get_drvdata(psy->dev->parent);
        switch (psp) {
@@ -223,61 +235,60 @@ static int nvec_power_get_property(struct power_supply 
*psy,
 }
 
 static int nvec_battery_get_property(struct power_supply *psy,
-                               enum power_supply_property psp,
-                               union power_supply_propval *val)
+                                    enum power_supply_property psp,
+                                    union power_supply_propval *val)
 {
        struct nvec_power *power = dev_get_drvdata(psy->dev->parent);
 
-       switch(psp)
-       {
-               case POWER_SUPPLY_PROP_STATUS:
-                       val->intval = power->bat_status;
-                       break;
-               case POWER_SUPPLY_PROP_CAPACITY:
-                       val->intval = power->bat_cap;
-                       break;
-               case POWER_SUPPLY_PROP_PRESENT:
-                       val->intval = power->bat_present;
-                       break;
-               case POWER_SUPPLY_PROP_VOLTAGE_NOW:
-                       val->intval = power->bat_voltage_now;
-                       break;
-               case POWER_SUPPLY_PROP_CURRENT_NOW:
-                       val->intval = power->bat_current_now;
-                       break;
-               case POWER_SUPPLY_PROP_CURRENT_AVG:
-                       val->intval = power->bat_current_avg;
-                       break;
-               case POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW:
-                       val->intval = power->time_remain;
-                       break;
-               case POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN:
-                       val->intval = power->charge_full_design;
-                       break;
-               case POWER_SUPPLY_PROP_CHARGE_FULL:
-                       val->intval = power->charge_last_full;
-                       break;
-               case POWER_SUPPLY_PROP_CHARGE_EMPTY:
-                       val->intval = power->critical_capacity;
-                       break;
-               case POWER_SUPPLY_PROP_CHARGE_NOW:
-                       val->intval = power->capacity_remain;
-                       break;
-               case POWER_SUPPLY_PROP_TEMP:
-                       val->intval = power->bat_temperature;
-                       break;
-               case POWER_SUPPLY_PROP_MANUFACTURER:
-                       val->strval = power->bat_manu;
-                       break;
-               case POWER_SUPPLY_PROP_MODEL_NAME:
-                       val->strval = power->bat_model;
-                       break;
-               case POWER_SUPPLY_PROP_TECHNOLOGY:
-                       val->intval = power->bat_type_enum;
-                       break;
-               default:
-                       return -EINVAL;
-               }
+       switch (psp) {
+       case POWER_SUPPLY_PROP_STATUS:
+               val->intval = power->bat_status;
+               break;
+       case POWER_SUPPLY_PROP_CAPACITY:
+               val->intval = power->bat_cap;
+               break;
+       case POWER_SUPPLY_PROP_PRESENT:
+               val->intval = power->bat_present;
+               break;
+       case POWER_SUPPLY_PROP_VOLTAGE_NOW:
+               val->intval = power->bat_voltage_now;
+               break;
+       case POWER_SUPPLY_PROP_CURRENT_NOW:
+               val->intval = power->bat_current_now;
+               break;
+       case POWER_SUPPLY_PROP_CURRENT_AVG:
+               val->intval = power->bat_current_avg;
+               break;
+       case POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW:
+               val->intval = power->time_remain;
+               break;
+       case POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN:
+               val->intval = power->charge_full_design;
+               break;
+       case POWER_SUPPLY_PROP_CHARGE_FULL:
+               val->intval = power->charge_last_full;
+               break;
+       case POWER_SUPPLY_PROP_CHARGE_EMPTY:
+               val->intval = power->critical_capacity;
+               break;
+       case POWER_SUPPLY_PROP_CHARGE_NOW:
+               val->intval = power->capacity_remain;
+               break;
+       case POWER_SUPPLY_PROP_TEMP:
+               val->intval = power->bat_temperature;
+               break;
+       case POWER_SUPPLY_PROP_MANUFACTURER:
+               val->strval = power->bat_manu;
+               break;
+       case POWER_SUPPLY_PROP_MODEL_NAME:
+               val->strval = power->bat_model;
+               break;
+       case POWER_SUPPLY_PROP_TECHNOLOGY:
+               val->intval = power->bat_type_enum;
+               break;
+       default:
+               return -EINVAL;
+       }
        return 0;
 }
 
@@ -310,11 +321,11 @@ static char *nvec_power_supplied_to[] = {
 };
 
 static struct power_supply nvec_bat_psy = {
-       .name           = "battery",
-       .type           = POWER_SUPPLY_TYPE_BATTERY,
-       .properties     = nvec_battery_props,
-       .num_properties = ARRAY_SIZE(nvec_battery_props),
-       .get_property   = nvec_battery_get_property,
+       .name = "battery",
+       .type = POWER_SUPPLY_TYPE_BATTERY,
+       .properties = nvec_battery_props,
+       .num_properties = ARRAY_SIZE(nvec_battery_props),
+       .get_property = nvec_battery_get_property,
 };
 
 static struct power_supply nvec_psy = {
@@ -328,8 +339,7 @@ static struct power_supply nvec_psy = {
 };
 
 static int counter = 0;
-static int const bat_iter[] =
-{
+static int const bat_iter[] = {
        SLOT_STATUS, VOLTAGE, CURRENT, CAPACITY_REMAINING,
 #ifdef EC_FULL_DIAG
        AVERAGE_CURRENT, TEMPERATURE, TIME_REMAINING,
@@ -340,7 +350,7 @@ static void nvec_power_poll(struct work_struct *work)
 {
        char buf[] = { '\x01', '\x00' };
        struct nvec_power *power = container_of(work, struct nvec_power,
-                poller.work);
+                                               poller.work);
 
        if (counter >= ARRAY_SIZE(bat_iter))
                counter = 0;
@@ -351,19 +361,18 @@ static void nvec_power_poll(struct work_struct *work)
 
 /* select a battery request function via round robin
    doing it all at once seems to overload the power supply */
-       buf[0] = '\x02'; /* battery */
-        buf[1] = bat_iter[counter++];
+       buf[0] = '\x02';        /* battery */
+       buf[1] = bat_iter[counter++];
        nvec_write_async(power->nvec, buf, 2);
 
-//     printk("%02x %02x\n", buf[0], buf[1]);
-
        schedule_delayed_work(to_delayed_work(work), msecs_to_jiffies(5000));
 };
 
 static int __devinit nvec_power_probe(struct platform_device *pdev)
 {
        struct power_supply *psy;
-       struct nvec_power *power = kzalloc(sizeof(struct nvec_power), 
GFP_NOWAIT);
+       struct nvec_power *power =
+           kzalloc(sizeof(struct nvec_power), GFP_NOWAIT);
        struct nvec_chip *nvec = dev_get_drvdata(pdev->dev.parent);
 
        dev_set_drvdata(&pdev->dev, power);
@@ -381,7 +390,7 @@ static int __devinit nvec_power_probe(struct 
platform_device *pdev)
        case BAT:
                psy = &nvec_bat_psy;
 
-                power->notifier.notifier_call = nvec_power_bat_notifier;
+               power->notifier.notifier_call = nvec_power_bat_notifier;
                break;
        default:
                kfree(power);
@@ -398,14 +407,13 @@ static int __devinit nvec_power_probe(struct 
platform_device *pdev)
 
 static struct platform_driver nvec_power_driver = {
        .probe = nvec_power_probe,
-//     .remove = __devexit_p(nvec_power_remove),
        .driver = {
-               .name = "nvec-power",
-               .owner = THIS_MODULE,
-       }
+                  .name = "nvec-power",
+                  .owner = THIS_MODULE,
+                  }
 };
 
-static int __init nvec_power_init(void) 
+static int __init nvec_power_init(void)
 {
        return platform_driver_register(&nvec_power_driver);
 }
diff --git a/drivers/staging/nvec/nvec_ps2.c b/drivers/staging/nvec/nvec_ps2.c
index 0d3149b..b40025d 100644
--- a/drivers/staging/nvec/nvec_ps2.c
+++ b/drivers/staging/nvec/nvec_ps2.c
@@ -1,15 +1,32 @@
+/*
+ * nvec_ps2: mouse driver for a NVIDIA compliant embedded controller
+ *
+ * Copyright (C) 2011 The AC100 Kernel Team <[email protected]>
+ *
+ * Authors:  Pierre-Hugues Husson <[email protected]>
+ *           Ilya Petrov <[email protected]>
+ *           Marc Dietrich <[email protected]>
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License.  See the file "COPYING" in the main directory of this archive
+ * for more details.
+ *
+ */
+
 #include <linux/slab.h>
 #include <linux/serio.h>
 #include <linux/delay.h>
 #include <linux/platform_device.h>
+
 #include "nvec.h"
 
 #define START_STREAMING        {'\x06','\x03','\x01'}
 #define STOP_STREAMING {'\x06','\x04'}
 #define SEND_COMMAND   {'\x06','\x01','\xf4','\x01'}
 
-struct nvec_ps2
-{
+static const unsigned char MOUSE_RESET[] = {'\x06', '\x01', '\xff', '\x03'};
+
+struct nvec_ps2 {
        struct serio *ser_dev;
        struct notifier_block notifier;
        struct nvec_chip *nvec;
@@ -30,12 +47,6 @@ static void ps2_stopstreaming(struct serio *ser_dev)
        nvec_write_async(ps2_dev.nvec, buf, sizeof(buf));
 }
 
-/* is this really needed?
-static void nvec_resp_handler(unsigned char *data) {
-       serio_interrupt(ser_dev, data[4], 0);
-}
-*/
-
 static int ps2_sendcommand(struct serio *ser_dev, unsigned char cmd)
 {
        unsigned char buf[] = SEND_COMMAND;
@@ -49,47 +60,44 @@ static int ps2_sendcommand(struct serio *ser_dev, unsigned 
char cmd)
 }
 
 static int nvec_ps2_notifier(struct notifier_block *nb,
-                               unsigned long event_type, void *data)
+                            unsigned long event_type, void *data)
 {
        int i;
        unsigned char *msg = (unsigned char *)data;
 
        switch (event_type) {
-               case NVEC_PS2_EVT:
-                       serio_interrupt(ps2_dev.ser_dev, msg[2], 0);
-                       return NOTIFY_STOP;
-
-               case NVEC_PS2:
-                       if (msg[2] == 1)
-                               for(i = 0; i < (msg[1] - 2); i++)
-                                       serio_interrupt(ps2_dev.ser_dev, 
msg[i+4], 0);
-                       else if (msg[1] != 2) /* !ack */
-                       {
-                               printk("nvec_ps2: unhandled mouse event ");
-                               for(i = 0; i <= (msg[1]+1); i++)
-                                       printk("%02x ", msg[i]);
-                               printk(".\n");
-                       }
-
-                       return NOTIFY_STOP;
+       case NVEC_PS2_EVT:
+               serio_interrupt(ps2_dev.ser_dev, msg[2], 0);
+               return NOTIFY_STOP;
+
+       case NVEC_PS2:
+               if (msg[2] == 1)
+                       for (i = 0; i < (msg[1] - 2); i++)
+                               serio_interrupt(ps2_dev.ser_dev, msg[i + 4], 0);
+               else if (msg[1] != 2) { /* !ack */
+                       print_hex_dump(KERN_WARNING, "unhandled mouse event: ",
+                               DUMP_PREFIX_NONE, 16, 1,
+                               msg, msg[1] + 2, true);
+               }
+
+               return NOTIFY_STOP;
        }
 
        return NOTIFY_DONE;
 }
 
-
 static int __devinit nvec_mouse_probe(struct platform_device *pdev)
 {
        struct nvec_chip *nvec = dev_get_drvdata(pdev->dev.parent);
        struct serio *ser_dev = kzalloc(sizeof(struct serio), GFP_KERNEL);
 
-       ser_dev->id.type=SERIO_8042;
-       ser_dev->write=ps2_sendcommand;
-       ser_dev->open=ps2_startstreaming;
-       ser_dev->close=ps2_stopstreaming;
+       ser_dev->id.type = SERIO_8042;
+       ser_dev->write = ps2_sendcommand;
+       ser_dev->open = ps2_startstreaming;
+       ser_dev->close = ps2_stopstreaming;
 
-       strlcpy(ser_dev->name, "NVEC PS2", sizeof(ser_dev->name));
-       strlcpy(ser_dev->phys, "NVEC I2C slave", sizeof(ser_dev->phys));
+       strlcpy(ser_dev->name, "nvec mouse", sizeof(ser_dev->name));
+       strlcpy(ser_dev->phys, "nvec", sizeof(ser_dev->phys));
 
        ps2_dev.ser_dev = ser_dev;
        ps2_dev.notifier.notifier_call = nvec_ps2_notifier;
@@ -99,16 +107,16 @@ static int __devinit nvec_mouse_probe(struct 
platform_device *pdev)
        serio_register_port(ser_dev);
 
        /* mouse reset */
-       nvec_write_async(nvec, "\x06\x01\xff\x03", 4);
+       nvec_write_async(nvec, MOUSE_RESET, 4);
 
        return 0;
 }
 
 static struct platform_driver nvec_mouse_driver = {
-       .probe  = nvec_mouse_probe,
-       .driver = {
-               .name   = "nvec-mouse",
-               .owner  = THIS_MODULE,
+       .probe  = nvec_mouse_probe,
+       .driver = {
+               .name = "nvec-mouse",
+               .owner = THIS_MODULE,
        },
 };
 
@@ -118,3 +126,7 @@ static int __init nvec_mouse_init(void)
 }
 
 module_init(nvec_mouse_init);
+
+MODULE_DESCRIPTION("NVEC mouse driver");
+MODULE_AUTHOR("Marc Dietrich <[email protected]>");
+MODULE_LICENSE("GPL");
-- 
1.7.4.1

_______________________________________________
devel mailing list
[email protected]
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel

Reply via email to