[GIT PULL] fbdev fixes for 3.19

10 messages, 5 authors, 2014-12-29 · open the first message on its own page

[GIT PULL] fbdev fixes for 3.19

From: Tomi Valkeinen <hidden>
Date: 2014-12-11 13:41:44

Hi Linus,

Please pull fbdev changes for 3.19.

 Tomi

The following changes since commit 0df1f2487d2f0d04703f142813d53615d62a1da4:

  Linux 3.18-rc3 (2014-11-02 15:01:51 -0800)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux.git tags/fbdev-3.19

for you to fetch changes up to 3315764efceaccfb02c7d4c99ef8eed6716cd861:

  Merge branches '3.19/omapdss' and '3.19/simplefb' into fbdev (2014-12-08 09:16:31 +0200)

----------------------------------------------------------------
fbdev changes for 3.19

* support for mx6sl and mx6sx
* OMAP HDMI audio rewrite to make it finally work
* OMAP video PLL work to prepare for new DRA7xx SoCs
* simplefb DT related improvements

----------------------------------------------------------------
Alexey Khoroshilov (1):
      m501fb: don't return zero on failure path in sm501fb_probe()

Archit Taneja (7):
      OMAPDSS: DPI: Use DPI driver data
      OMAPDSS: DPI: Allocate driver data
      OMAPDSS: DPI: Store dpi_data pointer in the DT port's data
      OMAPDSS: DSS: init dss ports cleanly
      OMAPDSS: DT: Get source endpoint by matching reg-id
      OMAPDSS: DPI: Add support for multiple instances
      OMAPDSS: DSS: add a param to dpi_select_source which specifies it's port number

Fabio Estevam (1):
      fbdev: mxsfb: Add support for mx6sl and mx6sx

Hans de Goede (10):
      simplefb: Add simplefb MAINTAINERS entry
      dt-bindings: Add a clocks property to the simple-framebuffer binding
      dt-bindings: simplefb: Specify node location and handoff related properties
      of.h: Keep extern declaration of of_* variables when !CONFIG_OF
      simplefb: Add support for enumerating simplefb dt nodes in /chosen
      fbcon: Change fbcon_init from module_init to fs_initcall
      simplefb: Change simplefb_init from module_init to fs_initcall
      simplefb: Fix build errors when CONFIG_COMMON_CLK is not defined
      dt-bindings: simplefb: Drop the advice about using a specific path for nodes
      dt-bindings: simplefb-sunxi: Add sunxi simplefb extensions

Jyri Sarha (21):
      OMAPDSS: hdmi_wp: Protect reserved bits in hdmi_wp_audio_config_format()
      OMAPDSS: hdmi5_core: Initialize mandatory sample_order parameter
      OMAPDSS: hdmi.h: Add HDMI_AUDIO_LAYOUT_6CH enum value
      OMAPDSS: hdmi: Remove most of OMAP[45]_DSS_HDMI_AUDIO ifdefs
      OMAPDSS: hdmi4_core: Remove unused hdmi4_audio_get_dma_port()
      OMAPDSS: hdmi_wp: Add function for getting audio dma address
      OMAPDSS: hdmi: Make hdmi structure public
      OMAPDSS: hdmi: Add pdev pointer for audio_pdev in HDMI DRV data
      OMAPDSS: hdmi.h: Add members to hdmi drvdata for audio implementation
      ASoC: omap-hdmi-audio: Add platform device for OMAP HDMI audio support
      OMAPDSS: Kconfig: Remove HDMI audio booleans from Kconfig
      OMAPDSS: hdmi: Make hdmi_mode_has_audio() more user friedly
      OMAPDSS: hdmi4: Remove callbacks for the old ASoC DAI driver
      OMAPDSS: hdmi4: Register ASoC platform device for omap hdmi audio
      OMAPDSS: hdmi5: Remove callbacks for the old ASoC DAI driver
      OMAPDSS: hdmi5: Register ASoC platform device for omap hdmi audio
      ASoC: omap: Remove obsolete HDMI audio code and Kconfig options
      OMAPDSS: Remove all references to obsolete HDMI audio callbacks
      OMAPDSS: hdmi5: Change hdmi_wp idlemode to to no_idle for audio playback
      OMAPDSS: hdmi: Remove __exit qualifier from hdmi_uninit_output()
      OMAPDSS: hdmi5: Fix bit field for IEC958_AES2_CON_SOURCE

