/* * Ambient light sensor driver for Nintendo Switch's Rohm BH1730 * * Copyright (c) 2018 CTCaer * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, * version 2, as published by the Free Software Foundation. * * This program is distributed in the hope it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef __ALS_H_ #define __ALS_H_ #include #define BH1730_I2C_ADDR 0x29 #define BH1730_CMD_MAGIC 0x80 #define BH1730_CMD_SETADDR 0x00 #define BH1730_CMD_SPECCMD 0x60 #define BH1730_SPECCMD_RESET 0x4 #define BH1730_CONTROL_REG 0x00 #define BH1730_CTL_ADC_VALID 0x10 #define BH1730_CTL_ONE_TIME 0x08 #define BH1730_CTL_DAT0_ONLY 0x04 #define BH1730_CTL_ADC_EN 0x02 #define BH1730_CTL_POWER_ON 0x01 #define BH1730_TIMING_REG 0x01 #define BH1730_GAIN_REG 0x07 #define BH1730_GAIN_1X 0x00 #define BH1730_GAIN_2X 0x01 #define BH1730_GAIN_64X 0x02 #define BH1730_GAIN_128X 0x03 #define BH1730_DATA0LOW_REG 0x14 #define BH1730_DATA0HIGH_REG 0x15 #define BH1730_DATA1LOW_REG 0x16 #define BH1730_DATA1HIGH_REG 0x17 #define BH1730_ADDR(reg) (BH1730_CMD_MAGIC | BH1730_CMD_SETADDR | reg) #define BH1730_SPEC(cmd) (BH1730_CMD_MAGIC | BH1730_CMD_SPECCMD | cmd) typedef struct _als_table_t { float lux; bool over_limit; u32 vi_light; u32 ir_light; u8 gain; u8 itime; } als_table_t; void set_als_cfg(als_table_t *als_val, u8 gain, u8 itime); void get_als_lux(als_table_t *als_val); u8 als_init(als_table_t *als_val); #endif /* __ALS_H_ */