drm/panel: Add Sharp LQ101R1SX01 support

This panel requires dual-channel mode. The device accepts command-mode
data on 8 lanes and will therefore need a dual-channel DSI controller.
The two interfaces that make up this device need to be instantiated in
the controllers that gang up to provide the dual-channel DSI host.

Reviewed-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Thierry Reding <treding@nvidia.com>
---
Changes in v5:
- use proper specifiers for printing ssize_t

Changes in v4:
- use low power mode since highspeed message transfers don't work
- clarify required and optional properties for both DSI links
- power off panel when .prepare() fails
- properly drop reference to DSI-LINK2
- don't allocate memory for DSI-LINK2
- propagate errors on failure
drm/panel: Flesh out kerneldoc

Write more complete kerneldoc comments for the DRM panel API and
integrate the helpers in the DRM DocBook reference.

Signed-off-by: Thierry Reding <treding@nvidia.com>
core: Add generic object registry implementation

Add a generic implementation of an object registry. This targets drivers
and subsystems that provide auxiliary objects that other drivers need to
look up. The goal is to put the difficult parts (keep object references,
module usage count, ...) into core code so that individual subsystems do
not have to deal with them.

The intention is for subsystems to instantiate a struct registry and use
a struct registry_record embedded into a subsystem-specific structure to
provide a subsystem-specific API around that.

Signed-off-by: Thierry Reding <treding@nvidia.com>
---
Changes in v2:
- warn if the last reference is released on a registered record
- keep a reference to a record while it's registered
drm/panel: Use generic object registry

Convert to the new generic object registry and introduce proper object
and module reference counting. This should make panel registration and
removal a lot more robust.

Signed-off-by: Thierry Reding <treding@nvidia.com>
drm/panel: Drop driver references to panels

With proper reference counting in place, make sure that drivers drop
their private references when unloading.

Signed-off-by: Thierry Reding <treding@nvidia.com>