blob: 57de34a69e8e445db5c0c92910fc293a8ae1abf5 [file] [log] [blame]
/******************************************************************************/
/* */
/* Silicom Bypass Control Utility, Copyright (c) 2005-2007 Silicom */
/* All rights reserved. */
/* */
/* 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
#define BP_STATUS_CHANGE_CAP 0x04
#define SW_CTL_CAP 0x08
#define BP_DIS_CAP 0x10
#define BP_DIS_STATUS_CAP 0x20
#define STD_NIC_CAP 0x40
#define BP_PWOFF_ON_CAP 0x80
#define BP_PWOFF_OFF_CAP 0x0100
#define BP_PWOFF_CTL_CAP 0x0200
#define BP_PWUP_ON_CAP 0x0400
#define BP_PWUP_OFF_CAP 0x0800
#define BP_PWUP_CTL_CAP 0x1000
#define WD_CTL_CAP 0x2000
#define WD_STATUS_CAP 0x4000
#define WD_TIMEOUT_CAP 0x8000
#define TX_CTL_CAP 0x10000
#define TX_STATUS_CAP 0x20000
#define TAP_CAP 0x40000
#define TAP_STATUS_CAP 0x80000
#define TAP_STATUS_CHANGE_CAP 0x100000
#define TAP_DIS_CAP 0x200000
#define TAP_DIS_STATUS_CAP 0x400000
#define TAP_PWUP_ON_CAP 0x800000
#define TAP_PWUP_OFF_CAP 0x1000000
#define TAP_PWUP_CTL_CAP 0x2000000
#define NIC_CAP_NEG 0x4000000
#define TPL_CAP 0x8000000
#define DISC_CAP 0x10000000
#define DISC_DIS_CAP 0x20000000
#define DISC_PWUP_CTL_CAP 0x40000000
#define TPL2_CAP_EX 0x01
#define DISC_PORT_CAP_EX 0x02
#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 {
IF_SCAN,
GET_DEV_NUM,
IS_BYPASS,
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,
SET_DISC_PORT,
GET_DISC_PORT,
SET_DISC_PORT_PWUP,
GET_DISC_PORT_PWUP,
SET_BP_FORCE_LINK,
GET_BP_FORCE_LINK,
#ifdef BP_SELF_TEST
SET_BP_SELF_TEST = 200,
GET_BP_SELF_TEST,
#endif
} CMND_TYPE_SD;
/*
* 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