fsl_soc_mipi_csi2rx.c 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /*
  2. * Copyright 2019-2020 NXP
  3. * All rights reserved.
  4. *
  5. * SPDX-License-Identifier: BSD-3-Clause
  6. */
  7. #include "fsl_soc_mipi_csi2rx.h"
  8. /* Component ID definition, used by tools. */
  9. #ifndef FSL_COMPONENT_ID
  10. #define FSL_COMPONENT_ID "platform.drivers.soc_mipi_csi2rx"
  11. #endif
  12. /*******************************************************************************
  13. * Definitions
  14. ******************************************************************************/
  15. /*******************************************************************************
  16. * Prototypes
  17. ******************************************************************************/
  18. /*******************************************************************************
  19. * Variables
  20. ******************************************************************************/
  21. /*******************************************************************************
  22. * Code
  23. ******************************************************************************/
  24. void MIPI_CSI2RX_SoftwareReset(MIPI_CSI2RX_Type *base, bool reset)
  25. {
  26. if (reset)
  27. {
  28. IOMUXC_GPR->GPR59 &= ~IOMUXC_GPR_GPR59_MIPI_CSI_SOFT_RST_N_MASK;
  29. }
  30. else
  31. {
  32. IOMUXC_GPR->GPR59 |= IOMUXC_GPR_GPR59_MIPI_CSI_SOFT_RST_N_MASK;
  33. }
  34. }
  35. void MIPI_CSI2RX_InitInterface(MIPI_CSI2RX_Type *base, uint8_t tHsSettle_EscClk)
  36. {
  37. /* Pixel link control */
  38. VIDEO_MUX->PLM_CTRL.RW = 0U;
  39. IOMUXC_GPR->GPR59 = (IOMUXC_GPR->GPR59 & ~(IOMUXC_GPR_GPR59_MIPI_CSI_S_PRG_RXHS_SETTLE_MASK)) |
  40. IOMUXC_GPR_GPR59_MIPI_CSI_RX_ENABLE_MASK | /* Enable RX. */
  41. IOMUXC_GPR_GPR59_MIPI_CSI_AUTO_PD_EN_MASK | /* Auto power down unused lanes. */
  42. IOMUXC_GPR_GPR59_MIPI_CSI_SOFT_RST_N_MASK | IOMUXC_GPR_GPR59_MIPI_CSI_PD_RX_MASK |
  43. IOMUXC_GPR_GPR59_MIPI_CSI_DDRCLK_EN_MASK | /* Enable the DDR clock. */
  44. IOMUXC_GPR_GPR59_MIPI_CSI_CONT_CLK_MODE_MASK | /* Continue clock. */
  45. IOMUXC_GPR_GPR59_MIPI_CSI_S_PRG_RXHS_SETTLE(tHsSettle_EscClk - 1UL); /* T(HS-SETTLE) */
  46. /* Don't mask any data type */
  47. VIDEO_MUX->CFG_DT_DISABLE.RW = 0U;
  48. /* Enable pixel link master. */
  49. VIDEO_MUX->PLM_CTRL.SET = (VIDEO_MUX_PLM_CTRL_ENABLE_MASK | VIDEO_MUX_PLM_CTRL_VALID_OVERRIDE_MASK);
  50. /* Power up PHY. */
  51. IOMUXC_GPR->GPR59 &= ~IOMUXC_GPR_GPR59_MIPI_CSI_PD_RX_MASK;
  52. }
  53. void MIPI_CSI2RX_DeinitInterface(MIPI_CSI2RX_Type *base)
  54. {
  55. IOMUXC_GPR->GPR59 = (IOMUXC_GPR->GPR59 & (~IOMUXC_GPR_GPR59_MIPI_CSI_RX_ENABLE_MASK)) | IOMUXC_GPR_GPR59_MIPI_CSI_PD_RX_MASK;
  56. /* Pixel link control */
  57. VIDEO_MUX->PLM_CTRL.RW = 0U;
  58. }