Create the DRM encoder required to connect a DCP CRTC to its firmware-backed output bridge. The encoder must fit the existing MSM DRM object model while remaining independent of bridge discovery and KMS registration.
Implement the DCP encoder wrapper, allocation, and DRM object initialization. Assisted-by: LLM Signed-off-by: Jayant Shekhar <[email protected]> --- drivers/gpu/drm/msm/Makefile | 1 + drivers/gpu/drm/msm/dcp/dcp_encoder.c | 29 +++++++++++++++++++++++++++++ drivers/gpu/drm/msm/dcp/dcp_encoder.h | 16 ++++++++++++++++ 3 files changed, 46 insertions(+) diff --git a/drivers/gpu/drm/msm/Makefile b/drivers/gpu/drm/msm/Makefile index b425fefda890..4024f6b1e3cf 100644 --- a/drivers/gpu/drm/msm/Makefile +++ b/drivers/gpu/drm/msm/Makefile @@ -83,6 +83,7 @@ msm-display-$(CONFIG_DRM_MSM_DCP) += \ dcp/dcp_hfi_kms.o \ dcp/dcp_hfi_plane.o \ dcp/dcp_ipcc.o \ + dcp/dcp_encoder.o \ dcp/hfi/hfi_packer.o \ dcp/hfi/hfi_unpacker.o \ dcp/hfi/hfi_utils.o diff --git a/drivers/gpu/drm/msm/dcp/dcp_encoder.c b/drivers/gpu/drm/msm/dcp/dcp_encoder.c new file mode 100644 index 000000000000..e7a64c960bdc --- /dev/null +++ b/drivers/gpu/drm/msm/dcp/dcp_encoder.c @@ -0,0 +1,29 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + * + * DCP encoder wrapper for the CRTC-to-bridge connection. + * Hardware programming and mode sequencing are handled by the bridge and HFI. + */ + +#include <drm/drm_encoder.h> +#include <drm/drm_managed.h> + +#include "dcp_encoder.h" + +struct drm_encoder *dcp_encoder_init(struct drm_device *dev, int enc_type) +{ + struct drm_encoder *encoder; + int ret; + + encoder = drmm_kzalloc(dev, sizeof(*encoder), GFP_KERNEL); + if (!encoder) + return ERR_PTR(-ENOMEM); + + ret = drmm_encoder_init(dev, encoder, NULL, enc_type, "encoder%d", + dev->mode_config.num_encoder); + if (ret) + return ERR_PTR(ret); + + return encoder; +} diff --git a/drivers/gpu/drm/msm/dcp/dcp_encoder.h b/drivers/gpu/drm/msm/dcp/dcp_encoder.h new file mode 100644 index 000000000000..de40c9bca4bb --- /dev/null +++ b/drivers/gpu/drm/msm/dcp/dcp_encoder.h @@ -0,0 +1,16 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + * + * DCP encoder interface between the CRTC and bridge chain. + * Hardware programming is delegated to DCP firmware. + */ + +#ifndef __DCP_ENCODER_H__ +#define __DCP_ENCODER_H__ + +#include <drm/drm_encoder.h> + +struct drm_encoder *dcp_encoder_init(struct drm_device *dev, int enc_type); + +#endif /* __DCP_ENCODER_H__ */ -- 2.43.0
