Re: [PATCH 2/4] drm/tve200: Add new driver for TVE200

2017-08-20 Thread Linus Walleij
On Mon, Aug 14, 2017 at 8:56 PM, Eric Anholt  wrote:

> I also recommend checking out panel-bridge for deleting a bunch of the
> code,

Daniel said the same. I tried to look into this but the drivers currently
using it (like Atmel HLCDC) are so different using custom encoders and
what not that I can't really see clearly how to apply it in this case.

If you patch the PL111 driver to use the bridge helper I promise I will
follow up and patch this driver the same way though!

Yours,
Linus Walleij
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH 2/4] drm/tve200: Add new driver for TVE200

2017-08-15 Thread Daniel Vetter
On Tue, Aug 15, 2017 at 10:02 PM, Linus Walleij
 wrote:
> On Mon, Aug 14, 2017 at 4:20 PM, Daniel Vetter  wrote:
>
>> Wrt merging/maintaining: Want to include it in the drm-misc pile? We'll
>> happily throw commit rights at every driver submission (and honestly
>> expect that, since it helps tremendously with balance maintainer loads for
>> the oddball trivial patch).
>
> Yeah I'm game for it :)
>
> I need to reiterate the patch addressing yours and Eric's comments first.
>
> I *really* want to experience your development workflow first hand after
> seeing your talks, so it'll be exciting. Just tell me how to proceed with
> this and/or point me to the right docs and I'll get going with it.

You need an fd.o account with acess to drm-misc.

https://www.freedesktop.org/wiki/AccountRequests/

Meanwhile enjoy the docs:

https://01.org/linuxgraphics/gfx-docs/maintainer-tools/drm-misc.html
https://01.org/linuxgraphics/gfx-docs/maintainer-tools/dim.html

(we have patches in flight to make it into a neat sphinx-style book
like the kerneldocs now are)

Then grab dim (our script)
https://cgit.freedesktop.org/drm-intel/tree/dim?h=maintainer-tools

Adjust dimrc to your taste and run dim setup (that will also grab a
checkout of all the maintainer-tools so that it autoupdates). There's
a bunch of howtos all around, and once fully installed there's also
bash completion and stuff like that.

If you hit a snag, best way to get help is over #dri-devel on
freenode. That's also where we tend to organize/coordinate review and
stuff. Also if anything is uncool with the tools pls pipe up, we
constantly try to make them better.

Cheers, Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH 2/4] drm/tve200: Add new driver for TVE200

2017-08-14 Thread Eric Anholt
Linus Walleij  writes:

> This adds a new DRM driver for the Faraday Technology TVE200
> block. This "TV Encoder" encodes a ITU-T BT.656 stream and can
> be found in the StorLink SL3516 (later Cortina Systems CS3516)
> as well as the Grain Media GM8180.
>
> I do not have definitive word from anyone at Faraday that this
> IP block is theirs, but it bears the hallmark of their 3-digit
> version code (200) and is used in two SoCs from completely
> different companies. (Grain Media was fully owned by Faraday
> until it was transferred to NovoTek this january, and
> Faraday did lots of work on the StorLink SoCs.)
>
> The D-Link DIR-685 uses this in connection with the Ilitek
> ILI9322 panel driver that supports BT.656 input, while the
> GM8180 apparently has been used with the Cirrus Logic CS4954
> digital video encoder. The oldest user seems to be
> something called Techwall 2835.
>
> This driver is heavily inspired by Eric Anholt's PL111
> driver and therefore I have mentioned all the ancestor authors
> in the header file.

This looks great!  I've got just a couple of little things I noticed,
but with the init error path bugs fixed it's:

Reviewed-by: Eric Anholt 

I also recommend checking out panel-bridge for deleting a bunch of the
code, and joining us in the drm-misc committer group :)

