mux.c 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /*
  2. * Copyright (c) 2018, Synopsys, Inc.
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. */
  6. #include "mux_hal.h"
  7. #include "mux.h"
  8. static MUX_REG *mux_ctrl_regs = (MUX_REG *)0;
  9. /** initialize i2c controller and set slave device address */
  10. void mux_init(MUX_REG *mux_regs)
  11. {
  12. // Initialize Mux controller registers by default values
  13. mux_regs[PMOD_MUX_CTRL] = PMOD_MUX_CTRL_DEFAULT;
  14. mux_regs[SPI_MAP_CTRL] = SPI_MAP_CTRL_DEFAULT;
  15. mux_regs[UART_MAP_CTRL] = UART_MAP_CTRL_DEFAULT;
  16. mux_ctrl_regs = mux_regs;
  17. }
  18. /** Get mux ctrl register pointer, only valid after mux_init */
  19. MUX_REG *get_mux_regs(void)
  20. {
  21. return mux_ctrl_regs;
  22. }
  23. /** set PMOD muxer scheme */
  24. void set_pmod_mux(MUX_REG *mux_regs, uint32_t val)
  25. {
  26. mux_regs[PMOD_MUX_CTRL] = val;
  27. }
  28. /** get PMOD muxer scheme */
  29. uint32_t get_pmod_mux(MUX_REG *mux_regs)
  30. {
  31. return (uint32_t) mux_regs[PMOD_MUX_CTRL];
  32. }
  33. /** set PMOD muxer scheme */
  34. void change_pmod_mux(MUX_REG *mux_regs, uint32_t val, uint32_t change_bits)
  35. {
  36. mux_regs[PMOD_MUX_CTRL] = ((mux_regs[PMOD_MUX_CTRL] & ~change_bits) | val);
  37. }
  38. /** set SPI connection scheme */
  39. void set_spi_map(MUX_REG *mux_regs, uint32_t val)
  40. {
  41. mux_regs[SPI_MAP_CTRL] = val;
  42. }
  43. /** get SPI connection scheme */
  44. uint32_t get_spi_map(MUX_REG *mux_regs)
  45. {
  46. return (uint32_t) mux_regs[SPI_MAP_CTRL];
  47. }
  48. /** set UART connection scheme */
  49. void set_uart_map(MUX_REG *mux_regs, uint32_t val)
  50. {
  51. mux_regs[UART_MAP_CTRL] = val;
  52. }
  53. /** get UART connection scheme */
  54. uint32_t get_uart_map(MUX_REG *mux_regs)
  55. {
  56. return (uint32_t) mux_regs[UART_MAP_CTRL];
  57. }