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

drm/i915/hdmi: Use an intel_connector pointer everywhere

Following the convention, convert intel_hdmi.c to use an intel_connector
pointer everywhere, calling this pointer connector. If the intel
connector must be casted from a drm_connector, call this pointer
_connector and use this pointer only for the casting.

v2: Use for_each_new_intel_connector_in_state(). (Jani)

Cc: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
Link: https://lore.kernel.org/r/20250428134716.3396802-3-imre.deak@intel.com

Imre Deak 506f254e bb633ff4

+103 -86
+103 -86
drivers/gpu/drm/i915/display/intel_hdmi.c
··· 715 715 struct hdmi_avi_infoframe *frame = &crtc_state->infoframes.avi.avi; 716 716 const struct drm_display_mode *adjusted_mode = 717 717 &crtc_state->hw.adjusted_mode; 718 - struct drm_connector *connector = conn_state->connector; 718 + struct intel_connector *connector = to_intel_connector(conn_state->connector); 719 719 int ret; 720 720 721 721 if (!crtc_state->has_infoframe) ··· 724 724 crtc_state->infoframes.enable |= 725 725 intel_hdmi_infoframe_enable(HDMI_INFOFRAME_TYPE_AVI); 726 726 727 - ret = drm_hdmi_avi_infoframe_from_display_mode(frame, connector, 727 + ret = drm_hdmi_avi_infoframe_from_display_mode(frame, &connector->base, 728 728 adjusted_mode); 729 729 if (ret) 730 730 return false; ··· 743 743 crtc_state->output_format != INTEL_OUTPUT_FORMAT_RGB); 744 744 745 745 if (crtc_state->output_format == INTEL_OUTPUT_FORMAT_RGB) { 746 - drm_hdmi_avi_infoframe_quant_range(frame, connector, 746 + drm_hdmi_avi_infoframe_quant_range(frame, &connector->base, 747 747 adjusted_mode, 748 748 crtc_state->limited_color_range ? 749 749 HDMI_QUANTIZATION_RANGE_LIMITED : ··· 1938 1938 } 1939 1939 } 1940 1940 1941 - static bool intel_hdmi_sink_bpc_possible(struct drm_connector *connector, 1941 + static bool intel_hdmi_sink_bpc_possible(struct drm_connector *_connector, 1942 1942 int bpc, bool has_hdmi_sink, 1943 1943 enum intel_output_format sink_format) 1944 1944 { 1945 - const struct drm_display_info *info = &connector->display_info; 1945 + struct intel_connector *connector = to_intel_connector(_connector); 1946 + const struct drm_display_info *info = &connector->base.display_info; 1946 1947 const struct drm_hdmi_info *hdmi = &info->hdmi; 1947 1948 1948 1949 switch (bpc) { ··· 1972 1971 } 1973 1972 1974 1973 static enum drm_mode_status 1975 - intel_hdmi_mode_clock_valid(struct drm_connector *connector, int clock, 1974 + intel_hdmi_mode_clock_valid(struct drm_connector *_connector, int clock, 1976 1975 bool has_hdmi_sink, 1977 1976 enum intel_output_format sink_format) 1978 1977 { 1979 - struct intel_display *display = to_intel_display(connector->dev); 1980 - struct intel_hdmi *hdmi = intel_attached_hdmi(to_intel_connector(connector)); 1978 + struct intel_connector *connector = to_intel_connector(_connector); 1979 + struct intel_display *display = to_intel_display(connector); 1980 + struct intel_hdmi *hdmi = intel_attached_hdmi(connector); 1981 1981 enum drm_mode_status status = MODE_OK; 1982 1982 int bpc; 1983 1983 ··· 1993 1991 if (!intel_hdmi_source_bpc_possible(display, bpc)) 1994 1992 continue; 1995 1993 1996 - if (!intel_hdmi_sink_bpc_possible(connector, bpc, has_hdmi_sink, sink_format)) 1994 + if (!intel_hdmi_sink_bpc_possible(&connector->base, bpc, has_hdmi_sink, 1995 + sink_format)) 1997 1996 continue; 1998 1997 1999 1998 status = hdmi_port_clock_valid(hdmi, tmds_clock, true, has_hdmi_sink); ··· 2009 2006 } 2010 2007 2011 2008 static enum drm_mode_status 2012 - intel_hdmi_mode_valid(struct drm_connector *connector, 2009 + intel_hdmi_mode_valid(struct drm_connector *_connector, 2013 2010 const struct drm_display_mode *mode) 2014 2011 { 2015 - struct intel_display *display = to_intel_display(connector->dev); 2016 - struct intel_hdmi *hdmi = intel_attached_hdmi(to_intel_connector(connector)); 2012 + struct intel_connector *connector = to_intel_connector(_connector); 2013 + struct intel_display *display = to_intel_display(connector); 2014 + struct intel_hdmi *hdmi = intel_attached_hdmi(connector); 2017 2015 enum drm_mode_status status; 2018 2016 int clock = mode->clock; 2019 - int max_dotclk = to_i915(connector->dev)->display.cdclk.max_dotclk_freq; 2020 - bool has_hdmi_sink = intel_has_hdmi_sink(hdmi, connector->state); 2017 + int max_dotclk = display->cdclk.max_dotclk_freq; 2018 + bool has_hdmi_sink = intel_has_hdmi_sink(hdmi, connector->base.state); 2021 2019 bool ycbcr_420_only; 2022 2020 enum intel_output_format sink_format; 2023 2021 ··· 2047 2043 if (clock > 600000) 2048 2044 return MODE_CLOCK_HIGH; 2049 2045 2050 - ycbcr_420_only = drm_mode_is_420_only(&connector->display_info, mode); 2046 + ycbcr_420_only = drm_mode_is_420_only(&connector->base.display_info, mode); 2051 2047 2052 2048 if (ycbcr_420_only) 2053 2049 sink_format = INTEL_OUTPUT_FORMAT_YCBCR420; 2054 2050 else 2055 2051 sink_format = INTEL_OUTPUT_FORMAT_RGB; 2056 2052 2057 - status = intel_hdmi_mode_clock_valid(connector, clock, has_hdmi_sink, sink_format); 2053 + status = intel_hdmi_mode_clock_valid(&connector->base, clock, has_hdmi_sink, sink_format); 2058 2054 if (status != MODE_OK) { 2059 2055 if (ycbcr_420_only || 2060 - !connector->ycbcr_420_allowed || 2061 - !drm_mode_is_420_also(&connector->display_info, mode)) 2056 + !connector->base.ycbcr_420_allowed || 2057 + !drm_mode_is_420_also(&connector->base.display_info, mode)) 2062 2058 return status; 2063 2059 2064 2060 sink_format = INTEL_OUTPUT_FORMAT_YCBCR420; 2065 - status = intel_hdmi_mode_clock_valid(connector, clock, has_hdmi_sink, sink_format); 2061 + status = intel_hdmi_mode_clock_valid(&connector->base, clock, has_hdmi_sink, 2062 + sink_format); 2066 2063 if (status != MODE_OK) 2067 2064 return status; 2068 2065 } ··· 2074 2069 bool intel_hdmi_bpc_possible(const struct intel_crtc_state *crtc_state, 2075 2070 int bpc, bool has_hdmi_sink) 2076 2071 { 2077 - struct drm_atomic_state *state = crtc_state->uapi.state; 2078 - struct drm_connector_state *connector_state; 2079 - struct drm_connector *connector; 2072 + struct intel_atomic_state *state = to_intel_atomic_state(crtc_state->uapi.state); 2073 + struct intel_digital_connector_state *connector_state; 2074 + struct intel_connector *connector; 2080 2075 int i; 2081 2076 2082 - for_each_new_connector_in_state(state, connector, connector_state, i) { 2083 - if (connector_state->crtc != crtc_state->uapi.crtc) 2077 + for_each_new_intel_connector_in_state(state, connector, connector_state, i) { 2078 + if (connector_state->base.crtc != crtc_state->uapi.crtc) 2084 2079 continue; 2085 2080 2086 - if (!intel_hdmi_sink_bpc_possible(connector, bpc, has_hdmi_sink, 2081 + if (!intel_hdmi_sink_bpc_possible(&connector->base, bpc, has_hdmi_sink, 2087 2082 crtc_state->sink_format)) 2088 2083 return false; 2089 2084 } ··· 2211 2206 const struct intel_crtc_state *crtc_state, 2212 2207 const struct drm_connector_state *conn_state) 2213 2208 { 2214 - struct drm_connector *connector = conn_state->connector; 2209 + struct intel_connector *connector = to_intel_connector(conn_state->connector); 2215 2210 const struct intel_digital_connector_state *intel_conn_state = 2216 2211 to_intel_digital_connector_state(conn_state); 2217 2212 ··· 2219 2214 return false; 2220 2215 2221 2216 if (intel_conn_state->force_audio == HDMI_AUDIO_AUTO) 2222 - return connector->display_info.has_audio; 2217 + return connector->base.display_info.has_audio; 2223 2218 else 2224 2219 return intel_conn_state->force_audio == HDMI_AUDIO_ON; 2225 2220 } ··· 2323 2318 { 2324 2319 struct intel_display *display = to_intel_display(encoder); 2325 2320 struct drm_display_mode *adjusted_mode = &pipe_config->hw.adjusted_mode; 2326 - struct drm_connector *connector = conn_state->connector; 2327 - struct drm_scdc *scdc = &connector->display_info.hdmi.scdc; 2321 + struct intel_connector *connector = to_intel_connector(conn_state->connector); 2322 + struct drm_scdc *scdc = &connector->base.display_info.hdmi.scdc; 2328 2323 int ret; 2329 2324 2330 2325 if (adjusted_mode->flags & DRM_MODE_FLAG_DBLSCAN) 2331 2326 return -EINVAL; 2332 2327 2333 - if (!connector->interlace_allowed && 2328 + if (!connector->base.interlace_allowed && 2334 2329 adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE) 2335 2330 return -EINVAL; 2336 2331 ··· 2425 2420 } 2426 2421 2427 2422 static void 2428 - intel_hdmi_unset_edid(struct drm_connector *connector) 2423 + intel_hdmi_unset_edid(struct drm_connector *_connector) 2429 2424 { 2430 - struct intel_hdmi *intel_hdmi = intel_attached_hdmi(to_intel_connector(connector)); 2425 + struct intel_connector *connector = to_intel_connector(_connector); 2426 + struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector); 2431 2427 2432 2428 intel_hdmi->dp_dual_mode.type = DRM_DP_DUAL_MODE_NONE; 2433 2429 intel_hdmi->dp_dual_mode.max_tmds_clock = 0; 2434 2430 2435 - drm_edid_free(to_intel_connector(connector)->detect_edid); 2436 - to_intel_connector(connector)->detect_edid = NULL; 2431 + drm_edid_free(connector->detect_edid); 2432 + connector->detect_edid = NULL; 2437 2433 } 2438 2434 2439 2435 static void 2440 - intel_hdmi_dp_dual_mode_detect(struct drm_connector *connector) 2436 + intel_hdmi_dp_dual_mode_detect(struct drm_connector *_connector) 2441 2437 { 2442 - struct intel_display *display = to_intel_display(connector->dev); 2443 - struct intel_hdmi *hdmi = intel_attached_hdmi(to_intel_connector(connector)); 2438 + struct intel_connector *connector = to_intel_connector(_connector); 2439 + struct intel_display *display = to_intel_display(connector); 2440 + struct intel_hdmi *hdmi = intel_attached_hdmi(connector); 2444 2441 struct intel_encoder *encoder = &hdmi_to_dig_port(hdmi)->base; 2445 - struct i2c_adapter *ddc = connector->ddc; 2442 + struct i2c_adapter *ddc = connector->base.ddc; 2446 2443 enum drm_dp_dual_mode_type type; 2447 2444 2448 2445 type = drm_dp_dual_mode_detect(display->drm, ddc); ··· 2459 2452 * if the port is a dual mode capable DP port. 2460 2453 */ 2461 2454 if (type == DRM_DP_DUAL_MODE_UNKNOWN) { 2462 - if (!connector->force && 2455 + if (!connector->base.force && 2463 2456 intel_bios_encoder_supports_dp_dual_mode(encoder->devdata)) { 2464 2457 drm_dbg_kms(display->drm, 2465 2458 "Assuming DP dual mode adaptor presence based on VBT\n"); ··· 2491 2484 } 2492 2485 2493 2486 static bool 2494 - intel_hdmi_set_edid(struct drm_connector *connector) 2487 + intel_hdmi_set_edid(struct drm_connector *_connector) 2495 2488 { 2496 - struct intel_display *display = to_intel_display(connector->dev); 2497 - struct intel_hdmi *intel_hdmi = intel_attached_hdmi(to_intel_connector(connector)); 2498 - struct i2c_adapter *ddc = connector->ddc; 2489 + struct intel_connector *connector = to_intel_connector(_connector); 2490 + struct intel_display *display = to_intel_display(connector); 2491 + struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector); 2492 + struct i2c_adapter *ddc = connector->base.ddc; 2499 2493 intel_wakeref_t wakeref; 2500 2494 const struct drm_edid *drm_edid; 2501 2495 bool connected = false; 2502 2496 2503 2497 wakeref = intel_display_power_get(display, POWER_DOMAIN_GMBUS); 2504 2498 2505 - drm_edid = drm_edid_read_ddc(connector, ddc); 2499 + drm_edid = drm_edid_read_ddc(&connector->base, ddc); 2506 2500 2507 2501 if (!drm_edid && !intel_gmbus_is_forced_bit(ddc)) { 2508 2502 drm_dbg_kms(display->drm, 2509 2503 "HDMI GMBUS EDID read failed, retry using GPIO bit-banging\n"); 2510 2504 intel_gmbus_force_bit(ddc, true); 2511 - drm_edid = drm_edid_read_ddc(connector, ddc); 2505 + drm_edid = drm_edid_read_ddc(&connector->base, ddc); 2512 2506 intel_gmbus_force_bit(ddc, false); 2513 2507 } 2514 2508 2515 2509 /* Below we depend on display info having been updated */ 2516 - drm_edid_connector_update(connector, drm_edid); 2510 + drm_edid_connector_update(&connector->base, drm_edid); 2517 2511 2518 - to_intel_connector(connector)->detect_edid = drm_edid; 2512 + connector->detect_edid = drm_edid; 2519 2513 2520 2514 if (drm_edid_is_digital(drm_edid)) { 2521 - intel_hdmi_dp_dual_mode_detect(connector); 2515 + intel_hdmi_dp_dual_mode_detect(&connector->base); 2522 2516 2523 2517 connected = true; 2524 2518 } ··· 2527 2519 intel_display_power_put(display, POWER_DOMAIN_GMBUS, wakeref); 2528 2520 2529 2521 cec_notifier_set_phys_addr(intel_hdmi->cec_notifier, 2530 - connector->display_info.source_physical_address); 2522 + connector->base.display_info.source_physical_address); 2531 2523 2532 2524 return connected; 2533 2525 } 2534 2526 2535 2527 static enum drm_connector_status 2536 - intel_hdmi_detect(struct drm_connector *connector, bool force) 2528 + intel_hdmi_detect(struct drm_connector *_connector, bool force) 2537 2529 { 2538 - struct intel_display *display = to_intel_display(connector->dev); 2530 + struct intel_connector *connector = to_intel_connector(_connector); 2531 + struct intel_display *display = to_intel_display(connector); 2539 2532 enum drm_connector_status status = connector_status_disconnected; 2540 - struct intel_hdmi *intel_hdmi = intel_attached_hdmi(to_intel_connector(connector)); 2533 + struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector); 2541 2534 struct intel_encoder *encoder = &hdmi_to_dig_port(intel_hdmi)->base; 2542 2535 intel_wakeref_t wakeref; 2543 2536 2544 2537 drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s]\n", 2545 - connector->base.id, connector->name); 2538 + connector->base.base.id, connector->base.name); 2546 2539 2547 2540 if (!intel_display_device_enabled(display)) 2548 2541 return connector_status_disconnected; 2549 2542 2550 2543 if (!intel_display_driver_check_access(display)) 2551 - return connector->status; 2544 + return connector->base.status; 2552 2545 2553 2546 wakeref = intel_display_power_get(display, POWER_DOMAIN_GMBUS); 2554 2547 ··· 2557 2548 !intel_digital_port_connected(encoder)) 2558 2549 goto out; 2559 2550 2560 - intel_hdmi_unset_edid(connector); 2551 + intel_hdmi_unset_edid(&connector->base); 2561 2552 2562 - if (intel_hdmi_set_edid(connector)) 2553 + if (intel_hdmi_set_edid(&connector->base)) 2563 2554 status = connector_status_connected; 2564 2555 2565 2556 out: ··· 2572 2563 } 2573 2564 2574 2565 static void 2575 - intel_hdmi_force(struct drm_connector *connector) 2566 + intel_hdmi_force(struct drm_connector *_connector) 2576 2567 { 2577 - struct intel_display *display = to_intel_display(connector->dev); 2568 + struct intel_connector *connector = to_intel_connector(_connector); 2569 + struct intel_display *display = to_intel_display(connector); 2578 2570 2579 2571 drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s]\n", 2580 - connector->base.id, connector->name); 2572 + connector->base.base.id, connector->base.name); 2581 2573 2582 2574 if (!intel_display_driver_check_access(display)) 2583 2575 return; 2584 2576 2585 - intel_hdmi_unset_edid(connector); 2577 + intel_hdmi_unset_edid(&connector->base); 2586 2578 2587 - if (connector->status != connector_status_connected) 2579 + if (connector->base.status != connector_status_connected) 2588 2580 return; 2589 2581 2590 - intel_hdmi_set_edid(connector); 2582 + intel_hdmi_set_edid(&connector->base); 2591 2583 } 2592 2584 2593 - static int intel_hdmi_get_modes(struct drm_connector *connector) 2585 + static int intel_hdmi_get_modes(struct drm_connector *_connector) 2594 2586 { 2587 + struct intel_connector *connector = to_intel_connector(_connector); 2588 + 2595 2589 /* drm_edid_connector_update() done in ->detect() or ->force() */ 2596 - return drm_edid_connector_add_modes(connector); 2590 + return drm_edid_connector_add_modes(&connector->base); 2597 2591 } 2598 2592 2599 2593 static int 2600 - intel_hdmi_connector_register(struct drm_connector *connector) 2594 + intel_hdmi_connector_register(struct drm_connector *_connector) 2601 2595 { 2596 + struct intel_connector *connector = to_intel_connector(_connector); 2602 2597 int ret; 2603 2598 2604 - ret = intel_connector_register(connector); 2599 + ret = intel_connector_register(&connector->base); 2605 2600 if (ret) 2606 2601 return ret; 2607 2602 2608 2603 return ret; 2609 2604 } 2610 2605 2611 - static void intel_hdmi_connector_unregister(struct drm_connector *connector) 2606 + static void intel_hdmi_connector_unregister(struct drm_connector *_connector) 2612 2607 { 2613 - struct cec_notifier *n = intel_attached_hdmi(to_intel_connector(connector))->cec_notifier; 2608 + struct intel_connector *connector = to_intel_connector(_connector); 2609 + struct cec_notifier *n = intel_attached_hdmi(connector)->cec_notifier; 2614 2610 2615 2611 cec_notifier_conn_unregister(n); 2616 2612 2617 - intel_connector_unregister(connector); 2613 + intel_connector_unregister(&connector->base); 2618 2614 } 2619 2615 2620 2616 static const struct drm_connector_funcs intel_hdmi_connector_funcs = { ··· 2635 2621 .atomic_duplicate_state = intel_digital_connector_duplicate_state, 2636 2622 }; 2637 2623 2638 - static int intel_hdmi_connector_atomic_check(struct drm_connector *connector, 2624 + static int intel_hdmi_connector_atomic_check(struct drm_connector *_connector, 2639 2625 struct drm_atomic_state *state) 2640 2626 { 2641 - struct intel_display *display = to_intel_display(connector->dev); 2627 + struct intel_connector *connector = to_intel_connector(_connector); 2628 + struct intel_display *display = to_intel_display(connector); 2642 2629 2643 2630 if (HAS_DDI(display)) 2644 - return intel_digital_connector_atomic_check(connector, state); 2631 + return intel_digital_connector_atomic_check(&connector->base, state); 2645 2632 else 2646 - return g4x_hdmi_connector_atomic_check(connector, state); 2633 + return g4x_hdmi_connector_atomic_check(&connector->base, state); 2647 2634 } 2648 2635 2649 2636 static const struct drm_connector_helper_funcs intel_hdmi_connector_helper_funcs = { ··· 2654 2639 }; 2655 2640 2656 2641 static void 2657 - intel_hdmi_add_properties(struct intel_hdmi *intel_hdmi, struct drm_connector *connector) 2642 + intel_hdmi_add_properties(struct intel_hdmi *intel_hdmi, struct drm_connector *_connector) 2658 2643 { 2644 + struct intel_connector *connector = to_intel_connector(_connector); 2659 2645 struct intel_display *display = to_intel_display(intel_hdmi); 2660 2646 2661 - intel_attach_force_audio_property(connector); 2662 - intel_attach_broadcast_rgb_property(connector); 2663 - intel_attach_aspect_ratio_property(connector); 2647 + intel_attach_force_audio_property(&connector->base); 2648 + intel_attach_broadcast_rgb_property(&connector->base); 2649 + intel_attach_aspect_ratio_property(&connector->base); 2664 2650 2665 - intel_attach_hdmi_colorspace_property(connector); 2666 - drm_connector_attach_content_type_property(connector); 2651 + intel_attach_hdmi_colorspace_property(&connector->base); 2652 + drm_connector_attach_content_type_property(&connector->base); 2667 2653 2668 2654 if (DISPLAY_VER(display) >= 10) 2669 - drm_connector_attach_hdr_output_metadata_property(connector); 2655 + drm_connector_attach_hdr_output_metadata_property(&connector->base); 2670 2656 2671 2657 if (!HAS_GMCH(display)) 2672 - drm_connector_attach_max_bpc_property(connector, 8, 12); 2658 + drm_connector_attach_max_bpc_property(&connector->base, 8, 12); 2673 2659 } 2674 2660 2675 2661 /* ··· 2692 2676 * True on success, false on failure. 2693 2677 */ 2694 2678 bool intel_hdmi_handle_sink_scrambling(struct intel_encoder *encoder, 2695 - struct drm_connector *connector, 2679 + struct drm_connector *_connector, 2696 2680 bool high_tmds_clock_ratio, 2697 2681 bool scrambling) 2698 2682 { 2683 + struct intel_connector *connector = to_intel_connector(_connector); 2699 2684 struct intel_display *display = to_intel_display(encoder); 2700 2685 struct drm_scrambling *sink_scrambling = 2701 - &connector->display_info.hdmi.scdc.scrambling; 2686 + &connector->base.display_info.hdmi.scdc.scrambling; 2702 2687 2703 2688 if (!sink_scrambling->supported) 2704 2689 return true; 2705 2690 2706 2691 drm_dbg_kms(display->drm, 2707 2692 "[CONNECTOR:%d:%s] scrambling=%s, TMDS bit clock ratio=1/%d\n", 2708 - connector->base.id, connector->name, 2693 + connector->base.base.id, connector->base.name, 2709 2694 str_yes_no(scrambling), high_tmds_clock_ratio ? 40 : 10); 2710 2695 2711 2696 /* Set TMDS bit clock ratio to 1/40 or 1/10, and enable/disable scrambling */ 2712 - return drm_scdc_set_high_tmds_clock_ratio(connector, high_tmds_clock_ratio) && 2713 - drm_scdc_set_scrambling(connector, scrambling); 2697 + return drm_scdc_set_high_tmds_clock_ratio(&connector->base, high_tmds_clock_ratio) && 2698 + drm_scdc_set_scrambling(&connector->base, scrambling); 2714 2699 } 2715 2700 2716 2701 static u8 chv_encoder_to_ddc_pin(struct intel_encoder *encoder)