static int get_adc_value(uint8_t *data) { int ret = 0; if (data == NULL) return -EFAULT; ret = al3006_i2c_read(0x05, data); if (ret < 0) { pr_err( "[AL3006 error]%s: _al3006_I2C_Read_Byte MSB fail\n", __func__); return -EIO; } return ret; }
static ssize_t dump_register_show(struct device *dev, struct device_attribute *attr, char *buf) { unsigned length = 0; int i; uint8_t val; for (i = 0; i < 9; i++) { al3006_i2c_read(i,&val); length += sprintf(buf + length, "[AL3006]Get register[0x%2x] = 0x%2x ;\n", i, val); } return length; }
/* create a interface for test mode MobC00172048 */ static ssize_t test_mode_show(struct device *dev, struct device_attribute *attr, char *buf) { uint8_t value; int ret; struct al3006_info *lpi = lp_info; int value1; ret = al3006_i2c_read(0x05,&value); ret = sprintf(buf, "ADC0x05[0x%03X]\n testmode[%d]\n ", \ value, lpi->testmode); return ret; }
static void sensor_irq_do_work(struct work_struct *work) { struct al3006_info *lpi = lp_info; uint8_t status = 0; /*check ALS or PS*/ al3006_i2c_read(0x03,&status); /*read interrupt status register*/ D("[AL3006] intr status[0x%x]\n",status); if(status & 0x02)/*ps trigger interrupt*/ { report_psensor_input_event(lpi); } //enable_irq(lpi->irq); }
static int initial_al3006(struct al3006_info *lpi) { int ret; uint8_t add,val; add = 0; ret = al3006_i2c_read(add,&val); if((0x03 == val)||(!ret)) printk("al3006 device found!! id = 0x%x\n",val); else return -1; // msleep(10); #if 1 //dummy init al3006_i2c_write(0x00,0x0b); al3006_i2c_write(0x01,0x01); al3006_i2c_write(0x02,0xa0); al3006_i2c_write(0x04,0x4a); al3006_i2c_write(0x08,0x00); al3006_i2c_write(0x00,0x08); al3006_i2c_write(0x00,0x0b);//0x03); #endif return 0; }