Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 4
0
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);
}
Exemplo n.º 5
0
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;
}