Loading Documentation/devicetree/bindings/display/msm/sde.txt +2 −0 Original line number Diff line number Diff line Loading @@ -443,6 +443,8 @@ Optional properties: ordering block 0: lower priority pipe has to be on the left for a given pair of pipes. 1: priority have to be explicitly configured for a given pair of pipes. - qcom,sde-num-mnoc-ports: A u32 property to indicate the number of mnoc ports - qcom,sde-axi-bus-width: A u32 property to indicate the axi bus width value in bytes Bus Scaling Subnodes: - qcom,sde-reg-bus: Property to provide Bus scaling for register access for Loading arch/arm64/boot/dts/qcom/sm8150-sde.dtsi +1 −2 Original line number Diff line number Diff line /* Copyright (c) 2016-2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2016-2019, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -394,7 +394,6 @@ qcom,mdss-default-ot-wr-limit = <32>; qcom,mdss-sbuf-headroom = <20>; qcom,mdss-rot-linewidth = <8192>; cache-slice-names = "rotator"; cache-slices = <&llcc 4>; Loading arch/arm64/boot/dts/qcom/trinket-sde.dtsi +2 −0 Original line number Diff line number Diff line Loading @@ -185,6 +185,8 @@ qcom,sde-reg-dma-trigger-off = <0x119c>; qcom,sde-secure-sid-mask = <0x0000401>; qcom,sde-num-mnoc-ports = <1>; qcom,sde-axi-bus-width = <16>; qcom,sde-sspp-vig-blocks { qcom,sde-vig-csc-off = <0x1a00>; Loading drivers/gpu/drm/bridge/analogix-anx7625.c +49 −3 Original line number Diff line number Diff line /* Copyright (c) 2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2018-2019, The Linux Foundation. All rights reserved. * * Copyright(c) 2016, Analogix Semiconductor. All rights reserved. * Loading Loading @@ -1253,10 +1253,14 @@ static void anx7625_bridge_disable(struct drm_bridge *bridge) mutex_lock(&anx7625->lock); anx7625_stop(anx7625); anx7625->enabled = false; if (!anx7625->powered) goto out; anx7625_stop(anx7625); out: mutex_unlock(&anx7625->lock); TRACE("anx7625 disabled\n"); Loading Loading @@ -1291,6 +1295,9 @@ static void anx7625_bridge_enable(struct drm_bridge *bridge) anx7625->enabled = true; if (!anx7625->powered) goto out; if (!anx7625->connected) DRM_ERROR("cable is not connected\n"); Loading @@ -1301,6 +1308,7 @@ static void anx7625_bridge_enable(struct drm_bridge *bridge) if (err) DRM_ERROR("Failed to start: %d\n", err); out: mutex_unlock(&anx7625->lock); TRACE("anx7625 enabled\n"); Loading Loading @@ -1512,10 +1520,48 @@ static const struct of_device_id anx7625_id_match_table[] = { MODULE_DEVICE_TABLE(of, anx7625_id_match_table); #endif #ifdef CONFIG_PM_SLEEP static int anx7625_suspend(struct device *dev) { struct i2c_client *client = to_i2c_client(dev); struct anx7625 *anx7625 = i2c_get_clientdata(client); mutex_lock(&anx7625->lock); anx7625_poweroff(anx7625); mutex_unlock(&anx7625->lock); return 0; } static int anx7625_resume(struct device *dev) { struct i2c_client *client = to_i2c_client(dev); struct anx7625 *anx7625 = i2c_get_clientdata(client); mutex_lock(&anx7625->lock); anx7625->last_read_DevAddr = 0; anx7625_poweron(anx7625); if (anx7625->enabled) anx7625_start(anx7625); mutex_unlock(&anx7625->lock); return 0; } #endif static SIMPLE_DEV_PM_OPS(anx7625_pm, anx7625_suspend, anx7625_resume); static struct i2c_driver anx7625_driver = { .driver = { .name = "anx7625", .owner = THIS_MODULE, .pm = &anx7625_pm, #ifdef CONFIG_OF .of_match_table = anx7625_id_match_table, #endif Loading drivers/gpu/drm/drm_dp_helper.c +18 −4 Original line number Diff line number Diff line Loading @@ -119,18 +119,32 @@ u8 drm_dp_get_adjust_request_pre_emphasis(const u8 link_status[DP_LINK_STATUS_SI EXPORT_SYMBOL(drm_dp_get_adjust_request_pre_emphasis); void drm_dp_link_train_clock_recovery_delay(const u8 dpcd[DP_RECEIVER_CAP_SIZE]) { if (dpcd[DP_TRAINING_AUX_RD_INTERVAL] == 0) int rd_interval = dpcd[DP_TRAINING_AUX_RD_INTERVAL] & DP_TRAINING_AUX_RD_MASK; if (rd_interval > 4) DRM_DEBUG_KMS("AUX interval %d, out of range (max 4)\n", rd_interval); if (rd_interval == 0 || dpcd[DP_DPCD_REV] >= DP_DPCD_REV_14) udelay(100); else mdelay(dpcd[DP_TRAINING_AUX_RD_INTERVAL] * 4); mdelay(rd_interval * 4); } EXPORT_SYMBOL(drm_dp_link_train_clock_recovery_delay); void drm_dp_link_train_channel_eq_delay(const u8 dpcd[DP_RECEIVER_CAP_SIZE]) { if (dpcd[DP_TRAINING_AUX_RD_INTERVAL] == 0) int rd_interval = dpcd[DP_TRAINING_AUX_RD_INTERVAL] & DP_TRAINING_AUX_RD_MASK; if (rd_interval > 4) DRM_DEBUG_KMS("AUX interval %d, out of range (max 4)\n", rd_interval); if (rd_interval == 0) udelay(400); else mdelay(dpcd[DP_TRAINING_AUX_RD_INTERVAL] * 4); mdelay(rd_interval * 4); } EXPORT_SYMBOL(drm_dp_link_train_channel_eq_delay); Loading Loading
Documentation/devicetree/bindings/display/msm/sde.txt +2 −0 Original line number Diff line number Diff line Loading @@ -443,6 +443,8 @@ Optional properties: ordering block 0: lower priority pipe has to be on the left for a given pair of pipes. 1: priority have to be explicitly configured for a given pair of pipes. - qcom,sde-num-mnoc-ports: A u32 property to indicate the number of mnoc ports - qcom,sde-axi-bus-width: A u32 property to indicate the axi bus width value in bytes Bus Scaling Subnodes: - qcom,sde-reg-bus: Property to provide Bus scaling for register access for Loading
arch/arm64/boot/dts/qcom/sm8150-sde.dtsi +1 −2 Original line number Diff line number Diff line /* Copyright (c) 2016-2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2016-2019, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -394,7 +394,6 @@ qcom,mdss-default-ot-wr-limit = <32>; qcom,mdss-sbuf-headroom = <20>; qcom,mdss-rot-linewidth = <8192>; cache-slice-names = "rotator"; cache-slices = <&llcc 4>; Loading
arch/arm64/boot/dts/qcom/trinket-sde.dtsi +2 −0 Original line number Diff line number Diff line Loading @@ -185,6 +185,8 @@ qcom,sde-reg-dma-trigger-off = <0x119c>; qcom,sde-secure-sid-mask = <0x0000401>; qcom,sde-num-mnoc-ports = <1>; qcom,sde-axi-bus-width = <16>; qcom,sde-sspp-vig-blocks { qcom,sde-vig-csc-off = <0x1a00>; Loading
drivers/gpu/drm/bridge/analogix-anx7625.c +49 −3 Original line number Diff line number Diff line /* Copyright (c) 2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2018-2019, The Linux Foundation. All rights reserved. * * Copyright(c) 2016, Analogix Semiconductor. All rights reserved. * Loading Loading @@ -1253,10 +1253,14 @@ static void anx7625_bridge_disable(struct drm_bridge *bridge) mutex_lock(&anx7625->lock); anx7625_stop(anx7625); anx7625->enabled = false; if (!anx7625->powered) goto out; anx7625_stop(anx7625); out: mutex_unlock(&anx7625->lock); TRACE("anx7625 disabled\n"); Loading Loading @@ -1291,6 +1295,9 @@ static void anx7625_bridge_enable(struct drm_bridge *bridge) anx7625->enabled = true; if (!anx7625->powered) goto out; if (!anx7625->connected) DRM_ERROR("cable is not connected\n"); Loading @@ -1301,6 +1308,7 @@ static void anx7625_bridge_enable(struct drm_bridge *bridge) if (err) DRM_ERROR("Failed to start: %d\n", err); out: mutex_unlock(&anx7625->lock); TRACE("anx7625 enabled\n"); Loading Loading @@ -1512,10 +1520,48 @@ static const struct of_device_id anx7625_id_match_table[] = { MODULE_DEVICE_TABLE(of, anx7625_id_match_table); #endif #ifdef CONFIG_PM_SLEEP static int anx7625_suspend(struct device *dev) { struct i2c_client *client = to_i2c_client(dev); struct anx7625 *anx7625 = i2c_get_clientdata(client); mutex_lock(&anx7625->lock); anx7625_poweroff(anx7625); mutex_unlock(&anx7625->lock); return 0; } static int anx7625_resume(struct device *dev) { struct i2c_client *client = to_i2c_client(dev); struct anx7625 *anx7625 = i2c_get_clientdata(client); mutex_lock(&anx7625->lock); anx7625->last_read_DevAddr = 0; anx7625_poweron(anx7625); if (anx7625->enabled) anx7625_start(anx7625); mutex_unlock(&anx7625->lock); return 0; } #endif static SIMPLE_DEV_PM_OPS(anx7625_pm, anx7625_suspend, anx7625_resume); static struct i2c_driver anx7625_driver = { .driver = { .name = "anx7625", .owner = THIS_MODULE, .pm = &anx7625_pm, #ifdef CONFIG_OF .of_match_table = anx7625_id_match_table, #endif Loading
drivers/gpu/drm/drm_dp_helper.c +18 −4 Original line number Diff line number Diff line Loading @@ -119,18 +119,32 @@ u8 drm_dp_get_adjust_request_pre_emphasis(const u8 link_status[DP_LINK_STATUS_SI EXPORT_SYMBOL(drm_dp_get_adjust_request_pre_emphasis); void drm_dp_link_train_clock_recovery_delay(const u8 dpcd[DP_RECEIVER_CAP_SIZE]) { if (dpcd[DP_TRAINING_AUX_RD_INTERVAL] == 0) int rd_interval = dpcd[DP_TRAINING_AUX_RD_INTERVAL] & DP_TRAINING_AUX_RD_MASK; if (rd_interval > 4) DRM_DEBUG_KMS("AUX interval %d, out of range (max 4)\n", rd_interval); if (rd_interval == 0 || dpcd[DP_DPCD_REV] >= DP_DPCD_REV_14) udelay(100); else mdelay(dpcd[DP_TRAINING_AUX_RD_INTERVAL] * 4); mdelay(rd_interval * 4); } EXPORT_SYMBOL(drm_dp_link_train_clock_recovery_delay); void drm_dp_link_train_channel_eq_delay(const u8 dpcd[DP_RECEIVER_CAP_SIZE]) { if (dpcd[DP_TRAINING_AUX_RD_INTERVAL] == 0) int rd_interval = dpcd[DP_TRAINING_AUX_RD_INTERVAL] & DP_TRAINING_AUX_RD_MASK; if (rd_interval > 4) DRM_DEBUG_KMS("AUX interval %d, out of range (max 4)\n", rd_interval); if (rd_interval == 0) udelay(400); else mdelay(dpcd[DP_TRAINING_AUX_RD_INTERVAL] * 4); mdelay(rd_interval * 4); } EXPORT_SYMBOL(drm_dp_link_train_channel_eq_delay); Loading