Lad, Prabhakar (3):
      video: fbdev: vt8623fb: suppress build warning
      video: fbdev: s3fb: suppress build warning
      video: fbdev: arkfb: suppress build warning

Luc Verhaegen (3):
      simplefb: formalize pseudo palette handling
      simplefb: add goto error path to probe
      simplefb: add clock handling code

Markus Elfring (12):
      video: fbdev-MMP: Fix typos for the word "destroy"
      video: fbdev-MMP: Fix a typo for the word "destroyed"
      video: fbdev-LCDC: Deletion of an unnecessary check before the function call "vfree"
      video: uvesafb: Deletion of an unnecessary check before the function call "uvesafb_free"
      video: udlfb: Deletion of unnecessary checks before the function call "vfree"
      video: smscufx: Deletion of unnecessary checks before the function call "vfree"
      video: fbdev-SIS: Deletion of unnecessary checks before the function call "pci_dev_put"
      video: fbdev-OMAP2: Deletion of unnecessary checks before the function call "i2c_put_adapter"
      video: mx3fb: Deletion of an unnecessary check before the function call "backlight_device_unregister"
      video: fbdev-MMP: Deletion of an unnecessary check before the function call "mmp_unregister_path"
      video: fbdev-VIA: Deletion of an unnecessary check before the function call "framebuffer_release"
      video: uvesafb: Deletion of an unnecessary check before the function call "platform_device_put"

Qiang Chen (1):
      video: ARM CLCD: Remove duplicated include in amba-clcd.c

