[RFC v2 5/5] drm/exynos: add gsc ipp driver

2012-12-10 Thread Eunchul Kim
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

2012-12-10 Thread Eunchul Kim
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

2012-12-11 Thread Joonyoung Shim
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

2012-12-11 Thread Eunchul Kim
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

2012-12-11 Thread Joonyoung Shim
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

2012-12-11 Thread Eunchul Kim
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