Я пишу драйвер, используя iio framework. Пока все идет хорошо. Все входы и записи sysfs работают отлично, а измеренные значения в порядке. (Это очень хорошо задокументировано и легко). Но мне нужно небольшое расширение, чтобы можно было писать на одном из каналов. Когда я добавляю свою функцию в iio_info, компилятор выдает мне ошибку:
drivers/iio/adc/iio-ccuss.c:197:15: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types]
.write_raw = ccuss_iio_write_raw,
^~~~~~~~~~~~~~~~~~~
Это очень странно для меня. Я даже не могу поверить, что я бессовестно спрашиваю об этом здесь, но я очень расстроен. Я потерял почти полдня с этим.
Моя структура:
static const struct iio_info ccuss_iio_info = {
.driver_module = THIS_MODULE,
.attrs = &ccuss_iio_attribute_group,
.read_raw = ccuss_iio_read_raw,
.write_raw = ccuss_iio_write_raw,
};
мои типы каналов: IIO_VOLTAGE, IIO_TEMP и IIO_HUMIDITYRELATIVE.
Я начинаю думать, чтобы сделать его атрибутом устройства :-( если я не получу ответ в течение следующих 12 часов.
Обновление:
просто чтобы быть более заметным, согласно комментарию Мерфи.
static int ccuss_iio_write_raw(struct iio_dev *iio,
struct iio_chan_spec const *channel, int *val1,
int *val2, long mask);
P.S. Я не хочу удалять эту ошибку самым известным способом. QA (и я) будет недоволен.
Спасибо