Tomi Valkeinen (23):
      OMAPDSS: DSI: wait for hsdiv clocks when enabling PLL
      OMAPDSS: DSI: remove unused hsdiv wait funcs
      OMAPDSS: DSI: always power on hsclk & hsdiv
      OMAPDSS: DSI: separate LP clock info from dsi_clock_info
      OMAPDSS: DSI: remove clkin from dsi_clock_info
      OMAPDSS: DSI: remove pll_locked field
      OMAPDSS: DSI: use struct copy instead of individual field copy
      OMAPDSS: DSI: rename clkin4ddr to clkdco
      OMAPDSS: DSI: turn hsdivs fields to arrays
      OMAPDSS: DSI: features: combine dsi & dispc hsdivs
      OMAPDSS: DSI: dsi_runtime_get/put in pll_init
      OMAPDSS: Add common PLL code
      OMAPDSS: DSI: use common DSS PLL support
      OMAPDSS: HDMI: fix setting REFSEL
      OMAPDSS: HDMI5: disable interlace modes
      OMAPDSS: HDMI: rewrite HDMI PLL calculation code
      OMAPDSS: HDMI: Remove HDMI PLL reset
      OMAPDSS: HDMI: store WP pointer to hdmi_pll_data
      OMAPDSS: HDMI: split PLL enable & config
      OMAPDSS: HDMI: remove extra poweroff
      OMAPDSS: HDMI: use common DSS PLL support
      OMAPDSS: features: remove unused DSI PLL features
      Merge branches '3.19/omapdss' and '3.19/simplefb' into fbdev

 .../bindings/video/simple-framebuffer-sunxi.txt    |  33 ++
 .../bindings/video/simple-framebuffer.txt          |  68 ++-
 MAINTAINERS                                        |   8 +
 drivers/video/console/fbcon.c                      |   2 +-
 drivers/video/fbdev/Kconfig                        |   2 +-
 drivers/video/fbdev/amba-clcd.c                    |   1 -
 drivers/video/fbdev/arkfb.c                        |   2 +-
 drivers/video/fbdev/mmp/core.c                     |   6 +-
 drivers/video/fbdev/mmp/hw/mmp_ctrl.c              |   3 +-
 drivers/video/fbdev/mx3fb.c                        |   3 +-
 drivers/video/fbdev/mxsfb.c                        |  19 +
 .../video/fbdev/omap2/displays-new/connector-dvi.c |   9 +-
 .../fbdev/omap2/displays-new/connector-hdmi.c      |  99 ----
 .../fbdev/omap2/displays-new/encoder-tfp410.c      |   1 +
 .../fbdev/omap2/displays-new/encoder-tpd12s015.c   |  57 +-
 drivers/video/fbdev/omap2/dss/Kconfig              |   7 -
 drivers/video/fbdev/omap2/dss/Makefile             |   2 +-
 drivers/video/fbdev/omap2/dss/dispc.c              |  20 +-
 drivers/video/fbdev/omap2/dss/dpi.c                | 327 ++++++----
 drivers/video/fbdev/omap2/dss/dsi.c                | 659 ++++++++-------------
 drivers/video/fbdev/omap2/dss/dss-of.c             |  58 +-
 drivers/video/fbdev/omap2/dss/dss.c                | 123 ++--
 drivers/video/fbdev/omap2/dss/dss.h                | 225 +++----
 drivers/video/fbdev/omap2/dss/dss_features.c       |  42 --
 drivers/video/fbdev/omap2/dss/dss_features.h       |  12 -
 drivers/video/fbdev/omap2/dss/hdmi.h               |  71 ++-
 drivers/video/fbdev/omap2/dss/hdmi4.c              | 338 +++++------
 drivers/video/fbdev/omap2/dss/hdmi4_core.c         |  14 -
 drivers/video/fbdev/omap2/dss/hdmi4_core.h         |   4 -
 drivers/video/fbdev/omap2/dss/hdmi5.c              | 338 ++++++-----
 drivers/video/fbdev/omap2/dss/hdmi5_core.c         |  11 +-
 drivers/video/fbdev/omap2/dss/hdmi5_core.h         |   2 -
 drivers/video/fbdev/omap2/dss/hdmi_common.c        |   2 -
 drivers/video/fbdev/omap2/dss/hdmi_phy.c           |  31 +-
 drivers/video/fbdev/omap2/dss/hdmi_pll.c           | 313 +++++-----
 drivers/video/fbdev/omap2/dss/hdmi_wp.c            |  16 +-
 drivers/video/fbdev/omap2/dss/output.c             |  19 +-
 drivers/video/fbdev/omap2/dss/pll.c                | 378 ++++++++++++
 drivers/video/fbdev/omap2/dss/sdi.c                |   2 +-
 drivers/video/fbdev/s3fb.c                         |   2 +-
 drivers/video/fbdev/sh_mobile_lcdcfb.c             |   3 +-
 drivers/video/fbdev/simplefb.c                     | 162 ++++-
 drivers/video/fbdev/sis/sis_main.c                 |  14 +-
 drivers/video/fbdev/sm501fb.c                      |   1 +
 drivers/video/fbdev/smscufx.c                      |   6 +-
 drivers/video/fbdev/udlfb.c                        |   9 +-
 drivers/video/fbdev/uvesafb.c                      |   6 +-
 drivers/video/fbdev/via/viafbdev.c                 |   3 +-
 drivers/video/fbdev/vt8623fb.c                     |   2 +-
 include/linux/of.h                                 |   3 +-
 include/sound/omap-hdmi-audio.h                    |  43 ++
 include/video/omapdss.h                            |  45 +-
 sound/soc/omap/Kconfig                             |  26 +-
 sound/soc/omap/Makefile                            |   6 +-
 sound/soc/omap/omap-hdmi-audio.c                   | 407 +++++++++++++
 sound/soc/omap/omap-hdmi-card.c                    |  87 ---
 sound/soc/omap/omap-hdmi.c                         | 364 ------------
 sound/soc/omap/omap-hdmi.h                         |  38 --
 58 files changed, 2398 insertions(+), 2156 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/video/simple-framebuffer-sunxi.txt
 create mode 100644 drivers/video/fbdev/omap2/dss/pll.c
 create mode 100644 include/sound/omap-hdmi-audio.h
 create mode 100644 sound/soc/omap/omap-hdmi-audio.c
 delete mode 100644 sound/soc/omap/omap-hdmi-card.c
 delete mode 100644 sound/soc/omap/omap-hdmi.c
 delete mode 100644 sound/soc/omap/omap-hdmi.h

