/*
 *  Card-specific functions for the Siano SMS1xxx USB dongle
 *
 *  Copyright (c) 2008 Michael Krufky <mkrufky@linuxtv.org>
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 3 as
 *  published by the Free Software Foundation;
 *
 *  Software distributed under the License is distributed on an "AS IS"
 *  basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
 *
 *  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., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

#ifndef __SMS_CARDS_H__
#define __SMS_CARDS_H__

#include <linux/usb.h>
#include "smscoreapi.h"

#define SMS_BOARD_UNKNOWN 0
#define SMS1XXX_BOARD_SIANO_SMS1000 1
#define SMS1XXX_BOARD_SIANO_STELLAR 2
#define SMS1XXX_BOARD_SIANO_NOVA_A  3
#define SMS1XXX_BOARD_SIANO_NOVA_B  4
#define SMS1XXX_BOARD_SIANO_VEGA    5

struct sms_board {
	char *name;
	enum sms_device_type_st type;
};

struct sms_board *sms_get_board(int id);

extern struct usb_device_id smsusb_id_table[];

#endif /* __SMS_CARDS_H__ */
