From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758651AbcBTNpz (ORCPT ); Sat, 20 Feb 2016 08:45:55 -0500 Received: from plaes.org ([188.166.43.21]:39292 "EHLO plaes.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753131AbcBTNpt (ORCPT ); Sat, 20 Feb 2016 08:45:49 -0500 Message-ID: <1455975941.10551.3.camel@plaes.org> Subject: Re: [linux-sunxi] [PATCH v2 00/26] drm: Add Allwinner A10 display engine support From: Priit Laes To: maxime.ripard@free-electrons.com, Mike Turquette , Stephen Boyd , David Airlie , Thierry Reding , Philipp Zabel Cc: devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-sunxi@googlegroups.com, Laurent Pinchart , Chen-Yu Tsai , Hans de Goede , Alexander Kaplan , Boris Brezillon , Wynter Woods , Thomas Petazzoni , Rob Clark , Daniel Vetter Date: Sat, 20 Feb 2016 15:45:41 +0200 In-Reply-To: <1452785109-6172-1-git-send-email-maxime.ripard@free-electrons.com> References: <1452785109-6172-1-git-send-email-maxime.ripard@free-electrons.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.19.4 Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 2016-01-14 at 16:24 +0100, Maxime Ripard wrote: > Hi everyone, > > The Allwinner SoCs (except for the very latest ones) all share the > same set of controllers, loosely coupled together to form the display > pipeline. > > Depending on the SoC, the number of instances of the controller will > change (2 instances of each in the A10, only one in the A13, for > example), and the output availables will change too (HDMI, composite, > VGA on the A20, none of them on the A13). > > On most featured SoCs, it looks like that: > >  +--------------------------------------------+ >  |                    RAM                     | >  +--------------------------------------------+ >        |            |      |            | >        v            |      |            v >  +----------------+ |      | +----------------+ >  |    Frontend    | |      | |    Frontend    | >  +----------------+ |      | +----------------+ >          |          |      |         | >          v          |      |         v >  +----------------+ |      | +----------------+ >  |    Backend     |<+      +>|    Backend     | >  +----------------+          +----------------+ >          |                           | >          v                           v >  +----------------+          +----------------+---> LVDS >  |      TCON      |          |      TCON      |---> RGB >  +----------------+          +----------------+ >        |       +---+       +---+          | >        |           |       |              | >        v           v       v              v >  +------------+  +------------+  +------------+---> VGA >  | TV Encoder |  |    HDMI    |  | TV Encoder |---> Composite >  +------------+  +------------+  +------------+ > > The current code only assumes that there is a single instance of all > the controllers. It also supports only the RGB and Composite > interfaces. I found some time to play with it (with intention to get it running also on sun7i and sun4i) and ran into this when trying to build sun4i_drm as module: ERROR: "sun4i_tcon1_mode_set" [drivers/gpu/drm/sun4i/sun4i_tv.ko] undefined! ERROR: "sun4i_backend_apply_color_correction" [drivers/gpu/drm/sun4i/sun4i_tv.ko] undefined! ERROR: "sun4i_tcon_channel_disable" [drivers/gpu/drm/sun4i/sun4i_tv.ko] undefined! ERROR: "sun4i_tcon_channel_enable" [drivers/gpu/drm/sun4i/sun4i_tv.ko] undefined! ERROR: "clk_unregister_composite" [drivers/gpu/drm/sun4i/sun4i_tcon.ko] undefined! ERROR: "sun4i_rgb_init" [drivers/gpu/drm/sun4i/sun4i_tcon.ko] undefined! ERROR: "clk_register_composite" [drivers/gpu/drm/sun4i/sun4i_tcon.ko] undefined! ERROR: "sun4i_backend_update_layer_coord" [drivers/gpu/drm/sun4i/sun4i-drm.ko] undefined! ERROR: "sun4i_backend_update_layer_formats" [drivers/gpu/drm/sun4i/sun4i-drm.ko] undefined! ERROR: "sun4i_tcon_channel_disable" [drivers/gpu/drm/sun4i/sun4i-drm.ko] undefined! ERROR: "sun4i_tcon_enable_vblank" [drivers/gpu/drm/sun4i/sun4i-drm.ko] undefined! ERROR: "sun4i_backend_update_layer_buffer" [drivers/gpu/drm/sun4i/sun4i-drm.ko] undefined! ERROR: "sun4i_backend_layer_enable" [drivers/gpu/drm/sun4i/sun4i-drm.ko] undefined! ERROR: "sun4i_tcon_channel_enable" [drivers/gpu/drm/sun4i/sun4i-drm.ko] undefined! ERROR: "sun4i_tcon_enable" [drivers/gpu/drm/sun4i/sun4i-drm.ko] undefined! ERROR: "sun4i_tcon_disable" [drivers/gpu/drm/sun4i/sun4i-drm.ko] undefined! ERROR: "sun4i_tcon0_mode_set" [drivers/gpu/drm/sun4i/sun4i-drm.ko] undefined! ERROR: "sun4i_backend_commit" [drivers/gpu/drm/sun4i/sun4i-drm.ko] undefined! scripts/Makefile.modpost:91: recipe for target '__modpost' failed > > Let me know what you think, > Maxime > > Changes from v1: >   - Rebased on top of 4.4 > >   - Merged the clock drivers for the display and TCON channel 0 > clocks >   - Replaced the container_of calls in the display reset clocks to an >     inline function >   - Checked the return code of of_clk_parent_fill in the clocks >     drivers >   - Checked the return code of of_clk_add_provider in the tcon-ch1 > and >     PLL3 clocks >   - Added missing clocks headers >   - Created a composite clock unregister function > >   - Moved the binding documentation to >     Documentation/devicetree/bindings/display >   - Added the clocks binding documentation >   - Added the Olimex vendor to the list of DT vendors >   - Moved to the OF graph representation and the component framework > >   - Moved the reset cells count check into the reset framework to >     avoid duplicating the code in every xlate implementation. >   - Made the reset_ops const > >   - Reworked the DRM cmdline mode parsing code to allow named mode >   - Fixed the TV mode lookup when the mode name is not present (for >     example because it was given by the userspace) > >   - Made the driver outputs optional (to avoid crashing when a board >     doesn't have either a panel or a composite output enabled) >   - Added multiple plane support with transparency >   - Moved the backend registers writes commit in the CRTC > atomic_flush >     callback >   - Removed the load / unload functions >   - Removed the enabled booleans in my private structure and removed >     the implicit call to disable_unused_functions in the DRM core to >     push it in the drivers. >   - Fixed a few bitmasks on some bitfields definition >   - Fixed the RGB connector mode validation that was not testing the >     right values > > Matthias Brugger (1): >   clk: Add regmap support > > Maxime Ripard (25): >   reset: Move DT cell size check to the core >   reset: Make reset_control_ops const >   clk: composite: Add unregister function >   clk: sunxi: Add display and TCON0 clocks driver >   clk: sunxi: Add PLL3 clock >   clk: sunxi: Add TCON channel1 clock >   clk: sun5i: add DRAM gates >   ARM: sun5i: dt: Add pll3 and pll7 clocks >   ARM: sun5i: a13: Add display and TCON clocks >   ARM: sun5i: Add DRAM gates >   ARM: sun5i: Add TV encoder gate to the DTSI >   drm/fb_cma_helper: Remove implicit call to disable_unused_functions >   drm/modes: Rewrite the command line parser >   drm/modes: Support modes names on the command line >   drm: Add Allwinner A10 Display Engine support >   drm: sun4i: Add DT bindings documentation >   drm: sun4i: Add RGB output >   drm: sun4i: Add composite output >   drm: sun4i: tv: Add PAL output standard >   drm: sun4i: tv: Add NTSC output standard >   ARM: sun5i: r8: Add display blocks to the DTSI >   ARM: sun5i: chip: Enable the TV Encoder >   devicetree: Add olimex vendor prefix >   drm/panel: simple: Add timings for the Olimex LCD-OLinuXino-4.3TS >   DO NOT MERGE: ARM: sun5i: chip: Enable the LCD panel > >  Documentation/devicetree/bindings/clock/sunxi.txt  |   5 + >  .../display/panel/olimex,lcd-olinuxino-43-ts.txt   |   7 + >  .../bindings/display/sunxi/sun4i-drm.txt           | 228 +++++++ >  .../devicetree/bindings/vendor-prefixes.txt        |   1 + >  arch/arm/boot/dts/sun5i-a10s.dtsi                  |   7 +- >  arch/arm/boot/dts/sun5i-a13.dtsi                   |  46 +- >  arch/arm/boot/dts/sun5i-r8-chip.dts                |  17 + >  arch/arm/boot/dts/sun5i-r8.dtsi                    | 139 ++++- >  arch/arm/boot/dts/sun5i.dtsi                       |  62 ++ >  drivers/clk/Makefile                               |   1 + >  drivers/clk/clk-composite.c                        |  15 + >  drivers/clk/clk-divider.c                          |  68 ++- >  drivers/clk/clk-gate.c                             |  54 +- >  drivers/clk/clk-io.c                               |  48 ++ >  drivers/clk/clk-io.h                               |  22 + >  drivers/clk/clk-mux.c                              |  94 ++- >  drivers/clk/sunxi/Makefile                         |   3 + >  drivers/clk/sunxi/clk-simple-gates.c               |   2 + >  drivers/clk/sunxi/clk-sun4i-display.c              | 241 ++++++++ >  drivers/clk/sunxi/clk-sun4i-pll3.c                 |  90 +++ >  drivers/clk/sunxi/clk-sun4i-tcon-ch1.c             | 154 +++++ >  drivers/gpu/drm/Kconfig                            |   2 + >  drivers/gpu/drm/Makefile                           |   3 +- >  drivers/gpu/drm/drm_crtc.c                         |   3 +- >  drivers/gpu/drm/drm_fb_cma_helper.c                |   3 - >  drivers/gpu/drm/drm_fb_helper.c                    |   4 + >  drivers/gpu/drm/drm_modes.c                        | 327 ++++++---- >  drivers/gpu/drm/imx/imx-drm-core.c                 |   1 + >  drivers/gpu/drm/panel/panel-simple.c               |  26 + >  drivers/gpu/drm/sti/sti_drv.c                      |   1 + >  drivers/gpu/drm/sun4i/Kconfig                      |  14 + >  drivers/gpu/drm/sun4i/Makefile                     |  12 + >  drivers/gpu/drm/sun4i/sun4i_backend.c              | 321 ++++++++++ >  drivers/gpu/drm/sun4i/sun4i_backend.h              | 160 +++++ >  drivers/gpu/drm/sun4i/sun4i_crtc.c                 | 120 ++++ >  drivers/gpu/drm/sun4i/sun4i_crtc.h                 |  30 + >  drivers/gpu/drm/sun4i/sun4i_drv.c                  | 325 ++++++++++ >  drivers/gpu/drm/sun4i/sun4i_drv.h                  |  30 + >  drivers/gpu/drm/sun4i/sun4i_framebuffer.c          |  54 ++ >  drivers/gpu/drm/sun4i/sun4i_framebuffer.h          |  19 + >  drivers/gpu/drm/sun4i/sun4i_layer.c                | 160 +++++ >  drivers/gpu/drm/sun4i/sun4i_layer.h                |  30 + >  drivers/gpu/drm/sun4i/sun4i_rgb.c                  | 229 +++++++ >  drivers/gpu/drm/sun4i/sun4i_rgb.h                  |  18 + >  drivers/gpu/drm/sun4i/sun4i_tcon.c                 | 521 > ++++++++++++++++ >  drivers/gpu/drm/sun4i/sun4i_tcon.h                 | 177 ++++++ >  drivers/gpu/drm/sun4i/sun4i_tv.c                   | 675 > +++++++++++++++++++++ >  drivers/gpu/drm/tilcdc/tilcdc_drv.c                |   1 + >  drivers/reset/core.c                               |   6 +- >  include/drm/drm_modes.h                            |   1 + >  include/linux/clk-provider.h                       |  55 +- >  include/linux/reset-controller.h                   |   2 +- >  52 files changed, 4455 insertions(+), 179 deletions(-) >  create mode 100644 > Documentation/devicetree/bindings/display/panel/olimex,lcd-olinuxino- > 43-ts.txt >  create mode 100644 > Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt >  create mode 100644 drivers/clk/clk-io.c >  create mode 100644 drivers/clk/clk-io.h >  create mode 100644 drivers/clk/sunxi/clk-sun4i-display.c >  create mode 100644 drivers/clk/sunxi/clk-sun4i-pll3.c >  create mode 100644 drivers/clk/sunxi/clk-sun4i-tcon-ch1.c >  create mode 100644 drivers/gpu/drm/sun4i/Kconfig >  create mode 100644 drivers/gpu/drm/sun4i/Makefile >  create mode 100644 drivers/gpu/drm/sun4i/sun4i_backend.c >  create mode 100644 drivers/gpu/drm/sun4i/sun4i_backend.h >  create mode 100644 drivers/gpu/drm/sun4i/sun4i_crtc.c >  create mode 100644 drivers/gpu/drm/sun4i/sun4i_crtc.h >  create mode 100644 drivers/gpu/drm/sun4i/sun4i_drv.c >  create mode 100644 drivers/gpu/drm/sun4i/sun4i_drv.h >  create mode 100644 drivers/gpu/drm/sun4i/sun4i_framebuffer.c >  create mode 100644 drivers/gpu/drm/sun4i/sun4i_framebuffer.h >  create mode 100644 drivers/gpu/drm/sun4i/sun4i_layer.c >  create mode 100644 drivers/gpu/drm/sun4i/sun4i_layer.h >  create mode 100644 drivers/gpu/drm/sun4i/sun4i_rgb.c >  create mode 100644 drivers/gpu/drm/sun4i/sun4i_rgb.h >  create mode 100644 drivers/gpu/drm/sun4i/sun4i_tcon.c >  create mode 100644 drivers/gpu/drm/sun4i/sun4i_tcon.h >  create mode 100644 drivers/gpu/drm/sun4i/sun4i_tv.c > > --  > 2.6.4 >