Re: [GIT PULL] fbdev fixes for 3.19

From: Linus Torvalds <torvalds@linux-foundation.org>
Date: 2014-12-11 20:56:15

On Thu, Dec 11, 2014 at 5:41 AM, Tomi Valkeinen [off-list ref] wrote:
Please pull fbdev changes for 3.19.
Ugh. I've pulled it, but I'm not a huge fan of commit 6d09dc6b74ca
("of.h: Keep extern declaration of of_* variables when !CONFIG_OF").

I guess it works, but it ends up delaying any failures from compile
time to link time, and the linker error messages likely won't be
great.

So I'm cc'ing the OF people and Rafael (who worked on OF/ACPI
unification) to see if they have comments, preferences, or other ways
to solve this.

Quite frankly, to me it smells like non-OF builds should just have an
empty "for_each_child_of_node ()" define instead of playing games with
externs that then end up not existing, and depending on the compiler
DTRT.

Comments?

                      Linus

Re: [GIT PULL] fbdev fixes for 3.19

From: Rafael J. Wysocki <hidden>
Date: 2014-12-11 22:37:12

On Thursday, December 11, 2014 12:55:28 PM Linus Torvalds wrote:
On Thu, Dec 11, 2014 at 5:41 AM, Tomi Valkeinen [off-list ref] wrote:
quoted
Please pull fbdev changes for 3.19.
Ugh. I've pulled it, but I'm not a huge fan of commit 6d09dc6b74ca
("of.h: Keep extern declaration of of_* variables when !CONFIG_OF").

I guess it works, but it ends up delaying any failures from compile
time to link time, and the linker error messages likely won't be
great.

So I'm cc'ing the OF people and Rafael (who worked on OF/ACPI
unification) to see if they have comments, preferences, or other ways
to solve this.

Quite frankly, to me it smells like non-OF builds should just have an
empty "for_each_child_of_node ()" define instead of playing games with
externs that then end up not existing, and depending on the compiler
DTRT.

Comments?
"for_each_child_of_node ()" is not a problem here AFAICS, because in the
example from the commit changelog the compiler would complain on the
of_chosen instance in the "if ()" statement already anyway if I'm not mistaken.

It wants all of the code in the given block to make sense even if that
block will be optimized away going forward.  That's not specific to CONFIG_OF
too.

I stumbled over that a couple of times and I don't see a clean and simple way
to work around it at the moment.  In the cases I dealt with it was sufficient
to use static inlines that were defined to return NULL (or equivalent) when
the symbol in question was not defined.

Rafael

Re: [GIT PULL] fbdev fixes for 3.19

From: Rob Herring <hidden>
Date: 2014-12-12 00:59:57

On Thu, Dec 11, 2014 at 4:58 PM, Rafael J. Wysocki [off-list ref] wrote:
On Thursday, December 11, 2014 12:55:28 PM Linus Torvalds wrote:
quoted
On Thu, Dec 11, 2014 at 5:41 AM, Tomi Valkeinen [off-list ref] wrote:
quoted
Please pull fbdev changes for 3.19.
Ugh. I've pulled it, but I'm not a huge fan of commit 6d09dc6b74ca
("of.h: Keep extern declaration of of_* variables when !CONFIG_OF").

I guess it works, but it ends up delaying any failures from compile
time to link time, and the linker error messages likely won't be
great.

So I'm cc'ing the OF people and Rafael (who worked on OF/ACPI
unification) to see if they have comments, preferences, or other ways
to solve this.

Quite frankly, to me it smells like non-OF builds should just have an
empty "for_each_child_of_node ()" define instead of playing games with
externs that then end up not existing, and depending on the compiler
DTRT.

Comments?
"for_each_child_of_node ()" is not a problem here AFAICS, because in the
example from the commit changelog the compiler would complain on the
of_chosen instance in the "if ()" statement already anyway if I'm not mistaken.
Really, the "if" should be completely removed here.
for_each_child_of_node should do the right thing for !OF or if
of_chosen is NULL already. Since for_each_child_of_node relies on it's
helper function to get optimized away we need of_chosen defined to
something.

