Lines Matching +full:orientation +full:- +full:switch

1 // SPDX-License-Identifier: GPL-2.0-only
3 * MXC6255 - MEMSIC orientation sensing accelerometer
7 * IIO driver for MXC6255 (7-bit I2C slave address 0x15).
29 * MXC6255 has only one measurement range: +/- 2G.
30 * The acceleration output is an 8-bit value.
33 * (2 + 2) * 9.80665 / (2^8 - 1) = 0.153829
35 * Scale value for +/- 2G measurement range
57 switch (mask) { in mxc6255_read_raw()
59 ret = regmap_read(data->regmap, chan->address, &reg); in mxc6255_read_raw()
61 dev_err(&data->client->dev, in mxc6255_read_raw()
62 "Error reading reg %lu\n", chan->address); in mxc6255_read_raw()
73 return -EINVAL; in mxc6255_read_raw()
97 switch (reg) { in mxc6255_is_readable_reg()
124 indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data)); in mxc6255_probe()
126 return -ENOMEM; in mxc6255_probe()
130 dev_err(&client->dev, "Error initializing regmap\n"); in mxc6255_probe()
136 data->client = client; in mxc6255_probe()
137 data->regmap = regmap; in mxc6255_probe()
139 indio_dev->name = MXC6255_DRV_NAME; in mxc6255_probe()
140 indio_dev->channels = mxc6255_channels; in mxc6255_probe()
141 indio_dev->num_channels = ARRAY_SIZE(mxc6255_channels); in mxc6255_probe()
142 indio_dev->modes = INDIO_DIRECT_MODE; in mxc6255_probe()
143 indio_dev->info = &mxc6255_info; in mxc6255_probe()
145 ret = regmap_read(data->regmap, MXC6255_REG_CHIP_ID, &chip_id); in mxc6255_probe()
147 dev_err(&client->dev, "Error reading chip id %d\n", ret); in mxc6255_probe()
152 dev_err(&client->dev, "Invalid chip id %x\n", chip_id); in mxc6255_probe()
153 return -ENODEV; in mxc6255_probe()
156 dev_dbg(&client->dev, "Chip id %x\n", chip_id); in mxc6255_probe()
158 ret = devm_iio_device_register(&client->dev, indio_dev); in mxc6255_probe()
160 dev_err(&client->dev, "Could not register IIO device\n"); in mxc6255_probe()
193 MODULE_DESCRIPTION("MEMSIC MXC6255 orientation sensing accelerometer driver");