in therm_adt746x.c [391:444]
static DEVICE_ATTR(sensor1_temperature, S_IRUGO,
show_sensor1_temperature,NULL);
static DEVICE_ATTR(sensor2_temperature, S_IRUGO,
show_sensor2_temperature,NULL);
static DEVICE_ATTR(sensor1_limit, S_IRUGO,
show_sensor1_limit, NULL);
static DEVICE_ATTR(sensor2_limit, S_IRUGO,
show_sensor2_limit, NULL);
static DEVICE_ATTR(sensor1_location, S_IRUGO,
show_sensor1_location, NULL);
static DEVICE_ATTR(sensor2_location, S_IRUGO,
show_sensor2_location, NULL);
static DEVICE_ATTR(specified_fan_speed, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH,
show_specified_fan_speed,store_specified_fan_speed);
static DEVICE_ATTR(sensor1_fan_speed, S_IRUGO,
show_sensor1_fan_speed, NULL);
static DEVICE_ATTR(sensor2_fan_speed, S_IRUGO,
show_sensor2_fan_speed, NULL);
static DEVICE_ATTR(limit_adjust, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH,
show_limit_adjust, store_limit_adjust);
static void thermostat_create_files(struct thermostat *th)
{
struct device_node *np = th->clt->dev.of_node;
struct device *dev;
int err;
/* To maintain ABI compatibility with userspace, create
* the old style platform driver and attach the attributes
* to it here
*/
th->pdev = of_platform_device_create(np, "temperatures", NULL);
if (!th->pdev)
return;
dev = &th->pdev->dev;
dev_set_drvdata(dev, th);
err = device_create_file(dev, &dev_attr_sensor1_temperature);
err |= device_create_file(dev, &dev_attr_sensor2_temperature);
err |= device_create_file(dev, &dev_attr_sensor1_limit);
err |= device_create_file(dev, &dev_attr_sensor2_limit);
err |= device_create_file(dev, &dev_attr_sensor1_location);
err |= device_create_file(dev, &dev_attr_sensor2_location);
err |= device_create_file(dev, &dev_attr_limit_adjust);
err |= device_create_file(dev, &dev_attr_specified_fan_speed);
err |= device_create_file(dev, &dev_attr_sensor1_fan_speed);
if(th->type == ADT7460)
err |= device_create_file(dev, &dev_attr_sensor2_fan_speed);
if (err)
printk(KERN_WARNING
"Failed to create temperature attribute file(s).\n");
}