Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
0002 /*
0003  *  Copyright (C) 2005-2007 Jiri Slaby <jirislaby@gmail.com>
0004  *
0005  *  This program is free software; you can redistribute it and/or modify
0006  *  it under the terms of the GNU General Public License as published by
0007  *  the Free Software Foundation; either version 2 of the License, or
0008  *  (at your option) any later version.
0009  */
0010 
0011 #ifndef __PHANTOM_H
0012 #define __PHANTOM_H
0013 
0014 #include <linux/types.h>
0015 
0016 /* PHN_(G/S)ET_REG param */
0017 struct phm_reg {
0018     __u32 reg;
0019     __u32 value;
0020 };
0021 
0022 /* PHN_(G/S)ET_REGS param */
0023 struct phm_regs {
0024     __u32 count;
0025     __u32 mask;
0026     __u32 values[8];
0027 };
0028 
0029 #define PH_IOC_MAGIC        'p'
0030 #define PHN_GET_REG     _IOWR(PH_IOC_MAGIC, 0, struct phm_reg *)
0031 #define PHN_SET_REG     _IOW(PH_IOC_MAGIC, 1, struct phm_reg *)
0032 #define PHN_GET_REGS        _IOWR(PH_IOC_MAGIC, 2, struct phm_regs *)
0033 #define PHN_SET_REGS        _IOW(PH_IOC_MAGIC, 3, struct phm_regs *)
0034 /* this ioctl tells the driver, that the caller is not OpenHaptics and might
0035  * use improved registers update (no more phantom switchoffs when using
0036  * libphantom) */
0037 #define PHN_NOT_OH      _IO(PH_IOC_MAGIC, 4)
0038 #define PHN_GETREG      _IOWR(PH_IOC_MAGIC, 5, struct phm_reg)
0039 #define PHN_SETREG      _IOW(PH_IOC_MAGIC, 6, struct phm_reg)
0040 #define PHN_GETREGS     _IOWR(PH_IOC_MAGIC, 7, struct phm_regs)
0041 #define PHN_SETREGS     _IOW(PH_IOC_MAGIC, 8, struct phm_regs)
0042 
0043 #define PHN_CONTROL     0x6     /* control byte in iaddr space */
0044 #define PHN_CTL_AMP     0x1     /*   switch after torques change */
0045 #define PHN_CTL_BUT     0x2     /*   is button switched */
0046 #define PHN_CTL_IRQ     0x10    /*   is irq enabled */
0047 
0048 #define PHN_ZERO_FORCE      2048    /* zero torque on motor */
0049 
0050 #endif