/******************************************************************************/
/*                                                                            */
/* bypass library, Copyright (c) 2004-2006 Silicom, Ltd                       */
/* Corporation.                                                               */
/*                                                                            */
/* 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, located in the file LICENSE.                 */
/*                                                                            */
/*                                                                            */
/*                                                                            */
/******************************************************************************/

#ifndef BP_IOCTL_H
#define BP_IOCTL_H

#define BP_CAP                   0x01	/* BIT_0 */
#define BP_STATUS_CAP            0x02	/* BIT_1 */
#define BP_STATUS_CHANGE_CAP     0x04	/* BIT_2 */
#define SW_CTL_CAP               0x08	/* BIT_3 */
#define BP_DIS_CAP               0x10	/* BIT_4 */
#define BP_DIS_STATUS_CAP        0x20	/* BIT_5 */
#define STD_NIC_CAP              0x40	/* BIT_6 */
#define BP_PWOFF_ON_CAP          0x80	/* BIT_7 */
#define BP_PWOFF_OFF_CAP         0x0100	/* BIT_8 */
#define BP_PWOFF_CTL_CAP         0x0200	/* BIT_9 */
#define BP_PWUP_ON_CAP           0x0400	/* BIT_10 */
#define BP_PWUP_OFF_CAP          0x0800	/* BIT_11 */
#define BP_PWUP_CTL_CAP          0x1000	/* BIT_12 */
#define WD_CTL_CAP               0x2000	/* BIT_13 */
#define WD_STATUS_CAP            0x4000	/* BIT_14 */
#define WD_TIMEOUT_CAP           0x8000	/* BIT_15 */
#define TX_CTL_CAP               0x10000	/* BIT_16 */
#define TX_STATUS_CAP            0x20000	/* BIT_17 */
#define TAP_CAP                  0x40000	/* BIT_18 */
#define TAP_STATUS_CAP           0x80000	/* BIT_19 */
#define TAP_STATUS_CHANGE_CAP    0x100000	/* BIT_20 */
#define TAP_DIS_CAP              0x200000	/* BIT_21 */
#define TAP_DIS_STATUS_CAP       0x400000	/* BIT_22 */
#define TAP_PWUP_ON_CAP          0x800000	/* BIT_23 */
#define TAP_PWUP_OFF_CAP         0x1000000	/* BIT 24 */
#define TAP_PWUP_CTL_CAP         0x2000000	/* BIT 25 */
#define NIC_CAP_NEG              0x4000000	/* BIT 26 */
#define TPL_CAP                  0x8000000	/* BIT 27 */
#define DISC_CAP                 0x10000000	/* BIT 28 */
#define DISC_DIS_CAP             0x20000000	/* BIT 29 */
#define DISC_PWUP_CTL_CAP        0x40000000	/* BIT 30 */

#define WD_MIN_TIME_MASK(val)      (val & 0xf)
#define WD_STEP_COUNT_MASK(val)    ((val & 0xf) << 5)
#define WDT_STEP_TIME              0x10	/* BIT_4 */

#define WD_MIN_TIME_GET(desc)   (desc & 0xf)
#define WD_STEP_COUNT_GET(desc) ((desc>>5) & 0xf)

