]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - include/drm/drm_panel.h
Merge tag 'for-5.4-rc1-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux
[linux.git] / include / drm / drm_panel.h
index 26377836141c85a16bc3865a267a264d1352ade6..624bd15ecfab61869a9132a10bf208d516084838 100644 (file)
@@ -36,14 +36,6 @@ struct display_timing;
 
 /**
  * struct drm_panel_funcs - perform operations on a given panel
- * @disable: disable panel (turn off back light, etc.)
- * @unprepare: turn off panel
- * @prepare: turn on panel and perform set up
- * @enable: enable panel (turn on back light, etc.)
- * @get_modes: add modes to the connector that the panel is attached to and
- * return the number of modes added
- * @get_timings: copy display timings into the provided array and return
- * the number of display timings available
  *
  * The .prepare() function is typically called before the display controller
  * starts to transmit video data. Panel drivers can use this to turn the panel
@@ -69,132 +61,107 @@ struct display_timing;
  * the panel. This is the job of the .unprepare() function.
  */
 struct drm_panel_funcs {
-       int (*disable)(struct drm_panel *panel);
-       int (*unprepare)(struct drm_panel *panel);
+       /**
+        * @prepare:
+        *
+        * Turn on panel and perform set up.
+        */
        int (*prepare)(struct drm_panel *panel);
+
+       /**
+        * @enable:
+        *
+        * Enable panel (turn on back light, etc.).
+        */
        int (*enable)(struct drm_panel *panel);
+
+       /**
+        * @disable:
+        *
+        * Disable panel (turn off back light, etc.).
+        */
+       int (*disable)(struct drm_panel *panel);
+
+       /**
+        * @unprepare:
+        *
+        * Turn off panel.
+        */
+       int (*unprepare)(struct drm_panel *panel);
+
+       /**
+        * @get_modes:
+        *
+        * Add modes to the connector that the panel is attached to and
+        * return the number of modes added.
+        */
        int (*get_modes)(struct drm_panel *panel);
+
+       /**
+        * @get_timings:
+        *
+        * Copy display timings into the provided array and return
+        * the number of display timings available.
+        */
        int (*get_timings)(struct drm_panel *panel, unsigned int num_timings,
                           struct display_timing *timings);
 };
 
 /**
  * struct drm_panel - DRM panel object
- * @drm: DRM device owning the panel
- * @connector: DRM connector that the panel is attached to
- * @dev: parent device of the panel
- * @link: link from panel device (supplier) to DRM device (consumer)
- * @funcs: operations that can be performed on the panel
- * @list: panel entry in registry
  */
 struct drm_panel {
+       /**
+        * @drm:
+        *
+        * DRM device owning the panel.
+        */
        struct drm_device *drm;
+
+       /**
+        * @connector:
+        *
+        * DRM connector that the panel is attached to.
+        */
        struct drm_connector *connector;
+
+       /**
+        * @dev:
+        *
+        * Parent device of the panel.
+        */
        struct device *dev;
 
+       /**
+        * @funcs:
+        *
+        * Operations that can be performed on the panel.
+        */
        const struct drm_panel_funcs *funcs;
 
+       /**
+        * @list:
+        *
+        * Panel entry in registry.
+        */
        struct list_head list;
 };
 
-/**
- * drm_disable_unprepare - power off a panel
- * @panel: DRM panel
- *
- * Calling this function will completely power off a panel (assert the panel's
- * reset, turn off power supplies, ...). After this function has completed, it
- * is usually no longer possible to communicate with the panel until another
- * call to drm_panel_prepare().
- *
- * Return: 0 on success or a negative error code on failure.
- */
-static inline int drm_panel_unprepare(struct drm_panel *panel)
-{
-       if (panel && panel->funcs && panel->funcs->unprepare)
-               return panel->funcs->unprepare(panel);
-
-       return panel ? -ENOSYS : -EINVAL;
-}
-
-/**
- * drm_panel_disable - disable a panel
- * @panel: DRM panel
- *
- * This will typically turn off the panel's backlight or disable the display
- * drivers. For smart panels it should still be possible to communicate with
- * the integrated circuitry via any command bus after this call.
- *
- * Return: 0 on success or a negative error code on failure.
- */
-static inline int drm_panel_disable(struct drm_panel *panel)
-{
-       if (panel && panel->funcs && panel->funcs->disable)
-               return panel->funcs->disable(panel);
-
-       return panel ? -ENOSYS : -EINVAL;
-}
-
-/**
- * drm_panel_prepare - power on a panel
- * @panel: DRM panel
- *
- * Calling this function will enable power and deassert any reset signals to
- * the panel. After this has completed it is possible to communicate with any
- * integrated circuitry via a command bus.
- *
- * Return: 0 on success or a negative error code on failure.
- */
-static inline int drm_panel_prepare(struct drm_panel *panel)
-{
-       if (panel && panel->funcs && panel->funcs->prepare)
-               return panel->funcs->prepare(panel);
-
-       return panel ? -ENOSYS : -EINVAL;
-}
-
-/**
- * drm_panel_enable - enable a panel
- * @panel: DRM panel
- *
- * Calling this function will cause the panel display drivers to be turned on
- * and the backlight to be enabled. Content will be visible on screen after
- * this call completes.
- *
- * Return: 0 on success or a negative error code on failure.
- */
-static inline int drm_panel_enable(struct drm_panel *panel)
-{
-       if (panel && panel->funcs && panel->funcs->enable)
-               return panel->funcs->enable(panel);
-
-       return panel ? -ENOSYS : -EINVAL;
-}
-
-/**
- * drm_panel_get_modes - probe the available display modes of a panel
- * @panel: DRM panel
- *
- * The modes probed from the panel are automatically added to the connector
- * that the panel is attached to.
- *
- * Return: The number of modes available from the panel on success or a
- * negative error code on failure.
- */
-static inline int drm_panel_get_modes(struct drm_panel *panel)
-{
-       if (panel && panel->funcs && panel->funcs->get_modes)
-               return panel->funcs->get_modes(panel);
-
-       return panel ? -ENOSYS : -EINVAL;
-}
-
 void drm_panel_init(struct drm_panel *panel);
 
 int drm_panel_add(struct drm_panel *panel);
 void drm_panel_remove(struct drm_panel *panel);
 
 int drm_panel_attach(struct drm_panel *panel, struct drm_connector *connector);
-int drm_panel_detach(struct drm_panel *panel);
+void drm_panel_detach(struct drm_panel *panel);
+
+int drm_panel_prepare(struct drm_panel *panel);
+int drm_panel_unprepare(struct drm_panel *panel);
+
+int drm_panel_enable(struct drm_panel *panel);
+int drm_panel_disable(struct drm_panel *panel);
+
+int drm_panel_get_modes(struct drm_panel *panel);
 
 #if defined(CONFIG_OF) && defined(CONFIG_DRM_PANEL)
 struct drm_panel *of_drm_find_panel(const struct device_node *np);