linux/drivers/staging/line6/pod.h
<<
>>
Prefs
   1/*
   2 * Line6 Linux USB driver - 0.9.1beta
   3 *
   4 * Copyright (C) 2004-2010 Markus Grabner (grabner@icg.tugraz.at)
   5 *
   6 *      This program is free software; you can redistribute it and/or
   7 *      modify it under the terms of the GNU General Public License as
   8 *      published by the Free Software Foundation, version 2.
   9 *
  10 */
  11
  12#ifndef POD_H
  13#define POD_H
  14
  15#include <linux/interrupt.h>
  16#include <linux/spinlock.h>
  17#include <linux/usb.h>
  18
  19#include <sound/core.h>
  20
  21#include "driver.h"
  22
  23/*
  24        PODxt Live interfaces
  25*/
  26#define PODXTLIVE_INTERFACE_POD    0
  27#define PODXTLIVE_INTERFACE_VARIAX 1
  28
  29/*
  30        Locate name in binary program dump
  31*/
  32#define POD_NAME_OFFSET 0
  33#define POD_NAME_LENGTH 16
  34
  35/*
  36        Other constants
  37*/
  38#define POD_CONTROL_SIZE 0x80
  39#define POD_BUFSIZE_DUMPREQ 7
  40#define POD_STARTUP_DELAY 1000
  41
  42/*
  43        Stages of POD startup procedure
  44*/
  45enum {
  46        POD_STARTUP_INIT = 1,
  47        POD_STARTUP_VERSIONREQ,
  48        POD_STARTUP_WORKQUEUE,
  49        POD_STARTUP_SETUP,
  50        POD_STARTUP_LAST = POD_STARTUP_SETUP - 1
  51};
  52
  53struct usb_line6_pod {
  54        /**
  55                Generic Line6 USB data.
  56        */
  57        struct usb_line6 line6;
  58
  59        /**
  60                Instrument monitor level.
  61        */
  62        int monitor_level;
  63
  64        /**
  65                Timer for device initializaton.
  66        */
  67        struct timer_list startup_timer;
  68
  69        /**
  70                Work handler for device initializaton.
  71        */
  72        struct work_struct startup_work;
  73
  74        /**
  75                Current progress in startup procedure.
  76        */
  77        int startup_progress;
  78
  79        /**
  80                Serial number of device.
  81        */
  82        int serial_number;
  83
  84        /**
  85                Firmware version (x 100).
  86        */
  87        int firmware_version;
  88
  89        /**
  90                Device ID.
  91        */
  92        int device_id;
  93};
  94
  95extern void line6_pod_disconnect(struct usb_interface *interface);
  96extern int line6_pod_init(struct usb_interface *interface,
  97                          struct usb_line6_pod *pod);
  98extern void line6_pod_process_message(struct usb_line6_pod *pod);
  99extern void line6_pod_transmit_parameter(struct usb_line6_pod *pod, int param,
 100                                         u8 value);
 101
 102#endif
 103