diff options
Diffstat (limited to 'drivers/w1/slaves/w1_ds2433.c')
| -rw-r--r-- | drivers/w1/slaves/w1_ds2433.c | 56 | 
1 files changed, 27 insertions, 29 deletions
diff --git a/drivers/w1/slaves/w1_ds2433.c b/drivers/w1/slaves/w1_ds2433.c index 0f7b8f9c509..72319a968a9 100644 --- a/drivers/w1/slaves/w1_ds2433.c +++ b/drivers/w1/slaves/w1_ds2433.c @@ -29,6 +29,7 @@  MODULE_LICENSE("GPL");  MODULE_AUTHOR("Ben Gardner <bgardner@wabtec.com>");  MODULE_DESCRIPTION("w1 family 23 driver for DS2433, 4kb EEPROM"); +MODULE_ALIAS("w1-family-" __stringify(W1_EEPROM_DS2433));  #define W1_EEPROM_SIZE		512  #define W1_PAGE_COUNT		16 @@ -92,9 +93,9 @@ static int w1_f23_refresh_block(struct w1_slave *sl, struct w1_f23_data *data,  }  #endif	/* CONFIG_W1_SLAVE_DS2433_CRC */ -static ssize_t w1_f23_read_bin(struct file *filp, struct kobject *kobj, -			       struct bin_attribute *bin_attr, -			       char *buf, loff_t off, size_t count) +static ssize_t eeprom_read(struct file *filp, struct kobject *kobj, +			   struct bin_attribute *bin_attr, char *buf, +			   loff_t off, size_t count)  {  	struct w1_slave *sl = kobj_to_w1_slave(kobj);  #ifdef CONFIG_W1_SLAVE_DS2433_CRC @@ -107,7 +108,7 @@ static ssize_t w1_f23_read_bin(struct file *filp, struct kobject *kobj,  	if ((count = w1_f23_fix_count(off, count, W1_EEPROM_SIZE)) == 0)  		return 0; -	mutex_lock(&sl->master->mutex); +	mutex_lock(&sl->master->bus_mutex);  #ifdef CONFIG_W1_SLAVE_DS2433_CRC @@ -138,7 +139,7 @@ static ssize_t w1_f23_read_bin(struct file *filp, struct kobject *kobj,  #endif	/* CONFIG_W1_SLAVE_DS2433_CRC */  out_up: -	mutex_unlock(&sl->master->mutex); +	mutex_unlock(&sl->master->bus_mutex);  	return count;  } @@ -206,9 +207,9 @@ static int w1_f23_write(struct w1_slave *sl, int addr, int len, const u8 *data)  	return 0;  } -static ssize_t w1_f23_write_bin(struct file *filp, struct kobject *kobj, -				struct bin_attribute *bin_attr, -				char *buf, loff_t off, size_t count) +static ssize_t eeprom_write(struct file *filp, struct kobject *kobj, +			    struct bin_attribute *bin_attr, char *buf, +			    loff_t off, size_t count)  {  	struct w1_slave *sl = kobj_to_w1_slave(kobj);  	int addr, len, idx; @@ -233,7 +234,7 @@ static ssize_t w1_f23_write_bin(struct file *filp, struct kobject *kobj,  	}  #endif	/* CONFIG_W1_SLAVE_DS2433_CRC */ -	mutex_lock(&sl->master->mutex); +	mutex_lock(&sl->master->bus_mutex);  	/* Can only write data to one page at a time */  	idx = 0; @@ -251,24 +252,29 @@ static ssize_t w1_f23_write_bin(struct file *filp, struct kobject *kobj,  	}  out_up: -	mutex_unlock(&sl->master->mutex); +	mutex_unlock(&sl->master->bus_mutex);  	return count;  } -static struct bin_attribute w1_f23_bin_attr = { -	.attr = { -		.name = "eeprom", -		.mode = S_IRUGO | S_IWUSR, -	}, -	.size = W1_EEPROM_SIZE, -	.read = w1_f23_read_bin, -	.write = w1_f23_write_bin, +static BIN_ATTR_RW(eeprom, W1_EEPROM_SIZE); + +static struct bin_attribute *w1_f23_bin_attributes[] = { +	&bin_attr_eeprom, +	NULL, +}; + +static const struct attribute_group w1_f23_group = { +	.bin_attrs = w1_f23_bin_attributes, +}; + +static const struct attribute_group *w1_f23_groups[] = { +	&w1_f23_group, +	NULL,  };  static int w1_f23_add_slave(struct w1_slave *sl)  { -	int err;  #ifdef CONFIG_W1_SLAVE_DS2433_CRC  	struct w1_f23_data *data; @@ -278,15 +284,7 @@ static int w1_f23_add_slave(struct w1_slave *sl)  	sl->family_data = data;  #endif	/* CONFIG_W1_SLAVE_DS2433_CRC */ - -	err = sysfs_create_bin_file(&sl->dev.kobj, &w1_f23_bin_attr); - -#ifdef CONFIG_W1_SLAVE_DS2433_CRC -	if (err) -		kfree(data); -#endif	/* CONFIG_W1_SLAVE_DS2433_CRC */ - -	return err; +	return 0;  }  static void w1_f23_remove_slave(struct w1_slave *sl) @@ -295,12 +293,12 @@ static void w1_f23_remove_slave(struct w1_slave *sl)  	kfree(sl->family_data);  	sl->family_data = NULL;  #endif	/* CONFIG_W1_SLAVE_DS2433_CRC */ -	sysfs_remove_bin_file(&sl->dev.kobj, &w1_f23_bin_attr);  }  static struct w1_family_ops w1_f23_fops = {  	.add_slave      = w1_f23_add_slave,  	.remove_slave   = w1_f23_remove_slave, +	.groups		= w1_f23_groups,  };  static struct w1_family w1_family_23 = {  | 
