--- /dev/null
+#!/bin/bash
+
+mkdir -p tmp
+wget -q http://archive.raspberrypi.org/debian/dists/stretch/main/binary-armhf/Packages.gz -O - | gunzip \
+| awk '/^Package: raspberrypi-kernel-headers[[:blank:]]*$/ { ok=1; next} /^Package: / {ok=0;} (ok!=1) {next}
+/^Version: / {print "RPI_FIRMWARE_VER=" $2 }
+/^Filename: / {print "RPI_FIRMWARE_FILE=" $2; nextfile }' > tmp/versions
+
+cd tmp
+. versions
+
+wget https://github.com/raspberrypi/linux/archive/raspberrypi-kernel_${RPI_FIRMWARE_VER}.zip
+
+unzip raspberrypi-kernel_${RPI_FIRMWARE_VER}.zip
+rm raspberrypi-kernel_${RPI_FIRMWARE_VER}.zip
+
+wget http://archive.raspberrypi.org/debian/${RPI_FIRMWARE_FILE}
+dpkg-deb -x raspberrypi-kernel-headers_1.20180417-1_armhf.deb h
+KERNEL_VER=`ls -1 h/lib/modules | grep '\-v7'`
+echo $KERNEL_VER
+cp h/usr/src/linux-headers-${KERNEL_VER}/.config linux-raspberrypi-kernel_${RPI_FIRMWARE_VER}
+cp h/usr/src/linux-headers-${KERNEL_VER}/Module.symvers linux-raspberrypi-kernel_${RPI_FIRMWARE_VER}
+cd linux-raspberrypi-kernel_${RPI_FIRMWARE_VER}
+make modules_prepare CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm
+cd ../..
+make all CCPREFIX=arm-linux-gnueabi- ARCH=arm LINUX_DIR_PATH=tmp/linux-raspberrypi-kernel_${RPI_FIRMWARE_VER}
struct mutex neuronspi_master_mutex;
struct mutex unipi_inv_speed_mutex;
-struct spinlock* neuronspi_ldisc_spinlock;
-struct spinlock* neuronspi_spi_w_spinlock;
+struct spinlock *neuronspi_ldisc_spinlock;
+struct spinlock *neuronspi_spi_w_spinlock;
u8 neuronspi_spi_w_flag = 1;
u8 neuronspi_probe_count = 0;
int neuronspi_model_id = -1;
spinlock_t neuronspi_probe_spinlock;
-struct spi_device* neuronspi_s_dev[NEURONSPI_MAX_DEVS];
+struct spi_device *neuronspi_s_dev[NEURONSPI_MAX_DEVS];
struct task_struct *neuronspi_invalidate_thread;
struct sched_param neuronspi_sched_param = { .sched_priority = MAX_RT_PRIO / 2 };
}
-static ssize_t neuronspi_iio_show_primary_ai_mode(struct device *dev, struct device_attribute *attr, char *buf)
+static ssize_t neuronspi_iio_show_stm_ai_mode(struct device *dev, struct device_attribute *attr, char *buf)
{
int ret = 0;
unsigned int val = 0;
return ret;
}
-static ssize_t neuronspi_iio_store_primary_ai_mode(struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
+static ssize_t neuronspi_iio_store_stm_ai_mode(struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
{
ssize_t err = 0;
unsigned int val = 0;
return count;
}
-static ssize_t neuronspi_iio_show_primary_ao_mode(struct device *dev, struct device_attribute *attr, char *buf)
+static ssize_t neuronspi_iio_show_stm_ao_mode(struct device *dev, struct device_attribute *attr, char *buf)
{
int ret = 0;
unsigned int val = 0;
return ret;
}
-static ssize_t neuronspi_iio_store_primary_ao_mode(struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
+static ssize_t neuronspi_iio_store_stm_ao_mode(struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
{
ssize_t err = 0;
unsigned int val = 0;
return count;
}
-static ssize_t neuronspi_iio_show_secondary_ai_mode(struct device *dev, struct device_attribute *attr, char *buf)
+static ssize_t neuronspi_iio_show_external_ai_mode(struct device *dev, struct device_attribute *attr, char *buf)
{
int ret = 0;
unsigned int val = 0;
ret = scnprintf(buf, 255, "%d\n", val);
return ret;
}
-static ssize_t neuronspi_iio_store_secondary_ai_mode(struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
+static ssize_t neuronspi_iio_store_external_ai_mode(struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
{
ssize_t err = 0;
unsigned int val = 0;
err_end:
return count;
}
-static ssize_t neuronspi_iio_show_secondary_ao_mode(struct device *dev, struct device_attribute *attr, char *buf)
+static ssize_t neuronspi_iio_show_external_ao_mode(struct device *dev, struct device_attribute *attr, char *buf)
{
int ret = 0;
unsigned int val = 0;
ret = scnprintf(buf, 255, "%d\n", val);
return ret;
}
-static ssize_t neuronspi_iio_store_secondary_ao_mode(struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
+static ssize_t neuronspi_iio_store_external_ao_mode(struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
{
ssize_t err = 0;
unsigned int val = 0;
static DEVICE_ATTR(sys_gpio_ro_count, 0440, neuronspi_spi_gpio_show_ro_count, NULL);
static DEVICE_ATTR(sys_gpio_ro_prefix, 0440, neuronspi_spi_gpio_show_ro_prefix, NULL);
static DEVICE_ATTR(sys_gpio_ro_base, 0440, neuronspi_spi_gpio_show_ro_base, NULL);
-static DEVICE_ATTR(mode_ai_type_a, 0660, neuronspi_iio_show_primary_ai_mode, neuronspi_iio_store_primary_ai_mode);
-static DEVICE_ATTR(mode_ao_type_a, 0660, neuronspi_iio_show_primary_ao_mode, neuronspi_iio_store_primary_ao_mode);
-static DEVICE_ATTR(mode_ai_type_b, 0660, neuronspi_iio_show_secondary_ai_mode, neuronspi_iio_store_secondary_ai_mode);
-static DEVICE_ATTR(mode_ao_type_b, 0660, neuronspi_iio_show_secondary_ao_mode, neuronspi_iio_store_secondary_ao_mode);
+static DEVICE_ATTR(mode_ai_type_a, 0660, neuronspi_iio_show_stm_ai_mode, neuronspi_iio_store_stm_ai_mode);
+static DEVICE_ATTR(mode_ao_type_a, 0660, neuronspi_iio_show_stm_ao_mode, neuronspi_iio_store_stm_ao_mode);
+static DEVICE_ATTR(mode_ai_type_b, 0660, neuronspi_iio_show_external_ai_mode, neuronspi_iio_store_external_ai_mode);
+static DEVICE_ATTR(mode_ao_type_b, 0660, neuronspi_iio_show_external_ao_mode, neuronspi_iio_store_external_ao_mode);
static struct attribute *neuron_plc_attrs[] = {
&dev_attr_model_name.attr,