*/ static int apds9130_init_client(struct i2c_client *client) { struct apds9130_data *data = i2c_get_clientdata(client); int err; int id; err = apds9130_set_enable(client, 0); if (err < 0) return err; data->pDrive = APDS9130_PDRVIE_100MA; id = i2c_smbus_read_byte_data(client, CMD_BYTE|APDS9130_ID_REG); if (id == 0x39) { printk(KERN_INFO"APDS-9130\n"); } else { printk(KERN_INFO"Not APDS-9130 %x\n", id); return -EIO; } err = apds9130_set_ptime(client, 0xFF); // 2.72ms Prox integration time if (err < 0) return err; err = apds9130_set_wtime(client, 0xDC); // 100ms Wait time for POLL_MEDIUM if (err < 0) return err; err = apds9130_set_ppcount(client, APDS9130_PS_PULSE_NUMBER); if (err < 0) return err; err = apds9130_set_config(client, 0); // no long wait if (err < 0) return err; err = apds9130_set_control(client, APDS9130_PDRVIE_100MA|APDS9130_PRX_IR_DIOD|APDS9130_PGAIN_2X); // 2012.10.10 PGAIN 4x-> 2x chkim. if (err < 0) return err; err = apds9130_set_pilt(client, 0); // init threshold for proximity if (err < 0) return err; err = apds9130_set_piht(client, APDS9130_PS_DETECTION_THRESHOLD); if (err < 0) return err; err = apds9130_set_pers(client, APDS9130_PPERS_2); // 2 consecutive Interrupt persistence if (err < 0) return err; // sensor is in disabled mode but all the configurations are preset /* Temp block the below code as no need to set cross talk threshold during proximity OFF state [LGSI_SP4_BSP][[email protected]] #if defined(APDS9130_PROXIMITY_CAL) err = apds9130_set_enable(client,0); if(err < 0){ printk(KERN_INFO "%s, enable set Fail\n",__func__); return err; } #endif */
*/ static int apds9130_init_client(struct i2c_client *client) { struct apds9130_data *data = i2c_get_clientdata(client); int err; int id; err = apds9130_set_enable(client, 0); if (err < 0) return err; data->pDrive = APDS9130_PDRVIE_100MA; id = i2c_smbus_read_byte_data(client, CMD_BYTE|APDS9130_ID_REG); if (id == 0x39) { printk(KERN_INFO"APDS-9130\n"); } else { printk(KERN_INFO"Not APDS-9130 %x\n", id); return -EIO; } err = apds9130_set_ptime(client, 0xFF); // 2.72ms Prox integration time if (err < 0) return err; err = apds9130_set_wtime(client, 0xDC); // 100ms Wait time for POLL_MEDIUM if (err < 0) return err; err = apds9130_set_ppcount(client, APDS9130_PS_PULSE_NUMBER); if (err < 0) return err; err = apds9130_set_config(client, 0); // no long wait if (err < 0) return err; err = apds9130_set_control(client, APDS9130_PDRVIE_100MA|APDS9130_PRX_IR_DIOD|APDS9130_PGAIN_2X); // 2012.10.10 PGAIN 4x-> 2x chkim. if (err < 0) return err; err = apds9130_set_pilt(client, 0); // init threshold for proximity if (err < 0) return err; err = apds9130_set_piht(client, APDS9130_PS_DETECTION_THRESHOLD); if (err < 0) return err; err = apds9130_set_pers(client, APDS9130_PPERS_2); // 2 consecutive Interrupt persistence if (err < 0) return err; // sensor is in disabled mode but all the configurations are preset /* */
static ssize_t apds9130_store_ppcount(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { struct i2c_client *client = to_i2c_client(dev); unsigned long val = simple_strtoul(buf, NULL, 10); apds9130_set_ppcount(client, val); return count; }
} static ssize_t apds9130_store_ppcount(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { struct i2c_client *client = to_i2c_client(dev); int err; unsigned int val = simple_strtoul(buf, NULL, 10); err = apds9130_set_ppcount(client, val); if(err < 0){ printk(KERN_INFO"[APDS9130] apds9130_set_ppcount failed to set ppcount %d\n",val); return err; }
/* * Initialization function */ static int apds9130_init_client(struct i2c_client *client) { int err; int id; err = apds9130_set_enable(client, 0); if (err < 0) return err; id = i2c_smbus_read_byte_data(client, CMD_BYTE|APDS9130_ID_REG); if (id == 0x39) { printk("[ProximitySensor] APDS-9130\n"); } else { printk("[ProximitySensor_E] Not APDS-9130 %x\n", id); return -EIO; } err = apds9130_set_ptime(client, 0xFF); // 2.72ms Prox integration time if (err < 0) return err; err = apds9130_set_wtime(client, 0xDC); // 100ms Wait time for POLL_MEDIUM if (err < 0) return err; err = apds9130_set_ppcount(client, APDS9130_PS_PULSE_NUMBER); if (err < 0) return err; err = apds9130_set_config(client, 0); // no long wait if (err < 0) return err; #if defined(CONFIG_MACH_LGE_L9II_OPEN_EU) err = apds9130_set_control(client, APDS9130_PDRVIE_100MA|APDS9130_PRX_IR_DIOD|APDS9130_PGAIN_2X); #else err = apds9130_set_control(client, APDS9130_PDRVIE_100MA|APDS9130_PRX_IR_DIOD|APDS9130_PGAIN_4X); #endif if (err < 0) return err; err = apds9130_set_pilt(client, 1023); // to force first Near-to-Far interrupt if (err < 0) return err; err = apds9130_set_piht(client, 0); if (err < 0) return err; err = apds9130_set_pers(client, APDS9130_PPERS_2); // 2 consecutive Interrupt persistence if (err < 0) return err; // sensor is in disabled mode but all the configurations are preset return 0; }