enum {
	IS_BYPASS = 1,
	GET_BYPASS_SLAVE,
	GET_BYPASS_CAPS,
	GET_WD_SET_CAPS,
	SET_BYPASS,
	GET_BYPASS,
	GET_BYPASS_CHANGE,
	SET_BYPASS_WD,
	GET_BYPASS_WD,
	GET_WD_EXPIRE_TIME,
	RESET_BYPASS_WD_TIMER,
	SET_DIS_BYPASS,
	GET_DIS_BYPASS,
	SET_BYPASS_PWOFF,
	GET_BYPASS_PWOFF,
	SET_BYPASS_PWUP,
	GET_BYPASS_PWUP,
	SET_STD_NIC,
	GET_STD_NIC,
	SET_TX,
	GET_TX,
	SET_TAP,
	GET_TAP,
	GET_TAP_CHANGE,
	SET_DIS_TAP,
	GET_DIS_TAP,
	SET_TAP_PWUP,
	GET_TAP_PWUP,
	SET_WD_EXP_MODE,
	GET_WD_EXP_MODE,
	SET_WD_AUTORESET,
	GET_WD_AUTORESET,
	SET_TPL,
	GET_TPL,
	SET_DISC,
	GET_DISC,
	GET_DISC_CHANGE,
	SET_DIS_DISC,
	GET_DIS_DISC,
	SET_DISC_PWUP,
	GET_DISC_PWUP,

	GET_BYPASS_INFO = 100,
	GET_BP_WAIT_AT_PWUP,
	SET_BP_WAIT_AT_PWUP,
	GET_BP_HW_RESET,
	SET_BP_HW_RESET,
};

enum {
	IF_SCAN_SD,
	GET_DEV_NUM_SD,
	IS_BYPASS_SD,
	GET_BYPASS_SLAVE_SD,
	GET_BYPASS_CAPS_SD,
	GET_WD_SET_CAPS_SD,
	SET_BYPASS_SD,
	GET_BYPASS_SD,
	GET_BYPASS_CHANGE_SD,
	SET_BYPASS_WD_SD,
	GET_BYPASS_WD_SD,
	GET_WD_EXPIRE_TIME_SD,
	RESET_BYPASS_WD_TIMER_SD,
	SET_DIS_BYPASS_SD,
	GET_DIS_BYPASS_SD,
	SET_BYPASS_PWOFF_SD,
	GET_BYPASS_PWOFF_SD,
	SET_BYPASS_PWUP_SD,
	GET_BYPASS_PWUP_SD,
	SET_STD_NIC_SD,
	GET_STD_NIC_SD,
	SET_TX_SD,
	GET_TX_SD,
	SET_TAP_SD,
	GET_TAP_SD,
	GET_TAP_CHANGE_SD,
	SET_DIS_TAP_SD,
	GET_DIS_TAP_SD,
	SET_TAP_PWUP_SD,
	GET_TAP_PWUP_SD,
	SET_WD_EXP_MODE_SD,
	GET_WD_EXP_MODE_SD,
	SET_WD_AUTORESET_SD,
	GET_WD_AUTORESET_SD,
	SET_TPL_SD,
	GET_TPL_SD,
	SET_DISC_SD,
	GET_DISC_SD,
	GET_DISC_CHANGE_SD,
	SET_DIS_DISC_SD,
	GET_DIS_DISC_SD,
	SET_DISC_PWUP_SD,
	GET_DISC_PWUP_SD,

	GET_BYPASS_INFO_SD = 100,
	GET_BP_WAIT_AT_PWUP_SD,
	SET_BP_WAIT_AT_PWUP_SD,
	GET_BP_HW_RESET_SD,
	SET_BP_HW_RESET_SD,

};

#define SIOCGIFBYPASS (SIOCDEVPRIVATE+10)

struct bp_info {
	char prod_name[14];
	unsigned char fw_ver;
};

/* for passing single values */
struct if_bypass {
	char if_name[IFNAMSIZ];
	int cmd;
	int data;
};
struct if_bypass_info {
	char if_name[IFNAMSIZ];
	char cmd;
	struct bp_info bp_info;
};

/*
* The major device number. We can't rely on dynamic
* registration any more, because ioctls need to know
* it.
*/

#define MAGIC_NUM 'J'

/* for passing single values */
struct bpctl_cmd {
	int status;
	int data[8];
	int in_param[8];
	int out_param[8];
};

#define IOCTL_TX_MSG(cmd) _IOWR(MAGIC_NUM, cmd, struct bpctl_cmd)

#define DEVICE_NAME "bpctl"

#endif
