Ejemplo n.º 1
0
static ssize_t
isl_enable_show(struct device *dev,
		     struct device_attribute *attr, char *buf)
		     
{
    struct isl29023_data *isl29023 = dev_get_drvdata(dev);
    int val;
    int temp_val = 1;
    
    if(!is_device)
    {
        printk("[LIGHT] NO DEVICE is_device = %d  \n",is_device);
        return;
    }
  
    mutex_lock(&mutex);
    val = isl_get_mod(isl29023->client);
    mutex_unlock(&mutex);
  
    if (val < 0)
      return val;
    
    switch (val) {
    case ISL_MOD_POWERDOWN:
      return sprintf(buf, "%d\n", ISL_MOD_POWERDOWN);
    case ISL_MOD_ALS_CONT:
      return sprintf(buf, "%d\n", temp_val);
    default:
      return -EINVAL;
    }

}
Ejemplo n.º 2
0
static int  isl29023_measure(struct  isl29023_data * isl29023)
{
  struct i2c_client *client =  isl29023->client;
  int ret_val, val, mod;
  unsigned long int max_count;
  int output = 0;
  int temp;

  mutex_lock(&mutex);
//  pm_runtime_get_sync(&client->dev);

  temp = i2c_smbus_read_byte_data(client, REG_DATA_MSB);
  if (temp < 0)
    goto err_exit;
  ret_val = i2c_smbus_read_byte_data(client, REG_DATA_LSB);
  if (ret_val < 0)
    goto err_exit;
  ret_val |= temp << 8;
  
#if DEBUG
  dev_dbg(dev, "%s: Data: %04x\n", __func__, ret_val);
#endif
//	printk("%s: Data: %04x\n", __func__, ret_val);
	
  mod = isl_get_mod(client);
  switch (mod) {
  case ISL_MOD_ALS_CONT:
  case ISL_MOD_ALS_ONCE:
  case ISL_MOD_IR_ONCE:
  case ISL_MOD_IR_CONT:
    output = ret_val;
    break;
  case ISL_MOD_PS_CONT:
  case ISL_MOD_PS_ONCE:
    val = i2c_smbus_read_byte_data(client, REG_CMD_2);
    if (val < 0)
      goto err_exit;
    max_count = isl_get_res(client);
    output = (((1 << (2 * (val & SENSOR_RANGE_MASK))) * 1000)
        * ret_val) / max_count;
    break;
  default:
    goto err_exit;
  }
  
//  pm_runtime_put_sync(&client->dev);
  mutex_unlock(&mutex);
//  return sprintf(buf, "%ld\n", output);

#if DEBUG
  printk("=== isl29023_measure  ==== output = %d \n ",output);
#endif
  return output;

err_exit:
  printk("=== isl29023_measure error  === \n ");
//  pm_runtime_put_sync(&client->dev);
  mutex_unlock(&mutex);
  return -EINVAL;
}
Ejemplo n.º 3
0
static ssize_t isl_lmod_show(struct device *dev, struct device_attribute *attr, char *buf)
{
    struct i2c_client *client = isl29030_i2c_client;
    int val;

    mutex_lock(&mutex);
    //pm_runtime_get_sync(dev);
    val = isl_get_mod(client, ISL_FUNC_ALS);
    //pm_runtime_put_sync(dev);
    mutex_unlock(&mutex);

    dev_dbg(dev, "%s: mod: 0x%.2x\n", __func__, val);

    if (val < 0)
        return val;

    return sprintf(buf, "%d\n", val);
}