/* $NetBSD: bmx280reg.h,v 1.1 2022/12/03 01:04:43 brad Exp $ */
/*
* Copyright (c) 2022 Brad Spencer <
[email protected]>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef _DEV_IC_BMX280REG_H_
#define _DEV_IC_BMX280REG_H_
#define BMX280_TYPICAL_ADDR_1 0x76
#define BMX280_TYPICAL_ADDR_2 0x77
#define BMX280_REGISTER_DIG_T1 0x88
#define BMX280_REGISTER_DIG_T2 0x8A
#define BMX280_REGISTER_DIG_T3 0x8C
#define BMX280_REGISTER_DIG_P1 0x8E
#define BMX280_REGISTER_DIG_P2 0x90
#define BMX280_REGISTER_DIG_P3 0x92
#define BMX280_REGISTER_DIG_P4 0x94
#define BMX280_REGISTER_DIG_P5 0x96
#define BMX280_REGISTER_DIG_P6 0x98
#define BMX280_REGISTER_DIG_P7 0x9A
#define BMX280_REGISTER_DIG_P8 0x9C
#define BMX280_REGISTER_DIG_P9 0x9E
#define BMX280_REGISTER_DIG_H1 0xA1
#define BMX280_REGISTER_DIG_H2 0xE1
#define BMX280_REGISTER_DIG_H3 0xE3
#define BMX280_REGISTER_DIG_H4 0xE4
#define BMX280_REGISTER_DIG_H5 0xE5
#define BMX280_REGISTER_ID 0xD0
#define BMX280_ID_BMP280 0x58
#define BMX280_ID_BME280 0x60
#define BMX280_REGISTER_RESET 0xE0
#define BMX280_TRIGGER_RESET 0xB6
#define BMX280_REGISTER_CTRL_HUM 0xF2
#define BMX280_REGISTER_STATUS 0xF3
#define BMX280_STATUS_MEASURING_MASK 0x08
#define BMX280_STATUS_IM_UPDATE_MASK 0x01
#define BMX280_REGISTER_CTRL_MEAS 0xF4
#define BMX280_CTRL_OSRS_T_MASK 0xE0
#define BMX280_CTRL_OSRS_P_MASK 0x1C
#define BMX280_CTRL_OSRS_T_SHIFT 5
#define BMX280_CTRL_OSRS_P_SHIFT 2
#define BMX280_OSRS_TP_VALUE_SKIPPED 0x00
#define BMX280_OSRS_TP_VALUE_X1 0x01
#define BMX280_OSRS_TP_VALUE_X2 0x02
#define BMX280_OSRS_TP_VALUE_X4 0x03
#define BMX280_OSRS_TP_VALUE_X8 0x04
#define BMX280_OSRS_TP_VALUE_X16 0x05
#define BMX280_CTRL_MODE_MASK 0x03
#define BMX280_MODE_SLEEP 0x00
#define BMX280_MODE_FORCED 0x01
#define BMX280_MODE_NORMAL 0x03
#define BMX280_REGISTER_CONFIG 0xF5
#define BMX280_CONFIG_T_SB_MASK 0xE0
#define BMX280_CONFIG_FILTER_MASK 0x1C
#define BMX280_CONFIG_FILTER_SHIFT 2
#define BMX280_FILTER_VALUE_OFF 0x00
#define BMX280_FILTER_VALUE_2 0x01
#define BMX280_FILTER_VALUE_5 0x02
#define BMX280_FILTER_VALUE_11 0x04
#define BMX280_FILTER_VALUE_22 0x05
#define BMX280_CONFIG_SPI3W_EN_MASK 0x01
#define BMX280_REGISTER_PRESS_MSB 0xF7
#define BMX280_REGISTER_PRESS_LSB 0xF8
#define BMX280_REGISTER_PRESS_XLSB 0xF9
#define BMX280_REGISTER_TEMP_MSB 0xFA
#define BMX280_REGISTER_TEMP_LSB 0xFB
#define BMX280_REGISTER_TEMP_XLSB 0xFC
#define BMX280_TEMPPRES_XLSB_MASK 0xF0
#define BMX280_REGISTER_HUM_MSB 0xFD
#define BMX280_REGISTER_HUM_LSB 0xFE
#endif