> Signed-off-by: Linus Walleij 
> ---
>  Documentation/gpu/index.rst   |   1 +
>  Documentation/gpu/tve200.rst  |   6 +
>  MAINTAINERS   |   6 +
>  drivers/gpu/drm/Kconfig   |   2 +
>  drivers/gpu/drm/Makefile  |   1 +
>  drivers/gpu/drm/tve200/Kconfig|  15 ++
>  drivers/gpu/drm/tve200/Makefile   |   5 +
>  drivers/gpu/drm/tve200/tve200_connector.c | 126 +++
>  drivers/gpu/drm/tve200/tve200_display.c   | 346 
> ++
>  drivers/gpu/drm/tve200/tve200_drm.h   | 129 +++
>  drivers/gpu/drm/tve200/tve200_drv.c   | 277 
>  11 files changed, 914 insertions(+)
>  create mode 100644 Documentation/gpu/tve200.rst
>  create mode 100644 drivers/gpu/drm/tve200/Kconfig
>  create mode 100644 drivers/gpu/drm/tve200/Makefile
>  create mode 100644 drivers/gpu/drm/tve200/tve200_connector.c
>  create mode 100644 drivers/gpu/drm/tve200/tve200_display.c
>  create mode 100644 drivers/gpu/drm/tve200/tve200_drm.h
>  create mode 100644 drivers/gpu/drm/tve200/tve200_drv.c
>
> diff --git a/Documentation/gpu/index.rst b/Documentation/gpu/index.rst
> index 35d673bf9b56..c36586dad29d 100644
> --- a/Documentation/gpu/index.rst
> +++ b/Documentation/gpu/index.rst
> @@ -15,6 +15,7 @@ Linux GPU Driver Developer's Guide
> pl111
> tegra
> tinydrm
> +   tve200
> vc4
> vga-switcheroo
> vgaarbiter
> diff --git a/Documentation/gpu/tve200.rst b/Documentation/gpu/tve200.rst
> new file mode 100644
> index ..69b17b324e12
> --- /dev/null
> +++ b/Documentation/gpu/tve200.rst
> @@ -0,0 +1,6 @@
> +==
> + drm/tve200 Faraday TV Encoder 200
> +==
> +
> +.. kernel-doc:: drivers/gpu/drm/tve200/tve200_drv.c
> +   :doc: Faraday TV Encoder 200
> diff --git a/MAINTAINERS b/MAINTAINERS
> index e87cba115ea4..c3d42d68253a 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -4305,6 +4305,12 @@ T: git git://anongit.freedesktop.org/drm/drm-misc
>  S:   Maintained
>  F:   drivers/gpu/drm/bochs/
>  
> +DRM DRIVER FOR FARADAY TVE200 TV ENCODER
> +M:   Linus Walleij 
> +T:   git git://anongit.freedesktop.org/drm/drm-misc
> +S:   Maintained
> +F:   drivers/gpu/drm/tve200/
> +
>  DRM DRIVER FOR INTEL I810 VIDEO CARDS
>  S:   Orphan / Obsolete
>  F:   drivers/gpu/drm/i810/
> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
> index 83cb2a88c204..c5e1a8409285 100644
> --- a/drivers/gpu/drm/Kconfig
> +++ b/drivers/gpu/drm/Kconfig
> @@ -278,6 +278,8 @@ source "drivers/gpu/drm/tinydrm/Kconfig"
>  
>  source "drivers/gpu/drm/pl111/Kconfig"
>  
> +source "drivers/gpu/drm/tve200/Kconfig"
> +
>  # Keep legacy drivers last
>  
>  menuconfig DRM_LEGACY
> diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
> index 24a066e1841c..cc81813e2238 100644
> --- a/drivers/gpu/drm/Makefile
> +++ b/drivers/gpu/drm/Makefile
> @@ -100,3 +100,4 @@ obj-$(CONFIG_DRM_ZTE) += zte/
>  obj-$(CONFIG_DRM_MXSFB)  += mxsfb/
>  obj-$(CONFIG_DRM_TINYDRM) += tinydrm/
>  obj-$(CONFIG_DRM_PL111) += pl111/
> +obj-$(CONFIG_DRM_TVE200) += tve200/
> diff --git a/drivers/gpu/drm/tve200/Kconfig b/drivers/gpu/drm/tve200/Kconfig
> new file mode 100644
> index ..21d9841ddb88
> --- /dev/null
> +++ b/drivers/gpu/drm/tve200/Kconfig
> @@ -0,0 +1,15 @@
> +config DRM_TVE200
> + tristate "DRM Support for Faraday TV Encoder TVE200"
> + depends on DRM
> + depends on CMA
> + depends on ARM || COMPILE_TEST
> + depends 

