2 * Copyright (c) 2016 Google, Inc
3 * Written by Simon Glass <sjg@chromium.org>
5 * SPDX-License-Identifier: GPL-2.0+
13 #include <power/regulator.h>
15 DECLARE_GLOBAL_DATA_PTR
;
17 struct simple_panel_priv
{
19 struct udevice
*backlight
;
20 struct gpio_desc enable
;
23 static int simple_panel_enable_backlight(struct udevice
*dev
)
25 struct simple_panel_priv
*priv
= dev_get_priv(dev
);
28 dm_gpio_set_value(&priv
->enable
, 1);
29 ret
= backlight_enable(priv
->backlight
);
36 static int simple_panel_ofdata_to_platdata(struct udevice
*dev
)
38 struct simple_panel_priv
*priv
= dev_get_priv(dev
);
41 if (IS_ENABLED(CONFIG_DM_REGULATOR
)) {
42 ret
= uclass_get_device_by_phandle(UCLASS_REGULATOR
, dev
,
43 "power-supply", &priv
->reg
);
45 debug("%s: Warning: cannot get power supply: ret=%d\n",
51 ret
= uclass_get_device_by_phandle(UCLASS_PANEL_BACKLIGHT
, dev
,
52 "backlight", &priv
->backlight
);
54 debug("%s: Cannot get backlight: ret=%d\n", __func__
, ret
);
57 ret
= gpio_request_by_name(dev
, "enable-gpios", 0, &priv
->enable
,
60 debug("%s: Warning: cannot get enable GPIO: ret=%d\n",
69 static int simple_panel_probe(struct udevice
*dev
)
71 struct simple_panel_priv
*priv
= dev_get_priv(dev
);
74 if (IS_ENABLED(CONFIG_DM_REGULATOR
) && priv
->reg
) {
75 debug("%s: Enable regulator '%s'\n", __func__
, priv
->reg
->name
);
76 ret
= regulator_set_enable(priv
->reg
, true);
84 static const struct panel_ops simple_panel_ops
= {
85 .enable_backlight
= simple_panel_enable_backlight
,
88 static const struct udevice_id simple_panel_ids
[] = {
89 { .compatible
= "simple-panel" },
90 { .compatible
= "auo,b133xtn01" },
91 { .compatible
= "auo,b116xw03" },
92 { .compatible
= "auo,b133htn01" },
96 U_BOOT_DRIVER(simple_panel
) = {
97 .name
= "simple_panel",
99 .of_match
= simple_panel_ids
,
100 .ops
= &simple_panel_ops
,
101 .ofdata_to_platdata
= simple_panel_ofdata_to_platdata
,
102 .probe
= simple_panel_probe
,
103 .priv_auto_alloc_size
= sizeof(struct simple_panel_priv
),