X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Fbeaglelogic%2Fbeaglelogic.h;fp=hardware%2Fbeaglelogic%2Fbeaglelogic.h;h=0000000000000000000000000000000000000000;hb=155b680da482cea2381becb73c51cfb838bff31e;hp=12e2f486388da246075d7fd3f4d4c6d9d3cbce11;hpb=43cd4637285833706f8a404ca027bcf0ee75b9ae;p=libsigrok.git diff --git a/hardware/beaglelogic/beaglelogic.h b/hardware/beaglelogic/beaglelogic.h deleted file mode 100644 index 12e2f486..00000000 --- a/hardware/beaglelogic/beaglelogic.h +++ /dev/null @@ -1,213 +0,0 @@ -/* - * This file is part of the libsigrok project. - * - * Copyright (C) 2014 Kumar Abhishek - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#ifndef BEAGLELOGIC_H_ -#define BEAGLELOGIC_H_ - -#include - -#include -#include -#include -#include - -#include - -#include - -/* BeagleLogic device node name */ -#define BEAGLELOGIC_DEV_NODE "/dev/beaglelogic" -#define BEAGLELOGIC_SYSFS_ATTR(a) "/sys/devices/virtual/misc/beaglelogic/"\ - __STRING(a) - -/* Reproduced verbatim from beaglelogic.h in the kernel tree until the kernel - * module hits the mainline. Contains the ABI, so DO NOT TOUCH this section */ - -/* ioctl calls that can be issued on /dev/beaglelogic */ -#define IOCTL_BL_GET_VERSION _IOR('k', 0x20, uint32_t) - -#define IOCTL_BL_GET_SAMPLE_RATE _IOR('k', 0x21, uint32_t) -#define IOCTL_BL_SET_SAMPLE_RATE _IOW('k', 0x21, uint32_t) - -#define IOCTL_BL_GET_SAMPLE_UNIT _IOR('k', 0x22, uint32_t) -#define IOCTL_BL_SET_SAMPLE_UNIT _IOW('k', 0x22, uint32_t) - -#define IOCTL_BL_GET_TRIGGER_FLAGS _IOR('k', 0x23, uint32_t) -#define IOCTL_BL_SET_TRIGGER_FLAGS _IOW('k', 0x23, uint32_t) - -#define IOCTL_BL_CACHE_INVALIDATE _IO('k', 0x25) - -#define IOCTL_BL_GET_BUFFER_SIZE _IOR('k', 0x26, uint32_t) -#define IOCTL_BL_SET_BUFFER_SIZE _IOW('k', 0x26, uint32_t) - -#define IOCTL_BL_GET_BUFUNIT_SIZE _IOR('k', 0x27, uint32_t) - -#define IOCTL_BL_FILL_TEST_PATTERN _IO('k', 0x28) - -#define IOCTL_BL_START _IO('k', 0x29) -#define IOCTL_BL_STOP _IO('k', 0x2A) - -/* Possible States of BeagleLogic */ -enum beaglelogic_states { - STATE_BL_DISABLED, /* Powered off (at module start) */ - STATE_BL_INITIALIZED, /* Powered on */ - STATE_BL_MEMALLOCD, /* Buffers allocated */ - STATE_BL_ARMED, /* All Buffers DMA-mapped and configuration done */ - STATE_BL_RUNNING, /* Data being captured */ - STATE_BL_REQUEST_STOP, /* Stop requested */ - STATE_BL_ERROR /* Buffer overrun */ -}; - -/* Setting attributes */ -enum beaglelogic_triggerflags { - BL_TRIGGERFLAGS_ONESHOT = 0, - BL_TRIGGERFLAGS_CONTINUOUS -}; - -/* Possible sample unit / formats */ -enum beaglelogic_sampleunit { - BL_SAMPLEUNIT_16_BITS = 0, - BL_SAMPLEUNIT_8_BITS -}; -/* END beaglelogic.h */ - -/* For all the functions below: - * Parameters: - * devc : Device context structure to operate on - * Returns: - * SR_OK or SR_ERR - */ - -SR_PRIV int beaglelogic_open_nonblock(struct dev_context *devc); -SR_PRIV int beaglelogic_close(struct dev_context *devc); - -SR_PRIV int beaglelogic_get_buffersize(struct dev_context *devc); -SR_PRIV int beaglelogic_set_buffersize(struct dev_context *devc); - -SR_PRIV int beaglelogic_get_samplerate(struct dev_context *devc); -SR_PRIV int beaglelogic_set_samplerate(struct dev_context *devc); - -SR_PRIV int beaglelogic_get_sampleunit(struct dev_context *devc); -SR_PRIV int beaglelogic_set_sampleunit(struct dev_context *devc); - -SR_PRIV int beaglelogic_get_triggerflags(struct dev_context *devc); -SR_PRIV int beaglelogic_set_triggerflags(struct dev_context *devc); - -/* Start and stop the capture operation */ -SR_PRIV int beaglelogic_start(struct dev_context *devc); -SR_PRIV int beaglelogic_stop(struct dev_context *devc); - -/* Get the last error size */ -SR_PRIV int beaglelogic_getlasterror(struct dev_context *devc); - -/* Gets the unit size of the capture buffer (usually 4 or 8 MB) */ -SR_PRIV int beaglelogic_get_bufunitsize(struct dev_context *devc); - -SR_PRIV int beaglelogic_mmap(struct dev_context *devc); -SR_PRIV int beaglelogic_munmap(struct dev_context *devc); - -/* Sources */ -SR_PRIV inline int beaglelogic_open_nonblock(struct dev_context *devc) { - devc->fd = open(BEAGLELOGIC_DEV_NODE, O_RDONLY | O_NONBLOCK); - return (devc->fd == -1 ? SR_ERR : SR_OK); -} - -SR_PRIV inline int beaglelogic_close(struct dev_context *devc) { - return close(devc->fd); -} - -SR_PRIV inline int beaglelogic_get_buffersize(struct dev_context *devc) { - return ioctl(devc->fd, IOCTL_BL_GET_BUFFER_SIZE, &devc->buffersize); -} - -SR_PRIV inline int beaglelogic_set_buffersize(struct dev_context *devc) { - return ioctl(devc->fd, IOCTL_BL_SET_BUFFER_SIZE, devc->buffersize); -} - -/* This is treated differently as it gets a uint64_t while a uint32_t is read */ -SR_PRIV inline int beaglelogic_get_samplerate(struct dev_context *devc) { - uint32_t arg, err; - err = ioctl(devc->fd, IOCTL_BL_GET_SAMPLE_RATE, &arg); - devc->cur_samplerate = arg; - return err; -} - -SR_PRIV inline int beaglelogic_set_samplerate(struct dev_context *devc) { - return ioctl(devc->fd, IOCTL_BL_SET_SAMPLE_RATE, - (uint32_t)devc->cur_samplerate); -} - -SR_PRIV inline int beaglelogic_get_sampleunit(struct dev_context *devc) { - return ioctl(devc->fd, IOCTL_BL_GET_SAMPLE_UNIT, &devc->sampleunit); -} - -SR_PRIV inline int beaglelogic_set_sampleunit(struct dev_context *devc) { - return ioctl(devc->fd, IOCTL_BL_SET_SAMPLE_UNIT, devc->sampleunit); -} - -SR_PRIV inline int beaglelogic_get_triggerflags(struct dev_context *devc) { - return ioctl(devc->fd, IOCTL_BL_GET_TRIGGER_FLAGS, &devc->triggerflags); -} - -SR_PRIV inline int beaglelogic_set_triggerflags(struct dev_context *devc) { - return ioctl(devc->fd, IOCTL_BL_SET_TRIGGER_FLAGS, devc->triggerflags); -} - -SR_PRIV int beaglelogic_getlasterror(struct dev_context *devc) { - int fd; - char buf[16]; - int ret; - - if ((fd = open(BEAGLELOGIC_SYSFS_ATTR(lasterror), O_RDONLY)) == -1) - return SR_ERR; - - if ((ret = read(fd, buf, 16)) < 0) - return SR_ERR; - - close(fd); - devc->last_error = strtoul(buf, NULL, 10); - - return SR_OK; -} - -SR_PRIV inline int beaglelogic_start(struct dev_context *devc) { - return ioctl(devc->fd, IOCTL_BL_START); -} - -SR_PRIV inline int beaglelogic_stop(struct dev_context *devc) { - return ioctl(devc->fd, IOCTL_BL_STOP); -} - -SR_PRIV int beaglelogic_get_bufunitsize(struct dev_context *devc) { - return ioctl(devc->fd, IOCTL_BL_GET_BUFUNIT_SIZE, &devc->bufunitsize); -} - -SR_PRIV int beaglelogic_mmap(struct dev_context *devc) { - if (!devc->buffersize) - beaglelogic_get_buffersize(devc); - devc->sample_buf = mmap(NULL, devc->buffersize, - PROT_READ, MAP_SHARED, devc->fd, 0); - return (devc->sample_buf == MAP_FAILED ? -1 : SR_OK); -} - -SR_PRIV int beaglelogic_munmap(struct dev_context *devc) { - return munmap(devc->sample_buf, devc->buffersize); -} - -#endif /* BEAGLELOGIC_H_ */