Well he said "the Ingenic DRM core" aka ingenic-drm-drv.c. You do have access to the main drm_device in the ingenic_drm_bind() function, so you can add it there (with a cleanup function calling drm_kms_helper_poll_fini() registered with drmm_add_action_or_reset()).
Well, do you really want to mix HPD detection between connector, Synopsys bridge and Ingenic DRM core? These are independent...
Or should be accessed only through the bridge chain pointers.
IMHO we should keep separate functions separate.
And maybe this should also be conditional? Maybe not depend on compatible = jz4780 but compatible = ci20?
Looks to me to be a quick fix in the wrong place.
Let's fix the CSC issue first.
BR,
Nikolaus