Samu Onkalo | 92b1f84 | 2010-10-26 14:22:38 -0700 | [diff] [blame] | 1 | /* |
| 2 | * This file is part of the APDS990x sensor driver. |
| 3 | * Chip is combined proximity and ambient light sensor. |
| 4 | * |
| 5 | * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). |
| 6 | * |
| 7 | * Contact: Samu Onkalo <samu.p.onkalo@nokia.com> |
| 8 | * |
| 9 | * This program is free software; you can redistribute it and/or |
| 10 | * modify it under the terms of the GNU General Public License |
| 11 | * version 2 as published by the Free Software Foundation. |
| 12 | * |
| 13 | * This program is distributed in the hope that it will be useful, but |
| 14 | * WITHOUT ANY WARRANTY; without even the implied warranty of |
| 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 16 | * General Public License for more details. |
| 17 | * |
| 18 | * You should have received a copy of the GNU General Public License |
| 19 | * along with this program; if not, write to the Free Software |
| 20 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA |
| 21 | * 02110-1301 USA |
| 22 | * |
| 23 | */ |
| 24 | |
| 25 | #ifndef __APDS990X_H__ |
| 26 | #define __APDS990X_H__ |
| 27 | |
| 28 | |
| 29 | #define APDS_IRLED_CURR_12mA 0x3 |
| 30 | #define APDS_IRLED_CURR_25mA 0x2 |
| 31 | #define APDS_IRLED_CURR_50mA 0x1 |
| 32 | #define APDS_IRLED_CURR_100mA 0x0 |
| 33 | |
| 34 | /** |
| 35 | * struct apds990x_chip_factors - defines effect of the cover window |
| 36 | * @ga: Total glass attenuation |
| 37 | * @cf1: clear channel factor 1 for raw to lux conversion |
| 38 | * @irf1: IR channel factor 1 for raw to lux conversion |
| 39 | * @cf2: clear channel factor 2 for raw to lux conversion |
| 40 | * @irf2: IR channel factor 2 for raw to lux conversion |
| 41 | * @df: device factor for conversion formulas |
| 42 | * |
| 43 | * Structure for tuning ALS calculation to match with environment. |
| 44 | * Values depend on the material above the sensor and the sensor |
| 45 | * itself. If the GA is zero, driver will use uncovered sensor default values |
| 46 | * format: decimal value * APDS_PARAM_SCALE except df which is plain integer. |
| 47 | */ |
| 48 | #define APDS_PARAM_SCALE 4096 |
| 49 | struct apds990x_chip_factors { |
| 50 | int ga; |
| 51 | int cf1; |
| 52 | int irf1; |
| 53 | int cf2; |
| 54 | int irf2; |
| 55 | int df; |
| 56 | }; |
| 57 | |
| 58 | /** |
| 59 | * struct apds990x_platform_data - platform data for apsd990x.c driver |
| 60 | * @cf: chip factor data |
| 61 | * @pddrive: IR-led driving current |
| 62 | * @ppcount: number of IR pulses used for proximity estimation |
| 63 | * @setup_resources: interrupt line setup call back function |
| 64 | * @release_resources: interrupt line release call back function |
| 65 | * |
| 66 | * Proximity detection result depends heavily on correct ppcount, pdrive |
| 67 | * and cover window. |
| 68 | * |
| 69 | */ |
| 70 | |
| 71 | struct apds990x_platform_data { |
| 72 | struct apds990x_chip_factors cf; |
| 73 | u8 pdrive; |
| 74 | u8 ppcount; |
| 75 | int (*setup_resources)(void); |
| 76 | int (*release_resources)(void); |
| 77 | }; |
| 78 | |
| 79 | #endif |