&hdmi_output {
status = "okay";
+ pinctrl-names = "default";
+ pinctrl-0 = <&rgb_pad_pins>;
ports {
#address-cells = <1>;
};
&mipi_dsi {
- pinctrl-names = "default";
- pinctrl-0 = <&mipitx_pins>;
+ //pinctrl-names = "default";
+ //pinctrl-0 = <&mipitx_pins>;
status = "disabled";
};
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>;
};
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>;
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>;
-build drm need to config:\r
+build drm need to config:\r
# CONFIG_DRM_I2C_ADV7511_CEC is not set\r
CONFIG_DRM_VERISILICON=y\r
-CONFIG_DRM_I2C_ADV7513=y\r
+#CONFIG_DRM_I2C_ADV7513 is not set\r
+CONFIG_STARFIVE_INNO_HDMI=y\r
CONFIG_DRM_LEGACY=y\r
# CONFIG_DRM_VGEM is not set\r
# CONFIG_DRM_VKMS is not set\r
\r
\r
notes:\r
-1、DC8200 rgbpad GPIO 和其他模块存在大规模冲突,需要等evb板子做进一步确认\r
+1、DC8200 rgbpad GPIO 和其他模块存在大规模冲突, 需要等evb板子做进一步确认\r
\r
2、evb板子当前与hdmi冲突的gpio有\r
-i2c0 i2c1 i2c2 i2c3 sdio1 tdm\r
+i2c1 sdio1 tdm\r
调试hdmi的时候建议在jh7100-common.dtsi文件\r
将这些模块的pin的结点进行注释或者将node disabled\r
\r
\r
\r
+===============================================================================================\r
+\r
build drm mipi-dsi need to config:\r
# CONFIG_DRM_I2C_ADV7511_CEC is not set\r
CONFIG_DRM_VERISILICON=y\r
CONFIG_STARFIVE_DSI=y\r
CONFIG_PHY_M31_DPHY_RX0=y\r
#STARFIVE_INNO_HDMI is not set\r
+#CONFIG_DRM_I2C_NXP_TDA998X is not set\r
# CONFIG_DRM_VGEM is not set\r
# CONFIG_DRM_VKMS is not set\r
\r
notes:\r
1.\r
-测试mipi-dsi时,在编译前需要打开的dts节点有:\r
+测试mipi-dsi时,在编译前需要打开的dts节点有:\r
jh7110.dtsi: \r
dc8200, encoder: display-encoder, mipi_dphy, mipi_dsi, mipi_panel\r
\r
\r
2.\r
evb板子当前与mipi-dsi冲突的gpio有:\r
-i2c0, i2c3, hdmi(inno), hdmi_output(rgb), sdio1(mmc1)\r
+sdio1(mmc1)\r
\r
调试mipi-dsi的时候建议在jh7100-common.dtsi文件\r
-将这些模块的pin的结点进行注释或者将node disabled
\ No newline at end of file
+将这些模块的pin的结点进行注释或者将node disabled\r
+\r
+3.\r
+mipi-dsi通路目前和rgb2hdmi通路是互斥的,\r
+不能同时打开。使用某一个时需要关闭另一个\r
+如:\r
+使用mipi-dsi需要关闭\r
+CONFIG_DRM_I2C_NXP_TDA998X\r
+\r
+\r
+===============================================================================================\r
+\r
+\r
+build rgb2hdmi channel need to config:\r
+\r
+CONFIG_DRM=y\r
+CONFIG_DRM_I2C_NXP_TDA998X=y\r
+CONFIG_DRM_VERISILICON=y\r
+CONFIG_STARFIVE_INNO_HDMI=y\r
+# CONFIG_DRM_IMG_NULLDISP is not set\r
+CONFIG_DRM_LEGACY=y\r
+# CONFIG_STARFIVE_DSI is not set\r
+\r
+\r
+notes:\r
+1.\r
+evb板子当前与tda998x-rgb2hdmi通路存在gpio冲突的模块有\r
+pdm0, i2srx_3ch, pwmdac, spi0~spi6, inno_hdmi, tdm, i2c0, can1, ptc, vin_sysctl, pcie0\r
+调试tda998x-rgb2hdmi通路的时候建议在jh7110-common.dtsi文件\r
+将这些模块的pin的结点进行注释或者将node disabled(&hdmi节点比较特殊,详见3)\r
+\r
+2.\r
+mipi-dsi通路目前和rgb2hdmi通路是互斥的\r
+不能同时打开。使用某一个时需要关闭另一个\r
+如:\r
+使用rgb2hdmi需要关闭\r
+CONFIG_STARFIVE_DSI\r
+\r
+3.\r
+关于&hdmi节点\r
+在使用rgb2hdmi时需要将其打开(status = "okay";)\r
+并将其引用的pin(pinctrl-0 = <&inno_hdmi_pins>;) 注释掉\r
+如:\r
+&hdmi {\r
+ status = "okay";//okay //rgb need this, connector/encoder problem\r
+ //pinctrl-names = "default"; //if rgb, comment them\r
+ //pinctrl-0 = <&inno_hdmi_pins>; //if rgb, comment them\r
+\r
+ hdmi_in: port {\r
+ #address-cells = <1>;\r
+ #size-cells = <0>;\r
+ hdmi_in_lcdc: endpoint@0 {\r
+ reg = <0>;\r
+ remote-endpoint = <&dc_out_dpi1>;\r
+ };\r
+ };\r
+};\r
+\r
+4.\r
+测试rgb2hdmi需要打开的dts节点有:\r
+jh7110.dtsi:\r
+hdmi_output, hdmi, dc8200\r
+\r
+jh7110-common.dtsi:\r
+&hdmi_output, &hdmi(详见3), &dc8200, &i2c2\r
+\r
+关闭节点:\r
+jh7100-common.dtsi:\r
+&encoder
\ No newline at end of file
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);
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);
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;
}
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");
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);
/* 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,