| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 | // SPDX-License-Identifier: GPL-2.0+/* * Copyright (C) 2017, STMicroelectronics - All Rights Reserved * Author: Patrick Delaunay <patrick.delaunay@st.com> */#include <common.h>#include <dm.h>#include <backlight.h>#include <asm/gpio.h>struct gpio_backlight_priv {	struct gpio_desc gpio;	bool def_value;};static int gpio_backlight_enable(struct udevice *dev){	struct gpio_backlight_priv *priv = dev_get_priv(dev);	dm_gpio_set_value(&priv->gpio, 1);	return 0;}static int gpio_backlight_ofdata_to_platdata(struct udevice *dev){	struct gpio_backlight_priv *priv = dev_get_priv(dev);	int ret;	ret = gpio_request_by_name(dev, "gpios", 0, &priv->gpio,				   GPIOD_IS_OUT);	if (ret) {		debug("%s: Warning: cannot get GPIO: ret=%d\n",		      __func__, ret);		return ret;	}	priv->def_value = dev_read_bool(dev, "default-on");	return 0;}static int gpio_backlight_probe(struct udevice *dev){	struct gpio_backlight_priv *priv = dev_get_priv(dev);	if (priv->def_value)		gpio_backlight_enable(dev);	return 0;}static const struct backlight_ops gpio_backlight_ops = {	.enable	= gpio_backlight_enable,};static const struct udevice_id gpio_backlight_ids[] = {	{ .compatible = "gpio-backlight" },	{ }};U_BOOT_DRIVER(gpio_backlight) = {	.name	= "gpio_backlight",	.id	= UCLASS_PANEL_BACKLIGHT,	.of_match = gpio_backlight_ids,	.ops	= &gpio_backlight_ops,	.ofdata_to_platdata	= gpio_backlight_ofdata_to_platdata,	.probe		= gpio_backlight_probe,	.priv_auto_alloc_size	= sizeof(struct gpio_backlight_priv),};
 |