1/* 2 * Copyright (c) 2007, 2008, 2009, ETH Zurich. 3 * All rights reserved. 4 * 5 * This file is distributed under the terms in the attached LICENSE file. 6 * If you do not find this file, copies can be found by writing to: 7 * ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group. 8 */ 9 10#ifndef MCDI_RPC_H_ 11#define MCDI_RPC_H_ 12 13// MCDI Constant Offsets 14#define MCDI_REBOOT_OFFSET(a) (a? 0x7fc/4 :0x7f8/4) 15#define MCDI_PDU(a) (a? 0x108/4 : 0x008/4) 16#define MCDI_DORBELL(a) (a? 0x004/4: 0x000) 17#define MCDI_MAC_PORT_OFFSET(a) (a? 50 : 44) 18// CMD for getting assertions 19#define CMD_GET_ASSERTS 0x6 20#define CMD_GET_ASSERTS_IN_LEN 4 21#define CMD_GET_ASSERTS_IN_CLEAR_OFFSET 0 22#define CMD_GET_ASSERTS_OUT_LEN 140 23#define CMD_GET_ASSERTS_FLAG_THR_FAIL 0x2 24#define CMD_GET_ASSERTS_FLAG_SYS_FAIL 0x3 25#define CMD_GET_ASSERTS_FLAG_WDOG_FAIL 0x4 26// CMD for Driver attaching 27#define CMD_DRV_ATTACH 0x1c 28#define CMD_DRV_ATTACH_IN_LEN 8 29#define CMD_DRV_ATTACH_OUT_LEN 4 30// CMD for Reboot 31#define CMD_REBOOT 0x3d 32#define CMD_REBOOT_IN_LEN 4 33// CMD fetting firmware version 34#define CMD_GET_VERSION 0x8 35#define CMD_GET_VERSION_OUT_LEN 32 36// CMD for Port reset 37#define CMD_PORT_RESET 0x20 38// CMD for WoL Filter get 39#define CMD_WOL_FILTER_GET 0x45 40#define CMD_WOL_FILTER_RESET 0x34 41#define CMD_WOL_FILTER_GET_OUT_LEN 4 42// CMD for getting Board config 43#define CMD_GET_BOARD_CONFIG 0x18 44#define CMD_GET_BOARD_CONFIG_OUT_LEN 136 45#define CMD_GET_BOARD_CONFIG_OUT_CAPABILITIES(a) (a? 40: 36) 46// CMD SRIOV 47#define SRIOV_BASE 0x40 48#define CMD_SRIOV 0x30 49#define CMD_SRIOV_IN_LEN 12 50#define CMD_SRIOV_OUT_LEN 8 51// CMD PTP 52#define CMD_PTP 0xb 53#define CMD_PTP_IN_LEN 4 54#define PTP_DISABLE 0x2 55// CMD get resource limits 56#define CMD_GET_RESOURCE_LIMITS 0x4f 57#define CMD_GET_RESOURCE_LIMITS_OUT_LEN 16 58// CMD for ports setup 59#define CMD_GET_LINK 0x29 60#define CMD_GET_LINK_OUT_LEN 28 61#define CMD_GET_LINK_OUT_SPEED_OFFSET 8 62#define CMD_GET_LINK_OUT_FLAGS_OFFSET 16 63#define CMD_GET_LINK_OUT_FCNTL_OFFSET 20 64#define CMD_GET_LINK_OUT_MAC_FAULT_OFFSET 24 65 66#define CMD_GET_LOOPBACK_MODES 0x28 67#define CMD_GET_LOOPBACK_MODES_OUT_LEN 32 68#define CMD_GET_LOOPBACK_MODES_SUGGESTED_OFFSET 24 69// CMD for setting link 70#define CMD_SET_LINK 0x2a 71#define CMD_SET_LINK_IN_LEN 16 72#define CMD_SET_LINK_IN_CAP_OFFSET 0 73#define CMD_SET_LINK_IN_FLAGS_OFFSET 4 74#define CMD_SET_LINK_IN_LOOPBACK_MODE_OFFSET 8 75#define CMD_SET_LINK_IN_LOOPBACK_SPEED_OFFSET 12 76// CMD for enable logging 77#define CMD_LOG_CTRL 0x7 78#define CMD_LOG_CTRL_IN_LEN 8 79// CMD for setting mac address 80#define CMD_SET_MAC 0x2c 81#define CMD_SET_MAC_IN_LEN 24 82#define CMD_SET_MAC_IN_ADR_OFFSET 8 83#define CMD_SET_MAC_IN_MTU_OFFSET 0 84#define CMD_SET_MAC_IN_DRAIN_OFFSET 4 85#define CMD_SET_MAC_IN_REJECT_OFFSET 16 86#define CMD_SET_MAC_IN_FCTNL_OFFSET 20 87// CMD for setting multicast hash 88#define CMD_SET_MCAST_HASH 0x35 89#define CMD_SET_MCAST_HASH_IN_LEN 32 90#define CMD_SET_MCAST_IN_HASH0_OFFSET 0 91#define CMD_SET_MCAST_IN_HASH1_OFFSET 16 92// CMD for getting phy config 93#define CMD_GET_PHY_CFG 0x24 94#define CMD_GET_PHY_CFG_OUT_LEN 72 95#define CMD_GET_PHY_CFG_OUT_FLAGS_OFFSET 0 96#define CMD_GET_PHY_CFG_OUT_TYPE_OFFSET 4 97#define CMD_GET_PHY_CFG_OUT_CAP_OFFSET 8 98#define CMD_GET_PHY_CFG_OUT_MEDIA_OFFSET 44 99// CMD for getting phy state out 100#define CMD_GET_PHY_STATE 0x43 101#define CMD_GET_PHY_STATE_OUT_LEN 4 102// CMD for mon probe 103#define CMD_SENSOR_INFO 0x41 104#define CMD_SENSOR_INFO_OUT_LEN 252 105#define CMD_SENSOR_INFO_OUT_MASK 0 106// CMD for BIST test 107#define CMD_START_BIST 0x25 108#define CMD_START_BIST_IN_LEN 4 109#define CMD_PHY_BIST 5 110#define CMD_POLL_BIST 0x26 111#define CMD_POLL_BIST_RUNNING 1 112#define CMD_POLL_BIST_PASSED 2 113#define CMD_POLL_BIST_FAILED 3 114#define CMD_POLL_BIST_OUT_LEN 8 115// CMD for MAC stats 116#define CMD_MAC_STATS_IN_LEN 16 117#define CMD_MAC_STATS 0x2e 118#define CMD_MAC_STATS_IN_CMD_OFFSET 8 119#define CMD_MAC_STATS_IN_ADDR_LO_OFFSET 0 120#define CMD_MAC_STATS_IN_ADDR_HI_OFFSET 4 121#define CMD_MAC_STATS_IN_DMA_LEN_OFFSET 12 122// CMD for PHY stats 123#define CMD_PHY_STATS 0x2d 124#define CMD_PHY_STATS_IN_LEN 8 125#define CMD_PHY_STATS_IN_ADDR_OFFSET 0 126// CMD for info about virtual NVRAM partition 127#define CMD_NVRAM_INFO 0x37 128#define CMD_NVRAM_INFO_IN_LEN 4 129#define CMD_NVRAM_INFO_IN_TYPE_OFFSET 0 130#define CMD_NVRAM_INFO_OUT_LEN 24 131//CMD 132#define CMD_NVRAM_TYPES 0x36 133#define CMD_NVRAM_TYPES_OUT_LEN 4 134errval_t mcdi_rpc(unsigned cmd, const uint8_t *in, uint32_t inlen, 135 uint8_t *out, uint32_t outlen, uint32_t *outlen_actual, 136 bool port, sfn5122f_t *d); 137void init_mcdi_mutex(void); 138 139 140#endif 141 142 143