summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2018-10-01 12:22:41 -0600
committerSimon Glass <sjg@chromium.org>2018-10-09 04:40:27 -0600
commita4f737a9c39abb45a5bde47f313df48e645331f7 (patch)
treeb491944bdc102e4bd9f7009ccead12ed5256d214 /include
parent5d9a88f44a93daf623906fee7ca20fa396460ae2 (diff)
downloadu-boot-a4f737a9c39abb45a5bde47f313df48e645331f7.tar.gz
panel: Expand the backlight support
At present the panel can be turned on but not off, and the brightness cannot be controlled at run-time. Add a new API function to both the panel and backlight uclasses to handle this. Enhance the PWM backlight driver to deal with custom levels properly and allow the backlight to be turned on and off. Update the test to cover thes new features. Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'include')
-rw-r--r--include/backlight.h25
-rw-r--r--include/panel.h22
2 files changed, 46 insertions, 1 deletions
diff --git a/include/backlight.h b/include/backlight.h
index a304c36e01..ac59eb293b 100644
--- a/include/backlight.h
+++ b/include/backlight.h
@@ -7,6 +7,13 @@
#ifndef _BACKLIGHT_H
#define _BACKLIGHT_H
+enum {
+ BACKLIGHT_MAX = 100,
+ BACKLIGHT_MIN = 0,
+ BACKLIGHT_OFF = -1,
+ BACKLIGHT_DEFAULT = -2,
+};
+
struct backlight_ops {
/**
* enable() - Enable a backlight
@@ -15,6 +22,15 @@ struct backlight_ops {
* @return 0 if OK, -ve on error
*/
int (*enable)(struct udevice *dev);
+
+ /**
+ * set_brightness - Set brightness
+ *
+ * @dev: Backlight device to update
+ * @percent: Brightness value (0 to 100, or BACKLIGHT_... value)
+ * @return 0 if OK, -ve on error
+ */
+ int (*set_brightness)(struct udevice *dev, int percent);
};
#define backlight_get_ops(dev) ((struct backlight_ops *)(dev)->driver->ops)
@@ -27,4 +43,13 @@ struct backlight_ops {
*/
int backlight_enable(struct udevice *dev);
+/**
+ * backlight_set_brightness - Set brightness
+ *
+ * @dev: Backlight device to update
+ * @percent: Brightness value (0 to 100, or BACKLIGHT_... value)
+ * @return 0 if OK, -ve on error
+ */
+int backlight_set_brightness(struct udevice *dev, int percent);
+
#endif
diff --git a/include/panel.h b/include/panel.h
index 6237d32657..cd596d48c0 100644
--- a/include/panel.h
+++ b/include/panel.h
@@ -15,6 +15,16 @@ struct panel_ops {
* @return 0 if OK, -ve on error
*/
int (*enable_backlight)(struct udevice *dev);
+
+ /**
+ * set_backlight - Set panel backlight brightness
+ *
+ * @dev: Panel device containing the backlight to update
+ * @percent: Brightness value (0 to 100, or BACKLIGHT_... value)
+ * @return 0 if OK, -ve on error
+ */
+ int (*set_backlight)(struct udevice *dev, int percent);
+
/**
* get_timings() - Get display timings from panel.
*
@@ -29,14 +39,24 @@ struct panel_ops {
#define panel_get_ops(dev) ((struct panel_ops *)(dev)->driver->ops)
/**
- * panel_enable_backlight() - Enable the panel backlight
+ * panel_enable_backlight() - Enable/disable the panel backlight
*
* @dev: Panel device containing the backlight to enable
+ * @enable: true to enable the backlight, false to dis
* @return 0 if OK, -ve on error
*/
int panel_enable_backlight(struct udevice *dev);
/**
+ * panel_set_backlight - Set brightness for the panel backlight
+ *
+ * @dev: Panel device containing the backlight to update
+ * @percent: Brightness value (0 to 100, or BACKLIGHT_... value)
+ * @return 0 if OK, -ve on error
+ */
+int panel_set_backlight(struct udevice *dev, int percent);
+
+/**
* panel_get_display_timing() - Get display timings from panel.
*
* @dev: Panel device containing the display timings