Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
[sfrench/cifs-2.6.git] / drivers / input / joystick / iforce / iforce.h
index c020d61eccf2e54861bec8350ff2359ad50a6613..9cfa460466aa783fb11f76e1b3838fd9a5fa6eb4 100644 (file)
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
 /*
  *  Copyright (c) 2000-2002 Vojtech Pavlik <vojtech@ucw.cz>
  *  Copyright (c) 2001-2002, 2007 Johann Deneux <johann.deneux@gmail.com>
@@ -6,19 +7,6 @@
  */
 
 /*
- * 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 2 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  */
 
 #include <linux/kernel.h>
@@ -26,8 +14,6 @@
 #include <linux/input.h>
 #include <linux/module.h>
 #include <linux/spinlock.h>
-#include <linux/usb.h>
-#include <linux/serio.h>
 #include <linux/circ_buf.h>
 #include <linux/mutex.h>
 
 
 #define IFORCE_MAX_LENGTH      16
 
-/* iforce::bus */
-#define IFORCE_232     1
-#define IFORCE_USB     2
-
 #define IFORCE_EFFECTS_MAX     32
 
 /* Each force feedback effect is made of one core effect, which can be
@@ -97,7 +79,8 @@ struct iforce;
 
 struct iforce_xport_ops {
        void (*xmit)(struct iforce *iforce);
-       int (*get_id)(struct iforce *iforce, u8* id);
+       int (*get_id)(struct iforce *iforce, u8 id,
+                     u8 *response_data, size_t *response_len);
        int (*start_io)(struct iforce *iforce);
        void (*stop_io)(struct iforce *iforce);
 };
@@ -106,24 +89,7 @@ struct iforce {
        struct input_dev *dev;          /* Input device interface */
        struct iforce_device *type;
        const struct iforce_xport_ops *xport_ops;
-       int bus;
-
-       unsigned char data[IFORCE_MAX_LENGTH];
-       unsigned char edata[IFORCE_MAX_LENGTH];
-       u16 ecmd;
-       u16 expect_packet;
-
-#ifdef CONFIG_JOYSTICK_IFORCE_232
-       struct serio *serio;            /* RS232 transfer */
-       int idx, pkt, len, id;
-       unsigned char csum;
-#endif
-#ifdef CONFIG_JOYSTICK_IFORCE_USB
-       struct usb_device *usbdev;      /* USB transfer */
-       struct usb_interface *intf;
-       struct urb *irq, *out, *ctrl;
-       struct usb_ctrlrequest cr;
-#endif
+
        spinlock_t xmit_lock;
        /* Buffer used for asynchronous sending of bytes to the device */
        struct circ_buf xmit;
@@ -149,18 +115,22 @@ struct iforce {
 /* Encode a time value */
 #define TIME_SCALE(a)  (a)
 
-static inline int iforce_get_id_packet(struct iforce *iforce, u8* id)
+static inline int iforce_get_id_packet(struct iforce *iforce, u8 id,
+                                      u8 *response_data, size_t *response_len)
 {
-       return iforce->xport_ops->get_id(iforce, id);
+       return iforce->xport_ops->get_id(iforce, id,
+                                        response_data, response_len);
 }
 
 /* Public functions */
 /* iforce-main.c */
-int iforce_init_device(struct iforce *iforce);
+int iforce_init_device(struct device *parent, u16 bustype,
+                      struct iforce *iforce);
 
 /* iforce-packets.c */
 int iforce_control_playback(struct iforce*, u16 id, unsigned int);
-void iforce_process_packet(struct iforce *iforce, u16 cmd, unsigned char *data);
+void iforce_process_packet(struct iforce *iforce,
+                          u8 packet_id, u8 *data, size_t len);
 int iforce_send_packet(struct iforce *iforce, u16 cmd, unsigned char* data);
 void iforce_dump_packet(struct iforce *iforce, char *msg, u16 cmd, unsigned char *data);