#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/interrupt.h>
#include <linux/completion.h>
#include <linux/bitops.h>
#include <linux/random.h>
#include <linux/regmap.h>
#include <linux/regulator/consumer.h>
#include <linux/pm_runtime.h>
#include <linux/iio/iio.h>
#include <linux/iio/sysfs.h>
#include <linux/iio/buffer.h>
#include <linux/iio/trigger.h>
#include <linux/iio/trigger_consumer.h>
#include <linux/iio/triggered_buffer.h>
#define AK8974_SELFTEST 0x0C
#define AK8974_SELFTEST_IDLE 0x55
#define AK8974_SELFTEST_OK 0xAA
#define AK8974_WHOAMI 0x0F
#define AK8974_WHOAMI_VALUE_AMI306 0x46
#define AK8974_WHOAMI_VALUE_AMI305 0x47
#define AK8974_WHOAMI_VALUE_AK8974 0x48
#define AK8974_DATA_X 0x10
#define AK8974_DATA_Y 0x12
#define AK8974_DATA_Z 0x14
#define AK8974_INT_SRC 0x16
#define AK8974_STATUS 0x18
#define AK8974_INT_CLEAR 0x1A
#define AK8974_CTRL1 0x1B
#define AK8974_CTRL2 0x1C
#define AK8974_CTRL3 0x1D
#define AK8974_INT_CTRL 0x1E
#define AK8974_INT_THRES 0x26
#define AK8974_PRESET 0x30