Re: [PATCH 2/4] drm/tve200: Add new driver for TVE200

2017-08-14 Thread Daniel Vetter
On Sun, Aug 13, 2017 at 05:11:30PM +0200, Linus Walleij wrote:
> This adds a new DRM driver for the Faraday Technology TVE200
> block. This "TV Encoder" encodes a ITU-T BT.656 stream and can
> be found in the StorLink SL3516 (later Cortina Systems CS3516)
> as well as the Grain Media GM8180.
> 
> I do not have definitive word from anyone at Faraday that this
> IP block is theirs, but it bears the hallmark of their 3-digit
> version code (200) and is used in two SoCs from completely
> different companies. (Grain Media was fully owned by Faraday
> until it was transferred to NovoTek this january, and
> Faraday did lots of work on the StorLink SoCs.)
> 
> The D-Link DIR-685 uses this in connection with the Ilitek
> ILI9322 panel driver that supports BT.656 input, while the
> GM8180 apparently has been used with the Cirrus Logic CS4954
> digital video encoder. The oldest user seems to be
> something called Techwall 2835.
> 
> This driver is heavily inspired by Eric Anholt's PL111
> driver and therefore I have mentioned all the ancestor authors
> in the header file.
> 
> Signed-off-by: Linus Walleij 
> ---
>  Documentation/gpu/index.rst   |   1 +
>  Documentation/gpu/tve200.rst  |   6 +
>  MAINTAINERS   |   6 +
>  drivers/gpu/drm/Kconfig   |   2 +
>  drivers/gpu/drm/Makefile  |   1 +
>  drivers/gpu/drm/tve200/Kconfig|  15 ++
>  drivers/gpu/drm/tve200/Makefile   |   5 +
>  drivers/gpu/drm/tve200/tve200_connector.c | 126 +++
>  drivers/gpu/drm/tve200/tve200_display.c   | 346 
> ++
>  drivers/gpu/drm/tve200/tve200_drm.h   | 129 +++
>  drivers/gpu/drm/tve200/tve200_drv.c   | 277 
>  11 files changed, 914 insertions(+)
>  create mode 100644 Documentation/gpu/tve200.rst
>  create mode 100644 drivers/gpu/drm/tve200/Kconfig
>  create mode 100644 drivers/gpu/drm/tve200/Makefile
>  create mode 100644 drivers/gpu/drm/tve200/tve200_connector.c
>  create mode 100644 drivers/gpu/drm/tve200/tve200_display.c
>  create mode 100644 drivers/gpu/drm/tve200/tve200_drm.h
>  create mode 100644 drivers/gpu/drm/tve200/tve200_drv.c
> 
> diff --git a/Documentation/gpu/index.rst b/Documentation/gpu/index.rst
> index 35d673bf9b56..c36586dad29d 100644
> --- a/Documentation/gpu/index.rst
> +++ b/Documentation/gpu/index.rst
> @@ -15,6 +15,7 @@ Linux GPU Driver Developer's Guide
> pl111
> tegra
> tinydrm
> +   tve200
> vc4
> vga-switcheroo
> vgaarbiter
> diff --git a/Documentation/gpu/tve200.rst b/Documentation/gpu/tve200.rst
> new file mode 100644
> index ..69b17b324e12
> --- /dev/null
> +++ b/Documentation/gpu/tve200.rst
> @@ -0,0 +1,6 @@
> +==
> + drm/tve200 Faraday TV Encoder 200
> +==
> +
> +.. kernel-doc:: drivers/gpu/drm/tve200/tve200_drv.c
> +   :doc: Faraday TV Encoder 200
> diff --git a/MAINTAINERS b/MAINTAINERS
> index e87cba115ea4..c3d42d68253a 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -4305,6 +4305,12 @@ T: git git://anongit.freedesktop.org/drm/drm-misc
>  S:   Maintained
>  F:   drivers/gpu/drm/bochs/
>  
> +DRM DRIVER FOR FARADAY TVE200 TV ENCODER
> +M:   Linus Walleij 
> +T:   git git://anongit.freedesktop.org/drm/drm-misc
> +S:   Maintained
> +F:   drivers/gpu/drm/tve200/
> +
>  DRM DRIVER FOR INTEL I810 VIDEO CARDS
>  S:   Orphan / Obsolete
>  F:   drivers/gpu/drm/i810/
> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
> index 83cb2a88c204..c5e1a8409285 100644
> --- a/drivers/gpu/drm/Kconfig
> +++ b/drivers/gpu/drm/Kconfig
> @@ -278,6 +278,8 @@ source "drivers/gpu/drm/tinydrm/Kconfig"
>  
>  source "drivers/gpu/drm/pl111/Kconfig"
>  
> +source "drivers/gpu/drm/tve200/Kconfig"
> +
>  # Keep legacy drivers last
>  
>  menuconfig DRM_LEGACY
> diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
> index 24a066e1841c..cc81813e2238 100644
> --- a/drivers/gpu/drm/Makefile
> +++ b/drivers/gpu/drm/Makefile
> @@ -100,3 +100,4 @@ obj-$(CONFIG_DRM_ZTE) += zte/
>  obj-$(CONFIG_DRM_MXSFB)  += mxsfb/
>  obj-$(CONFIG_DRM_TINYDRM) += tinydrm/
>  obj-$(CONFIG_DRM_PL111) += pl111/
> +obj-$(CONFIG_DRM_TVE200) += tve200/
> diff --git a/drivers/gpu/drm/tve200/Kconfig b/drivers/gpu/drm/tve200/Kconfig
> new file mode 100644
> index ..21d9841ddb88
> --- /dev/null
> +++ b/drivers/gpu/drm/tve200/Kconfig
> @@ -0,0 +1,15 @@
> +config DRM_TVE200
> + tristate "DRM Support for Faraday TV Encoder TVE200"
> + depends on DRM
> + depends on CMA
> + depends on ARM || COMPILE_TEST
> + depends on OF
> + select DRM_PANEL
> + select DRM_KMS_HELPER
> + select DRM_KMS_CMA_HELPER
> + select DRM_GEM_CMA_HELPER
> + select VT_HW_CONSOLE_BINDING if FRAMEBUFFER_CONSOLE
> + help
> +   Choose this option for DRM support for the Faraday TV 

