From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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" Mime-Version: 1.0 List-ID: 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 > 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 > From mboxrd@z Thu Jan 1 00:00:00 1970 From: Priit Laes Subject: Re: [PATCH v2 00/26] drm: Add Allwinner A10 display engine support Date: Sat, 20 Feb 2016 15:45:41 +0200 Message-ID: <1455975941.10551.3.camel@plaes.org> References: <1452785109-6172-1-git-send-email-maxime.ripard@free-electrons.com> Reply-To: plaes-q/aMd4JkU83YtjvyW6yDsg@public.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1452785109-6172-1-git-send-email-maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , To: maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org, Mike Turquette , Stephen Boyd , David Airlie , Thierry Reding , Philipp Zabel Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-clk-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org, Laurent Pinchart , Chen-Yu Tsai , Hans de Goede , Alexander Kaplan , Boris Brezillon , Wynter Woods , Thomas Petazzoni , Rob Clark , Daniel Vetter List-Id: devicetree@vger.kernel.org T24gVGh1LCAyMDE2LTAxLTE0IGF0IDE2OjI0ICswMTAwLCBNYXhpbWUgUmlwYXJkIHdyb3RlOg0K PiBIaSBldmVyeW9uZSwNCj4gDQo+IFRoZSBBbGx3aW5uZXIgU29DcyAoZXhjZXB0IGZvciB0aGUg dmVyeSBsYXRlc3Qgb25lcykgYWxsIHNoYXJlIHRoZQ0KPiBzYW1lIHNldCBvZiBjb250cm9sbGVy cywgbG9vc2VseSBjb3VwbGVkIHRvZ2V0aGVyIHRvIGZvcm0gdGhlIGRpc3BsYXkNCj4gcGlwZWxp bmUuDQo+IA0KPiBEZXBlbmRpbmcgb24gdGhlIFNvQywgdGhlIG51bWJlciBvZiBpbnN0YW5jZXMg b2YgdGhlIGNvbnRyb2xsZXIgd2lsbA0KPiBjaGFuZ2UgKDIgaW5zdGFuY2VzIG9mIGVhY2ggaW4g dGhlIEExMCwgb25seSBvbmUgaW4gdGhlIEExMywgZm9yDQo+IGV4YW1wbGUpLCBhbmQgdGhlIG91 dHB1dCBhdmFpbGFibGVzIHdpbGwgY2hhbmdlIHRvbyAoSERNSSwgY29tcG9zaXRlLA0KPiBWR0Eg b24gdGhlIEEyMCwgbm9uZSBvZiB0aGVtIG9uIHRoZSBBMTMpLg0KPiANCj4gT24gbW9zdCBmZWF0 dXJlZCBTb0NzLCBpdCBsb29rcyBsaWtlIHRoYXQ6DQo+IA0KPiDCoCstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gwqB8wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoFJBTcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHwNCj4gwqArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rDQo+IMKgwqDCoMKgwqDCoMKgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgwqDCoMKg wqB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfA0KPiDCoMKgwqDCoMKgwqDCoHbCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB8wqDCoMKgwqDCoMKgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHYNCj4g wqArLS0tLS0tLS0tLS0tLS0tLSsgfMKgwqDCoMKgwqDCoHwgKy0tLS0tLS0tLS0tLS0tLS0rDQo+ IMKgfMKgwqDCoMKgRnJvbnRlbmTCoMKgwqDCoHwgfMKgwqDCoMKgwqDCoHwgfMKgwqDCoMKgRnJv bnRlbmTCoMKgwqDCoHwNCj4gwqArLS0tLS0tLS0tLS0tLS0tLSsgfMKgwqDCoMKgwqDCoHwgKy0t LS0tLS0tLS0tLS0tLS0rDQo+IMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgwqDCoMKgwqDCoMKgwqDC oHzCoMKgwqDCoMKgwqB8wqDCoMKgwqDCoMKgwqDCoMKgfA0KPiDCoMKgwqDCoMKgwqDCoMKgwqB2 wqDCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoMKgwqDCoMKgfMKgwqDCoMKgwqDCoMKgwqDCoHYNCj4g wqArLS0tLS0tLS0tLS0tLS0tLSsgfMKgwqDCoMKgwqDCoHwgKy0tLS0tLS0tLS0tLS0tLS0rDQo+ IMKgfMKgwqDCoMKgQmFja2VuZMKgwqDCoMKgwqB8PCvCoMKgwqDCoMKgwqArPnzCoMKgwqDCoEJh Y2tlbmTCoMKgwqDCoMKgfA0KPiDCoCstLS0tLS0tLS0tLS0tLS0tK8KgwqDCoMKgwqDCoMKgwqDC oMKgKy0tLS0tLS0tLS0tLS0tLS0rDQo+IMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8DQo+IMKgwqDCoMKgwqDC oMKgwqDCoHbCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB2DQo+IMKgKy0tLS0tLS0tLS0tLS0tLS0rwqDCoMKgwqDCoMKgwqDCoMKgwqArLS0tLS0t LS0tLS0tLS0tLSstLS0+IExWRFMNCj4gwqB8wqDCoMKgwqDCoMKgVENPTsKgwqDCoMKgwqDCoHzC oMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgwqDCoMKgwqBUQ09OwqDCoMKgwqDCoMKgfC0tLT4gUkdC DQo+IMKgKy0tLS0tLS0tLS0tLS0tLS0rwqDCoMKgwqDCoMKgwqDCoMKgwqArLS0tLS0tLS0tLS0t LS0tLSsNCj4gwqDCoMKgwqDCoMKgwqB8wqDCoMKgwqDCoMKgwqArLS0tK8KgwqDCoMKgwqDCoMKg Ky0tLSvCoMKgwqDCoMKgwqDCoMKgwqDCoHwNCj4gwqDCoMKgwqDCoMKgwqB8wqDCoMKgwqDCoMKg wqDCoMKgwqDCoHzCoMKgwqDCoMKgwqDCoHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfA0K PiDCoMKgwqDCoMKgwqDCoHbCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdsKgwqDCoMKgwqDCoMKgdsKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2DQo+IMKgKy0tLS0tLS0tLS0tLSvCoMKgKy0tLS0t LS0tLS0tLSvCoMKgKy0tLS0tLS0tLS0tLSstLS0+IFZHQQ0KPiDCoHwgVFYgRW5jb2RlciB8wqDC oHzCoMKgwqDCoEhETUnCoMKgwqDCoHzCoMKgfCBUViBFbmNvZGVyIHwtLS0+IENvbXBvc2l0ZQ0K PiDCoCstLS0tLS0tLS0tLS0rwqDCoCstLS0tLS0tLS0tLS0rwqDCoCstLS0tLS0tLS0tLS0rDQo+ IA0KPiBUaGUgY3VycmVudCBjb2RlIG9ubHkgYXNzdW1lcyB0aGF0IHRoZXJlIGlzIGEgc2luZ2xl IGluc3RhbmNlIG9mIGFsbA0KPiB0aGUgY29udHJvbGxlcnMuIEl0IGFsc28gc3VwcG9ydHMgb25s eSB0aGUgUkdCIGFuZCBDb21wb3NpdGUNCj4gaW50ZXJmYWNlcy4NCg0KSSBmb3VuZCBzb21lIHRp bWUgdG8gcGxheSB3aXRoIGl0ICh3aXRoIGludGVudGlvbiB0byBnZXQgaXQgcnVubmluZw0KYWxz byBvbiBzdW43aSBhbmQgc3VuNGkpIGFuZCByYW4gaW50byB0aGlzIHdoZW4gdHJ5aW5nIHRvIGJ1 aWxkDQpzdW40aV9kcm0gYXMgbW9kdWxlOg0KDQpFUlJPUjogInN1bjRpX3Rjb24xX21vZGVfc2V0 IiBbZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX3R2LmtvXSB1bmRlZmluZWQhDQpFUlJPUjog InN1bjRpX2JhY2tlbmRfYXBwbHlfY29sb3JfY29ycmVjdGlvbiIgW2RyaXZlcnMvZ3B1L2RybS9z dW40aS9zdW40aV90di5rb10gdW5kZWZpbmVkIQ0KRVJST1I6ICJzdW40aV90Y29uX2NoYW5uZWxf ZGlzYWJsZSIgW2RyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW40aV90di5rb10gdW5kZWZpbmVkIQ0K RVJST1I6ICJzdW40aV90Y29uX2NoYW5uZWxfZW5hYmxlIiBbZHJpdmVycy9ncHUvZHJtL3N1bjRp L3N1bjRpX3R2LmtvXSB1bmRlZmluZWQhDQpFUlJPUjogImNsa191bnJlZ2lzdGVyX2NvbXBvc2l0 ZSIgW2RyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW40aV90Y29uLmtvXSB1bmRlZmluZWQhDQpFUlJP UjogInN1bjRpX3JnYl9pbml0IiBbZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX3Rjb24ua29d IHVuZGVmaW5lZCENCkVSUk9SOiAiY2xrX3JlZ2lzdGVyX2NvbXBvc2l0ZSIgW2RyaXZlcnMvZ3B1 L2RybS9zdW40aS9zdW40aV90Y29uLmtvXSB1bmRlZmluZWQhDQpFUlJPUjogInN1bjRpX2JhY2tl bmRfdXBkYXRlX2xheWVyX2Nvb3JkIiBbZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpLWRybS5r b10gdW5kZWZpbmVkIQ0KRVJST1I6ICJzdW40aV9iYWNrZW5kX3VwZGF0ZV9sYXllcl9mb3JtYXRz IiBbZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpLWRybS5rb10gdW5kZWZpbmVkIQ0KRVJST1I6 ICJzdW40aV90Y29uX2NoYW5uZWxfZGlzYWJsZSIgW2RyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW40 aS1kcm0ua29dIHVuZGVmaW5lZCENCkVSUk9SOiAic3VuNGlfdGNvbl9lbmFibGVfdmJsYW5rIiBb ZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpLWRybS5rb10gdW5kZWZpbmVkIQ0KRVJST1I6ICJz dW40aV9iYWNrZW5kX3VwZGF0ZV9sYXllcl9idWZmZXIiIFtkcml2ZXJzL2dwdS9kcm0vc3VuNGkv c3VuNGktZHJtLmtvXSB1bmRlZmluZWQhDQpFUlJPUjogInN1bjRpX2JhY2tlbmRfbGF5ZXJfZW5h YmxlIiBbZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpLWRybS5rb10gdW5kZWZpbmVkIQ0KRVJS T1I6ICJzdW40aV90Y29uX2NoYW5uZWxfZW5hYmxlIiBbZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1 bjRpLWRybS5rb10gdW5kZWZpbmVkIQ0KRVJST1I6ICJzdW40aV90Y29uX2VuYWJsZSIgW2RyaXZl cnMvZ3B1L2RybS9zdW40aS9zdW40aS1kcm0ua29dIHVuZGVmaW5lZCENCkVSUk9SOiAic3VuNGlf dGNvbl9kaXNhYmxlIiBbZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpLWRybS5rb10gdW5kZWZp bmVkIQ0KRVJST1I6ICJzdW40aV90Y29uMF9tb2RlX3NldCIgW2RyaXZlcnMvZ3B1L2RybS9zdW40 aS9zdW40aS1kcm0ua29dIHVuZGVmaW5lZCENCkVSUk9SOiAic3VuNGlfYmFja2VuZF9jb21taXQi IFtkcml2ZXJzL2dwdS9kcm0vc3VuNGkvc3VuNGktZHJtLmtvXSB1bmRlZmluZWQhDQpzY3JpcHRz L01ha2VmaWxlLm1vZHBvc3Q6OTE6IHJlY2lwZSBmb3IgdGFyZ2V0ICdfX21vZHBvc3QnIGZhaWxl ZA0KDQoNCg0KPiANCj4gTGV0IG1lIGtub3cgd2hhdCB5b3UgdGhpbmssDQo+IE1heGltZQ0KPiAN Cj4gQ2hhbmdlcyBmcm9tIHYxOg0KPiDCoCAtIFJlYmFzZWQgb24gdG9wIG9mIDQuNA0KPiANCj4g wqAgLSBNZXJnZWQgdGhlIGNsb2NrIGRyaXZlcnMgZm9yIHRoZSBkaXNwbGF5IGFuZCBUQ09OIGNo YW5uZWwgMA0KPiBjbG9ja3MNCj4gwqAgLSBSZXBsYWNlZCB0aGUgY29udGFpbmVyX29mIGNhbGxz IGluIHRoZSBkaXNwbGF5IHJlc2V0IGNsb2NrcyB0byBhbg0KPiDCoMKgwqDCoGlubGluZSBmdW5j dGlvbg0KPiDCoCAtIENoZWNrZWQgdGhlIHJldHVybiBjb2RlIG9mIG9mX2Nsa19wYXJlbnRfZmls bCBpbiB0aGUgY2xvY2tzDQo+IMKgwqDCoMKgZHJpdmVycw0KPiDCoCAtIENoZWNrZWQgdGhlIHJl dHVybiBjb2RlIG9mIG9mX2Nsa19hZGRfcHJvdmlkZXIgaW4gdGhlIHRjb24tY2gxDQo+IGFuZA0K PiDCoMKgwqDCoFBMTDMgY2xvY2tzDQo+IMKgIC0gQWRkZWQgbWlzc2luZyBjbG9ja3MgaGVhZGVy cw0KPiDCoCAtIENyZWF0ZWQgYSBjb21wb3NpdGUgY2xvY2sgdW5yZWdpc3RlciBmdW5jdGlvbg0K PiANCj4gwqAgLSBNb3ZlZCB0aGUgYmluZGluZyBkb2N1bWVudGF0aW9uIHRvDQo+IMKgwqDCoMKg RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkNCj4gwqAgLSBBZGRlZCB0 aGUgY2xvY2tzIGJpbmRpbmcgZG9jdW1lbnRhdGlvbg0KPiDCoCAtIEFkZGVkIHRoZSBPbGltZXgg dmVuZG9yIHRvIHRoZSBsaXN0IG9mIERUIHZlbmRvcnMNCj4gwqAgLSBNb3ZlZCB0byB0aGUgT0Yg Z3JhcGggcmVwcmVzZW50YXRpb24gYW5kIHRoZSBjb21wb25lbnQgZnJhbWV3b3JrDQo+IA0KPiDC oCAtIE1vdmVkIHRoZSByZXNldCBjZWxscyBjb3VudCBjaGVjayBpbnRvIHRoZSByZXNldCBmcmFt ZXdvcmsgdG8NCj4gwqDCoMKgwqBhdm9pZCBkdXBsaWNhdGluZyB0aGUgY29kZSBpbiBldmVyeSB4 bGF0ZSBpbXBsZW1lbnRhdGlvbi4NCj4gwqAgLSBNYWRlIHRoZSByZXNldF9vcHMgY29uc3QNCj4g DQo+IMKgIC0gUmV3b3JrZWQgdGhlIERSTSBjbWRsaW5lIG1vZGUgcGFyc2luZyBjb2RlIHRvIGFs bG93IG5hbWVkIG1vZGUNCj4gwqAgLSBGaXhlZCB0aGUgVFYgbW9kZSBsb29rdXAgd2hlbiB0aGUg bW9kZSBuYW1lIGlzIG5vdCBwcmVzZW50IChmb3INCj4gwqDCoMKgwqBleGFtcGxlIGJlY2F1c2Ug aXQgd2FzIGdpdmVuIGJ5IHRoZSB1c2Vyc3BhY2UpDQo+IA0KPiDCoCAtIE1hZGUgdGhlIGRyaXZl ciBvdXRwdXRzIG9wdGlvbmFsICh0byBhdm9pZCBjcmFzaGluZyB3aGVuIGEgYm9hcmQNCj4gwqDC oMKgwqBkb2Vzbid0IGhhdmUgZWl0aGVyIGEgcGFuZWwgb3IgYSBjb21wb3NpdGUgb3V0cHV0IGVu YWJsZWQpDQo+IMKgIC0gQWRkZWQgbXVsdGlwbGUgcGxhbmUgc3VwcG9ydCB3aXRoIHRyYW5zcGFy ZW5jeQ0KPiDCoCAtIE1vdmVkIHRoZSBiYWNrZW5kIHJlZ2lzdGVycyB3cml0ZXMgY29tbWl0IGlu IHRoZSBDUlRDDQo+IGF0b21pY19mbHVzaA0KPiDCoMKgwqDCoGNhbGxiYWNrDQo+IMKgIC0gUmVt b3ZlZCB0aGUgbG9hZCAvIHVubG9hZCBmdW5jdGlvbnMNCj4gwqAgLSBSZW1vdmVkIHRoZSBlbmFi bGVkIGJvb2xlYW5zIGluIG15IHByaXZhdGUgc3RydWN0dXJlIGFuZCByZW1vdmVkDQo+IMKgwqDC oMKgdGhlIGltcGxpY2l0IGNhbGwgdG8gZGlzYWJsZV91bnVzZWRfZnVuY3Rpb25zIGluIHRoZSBE Uk0gY29yZSB0bw0KPiDCoMKgwqDCoHB1c2ggaXQgaW4gdGhlIGRyaXZlcnMuDQo+IMKgIC0gRml4 ZWQgYSBmZXcgYml0bWFza3Mgb24gc29tZSBiaXRmaWVsZHMgZGVmaW5pdGlvbg0KPiDCoCAtIEZp eGVkIHRoZSBSR0IgY29ubmVjdG9yIG1vZGUgdmFsaWRhdGlvbiB0aGF0IHdhcyBub3QgdGVzdGlu ZyB0aGUNCj4gwqDCoMKgwqByaWdodCB2YWx1ZXMNCj4gDQo+IE1hdHRoaWFzIEJydWdnZXIgKDEp Og0KPiDCoCBjbGs6IEFkZCByZWdtYXAgc3VwcG9ydA0KPiANCj4gTWF4aW1lIFJpcGFyZCAoMjUp Og0KPiDCoCByZXNldDogTW92ZSBEVCBjZWxsIHNpemUgY2hlY2sgdG8gdGhlIGNvcmUNCj4gwqAg cmVzZXQ6IE1ha2UgcmVzZXRfY29udHJvbF9vcHMgY29uc3QNCj4gwqAgY2xrOiBjb21wb3NpdGU6 IEFkZCB1bnJlZ2lzdGVyIGZ1bmN0aW9uDQo+IMKgIGNsazogc3VueGk6IEFkZCBkaXNwbGF5IGFu ZCBUQ09OMCBjbG9ja3MgZHJpdmVyDQo+IMKgIGNsazogc3VueGk6IEFkZCBQTEwzIGNsb2NrDQo+ IMKgIGNsazogc3VueGk6IEFkZCBUQ09OIGNoYW5uZWwxIGNsb2NrDQo+IMKgIGNsazogc3VuNWk6 IGFkZCBEUkFNIGdhdGVzDQo+IMKgIEFSTTogc3VuNWk6IGR0OiBBZGQgcGxsMyBhbmQgcGxsNyBj bG9ja3MNCj4gwqAgQVJNOiBzdW41aTogYTEzOiBBZGQgZGlzcGxheSBhbmQgVENPTiBjbG9ja3MN Cj4gwqAgQVJNOiBzdW41aTogQWRkIERSQU0gZ2F0ZXMNCj4gwqAgQVJNOiBzdW41aTogQWRkIFRW IGVuY29kZXIgZ2F0ZSB0byB0aGUgRFRTSQ0KPiDCoCBkcm0vZmJfY21hX2hlbHBlcjogUmVtb3Zl IGltcGxpY2l0IGNhbGwgdG8gZGlzYWJsZV91bnVzZWRfZnVuY3Rpb25zDQo+IMKgIGRybS9tb2Rl czogUmV3cml0ZSB0aGUgY29tbWFuZCBsaW5lIHBhcnNlcg0KPiDCoCBkcm0vbW9kZXM6IFN1cHBv cnQgbW9kZXMgbmFtZXMgb24gdGhlIGNvbW1hbmQgbGluZQ0KPiDCoCBkcm06IEFkZCBBbGx3aW5u ZXIgQTEwIERpc3BsYXkgRW5naW5lIHN1cHBvcnQNCj4gwqAgZHJtOiBzdW40aTogQWRkIERUIGJp bmRpbmdzIGRvY3VtZW50YXRpb24NCj4gwqAgZHJtOiBzdW40aTogQWRkIFJHQiBvdXRwdXQNCj4g wqAgZHJtOiBzdW40aTogQWRkIGNvbXBvc2l0ZSBvdXRwdXQNCj4gwqAgZHJtOiBzdW40aTogdHY6 IEFkZCBQQUwgb3V0cHV0IHN0YW5kYXJkDQo+IMKgIGRybTogc3VuNGk6IHR2OiBBZGQgTlRTQyBv dXRwdXQgc3RhbmRhcmQNCj4gwqAgQVJNOiBzdW41aTogcjg6IEFkZCBkaXNwbGF5IGJsb2NrcyB0 byB0aGUgRFRTSQ0KPiDCoCBBUk06IHN1bjVpOiBjaGlwOiBFbmFibGUgdGhlIFRWIEVuY29kZXIN Cj4gwqAgZGV2aWNldHJlZTogQWRkIG9saW1leCB2ZW5kb3IgcHJlZml4DQo+IMKgIGRybS9wYW5l bDogc2ltcGxlOiBBZGQgdGltaW5ncyBmb3IgdGhlIE9saW1leCBMQ0QtT0xpbnVYaW5vLTQuM1RT DQo+IMKgIERPIE5PVCBNRVJHRTogQVJNOiBzdW41aTogY2hpcDogRW5hYmxlIHRoZSBMQ0QgcGFu ZWwNCj4gDQo+IMKgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3N1bnhp LnR4dMKgwqB8wqDCoMKgNSArDQo+IMKgLi4uL2Rpc3BsYXkvcGFuZWwvb2xpbWV4LGxjZC1vbGlu dXhpbm8tNDMtdHMudHh0wqDCoMKgfMKgwqDCoDcgKw0KPiDCoC4uLi9iaW5kaW5ncy9kaXNwbGF5 L3N1bnhpL3N1bjRpLWRybS50eHTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfCAyMjggKysrKysrKw0K PiDCoC4uLi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZlbmRvci1wcmVmaXhlcy50eHTCoMKgwqDCoMKg wqDCoMKgfMKgwqDCoDEgKw0KPiDCoGFyY2gvYXJtL2Jvb3QvZHRzL3N1bjVpLWExMHMuZHRzacKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgwqA3ICstDQo+IMKgYXJjaC9h cm0vYm9vdC9kdHMvc3VuNWktYTEzLmR0c2nCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHzCoMKgNDYgKy0NCj4gwqBhcmNoL2FybS9ib290L2R0cy9zdW41aS1yOC1jaGlwLmR0 c8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqAxNyArDQo+IMKgYXJjaC9hcm0v Ym9vdC9kdHMvc3VuNWktcjguZHRzacKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB8IDEzOSArKysrLQ0KPiDCoGFyY2gvYXJtL2Jvb3QvZHRzL3N1bjVpLmR0c2nCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqA2MiArKw0KPiDCoGRy aXZlcnMvY2xrL01ha2VmaWxlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoMKgMSArDQo+IMKgZHJpdmVycy9jbGsvY2xrLWNv bXBvc2l0ZS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg fMKgwqAxNSArDQo+IMKgZHJpdmVycy9jbGsvY2xrLWRpdmlkZXIuY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoDY4ICsrLQ0KPiDCoGRyaXZl cnMvY2xrL2Nsay1nYXRlLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgfMKgwqA1NCArLQ0KPiDCoGRyaXZlcnMvY2xrL2Nsay1pby5jwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB8wqDCoDQ4ICsrDQo+IMKgZHJpdmVycy9jbGsvY2xrLWlvLmjCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgMjIgKw0KPiDC oGRyaXZlcnMvY2xrL2Nsay1tdXguY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgOTQgKystDQo+IMKgZHJpdmVycy9jbGsvc3Vu eGkvTWFrZWZpbGXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHzCoMKgwqAzICsNCj4gwqBkcml2ZXJzL2Nsay9zdW54aS9jbGstc2ltcGxlLWdhdGVzLmPC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoMKgMiArDQo+IMKgZHJpdmVycy9jbGsv c3VueGkvY2xrLXN1bjRpLWRpc3BsYXkuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8IDI0 MSArKysrKysrKw0KPiDCoGRyaXZlcnMvY2xrL3N1bnhpL2Nsay1zdW40aS1wbGwzLmPCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqA5MCArKysNCj4gwqBkcml2ZXJzL2Nsay9z dW54aS9jbGstc3VuNGktdGNvbi1jaDEuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfCAxNTQg KysrKysNCj4gwqBkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZ8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoDIgKw0KPiDCoGRyaXZlcnMv Z3B1L2RybS9NYWtlZmlsZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHzCoMKgwqAzICstDQo+IMKgZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmPC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgwqAz ICstDQo+IMKgZHJpdmVycy9ncHUvZHJtL2RybV9mYl9jbWFfaGVscGVyLmPCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgwqAzIC0NCj4gwqBkcml2ZXJzL2dwdS9kcm0vZHJtX2Zi X2hlbHBlci5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgwqA0 ICsNCj4gwqBkcml2ZXJzL2dwdS9kcm0vZHJtX21vZGVzLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8IDMyNyArKysrKystLS0tDQo+IMKgZHJpdmVycy9n cHUvZHJtL2lteC9pbXgtZHJtLWNvcmUuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB8wqDCoMKgMSArDQo+IMKgZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXNpbXBsZS5jwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqAyNiArDQo+IMKgZHJpdmVycy9ncHUvZHJt L3N0aS9zdGlfZHJ2LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHzCoMKgwqAxICsNCj4gwqBkcml2ZXJzL2dwdS9kcm0vc3VuNGkvS2NvbmZpZ8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqAxNCArDQo+IMKgZHJpdmVycy9n cHUvZHJtL3N1bjRpL01ha2VmaWxlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgfMKgwqAxMiArDQo+IMKgZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX2JhY2tlbmQu Y8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8IDMyMSArKysrKysrKysrDQo+IMKgZHJpdmVy cy9ncHUvZHJtL3N1bjRpL3N1bjRpX2JhY2tlbmQuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB8IDE2MCArKysrKw0KPiDCoGRyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW40aV9jcnRjLmPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfCAxMjAgKysrKw0KPiDCoGRyaXZlcnMvZ3B1 L2RybS9zdW40aS9zdW40aV9jcnRjLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg fMKgwqAzMCArDQo+IMKgZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX2Rydi5jwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfCAzMjUgKysrKysrKysrKw0KPiDCoGRyaXZlcnMv Z3B1L2RybS9zdW40aS9zdW40aV9kcnYuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHzCoMKgMzAgKw0KPiDCoGRyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW40aV9mcmFtZWJ1ZmZl ci5jwqDCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoDU0ICsrDQo+IMKgZHJpdmVycy9ncHUvZHJtL3N1 bjRpL3N1bjRpX2ZyYW1lYnVmZmVyLmjCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgMTkgKw0KPiDC oGRyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW40aV9sYXllci5jwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB8IDE2MCArKysrKw0KPiDCoGRyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW40aV9s YXllci5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoDMwICsNCj4gwqBkcml2 ZXJzL2dwdS9kcm0vc3VuNGkvc3VuNGlfcmdiLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB8IDIyOSArKysrKysrDQo+IMKgZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX3Jn Yi5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqAxOCArDQo+IMKgZHJp dmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX3Rjb24uY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB8IDUyMQ0KPiArKysrKysrKysrKysrKysrDQo+IMKgZHJpdmVycy9ncHUvZHJtL3N1 bjRpL3N1bjRpX3Rjb24uaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8IDE3NyAr KysrKysNCj4gwqBkcml2ZXJzL2dwdS9kcm0vc3VuNGkvc3VuNGlfdHYuY8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfCA2NzUNCj4gKysrKysrKysrKysrKysrKysrKysrDQo+ IMKgZHJpdmVycy9ncHUvZHJtL3RpbGNkYy90aWxjZGNfZHJ2LmPCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHzCoMKgwqAxICsNCj4gwqBkcml2ZXJzL3Jlc2V0L2NvcmUuY8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKg wqDCoDYgKy0NCj4gwqBpbmNsdWRlL2RybS9kcm1fbW9kZXMuaMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoDEgKw0KPiDCoGluY2x1 ZGUvbGludXgvY2xrLXByb3ZpZGVyLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgfMKgwqA1NSArLQ0KPiDCoGluY2x1ZGUvbGludXgvcmVzZXQtY29udHJvbGxl ci5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoMKgMiArLQ0KPiDC oDUyIGZpbGVzIGNoYW5nZWQsIDQ0NTUgaW5zZXJ0aW9ucygrKSwgMTc5IGRlbGV0aW9ucygtKQ0K PiDCoGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu Z3MvZGlzcGxheS9wYW5lbC9vbGltZXgsbGNkLW9saW51eGluby0NCj4gNDMtdHMudHh0DQo+IMKg Y3JlYXRlIG1vZGUgMTAwNjQ0DQo+IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9k aXNwbGF5L3N1bnhpL3N1bjRpLWRybS50eHQNCj4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9jbGsvY2xrLWlvLmMNCj4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9jbGsvY2xrLWlv LmgNCj4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9jbGsvc3VueGkvY2xrLXN1bjRpLWRp c3BsYXkuYw0KPiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2Nsay9zdW54aS9jbGstc3Vu NGktcGxsMy5jDQo+IMKgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvY2xrL3N1bnhpL2Nsay1z dW40aS10Y29uLWNoMS5jDQo+IMKgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9z dW40aS9LY29uZmlnDQo+IMKgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9zdW40 aS9NYWtlZmlsZQ0KPiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vc3VuNGkv c3VuNGlfYmFja2VuZC5jDQo+IMKgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9z dW40aS9zdW40aV9iYWNrZW5kLmgNCj4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUv ZHJtL3N1bjRpL3N1bjRpX2NydGMuYw0KPiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dw dS9kcm0vc3VuNGkvc3VuNGlfY3J0Yy5oDQo+IMKgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv Z3B1L2RybS9zdW40aS9zdW40aV9kcnYuYw0KPiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vc3VuNGkvc3VuNGlfZHJ2LmgNCj4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL3N1bjRpL3N1bjRpX2ZyYW1lYnVmZmVyLmMNCj4gwqBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX2ZyYW1lYnVmZmVyLmgNCj4gwqBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX2xheWVyLmMNCj4gwqBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX2xheWVyLmgNCj4gwqBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX3JnYi5jDQo+IMKg Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW40aV9yZ2IuaA0KPiDC oGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vc3VuNGkvc3VuNGlfdGNvbi5jDQo+ IMKgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW40aV90Y29uLmgN Cj4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX3R2LmMN Cj4gDQo+IC0twqANCj4gMi42LjQNCj4gDQoNCi0tIApZb3UgcmVjZWl2ZWQgdGhpcyBtZXNzYWdl IGJlY2F1c2UgeW91IGFyZSBzdWJzY3JpYmVkIHRvIHRoZSBHb29nbGUgR3JvdXBzICJsaW51eC1z dW54aSIgZ3JvdXAuClRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBncm91cCBhbmQgc3RvcCByZWNl aXZpbmcgZW1haWxzIGZyb20gaXQsIHNlbmQgYW4gZW1haWwgdG8gbGludXgtc3VueGkrdW5zdWJz Y3JpYmVAZ29vZ2xlZ3JvdXBzLmNvbS4KRm9yIG1vcmUgb3B0aW9ucywgdmlzaXQgaHR0cHM6Ly9n cm91cHMuZ29vZ2xlLmNvbS9kL29wdG91dC4K