Received: by 10.223.148.5 with SMTP id 5csp6075667wrq; Wed, 17 Jan 2018 09:02:46 -0800 (PST) X-Google-Smtp-Source: ACJfBou58dMJekSuBktOW51VOtOf1jNRAk1BqLU7aHd47MXiI4N++obVPvQcTAfNHPbIEZl1km+l X-Received: by 10.101.99.211 with SMTP id n19mr19991280pgv.147.1516208566032; Wed, 17 Jan 2018 09:02:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516208565; cv=none; d=google.com; s=arc-20160816; b=fjnhUjNn5HYMZYc7+I6NBt0nOhnp59dBQio8iukfYVId36PA6ARyOwtBl31bkSTywO xIaohizRQM46KXR8SSjeaVmrGuhqZxyL2aoqdwFmT7udsFwCV1YpE/YwCcRyQG6KY5Ew 4IEqn6e9SyKhOuniZXF3V3j6UeDwQoz1mqBCM0y7JN3tQXHcJHugVlt7UaEl7GX0yD4Z lyVghnhGGFPJlOmlmTcvgCYY2xf6gllRttOgsuhM/4+BJVHAo7V1yphb/di4wKceREug CAdzUkyzKIz254yHmP/BM9ghO0e7H7fK1ZTug4JndmGYtriMEBVoNNJk8ZfKvUQHHZnm hh3Q== 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:to:subject:dkim-signature :arc-authentication-results; bh=QmMVqI8sNoanHb/PpmPc5/hP1eUwMtI/m5zXQbUXElg=; b=ZrauxlyXUyqfz/4XWPMTuRuv5Xx5dlmKuUoFtwfx9ZXp21RiszIv0v46kgq6DSq7gC gmtobFRWL4GIoDLRbibjIZeXCvugaPfRzcxG4N5ZI9RKf25BLxYphgVxZdcL4oX/8sPf 19DuzaFXQew4a6uCNPMwsiTBjonk1WdiUjTe75noOeUYU+Lfaq1GxqBMMlu6ZqoTMe+1 dRjwj45Y9jr0mx9lK2oJLbrSjTHMrMLtGg44fgrRYcr8S6SmNO7R57Cizf6X9uqYKN3M WUaKXLKGDcSCWysprHSZTgwmKl6CqxkvoEpeS6CSJdFlo5XsxpRdwymHBwV8trKHopTp 4dlA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=GSl0HjOY; 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 y92si4534279plb.584.2018.01.17.09.02.27; Wed, 17 Jan 2018 09:02:45 -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=GSl0HjOY; 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 S1754563AbeAQRB6 (ORCPT + 99 others); Wed, 17 Jan 2018 12:01:58 -0500 Received: from mail-wm0-f68.google.com ([74.125.82.68]:41594 "EHLO mail-wm0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754124AbeAQRBz (ORCPT ); Wed, 17 Jan 2018 12:01:55 -0500 Received: by mail-wm0-f68.google.com with SMTP id f71so16573642wmf.0 for ; Wed, 17 Jan 2018 09:01:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-language:content-transfer-encoding; bh=QmMVqI8sNoanHb/PpmPc5/hP1eUwMtI/m5zXQbUXElg=; b=GSl0HjOYWLV6ELEeb9dxvO3rD2nVUq57LCQhfstj6VUKzb1MVkg87994Kv7faf/2Nh ro8j7Pn6Chfrh2BYd1ZMpaAJVhLDl7yGfmPWcEI96toQSIskoAmIgx+FHsoZKG154CFY N2nkd45aaPv1O/3G4FL7XZF4yvrUFgtx0WrE8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=QmMVqI8sNoanHb/PpmPc5/hP1eUwMtI/m5zXQbUXElg=; b=hiNpe16Y5MesgU9assZm1fdpRlfZIIacyWRne6LOE+IZydFPmMoyMKX7aoL9b6FbBS 6UZD0SGcOWYYG5QNc0rUUnZrf5Rs4FnrVXimKF2ePyGo1LkORbdwwk101QKxpIdJZQdV p50Aj0Dapy7EARnAusog8/NNcN06d4dwApnK5Igq1o+BQ9B/rX6llmfnU3LPzZTS81kZ cdSmCwBoildoq8DHEh7W5nJZaOCcXlMuW+zPE0cTUO4oSMoGC15owz7weAUqTnkSf/xC m/1afVqOIy/ghlByCfd9JS/f5ECdEqbc8PtQrODYqBfE2/jdvdiRj6TTwawQrBcey/EO TgqQ== X-Gm-Message-State: AKwxytcT/cEpsS7w9E8ZFMyUNmmj37BmxUmkSw/tdPOHKu4BPsFdEj0S aFxtobGGTgxmQzlBqIA6E6FAxTm+4q0= X-Received: by 10.28.54.157 with SMTP id y29mr2948816wmh.36.1516208513308; Wed, 17 Jan 2018 09:01:53 -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 y10sm3064446wrh.36.2018.01.17.09.01.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 17 Jan 2018 09:01:52 -0800 (PST) Subject: Re: [PATCH v16 03/10] video: backlight: Add of_find_backlight helper in backlight.c To: Meghana Madhyastha , Lee Jones , Jingoo Han , Thierry Reding , =?UTF-8?Q?Noralf_Tr=c3=b8nnes?= , Tomi Valkeinen , Daniel Vetter , Sean Paul , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org References: <643f71d13d2466b14d7218282b8319f69680bd3d.1516098341.git.meghana.madhyastha@gmail.com> From: Daniel Thompson Message-ID: <1192115f-e882-e169-8f70-e4238c03981c@linaro.org> Date: Wed, 17 Jan 2018 17:01:50 +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: <643f71d13d2466b14d7218282b8319f69680bd3d.1516098341.git.meghana.madhyastha@gmail.com> 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 16/01/18 10:33, Meghana Madhyastha wrote: > Add of_find_backlight, a helper function which is a generic version > of tinydrm_of_find_backlight that can be used by other drivers to avoid > repetition of code and simplify things. > > Signed-off-by: Meghana Madhyastha Acked-by: Daniel Thompson > --- > Changes in v16: > -Add comment about brightness in of_find_backlight > > drivers/video/backlight/backlight.c | 40 +++++++++++++++++++++++++++++++++++++ > include/linux/backlight.h | 19 ++++++++++++++++++ > 2 files changed, 59 insertions(+) > > diff --git a/drivers/video/backlight/backlight.c b/drivers/video/backlight/backlight.c > index 8049e7656..7e4a5d77d 100644 > --- a/drivers/video/backlight/backlight.c > +++ b/drivers/video/backlight/backlight.c > @@ -580,6 +580,46 @@ struct backlight_device *of_find_backlight_by_node(struct device_node *node) > EXPORT_SYMBOL(of_find_backlight_by_node); > #endif > > +/** > + * of_find_backlight - Get backlight device > + * @dev: Device > + * > + * This function looks for a property named 'backlight' on the DT node > + * connected to @dev and looks up the backlight device. > + * > + * Call backlight_put() to drop the reference on the backlight device. > + * gpio_backlight uses brightness as power state during probe. > + * > + * Returns: > + * A pointer to the backlight device if found. > + * Error pointer -EPROBE_DEFER if the DT property is set, but no backlight > + * device is found. > + * NULL if there's no backlight property. > + */ > +struct backlight_device *of_find_backlight(struct device *dev) > +{ > + struct backlight_device *bd = NULL; > + struct device_node *np; > + > + if (!dev) > + return NULL; > + > + if (IS_ENABLED(CONFIG_OF) && dev->of_node) { > + np = of_parse_phandle(dev->of_node, "backlight", 0); > + if (np) { > + bd = of_find_backlight_by_node(np); > + of_node_put(np); > + if (!bd) > + return ERR_PTR(-EPROBE_DEFER); > + if (!bd->props.brightness) > + bd->props.brightness = bd->props.max_brightness; > + } > + } > + > + return bd; > +} > +EXPORT_SYMBOL(of_find_backlight); > + > static void __exit backlight_class_exit(void) > { > class_destroy(backlight_class); > diff --git a/include/linux/backlight.h b/include/linux/backlight.h > index 7b6a9a2a3..32ea510da 100644 > --- a/include/linux/backlight.h > +++ b/include/linux/backlight.h > @@ -160,6 +160,16 @@ static inline int backlight_disable(struct backlight_device *bd) > return backlight_update_status(bd); > } > > +/** > + * backlight_put - Drop backlight reference > + * @bd: the backlight device to put > + */ > +static inline void backlight_put(struct backlight_device *bd) > +{ > + if (bd) > + put_device(&bd->dev); > +} > + > extern struct backlight_device *backlight_device_register(const char *name, > struct device *dev, void *devdata, const struct backlight_ops *ops, > const struct backlight_properties *props); > @@ -203,4 +213,13 @@ of_find_backlight_by_node(struct device_node *node) > } > #endif > > +#if IS_ENABLED(CONFIG_BACKLIGHT_CLASS_DEVICE) > +struct backlight_device *of_find_backlight(struct device *dev); > +#else > +static inline struct backlight_device *of_find_backlight(struct device *dev) > +{ > + return NULL; > +} > +#endif > + > #endif >