Linux Kernel
3.7.1
|
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/i2c.h>
#include <linux/interrupt.h>
#include <linux/mutex.h>
#include <linux/i2c/bh1770glc.h>
#include <linux/regulator/consumer.h>
#include <linux/pm_runtime.h>
#include <linux/workqueue.h>
#include <linux/delay.h>
#include <linux/wait.h>
#include <linux/slab.h>
Go to the source code of this file.
Data Structures | |
struct | bh1770_chip |
Macros | |
#define | BH1770_ALS_CONTROL 0x80 /* ALS operation mode control */ |
#define | BH1770_PS_CONTROL 0x81 /* PS operation mode control */ |
#define | BH1770_I_LED 0x82 /* active LED and LED1, LED2 current */ |
#define | BH1770_I_LED3 0x83 /* LED3 current setting */ |
#define | BH1770_ALS_PS_MEAS 0x84 /* Forced mode trigger */ |
#define | BH1770_PS_MEAS_RATE 0x85 /* PS meas. rate at stand alone mode */ |
#define | BH1770_ALS_MEAS_RATE 0x86 /* ALS meas. rate at stand alone mode */ |
#define | BH1770_PART_ID 0x8a /* Part number and revision ID */ |
#define | BH1770_MANUFACT_ID 0x8b /* Manufacturerer ID */ |
#define | BH1770_ALS_DATA_0 0x8c /* ALS DATA low byte */ |
#define | BH1770_ALS_DATA_1 0x8d /* ALS DATA high byte */ |
#define | BH1770_ALS_PS_STATUS 0x8e /* Measurement data and int status */ |
#define | BH1770_PS_DATA_LED1 0x8f /* PS data from LED1 */ |
#define | BH1770_PS_DATA_LED2 0x90 /* PS data from LED2 */ |
#define | BH1770_PS_DATA_LED3 0x91 /* PS data from LED3 */ |
#define | BH1770_INTERRUPT 0x92 /* Interrupt setting */ |
#define | BH1770_PS_TH_LED1 0x93 /* PS interrupt threshold for LED1 */ |
#define | BH1770_PS_TH_LED2 0x94 /* PS interrupt threshold for LED2 */ |
#define | BH1770_PS_TH_LED3 0x95 /* PS interrupt threshold for LED3 */ |
#define | BH1770_ALS_TH_UP_0 0x96 /* ALS upper threshold low byte */ |
#define | BH1770_ALS_TH_UP_1 0x97 /* ALS upper threshold high byte */ |
#define | BH1770_ALS_TH_LOW_0 0x98 /* ALS lower threshold low byte */ |
#define | BH1770_ALS_TH_LOW_1 0x99 /* ALS lower threshold high byte */ |
#define | BH1770_MANUFACT_ROHM 0x01 |
#define | BH1770_MANUFACT_OSRAM 0x03 |
#define | BH1770_PART 0x90 |
#define | BH1770_PART_MASK 0xf0 |
#define | BH1770_REV_MASK 0x0f |
#define | BH1770_REV_SHIFT 0 |
#define | BH1770_REV_0 0x00 |
#define | BH1770_REV_1 0x01 |
#define | BH1770_STANDBY 0x00 |
#define | BH1770_FORCED 0x02 |
#define | BH1770_STANDALONE 0x03 |
#define | BH1770_SWRESET (0x01 << 2) |
#define | BH1770_PS_TRIG_MEAS (1 << 0) |
#define | BH1770_ALS_TRIG_MEAS (1 << 1) |
#define | BH1770_INT_OUTPUT_MODE (1 << 3) /* 0 = latched */ |
#define | BH1770_INT_POLARITY (1 << 2) /* 1 = active high */ |
#define | BH1770_INT_ALS_ENA (1 << 1) |
#define | BH1770_INT_PS_ENA (1 << 0) |
#define | BH1770_INT_LED1_DATA (1 << 0) |
#define | BH1770_INT_LED1_INT (1 << 1) |
#define | BH1770_INT_LED2_DATA (1 << 2) |
#define | BH1770_INT_LED2_INT (1 << 3) |
#define | BH1770_INT_LED3_DATA (1 << 4) |
#define | BH1770_INT_LED3_INT (1 << 5) |
#define | BH1770_INT_LEDS_INT ((1 << 1) | (1 << 3) | (1 << 5)) |
#define | BH1770_INT_ALS_DATA (1 << 6) |
#define | BH1770_INT_ALS_INT (1 << 7) |
#define | BH1770_LED1 0x00 |
#define | BH1770_DISABLE 0 |
#define | BH1770_ENABLE 1 |
#define | BH1770_PROX_CHANNELS 1 |
#define | BH1770_LUX_DEFAULT_RATE 1 /* Index to lux rate table */ |
#define | BH1770_PROX_DEFAULT_RATE 1 /* Direct HW value =~ 50Hz */ |
#define | BH1770_PROX_DEF_RATE_THRESH 6 /* Direct HW value =~ 5 Hz */ |
#define | BH1770_STARTUP_DELAY 50 |
#define | BH1770_RESET_TIME 10 |
#define | BH1770_TIMEOUT 2100 /* Timeout in 2.1 seconds */ |
#define | BH1770_LUX_RANGE 65535 |
#define | BH1770_PROX_RANGE 255 |
#define | BH1770_COEF_SCALER 1024 |
#define | BH1770_CALIB_SCALER 8192 |
#define | BH1770_LUX_NEUTRAL_CALIB_VALUE (1 * BH1770_CALIB_SCALER) |
#define | BH1770_LUX_DEF_THRES 1000 |
#define | BH1770_PROX_DEF_THRES 70 |
#define | BH1770_PROX_DEF_ABS_THRES 100 |
#define | BH1770_DEFAULT_PERSISTENCE 10 |
#define | BH1770_PROX_MAX_PERSISTENCE 50 |
#define | BH1770_LUX_GA_SCALE 16384 |
#define | BH1770_LUX_CF_SCALE 2048 /* CF ChipFactor */ |
#define | BH1770_NEUTRAL_CF BH1770_LUX_CF_SCALE |
#define | BH1770_LUX_CORR_SCALE 4096 |
#define | PROX_ABOVE_THRESHOLD 1 |
#define | PROX_BELOW_THRESHOLD 0 |
#define | PROX_IGNORE_LUX_LIMIT 500 |
#define | bh1770_suspend NULL |
#define | bh1770_shutdown NULL |
#define | bh1770_resume NULL |
Functions | |
MODULE_DEVICE_TABLE (i2c, bh1770_id) | |
module_i2c_driver (bh1770_driver) | |
MODULE_DESCRIPTION ("BH1770GLC / SFH7770 combined ALS and proximity sensor") | |
MODULE_AUTHOR ("Samu Onkalo, Nokia Corporation") | |
MODULE_LICENSE ("GPL v2") | |
#define BH1770_ALS_CONTROL 0x80 /* ALS operation mode control */ |
Definition at line 38 of file bh1770glc.c.
#define BH1770_ALS_DATA_0 0x8c /* ALS DATA low byte */ |
Definition at line 47 of file bh1770glc.c.
#define BH1770_ALS_DATA_1 0x8d /* ALS DATA high byte */ |
Definition at line 48 of file bh1770glc.c.
#define BH1770_ALS_MEAS_RATE 0x86 /* ALS meas. rate at stand alone mode */ |
Definition at line 44 of file bh1770glc.c.
#define BH1770_ALS_PS_MEAS 0x84 /* Forced mode trigger */ |
Definition at line 42 of file bh1770glc.c.
#define BH1770_ALS_PS_STATUS 0x8e /* Measurement data and int status */ |
Definition at line 49 of file bh1770glc.c.
#define BH1770_ALS_TH_LOW_0 0x98 /* ALS lower threshold low byte */ |
Definition at line 59 of file bh1770glc.c.
#define BH1770_ALS_TH_LOW_1 0x99 /* ALS lower threshold high byte */ |
Definition at line 60 of file bh1770glc.c.
#define BH1770_ALS_TH_UP_0 0x96 /* ALS upper threshold low byte */ |
Definition at line 57 of file bh1770glc.c.
#define BH1770_ALS_TH_UP_1 0x97 /* ALS upper threshold high byte */ |
Definition at line 58 of file bh1770glc.c.
#define BH1770_ALS_TRIG_MEAS (1 << 1) |
Definition at line 81 of file bh1770glc.c.
#define BH1770_CALIB_SCALER 8192 |
Definition at line 117 of file bh1770glc.c.
#define BH1770_COEF_SCALER 1024 |
Definition at line 116 of file bh1770glc.c.
#define BH1770_DEFAULT_PERSISTENCE 10 |
Definition at line 122 of file bh1770glc.c.
#define BH1770_DISABLE 0 |
Definition at line 103 of file bh1770glc.c.
#define BH1770_ENABLE 1 |
Definition at line 104 of file bh1770glc.c.
#define BH1770_FORCED 0x02 |
Definition at line 76 of file bh1770glc.c.
#define BH1770_I_LED 0x82 /* active LED and LED1, LED2 current */ |
Definition at line 40 of file bh1770glc.c.
#define BH1770_I_LED3 0x83 /* LED3 current setting */ |
Definition at line 41 of file bh1770glc.c.
#define BH1770_INT_ALS_DATA (1 << 6) |
Definition at line 97 of file bh1770glc.c.
#define BH1770_INT_ALS_ENA (1 << 1) |
Definition at line 86 of file bh1770glc.c.
#define BH1770_INT_ALS_INT (1 << 7) |
Definition at line 98 of file bh1770glc.c.
#define BH1770_INT_LED1_DATA (1 << 0) |
Definition at line 90 of file bh1770glc.c.
#define BH1770_INT_LED1_INT (1 << 1) |
Definition at line 91 of file bh1770glc.c.
#define BH1770_INT_LED2_DATA (1 << 2) |
Definition at line 92 of file bh1770glc.c.
#define BH1770_INT_LED2_INT (1 << 3) |
Definition at line 93 of file bh1770glc.c.
#define BH1770_INT_LED3_DATA (1 << 4) |
Definition at line 94 of file bh1770glc.c.
#define BH1770_INT_LED3_INT (1 << 5) |
Definition at line 95 of file bh1770glc.c.
#define BH1770_INT_LEDS_INT ((1 << 1) | (1 << 3) | (1 << 5)) |
Definition at line 96 of file bh1770glc.c.
#define BH1770_INT_OUTPUT_MODE (1 << 3) /* 0 = latched */ |
Definition at line 84 of file bh1770glc.c.
Definition at line 85 of file bh1770glc.c.
#define BH1770_INT_PS_ENA (1 << 0) |
Definition at line 87 of file bh1770glc.c.
#define BH1770_INTERRUPT 0x92 /* Interrupt setting */ |
Definition at line 53 of file bh1770glc.c.
#define BH1770_LED1 0x00 |
Definition at line 101 of file bh1770glc.c.
#define BH1770_LUX_CF_SCALE 2048 /* CF ChipFactor */ |
Definition at line 125 of file bh1770glc.c.
#define BH1770_LUX_CORR_SCALE 4096 |
Definition at line 127 of file bh1770glc.c.
#define BH1770_LUX_DEF_THRES 1000 |
Definition at line 119 of file bh1770glc.c.
Definition at line 107 of file bh1770glc.c.
#define BH1770_LUX_GA_SCALE 16384 |
Definition at line 124 of file bh1770glc.c.
#define BH1770_LUX_NEUTRAL_CALIB_VALUE (1 * BH1770_CALIB_SCALER) |
Definition at line 118 of file bh1770glc.c.
#define BH1770_LUX_RANGE 65535 |
Definition at line 114 of file bh1770glc.c.
#define BH1770_MANUFACT_ID 0x8b /* Manufacturerer ID */ |
Definition at line 46 of file bh1770glc.c.
#define BH1770_MANUFACT_OSRAM 0x03 |
Definition at line 64 of file bh1770glc.c.
#define BH1770_MANUFACT_ROHM 0x01 |
Definition at line 63 of file bh1770glc.c.
#define BH1770_NEUTRAL_CF BH1770_LUX_CF_SCALE |
Definition at line 126 of file bh1770glc.c.
#define BH1770_PART 0x90 |
Definition at line 67 of file bh1770glc.c.
#define BH1770_PART_ID 0x8a /* Part number and revision ID */ |
Definition at line 45 of file bh1770glc.c.
#define BH1770_PART_MASK 0xf0 |
Definition at line 68 of file bh1770glc.c.
#define BH1770_PROX_CHANNELS 1 |
Definition at line 105 of file bh1770glc.c.
#define BH1770_PROX_DEF_ABS_THRES 100 |
Definition at line 121 of file bh1770glc.c.
#define BH1770_PROX_DEF_RATE_THRESH 6 /* Direct HW value =~ 5 Hz */ |
Definition at line 109 of file bh1770glc.c.
#define BH1770_PROX_DEF_THRES 70 |
Definition at line 120 of file bh1770glc.c.
#define BH1770_PROX_DEFAULT_RATE 1 /* Direct HW value =~ 50Hz */ |
Definition at line 108 of file bh1770glc.c.
#define BH1770_PROX_MAX_PERSISTENCE 50 |
Definition at line 123 of file bh1770glc.c.
#define BH1770_PROX_RANGE 255 |
Definition at line 115 of file bh1770glc.c.
#define BH1770_PS_CONTROL 0x81 /* PS operation mode control */ |
Definition at line 39 of file bh1770glc.c.
#define BH1770_PS_DATA_LED1 0x8f /* PS data from LED1 */ |
Definition at line 50 of file bh1770glc.c.
#define BH1770_PS_DATA_LED2 0x90 /* PS data from LED2 */ |
Definition at line 51 of file bh1770glc.c.
#define BH1770_PS_DATA_LED3 0x91 /* PS data from LED3 */ |
Definition at line 52 of file bh1770glc.c.
#define BH1770_PS_MEAS_RATE 0x85 /* PS meas. rate at stand alone mode */ |
Definition at line 43 of file bh1770glc.c.
#define BH1770_PS_TH_LED1 0x93 /* PS interrupt threshold for LED1 */ |
Definition at line 54 of file bh1770glc.c.
#define BH1770_PS_TH_LED2 0x94 /* PS interrupt threshold for LED2 */ |
Definition at line 55 of file bh1770glc.c.
#define BH1770_PS_TH_LED3 0x95 /* PS interrupt threshold for LED3 */ |
Definition at line 56 of file bh1770glc.c.
#define BH1770_PS_TRIG_MEAS (1 << 0) |
Definition at line 80 of file bh1770glc.c.
#define BH1770_RESET_TIME 10 |
Definition at line 111 of file bh1770glc.c.
#define bh1770_resume NULL |
Definition at line 1353 of file bh1770glc.c.
#define BH1770_REV_0 0x00 |
Definition at line 71 of file bh1770glc.c.
#define BH1770_REV_1 0x01 |
Definition at line 72 of file bh1770glc.c.
#define BH1770_REV_MASK 0x0f |
Definition at line 69 of file bh1770glc.c.
#define BH1770_REV_SHIFT 0 |
Definition at line 70 of file bh1770glc.c.
#define bh1770_shutdown NULL |
Definition at line 1352 of file bh1770glc.c.
#define BH1770_STANDALONE 0x03 |
Definition at line 77 of file bh1770glc.c.
#define BH1770_STANDBY 0x00 |
Definition at line 75 of file bh1770glc.c.
#define BH1770_STARTUP_DELAY 50 |
Definition at line 110 of file bh1770glc.c.
#define bh1770_suspend NULL |
Definition at line 1351 of file bh1770glc.c.
#define BH1770_SWRESET (0x01 << 2) |
Definition at line 78 of file bh1770glc.c.
Definition at line 112 of file bh1770glc.c.
#define PROX_ABOVE_THRESHOLD 1 |
Definition at line 129 of file bh1770glc.c.
#define PROX_BELOW_THRESHOLD 0 |
Definition at line 130 of file bh1770glc.c.
#define PROX_IGNORE_LUX_LIMIT 500 |
Definition at line 132 of file bh1770glc.c.
MODULE_AUTHOR | ( | "Samu | Onkalo, |
Nokia Corporation" | |||
) |
MODULE_DEVICE_TABLE | ( | i2c | , |
bh1770_id | |||
) |
module_i2c_driver | ( | bh1770_driver | ) |
MODULE_LICENSE | ( | "GPL v2" | ) |