aboutsummaryrefslogtreecommitdiffstats
path: root/include/video
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2013-05-24 06:20:27 -0400
committerTomi Valkeinen <tomi.valkeinen@ti.com>2013-06-17 07:01:01 -0400
commitdeb16df884966570ebe6197feecab100436414e5 (patch)
tree020baf2694b1b5df15e4914c29ad18f737c0b640 /include/video
parent0b450c31317914feb39616cb553b67c170aaf3d0 (diff)
OMAPDSS: DSI: Add ops
Add "ops" style method for using DSI functionality. Ops style calls will allow us to have arbitrarily long display pipelines, where each entity can call ops in the previous display entity. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'include/video')
-rw-r--r--include/video/omapdss.h58
1 files changed, 58 insertions, 0 deletions
diff --git a/include/video/omapdss.h b/include/video/omapdss.h
index 709e8015f324..b39463553845 100644
--- a/include/video/omapdss.h
+++ b/include/video/omapdss.h
@@ -691,6 +691,63 @@ struct omapdss_hdmi_ops {
691 void (*audio_stop)(struct omap_dss_device *dssdev); 691 void (*audio_stop)(struct omap_dss_device *dssdev);
692}; 692};
693 693
694struct omapdss_dsi_ops {
695 int (*connect)(struct omap_dss_device *dssdev,
696 struct omap_dss_device *dst);
697 void (*disconnect)(struct omap_dss_device *dssdev,
698 struct omap_dss_device *dst);
699
700 int (*enable)(struct omap_dss_device *dssdev);
701 void (*disable)(struct omap_dss_device *dssdev, bool disconnect_lanes,
702 bool enter_ulps);
703
704 /* bus configuration */
705 int (*set_config)(struct omap_dss_device *dssdev,
706 const struct omap_dss_dsi_config *cfg);
707 int (*configure_pins)(struct omap_dss_device *dssdev,
708 const struct omap_dsi_pin_config *pin_cfg);
709
710 void (*enable_hs)(struct omap_dss_device *dssdev, int channel,
711 bool enable);
712 int (*enable_te)(struct omap_dss_device *dssdev, bool enable);
713
714 int (*update)(struct omap_dss_device *dssdev, int channel,
715 void (*callback)(int, void *), void *data);
716
717 void (*bus_lock)(struct omap_dss_device *dssdev);
718 void (*bus_unlock)(struct omap_dss_device *dssdev);
719
720 int (*enable_video_output)(struct omap_dss_device *dssdev, int channel);
721 void (*disable_video_output)(struct omap_dss_device *dssdev,
722 int channel);
723
724 int (*request_vc)(struct omap_dss_device *dssdev, int *channel);
725 int (*set_vc_id)(struct omap_dss_device *dssdev, int channel,
726 int vc_id);
727 void (*release_vc)(struct omap_dss_device *dssdev, int channel);
728
729 /* data transfer */
730 int (*dcs_write)(struct omap_dss_device *dssdev, int channel,
731 u8 *data, int len);
732 int (*dcs_write_nosync)(struct omap_dss_device *dssdev, int channel,
733 u8 *data, int len);
734 int (*dcs_read)(struct omap_dss_device *dssdev, int channel, u8 dcs_cmd,
735 u8 *data, int len);
736
737 int (*gen_write)(struct omap_dss_device *dssdev, int channel,
738 u8 *data, int len);
739 int (*gen_write_nosync)(struct omap_dss_device *dssdev, int channel,
740 u8 *data, int len);
741 int (*gen_read)(struct omap_dss_device *dssdev, int channel,
742 u8 *reqdata, int reqlen,
743 u8 *data, int len);
744
745 int (*bta_sync)(struct omap_dss_device *dssdev, int channel);
746
747 int (*set_max_rx_packet_size)(struct omap_dss_device *dssdev,
748 int channel, u16 plen);
749};
750
694struct omap_dss_device { 751struct omap_dss_device {
695 /* old device, to be removed */ 752 /* old device, to be removed */
696 struct device old_dev; 753 struct device old_dev;
@@ -762,6 +819,7 @@ struct omap_dss_device {
762 const struct omapdss_dvi_ops *dvi; 819 const struct omapdss_dvi_ops *dvi;
763 const struct omapdss_hdmi_ops *hdmi; 820 const struct omapdss_hdmi_ops *hdmi;
764 const struct omapdss_atv_ops *atv; 821 const struct omapdss_atv_ops *atv;
822 const struct omapdss_dsi_ops *dsi;
765 } ops; 823 } ops;
766 824
767 /* helper variable for driver suspend/resume */ 825 /* helper variable for driver suspend/resume */