rtk_osal.c 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. /*
  2. * SPDX-License-Identifier: GPL-2.0-only
  3. *
  4. * Copyright (c) 2023 Realtek Semiconductor Corp. All rights reserved.
  5. */
  6. #include "type.h"
  7. #include "error.h"
  8. #include "rtk_phylib_def.h"
  9. #include "rtk_osal.h"
  10. #include <linux/version.h>
  11. #include <linux/jiffies.h>
  12. #include <linux/delay.h>
  13. #include <linux/interrupt.h>
  14. #include <linux/sched.h>
  15. #include <linux/wait.h>
  16. #include <linux/sched/signal.h>
  17. #include <linux/phy.h>
  18. int32
  19. osal_time_usecs_get(osal_usecs_t *pUsec)
  20. {
  21. struct timespec64 ts;
  22. RT_PARAM_CHK((NULL == pUsec), RT_ERR_NULL_POINTER);
  23. ktime_get_ts64(&ts);
  24. *pUsec = (osal_usecs_t)((ts.tv_sec * USEC_PER_SEC) + (ts.tv_nsec / NSEC_PER_USEC));
  25. return RT_ERR_OK;
  26. }
  27. void *
  28. osal_alloc(uint32 size)
  29. {
  30. void *p;
  31. p = kmalloc((size_t)size, GFP_ATOMIC);
  32. return p;
  33. }
  34. int32
  35. phy_common_general_reg_mmd_get(uint32 unit, rtk_port_t port, uint32 mmdAddr, uint32 mmdReg, uint32 *pData)
  36. {
  37. int32 rData = 0;
  38. rData = phy_read_mmd(port, mmdAddr, mmdReg);
  39. if (rData < 0)
  40. return RT_ERR_FAILED;
  41. *pData = (uint32)rData;
  42. return RT_ERR_OK;
  43. }
  44. int32
  45. phy_common_general_reg_mmd_set(uint32 unit, rtk_port_t port, uint32 mmdAddr, uint32 mmdReg, uint32 data)
  46. {
  47. int ret = phy_write_mmd(port, mmdAddr, mmdReg, data);
  48. return (ret < 0) ? RT_ERR_FAILED : RT_ERR_OK;
  49. }