Loading Documentation/devicetree/bindings/drm/msm/sde-dp.txt +1 −0 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ DP Controller: Required properties: "dp_mmss_cc" - Display Clock Control memory region. "qfprom_physical" - QFPROM Phys memory region. "dp_pll" - USB3 DP combo PLL memory region. "usb3_dp_com" - USB3 DP PHY combo memory region. "hdcp_physical" - DP HDCP memory region. - cell-index: Specifies the controller instance. - clocks: Clocks required for Display Port operation. Loading arch/arm64/boot/dts/qcom/sdm845-sde-display.dtsi +2 −1 Original line number Diff line number Diff line Loading @@ -430,10 +430,11 @@ <0xaf02000 0x1a0>, <0x780000 0x621c>, <0x88ea030 0x10>, <0x88e8000 0x20>, <0x0aee1000 0x034>; reg-names = "dp_ctrl", "dp_phy", "dp_ln_tx0", "dp_ln_tx1", "dp_mmss_cc", "qfprom_physical", "dp_pll", "hdcp_physical"; "usb3_dp_com", "hdcp_physical"; interrupt-parent = <&mdss_mdp>; interrupts = <12 0>; Loading drivers/gpu/drm/msm/dp/dp_catalog.c +38 −0 Original line number Diff line number Diff line Loading @@ -493,6 +493,43 @@ static void dp_catalog_ctrl_set_pattern(struct dp_catalog_ctrl *ctrl, pr_err("set link_train=%d failed\n", pattern); } static void dp_catalog_ctrl_usb_reset(struct dp_catalog_ctrl *ctrl, bool flip) { struct dp_catalog_private *catalog; void __iomem *base; if (!ctrl) { pr_err("invalid input\n"); return; } dp_catalog_get_priv(ctrl); base = catalog->io->usb3_dp_com.base; dp_write(base + USB3_DP_COM_RESET_OVRD_CTRL, 0x0a); dp_write(base + USB3_DP_COM_PHY_MODE_CTRL, 0x02); dp_write(base + USB3_DP_COM_SW_RESET, 0x01); /* make sure usb3 com phy software reset is done */ wmb(); if (!flip) /* CC1 */ dp_write(base + USB3_DP_COM_TYPEC_CTRL, 0x02); else /* CC2 */ dp_write(base + USB3_DP_COM_TYPEC_CTRL, 0x03); dp_write(base + USB3_DP_COM_SWI_CTRL, 0x00); dp_write(base + USB3_DP_COM_SW_RESET, 0x00); /* make sure the software reset is done */ wmb(); dp_write(base + USB3_DP_COM_POWER_DOWN_CTRL, 0x01); dp_write(base + USB3_DP_COM_RESET_OVRD_CTRL, 0x00); /* make sure phy is brought out of reset */ wmb(); } static void dp_catalog_ctrl_reset(struct dp_catalog_ctrl *ctrl) { u32 sw_reset; Loading Loading @@ -937,6 +974,7 @@ struct dp_catalog *dp_catalog_get(struct device *dev, struct dp_io *io) .config_msa = dp_catalog_ctrl_config_msa, .set_pattern = dp_catalog_ctrl_set_pattern, .reset = dp_catalog_ctrl_reset, .usb_reset = dp_catalog_ctrl_usb_reset, .mainlink_ready = dp_catalog_ctrl_mainlink_ready, .enable_irq = dp_catalog_ctrl_enable_irq, .hpd_config = dp_catalog_ctrl_hpd_config, Loading drivers/gpu/drm/msm/dp/dp_catalog.h +1 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ struct dp_catalog_ctrl { u32 stream_rate_khz, bool fixed_nvid); void (*set_pattern)(struct dp_catalog_ctrl *ctrl, u32 pattern); void (*reset)(struct dp_catalog_ctrl *ctrl); void (*usb_reset)(struct dp_catalog_ctrl *ctrl, bool flip); bool (*mainlink_ready)(struct dp_catalog_ctrl *ctrl); void (*enable_irq)(struct dp_catalog_ctrl *ctrl, bool enable); void (*hpd_config)(struct dp_catalog_ctrl *ctrl, bool enable); Loading drivers/gpu/drm/msm/dp/dp_ctrl.c +1 −0 Original line number Diff line number Diff line Loading @@ -1093,6 +1093,7 @@ static int dp_ctrl_host_init(struct dp_ctrl *dp_ctrl, bool flip) ctrl->orientation = flip; catalog = ctrl->catalog; catalog->usb_reset(ctrl->catalog, flip); catalog->reset(ctrl->catalog); catalog->phy_reset(ctrl->catalog); catalog->enable_irq(ctrl->catalog, true); Loading Loading
Documentation/devicetree/bindings/drm/msm/sde-dp.txt +1 −0 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ DP Controller: Required properties: "dp_mmss_cc" - Display Clock Control memory region. "qfprom_physical" - QFPROM Phys memory region. "dp_pll" - USB3 DP combo PLL memory region. "usb3_dp_com" - USB3 DP PHY combo memory region. "hdcp_physical" - DP HDCP memory region. - cell-index: Specifies the controller instance. - clocks: Clocks required for Display Port operation. Loading
arch/arm64/boot/dts/qcom/sdm845-sde-display.dtsi +2 −1 Original line number Diff line number Diff line Loading @@ -430,10 +430,11 @@ <0xaf02000 0x1a0>, <0x780000 0x621c>, <0x88ea030 0x10>, <0x88e8000 0x20>, <0x0aee1000 0x034>; reg-names = "dp_ctrl", "dp_phy", "dp_ln_tx0", "dp_ln_tx1", "dp_mmss_cc", "qfprom_physical", "dp_pll", "hdcp_physical"; "usb3_dp_com", "hdcp_physical"; interrupt-parent = <&mdss_mdp>; interrupts = <12 0>; Loading
drivers/gpu/drm/msm/dp/dp_catalog.c +38 −0 Original line number Diff line number Diff line Loading @@ -493,6 +493,43 @@ static void dp_catalog_ctrl_set_pattern(struct dp_catalog_ctrl *ctrl, pr_err("set link_train=%d failed\n", pattern); } static void dp_catalog_ctrl_usb_reset(struct dp_catalog_ctrl *ctrl, bool flip) { struct dp_catalog_private *catalog; void __iomem *base; if (!ctrl) { pr_err("invalid input\n"); return; } dp_catalog_get_priv(ctrl); base = catalog->io->usb3_dp_com.base; dp_write(base + USB3_DP_COM_RESET_OVRD_CTRL, 0x0a); dp_write(base + USB3_DP_COM_PHY_MODE_CTRL, 0x02); dp_write(base + USB3_DP_COM_SW_RESET, 0x01); /* make sure usb3 com phy software reset is done */ wmb(); if (!flip) /* CC1 */ dp_write(base + USB3_DP_COM_TYPEC_CTRL, 0x02); else /* CC2 */ dp_write(base + USB3_DP_COM_TYPEC_CTRL, 0x03); dp_write(base + USB3_DP_COM_SWI_CTRL, 0x00); dp_write(base + USB3_DP_COM_SW_RESET, 0x00); /* make sure the software reset is done */ wmb(); dp_write(base + USB3_DP_COM_POWER_DOWN_CTRL, 0x01); dp_write(base + USB3_DP_COM_RESET_OVRD_CTRL, 0x00); /* make sure phy is brought out of reset */ wmb(); } static void dp_catalog_ctrl_reset(struct dp_catalog_ctrl *ctrl) { u32 sw_reset; Loading Loading @@ -937,6 +974,7 @@ struct dp_catalog *dp_catalog_get(struct device *dev, struct dp_io *io) .config_msa = dp_catalog_ctrl_config_msa, .set_pattern = dp_catalog_ctrl_set_pattern, .reset = dp_catalog_ctrl_reset, .usb_reset = dp_catalog_ctrl_usb_reset, .mainlink_ready = dp_catalog_ctrl_mainlink_ready, .enable_irq = dp_catalog_ctrl_enable_irq, .hpd_config = dp_catalog_ctrl_hpd_config, Loading
drivers/gpu/drm/msm/dp/dp_catalog.h +1 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ struct dp_catalog_ctrl { u32 stream_rate_khz, bool fixed_nvid); void (*set_pattern)(struct dp_catalog_ctrl *ctrl, u32 pattern); void (*reset)(struct dp_catalog_ctrl *ctrl); void (*usb_reset)(struct dp_catalog_ctrl *ctrl, bool flip); bool (*mainlink_ready)(struct dp_catalog_ctrl *ctrl); void (*enable_irq)(struct dp_catalog_ctrl *ctrl, bool enable); void (*hpd_config)(struct dp_catalog_ctrl *ctrl, bool enable); Loading
drivers/gpu/drm/msm/dp/dp_ctrl.c +1 −0 Original line number Diff line number Diff line Loading @@ -1093,6 +1093,7 @@ static int dp_ctrl_host_init(struct dp_ctrl *dp_ctrl, bool flip) ctrl->orientation = flip; catalog = ctrl->catalog; catalog->usb_reset(ctrl->catalog, flip); catalog->reset(ctrl->catalog); catalog->phy_reset(ctrl->catalog); catalog->enable_irq(ctrl->catalog, true); Loading