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