All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sean Paul <seanpaul@chromium.org>
To: Tomasz Figa <tomasz.figa@gmail.com>
Cc: dri-devel <dri-devel@lists.freedesktop.org>,
	"Stéphane Marchesin" <marcheu@chromium.org>
Subject: Re: [PATCH v3 06/32] drm/exynos: Pass exynos_drm_manager in manager ops instead of dev
Date: Fri, 1 Nov 2013 16:01:23 -0400	[thread overview]
Message-ID: <CAOw6vbJWT5giDGAUWMRGB+HW2f6QDVSOmyouPJvyRXMEsC9mNQ@mail.gmail.com> (raw)
In-Reply-To: <15548958.EEHG2RulkY@flatron>

On Thu, Oct 31, 2013 at 8:19 PM, Tomasz Figa <tomasz.figa@gmail.com> wrote:
> Hi Sean,
>
> On Tuesday 29 of October 2013 12:12:52 Sean Paul wrote:
>> This patch changes the manager ops callbacks from accepting the subdrv
>> device pointer to taking a pointer to the manager. This will allow us
>> to move closer to decoupling manager/display from subdrv, and
>> subsequently decoupling the crtc/plane from the encoder.
>
> The idea of changing callbacks argument itself is fine for me, but I
> wonder if by the way we couldn't refactor the code in a way that would
> allow type checking of context structures. This would make the code a bit
> less error-prone (or maybe I'm just a bit too paranoid...).
>
> Anyway, please see my remaining comments inline.
>
>> Signed-off-by: Sean Paul <seanpaul@chromium.org>
>> ---
>>
>> Changes in v2:
>>       - Instead of passing context, pass manager
>>       - Properly assign ctx->dev in fimd driver
>> Changes in v3:
>>       - Added vidi implementation
>>
>>  drivers/gpu/drm/exynos/exynos_drm_connector.c |   2 +-
>>  drivers/gpu/drm/exynos/exynos_drm_drv.h       |  35 ++++----
>>  drivers/gpu/drm/exynos/exynos_drm_encoder.c   |  27 +++---
>>  drivers/gpu/drm/exynos/exynos_drm_fimd.c      | 114
>> ++++++++++++++------------ drivers/gpu/drm/exynos/exynos_drm_hdmi.c
>>  |  72 ++++++++-------- drivers/gpu/drm/exynos/exynos_drm_vidi.c      |
>>  83 ++++++++++--------- 6 files changed, 180 insertions(+), 153
>> deletions(-)
> [snip]
>> @@ -182,16 +184,16 @@ static struct exynos_drm_display_ops
>> fimd_display_ops = { .power_on = fimd_display_power_on,
>>  };
>>
>> -static void fimd_win_mode_set(struct device *dev,
>> -                           struct exynos_drm_overlay *overlay)
>> +static void fimd_win_mode_set(struct exynos_drm_manager *mgr,
>> +                     struct exynos_drm_overlay *overlay)
>>  {
>> -     struct fimd_context *ctx = get_fimd_context(dev);
>> +     struct fimd_context *ctx = mgr->ctx;
>>       struct fimd_win_data *win_data;
>>       int win;
>>       unsigned long offset;
>>
>>       if (!overlay) {
>> -             dev_err(dev, "overlay is NULL\n");
>> +             DRM_ERROR("overlay is NULL\n");
>
> This change does not seem to be related to $subject.
>

It is. fimd_win_mode_set does not take dev as an argument any longer,
as such it's undefined.

>>               return;
>>       }
>>
>> @@ -231,9 +233,8 @@ static void fimd_win_mode_set(struct device *dev,
>>                       overlay->fb_width, overlay->crtc_width);
>>  }
>>
>> -static void fimd_win_set_pixfmt(struct device *dev, unsigned int win)
>> +static void fimd_win_set_pixfmt(struct fimd_context *ctx, unsigned int
>> win) {
>
> Again not really related to $subject. Maybe this should be done in a
> preparatory patch preceeding this one? (+ same comment for several
> identical changes below)
>

I think it's directly related to the subject. We no longer pass dev as
an argument, so that has indirect effects on other functions.

>> -     struct fimd_context *ctx = get_fimd_context(dev);
>>       struct fimd_win_data *win_data = &ctx->win_data[win];
>>       unsigned long val;
>>
> [snip]
>> diff --git a/drivers/gpu/drm/exynos/exynos_drm_hdmi.c
>> b/drivers/gpu/drm/exynos/exynos_drm_hdmi.c index aebcc0e..ca0a87f
>> 100644
>> --- a/drivers/gpu/drm/exynos/exynos_drm_hdmi.c
>> +++ b/drivers/gpu/drm/exynos/exynos_drm_hdmi.c
>> @@ -129,11 +129,9 @@ static struct edid *drm_hdmi_get_edid(struct device
>> *dev,
>>
>>       return NULL;
>>  }
>> -
>> -static int drm_hdmi_check_mode(struct device *dev,
>> +static int drm_hdmi_check_mode_ctx(struct drm_hdmi_context *ctx,
>>               struct drm_display_mode *mode)
>>  {
>> -     struct drm_hdmi_context *ctx = to_context(dev);
>>       int ret = 0;
>>
>>       /*
>> @@ -153,6 +151,14 @@ static int drm_hdmi_check_mode(struct device *dev,
>>       return 0;
>>  }
>>
>> +static int drm_hdmi_check_mode(struct device *dev,
>> +             struct drm_display_mode *mode)
>> +{
>> +     struct drm_hdmi_context *ctx = to_context(dev);
>> +
>> +     return drm_hdmi_check_mode_ctx(ctx, mode);
>> +}
>> +
>
> nit: I don't think such wrapper is necessary.
>
> It seems to be easy enough to get from dev to ctx, so depending on the
> amount of user of drm_hdmi_check_mode() it might be better to simply
> change them to pass ctx instead of dev.
>

This is a display_op that is defined to accept dev. It's changed later
in the patchset to accept display, at which point the wrapper goes
away.

> [snip]
>> @@ -403,19 +404,23 @@ static void vidi_subdrv_remove(struct drm_device
>> *drm_dev, struct device *dev) /* TODO. */
>>  }
>>
>> -static int vidi_power_on(struct vidi_context *ctx, bool enable)
>> +static int vidi_power_on(struct exynos_drm_manager *mgr, bool enable)
>>  {
>> -     struct exynos_drm_subdrv *subdrv = &ctx->subdrv;
>> -     struct device *dev = subdrv->dev;
>> +     struct vidi_context *ctx = mgr->ctx;
>> +
>> +     DRM_DEBUG_KMS("%s\n", __FILE__);
>> +
>> +     if (enable != false && enable != true)
>> +             return -EINVAL;
>
> Huh? What value would you expect a bool to have if not false or true?
>
> Anyway, this shouldn't really matter, as the check bellow assumes that
> anything non-zero is true.
>

This is pre-existing vidi code, I just moved it.

Sean

>>
>>       if (enable) {
>>               ctx->suspended = false;
>>
>
> Just for clarity, this is the check I mentioned above.
>
> Best regards,
> Tomasz
>

  reply	other threads:[~2013-11-01 20:01 UTC|newest]

Thread overview: 130+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-29 16:12 [PATCH v3 00/32] drm/exynos: Refactor parts of the exynos driver Sean Paul
2013-10-29 16:12 ` [PATCH v3 01/32] drm/exynos: Remove useless slab.h include Sean Paul
2013-10-31 10:24   ` Inki Dae
2013-10-31 23:32   ` Tomasz Figa
2013-10-29 16:12 ` [PATCH v3 02/32] drm/exynos: Merge overlay_ops into manager_ops Sean Paul
2013-10-31 23:39   ` Tomasz Figa
2013-11-01 19:50     ` Sean Paul
2013-11-01 19:55       ` Tomasz Figa
2013-11-04  7:44         ` Inki Dae
2013-10-29 16:12 ` [PATCH v3 03/32] drm/exynos: Add an initialize function to manager and display Sean Paul
2013-10-31 23:42   ` Tomasz Figa
2013-10-29 16:12 ` [PATCH v3 04/32] drm/exynos: Use manager_op initialize in fimd Sean Paul
2013-10-31 23:49   ` Tomasz Figa
2013-11-01 19:51     ` Sean Paul
2013-11-01 19:57       ` Tomasz Figa
2013-10-29 16:12 ` [PATCH v3 05/32] drm/exynos: hdmi: Implement initialize op for hdmi Sean Paul
2013-10-31 23:53   ` Tomasz Figa
2013-11-01 19:54     ` Sean Paul
2013-11-01 19:56       ` Tomasz Figa
2013-11-01 20:08         ` Sean Paul
2013-10-29 16:12 ` [PATCH v3 06/32] drm/exynos: Pass exynos_drm_manager in manager ops instead of dev Sean Paul
2013-11-01  0:19   ` Tomasz Figa
2013-11-01 20:01     ` Sean Paul [this message]
2013-11-01 20:11       ` Tomasz Figa
2013-10-29 16:12 ` [PATCH v3 07/32] drm/exynos: Remove apply manager callback Sean Paul
2013-11-08 21:05   ` Tomasz Figa
2013-10-29 16:12 ` [PATCH v3 08/32] drm/exynos: Remove dpms link between encoder/connector Sean Paul
2013-11-08 21:45   ` Tomasz Figa
2013-10-29 16:12 ` [PATCH v3 09/32] drm/exynos: Rename display_op power_on to dpms Sean Paul
2013-11-08 22:09   ` Tomasz Figa
2013-10-29 16:12 ` [PATCH v3 10/32] drm/exynos: Don't keep dpms state in encoder Sean Paul
2013-11-10 20:47   ` Tomasz Figa
2013-10-29 16:12 ` [PATCH v3 11/32] drm/exynos: Use unsigned long for possible_crtcs Sean Paul
2013-11-10 20:47   ` Tomasz Figa
2013-10-29 16:12 ` [PATCH v3 12/32] drm/exynos: Split manager/display/subdrv Sean Paul
2013-10-31 10:30   ` Inki Dae
2013-10-31 16:08     ` Sean Paul
2013-11-01  4:20       ` Inki Dae
2013-11-10 21:09   ` Tomasz Figa
2013-11-12 17:51     ` Sean Paul
2013-11-12 18:35       ` Tomasz Figa
2013-11-26 18:00         ` Olof Johansson
2013-11-27 10:04           ` Thierry Reding
2013-11-28 23:04           ` Tomasz Figa
2013-11-29  7:52             ` Daniel Vetter
2013-11-29  9:10               ` Tomasz Figa
2013-11-29 10:25                 ` Daniel Vetter
2013-11-29 14:13                 ` Rob Clark
2013-11-29 17:05                   ` Tomasz Figa
2013-11-29 18:35                     ` Rob Clark
2013-11-30  5:25                       ` Inki Dae
2013-12-03 21:38                     ` Sean Paul
2013-11-29 10:16             ` Thierry Reding
2013-10-29 16:12 ` [PATCH v3 13/32] drm/exynos: hdmi: remove the i2c drivers and use devtree Sean Paul
2013-11-10 20:46   ` Tomasz Figa
2013-11-11  8:44     ` Thierry Reding
2013-11-28 13:30       ` Tomasz Figa
2013-11-29 10:24         ` Thierry Reding
2013-12-03  0:37           ` Olof Johansson
2013-10-29 16:13 ` [PATCH v3 14/32] drm/exynos: Remove exynos_drm_hdmi shim Sean Paul
2013-11-10 21:24   ` Tomasz Figa
2013-10-29 16:13 ` [PATCH v3 15/32] drm/exynos: Use drm_mode_copy to copy modes Sean Paul
2013-11-10 21:27   ` Tomasz Figa
2013-10-29 16:13 ` [PATCH v3 16/32] drm/exynos: Disable unused crtc planes from crtc Sean Paul
2013-11-10 21:29   ` Tomasz Figa
2013-10-29 16:13 ` [PATCH v3 17/32] drm/exynos: Add mode_set manager operation Sean Paul
2013-11-10 21:31   ` Tomasz Figa
2013-10-29 16:13 ` [PATCH v3 18/32] drm/exynos: Implement mode_fixup " Sean Paul
2013-11-10 21:33   ` Tomasz Figa
2013-10-29 16:13 ` [PATCH v3 19/32] drm/exynos: Use mode_set to configure fimd Sean Paul
2013-11-10 22:03   ` Tomasz Figa
2013-11-15 13:49     ` Daniel Kurtz
2013-11-15 13:53     ` Daniel Kurtz
2013-11-28 22:57       ` Tomasz Figa
2013-12-04 22:37       ` Sean Paul
2013-10-29 16:13 ` [PATCH v3 20/32] drm/exynos: Remove unused/useless fimd_context members Sean Paul
2013-11-11  1:19   ` Tomasz Figa
2013-10-29 16:13 ` [PATCH v3 21/32] drm/exynos: Move dp driver from video/ to drm/ Sean Paul
2013-10-31 10:46   ` Inki Dae
2013-10-31 16:05     ` Sean Paul
2013-10-31 23:06     ` Jingoo Han
2013-10-31 23:06       ` Jingoo Han
2013-10-31 23:11       ` Tomasz Figa
2013-10-31 23:11         ` Tomasz Figa
2013-10-31 23:23         ` Jingoo Han
2013-10-31 23:23           ` Jingoo Han
2013-10-31 23:27           ` Tomasz Figa
2013-10-31 23:27             ` Tomasz Figa
2013-10-31 23:55             ` Jingoo Han
2013-10-31 23:55               ` Jingoo Han
2013-11-01  0:01               ` Tomasz Figa
2013-11-01  0:01                 ` Tomasz Figa
     [not found]   ` <3513711.0qTZKxmOZX@flatron>
2013-12-04 23:07     ` Sean Paul
2013-10-29 16:13 ` [PATCH v3 22/32] drm/exynos: Move display implementation into dp Sean Paul
     [not found]   ` <1383063198-10526-23-git-send-email-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2013-11-11  1:53     ` Tomasz Figa
2013-10-29 16:13 ` [PATCH v3 23/32] ARM: dts: Move display-timings node from fimd to dp Sean Paul
2013-10-29 16:13 ` [PATCH v3 24/32] drm/exynos: Implement dpms display callback in DP Sean Paul
2013-11-11  2:04   ` Tomasz Figa
2013-10-29 16:13 ` [PATCH v3 25/32] drm/exynos: Clean up FIMD power on/off routines Sean Paul
2013-10-31 10:54   ` Inki Dae
     [not found]     ` <1630995.NnKzZB9Rl5@flatron>
2013-11-11  4:08       ` Inki Dae
2013-11-11  2:09   ` Tomasz Figa
2013-10-29 16:13 ` [PATCH v3 26/32] drm/exynos: Consolidate suspend/resume in drm_drv Sean Paul
2013-11-29 14:58   ` Tomasz Figa
2013-12-19 16:48   ` Inki Dae
2013-10-29 16:13 ` [PATCH v3 27/32] drm/exynos: Add create_connector callback Sean Paul
2013-11-11  2:19   ` Tomasz Figa
2013-12-03  5:01   ` Inki Dae
2013-10-29 16:13 ` [PATCH v3 28/32] drm/exynos: Implement drm_connector in hdmi directly Sean Paul
2013-11-29 15:58   ` Tomasz Figa
2013-12-02  9:46     ` Thierry Reding
2013-12-02  9:54       ` Tomasz Figa
2013-10-29 16:13 ` [PATCH v3 29/32] drm/exynos: Implement drm_connector directly in dp driver Sean Paul
2013-11-29 16:04   ` Tomasz Figa
2013-12-03  4:45   ` Inki Dae
2013-12-04  6:46     ` Inki Dae
2013-10-29 16:13 ` [PATCH v3 30/32] drm/exynos: Implement drm_connector directly in vidi driver Sean Paul
2013-11-29 16:13   ` Tomasz Figa
2013-12-03  4:47   ` Inki Dae
2013-12-04  6:47     ` Inki Dae
2013-10-29 16:13 ` [PATCH v3 31/32] drm/exynos: Move lvds bridge discovery into DP driver Sean Paul
2013-11-29 16:55   ` Tomasz Figa
2013-11-30  5:18     ` Inki Dae
2013-11-30 12:27       ` Tomasz Figa
2013-10-29 16:13 ` [PATCH v3 32/32] drm/exynos: Remove the exynos_drm_connector shim Sean Paul
2013-11-29 16:14   ` Tomasz Figa
2013-11-07  5:48 ` [PATCH v3 00/32] drm/exynos: Refactor parts of the exynos driver Inki Dae
2013-11-07 18:20   ` Sean Paul
2013-11-08 21:01   ` Tomasz Figa
2013-11-08 21:22     ` Sean Paul

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=CAOw6vbJWT5giDGAUWMRGB+HW2f6QDVSOmyouPJvyRXMEsC9mNQ@mail.gmail.com \
    --to=seanpaul@chromium.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=marcheu@chromium.org \
    --cc=tomasz.figa@gmail.com \
    /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.