• Ville Syrjälä's avatar
    drm: Nuke mode->vrefresh · 0425662f
    Ville Syrjälä authored
    
    
    Get rid of mode->vrefresh and just calculate it on demand. Saves
    a bit of space and avoids the cached value getting out of sync
    with reality.
    
    Mostly done with cocci, with the following manual fixups:
    - Remove the now empty loop in drm_helper_probe_single_connector_modes()
    - Fix __MODE() macro in ch7006_mode.c
    - Fix DRM_MODE_ARG() macro in drm_modes.h
    - Remove leftover comment from samsung_s6d16d0_mode
    - Drop the TODO
    
    @@
    @@
    struct drm_display_mode {
    	...
    -	int vrefresh;
    	...
    };
    
    @@
    identifier N;
    expression E;
    @@
    struct drm_display_mode N = {
    -	.vrefresh = E
    };
    
    @@
    identifier N;
    expression E;
    @@
    struct drm_display_mode N[...] = {
    ...,
    {
    -	.vrefresh = E
    }
    ,...
    };
    
    @@
    expression E;
    @@
    {
    	DRM_MODE(...),
    -	.vrefresh = E,
    }
    
    @@
    identifier M, R;
    @@
    int drm_mode_vrefresh(const struct drm_display_mode *M)
    {
      ...
    - if (M->vrefresh > 0)
    - 	R = M->vrefresh;
    - else
      if (...) {
      ...
      }
      ...
    }
    
    @@
    struct drm_display_mode *p;
    expression E;
    @@
    (
    - p->vrefresh = E;
    |
    - p->vrefresh
    + drm_mode_vrefresh(p)
    )
    
    @@
    struct drm_display_mode s;
    expression E;
    @@
    (
    - s.vrefresh = E;
    |
    - s.vrefresh
    + drm_mode_vrefresh(&s)
    )
    
    @@
    expression E;
    @@
    - drm_mode_vrefresh(E) ? drm_mode_vrefresh(E) : drm_mode_vrefresh(E)
    + drm_mode_vrefresh(E)
    
    @find_substruct@
    identifier X;
    identifier S;
    @@
    struct X {
    ...
    	struct drm_display_mode S;
    ...
    };
    
    @@
    identifier find_substruct.S;
    expression E;
    identifier I;
    @@
    {
    .S = {
    -	.vrefresh = E
    }
    }
    
    @@
    identifier find_substruct.S;
    identifier find_substruct.X;
    expression E;
    identifier I;
    @@
    struct X I[...] = {
    ...,
    .S = {
    -	.vrefresh = E
    }
    ,...
    };
    
    v2: Drop TODO
    v3: Rebase
    v4: Rebase
    
    Cc: Andrzej Hajda <a.hajda@samsung.com>
    Cc: Neil Armstrong <narmstrong@baylibre.com>
    Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
    Cc: Jonas Karlman <jonas@kwiboo.se>
    Cc: Jernej Skrabec <jernej.skrabec@siol.net>
    Cc: Inki Dae <inki.dae@samsung.com>
    Cc: Joonyoung Shim <jy0922.shim@samsung.com>
    Cc: Seung-Woo Kim <sw0312.kim@samsung.com>
    Cc: Kyungmin Park <kyungmin.park@samsung.com>
    Cc: Linus Walleij <linus.walleij@linaro.org>
    Cc: CK Hu <ck.hu@mediatek.com>
    Cc: Philipp Zabel <p.zabel@pengutronix.de>
    Cc: Ben Skeggs <bskeggs@redhat.com>
    Cc: Thierry Reding <thierry.reding@gmail.com>
    Cc: Sam Ravnborg <sam@ravnborg.org>
    Cc: Jerry Han <hanxu5@huaqin.corp-partner.google.com>
    Cc: Icenowy Zheng <icenowy@aosc.io>
    Cc: Jagan Teki <jagan@amarulasolutions.com>
    Cc: Stefan Mavrodiev <stefan@olimex.com>
    Cc: Robert Chiras <robert.chiras@nxp.com>
    Cc: "Guido Günther" <agx@sigxcpu.org>
    Cc: Purism Kernel Team <kernel@puri.sm>
    Cc: Benjamin Gaignard <benjamin.gaignard@linaro.org>
    Cc: Vincent Abriou <vincent.abriou@st.com>
    Cc: VMware Graphics <linux-graphics-maintainer@vmware.com>
    Cc: Thomas Hellstrom <thellstrom@vmware.com>
    Cc: linux-amlogic@lists.infradead.org
    Cc: nouveau@lists.freedesktop.org
    Reviewed-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
    Reviewed-by: default avatarEmil Velikov <emil.velikov@collabora.com>
    Reviewed-by: default avatarSam Ravnborg <sam@ravnborg.org>
    Acked-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200428171940.19552-4-ville.syrjala@linux.intel.com
    0425662f
drm_client_modeset.c 32.1 KB