dpio.c 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. /*
  2. * Copyright (C) 2013-2015 Freescale Semiconductor
  3. *
  4. * SPDX-License-Identifier: GPL-2.0+
  5. */
  6. #include <fsl-mc/fsl_mc_sys.h>
  7. #include <fsl-mc/fsl_mc_cmd.h>
  8. #include <fsl-mc/fsl_dpio.h>
  9. int dpio_open(struct fsl_mc_io *mc_io, int dpio_id, uint16_t *token)
  10. {
  11. struct mc_command cmd = { 0 };
  12. int err;
  13. /* prepare command */
  14. cmd.header = mc_encode_cmd_header(DPIO_CMDID_OPEN,
  15. MC_CMD_PRI_LOW, 0);
  16. DPIO_CMD_OPEN(cmd, dpio_id);
  17. /* send command to mc*/
  18. err = mc_send_command(mc_io, &cmd);
  19. if (err)
  20. return err;
  21. /* retrieve response parameters */
  22. *token = MC_CMD_HDR_READ_TOKEN(cmd.header);
  23. return 0;
  24. }
  25. int dpio_close(struct fsl_mc_io *mc_io, uint16_t token)
  26. {
  27. struct mc_command cmd = { 0 };
  28. /* prepare command */
  29. cmd.header = mc_encode_cmd_header(DPIO_CMDID_CLOSE,
  30. MC_CMD_PRI_HIGH, token);
  31. /* send command to mc*/
  32. return mc_send_command(mc_io, &cmd);
  33. }
  34. int dpio_enable(struct fsl_mc_io *mc_io, uint16_t token)
  35. {
  36. struct mc_command cmd = { 0 };
  37. /* prepare command */
  38. cmd.header = mc_encode_cmd_header(DPIO_CMDID_ENABLE,
  39. MC_CMD_PRI_LOW, token);
  40. /* send command to mc*/
  41. return mc_send_command(mc_io, &cmd);
  42. }
  43. int dpio_disable(struct fsl_mc_io *mc_io, uint16_t token)
  44. {
  45. struct mc_command cmd = { 0 };
  46. /* prepare command */
  47. cmd.header = mc_encode_cmd_header(DPIO_CMDID_DISABLE,
  48. MC_CMD_PRI_LOW,
  49. token);
  50. /* send command to mc*/
  51. return mc_send_command(mc_io, &cmd);
  52. }
  53. int dpio_reset(struct fsl_mc_io *mc_io, uint16_t token)
  54. {
  55. struct mc_command cmd = { 0 };
  56. /* prepare command */
  57. cmd.header = mc_encode_cmd_header(DPIO_CMDID_RESET,
  58. MC_CMD_PRI_LOW, token);
  59. /* send command to mc*/
  60. return mc_send_command(mc_io, &cmd);
  61. }
  62. int dpio_get_attributes(struct fsl_mc_io *mc_io,
  63. uint16_t token,
  64. struct dpio_attr *attr)
  65. {
  66. struct mc_command cmd = { 0 };
  67. int err;
  68. /* prepare command */
  69. cmd.header = mc_encode_cmd_header(DPIO_CMDID_GET_ATTR,
  70. MC_CMD_PRI_LOW,
  71. token);
  72. /* send command to mc*/
  73. err = mc_send_command(mc_io, &cmd);
  74. if (err)
  75. return err;
  76. /* retrieve response parameters */
  77. DPIO_RSP_GET_ATTR(cmd, attr);
  78. return 0;
  79. }