From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id BEE19C433DF for ; Tue, 4 Aug 2020 17:10:06 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 9C680207FC for ; Tue, 4 Aug 2020 17:10:06 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="PxNBgihl" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9C680207FC Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id B118E6E271; Tue, 4 Aug 2020 17:10:05 +0000 (UTC) Received: from mail-wm1-x344.google.com (mail-wm1-x344.google.com [IPv6:2a00:1450:4864:20::344]) by gabe.freedesktop.org (Postfix) with ESMTPS id 107806E271 for ; Tue, 4 Aug 2020 17:10:03 +0000 (UTC) Received: by mail-wm1-x344.google.com with SMTP id k8so3670011wma.2 for ; Tue, 04 Aug 2020 10:10:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=pIjUIO1iC7D1XllCsgBNUcv/k5ymZtbPUqDn6P/O3Q0=; b=PxNBgihlhUgUVbJqLZXhIOpC9PPrcH2Pa5KPQjOui5mPnVV8ucZzBORBgBiq5iTdCd lsXgCRAIpQJwTdx27a2Yp2eutrpb/GI0220K7XBy1YyhXhxQdisUy6Wt7y9NsCf2bKkz EeDsPXPZ2PEy3uxBu/8Lo277gKB/tz5Va/9CA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=pIjUIO1iC7D1XllCsgBNUcv/k5ymZtbPUqDn6P/O3Q0=; b=rWmFDiv4FoUf+iwb8dSHclB3Zn9a+r1ciQpiAbWcVJyHHEgCuSfdxJrZUO75M98IAb 3g6v+rLUFEZ2yyuURni6A5mgEZwTp6hPiOHbPESOpy6h/lebgEsceXJRwqzreVfFGojo TEOVY527s6q+rfc9BzclwH74GPx7aazZX0zDoIStdznTnakzCZcZqaNtpgtiClVVVG+c XTQGZlMQvsTx9LjAMofKfigP3EYtgdk94u03JI9Q3zYEIfV+/QtFCAlTNgmKXjg8pdB/ p+Rzscn3pwhoMChj7MWQP10KNF/VEU4Kj9ezCYxDSPaDweV+UHnsJF7KiBNxfe329I9s c/+g== X-Gm-Message-State: AOAM5322hJq/eMZRg7HVvi54v31ncG1Lab157NcL6bZE3mtZmL836zVp CiP/GmjiH5W/gq5TSLmhiVX+Fg== X-Google-Smtp-Source: ABdhPJxuTcuVkjr3hCbtzyJllrtf5NapEEJjdFyu0WgMkKhYJfYrdEbp+surpZjMERggfQrGj0FjCg== X-Received: by 2002:a1c:6087:: with SMTP id u129mr4773404wmb.157.1596561002454; Tue, 04 Aug 2020 10:10:02 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa]) by smtp.gmail.com with ESMTPSA id h6sm29974448wrv.40.2020.08.04.10.10.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Aug 2020 10:10:01 -0700 (PDT) Date: Tue, 4 Aug 2020 19:09:59 +0200 From: daniel@ffwll.ch To: Subject: Re: [PATCH v1 15/22] drm/panel: sony-acx565akm: Backlight update Message-ID: <20200804170959.GP6419@phenom.ffwll.local> References: <20200802110636.1018743-1-sam@ravnborg.org> <20200802110636.1018743-16-sam@ravnborg.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20200802110636.1018743-16-sam@ravnborg.org> X-Operating-System: Linux phenom 5.7.0-1-amd64 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Daniel Thompson , Jingoo Han , dri-devel@lists.freedesktop.org, Thierry Reding , Laurent Pinchart , Daniel Vetter , Lee Jones Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" On Sun, Aug 02, 2020 at 01:06:29PM +0200, Sam Ravnborg wrote: > - Use backlight_get_brightness() helper > - Use backlight_is_blank() helper > - Use macro for initialization > - Drop direct access to backlight properties > - Use the devm_ variant for registering backlight device, and drop > all explicit unregistering of the backlight device. > > Signed-off-by: Sam Ravnborg > Cc: Laurent Pinchart > Cc: Thierry Reding > Cc: Sam Ravnborg > --- > drivers/gpu/drm/panel/panel-sony-acx565akm.c | 44 +++++++------------- > 1 file changed, 15 insertions(+), 29 deletions(-) > > diff --git a/drivers/gpu/drm/panel/panel-sony-acx565akm.c b/drivers/gpu/drm/panel/panel-sony-acx565akm.c > index 5c4b6f6e5c2d..3fc572d1de13 100644 > --- a/drivers/gpu/drm/panel/panel-sony-acx565akm.c > +++ b/drivers/gpu/drm/panel/panel-sony-acx565akm.c > @@ -298,13 +298,7 @@ static void acx565akm_set_brightness(struct acx565akm_panel *lcd, int level) > static int acx565akm_bl_update_status_locked(struct backlight_device *dev) > { > struct acx565akm_panel *lcd = dev_get_drvdata(&dev->dev); > - int level; > - > - if (dev->props.fb_blank == FB_BLANK_UNBLANK && > - dev->props.power == FB_BLANK_UNBLANK) > - level = dev->props.brightness; > - else > - level = 0; > + int level = backlight_get_brightness(dev); > > acx565akm_set_brightness(lcd, level); > > @@ -330,8 +324,7 @@ static int acx565akm_bl_get_intensity(struct backlight_device *dev) > > mutex_lock(&lcd->mutex); > > - if (dev->props.fb_blank == FB_BLANK_UNBLANK && > - dev->props.power == FB_BLANK_UNBLANK) > + if (backlight_is_blank(dev)) > intensity = acx565akm_get_actual_brightness(lcd); > else > intensity = 0; > @@ -348,39 +341,34 @@ static const struct backlight_ops acx565akm_bl_ops = { > > static int acx565akm_backlight_init(struct acx565akm_panel *lcd) > { > - struct backlight_properties props = { > - .fb_blank = FB_BLANK_UNBLANK, > - .power = FB_BLANK_UNBLANK, > - .type = BACKLIGHT_RAW, > - }; > int ret; > - > - lcd->backlight = backlight_device_register(lcd->name, &lcd->spi->dev, > - lcd, &acx565akm_bl_ops, > - &props); > - if (IS_ERR(lcd->backlight)) { > - ret = PTR_ERR(lcd->backlight); > - lcd->backlight = NULL; > + struct backlight_device *bd; > + DECLARE_BACKLIGHT_INIT_RAW(props, 0, 255); > + > + bd = devm_backlight_device_register(&lcd->spi->dev, lcd->name, > + &lcd->spi->dev, lcd, > + &acx565akm_bl_ops, &props); It's been in a bunch of earlier patches already, but devm_bl freaks me out a bit with our long-term goal of storing a backlight pointer into drm_connector->backlight. Since drm_connector and the underlying backlight device have different lifetimes that would mean we need to refcount somewhere, or protect drm_connector->backlight with some lock. The lock might not work because the drm connector property paths come from the other direction than the backlight driver unload ... so probably needs to be refcounting. -Daniel > + if (IS_ERR(bd)) { > + ret = PTR_ERR(bd); > return ret; > } > > + lcd->backlight = bd; > if (lcd->has_cabc) { > - ret = sysfs_create_group(&lcd->backlight->dev.kobj, > + ret = sysfs_create_group(&bd->dev.kobj, > &acx565akm_cabc_attr_group); > if (ret < 0) { > dev_err(&lcd->spi->dev, > "%s failed to create sysfs files\n", __func__); > - backlight_device_unregister(lcd->backlight); > return ret; > } > > lcd->cabc_mode = acx565akm_get_hw_cabc_mode(lcd); > } > > - lcd->backlight->props.max_brightness = 255; > - lcd->backlight->props.brightness = acx565akm_get_actual_brightness(lcd); > - > - acx565akm_bl_update_status_locked(lcd->backlight); > + backlight_set_brightness(bd, acx565akm_get_actual_brightness(lcd)); > + backlight_set_power_on(bd); > + backlight_update_status(bd); > > return 0; > } > @@ -390,8 +378,6 @@ static void acx565akm_backlight_cleanup(struct acx565akm_panel *lcd) > if (lcd->has_cabc) > sysfs_remove_group(&lcd->backlight->dev.kobj, > &acx565akm_cabc_attr_group); > - > - backlight_device_unregister(lcd->backlight); > } > > /* ----------------------------------------------------------------------------- > -- > 2.25.1 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel