From mboxrd@z Thu Jan 1 00:00:00 1970 From: plaes@plaes.org (Priit Laes) Date: Sat, 20 Feb 2016 15:45:41 +0200 Subject: [linux-sunxi] [PATCH v2 00/26] drm: Add Allwinner A10 display engine support 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> Message-ID: <1455975941.10551.3.camel@plaes.org> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.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 >