On Sun, Aug 02, 2020 at 01:06:14PM +0200, Sam Ravnborg wrote: > The backlight drivers uses several different patterns when registering > a backlight: > > - Register backlight and assign properties later > - Define a local backlight_properties variable and use memset > - Define a const backlight_properties and assign relevant properties > > On top of this there was differences in what members was assigned in > backlight_properties. > > To align how backlight drivers are initialized introduce following helper macros: > - DECLARE_BACKLIGHT_INIT_FIRMWARE() > - DECLARE_BACKLIGHT_INIT_PLATFORM() > - DECLARE_BACKLIGHT_INIT_RAW() > > The macros are introduced in patch 2. > > The backlight drivers used direct access to backlight_properties. > Encapsulate these in get/set access operations resulting in following benefits: > - The drivers no longer need to be concerned about the confusing power states, > as there is now only a set_power_on() and set_power_off() operation. > - The access methods can be called with a NULL pointer so logic around the > access can be made simpler. > - The code is in most cases more readable with the access operations. > - When everyone uses the access methods refactroring in the backlight core is simpler. > > The get/set operations are introduced in patch 3. > > The first patch trims backlight_update_status() so it can be called with a NULL > backlight_device. Then the called do not need to add this check just to avoid > a NULL reference. > > The fourth patch introduce the new macros and get/set operations for the > gpio backlight driver, as an example. > > The remaining patches updates most backlight users in drivers/gpu/drm/* > With this patch set applied then: > - Almost all references to FB_BLANK* are gone from drm/* > - All panel drivers uses devm_ variant for registering backlight > - Almost all direct references to backlight properties are gone > > The drm/* patches are used as examples how drivers can benefit from the > new macros and get/set operations. > > Individual patches are only sent to the people listed in the patch + a few more. > Please check https://lore.kernel.org/dri-devel/ for the full series. > > Feedback welcome! Since this needs backlight patches queued up outside of drm there's two options: - merge the backlight stuff through drm-misc (imo simplest, we have all the fbdev stuff in there too by now) - shared topic branch merged in drm-misc and optionally backlight tree Otherwise this is going to be a pain to merge. -Daniel > > Sam > > Cc: Alex Deucher <alexander.deucher@xxxxxxx> > Cc: amd-gfx@xxxxxxxxxxxxxxxxxxxxx > Cc: Andrzej Hajda <a.hajda@xxxxxxxxxxx> > Cc: Christian König <christian.koenig@xxxxxxx> > Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Daniel Thompson <daniel.thompson@xxxxxxxxxx> > Cc: Ezequiel Garcia <ezequiel@xxxxxxxxxxxxxxxxxxxx> > Cc: Hans de Goede <hdegoede@xxxxxxxxxx> > Cc: Hoegeun Kwon <hoegeun.kwon@xxxxxxxxxxx> > Cc: Inki Dae <inki.dae@xxxxxxxxxxx> > Cc: Jani Nikula <jani.nikula@xxxxxxxxxxxxxxx> > Cc: Jernej Skrabec <jernej.skrabec@xxxxxxxx> > Cc: Jingoo Han <jingoohan1@xxxxxxxxx> > Cc: Jonas Karlman <jonas@xxxxxxxxx> > Cc: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx> > Cc: Jyri Sarha <jsarha@xxxxxx> > Cc: Kieran Bingham <kieran.bingham+renesas@xxxxxxxxxxxxxxxx> > Cc: Konrad Dybcio <konradybcio@xxxxxxxxx> > Cc: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > Cc: Lee Jones <lee.jones@xxxxxxxxxx> > Cc: Linus Walleij <linus.walleij@xxxxxxxxxx> > Cc: linux-renesas-soc@xxxxxxxxxxxxxxx > Cc: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> > Cc: Manasi Navare <manasi.d.navare@xxxxxxxxx> > Cc: Neil Armstrong <narmstrong@xxxxxxxxxxxx> > Cc: Patrik Jakobsson <patrik.r.jakobsson@xxxxxxxxx> > Cc: Paweł Chmiel <pawel.mikolaj.chmiel@xxxxxxxxx> > Cc: Philippe CORNU <philippe.cornu@xxxxxx> > Cc: Rob Clark <robdclark@xxxxxxxxx> > Cc: Robert Chiras <robert.chiras@xxxxxxx> > Cc: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx> > Cc: Sam Ravnborg <sam@xxxxxxxxxxxx> > Cc: Sebastian Reichel <sebastian.reichel@xxxxxxxxxxxxx> > Cc: Thierry Reding <thierry.reding@xxxxxxxxx> > Cc: Tomi Valkeinen <tomi.valkeinen@xxxxxx> > Cc: "Ville Syrjälä" <ville.syrjala@xxxxxxxxxxxxxxx> > Cc: Vinay Simha BN <simhavcs@xxxxxxxxx> > Cc: Wambui Karuga <wambui.karugax@xxxxxxxxx> > Cc: Zheng Bin <zhengbin13@xxxxxxxxxx> > > Sam Ravnborg (22): > backlight: Silently fail backlight_update_status() if no device > backlight: Add DECLARE_* macro for device registration > backlight: Add get/set operations for brightness/power properties > backlight: gpio: Use DECLARE_BACKLIGHT_INIT_RAW and get/setters > drm/gma500: Backlight support > drm/panel: asus-z00t-tm5p5-n35596: Backlight update > drm/panel: jdi-lt070me05000: Backlight update > drm/panel: novatek-nt35510: Backlight update > drm/panel: orisetech-otm8009a: Backlight update > drm/panel: raydium-rm67191: Backlight update > drm/panel: samsung-s6e63m0: Backlight update > drm/panel: samsung-s6e63j0x03: Backlight update > drm/panel: samsung-s6e3ha2: Backlight update > drm/panel: sony-acx424akp: Backlight update > drm/panel: sony-acx565akm: Backlight update > drm/bridge: parade-ps8622: Backlight update > drm/tilcdc: Backlight update > drm/radeon: Backlight update > drm/amdgpu/atom: Backlight update > drm/i915: Backlight update > drm/omap: display: Backlight update > drm/shmobile: Backlight update > > drivers/gpu/drm/amd/amdgpu/atombios_encoders.c | 15 ++- > drivers/gpu/drm/bridge/parade-ps8622.c | 43 ++++---- > drivers/gpu/drm/gma500/backlight.c | 35 ++---- > drivers/gpu/drm/gma500/cdv_device.c | 29 +++-- > drivers/gpu/drm/gma500/mdfld_device.c | 9 +- > drivers/gpu/drm/gma500/oaktrail_device.c | 10 +- > drivers/gpu/drm/gma500/opregion.c | 2 +- > drivers/gpu/drm/gma500/psb_device.c | 10 +- > drivers/gpu/drm/gma500/psb_drv.c | 8 +- > drivers/gpu/drm/i915/display/intel_panel.c | 88 +++++++-------- > drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c | 35 ++---- > .../gpu/drm/panel/panel-asus-z00t-tm5p5-n35596.c | 15 +-- > drivers/gpu/drm/panel/panel-jdi-lt070me05000.c | 17 ++- > drivers/gpu/drm/panel/panel-novatek-nt35510.c | 9 +- > drivers/gpu/drm/panel/panel-orisetech-otm8009a.c | 14 +-- > drivers/gpu/drm/panel/panel-raydium-rm67191.c | 11 +- > drivers/gpu/drm/panel/panel-samsung-s6e3ha2.c | 68 ++++++------ > drivers/gpu/drm/panel/panel-samsung-s6e63j0x03.c | 56 +++++----- > drivers/gpu/drm/panel/panel-samsung-s6e63m0.c | 25 ++--- > drivers/gpu/drm/panel/panel-sony-acx424akp.c | 49 ++------- > drivers/gpu/drm/panel/panel-sony-acx565akm.c | 44 +++----- > drivers/gpu/drm/radeon/atombios_encoders.c | 23 ++-- > drivers/gpu/drm/radeon/radeon_legacy_encoders.c | 15 ++- > drivers/gpu/drm/shmobile/shmob_drm_backlight.c | 20 ++-- > drivers/gpu/drm/tilcdc/tilcdc_panel.c | 11 +- > drivers/video/backlight/gpio_backlight.c | 17 ++- > include/linux/backlight.h | 120 +++++++++++++++++++++ > 27 files changed, 377 insertions(+), 421 deletions(-) > > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch