*/
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);
int init_debugfs_energy(void)
{
- int i, ret = -ENOMEM;
+ int i;
struct dentry *swap_dir, *dentry;
swap_dir = get_swap_debugfs_dir();
goto fail;
}
- ret = init_lcd_debugfs(energy_dir);
- if (ret)
- goto fail;
-
return 0;
fail:
exit_debugfs_energy();
- return ret;
+ return -ENOMEM;
}
*
*/
+
+struct dentry;
+
+
int init_debugfs_energy(void);
void exit_debugfs_energy(void);
+struct dentry *get_energy_dir(void);
+
+
#endif /* _DEBUGFS_ENERGY_H */
}
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)
#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"
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;
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;
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;
+}
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