[linux-sunxi] [PATCH v2 00/26] drm: Add Allwinner A10 display engine support
Priit Laes
plaes at plaes.org
Sat Feb 20 05:45:41 PST 2016
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
>
More information about the linux-arm-kernel
mailing list