diff options
Diffstat (limited to 'drivers/iio/imu-aosp/inv_mpu6515/inv_mpu_dts.c')
| -rwxr-xr-x | drivers/iio/imu-aosp/inv_mpu6515/inv_mpu_dts.c | 270 |
1 files changed, 0 insertions, 270 deletions
diff --git a/drivers/iio/imu-aosp/inv_mpu6515/inv_mpu_dts.c b/drivers/iio/imu-aosp/inv_mpu6515/inv_mpu_dts.c deleted file mode 100755 index 276d5bcfea7..00000000000 --- a/drivers/iio/imu-aosp/inv_mpu6515/inv_mpu_dts.c +++ /dev/null @@ -1,270 +0,0 @@ -#include <linux/err.h> -#include <linux/of_gpio.h> -#include <linux/of.h> -#include <linux/of_device.h> -#include <linux/regulator/consumer.h> - -#include <linux/i2c.h> -#include <linux/mpu.h> -#include "inv_mpu_dts.h" - -int inv_mpu_power_on(struct mpu_platform_data *pdata) -{ - int err ; - - err = regulator_enable(pdata->vdd_ana); - err = regulator_enable(pdata->vdd_i2c); - pr_debug(KERN_INFO "inv_mpu_power_on call"); - - return err ; - -} - -int inv_mpu_power_off(struct mpu_platform_data *pdata) -{ - int err ; - - err = regulator_disable(pdata->vdd_ana); - err = regulator_disable(pdata->vdd_i2c); - pr_debug(KERN_INFO "inv_mpu_power_off call"); - - return err; -} - -int inv_parse_orientation_matrix(struct device *dev, s8 *orient) -{ - int rc, i; - struct device_node *np = dev->of_node; - u32 temp_val, temp_val2; - - for (i = 0; i < 9; i++) - orient[i] = 0; - - /* parsing axis x orientation matrix*/ - rc = of_property_read_u32(np, "axis_map_x", &temp_val); - if (rc) { - dev_err(dev, "Unable to read axis_map_x\n"); - return rc; - } - rc = of_property_read_u32(np, "negate_x", &temp_val2); - if (rc) { - dev_err(dev, "Unable to read negate_x\n"); - return rc; - } - if (temp_val2) - orient[temp_val] = -1; - else - orient[temp_val] = 1; - - /* parsing axis y orientation matrix*/ - rc = of_property_read_u32(np, "axis_map_y", &temp_val); - if (rc) { - dev_err(dev, "Unable to read axis_map_y\n"); - return rc; - } - rc = of_property_read_u32(np, "negate_y", &temp_val2); - if (rc) { - dev_err(dev, "Unable to read negate_y\n"); - return rc; - } - if (temp_val2) - orient[3 + temp_val] = -1; - else - orient[3 + temp_val] = 1; - - /* parsing axis z orientation matrix*/ - rc = of_property_read_u32(np, "axis_map_z", &temp_val); - if (rc) { - dev_err(dev, "Unable to read axis_map_z\n"); - return rc; - } - rc = of_property_read_u32(np, "negate_z", &temp_val2); - if (rc) { - dev_err(dev, "Unable to read negate_z\n"); - return rc; - } - if (temp_val2) - orient[6 + temp_val] = -1; - else - orient[6 + temp_val] = 1; - - return 0; -} - -int inv_parse_secondary_orientation_matrix(struct device *dev, - s8 *orient) -{ - int rc, i; - struct device_node *np = dev->of_node; - u32 temp_val, temp_val2; - - for (i = 0; i < 9; i++) - orient[i] = 0; - - /* parsing axis x orientation matrix*/ - rc = of_property_read_u32(np, "inven,secondary_axis_map_x", &temp_val); - if (rc) { - dev_err(dev, "Unable to read secondary axis_map_x\n"); - return rc; - } - rc = of_property_read_u32(np, "inven,secondary_negate_x", &temp_val2); - if (rc) { - dev_err(dev, "Unable to read secondary negate_x\n"); - return rc; - } - if (temp_val2) - orient[temp_val] = -1; - else - orient[temp_val] = 1; - - /* parsing axis y orientation matrix*/ - rc = of_property_read_u32(np, "inven,secondary_axis_map_y", &temp_val); - if (rc) { - dev_err(dev, "Unable to read secondary axis_map_y\n"); - return rc; - } - rc = of_property_read_u32(np, "inven,secondary_negate_y", &temp_val2); - if (rc) { - dev_err(dev, "Unable to read secondary negate_y\n"); - return rc; - } - if (temp_val2) - orient[3 + temp_val] = -1; - else - orient[3 + temp_val] = 1; - - /* parsing axis z orientation matrix*/ - rc = of_property_read_u32(np, "inven,secondary_axis_map_z", &temp_val); - if (rc) { - dev_err(dev, "Unable to read secondary axis_map_z\n"); - return rc; - } - rc = of_property_read_u32(np, "inven,secondary_negate_z", &temp_val2); - if (rc) { - dev_err(dev, "Unable to read secondary negate_z\n"); - return rc; - } - if (temp_val2) - orient[6 + temp_val] = -1; - else - orient[6 + temp_val] = 1; - - return 0; -} - -int inv_parse_secondary(struct device *dev, struct mpu_platform_data *pdata) -{ - int rc; - struct device_node *np = dev->of_node; - u32 temp_val; - const char *name; - - if (of_property_read_string(np, "inven,secondary_type", &name)) { - dev_err(dev, "Missing secondary type.\n"); - return -EINVAL; - } - if (!strcmp(name, "compass")) { - pdata->sec_slave_type = SECONDARY_SLAVE_TYPE_COMPASS; - } else if (!strcmp(name, "none")) { - pdata->sec_slave_type = SECONDARY_SLAVE_TYPE_NONE; - return 0; - } else { - return -EINVAL; - } - - if (of_property_read_string(np, "inven,secondary_name", &name)) { - dev_err(dev, "Missing secondary name.\n"); - return -EINVAL; - } - if (!strcmp(name, "ak8963")) - pdata->sec_slave_id = COMPASS_ID_AK8963; - else if (!strcmp(name, "ak8975")) - pdata->sec_slave_id = COMPASS_ID_AK8975; - else if (!strcmp(name, "ak8972")) - pdata->sec_slave_id = COMPASS_ID_AK8972; - else - return -EINVAL; - rc = of_property_read_u32(np, "inven,secondary_reg", &temp_val); - if (rc) { - dev_err(dev, "Unable to read secondary register\n"); - return rc; - } - pdata->secondary_i2c_addr = temp_val; - rc = inv_parse_secondary_orientation_matrix(dev, - pdata->secondary_orientation); - - return rc; -} - -int inv_parse_aux(struct device *dev, struct mpu_platform_data *pdata) -{ - int rc; - struct device_node *np = dev->of_node; - u32 temp_val; - const char *name; - - if (of_property_read_string(np, "inven,aux_type", &name)) { - dev_err(dev, "Missing aux type.\n"); - return -EINVAL; - } - if (!strcmp(name, "pressure")) { - pdata->aux_slave_type = SECONDARY_SLAVE_TYPE_PRESSURE; - } else if (!strcmp(name, "none")) { - pdata->aux_slave_type = SECONDARY_SLAVE_TYPE_NONE; - return 0; - } else { - return -EINVAL; - } - - if (of_property_read_string(np, "inven,aux_name", &name)) { - dev_err(dev, "Missing aux name.\n"); - return -EINVAL; - } - if (!strcmp(name, "bmp280")) - pdata->aux_slave_id = PRESSURE_ID_BMP280; - else - return -EINVAL; - - rc = of_property_read_u32(np, "inven,aux_reg", &temp_val); - if (rc) { - dev_err(dev, "Unable to read aux register\n"); - return rc; - } - pdata->aux_i2c_addr = temp_val; - - return 0; -} - -int invensense_mpu_parse_dt(struct device *dev, struct mpu_platform_data *pdata) -{ - int rc; - pr_debug("Invensense MPU parse_dt started.\n"); - - rc = inv_parse_orientation_matrix(dev, pdata->orientation); - if (rc) - return rc; - - rc = inv_parse_secondary(dev, pdata); - if (rc) - return rc; - - inv_parse_aux(dev, pdata); - - pdata->vdd_ana = regulator_get(dev, "inven,vdd_ana"); - if (IS_ERR(pdata->vdd_ana)) { - rc = PTR_ERR(pdata->vdd_ana); - dev_err(dev, "Regulator get failed vdd_ana-supply rc=%d\n", rc); - return rc; - } - pdata->vdd_i2c = regulator_get(dev, "inven,vcc_i2c"); - if (IS_ERR(pdata->vdd_i2c)) { - rc = PTR_ERR(pdata->vdd_i2c); - dev_err(dev, "Regulator get failed vcc-i2c-supply rc=%d\n", rc); - return rc; - } - pdata->power_on = inv_mpu_power_on; - pdata->power_off = inv_mpu_power_off; - pr_debug("Invensense MPU parse_dt complete.\n"); - return rc; -} - |