Loading arch/arm64/boot/dts/qcom/dsi-panel-sharp-dsc-4k-cmd.dtsi +5 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,11 @@ qcom,dcs-cmd-by-left; qcom,mdss-dsi-tx-eot-append; qcom,adjust-timer-wakeup-ms = <1>; qcom,mdss-dsi-panel-hdr-enabled; qcom,mdss-dsi-panel-hdr-color-primaries = <14500 15500 32000 17000 15500 30000 8000 3000>; qcom,mdss-dsi-panel-peak-brightness = <4200000>; qcom,mdss-dsi-panel-blackness-level = <3230>; qcom,mdss-dsi-display-timings { timing@0{ Loading arch/arm64/boot/dts/qcom/dsi-panel-sharp-dsc-4k-video.dtsi +5 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,11 @@ qcom,mdss-dsi-tx-eot-append; qcom,adjust-timer-wakeup-ms = <1>; qcom,mdss-dsi-panel-hdr-enabled; qcom,mdss-dsi-panel-hdr-color-primaries = <14500 15500 32000 17000 15500 30000 8000 3000>; qcom,mdss-dsi-panel-peak-brightness = <4200000>; qcom,mdss-dsi-panel-blackness-level = <3230>; qcom,mdss-dsi-display-timings { timing@0{ Loading drivers/gpu/drm/msm/dp/dp_usbpd.c +39 −11 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ #include <linux/slab.h> #include <linux/device.h> #include <linux/delay.h> #include "dp_usbpd.h" Loading Loading @@ -314,11 +315,44 @@ static int dp_usbpd_validate_callback(u8 cmd, return ret; } static int dp_usbpd_get_ss_lanes(struct dp_usbpd_private *pd) { int rc = 0; int timeout = 250; /* * By default, USB reserves two lanes for Super Speed. * Which means DP has remaining two lanes to operate on. * If multi-function is not supported, request USB to * release the Super Speed lanes so that DP can use * all four lanes in case DPCD indicates support for * four lanes. */ if (!pd->dp_usbpd.multi_func) { while (timeout) { rc = pd->svid_handler.request_usb_ss_lane( pd->pd, &pd->svid_handler); if (rc != -EBUSY) break; pr_warn("USB busy, retry\n"); /* wait for hw recommended delay for usb */ msleep(20); timeout--; } } return rc; } static void dp_usbpd_response_cb(struct usbpd_svid_handler *hdlr, u8 cmd, enum usbpd_svdm_cmd_type cmd_type, const u32 *vdos, int num_vdos) { struct dp_usbpd_private *pd; int rc = 0; pd = container_of(hdlr, struct dp_usbpd_private, svid_handler); Loading Loading @@ -380,17 +414,11 @@ static void dp_usbpd_response_cb(struct usbpd_svid_handler *hdlr, u8 cmd, pd->dp_usbpd.orientation = usbpd_get_plug_orientation(pd->pd); /* * By default, USB reserves two lanes for Super Speed. * Which means DP has remaining two lanes to operate on. * If multi-function is not supported, request USB to * release the Super Speed lanes so that DP can use * all four lanes in case DPCD indicates support for * four lanes. */ if (!pd->dp_usbpd.multi_func) pd->svid_handler.request_usb_ss_lane(pd->pd, &pd->svid_handler); rc = dp_usbpd_get_ss_lanes(pd); if (rc) { pr_err("failed to get SuperSpeed lanes\n"); break; } if (pd->dp_cb && pd->dp_cb->configure) pd->dp_cb->configure(pd->dev); Loading drivers/gpu/drm/msm/dsi-staging/dsi_display.c +7 −1 Original line number Diff line number Diff line Loading @@ -1595,6 +1595,7 @@ static void dsi_display_parse_cmdline_topology(struct dsi_display *display, { char *boot_str = NULL; char *str = NULL; char *sw_te = NULL; unsigned long value; if (display_type >= MAX_DSI_ACTIVE_DISPLAY) { Loading @@ -1607,6 +1608,10 @@ static void dsi_display_parse_cmdline_topology(struct dsi_display *display, else boot_str = dsi_display_secondary; sw_te = strnstr(boot_str, ":swte", strlen(boot_str)); if (sw_te) display->sw_te_using_wd = true; str = strnstr(boot_str, ":config", strlen(boot_str)); if (!str) return; Loading Loading @@ -4202,7 +4207,8 @@ int dsi_display_get_info(struct drm_connector *connector, case DSI_OP_CMD_MODE: info->capabilities |= MSM_DISPLAY_CAP_CMD_MODE; info->is_te_using_watchdog_timer = display->panel->te_using_watchdog_timer; display->panel->te_using_watchdog_timer | display->sw_te_using_wd; break; default: pr_err("unknwown dsi panel mode %d\n", Loading drivers/gpu/drm/msm/dsi-staging/dsi_display.h +2 −0 Original line number Diff line number Diff line Loading @@ -132,6 +132,7 @@ struct dsi_display_clk_info { * @list: List pointer. * @is_active: Is display active. * @is_cont_splash_enabled: Is continuous splash enabled * @sw_te_using_wd: Is software te enabled * @display_lock: Mutex for dsi_display interface. * @ctrl_count: Number of DSI interfaces required by panel. * @ctrl: Controller information for DSI display. Loading Loading @@ -172,6 +173,7 @@ struct dsi_display { const char *display_type; struct list_head list; bool is_cont_splash_enabled; bool sw_te_using_wd; struct mutex display_lock; u32 ctrl_count; Loading Loading
arch/arm64/boot/dts/qcom/dsi-panel-sharp-dsc-4k-cmd.dtsi +5 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,11 @@ qcom,dcs-cmd-by-left; qcom,mdss-dsi-tx-eot-append; qcom,adjust-timer-wakeup-ms = <1>; qcom,mdss-dsi-panel-hdr-enabled; qcom,mdss-dsi-panel-hdr-color-primaries = <14500 15500 32000 17000 15500 30000 8000 3000>; qcom,mdss-dsi-panel-peak-brightness = <4200000>; qcom,mdss-dsi-panel-blackness-level = <3230>; qcom,mdss-dsi-display-timings { timing@0{ Loading
arch/arm64/boot/dts/qcom/dsi-panel-sharp-dsc-4k-video.dtsi +5 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,11 @@ qcom,mdss-dsi-tx-eot-append; qcom,adjust-timer-wakeup-ms = <1>; qcom,mdss-dsi-panel-hdr-enabled; qcom,mdss-dsi-panel-hdr-color-primaries = <14500 15500 32000 17000 15500 30000 8000 3000>; qcom,mdss-dsi-panel-peak-brightness = <4200000>; qcom,mdss-dsi-panel-blackness-level = <3230>; qcom,mdss-dsi-display-timings { timing@0{ Loading
drivers/gpu/drm/msm/dp/dp_usbpd.c +39 −11 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ #include <linux/slab.h> #include <linux/device.h> #include <linux/delay.h> #include "dp_usbpd.h" Loading Loading @@ -314,11 +315,44 @@ static int dp_usbpd_validate_callback(u8 cmd, return ret; } static int dp_usbpd_get_ss_lanes(struct dp_usbpd_private *pd) { int rc = 0; int timeout = 250; /* * By default, USB reserves two lanes for Super Speed. * Which means DP has remaining two lanes to operate on. * If multi-function is not supported, request USB to * release the Super Speed lanes so that DP can use * all four lanes in case DPCD indicates support for * four lanes. */ if (!pd->dp_usbpd.multi_func) { while (timeout) { rc = pd->svid_handler.request_usb_ss_lane( pd->pd, &pd->svid_handler); if (rc != -EBUSY) break; pr_warn("USB busy, retry\n"); /* wait for hw recommended delay for usb */ msleep(20); timeout--; } } return rc; } static void dp_usbpd_response_cb(struct usbpd_svid_handler *hdlr, u8 cmd, enum usbpd_svdm_cmd_type cmd_type, const u32 *vdos, int num_vdos) { struct dp_usbpd_private *pd; int rc = 0; pd = container_of(hdlr, struct dp_usbpd_private, svid_handler); Loading Loading @@ -380,17 +414,11 @@ static void dp_usbpd_response_cb(struct usbpd_svid_handler *hdlr, u8 cmd, pd->dp_usbpd.orientation = usbpd_get_plug_orientation(pd->pd); /* * By default, USB reserves two lanes for Super Speed. * Which means DP has remaining two lanes to operate on. * If multi-function is not supported, request USB to * release the Super Speed lanes so that DP can use * all four lanes in case DPCD indicates support for * four lanes. */ if (!pd->dp_usbpd.multi_func) pd->svid_handler.request_usb_ss_lane(pd->pd, &pd->svid_handler); rc = dp_usbpd_get_ss_lanes(pd); if (rc) { pr_err("failed to get SuperSpeed lanes\n"); break; } if (pd->dp_cb && pd->dp_cb->configure) pd->dp_cb->configure(pd->dev); Loading
drivers/gpu/drm/msm/dsi-staging/dsi_display.c +7 −1 Original line number Diff line number Diff line Loading @@ -1595,6 +1595,7 @@ static void dsi_display_parse_cmdline_topology(struct dsi_display *display, { char *boot_str = NULL; char *str = NULL; char *sw_te = NULL; unsigned long value; if (display_type >= MAX_DSI_ACTIVE_DISPLAY) { Loading @@ -1607,6 +1608,10 @@ static void dsi_display_parse_cmdline_topology(struct dsi_display *display, else boot_str = dsi_display_secondary; sw_te = strnstr(boot_str, ":swte", strlen(boot_str)); if (sw_te) display->sw_te_using_wd = true; str = strnstr(boot_str, ":config", strlen(boot_str)); if (!str) return; Loading Loading @@ -4202,7 +4207,8 @@ int dsi_display_get_info(struct drm_connector *connector, case DSI_OP_CMD_MODE: info->capabilities |= MSM_DISPLAY_CAP_CMD_MODE; info->is_te_using_watchdog_timer = display->panel->te_using_watchdog_timer; display->panel->te_using_watchdog_timer | display->sw_te_using_wd; break; default: pr_err("unknwown dsi panel mode %d\n", Loading
drivers/gpu/drm/msm/dsi-staging/dsi_display.h +2 −0 Original line number Diff line number Diff line Loading @@ -132,6 +132,7 @@ struct dsi_display_clk_info { * @list: List pointer. * @is_active: Is display active. * @is_cont_splash_enabled: Is continuous splash enabled * @sw_te_using_wd: Is software te enabled * @display_lock: Mutex for dsi_display interface. * @ctrl_count: Number of DSI interfaces required by panel. * @ctrl: Controller information for DSI display. Loading Loading @@ -172,6 +173,7 @@ struct dsi_display { const char *display_type; struct list_head list; bool is_cont_splash_enabled; bool sw_te_using_wd; struct mutex display_lock; u32 ctrl_count; Loading