Received: by 10.192.165.148 with SMTP id m20csp990704imm; Wed, 25 Apr 2018 10:45:57 -0700 (PDT) X-Google-Smtp-Source: AIpwx4952cpMi0Js9jCPkpcI1jBRbCU5sOcmUHaq0rKOCqCP64TOC2GM1tYjOfNazQ3pK7XsoJlK X-Received: by 10.98.0.194 with SMTP id 185mr25119566pfa.238.1524678357034; Wed, 25 Apr 2018 10:45:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524678356; cv=none; d=google.com; s=arc-20160816; b=EhZco88y17TWSY235ufk3hdQBhO2TWDFNC0ZulQRoe+i4pVo+sUKsQNwgV1TADzuYK xHULQTm6+i6w8QDGcWchoTGp8t5BCDLXKJYfV99qGwwLqokggWVuKktSTIqYM0eDA78G OUW0JJVMRP0Eh9hlgLB22QcCY5wkTAJ+QLn/FwZb6wo/bHEVyIobOnanGOVRFbK0C1Xr fv/LiWK43zrtKGfWELDAf0SJ9IVXpHxw9vcTXc0MvgHH0CHFmxHTu4rZBjGLqN+NZKUI eso6cSn46HEyW4aZhk6HfBOZdtLoqKfEChNmndXeDWxeBOO0KiXftAGhLUVnFCdlFCzE u2WQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:arc-authentication-results; bh=B2gVySHHlp2/qtHYhyuchR44ZJt+m9/MtbcK6zZiddE=; b=zaHecPJarrgHirG+WKuMcPGxm7hE6HeMJszqhFUZgfAN6Ru6TP8lxfxQb+l9HTM43A MfW4Jcdke97SJyf/M+r3FKJGntjkLG7LazPe9C3eTELM9daKBYbossj4nszI14TIInpB sywcgh7btDhWXQ53rJxneF+8H+zBeUTJI965hJcyONzk176+GuhHM+SXzzOBAyQI8tAc JMGm+mpkFTbvsWuFaqWXNDEkeJDfcCjFUPT6Pd1t7IqtgfSnPOmYcwvWWeF16LqK1fM+ g8DadWNyYiuplzjdj0kPR3d6VI9P/Udw/sHlV6YtE4BN/K5/2OB+eeBJV0vNmVR+edEW S93Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ffwll.ch header.s=google header.b=jcnlL+Z2; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o10si595426pgv.636.2018.04.25.10.45.42; Wed, 25 Apr 2018 10:45:56 -0700 (PDT) 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=@ffwll.ch header.s=google header.b=jcnlL+Z2; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756102AbeDYRn6 (ORCPT + 99 others); Wed, 25 Apr 2018 13:43:58 -0400 Received: from mail-wm0-f67.google.com ([74.125.82.67]:32770 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756024AbeDYRnH (ORCPT ); Wed, 25 Apr 2018 13:43:07 -0400 Received: by mail-wm0-f67.google.com with SMTP id x12so5430751wmc.0 for ; Wed, 25 Apr 2018 10:43:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=B2gVySHHlp2/qtHYhyuchR44ZJt+m9/MtbcK6zZiddE=; b=jcnlL+Z20KjOEoR4jTNs5W3Q1V2gXSg8iT4hCNpo7wMNZk+ZoZfgErzXEx8pEHAkF/ l9/+krn3psKaikaO3oeNa1OU4q74q+zUXvbnKje7xxrEFdXxgiMcgzNUWX9x7N3nnynv +98XuV8nkHAb5AOQmiVlFb0kpyHZisUz7ZQTo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=B2gVySHHlp2/qtHYhyuchR44ZJt+m9/MtbcK6zZiddE=; b=TaxB8cDXixFOaWexllGWOjFY7/GECmErWqfNJgJs3QNfxzmuj04DWlGxBrkp1Jj3HB qG6RNKV+XyJ/bh1zB/VesXnQ0RZBIjixt08lSnYL9iJczXpIZrnEmWrR3q+vfmaIXyuL yP8THcjfAhKD58F6uk4QLO3uaSLzvof18kRMSukjHvO9EhWs/cIossoYU8gOWA903HnC GkDK394vngrKosdEEpL/fKbvbTcJ2aNZG4rsAu0Gh254UCsaSUFikprq/wdRvXXoS0V3 V4ZPjy5THyOC7kmma3QfbiXifh4E5itejWc/KSrYFGPJVukFO6kVbb2tGmn3nICSteWq J5cg== X-Gm-Message-State: ALQs6tDhYxT0CNxLJNvCpw+bzqRrpdlOG57kghnAOv71DZyRQN3/Eo+y 8AoMd1x6h58NrdakNUGvUUfFBw== X-Received: by 10.80.155.6 with SMTP id o6mr40340159edi.280.1524678186072; Wed, 25 Apr 2018 10:43:06 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:5635:0:39d2:f87e:2033:9f6]) by smtp.gmail.com with ESMTPSA id n8sm10962437edb.5.2018.04.25.10.43.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 25 Apr 2018 10:43:05 -0700 (PDT) From: Daniel Vetter To: DRI Development , LKML Cc: Daniel Vetter , Lee Jones , Daniel Thompson , Jingoo Han , Daniel Vetter Subject: [PATCH 3/6] backlight/pandora: Stop using BL_CORE_DRIVER1 Date: Wed, 25 Apr 2018 19:42:50 +0200 Message-Id: <20180425174253.4616-3-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180425174253.4616-1-daniel.vetter@ffwll.ch> References: <20180425174253.4616-1-daniel.vetter@ffwll.ch> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 Acked-by: Daniel Thompson Signed-off-by: Daniel Vetter --- v2: - Consistently treating PANDORA_WAS_OFF as a non-bitfield - Drop the kfree that I left behind after switching to devm_kmalloc --- drivers/video/backlight/pandora_bl.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/drivers/video/backlight/pandora_bl.c b/drivers/video/backlight/pandora_bl.c index a186bc677c7d..9618766e3866 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 +}; 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; return 0; } @@ -109,13 +113,20 @@ 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"); return PTR_ERR(bl); @@ -126,7 +137,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); -- 2.17.0