* [PATCH 1/2] drm/exynos: ipp: fix wrong index referencing a config element
@ 2015-06-09 3:45 Hyungwon Hwang
2015-06-09 3:45 ` [PATCH 2/2] drm/exynos: ipp: validate a GEM handle with multiple planes Hyungwon Hwang
2015-06-11 14:53 ` [PATCH 1/2] drm/exynos: ipp: fix wrong index referencing a config element Inki Dae
0 siblings, 2 replies; 6+ messages in thread
From: Hyungwon Hwang @ 2015-06-09 3:45 UTC (permalink / raw)
To: dri-devel, linux-samsung-soc, inki.dae
Cc: sw0312.kim, jy0922.shim, Hyungwon Hwang
Config depends on the opreation. So it must be referenced by an
operation id, not a property id.
Signed-off-by: Hyungwon Hwang <human.hwang@samsung.com>
---
drivers/gpu/drm/exynos/exynos_drm_ipp.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_ipp.c b/drivers/gpu/drm/exynos/exynos_drm_ipp.c
index b7f1cbc..54c5cf4 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_ipp.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_ipp.c
@@ -486,8 +486,7 @@ static int ipp_validate_mem_node(struct drm_device *drm_dev,
unsigned int bpp;
int i;
- /* The property id should already be varified */
- ipp_cfg = &c_node->property.config[m_node->prop_id];
+ ipp_cfg = &c_node->property.config[m_node->ops_id];
num_plane = drm_format_num_planes(ipp_cfg->fmt);
/**
--
1.9.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/2] drm/exynos: ipp: validate a GEM handle with multiple planes
2015-06-09 3:45 [PATCH 1/2] drm/exynos: ipp: fix wrong index referencing a config element Hyungwon Hwang
@ 2015-06-09 3:45 ` Hyungwon Hwang
2015-06-11 14:53 ` Inki Dae
2015-06-11 14:53 ` [PATCH 1/2] drm/exynos: ipp: fix wrong index referencing a config element Inki Dae
1 sibling, 1 reply; 6+ messages in thread
From: Hyungwon Hwang @ 2015-06-09 3:45 UTC (permalink / raw)
To: dri-devel, linux-samsung-soc, inki.dae
Cc: sw0312.kim, jy0922.shim, Hyungwon Hwang
FIMC & GSC driver can calculate the offset of planes. So there are
use cases which IPP receives just one GEM handle of an image with
multiple plane. This patch extends ipp_validate_mem_node() to validate
this case.
Signed-off-by: Hyungwon Hwang <human.hwang@samsung.com>
---
drivers/gpu/drm/exynos/exynos_drm_ipp.c | 51 ++++++++++++++++++++++++---------
1 file changed, 38 insertions(+), 13 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_ipp.c b/drivers/gpu/drm/exynos/exynos_drm_ipp.c
index 54c5cf4..b3dc778 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_ipp.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_ipp.c
@@ -482,8 +482,8 @@ static int ipp_validate_mem_node(struct drm_device *drm_dev,
{
struct drm_exynos_ipp_config *ipp_cfg;
unsigned int num_plane;
- unsigned long min_size, size;
- unsigned int bpp;
+ unsigned long size, buf_size = 0, plane_size, img_size = 0;
+ unsigned int bpp, width, height;
int i;
ipp_cfg = &c_node->property.config[m_node->ops_id];
@@ -497,20 +497,45 @@ static int ipp_validate_mem_node(struct drm_device *drm_dev,
* but it seems more than enough
*/
for (i = 0; i < num_plane; ++i) {
- if (!m_node->buf_info.handles[i]) {
- DRM_ERROR("invalid handle for plane %d\n", i);
- return -EINVAL;
- }
+ width = ipp_cfg->sz.hsize;
+ height = ipp_cfg->sz.vsize;
bpp = drm_format_plane_cpp(ipp_cfg->fmt, i);
- min_size = (ipp_cfg->sz.hsize * ipp_cfg->sz.vsize * bpp) >> 3;
- size = exynos_drm_gem_get_size(drm_dev,
- m_node->buf_info.handles[i],
- c_node->filp);
- if (min_size > size) {
- DRM_ERROR("invalid size for plane %d\n", i);
- return -EINVAL;
+
+ /*
+ * The result of drm_format_plane_cpp() for chroma planes must
+ * be used with drm_format_xxxx_chroma_subsampling() for
+ * correct result.
+ */
+ if (i > 0) {
+ width /= drm_format_horz_chroma_subsampling(
+ ipp_cfg->fmt);
+ height /= drm_format_vert_chroma_subsampling(
+ ipp_cfg->fmt);
}
+ plane_size = width * height * bpp;
+ img_size += plane_size;
+
+ if (m_node->buf_info.handles[i]) {
+ size = exynos_drm_gem_get_size(drm_dev,
+ m_node->buf_info.handles[i],
+ c_node->filp);
+ if (plane_size > size) {
+ DRM_ERROR(
+ "buffer %d is smaller than required\n",
+ i);
+ return -EINVAL;
+ }
+
+ buf_size += size;
+ }
+ }
+
+ if (buf_size < img_size) {
+ DRM_ERROR("size of buffers(%lu) is smaller than image(%lu)\n",
+ buf_size, img_size);
+ return -EINVAL;
}
+
return 0;
}
--
1.9.1
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH 2/2] drm/exynos: ipp: validate a GEM handle with multiple planes
2015-06-09 3:45 ` [PATCH 2/2] drm/exynos: ipp: validate a GEM handle with multiple planes Hyungwon Hwang
@ 2015-06-11 14:53 ` Inki Dae
0 siblings, 0 replies; 6+ messages in thread
From: Inki Dae @ 2015-06-11 14:53 UTC (permalink / raw)
To: Hyungwon Hwang; +Cc: dri-devel, linux-samsung-soc, sw0312.kim, jy0922.shim
On 2015년 06월 09일 12:45, Hyungwon Hwang wrote:
> FIMC & GSC driver can calculate the offset of planes. So there are
> use cases which IPP receives just one GEM handle of an image with
> multiple plane. This patch extends ipp_validate_mem_node() to validate
> this case.
Applied.
Thanks,
Inki Dae
>
> Signed-off-by: Hyungwon Hwang <human.hwang@samsung.com>
> ---
> drivers/gpu/drm/exynos/exynos_drm_ipp.c | 51 ++++++++++++++++++++++++---------
> 1 file changed, 38 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_ipp.c b/drivers/gpu/drm/exynos/exynos_drm_ipp.c
> index 54c5cf4..b3dc778 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_ipp.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_ipp.c
> @@ -482,8 +482,8 @@ static int ipp_validate_mem_node(struct drm_device *drm_dev,
> {
> struct drm_exynos_ipp_config *ipp_cfg;
> unsigned int num_plane;
> - unsigned long min_size, size;
> - unsigned int bpp;
> + unsigned long size, buf_size = 0, plane_size, img_size = 0;
> + unsigned int bpp, width, height;
> int i;
>
> ipp_cfg = &c_node->property.config[m_node->ops_id];
> @@ -497,20 +497,45 @@ static int ipp_validate_mem_node(struct drm_device *drm_dev,
> * but it seems more than enough
> */
> for (i = 0; i < num_plane; ++i) {
> - if (!m_node->buf_info.handles[i]) {
> - DRM_ERROR("invalid handle for plane %d\n", i);
> - return -EINVAL;
> - }
> + width = ipp_cfg->sz.hsize;
> + height = ipp_cfg->sz.vsize;
> bpp = drm_format_plane_cpp(ipp_cfg->fmt, i);
> - min_size = (ipp_cfg->sz.hsize * ipp_cfg->sz.vsize * bpp) >> 3;
> - size = exynos_drm_gem_get_size(drm_dev,
> - m_node->buf_info.handles[i],
> - c_node->filp);
> - if (min_size > size) {
> - DRM_ERROR("invalid size for plane %d\n", i);
> - return -EINVAL;
> +
> + /*
> + * The result of drm_format_plane_cpp() for chroma planes must
> + * be used with drm_format_xxxx_chroma_subsampling() for
> + * correct result.
> + */
> + if (i > 0) {
> + width /= drm_format_horz_chroma_subsampling(
> + ipp_cfg->fmt);
> + height /= drm_format_vert_chroma_subsampling(
> + ipp_cfg->fmt);
> }
> + plane_size = width * height * bpp;
> + img_size += plane_size;
> +
> + if (m_node->buf_info.handles[i]) {
> + size = exynos_drm_gem_get_size(drm_dev,
> + m_node->buf_info.handles[i],
> + c_node->filp);
> + if (plane_size > size) {
> + DRM_ERROR(
> + "buffer %d is smaller than required\n",
> + i);
> + return -EINVAL;
> + }
> +
> + buf_size += size;
> + }
> + }
> +
> + if (buf_size < img_size) {
> + DRM_ERROR("size of buffers(%lu) is smaller than image(%lu)\n",
> + buf_size, img_size);
> + return -EINVAL;
> }
> +
> return 0;
> }
>
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] drm/exynos: ipp: fix wrong index referencing a config element
2015-06-09 3:45 [PATCH 1/2] drm/exynos: ipp: fix wrong index referencing a config element Hyungwon Hwang
2015-06-09 3:45 ` [PATCH 2/2] drm/exynos: ipp: validate a GEM handle with multiple planes Hyungwon Hwang
@ 2015-06-11 14:53 ` Inki Dae
1 sibling, 0 replies; 6+ messages in thread
From: Inki Dae @ 2015-06-11 14:53 UTC (permalink / raw)
To: Hyungwon Hwang; +Cc: linux-samsung-soc, sw0312.kim, dri-devel
On 2015년 06월 09일 12:45, Hyungwon Hwang wrote:
> Config depends on the opreation. So it must be referenced by an
> operation id, not a property id.
Applied.
Thanks,
Inki Dae
>
> Signed-off-by: Hyungwon Hwang <human.hwang@samsung.com>
> ---
> drivers/gpu/drm/exynos/exynos_drm_ipp.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_ipp.c b/drivers/gpu/drm/exynos/exynos_drm_ipp.c
> index b7f1cbc..54c5cf4 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_ipp.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_ipp.c
> @@ -486,8 +486,7 @@ static int ipp_validate_mem_node(struct drm_device *drm_dev,
> unsigned int bpp;
> int i;
>
> - /* The property id should already be varified */
> - ipp_cfg = &c_node->property.config[m_node->prop_id];
> + ipp_cfg = &c_node->property.config[m_node->ops_id];
> num_plane = drm_format_num_planes(ipp_cfg->fmt);
>
> /**
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v6 00/15] Add drivers for Exynos5433 display
@ 2015-06-12 12:58 Hyungwon Hwang
[not found] ` <1434113958-15877-1-git-send-email-human.hwang-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
0 siblings, 1 reply; 6+ messages in thread
From: Hyungwon Hwang @ 2015-06-12 12:58 UTC (permalink / raw)
To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
devicetree-u79uwXL29TY76Z2rM5mHXA
Cc: inki.dae-Sze3O3UU22JBDgjK7y7TUQ, daniel-rLtY4a/8tF1rovVCs/uTlw,
sw0312.kim-Sze3O3UU22JBDgjK7y7TUQ,
jy0922.shim-Sze3O3UU22JBDgjK7y7TUQ, Hyungwon Hwang
This patchset is based on the git(branch name: exynos-drm-next) which is
maintained by Inki Dae.
https://kernel.googlesource.com/pub/scm/linux/kernel/git/...
This patchset adds 2 new device drivers, Exynos54333 decon and mic, and adds
support for Exynos5433 mipi dsi. To enable display in a Exynos5433 board,
decon(display controller), MIC(Mobile image compressor), mipi dsi, and panel
have to be turned on. This patchset contains support for 3 drivers for SoC
level devices.
Changes for v2:
- change config, file, and variable names of decon to represnt exynos5433
instead of exynos to distinguish them from exynos7 decon
- change the initialization order of decon to make it initialized in order like
FIMD or exynos7 decon
- make mic driver to be registered by exynos drm driver instead as a module
driver
- change the description of mic driver in documentation
- add module author at the top of the source file removing MODULE_OWNER,
MODULE_DESCRIPTION, MODULE_LICENSE
- change the author of "drm/exynos: dsi: add support for Exynos5433 SoC" to
Hyungwon Hwang by the previous author's will
Changes for v3:
< Decon >
- fail fast when the proper image format is not set
- remove unnecessary checking code
- add and modify the function to make DPMS work well
< MIC >
- move if statement out of function, so that the function is not called
unnecessarily
- Make it use syscon framework for controlling system register
< DSI >
- separate the previous one patch to three
- renaming patch: rename pll clock to sclk clock
- generalizing patch: generalize the way to getting address and values
- Exynos5433 patch: adds support for Exynos5433 dsi
- use defines for more readable code
- fix typos
Changes for v4:
- rebased to exynos-drm-next with the clean-up patchset by Gustavo Padovan.
Changes for v5:
- separated the refactoring patch of MIPI DSI driver into 3 patches
- added the patch to make DSI driver compatiable with the old clock name
- added the patch to rename the DSI driver's clock
- rename the newly added dsi variables for clarity
Changes for v6:
- Clean up the build dependencies of Exynos DRM devices as preparation
- Introduce new common function drm_iommu_attach_device_if_possible()
- Add support for atomic modeset in Exynos5433 decon driver
Hyungwon Hwang (14):
drm/exynos: remove the dependency of DP driver for ARCH_EXYNOS
drm/exynos: Add the dependency for DRM_EXYNOS to DPI/DSI/DP
drm/exynos: add drm_iommu_attach_device_if_possible()
drm/exynos: fix the input prompt of Exynos7 DECON
of: add helper for getting endpoint node of specific identifiers
drm/exynos: mic: add MIC driver
drm/exynos: dsi: rename pll_clk to sclk_clk
drm/exynos: dsi: add macros for register access
drm/exynos: dsi: make use of driver data for static values
drm/exynos: dsi: make use of array for clock access
drm/exynos: dsi: add support for Exynos5433
drm/exynos: dsi: add support for MIC driver as a bridge
drm/exynos: dsi: do not set TE GPIO direction by input
ARM: dts: rename the clock of MIPI DSI 'pll_clk' to 'sclk_mipi'
Joonyoung Shim (1):
drm/exynos: add Exynos5433 decon driver
.../devicetree/bindings/video/exynos-mic.txt | 51 ++
.../devicetree/bindings/video/exynos5433-decon.txt | 65 ++
.../devicetree/bindings/video/exynos_dsim.txt | 31 +-
arch/arm/boot/dts/exynos4.dtsi | 2 +-
drivers/gpu/drm/exynos/Kconfig | 20 +-
drivers/gpu/drm/exynos/Makefile | 2 +
drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 694 +++++++++++++++++++++
drivers/gpu/drm/exynos/exynos7_drm_decon.c | 25 +-
drivers/gpu/drm/exynos/exynos_drm_drv.c | 3 +
drivers/gpu/drm/exynos/exynos_drm_drv.h | 3 +
drivers/gpu/drm/exynos/exynos_drm_dsi.c | 484 +++++++++-----
drivers/gpu/drm/exynos/exynos_drm_fimd.c | 34 +-
drivers/gpu/drm/exynos/exynos_drm_iommu.c | 14 +
drivers/gpu/drm/exynos/exynos_drm_iommu.h | 11 +
drivers/gpu/drm/exynos/exynos_drm_mic.c | 490 +++++++++++++++
drivers/gpu/drm/exynos/exynos_mixer.c | 8 +-
drivers/of/base.c | 33 +
include/linux/of_graph.h | 8 +
include/video/exynos5433_decon.h | 165 +++++
19 files changed, 1937 insertions(+), 206 deletions(-)
create mode 100644 Documentation/devicetree/bindings/video/exynos-mic.txt
create mode 100644 Documentation/devicetree/bindings/video/exynos5433-decon.txt
create mode 100644 drivers/gpu/drm/exynos/exynos5433_drm_decon.c
create mode 100644 drivers/gpu/drm/exynos/exynos_drm_mic.c
create mode 100644 include/video/exynos5433_decon.h
--
1.9.1
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2015-06-12 13:02 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-06-09 3:45 [PATCH 1/2] drm/exynos: ipp: fix wrong index referencing a config element Hyungwon Hwang
2015-06-09 3:45 ` [PATCH 2/2] drm/exynos: ipp: validate a GEM handle with multiple planes Hyungwon Hwang
2015-06-11 14:53 ` Inki Dae
2015-06-11 14:53 ` [PATCH 1/2] drm/exynos: ipp: fix wrong index referencing a config element Inki Dae
-- strict thread matches above, loose matches on Subject: below --
2015-06-12 12:58 [PATCH v6 00/15] Add drivers for Exynos5433 display Hyungwon Hwang
[not found] ` <1434113958-15877-1-git-send-email-human.hwang-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2015-06-12 12:59 ` [PATCH 1/2] drm/exynos: ipp: fix wrong index referencing a config element Hyungwon Hwang
2015-06-12 13:02 ` Hyungwon Hwang
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.