diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2009-09-22 19:54:53 (GMT) |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2009-09-22 20:01:40 (GMT) |
commit | ae19ffbadc1b2100285a5b5b3d0a4e0a11390904 (patch) | |
tree | 3c2086ab67398a019089a47ca3f362a4bc6db74f /drivers/staging/meilhaus/memain.h | |
parent | 34e84f39a27d059a3e6ec6e8b94aafa702e6f220 (diff) | |
parent | 9173a8ef24a6b1b8031507b35b8ffe5f85a87692 (diff) | |
download | linux-fsl-qoriq-ae19ffbadc1b2100285a5b5b3d0a4e0a11390904.tar.xz |
Merge branch 'master' into for-linus
Diffstat (limited to 'drivers/staging/meilhaus/memain.h')
-rw-r--r-- | drivers/staging/meilhaus/memain.h | 266 |
1 files changed, 0 insertions, 266 deletions
diff --git a/drivers/staging/meilhaus/memain.h b/drivers/staging/meilhaus/memain.h deleted file mode 100644 index 48f8367..0000000 --- a/drivers/staging/meilhaus/memain.h +++ /dev/null @@ -1,266 +0,0 @@ -/* - * Copyright (C) 2005 Meilhaus Electronic GmbH (support@meilhaus.de) - * - * Source File : memain.h - * Author : GG (Guenter Gebhardt) <g.gebhardt@meilhaus.de> - */ - -#ifndef _MEMAIN_H_ -#define _MEMAIN_H_ - -#include "meinternal.h" - -#include "meids.h" -#include "medebug.h" - -#include "medevice.h" -/*#include "me1000_device.h" -#include "me1400_device.h" -#include "me1600_device.h"*/ -#include "me4600_device.h" -/*#include "me6000_device.h" -#include "me0600_device.h" -#include "me8100_device.h" -#include "me8200_device.h" -#include "me0900_device.h"*/ -#include "medummy.h" - -#ifdef __KERNEL__ - -/*============================================================================= - Templates - ===========================================================================*/ - -#define ME_LOCK_MULTIPLEX_TEMPLATE(NAME, TYPE, CALL, DEV_CALL, ARGS) \ -static int CALL(struct file *filep, TYPE *arg){ \ - int err = 0; \ - int k = 0; \ - struct list_head *pos; \ - me_device_t *device; \ - TYPE karg; \ - \ - PDEBUG("executed.\n"); \ - \ - err = copy_from_user(&karg, arg, sizeof(TYPE)); \ - if(err){ \ - PERROR("Can't copy arguments to kernel space\n"); \ - return -EFAULT; \ - } \ - \ - down_read(&me_rwsem); \ - \ - list_for_each(pos, &me_device_list){ \ - if(k == karg.device){ \ - device = list_entry(pos, me_device_t, list); \ - break; \ - } \ - k++; \ - } \ - \ - if(pos == &me_device_list){ \ - PERROR("Invalid device number specified\n"); \ - karg.errno = ME_ERRNO_INVALID_DEVICE; \ - } \ - else{ \ - spin_lock(&me_lock); \ - if((me_filep != NULL) && (me_filep != filep)){ \ - spin_unlock(&me_lock); \ - PERROR("Resource is locked by another process\n"); \ - if(karg.lock == ME_LOCK_SET) \ - karg.errno = ME_ERRNO_LOCKED; \ - else if(karg.lock == ME_LOCK_RELEASE) \ - karg.errno = ME_ERRNO_SUCCESS; \ - else{ \ - PERROR("Invalid lock specified\n"); \ - karg.errno = ME_ERRNO_INVALID_LOCK; \ - }\ - } \ - else { \ - me_count++; \ - spin_unlock(&me_lock); \ - \ - karg.errno = device->DEV_CALL ARGS; \ - \ - spin_lock(&me_lock); \ - me_count--; \ - spin_unlock(&me_lock); \ - } \ - } \ - \ - up_read(&me_rwsem); \ - \ - err = copy_to_user(arg, &karg, sizeof(TYPE)); \ - if(err){ \ - PERROR("Can't copy arguments back to user space\n"); \ - return -EFAULT; \ - } \ - \ - return ME_ERRNO_SUCCESS; \ -} - -#define ME_IO_MULTIPLEX_TEMPLATE(NAME, TYPE, CALL, DEV_CALL, ARGS) \ -static int CALL(struct file *filep, TYPE *arg){ \ - int err = 0; \ - int k = 0; \ - struct list_head *pos; \ - me_device_t *device; \ - TYPE karg; \ - \ - PDEBUG("executed.\n"); \ - \ - err = copy_from_user(&karg, arg, sizeof(TYPE)); \ - if(err){ \ - PERROR("Can't copy arguments to kernel space\n"); \ - return -EFAULT; \ - } \ - \ - down_read(&me_rwsem); \ - \ - list_for_each(pos, &me_device_list){ \ - if(k == karg.device){ \ - device = list_entry(pos, me_device_t, list); \ - break; \ - } \ - k++; \ - } \ - \ - if(pos == &me_device_list){ \ - PERROR("Invalid device number specified\n"); \ - karg.errno = ME_ERRNO_INVALID_DEVICE; \ - } \ - else{ \ - spin_lock(&me_lock); \ - if((me_filep != NULL) && (me_filep != filep)){ \ - spin_unlock(&me_lock); \ - PERROR("Resource is locked by another process\n"); \ - karg.errno = ME_ERRNO_LOCKED; \ - } \ - else { \ - me_count++; \ - spin_unlock(&me_lock); \ - \ - karg.errno = device->DEV_CALL ARGS; \ - \ - spin_lock(&me_lock); \ - me_count--; \ - spin_unlock(&me_lock); \ - } \ - } \ - \ - up_read(&me_rwsem); \ - \ - err = copy_to_user(arg, &karg, sizeof(TYPE)); \ - if(err){ \ - PERROR("Can't copy arguments back to user space\n"); \ - return -EFAULT; \ - } \ - \ - return ME_ERRNO_SUCCESS; \ -} - -#define ME_QUERY_MULTIPLEX_STR_TEMPLATE(NAME, TYPE, CALL, DEV_CALL, ARGS) \ -static int CALL(struct file *filep, TYPE *arg){ \ - int err = 0; \ - int k = 0; \ - struct list_head *pos; \ - me_device_t *device; \ - char *msg = NULL; \ - TYPE karg; \ - \ - PDEBUG("executed.\n"); \ - \ - err = copy_from_user(&karg, arg, sizeof(TYPE)); \ - if(err){ \ - PERROR("Can't copy arguments to kernel space\n"); \ - return -EFAULT; \ - } \ - \ - down_read(&me_rwsem); \ - \ - list_for_each(pos, &me_device_list){ \ - if(k == karg.device){ \ - device = list_entry(pos, me_device_t, list); \ - break; \ - } \ - k++; \ - } \ - \ - if(pos == &me_device_list){ \ - PERROR("Invalid device number specified\n"); \ - karg.errno = ME_ERRNO_INVALID_DEVICE; \ - } \ - else{ \ - karg.errno = device->DEV_CALL ARGS; \ - if(!karg.errno){ \ - if((strlen(msg) + 1) > karg.count){ \ - PERROR("User buffer for device name is to little\n"); \ - karg.errno = ME_ERRNO_USER_BUFFER_SIZE; \ - } \ - else{ \ - err = copy_to_user(karg.name, msg, strlen(msg) + 1); \ - if(err){ \ - PERROR("Can't copy device name to user space\n"); \ - return -EFAULT; \ - } \ - } \ - } \ - } \ - \ - up_read(&me_rwsem); \ - \ - err = copy_to_user(arg, &karg, sizeof(TYPE)); \ - if(err){ \ - PERROR("Can't copy query back to user space\n"); \ - return -EFAULT; \ - } \ - \ - return ME_ERRNO_SUCCESS; \ -} - -#define ME_QUERY_MULTIPLEX_TEMPLATE(NAME, TYPE, CALL, DEV_CALL, ARGS) \ -static int CALL(struct file *filep, TYPE *arg){ \ - int err = 0; \ - int k = 0; \ - struct list_head *pos; \ - me_device_t *device; \ - TYPE karg; \ - \ - PDEBUG("executed.\n"); \ - \ - err = copy_from_user(&karg, arg, sizeof(TYPE)); \ - if(err){ \ - PERROR("Can't copy arguments from user space\n"); \ - return -EFAULT; \ - } \ - \ - down_read(&me_rwsem); \ - \ - list_for_each(pos, &me_device_list){ \ - if(k == karg.device){ \ - device = list_entry(pos, me_device_t, list); \ - break; \ - } \ - k++; \ - } \ - \ - if(pos == &me_device_list){ \ - PERROR("Invalid device number specified\n"); \ - karg.errno = ME_ERRNO_INVALID_DEVICE; \ - } \ - else{ \ - karg.errno = device->DEV_CALL ARGS; \ - } \ - \ - up_read(&me_rwsem); \ - \ - err = copy_to_user(arg, &karg, sizeof(TYPE)); \ - if(err){ \ - PERROR("Can't copy arguments to user space\n"); \ - return -EFAULT; \ - } \ - \ - return ME_ERRNO_SUCCESS; \ -} - -#endif //__KERNEL__ -#endif |