HPM SDK
HPMicro Software Development Kit
hpm_pixelmux_drv.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2023 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef HPM_PIXELMUX_DRV_H
9 #define HPM_PIXELMUX_DRV_H
10 
18 #include "hpm_common.h"
19 #include "hpm_soc.h"
20 #include "hpm_pixelmux_regs.h"
21 
25 typedef enum {
29 
33 typedef enum {
37 
41 typedef enum {
45 
49 typedef enum {
53 
57 typedef enum {
61 
65 typedef enum {
69 
73 typedef enum {
77 
81 typedef enum {
87 
91 typedef enum {
100 
104 typedef enum {
113 
114 #define PIXELMUX_LVDS_TX_PHY_PFD_FREQ_MAX 40000000UL
115 #define PIXELMUX_LVDS_TX_PHY_PFD_FREQ_MIN 10000000UL
116 
117 #define PIXELMUX_LVDS_TX_PHY_VCO_FREQ_MAX 4000000000UL
118 #define PIXELMUX_LVDS_TX_PHY_VCO_FREQ_MIN 2000000000UL
119 
120 #define PIXELMUX_LVDS_TX_PHY_DATA_LANE_FREQ_MAX 1000000000UL
121 
122 typedef struct lvds_phy_clk_reg {
123  uint32_t rate_lvds;
124  uint32_t data_rate_div4;
125  uint32_t refclk_div;
126  uint32_t pll_div;
128 
129 typedef struct lvds_phy_clk_param {
131  uint32_t fvco_freq_hz;
132  uint32_t pfd_freq_hz;
134  uint32_t hsclk_freq_hz;
136 
137 typedef enum pixelmux_tx_phy_mode {
142 
143 typedef enum pixelmux_rx_phy_mode {
149 
150 
151 #ifdef __cplusplus
152 extern "C" {
153 #endif
154 
161 
166 
173 
178 
185 
190 
197 
202 
209 
214 
221 
226 
233 
238 
245 
252 
259 
264 
271 
276 
285 hpm_stat_t pixelmux_lvds_phy_calc_pll_cfg(uint32_t pixel_freq_hz, bool is_split, lvds_phy_clk_param_t *param);
286 
293 
300 
307 
314 
321 
328 
329 #ifdef __cplusplus
330 }
331 #endif
332 
336 #endif /* HPM_PIXELMUX_DRV_H */
uint32_t hpm_stat_t
Definition: hpm_common.h:123
pixelmux_mipi_dsi0_select_t
mipi dsi0 pixel data source
Definition: hpm_pixelmux_drv.h:73
void pixelmux_cam1_data_source_disable(void)
disable camera1 pixel data source
Definition: hpm_pixelmux_drv.c:116
void pixelmux_cam1_data_source_enable(pixelmux_cam1_select_t src)
select pixel data source and enable for camera1
Definition: hpm_pixelmux_drv.c:109
void pixelmux_config_rx_phy0_mode(pixelmux_rx_phy_mode_t mode)
config rx phy0 mode
Definition: hpm_pixelmux_drv.c:285
void pixelmux_mipi_dsi0_data_source_enable(pixelmux_mipi_dsi0_select_t src)
select pixel data source and enable for mipi dsi0
Definition: hpm_pixelmux_drv.c:83
pixelmux_gwc1_select_t
gwc1 pixel data source
Definition: hpm_pixelmux_drv.h:33
pixelmux_gwc0_select_t
gwc0 pixel data source
Definition: hpm_pixelmux_drv.h:41
void pixelmux_config_tx_phy0_mode(pixelmux_tx_phy_mode_t mode)
config tx phy0 mode
Definition: hpm_pixelmux_drv.c:220
struct lvds_phy_clk_reg lvds_phy_clk_reg_t
void pixelmux_config_rx_phy1_mode(pixelmux_rx_phy_mode_t mode)
config rx phy1 mode
Definition: hpm_pixelmux_drv.c:292
void pixelmux_rgb_data_source_enable(pixelmux_rgb_select_t src)
select pixel data source and enable for rgb interface
Definition: hpm_pixelmux_drv.c:11
pixelmux_mipi_dsi_data_type_t
mipi dsi pixel data type
Definition: hpm_pixelmux_drv.h:81
void pixelmux_mipi_dsi1_data_source_disable(void)
disable mipi dis1 pixel data source
Definition: hpm_pixelmux_drv.c:78
void pixelmux_mipi_dsi1_data_source_enable(pixelmux_mipi_dsi1_select_t src)
select pixel data source and enable for mipi dsi1
Definition: hpm_pixelmux_drv.c:71
enum pixelmux_rx_phy_mode pixelmux_rx_phy_mode_t
pixelmux_cam1_select_t
cam1 pixel data source
Definition: hpm_pixelmux_drv.h:91
void pixelmux_lvb_di0_data_source_enable(pixelmux_lvb_di0_select_t src)
select pixel data source and enable for lvb di0
Definition: hpm_pixelmux_drv.c:59
void pixelmux_cam0_data_source_enable(pixelmux_cam0_select_t src)
select pixel data source and enable for camera0
Definition: hpm_pixelmux_drv.c:121
struct lvds_phy_clk_param lvds_phy_clk_param_t
void pixelmux_config_lvds_tx_phy1_clk(const lvds_phy_clk_reg_t *clk_reg)
config lvds tx phy1 clock
Definition: hpm_pixelmux_drv.c:260
pixelmux_lvb_di0_select_t
lvb di0 pixel data source
Definition: hpm_pixelmux_drv.h:57
void pixelmux_gwc1_data_source_disable(void)
disable gwc1 pixel data source
Definition: hpm_pixelmux_drv.c:30
pixelmux_tx_phy_mode
Definition: hpm_pixelmux_drv.h:137
void pixelmux_lvb_di1_data_source_disable(void)
disable lvb di1 pixel data source
Definition: hpm_pixelmux_drv.c:54
pixelmux_rx_phy_mode
Definition: hpm_pixelmux_drv.h:143
void pixelmux_mipi_dsi0_set_data_type(pixelmux_mipi_dsi_data_type_t type)
set data type for mipi dsi0
Definition: hpm_pixelmux_drv.c:102
void pixelmux_config_tx_phy1_mode(pixelmux_tx_phy_mode_t mode)
config tx phy1 mode
Definition: hpm_pixelmux_drv.c:227
void pixelmux_gwc0_data_source_disable(void)
disable gwc0 pixel data source
Definition: hpm_pixelmux_drv.c:42
void pixelmux_lvb_di1_data_source_enable(pixelmux_lvb_di1_select_t src)
select pixel data source and enable for lvb di1
Definition: hpm_pixelmux_drv.c:47
void pixelmux_mipi_dsi1_set_data_type(pixelmux_mipi_dsi_data_type_t type)
set data type for mipi dsi1
Definition: hpm_pixelmux_drv.c:95
pixelmux_rgb_select_t
rgb interface pixel data source
Definition: hpm_pixelmux_drv.h:25
pixelmux_lvb_di1_select_t
lvb di1 pixel data source
Definition: hpm_pixelmux_drv.h:49
void pixelmux_cam0_data_source_disable(void)
disable camera0 pixel data source
Definition: hpm_pixelmux_drv.c:128
pixelmux_cam0_select_t
cam0 pixel data source
Definition: hpm_pixelmux_drv.h:104
void pixelmux_gwc1_data_source_enable(pixelmux_gwc1_select_t src)
select pixel data source and enable for gwc1
Definition: hpm_pixelmux_drv.c:23
pixelmux_mipi_dsi1_select_t
mipi dsi1 pixel data source
Definition: hpm_pixelmux_drv.h:65
void pixelmux_rgb_data_source_disable(void)
disable rgb interface pixel data source
Definition: hpm_pixelmux_drv.c:18
void pixelmux_lvb_di0_data_source_disable(void)
disable lvb di0 pixel data source
Definition: hpm_pixelmux_drv.c:66
enum pixelmux_tx_phy_mode pixelmux_tx_phy_mode_t
hpm_stat_t pixelmux_lvds_phy_calc_pll_cfg(uint32_t pixel_freq_hz, bool is_split, lvds_phy_clk_param_t *param)
calculate pll config base pixel frequency
Definition: hpm_pixelmux_drv.c:133
void pixelmux_gwc0_data_source_enable(pixelmux_gwc0_select_t src)
select pixel data source and enable for gwc0
Definition: hpm_pixelmux_drv.c:35
void pixelmux_config_lvds_tx_phy0_clk(const lvds_phy_clk_reg_t *clk_reg)
config lvds tx phy0 clock
Definition: hpm_pixelmux_drv.c:234
void pixelmux_mipi_dsi0_data_source_disable(void)
disable mipi dsi0 pixel data source
Definition: hpm_pixelmux_drv.c:90
@ pixelmux_mipi_dsi0_sel_lcdc1
Definition: hpm_pixelmux_drv.h:75
@ pixelmux_mipi_dsi0_sel_lcdc0
Definition: hpm_pixelmux_drv.h:74
@ pixelmux_gwc1_sel_lcdc0
Definition: hpm_pixelmux_drv.h:34
@ pixelmux_gwc1_sel_lcdc1
Definition: hpm_pixelmux_drv.h:35
@ pixelmux_gwc0_sel_lcdc0
Definition: hpm_pixelmux_drv.h:42
@ pixelmux_gwc0_sel_lcdc1
Definition: hpm_pixelmux_drv.h:43
@ pixelmux_mipi_dsi_data_type_rgb666
Definition: hpm_pixelmux_drv.h:83
@ pixelmux_mipi_dsi_data_type_rgb565
Definition: hpm_pixelmux_drv.h:82
@ pixelmux_mipi_dsi_data_type_rgb666_packed
Definition: hpm_pixelmux_drv.h:84
@ pixelmux_mipi_dsi_data_type_rgb888
Definition: hpm_pixelmux_drv.h:85
@ pixelmux_cam1_sel_lcdc0
Definition: hpm_pixelmux_drv.h:95
@ pixelmux_cam1_sel_mipi_csi0
Definition: hpm_pixelmux_drv.h:93
@ pixelmux_cam1_sel_dvp
Definition: hpm_pixelmux_drv.h:92
@ pixelmux_cam1_sel_mipi_csi1
Definition: hpm_pixelmux_drv.h:94
@ pixelmux_cam1_sel_lcb_do1
Definition: hpm_pixelmux_drv.h:98
@ pixelmux_cam1_sel_lcdc1
Definition: hpm_pixelmux_drv.h:96
@ pixelmux_cam1_sel_lcb_do0
Definition: hpm_pixelmux_drv.h:97
@ pixelmux_lvb_di0_sel_lcdc0
Definition: hpm_pixelmux_drv.h:58
@ pixelmux_lvb_di0_sel_lcdc1
Definition: hpm_pixelmux_drv.h:59
@ pixelmux_tx_phy_mode_lvds
Definition: hpm_pixelmux_drv.h:139
@ pixelmux_tx_phy_mode_gpio
Definition: hpm_pixelmux_drv.h:138
@ pixelmux_tx_phy_mode_mipi
Definition: hpm_pixelmux_drv.h:140
@ pixelmux_rx_phy_mode_lvds_camera
Definition: hpm_pixelmux_drv.h:147
@ pixelmux_rx_phy_mode_gpio
Definition: hpm_pixelmux_drv.h:144
@ pixelmux_rx_phy_mode_lvds
Definition: hpm_pixelmux_drv.h:145
@ pixelmux_rx_phy_mode_mipi
Definition: hpm_pixelmux_drv.h:146
@ pixelmux_rgb_sel_lcdc1
Definition: hpm_pixelmux_drv.h:27
@ pixelmux_rgb_sel_lcdc0
Definition: hpm_pixelmux_drv.h:26
@ pixelmux_lvb_di1_sel_lcdc0
Definition: hpm_pixelmux_drv.h:50
@ pixelmux_lvb_di1_sel_lcdc1
Definition: hpm_pixelmux_drv.h:51
@ pixelmux_cam0_sel_mipi_csi1
Definition: hpm_pixelmux_drv.h:107
@ pixelmux_cam0_sel_lcb_do1
Definition: hpm_pixelmux_drv.h:111
@ pixelmux_cam0_sel_lcdc1
Definition: hpm_pixelmux_drv.h:109
@ pixelmux_cam0_sel_dvp
Definition: hpm_pixelmux_drv.h:105
@ pixelmux_cam0_sel_mipi_csi0
Definition: hpm_pixelmux_drv.h:106
@ pixelmux_cam0_sel_lcb_do0
Definition: hpm_pixelmux_drv.h:110
@ pixelmux_cam0_sel_lcdc0
Definition: hpm_pixelmux_drv.h:108
@ pixelmux_mipi_dsi1_sel_lcdc0
Definition: hpm_pixelmux_drv.h:66
@ pixelmux_mipi_dsi1_sel_lcdc1
Definition: hpm_pixelmux_drv.h:67
Definition: hpm_pixelmux_drv.h:129
uint32_t pfd_freq_hz
Definition: hpm_pixelmux_drv.h:132
lvds_phy_clk_reg_t reg
Definition: hpm_pixelmux_drv.h:130
uint32_t hsclk_freq_hz
Definition: hpm_pixelmux_drv.h:134
uint32_t lane_data_rate_hz
Definition: hpm_pixelmux_drv.h:133
uint32_t fvco_freq_hz
Definition: hpm_pixelmux_drv.h:131
Definition: hpm_pixelmux_drv.h:122
uint32_t data_rate_div4
Definition: hpm_pixelmux_drv.h:124
uint32_t refclk_div
Definition: hpm_pixelmux_drv.h:125
uint32_t pll_div
Definition: hpm_pixelmux_drv.h:126
uint32_t rate_lvds
Definition: hpm_pixelmux_drv.h:123