<pre>
Hi, Hsiao-chien:
On Tue, 2023-10-17 at 14:47 +0800, Hsiao Chien Sung wrote:
> Set DRM mode configs limitation accroding to the
> hardware capabilities.
>
> Signed-off-by: Hsiao Chien Sung <shawn.sung@mediatek.com>
> ---
> drivers/gpu/drm/mediatek/mtk_drm_drv.c | 28 ++++++++++++++++++----
> ----
> drivers/gpu/drm/mediatek/mtk_drm_drv.h | 17 ++++++++++++++++
> 2 files changed, 37 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> index 5d551bff6b3f..a4b740420ebb 100644
> --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> @@ -304,6 +304,7 @@ static const struct mtk_mmsys_driver_data
> mt8188_vdosys0_driver_data = {
> .conn_routes = mt8188_mtk_ddp_main_routes,
> .conn_routes_num = ARRAY_SIZE(mt8188_mtk_ddp_main_routes),
> .mmsys_dev_num = 2,
> +.max_pitch = GENMASK(15, 0),
> };
>
> static const struct mtk_mmsys_driver_data mt8192_mmsys_driver_data =
> {
> @@ -318,6 +319,7 @@ static const struct mtk_mmsys_driver_data
> mt8195_vdosys0_driver_data = {
> .main_path = mt8195_mtk_ddp_main,
> .main_len = ARRAY_SIZE(mt8195_mtk_ddp_main),
> .mmsys_dev_num = 2,
> +.max_pitch = GENMASK(15, 0),
> };
>
> static const struct mtk_mmsys_driver_data mt8195_vdosys1_driver_data
> = {
> @@ -325,6 +327,7 @@ static const struct mtk_mmsys_driver_data
> mt8195_vdosys1_driver_data = {
> .ext_len = ARRAY_SIZE(mt8195_mtk_ddp_ext),
> .mmsys_id = 1,
> .mmsys_dev_num = 2,
> +.max_pitch = GENMASK(15, 0),
> };
>
> static const struct of_device_id mtk_drm_of_ids[] = {
> @@ -463,16 +466,16 @@ static int mtk_drm_kms_init(struct drm_device
> *drm)
> if (ret)
> goto put_mutex_dev;
>
> -drm->mode_config.min_width = 64;
> -drm->mode_config.min_height = 64;
> -
> /*
> - * set max width and height as default value(4096x4096).
> - * this value would be used to check framebuffer size
> limitation
> - * at drm_mode_addfb().
> + * Set default values for drm mode config
> + * these values will be referenced by drm_mode_addfb() as
> + * frame buffer size limitation.
> */
> -drm->mode_config.max_width = 4096;
> -drm->mode_config.max_height = 4096;
> +drm->mode_config.min_width = 1;
> +drm->mode_config.min_height = 1;
> +drm->mode_config.cursor_width = 512;
> +drm->mode_config.cursor_height = 512;
You change this for mt8173 and mt8183. Are you sure this is correct?
Regards,
CK
> +
> drm->mode_config.funcs = &mtk_drm_mode_config_funcs;
> drm->mode_config.helper_private = &mtk_drm_mode_config_helpers;
>
> @@ -502,6 +505,15 @@ static int mtk_drm_kms_init(struct drm_device
> *drm)
> for (j = 0; j < private->data->mmsys_dev_num; j++) {
> priv_n = private->all_drm_private[j];
>
> +if (priv_n->data->max_pitch) {
> +/* Save 4 bytes for the color depth
> (pitch = width x bpp) */
> +drm->mode_config.max_width = priv_n-
> >data->max_pitch >> 2;
> +drm->mode_config.max_height = priv_n-
> >data->max_pitch >> 2;
> +} else {
> +drm->mode_config.max_width = 4096;
> +drm->mode_config.max_height = 4096;
> +}
> +
> if (i == 0 && priv_n->data->main_len) {
> ret = mtk_drm_crtc_create(drm, priv_n-
> >data->main_path,
> priv_n->data-
> >main_len, j,
> diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.h
> b/drivers/gpu/drm/mediatek/mtk_drm_drv.h
> index d2efd715699f..833ecee855bb 100644
> --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.h
> +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.h
> @@ -28,6 +28,21 @@ struct mtk_drm_route {
> const unsigned int *route_ddp;
> };
>
> +/**
> + * struct mtk_mmsys_driver_data - capabilities for the mmsys
> + * @main_path: path of the main display
> + * @main_len: length of the main display path
> + * @ext_path: path of the external display
> + * @ext_len: length of the external display path
> + * @third_path: path of the third display
> + * @third_len: length of the third display path
> + * @conn_routes: routing table of all the possible connectors
> + * @conn_routes_num: number of the routing table for the connectors
> + * @shadow_register: whether or not shadow register is enabled
> + * @mmsys_id: multi-media system ID
> + * @mmsys_dev_num: number of devices for in the mmsys as a whole
> + * @max_pitch: maximum pitch in bytes that the mmsys supports
> + */
> struct mtk_mmsys_driver_data {
> const unsigned int *main_path;
> unsigned int main_len;
> @@ -41,6 +56,8 @@ struct mtk_mmsys_driver_data {
> bool shadow_register;
> unsigned int mmsys_id;
> unsigned int mmsys_dev_num;
> +
> +u32 max_pitch;
> };
>
> struct mtk_drm_private {
</pre><!--type:text--><!--{--><pre>************* MEDIATEK Confidentiality Notice ********************
The information contained in this e-mail message (including any
attachments) may be confidential, proprietary, privileged, or otherwise
exempt from disclosure under applicable laws. It is intended to be
conveyed only to the designated recipient(s). Any use, dissemination,
distribution, printing, retaining or copying of this e-mail (including its
attachments) by unintended recipient(s) is strictly prohibited and may
be unlawful. If you are not an intended recipient of this e-mail, or believe
that you have received this e-mail in error, please notify the sender
immediately (by replying to this e-mail), delete any and all copies of
this e-mail (including any attachments) from your system, and do not
disclose the content of this e-mail to any other person. Thank you!
</pre><!--}-->