Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/msm/dp: handle PHY directly in dp_ctrl

There is little point in going trough dp_parser->io indirection each
time the driver needs to access the PHY. Store the pointer directly in
dp_ctrl_private.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Tested-by: Kuogee Hsieh <quic_khsieh@quicinc.com>
Reviewed-by: Kuogee Hsieh <quic_khsieh@quicinc.com>
Patchwork: https://patchwork.freedesktop.org/patch/576119/
Link: https://lore.kernel.org/r/20240126-dp-power-parser-cleanup-v3-11-098d5f581dd3@linaro.org

+16 -26
+13 -24
drivers/gpu/drm/msm/dp/dp_ctrl.c
··· 76 76 struct drm_dp_aux *aux; 77 77 struct dp_panel *panel; 78 78 struct dp_link *link; 79 - struct dp_parser *parser; 80 79 struct dp_catalog *catalog; 80 + 81 + struct phy *phy; 81 82 82 83 unsigned int num_core_clks; 83 84 struct clk_bulk_data *core_clks; ··· 1024 1023 phy_opts->dp.voltage[0] = v_level; 1025 1024 phy_opts->dp.pre[0] = p_level; 1026 1025 phy_opts->dp.set_voltages = 1; 1027 - phy_configure(ctrl->parser->io.phy, phy_opts); 1026 + phy_configure(ctrl->phy, phy_opts); 1028 1027 phy_opts->dp.set_voltages = 0; 1029 1028 1030 1029 return 0; ··· 1438 1437 static int dp_ctrl_enable_mainlink_clocks(struct dp_ctrl_private *ctrl) 1439 1438 { 1440 1439 int ret = 0; 1441 - struct phy *phy = ctrl->parser->io.phy; 1440 + struct phy *phy = ctrl->phy; 1442 1441 const u8 *dpcd = ctrl->panel->dpcd; 1443 1442 1444 1443 ctrl->phy_opts.dp.lanes = ctrl->link->link_params.num_lanes; ··· 1536 1535 void dp_ctrl_phy_init(struct dp_ctrl *dp_ctrl) 1537 1536 { 1538 1537 struct dp_ctrl_private *ctrl; 1539 - struct dp_io *dp_io; 1540 1538 struct phy *phy; 1541 1539 1542 1540 ctrl = container_of(dp_ctrl, struct dp_ctrl_private, dp_ctrl); 1543 - dp_io = &ctrl->parser->io; 1544 - phy = dp_io->phy; 1541 + phy = ctrl->phy; 1545 1542 1546 1543 dp_catalog_ctrl_phy_reset(ctrl->catalog); 1547 1544 phy_init(phy); ··· 1551 1552 void dp_ctrl_phy_exit(struct dp_ctrl *dp_ctrl) 1552 1553 { 1553 1554 struct dp_ctrl_private *ctrl; 1554 - struct dp_io *dp_io; 1555 1555 struct phy *phy; 1556 1556 1557 1557 ctrl = container_of(dp_ctrl, struct dp_ctrl_private, dp_ctrl); 1558 - dp_io = &ctrl->parser->io; 1559 - phy = dp_io->phy; 1558 + phy = ctrl->phy; 1560 1559 1561 1560 dp_catalog_ctrl_phy_reset(ctrl->catalog); 1562 1561 phy_exit(phy); ··· 1579 1582 1580 1583 static int dp_ctrl_reinitialize_mainlink(struct dp_ctrl_private *ctrl) 1581 1584 { 1582 - struct phy *phy = ctrl->parser->io.phy; 1585 + struct phy *phy = ctrl->phy; 1583 1586 int ret = 0; 1584 1587 1585 1588 dp_catalog_ctrl_mainlink_ctrl(ctrl->catalog, false); ··· 1609 1612 1610 1613 static int dp_ctrl_deinitialize_mainlink(struct dp_ctrl_private *ctrl) 1611 1614 { 1612 - struct dp_io *dp_io; 1613 1615 struct phy *phy; 1614 1616 1615 - dp_io = &ctrl->parser->io; 1616 - phy = dp_io->phy; 1617 + phy = ctrl->phy; 1617 1618 1618 1619 dp_catalog_ctrl_mainlink_ctrl(ctrl->catalog, false); 1619 1620 ··· 2037 2042 void dp_ctrl_off_link_stream(struct dp_ctrl *dp_ctrl) 2038 2043 { 2039 2044 struct dp_ctrl_private *ctrl; 2040 - struct dp_io *dp_io; 2041 2045 struct phy *phy; 2042 2046 2043 2047 ctrl = container_of(dp_ctrl, struct dp_ctrl_private, dp_ctrl); 2044 - dp_io = &ctrl->parser->io; 2045 - phy = dp_io->phy; 2048 + phy = ctrl->phy; 2046 2049 2047 2050 /* set dongle to D3 (power off) mode */ 2048 2051 dp_link_psm_config(ctrl->link, &ctrl->panel->link_info, true); ··· 2068 2075 void dp_ctrl_off_link(struct dp_ctrl *dp_ctrl) 2069 2076 { 2070 2077 struct dp_ctrl_private *ctrl; 2071 - struct dp_io *dp_io; 2072 2078 struct phy *phy; 2073 2079 2074 2080 ctrl = container_of(dp_ctrl, struct dp_ctrl_private, dp_ctrl); 2075 - dp_io = &ctrl->parser->io; 2076 - phy = dp_io->phy; 2081 + phy = ctrl->phy; 2077 2082 2078 2083 dp_catalog_ctrl_mainlink_ctrl(ctrl->catalog, false); 2079 2084 ··· 2089 2098 void dp_ctrl_off(struct dp_ctrl *dp_ctrl) 2090 2099 { 2091 2100 struct dp_ctrl_private *ctrl; 2092 - struct dp_io *dp_io; 2093 2101 struct phy *phy; 2094 2102 2095 2103 ctrl = container_of(dp_ctrl, struct dp_ctrl_private, dp_ctrl); 2096 - dp_io = &ctrl->parser->io; 2097 - phy = dp_io->phy; 2104 + phy = ctrl->phy; 2098 2105 2099 2106 dp_catalog_ctrl_mainlink_ctrl(ctrl->catalog, false); 2100 2107 ··· 2209 2220 struct dp_ctrl *dp_ctrl_get(struct device *dev, struct dp_link *link, 2210 2221 struct dp_panel *panel, struct drm_dp_aux *aux, 2211 2222 struct dp_catalog *catalog, 2212 - struct dp_parser *parser) 2223 + struct phy *phy) 2213 2224 { 2214 2225 struct dp_ctrl_private *ctrl; 2215 2226 int ret; ··· 2243 2254 init_completion(&ctrl->video_comp); 2244 2255 2245 2256 /* in parameters */ 2246 - ctrl->parser = parser; 2247 2257 ctrl->panel = panel; 2248 2258 ctrl->aux = aux; 2249 2259 ctrl->link = link; 2250 2260 ctrl->catalog = catalog; 2251 2261 ctrl->dev = dev; 2262 + ctrl->phy = phy; 2252 2263 2253 2264 ret = dp_ctrl_clk_init(&ctrl->dp_ctrl); 2254 2265 if (ret) {
+1 -1
drivers/gpu/drm/msm/dp/dp_ctrl.h
··· 28 28 struct dp_ctrl *dp_ctrl_get(struct device *dev, struct dp_link *link, 29 29 struct dp_panel *panel, struct drm_dp_aux *aux, 30 30 struct dp_catalog *catalog, 31 - struct dp_parser *parser); 31 + struct phy *phy); 32 32 33 33 void dp_ctrl_reset_irq_ctrl(struct dp_ctrl *dp_ctrl, bool enable); 34 34 void dp_ctrl_phy_init(struct dp_ctrl *dp_ctrl);
+2 -1
drivers/gpu/drm/msm/dp/dp_display.c
··· 761 761 } 762 762 763 763 dp->ctrl = dp_ctrl_get(dev, dp->link, dp->panel, dp->aux, 764 - dp->catalog, dp->parser); 764 + dp->catalog, 765 + dp->parser->io.phy); 765 766 if (IS_ERR(dp->ctrl)) { 766 767 rc = PTR_ERR(dp->ctrl); 767 768 DRM_ERROR("failed to initialize ctrl, rc = %d\n", rc);