Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */
0002 /* Copyright 2013-2016 Freescale Semiconductor Inc.
0003  * Copyright 2019 NXP
0004  */
0005 #ifndef _FSL_DPMAC_CMD_H
0006 #define _FSL_DPMAC_CMD_H
0007 
0008 /* DPMAC Version */
0009 #define DPMAC_VER_MAJOR             4
0010 #define DPMAC_VER_MINOR             4
0011 #define DPMAC_CMD_BASE_VERSION          1
0012 #define DPMAC_CMD_2ND_VERSION           2
0013 #define DPMAC_CMD_ID_OFFSET         4
0014 
0015 #define DPMAC_CMD(id)   (((id) << DPMAC_CMD_ID_OFFSET) | DPMAC_CMD_BASE_VERSION)
0016 #define DPMAC_CMD_V2(id) (((id) << DPMAC_CMD_ID_OFFSET) | DPMAC_CMD_2ND_VERSION)
0017 
0018 /* Command IDs */
0019 #define DPMAC_CMDID_CLOSE       DPMAC_CMD(0x800)
0020 #define DPMAC_CMDID_OPEN        DPMAC_CMD(0x80c)
0021 
0022 #define DPMAC_CMDID_GET_API_VERSION DPMAC_CMD(0xa0c)
0023 
0024 #define DPMAC_CMDID_GET_ATTR        DPMAC_CMD(0x004)
0025 #define DPMAC_CMDID_SET_LINK_STATE  DPMAC_CMD_V2(0x0c3)
0026 
0027 #define DPMAC_CMDID_GET_COUNTER     DPMAC_CMD(0x0c4)
0028 
0029 #define DPMAC_CMDID_SET_PROTOCOL    DPMAC_CMD(0x0c7)
0030 
0031 /* Macros for accessing command fields smaller than 1byte */
0032 #define DPMAC_MASK(field)        \
0033     GENMASK(DPMAC_##field##_SHIFT + DPMAC_##field##_SIZE - 1, \
0034         DPMAC_##field##_SHIFT)
0035 
0036 #define dpmac_set_field(var, field, val) \
0037     ((var) |= (((val) << DPMAC_##field##_SHIFT) & DPMAC_MASK(field)))
0038 #define dpmac_get_field(var, field)      \
0039     (((var) & DPMAC_MASK(field)) >> DPMAC_##field##_SHIFT)
0040 
0041 struct dpmac_cmd_open {
0042     __le32 dpmac_id;
0043 };
0044 
0045 struct dpmac_rsp_get_attributes {
0046     u8 eth_if;
0047     u8 link_type;
0048     __le16 id;
0049     __le32 max_rate;
0050 };
0051 
0052 #define DPMAC_STATE_SIZE    1
0053 #define DPMAC_STATE_SHIFT   0
0054 #define DPMAC_STATE_VALID_SIZE  1
0055 #define DPMAC_STATE_VALID_SHIFT 1
0056 
0057 struct dpmac_cmd_set_link_state {
0058     __le64 options;
0059     __le32 rate;
0060     __le32 pad0;
0061     /* from lsb: up:1, state_valid:1 */
0062     u8 state;
0063     u8 pad1[7];
0064     __le64 supported;
0065     __le64 advertising;
0066 };
0067 
0068 struct dpmac_cmd_get_counter {
0069     u8 id;
0070 };
0071 
0072 struct dpmac_rsp_get_counter {
0073     __le64 pad;
0074     __le64 counter;
0075 };
0076 
0077 struct dpmac_rsp_get_api_version {
0078     __le16 major;
0079     __le16 minor;
0080 };
0081 
0082 struct dpmac_cmd_set_protocol {
0083     u8 eth_if;
0084 };
0085 #endif /* _FSL_DPMAC_CMD_H */