Boot Linux faster!

Check our new training course

Boot Linux faster!

Check our new training course
and Creative Commons CC-BY-SA
lecture and lab materials

Bootlin logo

Elixir Cross Referencer

/*
 * Copyright (c) 2017 Intel Corporation
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <adc.h>
#include <syscall_handler.h>

_SYSCALL_HANDLER1_SIMPLE_VOID(adc_enable, K_OBJ_DRIVER_ADC, struct device *);
_SYSCALL_HANDLER1_SIMPLE_VOID(adc_disable, K_OBJ_DRIVER_ADC, struct device *);

_SYSCALL_HANDLER(adc_read, dev, seq_table_p)
{
	struct adc_seq_entry *entry;
	struct adc_seq_table *seq_table = (struct adc_seq_table *)seq_table_p;
	int i;

	_SYSCALL_OBJ(dev, K_OBJ_DRIVER_ADC);
	_SYSCALL_MEMORY_READ(seq_table, sizeof(struct adc_seq_table));
	_SYSCALL_MEMORY_ARRAY_READ(seq_table->entries, seq_table->num_entries,
				   sizeof(struct adc_seq_entry));

	for (entry = seq_table->entries, i = 0; i < seq_table->num_entries;
	     i++, entry++) {
		_SYSCALL_MEMORY_WRITE(entry->buffer, entry->buffer_length);
	}

	return _impl_adc_read((struct device *)dev, seq_table);
}