diff --git a/README.md b/README.md index ec1e5ee..97927a5 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,11 @@ -# matrixio-kernel-modules +## matrixio-kernel-modules MATRIXIO Kernel Modules is the kernel drivers for MATRIX Creator and MATRIX Voice. +## Tested on 6.6.62+rpt-rpi-v7 Kernel +- Compilation OK on Raspberry 3B+ + + ## Warning: Kernel Version This drivers **only** works with current stock raspbian kernel. To reverting back to current stock Raspbian kernel use: @@ -9,30 +13,7 @@ This drivers **only** works with current stock raspbian kernel. To reverting bac sudo apt-get install --reinstall raspberrypi-bootloader raspberrypi-kernel ``` -## Option 1: Package Installation -``` -# Add repo and key -curl -L https://apt.matrix.one/doc/apt-key.gpg | sudo apt-key add - -echo "deb https://apt.matrix.one/raspbian $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/matrixlabs.list -``` -``` -# Update packages and install -sudo apt-get update -sudo apt-get upgrade -``` -``` -# Reboot in case of Kernel Updates -sudo reboot -``` -``` -# Installation MATRIX Packages -sudo apt install matrixio-kernel-modules -``` -``` -# Reboot -sudo reboot -``` -## Option 2: Cloning & compiling from sources +## Option 1: Cloning & compiling from sources ### Install Dependencies @@ -61,7 +42,7 @@ sudo reboot ### Cloning & Compiling ``` -git clone https://github.com/matrix-io/matrixio-kernel-modules +git clone https://github.com/Tvixrevue/matrixio-kernel-modules cd matrixio-kernel-modules/src make && make install ``` diff --git a/src/matrixio-env.c b/src/matrixio-env.c index 1916e5b..59a5501 100644 --- a/src/matrixio-env.c +++ b/src/matrixio-env.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -98,12 +99,12 @@ static int matrixio_env_read_raw(struct iio_dev *indio_dev, struct matrixio_bus *data = iio_priv(indio_dev); int ret; struct matrixio_env_data env_data; - - mutex_lock(&indio_dev->mlock); + struct iio_dev_opaque *indio_dev_opaque = to_iio_dev_opaque(indio_dev); + mutex_lock(&indio_dev_opaque->mlock); ret = matrixio_read(data->mio, MATRIXIO_MCU_BASE + (MATRIXIO_SRAM_OFFSET_ENV >> 1), sizeof(env_data), &env_data); - mutex_unlock(&indio_dev->mlock); + mutex_unlock(&indio_dev_opaque->mlock); switch (mask) { case IIO_CHAN_INFO_RAW: diff --git a/src/matrixio-gpio.c b/src/matrixio-gpio.c index 492de0e..ae13547 100644 --- a/src/matrixio-gpio.c +++ b/src/matrixio-gpio.c @@ -1,6 +1,6 @@ #include #include -#include +#include #include #include #include diff --git a/src/matrixio-imu.c b/src/matrixio-imu.c index fc57681..981398f 100644 --- a/src/matrixio-imu.c +++ b/src/matrixio-imu.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -116,17 +117,17 @@ static int matrixio_imu_write_raw(struct iio_dev *indio_dev, struct matrixio_bus *data = iio_priv(indio_dev); int ret; int data_write; - + struct iio_dev_opaque *indio_dev_opaque = to_iio_dev_opaque(indio_dev); if (mask == IIO_CHAN_INFO_CALIBBIAS) { data_write = matrixio_int_plus_micro_to_int(val, val2); - mutex_lock(&indio_dev->mlock); + mutex_lock(&indio_dev_opaque->mlock); ret = matrixio_write(data->mio, MATRIXIO_MCU_BASE + (MATRIXIO_SRAM_OFFSET_IMU >> 1) + chan->address + MATRIXIO_CALIB_OFFSET, sizeof(data_write), &data_write); - mutex_unlock(&indio_dev->mlock); + mutex_unlock(&indio_dev_opaque->mlock); return ret; } @@ -141,7 +142,7 @@ static int matrixio_imu_read_raw(struct iio_dev *indio_dev, int ret; int data_read; int offset; - + struct iio_dev_opaque *indio_dev_opaque = to_iio_dev_opaque(indio_dev); switch (mask) { case IIO_CHAN_INFO_CALIBBIAS: offset = chan->address + MATRIXIO_CALIB_OFFSET; @@ -153,13 +154,13 @@ static int matrixio_imu_read_raw(struct iio_dev *indio_dev, return -EINVAL; } - mutex_lock(&indio_dev->mlock); + mutex_lock(&indio_dev_opaque->mlock); ret = matrixio_read(data->mio, MATRIXIO_MCU_BASE + (MATRIXIO_SRAM_OFFSET_IMU >> 1) + offset, sizeof(data_read), &data_read); - mutex_unlock(&indio_dev->mlock); + mutex_unlock(&indio_dev_opaque->mlock); if (ret) return ret; diff --git a/src/matrixio-playback.c b/src/matrixio-playback.c index 382212f..3c123b6 100644 --- a/src/matrixio-playback.c +++ b/src/matrixio-playback.c @@ -227,7 +227,7 @@ matrixio_playback_pointer(struct snd_soc_component *component, struct snd_pcm_su static int matrixio_playback_copy(struct snd_soc_component *component, struct snd_pcm_substream *substream, int channel, snd_pcm_uframes_t pos, - void __user *buf, snd_pcm_uframes_t bytes) + struct iov_iter *iter, snd_pcm_uframes_t bytes) { int ret; unsigned int copied; @@ -236,7 +236,7 @@ static int matrixio_playback_copy(struct snd_soc_component *component, struct sn int frame_count = bytes_to_frames(runtime, bytes); - ret = kfifo_from_user(&pcm_fifo, buf, bytes, &copied); + ret = kfifo_from_user(&pcm_fifo, iter_iov_addr(iter), bytes, &copied); up(&sem); return frame_count; @@ -332,7 +332,7 @@ static const struct snd_soc_component_driver matrixio_soc_platform = { .hw_free = matrixio_playback_hw_free, .prepare = matrixio_playback_prepare, .pointer = matrixio_playback_pointer, - .copy_user = matrixio_playback_copy, + .copy = matrixio_playback_copy, .close = matrixio_playback_close, }; diff --git a/src/matrixio-regmap.c b/src/matrixio-regmap.c index 29eb7eb..ccab0aa 100644 --- a/src/matrixio-regmap.c +++ b/src/matrixio-regmap.c @@ -68,7 +68,7 @@ struct file_operations matrixio_regmap_file_operations = { .open = matrixio_regmap_open, .unlocked_ioctl = matrixio_regmap_ioctl}; -static int matrixio_regmap_uevent(struct device *d, struct kobj_uevent_env *env) +static int matrixio_regmap_uevent(const struct device *d, struct kobj_uevent_env *env) { add_uevent_var(env, "DEVMODE=%#o", 0666); return 0; @@ -88,7 +88,7 @@ static int matrixio_regmap_probe(struct platform_device *pdev) el->mio = dev_get_drvdata(pdev->dev.parent); alloc_chrdev_region(&el->devt, 0, 1, "matrixio_regmap"); - el->cl = class_create(THIS_MODULE, "matrixio_regmap"); + el->cl = class_create("matrixio_regmap"); el->cl->dev_uevent = matrixio_regmap_uevent;