Loading arch/arm/boot/dts/qcom/msmcobalt-cdp.dtsi +9 −0 Original line number Diff line number Diff line Loading @@ -331,6 +331,15 @@ &mdss_hdmi_ddc_suspend &mdss_hdmi_cec_suspend>; }; &mdss_dp_ctrl { pinctrl-names = "mdss_dp_active", "mdss_dp_sleep"; pinctrl-0 = <&mdss_dp_aux_active &mdss_dp_usbplug_cc_active>; pinctrl-1 = <&mdss_dp_aux_suspend &mdss_dp_usbplug_cc_suspend>; qcom,aux-en-gpio = <&tlmm 77 0>; qcom,aux-sel-gpio = <&tlmm 78 0>; qcom,usbplug-cc-gpio = <&tlmm 38 0>; }; &pmicobalt_charger { qcom,suspend-input; }; Loading arch/arm/boot/dts/qcom/msmcobalt-mdss.dtsi +81 −0 Original line number Diff line number Diff line Loading @@ -266,6 +266,12 @@ cell-index = <2>; compatible = "qcom,mdss-fb"; }; mdss_fb3: qcom,mdss_fb_dp { cell-index = <3>; compatible = "qcom,mdss-fb"; }; }; mdss_dsi: qcom,mdss_dsi@0 { Loading Loading @@ -435,6 +441,81 @@ qcom,mdss-fb-map = <&mdss_fb1>; }; mdss_dp_ctrl: qcom,dp_ctrl@c990000 { cell-index = <0>; compatible = "qcom,mdss-dp"; qcom,mdss-fb-map = <&mdss_fb3>; gdsc-supply = <&gdsc_mdss>; vdda-1p2-supply = <&pmcobalt_l2>; vdda-0p9-supply = <&pmcobalt_l1>; reg = <0xc990000 0xa84>, <0xc011000 0x910>, <0x1fcb200 0x050>; reg-names = "dp_ctrl", "dp_phy", "tcsr_regs"; clocks = <&clock_mmss clk_mmss_mnoc_ahb_clk>, <&clock_mmss clk_mmss_mdss_ahb_clk>, <&clock_mmss clk_mmss_mdss_axi_clk>, <&clock_mmss clk_mmss_mdss_mdp_clk>, <&clock_mmss clk_mmss_mdss_hdmi_dp_ahb_clk>, <&clock_mmss clk_mmss_mdss_dp_aux_clk>, <&clock_mmss clk_mmss_mdss_dp_link_clk>, <&clock_mmss clk_mmss_mdss_dp_link_intf_clk>, <&clock_mmss clk_mmss_mdss_dp_crypto_clk>, <&clock_mmss clk_mmss_mdss_dp_pixel_clk>; clock-names = "core_mnoc_clk", "core_iface_clk", "core_bus_clk", "core_mdp_core_clk", "core_alt_iface_clk", "core_aux_clk", "ctrl_link_clk", "ctrl_link_iface_clk", "ctrl_crypto_clk", "ctrl_pixel_clk"; qcom,dp-usbpd-detection = <&pmicobalt_pdphy>; qcom,core-supply-entries { #address-cells = <1>; #size-cells = <0>; qcom,core-supply-entry@0 { reg = <0>; qcom,supply-name = "gdsc"; qcom,supply-min-voltage = <0>; qcom,supply-max-voltage = <0>; qcom,supply-enable-load = <0>; qcom,supply-disable-load = <0>; }; }; qcom,ctrl-supply-entries { #address-cells = <1>; #size-cells = <0>; qcom,ctrl-supply-entry@0 { reg = <0>; qcom,supply-name = "vdda-1p2"; qcom,supply-min-voltage = <1200000>; qcom,supply-max-voltage = <1200000>; qcom,supply-enable-load = <12560>; qcom,supply-disable-load = <4>; }; }; qcom,phy-supply-entries { #address-cells = <1>; #size-cells = <0>; qcom,phy-supply-entry@0 { reg = <0>; qcom,supply-name = "vdda-0p9"; qcom,supply-min-voltage = <880000>; qcom,supply-max-voltage = <880000>; qcom,supply-enable-load = <73400>; qcom,supply-disable-load = <32>; }; }; }; mdss_rotator: qcom,mdss_rotator { compatible = "qcom,sde_rotator"; reg = <0x0c900000 0xab100>, Loading arch/arm/boot/dts/qcom/msmcobalt-mtp.dtsi +9 −0 Original line number Diff line number Diff line Loading @@ -221,6 +221,15 @@ &mdss_hdmi_ddc_suspend &mdss_hdmi_cec_suspend>; }; &mdss_dp_ctrl { pinctrl-names = "mdss_dp_active", "mdss_dp_sleep"; pinctrl-0 = <&mdss_dp_aux_active &mdss_dp_usbplug_cc_active>; pinctrl-1 = <&mdss_dp_aux_suspend &mdss_dp_usbplug_cc_suspend>; qcom,aux-en-gpio = <&tlmm 77 0>; qcom,aux-sel-gpio = <&tlmm 78 0>; qcom,usbplug-cc-gpio = <&tlmm 38 0>; }; &mdss_mdp { qcom,mdss-pref-prim-intf = "dsi"; }; Loading drivers/video/fbdev/msm/mdss_dp.c +101 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,41 @@ #define VDDA_UA_ON_LOAD 100000 /* uA units */ #define VDDA_UA_OFF_LOAD 100 /* uA units */ static char edid_buf1[] = { 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x22, 0xf0, 0x52, 0x29, 0x01, 0x01, 0x01, 0x01, 0x16, 0x16, 0x01, 0x03, 0x80, 0x30, 0x1b, 0x78, 0x2e, 0xee, 0x95, 0xa3, 0x54, 0x4c, 0x99, 0x26, 0x0f, 0x50, 0x54, 0xa1, 0x08, 0x00, 0xd1, 0xc0, 0x81, 0xc0, 0xa9, 0xc0, 0xb3, 0x00, 0x95, 0x00, 0x81, 0x40, 0x81, 0x80, 0x01, 0x01, 0x02, 0x3a, 0x80, 0x18, 0x71, 0x38, 0x2d, 0x40, 0x58, 0x2c, 0x45, 0x00, 0xdb, 0x0b, 0x11, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x32, 0x4c, 0x18, 0x5e, 0x11, 0x00, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x48, 0x50, 0x20, 0x5a, 0x52, 0x32, 0x32, 0x34, 0x30, 0x77, 0x0a, 0x20, 0x20, 0x00, 0x00, 0x00, 0xff, 0x00, 0x43, 0x4e, 0x34, 0x32, 0x32, 0x32, 0x30, 0x30, 0x33, 0x46, 0x0a, 0x20, 0x20, 0x01, 0xb1, 0x02, 0x03, 0x17, 0xb1, 0x4c, 0x90, 0x1f, 0x05, 0x14, 0x04, 0x13, 0x03, 0x02, 0x07, 0x06, 0x12, 0x01, 0x65, 0x03, 0x0c, 0x00, 0x10, 0x00, 0x02, 0x3a, 0x80, 0x18, 0x71, 0x38, 0x2d, 0x40, 0x58, 0x2c, 0x45, 0x00, 0xdb, 0x0b, 0x11, 0x00, 0x00, 0x1e, 0x02, 0x3a, 0x80, 0xd0, 0x72, 0x38, 0x2d, 0x40, 0x10, 0x2c, 0x45, 0x80, 0xdb, 0x0b, 0x11, 0x00, 0x00, 0x1e, 0x01, 0x1d, 0x00, 0x72, 0x51, 0xd0, 0x1e, 0x20, 0x6e, 0x28, 0x55, 0x00, 0xdb, 0x0b, 0x11, 0x00, 0x00, 0x1e, 0x01, 0x1d, 0x00, 0xbc, 0x52, 0xd0, 0x1e, 0x20, 0xb8, 0x28, 0x55, 0x40, 0xdb, 0x0b, 0x11, 0x00, 0x00, 0x1e, 0x8c, 0x0a, 0xd0, 0x8a, 0x20, 0xe0, 0x2d, 0x10, 0x10, 0x3e, 0x96, 0x00, 0xdb, 0x0b, 0x11, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b }; static void mdss_dp_put_dt_clk_data(struct device *dev, Loading Loading @@ -1037,6 +1072,41 @@ int mdss_dp_off(struct mdss_panel_data *pdata) return 0; } static int mdss_dp_edid_init(struct mdss_panel_data *pdata) { struct mdss_dp_drv_pdata *dp_drv = NULL; struct hdmi_edid_init_data edid_init_data = {0}; void *edid_data; if (!pdata) { pr_err("Invalid input data\n"); return -EINVAL; } dp_drv = container_of(pdata, struct mdss_dp_drv_pdata, panel_data); dp_drv->max_pclk_khz = DP_MAX_PIXEL_CLK_KHZ; edid_init_data.kobj = dp_drv->kobj; edid_init_data.ds_data = dp_drv->ds_data; edid_init_data.max_pclk_khz = dp_drv->max_pclk_khz; edid_data = hdmi_edid_init(&edid_init_data); if (!edid_data) { DEV_ERR("%s: edid init failed\n", __func__); return -ENODEV; } edid_init_data.buf = edid_init_data.buf; edid_init_data.buf_size = edid_init_data.buf_size; /* Use the existing EDID buffer for 1080p */ memcpy(edid_init_data.buf, edid_buf1, sizeof(edid_buf1)); dp_drv->panel_data.panel_info.edid_data = edid_data; return 0; } static int mdss_dp_host_init(struct mdss_panel_data *pdata) { struct mdss_dp_drv_pdata *dp_drv = NULL; Loading Loading @@ -1076,8 +1146,16 @@ static int mdss_dp_host_init(struct mdss_panel_data *pdata) mdss_dp_get_ctrl_hw_version(&dp_drv->ctrl_io), mdss_dp_get_phy_hw_version(&dp_drv->phy_io)); ret = hdmi_edid_parser(dp_drv->panel_data.panel_info.edid_data); if (ret) { DEV_ERR("%s: edid parse failed\n", __func__); goto edid_parser_error; } return ret; edid_parser_error: mdss_dp_clk_ctrl(dp_drv, DP_CORE_PM, false); clk_error: mdss_dp_regulator_ctrl(dp_drv, false); vreg_error: Loading @@ -1088,8 +1166,19 @@ static int mdss_dp_event_handler(struct mdss_panel_data *pdata, int event, void *arg) { int rc = 0; struct fb_info *fbi; struct mdss_dp_drv_pdata *dp = NULL; if (!pdata) { pr_err("%s: Invalid input data\n", __func__); return -EINVAL; } pr_debug("event=%d\n", event); dp = container_of(pdata, struct mdss_dp_drv_pdata, panel_data); switch (event) { case MDSS_EVENT_UNBLANK: rc = mdss_dp_on(pdata); Loading @@ -1097,6 +1186,18 @@ static int mdss_dp_event_handler(struct mdss_panel_data *pdata, case MDSS_EVENT_PANEL_OFF: rc = mdss_dp_off(pdata); break; case MDSS_EVENT_FB_REGISTERED: fbi = (struct fb_info *)arg; if (!fbi || !fbi->dev) break; dp->kobj = &fbi->dev->kobj; dp->fb_node = fbi->node; mdss_dp_edid_init(pdata); break; default: pr_debug("%s: unhandled event=%d\n", __func__, event); break; } return rc; } Loading drivers/video/fbdev/msm/mdss_dp.h +5 −1 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ #include <linux/usb/usbpd.h> #include "mdss_hdmi_util.h" #include "mdss_hdmi_edid.h" #include "video/msm_hdmi_modes.h" #include "mdss.h" #include "mdss_panel.h" Loading Loading @@ -235,7 +236,7 @@ struct dp_alt_mode { #define DP_LINK_RATE_MAX DP_LINK_RATE_540 #define DP_LINK_RATE_MULTIPLIER 27000000 #define DP_MAX_PIXEL_CLK_KHZ 675000 struct dpcd_cap { char major; char minor; Loading Loading @@ -429,6 +430,9 @@ struct mdss_dp_drv_pdata { spinlock_t event_lock; spinlock_t lock; struct hdmi_util_ds_data ds_data; struct kobject *kobj; u32 max_pclk_khz; int fb_node; }; static inline const char *__mdss_dp_pm_name(enum dp_pm_type module) Loading Loading
arch/arm/boot/dts/qcom/msmcobalt-cdp.dtsi +9 −0 Original line number Diff line number Diff line Loading @@ -331,6 +331,15 @@ &mdss_hdmi_ddc_suspend &mdss_hdmi_cec_suspend>; }; &mdss_dp_ctrl { pinctrl-names = "mdss_dp_active", "mdss_dp_sleep"; pinctrl-0 = <&mdss_dp_aux_active &mdss_dp_usbplug_cc_active>; pinctrl-1 = <&mdss_dp_aux_suspend &mdss_dp_usbplug_cc_suspend>; qcom,aux-en-gpio = <&tlmm 77 0>; qcom,aux-sel-gpio = <&tlmm 78 0>; qcom,usbplug-cc-gpio = <&tlmm 38 0>; }; &pmicobalt_charger { qcom,suspend-input; }; Loading
arch/arm/boot/dts/qcom/msmcobalt-mdss.dtsi +81 −0 Original line number Diff line number Diff line Loading @@ -266,6 +266,12 @@ cell-index = <2>; compatible = "qcom,mdss-fb"; }; mdss_fb3: qcom,mdss_fb_dp { cell-index = <3>; compatible = "qcom,mdss-fb"; }; }; mdss_dsi: qcom,mdss_dsi@0 { Loading Loading @@ -435,6 +441,81 @@ qcom,mdss-fb-map = <&mdss_fb1>; }; mdss_dp_ctrl: qcom,dp_ctrl@c990000 { cell-index = <0>; compatible = "qcom,mdss-dp"; qcom,mdss-fb-map = <&mdss_fb3>; gdsc-supply = <&gdsc_mdss>; vdda-1p2-supply = <&pmcobalt_l2>; vdda-0p9-supply = <&pmcobalt_l1>; reg = <0xc990000 0xa84>, <0xc011000 0x910>, <0x1fcb200 0x050>; reg-names = "dp_ctrl", "dp_phy", "tcsr_regs"; clocks = <&clock_mmss clk_mmss_mnoc_ahb_clk>, <&clock_mmss clk_mmss_mdss_ahb_clk>, <&clock_mmss clk_mmss_mdss_axi_clk>, <&clock_mmss clk_mmss_mdss_mdp_clk>, <&clock_mmss clk_mmss_mdss_hdmi_dp_ahb_clk>, <&clock_mmss clk_mmss_mdss_dp_aux_clk>, <&clock_mmss clk_mmss_mdss_dp_link_clk>, <&clock_mmss clk_mmss_mdss_dp_link_intf_clk>, <&clock_mmss clk_mmss_mdss_dp_crypto_clk>, <&clock_mmss clk_mmss_mdss_dp_pixel_clk>; clock-names = "core_mnoc_clk", "core_iface_clk", "core_bus_clk", "core_mdp_core_clk", "core_alt_iface_clk", "core_aux_clk", "ctrl_link_clk", "ctrl_link_iface_clk", "ctrl_crypto_clk", "ctrl_pixel_clk"; qcom,dp-usbpd-detection = <&pmicobalt_pdphy>; qcom,core-supply-entries { #address-cells = <1>; #size-cells = <0>; qcom,core-supply-entry@0 { reg = <0>; qcom,supply-name = "gdsc"; qcom,supply-min-voltage = <0>; qcom,supply-max-voltage = <0>; qcom,supply-enable-load = <0>; qcom,supply-disable-load = <0>; }; }; qcom,ctrl-supply-entries { #address-cells = <1>; #size-cells = <0>; qcom,ctrl-supply-entry@0 { reg = <0>; qcom,supply-name = "vdda-1p2"; qcom,supply-min-voltage = <1200000>; qcom,supply-max-voltage = <1200000>; qcom,supply-enable-load = <12560>; qcom,supply-disable-load = <4>; }; }; qcom,phy-supply-entries { #address-cells = <1>; #size-cells = <0>; qcom,phy-supply-entry@0 { reg = <0>; qcom,supply-name = "vdda-0p9"; qcom,supply-min-voltage = <880000>; qcom,supply-max-voltage = <880000>; qcom,supply-enable-load = <73400>; qcom,supply-disable-load = <32>; }; }; }; mdss_rotator: qcom,mdss_rotator { compatible = "qcom,sde_rotator"; reg = <0x0c900000 0xab100>, Loading
arch/arm/boot/dts/qcom/msmcobalt-mtp.dtsi +9 −0 Original line number Diff line number Diff line Loading @@ -221,6 +221,15 @@ &mdss_hdmi_ddc_suspend &mdss_hdmi_cec_suspend>; }; &mdss_dp_ctrl { pinctrl-names = "mdss_dp_active", "mdss_dp_sleep"; pinctrl-0 = <&mdss_dp_aux_active &mdss_dp_usbplug_cc_active>; pinctrl-1 = <&mdss_dp_aux_suspend &mdss_dp_usbplug_cc_suspend>; qcom,aux-en-gpio = <&tlmm 77 0>; qcom,aux-sel-gpio = <&tlmm 78 0>; qcom,usbplug-cc-gpio = <&tlmm 38 0>; }; &mdss_mdp { qcom,mdss-pref-prim-intf = "dsi"; }; Loading
drivers/video/fbdev/msm/mdss_dp.c +101 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,41 @@ #define VDDA_UA_ON_LOAD 100000 /* uA units */ #define VDDA_UA_OFF_LOAD 100 /* uA units */ static char edid_buf1[] = { 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x22, 0xf0, 0x52, 0x29, 0x01, 0x01, 0x01, 0x01, 0x16, 0x16, 0x01, 0x03, 0x80, 0x30, 0x1b, 0x78, 0x2e, 0xee, 0x95, 0xa3, 0x54, 0x4c, 0x99, 0x26, 0x0f, 0x50, 0x54, 0xa1, 0x08, 0x00, 0xd1, 0xc0, 0x81, 0xc0, 0xa9, 0xc0, 0xb3, 0x00, 0x95, 0x00, 0x81, 0x40, 0x81, 0x80, 0x01, 0x01, 0x02, 0x3a, 0x80, 0x18, 0x71, 0x38, 0x2d, 0x40, 0x58, 0x2c, 0x45, 0x00, 0xdb, 0x0b, 0x11, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x32, 0x4c, 0x18, 0x5e, 0x11, 0x00, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x48, 0x50, 0x20, 0x5a, 0x52, 0x32, 0x32, 0x34, 0x30, 0x77, 0x0a, 0x20, 0x20, 0x00, 0x00, 0x00, 0xff, 0x00, 0x43, 0x4e, 0x34, 0x32, 0x32, 0x32, 0x30, 0x30, 0x33, 0x46, 0x0a, 0x20, 0x20, 0x01, 0xb1, 0x02, 0x03, 0x17, 0xb1, 0x4c, 0x90, 0x1f, 0x05, 0x14, 0x04, 0x13, 0x03, 0x02, 0x07, 0x06, 0x12, 0x01, 0x65, 0x03, 0x0c, 0x00, 0x10, 0x00, 0x02, 0x3a, 0x80, 0x18, 0x71, 0x38, 0x2d, 0x40, 0x58, 0x2c, 0x45, 0x00, 0xdb, 0x0b, 0x11, 0x00, 0x00, 0x1e, 0x02, 0x3a, 0x80, 0xd0, 0x72, 0x38, 0x2d, 0x40, 0x10, 0x2c, 0x45, 0x80, 0xdb, 0x0b, 0x11, 0x00, 0x00, 0x1e, 0x01, 0x1d, 0x00, 0x72, 0x51, 0xd0, 0x1e, 0x20, 0x6e, 0x28, 0x55, 0x00, 0xdb, 0x0b, 0x11, 0x00, 0x00, 0x1e, 0x01, 0x1d, 0x00, 0xbc, 0x52, 0xd0, 0x1e, 0x20, 0xb8, 0x28, 0x55, 0x40, 0xdb, 0x0b, 0x11, 0x00, 0x00, 0x1e, 0x8c, 0x0a, 0xd0, 0x8a, 0x20, 0xe0, 0x2d, 0x10, 0x10, 0x3e, 0x96, 0x00, 0xdb, 0x0b, 0x11, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b }; static void mdss_dp_put_dt_clk_data(struct device *dev, Loading Loading @@ -1037,6 +1072,41 @@ int mdss_dp_off(struct mdss_panel_data *pdata) return 0; } static int mdss_dp_edid_init(struct mdss_panel_data *pdata) { struct mdss_dp_drv_pdata *dp_drv = NULL; struct hdmi_edid_init_data edid_init_data = {0}; void *edid_data; if (!pdata) { pr_err("Invalid input data\n"); return -EINVAL; } dp_drv = container_of(pdata, struct mdss_dp_drv_pdata, panel_data); dp_drv->max_pclk_khz = DP_MAX_PIXEL_CLK_KHZ; edid_init_data.kobj = dp_drv->kobj; edid_init_data.ds_data = dp_drv->ds_data; edid_init_data.max_pclk_khz = dp_drv->max_pclk_khz; edid_data = hdmi_edid_init(&edid_init_data); if (!edid_data) { DEV_ERR("%s: edid init failed\n", __func__); return -ENODEV; } edid_init_data.buf = edid_init_data.buf; edid_init_data.buf_size = edid_init_data.buf_size; /* Use the existing EDID buffer for 1080p */ memcpy(edid_init_data.buf, edid_buf1, sizeof(edid_buf1)); dp_drv->panel_data.panel_info.edid_data = edid_data; return 0; } static int mdss_dp_host_init(struct mdss_panel_data *pdata) { struct mdss_dp_drv_pdata *dp_drv = NULL; Loading Loading @@ -1076,8 +1146,16 @@ static int mdss_dp_host_init(struct mdss_panel_data *pdata) mdss_dp_get_ctrl_hw_version(&dp_drv->ctrl_io), mdss_dp_get_phy_hw_version(&dp_drv->phy_io)); ret = hdmi_edid_parser(dp_drv->panel_data.panel_info.edid_data); if (ret) { DEV_ERR("%s: edid parse failed\n", __func__); goto edid_parser_error; } return ret; edid_parser_error: mdss_dp_clk_ctrl(dp_drv, DP_CORE_PM, false); clk_error: mdss_dp_regulator_ctrl(dp_drv, false); vreg_error: Loading @@ -1088,8 +1166,19 @@ static int mdss_dp_event_handler(struct mdss_panel_data *pdata, int event, void *arg) { int rc = 0; struct fb_info *fbi; struct mdss_dp_drv_pdata *dp = NULL; if (!pdata) { pr_err("%s: Invalid input data\n", __func__); return -EINVAL; } pr_debug("event=%d\n", event); dp = container_of(pdata, struct mdss_dp_drv_pdata, panel_data); switch (event) { case MDSS_EVENT_UNBLANK: rc = mdss_dp_on(pdata); Loading @@ -1097,6 +1186,18 @@ static int mdss_dp_event_handler(struct mdss_panel_data *pdata, case MDSS_EVENT_PANEL_OFF: rc = mdss_dp_off(pdata); break; case MDSS_EVENT_FB_REGISTERED: fbi = (struct fb_info *)arg; if (!fbi || !fbi->dev) break; dp->kobj = &fbi->dev->kobj; dp->fb_node = fbi->node; mdss_dp_edid_init(pdata); break; default: pr_debug("%s: unhandled event=%d\n", __func__, event); break; } return rc; } Loading
drivers/video/fbdev/msm/mdss_dp.h +5 −1 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ #include <linux/usb/usbpd.h> #include "mdss_hdmi_util.h" #include "mdss_hdmi_edid.h" #include "video/msm_hdmi_modes.h" #include "mdss.h" #include "mdss_panel.h" Loading Loading @@ -235,7 +236,7 @@ struct dp_alt_mode { #define DP_LINK_RATE_MAX DP_LINK_RATE_540 #define DP_LINK_RATE_MULTIPLIER 27000000 #define DP_MAX_PIXEL_CLK_KHZ 675000 struct dpcd_cap { char major; char minor; Loading Loading @@ -429,6 +430,9 @@ struct mdss_dp_drv_pdata { spinlock_t event_lock; spinlock_t lock; struct hdmi_util_ds_data ds_data; struct kobject *kobj; u32 max_pclk_khz; int fb_node; }; static inline const char *__mdss_dp_pm_name(enum dp_pm_type module) Loading