Fixed analog mode configuration via SYSFS
authorTom Knot <tomasknot@gmail.com>
Wed, 6 Jun 2018 16:16:15 +0000 (18:16 +0200)
committerTom Knot <tomasknot@gmail.com>
Wed, 6 Jun 2018 17:08:29 +0000 (19:08 +0200)
modules/unipi/src/unipi_common.h
modules/unipi/src/unipi_iio.c
modules/unipi/src/unipi_spi.c
modules/unipi/src/unipi_sysfs.c
version.txt

index 4447d7ced6e750c353a94234fb15552a7b765c02..7ee0910f68ac27f9d18aa38e1b8cab57867de030 100644 (file)
@@ -51,7 +51,7 @@
 #if NEURONSPI_SCHED_REQUIRED > 0
        #include <uapi/linux/sched/types.h>
 #endif
-#define NEURONSPI_MAJOR_VERSIONSTRING "Development Beta Version 0.10:28:05:2018"
+#define NEURONSPI_MAJOR_VERSIONSTRING "Development Beta Version 0.11:06:06:2018"
 
 #define NEURONSPI_MAX_DEVS                             3
 #define NEURONSPI_MAX_UART                             128
@@ -235,12 +235,14 @@ struct neuronspi_sec_ao_driver
 
 struct neuronspi_stm_ai_data
 {
+       u32 index;
        u32 mode;
        struct spi_device *parent;
 };
 
 struct neuronspi_stm_ao_data
 {
+       u32 index;
        u32 mode;
        struct spi_device *parent;
 };
