Thread (64 messages) 64 messages, 9 authors, 2016-02-20

[linux-sunxi] [PATCH v2 00/26] drm: Add Allwinner A10 display engine support

flat view

From: Priit Laes <hidden>
Date: 2016-02-20 13:45:55
Also in: dri-devel, linux-clk, linux-devicetree, lkml

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help