| /******************************************************************************/ |
| /* */ |
| /* 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 |