[PATCH 2/4] drm/tve200: Add new driver for TVE200

2017-08-13 Thread Linus Walleij
This adds a new DRM driver for the Faraday Technology TVE200
block. This "TV Encoder" encodes a ITU-T BT.656 stream and can
be found in the StorLink SL3516 (later Cortina Systems CS3516)
as well as the Grain Media GM8180.

I do not have definitive word from anyone at Faraday that this
IP block is theirs, but it bears the hallmark of their 3-digit
version code (200) and is used in two SoCs from completely
different companies. (Grain Media was fully owned by Faraday
until it was transferred to NovoTek this january, and
Faraday did lots of work on the StorLink SoCs.)

The D-Link DIR-685 uses this in connection with the Ilitek
ILI9322 panel driver that supports BT.656 input, while the
GM8180 apparently has been used with the Cirrus Logic CS4954
digital video encoder. The oldest user seems to be
something called Techwall 2835.

This driver is heavily inspired by Eric Anholt's PL111
driver and therefore I have mentioned all the ancestor authors
in the header file.

Signed-off-by: Linus Walleij 
---
 Documentation/gpu/index.rst   |   1 +
 Documentation/gpu/tve200.rst  |   6 +
 MAINTAINERS   |   6 +
 drivers/gpu/drm/Kconfig   |   2 +
 drivers/gpu/drm/Makefile  |   1 +
 drivers/gpu/drm/tve200/Kconfig|  15 ++
 drivers/gpu/drm/tve200/Makefile   |   5 +
 drivers/gpu/drm/tve200/tve200_connector.c | 126 +++
 drivers/gpu/drm/tve200/tve200_display.c   | 346 ++
 drivers/gpu/drm/tve200/tve200_drm.h   | 129 +++
 drivers/gpu/drm/tve200/tve200_drv.c   | 277 
 11 files changed, 914 insertions(+)
 create mode 100644 Documentation/gpu/tve200.rst
 create mode 100644 drivers/gpu/drm/tve200/Kconfig
 create mode 100644 drivers/gpu/drm/tve200/Makefile
 create mode 100644 drivers/gpu/drm/tve200/tve200_connector.c
 create mode 100644 drivers/gpu/drm/tve200/tve200_display.c
 create mode 100644 drivers/gpu/drm/tve200/tve200_drm.h
 create mode 100644 drivers/gpu/drm/tve200/tve200_drv.c

