Received: by 10.223.148.5 with SMTP id 5csp6054826wrq; Wed, 17 Jan 2018 08:49:38 -0800 (PST) X-Google-Smtp-Source: ACJfBovvbQyHhiEdlLsOCY1B/UNU+eRHCOcjLdAxaFs1EpC2UwALuxuGhdYHZO6gzioWi3dV6W/r X-Received: by 10.84.229.68 with SMTP id d4mr1405930pln.117.1516207778283; Wed, 17 Jan 2018 08:49:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516207778; cv=none; d=google.com; s=arc-20160816; b=kNBgLOezUjgJKeNlnwAXaEalyjikEaA1oet59tQJ4AXsXgi1bBmXqBXxf4UK/QwzkS mGsODV+8n2Hw7xS7SA10Qjhe1Kp8j/8GBJGcx5mkmNHh3nQ/TqywBHO9OxIrtBDq8HB5 CWAl+HIMnIUNSxxS2Xy/AK6nqaMlPOtoPyTXiOoJ+I/97MBc1suVmEp91bbsStzTbOnL WbEXcVmxrhN0GjWHrKi3Zt3RUNRcPFsZSh6+cBWsiFNQ5dyz+uPyNB30QrfMAO6puORh 7pD3zTOaBSvtQwLGvvvinfXUa5au8FmliKufOXsEaXMtU2ohKJ6S72wsd87nf75ZsbFe 3tSA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:dkim-signature :arc-authentication-results; bh=CjVx2+/ekFGUwrWlVPhipy7yIT9jtd/qOknFU3mne/o=; b=bdQtooNmPqK+ri5PI4lNGBbOwhk5Ye7Jei/Kq8lGhogTtKzveXqZdERI3Ekvg+bnGR BtoIeW12s6oF2ivv6VHq9obYyB6kBrmpaqDQEJnQI16N4CZCQQun85bRa6hvqoVryThN B/2T8wxnYsE9EeFM1V/pX5w+ZW7D+LleE0v1je4d+EfP7f+TT6EEZc5P9izollJDPu4N ow5SHigcazn0ptqE/dwOILC+6ZB+UU85LhcpsCaMo9xqW/QzndKp5hntXpyNVl0IKtwE E5G8W7F3f5xyGRE40Bwf/XvJ/biP3UX08HD7TjW+paMmH6A1LCxyQrMVMaHuvBMinUS1 ahIg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=jyZSPwnV; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q12si4186668pgf.431.2018.01.17.08.49.23; Wed, 17 Jan 2018 08:49:38 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=jyZSPwnV; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754259AbeAQQrr (ORCPT + 99 others); Wed, 17 Jan 2018 11:47:47 -0500 Received: from mail-wr0-f194.google.com ([209.85.128.194]:41301 "EHLO mail-wr0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754061AbeAQQrp (ORCPT ); Wed, 17 Jan 2018 11:47:45 -0500 Received: by mail-wr0-f194.google.com with SMTP id o7so19576838wro.8 for ; Wed, 17 Jan 2018 08:47:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=CjVx2+/ekFGUwrWlVPhipy7yIT9jtd/qOknFU3mne/o=; b=jyZSPwnVyVF0uDzi5oArzgSdZusBBnca+hpeKSXelgGDKLOlTUjNTH6iSczCqahQua l9FKOjO7Eg6mUbFsIJbUPeOP+D2uorqAohD8rUi8bQVrecd8hJagZ2HPzcxjz9+BbGi2 t5Hr+asggky7Mhf2nabWZx8y+hQVgXdbuqL1w= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=CjVx2+/ekFGUwrWlVPhipy7yIT9jtd/qOknFU3mne/o=; b=rZMhXN54Nw0TIgtRLYV+q95ISisJFl480a2taoLR0wb7SHYjCy1cH79AXDOo/qRPxE 148RuH7vLAbQAcPZwlEmlcdAU5a2TU3eYUMVk7/EvjiUwXiBIAR+95abD/UcK00cPtzm E6lxdEQy3W4m9RFw4rxb5UkhV7z59avoaFxg+l98jsO80/yCaeGJC1SWZu7Xot0We6Yz fBGvjX8kUOpeX+7chUNfIwdBVw5t0Ajz3K0UCQhPmr6Nm9ajumkiig9RF0wQSmGd+JMt NU+/VComUbkn+MOCi+WhFcZGEnkJ1O5r25R5ng02lr9pq1+YORLcclZiqxv/BKJSHPI0 xLxQ== X-Gm-Message-State: AKwxytfUdpm34ZsZ6fqIj568CSwnCqkIPm80Bmmy9iTRAtPIFZtjLGIu uUVuKrXHk2vFd22RDmbkeUga+Q== X-Received: by 10.223.151.41 with SMTP id r38mr3002127wrb.133.1516207664234; Wed, 17 Jan 2018 08:47:44 -0800 (PST) Received: from [192.168.1.24] (cpc141214-aztw34-2-0-cust773.18-1.cable.virginm.net. [86.9.19.6]) by smtp.gmail.com with ESMTPSA id f142sm5045254wmf.38.2018.01.17.08.47.42 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 17 Jan 2018 08:47:43 -0800 (PST) Subject: Re: [PATCH 3/6] backlight/pandora: Stop using BL_CORE_DRIVER1 To: Daniel Vetter , DRI Development Cc: LKML , Lee Jones , Jingoo Han , Daniel Vetter References: <20180117140159.27611-1-daniel.vetter@ffwll.ch> <20180117140159.27611-3-daniel.vetter@ffwll.ch> From: Daniel Thompson Message-ID: <7adf519b-68fa-e1c5-c001-68bf52f7e0b7@linaro.org> Date: Wed, 17 Jan 2018 16:47:41 +0000 User-Agent: Mozilla/5.0 (X11; Linux aarch64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 MIME-Version: 1.0 In-Reply-To: <20180117140159.27611-3-daniel.vetter@ffwll.ch> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 17/01/18 14:01, Daniel Vetter wrote: > Leaking driver internal tracking into the already massively confusing > backlight power tracking is really confusing. > > Stop that by allocating a tiny driver private data structure instead. > > Cc: Lee Jones > Cc: Daniel Thompson > Cc: Jingoo Han > Signed-off-by: Daniel Vetter > --- > drivers/video/backlight/pandora_bl.c | 26 +++++++++++++++++++------- > 1 file changed, 19 insertions(+), 7 deletions(-) > > diff --git a/drivers/video/backlight/pandora_bl.c b/drivers/video/backlight/pandora_bl.c > index a186bc677c7d..6bd159946a47 100644 > --- a/drivers/video/backlight/pandora_bl.c > +++ b/drivers/video/backlight/pandora_bl.c > @@ -35,11 +35,15 @@ > #define MAX_VALUE 63 > #define MAX_USER_VALUE (MAX_VALUE - MIN_VALUE) > > -#define PANDORABL_WAS_OFF BL_CORE_DRIVER1 > +struct pandora_private { > + unsigned old_state; > +#define PANDORABL_WAS_OFF 1 Nit, but we using old_state like a bitfield so, BIT(0)? > +}; > > static int pandora_backlight_update_status(struct backlight_device *bl) > { > int brightness = bl->props.brightness; > + struct pandora_private *priv = bl_get_data(bl); > u8 r; > > if (bl->props.power != FB_BLANK_UNBLANK) > @@ -53,7 +57,7 @@ static int pandora_backlight_update_status(struct backlight_device *bl) > brightness = MAX_USER_VALUE; > > if (brightness == 0) { > - if (bl->props.state & PANDORABL_WAS_OFF) > + if (priv->old_state & PANDORABL_WAS_OFF) > goto done; > > /* first disable PWM0 output, then clock */ > @@ -66,7 +70,7 @@ static int pandora_backlight_update_status(struct backlight_device *bl) > goto done; > } > > - if (bl->props.state & PANDORABL_WAS_OFF) { > + if (priv->old_state & PANDORABL_WAS_OFF) { > /* > * set PWM duty cycle to max. TPS61161 seems to use this > * to calibrate it's PWM sensitivity when it starts. > @@ -93,9 +97,9 @@ static int pandora_backlight_update_status(struct backlight_device *bl) > > done: > if (brightness != 0) > - bl->props.state &= ~PANDORABL_WAS_OFF; > + priv->old_state 0; > else > - bl->props.state |= PANDORABL_WAS_OFF; > + priv->old_state = PANDORABL_WAS_OFF; Well, we were using it like a bitfield until this bit... > > return 0; > } > @@ -109,15 +113,23 @@ static int pandora_backlight_probe(struct platform_device *pdev) > { > struct backlight_properties props; > struct backlight_device *bl; > + struct pandora_private *priv; > u8 r; > > + priv = devm_kmalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); > + if (!priv) { > + dev_err(&pdev->dev, "failed to allocate driver private data\n"); > + return -ENOMEM; > + } > + > memset(&props, 0, sizeof(props)); > props.max_brightness = MAX_USER_VALUE; > props.type = BACKLIGHT_RAW; > bl = devm_backlight_device_register(&pdev->dev, pdev->name, &pdev->dev, > - NULL, &pandora_backlight_ops, &props); > + priv, &pandora_backlight_ops, &props); > if (IS_ERR(bl)) { > dev_err(&pdev->dev, "failed to register backlight\n"); > + kfree(priv); Why can't we rely on devres for cleanup? > return PTR_ERR(bl); > } > > @@ -126,7 +138,7 @@ static int pandora_backlight_probe(struct platform_device *pdev) > /* 64 cycle period, ON position 0 */ > twl_i2c_write_u8(TWL_MODULE_PWM, 0x80, TWL_PWM0_ON); > > - bl->props.state |= PANDORABL_WAS_OFF; > + priv->old_state = PANDORABL_WAS_OFF; > bl->props.brightness = MAX_USER_VALUE; > backlight_update_status(bl); > >