I believe Linus' suggestion was we could have an empty
for_each_child_of_node() define, but we've moved away from that to
simplify the of.h header and avoid multiple definitions. Doing that
has it's own issues. Fixing up !OF problems has been somewhat painful
as we've converted ARM and people failed to test that.

Rob

Re: [GIT PULL] fbdev fixes for 3.19

From: Rafael J. Wysocki <hidden>
Date: 2014-12-12 15:03:53

On Thursday, December 11, 2014 06:59:34 PM Rob Herring wrote:
On Thu, Dec 11, 2014 at 4:58 PM, Rafael J. Wysocki [off-list ref] wrote:
quoted
On Thursday, December 11, 2014 12:55:28 PM Linus Torvalds wrote:
quoted
On Thu, Dec 11, 2014 at 5:41 AM, Tomi Valkeinen [off-list ref] wrote:
quoted
Please pull fbdev changes for 3.19.
Ugh. I've pulled it, but I'm not a huge fan of commit 6d09dc6b74ca
("of.h: Keep extern declaration of of_* variables when !CONFIG_OF").

I guess it works, but it ends up delaying any failures from compile
time to link time, and the linker error messages likely won't be
great.

So I'm cc'ing the OF people and Rafael (who worked on OF/ACPI
unification) to see if they have comments, preferences, or other ways
to solve this.

Quite frankly, to me it smells like non-OF builds should just have an
empty "for_each_child_of_node ()" define instead of playing games with
externs that then end up not existing, and depending on the compiler
DTRT.

Comments?
"for_each_child_of_node ()" is not a problem here AFAICS, because in the
example from the commit changelog the compiler would complain on the
of_chosen instance in the "if ()" statement already anyway if I'm not mistaken.
Really, the "if" should be completely removed here.
for_each_child_of_node should do the right thing for !OF or if
of_chosen is NULL already.
This still is an example of a common pattern:

<statement optimized away for CONFIG_BLAH unset> {
	<some code>
}

Now, if you use variables defined only for CONFIG_BLAH set in the above (block
or statement), you'll get compile errors for !CONFIG_BLAH.

There is a limited choice of what can be done to avoid those errors:
 (a) Put the whole code in question under #ifdef CONFIG_BLAH (defeats the
     purpose of the entire exercise).
 (b) Define the variables unconditionally (wasted memory for !CONFIG_BLAH).
 (c) Wrap the variables in static inline functions that will be empty for
     !CONFIG_BLAH ("one more level of indirection" approach).
 (d) Do dirty tricks like in commit 6d09dc6b74ca.

Are there any more options that I'm overlooking?  If not, (a) and (b) are
unattractive, so the real choice seems to be between (c) and (d) to me.

Rafael

Re: [GIT PULL] fbdev fixes for 3.19

From: Pavel Machek <hidden>
Date: 2014-12-20 21:01:30

Hi!
Please pull fbdev changes for 3.19.

 Tomi
v3.19-rc0 breaks video on my n900.
Archit Taneja (7):
      OMAPDSS: DPI: Use DPI driver data
      OMAPDSS: DPI: Allocate driver data
      OMAPDSS: DPI: Store dpi_data pointer in the DT port's data
      OMAPDSS: DSS: init dss ports cleanly
      OMAPDSS: DT: Get source endpoint by matching reg-id
      OMAPDSS: DPI: Add support for multiple instances
      OMAPDSS: DSS: add a param to dpi_select_source which specifies
      it's port number
And I have these in my tree, so I should have latest fixes. Any ideas
what I should try?
									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

Re: [GIT PULL] fbdev fixes for 3.19

From: Pavel Machek <hidden>
Date: 2014-12-20 21:20:33

On Sat 2014-12-20 22:01:25, Pavel Machek wrote:
Hi!
quoted
Please pull fbdev changes for 3.19.

 Tomi