diff --git a/Documentation/gpu/index.rst b/Documentation/gpu/index.rst
index 35d673bf9b56..c36586dad29d 100644
--- a/Documentation/gpu/index.rst
+++ b/Documentation/gpu/index.rst
@@ -15,6 +15,7 @@ Linux GPU Driver Developer's Guide
pl111
tegra
tinydrm
+   tve200
vc4
vga-switcheroo
vgaarbiter
diff --git a/Documentation/gpu/tve200.rst b/Documentation/gpu/tve200.rst
new file mode 100644
index ..69b17b324e12
--- /dev/null
+++ b/Documentation/gpu/tve200.rst
@@ -0,0 +1,6 @@
+==
+ drm/tve200 Faraday TV Encoder 200
+==
+
+.. kernel-doc:: drivers/gpu/drm/tve200/tve200_drv.c
+   :doc: Faraday TV Encoder 200
diff --git a/MAINTAINERS b/MAINTAINERS
index e87cba115ea4..c3d42d68253a 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -4305,6 +4305,12 @@ T:   git git://anongit.freedesktop.org/drm/drm-misc
 S: Maintained
 F: drivers/gpu/drm/bochs/
 
+DRM DRIVER FOR FARADAY TVE200 TV ENCODER
+M: Linus Walleij 
+T: git git://anongit.freedesktop.org/drm/drm-misc
+S: Maintained
+F: drivers/gpu/drm/tve200/
+
 DRM DRIVER FOR INTEL I810 VIDEO CARDS
 S: Orphan / Obsolete
 F: drivers/gpu/drm/i810/
diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
index 83cb2a88c204..c5e1a8409285 100644
--- a/drivers/gpu/drm/Kconfig
+++ b/drivers/gpu/drm/Kconfig
@@ -278,6 +278,8 @@ source "drivers/gpu/drm/tinydrm/Kconfig"
 
 source "drivers/gpu/drm/pl111/Kconfig"
 
+source "drivers/gpu/drm/tve200/Kconfig"
+
 # Keep legacy drivers last
 
 menuconfig DRM_LEGACY
diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
index 24a066e1841c..cc81813e2238 100644
--- a/drivers/gpu/drm/Makefile
+++ b/drivers/gpu/drm/Makefile
@@ -100,3 +100,4 @@ obj-$(CONFIG_DRM_ZTE)   += zte/
 obj-$(CONFIG_DRM_MXSFB)+= mxsfb/
 obj-$(CONFIG_DRM_TINYDRM) += tinydrm/
 obj-$(CONFIG_DRM_PL111) += pl111/
+obj-$(CONFIG_DRM_TVE200) += tve200/
diff --git a/drivers/gpu/drm/tve200/Kconfig b/drivers/gpu/drm/tve200/Kconfig
new file mode 100644
index ..21d9841ddb88
--- /dev/null
+++ b/drivers/gpu/drm/tve200/Kconfig
@@ -0,0 +1,15 @@
+config DRM_TVE200
+   tristate "DRM Support for Faraday TV Encoder TVE200"
+   depends on DRM
+   depends on CMA
+   depends on ARM || COMPILE_TEST
+   depends on OF
+   select DRM_PANEL
+   select DRM_KMS_HELPER
+   select DRM_KMS_CMA_HELPER
+   select DRM_GEM_CMA_HELPER
+   select VT_HW_CONSOLE_BINDING if FRAMEBUFFER_CONSOLE
+   help
+ Choose this option for DRM support for the Faraday TV Encoder
+ TVE200 Controller.
+ If M is selected the module will be called tve200_drm.
diff --git a/drivers/gpu/drm/tve200/Makefile b/drivers/gpu/drm/tve200/Makefile
new file mode 100644
index ..a9dba54f7ee5
--- /dev/null
+++