Merge branch 'fbdev-next' of git://github.com/schandinat/linux-2.6
[platform/adaptation/renesas_rcar/renesas_kernel.git] / include / video / omapdss.h
index b66ebb2..062b3b2 100644 (file)
@@ -200,6 +200,10 @@ enum omap_dss_clk_source {
        OMAP_DSS_CLK_SRC_DSI2_PLL_HSDIV_DSI,    /* OMAP4: PLL2_CLK2 */
 };
 
+enum omap_hdmi_flags {
+       OMAP_HDMI_SDA_SCL_EXTERNAL_PULLUP = 1 << 0,
+};
+
 /* RFBI */
 
 struct rfbi_timings {
@@ -294,8 +298,8 @@ int dsi_vc_set_max_rx_packet_size(struct omap_dss_device *dssdev, int channel,
                u16 len);
 int dsi_vc_send_null(struct omap_dss_device *dssdev, int channel);
 int dsi_vc_send_bta_sync(struct omap_dss_device *dssdev, int channel);
-int dsi_video_mode_enable(struct omap_dss_device *dssdev, int channel);
-void dsi_video_mode_disable(struct omap_dss_device *dssdev, int channel);
+int dsi_enable_video_output(struct omap_dss_device *dssdev, int channel);
+void dsi_disable_video_output(struct omap_dss_device *dssdev, int channel);
 
 /* Board specific data */
 struct omap_dss_board_info {
@@ -307,15 +311,10 @@ struct omap_dss_board_info {
        void (*dsi_disable_pads)(int dsi_id, unsigned lane_mask);
 };
 
-#if defined(CONFIG_OMAP2_DSS_MODULE) || defined(CONFIG_OMAP2_DSS)
 /* Init with the board info */
 extern int omap_display_init(struct omap_dss_board_info *board_data);
-#else
-static inline int omap_display_init(struct omap_dss_board_info *board_data)
-{
-       return 0;
-}
-#endif
+/* HDMI mux init*/
+extern int omap_hdmi_init(enum omap_hdmi_flags flags);
 
 struct omap_display_platform_data {
        struct omap_dss_board_info *board_data;
@@ -359,8 +358,6 @@ struct omap_dss_cpr_coefs {
 };
 
 struct omap_overlay_info {
-       bool enabled;
-
        u32 paddr;
        u32 p_uv_addr;  /* for NV12 format */
        u16 screen_width;
@@ -392,11 +389,21 @@ struct omap_overlay {
 
        /* dynamic fields */
        struct omap_overlay_manager *manager;
-       struct omap_overlay_info info;
 
-       bool manager_changed;
-       /* if true, info has been changed, but not applied() yet */
-       bool info_dirty;
+       /*
+        * The following functions do not block:
+        *
+        * is_enabled
+        * set_overlay_info
+        * get_overlay_info
+        *
+        * The rest of the functions may block and cannot be called from
+        * interrupt context
+        */
+
+       int (*enable)(struct omap_overlay *ovl);
+       int (*disable)(struct omap_overlay *ovl);
+       bool (*is_enabled)(struct omap_overlay *ovl);
 
        int (*set_manager)(struct omap_overlay *ovl,
                struct omap_overlay_manager *mgr);
@@ -425,23 +432,27 @@ struct omap_overlay_manager_info {
 
 struct omap_overlay_manager {
        struct kobject kobj;
-       struct list_head list;
 
        /* static fields */
        const char *name;
        enum omap_channel id;
        enum omap_overlay_manager_caps caps;
-       int num_overlays;
-       struct omap_overlay **overlays;
+       struct list_head overlays;
        enum omap_display_type supported_displays;
 
        /* dynamic fields */
        struct omap_dss_device *device;
-       struct omap_overlay_manager_info info;
 
-       bool device_changed;
-       /* if true, info has been changed but not applied() yet */
-       bool info_dirty;
+       /*
+        * The following functions do not block:
+        *
+        * set_manager_info
+        * get_manager_info
+        * apply
+        *
+        * The rest of the functions may block and cannot be called from
+        * interrupt context
+        */
 
        int (*set_device)(struct omap_overlay_manager *mgr,
                struct omap_dss_device *dssdev);
@@ -455,9 +466,6 @@ struct omap_overlay_manager {
        int (*apply)(struct omap_overlay_manager *mgr);
        int (*wait_for_go)(struct omap_overlay_manager *mgr);
        int (*wait_for_vsync)(struct omap_overlay_manager *mgr);
-
-       int (*enable)(struct omap_overlay_manager *mgr);
-       int (*disable)(struct omap_overlay_manager *mgr);
 };
 
 struct omap_dss_device {
@@ -669,12 +677,7 @@ void omapdss_dsi_vc_enable_hs(struct omap_dss_device *dssdev, int channel,
                bool enable);
 int omapdss_dsi_enable_te(struct omap_dss_device *dssdev, bool enable);
 
-int omap_dsi_prepare_update(struct omap_dss_device *dssdev,
-                                   u16 *x, u16 *y, u16 *w, u16 *h,
-                                   bool enlarge_update_area);
-int omap_dsi_update(struct omap_dss_device *dssdev,
-               int channel,
-               u16 x, u16 y, u16 w, u16 h,
+int omap_dsi_update(struct omap_dss_device *dssdev, int channel,
                void (*callback)(int, void *), void *data);
 int omap_dsi_request_vc(struct omap_dss_device *dssdev, int *channel);
 int omap_dsi_set_vc_id(struct omap_dss_device *dssdev, int channel, int vc_id);