Lines Matching full:ctrl
111 struct dp_ctrl_private *ctrl; in dp_ctrl_push_idle() local
113 ctrl = container_of(dp_ctrl, struct dp_ctrl_private, dp_ctrl); in dp_ctrl_push_idle()
115 reinit_completion(&ctrl->idle_comp); in dp_ctrl_push_idle()
116 dp_catalog_ctrl_state_ctrl(ctrl->catalog, DP_STATE_CTRL_PUSH_IDLE); in dp_ctrl_push_idle()
118 if (!wait_for_completion_timeout(&ctrl->idle_comp, in dp_ctrl_push_idle()
125 static void dp_ctrl_config_ctrl(struct dp_ctrl_private *ctrl) in dp_ctrl_config_ctrl() argument
128 u8 *dpcd = ctrl->panel->dpcd; in dp_ctrl_config_ctrl()
137 tbd = dp_link_get_test_bits_depth(ctrl->link, in dp_ctrl_config_ctrl()
138 ctrl->panel->dp_mode.bpp); in dp_ctrl_config_ctrl()
148 config |= ((ctrl->link->link_params.num_lanes - 1) in dp_ctrl_config_ctrl()
160 dp_catalog_ctrl_config_ctrl(ctrl->catalog, config); in dp_ctrl_config_ctrl()
163 static void dp_ctrl_configure_source_params(struct dp_ctrl_private *ctrl) in dp_ctrl_configure_source_params() argument
167 dp_catalog_ctrl_lane_mapping(ctrl->catalog); in dp_ctrl_configure_source_params()
168 dp_catalog_ctrl_mainlink_ctrl(ctrl->catalog, true); in dp_ctrl_configure_source_params()
170 dp_ctrl_config_ctrl(ctrl); in dp_ctrl_configure_source_params()
172 tb = dp_link_get_test_bits_depth(ctrl->link, in dp_ctrl_configure_source_params()
173 ctrl->panel->dp_mode.bpp); in dp_ctrl_configure_source_params()
174 cc = dp_link_get_colorimetry_config(ctrl->link); in dp_ctrl_configure_source_params()
175 dp_catalog_ctrl_config_misc(ctrl->catalog, cc, tb); in dp_ctrl_configure_source_params()
176 dp_panel_timing_cfg(ctrl->panel); in dp_ctrl_configure_source_params()
937 static void dp_ctrl_calc_tu_parameters(struct dp_ctrl_private *ctrl, in dp_ctrl_calc_tu_parameters() argument
943 drm_mode = &ctrl->panel->dp_mode.drm_mode; in dp_ctrl_calc_tu_parameters()
945 in.lclk = ctrl->link->link_params.rate / 1000; in dp_ctrl_calc_tu_parameters()
949 in.nlanes = ctrl->link->link_params.num_lanes; in dp_ctrl_calc_tu_parameters()
950 in.bpp = ctrl->panel->dp_mode.bpp; in dp_ctrl_calc_tu_parameters()
961 static void dp_ctrl_setup_tr_unit(struct dp_ctrl_private *ctrl) in dp_ctrl_setup_tr_unit() argument
968 dp_ctrl_calc_tu_parameters(ctrl, &tu_calc_table); in dp_ctrl_setup_tr_unit()
984 dp_catalog_ctrl_update_transfer_unit(ctrl->catalog, in dp_ctrl_setup_tr_unit()
988 static int dp_ctrl_wait4video_ready(struct dp_ctrl_private *ctrl) in dp_ctrl_wait4video_ready() argument
992 if (!wait_for_completion_timeout(&ctrl->video_comp, in dp_ctrl_wait4video_ready()
1000 static int dp_ctrl_update_vx_px(struct dp_ctrl_private *ctrl) in dp_ctrl_update_vx_px() argument
1002 struct dp_link *link = ctrl->link; in dp_ctrl_update_vx_px()
1009 ret = dp_catalog_ctrl_update_vx_px(ctrl->catalog, in dp_ctrl_update_vx_px()
1029 lane_cnt = ctrl->link->link_params.num_lanes; in dp_ctrl_update_vx_px()
1036 ret = drm_dp_dpcd_write(ctrl->aux, DP_TRAINING_LANE0_SET, in dp_ctrl_update_vx_px()
1044 static bool dp_ctrl_train_pattern_set(struct dp_ctrl_private *ctrl, in dp_ctrl_train_pattern_set() argument
1057 ret = drm_dp_dpcd_writeb(ctrl->aux, DP_TRAINING_PATTERN_SET, buf); in dp_ctrl_train_pattern_set()
1061 static int dp_ctrl_read_link_status(struct dp_ctrl_private *ctrl, in dp_ctrl_read_link_status() argument
1069 len = drm_dp_dpcd_read_link_status(ctrl->aux, in dp_ctrl_read_link_status()
1083 static int dp_ctrl_link_train_1(struct dp_ctrl_private *ctrl, in dp_ctrl_link_train_1() argument
1090 dp_catalog_ctrl_state_ctrl(ctrl->catalog, 0); in dp_ctrl_link_train_1()
1094 ret = dp_catalog_ctrl_set_pattern(ctrl->catalog, DP_TRAINING_PATTERN_1); in dp_ctrl_link_train_1()
1097 dp_ctrl_train_pattern_set(ctrl, DP_TRAINING_PATTERN_1 | in dp_ctrl_link_train_1()
1100 ret = dp_ctrl_update_vx_px(ctrl); in dp_ctrl_link_train_1()
1105 old_v_level = ctrl->link->phy_params.v_level; in dp_ctrl_link_train_1()
1107 drm_dp_link_train_clock_recovery_delay(ctrl->panel->dpcd); in dp_ctrl_link_train_1()
1109 ret = dp_ctrl_read_link_status(ctrl, link_status); in dp_ctrl_link_train_1()
1117 ctrl->link->link_params.num_lanes)) { in dp_ctrl_link_train_1()
1121 if (ctrl->link->phy_params.v_level >= in dp_ctrl_link_train_1()
1127 if (old_v_level != ctrl->link->phy_params.v_level) { in dp_ctrl_link_train_1()
1129 old_v_level = ctrl->link->phy_params.v_level; in dp_ctrl_link_train_1()
1134 dp_link_adjust_levels(ctrl->link, link_status); in dp_ctrl_link_train_1()
1135 ret = dp_ctrl_update_vx_px(ctrl); in dp_ctrl_link_train_1()
1144 static int dp_ctrl_link_rate_down_shift(struct dp_ctrl_private *ctrl) in dp_ctrl_link_rate_down_shift() argument
1148 switch (ctrl->link->link_params.rate) { in dp_ctrl_link_rate_down_shift()
1150 ctrl->link->link_params.rate = 540000; in dp_ctrl_link_rate_down_shift()
1153 ctrl->link->link_params.rate = 270000; in dp_ctrl_link_rate_down_shift()
1156 ctrl->link->link_params.rate = 162000; in dp_ctrl_link_rate_down_shift()
1165 DRM_DEBUG_DP("new rate=0x%x\n", ctrl->link->link_params.rate); in dp_ctrl_link_rate_down_shift()
1170 static int dp_ctrl_link_lane_down_shift(struct dp_ctrl_private *ctrl) in dp_ctrl_link_lane_down_shift() argument
1173 if (ctrl->link->link_params.num_lanes == 1) in dp_ctrl_link_lane_down_shift()
1176 ctrl->link->link_params.num_lanes /= 2; in dp_ctrl_link_lane_down_shift()
1177 ctrl->link->link_params.rate = ctrl->panel->link_info.rate; in dp_ctrl_link_lane_down_shift()
1179 ctrl->link->phy_params.p_level = 0; in dp_ctrl_link_lane_down_shift()
1180 ctrl->link->phy_params.v_level = 0; in dp_ctrl_link_lane_down_shift()
1185 static void dp_ctrl_clear_training_pattern(struct dp_ctrl_private *ctrl) in dp_ctrl_clear_training_pattern() argument
1187 dp_ctrl_train_pattern_set(ctrl, DP_TRAINING_PATTERN_DISABLE); in dp_ctrl_clear_training_pattern()
1188 drm_dp_link_train_channel_eq_delay(ctrl->panel->dpcd); in dp_ctrl_clear_training_pattern()
1191 static int dp_ctrl_link_train_2(struct dp_ctrl_private *ctrl, in dp_ctrl_link_train_2() argument
1199 dp_catalog_ctrl_state_ctrl(ctrl->catalog, 0); in dp_ctrl_link_train_2()
1203 if (drm_dp_tps3_supported(ctrl->panel->dpcd)) in dp_ctrl_link_train_2()
1208 ret = dp_ctrl_update_vx_px(ctrl); in dp_ctrl_link_train_2()
1212 ret = dp_catalog_ctrl_set_pattern(ctrl->catalog, pattern); in dp_ctrl_link_train_2()
1216 dp_ctrl_train_pattern_set(ctrl, pattern | DP_RECOVERED_CLOCK_OUT_EN); in dp_ctrl_link_train_2()
1219 drm_dp_link_train_channel_eq_delay(ctrl->panel->dpcd); in dp_ctrl_link_train_2()
1221 ret = dp_ctrl_read_link_status(ctrl, link_status); in dp_ctrl_link_train_2()
1228 ctrl->link->link_params.num_lanes)) { in dp_ctrl_link_train_2()
1232 dp_link_adjust_levels(ctrl->link, link_status); in dp_ctrl_link_train_2()
1233 ret = dp_ctrl_update_vx_px(ctrl); in dp_ctrl_link_train_2()
1242 static int dp_ctrl_reinitialize_mainlink(struct dp_ctrl_private *ctrl);
1244 static int dp_ctrl_link_train(struct dp_ctrl_private *ctrl, in dp_ctrl_link_train() argument
1251 dp_ctrl_config_ctrl(ctrl); in dp_ctrl_link_train()
1253 link_info.num_lanes = ctrl->link->link_params.num_lanes; in dp_ctrl_link_train()
1254 link_info.rate = ctrl->link->link_params.rate; in dp_ctrl_link_train()
1257 dp_aux_link_configure(ctrl->aux, &link_info); in dp_ctrl_link_train()
1258 drm_dp_dpcd_write(ctrl->aux, DP_MAIN_LINK_CHANNEL_CODING_SET, in dp_ctrl_link_train()
1261 ret = dp_ctrl_link_train_1(ctrl, cr, training_step); in dp_ctrl_link_train()
1270 ret = dp_ctrl_link_train_2(ctrl, cr, training_step); in dp_ctrl_link_train()
1280 dp_catalog_ctrl_state_ctrl(ctrl->catalog, 0); in dp_ctrl_link_train()
1285 static int dp_ctrl_setup_main_link(struct dp_ctrl_private *ctrl, in dp_ctrl_setup_main_link() argument
1290 dp_catalog_ctrl_mainlink_ctrl(ctrl->catalog, true); in dp_ctrl_setup_main_link()
1292 if (ctrl->link->sink_request & DP_TEST_LINK_PHY_TEST_PATTERN) in dp_ctrl_setup_main_link()
1300 dp_catalog_ctrl_reset(ctrl->catalog); in dp_ctrl_setup_main_link()
1302 ret = dp_ctrl_link_train(ctrl, cr, training_step); in dp_ctrl_setup_main_link()
1307 static void dp_ctrl_set_clock_rate(struct dp_ctrl_private *ctrl, in dp_ctrl_set_clock_rate() argument
1310 u32 num = ctrl->parser->mp[module].num_clk; in dp_ctrl_set_clock_rate()
1311 struct dss_clk *cfg = ctrl->parser->mp[module].clk_config; in dp_ctrl_set_clock_rate()
1327 static int dp_ctrl_enable_mainlink_clocks(struct dp_ctrl_private *ctrl) in dp_ctrl_enable_mainlink_clocks() argument
1330 struct dp_io *dp_io = &ctrl->parser->io; in dp_ctrl_enable_mainlink_clocks()
1334 opts_dp->lanes = ctrl->link->link_params.num_lanes; in dp_ctrl_enable_mainlink_clocks()
1335 opts_dp->link_rate = ctrl->link->link_params.rate / 100; in dp_ctrl_enable_mainlink_clocks()
1336 dp_ctrl_set_clock_rate(ctrl, DP_CTRL_PM, "ctrl_link", in dp_ctrl_enable_mainlink_clocks()
1337 ctrl->link->link_params.rate * 1000); in dp_ctrl_enable_mainlink_clocks()
1342 ret = dp_power_clk_enable(ctrl->power, DP_CTRL_PM, true); in dp_ctrl_enable_mainlink_clocks()
1347 ctrl->link->link_params.rate, ctrl->dp_ctrl.pixel_rate); in dp_ctrl_enable_mainlink_clocks()
1352 static int dp_ctrl_enable_stream_clocks(struct dp_ctrl_private *ctrl) in dp_ctrl_enable_stream_clocks() argument
1356 dp_ctrl_set_clock_rate(ctrl, DP_STREAM_PM, "stream_pixel", in dp_ctrl_enable_stream_clocks()
1357 ctrl->dp_ctrl.pixel_rate * 1000); in dp_ctrl_enable_stream_clocks()
1359 ret = dp_power_clk_enable(ctrl->power, DP_STREAM_PM, true); in dp_ctrl_enable_stream_clocks()
1364 ctrl->link->link_params.rate, ctrl->dp_ctrl.pixel_rate); in dp_ctrl_enable_stream_clocks()
1371 struct dp_ctrl_private *ctrl; in dp_ctrl_host_init() local
1380 ctrl = container_of(dp_ctrl, struct dp_ctrl_private, dp_ctrl); in dp_ctrl_host_init()
1381 dp_io = &ctrl->parser->io; in dp_ctrl_host_init()
1384 ctrl->dp_ctrl.orientation = flip; in dp_ctrl_host_init()
1386 dp_catalog_ctrl_phy_reset(ctrl->catalog); in dp_ctrl_host_init()
1388 dp_catalog_ctrl_enable_irq(ctrl->catalog, true); in dp_ctrl_host_init()
1402 struct dp_ctrl_private *ctrl; in dp_ctrl_host_deinit() local
1409 ctrl = container_of(dp_ctrl, struct dp_ctrl_private, dp_ctrl); in dp_ctrl_host_deinit()
1411 dp_catalog_ctrl_enable_irq(ctrl->catalog, false); in dp_ctrl_host_deinit()
1416 static bool dp_ctrl_use_fixed_nvid(struct dp_ctrl_private *ctrl) in dp_ctrl_use_fixed_nvid() argument
1418 u8 *dpcd = ctrl->panel->dpcd; in dp_ctrl_use_fixed_nvid()
1421 edid_quirks = drm_dp_get_edid_quirks(ctrl->panel->edid); in dp_ctrl_use_fixed_nvid()
1427 return (drm_dp_has_quirk(&ctrl->panel->desc, edid_quirks, in dp_ctrl_use_fixed_nvid()
1433 static int dp_ctrl_reinitialize_mainlink(struct dp_ctrl_private *ctrl) in dp_ctrl_reinitialize_mainlink() argument
1436 struct dp_io *dp_io = &ctrl->parser->io; in dp_ctrl_reinitialize_mainlink()
1440 dp_catalog_ctrl_mainlink_ctrl(ctrl->catalog, false); in dp_ctrl_reinitialize_mainlink()
1441 opts_dp->lanes = ctrl->link->link_params.num_lanes; in dp_ctrl_reinitialize_mainlink()
1448 ret = dp_power_clk_enable(ctrl->power, DP_CTRL_PM, false); in dp_ctrl_reinitialize_mainlink()
1457 ret = dp_ctrl_enable_mainlink_clocks(ctrl); in dp_ctrl_reinitialize_mainlink()
1466 static int dp_ctrl_link_maintenance(struct dp_ctrl_private *ctrl) in dp_ctrl_link_maintenance() argument
1472 dp_ctrl_push_idle(&ctrl->dp_ctrl); in dp_ctrl_link_maintenance()
1473 dp_catalog_ctrl_reset(ctrl->catalog); in dp_ctrl_link_maintenance()
1475 ctrl->dp_ctrl.pixel_rate = ctrl->panel->dp_mode.drm_mode.clock; in dp_ctrl_link_maintenance()
1477 ret = dp_ctrl_setup_main_link(ctrl, &cr, &training_step); in dp_ctrl_link_maintenance()
1481 dp_ctrl_clear_training_pattern(ctrl); in dp_ctrl_link_maintenance()
1483 dp_catalog_ctrl_state_ctrl(ctrl->catalog, DP_STATE_CTRL_SEND_VIDEO); in dp_ctrl_link_maintenance()
1485 ret = dp_ctrl_wait4video_ready(ctrl); in dp_ctrl_link_maintenance()
1490 static int dp_ctrl_process_phy_test_request(struct dp_ctrl_private *ctrl) in dp_ctrl_process_phy_test_request() argument
1494 if (!ctrl->link->phy_params.phy_test_pattern_sel) { in dp_ctrl_process_phy_test_request()
1504 ret = dp_ctrl_off(&ctrl->dp_ctrl); in dp_ctrl_process_phy_test_request()
1510 ret = dp_ctrl_on_link(&ctrl->dp_ctrl); in dp_ctrl_process_phy_test_request()
1512 ret = dp_ctrl_on_stream(&ctrl->dp_ctrl); in dp_ctrl_process_phy_test_request()
1519 static bool dp_ctrl_send_phy_test_pattern(struct dp_ctrl_private *ctrl) in dp_ctrl_send_phy_test_pattern() argument
1523 u32 pattern_requested = ctrl->link->phy_params.phy_test_pattern_sel; in dp_ctrl_send_phy_test_pattern()
1527 if (dp_catalog_ctrl_update_vx_px(ctrl->catalog, in dp_ctrl_send_phy_test_pattern()
1528 ctrl->link->phy_params.v_level, in dp_ctrl_send_phy_test_pattern()
1529 ctrl->link->phy_params.p_level)) { in dp_ctrl_send_phy_test_pattern()
1533 dp_catalog_ctrl_send_phy_pattern(ctrl->catalog, pattern_requested); in dp_ctrl_send_phy_test_pattern()
1534 dp_ctrl_update_vx_px(ctrl); in dp_ctrl_send_phy_test_pattern()
1535 dp_link_send_test_response(ctrl->link); in dp_ctrl_send_phy_test_pattern()
1537 pattern_sent = dp_catalog_ctrl_read_phy_pattern(ctrl->catalog); in dp_ctrl_send_phy_test_pattern()
1573 struct dp_ctrl_private *ctrl; in dp_ctrl_handle_sink_request() local
1581 ctrl = container_of(dp_ctrl, struct dp_ctrl_private, dp_ctrl); in dp_ctrl_handle_sink_request()
1582 sink_request = ctrl->link->sink_request; in dp_ctrl_handle_sink_request()
1586 if (dp_ctrl_process_phy_test_request(ctrl)) { in dp_ctrl_handle_sink_request()
1593 if (dp_ctrl_link_maintenance(ctrl)) { in dp_ctrl_handle_sink_request()
1600 dp_link_send_test_response(ctrl->link); in dp_ctrl_handle_sink_request()
1601 if (dp_ctrl_link_maintenance(ctrl)) { in dp_ctrl_handle_sink_request()
1611 struct dp_ctrl_private *ctrl; in dp_ctrl_on_link() local
1621 ctrl = container_of(dp_ctrl, struct dp_ctrl_private, dp_ctrl); in dp_ctrl_on_link()
1623 rate = ctrl->panel->link_info.rate; in dp_ctrl_on_link()
1625 dp_power_clk_enable(ctrl->power, DP_CORE_PM, true); in dp_ctrl_on_link()
1627 if (ctrl->link->sink_request & DP_TEST_LINK_PHY_TEST_PATTERN) { in dp_ctrl_on_link()
1629 if (!ctrl->panel->dp_mode.drm_mode.clock) in dp_ctrl_on_link()
1630 ctrl->dp_ctrl.pixel_rate = phy_cts_pixel_clk_khz; in dp_ctrl_on_link()
1632 ctrl->link->link_params.rate = rate; in dp_ctrl_on_link()
1633 ctrl->link->link_params.num_lanes = in dp_ctrl_on_link()
1634 ctrl->panel->link_info.num_lanes; in dp_ctrl_on_link()
1635 ctrl->dp_ctrl.pixel_rate = ctrl->panel->dp_mode.drm_mode.clock; in dp_ctrl_on_link()
1639 ctrl->link->link_params.rate, in dp_ctrl_on_link()
1640 ctrl->link->link_params.num_lanes, ctrl->dp_ctrl.pixel_rate); in dp_ctrl_on_link()
1642 rc = dp_ctrl_enable_mainlink_clocks(ctrl); in dp_ctrl_on_link()
1646 ctrl->link->phy_params.p_level = 0; in dp_ctrl_on_link()
1647 ctrl->link->phy_params.v_level = 0; in dp_ctrl_on_link()
1650 !atomic_read(&ctrl->dp_ctrl.aborted)) { in dp_ctrl_on_link()
1651 rc = dp_ctrl_reinitialize_mainlink(ctrl); in dp_ctrl_on_link()
1659 rc = dp_ctrl_setup_main_link(ctrl, &cr, &training_step); in dp_ctrl_on_link()
1665 rc = dp_ctrl_link_rate_down_shift(ctrl); in dp_ctrl_on_link()
1672 rc = dp_ctrl_link_lane_down_shift(ctrl); in dp_ctrl_on_link()
1684 rc = dp_ctrl_link_lane_down_shift(ctrl); in dp_ctrl_on_link()
1692 if (ctrl->link->sink_request & DP_TEST_LINK_PHY_TEST_PATTERN) in dp_ctrl_on_link()
1696 dp_ctrl_clear_training_pattern(ctrl); in dp_ctrl_on_link()
1713 struct dp_ctrl_private *ctrl; in dp_ctrl_on_stream() local
1718 ctrl = container_of(dp_ctrl, struct dp_ctrl_private, dp_ctrl); in dp_ctrl_on_stream()
1720 rate = ctrl->panel->link_info.rate; in dp_ctrl_on_stream()
1722 ctrl->link->link_params.rate = rate; in dp_ctrl_on_stream()
1723 ctrl->link->link_params.num_lanes = ctrl->panel->link_info.num_lanes; in dp_ctrl_on_stream()
1724 ctrl->dp_ctrl.pixel_rate = ctrl->panel->dp_mode.drm_mode.clock; in dp_ctrl_on_stream()
1727 ctrl->link->link_params.rate, in dp_ctrl_on_stream()
1728 ctrl->link->link_params.num_lanes, ctrl->dp_ctrl.pixel_rate); in dp_ctrl_on_stream()
1730 if (!dp_power_clk_status(ctrl->power, DP_CTRL_PM)) { /* link clk is off */ in dp_ctrl_on_stream()
1731 ret = dp_ctrl_enable_mainlink_clocks(ctrl); in dp_ctrl_on_stream()
1738 ret = dp_ctrl_enable_stream_clocks(ctrl); in dp_ctrl_on_stream()
1744 if (ctrl->link->sink_request & DP_TEST_LINK_PHY_TEST_PATTERN) { in dp_ctrl_on_stream()
1745 dp_ctrl_send_phy_test_pattern(ctrl); in dp_ctrl_on_stream()
1753 dp_ctrl_configure_source_params(ctrl); in dp_ctrl_on_stream()
1755 dp_catalog_ctrl_config_msa(ctrl->catalog, in dp_ctrl_on_stream()
1756 ctrl->link->link_params.rate, in dp_ctrl_on_stream()
1757 ctrl->dp_ctrl.pixel_rate, dp_ctrl_use_fixed_nvid(ctrl)); in dp_ctrl_on_stream()
1759 reinit_completion(&ctrl->video_comp); in dp_ctrl_on_stream()
1761 dp_ctrl_setup_tr_unit(ctrl); in dp_ctrl_on_stream()
1763 dp_catalog_ctrl_state_ctrl(ctrl->catalog, DP_STATE_CTRL_SEND_VIDEO); in dp_ctrl_on_stream()
1765 ret = dp_ctrl_wait4video_ready(ctrl); in dp_ctrl_on_stream()
1769 mainlink_ready = dp_catalog_ctrl_mainlink_ready(ctrl->catalog); in dp_ctrl_on_stream()
1778 struct dp_ctrl_private *ctrl; in dp_ctrl_off() local
1786 ctrl = container_of(dp_ctrl, struct dp_ctrl_private, dp_ctrl); in dp_ctrl_off()
1787 dp_io = &ctrl->parser->io; in dp_ctrl_off()
1790 dp_catalog_ctrl_mainlink_ctrl(ctrl->catalog, false); in dp_ctrl_off()
1792 dp_catalog_ctrl_reset(ctrl->catalog); in dp_ctrl_off()
1794 ret = dp_power_clk_enable(ctrl->power, DP_STREAM_PM, false); in dp_ctrl_off()
1798 ret = dp_power_clk_enable(ctrl->power, DP_CTRL_PM, false); in dp_ctrl_off()
1812 struct dp_ctrl_private *ctrl; in dp_ctrl_isr() local
1818 ctrl = container_of(dp_ctrl, struct dp_ctrl_private, dp_ctrl); in dp_ctrl_isr()
1820 isr = dp_catalog_ctrl_get_interrupt(ctrl->catalog); in dp_ctrl_isr()
1824 complete(&ctrl->video_comp); in dp_ctrl_isr()
1829 complete(&ctrl->idle_comp); in dp_ctrl_isr()
1838 struct dp_ctrl_private *ctrl; in dp_ctrl_get() local
1846 ctrl = devm_kzalloc(dev, sizeof(*ctrl), GFP_KERNEL); in dp_ctrl_get()
1847 if (!ctrl) { in dp_ctrl_get()
1852 init_completion(&ctrl->idle_comp); in dp_ctrl_get()
1853 init_completion(&ctrl->video_comp); in dp_ctrl_get()
1856 ctrl->parser = parser; in dp_ctrl_get()
1857 ctrl->panel = panel; in dp_ctrl_get()
1858 ctrl->power = power; in dp_ctrl_get()
1859 ctrl->aux = aux; in dp_ctrl_get()
1860 ctrl->link = link; in dp_ctrl_get()
1861 ctrl->catalog = catalog; in dp_ctrl_get()
1862 ctrl->dev = dev; in dp_ctrl_get()
1864 return &ctrl->dp_ctrl; in dp_ctrl_get()