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 {
90 
94 typedef enum {
103 
104 #define PIXELMUX_LVDS_TX_PHY_PFD_FREQ_MAX 40000000UL
105 #define PIXELMUX_LVDS_TX_PHY_PFD_FREQ_MIN 10000000UL
106 
107 #define PIXELMUX_LVDS_TX_PHY_VCO_FREQ_MAX 4000000000UL
108 #define PIXELMUX_LVDS_TX_PHY_VCO_FREQ_MIN 2000000000UL
109 
110 #define PIXELMUX_LVDS_TX_PHY_DATA_LANE_FREQ_MAX 1000000000UL
111 
112 typedef struct lvds_phy_clk_reg {
113  uint32_t rate_lvds;
114  uint32_t data_rate_div4;
115  uint32_t refclk_div;
116  uint32_t pll_div;
118 
119 typedef struct lvds_phy_clk_param {
121  uint32_t fvco_freq_hz;
122  uint32_t pfd_freq_hz;
124  uint32_t hsclk_freq_hz;
126 
127 typedef enum pixelmux_tx_phy_mode {
132 
133 typedef enum pixelmux_rx_phy_mode {
139 
140 
141 #ifdef __cplusplus
142 extern "C" {
143 #endif
144 
151 
156 
163 
168 
175 
180 
187 
192 
199 
204 
211 
216 
223 
228 
235 
240 
247 
252 
261 hpm_stat_t pixelmux_lvds_phy_calc_pll_cfg(uint32_t pixel_freq_hz, bool is_split, lvds_phy_clk_param_t *param);
262 
269 
276 
283 
290 
297 
304 
305 #ifdef __cplusplus
306 }
307 #endif
308 
312 #endif /* HPM_PIXELMUX_DRV_H */
uint32_t hpm_stat_t
Definition: hpm_common.h:119
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:102
void pixelmux_cam1_data_source_enable(pixelmux_cam1_select_t src)
select pixel data source and enable for camera1
Definition: hpm_pixelmux_drv.c:95
void pixelmux_config_rx_phy0_mode(pixelmux_rx_phy_mode_t mode)
config rx phy0 mode
Definition: hpm_pixelmux_drv.c:271
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:206
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:278
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
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:81
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:107
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:246
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:127
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:133
void pixelmux_config_tx_phy1_mode(pixelmux_tx_phy_mode_t mode)
config tx phy1 mode
Definition: hpm_pixelmux_drv.c:213
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
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:114
pixelmux_cam0_select_t
cam0 pixel data source
Definition: hpm_pixelmux_drv.h:94
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:119
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:220
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_cam1_sel_lcdc0
Definition: hpm_pixelmux_drv.h:85
@ pixelmux_cam1_sel_mipi_csi0
Definition: hpm_pixelmux_drv.h:83
@ pixelmux_cam1_sel_dvp
Definition: hpm_pixelmux_drv.h:82
@ pixelmux_cam1_sel_mipi_csi1
Definition: hpm_pixelmux_drv.h:84
@ pixelmux_cam1_sel_lcb_do1
Definition: hpm_pixelmux_drv.h:88
@ pixelmux_cam1_sel_lcdc1
Definition: hpm_pixelmux_drv.h:86
@ pixelmux_cam1_sel_lcb_do0
Definition: hpm_pixelmux_drv.h:87
@ 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:129
@ pixelmux_tx_phy_mode_gpio
Definition: hpm_pixelmux_drv.h:128
@ pixelmux_tx_phy_mode_mipi
Definition: hpm_pixelmux_drv.h:130
@ pixelmux_rx_phy_mode_lvds_camera
Definition: hpm_pixelmux_drv.h:137
@ pixelmux_rx_phy_mode_gpio
Definition: hpm_pixelmux_drv.h:134
@ pixelmux_rx_phy_mode_lvds
Definition: hpm_pixelmux_drv.h:135
@ pixelmux_rx_phy_mode_mipi
Definition: hpm_pixelmux_drv.h:136
@ 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:97
@ pixelmux_cam0_sel_lcb_do1
Definition: hpm_pixelmux_drv.h:101
@ pixelmux_cam0_sel_lcdc1
Definition: hpm_pixelmux_drv.h:99
@ pixelmux_cam0_sel_dvp
Definition: hpm_pixelmux_drv.h:95
@ pixelmux_cam0_sel_mipi_csi0
Definition: hpm_pixelmux_drv.h:96
@ pixelmux_cam0_sel_lcb_do0
Definition: hpm_pixelmux_drv.h:100
@ pixelmux_cam0_sel_lcdc0
Definition: hpm_pixelmux_drv.h:98
@ 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:119
uint32_t pfd_freq_hz
Definition: hpm_pixelmux_drv.h:122
lvds_phy_clk_reg_t reg
Definition: hpm_pixelmux_drv.h:120
uint32_t hsclk_freq_hz
Definition: hpm_pixelmux_drv.h:124
uint32_t lane_data_rate_hz
Definition: hpm_pixelmux_drv.h:123
uint32_t fvco_freq_hz
Definition: hpm_pixelmux_drv.h:121
Definition: hpm_pixelmux_drv.h:112
uint32_t data_rate_div4
Definition: hpm_pixelmux_drv.h:114
uint32_t refclk_div
Definition: hpm_pixelmux_drv.h:115
uint32_t pll_div
Definition: hpm_pixelmux_drv.h:116
uint32_t rate_lvds
Definition: hpm_pixelmux_drv.h:113