From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754566AbeAQRB6 (ORCPT ); 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 X-Google-Smtp-Source: ACJfBosNZ2NTdgf0RqFr4HJsBfE+GBHJMcOH6beARsM5pQZHkHCGOH3yDWV8IRZnpSTRHUpE5/z8sw== 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 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 >