linux/drivers/input/misc/bma150.c

// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (c) 2011 Bosch Sensortec GmbH
 * Copyright (c) 2011 Unixphere
 *
 * This driver adds support for Bosch Sensortec's digital acceleration
 * sensors BMA150 and SMB380.
 * The SMB380 is fully compatible with BMA150 and only differs in packaging.
 *
 * The datasheet for the BMA150 chip can be found here:
 * http://www.bosch-sensortec.com/content/language1/downloads/BST-BMA150-DS000-07.pdf
 */
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/i2c.h>
#include <linux/input.h>
#include <linux/interrupt.h>
#include <linux/delay.h>
#include <linux/slab.h>
#include <linux/pm.h>
#include <linux/pm_runtime.h>
#include <linux/bma150.h>

#define ABSMAX_ACC_VAL
#define ABSMIN_ACC_VAL

/* Each axis is represented by a 2-byte data word */
#define BMA150_XYZ_DATA_SIZE

/* Input poll interval in milliseconds */
#define BMA150_POLL_INTERVAL
#define BMA150_POLL_MAX
#define BMA150_POLL_MIN

#define BMA150_MODE_NORMAL
#define BMA150_MODE_SLEEP
#define BMA150_MODE_WAKE_UP

/* Data register addresses */
#define BMA150_DATA_0_REG
#define BMA150_DATA_1_REG
#define BMA150_DATA_2_REG

/* Control register addresses */
#define BMA150_CTRL_0_REG
#define BMA150_CTRL_1_REG
#define BMA150_CTRL_2_REG
#define BMA150_CTRL_3_REG

/* Configuration/Setting register addresses */
#define BMA150_CFG_0_REG
#define BMA150_CFG_1_REG
#define BMA150_CFG_2_REG
#define BMA150_CFG_3_REG
#define BMA150_CFG_4_REG
#define BMA150_CFG_5_REG

#define BMA150_CHIP_ID
#define BMA150_CHIP_ID_REG

#define BMA150_ACC_X_LSB_REG

#define BMA150_SLEEP_POS
#define BMA150_SLEEP_MSK
#define BMA150_SLEEP_REG

#define BMA150_BANDWIDTH_POS
#define BMA150_BANDWIDTH_MSK
#define BMA150_BANDWIDTH_REG

#define BMA150_RANGE_POS
#define BMA150_RANGE_MSK
#define BMA150_RANGE_REG

#define BMA150_WAKE_UP_POS
#define BMA150_WAKE_UP_MSK
#define BMA150_WAKE_UP_REG

#define BMA150_SW_RES_POS
#define BMA150_SW_RES_MSK
#define BMA150_SW_RES_REG

/* Any-motion interrupt register fields */
#define BMA150_ANY_MOTION_EN_POS
#define BMA150_ANY_MOTION_EN_MSK
#define BMA150_ANY_MOTION_EN_REG

#define BMA150_ANY_MOTION_DUR_POS
#define BMA150_ANY_MOTION_DUR_MSK
#define BMA150_ANY_MOTION_DUR_REG

#define BMA150_ANY_MOTION_THRES_REG

/* Advanced interrupt register fields */
#define BMA150_ADV_INT_EN_POS
#define BMA150_ADV_INT_EN_MSK
#define BMA150_ADV_INT_EN_REG

/* High-G interrupt register fields */
#define BMA150_HIGH_G_EN_POS
#define BMA150_HIGH_G_EN_MSK
#define BMA150_HIGH_G_EN_REG

#define BMA150_HIGH_G_HYST_POS
#define BMA150_HIGH_G_HYST_MSK
#define BMA150_HIGH_G_HYST_REG

#define BMA150_HIGH_G_DUR_REG
#define BMA150_HIGH_G_THRES_REG

/* Low-G interrupt register fields */
#define BMA150_LOW_G_EN_POS
#define BMA150_LOW_G_EN_MSK
#define BMA150_LOW_G_EN_REG

#define BMA150_LOW_G_HYST_POS
#define BMA150_LOW_G_HYST_MSK
#define BMA150_LOW_G_HYST_REG

#define BMA150_LOW_G_DUR_REG
#define BMA150_LOW_G_THRES_REG

struct bma150_data {};

/*
 * The settings for the given range, bandwidth and interrupt features
 * are stated and verified by Bosch Sensortec where they are configured
 * to provide a generic sensitivity performance.
 */
static const struct bma150_cfg default_cfg =;

static int bma150_write_byte(struct i2c_client *client, u8 reg, u8 val)
{}

static int bma150_set_reg_bits(struct i2c_client *client,
					int val, int shift, u8 mask, u8 reg)
{}

static int bma150_set_mode(struct bma150_data *bma150, u8 mode)
{}

static int bma150_soft_reset(struct bma150_data *bma150)
{}

static int bma150_set_range(struct bma150_data *bma150, u8 range)
{}

static int bma150_set_bandwidth(struct bma150_data *bma150, u8 bw)
{}

static int bma150_set_low_g_interrupt(struct bma150_data *bma150,
					u8 enable, u8 hyst, u8 dur, u8 thres)
{}

static int bma150_set_high_g_interrupt(struct bma150_data *bma150,
					u8 enable, u8 hyst, u8 dur, u8 thres)
{}


static int bma150_set_any_motion_interrupt(struct bma150_data *bma150,
						u8 enable, u8 dur, u8 thres)
{}

static void bma150_report_xyz(struct bma150_data *bma150)
{}

static irqreturn_t bma150_irq_thread(int irq, void *dev)
{}

static void bma150_poll(struct input_dev *input)
{}

static int bma150_open(struct input_dev *input)
{}

static void bma150_close(struct input_dev *input)
{}

static int bma150_initialize(struct bma150_data *bma150,
			     const struct bma150_cfg *cfg)
{}

static int bma150_probe(struct i2c_client *client)
{}

static void bma150_remove(struct i2c_client *client)
{}

static int __maybe_unused bma150_suspend(struct device *dev)
{}

static int __maybe_unused bma150_resume(struct device *dev)
{}

static UNIVERSAL_DEV_PM_OPS(bma150_pm, bma150_suspend, bma150_resume, NULL);

static const struct i2c_device_id bma150_id[] =;

MODULE_DEVICE_TABLE(i2c, bma150_id);

static struct i2c_driver bma150_driver =;

module_i2c_driver();

MODULE_AUTHOR();
MODULE_DESCRIPTION();
MODULE_LICENSE();