12ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel/* 22ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * Copyright (C) 2010 The Android Open Source Project 32ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * Copyright (C) 2012-2014, 2016 The Linux Foundation. All rights reserved. 42ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * 52ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * Not a Contribution, Apache license notifications and license are 62ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * retained for attribution purposes only. 72ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel 82ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * Licensed under the Apache License, Version 2.0 (the "License"); 92ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * you may not use this file except in compliance with the License. 102ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * You may obtain a copy of the License at 112ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * 122ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * http://www.apache.org/licenses/LICENSE-2.0 132ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * 142ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * Unless required by applicable law or agreed to in writing, software 152ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * distributed under the License is distributed on an "AS IS" BASIS, 162ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 172ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * See the License for the specific language governing permissions and 182ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * limitations under the License. 192ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel */ 202ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel 212ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel#ifndef ANDROID_IQSERVICE_H 222ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel#define ANDROID_IQSERVICE_H 232ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel 242ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel#include <stdint.h> 252ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel#include <sys/types.h> 262ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel#include <utils/Errors.h> 272ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel#include <utils/RefBase.h> 282ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel#include <binder/IInterface.h> 292ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel#include <binder/IBinder.h> 302ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel#include <IQClient.h> 312ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel#include <IQHDMIClient.h> 322ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel 332ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel 342ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudelnamespace qService { 352ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel// ---------------------------------------------------------------------------- 362ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel 372ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudelclass IQService : public android::IInterface 382ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel{ 392ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudelpublic: 402ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel DECLARE_META_INTERFACE(QService); 412ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel enum { 422ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel COMMAND_LIST_START = android::IBinder::FIRST_CALL_TRANSACTION, 432ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel GET_PANEL_BRIGHTNESS = 2, // Provides ability to set the panel brightness 442ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel SET_PANEL_BRIGHTNESS = 3, // Provides ability to get the panel brightness 452ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel CONNECT_HWC_CLIENT = 4, // Connect to qservice 462ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel SCREEN_REFRESH = 5, // Refresh screen through SF invalidate 472ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel EXTERNAL_ORIENTATION = 6,// Set external orientation 482ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel BUFFER_MIRRORMODE = 7, // Buffer mirrormode 492ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel CHECK_EXTERNAL_STATUS = 8,// Check status of external display 502ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel GET_DISPLAY_ATTRIBUTES = 9,// Get display attributes 512ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel SET_HSIC_DATA = 10, // Set HSIC on dspp 522ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel GET_DISPLAY_VISIBLE_REGION = 11,// Get the visibleRegion for dpy 532ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel SET_SECONDARY_DISPLAY_STATUS = 12,// Sets secondary display status 542ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel SET_MAX_PIPES_PER_MIXER = 13,// Set max pipes per mixer for MDPComp 552ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel SET_VIEW_FRAME = 14, // Set view frame of display 562ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel DYNAMIC_DEBUG = 15, // Enable more logging on the fly 572ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel SET_IDLE_TIMEOUT = 16, // Set idle timeout for GPU fallback 582ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel TOGGLE_BWC = 17, // Toggle BWC On/Off on targets that support 592ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel /* Enable/Disable/Set refresh rate dynamically */ 602ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel CONFIGURE_DYN_REFRESH_RATE = 18, 612ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel CONTROL_PARTIAL_UPDATE = 19, // Provides ability to enable/disable partial update 622ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel TOGGLE_SCREEN_UPDATES = 20, // Provides ability to set the panel brightness 632ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel SET_FRAME_DUMP_CONFIG = 21, // Provides ability to set the frame dump config 642ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel SET_S3D_MODE = 22, // Set the 3D mode as specified in msm_hdmi_modes.h 652ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel CONNECT_HDMI_CLIENT = 23, // Connect HDMI CEC HAL Client 662ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel QDCM_SVC_CMDS = 24, // request QDCM services. 672ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel SET_ACTIVE_CONFIG = 25, //Set a specified display config 682ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel GET_ACTIVE_CONFIG = 26, //Get the current config index 692ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel GET_CONFIG_COUNT = 27, //Get the number of supported display configs 702ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel GET_DISPLAY_ATTRIBUTES_FOR_CONFIG = 28, //Get attr for specified config 712ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel SET_DISPLAY_MODE = 29, // Set display mode to command or video mode 722ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel SET_CAMERA_STATUS = 30, // To notify display when camera is on and off 732ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel MIN_HDCP_ENCRYPTION_LEVEL_CHANGED = 31, 742ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel GET_BW_TRANSACTION_STATUS = 32, //Client can query BW transaction status. 752ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel SET_LAYER_MIXER_RESOLUTION = 33, // Enables client to set layer mixer resolution. 762ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel SET_COLOR_MODE = 34, // Overrides the QDCM mode on the display 77d62c8a289ff6b4838e543e82b655dc436f387574Thierry Strudel GET_HDR_CAPABILITIES = 35, // Get HDR capabilities for legacy HWC interface 782ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel COMMAND_LIST_END = 400, 792ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel }; 802ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel 812ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel enum { 822ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel END = 0, 832ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel START, 842ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel }; 852ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel 862ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel enum { 872ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel DEBUG_ALL, 882ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel DEBUG_MDPCOMP, 892ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel DEBUG_VSYNC, 902ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel DEBUG_VD, 912ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel DEBUG_PIPE_LIFECYCLE, 922ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel DEBUG_DRIVER_CONFIG, 932ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel DEBUG_ROTATOR, 942ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel DEBUG_QDCM, 952ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel }; 962ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel 972ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel enum { 982ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel PREF_POST_PROCESSING, 992ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel PREF_PARTIAL_UPDATE, 1002ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel ENABLE_PARTIAL_UPDATE, 1012ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel }; 1022ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel 1032ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel // Register a HWC client that can be notified 1042ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel // This client is generic and is intended to get 1052ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel // dispatches of all events calling into QService 1062ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel virtual void connect(const android::sp<qClient::IQClient>& client) = 0; 1072ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel // Register an HDMI client. This client gets notification of HDMI events 1082ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel // such as plug/unplug and CEC messages 1092ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel virtual void connect(const android::sp<qClient::IQHDMIClient>& client) = 0; 1102ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel // Generic function to dispatch binder commands 1112ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel // The type of command decides how the data is parceled 1122ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel virtual android::status_t dispatch(uint32_t command, 1132ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel const android::Parcel* inParcel, 1142ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel android::Parcel* outParcel) = 0; 1152ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel}; 1162ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel 1172ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel// ---------------------------------------------------------------------------- 1182ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel 1192ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudelclass BnQService : public android::BnInterface<IQService> 1202ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel{ 1212ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudelpublic: 1222ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel virtual android::status_t onTransact( uint32_t code, 1232ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel const android::Parcel& data, 1242ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel android::Parcel* reply, 1252ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel uint32_t flags = 0); 1262ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel}; 1272ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel 1282ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel// ---------------------------------------------------------------------------- 1292ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel}; // namespace qService 1302ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel 1312ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel#endif // ANDROID_IQSERVICE_H 132