halmac_api_8821c_usb.c 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. #include "../halmac_88xx_cfg.h"
  2. #include "halmac_8821c_cfg.h"
  3. /**
  4. * halmac_mac_power_switch_8821c_usb() - switch mac power
  5. * @pHalmac_adapter : the adapter of halmac
  6. * @halmac_power : power state
  7. * Author : KaiYuan Chang
  8. * Return : HALMAC_RET_STATUS
  9. * More details of status code can be found in prototype document
  10. */
  11. HALMAC_RET_STATUS
  12. halmac_mac_power_switch_8821c_usb(
  13. IN PHALMAC_ADAPTER pHalmac_adapter,
  14. IN HALMAC_MAC_POWER halmac_power
  15. )
  16. {
  17. u8 interface_mask;
  18. u8 value8;
  19. VOID *pDriver_adapter = NULL;
  20. PHALMAC_API pHalmac_api;
  21. if (HALMAC_RET_SUCCESS != halmac_adapter_validate(pHalmac_adapter))
  22. return HALMAC_RET_ADAPTER_INVALID;
  23. if (HALMAC_RET_SUCCESS != halmac_api_validate(pHalmac_adapter))
  24. return HALMAC_RET_API_INVALID;
  25. halmac_api_record_id_88xx(pHalmac_adapter, HALMAC_API_MAC_POWER_SWITCH);
  26. pDriver_adapter = pHalmac_adapter->pDriver_adapter;
  27. pHalmac_api = (PHALMAC_API)pHalmac_adapter->pHalmac_api;
  28. PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_PWR, HALMAC_DBG_TRACE, "halmac_mac_power_switch_88xx_usb halmac_power = %x ==========>\n", halmac_power);
  29. interface_mask = HALMAC_PWR_INTF_USB_MSK;
  30. value8 = HALMAC_REG_READ_8(pHalmac_adapter, REG_CR);
  31. if (0xEA == value8) {
  32. pHalmac_adapter->halmac_state.mac_power = HALMAC_MAC_POWER_OFF;
  33. } else {
  34. if (BIT(0) == (HALMAC_REG_READ_8(pHalmac_adapter, REG_SYS_STATUS1 + 1) & BIT(0)))
  35. pHalmac_adapter->halmac_state.mac_power = HALMAC_MAC_POWER_OFF;
  36. else
  37. pHalmac_adapter->halmac_state.mac_power = HALMAC_MAC_POWER_ON;
  38. }
  39. /*Check if power switch is needed*/
  40. if (halmac_power == HALMAC_MAC_POWER_ON && pHalmac_adapter->halmac_state.mac_power == HALMAC_MAC_POWER_ON) {
  41. PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_PWR, HALMAC_DBG_WARN, "halmac_mac_power_switch power state unchange!\n");
  42. return HALMAC_RET_PWR_UNCHANGE;
  43. } else {
  44. if (HALMAC_MAC_POWER_OFF == halmac_power) {
  45. if (HALMAC_RET_SUCCESS != halmac_pwr_seq_parser_88xx(pHalmac_adapter, HALMAC_PWR_CUT_ALL_MSK, HALMAC_PWR_FAB_TSMC_MSK,
  46. interface_mask, halmac_8821c_card_disable_flow)) {
  47. PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_PWR, HALMAC_DBG_ERR, "Handle power off cmd error\n");
  48. return HALMAC_RET_POWER_OFF_FAIL;
  49. }
  50. pHalmac_adapter->halmac_state.mac_power = HALMAC_MAC_POWER_OFF;
  51. pHalmac_adapter->halmac_state.ps_state = HALMAC_PS_STATE_UNDEFINE;
  52. pHalmac_adapter->halmac_state.dlfw_state = HALMAC_DLFW_NONE;
  53. halmac_init_adapter_dynamic_para_88xx(pHalmac_adapter);
  54. } else {
  55. if (HALMAC_RET_SUCCESS != halmac_pwr_seq_parser_88xx(pHalmac_adapter, HALMAC_PWR_CUT_ALL_MSK, HALMAC_PWR_FAB_TSMC_MSK,
  56. interface_mask, halmac_8821c_card_enable_flow)) {
  57. PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_PWR, HALMAC_DBG_ERR, "Handle power on cmd error\n");
  58. return HALMAC_RET_POWER_ON_FAIL;
  59. }
  60. HALMAC_REG_WRITE_8(pHalmac_adapter, REG_SYS_STATUS1 + 1, HALMAC_REG_READ_8(pHalmac_adapter, REG_SYS_STATUS1 + 1) & ~(BIT(0)));
  61. pHalmac_adapter->halmac_state.mac_power = HALMAC_MAC_POWER_ON;
  62. pHalmac_adapter->halmac_state.ps_state = HALMAC_PS_STATE_ACT;
  63. }
  64. }
  65. PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_PWR, HALMAC_DBG_TRACE, "halmac_mac_power_switch_88xx_usb <==========\n");
  66. return HALMAC_RET_SUCCESS;
  67. }
  68. /**
  69. * halmac_phy_cfg_8821c_usb() - phy config
  70. * @pHalmac_adapter : the adapter of halmac
  71. * Author : KaiYuan Chang
  72. * Return : HALMAC_RET_STATUS
  73. * More details of status code can be found in prototype document
  74. */
  75. HALMAC_RET_STATUS
  76. halmac_phy_cfg_8821c_usb(
  77. IN PHALMAC_ADAPTER pHalmac_adapter,
  78. IN HALMAC_INTF_PHY_PLATFORM platform
  79. )
  80. {
  81. VOID *pDriver_adapter = NULL;
  82. HALMAC_RET_STATUS status = HALMAC_RET_SUCCESS;
  83. PHALMAC_API pHalmac_api;
  84. if (HALMAC_RET_SUCCESS != halmac_adapter_validate(pHalmac_adapter))
  85. return HALMAC_RET_ADAPTER_INVALID;
  86. if (HALMAC_RET_SUCCESS != halmac_api_validate(pHalmac_adapter))
  87. return HALMAC_RET_API_INVALID;
  88. halmac_api_record_id_88xx(pHalmac_adapter, HALMAC_API_PHY_CFG);
  89. pDriver_adapter = pHalmac_adapter->pDriver_adapter;
  90. pHalmac_api = (PHALMAC_API)pHalmac_adapter->pHalmac_api;
  91. PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_PWR, HALMAC_DBG_TRACE, "halmac_phy_cfg ==========>\n");
  92. status = halmac_parse_intf_phy_88xx(pHalmac_adapter, HALMAC_RTL8821C_USB2_PHY, platform, HAL_INTF_PHY_USB2);
  93. if (HALMAC_RET_SUCCESS != status)
  94. return status;
  95. status = halmac_parse_intf_phy_88xx(pHalmac_adapter, HALMAC_RTL8821C_USB3_PHY, platform, HAL_INTF_PHY_USB3);
  96. if (HALMAC_RET_SUCCESS != status)
  97. return status;
  98. PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_PWR, HALMAC_DBG_TRACE, "halmac_phy_cfg <==========\n");
  99. return HALMAC_RET_SUCCESS;
  100. }
  101. /**
  102. * halmac_interface_integration_tuning_8821c_usb() - usb interface fine tuning
  103. * @pHalmac_adapter : the adapter of halmac
  104. * Author : Ivan
  105. * Return : HALMAC_RET_STATUS
  106. * More details of status code can be found in prototype document
  107. */
  108. HALMAC_RET_STATUS
  109. halmac_interface_integration_tuning_8821c_usb(
  110. IN PHALMAC_ADAPTER pHalmac_adapter
  111. )
  112. {
  113. return HALMAC_RET_SUCCESS;
  114. }