index eca3eae956ce1edd8c81b1b75b07de381be3d46f..ab7a31ca80ce62e1273bcc813c3f3dafe309b9f7 100644 (file)
@@ -114,7 +114,7 @@ int neuronspi_iio_sec_ai_read_raw(struct iio_dev *indio_dev, struct iio_chan_spe
        struct neuronspi_sec_ai_data *ai_data = iio_priv(indio_dev);
        struct spi_device *spi = ai_data->parent;
        struct neuronspi_driver_data *n_spi = spi_get_drvdata(spi);
-       regmap_read(n_spi->reg_map, n_spi->regstart_table->sec_ai_mode_reg, &ai_data->mode);
+       regmap_read(n_spi->reg_map, n_spi->regstart_table->sec_ai_mode_reg + ai_data->index, &ai_data->mode);
        switch(ai_data->mode) {
        case 0: {
                return -EINVAL;
index cfaf44d7b0ba3912701fcff88de5b7c96872762b..41716c49855ab2b8a2938e9d7654313edd7a9a9c 100644 (file)
@@ -1273,6 +1273,7 @@ reg1001: %x, reg1002: %x, reg1003: %x, reg1004: %x\n",
                if (n_spi->features->stm_ai_count) {
                        n_spi->stm_ai_driver = devm_iio_device_alloc(&(spi->dev), sizeof(struct neuronspi_stm_ai_data));
                        ((struct neuronspi_stm_ai_data*)iio_priv(n_spi->stm_ai_driver))->parent = spi;
+                       ((struct neuronspi_stm_ai_data*)iio_priv(n_spi->stm_ai_driver))->index = i;
                        n_spi->stm_ai_driver->modes = INDIO_DIRECT_MODE;
                        n_spi->stm_ai_driver->currentmode = INDIO_DIRECT_MODE;
                        n_spi->stm_ai_driver->name = "ai_type_a";
@@ -1286,6 +1287,7 @@ reg1001: %x, reg1002: %x, reg1003: %x, reg1004: %x\n",
                if (n_spi->features->stm_ao_count) {
                        n_spi->stm_ao_driver = devm_iio_device_alloc(&(spi->dev), sizeof(struct neuronspi_stm_ai_data));
                        ((struct neuronspi_stm_ao_data*)iio_priv(n_spi->stm_ao_driver))->parent = spi;
+                       ((struct neuronspi_stm_ao_data*)iio_priv(n_spi->stm_ao_driver))->index = i;
                        n_spi->stm_ao_driver->modes = INDIO_DIRECT_MODE;
                        n_spi->stm_ao_driver->currentmode = INDIO_DIRECT_MODE;
                        n_spi->stm_ao_driver->name = "ao_type_a";
@@ -1301,6 +1303,7 @@ reg1001: %x, reg1002: %x, reg1003: %x, reg1004: %x\n",
                        for (i = 0; i < n_spi->features->sec_ai_count; i++) {
                                n_spi->sec_ai_driver[i] = devm_iio_device_alloc(&(spi->dev), sizeof(struct neuronspi_sec_ai_data));
                                ((struct neuronspi_sec_ai_data*)iio_priv(n_spi->sec_ai_driver[i]))->parent = spi;
+                               ((struct neuronspi_sec_ai_data*)iio_priv(n_spi->sec_ai_driver[i]))->index = i;
                                n_spi->sec_ai_driver[i]->modes = INDIO_DIRECT_MODE;
                                n_spi->sec_ai_driver[i]->currentmode = INDIO_DIRECT_MODE;
                                n_spi->sec_ai_driver[i]->name = "ai_type_b";
@@ -1317,6 +1320,7 @@ reg1001: %x, reg1002: %x, reg1003: %x, reg1004: %x\n",
                        for (i = 0; i < n_spi->features->sec_ao_count; i++) {
                                n_spi->sec_ao_driver[i] = devm_iio_device_alloc(&(spi->dev), sizeof(struct neuronspi_sec_ao_data));
                                ((struct neuronspi_sec_ao_data*)iio_priv(n_spi->sec_ao_driver[i]))->parent = spi;
+                               ((struct neuronspi_sec_ao_data*)iio_priv(n_spi->sec_ao_driver[i]))->index = i;
                                n_spi->sec_ao_driver[i]->modes = INDIO_DIRECT_MODE;
                                n_spi->sec_ao_driver[i]->currentmode = INDIO_DIRECT_MODE;
                                n_spi->sec_ao_driver[i]->name = "ao_type_b";
index 3944aefc912b64e91da25f0695f2a8acbca62eef..3e5e085dd29be69283e5a928aa73689c7a4f3d62 100644 (file)
@@ -865,7 +865,7 @@ static ssize_t neuronspi_iio_show_primary_ai_mode(struct device *dev, struct dev
        struct neuronspi_stm_ai_data *ai_data = iio_priv(indio_dev);
        struct spi_device *spi = ai_data->parent;
        struct neuronspi_driver_data *n_spi = spi_get_drvdata(spi);
-       regmap_read(n_spi->reg_map, n_spi->regstart_table->stm_ai_mode_reg, &val);
+       regmap_read(n_spi->reg_map, n_spi->regstart_table->stm_ai_mode_reg + ai_data->index, &val);
        ret = scnprintf(buf, 255, "%d\n", val);
        return ret;
 }
@@ -881,7 +881,7 @@ static ssize_t neuronspi_iio_store_primary_ai_mode(struct device *dev, struct de
        err = kstrtouint(buf, 0, &val);
        if (err < 0) goto err_end;
        if (n_spi && n_spi->combination_id != 0xFF && n_spi->reg_map) {
-               regmap_write(n_spi->reg_map, n_spi->regstart_table->stm_ai_mode_reg, val);
+               regmap_write(n_spi->reg_map, n_spi->regstart_table->stm_ai_mode_reg + ai_data->index, val);
        }
 err_end:
        return count;
@@ -895,7 +895,7 @@ static ssize_t neuronspi_iio_show_primary_ao_mode(struct device *dev, struct dev
        struct neuronspi_stm_ao_data *ao_data = iio_priv(indio_dev);
        struct spi_device *spi = ao_data->parent;
        struct neuronspi_driver_data *n_spi = spi_get_drvdata(spi);
-       regmap_read(n_spi->reg_map, n_spi->regstart_table->stm_ao_mode_reg, &val);
+       regmap_read(n_spi->reg_map, n_spi->regstart_table->stm_ao_mode_reg + ao_data->index, &val);
        ret = scnprintf(buf, 255, "%d\n", val);
        return ret;
 }
@@ -911,7 +911,7 @@ static ssize_t neuronspi_iio_store_primary_ao_mode(struct device *dev, struct de
        err = kstrtouint(buf, 0, &val);
        if (err < 0) goto err_end;
        if (n_spi && n_spi->combination_id != -1 && n_spi->reg_map) {
-               regmap_write(n_spi->reg_map, n_spi->regstart_table->stm_ao_mode_reg, val);
+               regmap_write(n_spi->reg_map, n_spi->regstart_table->stm_ao_mode_reg + ao_data->index, val);
        }
 err_end:
        return count;
index f66c1183d89d77f5db51be7a0adff8073f8cf4d3..74af88c6458e4aa469afc3d27cef1227a0be272b 100644 (file)
@@ -1 +1 @@
-Repository:neuron-kernel ActiveBranch:[master] PrecedingRevision:37(bdac6cc) LatestCommit:Mon May 28 17:00:39 CEST 2018
+Repository:neuron-kernel ActiveBranch:[master] PrecedingRelease:v.0.10 PrecedingRevision:39(9533eb2) LatestCommit:Wed Jun 6 19:08:29 CEST 2018