static int apds9802als_probe(struct i2c_client *client, const struct i2c_device_id *id) { int res; struct als_data *data; data = kzalloc(sizeof(struct als_data), GFP_KERNEL); if (data == NULL) { dev_err(&client->dev, "Memory allocation failed\n"); return -ENOMEM; } i2c_set_clientdata(client, data); res = sysfs_create_group(&client->dev.kobj, &m_als_gr); if (res) { dev_err(&client->dev, "device create file failed\n"); goto als_error1; } dev_info(&client->dev, "ALS chip found\n"); als_set_default_config(client); mutex_init(&data->mutex); pm_runtime_set_active(&client->dev); pm_runtime_enable(&client->dev); return res; als_error1: kfree(data); return res; }
static int isl29020_probe(struct i2c_client *client, const struct i2c_device_id *id) { int res; res = als_set_default_config(client); if (res < 0) return res; res = sysfs_create_group(&client->dev.kobj, &m_als_gr); if (res) { dev_err(&client->dev, "isl29020: device create file failed\n"); return res; } dev_info(&client->dev, "%s isl29020: ALS chip found\n", client->name); als_set_power_state(client, 0); pm_runtime_enable(&client->dev); return res; }
static int apds9802als_resume(struct i2c_client *client) { als_set_default_config(client); return 0; }