199 lines
5.2 KiB
C
199 lines
5.2 KiB
C
/******************************************************************************/
|
|
/* */
|
|
/* 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
|
|
|
|
typedef 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,
|
|
} CMND_TYPE;
|
|
|
|
typedef 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,
|
|
|
|
} CMND_TYPE_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
|