dpmac-cmd.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */
  2. /* Copyright 2013-2016 Freescale Semiconductor Inc.
  3. * Copyright 2019 NXP
  4. */
  5. #ifndef _FSL_DPMAC_CMD_H
  6. #define _FSL_DPMAC_CMD_H
  7. /* DPMAC Version */
  8. #define DPMAC_VER_MAJOR 4
  9. #define DPMAC_VER_MINOR 4
  10. #define DPMAC_CMD_BASE_VERSION 1
  11. #define DPMAC_CMD_2ND_VERSION 2
  12. #define DPMAC_CMD_ID_OFFSET 4
  13. #define DPMAC_CMD(id) (((id) << DPMAC_CMD_ID_OFFSET) | DPMAC_CMD_BASE_VERSION)
  14. #define DPMAC_CMD_V2(id) (((id) << DPMAC_CMD_ID_OFFSET) | DPMAC_CMD_2ND_VERSION)
  15. /* Command IDs */
  16. #define DPMAC_CMDID_CLOSE DPMAC_CMD(0x800)
  17. #define DPMAC_CMDID_OPEN DPMAC_CMD(0x80c)
  18. #define DPMAC_CMDID_GET_API_VERSION DPMAC_CMD(0xa0c)
  19. #define DPMAC_CMDID_GET_ATTR DPMAC_CMD(0x004)
  20. #define DPMAC_CMDID_SET_LINK_STATE DPMAC_CMD_V2(0x0c3)
  21. #define DPMAC_CMDID_GET_COUNTER DPMAC_CMD(0x0c4)
  22. #define DPMAC_CMDID_SET_PROTOCOL DPMAC_CMD(0x0c7)
  23. /* Macros for accessing command fields smaller than 1byte */
  24. #define DPMAC_MASK(field) \
  25. GENMASK(DPMAC_##field##_SHIFT + DPMAC_##field##_SIZE - 1, \
  26. DPMAC_##field##_SHIFT)
  27. #define dpmac_set_field(var, field, val) \
  28. ((var) |= (((val) << DPMAC_##field##_SHIFT) & DPMAC_MASK(field)))
  29. #define dpmac_get_field(var, field) \
  30. (((var) & DPMAC_MASK(field)) >> DPMAC_##field##_SHIFT)
  31. struct dpmac_cmd_open {
  32. __le32 dpmac_id;
  33. };
  34. struct dpmac_rsp_get_attributes {
  35. u8 eth_if;
  36. u8 link_type;
  37. __le16 id;
  38. __le32 max_rate;
  39. };
  40. #define DPMAC_STATE_SIZE 1
  41. #define DPMAC_STATE_SHIFT 0
  42. #define DPMAC_STATE_VALID_SIZE 1
  43. #define DPMAC_STATE_VALID_SHIFT 1
  44. struct dpmac_cmd_set_link_state {
  45. __le64 options;
  46. __le32 rate;
  47. __le32 pad0;
  48. /* from lsb: up:1, state_valid:1 */
  49. u8 state;
  50. u8 pad1[7];
  51. __le64 supported;
  52. __le64 advertising;
  53. };
  54. struct dpmac_cmd_get_counter {
  55. u8 id;
  56. };
  57. struct dpmac_rsp_get_counter {
  58. __le64 pad;
  59. __le64 counter;
  60. };
  61. struct dpmac_rsp_get_api_version {
  62. __le16 major;
  63. __le16 minor;
  64. };
  65. struct dpmac_cmd_set_protocol {
  66. u8 eth_if;
  67. };
  68. #endif /* _FSL_DPMAC_CMD_H */