1d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin/*
2c8b83d4f19d3b8e8d701d1dc04c1224dbf14985dNaveen Ramaraj* Copyright (c) 2015 - 2016, The Linux Foundation. All rights reserved.
3d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin*
4d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* Redistribution and use in source and binary forms, with or without modification, are permitted
5d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* provided that the following conditions are met:
6d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin*    * Redistributions of source code must retain the above copyright notice, this list of
7d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin*      conditions and the following disclaimer.
8d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin*    * Redistributions in binary form must reproduce the above copyright notice, this list of
9d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin*      conditions and the following disclaimer in the documentation and/or other materials provided
10d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin*      with the distribution.
11d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin*    * Neither the name of The Linux Foundation nor the names of its contributors may be used to
12d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin*      endorse or promote products derived from this software without specific prior written
13d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin*      permission.
14d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin*
15d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
16d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
18d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
19d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
20d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
21d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin*/
24d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin
25d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#ifndef __RESOURCE_INTERFACE_H__
26d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#define __RESOURCE_INTERFACE_H__
27d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin
28d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#include <core/display_interface.h>
29d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#include "hw_info_types.h"
30d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin
31d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjinnamespace sdm {
32d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin
33d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjinclass ResourceInterface {
34d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin public:
35fc811a3e18140740eaf6bb70a48e12f1f176e17bSteve Pfetsch  virtual DisplayError RegisterDisplay(DisplayType type,
36fc811a3e18140740eaf6bb70a48e12f1f176e17bSteve Pfetsch                                       const HWDisplayAttributes &display_attributes,
37fc811a3e18140740eaf6bb70a48e12f1f176e17bSteve Pfetsch                                       const HWPanelInfo &hw_panel_info,
38fc811a3e18140740eaf6bb70a48e12f1f176e17bSteve Pfetsch                                       const HWMixerAttributes &mixer_attributes,
39fc811a3e18140740eaf6bb70a48e12f1f176e17bSteve Pfetsch                                       Handle *display_ctx) = 0;
40d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin  virtual DisplayError UnregisterDisplay(Handle display_ctx) = 0;
41fc811a3e18140740eaf6bb70a48e12f1f176e17bSteve Pfetsch  virtual DisplayError ReconfigureDisplay(Handle display_ctx,
42fc811a3e18140740eaf6bb70a48e12f1f176e17bSteve Pfetsch                                          const HWDisplayAttributes &display_attributes,
43fc811a3e18140740eaf6bb70a48e12f1f176e17bSteve Pfetsch                                          const HWPanelInfo &hw_panel_info,
44fc811a3e18140740eaf6bb70a48e12f1f176e17bSteve Pfetsch                                          const HWMixerAttributes &mixer_attributes) = 0;
45d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin  virtual DisplayError Start(Handle display_ctx) = 0;
46d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin  virtual DisplayError Stop(Handle display_ctx) = 0;
47d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin  virtual DisplayError Acquire(Handle display_ctx, HWLayers *hw_layers) = 0;
48d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin  virtual DisplayError PostPrepare(Handle display_ctx, HWLayers *hw_layers) = 0;
49d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin  virtual DisplayError PostCommit(Handle display_ctx, HWLayers *hw_layers) = 0;
50d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin  virtual void Purge(Handle display_ctx) = 0;
51d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin  virtual DisplayError SetMaxMixerStages(Handle display_ctx, uint32_t max_mixer_stages) = 0;
52d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin  virtual DisplayError ValidateScaling(const LayerRect &crop, const LayerRect &dst,
53d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin                                       bool rotate90, bool ubwc_tiled,
54d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin                                       bool use_rotator_downscale) = 0;
558089858bfb034e36d45172ff6a5437d7dce86cb7Steve Pfetsch  virtual DisplayError ValidateCursorConfig(Handle display_ctx, const Layer *layer,
56d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin                                            bool is_top) = 0;
57d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin  virtual DisplayError ValidateCursorPosition(Handle display_ctx, HWLayers *hw_layers,
58d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin                                              int x, int y) = 0;
59d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin  virtual DisplayError SetMaxBandwidthMode(HWBwModes mode) = 0;
60c8b83d4f19d3b8e8d701d1dc04c1224dbf14985dNaveen Ramaraj  virtual DisplayError GetScaleLutConfig(HWScaleLutInfo *lut_info) = 0;
61fc811a3e18140740eaf6bb70a48e12f1f176e17bSteve Pfetsch  virtual DisplayError SetDetailEnhancerData(Handle display_ctx,
62fc811a3e18140740eaf6bb70a48e12f1f176e17bSteve Pfetsch                                             const DisplayDetailEnhancerData &de_data) = 0;
63d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin
64d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin protected:
65d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin  virtual ~ResourceInterface() { }
66d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin};
67d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin
68d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin}  // namespace sdm
69d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin
70d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin#endif  // __RESOURCE_INTERFACE_H__
71d68a2e45260f864503d7bd6da93fd29589afd89ePatrick Tjin
72