Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Functions
bh1770glc.c File Reference
#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")
 

Macro Definition Documentation

#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.

#define BH1770_INT_POLARITY   (1 << 2) /* 1 = active high */

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.

#define BH1770_LUX_DEFAULT_RATE   1 /* Index to lux rate table */

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.

#define BH1770_TIMEOUT   2100 /* Timeout in 2.1 seconds */

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.

Function Documentation

MODULE_AUTHOR ( "Samu  Onkalo,
Nokia Corporation"   
)
MODULE_DESCRIPTION ( "BH1770GLC / SFH7770 combined ALS and proximity sensor"  )
MODULE_DEVICE_TABLE ( i2c  ,
bh1770_id   
)
module_i2c_driver ( bh1770_driver  )
MODULE_LICENSE ( "GPL v2 )