~ubuntu-branches/ubuntu/precise/linux-lowlatency/precise

« back to all changes in this revision

Viewing changes to drivers/staging/iio/accel/adis16203.h

  • Committer: Package Import Robot
  • Author(s): Alessio Igor Bogani
  • Date: 2011-10-26 11:13:05 UTC
  • Revision ID: package-import@ubuntu.com-20111026111305-tz023xykf0i6eosh
Tags: upstream-3.2.0
ImportĀ upstreamĀ versionĀ 3.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef SPI_ADIS16203_H_
 
2
#define SPI_ADIS16203_H_
 
3
 
 
4
#define ADIS16203_STARTUP_DELAY 220 /* ms */
 
5
 
 
6
#define ADIS16203_READ_REG(a)    a
 
7
#define ADIS16203_WRITE_REG(a) ((a) | 0x80)
 
8
 
 
9
#define ADIS16203_FLASH_CNT      0x00 /* Flash memory write count */
 
10
#define ADIS16203_SUPPLY_OUT     0x02 /* Output, power supply */
 
11
#define ADIS16203_AUX_ADC        0x08 /* Output, auxiliary ADC input */
 
12
#define ADIS16203_TEMP_OUT       0x0A /* Output, temperature */
 
13
#define ADIS16203_XINCL_OUT      0x0C /* Output, x-axis inclination */
 
14
#define ADIS16203_YINCL_OUT      0x0E /* Output, y-axis inclination */
 
15
#define ADIS16203_INCL_NULL      0x18 /* Incline null calibration */
 
16
#define ADIS16203_ALM_MAG1       0x20 /* Alarm 1 amplitude threshold */
 
17
#define ADIS16203_ALM_MAG2       0x22 /* Alarm 2 amplitude threshold */
 
18
#define ADIS16203_ALM_SMPL1      0x24 /* Alarm 1, sample period */
 
19
#define ADIS16203_ALM_SMPL2      0x26 /* Alarm 2, sample period */
 
20
#define ADIS16203_ALM_CTRL       0x28 /* Alarm control */
 
21
#define ADIS16203_AUX_DAC        0x30 /* Auxiliary DAC data */
 
22
#define ADIS16203_GPIO_CTRL      0x32 /* General-purpose digital input/output control */
 
23
#define ADIS16203_MSC_CTRL       0x34 /* Miscellaneous control */
 
24
#define ADIS16203_SMPL_PRD       0x36 /* Internal sample period (rate) control */
 
25
#define ADIS16203_AVG_CNT        0x38 /* Operation, filter configuration */
 
26
#define ADIS16203_SLP_CNT        0x3A /* Operation, sleep mode control */
 
27
#define ADIS16203_DIAG_STAT      0x3C /* Diagnostics, system status register */
 
28
#define ADIS16203_GLOB_CMD       0x3E /* Operation, system command register */
 
29
 
 
30
#define ADIS16203_OUTPUTS        5
 
31
 
 
32
/* MSC_CTRL */
 
33
#define ADIS16203_MSC_CTRL_PWRUP_SELF_TEST      (1 << 10) /* Self-test at power-on: 1 = disabled, 0 = enabled */
 
34
#define ADIS16203_MSC_CTRL_REVERSE_ROT_EN       (1 << 9)  /* Reverses rotation of both inclination outputs */
 
35
#define ADIS16203_MSC_CTRL_SELF_TEST_EN         (1 << 8)  /* Self-test enable */
 
36
#define ADIS16203_MSC_CTRL_DATA_RDY_EN          (1 << 2)  /* Data-ready enable: 1 = enabled, 0 = disabled */
 
37
#define ADIS16203_MSC_CTRL_ACTIVE_HIGH          (1 << 1)  /* Data-ready polarity: 1 = active high, 0 = active low */
 
38
#define ADIS16203_MSC_CTRL_DATA_RDY_DIO1        (1 << 0)  /* Data-ready line selection: 1 = DIO1, 0 = DIO0 */
 
39
 
 
40
/* DIAG_STAT */
 
41
#define ADIS16203_DIAG_STAT_ALARM2        (1<<9) /* Alarm 2 status: 1 = alarm active, 0 = alarm inactive */
 
