Skip to content
This repository was archived by the owner on Nov 8, 2023. It is now read-only.

Commit c2268da

Browse files
committed
drm/panel: ld9040: Register a backlight device
Register a backlight device to be able to switch between all the gamma levels. v2: Remove .get_brightness() callback, use bl_get_data() and backlight_get_brightness() Signed-off-by: Paul Cercueil <[email protected]> Reviewed-by: Sam Ravnborg <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
1 parent 50f600f commit c2268da

File tree

1 file changed

+30
-1
lines changed

1 file changed

+30
-1
lines changed

drivers/gpu/drm/panel/panel-samsung-ld9040.c

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
* Andrzej Hajda <[email protected]>
99
*/
1010

11+
#include <linux/backlight.h>
1112
#include <linux/delay.h>
1213
#include <linux/gpio/consumer.h>
1314
#include <linux/module.h>
@@ -310,8 +311,30 @@ static int ld9040_parse_dt(struct ld9040 *ctx)
310311
return 0;
311312
}
312313

314+
static int ld9040_bl_update_status(struct backlight_device *dev)
315+
{
316+
struct ld9040 *ctx = bl_get_data(dev);
317+
318+
ctx->brightness = backlight_get_brightness(dev);
319+
ld9040_brightness_set(ctx);
320+
321+
return 0;
322+
}
323+
324+
static const struct backlight_ops ld9040_bl_ops = {
325+
.update_status = ld9040_bl_update_status,
326+
};
327+
328+
static const struct backlight_properties ld9040_bl_props = {
329+
.type = BACKLIGHT_RAW,
330+
.scale = BACKLIGHT_SCALE_NON_LINEAR,
331+
.max_brightness = ARRAY_SIZE(ld9040_gammas) - 1,
332+
.brightness = ARRAY_SIZE(ld9040_gammas) - 1,
333+
};
334+
313335
static int ld9040_probe(struct spi_device *spi)
314336
{
337+
struct backlight_device *bldev;
315338
struct device *dev = &spi->dev;
316339
struct ld9040 *ctx;
317340
int ret;
@@ -323,7 +346,7 @@ static int ld9040_probe(struct spi_device *spi)
323346
spi_set_drvdata(spi, ctx);
324347

325348
ctx->dev = dev;
326-
ctx->brightness = ARRAY_SIZE(ld9040_gammas) - 1;
349+
ctx->brightness = ld9040_bl_props.brightness;
327350

328351
ret = ld9040_parse_dt(ctx);
329352
if (ret < 0)
@@ -353,6 +376,12 @@ static int ld9040_probe(struct spi_device *spi)
353376
drm_panel_init(&ctx->panel, dev, &ld9040_drm_funcs,
354377
DRM_MODE_CONNECTOR_DPI);
355378

379+
bldev = devm_backlight_device_register(dev, dev_name(dev), dev,
380+
ctx, &ld9040_bl_ops,
381+
&ld9040_bl_props);
382+
if (IS_ERR(bldev))
383+
return PTR_ERR(bldev);
384+
356385
drm_panel_add(&ctx->panel);
357386

358387
return 0;

0 commit comments

Comments
 (0)