touchscreen:add calibration for touchscreen ili2102 to support it's APK
[firefly-linux-kernel-4.4.55.git] / drivers / dbg / kobj.c
1 /*
2  * kobj.c
3  *
4  * (C) Copyright hsl 2009
5  *      Released under GPL v2.
6  *
7  * 
8  * log:
9  *      for debug function by sysfs 
10  *      
11  */
12
13
14 #include <linux/types.h>
15 #include <linux/init.h>
16 #include <linux/module.h>
17 #include <linux/moduleparam.h>
18
19 #include <linux/fs.h>
20 #include <linux/mm.h>
21 #include <linux/sched.h>
22 #include <linux/cdev.h>
23 #include <linux/io.h>
24 #include <linux/wait.h>
25
26 #include <linux/uaccess.h>
27 #include <linux/errno.h>
28 #include <linux/poll.h>
29 #include <linux/timer.h>
30 #include <linux/spinlock_types.h>
31 #include <linux/string.h>
32 #include <linux/sysfs.h>
33 #include <linux/delay.h>
34 #include <linux/kallsyms.h>
35 #include <linux/rtc.h>
36 #include <asm/atomic.h>
37 #include <asm/signal.h>
38
39 static struct kobject *dbg_kobj;
40
41 extern int dbg_parse_cmd( char * cdb );
42
43 static char     dbg_lastcmd[512];
44
45 /* default kobject attribute operations */
46 static ssize_t dbg_call_attr_show(struct kobject *kobj, struct kobj_attribute *attr,
47                               char *buf)
48 {
49         strcpy( buf , dbg_lastcmd );
50         strcat(buf,"\n");
51         return strlen(buf)+1;
52 }
53 static ssize_t dbg_call_attr_store(struct kobject *kobj, struct kobj_attribute *attr,
54                                const char *buf, size_t count)
55 {
56         char    cmd[512];
57         int len = sizeof(dbg_lastcmd)>count ? count:sizeof(dbg_lastcmd);
58         //printk("count=%d,cmd=%s!\n" , count , buf );
59         strncpy( dbg_lastcmd , buf , len );
60         if( dbg_lastcmd[len-1] == '\n' ){
61             dbg_lastcmd[len-1] = 0;
62             len--;
63         }
64         strncpy( cmd , dbg_lastcmd , sizeof(cmd) );
65          dbg_parse_cmd( cmd );
66         return count;
67 }
68
69
70
71 static struct kobj_attribute _call_attr = {     
72         .attr   = {                             
73                 .name = "dbg",  
74                 .mode = 0644,                   
75         },                                      
76         .show   = dbg_call_attr_show,                   
77         .store  = dbg_call_attr_store,          
78 };
79
80 static struct attribute * g[] = {
81         &_call_attr.attr,
82         NULL,
83 };
84
85 static struct attribute_group attr_group = {
86         .attrs = g,
87 };
88
89
90 int dbg_init( void )
91 {
92         //dbg_kobj = kobject_create_and_add("dbg", NULL ); /*kernel_kobj*/
93         //if (!dbg_kobj)
94         //        return -ENOMEM;
95         //return sysfs_create_group(dbg_kobj, &attr_group);
96         return sysfs_create_group(kernel_kobj, &attr_group);
97 }
98
99 late_initcall(dbg_init);
100