|  | =============================================================================== | 
|  | TODOs | 
|  | =============================================================================== | 
|  |  | 
|  | 1. Base this on drm-next - WIP | 
|  |  | 
|  |  | 
|  | 2. Cleanup commit history | 
|  |  | 
|  |  | 
|  | 3. WIP - Drop page flip helper and use DRM's version | 
|  |  | 
|  |  | 
|  | 4. DONE - Flatten all DC objects | 
|  | * dc_stream/core_stream/stream should just be dc_stream | 
|  | * Same for other DC objects | 
|  |  | 
|  | "Is there any major reason to keep all those abstractions? | 
|  |  | 
|  | Could you collapse everything into struct dc_stream? | 
|  |  | 
|  | I haven't looked recently but I didn't get the impression there was a | 
|  | lot of design around what was public/protected, more whatever needed | 
|  | to be used by someone else was in public." | 
|  | ~ Dave Airlie | 
|  |  | 
|  |  | 
|  | 5. DONE - Rename DC objects to align more with DRM | 
|  | * dc_surface -> dc_plane_state | 
|  | * dc_stream -> dc_stream_state | 
|  |  | 
|  |  | 
|  | 6. DONE - Per-plane and per-stream validation | 
|  |  | 
|  |  | 
|  | 7. WIP - Per-plane and per-stream commit | 
|  |  | 
|  |  | 
|  | 8. WIP - Split pipe_ctx into plane and stream resource structs | 
|  |  | 
|  |  | 
|  | 9. Attach plane and stream reources to state object instead of validate_context | 
|  |  | 
|  |  | 
|  | 10. Remove dc_edid_caps and drm_helpers_parse_edid_caps | 
|  | * Use drm_display_info instead | 
|  | * Remove DC's edid quirks and rely on DRM's quirks (add quirks if needed) | 
|  |  | 
|  | "Making sure you use the sink-specific helper libraries and kernel | 
|  | subsystems, since there's really no good reason to have 2nd | 
|  | implementation of those in the kernel. Looks likes that's done for mst | 
|  | and edid parsing. There's still a bit a midlayer feeling to the edid | 
|  | parsing side (e.g. dc_edid_caps and dm_helpers_parse_edid_caps, I | 
|  | think it'd be much better if you convert that over to reading stuff | 
|  | from drm_display_info and if needed, push stuff into the core). Also, | 
|  | I can't come up with a good reason why DC needs all this (except to | 
|  | reimplement half of our edid quirk table, which really isn't a good | 
|  | idea). Might be good if you put this onto the list of things to fix | 
|  | long-term, but imo not a blocker. Definitely make sure new stuff | 
|  | doesn't slip in (i.e. if you start adding edid quirks to DC instead of | 
|  | the drm core, refactoring to use the core edid stuff was pointless)." | 
|  | ~ Daniel Vetter | 
|  |  | 
|  |  | 
|  | 11. Remove dc/i2caux. This folder can be somewhat misleading. It's basically an | 
|  | overy complicated HW programming function for sendind and receiving i2c/aux | 
|  | commands. We can greatly simplify that and move it into dc/dceXYZ like other | 
|  | HW blocks. | 
|  |  | 
|  | 12. drm_modeset_lock in MST should no longer be needed in recent kernels | 
|  | * Adopt appropriate locking scheme | 
|  |  | 
|  | 13. get_modes and best_encoder callbacks look a bit funny. Can probably rip out | 
|  | a few indirections, and consider removing entirely and using the | 
|  | drm_atomic_helper_best_encoder default behaviour. | 
|  |  | 
|  | 14. core/dc_debug.c, consider switching to the atomic state debug helpers and | 
|  | moving all your driver state printing into the various atomic_print_state | 
|  | callbacks. There's also plans to expose this stuff in a standard way across all | 
|  | drivers, to make debugging userspace compositors easier across different hw. | 
|  |  | 
|  | 15. Move DP/HDMI dual mode adaptors to drm_dp_dual_mode_helper.c. See | 
|  | dal_ddc_service_i2c_query_dp_dual_mode_adaptor. | 
|  |  | 
|  | 16. Move to core SCDC helpers (I think those are new since initial DC review). | 
|  |  | 
|  | 17. There's still a pretty massive layer cake around dp aux and DPCD handling, | 
|  | with like 3 levels of abstraction and using your own structures instead of the | 
|  | stuff in drm_dp_helper.h. drm_dp_helper.h isn't really great and already has 2 | 
|  | incompatible styles, just means more reasons not to add a third (or well third | 
|  | one gets to do the cleanup refactor). | 
|  |  | 
|  | 18. There's a pile of sink handling code, both for DP and HDMI where I didn't | 
|  | immediately recognize the standard. I think long term it'd be best for the drm | 
|  | subsystem if we try to move as much of that into helpers/core as possible, and | 
|  | share it with drivers. But that's a very long term goal, and by far not just an | 
|  | issue with DC - other drivers, especially around DP sink handling, are equally | 
|  | guilty. | 
|  |  | 
|  | 19. DONE - The DC logger is still a rather sore thing, but I know that the | 
|  | DRM_DEBUG stuff just isn't up to the challenges either. We need to figure out | 
|  | something that integrates better with DRM and linux debug printing, while not | 
|  | being useless with filtering output. dynamic debug printing might be an option. | 
|  |  | 
|  | 20. Use kernel i2c device to program HDMI retimer. Some boards have an HDMI | 
|  | retimer that we need to program to pass PHY compliance. Currently that's | 
|  | bypassing the i2c device and goes directly to HW. This should be changed. | 
|  |  | 
|  | 21. Remove vector.c from dc/basics. It's used in DDC code which can probably | 
|  | be simplified enough to no longer need a vector implementation. |