diff options
Diffstat (limited to 'b2r2_driver_usr_api.h')
-rw-r--r-- | b2r2_driver_usr_api.h | 146 |
1 files changed, 146 insertions, 0 deletions
diff --git a/b2r2_driver_usr_api.h b/b2r2_driver_usr_api.h new file mode 100644 index 0000000..89f79cb --- /dev/null +++ b/b2r2_driver_usr_api.h @@ -0,0 +1,146 @@ +/*---------------------------------------------------------------------------*/ +/* © copyright STMicroelectronics(Wireless),2008. All rights reserved. For */ +/* information, STMicroelectronics(Wireless)reserves the right to license */ +/* this software concurrently under separate license conditions. */ +/* */ +/* This program is free software; you can redistribute it and/or modify it */ +/* under the terms of the GNU Lesser General Public License as published */ +/* by the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. */ +/* */ +/* You should have received a copy of the GNU Lesser General Public License */ +/* along with this program. If not, see <http://www.gnu.org/licenses/>. */ +/*---------------------------------------------------------------------------*/ + + +/** + +MODULE : B2R2 Device Driver + +FILE : b2r2_driver_usr_api.h + +DESCRIPTION : Defines application user interface for the B2R2 driver + +NOTES : User application using B2R2 driver should include this + file and use b2r2_driver instance. + +*/ + + +#ifndef __B2R2_DRIVER_USR_API +#define __B2R2_DRIVER_USR_API + + +#ifdef __cplusplus +extern "C" { +#endif /* _cplusplus */ + + +#include <linux/ioctl.h> + + +/** + * enum b2r2_driver_context - driver context + * + * description + * This enumeration is used for selecting in which + * b2r2 queue the job to be pushed. + * + */ + +typedef enum b2r2_driver_context +{ + +B2R2_CQ1_JOB=0x1, +B2R2_CQ2_JOB=0x2, +B2R2_AQ1_JOB=0x4, +B2R2_AQ2_JOB=0x8, +B2R2_AQ3_JOB=0xc, +B2R2_AQ4_JOB=0x10, +B2R2_ERROR_JOB=0x20 + +}b2r2_driver_context; + +/** + * struct b2r2_driver - Driver instance handler + * @context: b2r2 instance + * @jobid: job index + * @queue_address: Address of the queue + * @control: Control Params + * @pace_control: pace_control + * @interrupt_status: interrupt status + * @job_done: status of the job done + * @interrupt_target: interrupt target + * @interrupt_context: interrupt context + * + * description + * This structure is used for queuing and dequeueing a job. + * priority and type of hardware triggering can be selected. + * + */ + +typedef struct b2r2_driver{ + + b2r2_driver_context context; + unsigned int jobid; + + unsigned int queue_address; + unsigned int control; + unsigned int pace_control; + unsigned int interrupt_status; + + unsigned int job_done; + unsigned int interrupt_target; + unsigned int interrupt_context; + + }b2r2_driver; + + +/** + * struct b2r2_driver_memory - Driver memory handler + * @physical_address: physical address of the memory + * @size_of_memory:size of the memory + * + * description + * This structure is used by to define the memory required. + * + */ + + + typedef struct b2r2_driver_memory + { + + unsigned int physical_address; + unsigned int size_of_memory; + + }b2r2_driver_memory; + + +/** Maximum size of the structure need to passed to B2R2 */ + +#define B2R2_MAX_IOCTL_SIZE (4 * 1024) + +#define B2R2_IOC_MAGIC 0xcc + + +/** INSTANCE SPECIFIC OPERATIONS */ + +#define B2R2_QUEUE_JOB _IOWR(B2R2_IOC_MAGIC,1,b2r2_driver) +#define B2R2_DEQUEUE_JOB _IOWR(B2R2_IOC_MAGIC,2,b2r2_driver) + +#define B2R2_ALLOCATE_MEMORY _IOWR(B2R2_IOC_MAGIC,4,b2r2_driver_memory) +#define B2R2_DEALLOCATE_MEMORY _IOWR(B2R2_IOC_MAGIC,5,b2r2_driver_memory) + +#define B2R2_IOC_MAXNR (1) + + +#ifdef _cplusplus +} +#endif /* _cplusplus */ + +#endif //__B2R2_DRIVER_USR_API
\ No newline at end of file |