All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marek Szyprowski <m.szyprowski@samsung.com>
To: Inki Dae <inki.dae@samsung.com>,
	dri-devel@lists.freedesktop.org,
	linux-samsung-soc@vger.kernel.org
Cc: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>,
	Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>,
	Seung-Woo Kim <sw0312.kim@samsung.com>,
	Krzysztof Kozlowski <krzk@kernel.org>,
	Sylwester Nawrocki <s.nawrocki@samsung.com>,
	Andrzej Pietrasiewicz <andrzej.p@samsung.com>,
	Hoegeun Kwon <hoegeun.kwon@samsung.com>
Subject: Re: [PATCH v4 5/9] drm/exynos: Add generic support for devices shared with V4L2 subsystem
Date: Tue, 07 Nov 2017 10:07:57 +0100	[thread overview]
Message-ID: <2fcf8ca4-5e48-9c61-3858-9987ad986c26@samsung.com> (raw)
In-Reply-To: <59FFB8CE.5000905@samsung.com>

Hi Inki,

On 2017-11-06 02:20, Inki Dae wrote:
> 2017년 11월 03일 21:28에 Marek Szyprowski 이(가) 쓴 글:
>> On 2017-11-01 07:26, Inki Dae wrote:
>>> 2017년 10월 23일 16:54에 Marek Szyprowski 이(가) 쓴 글:
>>>> Some hardware modules, like FIMC in Exynos4 series are shared between
>>>> V4L2 (camera support) and DRM (memory-to-memory processing) subsystems.
>>>> This patch provides a simple check to let such drivers to be used in the
>>>> driver components framework.
>>>>
>>>> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
>>>> ---
>>>>    drivers/gpu/drm/exynos/exynos_drm_drv.c | 17 ++++++++++++++++-
>>>>    drivers/gpu/drm/exynos/exynos_drm_drv.h |  2 ++
>>>>    2 files changed, 18 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
>>>> index cac0d84385d3..60ae6ae06eb2 100644
>>>> --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
>>>> +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
>>>> @@ -216,6 +216,7 @@ struct exynos_drm_driver_info {
>>>>    #define DRM_COMPONENT_DRIVER    BIT(0)    /* supports component framework */
>>>>    #define DRM_VIRTUAL_DEVICE    BIT(1)    /* create virtual platform device */
>>>>    #define DRM_DMA_DEVICE        BIT(2)    /* can be used for dma allocations */
>>>> +#define DRM_SHARED_DEVICE    BIT(3)    /* devices shared with V4L2 subsystem */
>>>>      #define DRV_PTR(drv, cond) (IS_ENABLED(cond) ? &drv : NULL)
>>>>    @@ -267,6 +268,17 @@ static struct exynos_drm_driver_info exynos_drm_drivers[] = {
>>>>        }
>>>>    };
>>>>    +int exynos_drm_check_shared_device(struct device *dev)
>>>> +{
>>>> +    /*
>>>> +     * Exynos DRM drivers handle only devices that support
>>>> +     * the LCD Writeback data path, rest is handled by V4L2 driver
>>>> +     */
>>>> +    if (!of_property_read_bool(dev->of_node, "samsung,lcd-wb"))
>>>> +        return -ENODEV;
>>>> +    return 0;
>>>> +}
>>>> +
>>>>    static int compare_dev(struct device *dev, void *data)
>>>>    {
>>>>        return dev == (struct device *)data;
>>>> @@ -288,7 +300,10 @@ static struct component_match *exynos_drm_match_add(struct device *dev)
>>>>                            &info->driver->driver,
>>>>                            (void *)platform_bus_type.match))) {
>>>>                put_device(p);
>>>> -            component_match_add(dev, &match, compare_dev, d);
>>>> +
>>>> +            if (!(info->flags & DRM_SHARED_DEVICE) ||
>>>> +                exynos_drm_check_shared_device(d) == 0)
>>>> +                component_match_add(dev, &match, compare_dev, d);
>>> Seems above line make fimc device driver to be bound only when fimc device node has "samsung,lcd-wb" property. However, Exynos DRM FIMC driver is able to various transfomations such as color space conversion, scaling up/down and rotation.
>>> And this driver is used as mem to mem device driver. However, 'writeback' feature means 'dma to memory', which delivers one blended image in display controller into system memory.
>> This patch is only to bind fimc.2 and fimc.3 devices to DRM and fimc.0
>> and fimc.1 to V4L2. Exactly the same checks are in V4l2 and old DRM FIMC
>> drivers.
> Indeed. No change for behaivor.
>
> When Sylwester posted old version[1] of DRM fimc device tree support, seems he and even me missed the behaiver of DRM FIMC driver.
> According to below patch description, it says,
> "The DRM driver uses this interface for setting up the FIFO data link between FIMD and FIMC IP blocks"
>
> We thought we could use 'samsung,lcd-wb' property to distinguish FIMC devices for V4L2 and ones for DRM - only fimc 2 and fimc 3 - have 'samsung'lcd-wb' property'.
>
> but it's not true. DRM FIMC driver is used as a general post processing hardware such as color space conversion, scaling up/down and rotation operations.
> In FIMC device's perspective, 'samsung,lcd-wb' means 'dma to memory' - as I mentioned before, which delivers one blended image in display controller into system memory and it's just one of several features FIMC has - so it doesn't make sense.
>
> For example,
> User - some device tree - can remove 'samsung,lcd-wb' property from fimc device node because this property is optional. In this case, binding of DRM FIMC driver will fail even though FIMC driver can provide other functions.
> We shouldn't make FIMC device to be limited with just LCD write back feature and we need to find a good way to distinguish FIMC devices for V4L2 and DRM.
>
> Anyway, we are trying to merge new version of IPP driver which is really a big change so how about making sure the behaiver of this driver, not depending on 'old version'?
> I think we need to take care of this carefully because ABI interface could be changed according to our decision.
>
> To Sylwester,
> Could you give us your option?
>
> According to Exynos4412 datasheet,
> 'isp-wb' can go to input of FIMC 0, 1 and 2, and 'lcd-wb' can go to input of FIMC 2 and 3 if Figure 43-1 in the datasheet is right.
>
> So it says,
> 1. FIMC 0 and 1 could be used for isp-wb.
> 2. FIMC 2 could be used for isp-wb and lcd-wb.
> 3. FIMC 3 could be used for lcd-wb.
>
> But you updated binding document as like below,
> "Optional properties:
> ...
> - samsung,isp-wb: this property must be present if the IP block has the ISP
>    writeback input.
> - samsung,lcd-wb: this property must be present if the IP block has the LCD
>    writeback input."
>
> This would mean that all FIMC devices - 0 to 3 - could be used for isp-wb or lcd-wb, and it wouldn't make sense.
>
> My opinion is,
> 1. we could dedicate FIMC 0 and 1 for isp-wb, and FIMC 3 for lcd-wb, and binding document may be changed like below,
>     - For FIMC 0 and 1, isp-wb property should be a required property, not optional.
>     - For FIMC 3, lcd-wb propery should be a required property, not optionl.
> 2. we could share FIMC 2 for isp-wb and lcd-wb.
>     - For FIMC 2, isp-wb and lcd-wb should be required properties but only one driver - V4L2 or DRM driver - can be bound.

It is a matter of use-cases which FIMC device is used for camera/v4l2 and
which for m2m processing. I think this should be simply configurable by
some kernel/module option(s), which defaults to current setup (fimc.0 &
fimc.1 for v4l2, fimc.2 & fimc.3 for drm).

Best regards
-- 
Marek Szyprowski, PhD
Samsung R&D Institute Poland

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2017-11-07  9:07 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20171023075448eucas1p25e25bb36d36139e3917211ab8ac999ec@eucas1p2.samsung.com>
2017-10-23  7:54 ` [PATCH v4 0/9] Exynos DRM: rewrite IPP subsystem and userspace API Marek Szyprowski
     [not found]   ` <CGME20171023075448eucas1p10255809be25caa7e44a3889f26561bc8@eucas1p1.samsung.com>
2017-10-23  7:54     ` [PATCH v4 1/9] drm/exynos: ipp: Remove Exynos DRM IPP subsystem Marek Szyprowski
     [not found]   ` <CGME20171023075449eucas1p18211ed64e964860d201aaeb53a87a8be@eucas1p1.samsung.com>
2017-10-23  7:54     ` [PATCH v4 2/9] drm/exynos: ipp: Add IPP v2 framework Marek Szyprowski
2017-11-01  1:13       ` Inki Dae
2017-11-03 11:20         ` Marek Szyprowski
2017-11-01  3:47       ` Dave Airlie
2017-11-01 14:18         ` Tobias Jakobi
     [not found]   ` <CGME20171023075449eucas1p14adcde4cea94ca82a13a822ee59d9446@eucas1p1.samsung.com>
2017-10-23  7:54     ` [PATCH v4 3/9] drm/exynos: rotator: Convert driver to IPP v2 core API Marek Szyprowski
2017-11-01  5:40       ` Inki Dae
     [not found]   ` <CGME20171023075450eucas1p155afda476e368ae57ba7fe1a347a5f4c@eucas1p1.samsung.com>
2017-10-23  7:54     ` [PATCH v4 4/9] drm/exynos: gsc: " Marek Szyprowski
2017-11-01  6:02       ` Inki Dae
     [not found]   ` <CGME20171023075450eucas1p24923c2a0793ac24364b97770dadd56e0@eucas1p2.samsung.com>
2017-10-23  7:54     ` [PATCH v4 5/9] drm/exynos: Add generic support for devices shared with V4L2 subsystem Marek Szyprowski
2017-11-01  6:26       ` Inki Dae
2017-11-03 12:28         ` Marek Szyprowski
2017-11-06  1:20           ` Inki Dae
2017-11-07  9:07             ` Marek Szyprowski [this message]
     [not found]   ` <CGME20171023075451eucas1p1a833d9c805f6b7dc1b984e59afce23f3@eucas1p1.samsung.com>
2017-10-23  7:54     ` [PATCH v4 6/9] drm/exynos: fimc: Convert driver to IPP v2 core API Marek Szyprowski
     [not found]   ` <CGME20171023075452eucas1p1dada05e443a800977d9c888744877f38@eucas1p1.samsung.com>
2017-10-23  7:54     ` [PATCH v4 7/9] drm/exynos: Add driver for Exynos Scaler module Marek Szyprowski
     [not found]   ` <CGME20171023075452eucas1p2881393094c507e4409005a498658f28d@eucas1p2.samsung.com>
2017-10-23  7:54     ` [PATCH v4 8/9] ARM: dts: exynos: Add mem-2-mem Scaler devices Marek Szyprowski
     [not found]   ` <CGME20171023075453eucas1p18c5a22b967399885c14bff39b1e218f2@eucas1p1.samsung.com>
2017-10-23  7:54     ` [PATCH v4 9/9] ARM64: " Marek Szyprowski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2fcf8ca4-5e48-9c61-3858-9987ad986c26@samsung.com \
    --to=m.szyprowski@samsung.com \
    --cc=andrzej.p@samsung.com \
    --cc=b.zolnierkie@samsung.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=hoegeun.kwon@samsung.com \
    --cc=inki.dae@samsung.com \
    --cc=krzk@kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=s.nawrocki@samsung.com \
    --cc=sw0312.kim@samsung.com \
    --cc=tjakobi@math.uni-bielefeld.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.