/*---------------------------------------------------------------------------*/
/* © 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 . */
/*---------------------------------------------------------------------------*/
/**
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
/**
* 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