93 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| --- a/tn7dsl.c
 | |
| +++ b/tn7dsl.c
 | |
| @@ -197,7 +197,7 @@ led_reg_t ledreg[2];
 | |
|  static struct led_funcs ledreg[2];
 | |
|  #endif
 | |
|  
 | |
| -#define DEV_DSLMOD       CTL_UNNUMBERED
 | |
| +#define DEV_DSLMOD	0
 | |
|  #define MAX_STR_SIZE     256
 | |
|  #define DSL_MOD_SIZE     256
 | |
|  
 | |
| @@ -333,8 +333,8 @@ static void tn7dsl_chng_modulation(void*
 | |
|  static unsigned int tn7dsl_set_modulation(void* data, int flag);
 | |
|  static void tn7dsl_ctrl_fineGain(int value);
 | |
|  static void tn7dsl_set_fineGainValue(int value);
 | |
| -static int dslmod_sysctl (ctl_table * ctl, int write, struct file *filp,
 | |
| -                          void *buffer, size_t * lenp);
 | |
| +static int dslmod_sysctl (ctl_table * ctl, int write, void *buffer,
 | |
| +                          size_t * lenp, loff_t *ppos);
 | |
|  static void tn7dsl_register_dslss_led(void);
 | |
|  void tn7dsl_dslmod_sysctl_register(void);
 | |
|  void tn7dsl_dslmod_sysctl_unregister(void);
 | |
| @@ -3398,8 +3398,8 @@ unsigned int tn7dsl_get_memory(unsigned
 | |
|  
 | |
|  
 | |
|  
 | |
| -static int dslmod_sysctl(ctl_table *ctl, int write, struct file * filp,
 | |
| -      void *buffer, size_t *lenp)
 | |
| +static int dslmod_sysctl(ctl_table *ctl, int write, void *buffer,
 | |
| +      size_t *lenp, loff_t *ppos)
 | |
|  {
 | |
|    char *ptr;
 | |
|    int ret, len = 0;
 | |
| @@ -3411,7 +3411,7 @@ static int dslmod_sysctl(ctl_table *ctl,
 | |
|    char mod_req[16] = { '\t' };
 | |
|    char fst_byt;
 | |
|  
 | |
| -  if (!*lenp || (filp->f_pos && !write))
 | |
| +  if (!*lenp || (*ppos && !write))
 | |
|    {
 | |
|      *lenp = 0;
 | |
|      return 0;
 | |
| @@ -3421,9 +3421,9 @@ static int dslmod_sysctl(ctl_table *ctl,
 | |
|     */
 | |
|    if(write)
 | |
|      {
 | |
| -    ret = proc_dostring(ctl, write, filp, buffer, lenp, 0);
 | |
| +    ret = proc_dostring(ctl, write, buffer, lenp, ppos);
 | |
|  
 | |
| -    switch (ctl->ctl_name)
 | |
| +    switch ((long)ctl->extra2)
 | |
|        {
 | |
|        case DEV_DSLMOD:
 | |
|        ptr = strpbrk(info, " \t");
 | |
| @@ -3507,14 +3507,21 @@ static int dslmod_sysctl(ctl_table *ctl,
 | |
|    else
 | |
|      {
 | |
|      len += sprintf(info+len, mod_req);
 | |
| -    ret = proc_dostring(ctl, write, filp, buffer, lenp, 0);
 | |
| +    ret = proc_dostring(ctl, write, buffer, lenp, ppos);
 | |
|      }
 | |
|    return ret;
 | |
|  }
 | |
|  
 | |
|  
 | |
|  ctl_table dslmod_table[] = {
 | |
| -  {DEV_DSLMOD, "dslmod", info, DSL_MOD_SIZE, 0644, NULL, NULL, &dslmod_sysctl, &sysctl_string}
 | |
| +	{
 | |
| +		.procname 		= "dslmod",
 | |
| +		.data			= info,
 | |
| +		.maxlen			= DSL_MOD_SIZE,
 | |
| +		.mode			= 0644,
 | |
| +		.proc_handler	= &dslmod_sysctl,
 | |
| +		.extra2			= (void *)DEV_DSLMOD,
 | |
| +	}
 | |
|    ,
 | |
|    {0}
 | |
|    };
 | |
| @@ -3522,7 +3529,12 @@ ctl_table dslmod_table[] = {
 | |
|  /* Make sure that /proc/sys/dev is there */
 | |
|  ctl_table dslmod_root_table[] = {
 | |
|  #ifdef CONFIG_PROC_FS
 | |
| -  {CTL_DEV, "dev", NULL, 0, 0555, dslmod_table}
 | |
| +	{
 | |
| +		.procname		= "dev",
 | |
| +		.maxlen			= 0,
 | |
| +		.mode			= 0555,
 | |
| +		.child			= dslmod_table,
 | |
| +	}
 | |
|    ,
 | |
|  #endif /* CONFIG_PROC_FS */
 | |
|    {0}
 | 
