mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-03-16 12:14:06 +00:00
Merge branch 'CR_1210_evb_drm_rgb2hdmi_shengyang.chen' into 'jh7110-5.15.y-devel'
riscv:linux:driver:drm:rgb2hdmi See merge request sdk/linux!112
This commit is contained in:
commit
70a6a66c7e
6 changed files with 126 additions and 17 deletions
|
@ -666,6 +666,8 @@
|
|||
|
||||
&hdmi_output {
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&rgb_pad_pins>;
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
|
@ -712,8 +714,8 @@
|
|||
};
|
||||
|
||||
&mipi_dsi {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&mipitx_pins>;
|
||||
//pinctrl-names = "default";
|
||||
//pinctrl-0 = <&mipitx_pins>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
|
|
@ -258,8 +258,8 @@
|
|||
|
||||
i2c3_pins: i2c3-pins {
|
||||
i2c3-pins-scl {
|
||||
sf,pins = <PAD_GPIO38>;
|
||||
sf,pinmux = <PAD_GPIO38_FUNC_SEL 0>;
|
||||
sf,pins = <PAD_GPIO27>;
|
||||
sf,pinmux = <PAD_GPIO27_FUNC_SEL 0>;
|
||||
sf,pin-ioconfig = <IO(GPIO_IE(1)|(GPIO_PU(1)))>;
|
||||
sf,pin-gpio-dout = <GPO_LOW>;
|
||||
sf,pin-gpio-doen = <OEN_I2C3_IC_CLK_OE>;
|
||||
|
@ -267,8 +267,8 @@
|
|||
};
|
||||
|
||||
i2c3-pins-sda {
|
||||
sf,pins = <PAD_GPIO39>;
|
||||
sf,pinmux = <PAD_GPIO39_FUNC_SEL 0>;
|
||||
sf,pins = <PAD_GPIO26>;
|
||||
sf,pinmux = <PAD_GPIO26_FUNC_SEL 0>;
|
||||
sf,pin-ioconfig = <IO(GPIO_IE(1)|(GPIO_PU(1)))>;
|
||||
sf,pin-gpio-dout = <GPO_LOW>;
|
||||
sf,pin-gpio-doen = <OEN_I2C3_IC_DATA_OE>;
|
||||
|
@ -930,7 +930,7 @@
|
|||
rgb-0-pins {
|
||||
sf,pins = <PAD_GPIO36>;
|
||||
sf,pinmux = <PAD_GPIO36_FUNC_SEL 1>;
|
||||
sf,pin-ioconfig = <IO(GPIO_IE(0))>;
|
||||
sf,pin-ioconfig = <IO(GPIO_IE(0)|GPIO_SLEW(1)|GPIO_DS(3))>;
|
||||
};
|
||||
rgb-1-pins {
|
||||
sf,pins = <PAD_GPIO37>;
|
||||
|
|
|
@ -1,22 +1,25 @@
|
|||
build drm need to config:
|
||||
build drm need to config:
|
||||
# CONFIG_DRM_I2C_ADV7511_CEC is not set
|
||||
CONFIG_DRM_VERISILICON=y
|
||||
CONFIG_DRM_I2C_ADV7513=y
|
||||
#CONFIG_DRM_I2C_ADV7513 is not set
|
||||
CONFIG_STARFIVE_INNO_HDMI=y
|
||||
CONFIG_DRM_LEGACY=y
|
||||
# CONFIG_DRM_VGEM is not set
|
||||
# CONFIG_DRM_VKMS is not set
|
||||
|
||||
|
||||
notes:
|
||||
1、DC8200 rgbpad GPIO 和其他模块存在大规模冲突,需要等evb板子做进一步确认
|
||||
1、DC8200 rgbpad GPIO 和其他模块存在大规模冲突, 需要等evb板子做进一步确认
|
||||
|
||||
2、evb板子当前与hdmi冲突的gpio有
|
||||
i2c0 i2c1 i2c2 i2c3 sdio1 tdm
|
||||
i2c1 sdio1 tdm
|
||||
调试hdmi的时候建议在jh7100-common.dtsi文件
|
||||
将这些模块的pin的结点进行注释或者将node disabled
|
||||
|
||||
|
||||
|
||||
===============================================================================================
|
||||
|
||||
build drm mipi-dsi need to config:
|
||||
# CONFIG_DRM_I2C_ADV7511_CEC is not set
|
||||
CONFIG_DRM_VERISILICON=y
|
||||
|
@ -25,12 +28,13 @@ CONFIG_DRM_LEGACY=y
|
|||
CONFIG_STARFIVE_DSI=y
|
||||
CONFIG_PHY_M31_DPHY_RX0=y
|
||||
#STARFIVE_INNO_HDMI is not set
|
||||
#CONFIG_DRM_I2C_NXP_TDA998X is not set
|
||||
# CONFIG_DRM_VGEM is not set
|
||||
# CONFIG_DRM_VKMS is not set
|
||||
|
||||
notes:
|
||||
1.
|
||||
测试mipi-dsi时,在编译前需要打开的dts节点有:
|
||||
测试mipi-dsi时,在编译前需要打开的dts节点有:
|
||||
jh7110.dtsi:
|
||||
dc8200, encoder: display-encoder, mipi_dphy, mipi_dsi, mipi_panel
|
||||
|
||||
|
@ -40,7 +44,75 @@ jh7100-common.dtsi:
|
|||
|
||||
2.
|
||||
evb板子当前与mipi-dsi冲突的gpio有:
|
||||
i2c0, i2c3, hdmi(inno), hdmi_output(rgb), sdio1(mmc1)
|
||||
sdio1(mmc1)
|
||||
|
||||
调试mipi-dsi的时候建议在jh7100-common.dtsi文件
|
||||
将这些模块的pin的结点进行注释或者将node disabled
|
||||
将这些模块的pin的结点进行注释或者将node disabled
|
||||
|
||||
3.
|
||||
mipi-dsi通路目前和rgb2hdmi通路是互斥的,
|
||||
不能同时打开。使用某一个时需要关闭另一个
|
||||
如:
|
||||
使用mipi-dsi需要关闭
|
||||
CONFIG_DRM_I2C_NXP_TDA998X
|
||||
|
||||
|
||||
===============================================================================================
|
||||
|
||||
|
||||
build rgb2hdmi channel need to config:
|
||||
|
||||
CONFIG_DRM=y
|
||||
CONFIG_DRM_I2C_NXP_TDA998X=y
|
||||
CONFIG_DRM_VERISILICON=y
|
||||
CONFIG_STARFIVE_INNO_HDMI=y
|
||||
# CONFIG_DRM_IMG_NULLDISP is not set
|
||||
CONFIG_DRM_LEGACY=y
|
||||
# CONFIG_STARFIVE_DSI is not set
|
||||
|
||||
|
||||
notes:
|
||||
1.
|
||||
evb板子当前与tda998x-rgb2hdmi通路存在gpio冲突的模块有
|
||||
pdm0, i2srx_3ch, pwmdac, spi0~spi6, inno_hdmi, tdm, i2c0, can1, ptc, vin_sysctl, pcie0
|
||||
调试tda998x-rgb2hdmi通路的时候建议在jh7110-common.dtsi文件
|
||||
将这些模块的pin的结点进行注释或者将node disabled(&hdmi节点比较特殊,详见3)
|
||||
|
||||
2.
|
||||
mipi-dsi通路目前和rgb2hdmi通路是互斥的
|
||||
不能同时打开。使用某一个时需要关闭另一个
|
||||
如:
|
||||
使用rgb2hdmi需要关闭
|
||||
CONFIG_STARFIVE_DSI
|
||||
|
||||
3.
|
||||
关于&hdmi节点
|
||||
在使用rgb2hdmi时需要将其打开(status = "okay";)
|
||||
并将其引用的pin(pinctrl-0 = <&inno_hdmi_pins>;) 注释掉
|
||||
如:
|
||||
&hdmi {
|
||||
status = "okay";//okay //rgb need this, connector/encoder problem
|
||||
//pinctrl-names = "default"; //if rgb, comment them
|
||||
//pinctrl-0 = <&inno_hdmi_pins>; //if rgb, comment them
|
||||
|
||||
hdmi_in: port {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
hdmi_in_lcdc: endpoint@0 {
|
||||
reg = <0>;
|
||||
remote-endpoint = <&dc_out_dpi1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
4.
|
||||
测试rgb2hdmi需要打开的dts节点有:
|
||||
jh7110.dtsi:
|
||||
hdmi_output, hdmi, dc8200
|
||||
|
||||
jh7110-common.dtsi:
|
||||
&hdmi_output, &hdmi(详见3), &dc8200, &i2c2
|
||||
|
||||
关闭节点:
|
||||
jh7100-common.dtsi:
|
||||
&encoder
|
|
@ -1153,7 +1153,9 @@ static int inno_hdmi_bind(struct device *dev, struct device *master,
|
|||
goto err_disable_clk;
|
||||
}
|
||||
//inno_hdmi_set_pinmux();//20220601 disable for testing dts pinctrl setting
|
||||
//inno_hdmi_init(hdmi);
|
||||
#ifdef CONFIG_DRM_I2C_NXP_TDA998X
|
||||
inno_hdmi_init(hdmi);
|
||||
#endif
|
||||
//inno_hdmi_get_edid(hdmi,51200000, data);//20220525
|
||||
inno_hdmi_reset(hdmi);
|
||||
|
||||
|
|
|
@ -805,6 +805,11 @@ static int dc_vout_clk_rst_init(struct device *dev, struct vs_dc *dc)
|
|||
|
||||
int sys_vout_mux_config(void)
|
||||
{
|
||||
#ifdef CONFIG_DRM_I2C_NXP_TDA998X//tda998x-rgb2hdmi
|
||||
SET_U0_LCD_DATA_MAPPING_DPI_DP_SEL(0);//DC8200_INTERFACE_DPI
|
||||
SET_U0_LCD_DATA_MAPPING_DP_RGB_FMT(0);//0-RGB888
|
||||
SET_U0_DISPLAY_PANEL_MUX_PANEL_SEL(0);//panel 0
|
||||
#else
|
||||
if(1){
|
||||
SET_U0_HDMI_DATA_MAPPING_DPI_DP_SEL(0);
|
||||
SET_U0_HDMI_DATA_MAPPING_DPI_BIT_DEPTH(0);
|
||||
|
@ -813,13 +818,20 @@ int sys_vout_mux_config(void)
|
|||
SET_U2_DISPLAY_PANEL_MUX_PANEL_SEL(0);
|
||||
|
||||
}
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sys_dispctrl_clk(void)
|
||||
{
|
||||
_SWITCH_CLOCK_CLK_U0_DC8200_CLK_PIX0_SOURCE_CLK_HDMITX0_PIXELCLK_;
|
||||
//_SWITCH_CLOCK_CLK_U0_DC8200_CLK_PIX0_SOURCE_CLK_DC8200_PIX0_;
|
||||
#ifdef CONFIG_DRM_I2C_NXP_TDA998X//tda998x-rgb2hdmi
|
||||
_SWITCH_CLOCK_CLK_U0_DC8200_CLK_PIX1_SOURCE_CLK_HDMITX0_PIXELCLK_;
|
||||
_SWITCH_CLOCK_CLK_U0_DC8200_CLK_PIX0_SOURCE_CLK_HDMITX0_PIXELCLK_;
|
||||
//_ENABLE_CLOCK_CLK_DOM_VOUT_TOP_LCD_CLK_;//disabled standard
|
||||
#else
|
||||
_SWITCH_CLOCK_CLK_U0_DC8200_CLK_PIX0_SOURCE_CLK_HDMITX0_PIXELCLK_;
|
||||
//_SWITCH_CLOCK_CLK_U0_DC8200_CLK_PIX0_SOURCE_CLK_DC8200_PIX0_;
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -891,6 +903,7 @@ static int dc_init(struct device *dev)
|
|||
return ret;
|
||||
}
|
||||
#ifdef CONFIG_STARFIVE_DSI
|
||||
dev_info(dev, "dc mipi channel\n");
|
||||
dc->vout_src = devm_clk_get(dev, "vout_src");
|
||||
if (IS_ERR(dc->vout_src)){
|
||||
dev_err(dev,"failed to get dc->vout_src\n");
|
||||
|
@ -907,6 +920,23 @@ static int dc_init(struct device *dev)
|
|||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_DRM_I2C_NXP_TDA998X
|
||||
_ENABLE_CLOCK_CLK_DOM_VOUT_TOP_LCD_CLK_;
|
||||
/*
|
||||
dev_info(dev, "dc rgb2hdmi channel\n");
|
||||
dc->vout_top_lcd = devm_clk_get(dev, "vout_top_lcd");
|
||||
if (IS_ERR(dc->vout_top_lcd)){
|
||||
dev_err(dev,"failed to get dc->vout_top_lcd\n");
|
||||
return PTR_ERR(dc->vout_top_lcd);
|
||||
}
|
||||
ret = clk_prepare_enable(dc->vout_top_lcd);
|
||||
if (ret) {
|
||||
dev_err(dev, "failed to prepare/enable vout_top_lcd\n");
|
||||
return ret;
|
||||
}
|
||||
*/
|
||||
#endif
|
||||
printk("====> %s, %d.\n", __func__, __LINE__);
|
||||
|
||||
ret = dc_hw_init(&dc->hw);
|
||||
|
|
|
@ -314,6 +314,9 @@ static struct platform_driver *drm_sub_drivers[] = {
|
|||
/* encoder */
|
||||
//&simple_encoder_driver,
|
||||
//&starfive_encoder_driver,
|
||||
#ifdef CONFIG_DRM_I2C_NXP_TDA998X
|
||||
&simple_encoder_driver,
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_VERISILICON_VIRTUAL_DISPLAY
|
||||
&virtual_display_platform_driver,
|
||||
|
|
Loading…
Add table
Reference in a new issue