v3.19-rc0 breaks video on my n900.
quoted
Archit Taneja (7):
      OMAPDSS: DPI: Use DPI driver data
      OMAPDSS: DPI: Allocate driver data
      OMAPDSS: DPI: Store dpi_data pointer in the DT port's data
      OMAPDSS: DSS: init dss ports cleanly
      OMAPDSS: DT: Get source endpoint by matching reg-id
      OMAPDSS: DPI: Add support for multiple instances
      OMAPDSS: DSS: add a param to dpi_select_source which specifies
      it's port number
And I have these in my tree, so I should have latest fixes. Any ideas
what I should try?
I test-merged 3315764efceaccfb02c7d4c99ef8eed6716cd861, and boom,
video is gone.

									Pavel

-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

Re: [GIT PULL] fbdev fixes for 3.19

From: Pavel Machek <hidden>
Date: 2014-12-20 21:57:23

On Sat 2014-12-20 22:20:27, Pavel Machek wrote:
On Sat 2014-12-20 22:01:25, Pavel Machek wrote:
quoted
Hi!
quoted
Please pull fbdev changes for 3.19.

 Tomi
v3.19-rc0 breaks video on my n900.
quoted
Archit Taneja (7):
      OMAPDSS: DPI: Use DPI driver data
      OMAPDSS: DPI: Allocate driver data
      OMAPDSS: DPI: Store dpi_data pointer in the DT port's data
      OMAPDSS: DSS: init dss ports cleanly
      OMAPDSS: DT: Get source endpoint by matching reg-id
      OMAPDSS: DPI: Add support for multiple instances
      OMAPDSS: DSS: add a param to dpi_select_source which specifies
      it's port number
And I have these in my tree, so I should have latest fixes. Any ideas
what I should try?
I test-merged 3315764efceaccfb02c7d4c99ef8eed6716cd861, and boom,
video is gone.
I reverted
4b4123f0c7b02f7cf1a3189f967f079197578c3a..9051909e451a0368c95ccf74562adb53fd2719f8
in 3.19, and voila, video is back.

									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

Re: [GIT PULL] fbdev fixes for 3.19

From: Pavel Machek <hidden>
Date: 2014-12-23 11:12:55

On Sat 2014-12-20 22:57:18, Pavel Machek wrote:
On Sat 2014-12-20 22:20:27, Pavel Machek wrote:
quoted
On Sat 2014-12-20 22:01:25, Pavel Machek wrote:
quoted
Hi!
quoted
Please pull fbdev changes for 3.19.

 Tomi
v3.19-rc0 breaks video on my n900.
quoted
Archit Taneja (7):
      OMAPDSS: DPI: Use DPI driver data
      OMAPDSS: DPI: Allocate driver data
      OMAPDSS: DPI: Store dpi_data pointer in the DT port's data
      OMAPDSS: DSS: init dss ports cleanly
      OMAPDSS: DT: Get source endpoint by matching reg-id
      OMAPDSS: DPI: Add support for multiple instances
      OMAPDSS: DSS: add a param to dpi_select_source which specifies
      it's port number
And I have these in my tree, so I should have latest fixes. Any ideas
what I should try?
I test-merged 3315764efceaccfb02c7d4c99ef8eed6716cd861, and boom,
video is gone.
I reverted
4b4123f0c7b02f7cf1a3189f967f079197578c3a..9051909e451a0368c95ccf74562adb53fd2719f8
in 3.19, and voila, video is back.
Tomi?

Your merge causes regression on my hardware. I'd expect some
communication from you. If you don't have time right now, can we
revert the merge until its fixed?

									Pavel

-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

Re: [GIT PULL] fbdev fixes for 3.19

From: Tomi Valkeinen <hidden>
Date: 2014-12-29 08:13:22

Hi,

On 23/12/14 13:12, Pavel Machek wrote:
quoted
quoted
I test-merged 3315764efceaccfb02c7d4c99ef8eed6716cd861, and boom,
video is gone.
I reverted
4b4123f0c7b02f7cf1a3189f967f079197578c3a..9051909e451a0368c95ccf74562adb53fd2719f8
in 3.19, and voila, video is back.
Tomi?

Your merge causes regression on my hardware. I'd expect some
communication from you. If you don't have time right now, can we
revert the merge until its fixed?
I've posted a fix on the "n900 regressions" thread.

 Tomi

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help