示例#1
0
static int
isl29023_probe(struct i2c_client *client, const struct i2c_device_id *id)
{
	int res;
	int err;
	int mode_check;

	struct isl29023_data *isl29023;
	pr_info("isl29023 probe begin...\n");

	isl29023 = kzalloc(sizeof(struct isl29023_data), GFP_KERNEL);
	if (!isl29023) {
		return -EINVAL;
	}

	err = isl29023_input_init(isl29023);
	if (err < 0) {
		goto err_exit;
	}

	err = sysfs_create_group(&client->dev.kobj, &m_isl_gr);
	if (err < 0) {
		goto err_exit;
	}

	res = isl_set_default_config(client);
	if (res < 0) {
		pr_warn("isl29023: set default config failed!!\n");
		is_device = 0;
		goto err_exit;
	}

	i2c_set_clientdata(client, isl29023);
	isl29023->client = client;

  /* setup driver interfaces */
	INIT_DELAYED_WORK(&isl29023->work, isl29023_work_func);


	last_mod = 0;
	mode_check = isl_set_mod(client, ISL_MOD_ALS_CONT);
	if (mode_check)
		schedule_delayed_work(&isl29023->work, delay_to_jiffies(1000) + 1);
	else
		cancel_delayed_work_sync(&isl29023->work);

#if DEBUG
	dev_dbg(&client->dev, "isl29023 probe succeed!\n");
#endif

	return res;

err_exit:
	kfree(isl29023);
	return -EINVAL;
}
示例#2
0
static int
isl29023_probe(struct i2c_client *client, const struct i2c_device_id *id)
{
	int res;
	int err;
	int mode_check;
  
	struct isl29023_data *isl29023;
	printk("[LIGHT] Isl29023 Probe \n");

	isl29023 = kzalloc(sizeof(struct isl29023_data), GFP_KERNEL);
	if (!isl29023) {
		return -EINVAL;
	}

    //printk(KERN_INFO MODULE_NAME ": %s isl29023 probe call, ID= %s\n", __func__, id->name);
#if 1
	err = isl29023_input_init(isl29023);
	if (err < 0) {
		return -EINVAL;
	}
 	err = sysfs_create_group(&isl29023->input->dev.kobj, &m_isl_gr);
	if (err < 0) {
		return -EINVAL;
	}
#endif
	res = isl_set_default_config(client);
	if (res < 0) {
		//pr_warn("isl29023: set default config failed!!\n");
     printk(KERN_INFO MODULE_NAME ": %s isl29023 set default config failed\n", __func__);

     is_device = 0;
     //
		return -EINVAL;
	}

  i2c_set_clientdata(client, isl29023);
  isl29023->client = client;
  
  /* setup driver interfaces */
    INIT_DELAYED_WORK(&isl29023->work, isl29023_work_func);


  last_mod = 0;
  mode_check = isl_set_mod(client, ISL_MOD_ALS_CONT);
  if (mode_check)
    schedule_delayed_work(&isl29023->work, delay_to_jiffies(3000) + 1);
  else
    cancel_delayed_work_sync(&isl29023->work);

  
#if 0 //Ĩ�� �ҷ����� ���� Ÿ ������ �������� ���� ���� �۾�.
	err = isl29023_input_init(isl29023);
	if (err < 0) {
		return -EINVAL;
	}
  
	err = sysfs_create_group(&isl29023->input->dev.kobj, &m_isl_gr);
	if (err < 0) {
		return -EINVAL;
	}
#endif
  
//  pm_runtime_enable(&client->dev);

#if DEBUG
	dev_dbg(&client->dev, "isl29023 probe succeed!\n");
#endif

	return res;
}