[RFC v2 5/5] drm/exynos: add gsc ipp driver
GSC is stand for General SCaler and supports supports image scaler/rotator/crop/flip/csc and input/output DMA operations. input DMA reads image data from the memory. output DMA writes image data to memory. GSC supports image rotation and imag effect functions. also supports writeback and display output operations. Signed-off-by: Eunchul Kim Signed-off-by: Jinyoung Jeon --- drivers/gpu/drm/exynos/Kconfig |5 + drivers/gpu/drm/exynos/Makefile |1 + drivers/gpu/drm/exynos/exynos_drm_drv.c | 15 + drivers/gpu/drm/exynos/exynos_drm_drv.h |1 + drivers/gpu/drm/exynos/exynos_drm_gsc.c | 1476 +++ drivers/gpu/drm/exynos/exynos_drm_gsc.h | 35 + drivers/gpu/drm/exynos/regs-gsc.h | 295 ++ include/drm/exynos_drm.h| 15 + 8 files changed, 1843 insertions(+), 0 deletions(-) create mode 100644 drivers/gpu/drm/exynos/exynos_drm_gsc.c create mode 100644 drivers/gpu/drm/exynos/exynos_drm_gsc.h create mode 100644 drivers/gpu/drm/exynos/regs-gsc.h diff --git a/drivers/gpu/drm/exynos/Kconfig b/drivers/gpu/drm/exynos/Kconfig index 4860835..c93d776 100644 --- a/drivers/gpu/drm/exynos/Kconfig +++ b/drivers/gpu/drm/exynos/Kconfig @@ -64,3 +64,8 @@ config DRM_EXYNOS_ROTATOR help Choose this option if you want to use Exynos Rotator for DRM. +config DRM_EXYNOS_GSC + bool "Exynos DRM GSC" + depends on DRM_EXYNOS_IPP && ARCH_EXYNOS5 + help + Choose this option if you want to use Exynos GSC for DRM. diff --git a/drivers/gpu/drm/exynos/Makefile b/drivers/gpu/drm/exynos/Makefile index 3b70668..639b49e 100644 --- a/drivers/gpu/drm/exynos/Makefile +++ b/drivers/gpu/drm/exynos/Makefile @@ -19,5 +19,6 @@ exynosdrm-$(CONFIG_DRM_EXYNOS_G2D)+= exynos_drm_g2d.o exynosdrm-$(CONFIG_DRM_EXYNOS_IPP) += exynos_drm_ipp.o exynosdrm-$(CONFIG_DRM_EXYNOS_FIMC)+= exynos_drm_fimc.o exynosdrm-$(CONFIG_DRM_EXYNOS_ROTATOR) += exynos_drm_rotator.o +exynosdrm-$(CONFIG_DRM_EXYNOS_GSC) += exynos_drm_gsc.o obj-$(CONFIG_DRM_EXYNOS) += exynosdrm.o diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c index 09d884b..e0a8e80 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c @@ -384,6 +384,12 @@ static int __init exynos_drm_init(void) goto out_rotator; #endif +#ifdef CONFIG_DRM_EXYNOS_GSC + ret = platform_driver_register(&gsc_driver); + if (ret < 0) + goto out_gsc; +#endif + #ifdef CONFIG_DRM_EXYNOS_IPP ret = platform_driver_register(&ipp_driver); if (ret < 0) @@ -412,6 +418,11 @@ out_drm: out_ipp: #endif +#ifdef CONFIG_DRM_EXYNOS_GSC + platform_driver_unregister(&gsc_driver); +out_gsc: +#endif + #ifdef CONFIG_DRM_EXYNOS_ROTATOR platform_driver_unregister(&rotator_driver); out_rotator: @@ -462,6 +473,10 @@ static void __exit exynos_drm_exit(void) platform_driver_unregister(&ipp_driver); #endif +#ifdef CONFIG_DRM_EXYNOS_GSC + platform_driver_unregister(&gsc_driver); +#endif + #ifdef CONFIG_DRM_EXYNOS_ROTATOR platform_driver_unregister(&rotator_driver); #endif diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.h b/drivers/gpu/drm/exynos/exynos_drm_drv.h index a74e37c..afe556c 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_drv.h +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.h @@ -354,5 +354,6 @@ extern struct platform_driver vidi_driver; extern struct platform_driver g2d_driver; extern struct platform_driver fimc_driver; extern struct platform_driver rotator_driver; +extern struct platform_driver gsc_driver; extern struct platform_driver ipp_driver; #endif diff --git a/drivers/gpu/drm/exynos/exynos_drm_gsc.c b/drivers/gpu/drm/exynos/exynos_drm_gsc.c new file mode 100644 index 000..614365e --- /dev/null +++ b/drivers/gpu/drm/exynos/exynos_drm_gsc.c @@ -0,0 +1,1476 @@ +/* + * Copyright (C) 2012 Samsung Electronics Co.Ltd + * Authors: + * Eunchul Kim + * Jinyoung Jeon + * Sangmin Lee + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + */ +#include +#include +#include +#include +#include +#include + +#include +#include +#include "regs-gsc.h" +#include "exynos_drm_drv.h" +#include "exynos_drm_gem.h" +#include "exynos_drm_ipp.h" +#include "exynos_drm_gsc.h" + +/* + * GSC is stand for General SCaler and + * supports image scaler/rotator and input/output DMA operations. + * input DMA reads image data from the memory. + * output DMA writes image data to memory. + * GSC supports image rotation and image effect functions. + */ + +#define GSC_MAX_DEVS 4 +#define GSC_MAX_SRC8 +#define GSC_MAX_DST32 +#define GSC_RESET_TIMEOUT 50 +#defi
[RFC v2 5/5] drm/exynos: add gsc ipp driver
GSC is stand for General SCaler and supports supports image scaler/rotator/crop/flip/csc and input/output DMA operations. input DMA reads image data from the memory. output DMA writes image data to memory. GSC supports image rotation and imag effect functions. also supports writeback and display output operations. Signed-off-by: Eunchul Kim Signed-off-by: Jinyoung Jeon --- drivers/gpu/drm/exynos/Kconfig |5 + drivers/gpu/drm/exynos/Makefile |1 + drivers/gpu/drm/exynos/exynos_drm_drv.c | 15 + drivers/gpu/drm/exynos/exynos_drm_drv.h |1 + drivers/gpu/drm/exynos/exynos_drm_gsc.c | 1476 +++ drivers/gpu/drm/exynos/exynos_drm_gsc.h | 35 + drivers/gpu/drm/exynos/regs-gsc.h | 295 ++ include/drm/exynos_drm.h| 15 + 8 files changed, 1843 insertions(+), 0 deletions(-) create mode 100644 drivers/gpu/drm/exynos/exynos_drm_gsc.c create mode 100644 drivers/gpu/drm/exynos/exynos_drm_gsc.h create mode 100644 drivers/gpu/drm/exynos/regs-gsc.h diff --git a/drivers/gpu/drm/exynos/Kconfig b/drivers/gpu/drm/exynos/Kconfig index 4860835..c93d776 100644 --- a/drivers/gpu/drm/exynos/Kconfig +++ b/drivers/gpu/drm/exynos/Kconfig @@ -64,3 +64,8 @@ config DRM_EXYNOS_ROTATOR help Choose this option if you want to use Exynos Rotator for DRM. +config DRM_EXYNOS_GSC + bool "Exynos DRM GSC" + depends on DRM_EXYNOS_IPP && ARCH_EXYNOS5 + help + Choose this option if you want to use Exynos GSC for DRM. diff --git a/drivers/gpu/drm/exynos/Makefile b/drivers/gpu/drm/exynos/Makefile index 3b70668..639b49e 100644 --- a/drivers/gpu/drm/exynos/Makefile +++ b/drivers/gpu/drm/exynos/Makefile @@ -19,5 +19,6 @@ exynosdrm-$(CONFIG_DRM_EXYNOS_G2D)+= exynos_drm_g2d.o exynosdrm-$(CONFIG_DRM_EXYNOS_IPP) += exynos_drm_ipp.o exynosdrm-$(CONFIG_DRM_EXYNOS_FIMC)+= exynos_drm_fimc.o exynosdrm-$(CONFIG_DRM_EXYNOS_ROTATOR) += exynos_drm_rotator.o +exynosdrm-$(CONFIG_DRM_EXYNOS_GSC) += exynos_drm_gsc.o obj-$(CONFIG_DRM_EXYNOS) += exynosdrm.o diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c index 09d884b..e0a8e80 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c @@ -384,6 +384,12 @@ static int __init exynos_drm_init(void) goto out_rotator; #endif +#ifdef CONFIG_DRM_EXYNOS_GSC + ret = platform_driver_register(&gsc_driver); + if (ret < 0) + goto out_gsc; +#endif + #ifdef CONFIG_DRM_EXYNOS_IPP ret = platform_driver_register(&ipp_driver); if (ret < 0) @@ -412,6 +418,11 @@ out_drm: out_ipp: #endif +#ifdef CONFIG_DRM_EXYNOS_GSC + platform_driver_unregister(&gsc_driver); +out_gsc: +#endif + #ifdef CONFIG_DRM_EXYNOS_ROTATOR platform_driver_unregister(&rotator_driver); out_rotator: @@ -462,6 +473,10 @@ static void __exit exynos_drm_exit(void) platform_driver_unregister(&ipp_driver); #endif +#ifdef CONFIG_DRM_EXYNOS_GSC + platform_driver_unregister(&gsc_driver); +#endif + #ifdef CONFIG_DRM_EXYNOS_ROTATOR platform_driver_unregister(&rotator_driver); #endif diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.h b/drivers/gpu/drm/exynos/exynos_drm_drv.h index a74e37c..afe556c 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_drv.h +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.h @@ -354,5 +354,6 @@ extern struct platform_driver vidi_driver; extern struct platform_driver g2d_driver; extern struct platform_driver fimc_driver; extern struct platform_driver rotator_driver; +extern struct platform_driver gsc_driver; extern struct platform_driver ipp_driver; #endif diff --git a/drivers/gpu/drm/exynos/exynos_drm_gsc.c b/drivers/gpu/drm/exynos/exynos_drm_gsc.c new file mode 100644 index 000..614365e --- /dev/null +++ b/drivers/gpu/drm/exynos/exynos_drm_gsc.c @@ -0,0 +1,1476 @@ +/* + * Copyright (C) 2012 Samsung Electronics Co.Ltd + * Authors: + * Eunchul Kim + * Jinyoung Jeon + * Sangmin Lee + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + */ +#include +#include +#include +#include +#include +#include + +#include +#include +#include "regs-gsc.h" +#include "exynos_drm_drv.h" +#include "exynos_drm_gem.h" +#include "exynos_drm_ipp.h" +#include "exynos_drm_gsc.h" + +/* + * GSC is stand for General SCaler and + * supports image scaler/rotator and input/output DMA operations. + * input DMA reads image data from the memory. + * output DMA writes image data to memory. + * GSC supports image rotation and image effect functions. + */ + +#define GSC_MAX_DEVS 4 +#define GSC_MAX_SRC8 +#define GSC_MAX_DST32 +#define GSC_RESET_TIMEOUT 50 +#define GS
[RFC v2 5/5] drm/exynos: add gsc ipp driver
Hi, On 12/10/2012 10:45 PM, Eunchul Kim wrote: > GSC is stand for General SCaler and supports supports > image scaler/rotator/crop/flip/csc and input/output DMA operations. > input DMA reads image data from the memory. > output DMA writes image data to memory. > GSC supports image rotation and imag effect functions. > also supports writeback and display output operations. Please align lines in paragraph. > > Signed-off-by: Eunchul Kim > Signed-off-by: Jinyoung Jeon > --- > drivers/gpu/drm/exynos/Kconfig |5 + > drivers/gpu/drm/exynos/Makefile |1 + > drivers/gpu/drm/exynos/exynos_drm_drv.c | 15 + > drivers/gpu/drm/exynos/exynos_drm_drv.h |1 + > drivers/gpu/drm/exynos/exynos_drm_gsc.c | 1476 > +++ > drivers/gpu/drm/exynos/exynos_drm_gsc.h | 35 + > drivers/gpu/drm/exynos/regs-gsc.h | 295 ++ > include/drm/exynos_drm.h| 15 + > 8 files changed, 1843 insertions(+), 0 deletions(-) > create mode 100644 drivers/gpu/drm/exynos/exynos_drm_gsc.c > create mode 100644 drivers/gpu/drm/exynos/exynos_drm_gsc.h > create mode 100644 drivers/gpu/drm/exynos/regs-gsc.h > > diff --git a/drivers/gpu/drm/exynos/Kconfig b/drivers/gpu/drm/exynos/Kconfig > index 4860835..c93d776 100644 > --- a/drivers/gpu/drm/exynos/Kconfig > +++ b/drivers/gpu/drm/exynos/Kconfig > @@ -64,3 +64,8 @@ config DRM_EXYNOS_ROTATOR > help > Choose this option if you want to use Exynos Rotator for DRM. > > +config DRM_EXYNOS_GSC > + bool "Exynos DRM GSC" > + depends on DRM_EXYNOS_IPP && ARCH_EXYNOS5 > + help > + Choose this option if you want to use Exynos GSC for DRM. > diff --git a/drivers/gpu/drm/exynos/Makefile b/drivers/gpu/drm/exynos/Makefile > index 3b70668..639b49e 100644 > --- a/drivers/gpu/drm/exynos/Makefile > +++ b/drivers/gpu/drm/exynos/Makefile > @@ -19,5 +19,6 @@ exynosdrm-$(CONFIG_DRM_EXYNOS_G2D) += exynos_drm_g2d.o > exynosdrm-$(CONFIG_DRM_EXYNOS_IPP) += exynos_drm_ipp.o > exynosdrm-$(CONFIG_DRM_EXYNOS_FIMC) += exynos_drm_fimc.o > exynosdrm-$(CONFIG_DRM_EXYNOS_ROTATOR) += exynos_drm_rotator.o > +exynosdrm-$(CONFIG_DRM_EXYNOS_GSC) += exynos_drm_gsc.o > > obj-$(CONFIG_DRM_EXYNOS)+= exynosdrm.o > diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c > b/drivers/gpu/drm/exynos/exynos_drm_drv.c > index 09d884b..e0a8e80 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c > +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c > @@ -384,6 +384,12 @@ static int __init exynos_drm_init(void) > goto out_rotator; > #endif > > +#ifdef CONFIG_DRM_EXYNOS_GSC > + ret = platform_driver_register(&gsc_driver); > + if (ret < 0) > + goto out_gsc; > +#endif > + > #ifdef CONFIG_DRM_EXYNOS_IPP > ret = platform_driver_register(&ipp_driver); > if (ret < 0) > @@ -412,6 +418,11 @@ out_drm: > out_ipp: > #endif > > +#ifdef CONFIG_DRM_EXYNOS_GSC > + platform_driver_unregister(&gsc_driver); > +out_gsc: > +#endif > + > #ifdef CONFIG_DRM_EXYNOS_ROTATOR > platform_driver_unregister(&rotator_driver); > out_rotator: > @@ -462,6 +473,10 @@ static void __exit exynos_drm_exit(void) > platform_driver_unregister(&ipp_driver); > #endif > > +#ifdef CONFIG_DRM_EXYNOS_GSC > + platform_driver_unregister(&gsc_driver); > +#endif > + > #ifdef CONFIG_DRM_EXYNOS_ROTATOR > platform_driver_unregister(&rotator_driver); > #endif > diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.h > b/drivers/gpu/drm/exynos/exynos_drm_drv.h > index a74e37c..afe556c 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_drv.h > +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.h > @@ -354,5 +354,6 @@ extern struct platform_driver vidi_driver; > extern struct platform_driver g2d_driver; > extern struct platform_driver fimc_driver; > extern struct platform_driver rotator_driver; > +extern struct platform_driver gsc_driver; > extern struct platform_driver ipp_driver; > #endif > diff --git a/drivers/gpu/drm/exynos/exynos_drm_gsc.c > b/drivers/gpu/drm/exynos/exynos_drm_gsc.c > new file mode 100644 > index 000..614365e > --- /dev/null > +++ b/drivers/gpu/drm/exynos/exynos_drm_gsc.c > @@ -0,0 +1,1476 @@ > +/* > + * Copyright (C) 2012 Samsung Electronics Co.Ltd > + * Authors: > + * Eunchul Kim > + * Jinyoung Jeon > + * Sangmin Lee > + * > + * This program is free software; you can redistribute it and/or modify it > + * under the terms of the GNU General Public License as published by the > + * Free Software Foundation; either version 2 of the License, or (at your > + * option) any later version. > + * > + */ > +#include > +#include > +#include > +#include > +#include > +#include > + > +#include > +#include > +#include "regs-gsc.h" > +#include "exynos_drm_drv.h" > +#include "exynos_drm_gem.h" Does this driver need to include exynos_drm_drv.h and exynos_drm_gem.h? > +#include "exynos_drm_ipp.h" > +#include "exynos_drm_gs
[RFC v2 5/5] drm/exynos: add gsc ipp driver
Thank's your comments I answer your comments. please check that. Thank's BR Eunchul Kim On 12/11/2012 02:49 PM, Joonyoung Shim wrote: > Hi, > > On 12/10/2012 10:45 PM, Eunchul Kim wrote: >> GSC is stand for General SCaler and supports supports >> image scaler/rotator/crop/flip/csc and input/output DMA operations. >> input DMA reads image data from the memory. >> output DMA writes image data to memory. >> GSC supports image rotation and imag effect functions, also supports >> writeback and display output operations. >> > > Please align lines in paragraph. - like this ? "GSC supports image rotation and imag effect functions, also supports writeback and display output operations." > >> >> Signed-off-by: Eunchul Kim >> Signed-off-by: Jinyoung Jeon >> --- >> drivers/gpu/drm/exynos/Kconfig |5 + >> drivers/gpu/drm/exynos/Makefile |1 + >> drivers/gpu/drm/exynos/exynos_drm_drv.c | 15 + >> drivers/gpu/drm/exynos/exynos_drm_drv.h |1 + >> drivers/gpu/drm/exynos/exynos_drm_gsc.c | 1476 >> +++ >> drivers/gpu/drm/exynos/exynos_drm_gsc.h | 35 + >> drivers/gpu/drm/exynos/regs-gsc.h | 295 ++ >> include/drm/exynos_drm.h| 15 + >> 8 files changed, 1843 insertions(+), 0 deletions(-) >> create mode 100644 drivers/gpu/drm/exynos/exynos_drm_gsc.c >> create mode 100644 drivers/gpu/drm/exynos/exynos_drm_gsc.h >> create mode 100644 drivers/gpu/drm/exynos/regs-gsc.h >> >> diff --git a/drivers/gpu/drm/exynos/Kconfig >> b/drivers/gpu/drm/exynos/Kconfig >> index 4860835..c93d776 100644 >> --- a/drivers/gpu/drm/exynos/Kconfig >> +++ b/drivers/gpu/drm/exynos/Kconfig >> @@ -64,3 +64,8 @@ config DRM_EXYNOS_ROTATOR >> help >> Choose this option if you want to use Exynos Rotator for DRM. >> +config DRM_EXYNOS_GSC >> +bool "Exynos DRM GSC" >> +depends on DRM_EXYNOS_IPP && ARCH_EXYNOS5 >> +help >> + Choose this option if you want to use Exynos GSC for DRM. >> diff --git a/drivers/gpu/drm/exynos/Makefile >> b/drivers/gpu/drm/exynos/Makefile >> index 3b70668..639b49e 100644 >> --- a/drivers/gpu/drm/exynos/Makefile >> +++ b/drivers/gpu/drm/exynos/Makefile >> @@ -19,5 +19,6 @@ exynosdrm-$(CONFIG_DRM_EXYNOS_G2D)+= >> exynos_drm_g2d.o >> exynosdrm-$(CONFIG_DRM_EXYNOS_IPP)+= exynos_drm_ipp.o >> exynosdrm-$(CONFIG_DRM_EXYNOS_FIMC)+= exynos_drm_fimc.o >> exynosdrm-$(CONFIG_DRM_EXYNOS_ROTATOR)+= exynos_drm_rotator.o >> +exynosdrm-$(CONFIG_DRM_EXYNOS_GSC)+= exynos_drm_gsc.o >> obj-$(CONFIG_DRM_EXYNOS)+= exynosdrm.o >> diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c >> b/drivers/gpu/drm/exynos/exynos_drm_drv.c >> index 09d884b..e0a8e80 100644 >> --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c >> +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c >> @@ -384,6 +384,12 @@ static int __init exynos_drm_init(void) >> goto out_rotator; >> #endif >> +#ifdef CONFIG_DRM_EXYNOS_GSC >> +ret = platform_driver_register(&gsc_driver); >> +if (ret < 0) >> +goto out_gsc; >> +#endif >> + >> #ifdef CONFIG_DRM_EXYNOS_IPP >> ret = platform_driver_register(&ipp_driver); >> if (ret < 0) >> @@ -412,6 +418,11 @@ out_drm: >> out_ipp: >> #endif >> +#ifdef CONFIG_DRM_EXYNOS_GSC >> +platform_driver_unregister(&gsc_driver); >> +out_gsc: >> +#endif >> + >> #ifdef CONFIG_DRM_EXYNOS_ROTATOR >> platform_driver_unregister(&rotator_driver); >> out_rotator: >> @@ -462,6 +473,10 @@ static void __exit exynos_drm_exit(void) >> platform_driver_unregister(&ipp_driver); >> #endif >> +#ifdef CONFIG_DRM_EXYNOS_GSC >> +platform_driver_unregister(&gsc_driver); >> +#endif >> + >> #ifdef CONFIG_DRM_EXYNOS_ROTATOR >> platform_driver_unregister(&rotator_driver); >> #endif >> diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.h >> b/drivers/gpu/drm/exynos/exynos_drm_drv.h >> index a74e37c..afe556c 100644 >> --- a/drivers/gpu/drm/exynos/exynos_drm_drv.h >> +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.h >> @@ -354,5 +354,6 @@ extern struct platform_driver vidi_driver; >> extern struct platform_driver g2d_driver; >> extern struct platform_driver fimc_driver; >> extern struct platform_driver rotator_driver; >> +extern struct platform_driver gsc_driver; >> extern struct platform_driver ipp_driver; >> #endif >> diff --git a/drivers/gpu/drm/exynos/exynos_drm_gsc.c >> b/drivers/gpu/drm/exynos/exynos_drm_gsc.c >> new file mode 100644 >> index 000..614365e >> --- /dev/null >> +++ b/drivers/gpu/drm/exynos/exynos_drm_gsc.c >> @@ -0,0 +1,1476 @@ >> +/* >> + * Copyright (C) 2012 Samsung Electronics Co.Ltd >> + * Authors: >> + *Eunchul Kim >> + *Jinyoung Jeon >> + *Sangmin Lee >> + * >> + * This program is free software; you can redistribute it and/or >> modify it >> + * under the terms of the GNU General Public License as published >> by the >> + * Free Software Foundation; either version 2 of the License, or >> (at your >
[RFC v2 5/5] drm/exynos: add gsc ipp driver
Hi, I want to see only just current codes, not for future. On 12/11/2012 04:47 PM, Eunchul Kim wrote: > Thank's your comments > > I answer your comments. please check that. > > Thank's > > BR > > Eunchul Kim > > On 12/11/2012 02:49 PM, Joonyoung Shim wrote: >> Hi, >> >> On 12/10/2012 10:45 PM, Eunchul Kim wrote: >>> GSC is stand for General SCaler and supports supports >>> image scaler/rotator/crop/flip/csc and input/output DMA operations. >>> input DMA reads image data from the memory. >>> output DMA writes image data to memory. >>> GSC supports image rotation and imag effect functions, also supports >>> writeback and display output operations. >>> >> >> Please align lines in paragraph. > > - like this ? "GSC supports image rotation and imag effect functions, > also supports writeback and display output operations." > You can get follow result if you use vi when you make commit using "git commit -s" GSC is stand for General SCaler and supports supports image scaler/rotator/crop/flip/csc and input/output DMA operations. input DMA reads image data from the memory. output DMA writes image data to memory. GSC supports image rotation and imag effect functions, also supports writeback and display output operations. >> >>> >>> Signed-off-by: Eunchul Kim >>> Signed-off-by: Jinyoung Jeon >>> --- >>> drivers/gpu/drm/exynos/Kconfig |5 + >>> drivers/gpu/drm/exynos/Makefile |1 + >>> drivers/gpu/drm/exynos/exynos_drm_drv.c | 15 + >>> drivers/gpu/drm/exynos/exynos_drm_drv.h |1 + >>> drivers/gpu/drm/exynos/exynos_drm_gsc.c | 1476 >>> +++ >>> drivers/gpu/drm/exynos/exynos_drm_gsc.h | 35 + >>> drivers/gpu/drm/exynos/regs-gsc.h | 295 ++ >>> include/drm/exynos_drm.h| 15 + >>> 8 files changed, 1843 insertions(+), 0 deletions(-) >>> create mode 100644 drivers/gpu/drm/exynos/exynos_drm_gsc.c >>> create mode 100644 drivers/gpu/drm/exynos/exynos_drm_gsc.h >>> create mode 100644 drivers/gpu/drm/exynos/regs-gsc.h >>> >>> diff --git a/drivers/gpu/drm/exynos/Kconfig >>> b/drivers/gpu/drm/exynos/Kconfig >>> index 4860835..c93d776 100644 >>> --- a/drivers/gpu/drm/exynos/Kconfig >>> +++ b/drivers/gpu/drm/exynos/Kconfig >>> @@ -64,3 +64,8 @@ config DRM_EXYNOS_ROTATOR >>> help >>> Choose this option if you want to use Exynos Rotator for DRM. >>> +config DRM_EXYNOS_GSC >>> +bool "Exynos DRM GSC" >>> +depends on DRM_EXYNOS_IPP && ARCH_EXYNOS5 >>> +help >>> + Choose this option if you want to use Exynos GSC for DRM. >>> diff --git a/drivers/gpu/drm/exynos/Makefile >>> b/drivers/gpu/drm/exynos/Makefile >>> index 3b70668..639b49e 100644 >>> --- a/drivers/gpu/drm/exynos/Makefile >>> +++ b/drivers/gpu/drm/exynos/Makefile >>> @@ -19,5 +19,6 @@ exynosdrm-$(CONFIG_DRM_EXYNOS_G2D)+= >>> exynos_drm_g2d.o >>> exynosdrm-$(CONFIG_DRM_EXYNOS_IPP)+= exynos_drm_ipp.o >>> exynosdrm-$(CONFIG_DRM_EXYNOS_FIMC)+= exynos_drm_fimc.o >>> exynosdrm-$(CONFIG_DRM_EXYNOS_ROTATOR)+= exynos_drm_rotator.o >>> +exynosdrm-$(CONFIG_DRM_EXYNOS_GSC)+= exynos_drm_gsc.o >>> obj-$(CONFIG_DRM_EXYNOS)+= exynosdrm.o >>> diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c >>> b/drivers/gpu/drm/exynos/exynos_drm_drv.c >>> index 09d884b..e0a8e80 100644 >>> --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c >>> +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c >>> @@ -384,6 +384,12 @@ static int __init exynos_drm_init(void) >>> goto out_rotator; >>> #endif >>> +#ifdef CONFIG_DRM_EXYNOS_GSC >>> +ret = platform_driver_register(&gsc_driver); >>> +if (ret < 0) >>> +goto out_gsc; >>> +#endif >>> + >>> #ifdef CONFIG_DRM_EXYNOS_IPP >>> ret = platform_driver_register(&ipp_driver); >>> if (ret < 0) >>> @@ -412,6 +418,11 @@ out_drm: >>> out_ipp: >>> #endif >>> +#ifdef CONFIG_DRM_EXYNOS_GSC >>> +platform_driver_unregister(&gsc_driver); >>> +out_gsc: >>> +#endif >>> + >>> #ifdef CONFIG_DRM_EXYNOS_ROTATOR >>> platform_driver_unregister(&rotator_driver); >>> out_rotator: >>> @@ -462,6 +473,10 @@ static void __exit exynos_drm_exit(void) >>> platform_driver_unregister(&ipp_driver); >>> #endif >>> +#ifdef CONFIG_DRM_EXYNOS_GSC >>> +platform_driver_unregister(&gsc_driver); >>> +#endif >>> + >>> #ifdef CONFIG_DRM_EXYNOS_ROTATOR >>> platform_driver_unregister(&rotator_driver); >>> #endif >>> diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.h >>> b/drivers/gpu/drm/exynos/exynos_drm_drv.h >>> index a74e37c..afe556c 100644 >>> --- a/drivers/gpu/drm/exynos/exynos_drm_drv.h >>> +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.h >>> @@ -354,5 +354,6 @@ extern struct platform_driver vidi_driver; >>> extern struct platform_driver g2d_driver; >>> extern struct platform_driver fimc_driver; >>> extern struct platform_driver rotator_driver; >>> +extern struct platform_driver gsc_driver; >>> extern struct platform_driver ipp_driver; >>> #endif >>>
[RFC v2 5/5] drm/exynos: add gsc ipp driver
OK, I know what you mean. I talk about GSC feature with Inki.Dae. I will re-send our final source instead of first commit. please one more time review about next RFC v3. Thank's BR Eunchul Kim On 12/11/2012 05:31 PM, Joonyoung Shim wrote: > Hi, > > I want to see only just current codes, not for future. > > > On 12/11/2012 04:47 PM, Eunchul Kim wrote: >> Thank's your comments >> >> I answer your comments. please check that. >> >> Thank's >> >> BR >> >> Eunchul Kim >> >> On 12/11/2012 02:49 PM, Joonyoung Shim wrote: >>> Hi, >>> >>> On 12/10/2012 10:45 PM, Eunchul Kim wrote: GSC is stand for General SCaler and supports supports image scaler/rotator/crop/flip/csc and input/output DMA operations. input DMA reads image data from the memory. output DMA writes image data to memory. GSC supports image rotation and imag effect functions, also supports writeback and display output operations. >>> >>> Please align lines in paragraph. >> >> - like this ? "GSC supports image rotation and imag effect functions, >> also supports writeback and display output operations." >> > > You can get follow result if you use vi when you make commit using "git > commit -s" > > GSC is stand for General SCaler and supports supports image > scaler/rotator/crop/flip/csc and input/output DMA operations. input DMA > reads image data from the memory. output DMA writes image data to > memory. GSC supports image rotation and imag effect functions, also > supports writeback and display output operations. - I will check that. > >>> Signed-off-by: Eunchul Kim Signed-off-by: Jinyoung Jeon --- drivers/gpu/drm/exynos/Kconfig |5 + drivers/gpu/drm/exynos/Makefile |1 + drivers/gpu/drm/exynos/exynos_drm_drv.c | 15 + drivers/gpu/drm/exynos/exynos_drm_drv.h |1 + drivers/gpu/drm/exynos/exynos_drm_gsc.c | 1476 +++ drivers/gpu/drm/exynos/exynos_drm_gsc.h | 35 + drivers/gpu/drm/exynos/regs-gsc.h | 295 ++ include/drm/exynos_drm.h| 15 + 8 files changed, 1843 insertions(+), 0 deletions(-) create mode 100644 drivers/gpu/drm/exynos/exynos_drm_gsc.c create mode 100644 drivers/gpu/drm/exynos/exynos_drm_gsc.h create mode 100644 drivers/gpu/drm/exynos/regs-gsc.h diff --git a/drivers/gpu/drm/exynos/Kconfig b/drivers/gpu/drm/exynos/Kconfig index 4860835..c93d776 100644 --- a/drivers/gpu/drm/exynos/Kconfig +++ b/drivers/gpu/drm/exynos/Kconfig @@ -64,3 +64,8 @@ config DRM_EXYNOS_ROTATOR help Choose this option if you want to use Exynos Rotator for DRM. +config DRM_EXYNOS_GSC +bool "Exynos DRM GSC" +depends on DRM_EXYNOS_IPP && ARCH_EXYNOS5 +help + Choose this option if you want to use Exynos GSC for DRM. diff --git a/drivers/gpu/drm/exynos/Makefile b/drivers/gpu/drm/exynos/Makefile index 3b70668..639b49e 100644 --- a/drivers/gpu/drm/exynos/Makefile +++ b/drivers/gpu/drm/exynos/Makefile @@ -19,5 +19,6 @@ exynosdrm-$(CONFIG_DRM_EXYNOS_G2D)+= exynos_drm_g2d.o exynosdrm-$(CONFIG_DRM_EXYNOS_IPP)+= exynos_drm_ipp.o exynosdrm-$(CONFIG_DRM_EXYNOS_FIMC)+= exynos_drm_fimc.o exynosdrm-$(CONFIG_DRM_EXYNOS_ROTATOR)+= exynos_drm_rotator.o +exynosdrm-$(CONFIG_DRM_EXYNOS_GSC)+= exynos_drm_gsc.o obj-$(CONFIG_DRM_EXYNOS)+= exynosdrm.o diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c index 09d884b..e0a8e80 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c @@ -384,6 +384,12 @@ static int __init exynos_drm_init(void) goto out_rotator; #endif +#ifdef CONFIG_DRM_EXYNOS_GSC +ret = platform_driver_register(&gsc_driver); +if (ret < 0) +goto out_gsc; +#endif + #ifdef CONFIG_DRM_EXYNOS_IPP ret = platform_driver_register(&ipp_driver); if (ret < 0) @@ -412,6 +418,11 @@ out_drm: out_ipp: #endif +#ifdef CONFIG_DRM_EXYNOS_GSC +platform_driver_unregister(&gsc_driver); +out_gsc: +#endif + #ifdef CONFIG_DRM_EXYNOS_ROTATOR platform_driver_unregister(&rotator_driver); out_rotator: @@ -462,6 +473,10 @@ static void __exit exynos_drm_exit(void) platform_driver_unregister(&ipp_driver); #endif +#ifdef CONFIG_DRM_EXYNOS_GSC +platform_driver_unregister(&gsc_driver); +#endif + #ifdef CONFIG_DRM_EXYNOS_ROTATOR platform_driver_unregister(&rotator_driver); #endif diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.h b/drivers/gpu/drm/exynos/exynos_drm_drv.h index a74e37c..afe556c 100644 --- a/drivers/gpu/drm