42
#define ADIS16203_DIAG_STAT_ALARM1        (1<<8) /* Alarm 1 status: 1 = alarm active, 0 = alarm inactive */
 
43
#define ADIS16203_DIAG_STAT_SELFTEST_FAIL (1<<5) /* Self-test diagnostic error flag */
 
44
#define ADIS16203_DIAG_STAT_SPI_FAIL      (1<<3) /* SPI communications failure */
 
45
#define ADIS16203_DIAG_STAT_FLASH_UPT     (1<<2) /* Flash update failure */
 
46
#define ADIS16203_DIAG_STAT_POWER_HIGH    (1<<1) /* Power supply above 3.625 V */
 
47
#define ADIS16203_DIAG_STAT_POWER_LOW     (1<<0) /* Power supply below 3.15 V */
 
48
 
 
49
/* GLOB_CMD */
 
50
#define ADIS16203_GLOB_CMD_SW_RESET     (1<<7)
 
51
#define ADIS16203_GLOB_CMD_CLEAR_STAT   (1<<4)
 
52
#define ADIS16203_GLOB_CMD_FACTORY_CAL  (1<<1)
 
53
 
 
54
#define ADIS16203_MAX_TX 12
 
55
#define ADIS16203_MAX_RX 10
 
56
 
 
57
#define ADIS16203_ERROR_ACTIVE          (1<<14)
 
58
 
 
59
/**
 
60
 * struct adis16203_state - device instance specific data
 
61
 * @us:                 actual spi_device
 
62
 * @trig:               data ready trigger registered with iio
 
63
 * @tx:                 transmit buffer
 
64
 * @rx:                 receive buffer
 
65
 * @buf_lock:           mutex to protect tx and rx
 
66
 **/
 
67
struct adis16203_state {
 
68
        struct spi_device       *us;
 
69
        struct iio_trigger      *trig;
 
70
        struct mutex            buf_lock;
 
71
        u8                      tx[ADIS16203_MAX_TX] ____cacheline_aligned;
 
72
        u8                      rx[ADIS16203_MAX_RX];
 
73
};
 
74
 
 
75
int adis16203_set_irq(struct iio_dev *indio_dev, bool enable);
 
76
 
 
77
enum adis16203_scan {
 
78
        ADIS16203_SCAN_SUPPLY,
 
79
        ADIS16203_SCAN_AUX_ADC,
 
80
        ADIS16203_SCAN_TEMP,
 
81
        ADIS16203_SCAN_INCLI_X,
 
82
        ADIS16203_SCAN_INCLI_Y,
 
83
};
 
84
 
 
85
#ifdef CONFIG_IIO_BUFFER
 
86
void adis16203_remove_trigger(struct iio_dev *indio_dev);
 
87
int adis16203_probe_trigger(struct iio_dev *indio_dev);
 
88
 
 
89
ssize_t adis16203_read_data_from_ring(struct device *dev,
 
90
                                      struct device_attribute *attr,
 
91
                                      char *buf);
 
92
 
 
93
int adis16203_configure_ring(struct iio_dev *indio_dev);
 
94
void adis16203_unconfigure_ring(struct iio_dev *indio_dev);
 
95
 
 
96
#else /* CONFIG_IIO_BUFFER */
 
97
 
 
98
static inline void adis16203_remove_trigger(struct iio_dev *indio_dev)
 
99
{
 
100
}
 
101
 
 
102
static inline int adis16203_probe_trigger(struct iio_dev *indio_dev)
 
103
{
 
104
        return 0;
 
105
}
 
106
 
 
107
static inline ssize_t
 
108
adis16203_read_data_from_ring(struct device *dev,
 
109
                              struct device_attribute *attr,
 
110
                              char *buf)
 
111
{
 
112
        return 0;
 
113
}
 
114
 
 
115
static int adis16203_configure_ring(struct iio_dev *indio_dev)
 
116
{
 
117
        return 0;
 
118
}
 
119
 
 
120
static inline void adis16203_unconfigure_ring(struct iio_dev *indio_dev)
 
121
{
 
122
}
 
123
 
 
124
#endif /* CONFIG_IIO_BUFFER */
 
125
#endif /* SPI_ADIS16203_H_ */