Re: [PATCH v3 7/9] drm/komeda: Attach komeda_dev to DRM-KMS
On Thu, Dec 27, 2018 at 10:31:52PM +0800, Liviu Dudau wrote: > On Thu, Dec 27, 2018 at 07:09:07AM +, james qian wang (Arm Technology > China) wrote: > > On Mon, Dec 24, 2018 at 08:32:14PM +0800, Liviu Dudau wrote: > > > On Fri, Dec 21, 2018 at 10:00:33AM +, james qian wang (Arm Technology > > > China) wrote: > > > > Add komeda_kms abstracton to attach komeda_dev to DRM-KMS > > > > CRTC: according to the komeda_pipeline > > > > PLANE: according to komeda_layer (layer input pipeline) > > > > PRIVATE_OBJS: komeda_pipeline/component all will be treat as > > > > private_objs > > > > > > > > komeda_kms is for connecting DRM-KMS and komeda_dev, like reporting the > > > > kms object properties according to the komeda_dev, and pass/convert > > > > KMS's > > > > requirement to komeda_dev. > > > > > > > > Changes in v3: > > > > - Fixed style problem found by checkpatch.pl --strict. > > > > > > > > Changes in v2: > > > > - Unified abbreviation of "pipeline" to "pipe". > > > > > > > > Signed-off-by: James (Qian) Wang > > > > --- > > > > drivers/gpu/drm/arm/display/komeda/Makefile | 6 +- > > > > .../gpu/drm/arm/display/komeda/komeda_crtc.c | 106 +++ > > > > .../gpu/drm/arm/display/komeda/komeda_drv.c | 19 +- > > > > .../gpu/drm/arm/display/komeda/komeda_kms.c | 169 ++ > > > > .../gpu/drm/arm/display/komeda/komeda_kms.h | 113 > > > > .../drm/arm/display/komeda/komeda_pipeline.h | 3 + > > > > .../gpu/drm/arm/display/komeda/komeda_plane.c | 109 +++ > > > > .../arm/display/komeda/komeda_private_obj.c | 88 + > > > > 8 files changed, 608 insertions(+), 5 deletions(-) > > > > create mode 100644 drivers/gpu/drm/arm/display/komeda/komeda_crtc.c > > > > create mode 100644 drivers/gpu/drm/arm/display/komeda/komeda_kms.c > > > > create mode 100644 drivers/gpu/drm/arm/display/komeda/komeda_kms.h > > > > create mode 100644 drivers/gpu/drm/arm/display/komeda/komeda_plane.c > > > > create mode 100644 > > > > drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c > > > > > > > > diff --git a/drivers/gpu/drm/arm/display/komeda/Makefile > > > > b/drivers/gpu/drm/arm/display/komeda/Makefile > > > > index 25beae900ed2..1b875e5dc0f6 100644 > > > > --- a/drivers/gpu/drm/arm/display/komeda/Makefile > > > > +++ b/drivers/gpu/drm/arm/display/komeda/Makefile > > > > @@ -9,7 +9,11 @@ komeda-y := \ > > > > komeda_dev.o \ > > > > komeda_format_caps.o \ > > > > komeda_pipeline.o \ > > > > - komeda_framebuffer.o > > > > + komeda_framebuffer.o \ > > > > + komeda_kms.o \ > > > > + komeda_crtc.o \ > > > > + komeda_plane.o \ > > > > + komeda_private_obj.o > > > > > > > > komeda-y += \ > > > > d71/d71_dev.o > > > > diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c > > > > b/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c > > > > new file mode 100644 > > > > index ..5bb5a55f6b31 > > > > --- /dev/null > > > > +++ b/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c > > > > @@ -0,0 +1,106 @@ > > > > +// SPDX-License-Identifier: GPL-2.0 > > > > +/* > > > > + * (C) COPYRIGHT 2018 ARM Limited. All rights reserved. > > > > + * Author: James.Qian.Wang > > > > + * > > > > + */ > > > > +#include > > > > +#include > > > > +#include > > > > +#include > > > > +#include > > > > +#include > > > > +#include > > > > +#include "komeda_dev.h" > > > > +#include "komeda_kms.h" > > > > + > > > > +struct drm_crtc_helper_funcs komeda_crtc_helper_funcs = { > > > > +}; > > > > + > > > > +static const struct drm_crtc_funcs komeda_crtc_funcs = { > > > > +}; > > > > + > > > > +int komeda_kms_setup_crtcs(struct komeda_kms_dev *kms, > > > > + struct komeda_dev *mdev) > > > > +{ > > > > + struct komeda_crtc *crtc; > > > > + struct komeda_pipeline *master; > > > > + char str[16]; > > > > + int i; > > > > + > > > > + kms->n_crtcs = 0; > > > > + > > > > + for (i = 0; i < mdev->n_pipelines; i++) { > > > > + crtc = >crtcs[kms->n_crtcs]; > > > > + master = mdev->pipelines[i]; > > > > + > > > > + crtc->master = master; > > > > + crtc->slave = NULL; > > > > + > > > > + if (crtc->slave) > > > > + sprintf(str, "pipe-%d", crtc->slave->id); > > > > + else > > > > + sprintf(str, "None"); > > > > + > > > > + DRM_INFO("crtc%d: master(pipe-%d) slave(%s) output: > > > > %s.\n", > > > > +kms->n_crtcs, master->id, str, > > > > +master->of_output_dev ? > > > > +master->of_output_dev->full_name : "None"); > > > > + > > > > + kms->n_crtcs++; > > > > + } > > > > + > > > > + return 0; > > > > +} > > > > + > > > > +static struct drm_plane * > > > > +get_crtc_primary(struct komeda_kms_dev *kms, struct
Re: [PATCH v3 7/9] drm/komeda: Attach komeda_dev to DRM-KMS
On Thu, Dec 27, 2018 at 07:09:07AM +, james qian wang (Arm Technology China) wrote: > On Mon, Dec 24, 2018 at 08:32:14PM +0800, Liviu Dudau wrote: > > On Fri, Dec 21, 2018 at 10:00:33AM +, james qian wang (Arm Technology > > China) wrote: > > > Add komeda_kms abstracton to attach komeda_dev to DRM-KMS > > > CRTC: according to the komeda_pipeline > > > PLANE: according to komeda_layer (layer input pipeline) > > > PRIVATE_OBJS: komeda_pipeline/component all will be treat as > > > private_objs > > > > > > komeda_kms is for connecting DRM-KMS and komeda_dev, like reporting the > > > kms object properties according to the komeda_dev, and pass/convert KMS's > > > requirement to komeda_dev. > > > > > > Changes in v3: > > > - Fixed style problem found by checkpatch.pl --strict. > > > > > > Changes in v2: > > > - Unified abbreviation of "pipeline" to "pipe". > > > > > > Signed-off-by: James (Qian) Wang > > > --- > > > drivers/gpu/drm/arm/display/komeda/Makefile | 6 +- > > > .../gpu/drm/arm/display/komeda/komeda_crtc.c | 106 +++ > > > .../gpu/drm/arm/display/komeda/komeda_drv.c | 19 +- > > > .../gpu/drm/arm/display/komeda/komeda_kms.c | 169 ++ > > > .../gpu/drm/arm/display/komeda/komeda_kms.h | 113 > > > .../drm/arm/display/komeda/komeda_pipeline.h | 3 + > > > .../gpu/drm/arm/display/komeda/komeda_plane.c | 109 +++ > > > .../arm/display/komeda/komeda_private_obj.c | 88 + > > > 8 files changed, 608 insertions(+), 5 deletions(-) > > > create mode 100644 drivers/gpu/drm/arm/display/komeda/komeda_crtc.c > > > create mode 100644 drivers/gpu/drm/arm/display/komeda/komeda_kms.c > > > create mode 100644 drivers/gpu/drm/arm/display/komeda/komeda_kms.h > > > create mode 100644 drivers/gpu/drm/arm/display/komeda/komeda_plane.c > > > create mode 100644 > > > drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c > > > > > > diff --git a/drivers/gpu/drm/arm/display/komeda/Makefile > > > b/drivers/gpu/drm/arm/display/komeda/Makefile > > > index 25beae900ed2..1b875e5dc0f6 100644 > > > --- a/drivers/gpu/drm/arm/display/komeda/Makefile > > > +++ b/drivers/gpu/drm/arm/display/komeda/Makefile > > > @@ -9,7 +9,11 @@ komeda-y := \ > > > komeda_dev.o \ > > > komeda_format_caps.o \ > > > komeda_pipeline.o \ > > > - komeda_framebuffer.o > > > + komeda_framebuffer.o \ > > > + komeda_kms.o \ > > > + komeda_crtc.o \ > > > + komeda_plane.o \ > > > + komeda_private_obj.o > > > > > > komeda-y += \ > > > d71/d71_dev.o > > > diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c > > > b/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c > > > new file mode 100644 > > > index ..5bb5a55f6b31 > > > --- /dev/null > > > +++ b/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c > > > @@ -0,0 +1,106 @@ > > > +// SPDX-License-Identifier: GPL-2.0 > > > +/* > > > + * (C) COPYRIGHT 2018 ARM Limited. All rights reserved. > > > + * Author: James.Qian.Wang > > > + * > > > + */ > > > +#include > > > +#include > > > +#include > > > +#include > > > +#include > > > +#include > > > +#include > > > +#include "komeda_dev.h" > > > +#include "komeda_kms.h" > > > + > > > +struct drm_crtc_helper_funcs komeda_crtc_helper_funcs = { > > > +}; > > > + > > > +static const struct drm_crtc_funcs komeda_crtc_funcs = { > > > +}; > > > + > > > +int komeda_kms_setup_crtcs(struct komeda_kms_dev *kms, > > > +struct komeda_dev *mdev) > > > +{ > > > + struct komeda_crtc *crtc; > > > + struct komeda_pipeline *master; > > > + char str[16]; > > > + int i; > > > + > > > + kms->n_crtcs = 0; > > > + > > > + for (i = 0; i < mdev->n_pipelines; i++) { > > > + crtc = >crtcs[kms->n_crtcs]; > > > + master = mdev->pipelines[i]; > > > + > > > + crtc->master = master; > > > + crtc->slave = NULL; > > > + > > > + if (crtc->slave) > > > + sprintf(str, "pipe-%d", crtc->slave->id); > > > + else > > > + sprintf(str, "None"); > > > + > > > + DRM_INFO("crtc%d: master(pipe-%d) slave(%s) output: %s.\n", > > > + kms->n_crtcs, master->id, str, > > > + master->of_output_dev ? > > > + master->of_output_dev->full_name : "None"); > > > + > > > + kms->n_crtcs++; > > > + } > > > + > > > + return 0; > > > +} > > > + > > > +static struct drm_plane * > > > +get_crtc_primary(struct komeda_kms_dev *kms, struct komeda_crtc *crtc) > > > +{ > > > + struct komeda_plane *kplane; > > > + struct drm_plane *plane; > > > + > > > + drm_for_each_plane(plane, >base) { > > > + if (plane->type != DRM_PLANE_TYPE_PRIMARY) > > > + continue; > > > + > > > + kplane = to_kplane(plane); > > > + /* only master can be primary */ > > > + if (kplane->layer->base.pipeline == crtc->master) > > > + return plane; > > > + } > > > + > > > + return NULL; > > > +} > > > + > > > +static
Re: [PATCH v3 7/9] drm/komeda: Attach komeda_dev to DRM-KMS
On Thu, Dec 27, 2018 at 07:09:07AM +, james qian wang (Arm Technology China) wrote: > On Mon, Dec 24, 2018 at 08:32:14PM +0800, Liviu Dudau wrote: > > On Fri, Dec 21, 2018 at 10:00:33AM +, james qian wang (Arm Technology > > China) wrote: > > > Add komeda_kms abstracton to attach komeda_dev to DRM-KMS > > > CRTC: according to the komeda_pipeline > > > PLANE: according to komeda_layer (layer input pipeline) > > > PRIVATE_OBJS: komeda_pipeline/component all will be treat as > > > private_objs > > > > > > komeda_kms is for connecting DRM-KMS and komeda_dev, like reporting the > > > kms object properties according to the komeda_dev, and pass/convert KMS's > > > requirement to komeda_dev. > > > > > > Changes in v3: > > > - Fixed style problem found by checkpatch.pl --strict. > > > > > > Changes in v2: > > > - Unified abbreviation of "pipeline" to "pipe". > > > > > > Signed-off-by: James (Qian) Wang > > > --- > > > drivers/gpu/drm/arm/display/komeda/Makefile | 6 +- > > > .../gpu/drm/arm/display/komeda/komeda_crtc.c | 106 +++ > > > .../gpu/drm/arm/display/komeda/komeda_drv.c | 19 +- > > > .../gpu/drm/arm/display/komeda/komeda_kms.c | 169 ++ > > > .../gpu/drm/arm/display/komeda/komeda_kms.h | 113 > > > .../drm/arm/display/komeda/komeda_pipeline.h | 3 + > > > .../gpu/drm/arm/display/komeda/komeda_plane.c | 109 +++ > > > .../arm/display/komeda/komeda_private_obj.c | 88 + > > > 8 files changed, 608 insertions(+), 5 deletions(-) > > > create mode 100644 drivers/gpu/drm/arm/display/komeda/komeda_crtc.c > > > create mode 100644 drivers/gpu/drm/arm/display/komeda/komeda_kms.c > > > create mode 100644 drivers/gpu/drm/arm/display/komeda/komeda_kms.h > > > create mode 100644 drivers/gpu/drm/arm/display/komeda/komeda_plane.c > > > create mode 100644 > > > drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c > > > > > > diff --git a/drivers/gpu/drm/arm/display/komeda/Makefile > > > b/drivers/gpu/drm/arm/display/komeda/Makefile > > > index 25beae900ed2..1b875e5dc0f6 100644 > > > --- a/drivers/gpu/drm/arm/display/komeda/Makefile > > > +++ b/drivers/gpu/drm/arm/display/komeda/Makefile > > > @@ -9,7 +9,11 @@ komeda-y := \ > > > komeda_dev.o \ > > > komeda_format_caps.o \ > > > komeda_pipeline.o \ > > > - komeda_framebuffer.o > > > + komeda_framebuffer.o \ > > > + komeda_kms.o \ > > > + komeda_crtc.o \ > > > + komeda_plane.o \ > > > + komeda_private_obj.o > > > > > > komeda-y += \ > > > d71/d71_dev.o > > > diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c > > > b/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c > > > new file mode 100644 > > > index ..5bb5a55f6b31 > > > --- /dev/null > > > +++ b/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c > > > @@ -0,0 +1,106 @@ > > > +// SPDX-License-Identifier: GPL-2.0 > > > +/* > > > + * (C) COPYRIGHT 2018 ARM Limited. All rights reserved. > > > + * Author: James.Qian.Wang > > > + * > > > + */ > > > +#include > > > +#include > > > +#include > > > +#include > > > +#include > > > +#include > > > +#include > > > +#include "komeda_dev.h" > > > +#include "komeda_kms.h" > > > + > > > +struct drm_crtc_helper_funcs komeda_crtc_helper_funcs = { > > > +}; > > > + > > > +static const struct drm_crtc_funcs komeda_crtc_funcs = { > > > +}; > > > + > > > +int komeda_kms_setup_crtcs(struct komeda_kms_dev *kms, > > > +struct komeda_dev *mdev) > > > +{ > > > + struct komeda_crtc *crtc; > > > + struct komeda_pipeline *master; > > > + char str[16]; > > > + int i; > > > + > > > + kms->n_crtcs = 0; > > > + > > > + for (i = 0; i < mdev->n_pipelines; i++) { > > > + crtc = >crtcs[kms->n_crtcs]; > > > + master = mdev->pipelines[i]; > > > + > > > + crtc->master = master; > > > + crtc->slave = NULL; > > > + > > > + if (crtc->slave) > > > + sprintf(str, "pipe-%d", crtc->slave->id); > > > + else > > > + sprintf(str, "None"); > > > + > > > + DRM_INFO("crtc%d: master(pipe-%d) slave(%s) output: %s.\n", > > > + kms->n_crtcs, master->id, str, > > > + master->of_output_dev ? > > > + master->of_output_dev->full_name : "None"); > > > + > > > + kms->n_crtcs++; > > > + } > > > + > > > + return 0; > > > +} > > > + > > > +static struct drm_plane * > > > +get_crtc_primary(struct komeda_kms_dev *kms, struct komeda_crtc *crtc) > > > +{ > > > + struct komeda_plane *kplane; > > > + struct drm_plane *plane; > > > + > > > + drm_for_each_plane(plane, >base) { > > > + if (plane->type != DRM_PLANE_TYPE_PRIMARY) > > > + continue; > > > + > > > + kplane = to_kplane(plane); > > > + /* only master can be primary */ > > > + if (kplane->layer->base.pipeline == crtc->master) > > > + return plane; > > > + } > > > + > > > + return NULL; > > > +} > > > + > > > +static
Re: [PATCH v3 7/9] drm/komeda: Attach komeda_dev to DRM-KMS
On Mon, Dec 24, 2018 at 08:32:14PM +0800, Liviu Dudau wrote: > On Fri, Dec 21, 2018 at 10:00:33AM +, james qian wang (Arm Technology > China) wrote: > > Add komeda_kms abstracton to attach komeda_dev to DRM-KMS > > CRTC: according to the komeda_pipeline > > PLANE: according to komeda_layer (layer input pipeline) > > PRIVATE_OBJS: komeda_pipeline/component all will be treat as private_objs > > > > komeda_kms is for connecting DRM-KMS and komeda_dev, like reporting the > > kms object properties according to the komeda_dev, and pass/convert KMS's > > requirement to komeda_dev. > > > > Changes in v3: > > - Fixed style problem found by checkpatch.pl --strict. > > > > Changes in v2: > > - Unified abbreviation of "pipeline" to "pipe". > > > > Signed-off-by: James (Qian) Wang > > --- > > drivers/gpu/drm/arm/display/komeda/Makefile | 6 +- > > .../gpu/drm/arm/display/komeda/komeda_crtc.c | 106 +++ > > .../gpu/drm/arm/display/komeda/komeda_drv.c | 19 +- > > .../gpu/drm/arm/display/komeda/komeda_kms.c | 169 ++ > > .../gpu/drm/arm/display/komeda/komeda_kms.h | 113 > > .../drm/arm/display/komeda/komeda_pipeline.h | 3 + > > .../gpu/drm/arm/display/komeda/komeda_plane.c | 109 +++ > > .../arm/display/komeda/komeda_private_obj.c | 88 + > > 8 files changed, 608 insertions(+), 5 deletions(-) > > create mode 100644 drivers/gpu/drm/arm/display/komeda/komeda_crtc.c > > create mode 100644 drivers/gpu/drm/arm/display/komeda/komeda_kms.c > > create mode 100644 drivers/gpu/drm/arm/display/komeda/komeda_kms.h > > create mode 100644 drivers/gpu/drm/arm/display/komeda/komeda_plane.c > > create mode 100644 drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c > > > > diff --git a/drivers/gpu/drm/arm/display/komeda/Makefile > > b/drivers/gpu/drm/arm/display/komeda/Makefile > > index 25beae900ed2..1b875e5dc0f6 100644 > > --- a/drivers/gpu/drm/arm/display/komeda/Makefile > > +++ b/drivers/gpu/drm/arm/display/komeda/Makefile > > @@ -9,7 +9,11 @@ komeda-y := \ > > komeda_dev.o \ > > komeda_format_caps.o \ > > komeda_pipeline.o \ > > - komeda_framebuffer.o > > + komeda_framebuffer.o \ > > + komeda_kms.o \ > > + komeda_crtc.o \ > > + komeda_plane.o \ > > + komeda_private_obj.o > > > > komeda-y += \ > > d71/d71_dev.o > > diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c > > b/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c > > new file mode 100644 > > index ..5bb5a55f6b31 > > --- /dev/null > > +++ b/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c > > @@ -0,0 +1,106 @@ > > +// SPDX-License-Identifier: GPL-2.0 > > +/* > > + * (C) COPYRIGHT 2018 ARM Limited. All rights reserved. > > + * Author: James.Qian.Wang > > + * > > + */ > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include "komeda_dev.h" > > +#include "komeda_kms.h" > > + > > +struct drm_crtc_helper_funcs komeda_crtc_helper_funcs = { > > +}; > > + > > +static const struct drm_crtc_funcs komeda_crtc_funcs = { > > +}; > > + > > +int komeda_kms_setup_crtcs(struct komeda_kms_dev *kms, > > + struct komeda_dev *mdev) > > +{ > > + struct komeda_crtc *crtc; > > + struct komeda_pipeline *master; > > + char str[16]; > > + int i; > > + > > + kms->n_crtcs = 0; > > + > > + for (i = 0; i < mdev->n_pipelines; i++) { > > + crtc = >crtcs[kms->n_crtcs]; > > + master = mdev->pipelines[i]; > > + > > + crtc->master = master; > > + crtc->slave = NULL; > > + > > + if (crtc->slave) > > + sprintf(str, "pipe-%d", crtc->slave->id); > > + else > > + sprintf(str, "None"); > > + > > + DRM_INFO("crtc%d: master(pipe-%d) slave(%s) output: %s.\n", > > +kms->n_crtcs, master->id, str, > > +master->of_output_dev ? > > +master->of_output_dev->full_name : "None"); > > + > > + kms->n_crtcs++; > > + } > > + > > + return 0; > > +} > > + > > +static struct drm_plane * > > +get_crtc_primary(struct komeda_kms_dev *kms, struct komeda_crtc *crtc) > > +{ > > + struct komeda_plane *kplane; > > + struct drm_plane *plane; > > + > > + drm_for_each_plane(plane, >base) { > > + if (plane->type != DRM_PLANE_TYPE_PRIMARY) > > + continue; > > + > > + kplane = to_kplane(plane); > > + /* only master can be primary */ > > + if (kplane->layer->base.pipeline == crtc->master) > > + return plane; > > + } > > + > > + return NULL; > > +} > > + > > +static int komeda_crtc_add(struct komeda_kms_dev *kms, > > + struct komeda_crtc *kcrtc) > > +{ > > + struct drm_crtc *crtc = >base; > > + int err; > > + > > + err = drm_crtc_init_with_planes(>base, crtc, > > + get_crtc_primary(kms,
Re: [PATCH v3 7/9] drm/komeda: Attach komeda_dev to DRM-KMS
On Fri, Dec 21, 2018 at 10:00:33AM +, james qian wang (Arm Technology China) wrote: > Add komeda_kms abstracton to attach komeda_dev to DRM-KMS > CRTC: according to the komeda_pipeline > PLANE: according to komeda_layer (layer input pipeline) > PRIVATE_OBJS: komeda_pipeline/component all will be treat as private_objs > > komeda_kms is for connecting DRM-KMS and komeda_dev, like reporting the > kms object properties according to the komeda_dev, and pass/convert KMS's > requirement to komeda_dev. > > Changes in v3: > - Fixed style problem found by checkpatch.pl --strict. > > Changes in v2: > - Unified abbreviation of "pipeline" to "pipe". > > Signed-off-by: James (Qian) Wang > --- > drivers/gpu/drm/arm/display/komeda/Makefile | 6 +- > .../gpu/drm/arm/display/komeda/komeda_crtc.c | 106 +++ > .../gpu/drm/arm/display/komeda/komeda_drv.c | 19 +- > .../gpu/drm/arm/display/komeda/komeda_kms.c | 169 ++ > .../gpu/drm/arm/display/komeda/komeda_kms.h | 113 > .../drm/arm/display/komeda/komeda_pipeline.h | 3 + > .../gpu/drm/arm/display/komeda/komeda_plane.c | 109 +++ > .../arm/display/komeda/komeda_private_obj.c | 88 + > 8 files changed, 608 insertions(+), 5 deletions(-) > create mode 100644 drivers/gpu/drm/arm/display/komeda/komeda_crtc.c > create mode 100644 drivers/gpu/drm/arm/display/komeda/komeda_kms.c > create mode 100644 drivers/gpu/drm/arm/display/komeda/komeda_kms.h > create mode 100644 drivers/gpu/drm/arm/display/komeda/komeda_plane.c > create mode 100644 drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c > > diff --git a/drivers/gpu/drm/arm/display/komeda/Makefile > b/drivers/gpu/drm/arm/display/komeda/Makefile > index 25beae900ed2..1b875e5dc0f6 100644 > --- a/drivers/gpu/drm/arm/display/komeda/Makefile > +++ b/drivers/gpu/drm/arm/display/komeda/Makefile > @@ -9,7 +9,11 @@ komeda-y := \ > komeda_dev.o \ > komeda_format_caps.o \ > komeda_pipeline.o \ > - komeda_framebuffer.o > + komeda_framebuffer.o \ > + komeda_kms.o \ > + komeda_crtc.o \ > + komeda_plane.o \ > + komeda_private_obj.o > > komeda-y += \ > d71/d71_dev.o > diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c > b/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c > new file mode 100644 > index ..5bb5a55f6b31 > --- /dev/null > +++ b/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c > @@ -0,0 +1,106 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * (C) COPYRIGHT 2018 ARM Limited. All rights reserved. > + * Author: James.Qian.Wang > + * > + */ > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include "komeda_dev.h" > +#include "komeda_kms.h" > + > +struct drm_crtc_helper_funcs komeda_crtc_helper_funcs = { > +}; > + > +static const struct drm_crtc_funcs komeda_crtc_funcs = { > +}; > + > +int komeda_kms_setup_crtcs(struct komeda_kms_dev *kms, > +struct komeda_dev *mdev) > +{ > + struct komeda_crtc *crtc; > + struct komeda_pipeline *master; > + char str[16]; > + int i; > + > + kms->n_crtcs = 0; > + > + for (i = 0; i < mdev->n_pipelines; i++) { > + crtc = >crtcs[kms->n_crtcs]; > + master = mdev->pipelines[i]; > + > + crtc->master = master; > + crtc->slave = NULL; > + > + if (crtc->slave) > + sprintf(str, "pipe-%d", crtc->slave->id); > + else > + sprintf(str, "None"); > + > + DRM_INFO("crtc%d: master(pipe-%d) slave(%s) output: %s.\n", > + kms->n_crtcs, master->id, str, > + master->of_output_dev ? > + master->of_output_dev->full_name : "None"); > + > + kms->n_crtcs++; > + } > + > + return 0; > +} > + > +static struct drm_plane * > +get_crtc_primary(struct komeda_kms_dev *kms, struct komeda_crtc *crtc) > +{ > + struct komeda_plane *kplane; > + struct drm_plane *plane; > + > + drm_for_each_plane(plane, >base) { > + if (plane->type != DRM_PLANE_TYPE_PRIMARY) > + continue; > + > + kplane = to_kplane(plane); > + /* only master can be primary */ > + if (kplane->layer->base.pipeline == crtc->master) > + return plane; > + } > + > + return NULL; > +} > + > +static int komeda_crtc_add(struct komeda_kms_dev *kms, > +struct komeda_crtc *kcrtc) > +{ > + struct drm_crtc *crtc = >base; > + int err; > + > + err = drm_crtc_init_with_planes(>base, crtc, > + get_crtc_primary(kms, kcrtc), NULL, > + _crtc_funcs, NULL); > + if (err) > + return err; > + > + drm_crtc_helper_add(crtc, _crtc_helper_funcs); > + drm_crtc_vblank_reset(crtc); > + > + crtc->port =