[FIX] loading swap_energy.ko 12/16012/3
authorVyacheslav Cherkashin <v.cherkashin@samsung.com>
Tue, 4 Feb 2014 16:30:59 +0000 (20:30 +0400)
committerDmitry Kovalenko <d.kovalenko@samsung.com>
Thu, 6 Mar 2014 10:00:06 +0000 (02:00 -0800)
ignoring unsupported LCD

Change-Id: I2d68d5991c47d90977b7cda3d555b3a3fc620d0a
Signed-off-by: Vyacheslav Cherkashin <v.cherkashin@samsung.com>
energy/debugfs_energy.c
energy/debugfs_energy.h
energy/energy.c
energy/lcd/lcd_base.c
start.sh

index 3063c4a..e9fd342 100644 (file)
@@ -201,9 +201,13 @@ enum {
  */
 static struct dentry *energy_dir = NULL;
 
+struct dentry *get_energy_dir(void)
+{
+       return energy_dir;
+}
+
 void exit_debugfs_energy(void)
 {
-       exit_lcd_debugfs();
        if (energy_dir)
                debugfs_remove_recursive(energy_dir);
 
@@ -212,7 +216,7 @@ void exit_debugfs_energy(void)
 
 int init_debugfs_energy(void)
 {
-       int i, ret = -ENOMEM;
+       int i;
        struct dentry *swap_dir, *dentry;
 
        swap_dir = get_swap_debugfs_dir();
@@ -229,13 +233,9 @@ int init_debugfs_energy(void)
                        goto fail;
        }
 
-       ret = init_lcd_debugfs(energy_dir);
-       if (ret)
-               goto fail;
-
        return 0;
 
 fail:
        exit_debugfs_energy();
-       return ret;
+       return -ENOMEM;
 }
index cfc0798..d404e76 100644 (file)
  *
  */
 
+
+struct dentry;
+
+
 int init_debugfs_energy(void);
 void exit_debugfs_energy(void);
 
+struct dentry *get_energy_dir(void);
+
+
 #endif /* _DEBUGFS_ENERGY_H */
index fbc2a8a..238762d 100644 (file)
@@ -585,12 +585,10 @@ int energy_init(void)
        }
 
        ret = lcd_init();
-       if (ret) {
-               printk("Cannot init LCD\n");
-               uninit_feature();
-       }
+       if (ret)
+               printk("Cannot init LCD, ret=%d\n", ret);
 
-       return ret;
+       return 0;
 }
 
 void energy_uninit(void)
index 0c9938a..71a782f 100644 (file)
@@ -28,6 +28,7 @@
 #include <linux/fs.h>
 #include <linux/fb.h>
 #include <energy/tm_stat.h>
+#include <energy/debugfs_energy.h>
 #include "lcd_base.h"
 #include "lcd_debugfs.h"
 
@@ -326,7 +327,7 @@ enum ST_LCD_OPS {
 static DEFINE_MUTEX(lcd_lock);
 static enum ST_LCD_OPS stat_lcd_ops[lcd_ops_cnt];
 
-void lcd_exit(void)
+static void do_lcd_exit(void)
 {
        int i;
        struct lcd_ops *ops;
@@ -348,7 +349,13 @@ void lcd_exit(void)
        mutex_unlock(&lcd_lock);
 }
 
-int lcd_init(void)
+void lcd_exit(void)
+{
+       do_lcd_exit();
+       exit_lcd_debugfs();
+}
+
+static int do_lcd_init(void)
 {
        int i, ret, count = 0;
        struct lcd_ops *ops;
@@ -380,7 +387,29 @@ int lcd_init(void)
        return count ? 0 : -EPERM;
 }
 
+int lcd_init(void)
+{
+       int ret;
+       struct dentry *energy_dir;
+
+       energy_dir = get_energy_dir();
+       if (energy_dir == NULL) {
+               printk("Cannot energy_dir\n");
+               return -ENOENT;
+       }
+
+       ret = init_lcd_debugfs(energy_dir);
+       if (ret)
+               return ret;
 
+       ret = do_lcd_init();
+       if (ret) {
+               printk("LCD is not supported\n");
+               exit_lcd_debugfs();
+       }
+
+       return ret;
+}
 
 
 
index a1ed5be..5d0e6c9 100755 (executable)
--- a/start.sh
+++ b/start.sh
@@ -41,10 +41,14 @@ echo 69998585 > /sys/kernel/debug/swap/energy/flash_read/denominator &&
 echo 131443 > /sys/kernel/debug/swap/energy/flash_write/numerator &&
 echo 31129333 > /sys/kernel/debug/swap/energy/flash_write/denominator &&
 
-# lcd max (white max - black max) / 2: 255 / 1
-echo 255 > `ls /sys/kernel/debug/swap/energy/lcd/*/max_num` &&
-echo 1000000 > `ls /sys/kernel/debug/swap/energy/lcd/*/max_denom` &&
-
-# lcd min (white min - black min) / 2: 179 / 1
-echo 179 > `ls /sys/kernel/debug/swap/energy/lcd/*/min_num` &&
-echo 1000000 > `ls /sys/kernel/debug/swap/energy/lcd/*/min_denom`
+# LCD:
+if [ -d /sys/kernel/debug/swap/energy/lcd/ ]
+then
+       # lcd max (white max - black max) / 2: 255 / 1
+       echo 255 > `ls /sys/kernel/debug/swap/energy/lcd/*/max_num` &&
+       echo 1000000 > `ls /sys/kernel/debug/swap/energy/lcd/*/max_denom` &&
+
+       # lcd min (white min - black min) / 2: 179 / 1
+       echo 179 > `ls /sys/kernel/debug/swap/energy/lcd/*/min_num` &&
+       echo 1000000 > `ls /sys/kernel/debug/swap/energy/lcd/*/min_denom`
+fi